From: Ted Gould Date: Fri, 21 Nov 2008 05:24:08 +0000 (-0600) Subject: Merge from fe-moved X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=6c3e745a94ef6b25a4ef9f018d350a7535aa45af;p=inkscape.git Merge from fe-moved --- diff --git a/AUTHORS b/AUTHORS index ea8fdbea6..3a6d88587 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,6 +1,5 @@ Maximilian Albert Josh Andler -Gail Carmichael Jean-François Barraud Bill Baxter John Bintz @@ -19,6 +18,7 @@ Luca Bruno Nicu Buculei Bulia Byak Ian Caldwell +Gail Carmichael Ed Catmur Chema Celorio Johan Ceuppens diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 000000000..01d151af8 --- /dev/null +++ b/Doxyfile @@ -0,0 +1,1462 @@ +# Doxyfile 1.5.7 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = inkscape + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = doxygen + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, +# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, +# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, +# Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = YES + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = YES + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penality. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will rougly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +SYMBOL_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = NO + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by +# doxygen. The layout file controls the global structure of the generated output files +# in an output format independent way. The create the layout file that represents +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a +# file name after the option, if omitted DoxygenLayout.xml will be used as the name +# of the layout file. + +LAYOUT_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = NO + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = doxygen_warnings.log + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = src + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = *.cpp *.h + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = YES + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER +# are set, an additional index file will be generated that can be used as input for +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated +# HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# Qt Help Project / Namespace. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# Qt Help Project / Virtual Folders. + +QHP_VIRTUAL_FOLDER = doc + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file . + +QHG_LOCATION = + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to FRAME, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. Other possible values +# for this tag are: HIERARCHIES, which will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list; +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which +# disables this behavior completely. For backwards compatibility with previous +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE +# respectively. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = src + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = YES + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/build-lx.xml b/build-lx.xml index d8fd3f346..108656981 100644 --- a/build-lx.xml +++ b/build-lx.xml @@ -173,9 +173,6 @@ /* Allow reading WordPerfect? */ #define WITH_LIBWPG 1 - /* Do we support SVG Fonts? */ - #define ENABLE_SVG_FONTS 1 - #endif /* _CONFIG_H_ */ @@ -192,6 +189,7 @@ + @@ -586,6 +584,7 @@ + diff --git a/configure.ac b/configure.ac index 19f89316a..dfcd34686 100644 --- a/configure.ac +++ b/configure.ac @@ -934,6 +934,7 @@ src/extension/implementation/makefile src/extension/internal/makefile src/extension/makefile src/extension/script/makefile +src/filters/makefile src/helper/makefile src/inkjar/makefile src/io/makefile @@ -971,6 +972,7 @@ share/extensions/alphabet_soup/Makefile share/extensions/Barcode/Makefile share/extensions/Poly3DObjects/Makefile share/extensions/xaml2svg/Makefile +share/filters/Makefile share/fonts/Makefile share/gradients/Makefile share/icons/Makefile diff --git a/doc/keys.xml b/doc/keys.xml index bc49f1612..612e8bff1 100644 --- a/doc/keys.xml +++ b/doc/keys.xml @@ -32,6 +32,7 @@ RFE).

p Freehand (Pencil) tool b Bezier (Pen) tool c Calligraphy tool +c Eraser tool u Paint Bucket tool g Gradient tool d Dropper tool @@ -243,6 +244,11 @@ RFE).

*
+ + + create new layer + + move to layer above move to layer below diff --git a/mkinstalldirs b/mkinstalldirs index d2d5f21b6..ef7e16fda 100755 --- a/mkinstalldirs +++ b/mkinstalldirs @@ -1,21 +1,36 @@ #! /bin/sh # mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman + +scriptversion=2006-05-11.19 + +# Original author: Noah Friedman # Created: 1993-05-16 -# Public domain +# Public domain. +# +# This file is maintained in Automake, please report +# bugs to or send patches to +# . +nl=' +' +IFS=" "" $nl" errstatus=0 -dirmode="" +dirmode= usage="\ -Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." +Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... + +Create each directory DIR (with mode MODE, if specified), including all +leading file name components. + +Report bugs to ." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help - echo "$usage" 1>&2 - exit 0 + echo "$usage" + exit $? ;; -m) # -m PERM arg shift @@ -23,6 +38,10 @@ while test $# -gt 0 ; do dirmode=$1 shift ;; + --version) + echo "$0 $scriptversion" + exit $? + ;; --) # stop option processing shift break @@ -50,30 +69,58 @@ case $# in 0) exit 0 ;; esac +# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and +# mkdir -p a/c at the same time, both will detect that a is missing, +# one will create a, then the other will try to create a and die with +# a "File exists" error. This is a problem when calling mkinstalldirs +# from a parallel make. We use --version in the probe to restrict +# ourselves to GNU mkdir, which is thread-safe. case $dirmode in '') - if mkdir -p -- . 2>/dev/null; then + if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" + else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + test -d ./-p && rmdir ./-p + test -d ./--version && rmdir ./--version fi ;; *) - if mkdir -m "$dirmode" -p -- . 2>/dev/null; then + if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && + test ! -d ./--version; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" + else + # Clean up after NextStep and OpenStep mkdir. + for d in ./-m ./-p ./--version "./$dirmode"; + do + test -d $d && rmdir $d + done fi ;; esac for file do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + case $file in + /*) pathcomp=/ ;; + *) pathcomp= ;; + esac + oIFS=$IFS + IFS=/ + set fnord $file shift + IFS=$oIFS - pathcomp= for d do - pathcomp="$pathcomp$d" + test "x$d" = x && continue + + pathcomp=$pathcomp$d case $pathcomp in -*) pathcomp=./$pathcomp ;; esac @@ -84,21 +131,21 @@ do mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then - errstatus=$lasterr + errstatus=$lasterr else - if test ! -z "$dirmode"; then + if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" - lasterr="" - chmod "$dirmode" "$pathcomp" || lasterr=$? + lasterr= + chmod "$dirmode" "$pathcomp" || lasterr=$? - if test ! -z "$lasterr"; then - errstatus=$lasterr - fi - fi + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi fi fi - pathcomp="$pathcomp/" + pathcomp=$pathcomp/ done done @@ -107,5 +154,8 @@ exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" # End: -# mkinstalldirs ends here diff --git a/po/POTFILES.in b/po/POTFILES.in index 30a5d2827..c27c1af2f 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -11,7 +11,6 @@ src/context-fns.cpp src/desktop.cpp src/desktop-events.cpp src/dialogs/clonetiler.cpp -src/dialogs/debugdialog.cpp src/dialogs/eek-color-def.cpp src/dialogs/export.cpp src/dialogs/fill-style.cpp @@ -27,7 +26,6 @@ src/dialogs/sp-attribute-widget.cpp src/dialogs/stroke-style.cpp src/dialogs/swatches.cpp src/dialogs/text-edit.cpp -src/dialogs/tiledialog.cpp src/dialogs/xml-tree.cpp src/display/canvas-axonomgrid.cpp src/display/canvas-grid.cpp @@ -82,12 +80,10 @@ src/extension/internal/bitmap/threshold.cpp src/extension/internal/bitmap/unsharpmask.cpp src/extension/internal/bitmap/wave.cpp src/extension/internal/bluredge.cpp -src/extension/internal/cairo-pdf-out.cpp src/extension/internal/cairo-ps-out.cpp src/extension/internal/cairo-renderer-pdf-out.cpp src/extension/internal/clear-n_.h src/extension/internal/emf-win32-inout.cpp -src/extension/internal/eps-out.cpp src/extension/internal/filter/apparition.h src/extension/internal/filter/bloom.h src/extension/internal/filter/clouds.h @@ -124,11 +120,8 @@ src/extension/internal/javafx-out.cpp src/extension/internal/latex-pstricks.cpp src/extension/internal/latex-pstricks-out.cpp src/extension/internal/odf.cpp -src/extension/internal/pdf-cairo.cpp src/extension/internal/pdfinput/pdf-input.cpp src/extension/internal/pov-out.cpp -src/extension/internal/ps.cpp -src/extension/internal/ps-out.cpp src/extension/internal/svg.cpp src/extension/internal/svgz.cpp src/extension/internal/win32.cpp @@ -186,6 +179,7 @@ src/live_effects/lpe-copy_rotate.cpp src/live_effects/lpe-curvestitch.cpp src/live_effects/lpe-envelope.cpp src/live_effects/lpe-gears.cpp +src/live_effects/lpe-hatches.cpp src/live_effects/lpe-interpolate.cpp src/live_effects/lpe-knot.cpp src/live_effects/lpe-lattice.cpp @@ -210,7 +204,6 @@ src/live_effects/parameter/enum.h src/live_effects/parameter/parameter.cpp src/live_effects/parameter/path.cpp src/live_effects/parameter/point.cpp -src/live_effects/parameter/pointparam-knotholder.cpp src/live_effects/parameter/random.cpp src/live_effects/parameter/text.cpp src/live_effects/parameter/unit.cpp @@ -269,6 +262,7 @@ src/ui/clipboard.cpp src/ui/context-menu.cpp src/ui/dialog/aboutbox.cpp src/ui/dialog/align-and-distribute.cpp +src/ui/dialog/debug.cpp src/ui/dialog/document-metadata.cpp src/ui/dialog/document-properties.cpp src/ui/dialog/extension-editor.cpp @@ -286,6 +280,7 @@ src/ui/dialog/print.cpp src/ui/dialog/scriptdialog.cpp src/ui/dialog/session-player.cpp src/ui/dialog/svg-fonts-dialog.cpp +src/ui/dialog/tile.cpp src/ui/dialog/tracedialog.cpp src/ui/dialog/transformation.cpp src/ui/dialog/whiteboard-connect.cpp @@ -369,6 +364,7 @@ share/extensions/svg_and_media_zip_output.py [type: gettext/xml] share/extensions/color_removered.inx [type: gettext/xml] share/extensions/color_replace.inx [type: gettext/xml] share/extensions/color_rgbbarrel.inx +[type: gettext/xml] share/extensions/cut-marks.inx [type: gettext/xml] share/extensions/dia.inx [type: gettext/xml] share/extensions/dimension.inx [type: gettext/xml] share/extensions/dots.inx diff --git a/po/gl.po b/po/gl.po index bee71a0e9..845845c4d 100644 --- a/po/gl.po +++ b/po/gl.po @@ -2,70 +2,60 @@ # This file is distributed under the same license as the Inkscape package. # Copyright © 2006 Free Software Foundation, Inc. # -# Proxecto Trasno http://trasno.net +# Leandro Regueiro , 2006, 2007, 2008. # -# Leandro Regueiro , 2006. +# Proxecto Trasno http://trasno.net # msgid "" msgstr "" "Project-Id-Version: inkscape\n" "Report-Msgid-Bugs-To: inkscape-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2008-06-12 21:31+0100\n" -"PO-Revision-Date: 2006-11-05 18:24+0100\n" -"Last-Translator: Leandro Regueiro \n" +"PO-Revision-Date: 2008-11-08 15:02+0100\n" +"Last-Translator: Leandro Regueiro \n" "Language-Team: Galician \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 0.9.5\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../inkscape.desktop.in.h:1 msgid "Create and edit Scalable Vector Graphics images" msgstr "Cree e edite imaxes Scalable Vector Graphics" -# Rosetta #: ../inkscape.desktop.in.h:2 -#, fuzzy msgid "Inkscape Vector Graphics Editor" -msgstr "Ilustrador Vectorial Inkscape" +msgstr "Editor de imaxes vectoriais Inkscape" #: ../src/arc-context.cpp:338 -msgid "" -"Ctrl: make circle or integer-ratio ellipse, snap arc/segment angle" +msgid "Ctrl: make circle or integer-ratio ellipse, snap arc/segment angle" msgstr "" -#: ../src/arc-context.cpp:339 ../src/rect-context.cpp:383 +#: ../src/arc-context.cpp:339 +#: ../src/rect-context.cpp:383 msgid "Shift: draw around the starting point" msgstr "Shift: debuxar arredor do punto de inicio" #: ../src/arc-context.cpp:485 #, fuzzy, c-format -msgid "" -"Ellipse: %s × %s (constrained to ratio %d:%d); with Shift " -"to draw around the starting point" -msgstr "" -"Elipse: %s × %s; con Ctrl para facer un circulo ou unha " -"elipse de razón enteira; con Shift para debuxar arredor do punto " -"inicial" +msgid "Ellipse: %s × %s (constrained to ratio %d:%d); with Shift to draw around the starting point" +msgstr "Elipse: %s × %s; con Ctrl para facer un circulo ou unha elipse de razón enteira; con Shift para debuxar arredor do punto inicial" #: ../src/arc-context.cpp:487 #, fuzzy, c-format -msgid "" -"Ellipse: %s × %s; with Ctrl to make square or integer-" -"ratio ellipse; with Shift to draw around the starting point" -msgstr "" -"Elipse: %s × %s; con Ctrl para facer un circulo ou unha " -"elipse de razón enteira; con Shift para debuxar arredor do punto " -"inicial" +msgid "Ellipse: %s × %s; with Ctrl to make square or integer-ratio ellipse; with Shift to draw around the starting point" +msgstr "Rectángulo: %s × %s; con Ctrl para facer un cadrado ou un rectángulo de razón enteira; con Shift para debuxar arredor do punto de inicio" #: ../src/arc-context.cpp:506 msgid "Create ellipse" msgstr "Crear elipse" -#: ../src/box3d-context.cpp:448 ../src/box3d-context.cpp:455 -#: ../src/box3d-context.cpp:462 ../src/box3d-context.cpp:469 -#: ../src/box3d-context.cpp:476 ../src/box3d-context.cpp:483 +#: ../src/box3d-context.cpp:448 +#: ../src/box3d-context.cpp:455 +#: ../src/box3d-context.cpp:462 +#: ../src/box3d-context.cpp:469 +#: ../src/box3d-context.cpp:476 +#: ../src/box3d-context.cpp:483 #, fuzzy msgid "Change perspective (angle of PLs)" msgstr "Crear rectángulo" @@ -76,14 +66,12 @@ msgid "3D Box; with Shift to extrude along the Z axis" msgstr "" #: ../src/box3d-context.cpp:662 -#, fuzzy msgid "Create 3D box" -msgstr "Crear un Mosaico de Clons..." +msgstr "Crear caixa 3D" #: ../src/box3d.cpp:315 -#, fuzzy msgid "3D Box" -msgstr "Bordo" +msgstr "Caixa 3D" #: ../src/connector-context.cpp:522 msgid "Creating new connector" @@ -95,8 +83,9 @@ msgid "Connector endpoint drag cancelled." msgstr "Cancelouse o arrastre dun nodo ou dunha asa." #: ../src/connector-context.cpp:799 +#, fuzzy msgid "Reroute connector" -msgstr "" +msgstr "Crear conectador" #. Flush pending updates #: ../src/connector-context.cpp:963 @@ -104,45 +93,45 @@ msgid "Create connector" msgstr "Crear conectador" #: ../src/connector-context.cpp:987 +#, fuzzy msgid "Finishing connector" -msgstr "" +msgstr "Crear conectador" #: ../src/connector-context.cpp:1130 msgid "Connection point: click or drag to create a new connector" -msgstr "" -"Punto de conexión: prema ou arrastre para crear un novo conectador" +msgstr "Punto de conexión: prema ou arrastre para crear un novo conectador" # Rosetta #: ../src/connector-context.cpp:1203 #, fuzzy msgid "Connector endpoint: drag to reroute or connect to new shapes" -msgstr "" -"Punto final do conector: Arrastre para modificar a rota ou reconectar " -"a figuras novas." +msgstr "Punto final do conector: Arrastre para modificar a rota ou reconectar a figuras novas." #: ../src/connector-context.cpp:1314 msgid "Select at least one non-connector object." msgstr "" -#: ../src/connector-context.cpp:1319 ../src/widgets/toolbox.cpp:5554 +#: ../src/connector-context.cpp:1319 +#: ../src/widgets/toolbox.cpp:5554 #, fuzzy msgid "Make connectors avoid selected objects" msgstr "Facer que os conectadores eviten os obxectos seleccionados" -#: ../src/connector-context.cpp:1320 ../src/widgets/toolbox.cpp:5564 +#: ../src/connector-context.cpp:1320 +#: ../src/widgets/toolbox.cpp:5564 #, fuzzy msgid "Make connectors ignore selected objects" msgstr "Facer que os conectadores ignoren os obxectos seleccionados" -#: ../src/context-fns.cpp:37 ../src/context-fns.cpp:66 +#: ../src/context-fns.cpp:37 +#: ../src/context-fns.cpp:66 msgid "Current layer is hidden. Unhide it to be able to draw on it." -msgstr "" -"A capa actual está agochada. Fagaa visible para poder debuxar nela." +msgstr "A capa actual está agochada. Fagaa visible para poder debuxar nela." -#: ../src/context-fns.cpp:43 ../src/context-fns.cpp:72 +#: ../src/context-fns.cpp:43 +#: ../src/context-fns.cpp:72 msgid "Current layer is locked. Unlock it to be able to draw on it." -msgstr "" -"A capa actual está bloqueada. Desbloqueea para poder debuxar nela." +msgstr "A capa actual está bloqueada. Desbloqueea para poder debuxar nela." #: ../src/desktop.cpp:782 msgid "No previous zoom." @@ -153,20 +142,18 @@ msgid "No next zoom." msgstr "Non hai ningún zoom posterior." #: ../src/desktop-events.cpp:175 -#, fuzzy msgid "Create guide" -msgstr "Crear elipse" +msgstr "Crear unha guía" -#: ../src/desktop-events.cpp:221 ../src/desktop-events.cpp:275 +#: ../src/desktop-events.cpp:221 +#: ../src/desktop-events.cpp:275 #: ../src/dialogs/guidelinedialog.cpp:127 -#, fuzzy msgid "Delete guide" -msgstr "Borrar o nodo" +msgstr "Eliminar guía" #: ../src/desktop-events.cpp:269 -#, fuzzy msgid "Move guide" -msgstr "Amosar _guías" +msgstr "Mover unha guía" #: ../src/desktop-events.cpp:290 #, fuzzy, c-format @@ -197,7 +184,7 @@ msgstr "" #: ../src/dialogs/clonetiler.cpp:1006 #, fuzzy msgid "Unclump tiled clones" -msgstr "Cor inicial do mosaico de clons" +msgstr "Crear un Mosaico de Clons..." #: ../src/dialogs/clonetiler.cpp:1036 msgid "Select one object whose tiled clones to remove." @@ -206,23 +193,21 @@ msgstr "" #: ../src/dialogs/clonetiler.cpp:1059 #, fuzzy msgid "Delete tiled clones" -msgstr "Borra-los nodos seleccionados" +msgstr "Crear un Mosaico de Clons..." -#: ../src/dialogs/clonetiler.cpp:1105 ../src/selection-chemistry.cpp:1818 +#: ../src/dialogs/clonetiler.cpp:1105 +#: ../src/selection-chemistry.cpp:1818 msgid "Select an object to clone." msgstr "Seleccione un obxecto para clonalo." #: ../src/dialogs/clonetiler.cpp:1111 -msgid "" -"If you want to clone several objects, group them and clone the " -"group." -msgstr "" -"Se desexa clonar varios obxectos, agrúpeos e clone o grupo." +msgid "If you want to clone several objects, group them and clone the group." +msgstr "Se desexa clonar varios obxectos, agrúpeos e clone o grupo." #: ../src/dialogs/clonetiler.cpp:1120 #, fuzzy msgid "Creating tiled clones..." -msgstr "O obxecto non ten clons en mosaico." +msgstr "O obxecto ten %d clons en mosaico." #: ../src/dialogs/clonetiler.cpp:1527 #, fuzzy @@ -238,8 +223,9 @@ msgid "Per column:" msgstr "Por columna:" #: ../src/dialogs/clonetiler.cpp:1731 +#, fuzzy msgid "Randomize:" -msgstr "" +msgstr "Non hai nada seleccionado." #: ../src/dialogs/clonetiler.cpp:1885 msgid "_Symmetry" @@ -273,11 +259,12 @@ msgstr "PM: reflexo" #: ../src/dialogs/clonetiler.cpp:1909 #, fuzzy msgid "PG: glide reflection" -msgstr "

PG: reflexo desprazado" +msgstr "PMG: reflexo + rotación de 180°" #: ../src/dialogs/clonetiler.cpp:1910 +#, fuzzy msgid "CM: reflection + glide reflection" -msgstr "" +msgstr "PMG: reflexo + rotación de 180°" #: ../src/dialogs/clonetiler.cpp:1911 msgid "PMM: reflection + reflection" @@ -371,7 +358,8 @@ msgstr "Translación vertical por columna (en % do alto da tesela)" msgid "Randomize the vertical shift by this percentage" msgstr "" -#: ../src/dialogs/clonetiler.cpp:2024 ../src/dialogs/clonetiler.cpp:2172 +#: ../src/dialogs/clonetiler.cpp:2024 +#: ../src/dialogs/clonetiler.cpp:2172 msgid "Exponent:" msgstr "" @@ -379,26 +367,25 @@ msgstr "" #: ../src/dialogs/clonetiler.cpp:2031 #, fuzzy msgid "Whether rows are spaced evenly (1), converge (<1) or diverge (>1)" -msgstr "" -"Se as fileiras están distribuídas uniformemente (1), converxen (<1) ou " -"diverxen (>1)" +msgstr "Se as fileiras están distribuídas uniformemente (1), converxen (<1) ou diverxen (>1)" # Rosetta #: ../src/dialogs/clonetiler.cpp:2038 #, fuzzy msgid "Whether columns are spaced evenly (1), converge (<1) or diverge (>1)" -msgstr "" -"Se as columnas están espaciadas uniformemente (1), converxen (<1) ou " -"diverxen (>1)" +msgstr "Se as columnas están espaciadas uniformemente (1), converxen (<1) ou diverxen (>1)" # Rosetta #. TRANSLATORS: "Alternate" is a verb here -#: ../src/dialogs/clonetiler.cpp:2046 ../src/dialogs/clonetiler.cpp:2216 -#: ../src/dialogs/clonetiler.cpp:2293 ../src/dialogs/clonetiler.cpp:2369 -#: ../src/dialogs/clonetiler.cpp:2418 ../src/dialogs/clonetiler.cpp:2549 +#: ../src/dialogs/clonetiler.cpp:2046 +#: ../src/dialogs/clonetiler.cpp:2216 +#: ../src/dialogs/clonetiler.cpp:2293 +#: ../src/dialogs/clonetiler.cpp:2369 +#: ../src/dialogs/clonetiler.cpp:2418 +#: ../src/dialogs/clonetiler.cpp:2549 #, fuzzy msgid "Alternate:" -msgstr "Alternar:" +msgstr "Non hai nada seleccionado." # Rosetta #: ../src/dialogs/clonetiler.cpp:2052 @@ -412,11 +399,12 @@ msgstr "" # Rosetta #. TRANSLATORS: "Cumulate" is a verb here -#: ../src/dialogs/clonetiler.cpp:2064 ../src/dialogs/clonetiler.cpp:2234 +#: ../src/dialogs/clonetiler.cpp:2064 +#: ../src/dialogs/clonetiler.cpp:2234 #: ../src/dialogs/clonetiler.cpp:2311 #, fuzzy msgid "Cumulate:" -msgstr "Alternar:" +msgstr "Non hai nada seleccionado." # Rosetta #: ../src/dialogs/clonetiler.cpp:2070 @@ -435,51 +423,55 @@ msgstr "Alternar o signo dos desprazamentos en cada fileira" #: ../src/dialogs/clonetiler.cpp:2082 #, fuzzy msgid "Exclude tile:" -msgstr "Alternar:" +msgstr "Non hai nada seleccionado." #: ../src/dialogs/clonetiler.cpp:2088 +#, fuzzy msgid "Exclude tile height in shift" -msgstr "" +msgstr "Translación vertical por fila (en % do alto da tesela)" #: ../src/dialogs/clonetiler.cpp:2093 +#, fuzzy msgid "Exclude tile width in shift" -msgstr "" +msgstr "Translación horizontal por fila (en % do ancho da tesela)" #: ../src/dialogs/clonetiler.cpp:2102 msgid "Sc_ale" msgstr "Esc_ala" #: ../src/dialogs/clonetiler.cpp:2110 +#, fuzzy msgid "Scale X:" -msgstr "" +msgstr "E_scalar" #: ../src/dialogs/clonetiler.cpp:2118 -#, no-c-format +#, fuzzy, no-c-format msgid "Horizontal scale per row (in % of tile width)" -msgstr "" +msgstr "Translación horizontal por fila (en % do ancho da tesela)" #: ../src/dialogs/clonetiler.cpp:2126 -#, no-c-format +#, fuzzy, no-c-format msgid "Horizontal scale per column (in % of tile width)" -msgstr "" +msgstr "Translación horizontal por columna (en % do ancho da tesela)" #: ../src/dialogs/clonetiler.cpp:2133 msgid "Randomize the horizontal scale by this percentage" msgstr "" #: ../src/dialogs/clonetiler.cpp:2141 +#, fuzzy msgid "Scale Y:" -msgstr "" +msgstr "E_scalar" #: ../src/dialogs/clonetiler.cpp:2149 -#, no-c-format +#, fuzzy, no-c-format msgid "Vertical scale per row (in % of tile height)" -msgstr "" +msgstr "Translación vertical por fila (en % do alto da tesela)" #: ../src/dialogs/clonetiler.cpp:2157 -#, no-c-format +#, fuzzy, no-c-format msgid "Vertical scale per column (in % of tile height)" -msgstr "" +msgstr "Translación vertical por columna (en % do alto da tesela)" #: ../src/dialogs/clonetiler.cpp:2164 msgid "Randomize the vertical scale by this percentage" @@ -489,17 +481,13 @@ msgstr "" #: ../src/dialogs/clonetiler.cpp:2179 #, fuzzy msgid "Whether row scaling is uniform (1), converge (<1) or diverge (>1)" -msgstr "" -"Se as fileiras están distribuídas uniformemente (1), converxen (<1) ou " -"diverxen (>1)" +msgstr "Se as fileiras están distribuídas uniformemente (1), converxen (<1) ou diverxen (>1)" # Rosetta #: ../src/dialogs/clonetiler.cpp:2186 #, fuzzy msgid "Whether column scaling is uniform (1), converge (<1) or diverge (>1)" -msgstr "" -"Se as columnas están espaciadas uniformemente (1), converxen (<1) ou " -"diverxen (>1)" +msgstr "Se as columnas están espaciadas uniformemente (1), converxen (<1) ou diverxen (>1)" #: ../src/dialogs/clonetiler.cpp:2194 #, fuzzy @@ -507,13 +495,11 @@ msgid "Base:" msgstr "Novo:" # Rosetta -#: ../src/dialogs/clonetiler.cpp:2201 ../src/dialogs/clonetiler.cpp:2208 +#: ../src/dialogs/clonetiler.cpp:2201 +#: ../src/dialogs/clonetiler.cpp:2208 #, fuzzy -msgid "" -"Base for a logarithmic spiral: not used (0), converge (<1), or diverge (>1)" -msgstr "" -"Se as fileiras están distribuídas uniformemente (1), converxen (<1) ou " -"diverxen (>1)" +msgid "Base for a logarithmic spiral: not used (0), converge (<1), or diverge (>1)" +msgstr "Se as fileiras están distribuídas uniformemente (1), converxen (<1) ou diverxen (>1)" #: ../src/dialogs/clonetiler.cpp:2222 msgid "Alternate the sign of scales for each row" @@ -578,14 +564,12 @@ msgid "Cumulate the rotation for each column" msgstr "Alternar o signo do cambio de opacidade para cada fileira" #: ../src/dialogs/clonetiler.cpp:2331 -#, fuzzy msgid "_Blur & opacity" -msgstr "Opacidade principal" +msgstr "_Desenfoque & opacidade" #: ../src/dialogs/clonetiler.cpp:2340 -#, fuzzy msgid "Blur:" -msgstr "L:" +msgstr "Desenfoque:" #: ../src/dialogs/clonetiler.cpp:2347 #, fuzzy @@ -619,12 +603,14 @@ msgid "Fade out:" msgstr "Esvaecer:" #: ../src/dialogs/clonetiler.cpp:2396 +#, fuzzy msgid "Decrease tile opacity by this percentage for each row" -msgstr "" +msgstr "Cambiar o matiz da tesela nesta porcentaxe para cada fila" #: ../src/dialogs/clonetiler.cpp:2403 +#, fuzzy msgid "Decrease tile opacity by this percentage for each column" -msgstr "" +msgstr "Cambiar o matiz da tesela nesta porcentaxe para cada columna" #: ../src/dialogs/clonetiler.cpp:2410 msgid "Randomize the tile opacity by this percentage" @@ -654,12 +640,8 @@ msgstr "Cor inicial do mosaico de clons" #: ../src/dialogs/clonetiler.cpp:2446 #, fuzzy -msgid "" -"Initial color for clones (works only if the original has unset fill or " -"stroke)" -msgstr "" -"Cor inicial dos clons (só funciona se o orixinal non ten asignado un recheo " -"ou trazo)" +msgid "Initial color for clones (works only if the original has unset fill or stroke)" +msgstr "Cor inicial dos clons (só funciona se o orixinal non ten asignado un recheo ou trazo)" #: ../src/dialogs/clonetiler.cpp:2461 msgid "H:" @@ -719,7 +701,7 @@ msgstr "" #: ../src/dialogs/clonetiler.cpp:2568 msgid "_Trace" -msgstr "" +msgstr "_Vectorizar" #: ../src/dialogs/clonetiler.cpp:2575 msgid "Trace the drawing under the tiles" @@ -728,20 +710,17 @@ msgstr "" # Rosetta #: ../src/dialogs/clonetiler.cpp:2579 #, fuzzy -msgid "" -"For each clone, pick a value from the drawing in that clone's location and " -"apply it to the clone" -msgstr "" -"Para cada clon, coller un valor do debuxo na localización dese clon e " -"aplicarllo ao clon" +msgid "For each clone, pick a value from the drawing in that clone's location and apply it to the clone" +msgstr "Para cada clon, coller un valor do debuxo na localización dese clon e aplicarllo ao clon" # Rosetta #: ../src/dialogs/clonetiler.cpp:2593 #, fuzzy msgid "1. Pick from the drawing:" -msgstr "1. Coller do debuxo:" +msgstr "Coller cores da imaxe" -#: ../src/dialogs/clonetiler.cpp:2604 ../src/dialogs/clonetiler.cpp:2751 +#: ../src/dialogs/clonetiler.cpp:2604 +#: ../src/dialogs/clonetiler.cpp:2751 #: ../src/extension/internal/bitmap/colorize.cpp:51 #: ../share/extensions/color_brighter.inx.h:2 #: ../share/extensions/color_custom.inx.h:2 @@ -768,7 +747,8 @@ msgstr "Cor" msgid "Pick the visible color and opacity" msgstr "Elixa a cor visible e a opacidade" -#: ../src/dialogs/clonetiler.cpp:2612 ../src/dialogs/clonetiler.cpp:2761 +#: ../src/dialogs/clonetiler.cpp:2612 +#: ../src/dialogs/clonetiler.cpp:2761 #: ../src/extension/internal/bitmap/opacity.cpp:37 #: ../src/extension/internal/bitmap/opacity.cpp:39 #: ../src/ui/dialog/filter-effects-dialog.cpp:2241 @@ -777,8 +757,9 @@ msgid "Opacity" msgstr "Opacidade" #: ../src/dialogs/clonetiler.cpp:2613 +#, fuzzy msgid "Pick the total accumulated opacity" -msgstr "" +msgstr "Elixa a cor visible e a opacidade" #: ../src/dialogs/clonetiler.cpp:2620 msgid "R" @@ -838,20 +819,19 @@ msgstr "Elixa o brillo da cor" #: ../src/dialogs/clonetiler.cpp:2677 #, fuzzy msgid "2. Tweak the picked value:" -msgstr "2. Mudar o valor collido:" +msgstr "Inverter o valor seleccionado" # Rosetta #: ../src/dialogs/clonetiler.cpp:2687 #, fuzzy msgid "Gamma-correct:" -msgstr "Corrección gamma:" +msgstr "Corrección gamma" # Rosetta #: ../src/dialogs/clonetiler.cpp:2692 #, fuzzy msgid "Shift the mid-range of the picked value upwards (>0) or downwards (<0)" -msgstr "" -"Desprazar o rango medio do valor collido para riba (>0) ou para baixo (<0)" +msgstr "Desprazar o rango medio do valor collido para riba (>0) ou para baixo (<0)" #: ../src/dialogs/clonetiler.cpp:2699 msgid "Randomize:" @@ -878,11 +858,8 @@ msgid "Presence" msgstr "Presencia" #: ../src/dialogs/clonetiler.cpp:2734 -msgid "" -"Each clone is created with the probability determined by the picked value in " -"that point" -msgstr "" -"Cada clon créase ca probabilidade determinada polo valor elixido nese punto" +msgid "Each clone is created with the probability determined by the picked value in that point" +msgstr "Cada clon créase ca probabilidade determinada polo valor elixido nese punto" #: ../src/dialogs/clonetiler.cpp:2741 #: ../src/ui/dialog/filter-effects-dialog.cpp:2216 @@ -894,12 +871,8 @@ msgid "Each clone's size is determined by the picked value in that point" msgstr "O tamaño de cada clon determínase polo valor elixido nese punto" #: ../src/dialogs/clonetiler.cpp:2754 -msgid "" -"Each clone is painted by the picked color (the original must have unset fill " -"or stroke)" -msgstr "" -"Cada clon píntase ca cor escollida (o orixinal debe carecer de recheo ou " -"trazo)" +msgid "Each clone is painted by the picked color (the original must have unset fill or stroke)" +msgstr "Cada clon píntase ca cor escollida (o orixinal debe carecer de recheo ou trazo)" #: ../src/dialogs/clonetiler.cpp:2764 msgid "Each clone's opacity is determined by the picked value in that point" @@ -942,9 +915,7 @@ msgid "Use saved size and position of the tile" msgstr "" #: ../src/dialogs/clonetiler.cpp:2911 -msgid "" -"Pretend that the size and position of the tile are the same as the last time " -"you tiled it (if any), instead of using the current size" +msgid "Pretend that the size and position of the tile are the same as the last time you tiled it (if any), instead of using the current size" msgstr "" #: ../src/dialogs/clonetiler.cpp:2935 @@ -966,8 +937,7 @@ msgstr "_Espallar" #: ../src/dialogs/clonetiler.cpp:2953 msgid "Spread out clones to reduce clumping; can be applied repeatedly" -msgstr "" -"Separar os clons para reducir a acumulación; pode aplicarse repetidamente" +msgstr "Separar os clons para reducir a acumulación; pode aplicarse repetidamente" #: ../src/dialogs/clonetiler.cpp:2959 msgid " Re_move " @@ -983,9 +953,7 @@ msgstr " R_establecer" #. TRANSLATORS: "change" is a noun here #: ../src/dialogs/clonetiler.cpp:2978 -msgid "" -"Reset all shifts, scales, rotates, opacity and color changes in the dialog " -"to zero" +msgid "Reset all shifts, scales, rotates, opacity and color changes in the dialog to zero" msgstr "" #: ../src/dialogs/debugdialog.cpp:135 @@ -993,40 +961,51 @@ msgid "Messages" msgstr "Mensaxes" #. ## Add a menu for clear() -#: ../src/dialogs/debugdialog.cpp:141 ../src/menus-skeleton.h:16 -#: ../src/ui/dialog/messages.cpp:54 ../src/ui/dialog/scriptdialog.cpp:208 +#: ../src/dialogs/debugdialog.cpp:141 +#: ../src/menus-skeleton.h:16 +#: ../src/ui/dialog/messages.cpp:54 +#: ../src/ui/dialog/scriptdialog.cpp:208 msgid "_File" msgstr "_Ficheiro" #. TRANSLATORS: "Clear" is a verb here -#: ../src/dialogs/debugdialog.cpp:142 ../src/dialogs/find.cpp:753 -#: ../src/ui/dialog/find.cpp:85 ../src/ui/dialog/messages.cpp:55 +#: ../src/dialogs/debugdialog.cpp:142 +#: ../src/dialogs/find.cpp:753 +#: ../src/ui/dialog/find.cpp:85 +#: ../src/ui/dialog/messages.cpp:55 #: ../src/ui/dialog/scriptdialog.cpp:209 msgid "_Clear" msgstr "_Limpar" -#: ../src/dialogs/debugdialog.cpp:144 ../src/ui/dialog/messages.cpp:57 +#: ../src/dialogs/debugdialog.cpp:144 +#: ../src/ui/dialog/messages.cpp:57 +#, fuzzy msgid "Capture log messages" -msgstr "" +msgstr "Ver mensaxes de depuración" -#: ../src/dialogs/debugdialog.cpp:146 ../src/ui/dialog/messages.cpp:59 +#: ../src/dialogs/debugdialog.cpp:146 +#: ../src/ui/dialog/messages.cpp:59 +#, fuzzy msgid "Release log messages" -msgstr "" +msgstr "Ver mensaxes de depuración" #: ../src/dialogs/eek-color-def.cpp:56 #: ../src/widgets/gradient-selector.cpp:162 msgid "none" -msgstr "" +msgstr "ningún" -#: ../src/dialogs/export.cpp:143 ../src/verbs.cpp:2532 +#: ../src/dialogs/export.cpp:143 +#: ../src/verbs.cpp:2532 msgid "_Page" msgstr "_Páxina" -#: ../src/dialogs/export.cpp:143 ../src/verbs.cpp:2536 +#: ../src/dialogs/export.cpp:143 +#: ../src/verbs.cpp:2536 msgid "_Drawing" msgstr "_Debuxo" -#: ../src/dialogs/export.cpp:143 ../src/verbs.cpp:2538 +#: ../src/dialogs/export.cpp:143 +#: ../src/verbs.cpp:2538 msgid "_Selection" msgstr "_Selección" @@ -1051,10 +1030,13 @@ msgid "x_1:" msgstr "x_1:" #. Stroke width -#: ../src/dialogs/export.cpp:319 ../src/dialogs/object-attributes.cpp:60 +#: ../src/dialogs/export.cpp:319 +#: ../src/dialogs/object-attributes.cpp:60 #: ../src/dialogs/object-attributes.cpp:68 -#: ../src/dialogs/stroke-style.cpp:1090 ../src/widgets/toolbox.cpp:3241 -#: ../src/widgets/toolbox.cpp:3645 ../src/widgets/toolbox.cpp:4318 +#: ../src/dialogs/stroke-style.cpp:1090 +#: ../src/widgets/toolbox.cpp:3241 +#: ../src/widgets/toolbox.cpp:3645 +#: ../src/widgets/toolbox.cpp:4318 msgid "Width:" msgstr "Ancho:" @@ -1066,7 +1048,8 @@ msgstr "_y0:" msgid "y_1:" msgstr "y_1:" -#: ../src/dialogs/export.cpp:335 ../src/dialogs/export.cpp:495 +#: ../src/dialogs/export.cpp:335 +#: ../src/dialogs/export.cpp:495 #: ../src/dialogs/object-attributes.cpp:61 #: ../src/dialogs/object-attributes.cpp:69 msgid "Height:" @@ -1076,11 +1059,13 @@ msgstr "Alto:" msgid "Bitmap size" msgstr "Tamaño do mapa de bits" -#: ../src/dialogs/export.cpp:479 ../src/ui/widget/page-sizer.cpp:191 +#: ../src/dialogs/export.cpp:479 +#: ../src/ui/widget/page-sizer.cpp:191 msgid "_Width:" msgstr "_Ancho:" -#: ../src/dialogs/export.cpp:479 ../src/dialogs/export.cpp:495 +#: ../src/dialogs/export.cpp:479 +#: ../src/dialogs/export.cpp:495 msgid "pixels at" msgstr "píxels con" @@ -1088,7 +1073,8 @@ msgstr "píxels con" msgid "dp_i" msgstr "_ppp" -#: ../src/dialogs/export.cpp:508 ../src/ui/dialog/inkscape-preferences.cpp:673 +#: ../src/dialogs/export.cpp:508 +#: ../src/ui/dialog/inkscape-preferences.cpp:673 msgid "dpi" msgstr "ppp" @@ -1108,15 +1094,12 @@ msgid "Batch export all selected objects" msgstr "Edita-lo equipamento dos obxectos seleccionados" #: ../src/dialogs/export.cpp:623 -msgid "" -"Export each selected object into its own PNG file, using export hints if any " -"(caution, overwrites without asking!)" +msgid "Export each selected object into its own PNG file, using export hints if any (caution, overwrites without asking!)" msgstr "" #: ../src/dialogs/export.cpp:631 -#, fuzzy msgid "Hide all except selected" -msgstr "Manter seleccionado" +msgstr "Agochar todo agás a selección" #: ../src/dialogs/export.cpp:635 msgid "In the exported image, hide all objects except those that are selected" @@ -1135,7 +1118,7 @@ msgstr "Exportar o ficheiro de mapa de bits con esta configuración" #, fuzzy, c-format msgid "Batch export %d selected object" msgid_plural "Batch export %d selected objects" -msgstr[0] "Edita-lo equipamento dos obxectos seleccionados" +msgstr[0] "O ID do obxecto que se vai exportar" msgstr[1] "Edita-lo equipamento dos obxectos seleccionados" #: ../src/dialogs/export.cpp:1014 @@ -1143,11 +1126,12 @@ msgid "Export in progress" msgstr "Exportando" #: ../src/dialogs/export.cpp:1084 -#, fuzzy, c-format +#, c-format msgid "Exporting %d files" -msgstr "Exporta-lo ficheiro" +msgstr "Exportando %d ficheiros" -#: ../src/dialogs/export.cpp:1124 ../src/dialogs/export.cpp:1196 +#: ../src/dialogs/export.cpp:1124 +#: ../src/dialogs/export.cpp:1196 #, c-format msgid "Could not export to filename %s.\n" msgstr "Non se puido exportar ó nome de ficheiro %s.\n" @@ -1166,9 +1150,9 @@ msgid "Directory %s does not exist or is not a directory.\n" msgstr "O directorio %s non existe ou non é un directorio.\n" #: ../src/dialogs/export.cpp:1182 -#, fuzzy, c-format +#, c-format msgid "Exporting %s (%lu x %lu)" -msgstr "Exportando %s (%d x %d)" +msgstr "Exportando %s (%lu x %lu)" #: ../src/dialogs/export.cpp:1303 msgid "Select a filename for exporting" @@ -1177,30 +1161,30 @@ msgstr "Seleccione un nome de ficheiro para exportar" #: ../src/dialogs/fill-style.cpp:283 #, fuzzy msgid "Change fill rule" -msgstr "Cambia-los atributos" +msgstr "R_echeo e Trazo" -#: ../src/dialogs/fill-style.cpp:323 ../src/dialogs/fill-style.cpp:397 -#, fuzzy +#: ../src/dialogs/fill-style.cpp:323 +#: ../src/dialogs/fill-style.cpp:397 msgid "Set fill color" -msgstr "Escolle-la cor de recheo" +msgstr "Definir a cor do recheo" -#: ../src/dialogs/fill-style.cpp:385 ../src/ui/widget/selected-style.cpp:255 +#: ../src/dialogs/fill-style.cpp:385 +#: ../src/ui/widget/selected-style.cpp:255 #: ../src/ui/widget/selected-style.cpp:479 msgid "Remove fill" -msgstr "" +msgstr "Eliminar o recheo" #: ../src/dialogs/fill-style.cpp:466 -#, fuzzy msgid "Set gradient on fill" -msgstr "Crear degradado no recheo" +msgstr "Definir degradado no recheo" #: ../src/dialogs/fill-style.cpp:513 -#, fuzzy msgid "Set pattern on fill" -msgstr "Recheo de patrón" +msgstr "Definir patrón no recheo" #. TRANSLATORS COMMENT: unset is a verb here -#: ../src/dialogs/fill-style.cpp:528 ../src/ui/widget/selected-style.cpp:193 +#: ../src/dialogs/fill-style.cpp:528 +#: ../src/ui/widget/selected-style.cpp:193 #: ../src/ui/widget/selected-style.cpp:251 #: ../src/ui/widget/selected-style.cpp:497 #: ../src/ui/widget/style-swatch.cpp:335 @@ -1208,22 +1192,26 @@ msgid "Unset fill" msgstr "Recheo non asignado" #. TRANSLATORS: "%s" is replaced with "exact" or "partial" when this string is displayed -#: ../src/dialogs/find.cpp:372 ../src/ui/dialog/find.cpp:436 +#: ../src/dialogs/find.cpp:372 +#: ../src/ui/dialog/find.cpp:436 #, c-format msgid "%d object found (out of %d), %s match." msgid_plural "%d objects found (out of %d), %s match." msgstr[0] "Atopouse %d obxecto (de %d), coincidencia %s." msgstr[1] "Atopáronse %d obxectos (de %d), coincidencia %s." -#: ../src/dialogs/find.cpp:375 ../src/ui/dialog/find.cpp:439 +#: ../src/dialogs/find.cpp:375 +#: ../src/ui/dialog/find.cpp:439 msgid "exact" msgstr "exacta" -#: ../src/dialogs/find.cpp:375 ../src/ui/dialog/find.cpp:439 +#: ../src/dialogs/find.cpp:375 +#: ../src/ui/dialog/find.cpp:439 msgid "partial" msgstr "parcial" -#: ../src/dialogs/find.cpp:382 ../src/ui/dialog/find.cpp:446 +#: ../src/dialogs/find.cpp:382 +#: ../src/ui/dialog/find.cpp:446 msgid "No objects found" msgstr "Non se atoparon obxectos" @@ -1231,209 +1219,249 @@ msgstr "Non se atoparon obxectos" msgid "T_ype: " msgstr "T_ipo:" -#: ../src/dialogs/find.cpp:547 ../src/ui/dialog/find.cpp:70 +#: ../src/dialogs/find.cpp:547 +#: ../src/ui/dialog/find.cpp:70 msgid "Search in all object types" msgstr "Procurar en tódolos tipos de obxectos" -#: ../src/dialogs/find.cpp:547 ../src/ui/dialog/find.cpp:70 +#: ../src/dialogs/find.cpp:547 +#: ../src/ui/dialog/find.cpp:70 msgid "All types" msgstr "Tódolos tipos" -#: ../src/dialogs/find.cpp:558 ../src/ui/dialog/find.cpp:71 +#: ../src/dialogs/find.cpp:558 +#: ../src/ui/dialog/find.cpp:71 msgid "Search all shapes" msgstr "Buscar tódalas figuras" -#: ../src/dialogs/find.cpp:558 ../src/ui/dialog/find.cpp:71 +#: ../src/dialogs/find.cpp:558 +#: ../src/ui/dialog/find.cpp:71 msgid "All shapes" msgstr "Tódalas figuras" -#: ../src/dialogs/find.cpp:575 ../src/ui/dialog/find.cpp:72 +#: ../src/dialogs/find.cpp:575 +#: ../src/ui/dialog/find.cpp:72 msgid "Search rectangles" msgstr "Buscar rectángulos" -#: ../src/dialogs/find.cpp:575 ../src/ui/dialog/find.cpp:72 +#: ../src/dialogs/find.cpp:575 +#: ../src/ui/dialog/find.cpp:72 msgid "Rectangles" msgstr "Rectángulos" -#: ../src/dialogs/find.cpp:580 ../src/ui/dialog/find.cpp:73 +#: ../src/dialogs/find.cpp:580 +#: ../src/ui/dialog/find.cpp:73 msgid "Search ellipses, arcs, circles" msgstr "Buscar elipses, arcos e círculos" -#: ../src/dialogs/find.cpp:580 ../src/ui/dialog/find.cpp:73 +#: ../src/dialogs/find.cpp:580 +#: ../src/ui/dialog/find.cpp:73 msgid "Ellipses" msgstr "Elipses" -#: ../src/dialogs/find.cpp:585 ../src/ui/dialog/find.cpp:74 +#: ../src/dialogs/find.cpp:585 +#: ../src/ui/dialog/find.cpp:74 msgid "Search stars and polygons" msgstr "Buscar estrelas e polígonos" -#: ../src/dialogs/find.cpp:585 ../src/ui/dialog/find.cpp:74 +#: ../src/dialogs/find.cpp:585 +#: ../src/ui/dialog/find.cpp:74 msgid "Stars" msgstr "Estrelas" -#: ../src/dialogs/find.cpp:590 ../src/ui/dialog/find.cpp:75 +#: ../src/dialogs/find.cpp:590 +#: ../src/ui/dialog/find.cpp:75 msgid "Search spirals" msgstr "Buscar espirais" -#: ../src/dialogs/find.cpp:590 ../src/ui/dialog/find.cpp:75 +#: ../src/dialogs/find.cpp:590 +#: ../src/ui/dialog/find.cpp:75 msgid "Spirals" msgstr "Espirais" #. TRANSLATORS: polyline is a set of connected straight line segments #. http://www.w3.org/TR/SVG11/shapes.html#PolylineElement -#: ../src/dialogs/find.cpp:603 ../src/ui/dialog/find.cpp:76 +#: ../src/dialogs/find.cpp:603 +#: ../src/ui/dialog/find.cpp:76 msgid "Search paths, lines, polylines" msgstr "" -#: ../src/dialogs/find.cpp:603 ../src/ui/dialog/find.cpp:76 +#: ../src/dialogs/find.cpp:603 +#: ../src/ui/dialog/find.cpp:76 msgid "Paths" msgstr "Camiños" -#: ../src/dialogs/find.cpp:608 ../src/ui/dialog/find.cpp:77 +#: ../src/dialogs/find.cpp:608 +#: ../src/ui/dialog/find.cpp:77 msgid "Search text objects" msgstr "Buscar obxectos de texto" -#: ../src/dialogs/find.cpp:608 ../src/ui/dialog/find.cpp:77 +#: ../src/dialogs/find.cpp:608 +#: ../src/ui/dialog/find.cpp:77 msgid "Texts" msgstr "Textos" -#: ../src/dialogs/find.cpp:613 ../src/ui/dialog/find.cpp:78 +#: ../src/dialogs/find.cpp:613 +#: ../src/ui/dialog/find.cpp:78 msgid "Search groups" msgstr "Buscar grupos" -#: ../src/dialogs/find.cpp:613 ../src/ui/dialog/find.cpp:78 +#: ../src/dialogs/find.cpp:613 +#: ../src/ui/dialog/find.cpp:78 msgid "Groups" msgstr "Grupos" -#: ../src/dialogs/find.cpp:618 ../src/ui/dialog/find.cpp:81 +#: ../src/dialogs/find.cpp:618 +#: ../src/ui/dialog/find.cpp:81 msgid "Search clones" msgstr "Buscar clons" #. TRANSLATORS: Translate the word "Clones" only. A noun indicating type of object to find -#: ../src/dialogs/find.cpp:620 ../src/ui/dialog/find.cpp:81 -#, fuzzy +#: ../src/dialogs/find.cpp:620 +#: ../src/ui/dialog/find.cpp:81 msgid "find|Clones" msgstr "Clons" -#: ../src/dialogs/find.cpp:625 ../src/ui/dialog/find.cpp:82 +#: ../src/dialogs/find.cpp:625 +#: ../src/ui/dialog/find.cpp:82 msgid "Search images" msgstr "Buscar imaxes" -#: ../src/dialogs/find.cpp:625 ../src/ui/dialog/find.cpp:82 +#: ../src/dialogs/find.cpp:625 +#: ../src/ui/dialog/find.cpp:82 #: ../share/extensions/embedimage.inx.h:3 #: ../share/extensions/extractimage.inx.h:2 msgid "Images" msgstr "Imaxes" -#: ../src/dialogs/find.cpp:630 ../src/ui/dialog/find.cpp:83 +#: ../src/dialogs/find.cpp:630 +#: ../src/ui/dialog/find.cpp:83 +#, fuzzy msgid "Search offset objects" -msgstr "" +msgstr "Buscar obxectos de texto" -#: ../src/dialogs/find.cpp:630 ../src/ui/dialog/find.cpp:83 +#: ../src/dialogs/find.cpp:630 +#: ../src/ui/dialog/find.cpp:83 msgid "Offsets" msgstr "" -#: ../src/dialogs/find.cpp:694 ../src/ui/dialog/find.cpp:61 +#: ../src/dialogs/find.cpp:694 +#: ../src/ui/dialog/find.cpp:61 msgid "_Text: " msgstr "_Texto:" -#: ../src/dialogs/find.cpp:694 ../src/ui/dialog/find.cpp:61 +#: ../src/dialogs/find.cpp:694 +#: ../src/ui/dialog/find.cpp:61 msgid "Find objects by their text content (exact or partial match)" -msgstr "" -"Busca obxectos polo seu contido de texto (coincidencia parcial ou exacta)" +msgstr "Busca obxectos polo seu contido de texto (coincidencia parcial ou exacta)" -#: ../src/dialogs/find.cpp:695 ../src/ui/dialog/find.cpp:62 +#: ../src/dialogs/find.cpp:695 +#: ../src/ui/dialog/find.cpp:62 msgid "_ID: " msgstr "_ID: " -#: ../src/dialogs/find.cpp:695 ../src/ui/dialog/find.cpp:62 +#: ../src/dialogs/find.cpp:695 +#: ../src/ui/dialog/find.cpp:62 msgid "Find objects by the value of the id attribute (exact or partial match)" -msgstr "" -"Busca obxectos polo valor do seu atributo id (coincidencia parcial ou exacta)" +msgstr "Busca obxectos polo valor do seu atributo id (coincidencia parcial ou exacta)" -#: ../src/dialogs/find.cpp:696 ../src/ui/dialog/find.cpp:63 +#: ../src/dialogs/find.cpp:696 +#: ../src/ui/dialog/find.cpp:63 msgid "_Style: " msgstr "E_stilo: " -#: ../src/dialogs/find.cpp:696 ../src/ui/dialog/find.cpp:63 -msgid "" -"Find objects by the value of the style attribute (exact or partial match)" -msgstr "" -"Busca obxectos polo valor do atributo style (coincidencia parcial ou exacta)" +#: ../src/dialogs/find.cpp:696 +#: ../src/ui/dialog/find.cpp:63 +msgid "Find objects by the value of the style attribute (exact or partial match)" +msgstr "Busca obxectos polo valor do atributo style (coincidencia parcial ou exacta)" -#: ../src/dialogs/find.cpp:697 ../src/ui/dialog/find.cpp:64 +#: ../src/dialogs/find.cpp:697 +#: ../src/ui/dialog/find.cpp:64 msgid "_Attribute: " msgstr "_Atributo: " -#: ../src/dialogs/find.cpp:697 ../src/ui/dialog/find.cpp:64 +#: ../src/dialogs/find.cpp:697 +#: ../src/ui/dialog/find.cpp:64 msgid "Find objects by the name of an attribute (exact or partial match)" msgstr "Busca obxectos polo nome dun atributo (coincidencia parcial ou exacta)" -#: ../src/dialogs/find.cpp:711 ../src/ui/dialog/find.cpp:65 +#: ../src/dialogs/find.cpp:711 +#: ../src/ui/dialog/find.cpp:65 msgid "Search in s_election" msgstr "Buscar na s_elección" -#: ../src/dialogs/find.cpp:715 ../src/ui/dialog/find.cpp:65 +#: ../src/dialogs/find.cpp:715 +#: ../src/ui/dialog/find.cpp:65 msgid "Limit search to the current selection" msgstr "Limita a busca á selección actual" -#: ../src/dialogs/find.cpp:720 ../src/ui/dialog/find.cpp:66 +#: ../src/dialogs/find.cpp:720 +#: ../src/ui/dialog/find.cpp:66 msgid "Search in current _layer" msgstr "Buscar na _capa actual" -#: ../src/dialogs/find.cpp:724 ../src/ui/dialog/find.cpp:66 +#: ../src/dialogs/find.cpp:724 +#: ../src/ui/dialog/find.cpp:66 msgid "Limit search to the current layer" msgstr "Limitar a busca á capa actual" -#: ../src/dialogs/find.cpp:729 ../src/ui/dialog/find.cpp:67 +#: ../src/dialogs/find.cpp:729 +#: ../src/ui/dialog/find.cpp:67 msgid "Include _hidden" msgstr "Incluir _agochados" -#: ../src/dialogs/find.cpp:733 ../src/ui/dialog/find.cpp:67 +#: ../src/dialogs/find.cpp:733 +#: ../src/ui/dialog/find.cpp:67 msgid "Include hidden objects in search" msgstr "Incluir obxectos agochados na busca" -#: ../src/dialogs/find.cpp:738 ../src/ui/dialog/find.cpp:68 +#: ../src/dialogs/find.cpp:738 +#: ../src/ui/dialog/find.cpp:68 msgid "Include l_ocked" msgstr "Incluir os bl_oqueados" -#: ../src/dialogs/find.cpp:742 ../src/ui/dialog/find.cpp:68 +#: ../src/dialogs/find.cpp:742 +#: ../src/ui/dialog/find.cpp:68 msgid "Include locked objects in search" msgstr "Incluir os obxectos bloqueados na busca" -#: ../src/dialogs/find.cpp:753 ../src/ui/dialog/find.cpp:85 +#: ../src/dialogs/find.cpp:753 +#: ../src/ui/dialog/find.cpp:85 msgid "Clear values" msgstr "Limpar os valores" -#: ../src/dialogs/find.cpp:754 ../src/ui/dialog/find.cpp:86 +#: ../src/dialogs/find.cpp:754 +#: ../src/ui/dialog/find.cpp:86 msgid "_Find" msgstr "_Buscar" -#: ../src/dialogs/find.cpp:754 ../src/ui/dialog/find.cpp:86 +#: ../src/dialogs/find.cpp:754 +#: ../src/ui/dialog/find.cpp:86 msgid "Select objects matching all of the fields you filled in" msgstr "Seleccionar os obxectos que coincidan con tódolos campos que encheu" #: ../src/dialogs/guidelinedialog.cpp:44 #, fuzzy msgid "Unit:" -msgstr "Unidades:" +msgstr "Unidade:" #: ../src/dialogs/guidelinedialog.cpp:45 #: ../src/dialogs/object-attributes.cpp:58 -#: ../src/dialogs/object-attributes.cpp:66 ../src/widgets/toolbox.cpp:1248 +#: ../src/dialogs/object-attributes.cpp:66 +#: ../src/widgets/toolbox.cpp:1248 msgid "X:" msgstr "X:" #: ../src/dialogs/guidelinedialog.cpp:46 #: ../src/dialogs/object-attributes.cpp:59 -#: ../src/dialogs/object-attributes.cpp:67 ../src/widgets/toolbox.cpp:1266 +#: ../src/dialogs/object-attributes.cpp:67 +#: ../src/widgets/toolbox.cpp:1266 msgid "Y:" msgstr "Y:" #: ../src/dialogs/guidelinedialog.cpp:47 -#, fuzzy msgid "Angle (degrees):" -msgstr "graos" +msgstr "Ángulo (graos):" #: ../src/dialogs/guidelinedialog.cpp:48 #, fuzzy @@ -1445,9 +1473,8 @@ msgid "Move and/or rotate the guide relative to current settings" msgstr "" #: ../src/dialogs/guidelinedialog.cpp:114 -#, fuzzy msgid "Set guide properties" -msgstr "Propiedades do elemento" +msgstr "Definir as propiedades da guía" #: ../src/dialogs/guidelinedialog.cpp:153 msgid "Guideline" @@ -1456,12 +1483,12 @@ msgstr "Liña-guía" #: ../src/dialogs/guidelinedialog.cpp:241 #, fuzzy, c-format msgid "Guideline ID: %s" -msgstr "Liña-guía" +msgstr "O ID é incorrecto!" #: ../src/dialogs/guidelinedialog.cpp:247 -#, fuzzy, c-format +#, c-format msgid "Current: %s" -msgstr "Configuración do documento" +msgstr "Actual: %s" #: ../src/dialogs/iconpreview.cpp:139 #, c-format @@ -1492,12 +1519,12 @@ msgid "_Id" msgstr "_Id" #: ../src/dialogs/item-properties.cpp:129 -msgid "" -"The id= attribute (only letters, digits, and the characters .-_: allowed)" +msgid "The id= attribute (only letters, digits, and the characters .-_: allowed)" msgstr "O atributo id= (só se permiten letras, díxitos e os caracteres .-_:)" #. Button for setting the object's id, label, title and description. -#: ../src/dialogs/item-properties.cpp:143 ../src/verbs.cpp:2401 +#: ../src/dialogs/item-properties.cpp:143 +#: ../src/verbs.cpp:2401 #: ../src/verbs.cpp:2407 msgid "_Set" msgstr "E_stablecer" @@ -1512,12 +1539,14 @@ msgid "A freeform label for the object" msgstr "" #. Create the label for the object title -#: ../src/dialogs/item-properties.cpp:173 ../src/dialogs/rdf.cpp:238 +#: ../src/dialogs/item-properties.cpp:173 +#: ../src/dialogs/rdf.cpp:238 msgid "Title" msgstr "Título" #. Create the frame for the object description -#: ../src/dialogs/item-properties.cpp:190 ../src/dialogs/rdf.cpp:282 +#: ../src/dialogs/item-properties.cpp:190 +#: ../src/dialogs/rdf.cpp:282 #: ../src/ui/widget/page-sizer.cpp:200 msgid "Description" msgstr "Descrición" @@ -1539,8 +1568,7 @@ msgstr "Bl_oquear" #: ../src/dialogs/item-properties.cpp:229 msgid "Check to make the object insensitive (not selectable by mouse)" -msgstr "" -"Marque para facer que o obxecto sexa insensible (non seleccionable co rato)" +msgstr "Marque para facer que o obxecto sexa insensible (non seleccionable co rato)" #: ../src/dialogs/item-properties.cpp:305 #: ../src/dialogs/item-properties.cpp:312 @@ -1548,24 +1576,20 @@ msgid "Ref" msgstr "" #: ../src/dialogs/item-properties.cpp:372 -#, fuzzy msgid "Lock object" -msgstr "Non hai obxectos seleccionados" +msgstr "Bloquear o obxecto" #: ../src/dialogs/item-properties.cpp:372 -#, fuzzy msgid "Unlock object" -msgstr "Ignorar os obxectos bloqueados" +msgstr "Desbloquear o obxecto" #: ../src/dialogs/item-properties.cpp:391 -#, fuzzy msgid "Hide object" -msgstr "Non hai obxectos seleccionados" +msgstr "Agochar o obxecto" #: ../src/dialogs/item-properties.cpp:391 -#, fuzzy msgid "Unhide object" -msgstr "Ignorar os obxectos agochados" +msgstr "Mostrar o obxecto" #: ../src/dialogs/item-properties.cpp:415 msgid "Id invalid! " @@ -1576,33 +1600,28 @@ msgid "Id exists! " msgstr "O ID xa existe!" #: ../src/dialogs/item-properties.cpp:424 -#, fuzzy msgid "Set object ID" -msgstr "Buscar obxectos de texto" +msgstr "Definir o ID do obxecto" #: ../src/dialogs/item-properties.cpp:439 -#, fuzzy msgid "Set object label" -msgstr "E_stilo do trazo" +msgstr "Definir a etiqueta do obxecto" #: ../src/dialogs/item-properties.cpp:450 -#, fuzzy msgid "Set object title" -msgstr "E_stilo do trazo" +msgstr "Definir o título do obxecto" #: ../src/dialogs/item-properties.cpp:465 -#, fuzzy msgid "Set object description" -msgstr "selecciona-la dirección" +msgstr "Definir a descrición do obxecto" #: ../src/dialogs/layer-properties.cpp:47 msgid "Layer name:" msgstr "Nome da capa:" #: ../src/dialogs/layer-properties.cpp:115 -#, fuzzy msgid "Add layer" -msgstr "Engadir Capa" +msgstr "Engadir unha capa" #: ../src/dialogs/layer-properties.cpp:153 msgid "Above current" @@ -1629,9 +1648,8 @@ msgid "_Rename" msgstr "_Renomear" #: ../src/dialogs/layer-properties.cpp:195 -#, fuzzy msgid "Rename layer" -msgstr "Renomeouse a capa" +msgstr "Renomear unha capa" #. TRANSLATORS: This means "The layer has been renamed" #: ../src/dialogs/layer-properties.cpp:197 @@ -1650,33 +1668,35 @@ msgstr "_Engadir" msgid "New layer created." msgstr "Creouse unha nova capa." -#: ../src/dialogs/layers-panel.cpp:579 ../src/widgets/layer-selector.cpp:595 -#, fuzzy +#: ../src/dialogs/layers-panel.cpp:579 +#: ../src/widgets/layer-selector.cpp:595 msgid "Unhide layer" -msgstr "Elevar a Capa" +msgstr "Mostrar unha capa" -#: ../src/dialogs/layers-panel.cpp:579 ../src/widgets/layer-selector.cpp:595 -#, fuzzy +#: ../src/dialogs/layers-panel.cpp:579 +#: ../src/widgets/layer-selector.cpp:595 msgid "Hide layer" -msgstr "Elevar a Capa" +msgstr "Agochar unha capa" -#: ../src/dialogs/layers-panel.cpp:590 ../src/widgets/layer-selector.cpp:587 -#, fuzzy +#: ../src/dialogs/layers-panel.cpp:590 +#: ../src/widgets/layer-selector.cpp:587 msgid "Lock layer" -msgstr "Baixar a Capa" +msgstr "Bloquear unha capa" -#: ../src/dialogs/layers-panel.cpp:590 ../src/widgets/layer-selector.cpp:587 -#, fuzzy +#: ../src/dialogs/layers-panel.cpp:590 +#: ../src/widgets/layer-selector.cpp:587 msgid "Unlock layer" -msgstr "Baixar a Capa" +msgstr "Desbloquear unha capa" #: ../src/dialogs/layers-panel.cpp:735 msgid "New" msgstr "Novo" -#: ../src/dialogs/layers-panel.cpp:740 ../share/extensions/restack.inx.h:16 +#: ../src/dialogs/layers-panel.cpp:740 +#: ../share/extensions/restack.inx.h:16 +#, fuzzy msgid "Top" -msgstr "" +msgstr "Elevar á cima" #: ../src/dialogs/layers-panel.cpp:746 msgid "Up" @@ -1730,7 +1750,7 @@ msgstr "Título:" #: ../share/extensions/polyhedron_3d.inx.h:38 #, fuzzy msgid "Show:" -msgstr "Mostrar:" +msgstr "Amosar/Agochar" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/linking.html#AElementXLinkActuateAttribute #: ../src/dialogs/object-attributes.cpp:52 @@ -1742,9 +1762,9 @@ msgid "URL:" msgstr "URL:" #: ../src/dialogs/object-attributes.cpp:113 -#, fuzzy, c-format +#, c-format msgid "%s Properties" -msgstr "Propiedades do elemento" +msgstr "Propiedades de %s" #: ../src/dialogs/rdf.cpp:181 msgid "CC Attribution" @@ -1779,9 +1799,8 @@ msgid "FreeArt" msgstr "FreeArt" #: ../src/dialogs/rdf.cpp:221 -#, fuzzy msgid "Open Font License" -msgstr "Abrir un novo ficheiro" +msgstr "Licenza Open Font" #: ../src/dialogs/rdf.cpp:239 msgid "Name by which this document is formally known." @@ -1799,14 +1818,13 @@ msgstr "Data asociada ca creación deste documento (AAAA-MM-DD)." msgid "Format" msgstr "Formato" -# Rosetta #: ../src/dialogs/rdf.cpp:245 -#, fuzzy msgid "The physical or digital manifestation of this document (MIME type)." msgstr "A manifestación física ou dixital deste documento (tipo MIME)." #. _settings->add_checkbutton(false, SP_ATTR_STITCHTILES, _("Stitch Tiles"), "stitch", "noStitch"); -#: ../src/dialogs/rdf.cpp:247 ../src/extension/internal/bitmap/addNoise.cpp:46 +#: ../src/dialogs/rdf.cpp:247 +#: ../src/extension/internal/bitmap/addNoise.cpp:46 #: ../src/ui/dialog/filter-effects-dialog.cpp:2194 #: ../src/ui/dialog/filter-effects-dialog.cpp:2273 msgid "Type" @@ -1821,21 +1839,16 @@ msgid "Creator" msgstr "Creador" #: ../src/dialogs/rdf.cpp:252 -msgid "" -"Name of entity primarily responsible for making the content of this document." -msgstr "" -"Nome da principal entidade responsable de crear o contido deste documento." +msgid "Name of entity primarily responsible for making the content of this document." +msgstr "Nome da principal entidade responsable de crear o contido deste documento." #: ../src/dialogs/rdf.cpp:254 msgid "Rights" msgstr "Dereitos" #: ../src/dialogs/rdf.cpp:255 -msgid "" -"Name of entity with rights to the Intellectual Property of this document." -msgstr "" -"Nome da entidade que ten os dereitos de Propiedade Intelectual deste " -"documento." +msgid "Name of entity with rights to the Intellectual Property of this document." +msgstr "Nome da entidade que ten os dereitos de Propiedade Intelectual deste documento." #: ../src/dialogs/rdf.cpp:257 msgid "Publisher" @@ -1843,34 +1856,30 @@ msgstr "Editor" #: ../src/dialogs/rdf.cpp:258 msgid "Name of entity responsible for making this document available." -msgstr "" -"Nome da entidade responsable de facer que este documento estea dispoñible." +msgstr "Nome da entidade responsable de facer que este documento estea dispoñible." #: ../src/dialogs/rdf.cpp:261 msgid "Identifier" msgstr "Identificador" #: ../src/dialogs/rdf.cpp:262 -#, fuzzy msgid "Unique URI to reference this document." msgstr "URI único para referirse a este documento." -#: ../src/dialogs/rdf.cpp:264 ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1392 +#: ../src/dialogs/rdf.cpp:264 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1392 msgid "Source" msgstr "Fonte" #: ../src/dialogs/rdf.cpp:265 -#, fuzzy msgid "Unique URI to reference the source of this document." msgstr "URI único para referirse á fonte deste documento." #: ../src/dialogs/rdf.cpp:267 -#, fuzzy msgid "Relation" msgstr "Relación" #: ../src/dialogs/rdf.cpp:268 -#, fuzzy msgid "Unique URI to a related document." msgstr "URI único a un documento relacionado." @@ -1879,24 +1888,16 @@ msgid "Language" msgstr "Lingua" #: ../src/dialogs/rdf.cpp:271 -msgid "" -"Two-letter language tag with optional subtags for the language of this " -"document. (e.g. 'en-GB')" -msgstr "" -"Etiqueta de dúas letras da lingua con subetiquetas opcionais para a lingua " -"deste documento. (p.ex. 'gl-ES')" +msgid "Two-letter language tag with optional subtags for the language of this document. (e.g. 'en-GB')" +msgstr "Etiqueta de dúas letras da lingua con subetiquetas opcionais para a lingua deste documento. (p.ex. 'gl-ES')" #: ../src/dialogs/rdf.cpp:273 msgid "Keywords" msgstr "Palabras clave" #: ../src/dialogs/rdf.cpp:274 -msgid "" -"The topic of this document as comma-separated key words, phrases, or " -"classifications." -msgstr "" -"O tema deste documento nunha lista de palabras clave, frases ou " -"clasificacións separadas por comas." +msgid "The topic of this document as comma-separated key words, phrases, or classifications." +msgstr "O tema deste documento nunha lista de palabras clave, frases ou clasificacións separadas por comas." #. 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/ @@ -1918,12 +1919,8 @@ msgid "Contributors" msgstr "Contribuíntes" #: ../src/dialogs/rdf.cpp:288 -msgid "" -"Names of entities responsible for making contributions to the content of " -"this document." -msgstr "" -"Nomes das entidades responsables de facer contribucións ó contido deste " -"documento." +msgid "Names of entities responsible for making contributions to the content of this document." +msgstr "Nomes das entidades responsables de facer contribucións ó contido deste documento." #. TRANSLATORS: URL to a page that defines the license for the document #: ../src/dialogs/rdf.cpp:292 @@ -1940,59 +1937,64 @@ msgstr "URI á definición do espazo de nomes da licenza deste documento." #: ../src/dialogs/rdf.cpp:298 #, fuzzy msgid "Fragment" -msgstr "Fragmento de XML" +msgstr "Fragmento" # Rosetta #: ../src/dialogs/rdf.cpp:299 #, fuzzy msgid "XML fragment for the RDF 'License' section." -msgstr "Fragmento de XML para a sección \"Licenza\" da RDF" +msgstr "Fragmento de XML para a sección 'Licenza' da RDF" #. TRANSLATORS: "Set" is a verb here #: ../src/dialogs/sp-attribute-widget.cpp:166 -#: ../src/dialogs/sp-attribute-widget.cpp:773 ../src/dialogs/xml-tree.cpp:533 +#: ../src/dialogs/sp-attribute-widget.cpp:773 +#: ../src/dialogs/xml-tree.cpp:533 msgid "Set attribute" msgstr "Establecer o atributo" -#: ../src/dialogs/stroke-style.cpp:305 ../src/dialogs/stroke-style.cpp:364 -#, fuzzy +#: ../src/dialogs/stroke-style.cpp:305 +#: ../src/dialogs/stroke-style.cpp:364 msgid "Set stroke color" -msgstr "Escolle-la cor de trazado" +msgstr "Definir a cor do trazo" -#: ../src/dialogs/stroke-style.cpp:355 ../src/ui/widget/selected-style.cpp:255 +#: ../src/dialogs/stroke-style.cpp:355 +#: ../src/ui/widget/selected-style.cpp:255 #: ../src/ui/widget/selected-style.cpp:488 msgid "Remove stroke" -msgstr "" +msgstr "Eliminar o trazo" #: ../src/dialogs/stroke-style.cpp:416 -#, fuzzy msgid "Set gradient on stroke" -msgstr "Crear degradado no trazo" +msgstr "Definir degradado no trazo" #: ../src/dialogs/stroke-style.cpp:460 -#, fuzzy msgid "Set pattern on stroke" -msgstr "Trazo non asignado" +msgstr "Definir patrón no trazo" -#: ../src/dialogs/stroke-style.cpp:481 ../src/ui/widget/selected-style.cpp:193 +#: ../src/dialogs/stroke-style.cpp:481 +#: ../src/ui/widget/selected-style.cpp:193 #: ../src/ui/widget/selected-style.cpp:251 #: ../src/ui/widget/selected-style.cpp:513 #: ../src/ui/widget/style-swatch.cpp:335 msgid "Unset stroke" msgstr "Trazo non asignado" -#: ../src/dialogs/stroke-style.cpp:793 ../src/filter-enums.cpp:95 -#: ../src/flood-context.cpp:288 ../src/interface.cpp:826 +#: ../src/dialogs/stroke-style.cpp:793 +#: ../src/filter-enums.cpp:95 +#: ../src/flood-context.cpp:288 +#: ../src/interface.cpp:826 #: ../src/ui/dialog/filter-effects-dialog.cpp:507 #: ../src/ui/dialog/inkscape-preferences.cpp:211 #: ../src/ui/dialog/inkscape-preferences.cpp:375 #: ../src/ui/dialog/inkscape-preferences.cpp:501 -#: ../src/ui/dialog/inkscape-preferences.cpp:958 ../src/verbs.cpp:2156 +#: ../src/ui/dialog/inkscape-preferences.cpp:958 +#: ../src/verbs.cpp:2156 #: ../share/extensions/grid_polar.inx.h:16 msgid "None" msgstr "Ningún" -#: ../src/dialogs/stroke-style.cpp:848 ../src/widgets/gradient-vector.cpp:264 +#: ../src/dialogs/stroke-style.cpp:848 +#: ../src/widgets/gradient-vector.cpp:264 #: ../src/widgets/paint-selector.cpp:885 msgid "No document selected" msgstr "Non se seleccionou ningún documento" @@ -2002,7 +2004,8 @@ msgstr "Non se seleccionou ningún documento" msgid "Set markers" msgstr "Marcas Iniciais:" -#: ../src/dialogs/stroke-style.cpp:1104 ../share/extensions/edge3d.inx.h:9 +#: ../src/dialogs/stroke-style.cpp:1104 +#: ../share/extensions/edge3d.inx.h:9 msgid "Stroke width" msgstr "Ancho do trazo" @@ -2020,7 +2023,7 @@ msgstr "Xuntura:" #: ../src/dialogs/stroke-style.cpp:1139 #, fuzzy msgid "Miter join" -msgstr "Xuntar metades" +msgstr "Xuntura redondeada" #. TRANSLATORS: Round join: joining lines with a rounded corner. #. For an example, draw a triangle with a large stroke width and modify the @@ -2036,7 +2039,7 @@ msgstr "Xuntura redondeada" #: ../src/dialogs/stroke-style.cpp:1155 #, fuzzy msgid "Bevel join" -msgstr "Xuntar biselado" +msgstr "Xuntura redondeada" #. Miterlimit #. TRANSLATORS: Miter limit: only for "miter join", this limits the length @@ -2072,7 +2075,7 @@ msgstr "Punta decapitada" #: ../src/dialogs/stroke-style.cpp:1205 #, fuzzy msgid "Round cap" -msgstr "Punta redondeada" +msgstr "Xuntura redondeada" #. TRANSLATORS: Square cap: the line shape extends beyond the end point of the #. line; the ends of the line are square @@ -2102,35 +2105,31 @@ msgstr "Marcas Centrais:" #: ../src/dialogs/stroke-style.cpp:1259 #, fuzzy msgid "End Markers:" -msgstr "Marcadores Finais:" +msgstr "Marcas Finais:" -#: ../src/dialogs/stroke-style.cpp:1605 ../src/dialogs/stroke-style.cpp:1703 -#, fuzzy +#: ../src/dialogs/stroke-style.cpp:1605 +#: ../src/dialogs/stroke-style.cpp:1703 msgid "Set stroke style" -msgstr "E_stilo do trazo" +msgstr "Definir o estilo do trazo" #: ../src/dialogs/swatches.cpp:248 #, c-format -msgid "" -"Color: %s; Click to set fill, Shift+click to set stroke" +msgid "Color: %s; Click to set fill, Shift+click to set stroke" msgstr "" #. TRANSLATORS: An item in context menu on a colour in the swatches #: ../src/dialogs/swatches.cpp:298 -#, fuzzy msgid "Set fill" -msgstr "Recheo non asignado" +msgstr "Definir o recheo" #. TRANSLATORS: An item in context menu on a colour in the swatches #: ../src/dialogs/swatches.cpp:306 -#, fuzzy msgid "Set stroke" -msgstr "Trazo non asignado" +msgstr "Definir o trazo" #: ../src/dialogs/swatches.cpp:525 -#, fuzzy msgid "Change color definition" -msgstr "Orientación da páxina:" +msgstr "Cambiar a definición da cor" #: ../src/dialogs/swatches.cpp:676 #, fuzzy @@ -2147,7 +2146,8 @@ msgid "Palettes directory (%s) is unavailable." msgstr "O directorio de paletas (%s) non está dispoñible." #. TODO: Insert widgets -#: ../src/dialogs/text-edit.cpp:200 ../src/ui/dialog/text-properties.cpp:36 +#: ../src/dialogs/text-edit.cpp:200 +#: ../src/ui/dialog/text-properties.cpp:36 msgid "Font" msgstr "Fonte" @@ -2169,27 +2169,30 @@ msgid "Align lines right" msgstr "Aliñar as liñas á dereita" #: ../src/dialogs/text-edit.cpp:280 -#, fuzzy msgid "Justify lines" -msgstr "Xustificar" +msgstr "Xustificar as liñas" -#: ../src/dialogs/text-edit.cpp:302 ../src/widgets/toolbox.cpp:5354 +#: ../src/dialogs/text-edit.cpp:302 +#: ../src/widgets/toolbox.cpp:5354 msgid "Horizontal text" msgstr "Texto horizontal" -#: ../src/dialogs/text-edit.cpp:316 ../src/widgets/toolbox.cpp:5366 +#: ../src/dialogs/text-edit.cpp:316 +#: ../src/widgets/toolbox.cpp:5366 msgid "Vertical text" msgstr "Texto vertical" #: ../src/dialogs/text-edit.cpp:331 #, fuzzy msgid "Line spacing:" -msgstr "Espaciado de liñas:" +msgstr "Establecer espacio:" #. Text -#: ../src/dialogs/text-edit.cpp:377 ../src/selection-describer.cpp:67 +#: ../src/dialogs/text-edit.cpp:377 +#: ../src/selection-describer.cpp:67 #: ../src/ui/dialog/inkscape-preferences.cpp:469 -#: ../src/ui/dialog/text-properties.cpp:37 ../src/verbs.cpp:2437 +#: ../src/ui/dialog/text-properties.cpp:37 +#: ../src/verbs.cpp:2437 #: ../share/extensions/lorem_ipsum.inx.h:5 #: ../share/extensions/render_alphabetsoup.inx.h:4 #: ../share/extensions/text_braille.inx.h:2 @@ -2208,14 +2211,16 @@ msgstr "Texto" msgid "Set as default" msgstr "Establecer coma predeterminado" -#: ../src/dialogs/text-edit.cpp:665 ../src/text-context.cpp:1438 +#: ../src/dialogs/text-edit.cpp:665 +#: ../src/text-context.cpp:1438 #, fuzzy msgid "Set text style" -msgstr "E_stilo do trazo" +msgstr "Establecer o estilo do texto" #: ../src/dialogs/tiledialog.cpp:353 +#, fuzzy msgid "Arrange in a grid" -msgstr "" +msgstr "Crear nova reixa" #: ../src/dialogs/tiledialog.cpp:654 msgid "Rows:" @@ -2235,7 +2240,8 @@ msgstr "Se non está establecido, cada fila ten o alto do seu obxecto máis alto #. #### Radio buttons to control vertical alignment #### #. #### Radio buttons to control horizontal alignment #### -#: ../src/dialogs/tiledialog.cpp:682 ../src/dialogs/tiledialog.cpp:752 +#: ../src/dialogs/tiledialog.cpp:682 +#: ../src/dialogs/tiledialog.cpp:752 msgid "Align:" msgstr "Aliñar:" @@ -2254,14 +2260,13 @@ msgstr "Igual ancho" #: ../src/dialogs/tiledialog.cpp:745 msgid "If not set, each column has the width of the widest object in it" -msgstr "" -"Se non está establecido, cada columna ten o ancho do obxecto máis ancho que " -"conteña" +msgstr "Se non está establecido, cada columna ten o ancho do obxecto máis ancho que conteña" #. #### Radio buttons to control spacing manually or to fit selection bbox #### #: ../src/dialogs/tiledialog.cpp:791 +#, fuzzy msgid "Fit into selection box" -msgstr "" +msgstr "A_daptar a páxina á selección" #: ../src/dialogs/tiledialog.cpp:797 msgid "Set spacing:" @@ -2276,10 +2281,10 @@ msgid "Horizontal spacing between columns (px units)" msgstr "Espacio horizontal entre as columnas (unidades en píxels)" #. ## The OK button -#: ../src/dialogs/tiledialog.cpp:865 ../share/extensions/restack.inx.h:3 -#, fuzzy +#: ../src/dialogs/tiledialog.cpp:865 +#: ../share/extensions/restack.inx.h:3 msgid "Arrange" -msgstr "Ángulo" +msgstr "Ordenar" #: ../src/dialogs/tiledialog.cpp:866 msgid "Arrange selected objects" @@ -2287,8 +2292,7 @@ msgstr "Ordena-los obxectos seleccionados" #: ../src/dialogs/xml-tree.cpp:174 msgid "Click to select nodes, drag to rearrange." -msgstr "" -"Prema para seleccionar os nodos, arrastre para reordenar." +msgstr "Prema para seleccionar os nodos, arrastre para reordenar." #: ../src/dialogs/xml-tree.cpp:185 msgid "Click attribute to edit." @@ -2296,12 +2300,8 @@ msgstr "Prema nun atributo para editalo." #: ../src/dialogs/xml-tree.cpp:189 #, c-format -msgid "" -"Attribute %s selected. Press Ctrl+Enter when done editing to " -"commit changes." -msgstr "" -"Seleccionou o atributo %s. Prema Ctrl+Intro cando remate de " -"editar para confirmar os cambios." +msgid "Attribute %s selected. Press Ctrl+Enter when done editing to commit changes." +msgstr "Seleccionou o atributo %s. Prema Ctrl+Intro cando remate de editar para confirmar os cambios." #: ../src/dialogs/xml-tree.cpp:284 msgid "Drag to reorder nodes" @@ -2315,33 +2315,41 @@ msgstr "Novo nodo" msgid "New text node" msgstr "Novo nodo de texto" -#: ../src/dialogs/xml-tree.cpp:347 ../src/dialogs/xml-tree.cpp:1414 +#: ../src/dialogs/xml-tree.cpp:347 +#: ../src/dialogs/xml-tree.cpp:1414 #: ../src/nodepath.cpp:2024 msgid "Duplicate node" msgstr "Duplicar o nodo" -#: ../src/dialogs/xml-tree.cpp:368 ../src/dialogs/xml-tree.cpp:1431 -#: ../src/nodepath.cpp:3273 ../src/widgets/toolbox.cpp:1086 +#: ../src/dialogs/xml-tree.cpp:368 +#: ../src/dialogs/xml-tree.cpp:1431 +#: ../src/nodepath.cpp:3273 +#: ../src/widgets/toolbox.cpp:1086 msgid "Delete node" msgstr "Borrar o nodo" -#: ../src/dialogs/xml-tree.cpp:384 ../src/dialogs/xml-tree.cpp:1576 +#: ../src/dialogs/xml-tree.cpp:384 +#: ../src/dialogs/xml-tree.cpp:1576 msgid "Unindent node" msgstr "Eliminar a sangría do nodo" -#: ../src/dialogs/xml-tree.cpp:399 ../src/dialogs/xml-tree.cpp:1555 +#: ../src/dialogs/xml-tree.cpp:399 +#: ../src/dialogs/xml-tree.cpp:1555 msgid "Indent node" msgstr "Sangrar o nodo" -#: ../src/dialogs/xml-tree.cpp:411 ../src/dialogs/xml-tree.cpp:1508 +#: ../src/dialogs/xml-tree.cpp:411 +#: ../src/dialogs/xml-tree.cpp:1508 msgid "Raise node" msgstr "Subir o nodo" -#: ../src/dialogs/xml-tree.cpp:423 ../src/dialogs/xml-tree.cpp:1525 +#: ../src/dialogs/xml-tree.cpp:423 +#: ../src/dialogs/xml-tree.cpp:1525 msgid "Lower node" msgstr "Baixar o nodo" -#: ../src/dialogs/xml-tree.cpp:468 ../src/dialogs/xml-tree.cpp:1449 +#: ../src/dialogs/xml-tree.cpp:468 +#: ../src/dialogs/xml-tree.cpp:1449 msgid "Delete attribute" msgstr "Borrar o atributo" @@ -2361,8 +2369,9 @@ msgid "Attribute value" msgstr "Valor do atributo" #: ../src/dialogs/xml-tree.cpp:891 +#, fuzzy msgid "Drag XML subtree" -msgstr "" +msgstr "image/svg+xml" #: ../src/dialogs/xml-tree.cpp:1318 msgid "New element node..." @@ -2381,76 +2390,83 @@ msgstr "Crear" #: ../src/dialogs/xml-tree.cpp:1380 #, fuzzy msgid "Create new element node" -msgstr "Novo nodo" +msgstr "Crear novo nodo de texto" #: ../src/dialogs/xml-tree.cpp:1396 -#, fuzzy msgid "Create new text node" -msgstr "Novo nodo de texto" +msgstr "Crear novo nodo de texto" #: ../src/dialogs/xml-tree.cpp:1478 -#, fuzzy msgid "Change attribute" -msgstr "Establecer o atributo" +msgstr "Cambiar o atributo" -#: ../src/display/canvas-axonomgrid.cpp:390 ../src/display/canvas-grid.cpp:656 +#: ../src/display/canvas-axonomgrid.cpp:390 +#: ../src/display/canvas-grid.cpp:656 msgid "Grid _units:" msgstr "_Unidades da reixa:" -#: ../src/display/canvas-axonomgrid.cpp:392 ../src/display/canvas-grid.cpp:658 +#: ../src/display/canvas-axonomgrid.cpp:392 +#: ../src/display/canvas-grid.cpp:658 msgid "_Origin X:" msgstr "_Orixe X:" -#: ../src/display/canvas-axonomgrid.cpp:392 ../src/display/canvas-grid.cpp:658 +#: ../src/display/canvas-axonomgrid.cpp:392 +#: ../src/display/canvas-grid.cpp:658 #: ../src/ui/dialog/inkscape-preferences.cpp:869 #: ../src/ui/dialog/inkscape-preferences.cpp:890 msgid "X coordinate of grid origin" msgstr "Coordenada X da orixe da reixa" -#: ../src/display/canvas-axonomgrid.cpp:394 ../src/display/canvas-grid.cpp:660 +#: ../src/display/canvas-axonomgrid.cpp:394 +#: ../src/display/canvas-grid.cpp:660 msgid "O_rigin Y:" msgstr "Ori_xe Y:" -#: ../src/display/canvas-axonomgrid.cpp:394 ../src/display/canvas-grid.cpp:660 +#: ../src/display/canvas-axonomgrid.cpp:394 +#: ../src/display/canvas-grid.cpp:660 #: ../src/ui/dialog/inkscape-preferences.cpp:870 #: ../src/ui/dialog/inkscape-preferences.cpp:891 msgid "Y coordinate of grid origin" msgstr "Coordenada Y da orixe da reixa" -#: ../src/display/canvas-axonomgrid.cpp:396 ../src/display/canvas-grid.cpp:664 +#: ../src/display/canvas-axonomgrid.cpp:396 +#: ../src/display/canvas-grid.cpp:664 msgid "Spacing _Y:" msgstr "Separación _Y:" #: ../src/display/canvas-axonomgrid.cpp:396 #: ../src/ui/dialog/inkscape-preferences.cpp:893 +#, fuzzy msgid "Base length of z-axis" -msgstr "" +msgstr "Centrar no eixe vertical" -#: ../src/display/canvas-axonomgrid.cpp:398 ../src/widgets/toolbox.cpp:2723 -#, fuzzy +#: ../src/display/canvas-axonomgrid.cpp:398 +#: ../src/widgets/toolbox.cpp:2723 msgid "Angle X:" -msgstr "Ángulo:" +msgstr "Ángulo X:" #: ../src/display/canvas-axonomgrid.cpp:398 #: ../src/ui/dialog/inkscape-preferences.cpp:896 msgid "Angle of x-axis" -msgstr "" +msgstr "Ángulo do eixe X" -#: ../src/display/canvas-axonomgrid.cpp:400 ../src/widgets/toolbox.cpp:2802 -#, fuzzy -msgid "Angle Z:" -msgstr "Ángulo:" +#: ../src/display/canvas-axonomgrid.cpp:400 +#: ../src/widgets/toolbox.cpp:2802 +msgid "Angle Z:" +msgstr "Ángulo Z:" #: ../src/display/canvas-axonomgrid.cpp:400 #: ../src/ui/dialog/inkscape-preferences.cpp:897 msgid "Angle of z-axis" -msgstr "" +msgstr "Ángulo do eixe Z" -#: ../src/display/canvas-axonomgrid.cpp:404 ../src/display/canvas-grid.cpp:668 +#: ../src/display/canvas-axonomgrid.cpp:404 +#: ../src/display/canvas-grid.cpp:668 msgid "Grid line _color:" msgstr "_Cor das liñas da reixa:" -#: ../src/display/canvas-axonomgrid.cpp:404 ../src/display/canvas-grid.cpp:668 +#: ../src/display/canvas-axonomgrid.cpp:404 +#: ../src/display/canvas-grid.cpp:668 #: ../src/ui/dialog/inkscape-preferences.cpp:876 #: ../src/ui/dialog/inkscape-preferences.cpp:877 #: ../src/ui/dialog/inkscape-preferences.cpp:898 @@ -2458,15 +2474,18 @@ msgstr "_Cor das liñas da reixa:" msgid "Grid line color" msgstr "Cor das liñas da reixa" -#: ../src/display/canvas-axonomgrid.cpp:404 ../src/display/canvas-grid.cpp:668 +#: ../src/display/canvas-axonomgrid.cpp:404 +#: ../src/display/canvas-grid.cpp:668 msgid "Color of grid lines" msgstr "Cor das liñas da reixa" -#: ../src/display/canvas-axonomgrid.cpp:409 ../src/display/canvas-grid.cpp:673 +#: ../src/display/canvas-axonomgrid.cpp:409 +#: ../src/display/canvas-grid.cpp:673 msgid "Ma_jor grid line color:" msgstr "Cor das _liñas principais da reixa:" -#: ../src/display/canvas-axonomgrid.cpp:409 ../src/display/canvas-grid.cpp:673 +#: ../src/display/canvas-axonomgrid.cpp:409 +#: ../src/display/canvas-grid.cpp:673 #: ../src/ui/dialog/inkscape-preferences.cpp:878 #: ../src/ui/dialog/inkscape-preferences.cpp:879 #: ../src/ui/dialog/inkscape-preferences.cpp:900 @@ -2474,52 +2493,48 @@ msgstr "Cor das _liñas principais da reixa:" msgid "Major grid line color" msgstr "Cor das liñas principais da reixa" -#: ../src/display/canvas-axonomgrid.cpp:410 ../src/display/canvas-grid.cpp:674 +#: ../src/display/canvas-axonomgrid.cpp:410 +#: ../src/display/canvas-grid.cpp:674 msgid "Color of the major (highlighted) grid lines" msgstr "Cor das liñas principais (resaltadas) da reixa" -#: ../src/display/canvas-axonomgrid.cpp:414 ../src/display/canvas-grid.cpp:678 +#: ../src/display/canvas-axonomgrid.cpp:414 +#: ../src/display/canvas-grid.cpp:678 msgid "_Major grid line every:" msgstr "Liña _principal de reixa cada:" -#: ../src/display/canvas-axonomgrid.cpp:414 ../src/display/canvas-grid.cpp:678 +#: ../src/display/canvas-axonomgrid.cpp:414 +#: ../src/display/canvas-grid.cpp:678 msgid "lines" msgstr " liñas" #: ../src/display/canvas-grid.cpp:40 -#, fuzzy msgid "Rectangular grid" -msgstr "Rectángulo" +msgstr "Reixa rectangular" #: ../src/display/canvas-grid.cpp:41 +#, fuzzy msgid "Axonometric grid" -msgstr "" +msgstr "Reixa rectangular" #: ../src/display/canvas-grid.cpp:259 -#, fuzzy msgid "Create new grid" -msgstr "Crear elipse" +msgstr "Crear nova reixa" #: ../src/display/canvas-grid.cpp:325 -#, fuzzy msgid "_Enabled" -msgstr "absoluto" +msgstr "_Activado" #: ../src/display/canvas-grid.cpp:326 -msgid "" -"Determines whether to snap to this grid or not. Can be 'on' for invisible " -"grids." +msgid "Determines whether to snap to this grid or not. Can be 'on' for invisible grids." msgstr "" #: ../src/display/canvas-grid.cpp:329 -#, fuzzy msgid "_Visible" -msgstr "Visible" +msgstr "_Visible" #: ../src/display/canvas-grid.cpp:330 -msgid "" -"Determines whether the grid is displayed or not. Objects are still snapped " -"to invisible grids." +msgid "Determines whether the grid is displayed or not. Objects are still snapped to invisible grids." msgstr "" #: ../src/display/canvas-grid.cpp:662 @@ -2539,13 +2554,14 @@ msgid "Distance between horizontal grid lines" msgstr "Distancia entre as liñas horizontais da reixa" #: ../src/display/canvas-grid.cpp:697 +#, fuzzy msgid "_Show dots instead of lines" -msgstr "" +msgstr "Amosar puntos en troques de liñas" #: ../src/display/canvas-grid.cpp:698 #: ../src/ui/dialog/inkscape-preferences.cpp:883 msgid "If set, displays dots at gridpoints instead of gridlines" -msgstr "" +msgstr "Se está marcada, mostra puntos nas interseccións da reixa en vez de liñas" #: ../src/document.cpp:415 #, c-format @@ -2553,14 +2569,14 @@ msgid "New document %d" msgstr "Novo documento %d" #: ../src/document.cpp:447 -#, c-format +#, fuzzy, c-format msgid "Memory document %d" -msgstr "" +msgstr "Novo documento %d" #: ../src/document.cpp:603 #, c-format msgid "Unnamed document %d" -msgstr "" +msgstr "Documento sen nome %d" #. We hit green anchor, closing Green-Blue-Red #: ../src/draw-context.cpp:448 @@ -2570,12 +2586,11 @@ msgstr "O camiño está pechado." #. We hit bot start and end of single curve, closing paths #: ../src/draw-context.cpp:463 msgid "Closing path." -msgstr "" +msgstr "Pechando o camiño." #: ../src/draw-context.cpp:577 -#, fuzzy msgid "Draw path" -msgstr "_Romper aparte ou fragmentar" +msgstr "Debuxar camiño" #. alpha of color under cursor, to show in the statusbar #. locale-sensitive printf is OK, since this goes to the UI, not into SVG @@ -2586,9 +2601,9 @@ msgstr " alfa %.3g" #. where the color is picked, to show in the statusbar #: ../src/dropper-context.cpp:294 -#, c-format +#, fuzzy, c-format msgid ", averaged with radius %d" -msgstr "" +msgstr "Estrela de %d vértice" #: ../src/dropper-context.cpp:294 msgid " under cursor" @@ -2599,26 +2614,19 @@ msgstr " baixo o cursor" msgid "Release mouse to set color." msgstr "Solte o rato para establecer a cor." -#: ../src/dropper-context.cpp:296 ../src/tools-switch.cpp:229 +#: ../src/dropper-context.cpp:296 +#: ../src/tools-switch.cpp:229 #, fuzzy -msgid "" -"Click to set fill, Shift+click to set stroke; drag to " -"average color in area; with Alt to pick inverse color; Ctrl+C " -"to copy the color under mouse to clipboard" -msgstr "" -"Prema para establecer o recheo, Shift+clic para establecer o " -"trazo; arrastre para promediar a cor da área; con Alt para " -"escoller a cor inversa; Ctrl+C para copiar a cor de debaixo do rato ó " -"portarretallos" +msgid "Click to set fill, Shift+click to set stroke; drag to average color in area; with Alt to pick inverse color; Ctrl+C to copy the color under mouse to clipboard" +msgstr "Prema para establecer o recheo, Shift+clic para establecer o trazo; arrastre para promediar a cor da área; con Alt para escoller a cor inversa; Ctrl+C para copiar a cor de debaixo do rato ó portarretallos" #: ../src/dropper-context.cpp:329 #, fuzzy msgid "Set picked color" -msgstr "Última cor seleccionada" +msgstr "Establecer a cor do trazo" #: ../src/dyna-draw-context.cpp:625 -msgid "" -"Guide path selected; start drawing along the guide with Ctrl" +msgid "Guide path selected; start drawing along the guide with Ctrl" msgstr "" #: ../src/dyna-draw-context.cpp:627 @@ -2630,28 +2638,29 @@ msgid "Tracking: connection to guide path lost!" msgstr "" #: ../src/dyna-draw-context.cpp:732 +#, fuzzy msgid "Tracking a guide path" -msgstr "" +msgstr "O camiño está pechado." #: ../src/dyna-draw-context.cpp:735 #, fuzzy msgid "Drawing a calligraphic stroke" -msgstr "Debuxar liñas de caligrafía" +msgstr "Establecer a cor do trazo" #: ../src/dyna-draw-context.cpp:1016 #, fuzzy msgid "Draw calligraphic stroke" -msgstr "Debuxar liñas de caligrafía" +msgstr "Establecer a cor do trazo" #: ../src/eraser-context.cpp:532 #, fuzzy msgid "Drawing an eraser stroke" -msgstr "Debuxar liñas de caligrafía" +msgstr "Establecer a cor do trazo" #: ../src/eraser-context.cpp:839 #, fuzzy msgid "Draw eraser stroke" -msgstr "Debuxar liñas de caligrafía" +msgstr "Establecer a cor do trazo" #: ../src/event-context.cpp:595 msgid "Space+mouse drag to pan canvas" @@ -2662,11 +2671,15 @@ msgid "[Unchanged]" msgstr "" #. Edit -#: ../src/event-log.cpp:264 ../src/event-log.cpp:267 ../src/verbs.cpp:2193 +#: ../src/event-log.cpp:264 +#: ../src/event-log.cpp:267 +#: ../src/verbs.cpp:2193 msgid "_Undo" msgstr "_Desfacer " -#: ../src/event-log.cpp:274 ../src/event-log.cpp:278 ../src/verbs.cpp:2195 +#: ../src/event-log.cpp:274 +#: ../src/event-log.cpp:278 +#: ../src/verbs.cpp:2195 msgid "_Redo" msgstr "_Refacer" @@ -2676,7 +2689,7 @@ msgstr "" #: ../src/extension/dependency.cpp:262 msgid " type: " -msgstr "" +msgstr " tipo: " #: ../src/extension/dependency.cpp:263 msgid " location: " @@ -2688,40 +2701,34 @@ msgstr "" #: ../src/extension/dependency.cpp:267 msgid " description: " -msgstr "" +msgstr " descrición: " #: ../src/extension/effect.cpp:35 -#, fuzzy msgid " (No preferences)" -msgstr "Preferencias de Zoom" +msgstr " (Sen preferencias)" #. This is some filler text, needs to change before relase #: ../src/extension/error-file.cpp:53 msgid "" -"One or more extensions failed to load\n" +"One or more extensions failed to load\n" "\n" -"The failed extensions have been skipped. Inkscape will continue to run " -"normally but those extensions will be unavailable. For details to " -"troubleshoot this problem, please refer to the error log located at: " +"The failed extensions have been skipped. Inkscape will continue to run normally but those extensions will be unavailable. For details to troubleshoot this problem, please refer to the error log located at: " msgstr "" #. This is some filler text, needs to change before relase #: ../src/extension/error-file.cpp:62 msgid "Show dialog on startup" -msgstr "" +msgstr "Mostrar o diálogo ó iniciar" #: ../src/extension/execution-env.cpp:134 #, c-format msgid "'%s' working, please wait..." -msgstr "" +msgstr "'%s' está traballando, agarde..." #. static int i = 0; #. std::cout << "Checking module[" << i++ << "]: " << name << std::endl; #: ../src/extension/extension.cpp:252 -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." +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." msgstr "" #: ../src/extension/extension.cpp:255 @@ -2734,11 +2741,11 @@ msgstr "" #: ../src/extension/extension.cpp:263 msgid "the XML description of it got lost." -msgstr "" +msgstr "perdeuse a súa descrición XML." #: ../src/extension/extension.cpp:267 msgid "no implementation was defined for the extension." -msgstr "" +msgstr "non se definiu ningunha implementación para a extensión." #. std::cout << "Failed: " << *(_deps[i]) << std::endl; #: ../src/extension/extension.cpp:274 @@ -2747,11 +2754,11 @@ msgstr "" #: ../src/extension/extension.cpp:294 msgid "Extension \"" -msgstr "" +msgstr "A extensión \"" #: ../src/extension/extension.cpp:294 msgid "\" failed to load because " -msgstr "" +msgstr "\" non se puido cargar debido a " #: ../src/extension/extension.cpp:625 #, c-format @@ -2768,7 +2775,7 @@ msgstr "ID:" #: ../src/extension/extension.cpp:725 msgid "State:" -msgstr "" +msgstr "Estado:" #: ../src/extension/extension.cpp:725 msgid "Loaded" @@ -2783,20 +2790,12 @@ msgid "Deactivated" msgstr "" #: ../src/extension/extension.cpp:756 -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 " -"this extension." +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 this extension." msgstr "" #: ../src/extension/implementation/script.cpp:1055 -msgid "" -"Inkscape has received additional data from the script executed. The script " -"did not return an error, but this may indicate the results will not be as " -"expected." -msgstr "" -"Inkscape recibiu datos adicionais do script que se executou. O script non " -"devolveu un erro, pero isto podería indicar que o resultado non é o agardado." +msgid "Inkscape has received additional data from the script executed. The script did not return an error, but this may indicate the results will not be as expected." +msgstr "Inkscape recibiu datos adicionais do script que se executou. O script non devolveu un erro, pero isto podería indicar que o resultado non é o agardado." #: ../src/extension/init.cpp:282 msgid "Null external module directory name. Modules will not be loaded." @@ -2805,43 +2804,41 @@ msgstr "" #: ../src/extension/init.cpp:296 #: ../src/extension/internal/filter/filter-file.cpp:56 #, c-format -msgid "" -"Modules directory (%s) is unavailable. External modules in that directory " -"will not be loaded." -msgstr "" -"O directorio de módulos (%s) non está dispoñible. Non se van cargar os " -"módulos externos dese directorio." +msgid "Modules directory (%s) is unavailable. External modules in that directory will not be loaded." +msgstr "O directorio de módulos (%s) non está dispoñible. Non se van cargar os módulos externos dese directorio." #: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:38 #, fuzzy msgid "Adaptive Threshold" -msgstr "Limiar:" +msgstr "Limiar de clic/arrastre:" #: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:40 #: ../src/extension/internal/bitmap/raise.cpp:41 #: ../src/extension/internal/bitmap/sample.cpp:40 -#: ../src/extension/internal/bluredge.cpp:134 ../src/libgdl/gdl-dock.c:190 +#: ../src/extension/internal/bluredge.cpp:134 +#: ../src/libgdl/gdl-dock.c:190 #: ../src/libgdl/gdl-dock-placeholder.c:169 #: ../src/live_effects/lpe-bendpath.cpp:58 #: ../src/live_effects/lpe-patternalongpath.cpp:64 -#: ../src/widgets/toolbox.cpp:2396 ../src/widgets/toolbox.cpp:3241 -#, fuzzy +#: ../src/widgets/toolbox.cpp:2396 +#: ../src/widgets/toolbox.cpp:3241 msgid "Width" -msgstr "Ancho:" +msgstr "Ancho" #: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:41 #: ../src/extension/internal/bitmap/raise.cpp:42 -#: ../src/extension/internal/bitmap/sample.cpp:41 ../src/libgdl/gdl-dock.c:198 -#: ../src/libgdl/gdl-dock-placeholder.c:177 ../src/widgets/toolbox.cpp:2413 -#, fuzzy +#: ../src/extension/internal/bitmap/sample.cpp:41 +#: ../src/libgdl/gdl-dock.c:198 +#: ../src/libgdl/gdl-dock-placeholder.c:177 +#: ../src/widgets/toolbox.cpp:2413 msgid "Height" -msgstr "Alto:" +msgstr "Alto" #: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:42 #: ../src/filter-enums.cpp:32 #, fuzzy msgid "Offset" -msgstr "Desprazamento:" +msgstr "Desprazamento" #: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:46 #: ../src/extension/internal/bitmap/addNoise.cpp:57 @@ -2889,41 +2886,44 @@ msgstr "" #: ../src/extension/internal/bitmap/addNoise.cpp:44 #, fuzzy msgid "Add Noise" -msgstr "Engadir Nodos" +msgstr "Engadir Ruído" #: ../src/extension/internal/bitmap/addNoise.cpp:47 +#, fuzzy msgid "Uniform Noise" -msgstr "" +msgstr "Engadir Ruído" #: ../src/extension/internal/bitmap/addNoise.cpp:48 +#, fuzzy msgid "Gaussian Noise" -msgstr "" +msgstr "Engadir Ruído" #: ../src/extension/internal/bitmap/addNoise.cpp:49 msgid "Multiplicative Gaussian Noise" msgstr "" #: ../src/extension/internal/bitmap/addNoise.cpp:50 +#, fuzzy msgid "Impulse Noise" -msgstr "" +msgstr "Engadir Ruído" #: ../src/extension/internal/bitmap/addNoise.cpp:51 #, fuzzy msgid "Laplacian Noise" -msgstr "Recheo fractal" +msgstr "Engadir Ruído" #: ../src/extension/internal/bitmap/addNoise.cpp:52 +#, fuzzy msgid "Poisson Noise" -msgstr "" +msgstr "Engadir Ruído" #: ../src/extension/internal/bitmap/addNoise.cpp:59 msgid "Add random noise to selected bitmap(s)." msgstr "" #: ../src/extension/internal/bitmap/blur.cpp:37 -#, fuzzy msgid "Blur" -msgstr "Azul" +msgstr "Desenfoque" #: ../src/extension/internal/bitmap/blur.cpp:39 #: ../src/extension/internal/bitmap/charcoal.cpp:39 @@ -2936,7 +2936,7 @@ msgstr "Azul" #: ../src/ui/dialog/filter-effects-dialog.cpp:2251 #, fuzzy msgid "Radius" -msgstr "Elevar" +msgstr "Radio" #: ../src/extension/internal/bitmap/blur.cpp:40 #: ../src/extension/internal/bitmap/charcoal.cpp:40 @@ -2946,38 +2946,39 @@ msgstr "Elevar" #: ../src/extension/internal/bitmap/unsharpmask.cpp:43 #, fuzzy msgid "Sigma" -msgstr "pequeno" +msgstr "Sigma" #: ../src/extension/internal/bitmap/blur.cpp:46 #, fuzzy msgid "Blur selected bitmap(s)" -msgstr "Agrupa-los obxectos seleccionados" +msgstr "Tamaño do mapa de bits" #: ../src/extension/internal/bitmap/channel.cpp:47 #: ../src/extension/internal/bitmap/levelChannel.cpp:53 -#, fuzzy msgid "Channel" -msgstr "Cancelar" +msgstr "Canle" #: ../src/extension/internal/bitmap/channel.cpp:49 -#, fuzzy msgid "Layer" -msgstr "_Capa" +msgstr "Capa" #: ../src/extension/internal/bitmap/channel.cpp:50 #: ../src/extension/internal/bitmap/levelChannel.cpp:54 +#, fuzzy msgid "Red Channel" -msgstr "" +msgstr "Función do vermello" #: ../src/extension/internal/bitmap/channel.cpp:51 #: ../src/extension/internal/bitmap/levelChannel.cpp:55 +#, fuzzy msgid "Green Channel" -msgstr "" +msgstr "Función do verde" #: ../src/extension/internal/bitmap/channel.cpp:52 #: ../src/extension/internal/bitmap/levelChannel.cpp:56 +#, fuzzy msgid "Blue Channel" -msgstr "" +msgstr "Función do azul" #: ../src/extension/internal/bitmap/channel.cpp:53 #: ../src/extension/internal/bitmap/levelChannel.cpp:57 @@ -3001,13 +3002,13 @@ msgstr "Amarelo" #: ../src/extension/internal/bitmap/levelChannel.cpp:60 #, fuzzy msgid "Black Channel" -msgstr "Negro" +msgstr "Recheo negro" #: ../src/extension/internal/bitmap/channel.cpp:57 #: ../src/extension/internal/bitmap/levelChannel.cpp:61 #, fuzzy msgid "Opacity Channel" -msgstr "Opacidade" +msgstr "Cambiar a opacidade" #: ../src/extension/internal/bitmap/channel.cpp:58 #: ../src/extension/internal/bitmap/levelChannel.cpp:62 @@ -3061,16 +3062,18 @@ msgstr "Metro" #: ../src/extension/internal/bitmap/convolve.cpp:52 #: ../src/extension/internal/bitmap/reduceNoise.cpp:41 #: ../share/extensions/lindenmayer.inx.h:6 +#, fuzzy msgid "Order" -msgstr "" +msgstr "Orde-z" #: ../src/extension/internal/bitmap/convolve.cpp:53 msgid "Kernel Array" msgstr "" #: ../src/extension/internal/bitmap/convolve.cpp:59 +#, fuzzy msgid "Apply Convolve Effect" -msgstr "" +msgstr "Aplicar novo efecto" #: ../src/extension/internal/bitmap/cycleColormap.cpp:36 msgid "Cycle Colormap" @@ -3099,7 +3102,7 @@ msgstr "" #: ../src/extension/internal/bitmap/edge.cpp:36 #, fuzzy msgid "Edge" -msgstr "Desenfocar o Bordo" +msgstr "Detección de bordos" #: ../src/extension/internal/bitmap/edge.cpp:44 msgid "Hilight edges of selected bitmap(s)." @@ -3157,58 +3160,50 @@ msgstr "Importar" #: ../src/extension/internal/bitmap/implode.cpp:44 #, fuzzy msgid "Implode selected bitmap(s)." -msgstr "Manter seleccionado" +msgstr "Tamaño do mapa de bits" #: ../src/extension/internal/bitmap/levelChannel.cpp:51 +#, fuzzy msgid "Level (with Channel)" -msgstr "" +msgstr "Estrela de %d vértice" #: ../src/extension/internal/bitmap/levelChannel.cpp:64 #: ../src/extension/internal/bitmap/level.cpp:42 #, fuzzy msgid "Black Point" -msgstr "Negro" +msgstr "Recheo negro" -# [*] Revisar #: ../src/extension/internal/bitmap/levelChannel.cpp:65 #: ../src/extension/internal/bitmap/level.cpp:43 #, fuzzy msgid "White Point" -msgstr "Xuntar metades" +msgstr "Recheo branco" -# Rosetta #: ../src/extension/internal/bitmap/levelChannel.cpp:66 #: ../src/extension/internal/bitmap/level.cpp:44 #, fuzzy msgid "Gamma Correction" -msgstr "Corrección gamma:" +msgstr "Corrección gamma" #: ../src/extension/internal/bitmap/levelChannel.cpp:72 -msgid "" -"Level the specified channel of selected bitmap(s) by scaling values falling " -"between the given ranges to the full color range." +msgid "Level the specified channel of selected bitmap(s) by scaling values falling between the given ranges to the full color range." msgstr "" #: ../src/extension/internal/bitmap/level.cpp:40 -#, fuzzy msgid "Level" -msgstr "Roda" +msgstr "Nivel" #: ../src/extension/internal/bitmap/level.cpp:50 -msgid "" -"Level selected bitmap(s) by scaling values falling between the given ranges " -"to the full color range." +msgid "Level selected bitmap(s) by scaling values falling between the given ranges to the full color range." msgstr "" #: ../src/extension/internal/bitmap/medianFilter.cpp:36 #, fuzzy msgid "Median Filter" -msgstr "Engadir Capa" +msgstr "Renomear filtro" #: ../src/extension/internal/bitmap/medianFilter.cpp:44 -msgid "" -"Filter selected bitmap(s) by replacing each pixel component with the median " -"color in a circular neighborhood." +msgid "Filter selected bitmap(s) by replacing each pixel component with the median color in a circular neighborhood." msgstr "" #: ../src/extension/internal/bitmap/modulate.cpp:39 @@ -3217,25 +3212,28 @@ msgid "Modulate" msgstr "Mover" #: ../src/extension/internal/bitmap/modulate.cpp:41 -#, fuzzy msgid "Brightness" msgstr "Brillo" #: ../src/extension/internal/bitmap/modulate.cpp:42 -#: ../src/flood-context.cpp:275 ../src/ui/dialog/inkscape-preferences.cpp:731 +#: ../src/flood-context.cpp:275 +#: ../src/ui/dialog/inkscape-preferences.cpp:731 #: ../src/widgets/sp-color-icc-selector.cpp:235 #: ../src/widgets/sp-color-icc-selector.cpp:236 #: ../src/widgets/sp-color-scales.cpp:427 -#: ../src/widgets/sp-color-scales.cpp:428 ../src/widgets/toolbox.cpp:3375 +#: ../src/widgets/sp-color-scales.cpp:428 +#: ../src/widgets/toolbox.cpp:3375 #: ../share/extensions/color_randomize.inx.h:5 msgid "Saturation" msgstr "Saturación" #: ../src/extension/internal/bitmap/modulate.cpp:43 -#: ../src/flood-context.cpp:274 ../src/widgets/sp-color-icc-selector.cpp:235 +#: ../src/flood-context.cpp:274 +#: ../src/widgets/sp-color-icc-selector.cpp:235 #: ../src/widgets/sp-color-icc-selector.cpp:236 #: ../src/widgets/sp-color-scales.cpp:424 -#: ../src/widgets/sp-color-scales.cpp:425 ../src/widgets/toolbox.cpp:3360 +#: ../src/widgets/sp-color-scales.cpp:425 +#: ../src/widgets/toolbox.cpp:3360 #: ../share/extensions/color_randomize.inx.h:2 msgid "Hue" msgstr "Matiz" @@ -3259,14 +3257,13 @@ msgid "Normalize" msgstr "Normal" #: ../src/extension/internal/bitmap/normalize.cpp:42 -msgid "" -"Normalize selected bitmap(s), expanding color range to the full possible " -"range of color." +msgid "Normalize selected bitmap(s), expanding color range to the full possible range of color." msgstr "" #: ../src/extension/internal/bitmap/oilPaint.cpp:36 +#, fuzzy msgid "Oil Paint" -msgstr "" +msgstr "_Pintar o trazo" #: ../src/extension/internal/bitmap/oilPaint.cpp:44 msgid "Stylize selected bitmap(s) so that they appear to be painted with oils." @@ -3283,21 +3280,19 @@ msgstr "Elevar" #: ../src/extension/internal/bitmap/raise.cpp:43 #, fuzzy msgid "Raised" -msgstr "Elevar" +msgstr "Elevouse a capa %s." #: ../src/extension/internal/bitmap/raise.cpp:49 -msgid "" -"Alter lightness the edges of selected bitmap(s) to create a raised " -"appearance." +msgid "Alter lightness the edges of selected bitmap(s) to create a raised appearance." msgstr "" #: ../src/extension/internal/bitmap/reduceNoise.cpp:39 +#, fuzzy msgid "Reduce Noise" -msgstr "" +msgstr "Engadir Ruído" #: ../src/extension/internal/bitmap/reduceNoise.cpp:47 -msgid "" -"Reduce noise in selected bitmap(s) using a noise peak elimination filter." +msgid "Reduce noise in selected bitmap(s) using a noise peak elimination filter." msgstr "" #: ../src/extension/internal/bitmap/sample.cpp:38 @@ -3306,8 +3301,7 @@ msgid "Sample" msgstr "Figuras" #: ../src/extension/internal/bitmap/sample.cpp:47 -msgid "" -"Alter the resolution of selected image by resizing it by given dimensions." +msgid "Alter the resolution of selected image by resizing it by given dimensions." msgstr "" #: ../src/extension/internal/bitmap/shade.cpp:39 @@ -3338,7 +3332,7 @@ msgstr "" #: ../src/extension/internal/bitmap/sharpen.cpp:46 #, fuzzy msgid "Sharpen selected bitmap(s)." -msgstr "Agrupa-los obxectos seleccionados" +msgstr "Tamaño do mapa de bits" #: ../src/extension/internal/bitmap/solarize.cpp:36 #, fuzzy @@ -3355,8 +3349,7 @@ msgid "Spread" msgstr "Espiral" #: ../src/extension/internal/bitmap/spread.cpp:44 -msgid "" -"Randomly spread pixels in selected bitmap(s), within the radius of 'amount.'" +msgid "Randomly spread pixels in selected bitmap(s), within the radius of 'amount.'" msgstr "" #: ../src/extension/internal/bitmap/swirl.cpp:36 @@ -3366,9 +3359,8 @@ msgstr "Espiral" #: ../src/extension/internal/bitmap/swirl.cpp:38 #: ../share/extensions/grid_polar.inx.h:7 -#, fuzzy msgid "Degrees" -msgstr "graos" +msgstr "Graos" #: ../src/extension/internal/bitmap/swirl.cpp:44 #, fuzzy @@ -3379,13 +3371,13 @@ msgstr "Baixa-la selección ó fondo" #: ../src/extension/internal/bitmap/threshold.cpp:37 #: ../src/extension/internal/bitmap/threshold.cpp:39 #: ../src/extension/internal/bitmap/unsharpmask.cpp:45 -#, fuzzy msgid "Threshold" -msgstr "Limiar:" +msgstr "Limiar" #: ../src/extension/internal/bitmap/threshold.cpp:45 +#, fuzzy msgid "Threshold selected bitmap(s)." -msgstr "" +msgstr "Tamaño do mapa de bits" #: ../src/extension/internal/bitmap/unsharpmask.cpp:40 msgid "Unsharp Mask" @@ -3396,9 +3388,8 @@ msgid "Sharpen selected bitmap(s) using unsharp mask algorithms." msgstr "" #: ../src/extension/internal/bitmap/wave.cpp:37 -#, fuzzy msgid "Wave" -msgstr "_Gardar" +msgstr "Onda" #: ../src/extension/internal/bitmap/wave.cpp:39 msgid "Amplitude" @@ -3420,12 +3411,12 @@ msgstr "" #: ../src/extension/internal/bluredge.cpp:134 #, fuzzy msgid "Width in px of the halo" -msgstr "Ancho en píxels da área desenfocada" +msgstr "Ancho en unidades de lonxitude" #: ../src/extension/internal/bluredge.cpp:135 #, fuzzy msgid "Number of steps" -msgstr "Número de Niveis" +msgstr "Número de filas" #: ../src/extension/internal/bluredge.cpp:135 #, fuzzy @@ -3433,39 +3424,38 @@ msgid "Number of inset/outset copies of the object to make" msgstr "Número de copias do obxecto a facer para simular o desenfoque" #: ../src/extension/internal/bluredge.cpp:139 -#: ../share/extensions/interp.inx.h:3 ../share/extensions/motion.inx.h:3 +#: ../share/extensions/interp.inx.h:3 +#: ../share/extensions/motion.inx.h:3 #: ../share/extensions/pathalongpath.inx.h:4 #: ../share/extensions/pathscatter.inx.h:5 +#, fuzzy msgid "Generate from Path" -msgstr "" +msgstr "Eliminar o camiño de corte da selección" #: ../src/extension/internal/cairo-pdf-out.cpp:239 -#, fuzzy msgid "Cairo PDF Output" -msgstr "Saída de DXF" +msgstr "Saída de Cairo PDF" #: ../src/extension/internal/cairo-pdf-out.cpp:241 msgid "Restrict to PDF version" -msgstr "" +msgstr "Restrinxir á versión de PDF" #: ../src/extension/internal/cairo-pdf-out.cpp:242 msgid "PDF 1.4" -msgstr "" +msgstr "PDF 1.4" #: ../src/extension/internal/cairo-pdf-out.cpp:244 #: ../src/extension/internal/cairo-ps-out.cpp:230 #: ../src/extension/internal/emf-win32-inout.cpp:2182 #: ../src/extension/internal/eps-out.cpp:92 #: ../src/extension/internal/ps-out.cpp:84 -#, fuzzy msgid "Convert texts to paths" -msgstr "Converte-lo texto en camiño" +msgstr "Converter os textos en camiños" #: ../src/extension/internal/cairo-pdf-out.cpp:245 #: ../src/extension/internal/cairo-ps-out.cpp:231 -#, fuzzy msgid "Convert blur effects to bitmaps" -msgstr "Converte-lo texto en camiño" +msgstr "Converter os efectos de desenfoque en mapas de bits" #: ../src/extension/internal/cairo-pdf-out.cpp:246 #: ../src/extension/internal/cairo-ps-out.cpp:232 @@ -3474,102 +3464,85 @@ msgid "Preferred resolution (DPI) of bitmaps" msgstr "Resolución preferida do mapa de bits (puntos por polgada)" #: ../src/extension/internal/cairo-pdf-out.cpp:247 -#, fuzzy msgid "Export drawing, not page" -msgstr "Exportando" +msgstr "Exportar o debuxo, non a páxina" #: ../src/extension/internal/cairo-pdf-out.cpp:248 -#, fuzzy msgid "Export canvas" -msgstr "Exportar" +msgstr "Exportar o lenzo" #: ../src/extension/internal/cairo-pdf-out.cpp:249 msgid "Limit export to the object with ID" msgstr "" #: ../src/extension/internal/cairo-pdf-out.cpp:253 -#, fuzzy msgid "PDF via Cairo (*.pdf)" -msgstr "Diagrama de Dia (*.dia)" +msgstr "PDF a través de Cairo (*.pdf)" #: ../src/extension/internal/cairo-pdf-out.cpp:254 -#, fuzzy msgid "PDF File" -msgstr "_Ficheiro" +msgstr "Ficheiro PDF" #: ../src/extension/internal/cairo-ps-out.cpp:222 -#, fuzzy msgid "Cairo PS Output" -msgstr "Saída de DXF" +msgstr "Saída de Cairo PS" #: ../src/extension/internal/cairo-ps-out.cpp:224 msgid "Restrict to PS level" -msgstr "" +msgstr "Restrinxir a nivel de PS" #: ../src/extension/internal/cairo-ps-out.cpp:225 -#, fuzzy msgid "PostScript level 3" -msgstr "Ficheiro Postscript" +msgstr "PostScript nivel 3" #: ../src/extension/internal/cairo-ps-out.cpp:227 -#, fuzzy msgid "PostScript level 2" -msgstr "Ficheiro Postscript" +msgstr "PostScript nivel 2" #: ../src/extension/internal/cairo-ps-out.cpp:236 -#, fuzzy msgid "PostScript via Cairo (*.ps)" -msgstr "Postscript (*.ps)" +msgstr "PostScript a través de Cairo (*.ps)" #: ../src/extension/internal/cairo-ps-out.cpp:237 #: ../src/extension/internal/ps-out.cpp:90 -#, fuzzy msgid "PostScript File" -msgstr "Ficheiro Postscript" +msgstr "Ficheiro PostScript" #: ../src/extension/internal/emf-win32-inout.cpp:2152 -#, fuzzy msgid "EMF Input" -msgstr "Entrada de DXF" +msgstr "Entrada de EMF" #: ../src/extension/internal/emf-win32-inout.cpp:2157 -#, fuzzy msgid "Enhanced Metafiles (*.emf)" -msgstr "Windows Metafile (*.wmf)" +msgstr "Enhanced Metafiles (*.emf)" #: ../src/extension/internal/emf-win32-inout.cpp:2158 msgid "Enhanced Metafiles" -msgstr "" +msgstr "Enhanced Metafiles" #: ../src/extension/internal/emf-win32-inout.cpp:2166 -#, fuzzy msgid "WMF Input" -msgstr "Entrada de SVG" +msgstr "Entrada de WMF" #: ../src/extension/internal/emf-win32-inout.cpp:2171 -#, fuzzy msgid "Windows Metafiles (*.wmf)" -msgstr "Windows Metafile (*.wmf)" +msgstr "Windows Metafiles (*.wmf)" #: ../src/extension/internal/emf-win32-inout.cpp:2172 -#, fuzzy msgid "Windows Metafiles" -msgstr "Entrada de Windows Metafile" +msgstr "Windows Metafiles" #: ../src/extension/internal/emf-win32-inout.cpp:2180 -#, fuzzy msgid "EMF Output" -msgstr "Saída de DXF" +msgstr "Saída de EMF" #: ../src/extension/internal/emf-win32-inout.cpp:2186 -#, fuzzy msgid "Enhanced Metafile (*.emf)" -msgstr "Windows Metafile (*.wmf)" +msgstr "Enhanced Metafile (*.emf)" #: ../src/extension/internal/emf-win32-inout.cpp:2187 -#, fuzzy msgid "Enhanced Metafile" -msgstr "Crear rectángulo" +msgstr "Enhanced Metafile" #: ../src/extension/internal/eps-out.cpp:89 msgid "Encapsulated Postscript Output" @@ -3623,9 +3596,8 @@ msgstr "Pe_char" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/clouds.h:25 -#, fuzzy msgid "Yes, more descriptions" -msgstr "selecciona-la dirección" +msgstr "Si, máis descricións" #. ID -- should be unique #: ../src/extension/internal/filter/crystal.h:24 @@ -3650,11 +3622,12 @@ msgstr "_Personalizado" #: ../src/extension/internal/filter/ridged-border.h:25 #, fuzzy msgid "Artist text" -msgstr "Texto vertical" +msgstr "Texto horizontal" #: ../src/extension/internal/filter/drop-shadow.h:35 +#, fuzzy msgid "Drop Shadow" -msgstr "" +msgstr "Amo_sar a sombra do bordo" #: ../src/extension/internal/filter/drop-shadow.h:37 #, fuzzy @@ -3665,32 +3638,30 @@ msgstr "Fonte" #: ../src/extension/internal/grid.cpp:197 #, fuzzy msgid "Horizontal Offset" -msgstr "Desprazamento Horizontal" +msgstr "Desprazamento do patrón" #: ../src/extension/internal/filter/drop-shadow.h:39 #: ../src/extension/internal/grid.cpp:198 #, fuzzy msgid "Vertical Offset" -msgstr "Desprazamento Vertical" +msgstr "Desprazamento do patrón" #: ../src/extension/internal/filter/drop-shadow.h:43 #: ../src/extension/internal/filter/filter.cpp:196 #: ../src/extension/internal/filter/filter-file.cpp:146 #: ../src/extension/internal/filter/snow.h:38 -#, fuzzy msgid "Filter" -msgstr "milímetros" +msgstr "Filtro" #: ../src/extension/internal/filter/drop-shadow.h:45 -#, fuzzy msgid "I hate text" -msgstr "Pegar E_stilo" +msgstr "Odio o texto" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/emboss.h:22 #, fuzzy msgid "Emboss effect" -msgstr "Desprazamento Horizontal" +msgstr "Engadir Efecto:" #. ID -- should be unique #: ../src/extension/internal/filter/etched-glass.h:24 @@ -3709,20 +3680,18 @@ msgstr "" #: ../src/extension/internal/filter/filter-file.cpp:44 #, fuzzy msgid "Null external module directory name. Filters will not be loaded." -msgstr "" -"O directorio de módulos (%s) non está dispoñible. Non se van cargar os " -"módulos externos dese directorio." +msgstr "O directorio de módulos (%s) non está dispoñible. Non se van cargar os módulos externos dese directorio." #. ID -- should be unique #: ../src/extension/internal/filter/fire.h:24 -#, fuzzy msgid "Fire" -msgstr "_Ficheiro" +msgstr "Lume" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/fire.h:25 +#, fuzzy msgid "Artist on fire" -msgstr "" +msgstr "Non hai nada no portarretallos." #. ID -- should be unique #: ../src/extension/internal/filter/frost.h:24 @@ -3738,8 +3707,9 @@ msgstr "Azul" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/ink-bleed.h:25 +#, fuzzy msgid "Artist Text" -msgstr "" +msgstr "Texto horizontal" #. ID -- should be unique #: ../src/extension/internal/filter/jelly-bean.h:24 @@ -3781,7 +3751,7 @@ msgstr "Metro" #: ../src/extension/internal/filter/melt.h:23 #, fuzzy msgid "Melt effect" -msgstr "Capa actual" +msgstr "Engadir Efecto:" #. ID -- should be unique #: ../src/extension/internal/filter/metal.h:24 @@ -3830,7 +3800,7 @@ msgstr "" #: ../src/extension/internal/filter/ridged-border.h:24 #, fuzzy msgid "Ridged Border" -msgstr "Mover" +msgstr "_Cor do bordo:" #. ID -- should be unique #: ../src/extension/internal/filter/ripple.h:24 @@ -3876,16 +3846,14 @@ msgstr "Espiral" msgid "Turn all the colors to be sepia tones" msgstr "" -# Rosetta #: ../src/extension/internal/filter/snow.h:32 -#, fuzzy msgid "Snow" -msgstr "Mostrar:" +msgstr "Neve" #: ../src/extension/internal/filter/snow.h:34 #, fuzzy msgid "Drift Size" -msgstr "Tamaño de punto" +msgstr "Pegar o tamaño" #: ../src/extension/internal/filter/snow.h:40 msgid "When the weather outside is frightening..." @@ -3913,9 +3881,9 @@ msgid "Paint your object with zebra stripes" msgstr "" #: ../src/extension/internal/gdkpixbuf-input.cpp:114 -#, c-format +#, fuzzy, c-format msgid "%s GDK pixbuf Input" -msgstr "" +msgstr "Entrada de SVG de AI" #: ../src/extension/internal/gimpgrad.cpp:274 msgid "GIMP Gradients" @@ -3929,7 +3897,8 @@ msgstr "Degradado de GIMP (*.ggr)" msgid "Gradients used in GIMP" msgstr "Degradados usados en GIMP" -#: ../src/extension/internal/grid.cpp:192 ../src/ui/widget/panel.cpp:122 +#: ../src/extension/internal/grid.cpp:192 +#: ../src/ui/widget/panel.cpp:122 msgid "Grid" msgstr "Reixa" @@ -3940,22 +3909,25 @@ msgstr "Ancho da Liña" #: ../src/extension/internal/grid.cpp:195 #, fuzzy msgid "Horizontal Spacing" -msgstr "Espacio Horizontal" +msgstr "Establecer espacio:" #: ../src/extension/internal/grid.cpp:196 #, fuzzy msgid "Vertical Spacing" -msgstr "Espacio Vertical" +msgstr "Establecer espacio:" -#: ../src/extension/internal/grid.cpp:202 ../share/extensions/eqtexsvg.inx.h:3 -#: ../share/extensions/funcplot.inx.h:12 ../share/extensions/gears.inx.h:5 +#: ../src/extension/internal/grid.cpp:202 +#: ../share/extensions/eqtexsvg.inx.h:3 +#: ../share/extensions/funcplot.inx.h:12 +#: ../share/extensions/gears.inx.h:5 #: ../share/extensions/grid_cartesian.inx.h:15 #: ../share/extensions/grid_polar.inx.h:18 #: ../share/extensions/lindenmayer.inx.h:11 #: ../share/extensions/polyhedron_3d.inx.h:32 #: ../share/extensions/render_alphabetsoup.inx.h:3 #: ../share/extensions/render_barcode.inx.h:5 -#: ../share/extensions/rtree.inx.h:4 ../share/extensions/spirograph.inx.h:6 +#: ../share/extensions/rtree.inx.h:4 +#: ../share/extensions/spirograph.inx.h:6 #: ../share/extensions/triangle.inx.h:10 #, fuzzy msgid "Render" @@ -3967,7 +3939,7 @@ msgstr "" #: ../src/extension/internal/latex-pstricks.cpp:347 msgid "LaTeX Print" -msgstr "" +msgstr "Impresión LaTeX" #: ../src/extension/internal/latex-pstricks-out.cpp:106 msgid "LaTeX Output" @@ -3978,8 +3950,9 @@ msgid "LaTeX With PSTricks macros (*.tex)" msgstr "LaTeX con macros PSTricks (*.tex)" #: ../src/extension/internal/latex-pstricks-out.cpp:112 +#, fuzzy msgid "LaTeX PSTricks File" -msgstr "" +msgstr "LaTeX con macros PSTricks (*.tex)" #: ../src/extension/internal/odf.cpp:2424 msgid "OpenDocument Drawing Output" @@ -4005,13 +3978,12 @@ msgid "Print properties" msgstr "Propiedades de impresión" #: ../src/extension/internal/pdf-cairo.cpp:149 +#, fuzzy msgid "Print using PDF operators" -msgstr "" +msgstr "Imprimir usando os operadores de PostScript" #: ../src/extension/internal/pdf-cairo.cpp:151 -msgid "" -"Use PDF vector operators. The resulting image is usually smaller in file " -"size and can be arbitrarily scaled, but patterns will be lost." +msgid "Use PDF vector operators. The resulting image is usually smaller in file size and can be arbitrarily scaled, but patterns will be lost." msgstr "" #: ../src/extension/internal/pdf-cairo.cpp:156 @@ -4021,10 +3993,7 @@ msgstr "Imprimir coma mapa de bits" #: ../src/extension/internal/pdf-cairo.cpp:158 #: ../src/extension/internal/ps.cpp:178 -msgid "" -"Print everything as bitmap. The resulting image is usually larger in file " -"size and cannot be arbitrarily scaled without quality loss, but all objects " -"will be rendered exactly as displayed." +msgid "Print everything as bitmap. The resulting image is usually larger in file size and cannot be arbitrarily scaled without quality loss, but all objects will be rendered exactly as displayed." msgstr "" #: ../src/extension/internal/pdf-cairo.cpp:172 @@ -4054,60 +4023,62 @@ msgstr "" #: ../src/extension/internal/pdf-cairo.cpp:1060 msgid "PDF Print" -msgstr "" +msgstr "Impresión PDF" #. TRANSLATORS: The following are document crop settings for PDF import #. more info: http://www.acrobatusers.com/tech_corners/javascript_corner/tips/2006/page_bounds/ #: ../src/extension/internal/pdfinput/pdf-input.cpp:56 +#, fuzzy msgid "media box" -msgstr "" +msgstr "Caixa de contorno" #: ../src/extension/internal/pdfinput/pdf-input.cpp:57 +#, fuzzy msgid "crop box" -msgstr "" +msgstr "Caixa de contorno" #: ../src/extension/internal/pdfinput/pdf-input.cpp:58 +#, fuzzy msgid "trim box" -msgstr "" +msgstr "Caixa de contorno" #: ../src/extension/internal/pdfinput/pdf-input.cpp:59 +#, fuzzy msgid "bleed box" -msgstr "" +msgstr "Caixa de contorno" #: ../src/extension/internal/pdfinput/pdf-input.cpp:60 +#, fuzzy msgid "art box" -msgstr "" +msgstr "Caixa de contorno" #: ../src/extension/internal/pdfinput/pdf-input.cpp:72 #, fuzzy msgid "Select page:" -msgstr "Seleccionar" +msgstr "Configuración de páxina" #. Display total number of pages #: ../src/extension/internal/pdfinput/pdf-input.cpp:86 -#, c-format +#, fuzzy, c-format msgid "out of %i" -msgstr "" +msgstr "Esvaecer:" #. Crop settings #: ../src/extension/internal/pdfinput/pdf-input.cpp:92 #, fuzzy msgid "Clip to:" -msgstr "Cor_tar" +msgstr "Ligazón a %s" #: ../src/extension/internal/pdfinput/pdf-input.cpp:104 -#, fuzzy msgid "Page settings" -msgstr "Configuración do escritorio" +msgstr "Configuración de páxina" #: ../src/extension/internal/pdfinput/pdf-input.cpp:106 msgid "Precision of approximating gradient meshes:" msgstr "" #: ../src/extension/internal/pdfinput/pdf-input.cpp:107 -msgid "" -"Note: setting the precision too high may result in a large SVG file " -"and slow performance." +msgid "Note: setting the precision too high may result in a large SVG file and slow performance." msgstr "" #: ../src/extension/internal/pdfinput/pdf-input.cpp:112 @@ -4120,13 +4091,12 @@ msgstr "Agrupar" #: ../src/extension/internal/pdfinput/pdf-input.cpp:116 #, fuzzy msgid "Text handling:" -msgstr "Establecer espacio:" +msgstr "Texto horizontal" #: ../src/extension/internal/pdfinput/pdf-input.cpp:118 #: ../src/extension/internal/pdfinput/pdf-input.cpp:119 -#, fuzzy msgid "Import text as text" -msgstr "Converte-lo texto en camiño" +msgstr "Importar o texto coma texto" #: ../src/extension/internal/pdfinput/pdf-input.cpp:122 #, fuzzy @@ -4134,14 +4104,12 @@ msgid "Embed images" msgstr "Buscar imaxes" #: ../src/extension/internal/pdfinput/pdf-input.cpp:125 -#, fuzzy msgid "Import settings" -msgstr "Configuración do documento" +msgstr "Configuración de importación" #: ../src/extension/internal/pdfinput/pdf-input.cpp:242 -#, fuzzy msgid "PDF Import Settings" -msgstr "Configuración do documento" +msgstr "Configuración de importación de PDF" #: ../src/extension/internal/pdfinput/pdf-input.cpp:382 msgid "pdfinput|medium" @@ -4158,33 +4126,28 @@ msgid "very fine" msgstr "Recheo non asignado" #: ../src/extension/internal/pdfinput/pdf-input.cpp:739 -#, fuzzy msgid "PDF Input" -msgstr "Entrada de DXF" +msgstr "Entrada de PDF" #: ../src/extension/internal/pdfinput/pdf-input.cpp:744 -#, fuzzy msgid "Adobe PDF (*.pdf)" -msgstr "DXF de AutoCAD (*.dxf)" +msgstr "Adobe PDF (*.pdf)" #: ../src/extension/internal/pdfinput/pdf-input.cpp:745 msgid "Adobe Portable Document Format" -msgstr "" +msgstr "Adobe Portable Document Format" #: ../src/extension/internal/pdfinput/pdf-input.cpp:752 -#, fuzzy msgid "AI Input" msgstr "Entrada de AI" #: ../src/extension/internal/pdfinput/pdf-input.cpp:757 -#, fuzzy msgid "Adobe Illustrator 9.0 and above (*.ai)" -msgstr "Adobe Illustrator (*.ai)" +msgstr "Adobe Illustrator 9.0 e superior (*.ai)" #: ../src/extension/internal/pdfinput/pdf-input.cpp:758 -#, fuzzy msgid "Open files saved in Adobe Illustrator 9.0 and newer versions" -msgstr "Abrir ficheiros gardados con Adobe Illustrator" +msgstr "Abrir ficheiros gardados con Adobe Illustrator 9.0 e versións máis novas" #: ../src/extension/internal/pov-out.cpp:666 msgid "PovRay Output" @@ -4195,37 +4158,33 @@ msgid "PovRay (*.pov) (export splines)" msgstr "" #: ../src/extension/internal/pov-out.cpp:672 +#, fuzzy msgid "PovRay Raytracer File" -msgstr "" +msgstr "Ficheiro de Encapsulated Postscript" #: ../src/extension/internal/ps.cpp:147 -#, fuzzy msgid "Print Configuration" -msgstr "Destino da Impresión" +msgstr "Configuración de impresión" #: ../src/extension/internal/ps.cpp:169 msgid "Print using PostScript operators" msgstr "Imprimir usando os operadores de PostScript" #: ../src/extension/internal/ps.cpp:171 -msgid "" -"Use PostScript vector operators. The resulting image is usually smaller in " -"file size and can be arbitrarily scaled, but alpha transparency and patterns " -"will be lost." +msgid "Use PostScript vector operators. The resulting image is usually smaller in file size and can be arbitrarily scaled, but alpha transparency and patterns will be lost." msgstr "" #: ../src/extension/internal/ps.cpp:1753 msgid "Postscript Print" -msgstr "" +msgstr "Impresión Postscript" #: ../src/extension/internal/ps-out.cpp:82 msgid "Postscript Output" msgstr "Saída de Postscript" #: ../src/extension/internal/ps-out.cpp:89 -#, fuzzy msgid "PostScript (*.ps)" -msgstr "Postscript (*.ps)" +msgstr "PostScript (*.ps)" #: ../src/extension/internal/svg.cpp:55 msgid "SVG Input" @@ -4269,7 +4228,8 @@ msgstr "Formato Scalable Vector Graphics tal e coma o definiu o W3C" msgid "SVGZ Input" msgstr "Entrada de SVGZ" -#: ../src/extension/internal/svgz.cpp:53 ../src/extension/internal/svgz.cpp:67 +#: ../src/extension/internal/svgz.cpp:53 +#: ../src/extension/internal/svgz.cpp:67 #: ../share/extensions/svgz_input.inx.h:1 #: ../share/extensions/svgz_output.inx.h:1 msgid "Compressed Inkscape SVG (*.svgz)" @@ -4279,7 +4239,8 @@ msgstr "SVG de Inkscape Comprimido (*.svgz)" msgid "SVG file format compressed with GZip" msgstr "Ficheiro co formato SVG comprimido con GZip" -#: ../src/extension/internal/svgz.cpp:62 ../src/extension/internal/svgz.cpp:76 +#: ../src/extension/internal/svgz.cpp:62 +#: ../src/extension/internal/svgz.cpp:76 #: ../share/extensions/svgz_output.inx.h:3 msgid "SVGZ Output" msgstr "Saída de SVGZ" @@ -4300,27 +4261,24 @@ msgstr "Formato Scalable Vector Graphics comprimido con GZip" #: ../src/extension/internal/win32.cpp:491 msgid "Windows 32-bit Print" -msgstr "" +msgstr "Impresión de Windows 32-bits" #: ../src/extension/internal/wpg-input.cpp:102 -#, fuzzy msgid "WPG Input" -msgstr "Entrada de SVG" +msgstr "Entrada de WPG" #: ../src/extension/internal/wpg-input.cpp:107 -#, fuzzy msgid "WordPerfect Graphics (*.wpg)" -msgstr "Scalable Vector Graphics (*.svg)" +msgstr "WordPerfect Graphics (*.wpg)" #: ../src/extension/internal/wpg-input.cpp:108 -#, fuzzy msgid "Vector graphics format used by Corel WordPerfect" -msgstr "Formato Scalable Vector Graphics tal e coma o definiu o W3C" +msgstr "Formato de imaxes vectoriais usado por Corel WordPerfect" #: ../src/extension/prefdialog.cpp:237 #, fuzzy msgid "Live Preview" -msgstr "Previsualización" +msgstr "Previsualiza-la impresión do documento" #: ../src/extension/prefdialog.cpp:237 msgid "Controls whether the effect settings are rendered live on canvas" @@ -4332,9 +4290,7 @@ msgstr "" #. sp_ui_error_dialog(_("Format autodetect failed. The file is being opened as SVG.")); #: ../src/extension/system.cpp:103 msgid "Format autodetect failed. The file is being opened as SVG." -msgstr "" -"Fallo ó detectar automáticamente o formato. Vaise abrir o ficheiro coma se " -"fora SVG." +msgstr "Fallo ó detectar automáticamente o formato. Vaise abrir o ficheiro coma se fora SVG." #. TRANSLATORS: default.svg is localizable - this is the name of the default document #. template. This way you can localize the default pagesize, translate the name of @@ -4344,7 +4300,8 @@ msgstr "" msgid "default.svg" msgstr "default.svg" -#: ../src/file.cpp:225 ../src/file.cpp:993 +#: ../src/file.cpp:225 +#: ../src/file.cpp:993 #, c-format msgid "Failed to load the requested file %s" msgstr "Erro ó cargar o ficheiro solicitado %s" @@ -4356,15 +4313,17 @@ msgstr "" #: ../src/file.cpp:256 #, c-format msgid "Changes will be lost! Are you sure you want to reload document %s?" -msgstr "" +msgstr "Vanse perder os cambios! Estás seguro de que desexas recargar o documento %s?" #: ../src/file.cpp:285 +#, fuzzy msgid "Document reverted." -msgstr "" +msgstr "Novo documento %d" #: ../src/file.cpp:287 +#, fuzzy msgid "Document not reverted." -msgstr "" +msgstr "Documento sen gardar." #: ../src/file.cpp:437 msgid "Select file to open" @@ -4388,12 +4347,11 @@ msgstr "Non hai definicións sen usar en <defs>." #: ../src/file.cpp:563 #, c-format -msgid "" -"No Inkscape extension found to save document (%s). This may have been " -"caused by an unknown filename extension." +msgid "No Inkscape extension found to save document (%s). This may have been caused by an unknown filename extension." msgstr "" -#: ../src/file.cpp:564 ../src/file.cpp:572 +#: ../src/file.cpp:564 +#: ../src/file.cpp:572 msgid "Document not saved." msgstr "Documento sen gardar." @@ -4406,20 +4364,21 @@ msgstr "Non se puido gardar o ficheiro %s." msgid "Document saved." msgstr "Documento gardado." -#: ../src/file.cpp:721 ../src/file.cpp:1118 ../src/file.cpp:1235 +#: ../src/file.cpp:721 +#: ../src/file.cpp:1118 +#: ../src/file.cpp:1235 #, c-format msgid "drawing%s" -msgstr "" +msgstr "debuxo%s" #: ../src/file.cpp:727 #, c-format msgid "drawing-%d%s" -msgstr "" +msgstr "debuxo-%d%s" #: ../src/file.cpp:746 -#, fuzzy msgid "Select file to save a copy to" -msgstr "Seleccione o ficheiro no que se vai gardar" +msgstr "Seleccione o ficheiro no que se vai gardar unha copia" #: ../src/file.cpp:748 msgid "Select file to save to" @@ -4430,12 +4389,10 @@ msgid "No changes need to be saved." msgstr "Non hai cambios que gardar." #: ../src/file.cpp:836 -#, fuzzy msgid "Saving document..." -msgstr "Gardar o documento" +msgstr "Gardando o documento..." #: ../src/file.cpp:990 -#, fuzzy msgid "Import" msgstr "Importar" @@ -4443,33 +4400,32 @@ msgstr "Importar" msgid "Select file to import" msgstr "Seleccione o ficheiro que desexa importar" -#: ../src/file.cpp:1140 ../src/file.cpp:1250 +#: ../src/file.cpp:1140 +#: ../src/file.cpp:1250 msgid "Select file to export to" msgstr "Seleccione o ficheiro no que se vai exportar" #: ../src/file.cpp:1277 msgid "Error saving a temporary copy" -msgstr "" +msgstr "Produciuse un erro ó gardar unha copia temporal" #: ../src/file.cpp:1296 +#, fuzzy msgid "Open Clip Art Login" -msgstr "" +msgstr "Nome de usuario de Open Clip Art Library:" #: ../src/file.cpp:1317 -msgid "" -"Error exporting the document. Verify if the server name, username and " -"password are correct, if the server has support for webdav and verify if you " -"didn't forget to choose a license." +msgid "Error exporting the document. Verify if the server name, username and password are correct, if the server has support for webdav and verify if you didn't forget to choose a license." msgstr "" #: ../src/file.cpp:1338 -#, fuzzy msgid "Document exported..." -msgstr "Propiedades do D_ocumento..." +msgstr "Documento exportado..." -#: ../src/file.cpp:1366 ../src/verbs.cpp:2182 +#: ../src/file.cpp:1366 +#: ../src/verbs.cpp:2182 msgid "Import From Open Clip Art Library" -msgstr "" +msgstr "Importar dende Open Clip Art Library" #: ../src/filter-enums.cpp:20 #, fuzzy @@ -4479,11 +4435,12 @@ msgstr "Azul" #: ../src/filter-enums.cpp:21 #, fuzzy msgid "Color Matrix" -msgstr "Cor do recheo" +msgstr "Cor inicial:" #: ../src/filter-enums.cpp:22 +#, fuzzy msgid "Component Transfer" -msgstr "" +msgstr "Elixa o compoñente Vermello da cor" #: ../src/filter-enums.cpp:23 #, fuzzy @@ -4506,7 +4463,8 @@ msgstr "" msgid "Flood" msgstr "" -#: ../src/filter-enums.cpp:29 ../src/selection-describer.cpp:53 +#: ../src/filter-enums.cpp:29 +#: ../src/selection-describer.cpp:53 msgid "Image" msgstr "Imaxe" @@ -4528,34 +4486,35 @@ msgstr "" msgid "Tile" msgstr "Título" -#: ../src/filter-enums.cpp:35 ../src/filter-enums.cpp:118 +#: ../src/filter-enums.cpp:35 +#: ../src/filter-enums.cpp:118 msgid "Turbulence" msgstr "" #: ../src/filter-enums.cpp:40 #, fuzzy msgid "Source Graphic" -msgstr "Fonte" +msgstr "Fonte da Imaxe" #: ../src/filter-enums.cpp:41 #, fuzzy msgid "Source Alpha" -msgstr "Fonte" +msgstr " alfa %.3g" #: ../src/filter-enums.cpp:42 #, fuzzy msgid "Background Image" -msgstr "Fondo" +msgstr "Imaxe de Fondo" #: ../src/filter-enums.cpp:43 #, fuzzy msgid "Background Alpha" -msgstr "Fondo" +msgstr " alfa %.3g" #: ../src/filter-enums.cpp:44 #, fuzzy msgid "Fill Paint" -msgstr "R_echeo e Trazo" +msgstr "_Pintar o trazo" #: ../src/filter-enums.cpp:45 #, fuzzy @@ -4565,7 +4524,7 @@ msgstr "_Pintar o trazo" #. TRANSLATORS: This is a context string, only put the word "Normal" in your translation #: ../src/filter-enums.cpp:52 msgid "filterBlendMode|Normal" -msgstr "" +msgstr "Normal" #: ../src/filter-enums.cpp:53 msgid "Multiply" @@ -4577,14 +4536,12 @@ msgid "Screen" msgstr "Verde" #: ../src/filter-enums.cpp:55 -#, fuzzy msgid "Darken" -msgstr "Contagotas" +msgstr "Escurecer" #: ../src/filter-enums.cpp:56 -#, fuzzy msgid "Lighten" -msgstr "Brillo" +msgstr "Aclarar" #: ../src/filter-enums.cpp:62 #, fuzzy @@ -4599,14 +4556,16 @@ msgstr "Saturación" #: ../src/filter-enums.cpp:64 #, fuzzy msgid "Hue Rotate" -msgstr "Rotar" +msgstr "Rotar os nodos" #: ../src/filter-enums.cpp:65 +#, fuzzy msgid "Luminance to Alpha" -msgstr "" +msgstr "Obxecto a camiño" #. File -#: ../src/filter-enums.cpp:71 ../src/verbs.cpp:2159 +#: ../src/filter-enums.cpp:71 +#: ../src/verbs.cpp:2159 msgid "Default" msgstr "Predeterminado" @@ -4618,12 +4577,12 @@ msgstr "Metro" #: ../src/filter-enums.cpp:73 #, fuzzy msgid "In" -msgstr "Polgada" +msgstr " na %s" #: ../src/filter-enums.cpp:74 #, fuzzy msgid "Out" -msgstr "Saída" +msgstr "Esvaecer:" #: ../src/filter-enums.cpp:75 #, fuzzy @@ -4639,14 +4598,12 @@ msgid "Arithmetic" msgstr "" #: ../src/filter-enums.cpp:83 -#, fuzzy msgid "Identity" -msgstr "Identificador" +msgstr "Identidade" #: ../src/filter-enums.cpp:84 -#, fuzzy msgid "Table" -msgstr "absoluto" +msgstr "Táboa" #: ../src/filter-enums.cpp:85 #, fuzzy @@ -4654,15 +4611,15 @@ msgid "Discrete" msgstr "Distribuír" #: ../src/filter-enums.cpp:86 -#, fuzzy msgid "Linear" -msgstr "Licenza" +msgstr "Lineal" #: ../src/filter-enums.cpp:87 msgid "Gamma" -msgstr "" +msgstr "Gamma" -#: ../src/filter-enums.cpp:93 ../src/selection-chemistry.cpp:260 +#: ../src/filter-enums.cpp:93 +#: ../src/selection-chemistry.cpp:260 #: ../src/widgets/gradient-selector.cpp:134 msgid "Duplicate" msgstr "Duplicar" @@ -4671,31 +4628,34 @@ msgstr "Duplicar" msgid "Wrap" msgstr "" -#: ../src/filter-enums.cpp:101 ../src/flood-context.cpp:271 +#: ../src/filter-enums.cpp:101 +#: ../src/flood-context.cpp:271 #: ../src/widgets/sp-color-icc-selector.cpp:233 #: ../src/widgets/sp-color-scales.cpp:398 #: ../src/widgets/sp-color-scales.cpp:399 msgid "Red" msgstr "Vermello" -#: ../src/filter-enums.cpp:102 ../src/flood-context.cpp:272 +#: ../src/filter-enums.cpp:102 +#: ../src/flood-context.cpp:272 #: ../src/widgets/sp-color-icc-selector.cpp:233 #: ../src/widgets/sp-color-scales.cpp:401 #: ../src/widgets/sp-color-scales.cpp:402 msgid "Green" msgstr "Verde" -#: ../src/filter-enums.cpp:103 ../src/flood-context.cpp:273 +#: ../src/filter-enums.cpp:103 +#: ../src/flood-context.cpp:273 #: ../src/widgets/sp-color-icc-selector.cpp:233 #: ../src/widgets/sp-color-scales.cpp:404 #: ../src/widgets/sp-color-scales.cpp:405 msgid "Blue" msgstr "Azul" -#: ../src/filter-enums.cpp:104 ../src/flood-context.cpp:277 -#, fuzzy +#: ../src/filter-enums.cpp:104 +#: ../src/flood-context.cpp:277 msgid "Alpha" -msgstr "Alfa:" +msgstr "Alfa" #: ../src/filter-enums.cpp:110 #, fuzzy @@ -4710,47 +4670,49 @@ msgstr "Data" #: ../src/filter-enums.cpp:117 #, fuzzy msgid "Fractal Noise" -msgstr "Recheo fractal" +msgstr "Engadir Ruído" #: ../src/filter-enums.cpp:124 +#, fuzzy msgid "Distant Light" -msgstr "" +msgstr "Menos Luz" #: ../src/filter-enums.cpp:125 #, fuzzy msgid "Point Light" -msgstr "Aliñar á dereita" +msgstr "Menos Luz" #: ../src/filter-enums.cpp:126 +#, fuzzy msgid "Spot Light" -msgstr "" +msgstr "Menos Luz" #: ../src/flood-context.cpp:270 -#, fuzzy msgid "Visible Colors" -msgstr "Visible" +msgstr "Cores visibles" -#: ../src/flood-context.cpp:276 ../src/widgets/sp-color-icc-selector.cpp:236 +#: ../src/flood-context.cpp:276 +#: ../src/widgets/sp-color-icc-selector.cpp:236 #: ../src/widgets/sp-color-scales.cpp:430 -#: ../src/widgets/sp-color-scales.cpp:431 ../src/widgets/toolbox.cpp:3390 +#: ../src/widgets/sp-color-scales.cpp:431 +#: ../src/widgets/toolbox.cpp:3390 #: ../share/extensions/color_randomize.inx.h:3 msgid "Lightness" msgstr "Brillo" -#: ../src/flood-context.cpp:289 ../src/ui/dialog/inkscape-preferences.cpp:968 -#, fuzzy +#: ../src/flood-context.cpp:289 +#: ../src/ui/dialog/inkscape-preferences.cpp:968 msgid "Small" -msgstr "pequeno" +msgstr "Pequeno" -#: ../src/flood-context.cpp:290 ../src/ui/dialog/inkscape-preferences.cpp:968 -#, fuzzy +#: ../src/flood-context.cpp:290 +#: ../src/ui/dialog/inkscape-preferences.cpp:968 msgid "Medium" -msgstr "mediana" +msgstr "Medio" #: ../src/flood-context.cpp:291 -#, fuzzy msgid "Large" -msgstr "grande" +msgstr "Grande" #: ../src/flood-context.cpp:491 msgid "Too much inset, the result is empty." @@ -4758,10 +4720,8 @@ msgstr "" #: ../src/flood-context.cpp:531 #, c-format -msgid "" -"Area filled, path with %d node created and unioned with selection." -msgid_plural "" -"Area filled, path with %d nodes created and unioned with selection." +msgid "Area filled, path with %d node created and unioned with selection." +msgid_plural "Area filled, path with %d nodes created and unioned with selection." msgstr[0] "" msgstr[1] "" @@ -4772,95 +4732,107 @@ msgid_plural "Area filled, path with %d nodes created." msgstr[0] "" msgstr[1] "" -#: ../src/flood-context.cpp:807 ../src/flood-context.cpp:1121 +#: ../src/flood-context.cpp:807 +#: ../src/flood-context.cpp:1121 msgid "Area is not bounded, cannot fill." msgstr "" #: ../src/flood-context.cpp:1126 -msgid "" -"Only the visible part of the bounded area was filled. If you want to " -"fill all of the area, undo, zoom out, and fill again." +msgid "Only the visible part of the bounded area was filled. If you want to fill all of the area, undo, zoom out, and fill again." msgstr "" -#: ../src/flood-context.cpp:1144 ../src/flood-context.cpp:1304 +#: ../src/flood-context.cpp:1144 +#: ../src/flood-context.cpp:1304 #, fuzzy msgid "Fill bounded area" -msgstr "R_echeo e Trazo" +msgstr "Encher a zona " #: ../src/flood-context.cpp:1164 -#, fuzzy msgid "Set style on object" -msgstr "Patrón a obxectos" +msgstr "Definir o estilo do obxecto" #: ../src/flood-context.cpp:1223 msgid "Draw over areas to add to fill, hold Alt for touch fill" msgstr "" -#: ../src/gradient-context.cpp:132 ../src/gradient-drag.cpp:74 +#: ../src/gradient-context.cpp:132 +#: ../src/gradient-drag.cpp:74 +#, fuzzy msgid "Linear gradient start" -msgstr "" +msgstr "Recheo de degradado linear" #. POINT_LG_BEGIN -#: ../src/gradient-context.cpp:133 ../src/gradient-drag.cpp:75 +#: ../src/gradient-context.cpp:133 +#: ../src/gradient-drag.cpp:75 +#, fuzzy msgid "Linear gradient end" -msgstr "" +msgstr "Recheo de degradado linear" -#: ../src/gradient-context.cpp:134 ../src/gradient-drag.cpp:76 +#: ../src/gradient-context.cpp:134 +#: ../src/gradient-drag.cpp:76 #, fuzzy msgid "Linear gradient mid stop" -msgstr "Trazo de degradado linear" +msgstr "Engadir outra fase de control do degradado" -#: ../src/gradient-context.cpp:135 ../src/gradient-drag.cpp:77 +#: ../src/gradient-context.cpp:135 +#: ../src/gradient-drag.cpp:77 +#, fuzzy msgid "Radial gradient center" -msgstr "" +msgstr "Recheo de degradado radial" -#: ../src/gradient-context.cpp:136 ../src/gradient-context.cpp:137 -#: ../src/gradient-drag.cpp:78 ../src/gradient-drag.cpp:79 +#: ../src/gradient-context.cpp:136 +#: ../src/gradient-context.cpp:137 +#: ../src/gradient-drag.cpp:78 +#: ../src/gradient-drag.cpp:79 +#, fuzzy msgid "Radial gradient radius" -msgstr "" +msgstr "Recheo de degradado radial" -#: ../src/gradient-context.cpp:138 ../src/gradient-drag.cpp:80 +#: ../src/gradient-context.cpp:138 +#: ../src/gradient-drag.cpp:80 +#, fuzzy msgid "Radial gradient focus" -msgstr "" +msgstr "Recheo de degradado radial" #. POINT_RG_FOCUS -#: ../src/gradient-context.cpp:139 ../src/gradient-context.cpp:140 -#: ../src/gradient-drag.cpp:81 ../src/gradient-drag.cpp:82 +#: ../src/gradient-context.cpp:139 +#: ../src/gradient-context.cpp:140 +#: ../src/gradient-drag.cpp:81 +#: ../src/gradient-drag.cpp:82 #, fuzzy msgid "Radial gradient mid stop" -msgstr "Trazo de degradado linear" +msgstr "Engadir outra fase de control do degradado" #. TRANSLATORS: %s will be substituted with the point name (see previous messages); This is part of a compound message #: ../src/gradient-context.cpp:162 -#, fuzzy, c-format +#, c-format msgid "%s selected" -msgstr "Último seleccionado" +msgstr "seleccionouse %s" #. TRANSLATORS: Mind the space in front. This is part of a compound message -#: ../src/gradient-context.cpp:164 ../src/gradient-context.cpp:173 +#: ../src/gradient-context.cpp:164 +#: ../src/gradient-context.cpp:173 #, fuzzy, c-format msgid " out of %d gradient handle" msgid_plural " out of %d gradient handles" -msgstr[0] "Non se seleccionou ningún degradado" +msgstr[0] "Degradado de GIMP (*.ggr)" msgstr[1] "Non se seleccionou ningún degradado" -# [*] Revisar Layout #. TRANSLATORS: Mind the space in front. (Refers to gradient handles selected). This is part of a compound message -#: ../src/gradient-context.cpp:165 ../src/gradient-context.cpp:174 +#: ../src/gradient-context.cpp:165 +#: ../src/gradient-context.cpp:174 #: ../src/gradient-context.cpp:181 -#, fuzzy, c-format +#, c-format msgid " on %d selected object" msgid_plural " on %d selected objects" -msgstr[0] "Edita-lo equipamento dos obxectos seleccionados" -msgstr[1] "Edita-lo equipamento dos obxectos seleccionados" +msgstr[0] " en %d obxecto seleccionado" +msgstr[1] " en %d obxectos seleccionados" #. TRANSLATORS: This is a part of a compound message (out of two more indicating: grandint handle count & object count) #: ../src/gradient-context.cpp:171 #, c-format -msgid "" -"One handle merging %d stop (drag with Shift to separate) selected" -msgid_plural "" -"One handle merging %d stops (drag with Shift to separate) selected" +msgid "One handle merging %d stop (drag with Shift to separate) selected" +msgid_plural "One handle merging %d stops (drag with Shift to separate) selected" msgstr[0] "" msgstr[1] "" @@ -4876,26 +4848,23 @@ msgstr[1] "" #: ../src/gradient-context.cpp:186 #, c-format msgid "No gradient handles selected out of %d on %d selected object" -msgid_plural "" -"No gradient handles selected out of %d on %d selected objects" +msgid_plural "No gradient handles selected out of %d on %d selected objects" msgstr[0] "" msgstr[1] "" -#: ../src/gradient-context.cpp:385 ../src/gradient-context.cpp:478 +#: ../src/gradient-context.cpp:385 +#: ../src/gradient-context.cpp:478 #: ../src/widgets/gradient-vector.cpp:735 -#, fuzzy msgid "Add gradient stop" -msgstr "Engadir novo degradado" +msgstr "Engadir unha fase ó degradado" #: ../src/gradient-context.cpp:453 -#, fuzzy msgid "Simplify gradient" -msgstr "Degradado radial" +msgstr "Simplificar o degradado" #: ../src/gradient-context.cpp:529 -#, fuzzy msgid "Create default gradient" -msgstr "Crear degradado linear" +msgstr "Crear degradado predeterminado" #: ../src/gradient-context.cpp:584 msgid "Draw around handles to select them" @@ -4910,9 +4879,8 @@ msgid "Shift: draw gradient around the starting point" msgstr "" #: ../src/gradient-context.cpp:803 -#, fuzzy msgid "Invert gradient" -msgstr "Degradado linear" +msgstr "Inverter o degradado" #: ../src/gradient-context.cpp:919 #, c-format @@ -4928,75 +4896,67 @@ msgstr "Seleccione os obxectos nos que se vai crear o degradado" #: ../src/gradient-drag.cpp:573 #, fuzzy msgid "Merge gradient handles" -msgstr "Recheo de degradado linear" +msgstr "Degradado de GIMP (*.ggr)" #: ../src/gradient-drag.cpp:895 -#, fuzzy msgid "Move gradient handle" -msgstr "Non se seleccionou ningún degradado" +msgstr "Mover a asa do degradado" -#: ../src/gradient-drag.cpp:948 ../src/widgets/gradient-vector.cpp:767 -#, fuzzy +#: ../src/gradient-drag.cpp:948 +#: ../src/widgets/gradient-vector.cpp:767 msgid "Delete gradient stop" -msgstr "Borrar fase" +msgstr "Eliminar fase do degradado" #: ../src/gradient-drag.cpp:1112 #, c-format -msgid "" -"%s %d for: %s%s; drag with Ctrl to snap offset; click with Ctrl" -"+Alt to delete stop" +msgid "%s %d for: %s%s; drag with Ctrl to snap offset; click with Ctrl+Alt to delete stop" msgstr "" -#: ../src/gradient-drag.cpp:1116 ../src/gradient-drag.cpp:1123 +#: ../src/gradient-drag.cpp:1116 +#: ../src/gradient-drag.cpp:1123 msgid " (stroke)" -msgstr "" +msgstr " (trazo)" #: ../src/gradient-drag.cpp:1120 #, c-format -msgid "" -"%s for: %s%s; drag with Ctrl to snap angle, with Ctrl+Alt to " -"preserve angle, with Ctrl+Shift to scale around center" +msgid "%s for: %s%s; drag with Ctrl to snap angle, with Ctrl+Alt to preserve angle, with Ctrl+Shift to scale around center" msgstr "" #: ../src/gradient-drag.cpp:1128 -msgid "" -"Radial gradient center and focus; drag with Shift to " -"separate focus" +msgid "Radial gradient center and focus; drag with Shift to separate focus" msgstr "" #: ../src/gradient-drag.cpp:1131 #, c-format -msgid "" -"Gradient point shared by %d gradient; drag with Shift to " -"separate" -msgid_plural "" -"Gradient point shared by %d gradients; drag with Shift to " -"separate" +msgid "Gradient point shared by %d gradient; drag with Shift to separate" +msgid_plural "Gradient point shared by %d gradients; drag with Shift to separate" msgstr[0] "" msgstr[1] "" #: ../src/gradient-drag.cpp:1806 #, fuzzy msgid "Move gradient handle(s)" -msgstr "Non se seleccionou ningún degradado" +msgstr "Degradado de GIMP (*.ggr)" #: ../src/gradient-drag.cpp:1842 #, fuzzy msgid "Move gradient mid stop(s)" -msgstr "Borrar fase" +msgstr "Engadir outra fase de control do degradado" #: ../src/gradient-drag.cpp:2130 #, fuzzy msgid "Delete gradient stop(s)" -msgstr "Borrar fase" +msgstr "Degradado de GIMP (*.ggr)" #: ../src/helper/units.cpp:37 msgid "Unit" msgstr "Unidade" #. Add the units menu. -#: ../src/helper/units.cpp:37 ../src/widgets/select-toolbar.cpp:490 -#: ../src/widgets/toolbox.cpp:1280 ../src/widgets/toolbox.cpp:2457 +#: ../src/helper/units.cpp:37 +#: ../src/widgets/select-toolbar.cpp:490 +#: ../src/widgets/toolbox.cpp:1280 +#: ../src/widgets/toolbox.cpp:2457 #: ../src/widgets/toolbox.cpp:5758 msgid "Units" msgstr "Unidades" @@ -5005,11 +4965,13 @@ msgstr "Unidades" msgid "Point" msgstr "Punto" -#: ../src/helper/units.cpp:38 ../src/ui/widget/selected-style.cpp:287 +#: ../src/helper/units.cpp:38 +#: ../src/ui/widget/selected-style.cpp:287 msgid "pt" msgstr "pt" -#: ../src/helper/units.cpp:38 ../share/extensions/perfectboundcover.inx.h:16 +#: ../src/helper/units.cpp:38 +#: ../share/extensions/perfectboundcover.inx.h:16 msgid "Points" msgstr "Puntos" @@ -5038,7 +5000,8 @@ msgstr "" msgid "Pixel" msgstr "Píxel" -#: ../src/helper/units.cpp:40 ../src/ui/dialog/inkscape-preferences.cpp:198 +#: ../src/helper/units.cpp:40 +#: ../src/ui/dialog/inkscape-preferences.cpp:198 #: ../src/ui/dialog/inkscape-preferences.cpp:202 #: ../src/ui/dialog/inkscape-preferences.cpp:205 #: ../src/ui/widget/selected-style.cpp:283 @@ -5054,11 +5017,13 @@ msgid "Px" msgstr "Px" #. You can add new elements from this point forward -#: ../src/helper/units.cpp:42 ../share/extensions/straightseg.inx.h:3 +#: ../src/helper/units.cpp:42 +#: ../share/extensions/straightseg.inx.h:3 msgid "Percent" msgstr "Porcentaxe" -#: ../src/helper/units.cpp:42 ../src/ui/dialog/inkscape-preferences.cpp:218 +#: ../src/helper/units.cpp:42 +#: ../src/ui/dialog/inkscape-preferences.cpp:218 msgid "%" msgstr "%" @@ -5070,7 +5035,8 @@ msgstr "Porcentaxes" msgid "Millimeter" msgstr "Milímetro" -#: ../src/helper/units.cpp:43 ../src/ui/widget/selected-style.cpp:291 +#: ../src/helper/units.cpp:43 +#: ../src/ui/widget/selected-style.cpp:291 msgid "mm" msgstr "mm" @@ -5108,26 +5074,25 @@ msgid "Inch" msgstr "Polgada" #: ../src/helper/units.cpp:46 +#, fuzzy msgid "in" -msgstr "" +msgstr " na %s" #: ../src/helper/units.cpp:46 msgid "Inches" msgstr "Polgadas" #: ../src/helper/units.cpp:47 -#, fuzzy msgid "Foot" -msgstr "Fonte" +msgstr "Pé" #: ../src/helper/units.cpp:47 msgid "ft" msgstr "" #: ../src/helper/units.cpp:47 -#, fuzzy msgid "Feet" -msgstr "FreeArt" +msgstr "Pés" #. Volatiles do not have default, so there are none here #. TRANSLATORS: for info, see http://www.w3.org/TR/REC-CSS2/syndata.html#length-units @@ -5140,8 +5105,9 @@ msgid "em" msgstr "" #: ../src/helper/units.cpp:50 +#, fuzzy msgid "Em squares" -msgstr "" +msgstr "Crear rectángulos e cadrados" # leo #. TRANSLATORS: for info, see http://www.w3.org/TR/REC-CSS2/syndata.html#length-units @@ -5155,19 +5121,21 @@ msgid "ex" msgstr "" #: ../src/helper/units.cpp:52 +#, fuzzy msgid "Ex squares" -msgstr "" +msgstr "Crear rectángulos e cadrados" #: ../src/inkscape.cpp:337 #, fuzzy msgid "Autosaving documents..." -msgstr "Gardar o documento" +msgstr "Número máximo de documentos recentes:" #: ../src/inkscape.cpp:405 msgid "Autosave failed! Could not find inkscape extension to save document." msgstr "" -#: ../src/inkscape.cpp:408 ../src/inkscape.cpp:415 +#: ../src/inkscape.cpp:408 +#: ../src/inkscape.cpp:415 #, fuzzy, c-format msgid "Autosave failed! File %s could not be saved." msgstr "Non se puido gardar o ficheiro %s." @@ -5186,9 +5154,7 @@ msgid "Inkscape encountered an internal error and will close now.\n" msgstr "Inkscape atopou un erro interno e vaise pechar agora mesmo.\n" #: ../src/inkscape.cpp:683 -msgid "" -"Automatic backups of unsaved documents were done to the following " -"locations:\n" +msgid "Automatic backups of unsaved documents were done to the following locations:\n" msgstr "" #: ../src/inkscape.cpp:684 @@ -5239,14 +5205,18 @@ msgstr "" "Ainda que se vai executar Inkscape, este usará as opcións predeterminadas,\n" "e non se ha gardar ningún cambio que se faga nas preferencias." -#: ../src/inkscape.cpp:903 ../src/preferences.cpp:56 +#: ../src/inkscape.cpp:903 +#: ../src/preferences.cpp:56 #, c-format msgid "" "%s is not a regular file.\n" "%s" msgstr "" +"%s non é un ficheiro normal.\n" +"%s" -#: ../src/inkscape.cpp:904 ../src/preferences.cpp:57 +#: ../src/inkscape.cpp:904 +#: ../src/preferences.cpp:57 #, c-format msgid "" "%s not a valid XML file, or\n" @@ -5317,85 +5287,89 @@ msgid "Show or hide the statusbar (at the bottom of the window)" msgstr "Amosar ou agochar a barra de estado (no fondo da ventá)" #: ../src/interface.cpp:904 -#, c-format +#, fuzzy, c-format msgid "Verb \"%s\" Unknown" -msgstr "" +msgstr "Aplicouse un efecto descoñecido" #. TRANSLATORS: #%s is the id of the group e.g. , not a number. #: ../src/interface.cpp:1023 -#, c-format +#, fuzzy, c-format msgid "Enter group #%s" -msgstr "" +msgstr " no grupo %s (%s)" #: ../src/interface.cpp:1034 +#, fuzzy msgid "Go to parent" -msgstr "" +msgstr "Obxecto a camiño" -#: ../src/interface.cpp:1125 ../src/interface.cpp:1210 +#: ../src/interface.cpp:1125 +#: ../src/interface.cpp:1210 #: ../src/ui/widget/selected-style.cpp:466 #, fuzzy msgid "Drop color" -msgstr "Copiar cor" +msgstr "Cor inicial:" #: ../src/interface.cpp:1164 #, fuzzy msgid "Drop color on gradient" -msgstr "O degradado non ten fases" +msgstr "Establecer degradado no trazo" #: ../src/interface.cpp:1223 msgid "Could not parse SVG data" msgstr "Non se puideron analizar os datos SVG" #: ../src/interface.cpp:1265 +#, fuzzy msgid "Drop SVG" -msgstr "" +msgstr "Entrada de SVG" #: ../src/interface.cpp:1323 #, fuzzy msgid "Drop bitmap image" -msgstr "Importar mapas de bits coma " +msgstr "image/svg+xml" #: ../src/interface.cpp:1415 #, c-format msgid "" -"A file named \"%s\" already exists. Do " -"you want to replace it?\n" +"A file named \"%s\" already exists. Do you want to replace it?\n" "\n" "The file already exists in \"%s\". Replacing it will overwrite its contents." msgstr "" #: ../src/interface.cpp:1422 msgid "Replace" -msgstr "" +msgstr "Substituír" -#: ../src/io/sys.cpp:411 ../src/io/sys.cpp:419 +#: ../src/io/sys.cpp:411 +#: ../src/io/sys.cpp:419 #, c-format msgid "Failed to read from child pipe (%s)" msgstr "" #: ../src/io/sys.cpp:443 -#, fuzzy, c-format +#, c-format msgid "Failed to change to directory '%s' (%s)" -msgstr "" -"Non se puido crear o directorio %s.\n" -"%s" +msgstr "Fallo ó cambiar ó directorio '%s' (%s)" -#: ../src/io/sys.cpp:449 ../src/io/sys.cpp:675 -#, fuzzy, c-format +#: ../src/io/sys.cpp:449 +#: ../src/io/sys.cpp:675 +#, c-format msgid "Failed to execute child process (%s)" -msgstr "Erro ó cargar o ficheiro solicitado %s" +msgstr "Fallo ó executar o proceso fillo (%s)" #: ../src/io/sys.cpp:622 #, c-format msgid "Invalid program name: %s" -msgstr "" +msgstr "Nome de programa incorrecto: %s" -#: ../src/io/sys.cpp:632 ../src/io/sys.cpp:921 +#: ../src/io/sys.cpp:632 +#: ../src/io/sys.cpp:921 #, c-format msgid "Invalid string in argument vector at %d: %s" msgstr "" -#: ../src/io/sys.cpp:643 ../src/io/sys.cpp:936 +#: ../src/io/sys.cpp:643 +#: ../src/io/sys.cpp:936 #, c-format msgid "Invalid string in environment: %s" msgstr "" @@ -5406,11 +5380,9 @@ msgid "Failed to create pipe for communicating with child process (%s)" msgstr "" #: ../src/io/sys.cpp:917 -#, fuzzy, c-format +#, c-format msgid "Invalid working directory: %s" -msgstr "" -"%s non é un directorio válido.\n" -"%s" +msgstr "Directorio de traballo incorrecto: %s" #: ../src/io/sys.cpp:985 #, c-format @@ -5419,8 +5391,11 @@ msgstr "" #: ../src/jabber_whiteboard/invitation-confirm-dialog.cpp:26 #: ../src/jabber_whiteboard/session-file-selector.cpp:24 +#, fuzzy msgid "_Write session file:" msgstr "" +"Non se puido escribir o ficheiro %s.\n" +"%s" #: ../src/jabber_whiteboard/pedrogui.cpp:2630 msgid "Shared SVG whiteboard tool." @@ -5431,12 +5406,13 @@ msgid "Based on the Pedro XMPP client" msgstr "" #: ../src/jabber_whiteboard/session-file-selector.cpp:60 +#, fuzzy msgid "Select a location and filename" -msgstr "" +msgstr "Seleccione un nome de ficheiro para exportar" #: ../src/jabber_whiteboard/session-file-selector.cpp:62 msgid "Set filename" -msgstr "" +msgstr "Definir un nome de ficheiro" #: ../src/jabber_whiteboard/session-manager.cpp:308 msgid "%1 has invited you to a whiteboard session." @@ -5451,26 +5427,26 @@ msgid "Accept invitation" msgstr "Aceptar a invitación" #: ../src/jabber_whiteboard/session-manager.cpp:315 +#, fuzzy msgid "Decline invitation" -msgstr "" +msgstr "Aceptar a invitación" #: ../src/jabber_whiteboard/session-manager.cpp:370 +#, fuzzy msgid "Inkboard session (%1 to %2)" -msgstr "" +msgstr "Obxecto a camiño" #: ../src/knot.cpp:430 msgid "Node or handle drag canceled." msgstr "Cancelouse o arrastre dun nodo ou dunha asa." #: ../src/knotholder.cpp:132 -#, fuzzy msgid "Change handle" -msgstr "Crear rectángulo" +msgstr "Cambiar a asa" #: ../src/knotholder.cpp:207 -#, fuzzy msgid "Move handle" -msgstr "Movemento cancelado." +msgstr "Mover a asa" #. TRANSLATORS: This refers to the pattern that's inside the object #: ../src/knotholder.cpp:228 @@ -5478,8 +5454,9 @@ msgid "Move the pattern fill inside the object" msgstr "" #: ../src/knotholder.cpp:231 +#, fuzzy msgid "Scale the pattern fill uniformly" -msgstr "" +msgstr "Extraer obxectos dun recheo de patrón en mosaico" #: ../src/knotholder.cpp:234 msgid "Rotate the pattern fill; with Ctrl to snap angle" @@ -5497,13 +5474,14 @@ msgstr "" #: ../src/libgdl/gdl-dock-bar.c:116 #, fuzzy msgid "Dockbar style" -msgstr "E_stilo do trazo" +msgstr "Pegar estilo" #: ../src/libgdl/gdl-dock-bar.c:117 msgid "Dockbar style to show items on it" msgstr "" -#: ../src/libgdl/gdl-dock.c:175 ../src/ui/dialog/inkscape-preferences.cpp:496 +#: ../src/libgdl/gdl-dock.c:175 +#: ../src/ui/dialog/inkscape-preferences.cpp:496 #: ../src/ui/dialog/inkscape-preferences.cpp:517 #, fuzzy msgid "Floating" @@ -5513,10 +5491,11 @@ msgstr "Relación" msgid "Whether the dock is floating in its own window" msgstr "" -#: ../src/libgdl/gdl-dock.c:183 ../src/libgdl/gdl-dock-master.c:144 +#: ../src/libgdl/gdl-dock.c:183 +#: ../src/libgdl/gdl-dock-master.c:144 #, fuzzy msgid "Default title" -msgstr "_Unidades predeterminadas:" +msgstr "default.svg" #: ../src/libgdl/gdl-dock.c:184 msgid "Default title for the newly created floating docks" @@ -5556,9 +5535,8 @@ msgid "Dock #%d" msgstr "" #: ../src/libgdl/gdl-dock-item.c:287 -#, fuzzy msgid "Orientation" -msgstr "Orientación da páxina:" +msgstr "Orientación" #: ../src/libgdl/gdl-dock-item.c:288 msgid "Orientation of the docking item" @@ -5574,36 +5552,32 @@ msgstr "" #: ../src/libgdl/gdl-dock-item.c:311 msgid "Item behavior" -msgstr "" +msgstr "Comportamento do elemento" #: ../src/libgdl/gdl-dock-item.c:312 -msgid "" -"General behavior for the dock item (i.e. whether it can float, if it's " -"locked, etc.)" +msgid "General behavior for the dock item (i.e. whether it can float, if it's locked, etc.)" msgstr "" -#: ../src/libgdl/gdl-dock-item.c:320 ../src/libgdl/gdl-dock-master.c:151 -#, fuzzy +#: ../src/libgdl/gdl-dock-item.c:320 +#: ../src/libgdl/gdl-dock-master.c:151 msgid "Locked" -msgstr "Bl_oquear" +msgstr "Bloqueado" #: ../src/libgdl/gdl-dock-item.c:321 -msgid "" -"If set, the dock item cannot be dragged around and it doesn't show a grip" +msgid "If set, the dock item cannot be dragged around and it doesn't show a grip" msgstr "" #: ../src/libgdl/gdl-dock-item.c:329 msgid "Preferred width" -msgstr "" +msgstr "Ancho preferido" #: ../src/libgdl/gdl-dock-item.c:330 msgid "Preferred width for the dock item" msgstr "" #: ../src/libgdl/gdl-dock-item.c:336 -#, fuzzy msgid "Preferred height" -msgstr "Alto:" +msgstr "Alto preferido" #: ../src/libgdl/gdl-dock-item.c:337 msgid "Preferred height for the dock item" @@ -5611,40 +5585,34 @@ msgstr "" #: ../src/libgdl/gdl-dock-item.c:616 #, c-format -msgid "" -"You can't add a dock object (%p of type %s) inside a %s. Use a GdlDock or " -"some other compound dock object." +msgid "You can't add a dock object (%p of type %s) inside a %s. Use a GdlDock or some other compound dock object." msgstr "" #: ../src/libgdl/gdl-dock-item.c:623 #, c-format -msgid "" -"Attempting to add a widget with type %s to a %s, but it can only contain one " -"widget at a time; it already contains a widget of type %s" +msgid "Attempting to add a widget with type %s to a %s, but it can only contain one widget at a time; it already contains a widget of type %s" msgstr "" -#: ../src/libgdl/gdl-dock-item.c:1345 ../src/libgdl/gdl-dock-item.c:1390 +#: ../src/libgdl/gdl-dock-item.c:1345 +#: ../src/libgdl/gdl-dock-item.c:1390 #, c-format msgid "Unsupported docking strategy %s in dock object of type %s" msgstr "" #. UnLock menuitem #: ../src/libgdl/gdl-dock-item.c:1479 -#, fuzzy msgid "UnLock" -msgstr "Bl_oquear" +msgstr "Desbloquear" #. Hide menuitem. #: ../src/libgdl/gdl-dock-item.c:1486 -#, fuzzy msgid "Hide" -msgstr "_Agochar" +msgstr "Agochar" #. Lock menuitem #: ../src/libgdl/gdl-dock-item.c:1491 -#, fuzzy msgid "Lock" -msgstr "Bl_oquear" +msgstr "Bloquear" #: ../src/libgdl/gdl-dock-item.c:1717 #, c-format @@ -5656,13 +5624,13 @@ msgid "Iconify" msgstr "" #: ../src/libgdl/gdl-dock-item-grip.c:395 +#, fuzzy msgid "Iconify this dock" -msgstr "" +msgstr "O propio estilo desta ferramenta:" #: ../src/libgdl/gdl-dock-item-grip.c:397 -#, fuzzy msgid "Close" -msgstr "Pe_char" +msgstr "Pechar" #: ../src/libgdl/gdl-dock-item-grip.c:397 #, fuzzy @@ -5683,20 +5651,20 @@ msgid "Default title for newly created floating docks" msgstr "" #: ../src/libgdl/gdl-dock-master.c:152 -msgid "" -"If is set to 1, all the dock items bound to the master are locked; if it's " -"0, all are unlocked; -1 indicates inconsistency among the items" +msgid "If is set to 1, all the dock items bound to the master are locked; if it's 0, all are unlocked; -1 indicates inconsistency among the items" msgstr "" -#: ../src/libgdl/gdl-dock-master.c:160 ../src/libgdl/gdl-switcher.c:707 +#: ../src/libgdl/gdl-dock-master.c:160 +#: ../src/libgdl/gdl-switcher.c:707 #, fuzzy msgid "Switcher Style" -msgstr "Pegar E_stilo" +msgstr "Pegar estilo" -#: ../src/libgdl/gdl-dock-master.c:161 ../src/libgdl/gdl-switcher.c:708 +#: ../src/libgdl/gdl-dock-master.c:161 +#: ../src/libgdl/gdl-switcher.c:708 #, fuzzy msgid "Switcher buttons style" -msgstr "Moveuse á seguinte capa." +msgstr "Establecer o estilo do trazo" #: ../src/libgdl/gdl-dock-master.c:168 #, fuzzy @@ -5704,23 +5672,17 @@ msgid "Expand direction" msgstr "Espaciado de liñas:" #: ../src/libgdl/gdl-dock-master.c:169 -msgid "" -"Allow the master's dock items to expand their container dock objects in the " -"given direction" +msgid "Allow the master's dock items to expand their container dock objects in the given direction" msgstr "" #: ../src/libgdl/gdl-dock-master.c:796 #, c-format -msgid "" -"master %p: unable to add object %p[%s] to the hash. There already is an " -"item with that name (%p)." +msgid "master %p: unable to add object %p[%s] to the hash. There already is an item with that name (%p)." msgstr "" #: ../src/libgdl/gdl-dock-master.c:969 #, c-format -msgid "" -"The new dock controller %p is automatic. Only manual dock objects should be " -"named controller." +msgid "The new dock controller %p is automatic. Only manual dock objects should be named controller." msgstr "" #: ../src/libgdl/gdl-dock-notebook.c:134 @@ -5734,21 +5696,20 @@ msgstr "Páxina" #: ../src/libgdl/gdl-dock-notebook.c:135 #, fuzzy msgid "The index of the current page" -msgstr "Renomear a capa actual" +msgstr "Amosa-lo _bordo da páxina" -#: ../src/libgdl/gdl-dock-object.c:120 ../src/ui/widget/page-sizer.cpp:198 -#, fuzzy +#: ../src/libgdl/gdl-dock-object.c:120 +#: ../src/ui/widget/page-sizer.cpp:198 msgid "Name" -msgstr "Nome:" +msgstr "Nome" #: ../src/libgdl/gdl-dock-object.c:121 msgid "Unique name for identifying the dock object" msgstr "" #: ../src/libgdl/gdl-dock-object.c:128 -#, fuzzy msgid "Long name" -msgstr "Nome da capa:" +msgstr "Nome longo" #: ../src/libgdl/gdl-dock-object.c:129 msgid "Human readable name for the dock object" @@ -5781,16 +5742,12 @@ msgstr "" #: ../src/libgdl/gdl-dock-object.c:434 #, c-format -msgid "" -"Call to gdl_dock_object_dock in a dock object %p (object type is %s) which " -"hasn't implemented this method" +msgid "Call to gdl_dock_object_dock in a dock object %p (object type is %s) which hasn't implemented this method" msgstr "" #: ../src/libgdl/gdl-dock-object.c:563 #, c-format -msgid "" -"Dock operation requested in a non-bound object %p. The application might " -"crash" +msgid "Dock operation requested in a non-bound object %p. The application might crash" msgstr "" #: ../src/libgdl/gdl-dock-object.c:570 @@ -5800,14 +5757,12 @@ msgstr "" #: ../src/libgdl/gdl-dock-object.c:612 #, c-format -msgid "" -"Attempt to bind to %p an already bound dock object %p (current master: %p)" +msgid "Attempt to bind to %p an already bound dock object %p (current master: %p)" msgstr "" #: ../src/libgdl/gdl-dock-paned.c:132 -#, fuzzy msgid "Position" -msgstr "Posición:" +msgstr "Posición" #: ../src/libgdl/gdl-dock-paned.c:133 msgid "Position of the divider in pixels" @@ -5819,9 +5774,7 @@ msgid "Sticky" msgstr "diminuta" #: ../src/libgdl/gdl-dock-placeholder.c:144 -msgid "" -"Whether the placeholder will stick to its host or move up the hierarchy when " -"the host is redocked" +msgid "Whether the placeholder will stick to its host or move up the hierarchy when the host is redocked" msgstr "" #: ../src/libgdl/gdl-dock-placeholder.c:151 @@ -5835,12 +5788,10 @@ msgstr "" #: ../src/libgdl/gdl-dock-placeholder.c:159 #, fuzzy msgid "Next placement" -msgstr "Novo nodo" +msgstr "Seleccionar Seguinte" #: ../src/libgdl/gdl-dock-placeholder.c:160 -msgid "" -"The position an item will be docked to our host if a request is made to dock " -"to us" +msgid "The position an item will be docked to our host if a request is made to dock to us" msgstr "" #: ../src/libgdl/gdl-dock-placeholder.c:170 @@ -5863,7 +5814,7 @@ msgstr "" #: ../src/libgdl/gdl-dock-placeholder.c:191 #, fuzzy msgid "X-Coordinate" -msgstr "Coordenadas do cursor" +msgstr "Coordenada X:" #: ../src/libgdl/gdl-dock-placeholder.c:192 #, fuzzy @@ -5873,7 +5824,7 @@ msgstr "Coordenada X da orixe da reixa" #: ../src/libgdl/gdl-dock-placeholder.c:198 #, fuzzy msgid "Y-Coordinate" -msgstr "Coordenadas do cursor" +msgstr "Coordenada X:" #: ../src/libgdl/gdl-dock-placeholder.c:199 #, fuzzy @@ -5891,9 +5842,7 @@ msgstr "" #: ../src/libgdl/gdl-dock-placeholder.c:643 #, c-format -msgid "" -"Something weird happened while getting the child placement for %p from " -"parent %p" +msgid "Something weird happened while getting the child placement for %p from parent %p" msgstr "" #: ../src/libgdl/gdl-dock-tablabel.c:129 @@ -5913,13 +5862,13 @@ msgstr "Azul" #: ../src/live_effects/effect.cpp:69 #, fuzzy msgid "Pattern Along Path" -msgstr "_Poñer no camiño" +msgstr "O camiño está pechado." #. for historic reasons, this effect is called skeletal(strokes) in Inkscape:SVG #: ../src/live_effects/effect.cpp:70 #, fuzzy msgid "Sketch" -msgstr "Establecer" +msgstr "Entrada de Sketch" #: ../src/live_effects/effect.cpp:71 msgid "VonKoch" @@ -5939,17 +5888,19 @@ msgid "Gears" msgstr "_Limpar" #: ../src/live_effects/effect.cpp:77 +#, fuzzy msgid "Stitch Sub-Paths" -msgstr "" +msgstr "Converter textos en camiños" #: ../src/live_effects/effect.cpp:78 +#, fuzzy msgid "Circle (center+radius)" -msgstr "" +msgstr "Mover o centro a %s, %s" #: ../src/live_effects/effect.cpp:79 #, fuzzy msgid "Perspective path" -msgstr "Presencia" +msgstr "Pechando o camiño." #: ../src/live_effects/effect.cpp:80 msgid "Spiro spline" @@ -5958,17 +5909,17 @@ msgstr "" #: ../src/live_effects/effect.cpp:81 #, fuzzy msgid "Lattice Deformation" -msgstr "Información" +msgstr "Tipo de deformación:" #: ../src/live_effects/effect.cpp:82 #, fuzzy msgid "Envelope Deformation" -msgstr "Información" +msgstr "Tipo de deformación:" #: ../src/live_effects/effect.cpp:83 #, fuzzy msgid "Construct grid" -msgstr "Contribuíntes" +msgstr "Reixa rectangular" #: ../src/live_effects/effect.cpp:84 msgid "Perpendicular bisector" @@ -5977,7 +5928,7 @@ msgstr "" #: ../src/live_effects/effect.cpp:85 #, fuzzy msgid "Tangent to curve" -msgstr "Desprazamento Vertical" +msgstr "Obxecto a camiño" #: ../src/live_effects/effect.cpp:86 #, fuzzy @@ -5985,25 +5936,20 @@ msgid "Mirror reflection" msgstr "PM: reflexo" #: ../src/live_effects/effect.cpp:178 -#, fuzzy msgid "Create and apply path effect" -msgstr "Crear novos obxectos con:" +msgstr "Crear e aplicar efecto de camiño" #: ../src/live_effects/effect.cpp:189 -#, fuzzy msgid "Is visible?" -msgstr "Visible" +msgstr "É visible?" #: ../src/live_effects/effect.cpp:189 -msgid "" -"If unchecked, the effect remains applied to the object but is temporarily " -"disabled on canvas" +msgid "If unchecked, the effect remains applied to the object but is temporarily disabled on canvas" msgstr "" #: ../src/live_effects/effect.cpp:207 -#, fuzzy msgid "No effect" -msgstr "Desprazamento Horizontal" +msgstr "Sen efectos" #: ../src/live_effects/effect.cpp:254 #, c-format @@ -6015,9 +5961,9 @@ msgid "An exception occurred during execution of the Path Effect." msgstr "" #: ../src/live_effects/effect.cpp:512 -#, fuzzy, c-format +#, c-format msgid "Editing parameter %s." -msgstr "Rectángulo" +msgstr "Editando o parámetro %s." #: ../src/live_effects/effect.cpp:517 msgid "None of the applied path effect's parameters can be edited on-canvas." @@ -6026,7 +5972,7 @@ msgstr "" #: ../src/live_effects/lpe-bendpath.cpp:57 #, fuzzy msgid "Bend path" -msgstr "_Romper aparte ou fragmentar" +msgstr "Pechando o camiño." #: ../src/live_effects/lpe-bendpath.cpp:57 msgid "Path along which to bend the original path" @@ -6035,13 +5981,13 @@ msgstr "" #: ../src/live_effects/lpe-bendpath.cpp:58 #, fuzzy msgid "Width of the path" -msgstr "Ancho do papel" +msgstr "Pechando o camiño." #: ../src/live_effects/lpe-bendpath.cpp:59 #: ../src/live_effects/lpe-patternalongpath.cpp:65 #, fuzzy msgid "Width in units of length" -msgstr "Ancho en píxels da área desenfocada" +msgstr "Ancho en unidades de lonxitude" #: ../src/live_effects/lpe-bendpath.cpp:59 #, fuzzy @@ -6051,25 +5997,23 @@ msgstr "Ancho en píxels da área desenfocada" #: ../src/live_effects/lpe-bendpath.cpp:60 #, fuzzy msgid "Original path is vertical" -msgstr "Desprazamento do patrón" +msgstr "O elemento non é nin unha figura nin un camiño" #: ../src/live_effects/lpe-bendpath.cpp:60 msgid "Rotates the original 90 degrees, before bending it along the bend path" msgstr "" #: ../src/live_effects/lpe-constructgrid.cpp:28 -#, fuzzy msgid "Size X" -msgstr "Tamaño" +msgstr "Tamaño X" #: ../src/live_effects/lpe-constructgrid.cpp:28 msgid "The size of the grid in X direction." msgstr "" #: ../src/live_effects/lpe-constructgrid.cpp:29 -#, fuzzy msgid "Size Y" -msgstr "Tamaño" +msgstr "Tamaño Y" #: ../src/live_effects/lpe-constructgrid.cpp:29 msgid "The size of the grid in Y direction." @@ -6078,16 +6022,15 @@ msgstr "" #: ../src/live_effects/lpe-curvestitch.cpp:42 #, fuzzy msgid "Stitch path" -msgstr "_Pintar o trazo" +msgstr "Pechando o camiño." #: ../src/live_effects/lpe-curvestitch.cpp:42 msgid "The path that will be used as stitch." msgstr "" #: ../src/live_effects/lpe-curvestitch.cpp:43 -#, fuzzy msgid "Number of paths" -msgstr "Número de filas" +msgstr "Número de camiños" #: ../src/live_effects/lpe-curvestitch.cpp:43 msgid "The number of paths that will be generated." @@ -6096,12 +6039,10 @@ msgstr "" #: ../src/live_effects/lpe-curvestitch.cpp:44 #, fuzzy msgid "Start edge variance" -msgstr "Preferencias de Estrela" +msgstr "Detección Óptima de Bordos" #: ../src/live_effects/lpe-curvestitch.cpp:44 -msgid "" -"The amount of random jitter to move the start points of the stitches inside " -"& outside the guide path" +msgid "The amount of random jitter to move the start points of the stitches inside & outside the guide path" msgstr "" #: ../src/live_effects/lpe-curvestitch.cpp:45 @@ -6110,19 +6051,16 @@ msgid "Start spacing variance" msgstr "Saturación" #: ../src/live_effects/lpe-curvestitch.cpp:45 -msgid "" -"The amount of random shifting to move the start points of the stitches back " -"& forth along the guide path" +msgid "The amount of random shifting to move the start points of the stitches back & forth along the guide path" msgstr "" #: ../src/live_effects/lpe-curvestitch.cpp:46 +#, fuzzy msgid "End edge variance" -msgstr "" +msgstr "Detección Óptima de Bordos" #: ../src/live_effects/lpe-curvestitch.cpp:46 -msgid "" -"The amount of randomness that moves the end points of the stitches inside & " -"outside the guide path" +msgid "The amount of randomness that moves the end points of the stitches inside & outside the guide path" msgstr "" #: ../src/live_effects/lpe-curvestitch.cpp:47 @@ -6131,9 +6069,7 @@ msgid "End spacing variance" msgstr "Saturación" #: ../src/live_effects/lpe-curvestitch.cpp:47 -msgid "" -"The amount of random shifting to move the end points of the stitches back & " -"forth along the guide path" +msgid "The amount of random shifting to move the end points of the stitches back & forth along the guide path" msgstr "" #: ../src/live_effects/lpe-curvestitch.cpp:48 @@ -6159,7 +6095,7 @@ msgstr "Ancho en píxels da área desenfocada" #: ../src/live_effects/lpe-envelope.cpp:36 #, fuzzy msgid "Top bend path" -msgstr "_Romper aparte ou fragmentar" +msgstr "O camiño está pechado." #: ../src/live_effects/lpe-envelope.cpp:36 msgid "Top path along which to bend the original path" @@ -6168,7 +6104,7 @@ msgstr "" #: ../src/live_effects/lpe-envelope.cpp:37 #, fuzzy msgid "Right bend path" -msgstr "_Romper aparte ou fragmentar" +msgstr "O camiño está pechado." #: ../src/live_effects/lpe-envelope.cpp:37 msgid "Right path along which to bend the original path" @@ -6177,7 +6113,7 @@ msgstr "" #: ../src/live_effects/lpe-envelope.cpp:38 #, fuzzy msgid "Bottom bend path" -msgstr "_Romper aparte ou fragmentar" +msgstr "Cortar o camiño inferior en anacos" #: ../src/live_effects/lpe-envelope.cpp:38 msgid "Bottom path along which to bend the original path" @@ -6186,7 +6122,7 @@ msgstr "" #: ../src/live_effects/lpe-envelope.cpp:39 #, fuzzy msgid "Left bend path" -msgstr "_Romper aparte ou fragmentar" +msgstr "O camiño está pechado." #: ../src/live_effects/lpe-envelope.cpp:39 msgid "Left path along which to bend the original path" @@ -6210,30 +6146,26 @@ msgid "Enable the top and bottom deformation paths" msgstr "" #: ../src/live_effects/lpe-gears.cpp:212 -#, fuzzy msgid "Teeth" -msgstr "Texto" +msgstr "Dentes" #: ../src/live_effects/lpe-gears.cpp:212 -#, fuzzy msgid "The number of teeth" -msgstr "Número de Niveis" +msgstr "O número de dentes" #: ../src/live_effects/lpe-gears.cpp:213 msgid "Phi" msgstr "" #: ../src/live_effects/lpe-gears.cpp:213 -msgid "" -"Tooth pressure angle (typically 20-25 deg). The ratio of teeth not in " -"contact." +msgid "Tooth pressure angle (typically 20-25 deg). The ratio of teeth not in contact." msgstr "" #. initialise your parameters here: #: ../src/live_effects/lpe-knot.cpp:27 #, fuzzy msgid "Gap width" -msgstr "Igual ancho" +msgstr "Ancho, alto:" #: ../src/live_effects/lpe-knot.cpp:27 msgid "The width of the gap in the path where it self-intersects" @@ -6243,7 +6175,7 @@ msgstr "" #: ../src/live_effects/lpe-lattice.cpp:45 #, fuzzy msgid "Control handle 0" -msgstr "Crear rectángulo" +msgstr "Controlar de xeito preciso as transformacións dos obxectos" #: ../src/live_effects/lpe-lattice.cpp:45 #: ../src/live_effects/lpe-lattice.cpp:46 @@ -6267,82 +6199,82 @@ msgstr "" #: ../src/live_effects/lpe-lattice.cpp:46 #, fuzzy msgid "Control handle 1" -msgstr "Crear rectángulo" +msgstr "Controlar de xeito preciso as transformacións dos obxectos" #: ../src/live_effects/lpe-lattice.cpp:47 #, fuzzy msgid "Control handle 2" -msgstr "Crear rectángulo" +msgstr "Controlar de xeito preciso as transformacións dos obxectos" #: ../src/live_effects/lpe-lattice.cpp:48 #, fuzzy msgid "Control handle 3" -msgstr "Crear rectángulo" +msgstr "Controlar de xeito preciso as transformacións dos obxectos" #: ../src/live_effects/lpe-lattice.cpp:49 #, fuzzy msgid "Control handle 4" -msgstr "Crear rectángulo" +msgstr "Controlar de xeito preciso as transformacións dos obxectos" #: ../src/live_effects/lpe-lattice.cpp:50 #, fuzzy msgid "Control handle 5" -msgstr "Crear rectángulo" +msgstr "Controlar de xeito preciso as transformacións dos obxectos" #: ../src/live_effects/lpe-lattice.cpp:51 #, fuzzy msgid "Control handle 6" -msgstr "Crear rectángulo" +msgstr "Controlar de xeito preciso as transformacións dos obxectos" #: ../src/live_effects/lpe-lattice.cpp:52 #, fuzzy msgid "Control handle 7" -msgstr "Crear rectángulo" +msgstr "Controlar de xeito preciso as transformacións dos obxectos" #: ../src/live_effects/lpe-lattice.cpp:53 #, fuzzy msgid "Control handle 8" -msgstr "Crear rectángulo" +msgstr "Controlar de xeito preciso as transformacións dos obxectos" #: ../src/live_effects/lpe-lattice.cpp:54 #, fuzzy msgid "Control handle 9" -msgstr "Crear rectángulo" +msgstr "Controlar de xeito preciso as transformacións dos obxectos" #: ../src/live_effects/lpe-lattice.cpp:55 #, fuzzy msgid "Control handle 10" -msgstr "Crear rectángulo" +msgstr "Controlar de xeito preciso as transformacións dos obxectos" #: ../src/live_effects/lpe-lattice.cpp:56 #, fuzzy msgid "Control handle 11" -msgstr "Crear rectángulo" +msgstr "Controlar de xeito preciso as transformacións dos obxectos" #: ../src/live_effects/lpe-lattice.cpp:57 #, fuzzy msgid "Control handle 12" -msgstr "Crear rectángulo" +msgstr "Controlar de xeito preciso as transformacións dos obxectos" #: ../src/live_effects/lpe-lattice.cpp:58 #, fuzzy msgid "Control handle 13" -msgstr "Crear rectángulo" +msgstr "Controlar de xeito preciso as transformacións dos obxectos" #: ../src/live_effects/lpe-lattice.cpp:59 #, fuzzy msgid "Control handle 14" -msgstr "Crear rectángulo" +msgstr "Controlar de xeito preciso as transformacións dos obxectos" #: ../src/live_effects/lpe-lattice.cpp:60 #, fuzzy msgid "Control handle 15" -msgstr "Crear rectángulo" +msgstr "Controlar de xeito preciso as transformacións dos obxectos" #: ../src/live_effects/lpe-mirror_reflect.cpp:30 #, fuzzy msgid "Reflection line" -msgstr "Selección" +msgstr "Ancho da Liña" #: ../src/live_effects/lpe-mirror_reflect.cpp:30 msgid "Line which serves as 'mirror' for the reflection" @@ -6361,9 +6293,8 @@ msgstr "" #: ../src/live_effects/lpe-patternalongpath.cpp:55 #: ../share/extensions/pathalongpath.inx.h:8 -#, fuzzy msgid "Repeated" -msgstr "Repetir:" +msgstr "Repetido" #: ../src/live_effects/lpe-patternalongpath.cpp:56 #: ../share/extensions/pathalongpath.inx.h:9 @@ -6373,25 +6304,25 @@ msgstr "" #: ../src/live_effects/lpe-patternalongpath.cpp:62 #, fuzzy msgid "Pattern source" -msgstr "Patrón" +msgstr "Fonte da Imaxe" #: ../src/live_effects/lpe-patternalongpath.cpp:62 +#, fuzzy msgid "Path to put along the skeleton path" -msgstr "" +msgstr "Seleccione un texto e un camiño para poñer o texto no camiño." #: ../src/live_effects/lpe-patternalongpath.cpp:63 #, fuzzy msgid "Pattern copies" -msgstr "Patrón" +msgstr "Copias do patrón:" #: ../src/live_effects/lpe-patternalongpath.cpp:63 msgid "How many pattern copies to place along the skeleton path" msgstr "" #: ../src/live_effects/lpe-patternalongpath.cpp:64 -#, fuzzy msgid "Width of the pattern" -msgstr "Ancho do papel" +msgstr "Ancho do patrón" #: ../src/live_effects/lpe-patternalongpath.cpp:65 msgid "Scale the width of the pattern in units of its length" @@ -6404,9 +6335,7 @@ msgstr "Separación _X:" #: ../src/live_effects/lpe-patternalongpath.cpp:66 #, c-format -msgid "" -"Space between copies of the pattern. Negative values allowed, but are " -"limited to -90% of pattern width." +msgid "Space between copies of the pattern. Negative values allowed, but are limited to -90% of pattern width." msgstr "" #: ../src/live_effects/lpe-patternalongpath.cpp:67 @@ -6414,14 +6343,14 @@ msgstr "" #: ../share/extensions/pathscatter.inx.h:7 #, fuzzy msgid "Normal offset" -msgstr "Desprazamento Horizontal" +msgstr "Desprazamento do patrón" #: ../src/live_effects/lpe-patternalongpath.cpp:68 #: ../share/extensions/pathalongpath.inx.h:15 #: ../share/extensions/pathscatter.inx.h:13 #, fuzzy msgid "Tangential offset" -msgstr "Desprazamento Vertical" +msgstr "Desprazamento do patrón" #: ../src/live_effects/lpe-patternalongpath.cpp:69 #, fuzzy @@ -6429,9 +6358,7 @@ msgid "Offsets in unit of pattern size" msgstr "Obxectos a patrón" #: ../src/live_effects/lpe-patternalongpath.cpp:69 -msgid "" -"Spacing, tangential and normal offset are expressed as a ratio of width/" -"height" +msgid "Spacing, tangential and normal offset are expressed as a ratio of width/height" msgstr "" #: ../src/live_effects/lpe-patternalongpath.cpp:70 @@ -6439,7 +6366,7 @@ msgstr "" #: ../share/extensions/pathscatter.inx.h:9 #, fuzzy msgid "Pattern is vertical" -msgstr "Desprazamento do patrón" +msgstr "O patrón é vertical" #: ../src/live_effects/lpe-patternalongpath.cpp:70 msgid "Rotate pattern 90 deg before applying" @@ -6447,8 +6374,9 @@ msgstr "" #: ../src/live_effects/lpe-perp_bisector.cpp:156 #: ../src/live_effects/lpe-tangent_to_curve.cpp:65 +#, fuzzy msgid "Length left" -msgstr "" +msgstr "Aliñar á esqueda" #: ../src/live_effects/lpe-perp_bisector.cpp:156 msgid "Specifies the left end of the bisector" @@ -6458,7 +6386,7 @@ msgstr "" #: ../src/live_effects/lpe-tangent_to_curve.cpp:66 #, fuzzy msgid "Length right" -msgstr "Aliñar abaixo á dereita" +msgstr "Aliñar á dereita" #: ../src/live_effects/lpe-perp_bisector.cpp:157 #, fuzzy @@ -6479,47 +6407,49 @@ msgstr "Cor" #: ../src/live_effects/lpe-perspective_path.cpp:42 #, fuzzy msgid "Scale x" -msgstr "Esc_ala" +msgstr "E_scalar" #: ../src/live_effects/lpe-perspective_path.cpp:42 +#, fuzzy msgid "Scale factor in x direction" -msgstr "" +msgstr "Escalar as esquinas redondeadas dos rectángulos" #: ../src/live_effects/lpe-perspective_path.cpp:43 #, fuzzy msgid "Scale y" -msgstr "Esc_ala" +msgstr "E_scalar" #: ../src/live_effects/lpe-perspective_path.cpp:43 +#, fuzzy msgid "Scale factor in y direction" -msgstr "" +msgstr "Escalar as esquinas redondeadas dos rectángulos" #: ../src/live_effects/lpe-perspective_path.cpp:44 #, fuzzy msgid "Offset x" -msgstr "Desprazamento:" +msgstr "Desprazamento" #: ../src/live_effects/lpe-perspective_path.cpp:44 +#, fuzzy msgid "Offset in x direction" -msgstr "" +msgstr "Exportando" #: ../src/live_effects/lpe-perspective_path.cpp:45 #, fuzzy msgid "Offset y" -msgstr "Desprazamento:" +msgstr "Desprazamento" #: ../src/live_effects/lpe-perspective_path.cpp:45 +#, fuzzy msgid "Offset in y direction" -msgstr "" +msgstr "Exportando" #: ../src/live_effects/lpe-perspective_path.cpp:46 msgid "Uses XY plane?" msgstr "" #: ../src/live_effects/lpe-perspective_path.cpp:46 -msgid "" -"If true, put the path on the left side of an imaginary box, otherwise on the " -"right side" +msgid "If true, put the path on the left side of an imaginary box, otherwise on the right side" msgstr "" #. initialise your parameters here: @@ -6535,9 +6465,8 @@ msgstr "" #. initialise your parameters here: #. testpointA(_("Test Point A"), _("Test A"), "ptA", &wr, this, Geom::Point(100,100)), #: ../src/live_effects/lpe-sketch.cpp:35 -#, fuzzy msgid "Strokes" -msgstr "Trazo" +msgstr "Trazos" #: ../src/live_effects/lpe-sketch.cpp:35 msgid "Draw that many approximating strokes" @@ -6546,7 +6475,7 @@ msgstr "" #: ../src/live_effects/lpe-sketch.cpp:36 #, fuzzy msgid "Max stroke length" -msgstr "Escalar o ancho do trazado" +msgstr "Establecer a cor do trazo" #: ../src/live_effects/lpe-sketch.cpp:37 msgid "Maximum length of approximating strokes" @@ -6555,7 +6484,7 @@ msgstr "" #: ../src/live_effects/lpe-sketch.cpp:38 #, fuzzy msgid "Stroke length variation" -msgstr "Preferencias de Estrela" +msgstr "Establecer a cor do trazo" #: ../src/live_effects/lpe-sketch.cpp:39 msgid "Random variation of stroke length (relative to maximum length)" @@ -6566,8 +6495,7 @@ msgid "Max. overlap" msgstr "" #: ../src/live_effects/lpe-sketch.cpp:41 -msgid "" -"How much successive strokes should overlap (relative to maximum length)." +msgid "How much successive strokes should overlap (relative to maximum length)." msgstr "" #: ../src/live_effects/lpe-sketch.cpp:42 @@ -6583,15 +6511,13 @@ msgid "Max. end tolerance" msgstr "" #: ../src/live_effects/lpe-sketch.cpp:45 -msgid "" -"Maximum distance between ends of original and approximating paths (relative " -"to maximum length)" +msgid "Maximum distance between ends of original and approximating paths (relative to maximum length)" msgstr "" #: ../src/live_effects/lpe-sketch.cpp:46 #, fuzzy msgid "Parallel offset" -msgstr "Desprazamento Horizontal" +msgstr "Desprazamento do patrón" #: ../src/live_effects/lpe-sketch.cpp:47 msgid "Average distance from approximating path to original path" @@ -6602,8 +6528,9 @@ msgid "Max. tremble" msgstr "" #: ../src/live_effects/lpe-sketch.cpp:49 +#, fuzzy msgid "Maximum tremble magnitude" -msgstr "" +msgstr "Número máximo de documentos recentes:" #: ../src/live_effects/lpe-sketch.cpp:50 msgid "Tremble frequency" @@ -6622,21 +6549,23 @@ msgstr "Centrar as liñas" msgid "How many construction lines (tangents) to draw" msgstr "" -#: ../src/live_effects/lpe-sketch.cpp:54 ../src/selection-chemistry.cpp:1450 -#: ../src/seltrans.cpp:454 ../src/ui/dialog/filter-effects-dialog.cpp:2235 +#: ../src/live_effects/lpe-sketch.cpp:54 +#: ../src/selection-chemistry.cpp:1450 +#: ../src/seltrans.cpp:454 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2235 #: ../src/ui/dialog/transformation.cpp:736 +#, fuzzy msgid "Scale" -msgstr "" +msgstr "E_scalar" #: ../src/live_effects/lpe-sketch.cpp:55 -msgid "" -"Scale factor relating curvature and length of construction lines (try " -"5*offset)" +msgid "Scale factor relating curvature and length of construction lines (try 5*offset)" msgstr "" #: ../src/live_effects/lpe-sketch.cpp:56 +#, fuzzy msgid "Max. length" -msgstr "" +msgstr "Ancho en unidades de lonxitude" #: ../src/live_effects/lpe-sketch.cpp:56 msgid "Maximum length of construction lines" @@ -6645,14 +6574,15 @@ msgstr "" #: ../src/live_effects/lpe-sketch.cpp:57 #, fuzzy msgid "Length variation" -msgstr "Saturación" +msgstr "Ancho en unidades de lonxitude" #: ../src/live_effects/lpe-sketch.cpp:57 msgid "Random variation of the length of construction lines" msgstr "" #: ../src/live_effects/lpe-tangent_to_curve.cpp:63 -#: ../share/extensions/motion.inx.h:1 ../share/extensions/restack.inx.h:1 +#: ../share/extensions/motion.inx.h:1 +#: ../share/extensions/restack.inx.h:1 msgid "Angle" msgstr "Ángulo" @@ -6665,9 +6595,7 @@ msgid "Location along curve" msgstr "" #: ../src/live_effects/lpe-tangent_to_curve.cpp:64 -msgid "" -"Location of the point of attachment along the curve (between 0.0 and number-" -"of-segments)" +msgid "Location of the point of attachment along the curve (between 0.0 and number-of-segments)" msgstr "" #: ../src/live_effects/lpe-tangent_to_curve.cpp:65 @@ -6702,14 +6630,13 @@ msgid "point param" msgstr "Crear espirais" #: ../src/live_effects/lpe-vonkoch.cpp:42 -#, fuzzy msgid "Bounding box" -msgstr "Axustar as caixas de contorno ás g_uías" +msgstr "Caixa de contorno" #: ../src/live_effects/lpe-vonkoch.cpp:43 #, fuzzy msgid "Last gen. segment" -msgstr "Degradado linear" +msgstr "Cambiar o tipo de segmento" #: ../src/live_effects/lpe-vonkoch.cpp:49 #, fuzzy @@ -6723,29 +6650,27 @@ msgstr "" #: ../src/live_effects/lpe-vonkoch.cpp:50 #, fuzzy msgid "Generating path" -msgstr "Creando novo camiño" +msgstr "Pechando o camiño." #: ../src/live_effects/lpe-vonkoch.cpp:50 msgid "Path whos segments define the fractal" msgstr "" #: ../src/live_effects/lpe-vonkoch.cpp:51 +#, fuzzy msgid "Draw all generations" -msgstr "" +msgstr "Buscar tódalas figuras" #: ../src/live_effects/lpe-vonkoch.cpp:51 msgid "If unchecked, draw only the last generation" msgstr "" #: ../src/live_effects/lpe-vonkoch.cpp:52 -#, fuzzy msgid "Reference" -msgstr "_Diferencia" +msgstr "Referencia" #: ../src/live_effects/lpe-vonkoch.cpp:52 -msgid "" -"Generating path segments define transforms in reference to bbox or last " -"segment" +msgid "Generating path segments define transforms in reference to bbox or last segment" msgstr "" #: ../src/live_effects/lpe-vonkoch.cpp:53 @@ -6759,52 +6684,51 @@ msgstr "" #: ../src/live_effects/parameter/bool.cpp:69 #, fuzzy msgid "Change bool parameter" -msgstr "Opacidade principal" +msgstr "Cambiar a definición da cor" #: ../src/live_effects/parameter/enum.h:51 #, fuzzy msgid "Change enumeration parameter" -msgstr "Almacenar a transformación:" +msgstr "Cambiar a definición da cor" #: ../src/live_effects/parameter/parameter.cpp:138 #, fuzzy msgid "Change scalar parameter" -msgstr "Opacidade principal" +msgstr "Cambiar a definición da cor" #: ../src/live_effects/parameter/path.cpp:157 #: ../src/live_effects/parameter/point.cpp:110 +#, fuzzy msgid "Edit on-canvas" -msgstr "" +msgstr "Non hai nada no portarretallos." #: ../src/live_effects/parameter/path.cpp:167 -#, fuzzy msgid "Copy path" -msgstr "Cortar _Camiño" +msgstr "Copiar o camiño" #: ../src/live_effects/parameter/path.cpp:177 -#, fuzzy msgid "Paste path" -msgstr "Pegar A_ncho" +msgstr "Pegar o camiño" #: ../src/live_effects/parameter/path.cpp:187 #, fuzzy msgid "Link to path" -msgstr "Engadir nodos" +msgstr "Obxecto a camiño" #: ../src/live_effects/parameter/path.cpp:363 #, fuzzy msgid "Paste path parameter" -msgstr "Pegar Ancho por Separado" +msgstr "O camiño está pechado." #: ../src/live_effects/parameter/path.cpp:395 #, fuzzy msgid "Link path parameter to path" -msgstr "Pegar Ancho por Separado" +msgstr "Engadindo ó camiño seleccionado" #: ../src/live_effects/parameter/point.cpp:95 #, fuzzy msgid "Change point parameter" -msgstr "Crear espirais" +msgstr "Cambiar a definición da cor" #: ../src/live_effects/parameter/pointparam-knotholder.cpp:134 #, fuzzy @@ -6814,7 +6738,7 @@ msgstr "Crear espirais" #: ../src/live_effects/parameter/random.cpp:137 #, fuzzy msgid "Change random parameter" -msgstr "Almacenar a transformación:" +msgstr "Cambiar a definición da cor" #: ../src/main-cmdlineact.cpp:49 #, c-format @@ -6843,20 +6767,22 @@ msgstr "Tentar usar o servidor X (incluso se $DISPLAY non está establecida)" msgid "Open specified document(s) (option string may be excluded)" msgstr "Abri-lo ficheiro especificado (débese exclui-la cadea de opcion)" -# Rosetta -#: ../src/main.cpp:234 ../src/main.cpp:239 ../src/main.cpp:244 -#: ../src/main.cpp:311 ../src/main.cpp:316 ../src/main.cpp:321 -#: ../src/main.cpp:326 ../src/main.cpp:332 +#: ../src/main.cpp:234 +#: ../src/main.cpp:239 +#: ../src/main.cpp:244 +#: ../src/main.cpp:311 +#: ../src/main.cpp:316 +#: ../src/main.cpp:321 +#: ../src/main.cpp:326 +#: ../src/main.cpp:332 #, fuzzy msgid "FILENAME" -msgstr "NOME DO FICHEIRO" +msgstr "Nome de ficheiro:" #: ../src/main.cpp:238 #, fuzzy msgid "Print document(s) to specified output file (use '| program' for pipe)" -msgstr "" -"Imprimi-los ficheiros ó ficheiro de saida especificado (use '| programa' " -"para canalización)" +msgstr "Imprimi-los ficheiros ó ficheiro de saida especificado (use '| programa' para canalización)" #: ../src/main.cpp:243 msgid "Export document to a PNG file" @@ -6866,19 +6792,19 @@ msgstr "Exporta-lo documento a un ficheiro PNG" msgid "The resolution used for exporting SVG into bitmap (default 90)" msgstr "" -#: ../src/main.cpp:249 ../src/ui/widget/rendering-options.cpp:43 +#: ../src/main.cpp:249 +#: ../src/ui/widget/rendering-options.cpp:43 +#, fuzzy msgid "DPI" -msgstr "" +msgstr "ppp" #: ../src/main.cpp:253 -msgid "" -"Exported area in SVG user units (default is the canvas; 0,0 is lower-left " -"corner)" +msgid "Exported area in SVG user units (default is the canvas; 0,0 is lower-left corner)" msgstr "" #: ../src/main.cpp:254 msgid "x0:y0:x1:y1" -msgstr "" +msgstr "x0:y0:x1:y1" #: ../src/main.cpp:258 msgid "Exported area is the entire drawing (not canvas)" @@ -6889,9 +6815,7 @@ msgid "Exported area is the entire canvas" msgstr "A área de exportación é todo o lenzo" #: ../src/main.cpp:268 -msgid "" -"Snap the bitmap export area outwards to the nearest integer values (in SVG " -"user units)" +msgid "Snap the bitmap export area outwards to the nearest integer values (in SVG user units)" msgstr "" #: ../src/main.cpp:273 @@ -6899,30 +6823,32 @@ msgid "The width of exported bitmap in pixels (overrides export-dpi)" msgstr "" #: ../src/main.cpp:274 +#, fuzzy msgid "WIDTH" -msgstr "" +msgstr "Ancho:" #: ../src/main.cpp:278 msgid "The height of exported bitmap in pixels (overrides export-dpi)" msgstr "" #: ../src/main.cpp:279 +#, fuzzy msgid "HEIGHT" -msgstr "" +msgstr "Alto:" #: ../src/main.cpp:283 msgid "The ID of the object to export" msgstr "O ID do obxecto que se vai exportar" -#: ../src/main.cpp:284 ../src/main.cpp:382 +#: ../src/main.cpp:284 +#: ../src/main.cpp:382 msgid "ID" msgstr "ID" #. TRANSLATORS: this means: "Only export the object whose id is given in --export-id". #. See "man inkscape" for details. #: ../src/main.cpp:290 -msgid "" -"Export just the object with export-id, hide all others (only with export-id)" +msgid "Export just the object with export-id, hide all others (only with export-id)" msgstr "" #: ../src/main.cpp:295 @@ -6934,16 +6860,18 @@ msgid "Background color of exported bitmap (any SVG-supported color string)" msgstr "" #: ../src/main.cpp:301 +#, fuzzy msgid "COLOR" -msgstr "" +msgstr "Cor" #: ../src/main.cpp:305 msgid "Background opacity of exported bitmap (either 0.0 to 1.0, or 1 to 255)" msgstr "" #: ../src/main.cpp:306 +#, fuzzy msgid "VALUE" -msgstr "" +msgstr "Valor" #: ../src/main.cpp:310 #, fuzzy @@ -6965,7 +6893,7 @@ msgstr "Exporta-lo documento a un ficheiro PDF" #: ../src/main.cpp:331 #, fuzzy msgid "Export document to an Enhanced Metafile (EMF) File" -msgstr "Exporta-lo documento a un ficheiro EPS" +msgstr "Exporta-lo documento a un ficheiro Enhanced Metafile (EMF)" #: ../src/main.cpp:337 msgid "Convert text object to paths on export (EPS)" @@ -6981,30 +6909,22 @@ msgstr "" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" #: ../src/main.cpp:353 -msgid "" -"Query the X coordinate of the drawing or, if specified, of the object with --" -"query-id" +msgid "Query the X coordinate of the drawing or, if specified, of the object with --query-id" msgstr "" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" #: ../src/main.cpp:359 -msgid "" -"Query the Y coordinate of the drawing or, if specified, of the object with --" -"query-id" +msgid "Query the Y coordinate of the drawing or, if specified, of the object with --query-id" msgstr "" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" #: ../src/main.cpp:365 -msgid "" -"Query the width of the drawing or, if specified, of the object with --query-" -"id" +msgid "Query the width of the drawing or, if specified, of the object with --query-id" msgstr "" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" #: ../src/main.cpp:371 -msgid "" -"Query the height of the drawing or, if specified, of the object with --query-" -"id" +msgid "Query the height of the drawing or, if specified, of the object with --query-id" msgstr "" #: ../src/main.cpp:376 @@ -7033,16 +6953,18 @@ msgid "Verb to call when Inkscape opens." msgstr "" #: ../src/main.cpp:403 +#, fuzzy msgid "VERB-ID" -msgstr "" +msgstr "O ID é incorrecto!" #: ../src/main.cpp:407 msgid "Object ID to select when Inkscape opens." msgstr "" #: ../src/main.cpp:408 +#, fuzzy msgid "OBJECT-ID" -msgstr "" +msgstr "Establecer o ID do obxecto" #: ../src/main.cpp:687 msgid "" @@ -7062,11 +6984,14 @@ msgstr "_Novo" msgid "Open _Recent" msgstr "Abrir _Recente" -#: ../src/menus-skeleton.h:50 ../src/verbs.cpp:2403 ../src/verbs.cpp:2409 +#: ../src/menus-skeleton.h:50 +#: ../src/verbs.cpp:2403 +#: ../src/verbs.cpp:2409 msgid "_Edit" msgstr "_Editar" -#: ../src/menus-skeleton.h:60 ../src/verbs.cpp:2205 +#: ../src/menus-skeleton.h:60 +#: ../src/verbs.cpp:2205 msgid "Paste Si_ze" msgstr "Pegar Ta_maño" @@ -7115,9 +7040,8 @@ msgid "_Path" msgstr "Ca_miño" #: ../src/menus-skeleton.h:221 -#, fuzzy msgid "Path Effects" -msgstr "Efe_ctos" +msgstr "Efectos de camiño" #: ../src/menus-skeleton.h:227 msgid "_Text" @@ -7140,71 +7064,73 @@ msgid "Tutorials" msgstr "Titoriais" #: ../src/node-context.cpp:255 -msgid "" -"Ctrl: toggle node type, snap handle angle, move hor/vert; Ctrl" -"+Alt: move along handles" +msgid "Ctrl: toggle node type, snap handle angle, move hor/vert; Ctrl+Alt: move along handles" msgstr "" #: ../src/node-context.cpp:256 -msgid "" -"Shift: toggle node selection, disable snapping, rotate both handles" +msgid "Shift: toggle node selection, disable snapping, rotate both handles" msgstr "" #: ../src/node-context.cpp:257 msgid "Alt: lock handle length; Ctrl+Alt: move along handles" msgstr "" -#: ../src/nodepath.cpp:651 ../src/seltrans.cpp:547 +#: ../src/nodepath.cpp:651 +#: ../src/seltrans.cpp:547 msgid "Stamp" msgstr "" -#: ../src/nodepath.cpp:1486 ../src/nodepath.cpp:1513 +#: ../src/nodepath.cpp:1486 +#: ../src/nodepath.cpp:1513 msgid "Move nodes vertically" -msgstr "" +msgstr "Mover os nodos verticalmente" -#: ../src/nodepath.cpp:1488 ../src/nodepath.cpp:1515 +#: ../src/nodepath.cpp:1488 +#: ../src/nodepath.cpp:1515 msgid "Move nodes horizontally" -msgstr "" +msgstr "Mover os nodos horizontalmente" -#: ../src/nodepath.cpp:1490 ../src/nodepath.cpp:1517 ../src/nodepath.cpp:1532 +#: ../src/nodepath.cpp:1490 +#: ../src/nodepath.cpp:1517 +#: ../src/nodepath.cpp:1532 #: ../src/nodepath.cpp:3359 msgid "Move nodes" -msgstr "" +msgstr "Mover os nodos" #: ../src/nodepath.cpp:1570 -msgid "" -"Node handle: drag to shape the curve; with Ctrl to snap angle; " -"with Alt to lock length; with Shift to rotate both handles" +msgid "Node handle: drag to shape the curve; with Ctrl to snap angle; with Alt to lock length; with Shift to rotate both handles" msgstr "" #: ../src/nodepath.cpp:1740 msgid "Align nodes" -msgstr "" +msgstr "Aliñar os nodos" #: ../src/nodepath.cpp:1802 msgid "Distribute nodes" -msgstr "" +msgstr "Distribuír os nodos" #: ../src/nodepath.cpp:1840 msgid "Add nodes" msgstr "Engadir nodos" -#: ../src/nodepath.cpp:1842 ../src/nodepath.cpp:1914 +#: ../src/nodepath.cpp:1842 +#: ../src/nodepath.cpp:1914 msgid "Add node" msgstr "Engadir nodo" #: ../src/nodepath.cpp:1995 #, fuzzy msgid "Break path" -msgstr "_Romper aparte ou fragmentar" +msgstr "Romper o camiño" #: ../src/nodepath.cpp:2051 +#, fuzzy msgid "Close subpath" -msgstr "" +msgstr "Pechar o ficheiro" #: ../src/nodepath.cpp:2112 msgid "Join nodes" -msgstr "" +msgstr "Unir os nodos" #: ../src/nodepath.cpp:2139 msgid "Close subpath by segment" @@ -7212,41 +7138,45 @@ msgstr "" #: ../src/nodepath.cpp:2193 msgid "Join nodes by segment" -msgstr "" +msgstr "Unir os nodos cun segmento" -#: ../src/nodepath.cpp:2206 ../src/nodepath.cpp:2221 +#: ../src/nodepath.cpp:2206 +#: ../src/nodepath.cpp:2221 msgid "To join, you must have two endnodes selected." msgstr "Para unir, debe ter seleccionados dous nodos finais." -#: ../src/nodepath.cpp:2378 ../src/nodepath.cpp:2414 ../src/nodepath.cpp:2418 +#: ../src/nodepath.cpp:2378 +#: ../src/nodepath.cpp:2414 +#: ../src/nodepath.cpp:2418 msgid "Delete nodes" -msgstr "" +msgstr "Eliminar os nodos" #: ../src/nodepath.cpp:2380 msgid "Delete nodes preserving shape" msgstr "" -#: ../src/nodepath.cpp:2437 ../src/nodepath.cpp:2451 -msgid "" -"Select two non-endpoint nodes on a path between which to delete " -"segments." +#: ../src/nodepath.cpp:2437 +#: ../src/nodepath.cpp:2451 +msgid "Select two non-endpoint nodes on a path between which to delete segments." msgstr "" #: ../src/nodepath.cpp:2547 msgid "Cannot find path between nodes." -msgstr "" +msgstr "Non se puido atopar o camiño entre os nodos." -#: ../src/nodepath.cpp:2579 ../src/widgets/toolbox.cpp:1129 +#: ../src/nodepath.cpp:2579 +#: ../src/widgets/toolbox.cpp:1129 msgid "Delete segment" -msgstr "" +msgstr "Eliminar o segmento" #: ../src/nodepath.cpp:2600 msgid "Change segment type" -msgstr "" +msgstr "Cambiar o tipo de segmento" -#: ../src/nodepath.cpp:2617 ../src/nodepath.cpp:3317 +#: ../src/nodepath.cpp:2617 +#: ../src/nodepath.cpp:3317 msgid "Change node type" -msgstr "" +msgstr "Cambiar o tipo de nodo" #: ../src/nodepath.cpp:3605 msgid "Retract handle" @@ -7254,32 +7184,29 @@ msgstr "" #: ../src/nodepath.cpp:3654 msgid "Move node handle" -msgstr "" +msgstr "Mover a asa do nodo" #: ../src/nodepath.cpp:3823 #, c-format -msgid "" -"Node handle: angle %0.2f°, length %s; with Ctrl to snap " -"angle; with Alt to lock length; with Shift to rotate both " -"handles" +msgid "Node handle: angle %0.2f°, length %s; with Ctrl to snap angle; with Alt to lock length; with Shift to rotate both handles" msgstr "" #: ../src/nodepath.cpp:4017 msgid "Rotate nodes" -msgstr "" +msgstr "Rotar os nodos" #: ../src/nodepath.cpp:4148 +#, fuzzy msgid "Scale nodes" -msgstr "" +msgstr "Mover os nodos" #: ../src/nodepath.cpp:4192 +#, fuzzy msgid "Flip nodes" -msgstr "" +msgstr "Inverter os nodos" #: ../src/nodepath.cpp:4361 -msgid "" -"Node: drag to edit the path; with Ctrl to snap to horizontal/" -"vertical; with Ctrl+Alt to snap to handles' directions" +msgid "Node: drag to edit the path; with Ctrl to snap to horizontal/vertical; with Ctrl+Alt to snap to handles' directions" msgstr "" #. TRANSLATORS: "end" is an adjective here (NOT a verb) @@ -7315,30 +7242,22 @@ msgid "both handles retracted (drag with Shift to extend)" msgstr "" #: ../src/nodepath.cpp:4620 -msgid "" -"Drag nodes or node handles; Alt+drag nodes to sculpt; " -"arrow keys to move nodes, < > to scale, [ ] to " -"rotate" +msgid "Drag nodes or node handles; Alt+drag nodes to sculpt; arrow keys to move nodes, < > to scale, [ ] to rotate" msgstr "" #: ../src/nodepath.cpp:4621 msgid "Drag the node or its handles; arrow keys to move the node" -msgstr "" -"Arrastre o nodo ou as súas asas; use as teclas de frecha para " -"mover o nodo" +msgstr "Arrastre o nodo ou as súas asas; use as teclas de frecha para mover o nodo" -#: ../src/nodepath.cpp:4646 ../src/nodepath.cpp:4658 +#: ../src/nodepath.cpp:4646 +#: ../src/nodepath.cpp:4658 msgid "Select a single object to edit its nodes or handles." msgstr "Seleccione un único obxecto para editar os seus nodos ou as súas asas." #: ../src/nodepath.cpp:4650 #, c-format -msgid "" -"0 out of %i node selected. Click, Shift+click, " -"or drag around nodes to select." -msgid_plural "" -"0 out of %i nodes selected. Click, Shift+click, " -"or drag around nodes to select." +msgid "0 out of %i node selected. Click, Shift+click, or drag around nodes to select." +msgid_plural "0 out of %i nodes selected. Click, Shift+click, or drag around nodes to select." msgstr[0] "" msgstr[1] "" @@ -7354,12 +7273,10 @@ msgstr[0] "Seleccionouse %i nodo de %i; %s. %s." msgstr[1] "Seleccionaronse %i nodo de %i; %s. %s." #: ../src/nodepath.cpp:4671 -#, c-format -msgid "" -"%i of %i node selected in %i of %i subpaths. %s." -msgid_plural "" -"%i of %i nodes selected in %i of %i subpaths. %s." -msgstr[0] "" +#, fuzzy, c-format +msgid "%i of %i node selected in %i of %i subpaths. %s." +msgid_plural "%i of %i nodes selected in %i of %i subpaths. %s." +msgstr[0] "Romper os camiños seleccionados en subcamiños" msgstr[1] "" #: ../src/nodepath.cpp:4677 @@ -7370,37 +7287,31 @@ msgstr[0] "Seleccionouse %i nodo de %i. %s." msgstr[1] "Seleccionaronse %i nodos de %i. %s." #: ../src/object-edit.cpp:420 -msgid "" -"Adjust the horizontal rounding radius; with Ctrl to make the " -"vertical radius the same" +msgid "Adjust the horizontal rounding radius; with Ctrl to make the vertical radius the same" msgstr "" #: ../src/object-edit.cpp:424 -msgid "" -"Adjust the vertical rounding radius; with Ctrl to make the " -"horizontal radius the same" +msgid "Adjust the vertical rounding radius; with Ctrl to make the horizontal radius the same" msgstr "" -#: ../src/object-edit.cpp:428 ../src/object-edit.cpp:432 +#: ../src/object-edit.cpp:428 +#: ../src/object-edit.cpp:432 #, fuzzy -msgid "" -"Adjust the width and height of the rectangle; with Ctrlto lock " -"ratio or stretch in one dimension only" -msgstr "" -"Axusta o ancho e o alto do rectángulo; con Ctrl para bloquear" +msgid "Adjust the width and height of the rectangle; with Ctrlto lock ratio or stretch in one dimension only" +msgstr "Axusta o ancho e o alto do rectángulo; con Ctrl para bloquear" -#: ../src/object-edit.cpp:666 ../src/object-edit.cpp:669 -#: ../src/object-edit.cpp:672 ../src/object-edit.cpp:675 -msgid "" -"Resize box in X/Y direction; with Shift along the Z axis; with " -"Ctrl to constrain to the directions of edges or diagonals" +#: ../src/object-edit.cpp:666 +#: ../src/object-edit.cpp:669 +#: ../src/object-edit.cpp:672 +#: ../src/object-edit.cpp:675 +msgid "Resize box in X/Y direction; with Shift along the Z axis; with Ctrl to constrain to the directions of edges or diagonals" msgstr "" -#: ../src/object-edit.cpp:678 ../src/object-edit.cpp:681 -#: ../src/object-edit.cpp:684 ../src/object-edit.cpp:687 -msgid "" -"Resize box along the Z axis; with Shift in X/Y direction; with " -"Ctrl to constrain to the directions of edges or diagonals" +#: ../src/object-edit.cpp:678 +#: ../src/object-edit.cpp:681 +#: ../src/object-edit.cpp:684 +#: ../src/object-edit.cpp:687 +msgid "Resize box along the Z axis; with Shift in X/Y direction; with Ctrl to constrain to the directions of edges or diagonals" msgstr "" #: ../src/object-edit.cpp:690 @@ -7409,56 +7320,40 @@ msgstr "" #: ../src/object-edit.cpp:908 msgid "Adjust ellipse width, with Ctrl to make circle" -msgstr "" -"Modificar o ancho da elipse, con Ctrl para facer un círculo" +msgstr "Modificar o ancho da elipse, con Ctrl para facer un círculo" #: ../src/object-edit.cpp:911 msgid "Adjust ellipse height, with Ctrl to make circle" -msgstr "" -"Modificar o alto da elipse, con Ctrl para facer un círculo" +msgstr "Modificar o alto da elipse, con Ctrl para facer un círculo" #: ../src/object-edit.cpp:914 -msgid "" -"Position the start point of the arc or segment; with Ctrlto " -"snap angle; drag inside the ellipse for arc, outside for " -"segment" +msgid "Position the start point of the arc or segment; with Ctrlto snap angle; drag inside the ellipse for arc, outside for segment" msgstr "" #: ../src/object-edit.cpp:918 -msgid "" -"Position the end point of the arc or segment; with Ctrl to " -"snap angle; drag inside the ellipse for arc, outside for " -"segment" +msgid "Position the end point of the arc or segment; with Ctrl to snap angle; drag inside the ellipse for arc, outside for segment" msgstr "" #: ../src/object-edit.cpp:1057 -msgid "" -"Adjust the tip radius of the star or polygon; with Shift to " -"round; with Alt to randomize" +msgid "Adjust the tip radius of the star or polygon; with Shift to round; with Alt to randomize" msgstr "" #: ../src/object-edit.cpp:1064 -msgid "" -"Adjust the base radius of the star; with Ctrl to keep star " -"rays radial (no skew); with Shift to round; with Alt to " -"randomize" +msgid "Adjust the base radius of the star; with Ctrl to keep star rays radial (no skew); with Shift to round; with Alt to randomize" msgstr "" #: ../src/object-edit.cpp:1245 -msgid "" -"Roll/unroll the spiral from inside; with Ctrl to snap angle; " -"with Alt to converge/diverge" +msgid "Roll/unroll the spiral from inside; with Ctrl to snap angle; with Alt to converge/diverge" msgstr "" #: ../src/object-edit.cpp:1248 -msgid "" -"Roll/unroll the spiral from outside; with Ctrl to snap angle; " -"with Shift to scale/rotate" +msgid "Roll/unroll the spiral from outside; with Ctrl to snap angle; with Shift to scale/rotate" msgstr "" #: ../src/object-edit.cpp:1292 +#, fuzzy msgid "Adjust the offset distance" -msgstr "" +msgstr "Axustar o ancho do trazo" #: ../src/object-edit.cpp:1327 msgid "Drag to resize the flowed text frame" @@ -7469,18 +7364,17 @@ msgid "Select at least two objects to combine." msgstr "Seleccione alomenos dous obxectos para combinalos." #: ../src/path-chemistry.cpp:67 -#, fuzzy msgid "Combining paths..." -msgstr "Combina-las curvas seleccionadas" +msgstr "Combinando camiños..." #: ../src/path-chemistry.cpp:169 msgid "Combine" -msgstr "" +msgstr "Combinar" #: ../src/path-chemistry.cpp:176 #, fuzzy msgid "No path(s) to combine in the selection." -msgstr "Non hai camiños para simplificar na selección." +msgstr "Na selección non hai obxectos para convertelos en camiños." #: ../src/path-chemistry.cpp:190 msgid "Select path(s) to break apart." @@ -7489,62 +7383,66 @@ msgstr "Seleccione un ou máis camiños para rompelos." #: ../src/path-chemistry.cpp:194 #, fuzzy msgid "Breaking apart paths..." -msgstr "Romper" +msgstr "Converter textos en camiños" #: ../src/path-chemistry.cpp:280 #, fuzzy msgid "Break apart" -msgstr "Romper" +msgstr "Ro_mper" #: ../src/path-chemistry.cpp:282 +#, fuzzy msgid "No path(s) to break apart in the selection." -msgstr "" +msgstr "Na selección non hai obxectos para convertelos en camiños." #: ../src/path-chemistry.cpp:306 msgid "Select object(s) to convert to path." msgstr "Seleccione obxectos para convertelos en camiños." #: ../src/path-chemistry.cpp:312 -#, fuzzy msgid "Converting objects to paths..." -msgstr "Converte-lo texto en camiño" +msgstr "Convertendo obxectos en camiños..." #: ../src/path-chemistry.cpp:334 -#, fuzzy msgid "Object to path" -msgstr "Obxecto a Camiño" +msgstr "Obxecto a camiño" #: ../src/path-chemistry.cpp:336 msgid "No objects to convert to path in the selection." msgstr "Na selección non hai obxectos para convertelos en camiños." #: ../src/path-chemistry.cpp:487 +#, fuzzy msgid "Select path(s) to reverse." -msgstr "" +msgstr "Seleccione camiños para simplificalos." #: ../src/path-chemistry.cpp:496 #, fuzzy msgid "Reversing paths..." -msgstr "_Romper aparte ou fragmentar" +msgstr "Número de camiños" #: ../src/path-chemistry.cpp:523 #, fuzzy msgid "Reverse path" -msgstr "_Romper aparte ou fragmentar" +msgstr "Pechando o camiño." #: ../src/path-chemistry.cpp:525 +#, fuzzy msgid "No paths to reverse in the selection." -msgstr "" +msgstr "Non hai camiños para simplificar na selección." -#: ../src/pencil-context.cpp:239 ../src/pen-context.cpp:441 +#: ../src/pencil-context.cpp:239 +#: ../src/pen-context.cpp:441 msgid "Continuing selected path" msgstr "Continuando o camiño seleccionado" -#: ../src/pencil-context.cpp:248 ../src/pen-context.cpp:451 +#: ../src/pencil-context.cpp:248 +#: ../src/pen-context.cpp:451 msgid "Creating new path" msgstr "Creando novo camiño" -#: ../src/pencil-context.cpp:253 ../src/pen-context.cpp:453 +#: ../src/pencil-context.cpp:253 +#: ../src/pen-context.cpp:453 msgid "Appending to selected path" msgstr "Engadindo ó camiño seleccionado" @@ -7565,68 +7463,54 @@ msgstr "Arrastre para continuar o camiño dende este punto." msgid "Finishing freehand" msgstr "Rematando man alzada" -#: ../src/pencil-context.cpp:460 ../src/pen-context.cpp:237 +#: ../src/pencil-context.cpp:460 +#: ../src/pen-context.cpp:237 +#, fuzzy msgid "Drawing cancelled" -msgstr "" +msgstr "Debuxo rematado" #: ../src/pen-context.cpp:620 msgid "Click or click and drag to close and finish the path." -msgstr "" -"Prema ou prema e arrastre para pechar e finalizar o camiño." +msgstr "Prema ou prema e arrastre para pechar e finalizar o camiño." #: ../src/pen-context.cpp:630 -msgid "" -"Click or click and drag to continue the path from this point." -msgstr "" -"Prema ou prema e arrastre para continuar o camiño dende este " -"punto." +msgid "Click or click and drag to continue the path from this point." +msgstr "Prema ou prema e arrastre para continuar o camiño dende este punto." #: ../src/pen-context.cpp:1177 #, c-format -msgid "" -"Curve segment: angle %3.2f°, distance %s; with Ctrl to " -"snap angle, Enter to finish the path" +msgid "Curve segment: angle %3.2f°, distance %s; with Ctrl to snap angle, Enter to finish the path" msgstr "" #: ../src/pen-context.cpp:1178 #, c-format -msgid "" -"Line segment: angle %3.2f°, distance %s; with Ctrl to " -"snap angle, Enter to finish the path" +msgid "Line segment: angle %3.2f°, distance %s; with Ctrl to snap angle, Enter to finish the path" msgstr "" #: ../src/pen-context.cpp:1196 #, c-format -msgid "" -"Curve handle: angle %3.2f°, length %s; with Ctrl to snap " -"angle" +msgid "Curve handle: angle %3.2f°, length %s; with Ctrl to snap angle" msgstr "" #: ../src/pen-context.cpp:1218 #, fuzzy, c-format -msgid "" -"Curve handle, symmetric: angle %3.2f°, length %s; with Ctrl to snap angle, with Shift to move this handle only" -msgstr "" -"Rotar a selección; con Ctrl para axustar o ángulo snap angle; " -"con Shift para rotar arredor da esquina oposta" +msgid "Curve handle, symmetric: angle %3.2f°, length %s; with Ctrl to snap angle, with Shift to move this handle only" +msgstr "Rotar a selección; con Ctrl para axustar o ángulo snap angle; con Shift para rotar arredor da esquina oposta" #: ../src/pen-context.cpp:1219 #, fuzzy, c-format -msgid "" -"Curve handle: angle %3.2f°, length %s; with Ctrl to snap " -"angle, with Shift to move this handle only" -msgstr "" -"Rotar a selección; con Ctrl para axustar o ángulo snap angle; " -"con Shift para rotar arredor da esquina oposta" +msgid "Curve handle: angle %3.2f°, length %s; with Ctrl to snap angle, with Shift to move this handle only" +msgstr "Rotar a selección; con Ctrl para axustar o ángulo snap angle; con Shift para rotar arredor da esquina oposta" #: ../src/pen-context.cpp:1259 +#, fuzzy msgid "Drawing finished" -msgstr "" +msgstr "Debuxo rematado" #: ../src/persp3d.cpp:335 +#, fuzzy msgid "Toggle vanishing point" -msgstr "" +msgstr "Activar/desactivar a visibilidade da capa actual" #: ../src/persp3d.cpp:346 msgid "Toggle multiple vanishing points" @@ -7650,50 +7534,28 @@ msgstr "" "Non se vai gardar a nova configuración." #: ../src/rect-context.cpp:382 -msgid "" -"Ctrl: make square or integer-ratio rect, lock a rounded corner " -"circular" +msgid "Ctrl: make square or integer-ratio rect, lock a rounded corner circular" msgstr "" #: ../src/rect-context.cpp:536 #, fuzzy, c-format -msgid "" -"Rectangle: %s × %s (constrained to ratio %d:%d); with Shift to draw around the starting point" -msgstr "" -"Rectángulo: %s × %s; con Ctrl para facer un cadrado ou un " -"rectángulo de razón enteira; con Shift para debuxar arredor do punto " -"de inicio" +msgid "Rectangle: %s × %s (constrained to ratio %d:%d); with Shift to draw around the starting point" +msgstr "Rectángulo: %s × %s; con Ctrl para facer un cadrado ou un rectángulo de razón enteira; con Shift para debuxar arredor do punto de inicio" #: ../src/rect-context.cpp:539 #, fuzzy, c-format -msgid "" -"Rectangle: %s × %s (constrained to golden ratio 1.618 : 1); with " -"Shift to draw around the starting point" -msgstr "" -"Rectángulo: %s × %s; con Ctrl para facer un cadrado ou un " -"rectángulo de razón enteira; con Shift para debuxar arredor do punto " -"de inicio" +msgid "Rectangle: %s × %s (constrained to golden ratio 1.618 : 1); with Shift to draw around the starting point" +msgstr "Rectángulo: %s × %s; con Ctrl para facer un cadrado ou un rectángulo de razón enteira; con Shift para debuxar arredor do punto de inicio" #: ../src/rect-context.cpp:541 #, fuzzy, c-format -msgid "" -"Rectangle: %s × %s (constrained to golden ratio 1 : 1.618); with " -"Shift to draw around the starting point" -msgstr "" -"Rectángulo: %s × %s; con Ctrl para facer un cadrado ou un " -"rectángulo de razón enteira; con Shift para debuxar arredor do punto " -"de inicio" +msgid "Rectangle: %s × %s (constrained to golden ratio 1 : 1.618); with Shift to draw around the starting point" +msgstr "Rectángulo: %s × %s; con Ctrl para facer un cadrado ou un rectángulo de razón enteira; con Shift para debuxar arredor do punto de inicio" #: ../src/rect-context.cpp:545 #, c-format -msgid "" -"Rectangle: %s × %s; with Ctrl to make square or integer-" -"ratio rectangle; with Shift to draw around the starting point" -msgstr "" -"Rectángulo: %s × %s; con Ctrl para facer un cadrado ou un " -"rectángulo de razón enteira; con Shift para debuxar arredor do punto " -"de inicio" +msgid "Rectangle: %s × %s; with Ctrl to make square or integer-ratio rectangle; with Shift to draw around the starting point" +msgstr "Rectángulo: %s × %s; con Ctrl para facer un cadrado ou un rectángulo de razón enteira; con Shift para debuxar arredor do punto de inicio" #: ../src/rect-context.cpp:566 msgid "Create rectangle" @@ -7708,30 +7570,24 @@ msgid "Selection canceled." msgstr "Selección cancelada." #: ../src/select-context.cpp:545 -msgid "" -"Draw over objects to select them; release Alt to switch to " -"rubberband selection" +msgid "Draw over objects to select them; release Alt to switch to rubberband selection" msgstr "" #: ../src/select-context.cpp:547 -msgid "" -"Drag around objects to select them; press Alt to switch to " -"touch selection" +msgid "Drag around objects to select them; press Alt to switch to touch selection" msgstr "" #: ../src/select-context.cpp:707 #, fuzzy msgid "Ctrl: click to select in groups; drag to move hor/vert" -msgstr "" -"Prema para seleccionar os nodos, arrastre para reordenar." +msgstr "Prema para seleccionar os nodos, arrastre para reordenar." #: ../src/select-context.cpp:708 msgid "Shift: click to toggle select; drag for rubberband selection" msgstr "" #: ../src/select-context.cpp:709 -msgid "" -"Alt: click to select under; drag to move selected or select by touch" +msgid "Alt: click to select under; drag to move selected or select by touch" msgstr "" #: ../src/select-context.cpp:880 @@ -7740,16 +7596,18 @@ msgstr "" #: ../src/selection-chemistry.cpp:194 msgid "Delete text" -msgstr "" +msgstr "Eliminar texto" #: ../src/selection-chemistry.cpp:202 msgid "Nothing was deleted." msgstr "Non se eliminou nada." -#: ../src/selection-chemistry.cpp:220 ../src/text-context.cpp:995 -#: ../src/widgets/toolbox.cpp:1090 ../src/widgets/toolbox.cpp:4335 +#: ../src/selection-chemistry.cpp:220 +#: ../src/text-context.cpp:995 +#: ../src/widgets/toolbox.cpp:1090 +#: ../src/widgets/toolbox.cpp:4335 msgid "Delete" -msgstr "" +msgstr "Eliminar" #: ../src/selection-chemistry.cpp:235 msgid "Select object(s) to duplicate." @@ -7760,11 +7618,11 @@ msgid "Delete all" msgstr "Borrar todo" #: ../src/selection-chemistry.cpp:409 -#, fuzzy msgid "Select some objects to group." -msgstr "Seleccione dous ou máis obxectos para agrupalos." +msgstr "Seleccione algúns obxectos para agrupalos." -#: ../src/selection-chemistry.cpp:482 ../src/selection-describer.cpp:51 +#: ../src/selection-chemistry.cpp:482 +#: ../src/selection-describer.cpp:51 msgid "Group" msgstr "Agrupar" @@ -7776,7 +7634,8 @@ msgstr "Seleccione un grupo para desagrupalo." msgid "No groups to ungroup in the selection." msgstr "Non hai grupos para desagrupar na selección." -#: ../src/selection-chemistry.cpp:544 ../src/sp-item-group.cpp:488 +#: ../src/selection-chemistry.cpp:544 +#: ../src/sp-item-group.cpp:488 msgid "Ungroup" msgstr "Desagrupar" @@ -7784,18 +7643,17 @@ msgstr "Desagrupar" msgid "Select object(s) to raise." msgstr "Seleccione un ou máis obxectos para elevalos." -#: ../src/selection-chemistry.cpp:611 ../src/selection-chemistry.cpp:672 -#: ../src/selection-chemistry.cpp:707 ../src/selection-chemistry.cpp:772 -msgid "" -"You cannot raise/lower objects from different groups or layers." -msgstr "" -"Non pode elevar/baixar obxectos de capas ou grupos diferentes." +#: ../src/selection-chemistry.cpp:611 +#: ../src/selection-chemistry.cpp:672 +#: ../src/selection-chemistry.cpp:707 +#: ../src/selection-chemistry.cpp:772 +msgid "You cannot raise/lower objects from different groups or layers." +msgstr "Non pode elevar/baixar obxectos de capas ou grupos diferentes." #. TRANSLATORS: Only put the word "Raise" in the translation. Means "to raise an object" in the undo history #: ../src/selection-chemistry.cpp:651 -#, fuzzy msgid "undo_action|Raise" -msgstr "Función" +msgstr "" #: ../src/selection-chemistry.cpp:664 msgid "Select object(s) to raise to top." @@ -7835,7 +7693,7 @@ msgstr "Pegar" #: ../src/selection-chemistry.cpp:880 msgid "Paste style" -msgstr "" +msgstr "Pegar estilo" #: ../src/selection-chemistry.cpp:889 #, fuzzy @@ -7850,18 +7708,16 @@ msgstr "Seleccione algún obxecto ó que pegarlle o tamaño." #: ../src/selection-chemistry.cpp:921 #, fuzzy msgid "Remove live path effect" -msgstr "Eli_minar" +msgstr "Eliminar o efecto da selección" #: ../src/selection-chemistry.cpp:933 -#, fuzzy msgid "Select object(s) to remove filters from." -msgstr "Seleccione algún obxecto para elevalo á cima." +msgstr "Seleccione algúns obxectos para quitarlles os filtros." #: ../src/selection-chemistry.cpp:943 #: ../src/ui/dialog/filter-effects-dialog.cpp:1363 -#, fuzzy msgid "Remove filter" -msgstr "Eli_minar" +msgstr "Eliminar o filtro" #: ../src/selection-chemistry.cpp:952 msgid "Paste size" @@ -7896,9 +7752,8 @@ msgid "No more layers below." msgstr "Non hai máis capas embaixo." #: ../src/selection-chemistry.cpp:1234 -#, fuzzy msgid "Remove transform" -msgstr "Elimina-la transformación" +msgstr "Eliminar a transformación" #: ../src/selection-chemistry.cpp:1343 msgid "Rotate 90° CW" @@ -7908,14 +7763,16 @@ msgstr "Rotar 90º en sentido horario" msgid "Rotate 90° CCW" msgstr "Rotar 90º en sentido antihorario" -#: ../src/selection-chemistry.cpp:1388 ../src/seltrans.cpp:457 +#: ../src/selection-chemistry.cpp:1388 +#: ../src/seltrans.cpp:457 #: ../src/ui/dialog/transformation.cpp:757 msgid "Rotate" msgstr "Rotar" #: ../src/selection-chemistry.cpp:1420 +#, fuzzy msgid "Rotate by pixels" -msgstr "" +msgstr "> e < escalan:" #: ../src/selection-chemistry.cpp:1475 msgid "Scale by whole factor" @@ -7923,24 +7780,28 @@ msgstr "" #: ../src/selection-chemistry.cpp:1491 msgid "Move vertically" -msgstr "" +msgstr "Mover verticalmente" #: ../src/selection-chemistry.cpp:1494 msgid "Move horizontally" -msgstr "" +msgstr "Mover horizontalmente" -#: ../src/selection-chemistry.cpp:1497 ../src/selection-chemistry.cpp:1525 -#: ../src/seltrans.cpp:451 ../src/ui/dialog/transformation.cpp:680 +#: ../src/selection-chemistry.cpp:1497 +#: ../src/selection-chemistry.cpp:1525 +#: ../src/seltrans.cpp:451 +#: ../src/ui/dialog/transformation.cpp:680 msgid "Move" msgstr "Mover" #: ../src/selection-chemistry.cpp:1519 +#, fuzzy msgid "Move vertically by pixels" -msgstr "" +msgstr "As teclas de frecha moven:" #: ../src/selection-chemistry.cpp:1522 +#, fuzzy msgid "Move horizontally by pixels" -msgstr "" +msgstr "As teclas de frecha moven:" #: ../src/selection-chemistry.cpp:1650 #, fuzzy @@ -7959,7 +7820,7 @@ msgstr "Crear novos obxectos con:" #: ../src/selection-chemistry.cpp:1854 msgid "action|Clone" -msgstr "" +msgstr "Clonar" #: ../src/selection-chemistry.cpp:1871 msgid "Select a clone to unlink." @@ -7974,43 +7835,35 @@ msgid "Unlink clone" msgstr "Desligar clon" #: ../src/selection-chemistry.cpp:1938 -msgid "" -"Select a clone to go to its original. Select a linked offset " -"to go to its source. Select a text on path to go to the path. Select " -"a flowed text to go to its frame." +msgid "Select a clone to go to its original. Select a linked offset to go to its source. Select a text on path to go to the path. Select a flowed text to go to its frame." msgstr "" #: ../src/selection-chemistry.cpp:1961 -msgid "" -"Cannot find the object to select (orphaned clone, offset, textpath, " -"flowed text?)" +msgid "Cannot find the object to select (orphaned clone, offset, textpath, flowed text?)" msgstr "" #: ../src/selection-chemistry.cpp:1967 -msgid "" -"The object you're trying to select is not visible (it is in <" -"defs>)" +msgid "The object you're trying to select is not visible (it is in <defs>)" msgstr "" #: ../src/selection-chemistry.cpp:1995 #, fuzzy msgid "Select object(s) to convert to marker." -msgstr "Seleccione obxectos para convertelos en patróns." +msgstr "Seleccione obxectos para convertelos en camiños." #: ../src/selection-chemistry.cpp:2061 #, fuzzy msgid "Objects to marker" -msgstr "Obxectos a patrón" +msgstr "Obxectos a guías" #: ../src/selection-chemistry.cpp:2090 #, fuzzy msgid "Select object(s) to convert to guides." -msgstr "Seleccione obxectos para convertelos en patróns." +msgstr "Seleccione obxectos para convertelos en camiños." #: ../src/selection-chemistry.cpp:2101 -#, fuzzy msgid "Objects to guides" -msgstr "Obxectos a patrón" +msgstr "Obxectos a guías" #: ../src/selection-chemistry.cpp:2118 msgid "Select object(s) to convert to pattern." @@ -8022,12 +7875,11 @@ msgstr "Obxectos a patrón" #: ../src/selection-chemistry.cpp:2222 msgid "Select an object with pattern fill to extract objects from." -msgstr "" -"Seleccione un obxecto con recheo de patrón para extraer obxectos del." +msgstr "Seleccione un obxecto con recheo de patrón para extraer obxectos del." #: ../src/selection-chemistry.cpp:2275 msgid "No pattern fills in the selection." -msgstr "" +msgstr "Non hai recheos con patróns na selección." #: ../src/selection-chemistry.cpp:2278 msgid "Pattern to objects" @@ -8035,13 +7887,12 @@ msgstr "Patrón a obxectos" #: ../src/selection-chemistry.cpp:2364 msgid "Select object(s) to make a bitmap copy." -msgstr "" -"Seleccione un ou máis obxectos para facer unha copia de mapa de bits." +msgstr "Seleccione un ou máis obxectos para facer unha copia de mapa de bits." #: ../src/selection-chemistry.cpp:2368 #, fuzzy msgid "Rendering bitmap..." -msgstr "_Romper aparte ou fragmentar" +msgstr "Crear mapa de bits" #: ../src/selection-chemistry.cpp:2530 msgid "Create bitmap" @@ -8056,20 +7907,23 @@ msgid "Select mask object and object(s) to apply clippath or mask to." msgstr "" #: ../src/selection-chemistry.cpp:2672 +#, fuzzy msgid "Set clipping path" -msgstr "" +msgstr "Eliminar o camiño de corte da selección" #: ../src/selection-chemistry.cpp:2674 +#, fuzzy msgid "Set mask" -msgstr "" +msgstr "Establecer o atributo" #: ../src/selection-chemistry.cpp:2688 msgid "Select object(s) to remove clippath or mask from." msgstr "" #: ../src/selection-chemistry.cpp:2756 +#, fuzzy msgid "Release clipping path" -msgstr "" +msgstr "Eliminar o camiño de corte da selección" #: ../src/selection-chemistry.cpp:2758 msgid "Release mask" @@ -8078,17 +7932,16 @@ msgstr "" #: ../src/selection-chemistry.cpp:2769 #, fuzzy msgid "Select object(s) to fit canvas to." -msgstr "Seleccione algún obxecto ó que pegarlle o tamaño." +msgstr "Seleccione obxectos para convertelos en camiños." # leo #: ../src/selection-chemistry.cpp:2803 #, fuzzy msgid "Fit page to selection" -msgstr "Axustar a páxina á selección" +msgstr "A_daptar a páxina á selección" #. TRANSLATORS: only translate and put "Link" in the translation. It means internet link (anchor) #: ../src/selection-describer.cpp:43 -#, fuzzy msgid "web|Link" msgstr "Ligazón" @@ -8097,24 +7950,28 @@ msgid "Circle" msgstr "Círculo" #. ellipse -#: ../src/selection-describer.cpp:47 ../src/selection-describer.cpp:73 -#: ../src/ui/dialog/inkscape-preferences.cpp:424 ../src/verbs.cpp:2425 +#: ../src/selection-describer.cpp:47 +#: ../src/selection-describer.cpp:73 +#: ../src/ui/dialog/inkscape-preferences.cpp:424 +#: ../src/verbs.cpp:2425 msgid "Ellipse" msgstr "Elipse" #: ../src/selection-describer.cpp:49 +#, fuzzy msgid "Flowed text" -msgstr "" +msgstr "Texto horizontal" #: ../src/selection-describer.cpp:55 msgid "Line" -msgstr "" +msgstr "Liña" #: ../src/selection-describer.cpp:57 msgid "Path" msgstr "Camiño" -#: ../src/selection-describer.cpp:59 ../src/widgets/toolbox.cpp:2028 +#: ../src/selection-describer.cpp:59 +#: ../src/widgets/toolbox.cpp:2028 msgid "Polygon" msgstr "Polígono" @@ -8124,34 +7981,38 @@ msgstr "" #. Rectangle #: ../src/selection-describer.cpp:63 -#: ../src/ui/dialog/inkscape-preferences.cpp:414 ../src/verbs.cpp:2421 +#: ../src/ui/dialog/inkscape-preferences.cpp:414 +#: ../src/verbs.cpp:2421 msgid "Rectangle" msgstr "Rectángulo" #. 3D box #: ../src/selection-describer.cpp:65 -#: ../src/ui/dialog/inkscape-preferences.cpp:419 ../src/verbs.cpp:2423 -#, fuzzy +#: ../src/ui/dialog/inkscape-preferences.cpp:419 +#: ../src/verbs.cpp:2423 msgid "3D Box" -msgstr "Caixa" +msgstr "Caixa 3D" #: ../src/selection-describer.cpp:71 msgid "object|Clone" -msgstr "" +msgstr "Clon" #: ../src/selection-describer.cpp:75 +#, fuzzy msgid "Offset path" -msgstr "" +msgstr "Pechando o camiño." #. spiral #: ../src/selection-describer.cpp:77 -#: ../src/ui/dialog/inkscape-preferences.cpp:432 ../src/verbs.cpp:2429 +#: ../src/ui/dialog/inkscape-preferences.cpp:432 +#: ../src/verbs.cpp:2429 msgid "Spiral" msgstr "Espiral" #. star #: ../src/selection-describer.cpp:79 -#: ../src/ui/dialog/inkscape-preferences.cpp:428 ../src/verbs.cpp:2427 +#: ../src/ui/dialog/inkscape-preferences.cpp:428 +#: ../src/verbs.cpp:2427 #: ../src/widgets/toolbox.cpp:2035 msgid "Star" msgstr "Estrela" @@ -8162,11 +8023,8 @@ msgstr "Prema na selección para cambiar as asas de escalar polas de rotación" #. no items #: ../src/selection-describer.cpp:109 -msgid "" -"No objects selected. Click, Shift+click, or drag around objects to select." -msgstr "" -"Non hai obxectos selecccionados. Prema, Shift+clic, ou arrastre arredor dos " -"obxectos para seleccionalos." +msgid "No objects selected. Click, Shift+click, or drag around objects to select." +msgstr "Non hai obxectos selecccionados. Prema, Shift+clic, ou arrastre arredor dos obxectos para seleccionalos." #: ../src/selection-describer.cpp:118 msgid "root" @@ -8193,35 +8051,36 @@ msgid " in %s" msgstr " na %s" #: ../src/selection-describer.cpp:152 -#, c-format +#, fuzzy, c-format msgid " in group %s (%s)" -msgstr "" +msgstr " no grupo %s (%s)" #: ../src/selection-describer.cpp:154 -#, c-format +#, fuzzy, c-format msgid " in %i parents (%s)" msgid_plural " in %i parents (%s)" -msgstr[0] "" +msgstr[0] " no grupo %s (%s)" msgstr[1] "" #: ../src/selection-describer.cpp:157 #, c-format msgid " in %i layers" msgid_plural " in %i layers" -msgstr[0] "" -msgstr[1] "" +msgstr[0] " en %i capa" +msgstr[1] " en %i capas" #: ../src/selection-describer.cpp:167 msgid "Use Shift+D to look up original" -msgstr "" +msgstr "Use Shift+D para buscar o orixinal" #: ../src/selection-describer.cpp:171 msgid "Use Shift+D to look up path" -msgstr "" +msgstr "Use Shift+D para buscar un camiño" #: ../src/selection-describer.cpp:175 +#, fuzzy msgid "Use Shift+D to look up frame" -msgstr "" +msgstr "Use Shift+D para buscar o orixinal" #. this is only used with 2 or more objects #: ../src/selection-describer.cpp:190 @@ -8268,65 +8127,45 @@ msgstr[1] "%i obxectos de %i tipos" msgid "%s%s. %s." msgstr "%s%s. %s." -#: ../src/seltrans.cpp:460 ../src/ui/dialog/transformation.cpp:815 +#: ../src/seltrans.cpp:460 +#: ../src/ui/dialog/transformation.cpp:815 msgid "Skew" msgstr "" #: ../src/seltrans.cpp:472 msgid "Set center" -msgstr "" +msgstr "Definir o centro" #: ../src/seltrans.cpp:569 -msgid "" -"Center of rotation and skewing: drag to reposition; scaling with " -"Shift also uses this center" -msgstr "" -"Centro de rotación e inclinación: arrastre para situalo noutro sitio; " -"se escala con Shift tamén usa este centro" +msgid "Center of rotation and skewing: drag to reposition; scaling with Shift also uses this center" +msgstr "Centro de rotación e inclinación: arrastre para situalo noutro sitio; se escala con Shift tamén usa este centro" #: ../src/seltrans.cpp:596 -msgid "" -"Squeeze or stretch selection; with Ctrl to scale uniformly; " -"with Shift to scale around rotation center" -msgstr "" -"Comprimir ou estirar a selección; con Ctrl para escalar de " -"xeito uniforme; con Shift para escalar arredor do centro de rotación" +msgid "Squeeze or stretch selection; with Ctrl to scale uniformly; with Shift to scale around rotation center" +msgstr "Comprimir ou estirar a selección; con Ctrl para escalar de xeito uniforme; con Shift para escalar arredor do centro de rotación" #: ../src/seltrans.cpp:597 -msgid "" -"Scale selection; with Ctrl to scale uniformly; with Shift to scale around rotation center" -msgstr "" -"Escalar a selección; con Ctrl para escalar de xeito uniforme; " -"con Shift para escalar dende o centro de rotación" +msgid "Scale selection; with Ctrl to scale uniformly; with Shift to scale around rotation center" +msgstr "Escalar a selección; con Ctrl para escalar de xeito uniforme; con Shift para escalar dende o centro de rotación" #: ../src/seltrans.cpp:601 -#, fuzzy -msgid "" -"Skew selection; with Ctrl to snap angle; with Shift to " -"skew around the opposite side" -msgstr "" -"Inclinar a selección; con Ctrl to snap angle; con Shift " -"para inclinar arredor da esquina oposta" +msgid "Skew selection; with Ctrl to snap angle; with Shift to skew around the opposite side" +msgstr "Inclinar a selección; con Ctrl para axustar ó angulo; con Shift para inclinar arredor da esquina oposta" #: ../src/seltrans.cpp:602 -#, fuzzy -msgid "" -"Rotate selection; with Ctrl to snap angle; with Shift " -"to rotate around the opposite corner" -msgstr "" -"Rotar a selección; con Ctrl para axustar o ángulo snap angle; " -"con Shift para rotar arredor da esquina oposta" +msgid "Rotate selection; with Ctrl to snap angle; with Shift to rotate around the opposite corner" +msgstr "Rotar a selección; con Ctrl para axustar o ángulo; con Shift para rotar arredor da esquina oposta" #: ../src/seltrans.cpp:736 +#, fuzzy msgid "Reset center" -msgstr "" +msgstr "Centrar as liñas" -#: ../src/seltrans.cpp:980 ../src/seltrans.cpp:1079 +#: ../src/seltrans.cpp:980 +#: ../src/seltrans.cpp:1079 #, c-format msgid "Scale: %0.2f%% x %0.2f%%; with Ctrl to lock ratio" -msgstr "" -"Escalar: %0.2f%% x %0.2f%%; con Ctrl para bloquear a razón" +msgstr "Escalar: %0.2f%% x %0.2f%%; con Ctrl para bloquear a razón" #. TRANSLATORS: don't modify the first ";" #. (it will NOT be displayed as ";" - only the second one will be) @@ -8349,14 +8188,13 @@ msgstr "Mover o centro a %s, %s" #: ../src/seltrans.cpp:1457 #, c-format -msgid "" -"Move by %s, %s; with Ctrl to restrict to horizontal/vertical; " -"with Shift to disable snapping" +msgid "Move by %s, %s; with Ctrl to restrict to horizontal/vertical; with Shift to disable snapping" msgstr "" #: ../src/shape-editor.cpp:397 +#, fuzzy msgid "Drag curve" -msgstr "" +msgstr "Limiar de clic/arrastre:" #: ../src/sp-anchor.cpp:178 #, c-format @@ -8367,7 +8205,8 @@ msgstr "Ligazón a %s" msgid "Link without URI" msgstr "Ligazón sen URI" -#: ../src/sp-ellipse.cpp:494 ../src/sp-ellipse.cpp:873 +#: ../src/sp-ellipse.cpp:494 +#: ../src/sp-ellipse.cpp:873 msgid "Ellipse" msgstr "Elipse" @@ -8397,10 +8236,10 @@ msgid "Flow excluded region" msgstr "" #: ../src/sp-flowtext.cpp:377 -#, c-format +#, fuzzy, c-format msgid "Flowed text (%d character)" msgid_plural "Flowed text (%d characters)" -msgstr[0] "" +msgstr[0] "Inserir caracter Unicode" msgstr[1] "" #: ../src/sp-flowtext.cpp:379 @@ -8411,18 +8250,19 @@ msgstr[0] "" msgstr[1] "" #: ../src/sp-guide.cpp:285 +#, fuzzy msgid "Guides around page" -msgstr "" +msgstr "Amosa-lo _bordo da páxina" #: ../src/sp-guide.cpp:418 #, fuzzy, c-format msgid "vertical, at %s" -msgstr "liña-guía vertical" +msgstr "píxels con" #: ../src/sp-guide.cpp:421 #, fuzzy, c-format msgid "horizontal, at %s" -msgstr "liña-guía horizontal" +msgstr "píxels con" #: ../src/sp-guide.cpp:426 #, c-format @@ -8436,7 +8276,7 @@ msgstr "" #: ../src/sp-image.cpp:1106 #, c-format msgid "Image with bad reference: %s" -msgstr "" +msgstr "Imaxe cunha referencia incorrecta: %s" #: ../src/sp-image.cpp:1107 #, c-format @@ -8444,8 +8284,9 @@ msgid "Image %d × %d: %s" msgstr "Imaxe %d × %d: %s" #: ../src/spiral-context.cpp:341 +#, fuzzy msgid "Ctrl: snap angle" -msgstr "" +msgstr "Ctrl+A, Tab, Shift+Tab:" #: ../src/spiral-context.cpp:343 msgid "Alt: lock spiral radius" @@ -8453,14 +8294,12 @@ msgstr "" #: ../src/spiral-context.cpp:466 #, c-format -msgid "" -"Spiral: radius %s, angle %5g°; with Ctrl to snap angle" +msgid "Spiral: radius %s, angle %5g°; with Ctrl to snap angle" msgstr "" #: ../src/spiral-context.cpp:487 -#, fuzzy msgid "Create spiral" -msgstr "Crear espirais" +msgstr "Crear unha espiral" #: ../src/sp-item.cpp:959 msgid "Object" @@ -8477,9 +8316,9 @@ msgid "%s; masked" msgstr "%s" #: ../src/sp-item.cpp:986 -#, fuzzy, c-format +#, c-format msgid "%s; filtered" -msgstr "%s" +msgstr "%s; filtrado" #: ../src/sp-item-group.cpp:738 #, c-format @@ -8490,9 +8329,10 @@ msgstr[1] "Grupo de %d obxectos" #: ../src/sp-line.cpp:188 msgid "Line" -msgstr "" +msgstr "Liña" -#: ../src/splivarot.cpp:71 ../src/splivarot.cpp:77 +#: ../src/splivarot.cpp:71 +#: ../src/splivarot.cpp:77 msgid "Union" msgstr "Unión" @@ -8500,50 +8340,43 @@ msgstr "Unión" msgid "Intersection" msgstr "Intersección" -#: ../src/splivarot.cpp:89 ../src/splivarot.cpp:95 +#: ../src/splivarot.cpp:89 +#: ../src/splivarot.cpp:95 msgid "Difference" -msgstr "" +msgstr "Diferencia" #: ../src/splivarot.cpp:101 msgid "Exclusion" -msgstr "" +msgstr "Exclusión" #: ../src/splivarot.cpp:106 msgid "Division" -msgstr "" +msgstr "División" #: ../src/splivarot.cpp:111 -#, fuzzy msgid "Cut path" -msgstr "Cortar _Camiño" +msgstr "Cortar camiño" #: ../src/splivarot.cpp:128 msgid "Select at least 2 paths to perform a boolean operation." -msgstr "" +msgstr "Seleccione polo menos 2 camiños para levar a cabo unha operación booleana." #: ../src/splivarot.cpp:132 -#, fuzzy msgid "Select at least 1 path to perform a boolean union." -msgstr "Seleccione alomenos dous obxectos para combinalos." +msgstr "Seleccione polo menos 1 camiño para levar a cabo unha unión booleana." #: ../src/splivarot.cpp:138 -msgid "" -"Select exactly 2 paths to perform difference, XOR, division, or path " -"cut." +msgid "Select exactly 2 paths to perform difference, XOR, division, or path cut." msgstr "" -#: ../src/splivarot.cpp:155 ../src/splivarot.cpp:170 -msgid "" -"Unable to determine the z-order of the objects selected for " -"difference, XOR, division, or path cut." +#: ../src/splivarot.cpp:155 +#: ../src/splivarot.cpp:170 +msgid "Unable to determine the z-order of the objects selected for difference, XOR, division, or path cut." msgstr "" #: ../src/splivarot.cpp:200 -msgid "" -"One of the objects is not a path, cannot perform boolean operation." -msgstr "" -"Un dos obxectos non é un camiño, non se pode levar a cabo a operación " -"booleana." +msgid "One of the objects is not a path, cannot perform boolean operation." +msgstr "Un dos obxectos non é un camiño, non se pode levar a cabo a operación booleana." #: ../src/splivarot.cpp:610 #, fuzzy @@ -8551,9 +8384,8 @@ msgid "Select stroked path(s) to convert stroke to path." msgstr "Seleccione obxectos para convertelos en camiños." #: ../src/splivarot.cpp:894 -#, fuzzy msgid "Convert stroke to path" -msgstr "Converte-lo texto en camiño" +msgstr "Converter trazo en camiño." #. TRANSLATORS: "to outline" means "to convert stroke to path" #: ../src/splivarot.cpp:897 @@ -8565,29 +8397,32 @@ msgstr "Non hai camiños para simplificar na selección." msgid "Selected object is not a path, cannot inset/outset." msgstr "" -#: ../src/splivarot.cpp:1101 ../src/splivarot.cpp:1170 +#: ../src/splivarot.cpp:1101 +#: ../src/splivarot.cpp:1170 #, fuzzy msgid "Create linked offset" -msgstr "_Crea Ligazón" +msgstr "Crear nova reixa" -#: ../src/splivarot.cpp:1102 ../src/splivarot.cpp:1171 +#: ../src/splivarot.cpp:1102 +#: ../src/splivarot.cpp:1171 #, fuzzy msgid "Create dynamic offset" -msgstr "Crear novos obxectos con:" +msgstr "Crear nova reixa" #: ../src/splivarot.cpp:1198 +#, fuzzy msgid "Select path(s) to inset/outset." -msgstr "" +msgstr "Seleccione un ou máis camiños para rompelos." #: ../src/splivarot.cpp:1416 #, fuzzy msgid "Outset path" -msgstr "Cortar _Camiño" +msgstr "Pechando o camiño." #: ../src/splivarot.cpp:1416 #, fuzzy msgid "Inset path" -msgstr "Cortar _Camiño" +msgstr "Pechando o camiño." #: ../src/splivarot.cpp:1418 msgid "No paths to inset/outset in the selection." @@ -8595,22 +8430,21 @@ msgstr "" #: ../src/splivarot.cpp:1579 msgid "Simplifying paths (separately):" -msgstr "" +msgstr "Simplificando camiños (por separado):" #: ../src/splivarot.cpp:1581 -#, fuzzy msgid "Simplifying paths:" -msgstr "Simplificar" +msgstr "Simplificando camiños:" #: ../src/splivarot.cpp:1618 -#, fuzzy, c-format +#, c-format msgid "%s %d of %d paths simplified..." -msgstr "Seleccionouse %i nodo de %i. %s." +msgstr "%s %d de %d camiños simplificados..." #: ../src/splivarot.cpp:1629 #, c-format msgid "%d paths simplified." -msgstr "" +msgstr "%d camiños simplificados." #: ../src/splivarot.cpp:1645 msgid "Select path(s) to simplify." @@ -8630,11 +8464,13 @@ msgstr "Non hai camiños para simplificar na selección." msgid "Linked offset, %s by %f pt" msgstr "" -#: ../src/sp-offset.cpp:433 ../src/sp-offset.cpp:437 +#: ../src/sp-offset.cpp:433 +#: ../src/sp-offset.cpp:437 msgid "outset" msgstr "" -#: ../src/sp-offset.cpp:433 ../src/sp-offset.cpp:437 +#: ../src/sp-offset.cpp:433 +#: ../src/sp-offset.cpp:437 msgid "inset" msgstr "" @@ -8645,11 +8481,11 @@ msgid "Dynamic offset, %s by %f pt" msgstr "" #: ../src/sp-path.cpp:135 -#, fuzzy, c-format +#, c-format msgid "Path (%i node, path effect)" msgid_plural "Path (%i nodes, path effect)" -msgstr[0] "Camiño (%i nodo)" -msgstr[1] "Camiño (%i nodos)" +msgstr[0] "Camiño (%i nodo, efecto de camiño)" +msgstr[1] "Camiño (%i nodos, efecto de camiño)" #: ../src/sp-path.cpp:138 #, c-format @@ -8661,12 +8497,12 @@ msgstr[1] "Camiño (%i nodos)" #: ../src/sp-path.cpp:540 #, fuzzy msgid "Creating single dot" -msgstr "Creando novo camiño" +msgstr "Creando novo conectador" #: ../src/sp-path.cpp:541 #, fuzzy msgid "Create single dot" -msgstr "Crear un Mosaico de Clons..." +msgstr "Crear nova reixa" #: ../src/sp-polygon.cpp:235 msgid "Polygon" @@ -8702,21 +8538,22 @@ msgstr[0] "Polígono de %d vértice" msgstr[1] "Polígono de %d vértices" #: ../src/sp-switch.cpp:100 -#, c-format +#, fuzzy, c-format msgid "Conditional group of %d object" msgid_plural "Conditional group of %d objects" -msgstr[0] "" +msgstr[0] "Establecer o ID do obxecto" msgstr[1] "" #. TRANSLATORS: For description of font with no name. #: ../src/sp-text.cpp:414 +#, fuzzy msgid "<no name found>" -msgstr "" +msgstr "Non hai definicións sen usar en <defs>." #: ../src/sp-text.cpp:420 #, c-format msgid "Text on path (%s, %s)" -msgstr "" +msgstr "Texto en camiño (%s, %s)" #: ../src/sp-text.cpp:421 #, c-format @@ -8726,11 +8563,12 @@ msgstr "Texto (%s, %s)" #: ../src/sp-tref.cpp:368 #, fuzzy, c-format msgid "Cloned character data%s%s" -msgstr "Clon de: %s" +msgstr "Inserir caracter Unicode" #: ../src/sp-tref.cpp:369 +#, fuzzy msgid " from " -msgstr "" +msgstr "Coller da selección" #: ../src/sp-tref.cpp:374 #, fuzzy @@ -8740,7 +8578,7 @@ msgstr "Clon orfo" #: ../src/sp-tspan.cpp:284 #, fuzzy msgid "Text span" -msgstr "Rectángulo" +msgstr "Texto horizontal" #. TRANSLATORS: Used for statusbar description for long chains: #. * "Clone of: Clone of: ... in Layer 1". @@ -8763,8 +8601,7 @@ msgstr "" #: ../src/star-context.cpp:476 #, c-format -msgid "" -"Polygon: radius %s, angle %5g°; with Ctrl to snap angle" +msgid "Polygon: radius %s, angle %5g°; with Ctrl to snap angle" msgstr "" #: ../src/star-context.cpp:477 @@ -8773,32 +8610,28 @@ msgid "Star: radius %s, angle %5g°; with Ctrl to snap angle" msgstr "" #: ../src/star-context.cpp:500 -#, fuzzy msgid "Create star" -msgstr "Crear mapa de bits" +msgstr "Crear unha estrela" #: ../src/text-chemistry.cpp:104 msgid "Select a text and a path to put text on path." msgstr "Seleccione un texto e un camiño para poñer o texto no camiño." #: ../src/text-chemistry.cpp:109 -msgid "" -"This text object is already put on a path. Remove it from the path " -"first. Use Shift+D to look up its path." +msgid "This text object is already put on a path. Remove it from the path first. Use Shift+D to look up its path." msgstr "" #. rect is the only SPShape which is not yet, and thus SVG forbids us from putting text on it #: ../src/text-chemistry.cpp:115 -msgid "" -"You cannot put text on a rectangle in this version. Convert rectangle to " -"path first." +msgid "You cannot put text on a rectangle in this version. Convert rectangle to path first." msgstr "" #: ../src/text-chemistry.cpp:125 msgid "The flowed text(s) must be visible in order to be put on a path." msgstr "" -#: ../src/text-chemistry.cpp:192 ../src/verbs.cpp:2283 +#: ../src/text-chemistry.cpp:192 +#: ../src/verbs.cpp:2283 msgid "Put text on path" msgstr "Poñer texto no camiño" @@ -8808,24 +8641,25 @@ msgstr "" #: ../src/text-chemistry.cpp:226 msgid "No texts-on-paths in the selection." -msgstr "" +msgstr "Non hai textos en camiño na selección." -#: ../src/text-chemistry.cpp:229 ../src/verbs.cpp:2285 +#: ../src/text-chemistry.cpp:229 +#: ../src/verbs.cpp:2285 msgid "Remove text from path" -msgstr "" +msgstr "Eliminar o texto dun camiño" -#: ../src/text-chemistry.cpp:269 ../src/text-chemistry.cpp:290 +#: ../src/text-chemistry.cpp:269 +#: ../src/text-chemistry.cpp:290 msgid "Select text(s) to remove kerns from." msgstr "" #: ../src/text-chemistry.cpp:293 +#, fuzzy msgid "Remove manual kerns" -msgstr "" +msgstr "Eliminar a reixa seleccionada." #: ../src/text-chemistry.cpp:313 -msgid "" -"Select a text and one or more paths or shapes to flow text " -"into frame." +msgid "Select a text and one or more paths or shapes to flow text into frame." msgstr "" #: ../src/text-chemistry.cpp:381 @@ -8838,8 +8672,9 @@ msgid "Select a flowed text to unflow it." msgstr "" #: ../src/text-chemistry.cpp:470 +#, fuzzy msgid "Unflow flowed text" -msgstr "" +msgstr "Buscar obxectos de texto" #: ../src/text-chemistry.cpp:482 #, fuzzy @@ -8853,7 +8688,7 @@ msgstr "" #: ../src/text-chemistry.cpp:528 #, fuzzy msgid "Convert flowed text to text" -msgstr "Converte-lo texto en camiño" +msgstr "Converter textos en camiños" #: ../src/text-chemistry.cpp:533 #, fuzzy @@ -8862,45 +8697,41 @@ msgstr "Na selección non hai obxectos para convertelos en camiños." #: ../src/text-context.cpp:452 msgid "Click to edit the text, drag to select part of the text." -msgstr "" -"Prema para edita-lo texto, arrastre para seleccionar parte do " -"texto." +msgstr "Prema para edita-lo texto, arrastre para seleccionar parte do texto." #: ../src/text-context.cpp:454 -msgid "" -"Click to edit the flowed text, drag to select part of the text." +msgid "Click to edit the flowed text, drag to select part of the text." msgstr "" #: ../src/text-context.cpp:508 -#, fuzzy msgid "Create text" -msgstr "Crear" +msgstr "Crear texto" #: ../src/text-context.cpp:532 -#, fuzzy msgid "Non-printable character" msgstr "Caracter non imprimible" #: ../src/text-context.cpp:547 msgid "Insert Unicode character" -msgstr "" +msgstr "Inserir caracter Unicode" #: ../src/text-context.cpp:582 -#, fuzzy, c-format +#, c-format msgid "Unicode (Enter to finish): %s: %s" -msgstr "Mover o centro a %s, %s" +msgstr "Unicode (Intro para rematar): %s: %s" -#: ../src/text-context.cpp:584 ../src/text-context.cpp:849 -#, fuzzy +#: ../src/text-context.cpp:584 +#: ../src/text-context.cpp:849 msgid "Unicode (Enter to finish): " -msgstr "Mover o centro a %s, %s" +msgstr "Unicode (Intro para rematar): " #: ../src/text-context.cpp:659 #, c-format msgid "Flowed text frame: %s × %s" msgstr "" -#: ../src/text-context.cpp:691 ../src/text-context.cpp:1544 +#: ../src/text-context.cpp:691 +#: ../src/text-context.cpp:1544 msgid "Type text; Enter to start new line." msgstr "Introduza texto; Intro para comezar unha nova liña." @@ -8911,48 +8742,46 @@ msgstr "" #: ../src/text-context.cpp:706 #, fuzzy msgid "Create flowed text" -msgstr "Crear Clo_n" +msgstr "Crear novo nodo de texto" #: ../src/text-context.cpp:708 -msgid "" -"The frame is too small for the current font size. Flowed text not " -"created." +msgid "The frame is too small for the current font size. Flowed text not created." msgstr "" #: ../src/text-context.cpp:834 +#, fuzzy msgid "No-break space" -msgstr "" +msgstr "Non hai ningún zoom anterior." #: ../src/text-context.cpp:836 msgid "Insert no-break space" msgstr "" #: ../src/text-context.cpp:873 -#, fuzzy msgid "Make bold" -msgstr "Completar" +msgstr "Facer negra" #: ../src/text-context.cpp:891 msgid "Make italic" -msgstr "" +msgstr "Converter a itálica" #: ../src/text-context.cpp:930 -#, fuzzy msgid "New line" -msgstr "Nova vista" +msgstr "Nova liña" #: ../src/text-context.cpp:964 msgid "Backspace" msgstr "" #: ../src/text-context.cpp:1012 +#, fuzzy msgid "Kern to the left" -msgstr "" +msgstr "Aliñar as liñas á esqueda" #: ../src/text-context.cpp:1034 #, fuzzy msgid "Kern to the right" -msgstr "Aliñar abaixo á dereita" +msgstr "Aliñar as liñas á dereita" #: ../src/text-context.cpp:1056 msgid "Kern up" @@ -8963,19 +8792,17 @@ msgid "Kern down" msgstr "" #: ../src/text-context.cpp:1135 -#, fuzzy msgid "Rotate counterclockwise" -msgstr "Rotar en sentido horario" +msgstr "Rotar en sentido antihorario" #: ../src/text-context.cpp:1156 -#, fuzzy msgid "Rotate clockwise" msgstr "Rotar en sentido horario" #: ../src/text-context.cpp:1173 #, fuzzy msgid "Contract line spacing" -msgstr "Espaciado de liñas:" +msgstr "_Cor das liñas da reixa:" #: ../src/text-context.cpp:1181 msgid "Contract letter spacing" @@ -8984,7 +8811,7 @@ msgstr "" #: ../src/text-context.cpp:1200 #, fuzzy msgid "Expand line spacing" -msgstr "Espaciado de liñas:" +msgstr "_Cor das liñas da reixa:" #: ../src/text-context.cpp:1208 #, fuzzy @@ -8992,147 +8819,98 @@ msgid "Expand letter spacing" msgstr "Establecer espacio:" #: ../src/text-context.cpp:1312 -#, fuzzy msgid "Paste text" -msgstr "Pegar E_stilo" +msgstr "Pegar texto" #: ../src/text-context.cpp:1542 msgid "Type flowed text; Enter to start new paragraph." msgstr "" -#: ../src/text-context.cpp:1552 ../src/tools-switch.cpp:211 -msgid "" -"Click to select or create text, drag to create flowed text; " -"then type." +#: ../src/text-context.cpp:1552 +#: ../src/tools-switch.cpp:211 +msgid "Click to select or create text, drag to create flowed text; then type." msgstr "" #: ../src/text-context.cpp:1659 -#, fuzzy msgid "Type text" -msgstr "T_ipo:" +msgstr "Introducir texto" #: ../src/text-editing.cpp:40 msgid "You cannot edit cloned character data." msgstr "" #: ../src/tools-switch.cpp:151 -msgid "" -"To edit a path, click, Shift+click, or drag around " -"nodes to select them, then drag nodes and handles. Click on an " -"object to select." -msgstr "" -"Para editar un camiño, prema, Shift+clic, ou arrastre " -"arredor dos nodos para seleccionalos, despois arrastre os nodos e " -"as asas. Prema nun obxecto para seleccionalo." +msgid "To edit a path, click, Shift+click, or drag around nodes to select them, then drag nodes and handles. Click on an object to select." +msgstr "Para editar un camiño, prema, Shift+clic, ou arrastre arredor dos nodos para seleccionalos, despois arrastre os nodos e as asas. Prema nun obxecto para seleccionalo." #: ../src/tools-switch.cpp:157 msgid "To tweak a path by pushing, select it and drag over it." msgstr "" #: ../src/tools-switch.cpp:163 -msgid "" -"Drag to create a rectangle. Drag controls to round corners and " -"resize. Click to select." -msgstr "" -"Arrastre para crear un rectángulo. Arrastre os controis para " -"redondearlle as esquinas e redimensionalo. Prema nel para " -"seleccionalo." +msgid "Drag to create a rectangle. Drag controls to round corners and resize. Click to select." +msgstr "Arrastre para crear un rectángulo. Arrastre os controis para redondearlle as esquinas e redimensionalo. Prema nel para seleccionalo." #: ../src/tools-switch.cpp:169 #, fuzzy -msgid "" -"Drag to create a 3D box. Drag controls to resize in " -"perspective. Click to select (with Ctrl+Alt for single faces)." -msgstr "" -"Arrastre para crear unha estrela. Arrastre os controis para " -"facer editar a figura de estrela. Prema para seleccionar." +msgid "Drag to create a 3D box. Drag controls to resize in perspective. Click to select (with Ctrl+Alt for single faces)." +msgstr "Arrastre para crear unha estrela. Arrastre os controis para facer editar a figura de estrela. Prema para seleccionar." #: ../src/tools-switch.cpp:175 -msgid "" -"Drag to create an ellipse. Drag controls to make an arc or " -"segment. Click to select." -msgstr "" -"Arrastre para crear unha elipse. Arrastre os controis para " -"facer un arco ou un sector. Prema para seleccionar." +msgid "Drag to create an ellipse. Drag controls to make an arc or segment. Click to select." +msgstr "Arrastre para crear unha elipse. Arrastre os controis para facer un arco ou un sector. Prema para seleccionar." #: ../src/tools-switch.cpp:181 -msgid "" -"Drag to create a star. Drag controls to edit the star shape. " -"Click to select." -msgstr "" -"Arrastre para crear unha estrela. Arrastre os controis para " -"facer editar a figura de estrela. Prema para seleccionar." +msgid "Drag to create a star. Drag controls to edit the star shape. Click to select." +msgstr "Arrastre para crear unha estrela. Arrastre os controis para facer editar a figura de estrela. Prema para seleccionar." #: ../src/tools-switch.cpp:187 -msgid "" -"Drag to create a spiral. Drag controls to edit the spiral " -"shape. Click to select." -msgstr "" -"Arrastre para crear unha espiral. Arrastre os controis para " -"facer editar a figura de espiral. Prema para seleccionar." +msgid "Drag to create a spiral. Drag controls to edit the spiral shape. Click to select." +msgstr "Arrastre para crear unha espiral. Arrastre os controis para facer editar a figura de espiral. Prema para seleccionar." #: ../src/tools-switch.cpp:193 -#, fuzzy -msgid "" -"Drag to create a freehand line. Start drawing with Shift to " -"append to selected path. Ctrl+click to create single dots." -msgstr "" -"Arrastre para crear unha liña a man alzada. Comece a debuxar con " -"Shift para engadir ó camiño seleccionado." +msgid "Drag to create a freehand line. Start drawing with Shift to append to selected path. Ctrl+click to create single dots." +msgstr "Arrastre para crear unha liña a man alzada. Comece a debuxar con Shift para engadir ó camiño seleccionado. Ctrl+clic para crear só puntos." #: ../src/tools-switch.cpp:199 -msgid "" -"Click or click and drag to start a path; with Shift to " -"append to selected path. Ctrl+click to create single dots." +msgid "Click or click and drag to start a path; with Shift to append to selected path. Ctrl+click to create single dots." msgstr "" #: ../src/tools-switch.cpp:205 -msgid "" -"Drag to draw a calligraphic stroke; with Ctrl to track a " -"guide, with Alt to thin/thicken. Arrow keys adjust width (left/" -"right) and angle (up/down)." +msgid "Drag to draw a calligraphic stroke; with Ctrl to track a guide, with Alt to thin/thicken. Arrow keys adjust width (left/right) and angle (up/down)." msgstr "" #: ../src/tools-switch.cpp:217 -msgid "" -"Drag or double click to create a gradient on selected objects, " -"drag handles to adjust gradients." -msgstr "" -"Arrastre ou faga dobre clic para crear un degradado nos " -"obxectos seleccionados, arrastre as asas para modificar os degradados." +msgid "Drag or double click to create a gradient on selected objects, drag handles to adjust gradients." +msgstr "Arrastre ou faga dobre clic para crear un degradado nos obxectos seleccionados, arrastre as asas para modificar os degradados." #: ../src/tools-switch.cpp:223 -msgid "" -"Click or drag around an area to zoom in, Shift+click to " -"zoom out." -msgstr "" -"Prema ou arrastre arredor dunha área para ampliala, Shift" -"+clic para reducila." +msgid "Click or drag around an area to zoom in, Shift+click to zoom out." +msgstr "Prema ou arrastre arredor dunha área para ampliala, Shift+clic para reducila." #: ../src/tools-switch.cpp:235 msgid "Click and drag between shapes to create a connector." msgstr "Prema e arrastre dunha figura a outra para crear un conectador." #: ../src/tools-switch.cpp:241 -msgid "" -"Click to paint a bounded area, Shift+click to union the new " -"fill with the current selection, Ctrl+click to change the clicked " -"object's fill and stroke to the current setting." +msgid "Click to paint a bounded area, Shift+click to union the new fill with the current selection, Ctrl+click to change the clicked object's fill and stroke to the current setting." msgstr "" #: ../src/tools-switch.cpp:247 #, fuzzy msgid "Drag to erase." -msgstr "Ligazón a %s" +msgstr "Arrastre para reordenar os nodos" #: ../src/trace/potrace/inkscape-potrace.cpp:524 #: ../src/trace/potrace/inkscape-potrace.cpp:598 #, c-format msgid "Trace: %d. %ld nodes" -msgstr "" +msgstr "Vectorizar: %d. %ld nodos" -#: ../src/trace/trace.cpp:71 ../src/trace/trace.cpp:136 -#: ../src/trace/trace.cpp:144 ../src/trace/trace.cpp:243 +#: ../src/trace/trace.cpp:71 +#: ../src/trace/trace.cpp:136 +#: ../src/trace/trace.cpp:144 +#: ../src/trace/trace.cpp:243 msgid "Select an image to trace" msgstr "Seleccione unha imaxe para vectorizala" @@ -9145,31 +8923,31 @@ msgid "Select one image and one or more shapes above it" msgstr "Seleccione unha imaxe e unha ou máis figuras enriba dela" #: ../src/trace/trace.cpp:234 +#, fuzzy msgid "Trace: No active desktop" -msgstr "" +msgstr "Vectorizar: A imaxe non ten datos de mapa de bits" #: ../src/trace/trace.cpp:333 msgid "Invalid SIOX result" msgstr "Resultado SIOX incorrecto" #: ../src/trace/trace.cpp:438 +#, fuzzy msgid "Trace: No active document" -msgstr "" +msgstr "Non hai degradados no documento" #: ../src/trace/trace.cpp:461 msgid "Trace: Image has no bitmap data" -msgstr "" +msgstr "Vectorizar: A imaxe non ten datos de mapa de bits" #: ../src/trace/trace.cpp:468 -#, fuzzy msgid "Trace: Starting trace..." -msgstr "_Vectorizar Mapa de Bits..." +msgstr "Vectorizar: Iniciando a vectorización..." #. ## inform the document, so we can undo #: ../src/trace/trace.cpp:570 -#, fuzzy msgid "Trace bitmap" -msgstr "Crear mapa de bits" +msgstr "Vectorizar un mapa de bits" #: ../src/trace/trace.cpp:574 #, c-format @@ -9184,28 +8962,28 @@ msgstr "" #, fuzzy, c-format msgid "Pushing %d selected object" msgid_plural "Pushing %d selected objects" -msgstr[0] "Non se eliminou nada." +msgstr[0] "Converte-los obxectos seleccionados en camiños" msgstr[1] "Non se eliminou nada." #: ../src/tweak-context.cpp:970 #, fuzzy, c-format msgid "Shrinking %d selected object" msgid_plural "Shrinking %d selected objects" -msgstr[0] "Ordena-los obxectos seleccionados" +msgstr[0] "Converte-los obxectos seleccionados en camiños" msgstr[1] "Ordena-los obxectos seleccionados" #: ../src/tweak-context.cpp:975 #, fuzzy, c-format msgid "Growing %d selected object" msgid_plural "Growing %d selected objects" -msgstr[0] "Agrupa-los obxectos seleccionados" +msgstr[0] "Converte-los obxectos seleccionados en camiños" msgstr[1] "Agrupa-los obxectos seleccionados" #: ../src/tweak-context.cpp:980 #, fuzzy, c-format msgid "Attracting %d selected object" msgid_plural "Attracting %d selected objects" -msgstr[0] "Ordena-los obxectos seleccionados" +msgstr[0] "Converte-los obxectos seleccionados en camiños" msgstr[1] "Ordena-los obxectos seleccionados" # [*] Revisar Layout @@ -9213,21 +8991,21 @@ msgstr[1] "Ordena-los obxectos seleccionados" #, fuzzy, c-format msgid "Repelling %d selected object" msgid_plural "Repelling %d selected objects" -msgstr[0] "Edita-lo equipamento dos obxectos seleccionados" +msgstr[0] "Converte-los obxectos seleccionados en camiños" msgstr[1] "Edita-lo equipamento dos obxectos seleccionados" #: ../src/tweak-context.cpp:990 #, fuzzy, c-format msgid "Roughening %d selected object" msgid_plural "Roughening %d selected objects" -msgstr[0] "Non se eliminou nada." +msgstr[0] "Converte-los obxectos seleccionados en camiños" msgstr[1] "Non se eliminou nada." #: ../src/tweak-context.cpp:995 #, fuzzy, c-format msgid "Painting %d selected object" msgid_plural "Painting %d selected objects" -msgstr[0] "Ordena-los obxectos seleccionados" +msgstr[0] "Converte-los obxectos seleccionados en camiños" msgstr[1] "Ordena-los obxectos seleccionados" #: ../src/tweak-context.cpp:1000 @@ -9262,19 +9040,22 @@ msgid "Roughen tweak" msgstr "" #: ../src/tweak-context.cpp:1064 +#, fuzzy msgid "Color paint tweak" -msgstr "" +msgstr "A cor non está definida" #: ../src/tweak-context.cpp:1068 +#, fuzzy msgid "Color jitter tweak" -msgstr "" +msgstr "Elixa o matiz da cor" #. check whether something is selected #: ../src/ui/clipboard.cpp:205 msgid "Nothing was copied." msgstr "Non se copiou nada." -#: ../src/ui/clipboard.cpp:266 ../src/ui/clipboard.cpp:428 +#: ../src/ui/clipboard.cpp:266 +#: ../src/ui/clipboard.cpp:428 #: ../src/ui/clipboard.cpp:452 msgid "Nothing on the clipboard." msgstr "Non hai nada no portarretallos." @@ -9283,19 +9064,18 @@ msgstr "Non hai nada no portarretallos." msgid "Select object(s) to paste style to." msgstr "Seleccione algún obxecto ó que pegarlle o estilo." -#: ../src/ui/clipboard.cpp:294 ../src/ui/clipboard.cpp:311 -#, fuzzy +#: ../src/ui/clipboard.cpp:294 +#: ../src/ui/clipboard.cpp:311 msgid "No style on the clipboard." -msgstr "Non hai nada no portarretallos." +msgstr "Non hai ningún estilo no portarretallos." #: ../src/ui/clipboard.cpp:333 msgid "Select object(s) to paste size to." msgstr "Seleccione algún obxecto ó que pegarlle o tamaño." #: ../src/ui/clipboard.cpp:340 -#, fuzzy msgid "No size on the clipboard." -msgstr "Non hai nada no portarretallos." +msgstr "Non hai ningún tamaño no portarretallos." #: ../src/ui/clipboard.cpp:391 #, fuzzy @@ -9304,13 +9084,13 @@ msgstr "Seleccione algún obxecto ó que pegarlle o tamaño." #. no_effect: #: ../src/ui/clipboard.cpp:415 -#, fuzzy msgid "No effect on the clipboard." -msgstr "Non hai nada no portarretallos." +msgstr "Non hai ningún efecto no portarretallos." -#: ../src/ui/clipboard.cpp:435 ../src/ui/clipboard.cpp:462 +#: ../src/ui/clipboard.cpp:435 +#: ../src/ui/clipboard.cpp:462 msgid "Clipboard does not contain a path." -msgstr "" +msgstr "O portarretallos non contén ningún camiño." #. Item dialog #: ../src/ui/context-menu.cpp:100 @@ -9333,7 +9113,8 @@ msgid "Create link" msgstr "_Crea Ligazón" #. "Ungroup" -#: ../src/ui/context-menu.cpp:195 ../src/verbs.cpp:2279 +#: ../src/ui/context-menu.cpp:195 +#: ../src/verbs.cpp:2279 msgid "_Ungroup" msgstr "_Desagrupar" @@ -9344,8 +9125,9 @@ msgstr "_Propiedades da Ligazón" #. Select item #: ../src/ui/context-menu.cpp:241 +#, fuzzy msgid "_Follow Link" -msgstr "" +msgstr "Ligazón a %s" #. Reset transformations #: ../src/ui/context-menu.cpp:246 @@ -9405,12 +9187,12 @@ msgstr "_Licenza" msgid "about.svg" msgstr "about.svg" +# Créditos dos tradutores #. 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:338 -#, fuzzy msgid "translator-credits" -msgstr "_Tradutores" +msgstr "Leandro Regueiro (leandro.regueiro@gmail.com)" #: ../src/ui/dialog/align-and-distribute.cpp:234 #: ../src/ui/dialog/align-and-distribute.cpp:776 @@ -9463,13 +9245,14 @@ msgid "Randomize positions" msgstr "" #: ../src/ui/dialog/align-and-distribute.cpp:728 +#, fuzzy msgid "Distribute text baselines" -msgstr "" +msgstr "Buscar obxectos de texto" #: ../src/ui/dialog/align-and-distribute.cpp:748 #, fuzzy msgid "Align text baselines" -msgstr "Aliñar os lados esquerdos" +msgstr "Buscar obxectos de texto" #: ../src/ui/dialog/align-and-distribute.cpp:779 msgid "Connector network layout" @@ -9556,16 +9339,18 @@ msgid "Make vertical gaps between objects equal" msgstr "" #: ../src/ui/dialog/align-and-distribute.cpp:849 +#, fuzzy msgid "Distribute tops equidistantly" -msgstr "" +msgstr "_Aliñar e Distribuír..." #: ../src/ui/dialog/align-and-distribute.cpp:852 msgid "Distribute centers equidistantly vertically" msgstr "" #: ../src/ui/dialog/align-and-distribute.cpp:855 +#, fuzzy msgid "Distribute bottoms equidistantly" -msgstr "" +msgstr "_Aliñar e Distribuír..." #: ../src/ui/dialog/align-and-distribute.cpp:860 msgid "Distribute baseline anchors of texts horizontally" @@ -9584,12 +9369,8 @@ msgid "Unclump objects: try to equalize edge-to-edge distances" msgstr "" #: ../src/ui/dialog/align-and-distribute.cpp:876 -msgid "" -"Move objects as little as possible so that their bounding boxes do not " -"overlap" -msgstr "" -"Mover os obxectos o mínimo posible de xeito que as súas caixas de contorno " -"non se superpoñan" +msgid "Move objects as little as possible so that their bounding boxes do not overlap" +msgstr "Mover os obxectos o mínimo posible de xeito que as súas caixas de contorno non se superpoñan" #: ../src/ui/dialog/align-and-distribute.cpp:880 #: ../src/widgets/toolbox.cpp:5588 @@ -9598,19 +9379,19 @@ msgstr "" #: ../src/ui/dialog/align-and-distribute.cpp:885 msgid "Align selected nodes horizontally" -msgstr "" +msgstr "Aliñar horizontalmente os nodos seleccionados" #: ../src/ui/dialog/align-and-distribute.cpp:888 msgid "Align selected nodes vertically" -msgstr "" +msgstr "Aliñar verticalmente os nodos seleccionados" #: ../src/ui/dialog/align-and-distribute.cpp:891 msgid "Distribute selected nodes horizontally" -msgstr "" +msgstr "Distribuír horizontalmente os nodos seleccionados" #: ../src/ui/dialog/align-and-distribute.cpp:894 msgid "Distribute selected nodes vertically" -msgstr "" +msgstr "Distribuír verticalmente os nodos seleccionados" #. Rest of the widgetry #: ../src/ui/dialog/align-and-distribute.cpp:899 @@ -9673,9 +9454,7 @@ msgstr "Amo_sar a sombra do bordo" #: ../src/ui/dialog/document-properties.cpp:90 msgid "If set, page border shows a shadow on its right and lower side" -msgstr "" -"Se está marcado, o bordo da páxina amosa unha sombra nos lados inferior e " -"dereito" +msgstr "Se está marcado, o bordo da páxina amosa unha sombra nos lados inferior e dereito" #: ../src/ui/dialog/document-properties.cpp:91 msgid "Back_ground:" @@ -9686,11 +9465,8 @@ msgid "Background color" msgstr "Cor do fondo" #: ../src/ui/dialog/document-properties.cpp:91 -msgid "" -"Color and transparency of the page background (also used for bitmap export)" -msgstr "" -"Cor e transparencia do fondo da páxina (tamén se usa para a exportación de " -"mapa de bits)" +msgid "Color and transparency of the page background (also used for bitmap export)" +msgstr "Cor e transparencia do fondo da páxina (tamén se usa para a exportación de mapa de bits)" #: ../src/ui/dialog/document-properties.cpp:92 msgid "Border _color:" @@ -9723,10 +9499,7 @@ msgid "_Snap guides while dragging" msgstr "" #: ../src/ui/dialog/document-properties.cpp:98 -msgid "" -"While dragging a guide, snap to object nodes or bounding box corners ('Snap " -"to nodes' or 'snap to bounding box corners' must be enabled in the 'Snap' " -"tab; only a small part of the guide near the cursor will snap)" +msgid "While dragging a guide, snap to object nodes or bounding box corners ('Snap to nodes' or 'snap to bounding box corners' must be enabled in the 'Snap' tab; only a small part of the guide near the cursor will snap)" msgstr "" #: ../src/ui/dialog/document-properties.cpp:100 @@ -9755,16 +9528,19 @@ msgstr "Cor dunha liña-guía cando está debaixo do rato" #. --------------------------------------------------------------- #: ../src/ui/dialog/document-properties.cpp:103 +#, fuzzy msgid "_Enable snapping" -msgstr "" +msgstr "Habilitar a edición de degradados" -#: ../src/ui/dialog/document-properties.cpp:103 ../src/verbs.cpp:2498 +#: ../src/ui/dialog/document-properties.cpp:103 +#: ../src/verbs.cpp:2498 msgid "Toggle snapping on or off" msgstr "" #: ../src/ui/dialog/document-properties.cpp:104 +#, fuzzy msgid "_Enable snap indicator" -msgstr "" +msgstr "Habilitar a edición de degradados" #: ../src/ui/dialog/document-properties.cpp:104 msgid "After snapping, a symbol is drawn at the point that has snapped" @@ -9773,41 +9549,35 @@ msgstr "" #: ../src/ui/dialog/document-properties.cpp:105 #, fuzzy msgid "_Bounding box corners" -msgstr "Axustar as caixas de contorno ás g_uías" +msgstr "Escalar as esquinas redondeadas" #: ../src/ui/dialog/document-properties.cpp:105 -msgid "" -"Only available in the selector tool: snap bounding box corners to guides, to " -"grids, and to other bounding boxes (but not to nodes or paths)" +msgid "Only available in the selector tool: snap bounding box corners to guides, to grids, and to other bounding boxes (but not to nodes or paths)" msgstr "" #: ../src/ui/dialog/document-properties.cpp:107 -#, fuzzy msgid "_Nodes" -msgstr "Nodos" +msgstr "_Nodos" #: ../src/ui/dialog/document-properties.cpp:107 -msgid "" -"Snap nodes (e.g. path nodes, special points in shapes, gradient handles, " -"text base points, transformation origins, etc.) to guides, to grids, to " -"paths and to other nodes" +msgid "Snap nodes (e.g. path nodes, special points in shapes, gradient handles, text base points, transformation origins, etc.) to guides, to grids, to paths and to other nodes" msgstr "" #. Options for snapping to objects #: ../src/ui/dialog/document-properties.cpp:110 #, fuzzy msgid "Snap to path_s" -msgstr "Engadir nodos" +msgstr "Obxecto a camiño" #: ../src/ui/dialog/document-properties.cpp:110 #, fuzzy msgid "Snap nodes to object paths" -msgstr "Axustar os nodos á reixa" +msgstr "Converte-lo trazo dos obxectos seleccionados en camiños" #: ../src/ui/dialog/document-properties.cpp:111 #, fuzzy msgid "Snap to n_odes" -msgstr "Engadir nodos" +msgstr "Obxecto a camiño" #: ../src/ui/dialog/document-properties.cpp:111 #, fuzzy @@ -9836,7 +9606,7 @@ msgstr "A_xustar as caixas de contorno á reixa" #: ../src/ui/dialog/document-properties.cpp:114 #, fuzzy msgid "Snap to page border" -msgstr "Amosa-lo _bordo da páxina" +msgstr "A_daptar a páxina á selección" #: ../src/ui/dialog/document-properties.cpp:114 #, fuzzy @@ -9846,18 +9616,16 @@ msgstr "A_xustar as caixas de contorno á reixa" #. --------------------------------------------------------------- #. Applies to both nodes and guides, but not to bboxes, that's why its located here #: ../src/ui/dialog/document-properties.cpp:117 -#, fuzzy msgid "Rotation _center" -msgstr "_Rotación" +msgstr "_Centro de rotación" #: ../src/ui/dialog/document-properties.cpp:117 msgid "Consider the rotation center of an object when snapping" msgstr "" #: ../src/ui/dialog/document-properties.cpp:118 -#, fuzzy msgid "_Grid with guides" -msgstr "Reixa/Guías" +msgstr "Reixa con _guías" #: ../src/ui/dialog/document-properties.cpp:118 msgid "Snap to grid-guide intersections" @@ -9866,47 +9634,40 @@ msgstr "" #: ../src/ui/dialog/document-properties.cpp:119 #, fuzzy msgid "_Line segments" -msgstr "Degradado linear" +msgstr "Número de segmentos" #: ../src/ui/dialog/document-properties.cpp:119 -msgid "" -"Snap to intersections of line segments ('snap to paths' must be enabled, see " -"the previous tab)" +msgid "Snap to intersections of line segments ('snap to paths' must be enabled, see the previous tab)" msgstr "" #. TRANSLATORS: In Grid|_New translate only the word _New. It ref to grid #: ../src/ui/dialog/document-properties.cpp:124 -#, fuzzy msgid "Grid|_New" -msgstr "Reixa" +msgstr "_Nova" #: ../src/ui/dialog/document-properties.cpp:124 -#, fuzzy msgid "Create new grid." -msgstr "Crear elipse" +msgstr "Crear unha nova reixa." #: ../src/ui/dialog/document-properties.cpp:125 -#, fuzzy msgid "_Remove" -msgstr "Eli_minar" +msgstr "_Eliminar" #: ../src/ui/dialog/document-properties.cpp:125 -#, fuzzy msgid "Remove selected grid." -msgstr "Manter seleccionado" +msgstr "Eliminar a reixa seleccionada." #: ../src/ui/dialog/document-properties.cpp:135 -#, fuzzy msgid "Guides" -msgstr "G_uías" +msgstr "Guías" #: ../src/ui/dialog/document-properties.cpp:136 #: ../src/ui/dialog/inkscape-preferences.cpp:905 -#, fuzzy msgid "Grids" -msgstr "Reixa" +msgstr "Reixas" -#: ../src/ui/dialog/document-properties.cpp:137 ../src/verbs.cpp:2498 +#: ../src/ui/dialog/document-properties.cpp:137 +#: ../src/verbs.cpp:2498 #, fuzzy msgid "Snap" msgstr "Axustar" @@ -9954,14 +9715,10 @@ msgstr "" #: ../src/ui/dialog/document-properties.cpp:279 #, fuzzy msgid "Always snap to objects, regardless of their distance" -msgstr "" -"Se está marcado, cando un obxecto se move axústase ó obxecto máis próximo, " -"sen ter en conta a distancia" +msgstr "Se está marcado, cando un obxecto se move axústase ó obxecto máis próximo, sen ter en conta a distancia" #: ../src/ui/dialog/document-properties.cpp:280 -msgid "" -"If set, objects only snap to another object when it's within the range " -"specified below" +msgid "If set, objects only snap to another object when it's within the range specified below" msgstr "" #. Options for snapping to grids @@ -9981,14 +9738,10 @@ msgstr "" #: ../src/ui/dialog/document-properties.cpp:285 #, fuzzy msgid "Always snap to grids, regardless of the distance" -msgstr "" -"Se está marcado, cando un obxecto se move axústase ó obxecto máis próximo, " -"sen ter en conta a distancia" +msgstr "Se está marcado, cando un obxecto se move axústase ó obxecto máis próximo, sen ter en conta a distancia" #: ../src/ui/dialog/document-properties.cpp:286 -msgid "" -"If set, objects only snap to a grid line when it's within the range " -"specified below" +msgid "If set, objects only snap to a grid line when it's within the range specified below" msgstr "" #. Options for snapping to guides @@ -10008,14 +9761,10 @@ msgstr "" #: ../src/ui/dialog/document-properties.cpp:291 #, fuzzy msgid "Always snap to guides, regardless of the distance" -msgstr "" -"Se está marcado, cando un obxecto se move axústase ó obxecto máis próximo, " -"sen ter en conta a distancia" +msgstr "Se está marcado, cando un obxecto se move axústase ó obxecto máis próximo, sen ter en conta a distancia" #: ../src/ui/dialog/document-properties.cpp:292 -msgid "" -"If set, objects only snap to a guide when it's within the range specified " -"below" +msgid "If set, objects only snap to a guide when it's within the range specified below" msgstr "" #: ../src/ui/dialog/document-properties.cpp:315 @@ -10031,22 +9780,22 @@ msgstr "Rectángulo" #: ../src/ui/dialog/document-properties.cpp:319 #, fuzzy msgid "Snap to objects" -msgstr "Guías" +msgstr "Obxectos a guías" #: ../src/ui/dialog/document-properties.cpp:321 #, fuzzy msgid "Snap to grids" -msgstr "Xeral" +msgstr "Obxecto a camiño" #: ../src/ui/dialog/document-properties.cpp:323 #, fuzzy msgid "Snap to guides" -msgstr "Guías" +msgstr "Obxectos a guías" #: ../src/ui/dialog/document-properties.cpp:361 #, fuzzy msgid "Snapping to intersections of" -msgstr "Xeral" +msgstr "Obxecto a camiño" #: ../src/ui/dialog/document-properties.cpp:363 #, fuzzy @@ -10054,9 +9803,8 @@ msgid "Special points to consider" msgstr "Guías" #: ../src/ui/dialog/document-properties.cpp:433 -#, fuzzy msgid "Creation" -msgstr " _Crear " +msgstr "Creación" #: ../src/ui/dialog/document-properties.cpp:434 #, fuzzy @@ -10064,9 +9812,8 @@ msgid "Defined grids" msgstr "Xeral" #: ../src/ui/dialog/document-properties.cpp:650 -#, fuzzy msgid "Remove grid" -msgstr "Eli_minar" +msgstr "Eliminar a reixa" #: ../src/ui/dialog/export.cpp:32 msgid "Export" @@ -10077,7 +9824,8 @@ msgid "Information" msgstr "Información" #: ../src/ui/dialog/extension-editor.cpp:81 -#: ../share/extensions/lindenmayer.inx.h:3 ../share/extensions/measure.inx.h:2 +#: ../share/extensions/lindenmayer.inx.h:3 +#: ../share/extensions/measure.inx.h:2 msgid "Help" msgstr "Axuda" @@ -10086,38 +9834,33 @@ msgid "Parameters" msgstr "Parámetros" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:382 -#, fuzzy msgid "No preview" -msgstr "Previsualización" +msgstr "Sen previsualización" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:488 msgid "too large for preview" msgstr "" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:577 -#, fuzzy msgid "Enable preview" -msgstr "Previsualización" +msgstr "Activar a previsualización" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:711 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:712 #: ../src/ui/dialog/filedialogimpl-win32.cpp:198 -#, fuzzy msgid "All Inkscape Files" -msgstr "Tódalas figuras" +msgstr "Tódolos ficheiros de Inkscape" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:716 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:717 #: ../src/ui/dialog/filedialogimpl-win32.cpp:197 -#, fuzzy msgid "All Files" -msgstr "Tódolos tipos" +msgstr "Tódolos ficheiros" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:722 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:723 -#, fuzzy msgid "All Images" -msgstr "Imaxes" +msgstr "Tódalas imaxes" #. ###### Add the file types menu #. createFilterMenu(); @@ -10131,69 +9874,65 @@ msgstr "" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1042 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1294 -#, fuzzy msgid "Guess from extension" -msgstr "Coller da selección" +msgstr "Escoller en base á extensión" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1315 +#, fuzzy msgid "Left edge of source" -msgstr "" +msgstr "Detección Óptima de Bordos" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1316 +#, fuzzy msgid "Top edge of source" -msgstr "" +msgstr "Detección Óptima de Bordos" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1317 #, fuzzy msgid "Right edge of source" -msgstr "Fonte" +msgstr "Detección Óptima de Bordos" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1318 +#, fuzzy msgid "Bottom edge of source" -msgstr "" +msgstr "Detección Óptima de Bordos" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1319 -#, fuzzy msgid "Source width" -msgstr "Escalar o ancho do trazado" +msgstr "Ancho da fonte" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1320 -#, fuzzy msgid "Source height" -msgstr "Alto:" +msgstr "Alto da fonte" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1321 #, fuzzy msgid "Destination width" -msgstr "Destino da Impresión" +msgstr "Ancho, alto:" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1322 #, fuzzy msgid "Destination height" -msgstr "Destino da Impresión" +msgstr "Ancho, alto:" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1323 -#, fuzzy msgid "Resolution (dots per inch)" -msgstr "Resolución preferida do mapa de bits (puntos por polgada)" +msgstr "Resolución (puntos por polgada)" #. ######################################### #. ## EXTRA WIDGET -- SOURCE SIDE #. ######################################### #. ##### Export options buttons/spinners, etc #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1360 -#, fuzzy msgid "Document" msgstr "Documento" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1372 #: ../share/extensions/color_custom.inx.h:3 -#, fuzzy msgid "Custom" -msgstr "_Personalizado" +msgstr "Personalizado" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1412 -#, fuzzy msgid "Cairo" msgstr "Cairo" @@ -10202,32 +9941,26 @@ msgid "Antialias" msgstr "" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1418 -#, fuzzy msgid "Background" -msgstr "_Fondo:" +msgstr "Fondo" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1441 -#, fuzzy msgid "Destination" -msgstr "Destino da Impresión" +msgstr "Destino" #: ../src/ui/dialog/filedialogimpl-win32.cpp:199 -#, fuzzy msgid "All Image Files" -msgstr "Imaxes" +msgstr "Tódolos ficheiros de imaxe" #: ../src/ui/dialog/filedialogimpl-win32.cpp:428 -#, fuzzy msgid "Show Preview" -msgstr "Previsualización" +msgstr "Mostrar previsualización" #: ../src/ui/dialog/filedialogimpl-win32.cpp:564 -#, fuzzy msgid "No file selected" -msgstr "Non se seleccionou ningún documento" +msgstr "Non se seleccionou ningún ficheiro" #: ../src/ui/dialog/fill-and-stroke.cpp:53 -#, fuzzy msgid "Fill" msgstr "Recheo" @@ -10240,22 +9973,16 @@ msgid "Stroke st_yle" msgstr "E_stilo do trazo" #: ../src/ui/dialog/filter-effects-dialog.cpp:504 -msgid "" -"This matrix determines a linear transform on colour space. Each line affects " -"one of the color components. Each column determines how much of each color " -"component from the input is passed to the output. The last column does not " -"depend on input colors, so can be used to adjust a constant component value." +msgid "This matrix determines a linear transform on colour space. Each line affects one of the color components. Each column determines how much of each color component from the input is passed to the output. The last column does not depend on input colors, so can be used to adjust a constant component value." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:614 -#, fuzzy msgid "Image File" -msgstr "Imaxe" +msgstr "Ficheiro de imaxe" #: ../src/ui/dialog/filter-effects-dialog.cpp:617 -#, fuzzy msgid "Selected SVG Element" -msgstr "Borrar o nodo" +msgstr "Elemento SVG seleccionado" #. TODO: any image, not justy svg #: ../src/ui/dialog/filter-effects-dialog.cpp:686 @@ -10265,16 +9992,15 @@ msgstr "Seleccione unha imaxe e unha ou máis figuras enriba dela" #: ../src/ui/dialog/filter-effects-dialog.cpp:778 msgid "This SVG filter effect does not require any parameters." -msgstr "" +msgstr "Este efecto de filtro SVG non require ningún parámetro." #: ../src/ui/dialog/filter-effects-dialog.cpp:784 msgid "This SVG filter effect is not yet implemented in Inkscape." -msgstr "" +msgstr "Este efecto de filtro SVG ainda non foi implementado en Inkscape." #: ../src/ui/dialog/filter-effects-dialog.cpp:975 -#, fuzzy msgid "Light Source:" -msgstr "Fonte" +msgstr "Fonte de luz:" #: ../src/ui/dialog/filter-effects-dialog.cpp:992 msgid "Direction angle for the light source on the XY plane, in degrees" @@ -10289,35 +10015,31 @@ msgstr "" #. default z: #: ../src/ui/dialog/filter-effects-dialog.cpp:996 #: ../src/ui/dialog/filter-effects-dialog.cpp:999 -#, fuzzy msgid "Location" -msgstr "_Rotación" +msgstr "Situación" #: ../src/ui/dialog/filter-effects-dialog.cpp:996 #: ../src/ui/dialog/filter-effects-dialog.cpp:999 #: ../src/ui/dialog/filter-effects-dialog.cpp:1002 -#, fuzzy msgid "X coordinate" -msgstr "Coordenadas do cursor" +msgstr "Coordenada X" #: ../src/ui/dialog/filter-effects-dialog.cpp:996 #: ../src/ui/dialog/filter-effects-dialog.cpp:999 #: ../src/ui/dialog/filter-effects-dialog.cpp:1002 -#, fuzzy msgid "Y coordinate" -msgstr "Coordenadas do cursor" +msgstr "Coordenada Y" #: ../src/ui/dialog/filter-effects-dialog.cpp:996 #: ../src/ui/dialog/filter-effects-dialog.cpp:999 #: ../src/ui/dialog/filter-effects-dialog.cpp:1002 -#, fuzzy msgid "Z coordinate" -msgstr "Coordenadas do cursor" +msgstr "Coordenada Z" #: ../src/ui/dialog/filter-effects-dialog.cpp:1002 #, fuzzy msgid "Points At" -msgstr "Puntos" +msgstr "píxels con" #: ../src/ui/dialog/filter-effects-dialog.cpp:1003 msgid "Specular Exponent" @@ -10331,107 +10053,93 @@ msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:1005 #, fuzzy msgid "Cone Angle" -msgstr "Ángulo" +msgstr "Ángulo (graos):" #: ../src/ui/dialog/filter-effects-dialog.cpp:1005 -msgid "" -"This is the angle between the spot light axis (i.e. the axis between the " -"light source and the point to which it is pointing at) and the spot light " -"cone. No light is projected outside this cone." +msgid "This is the angle between the spot light axis (i.e. the axis between the light source and the point to which it is pointing at) and the spot light cone. No light is projected outside this cone." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:1065 msgid "New light source" -msgstr "" +msgstr "Nova fonte de luz" #: ../src/ui/dialog/filter-effects-dialog.cpp:1106 -#, fuzzy msgid "_Duplicate" -msgstr "Duplicar" +msgstr "_Duplicar" #: ../src/ui/dialog/filter-effects-dialog.cpp:1132 -#, fuzzy msgid "_Filter" -msgstr "milímetros" +msgstr "_Filtro" #: ../src/ui/dialog/filter-effects-dialog.cpp:1146 -#, fuzzy msgid "R_ename" msgstr "_Renomear" #: ../src/ui/dialog/filter-effects-dialog.cpp:1240 -#, fuzzy msgid "Rename filter" -msgstr "Eli_minar" +msgstr "Renomear o filtro" #: ../src/ui/dialog/filter-effects-dialog.cpp:1276 -#, fuzzy msgid "Apply filter" -msgstr "Engadir Capa" +msgstr "Engadir o filtro" #: ../src/ui/dialog/filter-effects-dialog.cpp:1352 -#, fuzzy msgid "Add filter" -msgstr "Engadir Capa" +msgstr "Engadir o filtro" #: ../src/ui/dialog/filter-effects-dialog.cpp:1378 -#, fuzzy msgid "Duplicate filter" -msgstr "Duplicar o nodo" +msgstr "Duplicar o filtro" #: ../src/ui/dialog/filter-effects-dialog.cpp:1445 -#, fuzzy msgid "_Effect" -msgstr "Efe_ctos" +msgstr "_Efecto" #: ../src/ui/dialog/filter-effects-dialog.cpp:1453 -#, fuzzy msgid "Connections" -msgstr "Conectador" +msgstr "Conexións" #: ../src/ui/dialog/filter-effects-dialog.cpp:1569 +#, fuzzy msgid "Remove filter primitive" -msgstr "" +msgstr "Eliminar a reixa seleccionada." #: ../src/ui/dialog/filter-effects-dialog.cpp:1940 #, fuzzy msgid "Remove merge node" -msgstr "Eli_minar" +msgstr "Novo nodo" #: ../src/ui/dialog/filter-effects-dialog.cpp:2056 +#, fuzzy msgid "Reorder filter primitive" -msgstr "" +msgstr "Arrastre para reordenar os nodos" #: ../src/ui/dialog/filter-effects-dialog.cpp:2092 -#, fuzzy msgid "Add Effect:" -msgstr "Efe_ctos" +msgstr "Engadir o efecto:" #: ../src/ui/dialog/filter-effects-dialog.cpp:2093 -#, fuzzy msgid "No effect selected" -msgstr "Non se seleccionou ningún documento" +msgstr "Non se seleccionou ningún efecto" #: ../src/ui/dialog/filter-effects-dialog.cpp:2094 -#, fuzzy msgid "No filter selected" -msgstr "Non se seleccionou ningún documento" +msgstr "Non se seleccionou ningún filtro" #: ../src/ui/dialog/filter-effects-dialog.cpp:2130 -#, fuzzy msgid "Effect parameters" -msgstr "Rectángulo" +msgstr "Parámetros do efecto" #: ../src/ui/dialog/filter-effects-dialog.cpp:2131 +#, fuzzy msgid "Filter General Settings" -msgstr "" +msgstr "Configuración do Efecto Anterior..." #. default x: #. default y: #: ../src/ui/dialog/filter-effects-dialog.cpp:2187 -#, fuzzy msgid "Coordinates" -msgstr "Coordenadas do cursor" +msgstr "Coordenadas" #: ../src/ui/dialog/filter-effects-dialog.cpp:2187 #, fuzzy @@ -10446,9 +10154,8 @@ msgstr "" #. default height: #: ../src/ui/dialog/filter-effects-dialog.cpp:2188 #: ../share/extensions/dimension.inx.h:1 -#, fuzzy msgid "Dimensions" -msgstr "Di_visión" +msgstr "Dimensións" #: ../src/ui/dialog/filter-effects-dialog.cpp:2188 #, fuzzy @@ -10463,24 +10170,19 @@ msgstr "Alto da selección" #. # end multiple scan #. ## end mode page #: ../src/ui/dialog/filter-effects-dialog.cpp:2191 -#: ../src/ui/dialog/tracedialog.cpp:553 ../src/widgets/toolbox.cpp:3328 +#: ../src/ui/dialog/tracedialog.cpp:553 +#: ../src/widgets/toolbox.cpp:3328 #: ../share/extensions/triangle.inx.h:9 -#, fuzzy msgid "Mode" -msgstr "Mover" +msgstr "Modo" #: ../src/ui/dialog/filter-effects-dialog.cpp:2194 -msgid "" -"Indicates the type of matrix operation. The keyword 'matrix' indicates that " -"a full 5x4 matrix of values will be provided. The other keywords represent " -"convenience shortcuts to allow commonly used color operations to be " -"performed without specifying a complete matrix." +msgid "Indicates the type of matrix operation. The keyword 'matrix' indicates that a full 5x4 matrix of values will be provided. The other keywords represent convenience shortcuts to allow commonly used color operations to be performed without specifying a complete matrix." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2195 -#, fuzzy msgid "Value(s)" -msgstr "Valor" +msgstr "Valores" #: ../src/ui/dialog/filter-effects-dialog.cpp:2209 #: ../src/ui/dialog/filter-effects-dialog.cpp:2250 @@ -10496,10 +10198,7 @@ msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2211 #: ../src/ui/dialog/filter-effects-dialog.cpp:2212 #: ../src/ui/dialog/filter-effects-dialog.cpp:2213 -msgid "" -"If the arithmetic operation is chosen, each result pixel is computed using " -"the formula k1*i1*i2 + k2*i1 + k3*i2 + k4 where i1 and i2 are the pixel " -"values of the first and second inputs respectively." +msgid "If the arithmetic operation is chosen, each result pixel is computed using the formula k1*i1*i2 + k2*i1 + k3*i2 + k4 where i1 and i2 are the pixel values of the first and second inputs respectively." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2211 @@ -10517,14 +10216,13 @@ msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2216 #, fuzzy msgid "width of the convolve matrix" -msgstr "Ancho do papel" +msgstr "Escalar o ancho do trazado" #: ../src/ui/dialog/filter-effects-dialog.cpp:2216 #, fuzzy msgid "height of the convolve matrix" -msgstr "Alto do rectángulo que se vai encher" +msgstr "Pegar Alto por Separado" -# Rosetta #. default x: #. default y: #: ../src/ui/dialog/filter-effects-dialog.cpp:2217 @@ -10533,15 +10231,11 @@ msgid "Target" msgstr "Obxectivo:" #: ../src/ui/dialog/filter-effects-dialog.cpp:2217 -msgid "" -"X coordinate of the target point in the convolve matrix. The convolution is " -"applied to pixels around this point." +msgid "X coordinate of the target point in the convolve matrix. The convolution is applied to pixels around this point." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2217 -msgid "" -"Y coordinate of the target point in the convolve matrix. The convolution is " -"applied to pixels around this point." +msgid "Y coordinate of the target point in the convolve matrix. The convolution is applied to pixels around this point." msgstr "" #. TRANSLATORS: for info on "Kernel", see http://en.wikipedia.org/wiki/Kernel_(matrix) @@ -10550,13 +10244,7 @@ msgid "Kernel" msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2219 -msgid "" -"This matrix describes the convolve operation that is applied to the input " -"image in order to calculate the pixel colors at the output. Different " -"arrangements of values in this matrix result in various possible visual " -"effects. An identity matrix would lead to a motion blur effect (parallel to " -"the matrix diagonal) while a matrix filled with a constant non-zero value " -"would lead to a common blur effect." +msgid "This matrix describes the convolve operation that is applied to the input image in order to calculate the pixel colors at the output. Different arrangements of values in this matrix result in various possible visual effects. An identity matrix would lead to a motion blur effect (parallel to the matrix diagonal) while a matrix filled with a constant non-zero value would lead to a common blur effect." msgstr "" #. TODO: svg spec: The default value is the sum of all values in kernelMatrix, with the exception that if the sum is zero, then the divisor is set to 1. @@ -10566,11 +10254,7 @@ msgid "Divisor" msgstr "Di_visión" #: ../src/ui/dialog/filter-effects-dialog.cpp:2222 -msgid "" -"After applying the kernelMatrix to the input image to yield a number, that " -"number is divided by divisor to yield the final destination color value. A " -"divisor that is the sum of all the matrix values tends to have an evening " -"effect on the overall color intensity of the result." +msgid "After applying the kernelMatrix to the input image to yield a number, that number is divided by divisor to yield the final destination color value. A divisor that is the sum of all the matrix values tends to have an evening effect on the overall color intensity of the result." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2223 @@ -10578,27 +10262,22 @@ msgid "Bias" msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2223 -msgid "" -"This value is added to each component. This is useful to define a constant " -"value as the zero response of the filter." +msgid "This value is added to each component. This is useful to define a constant value as the zero response of the filter." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2224 #, fuzzy msgid "Edge Mode" -msgstr "Mover" +msgstr "Modo de _visualización" #: ../src/ui/dialog/filter-effects-dialog.cpp:2224 -msgid "" -"Determines how to extend the input image as necessary with color values so " -"that the matrix operations can be applied when the kernel is positioned at " -"or near the edge of the input image." +msgid "Determines how to extend the input image as necessary with color values so that the matrix operations can be applied when the kernel is positioned at or near the edge of the input image." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2225 #, fuzzy msgid "Preserve Alpha" -msgstr "Conservar" +msgstr " alfa %.3g" #: ../src/ui/dialog/filter-effects-dialog.cpp:2225 msgid "If set, the alpha channel won't be altered by this filter primitive." @@ -10608,7 +10287,7 @@ msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2228 #, fuzzy msgid "Diffuse Color" -msgstr "Visible" +msgstr "Cor inicial:" #: ../src/ui/dialog/filter-effects-dialog.cpp:2228 #: ../src/ui/dialog/filter-effects-dialog.cpp:2261 @@ -10619,13 +10298,11 @@ msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2262 #, fuzzy msgid "Surface Scale" -msgstr "Punta cadrada" +msgstr "Escalar proporcionalmente" #: ../src/ui/dialog/filter-effects-dialog.cpp:2229 #: ../src/ui/dialog/filter-effects-dialog.cpp:2262 -msgid "" -"This value amplifies the heights of the bump map defined by the input alpha " -"channel" +msgid "This value amplifies the heights of the bump map defined by the input alpha channel" msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2230 @@ -10641,8 +10318,9 @@ msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2231 #: ../src/ui/dialog/filter-effects-dialog.cpp:2265 +#, fuzzy msgid "Kernel Unit Length" -msgstr "" +msgstr "Ancho en unidades de lonxitude" #: ../src/ui/dialog/filter-effects-dialog.cpp:2235 msgid "This defines the intensity of the displacement effect." @@ -10670,7 +10348,7 @@ msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2240 #, fuzzy msgid "Flood Color" -msgstr "Cor de recheo:" +msgstr "Cor inicial:" #: ../src/ui/dialog/filter-effects-dialog.cpp:2240 msgid "The whole filter region will be filled with this color." @@ -10693,19 +10371,21 @@ msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2254 #, fuzzy msgid "Source of Image" -msgstr "Número de Niveis" +msgstr "Fonte da Imaxe" #: ../src/ui/dialog/filter-effects-dialog.cpp:2257 +#, fuzzy msgid "Delta X" -msgstr "" +msgstr "Delta X" #: ../src/ui/dialog/filter-effects-dialog.cpp:2257 msgid "This is how far the input image gets shifted to the right" msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2258 +#, fuzzy msgid "Delta Y" -msgstr "" +msgstr "Delta Y" #: ../src/ui/dialog/filter-effects-dialog.cpp:2258 msgid "This is how far the input image gets shifted downwards" @@ -10713,9 +10393,8 @@ msgstr "" #. default: white #: ../src/ui/dialog/filter-effects-dialog.cpp:2261 -#, fuzzy msgid "Specular Color" -msgstr "Cor da Fase" +msgstr "Cor especular" #: ../src/ui/dialog/filter-effects-dialog.cpp:2264 #: ../share/extensions/interp.inx.h:2 @@ -10727,9 +10406,7 @@ msgid "Exponent for specular term, larger is more \"shiny\"." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2273 -msgid "" -"Indicates whether the filter primitive should perform a noise or turbulence " -"function." +msgid "Indicates whether the filter primitive should perform a noise or turbulence function." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2274 @@ -10755,124 +10432,73 @@ msgid "Add filter primitive" msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2304 -msgid "" -"The feBlend filter primitive provides 4 image blending modes: screen, " -"multiply, darken and lighten." +msgid "The feBlend filter primitive provides 4 image blending modes: screen, multiply, darken and lighten." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2308 -msgid "" -"The feColorMatrix filter primitive applies a matrix transformation to " -"colour of each rendered pixel. This allows for effects like turning object " -"to grayscale, modifying colour saturation and changing colour hue." +msgid "The feColorMatrix filter primitive applies a matrix transformation to colour of each rendered pixel. This allows for effects like turning object to grayscale, modifying colour saturation and changing colour hue." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2312 -msgid "" -"The feComponentTransfer filter primitive manipulates the input's " -"color components (red, green, blue, and alpha) according to particular " -"transfer functions, allowing operations like brightness and contrast " -"adjustment, color balance, and thresholding." +msgid "The feComponentTransfer filter primitive manipulates the input's color components (red, green, blue, and alpha) according to particular transfer functions, allowing operations like brightness and contrast adjustment, color balance, and thresholding." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2316 -msgid "" -"The feComposite filter primitive composites two images using one of " -"the Porter-Duff blending modes or the aritmetic mode described in SVG " -"standard. Porter-Duff blending modes are essentially logical operations " -"between the corresponding pixel values of the images." +msgid "The feComposite filter primitive composites two images using one of the Porter-Duff blending modes or the aritmetic mode described in SVG standard. Porter-Duff blending modes are essentially logical operations between the corresponding pixel values of the images." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2320 -msgid "" -"The feConvolveMatrix lets you specify a Convolution to be applied on " -"the image. Common effects created using convolution matrices are blur, " -"sharpening, embossing and edge detection. Note that while gaussian blur can " -"be created using this filter primitive, the special gaussian blur primitive " -"is faster and resolution-independent." +msgid "The feConvolveMatrix lets you specify a Convolution to be applied on the image. Common effects created using convolution matrices are blur, sharpening, embossing and edge detection. Note that while gaussian blur can be created using this filter primitive, the special gaussian blur primitive is faster and resolution-independent." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2324 -msgid "" -"The feDiffuseLighting and feSpecularLighting filter primitives create " -"\"embossed\" shadings. The input's alpha channel is used to provide depth " -"information: higher opacity areas are raised toward the viewer and lower " -"opacity areas recede away from the viewer." +msgid "The feDiffuseLighting and feSpecularLighting filter primitives create \"embossed\" shadings. The input's alpha channel is used to provide depth information: higher opacity areas are raised toward the viewer and lower opacity areas recede away from the viewer." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2328 -msgid "" -"The feDisplacementMap filter primitive displaces the pixels in the " -"first input using the second input as a displacement map, that shows from " -"how far the pixel should come from. Classical examples are whirl and pinch " -"effects." +msgid "The feDisplacementMap filter primitive displaces the pixels in the first input using the second input as a displacement map, that shows from how far the pixel should come from. Classical examples are whirl and pinch effects." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2332 -msgid "" -"The feFlood filter primitive fills the region with a given color and " -"opacity. It is usually used as an input to other filters to apply color to " -"a graphic." +msgid "The feFlood filter primitive fills the region with a given color and opacity. It is usually used as an input to other filters to apply color to a graphic." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2336 -msgid "" -"The feGaussianBlur filter primitive uniformly blurs its input. It is " -"commonly used together with feOffset to create a drop shadow effect." +msgid "The feGaussianBlur filter primitive uniformly blurs its input. It is commonly used together with feOffset to create a drop shadow effect." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2340 -msgid "" -"The feImage filter primitive fills the region with an external image " -"or another part of the document." +msgid "The feImage filter primitive fills the region with an external image or another part of the document." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2344 -msgid "" -"The feMerge filter primitive composites several temporary images " -"inside the filter primitive to a single image. It uses normal alpha " -"compositing for this. This is equivalent to using several feBlend primitives " -"in 'normal' mode or several feComposite primitives in 'over' mode." +msgid "The feMerge filter primitive composites several temporary images inside the filter primitive to a single image. It uses normal alpha compositing for this. This is equivalent to using several feBlend primitives in 'normal' mode or several feComposite primitives in 'over' mode." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2348 -msgid "" -"The feMorphology filter primitive provides erode and dilate effects. " -"For single-colour objects erode makes the object thinner and dilate makes it " -"thicker." +msgid "The feMorphology filter primitive provides erode and dilate effects. For single-colour objects erode makes the object thinner and dilate makes it thicker." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2352 -msgid "" -"The feOffset filter primitive offsets the image by an user-defined " -"amount. For example, this is useful for drop shadows, where the shadow is in " -"a slightly different position than the actual object." +msgid "The feOffset filter primitive offsets the image by an user-defined amount. For example, this is useful for drop shadows, where the shadow is in a slightly different position than the actual object." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2356 -msgid "" -"The feDiffuseLighting and feSpecularLighting filter primitives create " -"\"embossed\" shadings. The input's alpha channel is used to provide depth " -"information: higher opacity areas are raised toward the viewer and lower " -"opacity areas recede away from the viewer." +msgid "The feDiffuseLighting and feSpecularLighting filter primitives create \"embossed\" shadings. The input's alpha channel is used to provide depth information: higher opacity areas are raised toward the viewer and lower opacity areas recede away from the viewer." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2360 -msgid "" -"The feTile filter primitive tiles a region with its input graphic" +msgid "The feTile filter primitive tiles a region with its input graphic" msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2364 -msgid "" -"The feTurbulence filter primitive renders Perlin noise. This kind of " -"noise is useful in simulating several nature phenomena like clouds, fire and " -"smoke and in generating complex textures like marble or granite." +msgid "The feTurbulence filter primitive renders Perlin noise. This kind of noise is useful in simulating several nature phenomena like clouds, fire and smoke and in generating complex textures like marble or granite." msgstr "" #: ../src/ui/dialog/filter-effects-dialog.cpp:2382 #, fuzzy msgid "Duplicate filter primitive" -msgstr "Duplica-la selección" +msgstr "Duplica-los obxectos seleccionados" #: ../src/ui/dialog/filter-effects-dialog.cpp:2435 #, fuzzy @@ -10898,45 +10524,32 @@ msgstr "píxels" #: ../src/ui/dialog/inkscape-preferences.cpp:150 #, fuzzy -msgid "" -"How close on the screen you need to be to an object to be able to grab it " -"with mouse (in screen pixels)" -msgstr "" -"Como de preto ten que estar na pantalla a un obxecto para poder collelo co " -"rato (en píxels da pantalla)" +msgid "How close on the screen you need to be to an object to be able to grab it with mouse (in screen pixels)" +msgstr "Como de preto ten que estar na pantalla a un obxecto para poder collelo co rato (en píxels da pantalla)" #: ../src/ui/dialog/inkscape-preferences.cpp:152 msgid "Click/drag threshold:" msgstr "Limiar de clic/arrastre:" #: ../src/ui/dialog/inkscape-preferences.cpp:153 -msgid "" -"Maximum mouse drag (in screen pixels) which is considered a click, not a drag" -msgstr "" -"Máximo arrastre do rato (en píxels da pantalla) que se considera un clic, e " -"non un arrastre" +msgid "Maximum mouse drag (in screen pixels) which is considered a click, not a drag" +msgstr "Máximo arrastre do rato (en píxels da pantalla) que se considera un clic, e non un arrastre" #: ../src/ui/dialog/inkscape-preferences.cpp:155 msgid "Use pressure-sensitive tablet (requires restart)" -msgstr "" +msgstr "Usar tableta sensible á presión (require reiniciar)" #: ../src/ui/dialog/inkscape-preferences.cpp:157 -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 " -"mouse)" -msgstr "" +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 mouse)" +msgstr "Usar as capacidades dunha tableta ou outro dispositivo sensible á presión. Desactive isto só se ten problemas ca tableta (se for así poderá continuar usando o rato)." #: ../src/ui/dialog/inkscape-preferences.cpp:159 #, fuzzy msgid "Switch tool based on tablet device (requires restart)" -msgstr "" -"Indica se as ventás de diálogo teñen un botón para pechalas (require " -"reiniciar)" +msgstr "Indica se as ventás de diálogo teñen un botón para pechalas (require reiniciar)" #: ../src/ui/dialog/inkscape-preferences.cpp:161 -msgid "" -"Change tool as different devices are used on the tablet (pen, eraser, mouse)" +msgid "Change tool as different devices are used on the tablet (pen, eraser, mouse)" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:166 @@ -10948,9 +10561,7 @@ msgid "Mouse wheel scrolls by:" msgstr "A roda do rato despraza:" #: ../src/ui/dialog/inkscape-preferences.cpp:169 -msgid "" -"One mouse wheel notch scrolls by this distance in screen pixels " -"(horizontally with Shift)" +msgid "One mouse wheel notch scrolls by this distance in screen pixels (horizontally with Shift)" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:170 @@ -10970,12 +10581,8 @@ msgid "Acceleration:" msgstr "Aceleración:" #: ../src/ui/dialog/inkscape-preferences.cpp:176 -msgid "" -"Pressing and holding Ctrl+arrow will gradually speed up scrolling (0 for no " -"acceleration)" -msgstr "" -"Se mantén premido Ctrl+frecha aumentará a velocidade do desprazamento " -"gradualmente (0 para non acelerar)" +msgid "Pressing and holding Ctrl+arrow will gradually speed up scrolling (0 for no acceleration)" +msgstr "Se mantén premido Ctrl+frecha aumentará a velocidade do desprazamento gradualmente (0 para non acelerar)" #: ../src/ui/dialog/inkscape-preferences.cpp:177 msgid "Autoscrolling" @@ -10986,37 +10593,27 @@ msgid "Speed:" msgstr "Velocidade:" #: ../src/ui/dialog/inkscape-preferences.cpp:180 -msgid "" -"How fast the canvas autoscrolls when you drag beyond canvas edge (0 to turn " -"autoscroll off)" -msgstr "" -"Con que rapidez de despraza automáticamente o lenzo cando arrastra máis alá " -"do bordo do lenzo (0 para desactivar o desprazamento automático)" +msgid "How fast the canvas autoscrolls when you drag beyond canvas edge (0 to turn autoscroll off)" +msgstr "Con que rapidez de despraza automáticamente o lenzo cando arrastra máis alá do bordo do lenzo (0 para desactivar o desprazamento automático)" #: ../src/ui/dialog/inkscape-preferences.cpp:182 -#: ../src/ui/dialog/tracedialog.cpp:410 ../src/ui/dialog/tracedialog.cpp:443 -#: ../src/ui/dialog/tracedialog.cpp:586 ../src/widgets/toolbox.cpp:5741 +#: ../src/ui/dialog/tracedialog.cpp:410 +#: ../src/ui/dialog/tracedialog.cpp:443 +#: ../src/ui/dialog/tracedialog.cpp:586 +#: ../src/widgets/toolbox.cpp:5741 msgid "Threshold:" msgstr "Limiar:" #: ../src/ui/dialog/inkscape-preferences.cpp:183 -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" -msgstr "" -"A que distancia (en píxels da pantalla) ten que estar do bordo do lenzo para " -"que comece a desprazarse automáticamente; positivo é fóra do lenzo, negativo " -"é dentro do lenzo" +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" +msgstr "A que distancia (en píxels da pantalla) ten que estar do bordo do lenzo para que comece a desprazarse automáticamente; positivo é fóra do lenzo, negativo é dentro do lenzo" #: ../src/ui/dialog/inkscape-preferences.cpp:184 msgid "Left mouse button pans when Space is pressed" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:186 -msgid "" -"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)." +msgid "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)." msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:187 @@ -11025,9 +10622,7 @@ msgid "Mouse wheel zooms by default" msgstr "A roda do rato despraza:" #: ../src/ui/dialog/inkscape-preferences.cpp:189 -msgid "" -"When on, mouse wheel zooms without Ctrl and scrolls canvas with Ctrl; when " -"off, it zooms with Ctrl and scrolls without Ctrl." +msgid "When on, mouse wheel zooms without Ctrl and scrolls canvas with Ctrl; when off, it zooms with Ctrl and scrolls without Ctrl." msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:194 @@ -11040,12 +10635,8 @@ msgid "Arrow keys move by:" msgstr "As teclas de frecha moven:" #: ../src/ui/dialog/inkscape-preferences.cpp:199 -msgid "" -"Pressing an arrow key moves selected object(s) or node(s) by this distance " -"(in px units)" -msgstr "" -"Se preme unha tecla de frecha móvense os obxectos ou nodos seleccionados " -"esta distancia (en unidades de píxels)" +msgid "Pressing an arrow key moves selected object(s) or node(s) by this distance (in px units)" +msgstr "Se preme unha tecla de frecha móvense os obxectos ou nodos seleccionados esta distancia (en unidades de píxels)" #. defaultscale is limited to 1000 in select-context.cpp: use the same limit here #: ../src/ui/dialog/inkscape-preferences.cpp:202 @@ -11053,18 +10644,16 @@ msgid "> and < scale by:" msgstr "> e < escalan:" #: ../src/ui/dialog/inkscape-preferences.cpp:203 -msgid "" -"Pressing > or < scales selection up or down by this increment (in px units)" -msgstr "" -"Se preme > ou < escala a selección estas unidades (as unidades son píxels)" +msgid "Pressing > or < scales selection up or down by this increment (in px units)" +msgstr "Se preme > ou < escala a selección estas unidades (as unidades son píxels)" #: ../src/ui/dialog/inkscape-preferences.cpp:205 +#, fuzzy msgid "Inset/Outset by:" -msgstr "" +msgstr "> e < escalan:" #: ../src/ui/dialog/inkscape-preferences.cpp:206 -msgid "" -"Inset and Outset commands displace the path by this distance (in px units)" +msgid "Inset and Outset commands displace the path by this distance (in px units)" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:207 @@ -11074,27 +10663,20 @@ msgstr "Mostrar os ángulos coma no compás" #: ../src/ui/dialog/inkscape-preferences.cpp:209 #, fuzzy -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 " -"counterclockwise" -msgstr "" -"Cando está marcado, os ángulos mostranse co 0 no norte, cun rango de 0 a " -"360, positivo e en sentido horario; doutro xeito co 0 no leste, cun rango de " -"-180 a 180, positivo en sentido antihorario" +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 counterclockwise" +msgstr "Cando está marcado, os ángulos mostranse co 0 no norte, cun rango de 0 a 360, positivo e en sentido horario; doutro xeito co 0 no leste, cun rango de -180 a 180, positivo en sentido antihorario" #: ../src/ui/dialog/inkscape-preferences.cpp:215 +#, fuzzy msgid "Rotation snaps every:" -msgstr "" +msgstr "Rotar en sentido horario" #: ../src/ui/dialog/inkscape-preferences.cpp:215 msgid "degrees" msgstr "graos" #: ../src/ui/dialog/inkscape-preferences.cpp:216 -msgid "" -"Rotating with Ctrl pressed snaps every that much degrees; also, pressing " -"[ or ] rotates by this amount" +msgid "Rotating with Ctrl pressed snaps every that much degrees; also, pressing [ or ] rotates by this amount" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:218 @@ -11102,23 +10684,16 @@ msgid "Zoom in/out by:" msgstr "Aumentar/reducir:" #: ../src/ui/dialog/inkscape-preferences.cpp:219 -msgid "" -"Zoom tool click, +/- keys, and middle click zoom in and out by this " -"multiplier" -msgstr "" -"Un clic da ferramenta de zoom, das teclas +/-, ou un clic do botón central " -"do rato amplian ou reducen esta porcentaxe" +msgid "Zoom tool click, +/- keys, and middle click zoom in and out by this multiplier" +msgstr "Un clic da ferramenta de zoom, das teclas +/-, ou un clic do botón central do rato amplian ou reducen esta porcentaxe" #: ../src/ui/dialog/inkscape-preferences.cpp:225 msgid "Show selection cue" msgstr "Amosar sinal de selección" #: ../src/ui/dialog/inkscape-preferences.cpp:226 -msgid "" -"Whether selected objects display a selection cue (the same as in selector)" -msgstr "" -"Indica se os obxectos seleccionados amosan un sinal de selección (a mesma ca " -"no selector)" +msgid "Whether selected objects display a selection cue (the same as in selector)" +msgstr "Indica se os obxectos seleccionados amosan un sinal de selección (a mesma ca no selector)" #: ../src/ui/dialog/inkscape-preferences.cpp:232 msgid "Enable gradient editing" @@ -11126,17 +10701,14 @@ msgstr "Habilitar a edición de degradados" #: ../src/ui/dialog/inkscape-preferences.cpp:233 msgid "Whether selected objects display gradient editing controls" -msgstr "" -"Se os obxectos seleccionados mostran ou non controis de edición de degradados" +msgstr "Se os obxectos seleccionados mostran ou non controis de edición de degradados" #: ../src/ui/dialog/inkscape-preferences.cpp:238 msgid "Conversion to guides uses edges instead of bounding box" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:239 -msgid "" -"Converting an object to guides places these along the object's true edges " -"(imitating the object's shape), not along the bounding box." +msgid "Converting an object to guides places these along the object's true edges (imitating the object's shape), not along the bounding box." msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:246 @@ -11157,12 +10729,8 @@ msgid "No objects selected to take the style from." msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:271 -msgid "" -"More than one object selected. Cannot take style from multiple " -"objects." -msgstr "" -"Hai máis dun obxecto seleccionado. Non se pode coller o estilo de " -"varios obxectos." +msgid "More than one object selected. Cannot take style from multiple objects." +msgstr "Hai máis dun obxecto seleccionado. Non se pode coller o estilo de varios obxectos." #: ../src/ui/dialog/inkscape-preferences.cpp:305 msgid "Create new objects with:" @@ -11181,9 +10749,7 @@ msgid "This tool's own style:" msgstr "O propio estilo desta ferramenta:" #: ../src/ui/dialog/inkscape-preferences.cpp:318 -msgid "" -"Each tool may store its own style to apply to the newly created objects. Use " -"the button below to set it." +msgid "Each tool may store its own style to apply to the newly created objects. Use the button below to set it." msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:323 @@ -11191,15 +10757,12 @@ msgid "Take from selection" msgstr "Coller da selección" #: ../src/ui/dialog/inkscape-preferences.cpp:327 -#, fuzzy msgid "This tool's style of new objects" -msgstr "O propio estilo desta ferramenta:" +msgstr "O estilo desta ferramenta para os novos obxectos" #: ../src/ui/dialog/inkscape-preferences.cpp:335 msgid "Remember the style of the (first) selected object as this tool's style" -msgstr "" -"Lembrar o estilo do (primeiro) obxecto seleccionado coma o estilo desta " -"ferramenta" +msgstr "Lembrar o estilo do (primeiro) obxecto seleccionado coma o estilo desta ferramenta" #: ../src/ui/dialog/inkscape-preferences.cpp:340 msgid "Tools" @@ -11208,7 +10771,7 @@ msgstr "Ferramentas" #: ../src/ui/dialog/inkscape-preferences.cpp:343 #, fuzzy msgid "Bounding box to use:" -msgstr "Axustar as caixas de contorno ás g_uías" +msgstr "Use Shift+D para buscar o orixinal" #: ../src/ui/dialog/inkscape-preferences.cpp:344 #, fuzzy @@ -11231,7 +10794,7 @@ msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:351 #, fuzzy msgid "Conversion to guides:" -msgstr "_Converter a Texto" +msgstr "Obxectos a guías" #: ../src/ui/dialog/inkscape-preferences.cpp:352 #, fuzzy @@ -11239,9 +10802,7 @@ msgid "Keep objects after conversion to guides" msgstr "Seleccione obxectos para convertelos en patróns." #: ../src/ui/dialog/inkscape-preferences.cpp:354 -msgid "" -"When converting an object to guides, don't delete the object after the " -"conversion." +msgid "When converting an object to guides, don't delete the object after the conversion." msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:355 @@ -11250,9 +10811,7 @@ msgid "Treat groups as a single object" msgstr "Creando novo camiño" #: ../src/ui/dialog/inkscape-preferences.cpp:357 -msgid "" -"Treat groups as a single object during conversion to guides rather than " -"converting each child separately." +msgid "Treat groups as a single object during conversion to guides rather than converting each child separately." msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:359 @@ -11262,7 +10821,7 @@ msgstr "O ancho está en unidades absolutas" #: ../src/ui/dialog/inkscape-preferences.cpp:360 #, fuzzy msgid "Select new path" -msgstr "Seleccionar" +msgstr "Seleccionar o novo camiño" #: ../src/ui/dialog/inkscape-preferences.cpp:361 msgid "Don't attach connectors to text objects" @@ -11291,8 +10850,7 @@ msgstr "Caixa de contorno" #: ../src/ui/dialog/inkscape-preferences.cpp:373 msgid "Show only a box outline of the objects when moving or transforming" -msgstr "" -"Amosa só unha caixa do contorno dos obxectos cando se moven ou se transforman" +msgstr "Amosa só unha caixa do contorno dos obxectos cando se moven ou se transforman" #: ../src/ui/dialog/inkscape-preferences.cpp:374 msgid "Per-object selection cue:" @@ -11308,9 +10866,7 @@ msgstr "Marca" #: ../src/ui/dialog/inkscape-preferences.cpp:380 msgid "Each selected object has a diamond mark in the top left corner" -msgstr "" -"Cada obxecto seleccionado ten unha marca con forma de diamante na esquina " -"superior esquerda" +msgstr "Cada obxecto seleccionado ten unha marca con forma de diamante na esquina superior esquerda" #: ../src/ui/dialog/inkscape-preferences.cpp:381 msgid "Box" @@ -11318,8 +10874,7 @@ msgstr "Caixa" #: ../src/ui/dialog/inkscape-preferences.cpp:383 msgid "Each selected object displays its bounding box" -msgstr "" -"Cada obxecto seleccionado amosa unha caixa que o rodea (caixa de contorno)" +msgstr "Cada obxecto seleccionado amosa unha caixa que o rodea (caixa de contorno)" #. Node #: ../src/ui/dialog/inkscape-preferences.cpp:386 @@ -11335,7 +10890,7 @@ msgstr "Caixa de contorno" #: ../src/ui/dialog/inkscape-preferences.cpp:391 #, fuzzy msgid "Path outline color" -msgstr "Pegar cor" +msgstr "Elixa o matiz da cor" #: ../src/ui/dialog/inkscape-preferences.cpp:391 #, fuzzy @@ -11355,20 +10910,19 @@ msgid "Flash time" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:395 -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 " -"path." +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 path." msgstr "" #. Tweak -#: ../src/ui/dialog/inkscape-preferences.cpp:398 ../src/verbs.cpp:2419 +#: ../src/ui/dialog/inkscape-preferences.cpp:398 +#: ../src/verbs.cpp:2419 msgid "Tweak" msgstr "" #. Zoom #: ../src/ui/dialog/inkscape-preferences.cpp:403 -#: ../src/ui/view/edit-widget.cpp:1073 ../src/verbs.cpp:2441 +#: ../src/ui/view/edit-widget.cpp:1073 +#: ../src/verbs.cpp:2441 #: ../src/widgets/desktop-widget.cpp:490 #: ../share/extensions/render_alphabetsoup.inx.h:5 msgid "Zoom" @@ -11380,66 +10934,63 @@ msgid "Shapes" msgstr "Figuras" #. Pencil -#: ../src/ui/dialog/inkscape-preferences.cpp:436 ../src/verbs.cpp:2431 +#: ../src/ui/dialog/inkscape-preferences.cpp:436 +#: ../src/verbs.cpp:2431 msgid "Pencil" msgstr "Lapis" #: ../src/ui/dialog/inkscape-preferences.cpp:439 #: ../src/ui/dialog/tracedialog.cpp:601 msgid "Tolerance:" -msgstr "" +msgstr "Tolerancia:" #: ../src/ui/dialog/inkscape-preferences.cpp:440 -msgid "" -"This value affects the amount of smoothing applied to freehand lines; lower " -"values produce more uneven paths with more nodes" +msgid "This value affects the amount of smoothing applied to freehand lines; lower values produce more uneven paths with more nodes" msgstr "" #. Pen -#: ../src/ui/dialog/inkscape-preferences.cpp:446 ../src/verbs.cpp:2433 +#: ../src/ui/dialog/inkscape-preferences.cpp:446 +#: ../src/verbs.cpp:2433 msgid "Pen" msgstr "Pluma" #. Calligraphy -#: ../src/ui/dialog/inkscape-preferences.cpp:452 ../src/verbs.cpp:2435 +#: ../src/ui/dialog/inkscape-preferences.cpp:452 +#: ../src/verbs.cpp:2435 msgid "Calligraphy" msgstr "Caligrafía" #: ../src/ui/dialog/inkscape-preferences.cpp:456 #, fuzzy -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" -msgstr "" -"Se está marcado, o ancho da pluma está en unidades absolutas (px) " -"independientes do zoom; doutro xeito o ancho da pluma depende do zoom de " -"xeito que ten o mesmo aspecto con calquera zoom" +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" +msgstr "Se está marcado, o ancho da pluma está en unidades absolutas (px) independientes do zoom; doutro xeito o ancho da pluma depende do zoom de xeito que ten o mesmo aspecto con calquera zoom" #: ../src/ui/dialog/inkscape-preferences.cpp:458 -msgid "" -"If on, each newly created object will be selected (deselecting previous " -"selection)" +msgid "If on, each newly created object will be selected (deselecting previous selection)" msgstr "" #. Paint Bucket -#: ../src/ui/dialog/inkscape-preferences.cpp:460 ../src/verbs.cpp:2447 +#: ../src/ui/dialog/inkscape-preferences.cpp:460 +#: ../src/verbs.cpp:2447 #, fuzzy msgid "Paint Bucket" -msgstr "Imprimi-lo documento" +msgstr "_Pintar o trazo" #. Eraser -#: ../src/ui/dialog/inkscape-preferences.cpp:465 ../src/verbs.cpp:2451 -#, fuzzy +#: ../src/ui/dialog/inkscape-preferences.cpp:465 +#: ../src/verbs.cpp:2451 msgid "Eraser" -msgstr "Elevar" +msgstr "Goma" #. Gradient -#: ../src/ui/dialog/inkscape-preferences.cpp:475 ../src/verbs.cpp:2439 +#: ../src/ui/dialog/inkscape-preferences.cpp:475 +#: ../src/verbs.cpp:2439 msgid "Gradient" msgstr "Degradado" #. Connector -#: ../src/ui/dialog/inkscape-preferences.cpp:479 ../src/verbs.cpp:2445 +#: ../src/ui/dialog/inkscape-preferences.cpp:479 +#: ../src/verbs.cpp:2445 msgid "Connector" msgstr "Conectador" @@ -11448,7 +10999,8 @@ msgid "If on, connector attachment points will not be shown for text objects" msgstr "" #. Dropper -#: ../src/ui/dialog/inkscape-preferences.cpp:484 ../src/verbs.cpp:2443 +#: ../src/ui/dialog/inkscape-preferences.cpp:484 +#: ../src/verbs.cpp:2443 msgid "Dropper" msgstr "Contagotas" @@ -11457,14 +11009,12 @@ msgid "Save and restore window geometry for each document" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:492 -#, fuzzy msgid "Remember and use last window's geometry" -msgstr "Gardar a xeometría das ventás" +msgstr "Lembrar e usar a última xeometría das ventás" #: ../src/ui/dialog/inkscape-preferences.cpp:493 -#, fuzzy msgid "Don't save window geometry" -msgstr "Gardar a xeometría das ventás" +msgstr "Non gardar a xeometría das ventás" #: ../src/ui/dialog/inkscape-preferences.cpp:495 #: ../src/ui/dialog/inkscape-preferences.cpp:515 @@ -11494,32 +11044,24 @@ msgid "Aggressive" msgstr "Agresivo" #: ../src/ui/dialog/inkscape-preferences.cpp:505 -#, fuzzy msgid "Saving window geometry (size and position):" -msgstr "Gardar a xeometría das ventás" +msgstr "Gardar a xeometría das ventás (tamaño e posición):" #: ../src/ui/dialog/inkscape-preferences.cpp:507 msgid "Let the window manager determine placement of all windows" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:509 -msgid "" -"Remember and use the last window's geometry (saves geometry to user " -"preferences)" +msgid "Remember and use the last window's geometry (saves geometry to user preferences)" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:511 -msgid "" -"Save and restore window geometry for each document (saves geometry in the " -"document)" +msgid "Save and restore window geometry for each document (saves geometry in the document)" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:513 -#, fuzzy msgid "Dialog behavior (requires restart):" -msgstr "" -"Indica se as ventás de diálogo teñen un botón para pechalas (require " -"reiniciar)" +msgstr "Comportamento das caixas de diálogo (require reiniciar)" #: ../src/ui/dialog/inkscape-preferences.cpp:520 msgid "Dialogs on top:" @@ -11535,8 +11077,7 @@ msgstr "Os diálogos permanecen enriba das ventás dos documentos" #: ../src/ui/dialog/inkscape-preferences.cpp:527 msgid "Same as Normal but may work better with some window managers" -msgstr "" -"Coma Normal pero podería funcionar mellor con algúns xestores de ventás" +msgstr "Coma Normal pero podería funcionar mellor con algúns xestores de ventás" #: ../src/ui/dialog/inkscape-preferences.cpp:530 #, fuzzy @@ -11548,21 +11089,12 @@ msgid "Whether dialog windows are to be hidden in the window manager taskbar" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:536 -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 " -"above the right scrollbar)" -msgstr "" -"Modificar o zoom do debuxo cando se redimensiona a ventá de documento, para " -"manter visible a mesma área (isto ó predeterminado que se pode cambiar en " -"tódalas ventás usando o botón que hai enriba da barra de desprazamento da " -"dereita)" +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 above the right scrollbar)" +msgstr "Modificar o zoom do debuxo cando se redimensiona a ventá de documento, para manter visible a mesma área (isto ó predeterminado que se pode cambiar en tódalas ventás usando o botón que hai enriba da barra de desprazamento da dereita)" #: ../src/ui/dialog/inkscape-preferences.cpp:538 msgid "Whether dialog windows have a close button (requires restart)" -msgstr "" -"Indica se as ventás de diálogo teñen un botón para pechalas (require " -"reiniciar)" +msgstr "Indica se as ventás de diálogo teñen un botón para pechalas (require reiniciar)" #: ../src/ui/dialog/inkscape-preferences.cpp:539 msgid "Windows" @@ -11601,13 +11133,8 @@ msgid "Clones preserve their positions when their original is moved." msgstr "Os clons conservan as súas posicións cando se move o orixinal." #: ../src/ui/dialog/inkscape-preferences.cpp:561 -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." -msgstr "" -"Cada clon móvese de acordo co valor do seu atributo transform=. Por exemplo, " -"un clon rotado moverase nunha dirección diferente á do seu orixinal." +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." +msgstr "Cada clon móvese de acordo co valor do seu atributo transform=. Por exemplo, un clon rotado moverase nunha dirección diferente á do seu orixinal." #: ../src/ui/dialog/inkscape-preferences.cpp:562 msgid "When the original is deleted, its clones:" @@ -11631,8 +11158,7 @@ msgid "When applying, use the topmost selected object as clippath/mask" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:576 -msgid "" -"Uncheck this to use the bottom selected object as the clipping path or mask" +msgid "Uncheck this to use the bottom selected object as the clipping path or mask" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:577 @@ -11640,14 +11166,13 @@ msgid "Remove clippath/mask object after applying" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:579 -msgid "" -"After applying, remove the object used as the clipping path or mask from the " -"drawing" +msgid "After applying, remove the object used as the clipping path or mask from the drawing" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:580 +#, fuzzy msgid "Clippaths and masks" -msgstr "" +msgstr "R_echeo e Trazo" #: ../src/ui/dialog/inkscape-preferences.cpp:585 #: ../src/widgets/select-toolbar.cpp:524 @@ -11677,8 +11202,7 @@ msgstr "Conservar" #: ../src/ui/dialog/inkscape-preferences.cpp:593 #: ../src/widgets/select-toolbar.cpp:525 msgid "When scaling objects, scale the stroke width by the same proportion" -msgstr "" -"Cando se escalan obxectos, escalar o ancho do trazo na mesma proporción" +msgstr "Cando se escalan obxectos, escalar o ancho do trazo na mesma proporción" #: ../src/ui/dialog/inkscape-preferences.cpp:595 #: ../src/widgets/select-toolbar.cpp:536 @@ -11700,51 +11224,46 @@ msgid "Store transformation:" msgstr "Almacenar a transformación:" #: ../src/ui/dialog/inkscape-preferences.cpp:602 -msgid "" -"If possible, apply transformation to objects without adding a transform= " -"attribute" -msgstr "" -"Se é posible, aplicar a transformación ós obxectos sen engadir un atributo " -"transform=" +msgid "If possible, apply transformation to objects without adding a transform= attribute" +msgstr "Se é posible, aplicar a transformación ós obxectos sen engadir un atributo transform=" #: ../src/ui/dialog/inkscape-preferences.cpp:604 msgid "Always store transformation as a transform= attribute on objects" -msgstr "" -"Almacenar sempre a transformación coma un atributo transform= nos obxectos" +msgstr "Almacenar sempre a transformación coma un atributo transform= nos obxectos" #: ../src/ui/dialog/inkscape-preferences.cpp:606 msgid "Transforms" msgstr "Transformacións" #: ../src/ui/dialog/inkscape-preferences.cpp:611 +#, fuzzy msgid "Best quality (slowest)" -msgstr "" +msgstr "Calidade baixa (máis rápido)" #: ../src/ui/dialog/inkscape-preferences.cpp:613 +#, fuzzy msgid "Better quality (slower)" -msgstr "" +msgstr "Calidade baixa (máis rápido)" #: ../src/ui/dialog/inkscape-preferences.cpp:615 msgid "Average quality" -msgstr "" +msgstr "Calidade media" #: ../src/ui/dialog/inkscape-preferences.cpp:617 -#, fuzzy msgid "Lower quality (faster)" -msgstr "Baixar a Capa" +msgstr "Calidade menor (máis rápido)" #: ../src/ui/dialog/inkscape-preferences.cpp:619 +#, fuzzy msgid "Lowest quality (fastest)" -msgstr "" +msgstr "Calidade baixa (máis rápido)" #: ../src/ui/dialog/inkscape-preferences.cpp:622 msgid "Gaussian blur quality for display:" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:624 -msgid "" -"Best quality, but display may be very slow at high zooms (bitmap export " -"always uses best quality)" +msgid "Best quality, but display may be very slow at high zooms (bitmap export always uses best quality)" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:626 @@ -11769,15 +11288,12 @@ msgid "Show filter primitives infobox" msgstr "Borrar o atributo" #: ../src/ui/dialog/inkscape-preferences.cpp:636 -msgid "" -"Show icons and descriptions for the filter primitives available at the " -"filter effects dialog." +msgid "Show icons and descriptions for the filter primitives available at the filter effects dialog." msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:638 -#, fuzzy msgid "Filters" -msgstr "milímetros" +msgstr "Filtros" #: ../src/ui/dialog/inkscape-preferences.cpp:644 msgid "Select in all layers" @@ -11794,12 +11310,12 @@ msgstr "Seleccionar na capa actual e mailas súas subcapas" #: ../src/ui/dialog/inkscape-preferences.cpp:647 #, fuzzy msgid "Ignore hidden objects and layers" -msgstr "Ignorar os obxectos agochados" +msgstr "Ignora-las capas e mailos obxectos agochados" #: ../src/ui/dialog/inkscape-preferences.cpp:648 #, fuzzy msgid "Ignore locked objects and layers" -msgstr "Ignorar os obxectos bloqueados" +msgstr "Ignora-las capas e mailos obxectos bloqueados" #: ../src/ui/dialog/inkscape-preferences.cpp:649 msgid "Deselect upon layer change" @@ -11811,51 +11327,29 @@ msgstr "Ctrl+A, Tab, Shift+Tab:" #: ../src/ui/dialog/inkscape-preferences.cpp:653 msgid "Make keyboard selection commands work on objects in all layers" -msgstr "" -"Facer que os comandos de selección do teclado traballen con obxectos de " -"tódalas capas" +msgstr "Facer que os comandos de selección do teclado traballen con obxectos de tódalas capas" #: ../src/ui/dialog/inkscape-preferences.cpp:655 msgid "Make keyboard selection commands work on objects in current layer only" -msgstr "" -"Facer que os comandos de selección do teclado traballen só con obxectos " -"desta capa" +msgstr "Facer que os comandos de selección do teclado traballen só con obxectos desta capa" #: ../src/ui/dialog/inkscape-preferences.cpp:657 -msgid "" -"Make keyboard selection commands work on objects in current layer and all " -"its sublayers" -msgstr "" -"Facer que os comandos de selección do teclado traballen só con obxectos " -"desta capa e mailas súas subcapas" +msgid "Make keyboard selection commands work on objects in current layer and all its sublayers" +msgstr "Facer que os comandos de selección do teclado traballen só con obxectos desta capa e mailas súas subcapas" #: ../src/ui/dialog/inkscape-preferences.cpp:659 #, fuzzy -msgid "" -"Uncheck this to be able to select objects that are hidden (either by " -"themselves or by being in a hidden layer)" -msgstr "" -"Desmarque isto para poder seleccionar obxectos que están agochados (xa sexa " -"porque o están eles mesmos ou porque pertencen a unha capa ou a un grupo " -"agochado)" +msgid "Uncheck this to be able to select objects that are hidden (either by themselves or by being in a hidden layer)" +msgstr "Desmarque isto para poder seleccionar obxectos que están agochados (xa sexa porque o están eles mesmos ou porque pertencen a unha capa ou a un grupo agochado)" #: ../src/ui/dialog/inkscape-preferences.cpp:661 #, fuzzy -msgid "" -"Uncheck this to be able to select objects that are locked (either by " -"themselves or by being in a locked layer)" -msgstr "" -"Desmarque isto para poder seleccionar obxectos que están bloqueados (xa sexa " -"porque o están eles mesmos ou porque pertencen a unha capa ou a un grupo " -"bloqueado)" +msgid "Uncheck this to be able to select objects that are locked (either by themselves or by being in a locked layer)" +msgstr "Desmarque isto para poder seleccionar obxectos que están bloqueados (xa sexa porque o están eles mesmos ou porque pertencen a unha capa ou a un grupo bloqueado)" #: ../src/ui/dialog/inkscape-preferences.cpp:664 -msgid "" -"Uncheck this to be able to keep the current objects selected when the " -"current layer changes" -msgstr "" -"Desmarque isto para poder manter seleccionados os obxectos cando cambia a " -"capa actual" +msgid "Uncheck this to be able to keep the current objects selected when the current layer changes" +msgstr "Desmarque isto para poder manter seleccionados os obxectos cando cambia a capa actual" #: ../src/ui/dialog/inkscape-preferences.cpp:666 msgid "Selecting" @@ -11867,40 +11361,35 @@ msgstr "Resolución predeterminada de exportación:" #: ../src/ui/dialog/inkscape-preferences.cpp:674 msgid "Default bitmap resolution (in dots per inch) in the Export dialog" -msgstr "" -"Resolución predeterminada do mapa de bits no diálogo de Exportación (en " -"puntos por polgada)" +msgstr "Resolución predeterminada do mapa de bits no diálogo de Exportación (en puntos por polgada)" #: ../src/ui/dialog/inkscape-preferences.cpp:676 msgid "Open Clip Art Library Server Name:" -msgstr "" +msgstr "Nome do servidor de Open Clip Art Library:" #: ../src/ui/dialog/inkscape-preferences.cpp:677 -msgid "" -"The server name of the Open Clip Art Library webdav server. It's used by the " -"Import and Export to OCAL function." +msgid "The server name of the Open Clip Art Library webdav server. It's used by the Import and Export to OCAL function." msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:679 msgid "Open Clip Art Library Username:" -msgstr "" +msgstr "Usuario de Open Clip Art Library:" #: ../src/ui/dialog/inkscape-preferences.cpp:680 msgid "The username used to log into Open Clip Art Library." -msgstr "" +msgstr "O nome de usuario que se vai usar para conectar con Open Clip Art Library." #: ../src/ui/dialog/inkscape-preferences.cpp:682 msgid "Open Clip Art Library Password:" -msgstr "" +msgstr "Contrasinal de Open Clip Art Library:" #: ../src/ui/dialog/inkscape-preferences.cpp:683 msgid "The password used to log into Open Clip Art Library." -msgstr "" +msgstr "O contrasinal que se vai usar para conectar con Open Clip Art Library." #: ../src/ui/dialog/inkscape-preferences.cpp:685 -#, fuzzy msgid "Import/Export" -msgstr "Importar" +msgstr "Importar/Exportar" #. TRANSLATORS: see http://www.newsandtech.com/issues/2004/03-04/pt/03-04_rendering.htm #: ../src/ui/dialog/inkscape-preferences.cpp:731 @@ -11911,7 +11400,7 @@ msgstr "Porcentaxe" #: ../src/ui/dialog/inkscape-preferences.cpp:731 #, fuzzy msgid "Relative Colorimetric" -msgstr "Movemento rela_tivo" +msgstr "Relativo a:" #: ../src/ui/dialog/inkscape-preferences.cpp:731 msgid "Absolute Colorimetric" @@ -11924,12 +11413,12 @@ msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:739 #, fuzzy msgid "Display adjustment" -msgstr "Configuración da visualización" +msgstr "Modo de _visualización" #: ../src/ui/dialog/inkscape-preferences.cpp:741 #, fuzzy msgid "Display profile:" -msgstr "Configuración da visualización" +msgstr "Modo de _visualización" #: ../src/ui/dialog/inkscape-preferences.cpp:742 msgid "The ICC profile to use to calibrate display output." @@ -11950,7 +11439,7 @@ msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:754 #, fuzzy msgid "Display rendering intent:" -msgstr "Configuración da visualización" +msgstr "Cambiar ó modo de visualización normal" #: ../src/ui/dialog/inkscape-preferences.cpp:755 #: ../src/ui/dialog/inkscape-preferences.cpp:778 @@ -12001,7 +11490,7 @@ msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:780 #, fuzzy msgid "Black point compensation" -msgstr "Destino da Impresión" +msgstr "Só branco e negro" #: ../src/ui/dialog/inkscape-preferences.cpp:782 msgid "Enables black point compensation." @@ -12010,63 +11499,55 @@ msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:784 #, fuzzy msgid "Preserve black" -msgstr "Conservar" +msgstr "Recheo negro" #: ../src/ui/dialog/inkscape-preferences.cpp:789 msgid "(LittleCMS 1.15 or later required)" -msgstr "" +msgstr "(Requírese LittleCMS 1.15 ou posterior)" #: ../src/ui/dialog/inkscape-preferences.cpp:791 msgid "Preserve K channel in CMYK -> CMYK transforms" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:804 -#, fuzzy msgid "" -msgstr "Ningún" +msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:850 -#, fuzzy msgid "Color management" -msgstr "Cor do bordo da páxina" +msgstr "Xestión da cor" #: ../src/ui/dialog/inkscape-preferences.cpp:855 #, fuzzy msgid "Major grid line emphasizing" -msgstr "Liña _principal de reixa cada:" +msgstr "Cor das liñas principais da reixa" #: ../src/ui/dialog/inkscape-preferences.cpp:857 msgid "Don't emphasize gridlines when zoomed out" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:858 -msgid "" -"If set and zoomed out, the gridlines will be shown in normal color instead " -"of major grid line color." +msgid "If set and zoomed out, the gridlines will be shown in normal color instead of major grid line color." msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:860 -#, fuzzy msgid "Default grid settings" -msgstr "Configuración do escritorio" +msgstr "Configuración predeterminada da reixa" #: ../src/ui/dialog/inkscape-preferences.cpp:866 #: ../src/ui/dialog/inkscape-preferences.cpp:887 -#, fuzzy msgid "Grid units" -msgstr "_Unidades da reixa:" +msgstr "Unidades da reixa" #: ../src/ui/dialog/inkscape-preferences.cpp:869 #: ../src/ui/dialog/inkscape-preferences.cpp:890 -#, fuzzy msgid "Origin X" -msgstr "_Orixe X:" +msgstr "Orixe X" #: ../src/ui/dialog/inkscape-preferences.cpp:870 #: ../src/ui/dialog/inkscape-preferences.cpp:891 -#, fuzzy msgid "Origin Y" -msgstr "Ori_xe Y:" +msgstr "Orixe Y" #: ../src/ui/dialog/inkscape-preferences.cpp:873 #, fuzzy @@ -12077,51 +11558,47 @@ msgstr "Separación _X:" #: ../src/ui/dialog/inkscape-preferences.cpp:893 #, fuzzy msgid "Spacing Y" -msgstr "Separación _Y:" +msgstr "Separación _X:" #: ../src/ui/dialog/inkscape-preferences.cpp:877 #: ../src/ui/dialog/inkscape-preferences.cpp:899 msgid "Selects the color used for normal grid lines." -msgstr "" +msgstr "Selecciona a cor que se usa para as liñas normais da reixa." #: ../src/ui/dialog/inkscape-preferences.cpp:879 #: ../src/ui/dialog/inkscape-preferences.cpp:901 -#, fuzzy msgid "Selects the color used for major (highlighted) grid lines." -msgstr "Cor das liñas principais (resaltadas) da reixa" +msgstr "Selecciona a cor das liñas principais (resaltadas) da reixa." #: ../src/ui/dialog/inkscape-preferences.cpp:881 #: ../src/ui/dialog/inkscape-preferences.cpp:903 -#, fuzzy msgid "Major grid line every" -msgstr "Liña _principal de reixa cada:" +msgstr "Liña principal de reixa cada" #: ../src/ui/dialog/inkscape-preferences.cpp:882 msgid "Show dots instead of lines" -msgstr "" +msgstr "Mostrar puntos en vez de liñas" #: ../src/ui/dialog/inkscape-preferences.cpp:896 -#, fuzzy msgid "Angle X" -msgstr "Ángulo:" +msgstr "Ángulo X" #: ../src/ui/dialog/inkscape-preferences.cpp:897 -#, fuzzy msgid "Angle Z" -msgstr "Ángulo:" +msgstr "Ángulo Z" #: ../src/ui/dialog/inkscape-preferences.cpp:910 -#, fuzzy msgid "Use named colors" -msgstr "Última cor seleccionada" +msgstr "Usar cores con nome" #: ../src/ui/dialog/inkscape-preferences.cpp:911 msgid "If set, write the CSS name of the color instead of it's numeric value." msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:913 +#, fuzzy msgid "XML looks" -msgstr "" +msgstr "Editor de _XML..." #: ../src/ui/dialog/inkscape-preferences.cpp:915 #, fuzzy @@ -12131,7 +11608,7 @@ msgstr "Establecer o atributo" #: ../src/ui/dialog/inkscape-preferences.cpp:916 #, fuzzy msgid "Inline the XML attributes" -msgstr "Borrar o atributo" +msgstr "image/svg+xml" #: ../src/ui/dialog/inkscape-preferences.cpp:919 #, fuzzy @@ -12145,12 +11622,11 @@ msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:921 #, fuzzy msgid "Path string" -msgstr "Configuración do escritorio" +msgstr "Pechando o camiño." #: ../src/ui/dialog/inkscape-preferences.cpp:923 -#, fuzzy msgid "Allow relative coordinates" -msgstr "Coordenadas do cursor" +msgstr "Permitir coordenadas relativas" #: ../src/ui/dialog/inkscape-preferences.cpp:924 msgid "If set, relative coordinates may be used in path data" @@ -12165,9 +11641,7 @@ msgid "Force repeat commands" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:932 -msgid "" -"If set, force repeating of the same command (i.e. output 'L 1,2 L 3,4' " -"instead of 'L 1,2 3,4')." +msgid "If set, force repeating of the same command (i.e. output 'L 1,2 L 3,4' instead of 'L 1,2 3,4')." msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:934 @@ -12189,9 +11663,7 @@ msgid "Minimum exponent" msgstr "Tamaño mínimo" #: ../src/ui/dialog/inkscape-preferences.cpp:940 -msgid "" -"The minimum size of a number (10 to the power of this exponent), smaller " -"numbers will be written as zero." +msgid "The minimum size of a number (10 to the power of this exponent), smaller numbers will be written as zero." msgstr "" # Rosetta @@ -12203,33 +11675,24 @@ msgstr "Engadir comentarios da etiqueta na saída de impresión" # Rosetta #: ../src/ui/dialog/inkscape-preferences.cpp:949 #, fuzzy -msgid "" -"When on, a comment will be added to the raw print output, marking the " -"rendered output for an object with its label" -msgstr "" -"De estar seleccionado, engadiráselle un comentario á saída crúa de " -"impresión, marcando a saída rendererizada dun obxecto coa súa etiqueta" +msgid "When on, a comment will be added to the raw print output, marking the rendered output for an object with its label" +msgstr "De estar seleccionado, engadiráselle un comentario á saída crúa de impresión, marcando a saída rendererizada dun obxecto coa súa etiqueta" #: ../src/ui/dialog/inkscape-preferences.cpp:951 msgid "Prevent sharing of gradient definitions" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:953 -msgid "" -"When on, shared gradient definitions are automatically forked on change; " -"uncheck to allow sharing of gradient definitions so that editing one object " -"may affect other objects using the same gradient" +msgid "When on, shared gradient definitions are automatically forked on change; uncheck to allow sharing of gradient definitions so that editing one object may affect other objects using the same gradient" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:955 +#, fuzzy msgid "Simplification threshold:" -msgstr "" +msgstr "Limiar de clic/arrastre:" #: ../src/ui/dialog/inkscape-preferences.cpp:956 -msgid "" -"How strong is the Simplify command by default. If you invoke this command " -"several times in quick succession, it will act more and more aggressively; " -"invoking it again after a pause restores the default threshold." +msgid "How strong is the Simplify command by default. If you invoke this command several times in quick succession, it will act more and more aggressively; invoking it again after a pause restores the default threshold." msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:958 @@ -12262,14 +11725,12 @@ msgstr "Barra de Comandos" #: ../src/ui/dialog/inkscape-preferences.cpp:973 #, fuzzy msgid "Set the size for the commands toolbar to use (requires restart)" -msgstr "" -"Indica se as ventás de diálogo teñen un botón para pechalas (require " -"reiniciar)" +msgstr "Indica se as ventás de diálogo teñen un botón para pechalas (require reiniciar)" #: ../src/ui/dialog/inkscape-preferences.cpp:976 #, fuzzy msgid "Tool controls bar icon size" -msgstr "Barra de Controis das Ferramentas" +msgstr "Amosar ou agochar a barra de Controis das Ferramentas" #: ../src/ui/dialog/inkscape-preferences.cpp:977 msgid "Set the size for the secondary toolbar to use (requires restart)" @@ -12282,12 +11743,9 @@ msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:981 #, fuzzy msgid "Set the size for the main tools to use (requires restart)" -msgstr "" -"Indica se as ventás de diálogo teñen un botón para pechalas (require " -"reiniciar)" +msgstr "Define o tamaño (require reiniciar)" #: ../src/ui/dialog/inkscape-preferences.cpp:984 -#, fuzzy msgid "Maximum number of recent documents:" msgstr "Número máximo de documentos recentes:" @@ -12297,29 +11755,25 @@ msgstr "A lonxitude máxima da lista Abrir Recente no menú Ficheiro" #. Autosave options #: ../src/ui/dialog/inkscape-preferences.cpp:990 +#, fuzzy msgid "Enable auto-save of document" -msgstr "" +msgstr "Garda-lo documento cun novo nome" #: ../src/ui/dialog/inkscape-preferences.cpp:991 -msgid "" -"Automatically saves the current document to disk at a given interval, thus " -"minimizing loss at a crash" +msgid "Automatically saves the current document to disk at a given interval, thus minimizing loss at a crash" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:993 msgid "Interval (in minutes):" -msgstr "" +msgstr "Intervalo (en minutos):" #: ../src/ui/dialog/inkscape-preferences.cpp:993 -msgid "" -"Sets the interval (in minutes) at which a workspace will be automatically " -"saved to disk" +msgid "Sets the interval (in minutes) at which a workspace will be automatically saved to disk" msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:995 -#, fuzzy msgid "Path:" -msgstr "Camiño" +msgstr "Camiño:" #: ../src/ui/dialog/inkscape-preferences.cpp:995 msgid "Sets the directory where autosaves will be written" @@ -12331,9 +11785,7 @@ msgid "Maximum number of autosaves" msgstr "Número máximo de documentos recentes:" #: ../src/ui/dialog/inkscape-preferences.cpp:997 -msgid "" -"Allows for limiting the space used by autosaves, by setting a maximum number " -"of allowed files" +msgid "Allows for limiting the space used by autosaves, by setting a maximum number of allowed files" msgstr "" #. When changing the interval or enabling/disabling the autosave function, @@ -12359,9 +11811,8 @@ msgid "Enbles automatic reload of linked images when changed on disk." msgstr "" #: ../src/ui/dialog/inkscape-preferences.cpp:1030 -#, fuzzy msgid "Bitmap editor:" -msgstr "Editor de degradados" +msgstr "Editor de mapas de bits:" #: ../src/ui/dialog/inkscape-preferences.cpp:1036 msgid "Misc" @@ -12369,48 +11820,45 @@ msgstr "Miscelánea" #: ../src/ui/dialog/livepatheffect-editor.cpp:74 msgid "Apply new effect" -msgstr "" +msgstr "Aplicar un novo efecto" #: ../src/ui/dialog/livepatheffect-editor.cpp:75 -#, fuzzy msgid "Current effect" -msgstr "Capa actual" +msgstr "Efecto actual" #: ../src/ui/dialog/livepatheffect-editor.cpp:76 -#, fuzzy msgid "Effect list" -msgstr "Efe_ctos" +msgstr "Lista de efectos" #: ../src/ui/dialog/livepatheffect-editor.cpp:239 msgid "Unknown effect is applied" -msgstr "" +msgstr "Aplicouse un efecto descoñecido" #: ../src/ui/dialog/livepatheffect-editor.cpp:242 msgid "No effect applied" -msgstr "" +msgstr "Non se aplicou ningún efecto" #: ../src/ui/dialog/livepatheffect-editor.cpp:248 msgid "Item is not a path or shape" -msgstr "" +msgstr "O elemento non é un camiño ou unha figura" #: ../src/ui/dialog/livepatheffect-editor.cpp:252 msgid "Only one item can be selected" -msgstr "" +msgstr "Só se pode seleccionar un elemento" #: ../src/ui/dialog/livepatheffect-editor.cpp:256 -#, fuzzy msgid "Empty selection" -msgstr "Borra-la selección" +msgstr "Selección baleira" #: ../src/ui/dialog/livepatheffect-editor.cpp:349 #, fuzzy msgid "Remove path effect" -msgstr "Eli_minar" +msgstr "Eliminar o efecto da selección" #: ../src/ui/dialog/livepatheffect-editor.cpp:366 #, fuzzy msgid "Move path effect up" -msgstr "Eli_minar" +msgstr "Use Shift+D para buscar un camiño" #: ../src/ui/dialog/livepatheffect-editor.cpp:384 #, fuzzy @@ -12433,10 +11881,12 @@ msgstr "" #: ../src/ui/dialog/memory.cpp:99 msgid "Total" -msgstr "" +msgstr "Total" -#: ../src/ui/dialog/memory.cpp:139 ../src/ui/dialog/memory.cpp:145 -#: ../src/ui/dialog/memory.cpp:152 ../src/ui/dialog/memory.cpp:184 +#: ../src/ui/dialog/memory.cpp:139 +#: ../src/ui/dialog/memory.cpp:145 +#: ../src/ui/dialog/memory.cpp:152 +#: ../src/ui/dialog/memory.cpp:184 msgid "Unknown" msgstr "Descoñecido" @@ -12453,34 +11903,27 @@ msgid "Ready." msgstr "" #: ../src/ui/dialog/messages.cpp:76 -msgid "" -"Enable log display by setting dialogs.debug 'redirect' attribute to 1 in " -"preferences.xml" +msgid "Enable log display by setting dialogs.debug 'redirect' attribute to 1 in preferences.xml" msgstr "" #: ../src/ui/dialog/ocaldialogs.cpp:77 -#, fuzzy msgid "File" -msgstr "_Ficheiro" +msgstr "Ficheiro" #: ../src/ui/dialog/ocaldialogs.cpp:175 -#, fuzzy msgid "Username:" -msgstr "Nome de _usuario:" +msgstr "Nome de usuario:" #: ../src/ui/dialog/ocaldialogs.cpp:176 -#, fuzzy msgid "Password:" -msgstr "_Contrasinal:" +msgstr "Contrasinal:" #: ../src/ui/dialog/ocaldialogs.cpp:402 msgid "Error while reading the Open Clip Art RSS feed" msgstr "" #: ../src/ui/dialog/ocaldialogs.cpp:440 -msgid "" -"Failed to receive the Open Clip Art Library RSS feed. Verify if the server " -"name is correct in Configuration->Import/Export (e.g.: openclipart.org)" +msgid "Failed to receive the Open Clip Art Library RSS feed. Verify if the server name is correct in Configuration->Import/Export (e.g.: openclipart.org)" msgstr "" #: ../src/ui/dialog/ocaldialogs.cpp:454 @@ -12488,22 +11931,21 @@ msgid "Server supplied malformed Clip Art feed" msgstr "" #: ../src/ui/dialog/ocaldialogs.cpp:545 -#, fuzzy msgid "Search for:" -msgstr "Xerarquía" +msgstr "Buscar:" #: ../src/ui/dialog/ocaldialogs.cpp:546 msgid "No files matched your search" msgstr "" #: ../src/ui/dialog/ocaldialogs.cpp:557 -#, fuzzy msgid "Search" -msgstr "Xerarquía" +msgstr "Buscar" #: ../src/ui/dialog/ocaldialogs.cpp:574 +#, fuzzy msgid "Files found" -msgstr "" +msgstr "Exportando %d ficheiros" #: ../src/ui/dialog/print.cpp:138 msgid "Could not open temporary PNG for bitmap printing" @@ -12516,18 +11958,17 @@ msgstr "Non se puido exportar ó nome de ficheiro %s.\n" #: ../src/ui/dialog/print.cpp:177 msgid "Failed to set CairoRenderContext" -msgstr "" +msgstr "Fallo ó definir CairoRenderContext" #. set up dialog title, based on document name #: ../src/ui/dialog/print.cpp:217 -#, fuzzy msgid "SVG Document" -msgstr "Documento" +msgstr "Documento SVG" #: ../src/ui/dialog/print.cpp:218 #, fuzzy msgid "Print" -msgstr "Punto" +msgstr "Im_primir..." #. build custom preferences tab #: ../src/ui/dialog/print.cpp:245 @@ -12536,18 +11977,16 @@ msgid "Rendering" msgstr "Renderizado" #: ../src/ui/dialog/scriptdialog.cpp:211 -#, fuzzy msgid "_Execute Javascript" -msgstr "_Executar Perl" +msgstr "_Executar Javascript" #: ../src/ui/dialog/scriptdialog.cpp:213 msgid "_Execute Python" msgstr "_Executar Python" #: ../src/ui/dialog/scriptdialog.cpp:215 -#, fuzzy msgid "_Execute Ruby" -msgstr "_Executar Python" +msgstr "_Executar Ruby" #: ../src/ui/dialog/scriptdialog.cpp:224 msgid "Script" @@ -12565,11 +12004,12 @@ msgstr "Erros" #: ../src/ui/dialog/session-player.cpp:73 #, fuzzy msgid "Session file" -msgstr "Recheo non asignado" +msgstr "Ficheiro PDF" #: ../src/ui/dialog/session-player.cpp:74 +#, fuzzy msgid "Playback controls" -msgstr "" +msgstr "Barra de Controis das Ferramentas" #: ../src/ui/dialog/session-player.cpp:75 #, fuzzy @@ -12580,8 +12020,9 @@ msgstr "Información do uso da memoria" #. fixme: Does this mean the active file for the session, or the file for the active session? #. Please indicate which with a TRANSLATORS comment. #: ../src/ui/dialog/session-player.cpp:85 +#, fuzzy msgid "Active session file:" -msgstr "" +msgstr "Ficheiro de Encapsulated Postscript" #: ../src/ui/dialog/session-player.cpp:86 msgid "Delay (milliseconds):" @@ -12589,19 +12030,17 @@ msgstr "" #. Unload/load buttons #: ../src/ui/dialog/session-player.cpp:94 -#, fuzzy msgid "Close file" -msgstr "Pe_char" +msgstr "Pechar o ficheiro" #: ../src/ui/dialog/session-player.cpp:95 -#, fuzzy msgid "Open new file" -msgstr "Eli_minar" +msgstr "Abrir un novo ficheiro" #: ../src/ui/dialog/session-player.cpp:96 #, fuzzy msgid "Set delay" -msgstr "Establecer coma predeterminado" +msgstr "Establecer o atributo" #: ../src/ui/dialog/session-player.cpp:138 #, fuzzy @@ -12626,8 +12065,9 @@ msgid "Play" msgstr "" #: ../src/ui/dialog/session-player.cpp:177 +#, fuzzy msgid "Open session file" -msgstr "" +msgstr "Abrir un novo ficheiro" #. #### begin left panel #. ### begin notebook @@ -12655,14 +12095,12 @@ msgstr "Debuxando un camiño a man alzada" #. canny edge detection #. TRANSLATORS: "Canny" is the name of the inventor of this edge detection method #: ../src/ui/dialog/tracedialog.cpp:420 -#, fuzzy msgid "Edge detection" -msgstr "Detección de Bordos" +msgstr "Detección de bordos" #: ../src/ui/dialog/tracedialog.cpp:424 -#, fuzzy msgid "Trace with optimal edge detection by J. Canny's algorithm" -msgstr "Vectorizar usando o algoritmo de detección de bordos de J. Canny" +msgstr "Vectorizar usando o algoritmo óptimo de detección de bordos de J. Canny" #: ../src/ui/dialog/tracedialog.cpp:441 msgid "Brightness cutoff for adjacent pixels (determines edge thickness)" @@ -12673,16 +12111,18 @@ msgstr "" #. of colors in an image by selecting an optimized set of representative #. colors and then re-applying this reduced set to the original image. #: ../src/ui/dialog/tracedialog.cpp:453 +#, fuzzy msgid "Color quantization" -msgstr "" +msgstr "Cor inicial:" #: ../src/ui/dialog/tracedialog.cpp:457 msgid "Trace along the boundaries of reduced colors" msgstr "" #: ../src/ui/dialog/tracedialog.cpp:465 +#, fuzzy msgid "The number of reduced colors" -msgstr "" +msgstr "Por número de segmentos" #: ../src/ui/dialog/tracedialog.cpp:467 msgid "Colors:" @@ -12690,9 +12130,8 @@ msgstr "Cores:" #. swap black and white #: ../src/ui/dialog/tracedialog.cpp:473 -#, fuzzy msgid "Invert image" -msgstr "Recheo non asignado" +msgstr "inverter a imaxe" #: ../src/ui/dialog/tracedialog.cpp:478 msgid "Invert black and white regions" @@ -12714,13 +12153,13 @@ msgid "Scans:" msgstr "" #: ../src/ui/dialog/tracedialog.cpp:501 +#, fuzzy msgid "The desired number of scans" -msgstr "" +msgstr "Por número de segmentos" #: ../src/ui/dialog/tracedialog.cpp:505 -#, fuzzy msgid "Colors" -msgstr "Cores:" +msgstr "Cores" #: ../src/ui/dialog/tracedialog.cpp:509 msgid "Trace the given number of reduced colors" @@ -12728,12 +12167,11 @@ msgstr "" #: ../src/ui/dialog/tracedialog.cpp:513 msgid "Grays" -msgstr "" +msgstr "Grises" #: ../src/ui/dialog/tracedialog.cpp:517 -#, fuzzy msgid "Same as Colors, but the result is converted to grayscale" -msgstr "O mesmo ca Cor, pero converte o resultado a escala de grises" +msgstr "O mesmo ca Cores, pero converte o resultado a escala de grises" #. TRANSLATORS: "Smooth" is a verb here #: ../src/ui/dialog/tracedialog.cpp:522 @@ -12750,14 +12188,13 @@ msgid "Stack scans" msgstr "" #: ../src/ui/dialog/tracedialog.cpp:532 -msgid "" -"Stack scans on top of one another (no gaps) instead of tiling (usually with " -"gaps)" +msgid "Stack scans on top of one another (no gaps) instead of tiling (usually with gaps)" msgstr "" #: ../src/ui/dialog/tracedialog.cpp:535 +#, fuzzy msgid "Remove background" -msgstr "" +msgstr "Imaxe de Fondo" #: ../src/ui/dialog/tracedialog.cpp:540 msgid "Remove bottom (background) layer when done" @@ -12782,14 +12219,13 @@ msgid "Speckles of up to this many pixels will be suppressed" msgstr "" #: ../src/ui/dialog/tracedialog.cpp:571 -#, fuzzy msgid "Size:" -msgstr "Tamaño" +msgstr "Tamaño:" #: ../src/ui/dialog/tracedialog.cpp:574 #, fuzzy msgid "Smooth corners" -msgstr "Suavizar" +msgstr "Escalar as esquinas redondeadas" #: ../src/ui/dialog/tracedialog.cpp:576 msgid "Smooth out sharp corners of the trace" @@ -12800,25 +12236,22 @@ msgid "Increase this to smooth corners more" msgstr "" #: ../src/ui/dialog/tracedialog.cpp:589 -#, fuzzy msgid "Optimize paths" -msgstr "Optimizar" +msgstr "Optimizar os camiños" #: ../src/ui/dialog/tracedialog.cpp:592 msgid "Try to optimize paths by joining adjacent Bezier curve segments" msgstr "" #: ../src/ui/dialog/tracedialog.cpp:600 -msgid "" -"Increase this to reduce the number of nodes in the trace by more aggressive " -"optimization" +msgid "Increase this to reduce the number of nodes in the trace by more aggressive optimization" msgstr "" #. ## end option page -#: ../src/ui/dialog/tracedialog.cpp:607 ../src/ui/dialog/tracedialog.cpp:613 -#, fuzzy +#: ../src/ui/dialog/tracedialog.cpp:607 +#: ../src/ui/dialog/tracedialog.cpp:613 msgid "Options" -msgstr "Opcións de Oaf" +msgstr "Opcións" #. ### credits #: ../src/ui/dialog/tracedialog.cpp:621 @@ -12841,15 +12274,12 @@ msgstr "Cubra a área que quere seleccionar coma primeiro plano" #. ## preview #: ../src/ui/dialog/tracedialog.cpp:645 -#, fuzzy msgid "Update" -msgstr "Data" +msgstr "Actualizar" #: ../src/ui/dialog/tracedialog.cpp:651 #, fuzzy -msgid "" -"Preview the intermediate bitmap with the current settings, without actual " -"tracing" +msgid "Preview the intermediate bitmap with the current settings, without actual tracing" msgstr "Previsualizar o resultado ca vectorización actual" #: ../src/ui/dialog/tracedialog.cpp:655 @@ -12909,56 +12339,50 @@ msgid "Rotation angle (positive = counterclockwise)" msgstr "Ángulo de rotación (positivo = sentido antihorario)" #: ../src/ui/dialog/transformation.cpp:93 -msgid "" -"Horizontal skew angle (positive = counterclockwise), or absolute " -"displacement, or percentage displacement" -msgstr "" -"Ángulo de inclinación horizontal (positivo = sentido antihorario), ou " -"desprazamento absoluto, ou porcentaxe de desprazamento" +msgid "Horizontal skew angle (positive = counterclockwise), or absolute displacement, or percentage displacement" +msgstr "Ángulo de inclinación horizontal (positivo = sentido antihorario), ou desprazamento absoluto, ou porcentaxe de desprazamento" #: ../src/ui/dialog/transformation.cpp:95 -msgid "" -"Vertical skew angle (positive = counterclockwise), or absolute displacement, " -"or percentage displacement" -msgstr "" -"Ángulo de inclinación vertical (positivo = sentido antihorario), ou " -"desprazamento absoluto, ou porcentaxe de desprazamento" +msgid "Vertical skew angle (positive = counterclockwise), or absolute displacement, or percentage displacement" +msgstr "Ángulo de inclinación vertical (positivo = sentido antihorario), ou desprazamento absoluto, ou porcentaxe de desprazamento" #: ../src/ui/dialog/transformation.cpp:98 +#, fuzzy msgid "Transformation matrix element A" -msgstr "" +msgstr "Novo nodo" #: ../src/ui/dialog/transformation.cpp:99 +#, fuzzy msgid "Transformation matrix element B" -msgstr "" +msgstr "Novo nodo" #: ../src/ui/dialog/transformation.cpp:100 +#, fuzzy msgid "Transformation matrix element C" -msgstr "" +msgstr "Novo nodo" #: ../src/ui/dialog/transformation.cpp:101 +#, fuzzy msgid "Transformation matrix element D" -msgstr "" +msgstr "Novo nodo" #: ../src/ui/dialog/transformation.cpp:102 +#, fuzzy msgid "Transformation matrix element E" -msgstr "" +msgstr "Novo nodo" #: ../src/ui/dialog/transformation.cpp:103 +#, fuzzy msgid "Transformation matrix element F" -msgstr "" +msgstr "Novo nodo" #: ../src/ui/dialog/transformation.cpp:105 msgid "Rela_tive move" msgstr "Movemento rela_tivo" #: ../src/ui/dialog/transformation.cpp:105 -msgid "" -"Add the specified relative displacement to the current position; otherwise, " -"edit the current absolute position directly" -msgstr "" -"Engadir o desprazamento relativo especificado á posición actual; doutro " -"xeito, edita a posición absoluta actual directamente" +msgid "Add the specified relative displacement to the current position; otherwise, edit the current absolute position directly" +msgstr "Engadir o desprazamento relativo especificado á posición actual; doutro xeito, edita a posición absoluta actual directamente" #: ../src/ui/dialog/transformation.cpp:106 msgid "Scale proportionally" @@ -12973,21 +12397,16 @@ msgid "Apply to each _object separately" msgstr "Aplicar a cada _obxecto por separado" #: ../src/ui/dialog/transformation.cpp:107 -msgid "" -"Apply the scale/rotate/skew to each selected object separately; otherwise, " -"transform the selection as a whole" -msgstr "" -"Aplicar escalar/rotar/inclinar a cada obxecto seleccionado por separado; " -"doutro xeito, transformarase a selección coma un conxunto" +msgid "Apply the scale/rotate/skew to each selected object separately; otherwise, transform the selection as a whole" +msgstr "Aplicar escalar/rotar/inclinar a cada obxecto seleccionado por separado; doutro xeito, transformarase a selección coma un conxunto" #: ../src/ui/dialog/transformation.cpp:108 +#, fuzzy msgid "Edit c_urrent matrix" -msgstr "" +msgstr "Editar as fases do degradado" #: ../src/ui/dialog/transformation.cpp:108 -msgid "" -"Edit the current transform= matrix; otherwise, post-multiply transform= by " -"this matrix" +msgid "Edit the current transform= matrix; otherwise, post-multiply transform= by this matrix" msgstr "" #: ../src/ui/dialog/transformation.cpp:118 @@ -13021,11 +12440,11 @@ msgstr "Aplica-la transformación á selección" #: ../src/ui/dialog/transformation.cpp:842 #, fuzzy msgid "Edit transformation matrix" -msgstr "Reinicia-la transformación" +msgstr "Editar as fases do degradado" #: ../src/ui/dialog/whiteboard-connect.cpp:44 msgid "_Use SSL" -msgstr "" +msgstr "_Usar SSL" #: ../src/ui/dialog/whiteboard-connect.cpp:44 #, fuzzy @@ -13034,44 +12453,39 @@ msgstr "Elevar" #. Construct dialog interface #: ../src/ui/dialog/whiteboard-connect.cpp:75 -#, fuzzy msgid "_Server:" -msgstr "_Gardar" +msgstr "_Servidor:" #: ../src/ui/dialog/whiteboard-connect.cpp:76 -#, fuzzy msgid "_Username:" msgstr "Nome de _usuario:" #: ../src/ui/dialog/whiteboard-connect.cpp:77 -#, fuzzy msgid "_Password:" msgstr "_Contrasinal:" #: ../src/ui/dialog/whiteboard-connect.cpp:78 -#, fuzzy msgid "P_ort:" -msgstr "_Exportar" +msgstr "P_orto:" #. Buttons #: ../src/ui/dialog/whiteboard-connect.cpp:113 -#, fuzzy msgid "Connect" -msgstr "Conectador" +msgstr "Conectar" #: ../src/ui/dialog/whiteboard-connect.cpp:144 msgid "Establishing connection to Jabber server %1" -msgstr "" +msgstr "Establecendo a conexión co servidor Jabber %1" #: ../src/ui/dialog/whiteboard-connect.cpp:171 #: ../src/ui/dialog/whiteboard-connect.cpp:216 #: ../src/ui/dialog/whiteboard-connect.cpp:254 msgid "Failed to establish connection to Jabber server %1" -msgstr "" +msgstr "Produciuse un erro ó establecer a conexión co servidor Jabber %1" #: ../src/ui/dialog/whiteboard-connect.cpp:209 msgid "Establishing connection to Jabber server %1 as user %2" -msgstr "" +msgstr "Establecendo a conexión co servidor Jabber %1 co usuario %2" #: ../src/ui/dialog/whiteboard-connect.cpp:221 msgid "Authentication failed on Jabber server %1 as %2" @@ -13085,7 +12499,7 @@ msgstr "" #: ../src/ui/dialog/whiteboard-connect.cpp:232 #: ../src/ui/dialog/whiteboard-connect.cpp:270 msgid "Connected to Jabber server %1 as %2" -msgstr "" +msgstr "Conectado ó servidor Jabber %1 coma %2" #: ../src/ui/dialog/whiteboard-connect.cpp:259 msgid "Registration failed on Jabber server %1 as %2" @@ -13114,7 +12528,7 @@ msgstr "Crear rectángulo" #: ../src/ui/dialog/whiteboard-sharewithchat.cpp:102 #, fuzzy msgid "Connect to chatroom" -msgstr "Conectador" +msgstr "Obxecto a camiño" #: ../src/ui/dialog/whiteboard-sharewithchat.cpp:137 msgid "Synchronizing with chatroom %1@%2 using the handle %3" @@ -13122,8 +12536,9 @@ msgstr "" #. Construct dialog interface #: ../src/ui/dialog/whiteboard-sharewithuser.cpp:76 +#, fuzzy msgid "_User's Jabber ID:" -msgstr "" +msgstr "Establecer o ID do obxecto" #. Buttons #: ../src/ui/dialog/whiteboard-sharewithuser.cpp:80 @@ -13131,13 +12546,12 @@ msgid "_Invite user" msgstr "" #: ../src/ui/dialog/whiteboard-sharewithuser.cpp:81 -#, fuzzy msgid "_Cancel" -msgstr "Cancelar" +msgstr "_Cancelar" #: ../src/ui/dialog/whiteboard-sharewithuser.cpp:92 msgid "Buddy List" -msgstr "" +msgstr "Lista de amigos" #: ../src/ui/dialog/whiteboard-sharewithuser.cpp:181 msgid "Sending whiteboard invitation to %1" @@ -13159,180 +12573,292 @@ msgstr "" #. Node Tool controls #. Calligraphy Tool controls #. Session playback controls -#: ../src/ui/stock-items.cpp:31 ../src/ui/stock-items.cpp:32 -#: ../src/ui/stock-items.cpp:33 ../src/ui/stock-items.cpp:34 -#: ../src/ui/stock-items.cpp:35 ../src/ui/stock-items.cpp:36 -#: ../src/ui/stock-items.cpp:37 ../src/ui/stock-items.cpp:38 -#: ../src/ui/stock-items.cpp:39 ../src/ui/stock-items.cpp:40 -#: ../src/ui/stock-items.cpp:41 ../src/ui/stock-items.cpp:42 -#: ../src/ui/stock-items.cpp:45 ../src/ui/stock-items.cpp:46 -#: ../src/ui/stock-items.cpp:47 ../src/ui/stock-items.cpp:48 -#: ../src/ui/stock-items.cpp:49 ../src/ui/stock-items.cpp:50 -#: ../src/ui/stock-items.cpp:51 ../src/ui/stock-items.cpp:52 -#: ../src/ui/stock-items.cpp:53 ../src/ui/stock-items.cpp:54 -#: ../src/ui/stock-items.cpp:55 ../src/ui/stock-items.cpp:56 -#: ../src/ui/stock-items.cpp:57 ../src/ui/stock-items.cpp:58 -#: ../src/ui/stock-items.cpp:61 ../src/ui/stock-items.cpp:62 -#: ../src/ui/stock-items.cpp:63 ../src/ui/stock-items.cpp:64 -#: ../src/ui/stock-items.cpp:65 ../src/ui/stock-items.cpp:66 -#: ../src/ui/stock-items.cpp:67 ../src/ui/stock-items.cpp:68 -#: ../src/ui/stock-items.cpp:69 ../src/ui/stock-items.cpp:70 -#: ../src/ui/stock-items.cpp:71 ../src/ui/stock-items.cpp:72 -#: ../src/ui/stock-items.cpp:73 ../src/ui/stock-items.cpp:74 -#: ../src/ui/stock-items.cpp:75 ../src/ui/stock-items.cpp:76 -#: ../src/ui/stock-items.cpp:77 ../src/ui/stock-items.cpp:78 -#: ../src/ui/stock-items.cpp:79 ../src/ui/stock-items.cpp:80 -#: ../src/ui/stock-items.cpp:81 ../src/ui/stock-items.cpp:82 -#: ../src/ui/stock-items.cpp:83 ../src/ui/stock-items.cpp:84 -#: ../src/ui/stock-items.cpp:85 ../src/ui/stock-items.cpp:86 -#: ../src/ui/stock-items.cpp:87 ../src/ui/stock-items.cpp:88 -#: ../src/ui/stock-items.cpp:91 ../src/ui/stock-items.cpp:92 -#: ../src/ui/stock-items.cpp:93 ../src/ui/stock-items.cpp:94 -#: ../src/ui/stock-items.cpp:95 ../src/ui/stock-items.cpp:96 -#: ../src/ui/stock-items.cpp:97 ../src/ui/stock-items.cpp:98 -#: ../src/ui/stock-items.cpp:99 ../src/ui/stock-items.cpp:100 -#: ../src/ui/stock-items.cpp:101 ../src/ui/stock-items.cpp:102 -#: ../src/ui/stock-items.cpp:103 ../src/ui/stock-items.cpp:104 -#: ../src/ui/stock-items.cpp:107 ../src/ui/stock-items.cpp:108 -#: ../src/ui/stock-items.cpp:109 ../src/ui/stock-items.cpp:110 -#: ../src/ui/stock-items.cpp:111 ../src/ui/stock-items.cpp:112 -#: ../src/ui/stock-items.cpp:113 ../src/ui/stock-items.cpp:114 -#: ../src/ui/stock-items.cpp:115 ../src/ui/stock-items.cpp:116 -#: ../src/ui/stock-items.cpp:117 ../src/ui/stock-items.cpp:118 -#: ../src/ui/stock-items.cpp:119 ../src/ui/stock-items.cpp:120 -#: ../src/ui/stock-items.cpp:121 ../src/ui/stock-items.cpp:122 -#: ../src/ui/stock-items.cpp:123 ../src/ui/stock-items.cpp:124 -#: ../src/ui/stock-items.cpp:125 ../src/ui/stock-items.cpp:126 -#: ../src/ui/stock-items.cpp:129 ../src/ui/stock-items.cpp:130 -#: ../src/ui/stock-items.cpp:131 ../src/ui/stock-items.cpp:132 -#: ../src/ui/stock-items.cpp:133 ../src/ui/stock-items.cpp:134 -#: ../src/ui/stock-items.cpp:135 ../src/ui/stock-items.cpp:136 -#: ../src/ui/stock-items.cpp:137 ../src/ui/stock-items.cpp:138 -#: ../src/ui/stock-items.cpp:139 ../src/ui/stock-items.cpp:140 -#: ../src/ui/stock-items.cpp:141 ../src/ui/stock-items.cpp:142 -#: ../src/ui/stock-items.cpp:143 ../src/ui/stock-items.cpp:144 -#: ../src/ui/stock-items.cpp:145 ../src/ui/stock-items.cpp:149 -#: ../src/ui/stock-items.cpp:150 ../src/ui/stock-items.cpp:151 -#: ../src/ui/stock-items.cpp:152 ../src/ui/stock-items.cpp:155 -#: ../src/ui/stock-items.cpp:156 ../src/ui/stock-items.cpp:157 -#: ../src/ui/stock-items.cpp:160 ../src/ui/stock-items.cpp:161 -#: ../src/ui/stock-items.cpp:162 ../src/ui/stock-items.cpp:163 -#: ../src/ui/stock-items.cpp:164 ../src/ui/stock-items.cpp:165 -#: ../src/ui/stock-items.cpp:166 ../src/ui/stock-items.cpp:167 -#: ../src/ui/stock-items.cpp:168 ../src/ui/stock-items.cpp:169 -#: ../src/ui/stock-items.cpp:170 ../src/ui/stock-items.cpp:171 -#: ../src/ui/stock-items.cpp:174 ../src/ui/stock-items.cpp:175 -#: ../src/ui/stock-items.cpp:176 ../src/ui/stock-items.cpp:177 -#: ../src/ui/stock-items.cpp:180 ../src/ui/stock-items.cpp:181 -#: ../src/ui/stock-items.cpp:182 ../src/ui/stock-items.cpp:183 -#: ../src/ui/stock-items.cpp:184 ../src/ui/stock-items.cpp:185 -#: ../src/ui/stock-items.cpp:186 ../src/ui/stock-items.cpp:187 -#: ../src/ui/stock-items.cpp:188 ../src/ui/stock-items.cpp:189 -#: ../src/ui/stock-items.cpp:190 ../src/ui/stock-items.cpp:193 -#: ../src/ui/stock-items.cpp:194 ../src/ui/stock-items.cpp:197 -#: ../src/ui/stock-items.cpp:198 ../src/ui/stock-items.cpp:199 -#: ../src/ui/stock-items.cpp:200 ../src/ui/stock-items.cpp:201 -#: ../src/ui/view/edit-widget.cpp:343 ../src/ui/view/edit-widget.cpp:348 -#: ../src/ui/view/edit-widget.cpp:356 ../src/ui/view/edit-widget.cpp:361 -#: ../src/ui/view/edit-widget.cpp:366 ../src/ui/view/edit-widget.cpp:371 -#: ../src/ui/view/edit-widget.cpp:376 ../src/ui/view/edit-widget.cpp:381 -#: ../src/ui/view/edit-widget.cpp:394 ../src/ui/view/edit-widget.cpp:399 -#: ../src/ui/view/edit-widget.cpp:413 ../src/ui/view/edit-widget.cpp:417 -#: ../src/ui/view/edit-widget.cpp:421 ../src/ui/view/edit-widget.cpp:425 -#: ../src/ui/view/edit-widget.cpp:429 ../src/ui/view/edit-widget.cpp:433 -#: ../src/ui/view/edit-widget.cpp:447 ../src/ui/view/edit-widget.cpp:451 -#: ../src/ui/view/edit-widget.cpp:455 ../src/ui/view/edit-widget.cpp:486 -#: ../src/ui/view/edit-widget.cpp:495 ../src/ui/view/edit-widget.cpp:499 -#: ../src/ui/view/edit-widget.cpp:503 ../src/ui/view/edit-widget.cpp:507 -#: ../src/ui/view/edit-widget.cpp:511 ../src/ui/view/edit-widget.cpp:515 -#: ../src/ui/view/edit-widget.cpp:519 ../src/ui/view/edit-widget.cpp:523 -#: ../src/ui/view/edit-widget.cpp:527 ../src/ui/view/edit-widget.cpp:531 -#: ../src/ui/view/edit-widget.cpp:535 ../src/ui/view/edit-widget.cpp:632 -#: ../src/ui/view/edit-widget.cpp:644 ../src/ui/view/edit-widget.cpp:648 -#: ../src/ui/view/edit-widget.cpp:652 ../src/ui/view/edit-widget.cpp:656 -#: ../src/ui/view/edit-widget.cpp:660 ../src/ui/view/edit-widget.cpp:664 -#: ../src/ui/view/edit-widget.cpp:668 ../src/ui/view/edit-widget.cpp:672 -#: ../src/ui/view/edit-widget.cpp:676 ../src/ui/view/edit-widget.cpp:680 -#: ../src/ui/view/edit-widget.cpp:684 ../src/ui/view/edit-widget.cpp:688 -#: ../src/ui/view/edit-widget.cpp:692 ../src/ui/view/edit-widget.cpp:696 -#: ../src/ui/view/edit-widget.cpp:700 ../src/ui/view/edit-widget.cpp:704 -#: ../src/ui/view/edit-widget.cpp:709 ../src/ui/view/edit-widget.cpp:715 -#: ../src/ui/view/edit-widget.cpp:719 ../src/ui/view/edit-widget.cpp:769 -#: ../src/ui/view/edit-widget.cpp:774 ../src/ui/view/edit-widget.cpp:810 -#: ../src/ui/view/edit-widget.cpp:815 ../src/ui/view/edit-widget.cpp:820 -#: ../src/ui/view/edit-widget.cpp:824 ../src/ui/view/edit-widget.cpp:828 -#: ../src/ui/view/edit-widget.cpp:832 ../src/ui/view/edit-widget.cpp:836 -#: ../src/ui/view/edit-widget.cpp:840 ../src/ui/view/edit-widget.cpp:844 -#: ../src/ui/view/edit-widget.cpp:848 ../src/ui/view/edit-widget.cpp:852 -#: ../src/ui/view/edit-widget.cpp:856 ../src/ui/view/edit-widget.cpp:861 -#: ../src/ui/view/edit-widget.cpp:865 ../src/ui/view/edit-widget.cpp:869 -#: ../src/ui/view/edit-widget.cpp:873 ../src/ui/view/edit-widget.cpp:878 -#: ../src/ui/view/edit-widget.cpp:882 ../src/ui/view/edit-widget.cpp:886 -#: ../src/ui/view/edit-widget.cpp:890 ../src/ui/view/edit-widget.cpp:894 -#: ../src/ui/view/edit-widget.cpp:898 ../src/ui/view/edit-widget.cpp:902 -#: ../src/ui/view/edit-widget.cpp:906 ../src/ui/view/edit-widget.cpp:910 -#: ../src/ui/view/edit-widget.cpp:914 ../src/ui/view/edit-widget.cpp:918 +#: ../src/ui/stock-items.cpp:31 +#: ../src/ui/stock-items.cpp:32 +#: ../src/ui/stock-items.cpp:33 +#: ../src/ui/stock-items.cpp:34 +#: ../src/ui/stock-items.cpp:35 +#: ../src/ui/stock-items.cpp:36 +#: ../src/ui/stock-items.cpp:37 +#: ../src/ui/stock-items.cpp:38 +#: ../src/ui/stock-items.cpp:39 +#: ../src/ui/stock-items.cpp:40 +#: ../src/ui/stock-items.cpp:41 +#: ../src/ui/stock-items.cpp:42 +#: ../src/ui/stock-items.cpp:45 +#: ../src/ui/stock-items.cpp:46 +#: ../src/ui/stock-items.cpp:47 +#: ../src/ui/stock-items.cpp:48 +#: ../src/ui/stock-items.cpp:49 +#: ../src/ui/stock-items.cpp:50 +#: ../src/ui/stock-items.cpp:51 +#: ../src/ui/stock-items.cpp:52 +#: ../src/ui/stock-items.cpp:53 +#: ../src/ui/stock-items.cpp:54 +#: ../src/ui/stock-items.cpp:55 +#: ../src/ui/stock-items.cpp:56 +#: ../src/ui/stock-items.cpp:57 +#: ../src/ui/stock-items.cpp:58 +#: ../src/ui/stock-items.cpp:61 +#: ../src/ui/stock-items.cpp:62 +#: ../src/ui/stock-items.cpp:63 +#: ../src/ui/stock-items.cpp:64 +#: ../src/ui/stock-items.cpp:65 +#: ../src/ui/stock-items.cpp:66 +#: ../src/ui/stock-items.cpp:67 +#: ../src/ui/stock-items.cpp:68 +#: ../src/ui/stock-items.cpp:69 +#: ../src/ui/stock-items.cpp:70 +#: ../src/ui/stock-items.cpp:71 +#: ../src/ui/stock-items.cpp:72 +#: ../src/ui/stock-items.cpp:73 +#: ../src/ui/stock-items.cpp:74 +#: ../src/ui/stock-items.cpp:75 +#: ../src/ui/stock-items.cpp:76 +#: ../src/ui/stock-items.cpp:77 +#: ../src/ui/stock-items.cpp:78 +#: ../src/ui/stock-items.cpp:79 +#: ../src/ui/stock-items.cpp:80 +#: ../src/ui/stock-items.cpp:81 +#: ../src/ui/stock-items.cpp:82 +#: ../src/ui/stock-items.cpp:83 +#: ../src/ui/stock-items.cpp:84 +#: ../src/ui/stock-items.cpp:85 +#: ../src/ui/stock-items.cpp:86 +#: ../src/ui/stock-items.cpp:87 +#: ../src/ui/stock-items.cpp:88 +#: ../src/ui/stock-items.cpp:91 +#: ../src/ui/stock-items.cpp:92 +#: ../src/ui/stock-items.cpp:93 +#: ../src/ui/stock-items.cpp:94 +#: ../src/ui/stock-items.cpp:95 +#: ../src/ui/stock-items.cpp:96 +#: ../src/ui/stock-items.cpp:97 +#: ../src/ui/stock-items.cpp:98 +#: ../src/ui/stock-items.cpp:99 +#: ../src/ui/stock-items.cpp:100 +#: ../src/ui/stock-items.cpp:101 +#: ../src/ui/stock-items.cpp:102 +#: ../src/ui/stock-items.cpp:103 +#: ../src/ui/stock-items.cpp:104 +#: ../src/ui/stock-items.cpp:107 +#: ../src/ui/stock-items.cpp:108 +#: ../src/ui/stock-items.cpp:109 +#: ../src/ui/stock-items.cpp:110 +#: ../src/ui/stock-items.cpp:111 +#: ../src/ui/stock-items.cpp:112 +#: ../src/ui/stock-items.cpp:113 +#: ../src/ui/stock-items.cpp:114 +#: ../src/ui/stock-items.cpp:115 +#: ../src/ui/stock-items.cpp:116 +#: ../src/ui/stock-items.cpp:117 +#: ../src/ui/stock-items.cpp:118 +#: ../src/ui/stock-items.cpp:119 +#: ../src/ui/stock-items.cpp:120 +#: ../src/ui/stock-items.cpp:121 +#: ../src/ui/stock-items.cpp:122 +#: ../src/ui/stock-items.cpp:123 +#: ../src/ui/stock-items.cpp:124 +#: ../src/ui/stock-items.cpp:125 +#: ../src/ui/stock-items.cpp:126 +#: ../src/ui/stock-items.cpp:129 +#: ../src/ui/stock-items.cpp:130 +#: ../src/ui/stock-items.cpp:131 +#: ../src/ui/stock-items.cpp:132 +#: ../src/ui/stock-items.cpp:133 +#: ../src/ui/stock-items.cpp:134 +#: ../src/ui/stock-items.cpp:135 +#: ../src/ui/stock-items.cpp:136 +#: ../src/ui/stock-items.cpp:137 +#: ../src/ui/stock-items.cpp:138 +#: ../src/ui/stock-items.cpp:139 +#: ../src/ui/stock-items.cpp:140 +#: ../src/ui/stock-items.cpp:141 +#: ../src/ui/stock-items.cpp:142 +#: ../src/ui/stock-items.cpp:143 +#: ../src/ui/stock-items.cpp:144 +#: ../src/ui/stock-items.cpp:145 +#: ../src/ui/stock-items.cpp:149 +#: ../src/ui/stock-items.cpp:150 +#: ../src/ui/stock-items.cpp:151 +#: ../src/ui/stock-items.cpp:152 +#: ../src/ui/stock-items.cpp:155 +#: ../src/ui/stock-items.cpp:156 +#: ../src/ui/stock-items.cpp:157 +#: ../src/ui/stock-items.cpp:160 +#: ../src/ui/stock-items.cpp:161 +#: ../src/ui/stock-items.cpp:162 +#: ../src/ui/stock-items.cpp:163 +#: ../src/ui/stock-items.cpp:164 +#: ../src/ui/stock-items.cpp:165 +#: ../src/ui/stock-items.cpp:166 +#: ../src/ui/stock-items.cpp:167 +#: ../src/ui/stock-items.cpp:168 +#: ../src/ui/stock-items.cpp:169 +#: ../src/ui/stock-items.cpp:170 +#: ../src/ui/stock-items.cpp:171 +#: ../src/ui/stock-items.cpp:174 +#: ../src/ui/stock-items.cpp:175 +#: ../src/ui/stock-items.cpp:176 +#: ../src/ui/stock-items.cpp:177 +#: ../src/ui/stock-items.cpp:180 +#: ../src/ui/stock-items.cpp:181 +#: ../src/ui/stock-items.cpp:182 +#: ../src/ui/stock-items.cpp:183 +#: ../src/ui/stock-items.cpp:184 +#: ../src/ui/stock-items.cpp:185 +#: ../src/ui/stock-items.cpp:186 +#: ../src/ui/stock-items.cpp:187 +#: ../src/ui/stock-items.cpp:188 +#: ../src/ui/stock-items.cpp:189 +#: ../src/ui/stock-items.cpp:190 +#: ../src/ui/stock-items.cpp:193 +#: ../src/ui/stock-items.cpp:194 +#: ../src/ui/stock-items.cpp:197 +#: ../src/ui/stock-items.cpp:198 +#: ../src/ui/stock-items.cpp:199 +#: ../src/ui/stock-items.cpp:200 +#: ../src/ui/stock-items.cpp:201 +#: ../src/ui/view/edit-widget.cpp:343 +#: ../src/ui/view/edit-widget.cpp:348 +#: ../src/ui/view/edit-widget.cpp:356 +#: ../src/ui/view/edit-widget.cpp:361 +#: ../src/ui/view/edit-widget.cpp:366 +#: ../src/ui/view/edit-widget.cpp:371 +#: ../src/ui/view/edit-widget.cpp:376 +#: ../src/ui/view/edit-widget.cpp:381 +#: ../src/ui/view/edit-widget.cpp:394 +#: ../src/ui/view/edit-widget.cpp:399 +#: ../src/ui/view/edit-widget.cpp:413 +#: ../src/ui/view/edit-widget.cpp:417 +#: ../src/ui/view/edit-widget.cpp:421 +#: ../src/ui/view/edit-widget.cpp:425 +#: ../src/ui/view/edit-widget.cpp:429 +#: ../src/ui/view/edit-widget.cpp:433 +#: ../src/ui/view/edit-widget.cpp:447 +#: ../src/ui/view/edit-widget.cpp:451 +#: ../src/ui/view/edit-widget.cpp:455 +#: ../src/ui/view/edit-widget.cpp:486 +#: ../src/ui/view/edit-widget.cpp:495 +#: ../src/ui/view/edit-widget.cpp:499 +#: ../src/ui/view/edit-widget.cpp:503 +#: ../src/ui/view/edit-widget.cpp:507 +#: ../src/ui/view/edit-widget.cpp:511 +#: ../src/ui/view/edit-widget.cpp:515 +#: ../src/ui/view/edit-widget.cpp:519 +#: ../src/ui/view/edit-widget.cpp:523 +#: ../src/ui/view/edit-widget.cpp:527 +#: ../src/ui/view/edit-widget.cpp:531 +#: ../src/ui/view/edit-widget.cpp:535 +#: ../src/ui/view/edit-widget.cpp:632 +#: ../src/ui/view/edit-widget.cpp:644 +#: ../src/ui/view/edit-widget.cpp:648 +#: ../src/ui/view/edit-widget.cpp:652 +#: ../src/ui/view/edit-widget.cpp:656 +#: ../src/ui/view/edit-widget.cpp:660 +#: ../src/ui/view/edit-widget.cpp:664 +#: ../src/ui/view/edit-widget.cpp:668 +#: ../src/ui/view/edit-widget.cpp:672 +#: ../src/ui/view/edit-widget.cpp:676 +#: ../src/ui/view/edit-widget.cpp:680 +#: ../src/ui/view/edit-widget.cpp:684 +#: ../src/ui/view/edit-widget.cpp:688 +#: ../src/ui/view/edit-widget.cpp:692 +#: ../src/ui/view/edit-widget.cpp:696 +#: ../src/ui/view/edit-widget.cpp:700 +#: ../src/ui/view/edit-widget.cpp:704 +#: ../src/ui/view/edit-widget.cpp:709 +#: ../src/ui/view/edit-widget.cpp:715 +#: ../src/ui/view/edit-widget.cpp:719 +#: ../src/ui/view/edit-widget.cpp:769 +#: ../src/ui/view/edit-widget.cpp:774 +#: ../src/ui/view/edit-widget.cpp:810 +#: ../src/ui/view/edit-widget.cpp:815 +#: ../src/ui/view/edit-widget.cpp:820 +#: ../src/ui/view/edit-widget.cpp:824 +#: ../src/ui/view/edit-widget.cpp:828 +#: ../src/ui/view/edit-widget.cpp:832 +#: ../src/ui/view/edit-widget.cpp:836 +#: ../src/ui/view/edit-widget.cpp:840 +#: ../src/ui/view/edit-widget.cpp:844 +#: ../src/ui/view/edit-widget.cpp:848 +#: ../src/ui/view/edit-widget.cpp:852 +#: ../src/ui/view/edit-widget.cpp:856 +#: ../src/ui/view/edit-widget.cpp:861 +#: ../src/ui/view/edit-widget.cpp:865 +#: ../src/ui/view/edit-widget.cpp:869 +#: ../src/ui/view/edit-widget.cpp:873 +#: ../src/ui/view/edit-widget.cpp:878 +#: ../src/ui/view/edit-widget.cpp:882 +#: ../src/ui/view/edit-widget.cpp:886 +#: ../src/ui/view/edit-widget.cpp:890 +#: ../src/ui/view/edit-widget.cpp:894 +#: ../src/ui/view/edit-widget.cpp:898 +#: ../src/ui/view/edit-widget.cpp:902 +#: ../src/ui/view/edit-widget.cpp:906 +#: ../src/ui/view/edit-widget.cpp:910 +#: ../src/ui/view/edit-widget.cpp:914 +#: ../src/ui/view/edit-widget.cpp:918 #: ../src/ui/view/edit-widget.cpp:1003 msgid "PLACEHOLDER, do not translate" msgstr "" -#: ../src/ui/view/edit-widget.cpp:1062 ../src/widgets/desktop-widget.cpp:381 +#: ../src/ui/view/edit-widget.cpp:1062 +#: ../src/widgets/desktop-widget.cpp:381 msgid "Zoom drawing if window size changes" msgstr "Modificar o zoom do debuxo se o tamaño da ventá cambia" -#: ../src/ui/view/edit-widget.cpp:1083 ../src/widgets/desktop-widget.cpp:510 +#: ../src/ui/view/edit-widget.cpp:1083 +#: ../src/widgets/desktop-widget.cpp:510 msgid "Cursor coordinates" msgstr "Coordenadas do cursor" #. display the initial welcome message in the statusbar -#: ../src/ui/view/edit-widget.cpp:1100 ../src/widgets/desktop-widget.cpp:558 -msgid "" -"Welcome to Inkscape! Use shape or freehand tools to create objects; " -"use selector (arrow) to move or transform them." -msgstr "" -"Benvid@ a Inkscape! Use as ferramentas de figuras ou debuxo a man " -"alzada para crear obxectos; use o selector (frecha) para movelos e " -"transformalos." +#: ../src/ui/view/edit-widget.cpp:1100 +#: ../src/widgets/desktop-widget.cpp:558 +msgid "Welcome to Inkscape! Use shape or freehand tools to create objects; use selector (arrow) to move or transform them." +msgstr "Benvid@ a Inkscape! Use as ferramentas de figuras ou debuxo a man alzada para crear obxectos; use o selector (frecha) para movelos e transformalos." -#: ../src/ui/view/edit-widget.cpp:1211 ../src/widgets/desktop-widget.cpp:844 +#: ../src/ui/view/edit-widget.cpp:1211 +#: ../src/widgets/desktop-widget.cpp:844 #, c-format msgid "" -"Save changes to document \"%s\" before " -"closing?\n" +"Save changes to document \"%s\" before closing?\n" "\n" "If you close without saving, your changes will be discarded." msgstr "" -"Gardar os cambios do documento \"%s\" " -"antes de pechar?\n" +"Gardar os cambios do documento \"%s\" antes de pechar?\n" "\n" "Se pecha sen gardar, descartaranse os cambios." -#: ../src/ui/view/edit-widget.cpp:1222 ../src/ui/view/edit-widget.cpp:1269 -#: ../src/widgets/desktop-widget.cpp:851 ../src/widgets/desktop-widget.cpp:907 +#: ../src/ui/view/edit-widget.cpp:1222 +#: ../src/ui/view/edit-widget.cpp:1269 +#: ../src/widgets/desktop-widget.cpp:851 +#: ../src/widgets/desktop-widget.cpp:907 msgid "Close _without saving" msgstr "Pechar _sen gardar" -#: ../src/ui/view/edit-widget.cpp:1257 ../src/widgets/desktop-widget.cpp:899 +#: ../src/ui/view/edit-widget.cpp:1257 +#: ../src/widgets/desktop-widget.cpp:899 #, fuzzy, c-format msgid "" -"The file \"%s\" was saved with a " -"format (%s) that may cause data loss!\n" +"The file \"%s\" was saved with a format (%s) that may cause data loss!\n" "\n" "Do you want to save this file as an Inkscape SVG?" msgstr "" -"O ficheiro \"%s\" gardouse co formato " -"(%s) que pode provocar perdas de datos!\n" +"O ficheiro \"%s\" gardouse co formato (%s) que pode provocar perdas de datos!\n" "\n" "Desexa gardar este ficheiro con outro formato?" -#: ../src/ui/view/edit-widget.cpp:1272 ../src/widgets/desktop-widget.cpp:910 +#: ../src/ui/view/edit-widget.cpp:1272 +#: ../src/widgets/desktop-widget.cpp:910 msgid "_Save as SVG" -msgstr "" +msgstr "Gardar coma _SVG" #: ../src/ui/widget/filter-effect-chooser.cpp:25 #, fuzzy msgid "_Blend mode:" -msgstr "nodo final" +msgstr "Modo de _visualización" #: ../src/ui/widget/filter-effect-chooser.cpp:26 #, fuzzy @@ -13351,21 +12877,18 @@ msgstr "Metro" #: ../src/ui/widget/object-composite-settings.cpp:51 #: ../src/ui/widget/selected-style.cpp:1031 #: ../src/ui/widget/selected-style.cpp:1032 -#, fuzzy msgid "Opacity, %" -msgstr "Opacidade:" +msgstr "Opacidade, %" #: ../src/ui/widget/object-composite-settings.cpp:152 -#, fuzzy msgid "Change blur" -msgstr "Cambia-los atributos" +msgstr "Cambiar o desenfoque" #: ../src/ui/widget/object-composite-settings.cpp:192 #: ../src/ui/widget/selected-style.cpp:855 #: ../src/ui/widget/selected-style.cpp:1149 -#, fuzzy msgid "Change opacity" -msgstr "Opacidade principal" +msgstr "Cambiar a opacidade" #: ../src/ui/widget/page-sizer.cpp:190 msgid "U_nits:" @@ -13409,26 +12932,21 @@ msgid "_Fit page to selection" msgstr "A_daptar a páxina á selección" #: ../src/ui/widget/page-sizer.cpp:273 -msgid "" -"Resize the page to fit the current selection, or the entire drawing if there " -"is no selection" -msgstr "" -"Redimensiona a páxina para conter a selección actual, ou todo o debuxo se " -"non hai nada seleccionado" +msgid "Resize the page to fit the current selection, or the entire drawing if there is no selection" +msgstr "Redimensiona a páxina para conter a selección actual, ou todo o debuxo se non hai nada seleccionado" #: ../src/ui/widget/page-sizer.cpp:331 -#, fuzzy msgid "Set page size" -msgstr "Configura-lo ancho da páxina" +msgstr "Configurar o tamaño da páxina" #: ../src/ui/widget/panel.cpp:121 +#, fuzzy msgid "List" -msgstr "" +msgstr "Lista de amigos" #: ../src/ui/widget/panel.cpp:144 -#, fuzzy msgid "swatches|Size" -msgstr "Pegar o tamaño" +msgstr "Tamaño" #: ../src/ui/widget/panel.cpp:148 msgid "tiny" @@ -13452,9 +12970,8 @@ msgid "huge" msgstr "enorme" #: ../src/ui/widget/panel.cpp:175 -#, fuzzy msgid "swatches|Width" -msgstr "Pegar A_ncho" +msgstr "Ancho" #: ../src/ui/widget/panel.cpp:179 #, fuzzy @@ -13491,9 +13008,7 @@ msgid "Reset" msgstr " R_establecer" #: ../src/ui/widget/random.cpp:123 -msgid "" -"Reseed the random number generator; this creates a different sequence of " -"random numbers." +msgid "Reseed the random number generator; this creates a different sequence of random numbers." msgstr "" #: ../src/ui/widget/rendering-options.cpp:39 @@ -13508,42 +13023,34 @@ msgstr "Selector" #: ../src/ui/widget/rendering-options.cpp:41 msgid "Bitmap" -msgstr "" +msgstr "Mapa de bits" #: ../src/ui/widget/rendering-options.cpp:42 msgid "Bitmap options" -msgstr "" +msgstr "Opcións de mapa de bits" #: ../src/ui/widget/rendering-options.cpp:44 #, fuzzy msgid "Preferred resolution of rendering, in dots per inch." -msgstr "Resolución preferida do mapa de bits (puntos por polgada)" +msgstr "Resolución predeterminada do mapa de bits no diálogo de Exportación (en puntos por polgada)" #: ../src/ui/widget/rendering-options.cpp:52 -msgid "" -"Render using Cairo vector operations. The resulting image is usually " -"smaller in file size and can be arbitrarily scaled, but some filter effects " -"will not be correctly rendered." +msgid "Render using Cairo vector operations. The resulting image is usually smaller in file size and can be arbitrarily scaled, but some filter effects will not be correctly rendered." msgstr "" #: ../src/ui/widget/rendering-options.cpp:57 -msgid "" -"Render everything as bitmap. The resulting image is usually larger in file " -"size and cannot be arbitrarily scaled without quality loss, but all objects " -"will be rendered exactly as displayed." +msgid "Render everything as bitmap. The resulting image is usually larger in file size and cannot be arbitrarily scaled without quality loss, but all objects will be rendered exactly as displayed." msgstr "" #: ../src/ui/widget/selected-style.cpp:106 #: ../src/ui/widget/style-swatch.cpp:110 -#, fuzzy msgid "Fill:" -msgstr "Recheo" +msgstr "Recheo:" #: ../src/ui/widget/selected-style.cpp:107 #: ../src/ui/widget/style-swatch.cpp:111 -#, fuzzy msgid "Stroke:" -msgstr "Trazo" +msgstr "Trazo:" # O de opacidade #: ../src/ui/widget/selected-style.cpp:108 @@ -13562,9 +13069,8 @@ msgstr "Non hai nada seleccionado" #: ../src/ui/widget/selected-style.cpp:155 #: ../src/ui/widget/style-swatch.cpp:328 -#, fuzzy msgid "None" -msgstr "%s" +msgstr "Ningún" #: ../src/ui/widget/selected-style.cpp:158 #: ../src/ui/widget/style-swatch.cpp:330 @@ -13577,19 +13083,22 @@ msgid "No stroke" msgstr "Sen trazo" #: ../src/ui/widget/selected-style.cpp:160 -#: ../src/ui/widget/style-swatch.cpp:309 ../src/widgets/paint-selector.cpp:189 +#: ../src/ui/widget/style-swatch.cpp:309 +#: ../src/widgets/paint-selector.cpp:189 msgid "Pattern" msgstr "Patrón" #: ../src/ui/widget/selected-style.cpp:163 -#: ../src/ui/widget/style-swatch.cpp:311 ../src/widgets/paint-selector.cpp:997 +#: ../src/ui/widget/style-swatch.cpp:311 +#: ../src/widgets/paint-selector.cpp:997 msgid "Pattern fill" msgstr "Recheo de patrón" #: ../src/ui/widget/selected-style.cpp:163 #: ../src/ui/widget/style-swatch.cpp:311 +#, fuzzy msgid "Pattern stroke" -msgstr "" +msgstr "Establecer patrón no trazo" #: ../src/ui/widget/selected-style.cpp:165 #, fuzzy @@ -13623,21 +13132,21 @@ msgstr "Trazo de degradado radial" #: ../src/ui/widget/selected-style.cpp:185 msgid "Different" -msgstr "" +msgstr "Diferentes" #: ../src/ui/widget/selected-style.cpp:188 msgid "Different fills" -msgstr "" +msgstr "Recheos diferentes" #: ../src/ui/widget/selected-style.cpp:188 msgid "Different strokes" -msgstr "" +msgstr "Trazos diferentes" #: ../src/ui/widget/selected-style.cpp:190 #: ../src/ui/widget/style-swatch.cpp:333 #, fuzzy msgid "Unset" -msgstr "Licenza" +msgstr "Recheo non asignado" #: ../src/ui/widget/selected-style.cpp:196 msgid "Flat color fill" @@ -13647,10 +13156,11 @@ msgstr "Recheo de cor uniforme" msgid "Flat color stroke" msgstr "Trazo de cor uniforme" +# Leandro: p de promedio #. TRANSLATOR COMMENT: A means "Averaged" #: ../src/ui/widget/selected-style.cpp:199 msgid "a" -msgstr "" +msgstr "p" #: ../src/ui/widget/selected-style.cpp:202 msgid "Fill is averaged over selected objects" @@ -13662,16 +13172,18 @@ msgstr "" #. TRANSLATOR COMMENT: M means "Multiple" #: ../src/ui/widget/selected-style.cpp:205 +#, fuzzy msgid "m" -msgstr "" +msgstr "m" #: ../src/ui/widget/selected-style.cpp:208 msgid "Multiple selected objects have the same fill" msgstr "Varios obxectos seleccionados teñen o mesmo recheo" #: ../src/ui/widget/selected-style.cpp:208 +#, fuzzy msgid "Multiple selected objects have the same stroke" -msgstr "" +msgstr "Varios obxectos seleccionados teñen o mesmo trazo" #: ../src/ui/widget/selected-style.cpp:210 msgid "Edit fill..." @@ -13683,7 +13195,7 @@ msgstr "Editar trazo..." #: ../src/ui/widget/selected-style.cpp:214 msgid "Last set color" -msgstr "" +msgstr "Última cor definida" #: ../src/ui/widget/selected-style.cpp:218 msgid "Last selected color" @@ -13720,85 +13232,75 @@ msgstr "" #: ../src/ui/widget/selected-style.cpp:246 #: ../src/ui/widget/selected-style.cpp:522 #: ../src/ui/widget/selected-style.cpp:531 +#, fuzzy msgid "Make fill opaque" -msgstr "" +msgstr "R_echeo e Trazo" #: ../src/ui/widget/selected-style.cpp:246 +#, fuzzy msgid "Make stroke opaque" -msgstr "" +msgstr "Establecer a cor do trazo" #: ../src/ui/widget/selected-style.cpp:308 msgid "Remove" -msgstr "" +msgstr "Eliminar" #: ../src/ui/widget/selected-style.cpp:543 -#, fuzzy msgid "Apply last set color to fill" -msgstr "Recheo de cor uniforme" +msgstr "Aplicar a última cor definida ó recheo" #: ../src/ui/widget/selected-style.cpp:555 -#, fuzzy msgid "Apply last set color to stroke" -msgstr "Trazo de cor uniforme" +msgstr "Aplicar a última cor definida ó trazo" #: ../src/ui/widget/selected-style.cpp:566 -#, fuzzy msgid "Apply last selected color to fill" -msgstr "Última cor seleccionada" +msgstr "Aplicar a última cor seleccionada ó recheo" #: ../src/ui/widget/selected-style.cpp:577 -#, fuzzy msgid "Apply last selected color to stroke" -msgstr "Última cor seleccionada" +msgstr "Aplicar a última cor seleccionada ó trazo" #: ../src/ui/widget/selected-style.cpp:597 -#, fuzzy msgid "Invert fill" -msgstr "Recheo non asignado" +msgstr "Inverter o recheo" #: ../src/ui/widget/selected-style.cpp:617 -#, fuzzy msgid "Invert stroke" -msgstr "Trazo non asignado" +msgstr "Inverter o trazo" #: ../src/ui/widget/selected-style.cpp:629 -#, fuzzy msgid "White fill" -msgstr "Detrás do recheo" +msgstr "Recheo branco" #: ../src/ui/widget/selected-style.cpp:641 -#, fuzzy msgid "White stroke" -msgstr "Editar trazo..." +msgstr "Trazo branco" #: ../src/ui/widget/selected-style.cpp:653 -#, fuzzy msgid "Black fill" -msgstr "Negro" +msgstr "Recheo negro" #: ../src/ui/widget/selected-style.cpp:665 -#, fuzzy msgid "Black stroke" -msgstr "Trazo de cor uniforme" +msgstr "Trazo negro" #: ../src/ui/widget/selected-style.cpp:708 -#, fuzzy msgid "Paste fill" -msgstr "Recheo de patrón" +msgstr "Pegar o recheo" #: ../src/ui/widget/selected-style.cpp:726 -#, fuzzy msgid "Paste stroke" -msgstr "Trazo non asignado" +msgstr "Pegar o trazo" #: ../src/ui/widget/selected-style.cpp:890 -#, fuzzy msgid "Change stroke width" -msgstr "Escalar o ancho do trazado" +msgstr "Cambiar o ancho do trazo" #: ../src/ui/widget/selected-style.cpp:985 +#, fuzzy msgid ", drag to adjust" -msgstr "" +msgstr "Arrastre para reordenar os nodos" #: ../src/ui/widget/selected-style.cpp:1066 #, c-format @@ -13814,50 +13316,42 @@ msgid "0 (transparent)" msgstr "0 (transparente)" #: ../src/ui/widget/selected-style.cpp:1122 -#, fuzzy msgid "100% (opaque)" -msgstr "1.0 (opaco)" +msgstr "100% (opaco)" #: ../src/ui/widget/selected-style.cpp:1271 -#, fuzzy msgid "Adjust saturation" -msgstr "Saturación" +msgstr "Axustar a saturación" #: ../src/ui/widget/selected-style.cpp:1273 #, c-format -msgid "" -"Adjusting saturation: was %.3g, now %.3g (diff %.3g); with " -"Ctrl to adjust lightness, without modifiers to adjust hue" +msgid "Adjusting saturation: was %.3g, now %.3g (diff %.3g); with Ctrl to adjust lightness, without modifiers to adjust hue" msgstr "" #: ../src/ui/widget/selected-style.cpp:1277 #, fuzzy msgid "Adjust lightness" -msgstr "Brillo" +msgstr "Axustar o brillo" #: ../src/ui/widget/selected-style.cpp:1279 #, c-format -msgid "" -"Adjusting lightness: was %.3g, now %.3g (diff %.3g); with " -"Shift to adjust saturation, without modifiers to adjust hue" +msgid "Adjusting lightness: was %.3g, now %.3g (diff %.3g); with Shift to adjust saturation, without modifiers to adjust hue" msgstr "" #: ../src/ui/widget/selected-style.cpp:1283 +#, fuzzy msgid "Adjust hue" -msgstr "" +msgstr "Axustar a saturación" #: ../src/ui/widget/selected-style.cpp:1285 #, c-format -msgid "" -"Adjusting hue: was %.3g, now %.3g (diff %.3g); with Shift to adjust saturation, with Ctrl to adjust lightness" +msgid "Adjusting hue: was %.3g, now %.3g (diff %.3g); with Shift to adjust saturation, with Ctrl to adjust lightness" msgstr "" #: ../src/ui/widget/selected-style.cpp:1391 #: ../src/ui/widget/selected-style.cpp:1405 -#, fuzzy msgid "Adjust stroke width" -msgstr "Ancho do trazo" +msgstr "Axustar o ancho do trazo" #: ../src/ui/widget/selected-style.cpp:1392 #, c-format @@ -13866,8 +13360,9 @@ msgstr "" #. TRANSLATORS: Only translate the word "Link" - means to _link_ two sliders together #: ../src/ui/widget/spin-slider.cpp:118 +#, fuzzy msgid "sliders|Link" -msgstr "" +msgstr "Ligazón a %s" #: ../src/ui/widget/style-swatch.cpp:301 msgid "L Gradient" @@ -13880,12 +13375,12 @@ msgstr "Degradado R" #: ../src/ui/widget/style-swatch.cpp:321 #, c-format msgid "Fill: %06x/%.3g" -msgstr "" +msgstr "Recheo: %06x/%.3g" #: ../src/ui/widget/style-swatch.cpp:323 #, c-format msgid "Stroke: %06x/%.3g" -msgstr "" +msgstr "Trazo: %06x/%.3g" #: ../src/ui/widget/style-swatch.cpp:355 #, c-format @@ -13922,9 +13417,7 @@ msgstr "" #: ../src/vanishing-point.cpp:306 #, c-format msgid "Finite vanishing point shared by %d box" -msgid_plural "" -"Finite vanishing point shared by %d boxes; drag with Shift to separate selected box(es)" +msgid_plural "Finite vanishing point shared by %d boxes; drag with Shift to separate selected box(es)" msgstr[0] "" msgstr[1] "" @@ -13933,36 +13426,30 @@ msgstr[1] "" #: ../src/vanishing-point.cpp:313 #, c-format msgid "Infinite vanishing point shared by %d box" -msgid_plural "" -"Infinite vanishing point shared by %d boxes; drag with " -"Shift to separate selected box(es)" +msgid_plural "Infinite vanishing point shared by %d boxes; drag with Shift to separate selected box(es)" msgstr[0] "" msgstr[1] "" #: ../src/vanishing-point.cpp:321 #, c-format -msgid "" -"shared by %d box; drag with Shift to separate selected box(es)" -msgid_plural "" -"shared by %d boxes; drag with Shift to separate selected box" -"(es)" +msgid "shared by %d box; drag with Shift to separate selected box(es)" +msgid_plural "shared by %d boxes; drag with Shift to separate selected box(es)" msgstr[0] "" msgstr[1] "" #: ../src/verbs.cpp:1134 #, fuzzy msgid "Switch to next layer" -msgstr "Elevar á seguinte capa" +msgstr "Cambiar á seguinte capa" #: ../src/verbs.cpp:1135 #, fuzzy msgid "Switched to next layer." -msgstr "Moveuse á seguinte capa." +msgstr "Elevar á seguinte capa" #: ../src/verbs.cpp:1137 -#, fuzzy msgid "Cannot go past last layer." -msgstr "Non se pode mover máis a capa." +msgstr "Non se pode ir máis aló da última capa." #: ../src/verbs.cpp:1146 #, fuzzy @@ -13972,46 +13459,45 @@ msgstr "Baixar á capa anterior" #: ../src/verbs.cpp:1147 #, fuzzy msgid "Switched to previous layer." -msgstr "Moveuse á capa anterior." +msgstr "Baixar á capa anterior" #: ../src/verbs.cpp:1149 -#, fuzzy msgid "Cannot go before first layer." -msgstr "Non se pode mover máis a capa." +msgstr "Non se pode ir máis alá da primeira capa." -#: ../src/verbs.cpp:1166 ../src/verbs.cpp:1250 +#: ../src/verbs.cpp:1166 +#: ../src/verbs.cpp:1250 +#, fuzzy msgid "No current layer." -msgstr "" +msgstr "Renomear a capa actual" -#: ../src/verbs.cpp:1195 ../src/verbs.cpp:1199 +#: ../src/verbs.cpp:1195 +#: ../src/verbs.cpp:1199 #, c-format msgid "Raised layer %s." msgstr "Elevouse a capa %s." #: ../src/verbs.cpp:1196 -#, fuzzy msgid "Layer to top" -msgstr "Capa á _Cima" +msgstr "Capa á cima" #: ../src/verbs.cpp:1200 -#, fuzzy msgid "Raise layer" -msgstr "Elevar a Capa" +msgstr "Elevar a capa" -#: ../src/verbs.cpp:1203 ../src/verbs.cpp:1207 +#: ../src/verbs.cpp:1203 +#: ../src/verbs.cpp:1207 #, c-format msgid "Lowered layer %s." msgstr "Baixouse a capa %s." #: ../src/verbs.cpp:1204 -#, fuzzy msgid "Layer to bottom" -msgstr "Capa ó _Fondo" +msgstr "Capa ó fondo" #: ../src/verbs.cpp:1208 -#, fuzzy msgid "Lower layer" -msgstr "Baixar a Capa" +msgstr "Baixar a capa" #: ../src/verbs.cpp:1217 msgid "Cannot move layer any further." @@ -14029,12 +13515,12 @@ msgstr "Eliminouse a capa." #: ../src/verbs.cpp:1330 #, fuzzy msgid "Flip horizontally" -msgstr "voltear horizontal" +msgstr "Voltea-los obxectos seleccionados horizontalmente" #: ../src/verbs.cpp:1345 #, fuzzy msgid "Flip vertically" -msgstr "voltear vertical" +msgstr "Voltea-los obxectos seleccionados verticalmente" #. TRANSLATORS: If you have translated the tutorial-basic.svg file to your language, #. then translate this string as "tutorial-basic.LANG.svg" (where LANG is your language @@ -14073,29 +13559,30 @@ msgstr "tutorial-elements.svg" msgid "tutorial-tips.svg" msgstr "tutorial-tips.svg" -#: ../src/verbs.cpp:2129 ../src/verbs.cpp:2634 -#, fuzzy +#: ../src/verbs.cpp:2129 +#: ../src/verbs.cpp:2634 msgid "Unlock all objects in the current layer" -msgstr "Renomear a capa actual" +msgstr "Desbloquear tódolos obxectos na capa actual" -#: ../src/verbs.cpp:2133 ../src/verbs.cpp:2636 -#, fuzzy +#: ../src/verbs.cpp:2133 +#: ../src/verbs.cpp:2636 msgid "Unlock all objects in all layers" -msgstr "Seleccionar tódolos obxectos ou tódolos nodos" +msgstr "Desbloquear tódolos obxectos en tódalas capas" -#: ../src/verbs.cpp:2137 ../src/verbs.cpp:2638 -#, fuzzy +#: ../src/verbs.cpp:2137 +#: ../src/verbs.cpp:2638 msgid "Unhide all objects in the current layer" -msgstr "Eliminar a capa actual" +msgstr "Mostrar tódolos obxectos da capa actual" -#: ../src/verbs.cpp:2141 ../src/verbs.cpp:2640 -#, fuzzy +#: ../src/verbs.cpp:2141 +#: ../src/verbs.cpp:2640 msgid "Unhide all objects in all layers" -msgstr "Seleccionar en tódalas capas" +msgstr "Mostrar tódolos obxectos de tódalas capas" #: ../src/verbs.cpp:2156 +#, fuzzy msgid "Does nothing" -msgstr "" +msgstr "Non facer nada" #: ../src/verbs.cpp:2159 msgid "Create new document from the default template" @@ -14115,8 +13602,7 @@ msgstr "_Volver á Última Versión Gardada" #: ../src/verbs.cpp:2164 msgid "Revert to the last saved version of document (changes will be lost)" -msgstr "" -"Volver á última versión gardada do documento (perderanse tódolos cambios)" +msgstr "Volver á última versión gardada do documento (perderanse tódolos cambios)" #: ../src/verbs.cpp:2165 msgid "_Save" @@ -14135,14 +13621,12 @@ msgid "Save document under a new name" msgstr "Garda-lo documento cun novo nome" #: ../src/verbs.cpp:2169 -#, fuzzy msgid "Save a Cop_y..." -msgstr "G_ardar Coma..." +msgstr "Gardar unha cop_ia..." #: ../src/verbs.cpp:2170 -#, fuzzy msgid "Save a copy of the document under a new name" -msgstr "Garda-lo documento cun novo nome" +msgstr "Garda unha copia do documento cun novo nome" #: ../src/verbs.cpp:2171 msgid "_Print..." @@ -14159,14 +13643,13 @@ msgstr "Desbotar as De_finicións" #: ../src/verbs.cpp:2174 #, fuzzy -msgid "" -"Remove unused definitions (such as gradients or clipping paths) from the <" -"defs> of the document" +msgid "Remove unused definitions (such as gradients or clipping paths) from the <defs> of the document" msgstr "Eliminar as definicións que non se usan (coma degradados ou " #: ../src/verbs.cpp:2176 +#, fuzzy msgid "Print Previe_w" -msgstr "" +msgstr "Destino da Impresión" #: ../src/verbs.cpp:2177 msgid "Preview document printout" @@ -14186,22 +13669,20 @@ msgstr "_Exportar Mapa de Bits..." #: ../src/verbs.cpp:2181 msgid "Export this document or a selection as a bitmap image" -msgstr "" -"Exportar este documento ou unha selección coma unha imaxe de mapa de bits" +msgstr "Exportar este documento ou unha selección coma unha imaxe de mapa de bits" #: ../src/verbs.cpp:2182 +#, fuzzy msgid "Import a document from Open Clip Art Library" -msgstr "" +msgstr "Importar un documento dende Open Clip Art Library" #: ../src/verbs.cpp:2183 msgid "Export To Open Clip Art Library" -msgstr "" +msgstr "Exportar a Open Clip Art Library" #: ../src/verbs.cpp:2183 -#, fuzzy msgid "Export this document to Open Clip Art Library" -msgstr "" -"Exportar este documento ou unha selección coma unha imaxe de mapa de bits" +msgstr "Exportar este documento a Open Clip Art Library" #: ../src/verbs.cpp:2184 msgid "N_ext Window" @@ -14285,8 +13766,7 @@ msgstr "Pegar A_ncho" #: ../src/verbs.cpp:2208 msgid "Scale selection horizontally to match the width of the copied object" -msgstr "" -"Escalar horizontalmente a selección para que teña o ancho do obxecto copiado" +msgstr "Escalar horizontalmente a selección para que teña o ancho do obxecto copiado" #: ../src/verbs.cpp:2209 msgid "Paste _Height" @@ -14294,8 +13774,7 @@ msgstr "Pegar A_lto" #: ../src/verbs.cpp:2210 msgid "Scale selection vertically to match the height of the copied object" -msgstr "" -"Escalar verticalmente a selección para que teña a altura do obxecto copiado" +msgstr "Escalar verticalmente a selección para que teña a altura do obxecto copiado" #: ../src/verbs.cpp:2211 msgid "Paste Size Separately" @@ -14303,32 +13782,23 @@ msgstr "Pegar Tamaño por Separado" #: ../src/verbs.cpp:2212 msgid "Scale each selected object to match the size of the copied object" -msgstr "" -"Escalar cada obxecto seleccionado para que teña o mesmo có obxecto copiado" +msgstr "Escalar cada obxecto seleccionado para que teña o mesmo có obxecto copiado" #: ../src/verbs.cpp:2213 msgid "Paste Width Separately" msgstr "Pegar Ancho por Separado" #: ../src/verbs.cpp:2214 -msgid "" -"Scale each selected object horizontally to match the width of the copied " -"object" -msgstr "" -"Escalar horizontalmente cada obxecto seleccionado para que teña o ancho do " -"obxecto copiado" +msgid "Scale each selected object horizontally to match the width of the copied object" +msgstr "Escalar horizontalmente cada obxecto seleccionado para que teña o ancho do obxecto copiado" #: ../src/verbs.cpp:2215 msgid "Paste Height Separately" msgstr "Pegar Alto por Separado" #: ../src/verbs.cpp:2216 -msgid "" -"Scale each selected object vertically to match the height of the copied " -"object" -msgstr "" -"Escalar verticalmente cada obxecto da selección para que teña a altura do " -"obxecto copiado" +msgid "Scale each selected object vertically to match the height of the copied object" +msgstr "Escalar verticalmente cada obxecto da selección para que teña a altura do obxecto copiado" #: ../src/verbs.cpp:2217 msgid "Paste _In Place" @@ -14341,17 +13811,17 @@ msgstr "Pegar obxectos dende o portarretallos á súa localización orixinal" #: ../src/verbs.cpp:2219 #, fuzzy msgid "Paste Path _Effect" -msgstr "Pegar E_stilo" +msgstr "Non se seleccionou ningún efecto" #: ../src/verbs.cpp:2220 #, fuzzy msgid "Apply the path effect of the copied object to selection" -msgstr "Aplicar o estilo do obxecto copiado á selección" +msgstr "Aplicar o camiño de corte á selección (usando o obxecto que está enriba coma camiño de corte)" #: ../src/verbs.cpp:2221 #, fuzzy msgid "Remove Path _Effect" -msgstr "Eli_minar" +msgstr "Eliminar o efecto da selección" #: ../src/verbs.cpp:2222 #, fuzzy @@ -14359,14 +13829,12 @@ msgid "Remove any path effects from selected objects" msgstr "Eliminar o camiño de corte da selección" #: ../src/verbs.cpp:2223 -#, fuzzy msgid "Remove Filter" -msgstr "Eli_minar" +msgstr "Eliminar filtro" #: ../src/verbs.cpp:2224 -#, fuzzy msgid "Remove any filters from selected objects" -msgstr "Facer que os conectadores eviten os obxectos seleccionados" +msgstr "Eliminar tódolos filtros dos obxectos seleccionados" #: ../src/verbs.cpp:2225 msgid "_Delete" @@ -14397,12 +13865,8 @@ msgid "Unlin_k Clone" msgstr "Desli_gar o Clon" #: ../src/verbs.cpp:2232 -msgid "" -"Cut the selected clone's link to its original, turning it into a standalone " -"object" -msgstr "" -"Cortar a ligazón do clon seleccionado ó seu orixinal, converténdoo nun " -"obxecto independiente" +msgid "Cut the selected clone's link to its original, turning it into a standalone object" +msgstr "Cortar a ligazón do clon seleccionado ó seu orixinal, converténdoo nun obxecto independiente" #: ../src/verbs.cpp:2233 msgid "Select _Original" @@ -14416,23 +13880,21 @@ msgstr "Seleccionar o obxecto ó que está ligado o clon seleccionado" #: ../src/verbs.cpp:2236 #, fuzzy msgid "Objects to _Marker" -msgstr "Obxectos a patrón" +msgstr "Obxectos a guías" #: ../src/verbs.cpp:2237 #, fuzzy msgid "Convert selection to a line marker" -msgstr "Converti-los segmentos seleccionados a liñas" +msgstr "Na selección non hai obxectos para convertelos en camiños." #. TRANSLATORS: Convert selection to a collection of guidelines #: ../src/verbs.cpp:2239 #, fuzzy msgid "Objects to Gu_ides" -msgstr "Obxectos a patrón" +msgstr "Obxectos a Gu_ias" #: ../src/verbs.cpp:2240 -msgid "" -"Convert selected objects to a collection of guidelines aligned with their " -"edges" +msgid "Convert selected objects to a collection of guidelines aligned with their edges" msgstr "" #. TRANSLATORS: Convert selection to a rectangle with tiled pattern fill @@ -14454,8 +13916,9 @@ msgid "Extract objects from a tiled pattern fill" msgstr "Extraer obxectos dun recheo de patrón en mosaico" #: ../src/verbs.cpp:2247 +#, fuzzy msgid "Clea_r All" -msgstr "" +msgstr "Tódolos tipos" #: ../src/verbs.cpp:2248 msgid "Delete all objects from document" @@ -14483,9 +13946,7 @@ msgstr "In_verter a Selección" #: ../src/verbs.cpp:2254 msgid "Invert selection (unselect what is selected and select everything else)" -msgstr "" -"Inverter a selección (deselecciona o que está seleccionado e selecciona todo " -"o demais)" +msgstr "Inverter a selección (deselecciona o que está seleccionado e selecciona todo o demais)" #: ../src/verbs.cpp:2255 msgid "Invert in All Layers" @@ -14498,22 +13959,22 @@ msgstr "Inverter a selección en tódalas capas visibles de desbloqueadas" #: ../src/verbs.cpp:2257 #, fuzzy msgid "Select Next" -msgstr "Seleccionar" +msgstr "Seleccionar Seguinte" #: ../src/verbs.cpp:2258 #, fuzzy msgid "Select next object or node" -msgstr "Seleccionar tódolos obxectos ou tódolos nodos" +msgstr "Seleccionar o seguinte obxecto ou nodo" #: ../src/verbs.cpp:2259 #, fuzzy msgid "Select Previous" -msgstr "Selección" +msgstr "Seleccionar Anterior" #: ../src/verbs.cpp:2260 #, fuzzy msgid "Select previous object or node" -msgstr "Seleccionar tódolos obxectos ou tódolos nodos" +msgstr "Seleccionar o obxecto ou nodo anterior" #: ../src/verbs.cpp:2261 msgid "D_eselect" @@ -14524,8 +13985,9 @@ msgid "Deselect any selected objects or nodes" msgstr "Deselecciona calquera obxecto ou nodo seleccionado" #: ../src/verbs.cpp:2263 +#, fuzzy msgid "_Guides around page" -msgstr "" +msgstr "Amosa-lo _bordo da páxina" #: ../src/verbs.cpp:2264 msgid "Create four guides aligned with the page borders" @@ -14564,7 +14026,7 @@ msgstr "Eleva_r" #: ../src/verbs.cpp:2274 #, fuzzy msgid "Raise selection one step" -msgstr "Elevar a selección un nivel" +msgstr "Eleva-la selección á cima" #: ../src/verbs.cpp:2275 msgid "_Lower" @@ -14573,7 +14035,7 @@ msgstr "Bai_xar" #: ../src/verbs.cpp:2276 #, fuzzy msgid "Lower selection one step" -msgstr "Baixa-la selección un nivel" +msgstr "Baixa-la selección ó fondo" #: ../src/verbs.cpp:2277 msgid "_Group" @@ -14592,12 +14054,14 @@ msgid "_Put on Path" msgstr "_Poñer no camiño" #: ../src/verbs.cpp:2284 +#, fuzzy msgid "_Remove from Path" -msgstr "" +msgstr "Eliminar o camiño de corte da selección" #: ../src/verbs.cpp:2286 +#, fuzzy msgid "Remove Manual _Kerns" -msgstr "" +msgstr "Eliminar a reixa seleccionada." #. TRANSLATORS: "glyph": An image used in the visual representation of characters; #. roughly speaking, how a character looks. A font is a set of glyphs. @@ -14627,20 +14091,15 @@ msgstr "_Diferencia" #: ../src/verbs.cpp:2296 msgid "Create difference of selected paths (bottom minus top)" -msgstr "" -"Crea a diferencia dos camiños seleccionados (o inferior menos o superior)" +msgstr "Crea a diferencia dos camiños seleccionados (o inferior menos o superior)" #: ../src/verbs.cpp:2297 msgid "E_xclusion" msgstr "E_xclusión" #: ../src/verbs.cpp:2298 -msgid "" -"Create exclusive OR of selected paths (those parts that belong to only one " -"path)" -msgstr "" -"Crea o OR exclusivo dos camiños seleccionados (as partes que pertencen só a " -"un camiño)" +msgid "Create exclusive OR of selected paths (those parts that belong to only one path)" +msgstr "Crea o OR exclusivo dos camiños seleccionados (as partes que pertencen só a un camiño)" #: ../src/verbs.cpp:2299 msgid "Di_vision" @@ -14671,7 +14130,7 @@ msgstr "Cortar" #: ../src/verbs.cpp:2309 #, fuzzy msgid "Outset selected paths" -msgstr "Fragmenta-las curvas seleccionadas" +msgstr "Crear a unión dos camiños seleccionados" #: ../src/verbs.cpp:2311 msgid "O_utset Path by 1 px" @@ -14697,8 +14156,9 @@ msgid "I_nset" msgstr "" #: ../src/verbs.cpp:2320 +#, fuzzy msgid "Inset selected paths" -msgstr "" +msgstr "Crear a unión dos camiños seleccionados" #: ../src/verbs.cpp:2322 msgid "I_nset Path by 1 px" @@ -14717,16 +14177,18 @@ msgid "Inset selected paths by 10 px" msgstr "" #: ../src/verbs.cpp:2328 +#, fuzzy msgid "D_ynamic Offset" -msgstr "" +msgstr "Desprazamento do patrón" #: ../src/verbs.cpp:2328 msgid "Create a dynamic offset object" msgstr "" #: ../src/verbs.cpp:2330 +#, fuzzy msgid "_Linked Offset" -msgstr "" +msgstr "Desprazamento do patrón" #: ../src/verbs.cpp:2331 msgid "Create a dynamic offset object linked to the original path" @@ -14794,7 +14256,7 @@ msgstr "Romper os camiños seleccionados en subcamiños" #: ../src/verbs.cpp:2350 #, fuzzy msgid "Rows and Columns..." -msgstr "Filas, columnas:" +msgstr "Filas e Columnas..." #: ../src/verbs.cpp:2351 #, fuzzy @@ -14898,9 +14360,8 @@ msgstr "Rotar _90º en sentido horario" #. This is shared between tooltips and statusbar, so they #. must use UTF-8, not HTML entities for special characters. #: ../src/verbs.cpp:2380 -#, fuzzy msgid "Rotate selection 90° clockwise" -msgstr "Rota-la selección 90° en sentido horario" +msgstr "Rotar a selección 90° en sentido horario" #: ../src/verbs.cpp:2381 msgid "Rotate 9_0° CCW" @@ -14909,17 +14370,18 @@ msgstr "Rotar 9_0º en sentido antihorario" #. This is shared between tooltips and statusbar, so they #. must use UTF-8, not HTML entities for special characters. #: ../src/verbs.cpp:2384 -#, fuzzy msgid "Rotate selection 90° counter-clockwise" -msgstr "Rota-la selección 90° en sentido antihorario" +msgstr "Rotar a selección 90° en sentido antihorario" #: ../src/verbs.cpp:2385 +#, fuzzy msgid "Remove _Transformations" -msgstr "" +msgstr "Eliminar o trazo" #: ../src/verbs.cpp:2386 +#, fuzzy msgid "Remove transformations from object" -msgstr "" +msgstr "Eliminar o efecto da selección" #: ../src/verbs.cpp:2387 msgid "_Object to Path" @@ -14930,13 +14392,12 @@ msgid "Convert selected object to path" msgstr "Converte-los obxectos seleccionados en camiños" #: ../src/verbs.cpp:2389 +#, fuzzy msgid "_Flow into Frame" -msgstr "" +msgstr "Cortar o camiño inferior en anacos" #: ../src/verbs.cpp:2390 -msgid "" -"Put text into a frame (path or shape), creating a flowed text linked to the " -"frame object" +msgid "Put text into a frame (path or shape), creating a flowed text linked to the frame object" msgstr "" #: ../src/verbs.cpp:2391 @@ -14972,33 +14433,34 @@ msgid "Flip selected objects vertically" msgstr "Voltea-los obxectos seleccionados verticalmente" #: ../src/verbs.cpp:2402 +#, fuzzy msgid "Apply mask to selection (using the topmost object as mask)" -msgstr "" +msgstr "Aplicar o camiño de corte á selección (usando o obxecto que está enriba coma camiño de corte)" #: ../src/verbs.cpp:2404 #, fuzzy msgid "Edit mask" -msgstr "Editar trazo..." +msgstr "Editar recheo..." -#: ../src/verbs.cpp:2405 ../src/verbs.cpp:2411 +#: ../src/verbs.cpp:2405 +#: ../src/verbs.cpp:2411 msgid "_Release" msgstr "" #: ../src/verbs.cpp:2406 +#, fuzzy msgid "Remove mask from selection" -msgstr "" +msgstr "Eliminar o efecto da selección" #: ../src/verbs.cpp:2408 -msgid "" -"Apply clipping path to selection (using the topmost object as clipping path)" -msgstr "" -"Aplicar o camiño de corte á selección (usando o obxecto que está enriba coma " -"camiño de corte)" +msgid "Apply clipping path to selection (using the topmost object as clipping path)" +msgstr "Aplicar o camiño de corte á selección (usando o obxecto que está enriba coma camiño de corte)" -#: ../src/verbs.cpp:2410 ../src/widgets/toolbox.cpp:1222 +#: ../src/verbs.cpp:2410 +#: ../src/widgets/toolbox.cpp:1222 #, fuzzy msgid "Edit clipping path" -msgstr "Simplificar" +msgstr "Eliminar o camiño de corte da selección" #: ../src/verbs.cpp:2412 msgid "Remove clipping path from selection" @@ -15014,13 +14476,14 @@ msgid "Select and transform objects" msgstr "Seleccionar e transformar obxectos" #: ../src/verbs.cpp:2417 +#, fuzzy msgid "Node Edit" -msgstr "" +msgstr "Editar recheo..." #: ../src/verbs.cpp:2418 #, fuzzy msgid "Edit paths by nodes" -msgstr "Editar os nodos dos camiños ou as asas de control" +msgstr "Simplificar os camiños seleccionados (eliminar os nodos adicionais)" #: ../src/verbs.cpp:2420 msgid "Tweak objects by sculpting or painting" @@ -15033,7 +14496,7 @@ msgstr "Crear rectángulos e cadrados" #: ../src/verbs.cpp:2424 #, fuzzy msgid "Create 3D boxes" -msgstr "Crear un Mosaico de Clons..." +msgstr "Crear nova reixa" #: ../src/verbs.cpp:2426 msgid "Create circles, ellipses, and arcs" @@ -15076,21 +14539,22 @@ msgstr "Aumentar ou reducir" #: ../src/verbs.cpp:2444 #, fuzzy msgid "Pick colors from image" -msgstr "Coller cores promediadas da imaxe" +msgstr "Coller cores da imaxe" #: ../src/verbs.cpp:2446 #, fuzzy msgid "Create diagram connectors" -msgstr "Crear conectadores" +msgstr "Diagrama de Sketch (*.sk)" #: ../src/verbs.cpp:2448 +#, fuzzy msgid "Fill bounded areas" -msgstr "" +msgstr "R_echeo e Trazo" #: ../src/verbs.cpp:2449 #, fuzzy msgid "LPE Edit" -msgstr "_Editar" +msgstr "Editar recheo..." #: ../src/verbs.cpp:2450 #, fuzzy @@ -15100,7 +14564,7 @@ msgstr "Pegar Ancho por Separado" #: ../src/verbs.cpp:2452 #, fuzzy msgid "Erase existing paths" -msgstr "_Romper aparte ou fragmentar" +msgstr "Abrir un documento existente" #. Tool prefs #: ../src/verbs.cpp:2454 @@ -15127,7 +14591,7 @@ msgstr "Preferencias da Ferramenta de Nodos" #: ../src/verbs.cpp:2459 #, fuzzy msgid "Open Preferences for the Tweak tool" -msgstr "Abrir as Preferencias da ferramenta Texto" +msgstr "Abrir as Preferencias da ferramenta Selector" #: ../src/verbs.cpp:2460 msgid "Rectangle Preferences" @@ -15140,7 +14604,7 @@ msgstr "Abrir as Preferencias da ferramenta Rectángulo" #: ../src/verbs.cpp:2462 #, fuzzy msgid "3D Box Preferences" -msgstr "Preferencias de Texto" +msgstr "Preferencias da Ferramenta de Nodos" #: ../src/verbs.cpp:2463 #, fuzzy @@ -15238,7 +14702,7 @@ msgstr "Abrir as Preferencias da Ferramenta Conectador" #: ../src/verbs.cpp:2486 #, fuzzy msgid "Paint Bucket Preferences" -msgstr "Preferencias de Degradado" +msgstr "Preferencias da Ferramenta de Nodos" #: ../src/verbs.cpp:2487 #, fuzzy @@ -15246,14 +14710,12 @@ msgid "Open Preferences for the Paint Bucket tool" msgstr "Abrir as Preferencias da ferramenta Pluma" #: ../src/verbs.cpp:2488 -#, fuzzy msgid "Eraser Preferences" -msgstr "Preferencias de Estrela" +msgstr "Preferencias da Goma" #: ../src/verbs.cpp:2489 -#, fuzzy msgid "Open Preferences for the Eraser tool" -msgstr "Abrir as Preferencias da ferramenta Estrela" +msgstr "Abrir as preferencias da ferramenta Goma" #. Zoom/View #: ../src/verbs.cpp:2492 @@ -15302,8 +14764,7 @@ msgstr "G_uías" #: ../src/verbs.cpp:2497 msgid "Show or hide guides (drag from a ruler to create a guide)" -msgstr "" -"Amosar ou agochar as guías (arrastre dende unha regra para crear unha guía)" +msgstr "Amosar ou agochar as guías (arrastre dende unha regra para crear unha guía)" #: ../src/verbs.cpp:2499 msgid "Nex_t Zoom" @@ -15362,12 +14823,14 @@ msgid "Open a new window with the same document" msgstr "Abrir unha nova ventá co mesmo documento" #: ../src/verbs.cpp:2515 +#, fuzzy msgid "_New View Preview" -msgstr "" +msgstr "Previsualiza-la impresión do documento" #: ../src/verbs.cpp:2516 +#, fuzzy msgid "New View Preview" -msgstr "" +msgstr "Previsualiza-la impresión do documento" #. "view_new_preview" #: ../src/verbs.cpp:2518 @@ -15381,7 +14844,7 @@ msgstr "Cambiar ó modo de visualización normal" #: ../src/verbs.cpp:2520 #, fuzzy msgid "No _Filters" -msgstr "milímetros" +msgstr "Sen recheo" #: ../src/verbs.cpp:2521 #, fuzzy @@ -15408,7 +14871,7 @@ msgstr "" #: ../src/verbs.cpp:2527 #, fuzzy msgid "Color-managed view" -msgstr "Cor do bordo da páxina" +msgstr "Ver mensaxes de depuración" #: ../src/verbs.cpp:2528 #, fuzzy @@ -15418,13 +14881,11 @@ msgstr "Pechar esta ventá" #: ../src/verbs.cpp:2530 #, fuzzy msgid "Ico_n Preview..." -msgstr "Previsualizar Ico_nas" +msgstr "Previsualiza-la impresión do documento" #: ../src/verbs.cpp:2531 msgid "Open a window to preview objects at different icon resolutions" -msgstr "" -"Abre unha ventá para previsualizar os obxectos seleccionados con diferentes " -"resolucións de iconas" +msgstr "Abre unha ventá para previsualizar os obxectos seleccionados con diferentes resolucións de iconas" #: ../src/verbs.cpp:2533 msgid "Zoom to fit page in window" @@ -15476,8 +14937,7 @@ msgid "_Fill and Stroke..." msgstr "R_echeo e Trazo..." #: ../src/verbs.cpp:2549 -msgid "" -"Edit objects' colors, gradients, stroke width, arrowheads, dash patterns..." +msgid "Edit objects' colors, gradients, stroke width, arrowheads, dash patterns..." msgstr "" #. TRANSLATORS: "Swatches" means: color samples @@ -15506,12 +14966,13 @@ msgid "Align and distribute objects" msgstr "Aliñar e distribuír os obxectos" #: ../src/verbs.cpp:2557 +#, fuzzy msgid "Undo _History..." -msgstr "" +msgstr "Historial de cambios" #: ../src/verbs.cpp:2558 msgid "Undo History" -msgstr "" +msgstr "Historial de cambios" #: ../src/verbs.cpp:2559 msgid "_Text and Font..." @@ -15519,9 +14980,7 @@ msgstr "_Texto e Fonte..." #: ../src/verbs.cpp:2560 msgid "View and select font family, font size and other text properties" -msgstr "" -"Ver e seleccionar a familia de fonte, o tamaño de fonte e outras propiedades " -"do texto" +msgstr "Ver e seleccionar a familia de fonte, o tamaño de fonte e outras propiedades do texto" #: ../src/verbs.cpp:2561 msgid "_XML Editor..." @@ -15568,12 +15027,8 @@ msgid "Create Tiled Clones..." msgstr "Crear un Mosaico de Clons..." #: ../src/verbs.cpp:2572 -msgid "" -"Create multiple clones of selected object, arranging them into a pattern or " -"scattering" -msgstr "" -"Crear varios clons dos obxectos seleccionados, ordenandoos nun patrón ou " -"esparexendoos" +msgid "Create multiple clones of selected object, arranging them into a pattern or scattering" +msgstr "Crear varios clons dos obxectos seleccionados, ordenandoos nun patrón ou esparexendoos" #: ../src/verbs.cpp:2573 msgid "_Object Properties..." @@ -15581,9 +15036,7 @@ msgstr "Propiedades do _Obxecto..." #: ../src/verbs.cpp:2574 msgid "Edit the ID, locked and visible status, and other object properties" -msgstr "" -"Editar o ID, os estados bloqueado e visible, e outras propiedades dos " -"obxectos" +msgstr "Editar o ID, os estados bloqueado e visible, e outras propiedades dos obxectos" #: ../src/verbs.cpp:2577 msgid "_Instant Messaging..." @@ -15597,14 +15050,15 @@ msgstr "Cliente de Mensaxería Instantánea Jabber" msgid "_Input Devices..." msgstr "Disposi_tivos de Entrada..." -#: ../src/verbs.cpp:2580 ../src/verbs.cpp:2582 +#: ../src/verbs.cpp:2580 +#: ../src/verbs.cpp:2582 msgid "Configure extended input devices, such as a graphics tablet" msgstr "" #: ../src/verbs.cpp:2581 #, fuzzy msgid "_Input Devices (new)..." -msgstr "Disposi_tivos de Entrada..." +msgstr "Creando novo conectador" #: ../src/verbs.cpp:2583 msgid "_Extensions..." @@ -15625,15 +15079,17 @@ msgstr "Ver as Capas" #: ../src/verbs.cpp:2587 #, fuzzy msgid "Path Effects..." -msgstr "Efe_ctos" +msgstr "Pechando o camiño." #: ../src/verbs.cpp:2588 +#, fuzzy msgid "Manage path effects" -msgstr "" +msgstr "O camiño está pechado." #: ../src/verbs.cpp:2589 +#, fuzzy msgid "Filter Effects..." -msgstr "" +msgstr "Renomear filtro" #: ../src/verbs.cpp:2590 msgid "Manage SVG filter effects" @@ -15751,62 +15207,66 @@ msgstr "Repetir o último efecto cunha nova configuración" #: ../src/verbs.cpp:2626 #, fuzzy msgid "Fit Page to Selection" -msgstr "Zoom á selección" +msgstr "A_daptar a páxina á selección" #: ../src/verbs.cpp:2627 +#, fuzzy msgid "Fit the page to the current selection" -msgstr "" +msgstr "Limita a busca á selección actual" #: ../src/verbs.cpp:2628 +#, fuzzy msgid "Fit Page to Drawing" -msgstr "" +msgstr "A_daptar a páxina á selección" #: ../src/verbs.cpp:2629 +#, fuzzy msgid "Fit the page to the drawing" -msgstr "" +msgstr "A_daptar a páxina á selección" #: ../src/verbs.cpp:2630 msgid "Fit Page to Selection or Drawing" msgstr "" #: ../src/verbs.cpp:2631 -msgid "" -"Fit the page to the current selection or the drawing if there is no selection" -msgstr "" +#, fuzzy +msgid "Fit the page to the current selection or the drawing if there is no selection" +msgstr "Redimensiona a páxina para conter a selección actual, ou todo o debuxo se non hai nada seleccionado" #. LockAndHide #: ../src/verbs.cpp:2633 #, fuzzy msgid "Unlock All" -msgstr "Baixar a Capa" +msgstr "Tódolos tipos" #: ../src/verbs.cpp:2635 #, fuzzy msgid "Unlock All in All Layers" -msgstr "Seleccionar T_odo en Tódalas Capas" +msgstr "Seleccionar en tódalas capas" #: ../src/verbs.cpp:2637 #, fuzzy msgid "Unhide All" -msgstr "Elevar a Capa" +msgstr "Tódolos tipos" #: ../src/verbs.cpp:2639 #, fuzzy msgid "Unhide All in All Layers" -msgstr "Seleccionar T_odo en Tódalas Capas" +msgstr "Seleccionar en tódalas capas" #: ../src/widgets/calligraphic-profile-rename.cpp:34 +#, fuzzy msgid "Profile name:" -msgstr "" +msgstr "Nome da capa:" #: ../src/widgets/calligraphic-profile-rename.cpp:48 -#, fuzzy msgid "Save" -msgstr "_Gardar" +msgstr "Gardar" #: ../src/widgets/dash-selector.cpp:106 +#, fuzzy msgid "Dash pattern" -msgstr "" +msgstr "Ancho do patrón" #: ../src/widgets/dash-selector.cpp:121 msgid "Pattern offset" @@ -15815,7 +15275,7 @@ msgstr "Desprazamento do patrón" #: ../src/widgets/desktop-widget.cpp:620 #, fuzzy, c-format msgid "%s: %d (outline) - Inkscape" -msgstr "%s: %d - Inkscape" +msgstr "SVG de Inkscape (*.svg)" #: ../src/widgets/desktop-widget.cpp:622 #, c-format @@ -15825,7 +15285,7 @@ msgstr "%s: %d - Inkscape" #: ../src/widgets/desktop-widget.cpp:626 #, fuzzy, c-format msgid "%s (outline) - Inkscape" -msgstr "%s - Inkscape" +msgstr "SVG de Inkscape (*.svg)" #: ../src/widgets/desktop-widget.cpp:628 #, c-format @@ -15851,7 +15311,8 @@ msgstr "Tamaño:" #. * text has been entered) to get a preview of the font. Choose #. * some representative characters that users of your locale will be #. * interested in. -#: ../src/widgets/font-selector.cpp:636 ../src/widgets/toolbox.cpp:5123 +#: ../src/widgets/font-selector.cpp:636 +#: ../src/widgets/toolbox.cpp:5123 msgid "AaBbCcIiPpQq12369$€¢?.;/()" msgstr "AaBbCcIiPpQq12369$€¢?.;/()" @@ -15862,11 +15323,7 @@ msgstr "Editar..." #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/pservers.html#LinearGradientSpreadMethodAttribute #: ../src/widgets/gradient-selector.cpp:156 -msgid "" -"Whether to fill with flat color beyond the ends of the gradient vector " -"(spreadMethod=\"pad\"), or repeat the gradient in the same direction " -"(spreadMethod=\"repeat\"), or repeat the gradient in alternating opposite " -"directions (spreadMethod=\"reflect\")" +msgid "Whether to fill with flat color beyond the ends of the gradient vector (spreadMethod=\"pad\"), or repeat the gradient in the same direction (spreadMethod=\"repeat\"), or repeat the gradient in alternating opposite directions (spreadMethod=\"reflect\")" msgstr "" #: ../src/widgets/gradient-selector.cpp:166 @@ -15884,7 +15341,7 @@ msgstr "Repetir:" #: ../src/widgets/gradient-toolbar.cpp:151 #, fuzzy msgid "Assign gradient to object" -msgstr "Aliñar e distribuír os obxectos" +msgstr "Seleccione un obxecto para clonalo." #: ../src/widgets/gradient-toolbar.cpp:185 msgid "No gradients" @@ -15899,17 +15356,22 @@ msgid "No gradients in selection" msgstr "Non hai degradados na selección" #: ../src/widgets/gradient-toolbar.cpp:215 +#, fuzzy msgid "Multiple gradients" -msgstr "" +msgstr "Sen degradados" #: ../src/widgets/gradient-toolbar.cpp:463 msgid "Edit the stops of the gradient" msgstr "Editar as fases do degradado" -#: ../src/widgets/gradient-toolbar.cpp:522 ../src/widgets/toolbox.cpp:1936 -#: ../src/widgets/toolbox.cpp:2010 ../src/widgets/toolbox.cpp:2340 -#: ../src/widgets/toolbox.cpp:2378 ../src/widgets/toolbox.cpp:2992 -#: ../src/widgets/toolbox.cpp:3016 ../src/widgets/toolbox.cpp:4110 +#: ../src/widgets/gradient-toolbar.cpp:522 +#: ../src/widgets/toolbox.cpp:1936 +#: ../src/widgets/toolbox.cpp:2010 +#: ../src/widgets/toolbox.cpp:2340 +#: ../src/widgets/toolbox.cpp:2378 +#: ../src/widgets/toolbox.cpp:2992 +#: ../src/widgets/toolbox.cpp:3016 +#: ../src/widgets/toolbox.cpp:4110 #: ../src/widgets/toolbox.cpp:4137 msgid "New:" msgstr "Novo:" @@ -15936,10 +15398,14 @@ msgstr "Crear degradado no trazo" #. FIXME: implement averaging of all parameters for multiple selected #. gtk_label_set_markup(GTK_LABEL(l), _("Average:")); -#: ../src/widgets/gradient-toolbar.cpp:605 ../src/widgets/toolbox.cpp:1938 -#: ../src/widgets/toolbox.cpp:2348 ../src/widgets/toolbox.cpp:2366 -#: ../src/widgets/toolbox.cpp:2994 ../src/widgets/toolbox.cpp:3005 -#: ../src/widgets/toolbox.cpp:4113 ../src/widgets/toolbox.cpp:4124 +#: ../src/widgets/gradient-toolbar.cpp:605 +#: ../src/widgets/toolbox.cpp:1938 +#: ../src/widgets/toolbox.cpp:2348 +#: ../src/widgets/toolbox.cpp:2366 +#: ../src/widgets/toolbox.cpp:2994 +#: ../src/widgets/toolbox.cpp:3005 +#: ../src/widgets/toolbox.cpp:4113 +#: ../src/widgets/toolbox.cpp:4124 msgid "Change:" msgstr "Cambiar:" @@ -15958,7 +15424,7 @@ msgstr "O degradado non ten fases" #: ../src/widgets/gradient-vector.cpp:661 #, fuzzy msgid "Change gradient stop offset" -msgstr "Trazo de degradado linear" +msgstr "Engadir outra fase de control do degradado" #. TRANSLATORS: "Stop" means: a "phase" of a gradient #: ../src/widgets/gradient-vector.cpp:803 @@ -15994,7 +15460,7 @@ msgstr "Editor de degradados" #: ../src/widgets/gradient-vector.cpp:1171 #, fuzzy msgid "Change gradient stop color" -msgstr "Trazo de degradado linear" +msgstr "Engadir outra fase de control do degradado" #: ../src/widgets/layer-selector.cpp:115 msgid "Toggle current layer visibility" @@ -16012,40 +15478,39 @@ msgstr "Capa actual" msgid "(root)" msgstr "(raíz)" -#: ../src/widgets/paint-selector.cpp:181 ../src/widgets/paint-selector.cpp:564 +#: ../src/widgets/paint-selector.cpp:181 +#: ../src/widgets/paint-selector.cpp:564 msgid "No paint" msgstr "Non pintar" -#: ../src/widgets/paint-selector.cpp:183 ../src/widgets/paint-selector.cpp:636 +#: ../src/widgets/paint-selector.cpp:183 +#: ../src/widgets/paint-selector.cpp:636 msgid "Flat color" msgstr "Cor uniforme" -#: ../src/widgets/paint-selector.cpp:185 ../src/widgets/paint-selector.cpp:707 +#: ../src/widgets/paint-selector.cpp:185 +#: ../src/widgets/paint-selector.cpp:707 msgid "Linear gradient" msgstr "Degradado linear" -#: ../src/widgets/paint-selector.cpp:187 ../src/widgets/paint-selector.cpp:710 +#: ../src/widgets/paint-selector.cpp:187 +#: ../src/widgets/paint-selector.cpp:710 msgid "Radial gradient" msgstr "Degradado radial" #: ../src/widgets/paint-selector.cpp:191 #, fuzzy msgid "Unset paint (make it undefined so it can be inherited)" -msgstr "" -"Non asignar cor (facer que non estea asignada a cor de xeito que non se " -"poida herdar)" +msgstr "Non asignar cor (facer que non estea asignada a cor de xeito que non se poida herdar)" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/painting.html#FillRuleProperty #: ../src/widgets/paint-selector.cpp:203 -msgid "" -"Any path self-intersections or subpaths create holes in the fill (fill-rule: " -"evenodd)" +msgid "Any path self-intersections or subpaths create holes in the fill (fill-rule: evenodd)" msgstr "" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/painting.html#FillRuleProperty #: ../src/widgets/paint-selector.cpp:214 -msgid "" -"Fill is solid unless a subpath is counterdirectional (fill-rule: nonzero)" +msgid "Fill is solid unless a subpath is counterdirectional (fill-rule: nonzero)" msgstr "" #: ../src/widgets/paint-selector.cpp:531 @@ -16053,8 +15518,9 @@ msgid "No objects" msgstr "Non hai obxectos seleccionados" #: ../src/widgets/paint-selector.cpp:542 +#, fuzzy msgid "Multiple styles" -msgstr "" +msgstr "Varios estilos" #: ../src/widgets/paint-selector.cpp:553 msgid "Paint is undefined" @@ -16062,78 +15528,45 @@ msgstr "A cor non está definida" #: ../src/widgets/paint-selector.cpp:984 #, fuzzy -msgid "" -"Use the Node tool to adjust position, scale, and rotation of the " -"pattern on canvas. Use Object > Pattern > Objects to Pattern to " -"create a new pattern from selection." -msgstr "" -"Use Obxecto > Patrón > Obxectos a Patrón para crear un novo " -"patrón a partir da selección." +msgid "Use the Node tool to adjust position, scale, and rotation of the pattern on canvas. Use Object > Pattern > Objects to Pattern to create a new pattern from selection." +msgstr "Use Obxecto > Patrón > Obxectos a Patrón para crear un novo patrón a partir da selección." #: ../src/widgets/select-toolbar.cpp:244 #, fuzzy msgid "Transform by toolbar" -msgstr "Transformar os patróns" +msgstr "Ancho" #: ../src/widgets/select-toolbar.cpp:299 msgid "Now stroke width is scaled when objects are scaled." -msgstr "" -"Agora hase escalar o ancho do trazo cando se escalen os " -"obxectos." +msgstr "Agora hase escalar o ancho do trazo cando se escalen os obxectos." #: ../src/widgets/select-toolbar.cpp:301 msgid "Now stroke width is not scaled when objects are scaled." -msgstr "" -"Agora non se vai escalar o ancho do trazo cando se escalen os " -"obxectos." +msgstr "Agora non se vai escalar o ancho do trazo cando se escalen os obxectos." #: ../src/widgets/select-toolbar.cpp:310 -msgid "" -"Now rounded rectangle corners are scaled when rectangles are " -"scaled." -msgstr "" -"Agora hanse escalar as esquinas redondeadas dos rectángulos " -"cando se escalen os rectángulos." +msgid "Now rounded rectangle corners are scaled when rectangles are scaled." +msgstr "Agora hanse escalar as esquinas redondeadas dos rectángulos cando se escalen os rectángulos." #: ../src/widgets/select-toolbar.cpp:312 -msgid "" -"Now rounded rectangle corners are not scaled when rectangles " -"are scaled." -msgstr "" -"Agora as esquinas redondeadas dos rectángulos non se escalan " -"cando se escalan os rectángulos." +msgid "Now rounded rectangle corners are not scaled when rectangles are scaled." +msgstr "Agora as esquinas redondeadas dos rectángulos non se escalan cando se escalan os rectángulos." #: ../src/widgets/select-toolbar.cpp:321 -msgid "" -"Now gradients are transformed along with their objects when " -"those are transformed (moved, scaled, rotated, or skewed)." -msgstr "" -"Agora os degradados transformanse xunta cos seus obxectos " -"cando estes se transformen (cando se movan, escalen, roten, ou se inclinen)." +msgid "Now gradients are transformed along with their objects when those are transformed (moved, scaled, rotated, or skewed)." +msgstr "Agora os degradados transformanse xunta cos seus obxectos cando estes se transformen (cando se movan, escalen, roten, ou se inclinen)." #: ../src/widgets/select-toolbar.cpp:323 -msgid "" -"Now gradients remain fixed when objects are transformed " -"(moved, scaled, rotated, or skewed)." -msgstr "" -"Agora os degradados permanecen fixos cando os obxectos se " -"transforman (cando se moven, escalan, rotan, ou se inclinan)." +msgid "Now gradients remain fixed when objects are transformed (moved, scaled, rotated, or skewed)." +msgstr "Agora os degradados permanecen fixos cando os obxectos se transforman (cando se moven, escalan, rotan, ou se inclinan)." #: ../src/widgets/select-toolbar.cpp:332 -msgid "" -"Now patterns are transformed along with their objects when " -"those are transformed (moved, scaled, rotated, or skewed)." -msgstr "" -"Agora os patróns transformanse xunta cos seus obxectos cando " -"estes se transformen (cando se movan, escalen, roten, ou se inclinen)." +msgid "Now patterns are transformed along with their objects when those are transformed (moved, scaled, rotated, or skewed)." +msgstr "Agora os patróns transformanse xunta cos seus obxectos cando estes se transformen (cando se movan, escalen, roten, ou se inclinen)." #: ../src/widgets/select-toolbar.cpp:334 -msgid "" -"Now patterns remain fixed when objects are transformed (moved, " -"scaled, rotated, or skewed)." -msgstr "" -"Agora os patróns permanecen fixos cando os obxectos " -"transforman (cando se moven, escalan, rotan, ou se inclinan)." +msgid "Now patterns remain fixed when objects are transformed (moved, scaled, rotated, or skewed)." +msgstr "Agora os patróns permanecen fixos cando os obxectos transforman (cando se moven, escalan, rotan, ou se inclinan)." #. four spinbuttons #. TRANSLATORS: only translate "string" in "context|string". @@ -16141,7 +15574,7 @@ msgstr "" #: ../src/widgets/select-toolbar.cpp:446 #, fuzzy msgid "select_toolbar|X position" -msgstr "X" +msgstr "Ancho" #: ../src/widgets/select-toolbar.cpp:446 msgid "select_toolbar|X" @@ -16156,7 +15589,7 @@ msgstr "Coordenada horizontal da selección" #: ../src/widgets/select-toolbar.cpp:454 #, fuzzy msgid "select_toolbar|Y position" -msgstr "Y" +msgstr "Ancho" #: ../src/widgets/select-toolbar.cpp:454 msgid "select_toolbar|Y" @@ -16169,9 +15602,8 @@ msgstr "Coordenada vertical da selección" #. TRANSLATORS: only translate "string" in "context|string". #. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS #: ../src/widgets/select-toolbar.cpp:462 -#, fuzzy msgid "select_toolbar|Width" -msgstr "A" +msgstr "Ancho" #: ../src/widgets/select-toolbar.cpp:462 msgid "select_toolbar|W" @@ -16182,9 +15614,8 @@ msgid "Width of selection" msgstr "Ancho da selección" #: ../src/widgets/select-toolbar.cpp:471 -#, fuzzy msgid "Lock width and height" -msgstr "Ancho, alto:" +msgstr "Bloquear o ancho e mailo alto" #: ../src/widgets/select-toolbar.cpp:472 msgid "When locked, change both width and height by the same proportion" @@ -16193,9 +15624,8 @@ msgstr "Cando está bloqueado, cambia o ancho e mailo alto na mesma proporción" #. TRANSLATORS: only translate "string" in "context|string". #. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS #: ../src/widgets/select-toolbar.cpp:483 -#, fuzzy msgid "select_toolbar|Height" -msgstr "H" +msgstr "Alto" #: ../src/widgets/select-toolbar.cpp:483 msgid "select_toolbar|H" @@ -16213,17 +15643,17 @@ msgstr "Desprazamento:" #: ../src/widgets/select-toolbar.cpp:535 #, fuzzy msgid "Scale rounded corners" -msgstr "Escalar as esquinas redondeadas dos rectángulos" +msgstr "Escalar as esquinas redondeadas" #: ../src/widgets/select-toolbar.cpp:546 #, fuzzy msgid "Move gradients" -msgstr "Non se seleccionou ningún degradado" +msgstr "Degradados de GIMP" #: ../src/widgets/select-toolbar.cpp:557 #, fuzzy msgid "Move patterns" -msgstr "Patrón" +msgstr "Transformar os patróns" #: ../src/widgets/sp-color-gtkselector.cpp:50 msgid "System" @@ -16290,9 +15720,8 @@ msgid "_K" msgstr "_K" #: ../src/widgets/sp-color-icc-selector.cpp:234 -#, fuzzy msgid "Gray" -msgstr "Agrupar" +msgstr "Gris" #: ../src/widgets/sp-color-icc-selector.cpp:237 #: ../src/widgets/sp-color-icc-selector.cpp:238 @@ -16383,47 +15812,48 @@ msgid "Value" msgstr "Valor" #: ../src/widgets/sp-xmlview-content.cpp:169 +#, fuzzy msgid "Type text in a text node" -msgstr "" +msgstr "Crear novo nodo de texto" #: ../src/widgets/toolbox.cpp:187 +#, fuzzy msgid "Color/opacity used for color tweaking" -msgstr "" +msgstr "Selecciona a cor que se usa para as liñas normais da reixa." #: ../src/widgets/toolbox.cpp:191 msgid "Style of new stars" -msgstr "" +msgstr "Estilo das novas estrelas" #: ../src/widgets/toolbox.cpp:193 -#, fuzzy msgid "Style of new rectangles" -msgstr "Alto do rectángulo" +msgstr "Estilo dos novos rectángulos" #: ../src/widgets/toolbox.cpp:195 #, fuzzy msgid "Style of new 3D boxes" -msgstr "Alto do rectángulo" +msgstr "Estilo dos novos camiños creados co Lapis" #: ../src/widgets/toolbox.cpp:197 msgid "Style of new ellipses" -msgstr "" +msgstr "Estilo das novas elipses" #: ../src/widgets/toolbox.cpp:199 msgid "Style of new spirals" -msgstr "" +msgstr "Estilo das novas espirais" #: ../src/widgets/toolbox.cpp:201 msgid "Style of new paths created by Pencil" -msgstr "" +msgstr "Estilo dos novos camiños creados co Lapis" #: ../src/widgets/toolbox.cpp:203 msgid "Style of new paths created by Pen" -msgstr "" +msgstr "Estilo dos novos camiños creados ca Pluma" #: ../src/widgets/toolbox.cpp:205 #, fuzzy msgid "Style of new calligraphic strokes" -msgstr "Debuxar liñas de caligrafía" +msgstr "Estilo dos novos camiños creados co Lapis" #: ../src/widgets/toolbox.cpp:207 msgid "TBD" @@ -16434,64 +15864,58 @@ msgid "Style of Paint Bucket fill objects" msgstr "" #: ../src/widgets/toolbox.cpp:1075 -#, fuzzy msgid "Insert node" -msgstr "Sangrar o nodo" +msgstr "Inserir un nodo" #: ../src/widgets/toolbox.cpp:1076 msgid "Insert new nodes into selected segments" msgstr "Inserir nodos nos segmentos seleccionados" #: ../src/widgets/toolbox.cpp:1079 -#, fuzzy msgid "Insert" -msgstr "Inverter" +msgstr "Inserir" #: ../src/widgets/toolbox.cpp:1087 msgid "Delete selected nodes" msgstr "Borra-los nodos seleccionados" #: ../src/widgets/toolbox.cpp:1097 -#, fuzzy msgid "Join endnodes" -msgstr "Uni-los nodos finais seleccionados" +msgstr "Unir os nodos finais" #: ../src/widgets/toolbox.cpp:1098 msgid "Join selected endnodes" msgstr "Uni-los nodos finais seleccionados" #: ../src/widgets/toolbox.cpp:1101 -#, fuzzy msgid "Join" -msgstr "Xuntura:" +msgstr "Unir" #: ../src/widgets/toolbox.cpp:1108 #, fuzzy msgid "Break nodes" -msgstr "nodo final" +msgstr "Mover os nodos" #: ../src/widgets/toolbox.cpp:1109 msgid "Break path at selected nodes" msgstr "Romper o camiño nos nodos seleccionados" #: ../src/widgets/toolbox.cpp:1119 -#, fuzzy msgid "Join with segment" -msgstr "Degradado linear" +msgstr "Unir cun segmento" #: ../src/widgets/toolbox.cpp:1120 msgid "Join selected endnodes with a new segment" msgstr "Uni-los nodos finais seleccionados cun novo segmento" #: ../src/widgets/toolbox.cpp:1130 -#, fuzzy msgid "Delete segment between two non-endpoint nodes" -msgstr "Dividir o camiño entre dous nodos non finais" +msgstr "Dividir o segmento entre dous nodos non finais" #: ../src/widgets/toolbox.cpp:1139 #, fuzzy msgid "Node Cusp" -msgstr "Nodos" +msgstr "Duplicar o nodo" #: ../src/widgets/toolbox.cpp:1140 msgid "Make selected nodes corner" @@ -16500,16 +15924,15 @@ msgstr "Converter os nodos seleccionados en esquinas" #: ../src/widgets/toolbox.cpp:1149 #, fuzzy msgid "Node Smooth" -msgstr "Suavizar" +msgstr "Duplicar o nodo" #: ../src/widgets/toolbox.cpp:1150 msgid "Make selected nodes smooth" msgstr "Suavizar os nodos seleccionados" #: ../src/widgets/toolbox.cpp:1159 -#, fuzzy msgid "Node Symmetric" -msgstr "simétrico" +msgstr "Nodo simétrico" #: ../src/widgets/toolbox.cpp:1160 msgid "Make selected nodes symmetric" @@ -16518,7 +15941,7 @@ msgstr "Facer simétricos os nodos seleccionados" #: ../src/widgets/toolbox.cpp:1169 #, fuzzy msgid "Node Line" -msgstr "Nova vista" +msgstr "Ancho da Liña" #: ../src/widgets/toolbox.cpp:1170 msgid "Make selected segments lines" @@ -16527,7 +15950,7 @@ msgstr "Converte-los segmentos seleccionados en liñas" #: ../src/widgets/toolbox.cpp:1179 #, fuzzy msgid "Node Curve" -msgstr "Sen previsualización" +msgstr "Duplicar o nodo" #: ../src/widgets/toolbox.cpp:1180 msgid "Make selected segments curves" @@ -16545,12 +15968,12 @@ msgstr "Amosar as asas Bezier dos nodos seleccionados" #: ../src/widgets/toolbox.cpp:1200 #, fuzzy msgid "Show Outline" -msgstr "_Bosquexo" +msgstr "Caixa de contorno" #: ../src/widgets/toolbox.cpp:1201 #, fuzzy msgid "Show the outline of the path" -msgstr "Ancho do papel" +msgstr "O camiño está pechado." #: ../src/widgets/toolbox.cpp:1211 #, fuzzy @@ -16565,65 +15988,62 @@ msgstr "Pegar Ancho por Separado" #: ../src/widgets/toolbox.cpp:1223 #, fuzzy msgid "Edit the clipping path of the object" -msgstr "Simplificar" +msgstr "Seleccione obxectos para convertelos en camiños." #: ../src/widgets/toolbox.cpp:1233 #, fuzzy msgid "Edit mask path" -msgstr "Editar trazo..." +msgstr "O camiño está pechado." #: ../src/widgets/toolbox.cpp:1234 #, fuzzy msgid "Edit the mask of the object" -msgstr "Editar as fases do degradado" +msgstr "Establecer o ID do obxecto" #: ../src/widgets/toolbox.cpp:1248 -#, fuzzy msgid "X coordinate:" -msgstr "Coordenadas do cursor" +msgstr "Coordenada X:" #: ../src/widgets/toolbox.cpp:1248 -#, fuzzy msgid "X coordinate of selected node(s)" -msgstr "Coordenada vertical da selección" +msgstr "Coordenada X dos nodos seleccionados" #: ../src/widgets/toolbox.cpp:1266 -#, fuzzy msgid "Y coordinate:" -msgstr "Coordenadas do cursor" +msgstr "Coordenada Y:" #: ../src/widgets/toolbox.cpp:1266 -#, fuzzy msgid "Y coordinate of selected node(s)" -msgstr "Coordenada vertical da selección" +msgstr "Coordenada Y dos nodos seleccionados" #: ../src/widgets/toolbox.cpp:1688 +#, fuzzy msgid "Star: Change number of corners" -msgstr "" +msgstr "Número de puntas dun polígono ou dunha estrela" #: ../src/widgets/toolbox.cpp:1730 -#, fuzzy msgid "Star: Change spoke ratio" -msgstr "Almacenar a transformación:" +msgstr "Estrela: Cambiar a relación de aspecto" #: ../src/widgets/toolbox.cpp:1773 #, fuzzy msgid "Make polygon" -msgstr "Completar" +msgstr "polígono regular" #: ../src/widgets/toolbox.cpp:1773 #, fuzzy msgid "Make star" -msgstr "Crear mapa de bits" +msgstr "Crear estrela" #: ../src/widgets/toolbox.cpp:1808 +#, fuzzy msgid "Star: Change rounding" -msgstr "" +msgstr "Estrela: Cambiar a relación de aspecto" #: ../src/widgets/toolbox.cpp:1842 #, fuzzy msgid "Star: Change randomization" -msgstr "Almacenar a transformación:" +msgstr "Estrela: Cambiar a relación de aspecto" #: ../src/widgets/toolbox.cpp:2029 msgid "Regular polygon (with one handle) instead of a star" @@ -16635,12 +16055,14 @@ msgid "Star instead of a regular polygon (with one handle)" msgstr "Polígono regular (cunha asa) en vez dunha estrela" #: ../src/widgets/toolbox.cpp:2057 +#, fuzzy msgid "triangle/tri-star" -msgstr "" +msgstr "Estrela de %d vértice" #: ../src/widgets/toolbox.cpp:2057 +#, fuzzy msgid "square/quad-star" -msgstr "" +msgstr "Estrela de %d vértice" #: ../src/widgets/toolbox.cpp:2057 msgid "pentagon/five-pointed star" @@ -16664,12 +16086,14 @@ msgid "Number of corners of a polygon or star" msgstr "Número de puntas dun polígono ou dunha estrela" #: ../src/widgets/toolbox.cpp:2073 +#, fuzzy msgid "thin-ray star" -msgstr "" +msgstr "Estrela de %d vértice" #: ../src/widgets/toolbox.cpp:2073 +#, fuzzy msgid "pentagram" -msgstr "" +msgstr "pentagrama" #: ../src/widgets/toolbox.cpp:2073 msgid "hexagram" @@ -16686,17 +16110,17 @@ msgstr "" #: ../src/widgets/toolbox.cpp:2073 #, fuzzy msgid "regular polygon" -msgstr "Completar" +msgstr "polígono regular" #: ../src/widgets/toolbox.cpp:2076 #, fuzzy msgid "Spoke ratio" -msgstr "Bloquea-la relación de aspecto" +msgstr "Estrela: Cambiar a relación de aspecto" #: ../src/widgets/toolbox.cpp:2076 #, fuzzy msgid "Spoke ratio:" -msgstr "Bloquea-la relación de aspecto" +msgstr "Estrela: Cambiar a relación de aspecto" #. TRANSLATORS: Tip radius of a star is the distance from the center to the farthest handle. #. Base radius is the same for the closest handle. @@ -16717,38 +16141,37 @@ msgid "slightly pinched" msgstr "" #: ../src/widgets/toolbox.cpp:2097 -#, fuzzy msgid "NOT rounded" -msgstr "Non redondeado" +msgstr "NON redondeado" #: ../src/widgets/toolbox.cpp:2097 #, fuzzy msgid "slightly rounded" -msgstr "Non redondeado" +msgstr "NON redondeado" #: ../src/widgets/toolbox.cpp:2097 #, fuzzy msgid "visibly rounded" -msgstr "Non redondeado" +msgstr "NON redondeado" #: ../src/widgets/toolbox.cpp:2097 #, fuzzy msgid "well rounded" -msgstr "Non redondeado" +msgstr "NON redondeado" #: ../src/widgets/toolbox.cpp:2097 #, fuzzy msgid "amply rounded" -msgstr "Non redondeado" +msgstr "NON redondeado" -#: ../src/widgets/toolbox.cpp:2097 ../src/widgets/toolbox.cpp:2112 +#: ../src/widgets/toolbox.cpp:2097 +#: ../src/widgets/toolbox.cpp:2112 msgid "blown up" msgstr "" #: ../src/widgets/toolbox.cpp:2100 -#, fuzzy msgid "Rounded" -msgstr "Redondeado:" +msgstr "Redondeado" #: ../src/widgets/toolbox.cpp:2100 msgid "Rounded:" @@ -16759,8 +16182,9 @@ msgid "How much rounded are the corners (0 for sharp)" msgstr "Como de redondas son as esquinas (0 para aguzadas)" #: ../src/widgets/toolbox.cpp:2112 +#, fuzzy msgid "NOT randomized" -msgstr "" +msgstr "NON redondeado" #: ../src/widgets/toolbox.cpp:2112 msgid "slightly irregular" @@ -16788,23 +16212,21 @@ msgstr "" msgid "Scatter randomly the corners and angles" msgstr "" -#: ../src/widgets/toolbox.cpp:2130 ../src/widgets/toolbox.cpp:3067 -#: ../src/widgets/toolbox.cpp:3847 ../src/widgets/toolbox.cpp:5804 +#: ../src/widgets/toolbox.cpp:2130 +#: ../src/widgets/toolbox.cpp:3067 +#: ../src/widgets/toolbox.cpp:3847 +#: ../src/widgets/toolbox.cpp:5804 msgid "Defaults" msgstr "Predeterminados" -#: ../src/widgets/toolbox.cpp:2131 ../src/widgets/toolbox.cpp:3068 -msgid "" -"Reset shape parameters to defaults (use Inkscape Preferences > Tools to " -"change defaults)" -msgstr "" -"Restablecer os parámetros da figura ós predeterminados (use Preferencias de " -"Inkscape > Ferramentas para cambia-los predeterminados)" +#: ../src/widgets/toolbox.cpp:2131 +#: ../src/widgets/toolbox.cpp:3068 +msgid "Reset shape parameters to defaults (use Inkscape Preferences > Tools to change defaults)" +msgstr "Restablecer os parámetros da figura ós predeterminados (use Preferencias de Inkscape > Ferramentas para cambia-los predeterminados)" #: ../src/widgets/toolbox.cpp:2203 -#, fuzzy msgid "Change rectangle" -msgstr "Crear rectángulo" +msgstr "Cambiar o rectángulo" #: ../src/widgets/toolbox.cpp:2396 msgid "W:" @@ -16822,15 +16244,15 @@ msgstr "H:" msgid "Height of rectangle" msgstr "Alto do rectángulo" -#: ../src/widgets/toolbox.cpp:2427 ../src/widgets/toolbox.cpp:2442 -#, fuzzy +#: ../src/widgets/toolbox.cpp:2427 +#: ../src/widgets/toolbox.cpp:2442 msgid "not rounded" -msgstr "Non redondeado" +msgstr "non redondeado" #: ../src/widgets/toolbox.cpp:2430 #, fuzzy msgid "Horizontal radius" -msgstr "Espacio Horizontal" +msgstr "Radio horizontal" #: ../src/widgets/toolbox.cpp:2430 msgid "Rx:" @@ -16843,7 +16265,7 @@ msgstr "Raio horizontal das esquinas redondeadas" #: ../src/widgets/toolbox.cpp:2445 #, fuzzy msgid "Vertical radius" -msgstr "Espacio Vertical" +msgstr "Radio vertical" #: ../src/widgets/toolbox.cpp:2445 msgid "Ry:" @@ -16867,8 +16289,9 @@ msgid "3D Box: Change perspective (angle of infinite axis)" msgstr "" #: ../src/widgets/toolbox.cpp:2723 +#, fuzzy msgid "Angle in X direction" -msgstr "" +msgstr "Exportando" #. Translators: PL is short for 'perspective line' #: ../src/widgets/toolbox.cpp:2725 @@ -16885,13 +16308,14 @@ msgid "Toggle VP in X direction between 'finite' and 'infinite' (=parallel)" msgstr "" #: ../src/widgets/toolbox.cpp:2763 +#, fuzzy msgid "Angle in Y direction" -msgstr "" +msgstr "Exportando" #: ../src/widgets/toolbox.cpp:2763 #, fuzzy msgid "Angle Y:" -msgstr "Ángulo:" +msgstr "Ángulo Y:" #. Translators: PL is short for 'perspective line' #: ../src/widgets/toolbox.cpp:2765 @@ -16908,8 +16332,9 @@ msgid "Toggle VP in Y direction between 'finite' and 'infinite' (=parallel)" msgstr "" #: ../src/widgets/toolbox.cpp:2802 +#, fuzzy msgid "Angle in Z direction" -msgstr "" +msgstr "Exportando" #. Translators: PL is short for 'perspective line' #: ../src/widgets/toolbox.cpp:2804 @@ -16926,23 +16351,20 @@ msgid "Toggle VP in Z direction between 'finite' and 'infinite' (=parallel)" msgstr "" #: ../src/widgets/toolbox.cpp:2883 -#, fuzzy msgid "Change spiral" -msgstr "Crear espirais" +msgstr "Cambiar a espiral" #: ../src/widgets/toolbox.cpp:3024 msgid "just a curve" msgstr "" #: ../src/widgets/toolbox.cpp:3024 -#, fuzzy msgid "one full revolution" -msgstr "Número de revolucións" +msgstr "unha revolución completa" #: ../src/widgets/toolbox.cpp:3027 -#, fuzzy msgid "Number of turns" -msgstr "Número de filas" +msgstr "Número de voltas" #: ../src/widgets/toolbox.cpp:3027 msgid "Turns:" @@ -16953,17 +16375,17 @@ msgid "Number of revolutions" msgstr "Número de revolucións" #: ../src/widgets/toolbox.cpp:3038 -#, fuzzy msgid "circle" -msgstr "Círculo" +msgstr "círculo" #: ../src/widgets/toolbox.cpp:3038 msgid "edge is much denser" msgstr "" #: ../src/widgets/toolbox.cpp:3038 +#, fuzzy msgid "edge is denser" -msgstr "" +msgstr "O camiño está pechado." #: ../src/widgets/toolbox.cpp:3038 #, fuzzy @@ -16973,7 +16395,7 @@ msgstr "Verde" #: ../src/widgets/toolbox.cpp:3038 #, fuzzy msgid "center is denser" -msgstr "Centrar as liñas" +msgstr "O camiño está pechado." #: ../src/widgets/toolbox.cpp:3038 msgid "center is much denser" @@ -16993,43 +16415,47 @@ msgid "How much denser/sparser are outer revolutions; 1 = uniform" msgstr "" #: ../src/widgets/toolbox.cpp:3052 -#, fuzzy msgid "starts from center" -msgstr "Escolle-la metría para o centro" +msgstr "comeza no centro" #: ../src/widgets/toolbox.cpp:3052 +#, fuzzy msgid "starts mid-way" -msgstr "" +msgstr "comeza no centro" #: ../src/widgets/toolbox.cpp:3052 +#, fuzzy msgid "starts near edge" -msgstr "" +msgstr "Detección Óptima de Bordos" #: ../src/widgets/toolbox.cpp:3055 #, fuzzy msgid "Inner radius" -msgstr "Degradado linear" +msgstr "Radio interior:" #: ../src/widgets/toolbox.cpp:3055 +#, fuzzy msgid "Inner radius:" -msgstr "" +msgstr "Radio interior:" #: ../src/widgets/toolbox.cpp:3055 msgid "Radius of the innermost revolution (relative to the spiral size)" msgstr "" #: ../src/widgets/toolbox.cpp:3101 -#, fuzzy msgid "Mode:" -msgstr "Bordo" +msgstr "Modo:" #: ../src/widgets/toolbox.cpp:3121 msgid "Bézier" -msgstr "" +msgstr "Bézier" #: ../src/widgets/toolbox.cpp:3122 +#, fuzzy msgid "Regular Bézier mode" msgstr "" +"%s non é un ficheiro normal.\n" +"%s" #: ../src/widgets/toolbox.cpp:3128 #, fuzzy @@ -17039,19 +16465,22 @@ msgstr "Espiral" #: ../src/widgets/toolbox.cpp:3129 #, fuzzy msgid "Spiro splines mode" -msgstr "Engadir nodos" +msgstr "Cambiar ó modo de visualización normal" #. Width #: ../src/widgets/toolbox.cpp:3238 msgid "(pinch tweak)" msgstr "" -#: ../src/widgets/toolbox.cpp:3238 ../src/widgets/toolbox.cpp:3254 -#: ../src/widgets/toolbox.cpp:3420 ../src/widgets/toolbox.cpp:3642 -#: ../src/widgets/toolbox.cpp:3674 ../src/widgets/toolbox.cpp:4315 +#: ../src/widgets/toolbox.cpp:3238 +#: ../src/widgets/toolbox.cpp:3254 +#: ../src/widgets/toolbox.cpp:3420 +#: ../src/widgets/toolbox.cpp:3642 +#: ../src/widgets/toolbox.cpp:3674 +#: ../src/widgets/toolbox.cpp:4315 #, fuzzy msgid "(default)" -msgstr "Predeterminado" +msgstr "(predeterminado)" #: ../src/widgets/toolbox.cpp:3238 #, fuzzy @@ -17064,12 +16493,14 @@ msgstr "" #. Force #: ../src/widgets/toolbox.cpp:3254 +#, fuzzy msgid "(minimum force)" -msgstr "" +msgstr "Tamaño mínimo" #: ../src/widgets/toolbox.cpp:3254 +#, fuzzy msgid "(maximum force)" -msgstr "" +msgstr "Número máximo de documentos recentes:" #: ../src/widgets/toolbox.cpp:3257 #, fuzzy @@ -17082,12 +16513,14 @@ msgid "Force:" msgstr "Fonte" #: ../src/widgets/toolbox.cpp:3257 +#, fuzzy msgid "The force of the tweak action" -msgstr "" +msgstr "Desface-la última acción" #: ../src/widgets/toolbox.cpp:3274 +#, fuzzy msgid "Push mode" -msgstr "" +msgstr "Modo de _visualización" #: ../src/widgets/toolbox.cpp:3275 msgid "Push parts of paths in any direction" @@ -17096,7 +16529,7 @@ msgstr "" #: ../src/widgets/toolbox.cpp:3281 #, fuzzy msgid "Shrink mode" -msgstr "Engadir nodos" +msgstr "Modo de _visualización" #: ../src/widgets/toolbox.cpp:3282 #, fuzzy @@ -17106,7 +16539,7 @@ msgstr "Romper os camiños seleccionados en subcamiños" #: ../src/widgets/toolbox.cpp:3288 #, fuzzy msgid "Grow mode" -msgstr "Baixar o nodo" +msgstr "Modo de _visualización" #: ../src/widgets/toolbox.cpp:3289 msgid "Grow (outset) parts of paths" @@ -17115,7 +16548,7 @@ msgstr "" #: ../src/widgets/toolbox.cpp:3295 #, fuzzy msgid "Attract mode" -msgstr "Nome do atributo" +msgstr "Modo de _visualización" #: ../src/widgets/toolbox.cpp:3296 msgid "Attract parts of paths towards cursor" @@ -17133,16 +16566,17 @@ msgstr "" #: ../src/widgets/toolbox.cpp:3309 #, fuzzy msgid "Roughen mode" -msgstr "nodo final" +msgstr "Modo de _visualización" #: ../src/widgets/toolbox.cpp:3310 +#, fuzzy msgid "Roughen parts of paths" -msgstr "" +msgstr "Converter textos en camiños" #: ../src/widgets/toolbox.cpp:3316 #, fuzzy msgid "Color paint mode" -msgstr "Cor do bordo da páxina" +msgstr "A cor non está definida" #: ../src/widgets/toolbox.cpp:3317 #, fuzzy @@ -17152,17 +16586,16 @@ msgstr "Facer que os conectadores eviten os obxectos seleccionados" #: ../src/widgets/toolbox.cpp:3323 #, fuzzy msgid "Color jitter mode" -msgstr "Subir o nodo" +msgstr "Elixa o matiz da cor" #: ../src/widgets/toolbox.cpp:3324 #, fuzzy msgid "Jitter the colors of selected objects" -msgstr "Facer que os conectadores eviten os obxectos seleccionados" +msgstr "Voltea-los obxectos seleccionados horizontalmente" #: ../src/widgets/toolbox.cpp:3329 -#, fuzzy msgid "Mode:" -msgstr "Mover" +msgstr "Modo:" #: ../src/widgets/toolbox.cpp:3350 #, fuzzy @@ -17177,7 +16610,7 @@ msgstr "" #: ../src/widgets/toolbox.cpp:3365 #, fuzzy msgid "H" -msgstr "H:" +msgstr "H" #: ../src/widgets/toolbox.cpp:3376 msgid "In color mode, act on objects' saturation" @@ -17185,9 +16618,8 @@ msgstr "" #. TRANSLATORS: "S" here stands for Saturation #: ../src/widgets/toolbox.cpp:3380 -#, fuzzy msgid "S" -msgstr "_S" +msgstr "S" #: ../src/widgets/toolbox.cpp:3391 msgid "In color mode, act on objects' lightness" @@ -17197,7 +16629,7 @@ msgstr "" #: ../src/widgets/toolbox.cpp:3395 #, fuzzy msgid "L" -msgstr "_L" +msgstr "L" #: ../src/widgets/toolbox.cpp:3406 msgid "In color mode, act on objects' opacity" @@ -17206,9 +16638,8 @@ msgstr "" # O de opacidade #. TRANSLATORS: "O" here stands for Opacity #: ../src/widgets/toolbox.cpp:3410 -#, fuzzy msgid "O" -msgstr "O:" +msgstr "O" #. Fidelity #: ../src/widgets/toolbox.cpp:3420 @@ -17229,34 +16660,35 @@ msgid "Fidelity:" msgstr "" #: ../src/widgets/toolbox.cpp:3424 -msgid "" -"Low fidelity simplifies paths; high fidelity preserves path features but may " -"generate a lot of new nodes" +msgid "Low fidelity simplifies paths; high fidelity preserves path features but may generate a lot of new nodes" msgstr "" -#: ../src/widgets/toolbox.cpp:3441 ../src/widgets/toolbox.cpp:3789 -#, fuzzy +#: ../src/widgets/toolbox.cpp:3441 +#: ../src/widgets/toolbox.cpp:3789 msgid "Pressure" -msgstr "Conservar" +msgstr "Presión" #: ../src/widgets/toolbox.cpp:3442 msgid "Use the pressure of the input device to alter the force of tweak action" msgstr "" #. Width -#: ../src/widgets/toolbox.cpp:3642 ../src/widgets/toolbox.cpp:4315 +#: ../src/widgets/toolbox.cpp:3642 +#: ../src/widgets/toolbox.cpp:4315 msgid "(hairline)" msgstr "" -#: ../src/widgets/toolbox.cpp:3642 ../src/widgets/toolbox.cpp:4315 +#: ../src/widgets/toolbox.cpp:3642 +#: ../src/widgets/toolbox.cpp:4315 #, fuzzy msgid "(broad stroke)" -msgstr "Sen trazo" +msgstr "Eliminar o trazo" -#: ../src/widgets/toolbox.cpp:3645 ../src/widgets/toolbox.cpp:4318 +#: ../src/widgets/toolbox.cpp:3645 +#: ../src/widgets/toolbox.cpp:4318 #, fuzzy msgid "Pen Width" -msgstr "A_ncho da Páxina" +msgstr "Ancho, alto:" #: ../src/widgets/toolbox.cpp:3646 msgid "The width of the calligraphic pen (relative to the visible canvas area)" @@ -17272,73 +16704,76 @@ msgid "(slight widening)" msgstr "" #: ../src/widgets/toolbox.cpp:3658 +#, fuzzy msgid "(constant width)" -msgstr "" +msgstr "Ancho, alto:" #: ../src/widgets/toolbox.cpp:3658 +#, fuzzy msgid "(slight thinning, default)" -msgstr "" +msgstr "Establecer coma predeterminado" #: ../src/widgets/toolbox.cpp:3658 +#, fuzzy msgid "(speed deflates stroke)" -msgstr "" +msgstr "Establecer a cor do trazo" #: ../src/widgets/toolbox.cpp:3661 #, fuzzy msgid "Stroke Thinning" -msgstr "_Pintar o trazo" +msgstr "Eliminar o trazo" #: ../src/widgets/toolbox.cpp:3661 msgid "Thinning:" msgstr "" #: ../src/widgets/toolbox.cpp:3662 -msgid "" -"How much velocity thins the stroke (> 0 makes fast strokes thinner, < 0 " -"makes them broader, 0 makes width independent of velocity)" +msgid "How much velocity thins the stroke (> 0 makes fast strokes thinner, < 0 makes them broader, 0 makes width independent of velocity)" msgstr "" #. Angle #: ../src/widgets/toolbox.cpp:3674 +#, fuzzy msgid "(left edge up)" -msgstr "" +msgstr "Detección Óptima de Bordos" #: ../src/widgets/toolbox.cpp:3674 -#, fuzzy msgid "(horizontal)" -msgstr "_Horizontal" +msgstr "(horizontal)" #: ../src/widgets/toolbox.cpp:3674 +#, fuzzy msgid "(right edge up)" -msgstr "" +msgstr "Detección Óptima de Bordos" #: ../src/widgets/toolbox.cpp:3677 #, fuzzy msgid "Pen Angle" -msgstr "Ángulo" +msgstr "Ángulo (graos):" #: ../src/widgets/toolbox.cpp:3677 msgid "Angle:" msgstr "Ángulo:" #: ../src/widgets/toolbox.cpp:3678 -msgid "" -"The angle of the pen's nib (in degrees; 0 = horizontal; has no effect if " -"fixation = 0)" +msgid "The angle of the pen's nib (in degrees; 0 = horizontal; has no effect if fixation = 0)" msgstr "" #. Fixation #: ../src/widgets/toolbox.cpp:3692 +#, fuzzy msgid "(perpendicular to stroke, \"brush\")" -msgstr "" +msgstr "Converte-lo trazo dos obxectos seleccionados en camiños" #: ../src/widgets/toolbox.cpp:3692 +#, fuzzy msgid "(almost fixed, default)" -msgstr "" +msgstr "Establecer coma predeterminado" #: ../src/widgets/toolbox.cpp:3692 +#, fuzzy msgid "(fixed by Angle, \"pen\")" -msgstr "" +msgstr "Estilo dos novos camiños creados ca Pluma" #: ../src/widgets/toolbox.cpp:3695 #, fuzzy @@ -17350,9 +16785,7 @@ msgid "Fixation:" msgstr "" #: ../src/widgets/toolbox.cpp:3696 -msgid "" -"Angle behavior (0 = nib always perpendicular to stroke direction, 1 = fixed " -"angle)" +msgid "Angle behavior (0 = nib always perpendicular to stroke direction, 1 = fixed angle)" msgstr "" #. Cap Rounding @@ -17366,8 +16799,9 @@ msgid "(slightly bulging)" msgstr "" #: ../src/widgets/toolbox.cpp:3708 +#, fuzzy msgid "(approximately round)" -msgstr "" +msgstr "Xuntura redondeada" #: ../src/widgets/toolbox.cpp:3708 msgid "(long protruding caps)" @@ -17384,16 +16818,14 @@ msgid "Caps:" msgstr " Tapa ou punta.mirar o comentario para tradutores do lago" #: ../src/widgets/toolbox.cpp:3713 -msgid "" -"Increase to make caps at the ends of strokes protrude more (0 = no caps, 1 = " -"round caps)" +msgid "Increase to make caps at the ends of strokes protrude more (0 = no caps, 1 = round caps)" msgstr "" #. Tremor #: ../src/widgets/toolbox.cpp:3725 #, fuzzy msgid "(smooth line)" -msgstr "suavizado" +msgstr "Ancho da Liña" #: ../src/widgets/toolbox.cpp:3725 msgid "(slight tremor)" @@ -17404,13 +16836,14 @@ msgid "(noticeable tremor)" msgstr "" #: ../src/widgets/toolbox.cpp:3725 +#, fuzzy msgid "(maximum tremor)" -msgstr "" +msgstr "Número máximo de documentos recentes:" #: ../src/widgets/toolbox.cpp:3728 #, fuzzy msgid "Stroke Tremor" -msgstr "Escolle-la cor de trazado" +msgstr "Eliminar o trazo" #: ../src/widgets/toolbox.cpp:3728 msgid "Tremor:" @@ -17422,8 +16855,9 @@ msgstr "" #. Wiggle #: ../src/widgets/toolbox.cpp:3742 +#, fuzzy msgid "(no wiggle)" -msgstr "" +msgstr "Sen recheo" #: ../src/widgets/toolbox.cpp:3742 #, fuzzy @@ -17437,7 +16871,7 @@ msgstr "" #: ../src/widgets/toolbox.cpp:3745 #, fuzzy msgid "Pen Wiggle" -msgstr "Título:" +msgstr "Preferencias da Pluma" #: ../src/widgets/toolbox.cpp:3745 #, fuzzy @@ -17450,24 +16884,28 @@ msgstr "" #. Mass #: ../src/widgets/toolbox.cpp:3758 +#, fuzzy msgid "(no inertia)" -msgstr "" +msgstr "Sen recheo" #: ../src/widgets/toolbox.cpp:3758 +#, fuzzy msgid "(slight smoothing, default)" -msgstr "" +msgstr "Establecer coma predeterminado" #: ../src/widgets/toolbox.cpp:3758 msgid "(noticeable lagging)" msgstr "" #: ../src/widgets/toolbox.cpp:3758 +#, fuzzy msgid "(maximum inertia)" -msgstr "" +msgstr "Número máximo de documentos recentes:" #: ../src/widgets/toolbox.cpp:3761 +#, fuzzy msgid "Pen Mass" -msgstr "" +msgstr "Preferencias da Pluma" #: ../src/widgets/toolbox.cpp:3761 msgid "Mass:" @@ -17480,12 +16918,10 @@ msgstr "" #: ../src/widgets/toolbox.cpp:3776 #, fuzzy msgid "Trace Background" -msgstr "Fondo" +msgstr "Imaxe de Fondo" #: ../src/widgets/toolbox.cpp:3777 -msgid "" -"Trace the lightness of the background by the width of the pen (white - " -"minimum width, black - maximum width)" +msgid "Trace the lightness of the background by the width of the pen (white - minimum width, black - maximum width)" msgstr "" #: ../src/widgets/toolbox.cpp:3790 @@ -17504,12 +16940,12 @@ msgstr "" #: ../src/widgets/toolbox.cpp:3821 #, fuzzy msgid "No preset" -msgstr "Previsualización" +msgstr "Sen recheo" #: ../src/widgets/toolbox.cpp:3836 #, fuzzy msgid "Change calligraphic profile" -msgstr "Debuxar liñas de caligrafía" +msgstr "Cambiar a definición da cor" #: ../src/widgets/toolbox.cpp:3848 #, fuzzy @@ -17518,16 +16954,15 @@ msgstr "Garda-lo documento cun novo nome" #: ../src/widgets/toolbox.cpp:3933 msgid "Arc: Change start/end" -msgstr "" +msgstr "Arco: cambiar comezo/fin" #: ../src/widgets/toolbox.cpp:4022 msgid "Arc: Change open/closed" -msgstr "" +msgstr "Arco: cambiar aberto/pechado" #: ../src/widgets/toolbox.cpp:4146 -#, fuzzy msgid "Start" -msgstr "Comezo:" +msgstr "Comezo" #: ../src/widgets/toolbox.cpp:4146 msgid "Start:" @@ -17538,9 +16973,8 @@ msgid "The angle (in degrees) from the horizontal to the arc's start point" msgstr "O ángulo (en graos) dende a horizontal ó punto de comezo do arco" #: ../src/widgets/toolbox.cpp:4159 -#, fuzzy msgid "End" -msgstr "Fin:" +msgstr "Fin" #: ../src/widgets/toolbox.cpp:4159 msgid "End:" @@ -17551,24 +16985,21 @@ msgid "The angle (in degrees) from the horizontal to the arc's end point" msgstr "O ángulo (en graos) dende a horizontal ó punto de fin do arco" #: ../src/widgets/toolbox.cpp:4176 -#, fuzzy msgid "Closed arc" -msgstr "Pecha-lo formulario" +msgstr "Arco pechado" #: ../src/widgets/toolbox.cpp:4177 #, fuzzy msgid "Switch to segment (closed shape with two radii)" -msgstr "" -"Cambiar entre arco (figura aberta) e sector (figura pechada con dous raios)" +msgstr "Cambiar entre arco (figura aberta) e sector (figura pechada con dous raios)" #: ../src/widgets/toolbox.cpp:4183 -#, fuzzy msgid "Open Arc" msgstr "Arco aberto" #: ../src/widgets/toolbox.cpp:4184 msgid "Switch to arc (unclosed shape)" -msgstr "" +msgstr "Cambiar a arco (figura aberta)" #: ../src/widgets/toolbox.cpp:4208 msgid "Make whole" @@ -17576,62 +17007,54 @@ msgstr "Completar" #: ../src/widgets/toolbox.cpp:4209 msgid "Make the shape a whole ellipse, not arc or segment" -msgstr "" -"Facer que a figura sexa unha elipse completa, e non un arco ou un sector" +msgstr "Facer que a figura sexa unha elipse completa, e non un arco ou un sector" #: ../src/widgets/toolbox.cpp:4275 -#, fuzzy msgid "Opacity:" -msgstr "Opacidade" +msgstr "Opacidade:" #: ../src/widgets/toolbox.cpp:4282 #, fuzzy msgid "Pick opacity" -msgstr "Opacidade" +msgstr "Cambiar a opacidade" #: ../src/widgets/toolbox.cpp:4283 -msgid "" -"Pick both the color and the alpha (transparency) under cursor; otherwise, " -"pick only the visible color premultiplied by alpha" +msgid "Pick both the color and the alpha (transparency) under cursor; otherwise, pick only the visible color premultiplied by alpha" msgstr "" #: ../src/widgets/toolbox.cpp:4286 #, fuzzy msgid "Pick" -msgstr "Camiños" +msgstr "Elixa o matiz da cor" #: ../src/widgets/toolbox.cpp:4295 -#, fuzzy msgid "Assign opacity" -msgstr "Opacidade principal" +msgstr "Asignar a opacidade" #: ../src/widgets/toolbox.cpp:4296 -msgid "" -"If alpha was picked, assign it to selection as fill or stroke transparency" +msgid "If alpha was picked, assign it to selection as fill or stroke transparency" msgstr "" #: ../src/widgets/toolbox.cpp:4299 -#, fuzzy msgid "Assign" -msgstr "Aliñar" +msgstr "Asignar" #: ../src/widgets/toolbox.cpp:4319 msgid "The width of the eraser pen (relative to the visible canvas area)" -msgstr "" +msgstr "O ancho da goma (relativo á zona visible do lenzo)" #: ../src/widgets/toolbox.cpp:4336 msgid "Delete objects touched by the eraser" -msgstr "" +msgstr "Eliminar os obxectos tocados pola goma" #: ../src/widgets/toolbox.cpp:4342 -#, fuzzy msgid "Cut" -msgstr "Cor_tar" +msgstr "Cortar" #: ../src/widgets/toolbox.cpp:4343 #, fuzzy msgid "Cut out from objects" -msgstr "Patrón a obxectos" +msgstr "Borrar tódolos obxectos do documento" #: ../src/widgets/toolbox.cpp:4678 #, fuzzy @@ -17639,8 +17062,9 @@ msgid "Text: Change font family" msgstr "Configuración do escritorio" #: ../src/widgets/toolbox.cpp:4763 +#, fuzzy msgid "Text: Change alignment" -msgstr "" +msgstr "Duplicación, aliñación, distribución" #: ../src/widgets/toolbox.cpp:4846 #, fuzzy @@ -17650,7 +17074,7 @@ msgstr "Configuración do escritorio" #: ../src/widgets/toolbox.cpp:4893 #, fuzzy msgid "Text: Change orientation" -msgstr "Orientación da páxina:" +msgstr "Cambiar a definición da cor" #: ../src/widgets/toolbox.cpp:4992 #, fuzzy @@ -17658,12 +17082,8 @@ msgid "Text: Change font size" msgstr "Configuración do escritorio" #: ../src/widgets/toolbox.cpp:5232 -msgid "" -"This font is currently not installed on your system. Inkscape will use the " -"default font instead." -msgstr "" -"Esta fonte non está instalada no sistema. Inkscape vai usar a fonte " -"predeterminada en vez da outra." +msgid "This font is currently not installed on your system. Inkscape will use the default font instead." +msgstr "Esta fonte non está instalada no sistema. Inkscape vai usar a fonte predeterminada en vez da outra." #: ../src/widgets/toolbox.cpp:5271 msgid "Align left" @@ -17692,7 +17112,7 @@ msgstr "Itálica" #: ../src/widgets/toolbox.cpp:5465 #, fuzzy msgid "Change connector spacing" -msgstr "Crear conectadores" +msgstr "Creando novo conectador" #: ../src/widgets/toolbox.cpp:5553 msgid "Avoid" @@ -17705,11 +17125,12 @@ msgstr "" #: ../src/widgets/toolbox.cpp:5575 #, fuzzy msgid "Connector Spacing" -msgstr "Crear conectadores" +msgstr "Establecer espacio:" #: ../src/widgets/toolbox.cpp:5575 +#, fuzzy msgid "Spacing:" -msgstr "" +msgstr "Separación _X:" #: ../src/widgets/toolbox.cpp:5576 msgid "The amount of space left around objects by auto-routing connectors" @@ -17723,7 +17144,7 @@ msgstr "Agrupar" #: ../src/widgets/toolbox.cpp:5597 #, fuzzy msgid "Connector Length" -msgstr "Conectador" +msgstr "Crear conectador" #: ../src/widgets/toolbox.cpp:5597 msgid "Length:" @@ -17748,94 +17169,80 @@ msgstr "" #: ../src/widgets/toolbox.cpp:5728 #, fuzzy msgid "Fill by" -msgstr "Recheo" +msgstr "Desprazan:" #: ../src/widgets/toolbox.cpp:5729 #, fuzzy msgid "Fill by:" -msgstr "Recheo" +msgstr "Desprazan:" #: ../src/widgets/toolbox.cpp:5741 #, fuzzy msgid "Fill Threshold" -msgstr "Limiar:" +msgstr "Recheo non asignado" #: ../src/widgets/toolbox.cpp:5742 -msgid "" -"The maximum allowed difference between the clicked pixel and the neighboring " -"pixels to be counted in the fill" +msgid "The maximum allowed difference between the clicked pixel and the neighboring pixels to be counted in the fill" msgstr "" #: ../src/widgets/toolbox.cpp:5766 +#, fuzzy msgid "Grow/shrink by" -msgstr "" +msgstr "> e < escalan:" #: ../src/widgets/toolbox.cpp:5766 +#, fuzzy msgid "Grow/shrink by:" -msgstr "" +msgstr "> e < escalan:" #: ../src/widgets/toolbox.cpp:5767 -msgid "" -"The amount to grow (positive) or shrink (negative) the created fill path" +msgid "The amount to grow (positive) or shrink (negative) the created fill path" msgstr "" #: ../src/widgets/toolbox.cpp:5792 #, fuzzy msgid "Close gaps" -msgstr "Pecha-lo formulario" +msgstr "Pechar o ficheiro" #: ../src/widgets/toolbox.cpp:5793 #, fuzzy msgid "Close gaps:" -msgstr "Pecha-lo formulario" +msgstr "Pechar o ficheiro" #: ../src/widgets/toolbox.cpp:5805 #, fuzzy -msgid "" -"Reset paint bucket parameters to defaults (use Inkscape Preferences > Tools " -"to change defaults)" -msgstr "" -"Restablecer os parámetros da figura ós predeterminados (use Preferencias de " -"Inkscape > Ferramentas para cambia-los predeterminados)" +msgid "Reset paint bucket parameters to defaults (use Inkscape Preferences > Tools to change defaults)" +msgstr "Restablecer os parámetros da figura ós predeterminados (use Preferencias de Inkscape > Ferramentas para cambia-los predeterminados)" #: ../share/extensions/dimension.py:97 msgid "Unable to process this object. Try changing it into a path first." -msgstr "" +msgstr "Non foi posible procesar este obxecto. Tente convertelo primeiro nun camiño." #: ../share/extensions/embedimage.py:79 -msgid "" -"No xlink:href or sodipodi:absref attributes found, or they do not point to " -"an existing file! Unable to embed image." +msgid "No xlink:href or sodipodi:absref attributes found, or they do not point to an existing file! Unable to embed image." msgstr "" #: ../share/extensions/embedimage.py:104 #, python-format -msgid "" -"%s is not of type image/png, image/jpeg, image/bmp, image/gif, image/tiff, " -"or image/x-icon" -msgstr "" +msgid "%s is not of type image/png, image/jpeg, image/bmp, image/gif, image/tiff, or image/x-icon" +msgstr "%s non é de tipo image/png, image/jpeg, image/bmp, image/gif, image/tiff, ou image/x-icon" #: ../share/extensions/embedimage.py:106 #, python-format msgid "Sorry we could not locate %s" -msgstr "" +msgstr "Non se puido localizar %s" #: ../share/extensions/export_gimp_palette.py:14 -msgid "" -"The export_gpl.py module requires PyXML. Please download the latest version " -"from http://pyxml.sourceforge.net/." +msgid "The export_gpl.py module requires PyXML. Please download the latest version from http://pyxml.sourceforge.net/." msgstr "" #: ../share/extensions/extractimage.py:66 +#, fuzzy msgid "Difficulty finding the image data." -msgstr "" +msgstr "Vectorizar: A imaxe non ten datos de mapa de bits" #: ../share/extensions/inkex.py:61 -msgid "" -"The fantastic lxml wrapper for libxml2 is required by inkex.py and therefore " -"this extension. Please download and install the latest version from http://" -"cheeseshop.python.org/pypi/lxml/, or install it through your package manager " -"by a command like: sudo apt-get install python-lxml" +msgid "The fantastic lxml wrapper for libxml2 is required by inkex.py and therefore this extension. Please download and install the latest version from http://cheeseshop.python.org/pypi/lxml/, or install it through your package manager by a command like: sudo apt-get install python-lxml" msgstr "" #: ../share/extensions/inkex.py:187 @@ -17857,9 +17264,8 @@ msgstr "" #: ../share/extensions/pathscatter.py:208 #: ../share/extensions/perspective.py:55 #: ../share/extensions/summersnight.py:30 -#, fuzzy msgid "This extension requires two selected paths." -msgstr "Crear a unión dos camiños seleccionados" +msgstr "Esta extensión require ter seleccionados dous camiños." #: ../share/extensions/pathmodifier.py:229 #, python-format @@ -17867,23 +17273,15 @@ msgid "Please first convert objects to paths! (Got [%s].)" msgstr "" #: ../share/extensions/perspective.py:29 -msgid "" -"Failed to import the numpy or numpy.linalg modules. These modules are " -"required by this extension. Please install them and try again. On a Debian-" -"like system this can be done with the command, sudo apt-get install python-" -"numpy." +msgid "Failed to import the numpy or numpy.linalg modules. These modules are required by this extension. Please install them and try again. On a Debian-like system this can be done with the command, sudo apt-get install python-numpy." msgstr "" #: ../share/extensions/perspective.py:64 -msgid "" -"This extension requires that the second selected path be four nodes long." +msgid "This extension requires that the second selected path be four nodes long." msgstr "" #: ../share/extensions/polyhedron_3d.py:60 -msgid "" -"Failed to import the numpy module. This module is required by this " -"extension. Please install them and try again. On a Debian-like system this " -"can be done with the command, sudo apt-get install python-numpy." +msgid "Failed to import the numpy module. This module is required by this extension. Please install them and try again. On a Debian-like system this can be done with the command, sudo apt-get install python-numpy." msgstr "" #: ../share/extensions/summersnight.py:32 @@ -17891,9 +17289,9 @@ msgid "The second path must be exactly four nodes long." msgstr "" #: ../share/extensions/svg_and_media_zip_output.py:103 -#, fuzzy, python-format +#, python-format msgid "Could not locate file: %s" -msgstr "Non se puido exportar ó nome de ficheiro %s.\n" +msgstr "Non se puido atopar o ficheiro: %s" #. vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 encoding=utf-8 textwidth=99 #: ../share/extensions/addnodes.inx.h:1 @@ -17905,9 +17303,8 @@ msgid "By max. segment length" msgstr "" #: ../share/extensions/addnodes.inx.h:3 -#, fuzzy msgid "By number of segments" -msgstr "Número de Niveis" +msgstr "Por número de segmentos" #: ../share/extensions/addnodes.inx.h:4 #, fuzzy @@ -17918,46 +17315,45 @@ msgstr "Di_visión" msgid "Maximum segment length (px)" msgstr "" -#: ../share/extensions/addnodes.inx.h:6 ../share/extensions/edge3d.inx.h:6 -#: ../share/extensions/flatten.inx.h:3 ../share/extensions/fractalize.inx.h:2 +#: ../share/extensions/addnodes.inx.h:6 +#: ../share/extensions/edge3d.inx.h:6 +#: ../share/extensions/flatten.inx.h:3 +#: ../share/extensions/fractalize.inx.h:2 #: ../share/extensions/markers_strokepaint.inx.h:2 #: ../share/extensions/perspective.inx.h:1 #: ../share/extensions/radiusrand.inx.h:4 #: ../share/extensions/rubberstretch.inx.h:3 #: ../share/extensions/straightseg.inx.h:2 -#: ../share/extensions/summersnight.inx.h:2 ../share/extensions/whirl.inx.h:2 +#: ../share/extensions/summersnight.inx.h:2 +#: ../share/extensions/whirl.inx.h:2 msgid "Modify Path" msgstr "Modificar Camiño" #: ../share/extensions/addnodes.inx.h:7 -#, fuzzy msgid "Number of segments" -msgstr "Número de Niveis" +msgstr "Número de segmentos" #: ../share/extensions/ai_input.inx.h:1 -#, fuzzy msgid "AI 8.0 Input" -msgstr "Entrada de AI" +msgstr "Entrada de AI 8.0" #: ../share/extensions/ai_input.inx.h:2 #, fuzzy msgid "Adobe Illustrator 8.0 and below (*.ai)" -msgstr "Adobe Illustrator (*.ai)" +msgstr "Adobe Illustrator 8.0 e inferior (*.ai)" #: ../share/extensions/ai_input.inx.h:3 #, fuzzy msgid "Open files saved with Adobe Illustrator 8.0 or older" -msgstr "Abrir ficheiros gardados con Adobe Illustrator" +msgstr "Abrir ficheiros gardados con Adobe Illustrator 8.0 ou anterior" #: ../share/extensions/ai_output.inx.h:1 -#, fuzzy msgid "AI 8.0 Output" -msgstr "Saída de AI" +msgstr "Saída de AI 8.0" #: ../share/extensions/ai_output.inx.h:2 -#, fuzzy msgid "Adobe Illustrator 8.0 (*.ai)" -msgstr "Adobe Illustrator (*.ai)" +msgstr "Adobe Illustrator 8.0 (*.ai)" #: ../share/extensions/ai_output.inx.h:3 #, fuzzy @@ -17990,11 +17386,11 @@ msgstr "" #: ../share/extensions/cdr_input.inx.h:1 msgid "Corel DRAW 7-X4 files (*.cdr)" -msgstr "" +msgstr "Ficheiros de Corel DRAW 7-X4 (*.cdr)" #: ../share/extensions/cdr_input.inx.h:2 msgid "Corel DRAW Input" -msgstr "" +msgstr "Entrada de Corel DRAW" #: ../share/extensions/cdr_input.inx.h:3 #, fuzzy @@ -18019,8 +17415,9 @@ msgid "Computer Graphics Metafile files (.cgm)" msgstr "" #: ../share/extensions/cgm_input.inx.h:2 +#, fuzzy msgid "Computer Graphics Metafile files input" -msgstr "" +msgstr "Entrada de ficheiros de imaxes vectoriais de sK1" #: ../share/extensions/cgm_input.inx.h:3 msgid "Open Computer Graphics Metafile files" @@ -18044,24 +17441,20 @@ msgid "Brighter" msgstr "Brillo" #: ../share/extensions/color_custom.inx.h:1 -#, fuzzy msgid "Blue Function" -msgstr "Función" +msgstr "Función do azul" #: ../share/extensions/color_custom.inx.h:4 -#, fuzzy msgid "Green Function" -msgstr "Función" +msgstr "Función do verde" #: ../share/extensions/color_custom.inx.h:5 -#, fuzzy msgid "Red Function" -msgstr "Función" +msgstr "Función do vermello" #: ../share/extensions/color_darker.inx.h:2 -#, fuzzy msgid "Darker" -msgstr "Contagotas" +msgstr "Escurecer" #: ../share/extensions/color_desaturate.inx.h:2 #, fuzzy @@ -18070,38 +17463,41 @@ msgstr "Distribuír" #: ../share/extensions/color_grayscale.inx.h:2 msgid "Grayscale" -msgstr "" +msgstr "Escala de grises" #: ../share/extensions/color_lesshue.inx.h:2 +#, fuzzy msgid "Less Hue" -msgstr "" +msgstr "Menos Luz" #: ../share/extensions/color_lesslight.inx.h:2 +#, fuzzy msgid "Less Light" -msgstr "" +msgstr "Menos Luz" #: ../share/extensions/color_lesssaturation.inx.h:2 #, fuzzy msgid "Less Saturation" -msgstr "Saturación" +msgstr "Menos Saturación" #: ../share/extensions/color_morehue.inx.h:2 #, fuzzy msgid "More Hue" -msgstr "Amosar _guías" +msgstr "Máis Lux" #: ../share/extensions/color_morelight.inx.h:2 +#, fuzzy msgid "More Light" -msgstr "" +msgstr "Máis Lux" #: ../share/extensions/color_moresaturation.inx.h:2 -#, fuzzy msgid "More Saturation" -msgstr "Saturación" +msgstr "Máis saturación" #: ../share/extensions/color_negative.inx.h:2 +#, fuzzy msgid "Negative" -msgstr "" +msgstr "Negativo" #: ../share/extensions/color_randomize.inx.h:4 #, fuzzy @@ -18109,28 +17505,24 @@ msgid "Randomize" msgstr "Árbore Aleatoria" #: ../share/extensions/color_removeblue.inx.h:2 -#, fuzzy msgid "Remove Blue" -msgstr "Eli_minar" +msgstr "Eliminar o azul" #: ../share/extensions/color_removegreen.inx.h:2 -#, fuzzy msgid "Remove Green" -msgstr "Eli_minar" +msgstr "Eliminar o verde" #: ../share/extensions/color_removered.inx.h:2 -#, fuzzy msgid "Remove Red" -msgstr "Eli_minar" +msgstr "Eliminar o vermello" #: ../share/extensions/color_replace.inx.h:1 msgid "By color (RRGGBB hex):" msgstr "" #: ../share/extensions/color_replace.inx.h:3 -#, fuzzy msgid "Replace color" -msgstr "Última cor seleccionada" +msgstr "Substituir unha cor" #: ../share/extensions/color_replace.inx.h:4 msgid "Replace color (RRGGBB hex):" @@ -18153,37 +17545,27 @@ msgid "Dia Input" msgstr "Entrada de Dia" #: ../share/extensions/dia.inx.h:4 -#, fuzzy -msgid "" -"In order to import Dia files, Dia itself must be installed. You can get Dia " -"at http://live.gnome.org/Dia" -msgstr "" -"Para poder importar ficheiros de Dia, Dia debe estar instalado. Pode obter " -"Dia en http://www.gnome.org/projects/dia/" +msgid "In order to import Dia files, Dia itself must be installed. You can get Dia at http://live.gnome.org/Dia" +msgstr "Para poder importar ficheiros de Dia, Dia debe estar instalado. Pode obter Dia en http://live.gnome.org/Dia" #: ../share/extensions/dia.inx.h:5 -msgid "" -"The dia2svg.sh script should be installed with your Inkscape distribution. " -"If you do not have it, there is likely to be something wrong with your " -"Inkscape installation." -msgstr "" -"O script dia2svg.sh debería terse instalado xunta con Inkscape. Se non o " -"ten, o máis probable é que haxa algo mal na instalación de Inkscape." +msgid "The dia2svg.sh script should be installed with your Inkscape distribution. If you do not have it, there is likely to be something wrong with your Inkscape installation." +msgstr "O script dia2svg.sh debería terse instalado xunta con Inkscape. Se non o ten, o máis probable é que haxa algo mal na instalación de Inkscape." -#: ../share/extensions/dimension.inx.h:2 ../share/extensions/dots.inx.h:4 -#: ../share/extensions/handles.inx.h:2 ../share/extensions/measure.inx.h:11 +#: ../share/extensions/dimension.inx.h:2 +#: ../share/extensions/dots.inx.h:4 +#: ../share/extensions/handles.inx.h:2 +#: ../share/extensions/measure.inx.h:11 msgid "Visualize Path" msgstr "Visualizar Camiño" #: ../share/extensions/dimension.inx.h:3 -#, fuzzy msgid "X Offset" -msgstr "Desprazamento:" +msgstr "Desprazamento X" #: ../share/extensions/dimension.inx.h:4 -#, fuzzy msgid "Y Offset" -msgstr "Desprazamento:" +msgstr "Desprazamento Y" #: ../share/extensions/dots.inx.h:1 msgid "Dot size" @@ -18211,20 +17593,18 @@ msgid "Import AutoCAD's Document Exchange Format" msgstr "Importar Document Exchange Format de AutoCAD" #: ../share/extensions/dxf_input.inx.h:4 -msgid "" -"dxf2svg may come with Inkscape, but is also at http://dxf-svg-convert." -"sourceforge.net/" -msgstr "" -"dxf2svg pode vir con Inkscape, pero tamén está en http://dxf-svg-convert." -"sourceforge.net/" +msgid "dxf2svg may come with Inkscape, but is also at http://dxf-svg-convert.sourceforge.net/" +msgstr "dxf2svg pode vir con Inkscape, pero tamén está en http://dxf-svg-convert.sourceforge.net/" #: ../share/extensions/dxf_outlines.inx.h:1 +#, fuzzy msgid "Desktop Cutting Plotter" -msgstr "" +msgstr "Desktop Cutting Plotter" #: ../share/extensions/dxf_outlines.inx.h:2 +#, fuzzy msgid "Desktop Cutting Plotter (*.DXF)" -msgstr "" +msgstr "Desktop Cutting Plotter (*.DXF)" #: ../share/extensions/dxf_output.inx.h:2 msgid "DXF Output" @@ -18235,13 +17615,14 @@ msgid "DXF file written by pstoedit" msgstr "Ficheiro DXF escrito por pstoedit" #: ../share/extensions/dxf_output.inx.h:4 +#, fuzzy msgid "pstoedit must be installed to run; see http://www.pstoedit.net/pstoedit" -msgstr "" +msgstr "pstoedit debe estar instalado para executalo; consulte http://www.pstoedit.net/pstoedit" #: ../share/extensions/edge3d.inx.h:1 #, fuzzy msgid "Blur height" -msgstr "Alto:" +msgstr "Ancho, alto:" #: ../share/extensions/edge3d.inx.h:2 #, fuzzy @@ -18251,20 +17632,22 @@ msgstr "Destino da impresión" #: ../share/extensions/edge3d.inx.h:3 #, fuzzy msgid "Blur width" -msgstr "Igual ancho" +msgstr "Ancho, alto:" #: ../share/extensions/edge3d.inx.h:4 #, fuzzy msgid "Edge 3D" -msgstr "Desenfocar o Bordo" +msgstr "Detección de bordos" #: ../share/extensions/edge3d.inx.h:5 +#, fuzzy msgid "Illumination Angle" -msgstr "" +msgstr "Ángulo de Iluminación" #: ../share/extensions/edge3d.inx.h:7 +#, fuzzy msgid "Only black and white" -msgstr "" +msgstr "Só branco e negro" #: ../share/extensions/edge3d.inx.h:8 #, fuzzy @@ -18272,12 +17655,14 @@ msgid "Shades" msgstr "Figuras" #: ../share/extensions/embedimage.inx.h:1 +#, fuzzy msgid "Embed All Images" -msgstr "" +msgstr "Buscar tódalas figuras" #: ../share/extensions/embedimage.inx.h:2 +#, fuzzy msgid "Embed only selected images" -msgstr "" +msgstr "Só se pode seleccionar un elemento" #: ../share/extensions/eps_input.inx.h:1 msgid "EPS Input" @@ -18296,33 +17681,36 @@ msgid "Encapsulated Postscript Interchange (*.epsi)" msgstr "Encapsulated Postscript Interchange (*.epsi)" #: ../share/extensions/epsi_output.inx.h:3 +#, fuzzy msgid "Encapsulated Postscript with a thumbnail" -msgstr "" +msgstr "Encapsulated Postscript Interchange (*.epsi)" #: ../share/extensions/eqtexsvg.inx.h:1 msgid "LaTeX formula" -msgstr "" +msgstr "Formula LaTeX" #: ../share/extensions/eqtexsvg.inx.h:2 msgid "LaTeX formula: " -msgstr "" +msgstr "Formula LaTeX:" #: ../share/extensions/export_gimp_palette.inx.h:1 +#, fuzzy msgid "Export as GIMP Palette" -msgstr "" +msgstr "Exportar coma Paleta de GIMP" #: ../share/extensions/export_gimp_palette.inx.h:2 +#, fuzzy msgid "Exports the colors of this document as GIMP Palette" -msgstr "" +msgstr "Exporta as cores deste documento coma unha Paleta de GIMP" #: ../share/extensions/export_gimp_palette.inx.h:3 -#, fuzzy msgid "GIMP Palette (*.gpl)" -msgstr "Degradado de GIMP (*.ggr)" +msgstr "Paleta de GIMP (*.gpl)" #: ../share/extensions/extractimage.inx.h:1 +#, fuzzy msgid "Extract One Image" -msgstr "" +msgstr "image/svg+xml" #: ../share/extensions/extractimage.inx.h:3 msgid "Note: The file extension is appended automatically." @@ -18337,9 +17725,8 @@ msgid "Open files saved with XFIG" msgstr "Abrir ficheiros gardados con XFIG" #: ../share/extensions/fig_input.inx.h:2 -#, fuzzy msgid "XFIG Graphics File (*.fig)" -msgstr "Ficheiro de Gráficos de XFIG (*.fig)" +msgstr "Ficheiro de imaxe de XFIG (*.fig)" #: ../share/extensions/fig_input.inx.h:3 msgid "XFIG Input" @@ -18374,20 +17761,19 @@ msgid "Calculate first derivative numerically" msgstr "Calcular a primeira derivada numéricamente" #: ../share/extensions/funcplot.inx.h:2 -#, fuzzy msgid "Draw Axes" -msgstr "Debuxar texto" +msgstr "Debuxar eixes" #: ../share/extensions/funcplot.inx.h:3 +#, fuzzy msgid "End X value" -msgstr "" +msgstr "Valor do atributo" #: ../share/extensions/funcplot.inx.h:4 msgid "First derivative" msgstr "Primeira derivada" #: ../share/extensions/funcplot.inx.h:5 -#, fuzzy msgid "Function" msgstr "Función" @@ -18396,9 +17782,8 @@ msgid "Function Plotter" msgstr "Representar Funcións" #: ../share/extensions/funcplot.inx.h:7 -#, fuzzy msgid "Functions" -msgstr "Función" +msgstr "Funcións" #: ../share/extensions/funcplot.inx.h:8 msgid "Isotropic scaling (uses smallest of width/xrange or height/yrange)" @@ -18409,8 +17794,9 @@ msgid "Multiply X range by 2*pi" msgstr "" #: ../share/extensions/funcplot.inx.h:10 +#, fuzzy msgid "Range and sampling" -msgstr "" +msgstr "R_echeo e Trazo" #: ../share/extensions/funcplot.inx.h:11 #, fuzzy @@ -18423,51 +17809,41 @@ msgid "Samples" msgstr "Figuras" #: ../share/extensions/funcplot.inx.h:14 -msgid "" -"Select a rectangle before calling the extension, it will determine X and Y " -"scales. With polar coordinates: Start and end X values define the angle " -"range in radians. X scale is set so that left and right edges of rectangle " -"are at +/-1. Isotropic scaling is disabled. First derivative is always " -"determined numerically." +msgid "Select a rectangle before calling the extension, it will determine X and Y scales. With polar coordinates: Start and end X values define the angle range in radians. X scale is set so that left and right edges of rectangle are at +/-1. Isotropic scaling is disabled. First derivative is always determined numerically." msgstr "" #: ../share/extensions/funcplot.inx.h:15 -msgid "" -"Standard Python math functions are available: ceil(x); fabs(x); floor(x); " -"fmod(x,y); frexp(x); ldexp(x,i); modf(x); exp(x); log(x [, base]); log10(x); " -"pow(x,y); sqrt(x); acos(x); asin(x); atan(x); atan2(y,x); hypot(x,y); cos" -"(x); sin(x); tan(x); degrees(x); radians(x); cosh(x); sinh(x); tanh(x). The " -"constants pi and e are also available." +msgid "Standard Python math functions are available: ceil(x); fabs(x); floor(x); fmod(x,y); frexp(x); ldexp(x,i); modf(x); exp(x); log(x [, base]); log10(x); pow(x,y); sqrt(x); acos(x); asin(x); atan(x); atan2(y,x); hypot(x,y); cos(x); sin(x); tan(x); degrees(x); radians(x); cosh(x); sinh(x); tanh(x). The constants pi and e are also available." msgstr "" #: ../share/extensions/funcplot.inx.h:16 -#, fuzzy msgid "Start X value" -msgstr "Valor do atributo" +msgstr "Valor X inicial" #: ../share/extensions/funcplot.inx.h:17 #, fuzzy msgid "Use" -msgstr "Non asignado" +msgstr "En Uso" #: ../share/extensions/funcplot.inx.h:18 #, fuzzy msgid "Use polar coordinates" -msgstr "Coordenadas do cursor" +msgstr "Permitir coordenadas relativas" #: ../share/extensions/funcplot.inx.h:19 #, fuzzy msgid "Y value of rectangle's bottom" -msgstr "Alto do rectángulo" +msgstr "Baixar ó fondo" #: ../share/extensions/funcplot.inx.h:20 #, fuzzy msgid "Y value of rectangle's top" -msgstr "Alto do rectángulo" +msgstr "Elevar á cima" #: ../share/extensions/gears.inx.h:1 +#, fuzzy msgid "Circular pitch, px" -msgstr "" +msgstr "Tamaño da fonte [px]" #: ../share/extensions/gears.inx.h:2 #, fuzzy @@ -18475,14 +17851,13 @@ msgid "Gear" msgstr "_Limpar" #: ../share/extensions/gears.inx.h:3 -#, fuzzy msgid "Number of teeth" -msgstr "Número de Niveis" +msgstr "Número de dentes" #: ../share/extensions/gears.inx.h:4 #, fuzzy msgid "Pressure angle" -msgstr "Conservar" +msgstr "Ángulo (graos):" #: ../share/extensions/gimp_xcf.inx.h:1 msgid "GIMP XCF" @@ -18493,22 +17868,24 @@ msgid "GIMP XCF maintaining layers (*.XCF)" msgstr "XCF de GIMP conservando as capas (*.XCF)" #: ../share/extensions/gimp_xcf.inx.h:3 +#, fuzzy msgid "Save Grid:" -msgstr "" +msgstr "Reixa rectangular" #: ../share/extensions/gimp_xcf.inx.h:4 #, fuzzy msgid "Save Guides:" -msgstr "G_uías" +msgstr "Amosar _guías" #: ../share/extensions/grid_cartesian.inx.h:1 +#, fuzzy msgid "Border Thickness / px" -msgstr "" +msgstr "Tamaño da fonte [px]" #: ../share/extensions/grid_cartesian.inx.h:2 #, fuzzy msgid "Cartesian Grid" -msgstr "Crear elipse" +msgstr "Reixa rectangular" #: ../share/extensions/grid_cartesian.inx.h:3 msgid "Halve X Subsubdiv. Frequency after 'n' Subdivs. (log only)" @@ -18533,16 +17910,17 @@ msgstr "" #: ../share/extensions/grid_cartesian.inx.h:8 #, fuzzy msgid "Major X Divisions" -msgstr "Di_visión" +msgstr "Cor das liñas principais da reixa" #: ../share/extensions/grid_cartesian.inx.h:9 +#, fuzzy msgid "Major X Divsion Spacing / px" -msgstr "" +msgstr "Espacio vertical entre as filas (unidades en píxels)" #: ../share/extensions/grid_cartesian.inx.h:10 #, fuzzy msgid "Major Y Division Spacing" -msgstr "Espacio Horizontal" +msgstr "Cor das liñas principais da reixa" #: ../share/extensions/grid_cartesian.inx.h:11 msgid "Major Y Division Thickness / px" @@ -18551,7 +17929,7 @@ msgstr "" #: ../share/extensions/grid_cartesian.inx.h:12 #, fuzzy msgid "Major Y Divisions" -msgstr "Di_visión" +msgstr "Cor das liñas principais da reixa" #: ../share/extensions/grid_cartesian.inx.h:13 msgid "Minor X Division Thickness / px" @@ -18578,17 +17956,19 @@ msgid "Subminor Y Division Thickness / px" msgstr "" #: ../share/extensions/grid_cartesian.inx.h:20 +#, fuzzy msgid "Subsubdivs. per X Subdiv." -msgstr "" +msgstr "Por fila:" #: ../share/extensions/grid_cartesian.inx.h:21 +#, fuzzy msgid "Subsubdivs. per Y Subdivision" -msgstr "" +msgstr "Por fila:" #: ../share/extensions/grid_polar.inx.h:1 #, fuzzy msgid "Angle Divisions" -msgstr "Di_visión" +msgstr "Ángulo (graos):" #: ../share/extensions/grid_polar.inx.h:2 msgid "Angle Divisions at Centre" @@ -18623,8 +18003,9 @@ msgid "Major Circular Division Thickness / px" msgstr "" #: ../share/extensions/grid_polar.inx.h:11 +#, fuzzy msgid "Major Circular Divisions" -msgstr "" +msgstr "Cor das liñas principais da reixa" #: ../share/extensions/grid_polar.inx.h:12 msgid "Major Circular Divsion Spacing / px" @@ -18643,8 +18024,9 @@ msgid "Minor Circular Division Thickness / px" msgstr "" #: ../share/extensions/grid_polar.inx.h:17 +#, fuzzy msgid "Polar Grid" -msgstr "" +msgstr "Reixa rectangular" #: ../share/extensions/grid_polar.inx.h:19 msgid "Subdivisions per Major Angular Division" @@ -18655,8 +18037,9 @@ msgid "Subdivisions per Major Circular Division" msgstr "" #: ../share/extensions/handles.inx.h:1 +#, fuzzy msgid "Draw Handles" -msgstr "" +msgstr "Debuxar camiño" #: ../share/extensions/hpgl_output.inx.h:1 msgid "Export to an HP Graphics Language file" @@ -18668,47 +18051,45 @@ msgid "HP Graphics Language file (*.hpgl)" msgstr "Ficheiro de Gráficos de XFIG (*.fig)" #: ../share/extensions/hpgl_output.inx.h:3 -#, fuzzy msgid "HPGL Output" -msgstr "Saída de SVG" +msgstr "Saída HPGL" #: ../share/extensions/inkscape_help_askaquestion.inx.h:1 msgid "Ask Us a Question" -msgstr "" +msgstr "Fáganos unha pregunta" #: ../share/extensions/inkscape_help_commandline.inx.h:1 msgid "Command Line Options" -msgstr "" +msgstr "Opcións de liña de comandos" #: ../share/extensions/inkscape_help_faq.inx.h:1 msgid "FAQ" -msgstr "" +msgstr "FAQ" #: ../share/extensions/inkscape_help_keys.inx.h:1 -#, fuzzy msgid "Keys and Mouse Reference" -msgstr "Lista de atallos de teclado e de rato" +msgstr "Referencia das teclas e do rato" #: ../share/extensions/inkscape_help_manual.inx.h:1 -#, fuzzy msgid "Inkscape Manual" -msgstr "Inkscape: Vecto_rización" +msgstr "Manual de Inkscape" #: ../share/extensions/inkscape_help_relnotes.inx.h:1 msgid "New in This Version" -msgstr "" +msgstr "Que hai novo nesta versión" #: ../share/extensions/inkscape_help_reportabug.inx.h:1 msgid "Report a Bug" -msgstr "" +msgstr "Comunicar un erro" #: ../share/extensions/inkscape_help_svgspec.inx.h:1 msgid "SVG 1.1 Specification" -msgstr "" +msgstr "Especificación de SVG 1.1" #: ../share/extensions/interp.inx.h:1 +#, fuzzy msgid "Duplicate endpaths" -msgstr "" +msgstr "Duplicar o nodo" #: ../share/extensions/interp.inx.h:4 msgid "Interpolate" @@ -18717,7 +18098,7 @@ msgstr "Interpolar" #: ../share/extensions/interp.inx.h:5 #, fuzzy msgid "Interpolate style" -msgstr "Interpolar" +msgstr "Pegar estilo" #: ../share/extensions/interp.inx.h:6 msgid "Interpolation method" @@ -18732,8 +18113,9 @@ msgid "Axiom" msgstr "" #: ../share/extensions/lindenmayer.inx.h:2 +#, fuzzy msgid "Axiom and rules" -msgstr "" +msgstr "R_echeo e Trazo" #: ../share/extensions/lindenmayer.inx.h:4 msgid "L-system" @@ -18744,9 +18126,9 @@ msgid "Left angle" msgstr "Ángulo esquerdo" #: ../share/extensions/lindenmayer.inx.h:8 -#, no-c-format +#, fuzzy, no-c-format msgid "Randomize angle (%)" -msgstr "" +msgstr "Ángulo (graos):" #: ../share/extensions/lindenmayer.inx.h:10 #, no-c-format @@ -18762,40 +18144,34 @@ msgid "Rules" msgstr "" #: ../share/extensions/lindenmayer.inx.h:14 +#, fuzzy msgid "Step length (px)" -msgstr "" +msgstr "Tamaño da fonte [px]" #: ../share/extensions/lindenmayer.inx.h:15 -msgid "" -"The path is generated by applying the substitutions of Rules to the Axiom, " -"Order times. The following commands are recognized in Axiom and Rules: Any " -"of A,B,C,D,E,F: draw forward Any of G,H,I,J,K,L: move forward +: turn left " -"-: turn right |: turn 180 degrees [: remember poing ]: return to remembered " -"point" +msgid "The path is generated by applying the substitutions of Rules to the Axiom, Order times. The following commands are recognized in Axiom and Rules: Any of A,B,C,D,E,F: draw forward Any of G,H,I,J,K,L: move forward +: turn left -: turn right |: turn 180 degrees [: remember poing ]: return to remembered point" msgstr "" #: ../share/extensions/lorem_ipsum.inx.h:1 msgid "Lorem ipsum" -msgstr "" +msgstr "Lorem ipsum" #: ../share/extensions/lorem_ipsum.inx.h:2 #, fuzzy msgid "Number of paragraphs" -msgstr "Número de filas" +msgstr "Número de parágrafos" #: ../share/extensions/lorem_ipsum.inx.h:3 msgid "Paragraph length fluctuation (sentences)" msgstr "" #: ../share/extensions/lorem_ipsum.inx.h:4 +#, fuzzy msgid "Sentences per paragraph" -msgstr "" +msgstr "Por fila:" #: ../share/extensions/lorem_ipsum.inx.h:6 -msgid "" -"This effect creates the standard \"Lorem Ipsum\" pseudolatin placeholder " -"text. If a flowed text is selected, Lorem Ipsum is added to it; otherwise a " -"new flowed text object, the size of the page, is created in a new layer." +msgid "This effect creates the standard \"Lorem Ipsum\" pseudolatin placeholder text. If a flowed text is selected, Lorem Ipsum is added to it; otherwise a new flowed text object, the size of the page, is created in a new layer." msgstr "" #: ../share/extensions/markers_strokepaint.inx.h:1 @@ -18805,17 +18181,18 @@ msgstr "" #: ../share/extensions/measure.inx.h:1 #, fuzzy msgid "Font size [px]" -msgstr "Tamaño da fonte" +msgstr "Tamaño da fonte [px]" #. mm #: ../share/extensions/measure.inx.h:4 +#, fuzzy msgid "Length Unit: " -msgstr "" +msgstr "Ancho en unidades de lonxitude" #: ../share/extensions/measure.inx.h:5 #, fuzzy msgid "Measure" -msgstr "Medir Camiño" +msgstr "Medida" #: ../share/extensions/measure.inx.h:6 msgid "Measure Path" @@ -18824,25 +18201,18 @@ msgstr "Medir Camiño" #: ../share/extensions/measure.inx.h:7 #, fuzzy msgid "Offset [px]" -msgstr "Desprazamento:" +msgstr "Desprazamento do patrón" #: ../share/extensions/measure.inx.h:8 -#, fuzzy msgid "Precision" -msgstr "Descrición" +msgstr "Precisión" #: ../share/extensions/measure.inx.h:9 msgid "Scale Factor (Drawing:Real Length) = 1:" msgstr "" #: ../share/extensions/measure.inx.h:10 -msgid "" -"This effect measures the length of the selected path and adds it as a text-" -"on-path object with the selected unit. The number of significant digits can " -"be controlled by the Precision field. The Offset field controls the distance " -"from the text to the path. The Scale factor can be used to make measurements " -"in scaled drawings. For example, if 1 cm in the drawing equals 2.5 m in the " -"real world, Scale must be set to 250." +msgid "This effect measures the length of the selected path and adds it as a text-on-path object with the selected unit. The number of significant digits can be controlled by the Precision field. The Offset field controls the distance from the text to the path. The Scale factor can be used to make measurements in scaled drawings. For example, if 1 cm in the drawing equals 2.5 m in the real world, Scale must be set to 250." msgstr "" #: ../share/extensions/motion.inx.h:2 @@ -18865,17 +18235,17 @@ msgstr "Ficheiro de Texto (*.txt)" #: ../share/extensions/outline2svg.inx.h:3 #, fuzzy msgid "Text Outline Input" -msgstr "Entrada de Texto" +msgstr "Entrada de SVG de AI" #: ../share/extensions/pathalongpath.inx.h:1 #, fuzzy msgid "Copies of the pattern:" -msgstr "Cor do bordo da páxina" +msgstr "Copias do patrón:" #: ../share/extensions/pathalongpath.inx.h:2 #, fuzzy msgid "Deformation type:" -msgstr "Información" +msgstr "Tipo de deformación:" #: ../share/extensions/pathalongpath.inx.h:3 #: ../share/extensions/pathscatter.inx.h:3 @@ -18885,7 +18255,7 @@ msgstr "" #: ../share/extensions/pathalongpath.inx.h:6 #, fuzzy msgid "Pattern along Path" -msgstr "_Poñer no camiño" +msgstr "O camiño está pechado." #: ../share/extensions/pathalongpath.inx.h:10 msgid "Ribbon" @@ -18898,14 +18268,12 @@ msgstr "Axustar" #: ../share/extensions/pathalongpath.inx.h:14 #: ../share/extensions/pathscatter.inx.h:11 +#, fuzzy msgid "Space between copies:" -msgstr "" +msgstr "Espacion entre as copias do patrón" #: ../share/extensions/pathalongpath.inx.h:16 -msgid "" -"This effect bends a pattern object along arbitrary \"skeleton\" paths. The " -"pattern is the top most object in the selection. (groups of paths/shapes/" -"clones... allowed)" +msgid "This effect bends a pattern object along arbitrary \"skeleton\" paths. The pattern is the top most object in the selection. (groups of paths/shapes/clones... allowed)" msgstr "" #: ../share/extensions/pathscatter.inx.h:1 @@ -18916,12 +18284,12 @@ msgstr "Clons" #: ../share/extensions/pathscatter.inx.h:2 #, fuzzy msgid "Copied" -msgstr "Combinados" +msgstr "Non se copiou nada." #: ../share/extensions/pathscatter.inx.h:4 #, fuzzy msgid "Follow path orientation." -msgstr "Orientación da páxina:" +msgstr "O camiño está pechado." #: ../share/extensions/pathscatter.inx.h:6 #, fuzzy @@ -18931,7 +18299,7 @@ msgstr "Mover" #: ../share/extensions/pathscatter.inx.h:8 #, fuzzy msgid "Original pattern will be:" -msgstr "Desprazamento do patrón" +msgstr "O patrón é vertical" #: ../share/extensions/pathscatter.inx.h:10 #, fuzzy @@ -18943,34 +18311,33 @@ msgid "Stretch spaces to fit skeleton length" msgstr "" #: ../share/extensions/pathscatter.inx.h:14 -msgid "" -"This effect scatters a pattern along arbitrary \"skeleton\" paths. The " -"pattern is the top most object in the selection. (groups of paths/shapes/" -"clones... allowed)" +msgid "This effect scatters a pattern along arbitrary \"skeleton\" paths. The pattern is the top most object in the selection. (groups of paths/shapes/clones... allowed)" msgstr "" # leo #: ../share/extensions/perfectboundcover.inx.h:1 #, fuzzy msgid "Bleed (in)" -msgstr "Xuntar biselado" +msgstr " no grupo %s (%s)" #: ../share/extensions/perfectboundcover.inx.h:2 msgid "Bond Weight #" msgstr "" #: ../share/extensions/perfectboundcover.inx.h:3 +#, fuzzy msgid "Book Height (inches)" -msgstr "" +msgstr "Pegar Alto por Separado" #: ../share/extensions/perfectboundcover.inx.h:4 #, fuzzy msgid "Book Properties" -msgstr "Propiedades do elemento" +msgstr "Propiedades do Libro" #: ../share/extensions/perfectboundcover.inx.h:5 +#, fuzzy msgid "Book Width (inches)" -msgstr "" +msgstr "Escalar o ancho do trazado" #: ../share/extensions/perfectboundcover.inx.h:6 msgid "Caliper (inches)" @@ -18979,7 +18346,7 @@ msgstr "" #: ../share/extensions/perfectboundcover.inx.h:7 #, fuzzy msgid "Cover" -msgstr "Metro" +msgstr "Cuberta" #: ../share/extensions/perfectboundcover.inx.h:8 msgid "Cover Thickness Measurement" @@ -18992,20 +18359,20 @@ msgstr "" #: ../share/extensions/perfectboundcover.inx.h:10 #, fuzzy msgid "Interior Pages" -msgstr "Interpolar" +msgstr "Número de Páxinas" #: ../share/extensions/perfectboundcover.inx.h:11 msgid "Note: Bond Weight # calculations are a best-guess estimate." msgstr "" #: ../share/extensions/perfectboundcover.inx.h:12 -#, fuzzy msgid "Number of Pages" -msgstr "Número de Niveis" +msgstr "Número de páxinas" #: ../share/extensions/perfectboundcover.inx.h:13 +#, fuzzy msgid "Pages Per Inch (PPI)" -msgstr "" +msgstr "Resolución (puntos por polgada)" #: ../share/extensions/perfectboundcover.inx.h:14 msgid "Paper Thickness Measurement" @@ -19018,17 +18385,15 @@ msgstr "" #: ../share/extensions/perfectboundcover.inx.h:17 #, fuzzy msgid "Remove existing guides" -msgstr "Crear rectángulo" +msgstr "Eliminar as guías existentes" #: ../share/extensions/perfectboundcover.inx.h:18 -#, fuzzy msgid "Specify Width" -msgstr "A_ncho da Páxina" +msgstr "Especificar o ancho" #: ../share/extensions/perspective.inx.h:2 -#, fuzzy msgid "Perspective" -msgstr "Presencia" +msgstr "Perspectiva" #: ../share/extensions/polyhedron_3d.inx.h:1 #, fuzzy @@ -19038,11 +18403,11 @@ msgstr "Polígono" #: ../share/extensions/polyhedron_3d.inx.h:2 #, fuzzy msgid "Clockwise Wound Object" -msgstr "Ignorar os obxectos bloqueados" +msgstr "Establecer o ID do obxecto" #: ../share/extensions/polyhedron_3d.inx.h:3 msgid "Cube" -msgstr "" +msgstr "Cubo" #: ../share/extensions/polyhedron_3d.inx.h:4 msgid "Cuboctohedron" @@ -19050,15 +18415,16 @@ msgstr "" #: ../share/extensions/polyhedron_3d.inx.h:5 msgid "Dodecahedron" -msgstr "" +msgstr "Dodecaedro" #: ../share/extensions/polyhedron_3d.inx.h:6 msgid "Draw Back-Facing Polygons" msgstr "" #: ../share/extensions/polyhedron_3d.inx.h:7 +#, fuzzy msgid "Edge-Specified" -msgstr "" +msgstr "Detección de bordos" #: ../share/extensions/polyhedron_3d.inx.h:8 #, fuzzy @@ -19070,31 +18436,32 @@ msgid "Face-Specified" msgstr "" #: ../share/extensions/polyhedron_3d.inx.h:10 -#, fuzzy msgid "Faces" -msgstr "Fonte" +msgstr "Caras" #: ../share/extensions/polyhedron_3d.inx.h:11 -#, fuzzy msgid "Filename:" -msgstr "Nome de _usuario:" +msgstr "Nome de ficheiro:" #: ../share/extensions/polyhedron_3d.inx.h:12 +#, fuzzy msgid "Fill Colour (Blue)" -msgstr "" +msgstr "R_echeo e Trazo" #: ../share/extensions/polyhedron_3d.inx.h:13 +#, fuzzy msgid "Fill Colour (Green)" -msgstr "" +msgstr "R_echeo e Trazo" #: ../share/extensions/polyhedron_3d.inx.h:14 +#, fuzzy msgid "Fill Colour (Red)" -msgstr "" +msgstr "R_echeo e Trazo" #: ../share/extensions/polyhedron_3d.inx.h:16 -#, fuzzy, no-c-format +#, no-c-format msgid "Fill Opacity/ %" -msgstr "Opacidade:" +msgstr "Opacidade do recheo/ %" #: ../share/extensions/polyhedron_3d.inx.h:17 msgid "Great Dodecahedron" @@ -19106,30 +18473,32 @@ msgstr "" #: ../share/extensions/polyhedron_3d.inx.h:19 msgid "Icosahedron" -msgstr "" +msgstr "Icosaedro" #: ../share/extensions/polyhedron_3d.inx.h:20 #, fuzzy msgid "Light x-Position" -msgstr "Posición:" +msgstr "Menos Luz" #: ../share/extensions/polyhedron_3d.inx.h:21 #, fuzzy msgid "Light y-Position" -msgstr "Posición:" +msgstr "Menos Luz" #: ../share/extensions/polyhedron_3d.inx.h:22 #, fuzzy msgid "Light z-Position" -msgstr "Posición:" +msgstr "Menos Luz" #: ../share/extensions/polyhedron_3d.inx.h:23 +#, fuzzy msgid "Line Thickness / px" -msgstr "" +msgstr "Tamaño da fonte [px]" #: ../share/extensions/polyhedron_3d.inx.h:24 +#, fuzzy msgid "Load From File" -msgstr "" +msgstr "Erro ó cargar o ficheiro solicitado %s" #: ../share/extensions/polyhedron_3d.inx.h:25 #, fuzzy @@ -19148,17 +18517,15 @@ msgstr "Tamaño mínimo" #: ../share/extensions/polyhedron_3d.inx.h:28 #, fuzzy msgid "Model File" -msgstr "Tódolos tipos" +msgstr "Ficheiro PDF" #: ../share/extensions/polyhedron_3d.inx.h:29 -#, fuzzy msgid "Object Type" -msgstr "Obxecto" +msgstr "Tipo de obxecto" #: ../share/extensions/polyhedron_3d.inx.h:30 -#, fuzzy msgid "Object:" -msgstr "Obxecto" +msgstr "Obxecto:" #: ../share/extensions/polyhedron_3d.inx.h:31 #, fuzzy @@ -19173,17 +18540,16 @@ msgstr "Información do uso da memoria" #: ../share/extensions/polyhedron_3d.inx.h:34 #, fuzzy msgid "Rotate Around:" -msgstr "Non redondeado" +msgstr "Rotar os nodos" #: ../share/extensions/polyhedron_3d.inx.h:35 -#, fuzzy msgid "Rotation / Degrees" -msgstr "_Rotación" +msgstr "Rotación / Graos" #: ../share/extensions/polyhedron_3d.inx.h:36 #, fuzzy msgid "Scaling Factor" -msgstr "Cor uniforme" +msgstr "Mover, escalar, rotar" #: ../share/extensions/polyhedron_3d.inx.h:37 #, fuzzy @@ -19191,8 +18557,9 @@ msgid "Shading" msgstr "Separación _X:" #: ../share/extensions/polyhedron_3d.inx.h:39 +#, fuzzy msgid "Small Triambic Icosahedron" -msgstr "" +msgstr "Non hai nada seleccionado." #: ../share/extensions/polyhedron_3d.inx.h:40 msgid "Snub Cube" @@ -19203,18 +18570,18 @@ msgid "Snub Dodecahedron" msgstr "" #: ../share/extensions/polyhedron_3d.inx.h:43 -#, fuzzy, no-c-format +#, no-c-format msgid "Stroke Opacity/ %" -msgstr "_Pintar o trazo" +msgstr "Opacidade do trazo/ %" #: ../share/extensions/polyhedron_3d.inx.h:45 msgid "Tetrahedron" -msgstr "" +msgstr "Tetraedro" #: ../share/extensions/polyhedron_3d.inx.h:46 #, fuzzy msgid "Then Rotate Around:" -msgstr "Non redondeado" +msgstr "Rotar 9_0º en sentido antihorario" #: ../share/extensions/polyhedron_3d.inx.h:47 msgid "Truncated Cube" @@ -19237,9 +18604,8 @@ msgid "Truncated Tetrahedron" msgstr "" #: ../share/extensions/polyhedron_3d.inx.h:52 -#, fuzzy msgid "Vertices" -msgstr "_Vertical" +msgstr "Vértices" #: ../share/extensions/polyhedron_3d.inx.h:53 #, fuzzy @@ -19247,20 +18613,24 @@ msgid "View" msgstr "_Ver" #: ../share/extensions/polyhedron_3d.inx.h:54 +#, fuzzy msgid "X-Axis" -msgstr "" +msgstr "Ángulo do eixe x" #: ../share/extensions/polyhedron_3d.inx.h:55 +#, fuzzy msgid "Y-Axis" -msgstr "" +msgstr "Ángulo do eixe x" #: ../share/extensions/polyhedron_3d.inx.h:56 +#, fuzzy msgid "Z-Axis" -msgstr "" +msgstr "Ángulo do eixe x" #: ../share/extensions/polyhedron_3d.inx.h:57 +#, fuzzy msgid "Z-Sort Faces By:" -msgstr "" +msgstr "> e < escalan:" #: ../share/extensions/ps_input.inx.h:1 msgid "Postscript" @@ -19277,7 +18647,7 @@ msgstr "Entrada de Postscript" #: ../share/extensions/radiusrand.inx.h:1 #, fuzzy msgid "Jitter nodes" -msgstr "Subir o nodo" +msgstr "Mover os nodos" #: ../share/extensions/radiusrand.inx.h:2 #, fuzzy @@ -19290,18 +18660,17 @@ msgid "Maximum displacement in Y, px" msgstr "Novo nodo" #: ../share/extensions/radiusrand.inx.h:5 +#, fuzzy msgid "Shift node handles" -msgstr "" +msgstr "Novo nodo" #: ../share/extensions/radiusrand.inx.h:6 #, fuzzy msgid "Shift nodes" -msgstr "Engadir nodos" +msgstr "Mover os nodos" #: ../share/extensions/radiusrand.inx.h:7 -msgid "" -"This effect randomly shifts the nodes (and optionally node handles) of the " -"selected path." +msgid "This effect randomly shifts the nodes (and optionally node handles) of the selected path." msgstr "" #: ../share/extensions/radiusrand.inx.h:8 @@ -19310,7 +18679,7 @@ msgstr "Usar distribución normal" #: ../share/extensions/render_alphabetsoup.inx.h:1 msgid "Alphabet Soup" -msgstr "" +msgstr "Sopa de letras" #: ../share/extensions/render_alphabetsoup.inx.h:2 #, fuzzy @@ -19320,34 +18689,36 @@ msgstr "Árbore Aleatoria" #: ../share/extensions/render_barcode.inx.h:1 #, fuzzy msgid "Bar Height:" -msgstr "Alto:" +msgstr "Altura de Barra::" #: ../share/extensions/render_barcode.inx.h:2 msgid "Barcode" -msgstr "" +msgstr "Código de barras" #: ../share/extensions/render_barcode.inx.h:3 +#, fuzzy msgid "Barcode Data:" -msgstr "" +msgstr "Tipo de Código de Barras:" #: ../share/extensions/render_barcode.inx.h:4 #, fuzzy msgid "Barcode Type:" -msgstr "_Unidades da reixa:" +msgstr "Tipo de Código de Barras:" #: ../share/extensions/restack.inx.h:2 #, fuzzy msgid "Arbitrary Angle:" -msgstr "Ángulo" +msgstr "Ángulo (graos):" #: ../share/extensions/restack.inx.h:4 #, fuzzy msgid "Bottom" -msgstr "Zoom" +msgstr "Baixar ó fondo" #: ../share/extensions/restack.inx.h:5 +#, fuzzy msgid "Bottom to Top (90)" -msgstr "" +msgstr "Eleva-la selección á cima" #: ../share/extensions/restack.inx.h:6 #, fuzzy @@ -19355,12 +18726,14 @@ msgid "Horizontal Point:" msgstr "Texto horizontal" #: ../share/extensions/restack.inx.h:7 +#, fuzzy msgid "Left" -msgstr "" +msgstr "Aliñar á esqueda" #: ../share/extensions/restack.inx.h:8 +#, fuzzy msgid "Left to Right (0)" -msgstr "" +msgstr "Aliñar as liñas á dereita" #: ../share/extensions/restack.inx.h:9 #, fuzzy @@ -19390,7 +18763,7 @@ msgstr "Descrición" #: ../share/extensions/restack.inx.h:14 #, fuzzy msgid "Right" -msgstr "Dereitos" +msgstr "Aliñar á dereita" #: ../share/extensions/restack.inx.h:15 msgid "Right to Left (180)" @@ -19399,7 +18772,7 @@ msgstr "" #: ../share/extensions/restack.inx.h:17 #, fuzzy msgid "Top to Bottom (270)" -msgstr "Baixar ó _Fondo" +msgstr "Baixa-la selección ó fondo" #: ../share/extensions/restack.inx.h:18 #, fuzzy @@ -19434,19 +18807,17 @@ msgstr "Número de Niveis" msgid "Strength (%):" msgstr "" -# Rosetta #: ../share/extensions/sk1_input.inx.h:1 -#, fuzzy msgid "Open files saved in sK1 vector graphics editor" -msgstr "Ilustrador Vectorial Inkscape" +msgstr "Abrir ficheiros gardados co editor de imaxes vectoriais sK1" #: ../share/extensions/sk1_input.inx.h:2 msgid "sK1 vector graphics files (.sk1)" -msgstr "" +msgstr "Ficheiros de imaxes vectoriais de sK1 (.sk1)" #: ../share/extensions/sk1_input.inx.h:3 msgid "sK1 vector graphics files input" -msgstr "" +msgstr "Entrada de ficheiros de imaxes vectoriais de sK1" #: ../share/extensions/sk_input.inx.h:1 msgid "A diagram created with the program Sketch" @@ -19473,17 +18844,18 @@ msgid "Outside (Epitrochoid)" msgstr "" #: ../share/extensions/spirograph.inx.h:4 +#, fuzzy msgid "Quality (Default = 16)" -msgstr "" +msgstr "Establecer coma predeterminado" #: ../share/extensions/spirograph.inx.h:5 +#, fuzzy msgid "R - Ring Radius (px)" -msgstr "" +msgstr "Tamaño da fonte [px]" #: ../share/extensions/spirograph.inx.h:7 -#, fuzzy msgid "Rotation (deg)" -msgstr "_Rotación" +msgstr "Rotación (graos)" #: ../share/extensions/spirograph.inx.h:8 #, fuzzy @@ -19491,46 +18863,48 @@ msgid "Spirograph" msgstr "Espiral" #: ../share/extensions/spirograph.inx.h:9 +#, fuzzy msgid "d - Pen Radius (px)" -msgstr "" +msgstr "Tamaño da fonte [px]" #: ../share/extensions/spirograph.inx.h:10 +#, fuzzy msgid "r - Gear Radius (px)" -msgstr "" +msgstr "Tamaño da fonte [px]" #: ../share/extensions/straightseg.inx.h:1 msgid "Behavior" msgstr "" #: ../share/extensions/straightseg.inx.h:4 +#, fuzzy msgid "Straighten Segments" -msgstr "" +msgstr "Número de segmentos" #: ../share/extensions/summersnight.inx.h:1 msgid "Envelope" msgstr "" -#: ../share/extensions/svg2xaml.inx.h:1 ../share/extensions/xaml2svg.inx.h:1 +#: ../share/extensions/svg2xaml.inx.h:1 +#: ../share/extensions/xaml2svg.inx.h:1 msgid "Microsoft XAML (*.xaml)" -msgstr "" +msgstr "Microsoft XAML (*.xaml)" -#: ../share/extensions/svg2xaml.inx.h:2 ../share/extensions/xaml2svg.inx.h:2 +#: ../share/extensions/svg2xaml.inx.h:2 +#: ../share/extensions/xaml2svg.inx.h:2 msgid "Microsoft's GUI definition format" msgstr "" #: ../share/extensions/svg2xaml.inx.h:3 -#, fuzzy msgid "XAML Output" -msgstr "Saída de DXF" +msgstr "Saída de XAML" #: ../share/extensions/svg_and_media_zip_output.inx.h:1 msgid "Compressed Inkscape SVG with media (*.zip)" msgstr "" #: ../share/extensions/svg_and_media_zip_output.inx.h:2 -msgid "" -"Inkscape's native file format compressed with Zip and including all media " -"files" +msgid "Inkscape's native file format compressed with Zip and including all media files" msgstr "" #: ../share/extensions/svg_and_media_zip_output.inx.h:3 @@ -19538,13 +18912,13 @@ msgid "ZIP Output" msgstr "Saída de ZIP" #: ../share/extensions/text_braille.inx.h:1 -#, fuzzy msgid "Convert to Braille" -msgstr "_Converter a Texto" +msgstr "Converter a Braille" #: ../share/extensions/text_flipcase.inx.h:2 +#, fuzzy msgid "fLIP cASE" -msgstr "" +msgstr "Inverter os nodos" #: ../share/extensions/text_lowercase.inx.h:2 #, fuzzy @@ -19552,23 +18926,22 @@ msgid "lowercase" msgstr "Baixar a Capa" #: ../share/extensions/text_randomcase.inx.h:2 +#, fuzzy msgid "rANdOm CasE" -msgstr "" +msgstr "Árbore Aleatoria" #: ../share/extensions/text_replace.inx.h:1 #, fuzzy msgid "By:" -msgstr "Ry:" +msgstr "Desprazan:" #: ../share/extensions/text_replace.inx.h:2 -#, fuzzy msgid "Replace text" -msgstr "Crear" +msgstr "Substituír texto" #: ../share/extensions/text_replace.inx.h:3 -#, fuzzy msgid "Replace:" -msgstr "Repetir:" +msgstr "Substituír:" #: ../share/extensions/text_sentencecase.inx.h:1 msgid "Sentence case" @@ -19577,26 +18950,26 @@ msgstr "" #: ../share/extensions/text_titlecase.inx.h:2 #, fuzzy msgid "Title Case" -msgstr "Título" +msgstr "Establecer o título do obxecto" #: ../share/extensions/text_uppercase.inx.h:2 msgid "UPPERCASE" -msgstr "" +msgstr "MAIÚSCULAS" #: ../share/extensions/triangle.inx.h:1 #, fuzzy msgid "Angle a / deg" -msgstr "graos" +msgstr "Rotación (graos)" #: ../share/extensions/triangle.inx.h:2 #, fuzzy msgid "Angle b / deg" -msgstr "graos" +msgstr "Rotación (graos)" #: ../share/extensions/triangle.inx.h:3 #, fuzzy msgid "Angle c / deg" -msgstr "graos" +msgstr "Rotación (graos)" #: ../share/extensions/triangle.inx.h:4 msgid "From Side a and Angles a, b" @@ -19615,25 +18988,28 @@ msgid "From Sides a, b and Angle c" msgstr "" #: ../share/extensions/triangle.inx.h:8 +#, fuzzy msgid "From Three Sides" -msgstr "" +msgstr "Aliñar os lados esquerdos" #: ../share/extensions/triangle.inx.h:11 +#, fuzzy msgid "Side Length a / px" -msgstr "" +msgstr "Tamaño da fonte [px]" #: ../share/extensions/triangle.inx.h:12 +#, fuzzy msgid "Side Length b / px" -msgstr "" +msgstr "Tamaño da fonte [px]" #: ../share/extensions/triangle.inx.h:13 +#, fuzzy msgid "Side Length c / px" -msgstr "" +msgstr "Tamaño da fonte [px]" #: ../share/extensions/triangle.inx.h:14 -#, fuzzy msgid "Triangle" -msgstr "Ángulo" +msgstr "Triángulo" #: ../share/extensions/txt2svg.inx.h:1 msgid "ASCII Text" @@ -19663,7 +19039,7 @@ msgstr "Xirar" #: ../share/extensions/wmf_input.inx.h:1 #, fuzzy msgid "A popular graphics file format for clipart" -msgstr "Un formato de gráficos popular para clipart" +msgstr "Un formato popular de gráficos para clipart" #: ../share/extensions/wmf_input.inx.h:2 msgid "Windows Metafile (*.wmf)" @@ -19674,9 +19050,8 @@ msgid "Windows Metafile Input" msgstr "Entrada de Windows Metafile" #: ../share/extensions/xaml2svg.inx.h:3 -#, fuzzy msgid "XAML Input" -msgstr "Entrada de DXF" +msgstr "Entrada de XAML" # Rosetta #, fuzzy @@ -19693,11 +19068,9 @@ msgstr "Entrada de DXF" #, fuzzy #~ msgid "Space between copies of the pattern" #~ msgstr "Cor do bordo da páxina" - #~ msgid "At least one of the objects is not a path, cannot combine." #~ msgstr "" #~ "Alomenos un dos obxectos non é un camiño, non se pode combinalos." - #~ msgid "" #~ "You cannot combine objects from different groups or layers." #~ msgstr "" @@ -19758,7 +19131,6 @@ msgstr "Entrada de DXF" #, fuzzy #~ msgid "Select second option: " #~ msgstr "Seleccione o ficheiro que desexa abrir" - #~ msgid "medium" #~ msgstr "mediana" @@ -19793,7 +19165,6 @@ msgstr "Entrada de DXF" #, fuzzy #~ msgid "Pin Dialog" #~ msgstr "Formulario de aliñacións" - #~ msgid "Gri_d Arrange..." #~ msgstr "Or_denar nunha Reixa..." @@ -19920,13 +19291,10 @@ msgstr "Entrada de DXF" #, fuzzy #~ msgid "Angle Y" #~ msgstr "Ángulo:" - #~ msgid "%s at %s" #~ msgstr "%s en %s" - #~ msgid "Move to:" #~ msgstr "Mover a:" - #~ msgid "Moving %s %s" #~ msgstr "Movendo a %s %s" @@ -19968,7 +19336,6 @@ msgstr "Entrada de DXF" #, fuzzy #~ msgid "Display Calibration" #~ msgstr "Configuración da visualización" - #~ msgid "Print _Direct" #~ msgstr "Imprimir _Directamente" @@ -19980,3 +19347,4 @@ msgstr "Entrada de DXF" #, fuzzy #~ msgid "Vertical kerning" #~ msgstr "Valor de centrado vertical" + diff --git a/po/he.po b/po/he.po index a593d3e75..681bdc709 100644 --- a/po/he.po +++ b/po/he.po @@ -7,15 +7,19 @@ msgid "" msgstr "" "Project-Id-Version: inkscape\n" "Report-Msgid-Bugs-To: inkscape-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2008-06-12 21:31+0100\n" -"PO-Revision-Date: 2007-11-30 02:28+0200\n" -"Last-Translator: Leon Mintz \n" -"Language-Team: Hebrew \n" +"POT-Creation-Date: 2008-10-29 21:35+0200\n" +"PO-Revision-Date: 2008-11-01 13:08+0200\n" +"Last-Translator: Yaron Shahrabani \n" +"Language-Team: Yaron \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Launchpad-Export-Date: 2008-03-18 01:36+0000\n" +"X-Generator: Launchpad (build Unknown)\n" +"X-Poedit-Language: Hebrew\n" +"X-Poedit-Country: ISRAEL\n" +"X-Poedit-SourceCharset: utf-8\n" #: ../inkscape.desktop.in.h:1 msgid "Create and edit Scalable Vector Graphics images" @@ -25,198 +29,194 @@ msgstr "צור וערוך איורי גרפיקה וקטורית" msgid "Inkscape Vector Graphics Editor" msgstr "אינקסקייפ עורך גרפיקה וקטורית" -#: ../src/arc-context.cpp:338 -msgid "" -"Ctrl: make circle or integer-ratio ellipse, snap arc/segment angle" -msgstr "Ctrl: צור מעגל או אליפסה קבועת-פסיעה, הצמד זווית קשת/קטע" +#: ../src/arc-context.cpp:341 +msgid "Ctrl: make circle or integer-ratio ellipse, snap arc/segment angle" +msgstr "Ctrl: צור מעגל או אליפסה קבועת־פסיעה, הצמד זווית קשת/קטע" -#: ../src/arc-context.cpp:339 ../src/rect-context.cpp:383 +#: ../src/arc-context.cpp:342 +#: ../src/rect-context.cpp:383 msgid "Shift: draw around the starting point" msgstr "Shift: צייר מסביב לנקודת ההתחלה" -#: ../src/arc-context.cpp:485 +#: ../src/arc-context.cpp:488 #, c-format -msgid "" -"Ellipse: %s × %s (constrained to ratio %d:%d); with Shift " -"to draw around the starting point" -msgstr "" -"אליפסה: %s × %s (מוגבלת ליחס %d:%d); לחצו Shift על " -"מנתלצייר מסביב לנקודת ההתחלה" +msgid "Ellipse: %s × %s (constrained to ratio %d:%d); with Shift to draw around the starting point" +msgstr "אליפסה: %s × %s (מוגבלת ליחס %d:%d); לחצו Shift על מנת לצייר מסביב לנקודת ההתחלה" -#: ../src/arc-context.cpp:487 +#: ../src/arc-context.cpp:490 #, c-format -msgid "" -"Ellipse: %s × %s; with Ctrl to make square or integer-" -"ratio ellipse; with Shift to draw around the starting point" -msgstr "" +msgid "Ellipse: %s × %s; with Ctrl to make square or integer-ratio ellipse; with Shift to draw around the starting point" +msgstr "אליפסה: %s × %s; לחצו על Ctrl ריבוע או מעגל בעל רדיוס אחיד; לחצו על Shift על מנת לצייר מסביב לנקודת ההתחלה" -#: ../src/arc-context.cpp:506 +#: ../src/arc-context.cpp:509 msgid "Create ellipse" msgstr "צור אליפסה" -#: ../src/box3d-context.cpp:448 ../src/box3d-context.cpp:455 -#: ../src/box3d-context.cpp:462 ../src/box3d-context.cpp:469 -#: ../src/box3d-context.cpp:476 ../src/box3d-context.cpp:483 +#: ../src/box3d-context.cpp:451 +#: ../src/box3d-context.cpp:458 +#: ../src/box3d-context.cpp:465 +#: ../src/box3d-context.cpp:472 +#: ../src/box3d-context.cpp:479 +#: ../src/box3d-context.cpp:486 msgid "Change perspective (angle of PLs)" -msgstr "" +msgstr "שנה פרספקטיבה (זווית קווי הפרספקטיבה)" #. status text -#: ../src/box3d-context.cpp:638 +#: ../src/box3d-context.cpp:641 msgid "3D Box; with Shift to extrude along the Z axis" -msgstr "" +msgstr "תיבה תלת מימדית; לחיצה על Shift כדי להרחיק לאורך ציר ה־Z" -#: ../src/box3d-context.cpp:662 -#, fuzzy +#: ../src/box3d-context.cpp:665 msgid "Create 3D box" -msgstr "צור מחבר חדש" +msgstr "צור תיבה תלת מימדית" -#: ../src/box3d.cpp:315 -#, fuzzy +#: ../src/box3d.cpp:316 msgid "3D Box" -msgstr "אליפסה" +msgstr "תיבה תלת־מימדית" -#: ../src/connector-context.cpp:522 +#: ../src/connector-context.cpp:520 msgid "Creating new connector" msgstr "צור מחבר חדש" -#: ../src/connector-context.cpp:751 -#, fuzzy +#: ../src/connector-context.cpp:752 msgid "Connector endpoint drag cancelled." -msgstr "בוטלה גרירת נקודת קצה של מחבר" +msgstr "בוטלה גרירת נקודת הקצה של המחבר." -#: ../src/connector-context.cpp:799 +#: ../src/connector-context.cpp:800 msgid "Reroute connector" -msgstr "" +msgstr "נתב את המחבר מחדש" #. Flush pending updates -#: ../src/connector-context.cpp:963 +#: ../src/connector-context.cpp:964 msgid "Create connector" msgstr "צור מחבר" -#: ../src/connector-context.cpp:987 +#: ../src/connector-context.cpp:988 msgid "Finishing connector" msgstr "סיום מחבר" -#: ../src/connector-context.cpp:1130 +#: ../src/connector-context.cpp:1131 msgid "Connection point: click or drag to create a new connector" msgstr "נקודת חיבור: הקלק או גרור לשם יצירת מחבר חדש" -#: ../src/connector-context.cpp:1203 +#: ../src/connector-context.cpp:1204 msgid "Connector endpoint: drag to reroute or connect to new shapes" -msgstr "" +msgstr "מחבר הסיום: גרור לניתוב מחדש או חבר לצורות חדשות" -#: ../src/connector-context.cpp:1314 +#: ../src/connector-context.cpp:1316 msgid "Select at least one non-connector object." -msgstr "" +msgstr "בחר לפחות פריט אחד שאינו מחבר." -#: ../src/connector-context.cpp:1319 ../src/widgets/toolbox.cpp:5554 +#: ../src/connector-context.cpp:1321 +#: ../src/widgets/toolbox.cpp:6503 msgid "Make connectors avoid selected objects" -msgstr "" +msgstr "גרום למחברים להמנע מהפריטים הנבחרים" -#: ../src/connector-context.cpp:1320 ../src/widgets/toolbox.cpp:5564 +#: ../src/connector-context.cpp:1322 +#: ../src/widgets/toolbox.cpp:6513 msgid "Make connectors ignore selected objects" -msgstr "" +msgstr "גרום למחברים להתעלם מהפריטים הנבחרים" -#: ../src/context-fns.cpp:37 ../src/context-fns.cpp:66 +#: ../src/context-fns.cpp:37 +#: ../src/context-fns.cpp:66 msgid "Current layer is hidden. Unhide it to be able to draw on it." -msgstr "" +msgstr " השכבה הנוכחית חבויה בצע פעולת גילוי על מנת לצייר עליה" -#: ../src/context-fns.cpp:43 ../src/context-fns.cpp:72 +#: ../src/context-fns.cpp:43 +#: ../src/context-fns.cpp:72 msgid "Current layer is locked. Unlock it to be able to draw on it." -msgstr "" +msgstr " השכבה הנוכחית נעולה פתח את הנעילה על מנת לצייר עליה" -#: ../src/desktop.cpp:782 +#: ../src/desktop.cpp:820 msgid "No previous zoom." -msgstr "לא קיים זום קודם" +msgstr "לא קיימת רמת התקרבות קודמת." -#: ../src/desktop.cpp:807 +#: ../src/desktop.cpp:845 msgid "No next zoom." -msgstr "לא קיים זום הבא" +msgstr "אין רמת התקרבות נוספת." -#: ../src/desktop-events.cpp:175 +#: ../src/desktop-events.cpp:176 msgid "Create guide" msgstr "צור קו מנחה" -#: ../src/desktop-events.cpp:221 ../src/desktop-events.cpp:275 +#: ../src/desktop-events.cpp:222 +#: ../src/desktop-events.cpp:276 #: ../src/dialogs/guidelinedialog.cpp:127 msgid "Delete guide" msgstr "מחק קו מנחה" -#: ../src/desktop-events.cpp:269 +#: ../src/desktop-events.cpp:270 msgid "Move guide" msgstr "הזז קו מנחה" -#: ../src/desktop-events.cpp:290 -#, fuzzy, c-format +#: ../src/desktop-events.cpp:291 +#, c-format msgid "Guideline: %s" -msgstr "מעגל" +msgstr "קו מנחה: %s" -#: ../src/dialogs/clonetiler.cpp:168 +#: ../src/dialogs/clonetiler.cpp:169 msgid "Nothing selected." msgstr "דבר לא נבחר." -#: ../src/dialogs/clonetiler.cpp:174 +#: ../src/dialogs/clonetiler.cpp:175 msgid "More than one object selected." -msgstr "נבחר יותר מאוביקט אחד." +msgstr "נבחר יותר מפריט אחד." -#: ../src/dialogs/clonetiler.cpp:181 -#, fuzzy, c-format +#: ../src/dialogs/clonetiler.cpp:182 +#, c-format msgid "Object has %d tiled clones." -msgstr "לאוביקט %d כפילים פרושים." +msgstr "לפריט זה %d כפילים פרושים." -#: ../src/dialogs/clonetiler.cpp:186 -#, fuzzy +#: ../src/dialogs/clonetiler.cpp:187 msgid "Object has no tiled clones." -msgstr "לאוביקט אין כפילים פרושים." +msgstr "לפריט זה אין כפילים פרושים." -#: ../src/dialogs/clonetiler.cpp:984 +#: ../src/dialogs/clonetiler.cpp:990 msgid "Select one object whose tiled clones to unclump." -msgstr "" +msgstr "בחר פריט אחד שיש לנתק ממנו את כפיליו הפרוסים." -#: ../src/dialogs/clonetiler.cpp:1006 +#: ../src/dialogs/clonetiler.cpp:1012 msgid "Unclump tiled clones" -msgstr "" +msgstr "נתק כפילים פרוסים" -#: ../src/dialogs/clonetiler.cpp:1036 +#: ../src/dialogs/clonetiler.cpp:1042 msgid "Select one object whose tiled clones to remove." -msgstr "" +msgstr "בחר פריט אחד שברצונך להסיר את כפיליו הפרוסים." -#: ../src/dialogs/clonetiler.cpp:1059 +#: ../src/dialogs/clonetiler.cpp:1065 msgid "Delete tiled clones" -msgstr "" +msgstr "מחק כפילים פרוסים" -#: ../src/dialogs/clonetiler.cpp:1105 ../src/selection-chemistry.cpp:1818 +#: ../src/dialogs/clonetiler.cpp:1111 +#: ../src/selection-chemistry.cpp:1845 msgid "Select an object to clone." -msgstr "" +msgstr "בחר פריט לשיכפול." -#: ../src/dialogs/clonetiler.cpp:1111 -msgid "" -"If you want to clone several objects, group them and clone the " -"group." -msgstr "" +#: ../src/dialogs/clonetiler.cpp:1117 +msgid "If you want to clone several objects, group them and clone the group." +msgstr "אם ברצונך לשכפל מספר פריטים, קבץ אותם ושכפל את הקבוצה." -#: ../src/dialogs/clonetiler.cpp:1120 -#, fuzzy +#: ../src/dialogs/clonetiler.cpp:1126 msgid "Creating tiled clones..." -msgstr "לאוביקט אין כפילים פרושים." +msgstr "יוצר כפילים פרושים..." -#: ../src/dialogs/clonetiler.cpp:1527 +#: ../src/dialogs/clonetiler.cpp:1529 msgid "Create tiled clones" -msgstr "" +msgstr "צור כפילים פרוסים" -#: ../src/dialogs/clonetiler.cpp:1710 +#: ../src/dialogs/clonetiler.cpp:1720 msgid "Per row:" msgstr "בשורה:" -#: ../src/dialogs/clonetiler.cpp:1723 +#: ../src/dialogs/clonetiler.cpp:1733 msgid "Per column:" msgstr "בעמודה:" -#: ../src/dialogs/clonetiler.cpp:1731 +#: ../src/dialogs/clonetiler.cpp:1741 msgid "Randomize:" -msgstr "" +msgstr "פזר באקראי:" -#: ../src/dialogs/clonetiler.cpp:1885 +#: ../src/dialogs/clonetiler.cpp:1902 msgid "_Symmetry" msgstr "_סימטריה" @@ -225,438 +225,437 @@ msgstr "_סימטריה" #. * http://www.clarku.edu/~djoyce/wallpaper/seventeen.html (English vocabulary); or #. * http://membres.lycos.fr/villemingerard/Geometri/Sym1D.htm (French vocabulary). #. -#: ../src/dialogs/clonetiler.cpp:1893 +#: ../src/dialogs/clonetiler.cpp:1910 msgid "Select one of the 17 symmetry groups for the tiling" -msgstr "" +msgstr "בחר באחת מ־17 קבוצות הסימטריה עבור הפריסה" #. TRANSLATORS: "translation" means "shift" / "displacement" here. -#: ../src/dialogs/clonetiler.cpp:1904 +#: ../src/dialogs/clonetiler.cpp:1921 msgid "P1: simple translation" msgstr "P1: העברה פשוטה" -#: ../src/dialogs/clonetiler.cpp:1905 +#: ../src/dialogs/clonetiler.cpp:1922 msgid "P2: 180° rotation" msgstr "P2: סיבוב של 180°" -#: ../src/dialogs/clonetiler.cpp:1906 +#: ../src/dialogs/clonetiler.cpp:1923 msgid "PM: reflection" -msgstr "PM: שיקוף" +msgstr "PM: השתקפות" #. TRANSLATORS: "glide reflection" is a reflection and a translation combined. #. For more info, see http://mathforum.org/sum95/suzanne/symsusan.html -#: ../src/dialogs/clonetiler.cpp:1909 +#: ../src/dialogs/clonetiler.cpp:1926 msgid "PG: glide reflection" -msgstr "" +msgstr "PG: השתקפות מוסטת" -#: ../src/dialogs/clonetiler.cpp:1910 +#: ../src/dialogs/clonetiler.cpp:1927 msgid "CM: reflection + glide reflection" -msgstr "" +msgstr "CM: השתקפות + השתקפות מוסטת" -#: ../src/dialogs/clonetiler.cpp:1911 +#: ../src/dialogs/clonetiler.cpp:1928 msgid "PMM: reflection + reflection" -msgstr "" +msgstr "PMM: השתקפות + השתקפות" -#: ../src/dialogs/clonetiler.cpp:1912 +#: ../src/dialogs/clonetiler.cpp:1929 msgid "PMG: reflection + 180° rotation" msgstr "PMG: סיבוב של 180° + שיקוף" -#: ../src/dialogs/clonetiler.cpp:1913 +#: ../src/dialogs/clonetiler.cpp:1930 msgid "PGG: glide reflection + 180° rotation" -msgstr "" +msgstr "PGG: השתקפות מוסטת + סיבוב של 180°" -#: ../src/dialogs/clonetiler.cpp:1914 +#: ../src/dialogs/clonetiler.cpp:1931 msgid "CMM: reflection + reflection + 180° rotation" -msgstr "" +msgstr "CMM: השתקפות + השתקפות + סיבוב של 180°" -#: ../src/dialogs/clonetiler.cpp:1915 +#: ../src/dialogs/clonetiler.cpp:1932 msgid "P4: 90° rotation" msgstr "P4: סיבוב של 90°" -#: ../src/dialogs/clonetiler.cpp:1916 +#: ../src/dialogs/clonetiler.cpp:1933 msgid "P4M: 90° rotation + 45° reflection" -msgstr "" +msgstr "P4M: 90° סיבוב + 45° השתקפות" -#: ../src/dialogs/clonetiler.cpp:1917 +#: ../src/dialogs/clonetiler.cpp:1934 msgid "P4G: 90° rotation + 90° reflection" -msgstr "" +msgstr "P4G: סיבוב של 90° + השתקפות של 90°" -#: ../src/dialogs/clonetiler.cpp:1918 +#: ../src/dialogs/clonetiler.cpp:1935 msgid "P3: 120° rotation" -msgstr "" +msgstr "P3: סיבוב של 120°" -#: ../src/dialogs/clonetiler.cpp:1919 +#: ../src/dialogs/clonetiler.cpp:1936 msgid "P31M: reflection + 120° rotation, dense" -msgstr "" +msgstr "P31M: השתקפות + סיבוב של 120°, צפוף" -#: ../src/dialogs/clonetiler.cpp:1920 +#: ../src/dialogs/clonetiler.cpp:1937 msgid "P3M1: reflection + 120° rotation, sparse" -msgstr "" +msgstr "P3M1: השתקפות + סיבוב 120°, מרווח" -#: ../src/dialogs/clonetiler.cpp:1921 +#: ../src/dialogs/clonetiler.cpp:1938 msgid "P6: 60° rotation" -msgstr "" +msgstr "P6: סיבוב של 60°" -#: ../src/dialogs/clonetiler.cpp:1922 +#: ../src/dialogs/clonetiler.cpp:1939 msgid "P6M: reflection + 60° rotation" -msgstr "" +msgstr "P6M: השתקפות + סיבוב של 60°" -#: ../src/dialogs/clonetiler.cpp:1950 +#: ../src/dialogs/clonetiler.cpp:1967 msgid "S_hift" -msgstr "" +msgstr "ת_זוזה" #. TRANSLATORS: "shift" means: the tiles will be shifted (offset) horizontally by this amount -#: ../src/dialogs/clonetiler.cpp:1960 +#: ../src/dialogs/clonetiler.cpp:1977 #, no-c-format msgid "Shift X:" -msgstr "" +msgstr "תזוזה בציר X:" -#: ../src/dialogs/clonetiler.cpp:1968 +#: ../src/dialogs/clonetiler.cpp:1985 #, no-c-format msgid "Horizontal shift per row (in % of tile width)" -msgstr "" +msgstr "תזוזה אופקית לשורה (באחוזים מרוחב האריח)" -#: ../src/dialogs/clonetiler.cpp:1976 +#: ../src/dialogs/clonetiler.cpp:1993 #, no-c-format msgid "Horizontal shift per column (in % of tile width)" -msgstr "" +msgstr "תזוזה אופקית לטור (באחוזים מרוחב האריח)" -#: ../src/dialogs/clonetiler.cpp:1983 +#: ../src/dialogs/clonetiler.cpp:2000 msgid "Randomize the horizontal shift by this percentage" -msgstr "" +msgstr "הזז לרוחב באקראי לפי אחוזים אלה" #. TRANSLATORS: "shift" means: the tiles will be shifted (offset) vertically by this amount -#: ../src/dialogs/clonetiler.cpp:1993 +#: ../src/dialogs/clonetiler.cpp:2010 #, no-c-format msgid "Shift Y:" -msgstr "" +msgstr "תזוזה בציר Y:" -#: ../src/dialogs/clonetiler.cpp:2001 +#: ../src/dialogs/clonetiler.cpp:2018 #, no-c-format msgid "Vertical shift per row (in % of tile height)" -msgstr "" +msgstr "תזוזה אנכית לשורה (באחוזים מגובה האריח)" -#: ../src/dialogs/clonetiler.cpp:2009 +#: ../src/dialogs/clonetiler.cpp:2026 #, no-c-format msgid "Vertical shift per column (in % of tile height)" -msgstr "" +msgstr "תזוזה אנכית לטור (באחוזים מגובה האריח)" -#: ../src/dialogs/clonetiler.cpp:2016 +#: ../src/dialogs/clonetiler.cpp:2033 msgid "Randomize the vertical shift by this percentage" -msgstr "" +msgstr "הזז לאורך באקראי לפי אחוזים אלה" -#: ../src/dialogs/clonetiler.cpp:2024 ../src/dialogs/clonetiler.cpp:2172 +#: ../src/dialogs/clonetiler.cpp:2041 +#: ../src/dialogs/clonetiler.cpp:2189 msgid "Exponent:" -msgstr "" +msgstr "מעריך:" -#: ../src/dialogs/clonetiler.cpp:2031 +#: ../src/dialogs/clonetiler.cpp:2048 msgid "Whether rows are spaced evenly (1), converge (<1) or diverge (>1)" -msgstr "" +msgstr "האם השורות מרווחות באופן שווה (1), מכונס (<1) או מרווח (>1)" -#: ../src/dialogs/clonetiler.cpp:2038 +#: ../src/dialogs/clonetiler.cpp:2055 msgid "Whether columns are spaced evenly (1), converge (<1) or diverge (>1)" -msgstr "" +msgstr "האם הטורים מרווחים באופן שווה (1), מכונס (<1) או מרווח (>1)" #. TRANSLATORS: "Alternate" is a verb here -#: ../src/dialogs/clonetiler.cpp:2046 ../src/dialogs/clonetiler.cpp:2216 -#: ../src/dialogs/clonetiler.cpp:2293 ../src/dialogs/clonetiler.cpp:2369 -#: ../src/dialogs/clonetiler.cpp:2418 ../src/dialogs/clonetiler.cpp:2549 +#: ../src/dialogs/clonetiler.cpp:2063 +#: ../src/dialogs/clonetiler.cpp:2233 +#: ../src/dialogs/clonetiler.cpp:2310 +#: ../src/dialogs/clonetiler.cpp:2386 +#: ../src/dialogs/clonetiler.cpp:2435 +#: ../src/dialogs/clonetiler.cpp:2566 msgid "Alternate:" -msgstr "" +msgstr "החלף:" -#: ../src/dialogs/clonetiler.cpp:2052 +#: ../src/dialogs/clonetiler.cpp:2069 msgid "Alternate the sign of shifts for each row" -msgstr "" +msgstr "החלף את סימן התזוזות עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2057 +#: ../src/dialogs/clonetiler.cpp:2074 msgid "Alternate the sign of shifts for each column" -msgstr "" +msgstr "החלף את סימן התזוזות עבור כל עמודה" #. TRANSLATORS: "Cumulate" is a verb here -#: ../src/dialogs/clonetiler.cpp:2064 ../src/dialogs/clonetiler.cpp:2234 -#: ../src/dialogs/clonetiler.cpp:2311 -#, fuzzy +#: ../src/dialogs/clonetiler.cpp:2081 +#: ../src/dialogs/clonetiler.cpp:2251 +#: ../src/dialogs/clonetiler.cpp:2328 msgid "Cumulate:" -msgstr "בשורה:" +msgstr "צבור:" -#: ../src/dialogs/clonetiler.cpp:2070 +#: ../src/dialogs/clonetiler.cpp:2087 msgid "Cumulate the shifts for each row" -msgstr "" +msgstr "צבור את התזוזות עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2075 +#: ../src/dialogs/clonetiler.cpp:2092 msgid "Cumulate the shifts for each column" -msgstr "" +msgstr "צבור את המרווחים עבור כל עמודה" #. TRANSLATORS: "Cumulate" is a verb here -#: ../src/dialogs/clonetiler.cpp:2082 -#, fuzzy +#: ../src/dialogs/clonetiler.cpp:2099 msgid "Exclude tile:" -msgstr "בשורה:" +msgstr "אל תכלול אריח:" -#: ../src/dialogs/clonetiler.cpp:2088 +#: ../src/dialogs/clonetiler.cpp:2105 msgid "Exclude tile height in shift" -msgstr "" +msgstr "אל תכלול את גובה האריח בהזזה" -#: ../src/dialogs/clonetiler.cpp:2093 +#: ../src/dialogs/clonetiler.cpp:2110 msgid "Exclude tile width in shift" -msgstr "" +msgstr "אל תכלול את רוחב האריח בהזזה" -#: ../src/dialogs/clonetiler.cpp:2102 +#: ../src/dialogs/clonetiler.cpp:2119 msgid "Sc_ale" -msgstr "" +msgstr "שנה _גודל" -#: ../src/dialogs/clonetiler.cpp:2110 +#: ../src/dialogs/clonetiler.cpp:2127 msgid "Scale X:" -msgstr "" +msgstr "תזוזה בציר ה־X:" -#: ../src/dialogs/clonetiler.cpp:2118 +#: ../src/dialogs/clonetiler.cpp:2135 #, no-c-format msgid "Horizontal scale per row (in % of tile width)" -msgstr "" +msgstr "שינוי גודל אופקי עבור כל שורה (באחוזים מרוחב האריח)" -#: ../src/dialogs/clonetiler.cpp:2126 +#: ../src/dialogs/clonetiler.cpp:2143 #, no-c-format msgid "Horizontal scale per column (in % of tile width)" -msgstr "" +msgstr "שינוי גודל אופקי עבור כל עמודה (באחוזים מרוחב האריח)" -#: ../src/dialogs/clonetiler.cpp:2133 +#: ../src/dialogs/clonetiler.cpp:2150 msgid "Randomize the horizontal scale by this percentage" -msgstr "" +msgstr "שנה את הגודל האופקי באופן אקראי לפי אחוזים אלו" -#: ../src/dialogs/clonetiler.cpp:2141 +#: ../src/dialogs/clonetiler.cpp:2158 msgid "Scale Y:" -msgstr "" +msgstr "שנה גודל בציר ה־Y:" -#: ../src/dialogs/clonetiler.cpp:2149 +#: ../src/dialogs/clonetiler.cpp:2166 #, no-c-format msgid "Vertical scale per row (in % of tile height)" -msgstr "" +msgstr "שינוי גודל אנכי עבור כל שורה (באחוזים מגובה האריח)" -#: ../src/dialogs/clonetiler.cpp:2157 +#: ../src/dialogs/clonetiler.cpp:2174 #, no-c-format msgid "Vertical scale per column (in % of tile height)" -msgstr "" +msgstr "שינוי גודל אנכי עבור כל עמודה (באחוזים מגובה האריח)" -#: ../src/dialogs/clonetiler.cpp:2164 +#: ../src/dialogs/clonetiler.cpp:2181 msgid "Randomize the vertical scale by this percentage" -msgstr "" +msgstr "שנה את הגודל האנכי באופן אקראי לפי אחוזים אלו" -#: ../src/dialogs/clonetiler.cpp:2179 +#: ../src/dialogs/clonetiler.cpp:2196 msgid "Whether row scaling is uniform (1), converge (<1) or diverge (>1)" -msgstr "" +msgstr "האם שינוי גודל השורות יהיה אחיד (1), מכונס (<1) או מרווח (>1)" -#: ../src/dialogs/clonetiler.cpp:2186 +#: ../src/dialogs/clonetiler.cpp:2203 msgid "Whether column scaling is uniform (1), converge (<1) or diverge (>1)" -msgstr "" +msgstr "האם שינוי גודל העמודות יהיה אחיד (1), מכונס (<1) או מרווח (>1)" -#: ../src/dialogs/clonetiler.cpp:2194 -#, fuzzy +#: ../src/dialogs/clonetiler.cpp:2211 msgid "Base:" -msgstr "אליפסה" +msgstr "בסיס:" -#: ../src/dialogs/clonetiler.cpp:2201 ../src/dialogs/clonetiler.cpp:2208 -msgid "" -"Base for a logarithmic spiral: not used (0), converge (<1), or diverge (>1)" -msgstr "" +#: ../src/dialogs/clonetiler.cpp:2218 +#: ../src/dialogs/clonetiler.cpp:2225 +msgid "Base for a logarithmic spiral: not used (0), converge (<1), or diverge (>1)" +msgstr "בסיס עבור ספירלה לוגריתמית: לא בשימוש (0), מכונס (<1) או מרווח (>1)" -#: ../src/dialogs/clonetiler.cpp:2222 +#: ../src/dialogs/clonetiler.cpp:2239 msgid "Alternate the sign of scales for each row" -msgstr "" +msgstr "החלף את סמל שינוי הגודל עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2227 +#: ../src/dialogs/clonetiler.cpp:2244 msgid "Alternate the sign of scales for each column" -msgstr "" +msgstr "החלף את סמל שינוי הגודל עבור כל עמודה" -#: ../src/dialogs/clonetiler.cpp:2240 +#: ../src/dialogs/clonetiler.cpp:2257 msgid "Cumulate the scales for each row" -msgstr "" +msgstr "צבור את שינוי הגודל עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2245 +#: ../src/dialogs/clonetiler.cpp:2262 msgid "Cumulate the scales for each column" -msgstr "" +msgstr "צבור את שינוי הגודל עבור כל עמודה" -#: ../src/dialogs/clonetiler.cpp:2254 +#: ../src/dialogs/clonetiler.cpp:2271 msgid "_Rotation" -msgstr "" +msgstr "_סיבוב" -#: ../src/dialogs/clonetiler.cpp:2262 +#: ../src/dialogs/clonetiler.cpp:2279 msgid "Angle:" -msgstr "" +msgstr "זווית:" -#: ../src/dialogs/clonetiler.cpp:2270 +#: ../src/dialogs/clonetiler.cpp:2287 #, no-c-format msgid "Rotate tiles by this angle for each row" -msgstr "" +msgstr "הטה את האריחים לפי זווית זו עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2278 +#: ../src/dialogs/clonetiler.cpp:2295 #, no-c-format msgid "Rotate tiles by this angle for each column" -msgstr "" +msgstr "הטה את האריחים לפי זווית זו עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2285 +#: ../src/dialogs/clonetiler.cpp:2302 msgid "Randomize the rotation angle by this percentage" -msgstr "" +msgstr "בחר באקראי את אחוזי הסיבוב לפי אחוזים אלו" -#: ../src/dialogs/clonetiler.cpp:2299 +#: ../src/dialogs/clonetiler.cpp:2316 msgid "Alternate the rotation direction for each row" -msgstr "" +msgstr "החלף את כיווני הסיבוב עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2304 +#: ../src/dialogs/clonetiler.cpp:2321 msgid "Alternate the rotation direction for each column" -msgstr "" +msgstr "החלף את כיווני הסיבוב עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2317 +#: ../src/dialogs/clonetiler.cpp:2334 msgid "Cumulate the rotation for each row" -msgstr "" +msgstr "צבור את אחוזי הסיבוב עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2322 +#: ../src/dialogs/clonetiler.cpp:2339 msgid "Cumulate the rotation for each column" -msgstr "" +msgstr "צבור את הסיבוב מכל עמודה" -#: ../src/dialogs/clonetiler.cpp:2331 +#: ../src/dialogs/clonetiler.cpp:2348 msgid "_Blur & opacity" -msgstr "" +msgstr "_טישטוש ואטימות" -#: ../src/dialogs/clonetiler.cpp:2340 +#: ../src/dialogs/clonetiler.cpp:2357 msgid "Blur:" -msgstr "" +msgstr "טישטוש:" -#: ../src/dialogs/clonetiler.cpp:2347 +#: ../src/dialogs/clonetiler.cpp:2364 msgid "Blur tiles by this percentage for each row" -msgstr "" +msgstr "טשטש את האריחים באחוזים אלה עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2354 +#: ../src/dialogs/clonetiler.cpp:2371 msgid "Blur tiles by this percentage for each column" -msgstr "" +msgstr "טשטש את האריחים באחוזים אלה עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2361 +#: ../src/dialogs/clonetiler.cpp:2378 msgid "Randomize the tile blur by this percentage" -msgstr "" +msgstr "טשטש את האריחים באופן אקראי לפי אחוזים אלו" -#: ../src/dialogs/clonetiler.cpp:2375 +#: ../src/dialogs/clonetiler.cpp:2392 msgid "Alternate the sign of blur change for each row" -msgstr "" +msgstr "החלף את סימן שינוי הטישטוש עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2380 +#: ../src/dialogs/clonetiler.cpp:2397 msgid "Alternate the sign of blur change for each column" -msgstr "" +msgstr "החלף את סימן שינוי הטישטוש עבור כל עמודה" -#: ../src/dialogs/clonetiler.cpp:2389 +#: ../src/dialogs/clonetiler.cpp:2406 msgid "Fade out:" -msgstr "" +msgstr "דהיה:" -#: ../src/dialogs/clonetiler.cpp:2396 +#: ../src/dialogs/clonetiler.cpp:2413 msgid "Decrease tile opacity by this percentage for each row" -msgstr "" +msgstr "החלש את אטימות האריחים באחוזים אלה עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2403 +#: ../src/dialogs/clonetiler.cpp:2420 msgid "Decrease tile opacity by this percentage for each column" -msgstr "" +msgstr "החלש את אטימות האריחים באחוזים אלה עבור כל עמודה" -#: ../src/dialogs/clonetiler.cpp:2410 +#: ../src/dialogs/clonetiler.cpp:2427 msgid "Randomize the tile opacity by this percentage" -msgstr "" +msgstr "שנה את אטימות האריחים באופן אקראי לפי אחוזים אלו" -#: ../src/dialogs/clonetiler.cpp:2424 +#: ../src/dialogs/clonetiler.cpp:2441 msgid "Alternate the sign of opacity change for each row" -msgstr "" +msgstr "החלף את סימן שינוי האטימות עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2429 +#: ../src/dialogs/clonetiler.cpp:2446 msgid "Alternate the sign of opacity change for each column" -msgstr "" +msgstr "החלף את סימן שינוי האטימות עבור כל עמודה" -#: ../src/dialogs/clonetiler.cpp:2437 +#: ../src/dialogs/clonetiler.cpp:2454 msgid "Co_lor" -msgstr "" +msgstr "_צבע" -#: ../src/dialogs/clonetiler.cpp:2442 +#: ../src/dialogs/clonetiler.cpp:2459 msgid "Initial color: " -msgstr "" +msgstr "צבע התחלתי: " -#: ../src/dialogs/clonetiler.cpp:2446 +#: ../src/dialogs/clonetiler.cpp:2463 msgid "Initial color of tiled clones" -msgstr "" +msgstr "צבעם ההתחלתי של האריחים המשוכפלים" -#: ../src/dialogs/clonetiler.cpp:2446 -msgid "" -"Initial color for clones (works only if the original has unset fill or " -"stroke)" -msgstr "" +#: ../src/dialogs/clonetiler.cpp:2463 +msgid "Initial color for clones (works only if the original has unset fill or stroke)" +msgstr "צבעם ההתחלתי של הכפילים (עובד רק אם לא נקבע צבע המילוי או קו המתאר למקור)" -#: ../src/dialogs/clonetiler.cpp:2461 +#: ../src/dialogs/clonetiler.cpp:2478 msgid "H:" -msgstr "" +msgstr "H:" -#: ../src/dialogs/clonetiler.cpp:2468 +#: ../src/dialogs/clonetiler.cpp:2485 msgid "Change the tile hue by this percentage for each row" -msgstr "" +msgstr "שנה את גוון האריח באחוזים אלה עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2475 +#: ../src/dialogs/clonetiler.cpp:2492 msgid "Change the tile hue by this percentage for each column" -msgstr "" +msgstr "שנה את גוון האריח באחוזים אלה עבור כל עמודה" -#: ../src/dialogs/clonetiler.cpp:2482 +#: ../src/dialogs/clonetiler.cpp:2499 msgid "Randomize the tile hue by this percentage" -msgstr "" +msgstr "שנה את גוון האריח באופן אקראי לפי אחוזים אלו" -#: ../src/dialogs/clonetiler.cpp:2491 +#: ../src/dialogs/clonetiler.cpp:2508 msgid "S:" -msgstr "" +msgstr "S:" -#: ../src/dialogs/clonetiler.cpp:2498 +#: ../src/dialogs/clonetiler.cpp:2515 msgid "Change the color saturation by this percentage for each row" -msgstr "" +msgstr "שנה את רוויית הצבע באחוזים אלו עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2505 +#: ../src/dialogs/clonetiler.cpp:2522 msgid "Change the color saturation by this percentage for each column" -msgstr "" +msgstr "שנה את רוויית הצבע באחוזים אלו עבור כל עמודה" -#: ../src/dialogs/clonetiler.cpp:2512 +#: ../src/dialogs/clonetiler.cpp:2529 msgid "Randomize the color saturation by this percentage" -msgstr "" +msgstr "שנה את רוויית הצבע באופן אקראי לפי אחוזים אלו" -#: ../src/dialogs/clonetiler.cpp:2520 +#: ../src/dialogs/clonetiler.cpp:2537 msgid "L:" -msgstr "" +msgstr "L:" -#: ../src/dialogs/clonetiler.cpp:2527 +#: ../src/dialogs/clonetiler.cpp:2544 msgid "Change the color lightness by this percentage for each row" -msgstr "" +msgstr "שנה את תאורת הצבע לפי אחוזים אלו עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2534 +#: ../src/dialogs/clonetiler.cpp:2551 msgid "Change the color lightness by this percentage for each column" -msgstr "" +msgstr "שנה את תאורת הצבע לפי אחוזים אלו עבור כל עמודה" -#: ../src/dialogs/clonetiler.cpp:2541 +#: ../src/dialogs/clonetiler.cpp:2558 msgid "Randomize the color lightness by this percentage" -msgstr "" +msgstr "שנה באקראי את תאורת הצבע לפי אחוזים אלו" -#: ../src/dialogs/clonetiler.cpp:2555 +#: ../src/dialogs/clonetiler.cpp:2572 msgid "Alternate the sign of color changes for each row" -msgstr "" +msgstr "החלף את סימן שינויי הצבעים עבור כל שורה" -#: ../src/dialogs/clonetiler.cpp:2560 +#: ../src/dialogs/clonetiler.cpp:2577 msgid "Alternate the sign of color changes for each column" -msgstr "" +msgstr "החלף את סימן שינויי הצבעים עבור כל עמודה" -#: ../src/dialogs/clonetiler.cpp:2568 +#: ../src/dialogs/clonetiler.cpp:2585 msgid "_Trace" -msgstr "" +msgstr "_עקוב" -#: ../src/dialogs/clonetiler.cpp:2575 +#: ../src/dialogs/clonetiler.cpp:2592 msgid "Trace the drawing under the tiles" -msgstr "" +msgstr "עקוב אחר הציור שמתחת לאריחים" -#: ../src/dialogs/clonetiler.cpp:2579 -msgid "" -"For each clone, pick a value from the drawing in that clone's location and " -"apply it to the clone" -msgstr "" +#: ../src/dialogs/clonetiler.cpp:2596 +msgid "For each clone, pick a value from the drawing in that clone's location and apply it to the clone" +msgstr "עבור כל כפיל, בחר ערך מהציור ממיקום הכפיל והחל אותו על הכפיל" -#: ../src/dialogs/clonetiler.cpp:2593 +#: ../src/dialogs/clonetiler.cpp:2610 msgid "1. Pick from the drawing:" -msgstr "" +msgstr "1. בחר מהציור:" -#: ../src/dialogs/clonetiler.cpp:2604 ../src/dialogs/clonetiler.cpp:2751 +#: ../src/dialogs/clonetiler.cpp:2621 +#: ../src/dialogs/clonetiler.cpp:2768 #: ../src/extension/internal/bitmap/colorize.cpp:51 #: ../share/extensions/color_brighter.inx.h:2 #: ../share/extensions/color_custom.inx.h:2 @@ -677,1207 +676,1290 @@ msgstr "" #: ../share/extensions/color_replace.inx.h:2 #: ../share/extensions/color_rgbbarrel.inx.h:1 msgid "Color" -msgstr "" +msgstr "צבע" -#: ../src/dialogs/clonetiler.cpp:2605 +#: ../src/dialogs/clonetiler.cpp:2622 msgid "Pick the visible color and opacity" -msgstr "" +msgstr "בחר את הצבע הנראה ואת אטימותו" -#: ../src/dialogs/clonetiler.cpp:2612 ../src/dialogs/clonetiler.cpp:2761 +#: ../src/dialogs/clonetiler.cpp:2629 +#: ../src/dialogs/clonetiler.cpp:2778 #: ../src/extension/internal/bitmap/opacity.cpp:37 #: ../src/extension/internal/bitmap/opacity.cpp:39 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2241 -#: ../src/widgets/toolbox.cpp:3405 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2255 +#: ../src/widgets/toolbox.cpp:3863 msgid "Opacity" -msgstr "" +msgstr "אטימות" -#: ../src/dialogs/clonetiler.cpp:2613 +#: ../src/dialogs/clonetiler.cpp:2630 msgid "Pick the total accumulated opacity" -msgstr "" +msgstr "בחר את האטימות הכללית המצטברת" -#: ../src/dialogs/clonetiler.cpp:2620 +#: ../src/dialogs/clonetiler.cpp:2637 msgid "R" -msgstr "" +msgstr "R" -#: ../src/dialogs/clonetiler.cpp:2621 +#: ../src/dialogs/clonetiler.cpp:2638 msgid "Pick the Red component of the color" -msgstr "" +msgstr "בחר את הרכב האדום של הצבע" -#: ../src/dialogs/clonetiler.cpp:2628 +#: ../src/dialogs/clonetiler.cpp:2645 msgid "G" -msgstr "" +msgstr "G" -#: ../src/dialogs/clonetiler.cpp:2629 +#: ../src/dialogs/clonetiler.cpp:2646 msgid "Pick the Green component of the color" -msgstr "" +msgstr "בחר את הרכב הירוק של הצבע" -#: ../src/dialogs/clonetiler.cpp:2636 +#: ../src/dialogs/clonetiler.cpp:2653 msgid "B" -msgstr "" +msgstr "B" -#: ../src/dialogs/clonetiler.cpp:2637 +#: ../src/dialogs/clonetiler.cpp:2654 msgid "Pick the Blue component of the color" -msgstr "" +msgstr "בחר את הרכב הכחול של הצבע" #. TRANSLATORS: only translate "string" in "context|string". #. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS -#: ../src/dialogs/clonetiler.cpp:2646 +#: ../src/dialogs/clonetiler.cpp:2663 msgid "clonetiler|H" -msgstr "" +msgstr "clonetiler|H" -#: ../src/dialogs/clonetiler.cpp:2647 +#: ../src/dialogs/clonetiler.cpp:2664 msgid "Pick the hue of the color" -msgstr "" +msgstr "בחר את גוון צבע" #. TRANSLATORS: only translate "string" in "context|string". #. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS -#: ../src/dialogs/clonetiler.cpp:2656 +#: ../src/dialogs/clonetiler.cpp:2673 msgid "clonetiler|S" -msgstr "" +msgstr "clonetiler|S" -#: ../src/dialogs/clonetiler.cpp:2657 +#: ../src/dialogs/clonetiler.cpp:2674 msgid "Pick the saturation of the color" -msgstr "" +msgstr "בחר את רוויית הצבע" #. TRANSLATORS: only translate "string" in "context|string". #. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS -#: ../src/dialogs/clonetiler.cpp:2666 +#: ../src/dialogs/clonetiler.cpp:2683 msgid "clonetiler|L" -msgstr "" +msgstr "clonetiler|L" -#: ../src/dialogs/clonetiler.cpp:2667 +#: ../src/dialogs/clonetiler.cpp:2684 msgid "Pick the lightness of the color" -msgstr "" +msgstr "בחר את תאורת הצבע" -#: ../src/dialogs/clonetiler.cpp:2677 +#: ../src/dialogs/clonetiler.cpp:2694 msgid "2. Tweak the picked value:" -msgstr "" +msgstr "2. שפר את הערך שנבחר:" -#: ../src/dialogs/clonetiler.cpp:2687 +#: ../src/dialogs/clonetiler.cpp:2704 msgid "Gamma-correct:" -msgstr "" +msgstr "תיקון גאמה:" -#: ../src/dialogs/clonetiler.cpp:2692 +#: ../src/dialogs/clonetiler.cpp:2709 msgid "Shift the mid-range of the picked value upwards (>0) or downwards (<0)" -msgstr "" +msgstr "הזז את טווח האמצע של הערך הנבחר כלפי מעלה (>0) או מטה (<0)" -#: ../src/dialogs/clonetiler.cpp:2699 +#: ../src/dialogs/clonetiler.cpp:2716 msgid "Randomize:" -msgstr "" +msgstr "בחר באקראי:" -#: ../src/dialogs/clonetiler.cpp:2704 +#: ../src/dialogs/clonetiler.cpp:2721 msgid "Randomize the picked value by this percentage" -msgstr "" +msgstr "שנה באקראי את הצבע הנבחר לפי אחוזים אלו" -#: ../src/dialogs/clonetiler.cpp:2711 +#: ../src/dialogs/clonetiler.cpp:2728 msgid "Invert:" -msgstr "" +msgstr "הפוך:" -#: ../src/dialogs/clonetiler.cpp:2715 +#: ../src/dialogs/clonetiler.cpp:2732 msgid "Invert the picked value" -msgstr "" +msgstr "הפוך את הערך הנבחר" -#: ../src/dialogs/clonetiler.cpp:2721 +#: ../src/dialogs/clonetiler.cpp:2738 msgid "3. Apply the value to the clones':" -msgstr "" +msgstr "3. החל את הערך על הכפילים:" -#: ../src/dialogs/clonetiler.cpp:2731 +#: ../src/dialogs/clonetiler.cpp:2748 msgid "Presence" -msgstr "" +msgstr "נוכחות" -#: ../src/dialogs/clonetiler.cpp:2734 -msgid "" -"Each clone is created with the probability determined by the picked value in " -"that point" -msgstr "" +#: ../src/dialogs/clonetiler.cpp:2751 +msgid "Each clone is created with the probability determined by the picked value in that point" +msgstr "כל כפיל נוצר עם סבירות הנקבעת על ידי הערך הנבחר בנקודה זו" -#: ../src/dialogs/clonetiler.cpp:2741 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2216 +#: ../src/dialogs/clonetiler.cpp:2758 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2230 msgid "Size" -msgstr "" +msgstr "גודל" -#: ../src/dialogs/clonetiler.cpp:2744 +#: ../src/dialogs/clonetiler.cpp:2761 msgid "Each clone's size is determined by the picked value in that point" -msgstr "" +msgstr "גודלו של כל כפיל נקבע על ידי הערך הנבחר בנקודה זו" -#: ../src/dialogs/clonetiler.cpp:2754 -msgid "" -"Each clone is painted by the picked color (the original must have unset fill " -"or stroke)" -msgstr "" +#: ../src/dialogs/clonetiler.cpp:2771 +msgid "Each clone is painted by the picked color (the original must have unset fill or stroke)" +msgstr "כל כפיל נצבע לפי הצבע הנבחר (על המקור להיות נטול צבע מילוי או קו מתאר)" -#: ../src/dialogs/clonetiler.cpp:2764 +#: ../src/dialogs/clonetiler.cpp:2781 msgid "Each clone's opacity is determined by the picked value in that point" -msgstr "" +msgstr "אטימותו של כל כפיל נקבעת על ידי הערך בנקודה זו" -#: ../src/dialogs/clonetiler.cpp:2791 +#: ../src/dialogs/clonetiler.cpp:2808 msgid "How many rows in the tiling" -msgstr "" +msgstr "כמה שורות בריצוף" -#: ../src/dialogs/clonetiler.cpp:2811 +#: ../src/dialogs/clonetiler.cpp:2828 msgid "How many columns in the tiling" -msgstr "" +msgstr "כמה עמודות בריצוף" -#: ../src/dialogs/clonetiler.cpp:2841 +#: ../src/dialogs/clonetiler.cpp:2858 msgid "Width of the rectangle to be filled" -msgstr "" +msgstr "רוחב המרובע שיש למלא" -#: ../src/dialogs/clonetiler.cpp:2866 +#: ../src/dialogs/clonetiler.cpp:2883 msgid "Height of the rectangle to be filled" -msgstr "" +msgstr "גובה המרובע שיש למלא" -#: ../src/dialogs/clonetiler.cpp:2881 +#: ../src/dialogs/clonetiler.cpp:2898 msgid "Rows, columns: " -msgstr "" +msgstr "שורות, עמודות: " -#: ../src/dialogs/clonetiler.cpp:2882 +#: ../src/dialogs/clonetiler.cpp:2899 msgid "Create the specified number of rows and columns" -msgstr "" +msgstr "צור את מספר השורות והעמודות המצויין" -#: ../src/dialogs/clonetiler.cpp:2891 +#: ../src/dialogs/clonetiler.cpp:2908 msgid "Width, height: " -msgstr "" +msgstr "רוחב, גובה: " -#: ../src/dialogs/clonetiler.cpp:2892 +#: ../src/dialogs/clonetiler.cpp:2909 msgid "Fill the specified width and height with the tiling" -msgstr "" +msgstr "מלא את הגובה והרוחב המצויינים בריצוף" -#: ../src/dialogs/clonetiler.cpp:2908 +#: ../src/dialogs/clonetiler.cpp:2925 msgid "Use saved size and position of the tile" -msgstr "" +msgstr "השתמש בגודל ובמיקום השמורים של האריח" -#: ../src/dialogs/clonetiler.cpp:2911 -msgid "" -"Pretend that the size and position of the tile are the same as the last time " -"you tiled it (if any), instead of using the current size" -msgstr "" +#: ../src/dialogs/clonetiler.cpp:2928 +msgid "Pretend that the size and position of the tile are the same as the last time you tiled it (if any), instead of using the current size" +msgstr "העמד פנים שגודל ומיקום האריח הינם זהים לפעם האחרונה שריצפת אותם (אם בכלל), במקום להשתמש בגודל הנוכחי" -#: ../src/dialogs/clonetiler.cpp:2935 +#: ../src/dialogs/clonetiler.cpp:2952 msgid " _Create " -msgstr "" +msgstr " _צור " -#: ../src/dialogs/clonetiler.cpp:2937 +#: ../src/dialogs/clonetiler.cpp:2954 msgid "Create and tile the clones of the selection" -msgstr "" +msgstr "צור ורצף את הכפילים של הבחירה" #. TRANSLATORS: if a group of objects are "clumped" together, then they #. are unevenly spread in the given amount of space - as shown in the #. diagrams on the left in the following screenshot: #. http://www.inkscape.org/screenshots/gallery/inkscape-0.42-CVS-tiles-unclump.png #. So unclumping is the process of spreading a number of objects out more evenly. -#: ../src/dialogs/clonetiler.cpp:2952 +#: ../src/dialogs/clonetiler.cpp:2969 msgid " _Unclump " -msgstr "" +msgstr " _פזר " -#: ../src/dialogs/clonetiler.cpp:2953 +#: ../src/dialogs/clonetiler.cpp:2970 msgid "Spread out clones to reduce clumping; can be applied repeatedly" -msgstr "" +msgstr "פזר את הכפילים כדי להקטין את הגיבוש; ניתן להחיל מספר פעמים" -#: ../src/dialogs/clonetiler.cpp:2959 +#: ../src/dialogs/clonetiler.cpp:2976 msgid " Re_move " -msgstr "" +msgstr " ה_סר " -#: ../src/dialogs/clonetiler.cpp:2960 +#: ../src/dialogs/clonetiler.cpp:2977 msgid "Remove existing tiled clones of the selected object (siblings only)" -msgstr "" +msgstr "הסר את הכפילים המרוצפים של הפריט הנבחר (אחים ואחיות בלבד)" -#: ../src/dialogs/clonetiler.cpp:2976 +#: ../src/dialogs/clonetiler.cpp:2993 msgid " R_eset " -msgstr "" +msgstr " א_יפוס " #. TRANSLATORS: "change" is a noun here -#: ../src/dialogs/clonetiler.cpp:2978 -msgid "" -"Reset all shifts, scales, rotates, opacity and color changes in the dialog " -"to zero" -msgstr "" +#: ../src/dialogs/clonetiler.cpp:2995 +msgid "Reset all shifts, scales, rotates, opacity and color changes in the dialog to zero" +msgstr "אפס את כל ההסטות, שינויי הגודל, ההטיות, האטימות ושינויי הצבעים בתיבת הדו־שיח לאפס" #: ../src/dialogs/debugdialog.cpp:135 msgid "Messages" -msgstr "" +msgstr "הודעות" #. ## Add a menu for clear() -#: ../src/dialogs/debugdialog.cpp:141 ../src/menus-skeleton.h:16 -#: ../src/ui/dialog/messages.cpp:54 ../src/ui/dialog/scriptdialog.cpp:208 +#: ../src/dialogs/debugdialog.cpp:141 +#: ../src/menus-skeleton.h:16 +#: ../src/ui/dialog/messages.cpp:52 +#: ../src/ui/dialog/scriptdialog.cpp:208 msgid "_File" -msgstr "" +msgstr "_קובץ" #. TRANSLATORS: "Clear" is a verb here -#: ../src/dialogs/debugdialog.cpp:142 ../src/dialogs/find.cpp:753 -#: ../src/ui/dialog/find.cpp:85 ../src/ui/dialog/messages.cpp:55 +#: ../src/dialogs/debugdialog.cpp:142 +#: ../src/dialogs/find.cpp:755 +#: ../src/ui/dialog/find.cpp:84 +#: ../src/ui/dialog/messages.cpp:53 #: ../src/ui/dialog/scriptdialog.cpp:209 msgid "_Clear" -msgstr "" +msgstr "_ניקוי" -#: ../src/dialogs/debugdialog.cpp:144 ../src/ui/dialog/messages.cpp:57 +#: ../src/dialogs/debugdialog.cpp:144 +#: ../src/ui/dialog/messages.cpp:55 msgid "Capture log messages" -msgstr "" +msgstr "לכוד הודעות בדוח" -#: ../src/dialogs/debugdialog.cpp:146 ../src/ui/dialog/messages.cpp:59 +#: ../src/dialogs/debugdialog.cpp:146 +#: ../src/ui/dialog/messages.cpp:57 msgid "Release log messages" -msgstr "" +msgstr "שחרר הודעות בדוח" #: ../src/dialogs/eek-color-def.cpp:56 #: ../src/widgets/gradient-selector.cpp:162 msgid "none" -msgstr "" +msgstr "ללא" -#: ../src/dialogs/export.cpp:143 ../src/verbs.cpp:2532 +#: ../src/dialogs/export.cpp:143 +#: ../src/verbs.cpp:2599 msgid "_Page" -msgstr "" +msgstr "_עמוד" -#: ../src/dialogs/export.cpp:143 ../src/verbs.cpp:2536 +#: ../src/dialogs/export.cpp:143 +#: ../src/verbs.cpp:2603 msgid "_Drawing" -msgstr "" +msgstr "_ציור" -#: ../src/dialogs/export.cpp:143 ../src/verbs.cpp:2538 +#: ../src/dialogs/export.cpp:143 +#: ../src/verbs.cpp:2605 msgid "_Selection" -msgstr "" +msgstr "_בחירה" #: ../src/dialogs/export.cpp:143 msgid "_Custom" -msgstr "" +msgstr "_התאם אישית" -#: ../src/dialogs/export.cpp:267 +#: ../src/dialogs/export.cpp:268 msgid "Export area" -msgstr "" +msgstr "אזור ייצוא" -#: ../src/dialogs/export.cpp:281 +#: ../src/dialogs/export.cpp:282 msgid "Units:" -msgstr "" +msgstr "יחידות:" -#: ../src/dialogs/export.cpp:309 +#: ../src/dialogs/export.cpp:310 msgid "_x0:" -msgstr "" +msgstr "_x0:" -#: ../src/dialogs/export.cpp:314 +#: ../src/dialogs/export.cpp:315 msgid "x_1:" -msgstr "" +msgstr "x_1:" -#. Stroke width -#: ../src/dialogs/export.cpp:319 ../src/dialogs/object-attributes.cpp:60 +#: ../src/dialogs/export.cpp:320 +#: ../src/dialogs/object-attributes.cpp:60 #: ../src/dialogs/object-attributes.cpp:68 -#: ../src/dialogs/stroke-style.cpp:1090 ../src/widgets/toolbox.cpp:3241 -#: ../src/widgets/toolbox.cpp:3645 ../src/widgets/toolbox.cpp:4318 +#: ../src/widgets/toolbox.cpp:3661 +#: ../src/widgets/toolbox.cpp:4251 +#: ../src/widgets/toolbox.cpp:5270 msgid "Width:" -msgstr "" +msgstr "רוחב:" -#: ../src/dialogs/export.cpp:325 +#: ../src/dialogs/export.cpp:326 msgid "_y0:" -msgstr "" +msgstr "_y0:" -#: ../src/dialogs/export.cpp:330 +#: ../src/dialogs/export.cpp:331 msgid "y_1:" -msgstr "" +msgstr "y_1:" -#: ../src/dialogs/export.cpp:335 ../src/dialogs/export.cpp:495 +#: ../src/dialogs/export.cpp:336 +#: ../src/dialogs/export.cpp:495 #: ../src/dialogs/object-attributes.cpp:61 #: ../src/dialogs/object-attributes.cpp:69 msgid "Height:" -msgstr "" +msgstr "גובה:" -#: ../src/dialogs/export.cpp:466 +#: ../src/dialogs/export.cpp:468 msgid "Bitmap size" -msgstr "" +msgstr "גודל מפת הסיביות" -#: ../src/dialogs/export.cpp:479 ../src/ui/widget/page-sizer.cpp:191 +#: ../src/dialogs/export.cpp:481 +#: ../src/ui/widget/page-sizer.cpp:209 msgid "_Width:" -msgstr "" +msgstr "_רוחב:" -#: ../src/dialogs/export.cpp:479 ../src/dialogs/export.cpp:495 +#: ../src/dialogs/export.cpp:481 +#: ../src/dialogs/export.cpp:495 msgid "pixels at" -msgstr "" +msgstr "פיקסלים ב־" #: ../src/dialogs/export.cpp:489 msgid "dp_i" -msgstr "" +msgstr "dp_i" -#: ../src/dialogs/export.cpp:508 ../src/ui/dialog/inkscape-preferences.cpp:673 +#: ../src/dialogs/export.cpp:506 +#: ../src/ui/dialog/inkscape-preferences.cpp:723 +#: ../src/ui/dialog/inkscape-preferences.cpp:1083 msgid "dpi" -msgstr "" +msgstr "dpi" #. true = has mnemonic -#: ../src/dialogs/export.cpp:519 +#: ../src/dialogs/export.cpp:517 msgid "_Filename" -msgstr "" +msgstr "_שם הקובץ" -#: ../src/dialogs/export.cpp:590 +#: ../src/dialogs/export.cpp:588 msgid "_Browse..." -msgstr "" +msgstr "_עיין..." -#: ../src/dialogs/export.cpp:619 +#: ../src/dialogs/export.cpp:617 msgid "Batch export all selected objects" -msgstr "" +msgstr "ייצא בנפרד את כל הפריטים הנבחרים" -#: ../src/dialogs/export.cpp:623 -msgid "" -"Export each selected object into its own PNG file, using export hints if any " -"(caution, overwrites without asking!)" -msgstr "" +#: ../src/dialogs/export.cpp:621 +msgid "Export each selected object into its own PNG file, using export hints if any (caution, overwrites without asking!)" +msgstr "ייצא כל פריט נבחר לקובץ PNG בפני עצמו, באמצעות רמזי ייצוא אם בכלל (זהירות, משכתב מבלי לשאול!)" -#: ../src/dialogs/export.cpp:631 +#: ../src/dialogs/export.cpp:629 msgid "Hide all except selected" -msgstr "" +msgstr "הסתר את הכל מלבד הנבחרים" -#: ../src/dialogs/export.cpp:635 +#: ../src/dialogs/export.cpp:633 msgid "In the exported image, hide all objects except those that are selected" -msgstr "" +msgstr "בתמונה המיוצאת, הסתר את כל הפריטים, מלבד אלו שנבחרו" -#: ../src/dialogs/export.cpp:652 +#: ../src/dialogs/export.cpp:650 msgid "_Export" -msgstr "" +msgstr "_ייצא" -#: ../src/dialogs/export.cpp:656 +#: ../src/dialogs/export.cpp:654 msgid "Export the bitmap file with these settings" -msgstr "" +msgstr "ייצא את קובץ מפת הסיביות עם הגדרות אלו" -#: ../src/dialogs/export.cpp:682 +#: ../src/dialogs/export.cpp:680 #, c-format msgid "Batch export %d selected object" msgid_plural "Batch export %d selected objects" -msgstr[0] "" +msgstr[0] "ייצא בצרור את %d הפריט הנבחר" +msgstr[1] "ייצא בצרור את %d הפריטים הנבחרים" -#: ../src/dialogs/export.cpp:1014 +#: ../src/dialogs/export.cpp:1011 msgid "Export in progress" -msgstr "" +msgstr "ייצוא בתהליכים" -#: ../src/dialogs/export.cpp:1084 +#: ../src/dialogs/export.cpp:1081 #, c-format msgid "Exporting %d files" -msgstr "" +msgstr "מייצא %d קבצים" -#: ../src/dialogs/export.cpp:1124 ../src/dialogs/export.cpp:1196 +#: ../src/dialogs/export.cpp:1121 +#: ../src/dialogs/export.cpp:1193 #, c-format msgid "Could not export to filename %s.\n" -msgstr "" +msgstr "לא ניתן לייצא את שם הקובץ %s.\n" -#: ../src/dialogs/export.cpp:1152 +#: ../src/dialogs/export.cpp:1149 msgid "You have to enter a filename" -msgstr "" +msgstr "עליך להזין שם קובץ" -#: ../src/dialogs/export.cpp:1157 +#: ../src/dialogs/export.cpp:1154 msgid "The chosen area to be exported is invalid" -msgstr "" +msgstr "האיזור הנבחר לייצוא אינו תקני" -#: ../src/dialogs/export.cpp:1166 +#: ../src/dialogs/export.cpp:1163 #, c-format msgid "Directory %s does not exist or is not a directory.\n" -msgstr "" +msgstr "התיקיה %s אינה קיימת או שאינה תיקיה.\n" -#: ../src/dialogs/export.cpp:1182 +#: ../src/dialogs/export.cpp:1179 #, c-format msgid "Exporting %s (%lu x %lu)" -msgstr "" +msgstr "מייצא את %s (%lu x %lu)" -#: ../src/dialogs/export.cpp:1303 +#: ../src/dialogs/export.cpp:1300 msgid "Select a filename for exporting" -msgstr "" +msgstr "בחר שם קובץ לייצוא" #: ../src/dialogs/fill-style.cpp:283 msgid "Change fill rule" -msgstr "" +msgstr "שנה את חוק המילוי" -#: ../src/dialogs/fill-style.cpp:323 ../src/dialogs/fill-style.cpp:397 +#: ../src/dialogs/fill-style.cpp:323 +#: ../src/dialogs/fill-style.cpp:397 msgid "Set fill color" -msgstr "" +msgstr "הגדר את צבע המילוי" -#: ../src/dialogs/fill-style.cpp:385 ../src/ui/widget/selected-style.cpp:255 -#: ../src/ui/widget/selected-style.cpp:479 +#: ../src/dialogs/fill-style.cpp:385 +#: ../src/ui/widget/selected-style.cpp:255 +#: ../src/ui/widget/selected-style.cpp:475 msgid "Remove fill" -msgstr "" +msgstr "הסר את המילוי" #: ../src/dialogs/fill-style.cpp:466 msgid "Set gradient on fill" -msgstr "" +msgstr "הגדר מילוי מדורג" #: ../src/dialogs/fill-style.cpp:513 msgid "Set pattern on fill" -msgstr "" +msgstr "הגדר תבנית למילוי" #. TRANSLATORS COMMENT: unset is a verb here -#: ../src/dialogs/fill-style.cpp:528 ../src/ui/widget/selected-style.cpp:193 +#: ../src/dialogs/fill-style.cpp:528 +#: ../src/ui/widget/selected-style.cpp:193 #: ../src/ui/widget/selected-style.cpp:251 -#: ../src/ui/widget/selected-style.cpp:497 -#: ../src/ui/widget/style-swatch.cpp:335 +#: ../src/ui/widget/selected-style.cpp:493 +#: ../src/ui/widget/style-swatch.cpp:303 msgid "Unset fill" -msgstr "" +msgstr "בטל את הגדרת המילוי" #. TRANSLATORS: "%s" is replaced with "exact" or "partial" when this string is displayed -#: ../src/dialogs/find.cpp:372 ../src/ui/dialog/find.cpp:436 +#: ../src/dialogs/find.cpp:373 +#: ../src/ui/dialog/find.cpp:435 #, c-format msgid "%d object found (out of %d), %s match." msgid_plural "%d objects found (out of %d), %s match." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "פריט %d נמצא (מתוך %d), %s התאמות." +msgstr[1] "נמצאו %d פריטים (מתוך %d), %s התאמות." -#: ../src/dialogs/find.cpp:375 ../src/ui/dialog/find.cpp:439 +#: ../src/dialogs/find.cpp:376 +#: ../src/ui/dialog/find.cpp:438 msgid "exact" -msgstr "" +msgstr "מדוייק" -#: ../src/dialogs/find.cpp:375 ../src/ui/dialog/find.cpp:439 +#: ../src/dialogs/find.cpp:376 +#: ../src/ui/dialog/find.cpp:438 msgid "partial" -msgstr "" +msgstr "חלקי" -#: ../src/dialogs/find.cpp:382 ../src/ui/dialog/find.cpp:446 +#: ../src/dialogs/find.cpp:383 +#: ../src/ui/dialog/find.cpp:445 msgid "No objects found" -msgstr "" +msgstr "לא נמצאו פריטים" -#: ../src/dialogs/find.cpp:540 +#: ../src/dialogs/find.cpp:541 msgid "T_ype: " -msgstr "" +msgstr "_סוג: " -#: ../src/dialogs/find.cpp:547 ../src/ui/dialog/find.cpp:70 +#: ../src/dialogs/find.cpp:548 +#: ../src/ui/dialog/find.cpp:69 msgid "Search in all object types" -msgstr "" +msgstr "חפש בכל סוגי הפריטים" -#: ../src/dialogs/find.cpp:547 ../src/ui/dialog/find.cpp:70 +#: ../src/dialogs/find.cpp:548 +#: ../src/ui/dialog/find.cpp:69 msgid "All types" -msgstr "" +msgstr "כל הסוגים" -#: ../src/dialogs/find.cpp:558 ../src/ui/dialog/find.cpp:71 +#: ../src/dialogs/find.cpp:559 +#: ../src/ui/dialog/find.cpp:70 msgid "Search all shapes" -msgstr "" +msgstr "חפש את כל הצורות" -#: ../src/dialogs/find.cpp:558 ../src/ui/dialog/find.cpp:71 +#: ../src/dialogs/find.cpp:559 +#: ../src/ui/dialog/find.cpp:70 msgid "All shapes" -msgstr "" +msgstr "כל הצורות" -#: ../src/dialogs/find.cpp:575 ../src/ui/dialog/find.cpp:72 +#: ../src/dialogs/find.cpp:576 +#: ../src/ui/dialog/find.cpp:71 msgid "Search rectangles" -msgstr "" +msgstr "חפש מרובעים" -#: ../src/dialogs/find.cpp:575 ../src/ui/dialog/find.cpp:72 +#: ../src/dialogs/find.cpp:576 +#: ../src/ui/dialog/find.cpp:71 msgid "Rectangles" -msgstr "" +msgstr "מרובעים" -#: ../src/dialogs/find.cpp:580 ../src/ui/dialog/find.cpp:73 +#: ../src/dialogs/find.cpp:581 +#: ../src/ui/dialog/find.cpp:72 msgid "Search ellipses, arcs, circles" -msgstr "" +msgstr "חפש אליפסות, קשתות ומעגלים" -#: ../src/dialogs/find.cpp:580 ../src/ui/dialog/find.cpp:73 +#: ../src/dialogs/find.cpp:581 +#: ../src/ui/dialog/find.cpp:72 msgid "Ellipses" -msgstr "" +msgstr "אליפסות" -#: ../src/dialogs/find.cpp:585 ../src/ui/dialog/find.cpp:74 +#: ../src/dialogs/find.cpp:586 +#: ../src/ui/dialog/find.cpp:73 msgid "Search stars and polygons" -msgstr "" +msgstr "חפש כוכבים ומצולעים" -#: ../src/dialogs/find.cpp:585 ../src/ui/dialog/find.cpp:74 +#: ../src/dialogs/find.cpp:586 +#: ../src/ui/dialog/find.cpp:73 msgid "Stars" -msgstr "" +msgstr "כוכבים" -#: ../src/dialogs/find.cpp:590 ../src/ui/dialog/find.cpp:75 +#: ../src/dialogs/find.cpp:591 +#: ../src/ui/dialog/find.cpp:74 msgid "Search spirals" -msgstr "" +msgstr "חפש ספירלות" -#: ../src/dialogs/find.cpp:590 ../src/ui/dialog/find.cpp:75 +#: ../src/dialogs/find.cpp:591 +#: ../src/ui/dialog/find.cpp:74 msgid "Spirals" -msgstr "" +msgstr "ספירלות" #. TRANSLATORS: polyline is a set of connected straight line segments #. http://www.w3.org/TR/SVG11/shapes.html#PolylineElement -#: ../src/dialogs/find.cpp:603 ../src/ui/dialog/find.cpp:76 +#: ../src/dialogs/find.cpp:604 +#: ../src/ui/dialog/find.cpp:75 msgid "Search paths, lines, polylines" -msgstr "" +msgstr "חפש נתיבים, קווים, קו שבור" -#: ../src/dialogs/find.cpp:603 ../src/ui/dialog/find.cpp:76 +#: ../src/dialogs/find.cpp:604 +#: ../src/ui/dialog/find.cpp:75 msgid "Paths" -msgstr "" +msgstr "נתיבים" -#: ../src/dialogs/find.cpp:608 ../src/ui/dialog/find.cpp:77 +#: ../src/dialogs/find.cpp:609 +#: ../src/ui/dialog/find.cpp:76 msgid "Search text objects" -msgstr "" +msgstr "חפש פריטי טקסט" -#: ../src/dialogs/find.cpp:608 ../src/ui/dialog/find.cpp:77 +#: ../src/dialogs/find.cpp:609 +#: ../src/ui/dialog/find.cpp:76 msgid "Texts" -msgstr "" +msgstr "טקסטים" -#: ../src/dialogs/find.cpp:613 ../src/ui/dialog/find.cpp:78 +#: ../src/dialogs/find.cpp:614 +#: ../src/ui/dialog/find.cpp:77 msgid "Search groups" -msgstr "" +msgstr "חפש קבוצות" -#: ../src/dialogs/find.cpp:613 ../src/ui/dialog/find.cpp:78 +#: ../src/dialogs/find.cpp:614 +#: ../src/ui/dialog/find.cpp:77 msgid "Groups" -msgstr "" +msgstr "קבוצות" -#: ../src/dialogs/find.cpp:618 ../src/ui/dialog/find.cpp:81 +#: ../src/dialogs/find.cpp:619 +#: ../src/ui/dialog/find.cpp:80 msgid "Search clones" -msgstr "" +msgstr "חפש כפילים" #. TRANSLATORS: Translate the word "Clones" only. A noun indicating type of object to find -#: ../src/dialogs/find.cpp:620 ../src/ui/dialog/find.cpp:81 +#: ../src/dialogs/find.cpp:621 +#: ../src/ui/dialog/find.cpp:80 msgid "find|Clones" -msgstr "" +msgstr "find|כפילים" -#: ../src/dialogs/find.cpp:625 ../src/ui/dialog/find.cpp:82 +#: ../src/dialogs/find.cpp:626 +#: ../src/ui/dialog/find.cpp:81 msgid "Search images" -msgstr "" +msgstr "חפש תמונות" -#: ../src/dialogs/find.cpp:625 ../src/ui/dialog/find.cpp:82 +#: ../src/dialogs/find.cpp:626 +#: ../src/ui/dialog/find.cpp:81 #: ../share/extensions/embedimage.inx.h:3 #: ../share/extensions/extractimage.inx.h:2 msgid "Images" -msgstr "" +msgstr "תמונות" -#: ../src/dialogs/find.cpp:630 ../src/ui/dialog/find.cpp:83 +#: ../src/dialogs/find.cpp:631 +#: ../src/ui/dialog/find.cpp:82 msgid "Search offset objects" -msgstr "" +msgstr "חפש פריטי קיזוז" -#: ../src/dialogs/find.cpp:630 ../src/ui/dialog/find.cpp:83 +#: ../src/dialogs/find.cpp:631 +#: ../src/ui/dialog/find.cpp:82 msgid "Offsets" -msgstr "" +msgstr "קיזוזים" -#: ../src/dialogs/find.cpp:694 ../src/ui/dialog/find.cpp:61 +#: ../src/dialogs/find.cpp:696 +#: ../src/ui/dialog/find.cpp:60 msgid "_Text: " -msgstr "" +msgstr "_טקסט: " -#: ../src/dialogs/find.cpp:694 ../src/ui/dialog/find.cpp:61 +#: ../src/dialogs/find.cpp:696 +#: ../src/ui/dialog/find.cpp:60 msgid "Find objects by their text content (exact or partial match)" -msgstr "" +msgstr "מצא פריטים לפי תוכן הטקסט שלהם (התאמה מלאה או חלקית)" -#: ../src/dialogs/find.cpp:695 ../src/ui/dialog/find.cpp:62 +#: ../src/dialogs/find.cpp:697 +#: ../src/ui/dialog/find.cpp:61 msgid "_ID: " -msgstr "" +msgstr "_מזהה: " -#: ../src/dialogs/find.cpp:695 ../src/ui/dialog/find.cpp:62 +#: ../src/dialogs/find.cpp:697 +#: ../src/ui/dialog/find.cpp:61 msgid "Find objects by the value of the id attribute (exact or partial match)" -msgstr "" +msgstr "מצא פריטים לפי ערך מזהה המאפיין (התאמה מלאה או חלקית)" -#: ../src/dialogs/find.cpp:696 ../src/ui/dialog/find.cpp:63 +#: ../src/dialogs/find.cpp:698 +#: ../src/ui/dialog/find.cpp:62 msgid "_Style: " -msgstr "" +msgstr "_סגנון: " -#: ../src/dialogs/find.cpp:696 ../src/ui/dialog/find.cpp:63 -msgid "" -"Find objects by the value of the style attribute (exact or partial match)" -msgstr "" +#: ../src/dialogs/find.cpp:698 +#: ../src/ui/dialog/find.cpp:62 +msgid "Find objects by the value of the style attribute (exact or partial match)" +msgstr "מצא פריטים לפי ערך מאפיין הסגנון (התאמה מלאה או חלקית)" -#: ../src/dialogs/find.cpp:697 ../src/ui/dialog/find.cpp:64 +#: ../src/dialogs/find.cpp:699 +#: ../src/ui/dialog/find.cpp:63 msgid "_Attribute: " -msgstr "" +msgstr "_מאפיין: " -#: ../src/dialogs/find.cpp:697 ../src/ui/dialog/find.cpp:64 +#: ../src/dialogs/find.cpp:699 +#: ../src/ui/dialog/find.cpp:63 msgid "Find objects by the name of an attribute (exact or partial match)" -msgstr "" +msgstr "חפש פריטים לפי שם המאפיין (התאמה מלאה או חלקית)" -#: ../src/dialogs/find.cpp:711 ../src/ui/dialog/find.cpp:65 +#: ../src/dialogs/find.cpp:713 +#: ../src/ui/dialog/find.cpp:64 msgid "Search in s_election" -msgstr "" +msgstr "חפש ב_בחירה" -#: ../src/dialogs/find.cpp:715 ../src/ui/dialog/find.cpp:65 +#: ../src/dialogs/find.cpp:717 +#: ../src/ui/dialog/find.cpp:64 msgid "Limit search to the current selection" -msgstr "" +msgstr "הגבל את החיפוש לבחירה הנוכחית" -#: ../src/dialogs/find.cpp:720 ../src/ui/dialog/find.cpp:66 +#: ../src/dialogs/find.cpp:722 +#: ../src/ui/dialog/find.cpp:65 msgid "Search in current _layer" -msgstr "" +msgstr "חפש ב_שכבה הנוכחית" -#: ../src/dialogs/find.cpp:724 ../src/ui/dialog/find.cpp:66 +#: ../src/dialogs/find.cpp:726 +#: ../src/ui/dialog/find.cpp:65 msgid "Limit search to the current layer" -msgstr "" +msgstr "הגבל את החיפוש לשכבה הנוכחית" -#: ../src/dialogs/find.cpp:729 ../src/ui/dialog/find.cpp:67 +#: ../src/dialogs/find.cpp:731 +#: ../src/ui/dialog/find.cpp:66 msgid "Include _hidden" -msgstr "" +msgstr "כלול _מוסתרים" -#: ../src/dialogs/find.cpp:733 ../src/ui/dialog/find.cpp:67 +#: ../src/dialogs/find.cpp:735 +#: ../src/ui/dialog/find.cpp:66 msgid "Include hidden objects in search" -msgstr "" +msgstr "כלול פריטים מוסתרים בחיפוש" -#: ../src/dialogs/find.cpp:738 ../src/ui/dialog/find.cpp:68 +#: ../src/dialogs/find.cpp:740 +#: ../src/ui/dialog/find.cpp:67 msgid "Include l_ocked" -msgstr "" +msgstr "כלול _נעולים" -#: ../src/dialogs/find.cpp:742 ../src/ui/dialog/find.cpp:68 +#: ../src/dialogs/find.cpp:744 +#: ../src/ui/dialog/find.cpp:67 msgid "Include locked objects in search" -msgstr "" +msgstr "כלול פריטים נעולים בחיפוש" -#: ../src/dialogs/find.cpp:753 ../src/ui/dialog/find.cpp:85 +#: ../src/dialogs/find.cpp:755 +#: ../src/ui/dialog/find.cpp:84 msgid "Clear values" -msgstr "" +msgstr "נקה ערכים" -#: ../src/dialogs/find.cpp:754 ../src/ui/dialog/find.cpp:86 +#: ../src/dialogs/find.cpp:756 +#: ../src/ui/dialog/find.cpp:85 msgid "_Find" -msgstr "" +msgstr "_חפש" -#: ../src/dialogs/find.cpp:754 ../src/ui/dialog/find.cpp:86 +#: ../src/dialogs/find.cpp:756 +#: ../src/ui/dialog/find.cpp:85 msgid "Select objects matching all of the fields you filled in" -msgstr "" +msgstr "בחר פרטים העונים לכל השדות שמלאת" #: ../src/dialogs/guidelinedialog.cpp:44 -#, fuzzy msgid "Unit:" -msgstr "יחידה" +msgstr "יחידה:" #: ../src/dialogs/guidelinedialog.cpp:45 #: ../src/dialogs/object-attributes.cpp:58 -#: ../src/dialogs/object-attributes.cpp:66 ../src/widgets/toolbox.cpp:1248 +#: ../src/dialogs/object-attributes.cpp:66 +#: ../src/widgets/toolbox.cpp:1455 msgid "X:" -msgstr "" +msgstr "X:" #: ../src/dialogs/guidelinedialog.cpp:46 #: ../src/dialogs/object-attributes.cpp:59 -#: ../src/dialogs/object-attributes.cpp:67 ../src/widgets/toolbox.cpp:1266 +#: ../src/dialogs/object-attributes.cpp:67 +#: ../src/widgets/toolbox.cpp:1473 msgid "Y:" -msgstr "" +msgstr "Y:" #: ../src/dialogs/guidelinedialog.cpp:47 -#, fuzzy msgid "Angle (degrees):" -msgstr "מעלות" +msgstr "זווית (מעלות):" #: ../src/dialogs/guidelinedialog.cpp:48 msgid "Rela_tive change" -msgstr "" +msgstr "שינוי י_חסי" #: ../src/dialogs/guidelinedialog.cpp:48 msgid "Move and/or rotate the guide relative to current settings" -msgstr "" +msgstr "הזז ו/או הטה את הקו המנחה ביחס להגדרותיו הנוכחיות" #: ../src/dialogs/guidelinedialog.cpp:114 msgid "Set guide properties" -msgstr "" +msgstr "הגדר את מאפייני הקו המנחה" #: ../src/dialogs/guidelinedialog.cpp:153 msgid "Guideline" -msgstr "" +msgstr "קו־מנחה" #: ../src/dialogs/guidelinedialog.cpp:241 #, c-format msgid "Guideline ID: %s" -msgstr "" +msgstr "מזהה הקו המנחה: %s" #: ../src/dialogs/guidelinedialog.cpp:247 -#, fuzzy, c-format +#, c-format msgid "Current: %s" -msgstr "שכבה נוכחית" +msgstr "נוכחי: %s" -#: ../src/dialogs/iconpreview.cpp:139 +#: ../src/dialogs/iconpreview.cpp:132 #, c-format msgid "%d x %d" -msgstr "" +msgstr "%d x %d" -#: ../src/dialogs/iconpreview.cpp:187 -#: ../src/ui/dialog/align-and-distribute.cpp:905 +#: ../src/dialogs/iconpreview.cpp:180 +#: ../src/ui/dialog/align-and-distribute.cpp:925 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1368 #: ../src/widgets/desktop-widget.cpp:1552 msgid "Selection" -msgstr "" +msgstr "בחירה" -#: ../src/dialogs/iconpreview.cpp:189 +#: ../src/dialogs/iconpreview.cpp:182 msgid "Selection only or whole document" -msgstr "" +msgstr "בחירה בלבד או המסמך כולו" -#: ../src/dialogs/iconpreview.cpp:197 +#: ../src/dialogs/iconpreview.cpp:190 msgid "Refresh the icons" -msgstr "" +msgstr "רענן את הסמלים" #. Create the label for the object id -#: ../src/dialogs/item-properties.cpp:120 -#: ../src/dialogs/item-properties.cpp:322 -#: ../src/dialogs/item-properties.cpp:413 +#: ../src/dialogs/item-properties.cpp:121 +#: ../src/dialogs/item-properties.cpp:327 #: ../src/dialogs/item-properties.cpp:420 +#: ../src/dialogs/item-properties.cpp:427 msgid "_Id" -msgstr "" +msgstr "_מזהה" -#: ../src/dialogs/item-properties.cpp:129 -msgid "" -"The id= attribute (only letters, digits, and the characters .-_: allowed)" -msgstr "" +#: ../src/dialogs/item-properties.cpp:130 +msgid "The id= attribute (only letters, digits, and the characters .-_: allowed)" +msgstr "ערך המזהה יכול להכיל אותיות באנגלית, ספרות והתווים .-_:" #. Button for setting the object's id, label, title and description. -#: ../src/dialogs/item-properties.cpp:143 ../src/verbs.cpp:2401 -#: ../src/verbs.cpp:2407 +#: ../src/dialogs/item-properties.cpp:144 +#: ../src/verbs.cpp:2462 +#: ../src/verbs.cpp:2468 msgid "_Set" -msgstr "" +msgstr "ה_גדר" #. Create the label for the object label -#: ../src/dialogs/item-properties.cpp:152 +#: ../src/dialogs/item-properties.cpp:153 msgid "_Label" -msgstr "" +msgstr "_תווית" -#: ../src/dialogs/item-properties.cpp:161 +#: ../src/dialogs/item-properties.cpp:162 msgid "A freeform label for the object" -msgstr "" +msgstr "תווית חופשית עבור הפריט" #. Create the label for the object title -#: ../src/dialogs/item-properties.cpp:173 ../src/dialogs/rdf.cpp:238 -msgid "Title" -msgstr "" +#: ../src/dialogs/item-properties.cpp:174 +msgid "_Title" +msgstr "_כותרת" #. Create the frame for the object description -#: ../src/dialogs/item-properties.cpp:190 ../src/dialogs/rdf.cpp:282 -#: ../src/ui/widget/page-sizer.cpp:200 -msgid "Description" -msgstr "" +#: ../src/dialogs/item-properties.cpp:192 +msgid "_Description" +msgstr "_תיאור" #. Hide -#: ../src/dialogs/item-properties.cpp:218 +#: ../src/dialogs/item-properties.cpp:223 msgid "_Hide" -msgstr "" +msgstr "ה_סתר" -#: ../src/dialogs/item-properties.cpp:219 +#: ../src/dialogs/item-properties.cpp:224 msgid "Check to make the object invisible" -msgstr "" +msgstr "סמן כדי להפוך את הפריט לבלתי נראה" #. Lock #. TRANSLATORS: "Lock" is a verb here -#: ../src/dialogs/item-properties.cpp:228 +#: ../src/dialogs/item-properties.cpp:233 msgid "L_ock" -msgstr "" +msgstr "_נעל" -#: ../src/dialogs/item-properties.cpp:229 +#: ../src/dialogs/item-properties.cpp:234 msgid "Check to make the object insensitive (not selectable by mouse)" -msgstr "" +msgstr "סמן כדי להפוך את הפריט לבלתי רגיש (לא ניתן לבחירה עם העכבר)" -#: ../src/dialogs/item-properties.cpp:305 -#: ../src/dialogs/item-properties.cpp:312 +#: ../src/dialogs/item-properties.cpp:310 +#: ../src/dialogs/item-properties.cpp:317 msgid "Ref" -msgstr "" +msgstr "הפניה" -#: ../src/dialogs/item-properties.cpp:372 +#: ../src/dialogs/item-properties.cpp:379 msgid "Lock object" -msgstr "" +msgstr "נעל פריט" -#: ../src/dialogs/item-properties.cpp:372 +#: ../src/dialogs/item-properties.cpp:379 msgid "Unlock object" -msgstr "" +msgstr "שחרר פריט" -#: ../src/dialogs/item-properties.cpp:391 +#: ../src/dialogs/item-properties.cpp:398 msgid "Hide object" -msgstr "" +msgstr "הסתר את הפריט" -#: ../src/dialogs/item-properties.cpp:391 +#: ../src/dialogs/item-properties.cpp:398 msgid "Unhide object" -msgstr "" +msgstr "הצג את הפריט" -#: ../src/dialogs/item-properties.cpp:415 +#: ../src/dialogs/item-properties.cpp:422 msgid "Id invalid! " -msgstr "" +msgstr "מזהה שגוי! " -#: ../src/dialogs/item-properties.cpp:417 +#: ../src/dialogs/item-properties.cpp:424 msgid "Id exists! " -msgstr "" +msgstr "מזהה קיים! " -#: ../src/dialogs/item-properties.cpp:424 +#: ../src/dialogs/item-properties.cpp:431 msgid "Set object ID" -msgstr "" +msgstr "הגדר מזהה פריט" -#: ../src/dialogs/item-properties.cpp:439 +#: ../src/dialogs/item-properties.cpp:446 msgid "Set object label" -msgstr "" +msgstr "הגדר תווית לפריט" -#: ../src/dialogs/item-properties.cpp:450 +#: ../src/dialogs/item-properties.cpp:454 msgid "Set object title" -msgstr "" +msgstr "הגדר כותרת לפריט" -#: ../src/dialogs/item-properties.cpp:465 +#: ../src/dialogs/item-properties.cpp:464 msgid "Set object description" -msgstr "" +msgstr "הגדר את תיאור הפריט" #: ../src/dialogs/layer-properties.cpp:47 msgid "Layer name:" -msgstr "" +msgstr "שם השכבה:" #: ../src/dialogs/layer-properties.cpp:115 msgid "Add layer" -msgstr "" +msgstr "הוסף שכבה" #: ../src/dialogs/layer-properties.cpp:153 msgid "Above current" -msgstr "" +msgstr "מעל לנוכחית" #: ../src/dialogs/layer-properties.cpp:157 msgid "Below current" -msgstr "" +msgstr "מתחת לנוכחית" #: ../src/dialogs/layer-properties.cpp:160 msgid "As sublayer of current" -msgstr "" +msgstr "כתת־שכבה של הנוכחית" #: ../src/dialogs/layer-properties.cpp:164 msgid "Position:" -msgstr "" +msgstr "מיקום:" #: ../src/dialogs/layer-properties.cpp:182 msgid "Rename Layer" -msgstr "" +msgstr "שינוי שם השכבה" #: ../src/dialogs/layer-properties.cpp:185 msgid "_Rename" -msgstr "" +msgstr "_שנה שם" #: ../src/dialogs/layer-properties.cpp:195 msgid "Rename layer" -msgstr "" +msgstr "שנה את שם השכבה" #. TRANSLATORS: This means "The layer has been renamed" #: ../src/dialogs/layer-properties.cpp:197 msgid "Renamed layer" -msgstr "" +msgstr "שם השכבה השתנה" #: ../src/dialogs/layer-properties.cpp:201 msgid "Add Layer" -msgstr "" +msgstr "הוסף שכבה" #: ../src/dialogs/layer-properties.cpp:203 msgid "_Add" -msgstr "" +msgstr "_הוסף" #: ../src/dialogs/layer-properties.cpp:225 msgid "New layer created." -msgstr "" +msgstr "נוצרה שכבה חדשה" -#: ../src/dialogs/layers-panel.cpp:579 ../src/widgets/layer-selector.cpp:595 +#: ../src/dialogs/layers-panel.cpp:494 +#: ../src/widgets/layer-selector.cpp:595 msgid "Unhide layer" -msgstr "" +msgstr "הצג את השכבה" -#: ../src/dialogs/layers-panel.cpp:579 ../src/widgets/layer-selector.cpp:595 +#: ../src/dialogs/layers-panel.cpp:494 +#: ../src/widgets/layer-selector.cpp:595 msgid "Hide layer" -msgstr "" +msgstr "הסתר את השכבה" -#: ../src/dialogs/layers-panel.cpp:590 ../src/widgets/layer-selector.cpp:587 +#: ../src/dialogs/layers-panel.cpp:505 +#: ../src/widgets/layer-selector.cpp:587 msgid "Lock layer" -msgstr "" +msgstr "נעל את השכבה" -#: ../src/dialogs/layers-panel.cpp:590 ../src/widgets/layer-selector.cpp:587 +#: ../src/dialogs/layers-panel.cpp:505 +#: ../src/widgets/layer-selector.cpp:587 msgid "Unlock layer" -msgstr "" +msgstr "שחרר את השכבה" + +#: ../src/dialogs/layers-panel.cpp:646 +msgid "Layers" +msgstr "שכבות" -#: ../src/dialogs/layers-panel.cpp:735 +#: ../src/dialogs/layers-panel.cpp:655 msgid "New" -msgstr "" +msgstr "חדש" -#: ../src/dialogs/layers-panel.cpp:740 ../share/extensions/restack.inx.h:16 +#: ../src/dialogs/layers-panel.cpp:660 +#: ../share/extensions/restack.inx.h:16 msgid "Top" -msgstr "" +msgstr "עליון" -#: ../src/dialogs/layers-panel.cpp:746 +#: ../src/dialogs/layers-panel.cpp:666 msgid "Up" -msgstr "" +msgstr "למעלה" -#: ../src/dialogs/layers-panel.cpp:752 +#: ../src/dialogs/layers-panel.cpp:672 msgid "Dn" -msgstr "" +msgstr "מטה" -#: ../src/dialogs/layers-panel.cpp:758 +#: ../src/dialogs/layers-panel.cpp:678 msgid "Bot" -msgstr "" +msgstr "תחתית" -#: ../src/dialogs/layers-panel.cpp:768 +#: ../src/dialogs/layers-panel.cpp:688 msgid "X" -msgstr "" +msgstr "X" #: ../src/dialogs/object-attributes.cpp:39 msgid "Href:" -msgstr "" +msgstr "קישור:" #: ../src/dialogs/object-attributes.cpp:40 msgid "Target:" -msgstr "" +msgstr "יעד:" #: ../src/dialogs/object-attributes.cpp:41 msgid "Type:" -msgstr "" +msgstr "סוג:" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/linking.html#AElementXLinkRoleAttribute #. Identifies the type of the related resource with an absolute URI #: ../src/dialogs/object-attributes.cpp:44 msgid "Role:" -msgstr "" +msgstr "תפקיד:" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/linking.html#AElementXLinkArcRoleAttribute #. For situations where the nature/role alone isn't enough, this offers an additional URI defining the purpose of the link. #: ../src/dialogs/object-attributes.cpp:47 msgid "Arcrole:" -msgstr "" +msgstr "תפקיד יחסי:" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/linking.html#AElementXLinkTitleAttribute #: ../src/dialogs/object-attributes.cpp:49 msgid "Title:" -msgstr "" +msgstr "כותרת:" #: ../src/dialogs/object-attributes.cpp:50 -#: ../share/extensions/polyhedron_3d.inx.h:38 +#: ../share/extensions/polyhedron_3d.inx.h:37 msgid "Show:" -msgstr "" +msgstr "הצג:" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/linking.html#AElementXLinkActuateAttribute #: ../src/dialogs/object-attributes.cpp:52 msgid "Actuate:" -msgstr "" +msgstr "הפעלה:" #: ../src/dialogs/object-attributes.cpp:57 msgid "URL:" -msgstr "" +msgstr "כתובת אינטרנט:" #: ../src/dialogs/object-attributes.cpp:113 #, c-format msgid "%s Properties" -msgstr "" +msgstr "מאפייני %s" -#: ../src/dialogs/rdf.cpp:181 +#: ../src/dialogs/rdf.cpp:182 msgid "CC Attribution" -msgstr "" +msgstr "ייחוס CC" -#: ../src/dialogs/rdf.cpp:186 +#: ../src/dialogs/rdf.cpp:187 msgid "CC Attribution-ShareAlike" -msgstr "" +msgstr "ייחוס CC - שיתוף זהה" -#: ../src/dialogs/rdf.cpp:191 +#: ../src/dialogs/rdf.cpp:192 msgid "CC Attribution-NoDerivs" -msgstr "" +msgstr "ייחוס CC - איסור יצירה נגזרת" -#: ../src/dialogs/rdf.cpp:196 +#: ../src/dialogs/rdf.cpp:197 msgid "CC Attribution-NonCommercial" -msgstr "" +msgstr "ייחוס CC - שימוש לא מסחרי" -#: ../src/dialogs/rdf.cpp:201 +#: ../src/dialogs/rdf.cpp:202 msgid "CC Attribution-NonCommercial-ShareAlike" -msgstr "" +msgstr "ייחוס CC - שימוש לא מסחרי־שיתוף זהה" -#: ../src/dialogs/rdf.cpp:206 +#: ../src/dialogs/rdf.cpp:207 msgid "CC Attribution-NonCommercial-NoDerivs" -msgstr "" +msgstr "ייחוס CC - שימוש לא מסחרי־איסור יצירה נגזרת" -#: ../src/dialogs/rdf.cpp:211 +#: ../src/dialogs/rdf.cpp:212 msgid "Public Domain" -msgstr "" +msgstr "רשות הציבור" -#: ../src/dialogs/rdf.cpp:216 +#: ../src/dialogs/rdf.cpp:217 msgid "FreeArt" -msgstr "" +msgstr "אומנות חופשית" -#: ../src/dialogs/rdf.cpp:221 +#: ../src/dialogs/rdf.cpp:222 msgid "Open Font License" -msgstr "" +msgstr "רשיון גופן פתוח" #: ../src/dialogs/rdf.cpp:239 +msgid "Title" +msgstr "כותרת" + +#: ../src/dialogs/rdf.cpp:240 msgid "Name by which this document is formally known." -msgstr "" +msgstr "שם המייצג מסמך זה" -#: ../src/dialogs/rdf.cpp:241 +#: ../src/dialogs/rdf.cpp:242 msgid "Date" -msgstr "" +msgstr "תאריך" -#: ../src/dialogs/rdf.cpp:242 +#: ../src/dialogs/rdf.cpp:243 msgid "Date associated with the creation of this document (YYYY-MM-DD)." -msgstr "" +msgstr "תאריך המשוייך עם יצירת מסמך זה (YYYY-MM-DD)" -#: ../src/dialogs/rdf.cpp:244 +#: ../src/dialogs/rdf.cpp:245 msgid "Format" -msgstr "" +msgstr "תבנית" -#: ../src/dialogs/rdf.cpp:245 +#: ../src/dialogs/rdf.cpp:246 msgid "The physical or digital manifestation of this document (MIME type)." -msgstr "" +msgstr "צורת הפירסום הפיזית או הדיגיטאלית של מסמך זה (טיפוס MIME)" #. _settings->add_checkbutton(false, SP_ATTR_STITCHTILES, _("Stitch Tiles"), "stitch", "noStitch"); -#: ../src/dialogs/rdf.cpp:247 ../src/extension/internal/bitmap/addNoise.cpp:46 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2194 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2273 +#: ../src/dialogs/rdf.cpp:248 +#: ../src/extension/internal/bitmap/addNoise.cpp:46 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2208 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2287 msgid "Type" -msgstr "" +msgstr "סוג" -#: ../src/dialogs/rdf.cpp:248 +#: ../src/dialogs/rdf.cpp:249 msgid "Type of document (DCMI Type)." -msgstr "" +msgstr "סוג המסמך (סוג DCMI)" -#: ../src/dialogs/rdf.cpp:251 +#: ../src/dialogs/rdf.cpp:252 msgid "Creator" -msgstr "" +msgstr "יוצר" -#: ../src/dialogs/rdf.cpp:252 -msgid "" -"Name of entity primarily responsible for making the content of this document." -msgstr "" +#: ../src/dialogs/rdf.cpp:253 +msgid "Name of entity primarily responsible for making the content of this document." +msgstr "שם הישות האחראית ליצירת תוכן מסמך זה." -#: ../src/dialogs/rdf.cpp:254 +#: ../src/dialogs/rdf.cpp:255 msgid "Rights" -msgstr "" +msgstr "זכויות" -#: ../src/dialogs/rdf.cpp:255 -msgid "" -"Name of entity with rights to the Intellectual Property of this document." -msgstr "" +#: ../src/dialogs/rdf.cpp:256 +msgid "Name of entity with rights to the Intellectual Property of this document." +msgstr "שם הישות האחראית לנכס האינטלקטואלי במסמך זה." -#: ../src/dialogs/rdf.cpp:257 +#: ../src/dialogs/rdf.cpp:258 msgid "Publisher" -msgstr "" +msgstr "מפרסם" -#: ../src/dialogs/rdf.cpp:258 +#: ../src/dialogs/rdf.cpp:259 msgid "Name of entity responsible for making this document available." -msgstr "" +msgstr "שם הישות האחראית להיותו של מסמך זה זמין." -#: ../src/dialogs/rdf.cpp:261 +#: ../src/dialogs/rdf.cpp:262 msgid "Identifier" -msgstr "" +msgstr "מזהה" -#: ../src/dialogs/rdf.cpp:262 +#: ../src/dialogs/rdf.cpp:263 msgid "Unique URI to reference this document." -msgstr "" +msgstr "כתובת הפנייה ייחודית למסמך זה." -#: ../src/dialogs/rdf.cpp:264 ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1392 +#: ../src/dialogs/rdf.cpp:265 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1392 msgid "Source" -msgstr "" +msgstr "מקור" -#: ../src/dialogs/rdf.cpp:265 +#: ../src/dialogs/rdf.cpp:266 msgid "Unique URI to reference the source of this document." -msgstr "" +msgstr "כתובת הפנייה יחודית למקור של מסמך זה." -#: ../src/dialogs/rdf.cpp:267 +#: ../src/dialogs/rdf.cpp:268 msgid "Relation" -msgstr "" +msgstr "התייחסות" -#: ../src/dialogs/rdf.cpp:268 +#: ../src/dialogs/rdf.cpp:269 msgid "Unique URI to a related document." -msgstr "" +msgstr "קישור ייחודי למסמך קשור." -#: ../src/dialogs/rdf.cpp:270 +#: ../src/dialogs/rdf.cpp:271 msgid "Language" -msgstr "" +msgstr "שפה" -#: ../src/dialogs/rdf.cpp:271 -msgid "" -"Two-letter language tag with optional subtags for the language of this " -"document. (e.g. 'en-GB')" -msgstr "" +#: ../src/dialogs/rdf.cpp:272 +msgid "Two-letter language tag with optional subtags for the language of this document. (e.g. 'en-GB')" +msgstr "תגית המורכבת משתי אותיות או עם תוספת של תת־תגית עבור שפת מסמך זה (לדוגמה: 'he-IL')." -#: ../src/dialogs/rdf.cpp:273 +#: ../src/dialogs/rdf.cpp:274 msgid "Keywords" -msgstr "" +msgstr "מילות מפתח" -#: ../src/dialogs/rdf.cpp:274 -msgid "" -"The topic of this document as comma-separated key words, phrases, or " -"classifications." -msgstr "" +#: ../src/dialogs/rdf.cpp:275 +msgid "The topic of this document as comma-separated key words, phrases, or classifications." +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/dialogs/rdf.cpp:278 +#: ../src/dialogs/rdf.cpp:279 msgid "Coverage" -msgstr "" +msgstr "כיסוי" -#: ../src/dialogs/rdf.cpp:279 +#: ../src/dialogs/rdf.cpp:280 msgid "Extent or scope of this document." -msgstr "" +msgstr "היקף או טווח מסמך זה" #: ../src/dialogs/rdf.cpp:283 +#: ../src/ui/widget/page-sizer.cpp:218 +msgid "Description" +msgstr "תיאור" + +#: ../src/dialogs/rdf.cpp:284 msgid "A short account of the content of this document." -msgstr "" +msgstr "התייחסות קצרה לתוכן מסמך זה" #. FIXME: need to handle 1 agent per line of input -#: ../src/dialogs/rdf.cpp:287 +#: ../src/dialogs/rdf.cpp:288 msgid "Contributors" -msgstr "" +msgstr "תורמים" -#: ../src/dialogs/rdf.cpp:288 -msgid "" -"Names of entities responsible for making contributions to the content of " -"this document." -msgstr "" +#: ../src/dialogs/rdf.cpp:289 +msgid "Names of entities responsible for making contributions to the content of this document." +msgstr "שם הישויות האחריות לתרומה לתוכן מסמך זה." #. TRANSLATORS: URL to a page that defines the license for the document -#: ../src/dialogs/rdf.cpp:292 +#: ../src/dialogs/rdf.cpp:293 msgid "URI" -msgstr "" +msgstr "כתובת הרשיון" #. TRANSLATORS: this is where you put a URL to a page that defines the license -#: ../src/dialogs/rdf.cpp:294 +#: ../src/dialogs/rdf.cpp:295 msgid "URI to this document's license's namespace definition." -msgstr "" +msgstr "כתובת ייחודית להגדרת שם מתחם לרשיון מסמך זה." #. TRANSLATORS: fragment of XML representing the license of the document -#: ../src/dialogs/rdf.cpp:298 +#: ../src/dialogs/rdf.cpp:299 msgid "Fragment" -msgstr "" +msgstr "מקטע הרשיון" -#: ../src/dialogs/rdf.cpp:299 +#: ../src/dialogs/rdf.cpp:300 msgid "XML fragment for the RDF 'License' section." -msgstr "" +msgstr "מקטע ה־XML עבור סעיף 'רשיון' ה־RDF." #. TRANSLATORS: "Set" is a verb here #: ../src/dialogs/sp-attribute-widget.cpp:166 -#: ../src/dialogs/sp-attribute-widget.cpp:773 ../src/dialogs/xml-tree.cpp:533 +#: ../src/dialogs/sp-attribute-widget.cpp:773 +#: ../src/dialogs/xml-tree.cpp:535 msgid "Set attribute" -msgstr "" +msgstr "הגדר מאפיין" -#: ../src/dialogs/stroke-style.cpp:305 ../src/dialogs/stroke-style.cpp:364 +#: ../src/dialogs/stroke-style.cpp:294 +#: ../src/dialogs/stroke-style.cpp:353 msgid "Set stroke color" -msgstr "" +msgstr "הגדר את צבע קו המתאר" -#: ../src/dialogs/stroke-style.cpp:355 ../src/ui/widget/selected-style.cpp:255 -#: ../src/ui/widget/selected-style.cpp:488 +#: ../src/dialogs/stroke-style.cpp:344 +#: ../src/ui/widget/selected-style.cpp:255 +#: ../src/ui/widget/selected-style.cpp:484 msgid "Remove stroke" -msgstr "" +msgstr "הסר את קו המתאר" -#: ../src/dialogs/stroke-style.cpp:416 +#: ../src/dialogs/stroke-style.cpp:405 msgid "Set gradient on stroke" -msgstr "" +msgstr "הגדר צביעה מדורגת לקו המתאר" -#: ../src/dialogs/stroke-style.cpp:460 +#: ../src/dialogs/stroke-style.cpp:449 msgid "Set pattern on stroke" -msgstr "" +msgstr "הגדר תבנית לקו המתאר" -#: ../src/dialogs/stroke-style.cpp:481 ../src/ui/widget/selected-style.cpp:193 +#: ../src/dialogs/stroke-style.cpp:470 +#: ../src/ui/widget/selected-style.cpp:193 #: ../src/ui/widget/selected-style.cpp:251 -#: ../src/ui/widget/selected-style.cpp:513 -#: ../src/ui/widget/style-swatch.cpp:335 +#: ../src/ui/widget/selected-style.cpp:509 +#: ../src/ui/widget/style-swatch.cpp:303 msgid "Unset stroke" -msgstr "" - -#: ../src/dialogs/stroke-style.cpp:793 ../src/filter-enums.cpp:95 -#: ../src/flood-context.cpp:288 ../src/interface.cpp:826 -#: ../src/ui/dialog/filter-effects-dialog.cpp:507 -#: ../src/ui/dialog/inkscape-preferences.cpp:211 -#: ../src/ui/dialog/inkscape-preferences.cpp:375 -#: ../src/ui/dialog/inkscape-preferences.cpp:501 -#: ../src/ui/dialog/inkscape-preferences.cpp:958 ../src/verbs.cpp:2156 +msgstr "בטל הגדרת קו המתאר" + +#: ../src/dialogs/stroke-style.cpp:773 +#: ../src/filter-enums.cpp:95 +#: ../src/flood-context.cpp:292 +#: ../src/live_effects/lpe-ruler.cpp:34 +#: ../src/ui/dialog/filter-effects-dialog.cpp:509 +#: ../src/ui/dialog/inkscape-preferences.cpp:220 +#: ../src/ui/dialog/inkscape-preferences.cpp:382 +#: ../src/ui/dialog/inkscape-preferences.cpp:509 +#: ../src/ui/dialog/inkscape-preferences.cpp:1054 +#: ../src/verbs.cpp:2211 +#: ../src/widgets/toolbox.cpp:3424 #: ../share/extensions/grid_polar.inx.h:16 msgid "None" -msgstr "" +msgstr "ללא" -#: ../src/dialogs/stroke-style.cpp:848 ../src/widgets/gradient-vector.cpp:264 +#: ../src/dialogs/stroke-style.cpp:828 +#: ../src/widgets/gradient-vector.cpp:264 #: ../src/widgets/paint-selector.cpp:885 msgid "No document selected" -msgstr "" +msgstr "לא נבחר מסמך" -#: ../src/dialogs/stroke-style.cpp:937 +#: ../src/dialogs/stroke-style.cpp:912 msgid "Set markers" -msgstr "" +msgstr "הגדר סמנים" -#: ../src/dialogs/stroke-style.cpp:1104 ../share/extensions/edge3d.inx.h:9 +#. Stroke width +#: ../src/dialogs/stroke-style.cpp:1085 +msgid "StrokeWidth|Width:" +msgstr "עובי:" + +#: ../src/dialogs/stroke-style.cpp:1099 +#: ../share/extensions/edge3d.inx.h:9 msgid "Stroke width" -msgstr "" +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/dialogs/stroke-style.cpp:1127 +#: ../src/dialogs/stroke-style.cpp:1123 msgid "Join:" -msgstr "" +msgstr "תפר:" #. TRANSLATORS: Miter join: joining lines with a sharp (pointed) corner. #. For an example, draw a triangle with a large stroke width and modify the #. "Join" option (in the Fill and Stroke dialog). -#: ../src/dialogs/stroke-style.cpp:1139 +#: ../src/dialogs/stroke-style.cpp:1135 msgid "Miter join" -msgstr "" +msgstr "תפר חד" #. TRANSLATORS: Round join: joining lines with a rounded corner. #. For an example, draw a triangle with a large stroke width and modify the #. "Join" option (in the Fill and Stroke dialog). -#: ../src/dialogs/stroke-style.cpp:1147 +#: ../src/dialogs/stroke-style.cpp:1143 msgid "Round join" -msgstr "" +msgstr "תפר מעוגל" #. TRANSLATORS: Bevel join: joining lines with a blunted (flattened) corner. #. For an example, draw a triangle with a large stroke width and modify the #. "Join" option (in the Fill and Stroke dialog). -#: ../src/dialogs/stroke-style.cpp:1155 +#: ../src/dialogs/stroke-style.cpp:1151 msgid "Bevel join" -msgstr "" +msgstr "תפר משופע" #. Miterlimit #. TRANSLATORS: Miter limit: only for "miter join", this limits the length @@ -1886,137 +1968,150 @@ msgstr "" #. spike that extends well beyond the connection point. The purpose of the #. miter limit is to cut off such spikes (i.e. convert them into bevels) #. when they become too long. -#: ../src/dialogs/stroke-style.cpp:1166 +#: ../src/dialogs/stroke-style.cpp:1162 msgid "Miter limit:" -msgstr "" +msgstr "גבול התפר:" -#: ../src/dialogs/stroke-style.cpp:1174 +#: ../src/dialogs/stroke-style.cpp:1170 msgid "Maximum length of the miter (in units of stroke width)" -msgstr "" +msgstr "אורך התפר המרבי (ביחידות של רוחב קו המתאר)" #. Cap type #. TRANSLATORS: cap type specifies the shape for the ends of lines -#: ../src/dialogs/stroke-style.cpp:1187 +#: ../src/dialogs/stroke-style.cpp:1182 msgid "Cap:" -msgstr "" +msgstr "קצה:" #. TRANSLATORS: Butt cap: the line shape does not extend beyond the end point #. of the line; the ends of the line are square -#: ../src/dialogs/stroke-style.cpp:1198 +#: ../src/dialogs/stroke-style.cpp:1193 msgid "Butt cap" -msgstr "" +msgstr "קצה קטוע" #. TRANSLATORS: Round cap: the line shape extends beyond the end point of the #. line; the ends of the line are rounded -#: ../src/dialogs/stroke-style.cpp:1205 +#: ../src/dialogs/stroke-style.cpp:1200 msgid "Round cap" -msgstr "" +msgstr "קצה מעוגל" #. TRANSLATORS: Square cap: the line shape extends beyond the end point of the #. line; the ends of the line are square -#: ../src/dialogs/stroke-style.cpp:1212 +#: ../src/dialogs/stroke-style.cpp:1207 msgid "Square cap" -msgstr "" +msgstr "קצה מוארך" #. Dash -#: ../src/dialogs/stroke-style.cpp:1218 +#: ../src/dialogs/stroke-style.cpp:1213 msgid "Dashes:" -msgstr "" +msgstr "ריסוק:" #. TRANSLATORS: Path markers are an SVG feature that allows you to attach arbitrary shapes #. (arrowheads, bullets, faces, whatever) to the start, end, or middle nodes of a path. -#: ../src/dialogs/stroke-style.cpp:1239 +#: ../src/dialogs/stroke-style.cpp:1230 msgid "Start Markers:" -msgstr "" +msgstr "סמני התחלה:" + +#: ../src/dialogs/stroke-style.cpp:1232 +msgid "Start Markers are drawn on the first node of a path or shape" +msgstr "סמני ההתחלה מצויירים על מפרק הראשון של נתיב או צורה" -#: ../src/dialogs/stroke-style.cpp:1249 +#: ../src/dialogs/stroke-style.cpp:1241 msgid "Mid Markers:" -msgstr "" +msgstr "סמני אמצע:" + +#: ../src/dialogs/stroke-style.cpp:1243 +msgid "Mid Markers are drawn on every node of a path or shape except the first and last nodes" +msgstr "סמני ההתחלה מצויירים על כל מפרק של נתיב או צורה מלבד הראשון והאחרון" -#: ../src/dialogs/stroke-style.cpp:1259 +#: ../src/dialogs/stroke-style.cpp:1252 msgid "End Markers:" -msgstr "" +msgstr "סמני סוף:" + +#: ../src/dialogs/stroke-style.cpp:1254 +msgid "End Markers are drawn on the last node of a path or shape" +msgstr "סמני הסיום מצויירים על מפרק האחרון של נתיב או צורה" -#: ../src/dialogs/stroke-style.cpp:1605 ../src/dialogs/stroke-style.cpp:1703 +#: ../src/dialogs/stroke-style.cpp:1577 +#: ../src/dialogs/stroke-style.cpp:1673 msgid "Set stroke style" -msgstr "" +msgstr "הגדר את סגנון קו המתאר" #: ../src/dialogs/swatches.cpp:248 #, c-format -msgid "" -"Color: %s; Click to set fill, Shift+click to set stroke" -msgstr "" +msgid "Color: %s; Click to set fill, Shift+click to set stroke" +msgstr "צבע: %s; לחץ כדי להגדיר מילוי, Shift+לחיצה כדי להגדיר קו מתאר" #. TRANSLATORS: An item in context menu on a colour in the swatches #: ../src/dialogs/swatches.cpp:298 -#, fuzzy msgid "Set fill" -msgstr "בחר ה_כל" +msgstr "הגדר מילוי" #. TRANSLATORS: An item in context menu on a colour in the swatches #: ../src/dialogs/swatches.cpp:306 msgid "Set stroke" -msgstr "" +msgstr "הגדר קו מתאר" #: ../src/dialogs/swatches.cpp:525 msgid "Change color definition" -msgstr "" +msgstr "שנה את הגדרת הצבע" #: ../src/dialogs/swatches.cpp:676 msgid "Set stroke color from swatch" -msgstr "" +msgstr "הגדר את צבע קו המתאר ממרקם" #: ../src/dialogs/swatches.cpp:676 msgid "Set fill color from swatch" -msgstr "" +msgstr "הגדר את צבע המילוי ממרקם" #: ../src/dialogs/swatches.cpp:996 #, c-format msgid "Palettes directory (%s) is unavailable." -msgstr "" +msgstr "תיקיית לוחות הצבעים (%s) אינה זמינה." -#. TODO: Insert widgets -#: ../src/dialogs/text-edit.cpp:200 ../src/ui/dialog/text-properties.cpp:36 +#: ../src/dialogs/text-edit.cpp:201 msgid "Font" -msgstr "" +msgstr "גופן" -#: ../src/dialogs/text-edit.cpp:223 +#: ../src/dialogs/text-edit.cpp:224 msgid "Layout" -msgstr "" +msgstr "פריסה" -#: ../src/dialogs/text-edit.cpp:237 +#: ../src/dialogs/text-edit.cpp:238 msgid "Align lines left" -msgstr "" +msgstr "ישר את השורות שמאלה" #. TRANSLATORS: `Center' here is a verb. -#: ../src/dialogs/text-edit.cpp:252 +#: ../src/dialogs/text-edit.cpp:253 msgid "Center lines" -msgstr "" +msgstr "מרכז את השורות" -#: ../src/dialogs/text-edit.cpp:266 +#: ../src/dialogs/text-edit.cpp:267 msgid "Align lines right" -msgstr "" +msgstr "ישר את השורות ימינה" -#: ../src/dialogs/text-edit.cpp:280 +#: ../src/dialogs/text-edit.cpp:281 msgid "Justify lines" -msgstr "" +msgstr "ישר את השורות לשני הצדים" -#: ../src/dialogs/text-edit.cpp:302 ../src/widgets/toolbox.cpp:5354 +#: ../src/dialogs/text-edit.cpp:303 +#: ../src/widgets/toolbox.cpp:6308 msgid "Horizontal text" -msgstr "" +msgstr "טקסט אופקי" -#: ../src/dialogs/text-edit.cpp:316 ../src/widgets/toolbox.cpp:5366 +#: ../src/dialogs/text-edit.cpp:317 +#: ../src/widgets/toolbox.cpp:6320 msgid "Vertical text" -msgstr "" +msgstr "טקסט אנכי" -#: ../src/dialogs/text-edit.cpp:331 +#: ../src/dialogs/text-edit.cpp:332 msgid "Line spacing:" -msgstr "" +msgstr "מרווח שורות:" #. Text -#: ../src/dialogs/text-edit.cpp:377 ../src/selection-describer.cpp:67 -#: ../src/ui/dialog/inkscape-preferences.cpp:469 -#: ../src/ui/dialog/text-properties.cpp:37 ../src/verbs.cpp:2437 +#: ../src/dialogs/text-edit.cpp:378 +#: ../src/selection-describer.cpp:67 +#: ../src/ui/dialog/inkscape-preferences.cpp:477 +#: ../src/verbs.cpp:2498 #: ../share/extensions/lorem_ipsum.inx.h:5 #: ../share/extensions/render_alphabetsoup.inx.h:4 #: ../share/extensions/text_braille.inx.h:2 @@ -2028,484 +2123,507 @@ msgstr "" #: ../share/extensions/text_titlecase.inx.h:1 #: ../share/extensions/text_uppercase.inx.h:1 msgid "Text" -msgstr "" +msgstr "טקסט" -#: ../src/dialogs/text-edit.cpp:424 +#: ../src/dialogs/text-edit.cpp:425 msgid "Set as default" -msgstr "" +msgstr "הגדר כברירת מחדל" -#: ../src/dialogs/text-edit.cpp:665 ../src/text-context.cpp:1438 +#: ../src/dialogs/text-edit.cpp:668 +#: ../src/text-context.cpp:1510 msgid "Set text style" -msgstr "" +msgstr "הגדר את סגנון הטקסט" -#: ../src/dialogs/tiledialog.cpp:353 +#: ../src/dialogs/tiledialog.cpp:349 msgid "Arrange in a grid" -msgstr "" +msgstr "סדר לתוך רשת" -#: ../src/dialogs/tiledialog.cpp:654 +#: ../src/dialogs/tiledialog.cpp:657 msgid "Rows:" -msgstr "" +msgstr "שורות:" -#: ../src/dialogs/tiledialog.cpp:662 +#: ../src/dialogs/tiledialog.cpp:665 msgid "Number of rows" -msgstr "" +msgstr "מספר שורות" -#: ../src/dialogs/tiledialog.cpp:666 +#: ../src/dialogs/tiledialog.cpp:669 msgid "Equal height" -msgstr "" +msgstr "גובה שווה" -#: ../src/dialogs/tiledialog.cpp:676 +#: ../src/dialogs/tiledialog.cpp:679 msgid "If not set, each row has the height of the tallest object in it" -msgstr "" +msgstr "במידה ולא הוגדר, לכל שורה יינתן הגובה של הפריט הגבוה ביותר שנמצא בתוכה" #. #### Radio buttons to control vertical alignment #### #. #### Radio buttons to control horizontal alignment #### -#: ../src/dialogs/tiledialog.cpp:682 ../src/dialogs/tiledialog.cpp:752 +#: ../src/dialogs/tiledialog.cpp:685 +#: ../src/dialogs/tiledialog.cpp:755 msgid "Align:" -msgstr "" +msgstr "ישור:" #. #### Number of columns #### -#: ../src/dialogs/tiledialog.cpp:724 +#: ../src/dialogs/tiledialog.cpp:727 msgid "Columns:" -msgstr "" +msgstr "עמודות:" -#: ../src/dialogs/tiledialog.cpp:732 +#: ../src/dialogs/tiledialog.cpp:735 msgid "Number of columns" -msgstr "" +msgstr "מספר העמודות" -#: ../src/dialogs/tiledialog.cpp:736 +#: ../src/dialogs/tiledialog.cpp:739 msgid "Equal width" -msgstr "" +msgstr "רוחב שווה" -#: ../src/dialogs/tiledialog.cpp:745 +#: ../src/dialogs/tiledialog.cpp:748 msgid "If not set, each column has the width of the widest object in it" -msgstr "" +msgstr "במידה ולא הוגדר, לכל עמודה יינתן הרוחב של הפריט הרחב ביותר מתוכה" #. #### Radio buttons to control spacing manually or to fit selection bbox #### -#: ../src/dialogs/tiledialog.cpp:791 +#: ../src/dialogs/tiledialog.cpp:794 msgid "Fit into selection box" -msgstr "" +msgstr "התאם לתיבת הבחירה" -#: ../src/dialogs/tiledialog.cpp:797 +#: ../src/dialogs/tiledialog.cpp:800 msgid "Set spacing:" -msgstr "" +msgstr "הגדר ריווח:" -#: ../src/dialogs/tiledialog.cpp:817 +#: ../src/dialogs/tiledialog.cpp:820 msgid "Vertical spacing between rows (px units)" -msgstr "" +msgstr "ריווח אנכי בין השורות (בפיקסלים)" -#: ../src/dialogs/tiledialog.cpp:842 +#: ../src/dialogs/tiledialog.cpp:845 msgid "Horizontal spacing between columns (px units)" -msgstr "" +msgstr "ריווח אפקי בין העמודות (בפיקסלים)" #. ## The OK button -#: ../src/dialogs/tiledialog.cpp:865 ../share/extensions/restack.inx.h:3 +#: ../src/dialogs/tiledialog.cpp:868 +#: ../share/extensions/restack.inx.h:3 msgid "Arrange" -msgstr "" +msgstr "סדר" -#: ../src/dialogs/tiledialog.cpp:866 +#: ../src/dialogs/tiledialog.cpp:869 msgid "Arrange selected objects" -msgstr "" +msgstr "סדר את הפריטים הנבחרים" -#: ../src/dialogs/xml-tree.cpp:174 +#: ../src/dialogs/xml-tree.cpp:175 msgid "Click to select nodes, drag to rearrange." -msgstr "" +msgstr "לחץ כדי לבחור מפרקים, גרור כדי לסדר מחדש." -#: ../src/dialogs/xml-tree.cpp:185 +#: ../src/dialogs/xml-tree.cpp:186 msgid "Click attribute to edit." -msgstr "" +msgstr "לחץ על מאפיין כדי לערוך אותו." -#: ../src/dialogs/xml-tree.cpp:189 +#: ../src/dialogs/xml-tree.cpp:190 #, c-format -msgid "" -"Attribute %s selected. Press Ctrl+Enter when done editing to " -"commit changes." -msgstr "" +msgid "Attribute %s selected. Press Ctrl+Enter when done editing to commit changes." +msgstr "המאפיין %s נבחר. לחץ על Ctrl+Enter כאשר סיימת לערוך כדי להחיל את השינויים." -#: ../src/dialogs/xml-tree.cpp:284 +#: ../src/dialogs/xml-tree.cpp:286 msgid "Drag to reorder nodes" -msgstr "" +msgstr "גרור על מנת לסדר את המפרקים מחדש" -#: ../src/dialogs/xml-tree.cpp:304 +#: ../src/dialogs/xml-tree.cpp:306 msgid "New element node" -msgstr "" +msgstr "מפרק רכיב חדש" -#: ../src/dialogs/xml-tree.cpp:326 +#: ../src/dialogs/xml-tree.cpp:328 msgid "New text node" -msgstr "" +msgstr "מפרק טקסט חדש" -#: ../src/dialogs/xml-tree.cpp:347 ../src/dialogs/xml-tree.cpp:1414 -#: ../src/nodepath.cpp:2024 +#: ../src/dialogs/xml-tree.cpp:349 +#: ../src/dialogs/xml-tree.cpp:1432 +#: ../src/nodepath.cpp:2203 msgid "Duplicate node" -msgstr "" +msgstr "שכפל מפרק" -#: ../src/dialogs/xml-tree.cpp:368 ../src/dialogs/xml-tree.cpp:1431 -#: ../src/nodepath.cpp:3273 ../src/widgets/toolbox.cpp:1086 +#: ../src/dialogs/xml-tree.cpp:370 +#: ../src/dialogs/xml-tree.cpp:1449 +#: ../src/nodepath.cpp:3483 +#: ../src/widgets/toolbox.cpp:1283 msgid "Delete node" -msgstr "" +msgstr "מחק מפרק" -#: ../src/dialogs/xml-tree.cpp:384 ../src/dialogs/xml-tree.cpp:1576 +#: ../src/dialogs/xml-tree.cpp:386 +#: ../src/dialogs/xml-tree.cpp:1594 msgid "Unindent node" -msgstr "" +msgstr "הרחק מפרקים" -#: ../src/dialogs/xml-tree.cpp:399 ../src/dialogs/xml-tree.cpp:1555 +#: ../src/dialogs/xml-tree.cpp:401 +#: ../src/dialogs/xml-tree.cpp:1573 msgid "Indent node" -msgstr "" +msgstr "קרב מפרקים" -#: ../src/dialogs/xml-tree.cpp:411 ../src/dialogs/xml-tree.cpp:1508 +#: ../src/dialogs/xml-tree.cpp:413 +#: ../src/dialogs/xml-tree.cpp:1526 msgid "Raise node" -msgstr "" +msgstr "הגבה מפרק" -#: ../src/dialogs/xml-tree.cpp:423 ../src/dialogs/xml-tree.cpp:1525 +#: ../src/dialogs/xml-tree.cpp:425 +#: ../src/dialogs/xml-tree.cpp:1543 msgid "Lower node" -msgstr "" +msgstr "הנמך מפרק" -#: ../src/dialogs/xml-tree.cpp:468 ../src/dialogs/xml-tree.cpp:1449 +#: ../src/dialogs/xml-tree.cpp:470 +#: ../src/dialogs/xml-tree.cpp:1467 msgid "Delete attribute" -msgstr "" +msgstr "מחק מאפיין" #. TRANSLATORS: "Attribute" is a noun here -#: ../src/dialogs/xml-tree.cpp:513 +#: ../src/dialogs/xml-tree.cpp:515 msgid "Attribute name" -msgstr "" +msgstr "שם המאפיין" #. TRANSLATORS: "Set" is a verb here -#: ../src/dialogs/xml-tree.cpp:535 +#: ../src/dialogs/xml-tree.cpp:537 msgid "Set" -msgstr "" +msgstr "הגדר" #. TRANSLATORS: "Attribute" is a noun here -#: ../src/dialogs/xml-tree.cpp:558 +#: ../src/dialogs/xml-tree.cpp:560 msgid "Attribute value" -msgstr "" +msgstr "ערך המאפיין" -#: ../src/dialogs/xml-tree.cpp:891 +#: ../src/dialogs/xml-tree.cpp:897 msgid "Drag XML subtree" -msgstr "" +msgstr "גרור תת־עץ XML" -#: ../src/dialogs/xml-tree.cpp:1318 +#: ../src/dialogs/xml-tree.cpp:1334 msgid "New element node..." -msgstr "" +msgstr "מפרק רכיב חדש..." -#: ../src/dialogs/xml-tree.cpp:1339 -#: ../src/ui/dialog/whiteboard-connect.cpp:114 -#: ../src/ui/dialog/whiteboard-sharewithchat.cpp:103 +#: ../src/dialogs/xml-tree.cpp:1356 +#: ../src/ui/dialog/whiteboard-connect.cpp:119 +#: ../src/ui/dialog/whiteboard-sharewithchat.cpp:104 msgid "Cancel" -msgstr "" +msgstr "ביטול" -#: ../src/dialogs/xml-tree.cpp:1345 +#: ../src/dialogs/xml-tree.cpp:1364 msgid "Create" -msgstr "" +msgstr "צור" -#: ../src/dialogs/xml-tree.cpp:1380 +#: ../src/dialogs/xml-tree.cpp:1398 msgid "Create new element node" -msgstr "" +msgstr "צור מפרק רכיב חדש" -#: ../src/dialogs/xml-tree.cpp:1396 +#: ../src/dialogs/xml-tree.cpp:1414 msgid "Create new text node" -msgstr "" +msgstr "צור מפרק טקסט חדש" -#: ../src/dialogs/xml-tree.cpp:1478 +#: ../src/dialogs/xml-tree.cpp:1496 msgid "Change attribute" -msgstr "" +msgstr "שנה מאפיין" -#: ../src/display/canvas-axonomgrid.cpp:390 ../src/display/canvas-grid.cpp:656 +#: ../src/display/canvas-axonomgrid.cpp:391 +#: ../src/display/canvas-grid.cpp:656 msgid "Grid _units:" -msgstr "" +msgstr "_יחידות הרשת:" -#: ../src/display/canvas-axonomgrid.cpp:392 ../src/display/canvas-grid.cpp:658 +#: ../src/display/canvas-axonomgrid.cpp:393 +#: ../src/display/canvas-grid.cpp:658 msgid "_Origin X:" -msgstr "" +msgstr "מ_קור בציר ה־X:" -#: ../src/display/canvas-axonomgrid.cpp:392 ../src/display/canvas-grid.cpp:658 -#: ../src/ui/dialog/inkscape-preferences.cpp:869 -#: ../src/ui/dialog/inkscape-preferences.cpp:890 +#: ../src/display/canvas-axonomgrid.cpp:393 +#: ../src/display/canvas-grid.cpp:658 +#: ../src/ui/dialog/inkscape-preferences.cpp:922 +#: ../src/ui/dialog/inkscape-preferences.cpp:943 msgid "X coordinate of grid origin" -msgstr "" +msgstr "נקודת הציון בציר ה־X של ראשית הצירים" -#: ../src/display/canvas-axonomgrid.cpp:394 ../src/display/canvas-grid.cpp:660 +#: ../src/display/canvas-axonomgrid.cpp:395 +#: ../src/display/canvas-grid.cpp:660 msgid "O_rigin Y:" -msgstr "" +msgstr "מקור ב_ציר ה־Y:" -#: ../src/display/canvas-axonomgrid.cpp:394 ../src/display/canvas-grid.cpp:660 -#: ../src/ui/dialog/inkscape-preferences.cpp:870 -#: ../src/ui/dialog/inkscape-preferences.cpp:891 +#: ../src/display/canvas-axonomgrid.cpp:395 +#: ../src/display/canvas-grid.cpp:660 +#: ../src/ui/dialog/inkscape-preferences.cpp:923 +#: ../src/ui/dialog/inkscape-preferences.cpp:944 msgid "Y coordinate of grid origin" -msgstr "" +msgstr "נקודת הציון בציר ה־Y של נקודת ראשית הצירים" -#: ../src/display/canvas-axonomgrid.cpp:396 ../src/display/canvas-grid.cpp:664 +#: ../src/display/canvas-axonomgrid.cpp:397 +#: ../src/display/canvas-grid.cpp:664 msgid "Spacing _Y:" -msgstr "" +msgstr "רי_ווח בציר ה־Y:" -#: ../src/display/canvas-axonomgrid.cpp:396 -#: ../src/ui/dialog/inkscape-preferences.cpp:893 +#: ../src/display/canvas-axonomgrid.cpp:397 +#: ../src/ui/dialog/inkscape-preferences.cpp:946 msgid "Base length of z-axis" -msgstr "" +msgstr "אורך הבסיס של ציר ה־z" -#: ../src/display/canvas-axonomgrid.cpp:398 ../src/widgets/toolbox.cpp:2723 +#: ../src/display/canvas-axonomgrid.cpp:399 +#: ../src/ui/dialog/inkscape-preferences.cpp:949 +#: ../src/widgets/toolbox.cpp:2959 msgid "Angle X:" -msgstr "" +msgstr "זווית X:" -#: ../src/display/canvas-axonomgrid.cpp:398 -#: ../src/ui/dialog/inkscape-preferences.cpp:896 +#: ../src/display/canvas-axonomgrid.cpp:399 +#: ../src/ui/dialog/inkscape-preferences.cpp:949 msgid "Angle of x-axis" -msgstr "" +msgstr "זווית בציר ה־x" -#: ../src/display/canvas-axonomgrid.cpp:400 ../src/widgets/toolbox.cpp:2802 +#: ../src/display/canvas-axonomgrid.cpp:401 +#: ../src/ui/dialog/inkscape-preferences.cpp:950 +#: ../src/widgets/toolbox.cpp:3038 msgid "Angle Z:" -msgstr "" +msgstr "זווית Z:" -#: ../src/display/canvas-axonomgrid.cpp:400 -#: ../src/ui/dialog/inkscape-preferences.cpp:897 +#: ../src/display/canvas-axonomgrid.cpp:401 +#: ../src/ui/dialog/inkscape-preferences.cpp:950 msgid "Angle of z-axis" -msgstr "" +msgstr "הזווית בציר ה-z" -#: ../src/display/canvas-axonomgrid.cpp:404 ../src/display/canvas-grid.cpp:668 +#: ../src/display/canvas-axonomgrid.cpp:405 +#: ../src/display/canvas-grid.cpp:668 msgid "Grid line _color:" -msgstr "" +msgstr "_צבע קווי הרשת:" -#: ../src/display/canvas-axonomgrid.cpp:404 ../src/display/canvas-grid.cpp:668 -#: ../src/ui/dialog/inkscape-preferences.cpp:876 -#: ../src/ui/dialog/inkscape-preferences.cpp:877 -#: ../src/ui/dialog/inkscape-preferences.cpp:898 -#: ../src/ui/dialog/inkscape-preferences.cpp:899 +#: ../src/display/canvas-axonomgrid.cpp:405 +#: ../src/display/canvas-grid.cpp:668 msgid "Grid line color" -msgstr "" +msgstr "צבע קווי הרשת" -#: ../src/display/canvas-axonomgrid.cpp:404 ../src/display/canvas-grid.cpp:668 +#: ../src/display/canvas-axonomgrid.cpp:405 +#: ../src/display/canvas-grid.cpp:668 msgid "Color of grid lines" -msgstr "" +msgstr "הצבע של הקווים המרכיבים את הרשת" -#: ../src/display/canvas-axonomgrid.cpp:409 ../src/display/canvas-grid.cpp:673 +#: ../src/display/canvas-axonomgrid.cpp:410 +#: ../src/display/canvas-grid.cpp:673 msgid "Ma_jor grid line color:" -msgstr "" +msgstr "צבע קווי הרשת ה_ראשי:" -#: ../src/display/canvas-axonomgrid.cpp:409 ../src/display/canvas-grid.cpp:673 -#: ../src/ui/dialog/inkscape-preferences.cpp:878 -#: ../src/ui/dialog/inkscape-preferences.cpp:879 -#: ../src/ui/dialog/inkscape-preferences.cpp:900 -#: ../src/ui/dialog/inkscape-preferences.cpp:901 +#: ../src/display/canvas-axonomgrid.cpp:410 +#: ../src/display/canvas-grid.cpp:673 msgid "Major grid line color" -msgstr "" +msgstr "צבע קווי הרשת הראשי" -#: ../src/display/canvas-axonomgrid.cpp:410 ../src/display/canvas-grid.cpp:674 +#: ../src/display/canvas-axonomgrid.cpp:411 +#: ../src/display/canvas-grid.cpp:674 msgid "Color of the major (highlighted) grid lines" -msgstr "" +msgstr "הצבע של הקווים המרכיבים את הרשת כאשר הם מודגשים" -#: ../src/display/canvas-axonomgrid.cpp:414 ../src/display/canvas-grid.cpp:678 +#: ../src/display/canvas-axonomgrid.cpp:415 +#: ../src/display/canvas-grid.cpp:678 msgid "_Major grid line every:" -msgstr "" +msgstr "קו רשת ר_אשי בכל:" -#: ../src/display/canvas-axonomgrid.cpp:414 ../src/display/canvas-grid.cpp:678 +#: ../src/display/canvas-axonomgrid.cpp:415 +#: ../src/display/canvas-grid.cpp:678 msgid "lines" -msgstr "" +msgstr "קווים" -#: ../src/display/canvas-grid.cpp:40 +#: ../src/display/canvas-grid.cpp:39 msgid "Rectangular grid" -msgstr "" +msgstr "רשת מלבנית" -#: ../src/display/canvas-grid.cpp:41 +#: ../src/display/canvas-grid.cpp:40 msgid "Axonometric grid" -msgstr "" +msgstr "רשת אוקסונומטרית" -#: ../src/display/canvas-grid.cpp:259 +#: ../src/display/canvas-grid.cpp:258 msgid "Create new grid" -msgstr "" +msgstr "צור רשת חדשה" -#: ../src/display/canvas-grid.cpp:325 +#: ../src/display/canvas-grid.cpp:324 msgid "_Enabled" -msgstr "" +msgstr "_פעילה" -#: ../src/display/canvas-grid.cpp:326 -msgid "" -"Determines whether to snap to this grid or not. Can be 'on' for invisible " -"grids." -msgstr "" +#: ../src/display/canvas-grid.cpp:325 +msgid "Determines whether to snap to this grid or not. Can be 'on' for invisible grids." +msgstr "קובע האם להצמיד לרשת זו או לא. יכול להיות 'פעילה' עבור רשתות בלתי נראות." -#: ../src/display/canvas-grid.cpp:329 +#: ../src/display/canvas-grid.cpp:328 msgid "_Visible" -msgstr "" +msgstr "_נראית" -#: ../src/display/canvas-grid.cpp:330 -msgid "" -"Determines whether the grid is displayed or not. Objects are still snapped " -"to invisible grids." -msgstr "" +#: ../src/display/canvas-grid.cpp:329 +msgid "Determines whether the grid is displayed or not. Objects are still snapped to invisible grids." +msgstr "קובע האם הרשת תוצג או לא. הפריטים עדיין מוצמדים לרשתות בלתי נראות." #: ../src/display/canvas-grid.cpp:662 msgid "Spacing _X:" -msgstr "" +msgstr "_ריווח בציר ה־X:" #: ../src/display/canvas-grid.cpp:662 -#: ../src/ui/dialog/inkscape-preferences.cpp:873 +#: ../src/ui/dialog/inkscape-preferences.cpp:926 msgid "Distance between vertical grid lines" -msgstr "" +msgstr "המרחק בין קווי הרשת האנכיים" #: ../src/display/canvas-grid.cpp:664 -#: ../src/ui/dialog/inkscape-preferences.cpp:874 +#: ../src/ui/dialog/inkscape-preferences.cpp:927 msgid "Distance between horizontal grid lines" -msgstr "" +msgstr "המרחק בין קווי הרשת האופקיים" #: ../src/display/canvas-grid.cpp:697 msgid "_Show dots instead of lines" -msgstr "" +msgstr "הצג _נקודות במקום קווים" #: ../src/display/canvas-grid.cpp:698 -#: ../src/ui/dialog/inkscape-preferences.cpp:883 msgid "If set, displays dots at gridpoints instead of gridlines" -msgstr "" +msgstr "במידה והוגדר, הצג נקודות בנקודות המפגש בין הקווים במקום קווי רשת" -#: ../src/document.cpp:415 +#: ../src/document.cpp:437 #, c-format msgid "New document %d" -msgstr "" +msgstr "מסמך חדש %d" -#: ../src/document.cpp:447 +#: ../src/document.cpp:469 #, c-format msgid "Memory document %d" -msgstr "" +msgstr "מסמך מהזיכרון %d" -#: ../src/document.cpp:603 +#: ../src/document.cpp:624 #, c-format msgid "Unnamed document %d" -msgstr "" +msgstr "מסמך ללא שם %d" #. We hit green anchor, closing Green-Blue-Red -#: ../src/draw-context.cpp:448 +#: ../src/draw-context.cpp:571 msgid "Path is closed." -msgstr "" +msgstr "הנתיב סגור." #. We hit bot start and end of single curve, closing paths -#: ../src/draw-context.cpp:463 +#: ../src/draw-context.cpp:586 msgid "Closing path." -msgstr "" +msgstr "סוגר נתיב." -#: ../src/draw-context.cpp:577 +#: ../src/draw-context.cpp:696 msgid "Draw path" -msgstr "" +msgstr "צייר נתיב" + +#: ../src/draw-context.cpp:856 +msgid "Creating single dot" +msgstr "יוצר נקודה בודדת" + +#: ../src/draw-context.cpp:857 +msgid "Create single dot" +msgstr "צור נקודה בודדת" #. alpha of color under cursor, to show in the statusbar #. locale-sensitive printf is OK, since this goes to the UI, not into SVG -#: ../src/dropper-context.cpp:292 +#: ../src/dropper-context.cpp:291 #, c-format msgid " alpha %.3g" -msgstr "" +msgstr " שקיפות %.3g" #. where the color is picked, to show in the statusbar -#: ../src/dropper-context.cpp:294 +#: ../src/dropper-context.cpp:293 #, c-format msgid ", averaged with radius %d" -msgstr "" +msgstr ", ממוצע עם רדיוס %d" -#: ../src/dropper-context.cpp:294 +#: ../src/dropper-context.cpp:293 +#, c-format msgid " under cursor" -msgstr "" +msgstr " תחת סמן העכבר" #. message, to show in the statusbar -#: ../src/dropper-context.cpp:296 +#: ../src/dropper-context.cpp:295 msgid "Release mouse to set color." -msgstr "" +msgstr "שחרר את הלחיצה בעכבר כדי להגדיר צבע." -#: ../src/dropper-context.cpp:296 ../src/tools-switch.cpp:229 -msgid "" -"Click to set fill, Shift+click to set stroke; drag to " -"average color in area; with Alt to pick inverse color; Ctrl+C " -"to copy the color under mouse to clipboard" -msgstr "" +#: ../src/dropper-context.cpp:295 +#: ../src/tools-switch.cpp:208 +msgid "Click to set fill, Shift+click to set stroke; drag to average color in area; with Alt to pick inverse color; Ctrl+C to copy the color under mouse to clipboard" +msgstr "לחץ כדי להגדיר מילוי, Shift+לחיצה כדי להגדיר קו מתאר; גרור כדי לעשות ממוצע עם הצבע של האיזור; לחיצה על Alt בנוסף כדי לבחור את הצבע ההפוך; Ctrl+C כדי להעתיק את הצבע שמתחת לעכבר ללוח הגזירים" -#: ../src/dropper-context.cpp:329 +#: ../src/dropper-context.cpp:328 msgid "Set picked color" -msgstr "" +msgstr "הגדר את הצבע שנבחר" -#: ../src/dyna-draw-context.cpp:625 -msgid "" -"Guide path selected; start drawing along the guide with Ctrl" -msgstr "" +#: ../src/dyna-draw-context.cpp:620 +msgid "Guide path selected; start drawing along the guide with Ctrl" +msgstr "נבחר נתיב מנחה; התחל לצייר לאורך קו המתאר בעזרת Ctrl" -#: ../src/dyna-draw-context.cpp:627 +#: ../src/dyna-draw-context.cpp:622 msgid "Select a guide path to track with Ctrl" -msgstr "" +msgstr "בחר נתיב מנחה למעקב בעזרת Ctrl" -#: ../src/dyna-draw-context.cpp:732 +#: ../src/dyna-draw-context.cpp:727 msgid "Tracking: connection to guide path lost!" -msgstr "" +msgstr "עוקב: הקשר לנתיב המתאר אבד!" -#: ../src/dyna-draw-context.cpp:732 +#: ../src/dyna-draw-context.cpp:727 msgid "Tracking a guide path" -msgstr "" +msgstr "עוקב אחר נתיב מתאר" -#: ../src/dyna-draw-context.cpp:735 +#: ../src/dyna-draw-context.cpp:730 msgid "Drawing a calligraphic stroke" -msgstr "" +msgstr "מצייר קו מתאר קליגרפי" -#: ../src/dyna-draw-context.cpp:1016 +#: ../src/dyna-draw-context.cpp:1009 msgid "Draw calligraphic stroke" -msgstr "" +msgstr "צייר קו מתאר קליגרפי" -#: ../src/eraser-context.cpp:532 +#: ../src/eraser-context.cpp:528 msgid "Drawing an eraser stroke" -msgstr "" +msgstr "מצייר קו מתאר למחק" -#: ../src/eraser-context.cpp:839 +#: ../src/eraser-context.cpp:831 msgid "Draw eraser stroke" -msgstr "" +msgstr "צייר קו מתאר למחק" -#: ../src/event-context.cpp:595 +#: ../src/event-context.cpp:608 msgid "Space+mouse drag to pan canvas" -msgstr "" +msgstr "Space+גרירת עכבר להתאים את שטח מתחם הציור למצב פנורמי" #: ../src/event-log.cpp:37 msgid "[Unchanged]" -msgstr "" +msgstr "[ללא שינוי]" #. Edit -#: ../src/event-log.cpp:264 ../src/event-log.cpp:267 ../src/verbs.cpp:2193 +#: ../src/event-log.cpp:264 +#: ../src/event-log.cpp:267 +#: ../src/verbs.cpp:2248 msgid "_Undo" -msgstr "" +msgstr "_חזור" -#: ../src/event-log.cpp:274 ../src/event-log.cpp:278 ../src/verbs.cpp:2195 +#: ../src/event-log.cpp:274 +#: ../src/event-log.cpp:278 +#: ../src/verbs.cpp:2250 msgid "_Redo" -msgstr "" +msgstr "_בצע שוב" #: ../src/extension/dependency.cpp:261 msgid "Dependency:" -msgstr "" +msgstr "תלות:" #: ../src/extension/dependency.cpp:262 msgid " type: " -msgstr "" +msgstr " סוג: " #: ../src/extension/dependency.cpp:263 msgid " location: " -msgstr "" +msgstr " מיקום: " #: ../src/extension/dependency.cpp:264 msgid " string: " -msgstr "" +msgstr " מחרוזת: " #: ../src/extension/dependency.cpp:267 msgid " description: " -msgstr "" +msgstr " תיאור: " #: ../src/extension/effect.cpp:35 msgid " (No preferences)" -msgstr "" +msgstr " (ללא העדפות)" #. This is some filler text, needs to change before relase #: ../src/extension/error-file.cpp:53 msgid "" -"One or more extensions failed to load\n" +"One or more extensions failed to load\n" "\n" -"The failed extensions have been skipped. Inkscape will continue to run " -"normally but those extensions will be unavailable. For details to " -"troubleshoot this problem, please refer to the error log located at: " +"The failed extensions have been skipped. Inkscape will continue to run normally but those extensions will be unavailable. For details to troubleshoot this problem, please refer to the error log located at: " msgstr "" +"טעינת אחת ההרחבות או יותר נכשלה\n" +"\n" +"התוכנה דילגה על ההרחבה התקולה. אינקסקייפ תמשיך לרוץ כרגיל אך הרחבות אלו לא יהיו זמינות. לפרטים אודות פתרון תקלה זו, נא פנה לדוח השגיאות הממוקם תחת: " -#. This is some filler text, needs to change before relase -#: ../src/extension/error-file.cpp:62 +#: ../src/extension/error-file.cpp:63 msgid "Show dialog on startup" -msgstr "הראה תיבת דו-שיח בהפעלה" +msgstr "הצג תיבת דו־שיח בהפעלה" #: ../src/extension/execution-env.cpp:134 #, c-format @@ -2515,121 +2633,120 @@ msgstr "'%s' עובד, אנא המתן..." #. static int i = 0; #. std::cout << "Checking module[" << i++ << "]: " << name << std::endl; #: ../src/extension/extension.cpp:252 -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." -msgstr "" +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." +msgstr " דבר זה נגרם עקב קובץ .inx לא תקני עבור הרחבה זו. הסיבה לשיבוש בקובץ ה־.inx עלולה להיות עקב התקנה פגומה של אינקסקייפ." #: ../src/extension/extension.cpp:255 msgid "an ID was not defined for it." -msgstr "" +msgstr "לא הוגדר עבורה מזהה." #: ../src/extension/extension.cpp:259 msgid "there was no name defined for it." -msgstr "" +msgstr "לא הוגדר עבורה שם." #: ../src/extension/extension.cpp:263 msgid "the XML description of it got lost." -msgstr "" +msgstr "תיאור ה־XML עבורה אבד." #: ../src/extension/extension.cpp:267 msgid "no implementation was defined for the extension." -msgstr "" +msgstr "לא הוגדר ביצוע עבור הרחבה זו." #. std::cout << "Failed: " << *(_deps[i]) << std::endl; #: ../src/extension/extension.cpp:274 msgid "a dependency was not met." -msgstr "" +msgstr "מרכיבי התלות אינם מספקים." #: ../src/extension/extension.cpp:294 msgid "Extension \"" -msgstr "" +msgstr "טעינת ההרחבה \"" #: ../src/extension/extension.cpp:294 msgid "\" failed to load because " -msgstr "" +msgstr "\" כשלה מכיוון " #: ../src/extension/extension.cpp:625 #, c-format msgid "Could not create extension error log file '%s'" -msgstr "" +msgstr "לא ניתן ליצור קובץ דוח שגיאה עבור ההרחבה '%s'" #: ../src/extension/extension.cpp:723 msgid "Name:" -msgstr "" +msgstr "שם:" #: ../src/extension/extension.cpp:724 msgid "ID:" -msgstr "" +msgstr "מזהה:" #: ../src/extension/extension.cpp:725 msgid "State:" -msgstr "" +msgstr "מצב:" #: ../src/extension/extension.cpp:725 msgid "Loaded" -msgstr "" +msgstr "נטען" #: ../src/extension/extension.cpp:725 msgid "Unloaded" -msgstr "" +msgstr "פורק" #: ../src/extension/extension.cpp:725 msgid "Deactivated" -msgstr "" +msgstr "בוטל" #: ../src/extension/extension.cpp:756 -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 " -"this extension." -msgstr "" +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 this extension." +msgstr "נכון לעכשיו אין עזרה זמינה עבור הרחבה זו. אנא עיין באתר של אינקסקייפ או בקש ברשימות הקבוצה במידה ויש לך שאלות בנוגע להרחבה זו." -#: ../src/extension/implementation/script.cpp:1055 -msgid "" -"Inkscape has received additional data from the script executed. The script " -"did not return an error, but this may indicate the results will not be as " -"expected." -msgstr "" +#: ../src/extension/implementation/script.cpp:1036 +msgid "Inkscape has received additional data from the script executed. The script did not return an error, but this may indicate the results will not be as expected." +msgstr "אינקסקייפ קיבלה נתונים נוספים מהתסריט שהופעל. התסריט לא החזיר שגיאה, אך דבר זה עלול להעיד כי התוצאות לא יהיו כמצופה." -#: ../src/extension/init.cpp:282 +#: ../src/extension/init.cpp:291 msgid "Null external module directory name. Modules will not be loaded." -msgstr "" +msgstr "שם מודול חיצוני אפסי. המודולים לא יטענו." -#: ../src/extension/init.cpp:296 +#: ../src/extension/init.cpp:305 #: ../src/extension/internal/filter/filter-file.cpp:56 #, c-format -msgid "" -"Modules directory (%s) is unavailable. External modules in that directory " -"will not be loaded." -msgstr "" +msgid "Modules directory (%s) is unavailable. External modules in that directory will not be loaded." +msgstr "תיקיית המודולים (%s) אינה זמינה. המודולים החיצוניים בתיקיה זו לא יטענו." #: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:38 msgid "Adaptive Threshold" -msgstr "" +msgstr "סף מסתגל" #: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:40 #: ../src/extension/internal/bitmap/raise.cpp:41 #: ../src/extension/internal/bitmap/sample.cpp:40 -#: ../src/extension/internal/bluredge.cpp:134 ../src/libgdl/gdl-dock.c:190 +#: ../src/extension/internal/bluredge.cpp:136 +#: ../src/libgdl/gdl-dock.c:190 #: ../src/libgdl/gdl-dock-placeholder.c:169 -#: ../src/live_effects/lpe-bendpath.cpp:58 -#: ../src/live_effects/lpe-patternalongpath.cpp:64 -#: ../src/widgets/toolbox.cpp:2396 ../src/widgets/toolbox.cpp:3241 +#: ../src/live_effects/lpe-bendpath.cpp:56 +#: ../src/live_effects/lpe-patternalongpath.cpp:63 +#: ../src/widgets/toolbox.cpp:2632 +#: ../src/widgets/toolbox.cpp:3661 msgid "Width" msgstr "רוחב" #: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:41 #: ../src/extension/internal/bitmap/raise.cpp:42 -#: ../src/extension/internal/bitmap/sample.cpp:41 ../src/libgdl/gdl-dock.c:198 -#: ../src/libgdl/gdl-dock-placeholder.c:177 ../src/widgets/toolbox.cpp:2413 +#: ../src/extension/internal/bitmap/sample.cpp:41 +#: ../src/libgdl/gdl-dock.c:198 +#: ../src/libgdl/gdl-dock-placeholder.c:177 +#: ../src/widgets/toolbox.cpp:2649 msgid "Height" msgstr "גובה" +#. initialise your parameters here: #: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:42 #: ../src/filter-enums.cpp:32 +#: ../src/live_effects/effect.cpp:93 +#: ../src/live_effects/lpe-offset.cpp:30 +#: ../src/live_effects/lpe-parallel.cpp:46 +#: ../src/live_effects/lpe-ruler.cpp:49 msgid "Offset" -msgstr "היסט" +msgstr "קיזוז" #: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:46 #: ../src/extension/internal/bitmap/addNoise.cpp:57 @@ -2667,11 +2784,11 @@ msgstr "היסט" #: ../src/extension/internal/bitmap/unsharpmask.cpp:49 #: ../src/extension/internal/bitmap/wave.cpp:44 msgid "Raster" -msgstr "" +msgstr "עיבוד" #: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:48 msgid "Apply adaptive thresholding to selected bitmap(s)." -msgstr "" +msgstr "החל את הסף המסתגל על התמונה/ות הנבחרת/ות" #: ../src/extension/internal/bitmap/addNoise.cpp:44 msgid "Add Noise" @@ -2683,15 +2800,15 @@ msgstr "רעש אחיד" #: ../src/extension/internal/bitmap/addNoise.cpp:48 msgid "Gaussian Noise" -msgstr "רעש גאוסי" +msgstr "רעש פעמוני" #: ../src/extension/internal/bitmap/addNoise.cpp:49 msgid "Multiplicative Gaussian Noise" -msgstr "" +msgstr "רעש פעמוני מוכפל" #: ../src/extension/internal/bitmap/addNoise.cpp:50 msgid "Impulse Noise" -msgstr "" +msgstr "רעש דחפי" #: ../src/extension/internal/bitmap/addNoise.cpp:51 msgid "Laplacian Noise" @@ -2699,15 +2816,15 @@ msgstr "רעש לפלאס" #: ../src/extension/internal/bitmap/addNoise.cpp:52 msgid "Poisson Noise" -msgstr "ראש פואסוני" +msgstr "רעש פואסוני" #: ../src/extension/internal/bitmap/addNoise.cpp:59 msgid "Add random noise to selected bitmap(s)." -msgstr "" +msgstr "הוסף רעש אקראי לתמונה/ות הנבחרת/ות" #: ../src/extension/internal/bitmap/blur.cpp:37 msgid "Blur" -msgstr "" +msgstr "טשטוש" #: ../src/extension/internal/bitmap/blur.cpp:39 #: ../src/extension/internal/bitmap/charcoal.cpp:39 @@ -2717,7 +2834,7 @@ msgstr "" #: ../src/extension/internal/bitmap/oilPaint.cpp:38 #: ../src/extension/internal/bitmap/sharpen.cpp:39 #: ../src/extension/internal/bitmap/unsharpmask.cpp:42 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2251 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2265 msgid "Radius" msgstr "רדיוס" @@ -2728,11 +2845,11 @@ msgstr "רדיוס" #: ../src/extension/internal/bitmap/sharpen.cpp:40 #: ../src/extension/internal/bitmap/unsharpmask.cpp:43 msgid "Sigma" -msgstr "" +msgstr "סיגמא" #: ../src/extension/internal/bitmap/blur.cpp:46 msgid "Blur selected bitmap(s)" -msgstr "" +msgstr "טשטש את התמונה/ות הנבחרת/ות" #: ../src/extension/internal/bitmap/channel.cpp:47 #: ../src/extension/internal/bitmap/levelChannel.cpp:53 @@ -2746,51 +2863,51 @@ msgstr "שכבה" #: ../src/extension/internal/bitmap/channel.cpp:50 #: ../src/extension/internal/bitmap/levelChannel.cpp:54 msgid "Red Channel" -msgstr "ערוץ אדום" +msgstr "ערוץ האדום" #: ../src/extension/internal/bitmap/channel.cpp:51 #: ../src/extension/internal/bitmap/levelChannel.cpp:55 msgid "Green Channel" -msgstr "ערוץ ירוק" +msgstr "ערוץ הירוק" #: ../src/extension/internal/bitmap/channel.cpp:52 #: ../src/extension/internal/bitmap/levelChannel.cpp:56 msgid "Blue Channel" -msgstr "ערוץ כחול" +msgstr "ערוץ הכחול" #: ../src/extension/internal/bitmap/channel.cpp:53 #: ../src/extension/internal/bitmap/levelChannel.cpp:57 msgid "Cyan Channel" -msgstr "" +msgstr "ערוץ הציאן" #: ../src/extension/internal/bitmap/channel.cpp:54 #: ../src/extension/internal/bitmap/levelChannel.cpp:58 msgid "Magenta Channel" -msgstr "" +msgstr "ערוץ הארגמן" #: ../src/extension/internal/bitmap/channel.cpp:55 #: ../src/extension/internal/bitmap/levelChannel.cpp:59 msgid "Yellow Channel" -msgstr "ערוץ צהוב" +msgstr "ערוץ הצהוב" #: ../src/extension/internal/bitmap/channel.cpp:56 #: ../src/extension/internal/bitmap/levelChannel.cpp:60 msgid "Black Channel" -msgstr "ערוץ שחור" +msgstr "ערוץ השחור" #: ../src/extension/internal/bitmap/channel.cpp:57 #: ../src/extension/internal/bitmap/levelChannel.cpp:61 msgid "Opacity Channel" -msgstr "ערוץ שקיפות" +msgstr "ערוץ האטימות" #: ../src/extension/internal/bitmap/channel.cpp:58 #: ../src/extension/internal/bitmap/levelChannel.cpp:62 msgid "Matte Channel" -msgstr "" +msgstr "ערוץ העמימות" #: ../src/extension/internal/bitmap/channel.cpp:65 msgid "Extract specific channel from image." -msgstr "" +msgstr "ייצא ערוץ מסויים מתמונה." #: ../src/extension/internal/bitmap/charcoal.cpp:37 msgid "Charcoal" @@ -2798,15 +2915,15 @@ msgstr "פחם" #: ../src/extension/internal/bitmap/charcoal.cpp:46 msgid "Apply charcoal stylization to selected bitmap(s)." -msgstr "" +msgstr "החל סגנון צביעת פחם על התמונה/ות הנבחרת/ות." #: ../src/extension/internal/bitmap/colorize.cpp:49 msgid "Colorize" -msgstr "" +msgstr "הוספת צבע" #: ../src/extension/internal/bitmap/colorize.cpp:57 msgid "Colorize selected bitmap(s) with specified color, using given opacity." -msgstr "" +msgstr "הוסף את הצבע המוגדר לתמונה/ות הנבחרות, עם האטימות הנתונה." #: ../src/extension/internal/bitmap/contrast.cpp:36 msgid "Contrast" @@ -2819,13 +2936,12 @@ msgstr "שפר חדות" #: ../src/extension/internal/bitmap/contrast.cpp:44 msgid "Enhance intensity differences in selected bitmap(s)." -msgstr "" +msgstr "הגבר את עוצמת ההבדלים בתמונה/ות הנבחרת/ות." #. TRANSLATORS: see http://docs.gimp.org/en/gimp-tool-convolve.html #: ../src/extension/internal/bitmap/convolve.cpp:50 -#, fuzzy msgid "Convolve" -msgstr "הזז" +msgstr "ריכוך" #: ../src/extension/internal/bitmap/convolve.cpp:52 #: ../src/extension/internal/bitmap/reduceNoise.cpp:41 @@ -2835,15 +2951,15 @@ msgstr "סדר" #: ../src/extension/internal/bitmap/convolve.cpp:53 msgid "Kernel Array" -msgstr "" +msgstr "מערך גרעין" #: ../src/extension/internal/bitmap/convolve.cpp:59 msgid "Apply Convolve Effect" -msgstr "" +msgstr "החל את אפקט הריכוך" #: ../src/extension/internal/bitmap/cycleColormap.cpp:36 msgid "Cycle Colormap" -msgstr "" +msgstr "גלול את מפת הצבעים" #: ../src/extension/internal/bitmap/cycleColormap.cpp:38 #: ../src/extension/internal/bitmap/spread.cpp:38 @@ -2853,15 +2969,15 @@ msgstr "כמות" #: ../src/extension/internal/bitmap/cycleColormap.cpp:44 msgid "Cycle colormap(s) of selected bitmap(s)." -msgstr "" +msgstr "גלול את מפת/ות הצבעים של התמונה/ות הנבחרת/ות." #: ../src/extension/internal/bitmap/despeckle.cpp:35 msgid "Despeckle" -msgstr "" +msgstr "הפחת מוקדי רעש" #: ../src/extension/internal/bitmap/despeckle.cpp:42 msgid "Reduce speckle noise of selected bitmap(s)." -msgstr "" +msgstr "הפחת את רמת מוקדי הרעש של התמונה/ות הנבחרת/ות." #: ../src/extension/internal/bitmap/edge.cpp:36 msgid "Edge" @@ -2869,70 +2985,70 @@ msgstr "קצה" #: ../src/extension/internal/bitmap/edge.cpp:44 msgid "Hilight edges of selected bitmap(s)." -msgstr "" +msgstr "הדגש את קצוות התמונה/ות הנבחרת/ות." #. ID -- should be unique #: ../src/extension/internal/bitmap/emboss.cpp:37 #: ../src/extension/internal/filter/emboss.h:21 msgid "Emboss" -msgstr "" +msgstr "הבלט" #: ../src/extension/internal/bitmap/emboss.cpp:46 msgid "Emboss selected bitmap(s) -- hilight edges with 3D effect." -msgstr "" +msgstr "צור תבליט מהתמונה/ות הנבחרת/ות -- הדגש את הקצוות עם אפקט תלת מימד." #: ../src/extension/internal/bitmap/enhance.cpp:34 msgid "Enhance" -msgstr "" +msgstr "שפר" #: ../src/extension/internal/bitmap/enhance.cpp:41 msgid "Enhance selected bitmap(s) -- minimize noise." -msgstr "" +msgstr "שפר את התמונה/ות הנבחרת/ות -- מזער את כמויות הרעש." #: ../src/extension/internal/bitmap/equalize.cpp:34 msgid "Equalize" -msgstr "" +msgstr "השווה" #: ../src/extension/internal/bitmap/equalize.cpp:41 msgid "Equalize selected bitmap(s) -- histogram equalization." -msgstr "" +msgstr "השווה את רמות הצבעים בתמונה/ות הנבחרת/ות -- השוואת היסטוגרמה." #: ../src/extension/internal/bitmap/gaussianBlur.cpp:37 #: ../src/filter-enums.cpp:28 msgid "Gaussian Blur" -msgstr "" +msgstr "טשטוש פעמוני" #: ../src/extension/internal/bitmap/gaussianBlur.cpp:39 #: ../src/extension/internal/bitmap/implode.cpp:38 #: ../src/extension/internal/bitmap/solarize.cpp:38 msgid "Factor" -msgstr "פקטור" +msgstr "מקדם" #: ../src/extension/internal/bitmap/gaussianBlur.cpp:46 msgid "Gaussian blur selected bitmap(s)." -msgstr "" +msgstr "החל את הטשטוש הפעמוני על התמונה/ות הנבחרת/ות." #: ../src/extension/internal/bitmap/implode.cpp:36 msgid "Implode" -msgstr "" +msgstr "הקרס פנימה" #: ../src/extension/internal/bitmap/implode.cpp:44 msgid "Implode selected bitmap(s)." -msgstr "" +msgstr "הקרס פנימה את התמונה/ות הנבחרת/ות." #: ../src/extension/internal/bitmap/levelChannel.cpp:51 msgid "Level (with Channel)" -msgstr "" +msgstr "רמה (עם ערוץ)" #: ../src/extension/internal/bitmap/levelChannel.cpp:64 #: ../src/extension/internal/bitmap/level.cpp:42 msgid "Black Point" -msgstr "" +msgstr "נקודה שחורה" #: ../src/extension/internal/bitmap/levelChannel.cpp:65 #: ../src/extension/internal/bitmap/level.cpp:43 msgid "White Point" -msgstr "" +msgstr "נקודה לבנה" #: ../src/extension/internal/bitmap/levelChannel.cpp:66 #: ../src/extension/internal/bitmap/level.cpp:44 @@ -2940,171 +3056,161 @@ msgid "Gamma Correction" msgstr "תיקון גאמא" #: ../src/extension/internal/bitmap/levelChannel.cpp:72 -msgid "" -"Level the specified channel of selected bitmap(s) by scaling values falling " -"between the given ranges to the full color range." -msgstr "" +msgid "Level the specified channel of selected bitmap(s) by scaling values falling between the given ranges to the full color range." +msgstr "שנה את רמת הערוץ המוגדר של התמונה/ות הנבחרת/ות על ידי שינוי הערכים הנופלים בין הטווחים הניתנים לבין טווח הצבעים המלא." #: ../src/extension/internal/bitmap/level.cpp:40 msgid "Level" -msgstr "" +msgstr "רמה" #: ../src/extension/internal/bitmap/level.cpp:50 -msgid "" -"Level selected bitmap(s) by scaling values falling between the given ranges " -"to the full color range." -msgstr "" +msgid "Level selected bitmap(s) by scaling values falling between the given ranges to the full color range." +msgstr "שנה את רמת הערוץ של התמונה/ות הנבחרת/ות על ידי שינוי הערכים הנופלים בין הטווחים הניתנים לבין טווח הצבעים המלא." #: ../src/extension/internal/bitmap/medianFilter.cpp:36 msgid "Median Filter" -msgstr "" +msgstr "מסנן חציון" #: ../src/extension/internal/bitmap/medianFilter.cpp:44 -msgid "" -"Filter selected bitmap(s) by replacing each pixel component with the median " -"color in a circular neighborhood." -msgstr "" +msgid "Filter selected bitmap(s) by replacing each pixel component with the median color in a circular neighborhood." +msgstr "סנן את התמונה/ות הנבחרת/ות על ידי החלפת כל מרכיב פיקסל עם הצבע החציוני בסביבה מעגלית." #: ../src/extension/internal/bitmap/modulate.cpp:39 msgid "Modulate" -msgstr "" +msgstr "ווסת" #: ../src/extension/internal/bitmap/modulate.cpp:41 msgid "Brightness" msgstr "בהירות" #: ../src/extension/internal/bitmap/modulate.cpp:42 -#: ../src/flood-context.cpp:275 ../src/ui/dialog/inkscape-preferences.cpp:731 -#: ../src/widgets/sp-color-icc-selector.cpp:235 +#: ../src/flood-context.cpp:279 +#: ../src/ui/dialog/inkscape-preferences.cpp:785 #: ../src/widgets/sp-color-icc-selector.cpp:236 +#: ../src/widgets/sp-color-icc-selector.cpp:237 #: ../src/widgets/sp-color-scales.cpp:427 -#: ../src/widgets/sp-color-scales.cpp:428 ../src/widgets/toolbox.cpp:3375 +#: ../src/widgets/sp-color-scales.cpp:428 +#: ../src/widgets/toolbox.cpp:3833 #: ../share/extensions/color_randomize.inx.h:5 msgid "Saturation" -msgstr "" +msgstr "רוויה" #: ../src/extension/internal/bitmap/modulate.cpp:43 -#: ../src/flood-context.cpp:274 ../src/widgets/sp-color-icc-selector.cpp:235 +#: ../src/flood-context.cpp:278 #: ../src/widgets/sp-color-icc-selector.cpp:236 +#: ../src/widgets/sp-color-icc-selector.cpp:237 #: ../src/widgets/sp-color-scales.cpp:424 -#: ../src/widgets/sp-color-scales.cpp:425 ../src/widgets/toolbox.cpp:3360 +#: ../src/widgets/sp-color-scales.cpp:425 +#: ../src/widgets/toolbox.cpp:3818 #: ../share/extensions/color_randomize.inx.h:2 msgid "Hue" -msgstr "" +msgstr "גוון" #: ../src/extension/internal/bitmap/modulate.cpp:49 msgid "Modulate percent hue, saturation, and brightness of selected bitmap(s)." -msgstr "" +msgstr "ווסת את אחוזי הגוון, הרוויה והבהירות של התמונה/ות הנבחרת/ות." #: ../src/extension/internal/bitmap/negate.cpp:35 msgid "Negate" -msgstr "" +msgstr "תשליל" #: ../src/extension/internal/bitmap/negate.cpp:42 msgid "Negate (take inverse) selected bitmap(s)." -msgstr "" +msgstr "הפוך את צבעי התמונה/ות הנבחרת/ות כך שיתקבל/ו תשליל/ים." #: ../src/extension/internal/bitmap/normalize.cpp:35 msgid "Normalize" -msgstr "" +msgstr "תיקון צבע" #: ../src/extension/internal/bitmap/normalize.cpp:42 -msgid "" -"Normalize selected bitmap(s), expanding color range to the full possible " -"range of color." -msgstr "" +msgid "Normalize selected bitmap(s), expanding color range to the full possible range of color." +msgstr "תקן את צבע התמונה/ות הנבחרת/ות, הרחבת טווח הצבעים לטווח הצבעים המלא האפשרי." #: ../src/extension/internal/bitmap/oilPaint.cpp:36 msgid "Oil Paint" -msgstr "" +msgstr "צבע שמן" #: ../src/extension/internal/bitmap/oilPaint.cpp:44 msgid "Stylize selected bitmap(s) so that they appear to be painted with oils." -msgstr "" +msgstr "עצב את התמונה/ות הנבחרת/ות כך שתראה/יראו כאילו נצבעה/ו בצבעי שמן." #: ../src/extension/internal/bitmap/opacity.cpp:45 msgid "Modify opacity channel(s) of selected bitmap(s)." -msgstr "" +msgstr "שנה את ערוץ/י האטימות של התמונה/ות הנבחרת/ות" #: ../src/extension/internal/bitmap/raise.cpp:39 msgid "Raise" -msgstr "" +msgstr "הגבה" #: ../src/extension/internal/bitmap/raise.cpp:43 msgid "Raised" -msgstr "" +msgstr "מוגבה" #: ../src/extension/internal/bitmap/raise.cpp:49 -msgid "" -"Alter lightness the edges of selected bitmap(s) to create a raised " -"appearance." -msgstr "" +msgid "Alter lightness the edges of selected bitmap(s) to create a raised appearance." +msgstr "שנה את תאורת קצוות התמונה/ות הנבחרת/ות כדי ליצור מראה מוגבה." #: ../src/extension/internal/bitmap/reduceNoise.cpp:39 msgid "Reduce Noise" -msgstr "" +msgstr "הפחת רעש" #: ../src/extension/internal/bitmap/reduceNoise.cpp:47 -msgid "" -"Reduce noise in selected bitmap(s) using a noise peak elimination filter." -msgstr "" +msgid "Reduce noise in selected bitmap(s) using a noise peak elimination filter." +msgstr "הפחת את הרעש עבור התמונה/ות הנבחרת/ות באמצעות מסנן הסרת פסגות רעש." #: ../src/extension/internal/bitmap/sample.cpp:38 -#, fuzzy msgid "Sample" -msgstr "צורות" +msgstr "דוגמה" #: ../src/extension/internal/bitmap/sample.cpp:47 -msgid "" -"Alter the resolution of selected image by resizing it by given dimensions." -msgstr "" +msgid "Alter the resolution of selected image by resizing it by given dimensions." +msgstr "שנה את רזולוציית התמונה הנבחרת אל ידי שינוי הגודל שלה על פי המימדים שניתנו." #: ../src/extension/internal/bitmap/shade.cpp:39 msgid "Shade" msgstr "הצל" #: ../src/extension/internal/bitmap/shade.cpp:41 -#: ../src/ui/dialog/filter-effects-dialog.cpp:992 +#: ../src/ui/dialog/filter-effects-dialog.cpp:995 msgid "Azimuth" -msgstr "אזימוט" +msgstr "אזימות" #: ../src/extension/internal/bitmap/shade.cpp:42 -#: ../src/ui/dialog/filter-effects-dialog.cpp:993 +#: ../src/ui/dialog/filter-effects-dialog.cpp:996 msgid "Elevation" -msgstr "" +msgstr "הגבהה" #: ../src/extension/internal/bitmap/shade.cpp:43 msgid "Colored Shading" -msgstr "" +msgstr "הצללה בצבע" #: ../src/extension/internal/bitmap/shade.cpp:49 msgid "Shade selected bitmap(s) simulating distant light source." -msgstr "" +msgstr "הצל את התמונה/ות הנבחרת/ות עם הדמיית מקור אור מרוחק." #: ../src/extension/internal/bitmap/sharpen.cpp:46 msgid "Sharpen selected bitmap(s)." -msgstr "" +msgstr "שפר את חדות התמונה/ות הנבחרת/ות." #: ../src/extension/internal/bitmap/solarize.cpp:36 msgid "Solarize" -msgstr "" +msgstr "מכת שמש" #: ../src/extension/internal/bitmap/solarize.cpp:44 msgid "Solarize selected bitmap(s), like overexposing photographic film." -msgstr "" +msgstr "הפעל אפקט של מכת שמש על התמונה/ות הנבחרת/ות, כמו חשיפת יתר של סרט צילום לשמש." #: ../src/extension/internal/bitmap/spread.cpp:36 msgid "Spread" -msgstr "" +msgstr "פזר" #: ../src/extension/internal/bitmap/spread.cpp:44 -msgid "" -"Randomly spread pixels in selected bitmap(s), within the radius of 'amount.'" -msgstr "" +msgid "Randomly spread pixels in selected bitmap(s), within the radius of 'amount.'" +msgstr "פזר את הפיקסלים בתמונה/ות הנבחרת/ות באופן אקראי, בטווח הרדיוס המוגדר כ-'כמות'." #: ../src/extension/internal/bitmap/swirl.cpp:36 msgid "Swirl" -msgstr "" +msgstr "ערבל" #: ../src/extension/internal/bitmap/swirl.cpp:38 #: ../share/extensions/grid_polar.inx.h:7 @@ -3113,26 +3219,26 @@ msgstr "מעלות" #: ../src/extension/internal/bitmap/swirl.cpp:44 msgid "Swirl selected bitmap(s) around center point." -msgstr "" +msgstr "ערבל את התמונה/ות הנבחרת/ות סביב נקודת המרכז." #. TRANSLATORS: see http://docs.gimp.org/en/gimp-tool-threshold.html #: ../src/extension/internal/bitmap/threshold.cpp:37 #: ../src/extension/internal/bitmap/threshold.cpp:39 #: ../src/extension/internal/bitmap/unsharpmask.cpp:45 msgid "Threshold" -msgstr "" +msgstr "סף" #: ../src/extension/internal/bitmap/threshold.cpp:45 msgid "Threshold selected bitmap(s)." -msgstr "" +msgstr "שנה את סף הצבעים עבור התמונה/ות הנבחרת/ות -- שיפור האיכות בתמונות שחור לבן." #: ../src/extension/internal/bitmap/unsharpmask.cpp:40 msgid "Unsharp Mask" -msgstr "" +msgstr "מסכת אי־חדות" #: ../src/extension/internal/bitmap/unsharpmask.cpp:51 msgid "Sharpen selected bitmap(s) using unsharp mask algorithms." -msgstr "" +msgstr "שפר את חדות התמונה/ות הנבחרת/ות באמצעות אלגוריתמי מסכת אי חדות." #: ../src/extension/internal/bitmap/wave.cpp:37 msgid "Wave" @@ -3148,215 +3254,254 @@ msgstr "אורך גל" #: ../src/extension/internal/bitmap/wave.cpp:46 msgid "Alter selected bitmap(s) along sine wave." -msgstr "" +msgstr "שנה את התמונה/ות הנבחרת/ות לאורך גל סינוסי." -#: ../src/extension/internal/bluredge.cpp:132 +#: ../src/extension/internal/bluredge.cpp:134 msgid "Inset/Outset Halo" -msgstr "" +msgstr "הילה פנימית/חיצונית" -#: ../src/extension/internal/bluredge.cpp:134 +#: ../src/extension/internal/bluredge.cpp:136 msgid "Width in px of the halo" -msgstr "" +msgstr "רוחב בפיקסלים של ההילה" -#: ../src/extension/internal/bluredge.cpp:135 +#: ../src/extension/internal/bluredge.cpp:137 msgid "Number of steps" msgstr "מספר צעדים" -#: ../src/extension/internal/bluredge.cpp:135 +#: ../src/extension/internal/bluredge.cpp:137 msgid "Number of inset/outset copies of the object to make" -msgstr "" +msgstr "מספר עותקים פנימיים/חיצוניים של הפריט שיש ליצור" -#: ../src/extension/internal/bluredge.cpp:139 -#: ../share/extensions/interp.inx.h:3 ../share/extensions/motion.inx.h:3 +#: ../src/extension/internal/bluredge.cpp:141 +#: ../share/extensions/extrude.inx.h:2 +#: ../share/extensions/interp.inx.h:3 +#: ../share/extensions/motion.inx.h:2 #: ../share/extensions/pathalongpath.inx.h:4 #: ../share/extensions/pathscatter.inx.h:5 msgid "Generate from Path" -msgstr "" +msgstr "ייצר מנתיב" -#: ../src/extension/internal/cairo-pdf-out.cpp:239 -#, fuzzy +#: ../src/extension/internal/cairo-pdf-out.cpp:238 msgid "Cairo PDF Output" -msgstr "פלט EMF" +msgstr "פלט Cairo PDF" -#: ../src/extension/internal/cairo-pdf-out.cpp:241 +#: ../src/extension/internal/cairo-pdf-out.cpp:240 +#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:215 msgid "Restrict to PDF version" -msgstr "" +msgstr "הגבל לגרסת ה־PDF" -#: ../src/extension/internal/cairo-pdf-out.cpp:242 +#: ../src/extension/internal/cairo-pdf-out.cpp:241 +#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:216 msgid "PDF 1.4" -msgstr "" +msgstr "PDF 1.4" -#: ../src/extension/internal/cairo-pdf-out.cpp:244 -#: ../src/extension/internal/cairo-ps-out.cpp:230 -#: ../src/extension/internal/emf-win32-inout.cpp:2182 +#: ../src/extension/internal/cairo-pdf-out.cpp:243 +#: ../src/extension/internal/cairo-ps-out.cpp:284 +#: ../src/extension/internal/cairo-ps-out.cpp:321 +#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:218 +#: ../src/extension/internal/emf-win32-inout.cpp:2433 #: ../src/extension/internal/eps-out.cpp:92 #: ../src/extension/internal/ps-out.cpp:84 msgid "Convert texts to paths" -msgstr "" +msgstr "המר טקסטים לנתיבים" -#: ../src/extension/internal/cairo-pdf-out.cpp:245 -#: ../src/extension/internal/cairo-ps-out.cpp:231 +#: ../src/extension/internal/cairo-pdf-out.cpp:244 +#: ../src/extension/internal/cairo-ps-out.cpp:285 +#: ../src/extension/internal/cairo-ps-out.cpp:322 msgid "Convert blur effects to bitmaps" -msgstr "" +msgstr "המר אפקטי טישטוש למפות סיביות" -#: ../src/extension/internal/cairo-pdf-out.cpp:246 -#: ../src/extension/internal/cairo-ps-out.cpp:232 +#: ../src/extension/internal/cairo-pdf-out.cpp:245 +#: ../src/extension/internal/cairo-ps-out.cpp:286 +#: ../src/extension/internal/cairo-ps-out.cpp:323 +#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:220 msgid "Preferred resolution (DPI) of bitmaps" -msgstr "" +msgstr "רזולוציה מועדפת (DPI) של מפות הסיביות" -#: ../src/extension/internal/cairo-pdf-out.cpp:247 +#: ../src/extension/internal/cairo-pdf-out.cpp:246 +#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:221 msgid "Export drawing, not page" -msgstr "" +msgstr "ייצא את האיור, לא את העמוד" -#: ../src/extension/internal/cairo-pdf-out.cpp:248 +#: ../src/extension/internal/cairo-pdf-out.cpp:247 +#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:222 msgid "Export canvas" -msgstr "" +msgstr "ייצא את משטח הציור" -#: ../src/extension/internal/cairo-pdf-out.cpp:249 +#: ../src/extension/internal/cairo-pdf-out.cpp:248 +#: ../src/extension/internal/cairo-ps-out.cpp:287 +#: ../src/extension/internal/cairo-ps-out.cpp:324 +#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:223 msgid "Limit export to the object with ID" -msgstr "" +msgstr "הגבל את הייצוא לפריט עם מזהה" -#: ../src/extension/internal/cairo-pdf-out.cpp:253 +#: ../src/extension/internal/cairo-pdf-out.cpp:252 msgid "PDF via Cairo (*.pdf)" -msgstr "" +msgstr "PDF באמצעות Cairo (*.pdf)" -#: ../src/extension/internal/cairo-pdf-out.cpp:254 -#, fuzzy +#: ../src/extension/internal/cairo-pdf-out.cpp:253 msgid "PDF File" -msgstr "קובץ" +msgstr "קובץ PDF" -#: ../src/extension/internal/cairo-ps-out.cpp:222 -#, fuzzy -msgid "Cairo PS Output" -msgstr "פלט EMF" +#: ../src/extension/internal/cairo-ps-out.cpp:274 +#: ../share/extensions/ps_input.inx.h:1 +msgid "PostScript" +msgstr "PostScript" -#: ../src/extension/internal/cairo-ps-out.cpp:224 +#: ../src/extension/internal/cairo-ps-out.cpp:276 +#: ../src/extension/internal/cairo-ps-out.cpp:313 msgid "Restrict to PS level" -msgstr "" +msgstr "הגבל לרמת PS" -#: ../src/extension/internal/cairo-ps-out.cpp:225 -#, fuzzy +#: ../src/extension/internal/cairo-ps-out.cpp:277 +#: ../src/extension/internal/cairo-ps-out.cpp:314 msgid "PostScript level 3" -msgstr "סקריפט" +msgstr "PostScript רמה 3" -#: ../src/extension/internal/cairo-ps-out.cpp:227 +#: ../src/extension/internal/cairo-ps-out.cpp:279 +#: ../src/extension/internal/cairo-ps-out.cpp:316 msgid "PostScript level 2" -msgstr "" +msgstr "PostScript רמה 2" -#: ../src/extension/internal/cairo-ps-out.cpp:236 -msgid "PostScript via Cairo (*.ps)" -msgstr "" +#: ../src/extension/internal/cairo-ps-out.cpp:282 +#: ../src/extension/internal/cairo-ps-out.cpp:319 +msgid "Export area is whole canvas" +msgstr "השטח המיוצא הינו משטח הציור כולו" + +#: ../src/extension/internal/cairo-ps-out.cpp:283 +#: ../src/extension/internal/cairo-ps-out.cpp:320 +msgid "Export area is the drawing" +msgstr "השטח המיוצא הינו הציור" + +#: ../src/extension/internal/cairo-ps-out.cpp:291 +#: ../share/extensions/ps_input.inx.h:2 +msgid "PostScript (*.ps)" +msgstr "PostScript (*.ps)" -#: ../src/extension/internal/cairo-ps-out.cpp:237 +#: ../src/extension/internal/cairo-ps-out.cpp:292 #: ../src/extension/internal/ps-out.cpp:90 msgid "PostScript File" -msgstr "" +msgstr "קובץ PostScript" + +#: ../src/extension/internal/cairo-ps-out.cpp:311 +#: ../share/extensions/eps_input.inx.h:2 +msgid "Encapsulated PostScript" +msgstr "PostScript מכומס" + +#: ../src/extension/internal/cairo-ps-out.cpp:328 +#: ../share/extensions/eps_input.inx.h:3 +msgid "Encapsulated PostScript (*.eps)" +msgstr "PostScript מכומס (*.eps)" + +#: ../src/extension/internal/cairo-ps-out.cpp:329 +msgid "Encapsulated PostScript File" +msgstr "קובץ PostScript מכומס" + +#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:219 +msgid "Convert filter effects to bitmaps" +msgstr "המר אפקטי מסננים למפות סיביות" -#: ../src/extension/internal/emf-win32-inout.cpp:2152 +#: ../src/extension/internal/emf-win32-inout.cpp:2403 msgid "EMF Input" msgstr "קלט EMF" -#: ../src/extension/internal/emf-win32-inout.cpp:2157 +#: ../src/extension/internal/emf-win32-inout.cpp:2408 msgid "Enhanced Metafiles (*.emf)" -msgstr "" +msgstr "קבצי מטא מורחבים (*.emf)" -#: ../src/extension/internal/emf-win32-inout.cpp:2158 +#: ../src/extension/internal/emf-win32-inout.cpp:2409 msgid "Enhanced Metafiles" -msgstr "" +msgstr "קבצי מטא מורחבים" -#: ../src/extension/internal/emf-win32-inout.cpp:2166 +#: ../src/extension/internal/emf-win32-inout.cpp:2417 msgid "WMF Input" msgstr "קלט WMF" -#: ../src/extension/internal/emf-win32-inout.cpp:2171 +#: ../src/extension/internal/emf-win32-inout.cpp:2422 msgid "Windows Metafiles (*.wmf)" -msgstr "" +msgstr "קבצי מטא של Windows (*.wmf)" -#: ../src/extension/internal/emf-win32-inout.cpp:2172 +#: ../src/extension/internal/emf-win32-inout.cpp:2423 msgid "Windows Metafiles" -msgstr "" +msgstr "קבצי מטא של Windows" -#: ../src/extension/internal/emf-win32-inout.cpp:2180 +#: ../src/extension/internal/emf-win32-inout.cpp:2431 msgid "EMF Output" msgstr "פלט EMF" -#: ../src/extension/internal/emf-win32-inout.cpp:2186 +#: ../src/extension/internal/emf-win32-inout.cpp:2437 msgid "Enhanced Metafile (*.emf)" -msgstr "" +msgstr "קבצי מטא מורחבים (*.emf)" -#: ../src/extension/internal/emf-win32-inout.cpp:2187 +#: ../src/extension/internal/emf-win32-inout.cpp:2438 msgid "Enhanced Metafile" -msgstr "" +msgstr "קובץ מטא מורחב" #: ../src/extension/internal/eps-out.cpp:89 msgid "Encapsulated Postscript Output" -msgstr "" +msgstr "פלט PostScript מכומס" #: ../src/extension/internal/eps-out.cpp:91 msgid "Make bounding box around full page" -msgstr "" +msgstr "צור תיבה תוחמת מסביב לכל העמוד" #: ../src/extension/internal/eps-out.cpp:93 #: ../src/extension/internal/ps-out.cpp:85 msgid "Embed fonts (Type 1 only)" -msgstr "" +msgstr "הטמע גופנים (סוג 1 בלבד)" #: ../src/extension/internal/eps-out.cpp:97 -#: ../share/extensions/eps_input.inx.h:3 msgid "Encapsulated Postscript (*.eps)" -msgstr "" +msgstr "Postscript מכומס (*.eps)" #: ../src/extension/internal/eps-out.cpp:98 msgid "Encapsulated Postscript File" -msgstr "" +msgstr "קובץ PostScript מכומס" #. ID -- should be unique #: ../src/extension/internal/filter/apparition.h:24 msgid "Apparition" -msgstr "" +msgstr "התגלות" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/apparition.h:25 msgid "I'm not sure what this word means" -msgstr "" +msgstr "אני לא בטוח מה משמעות המילה הזאת" #. ID -- should be unique #: ../src/extension/internal/filter/bloom.h:24 -#, fuzzy msgid "Bloom" -msgstr "זום" +msgstr "פריחה" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/bloom.h:25 msgid "Not sure, nobody tell me these things" -msgstr "" +msgstr "לא בטוח, אף אחד לא אומר לי דברים כאלה" #. ID -- should be unique #: ../src/extension/internal/filter/clouds.h:24 -#, fuzzy msgid "Clouds" -msgstr "_סגור" +msgstr "עננים" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/clouds.h:25 msgid "Yes, more descriptions" -msgstr "" +msgstr "כן, יותר תיאורים" #. ID -- should be unique #: ../src/extension/internal/filter/crystal.h:24 msgid "Crystal" -msgstr "" +msgstr "קריסטל" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/crystal.h:25 msgid "Artist, insert data here" -msgstr "" +msgstr "אומן, הזן נתונים כאן" #. ID -- should be unique #: ../src/extension/internal/filter/cutout.h:24 -#, fuzzy -msgid "Coutout" -msgstr "פלט" +msgid "Cutout" +msgstr "תגזיר" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/cutout.h:25 @@ -3364,389 +3509,408 @@ msgstr "פלט" #: ../src/extension/internal/filter/frost.h:25 #: ../src/extension/internal/filter/ridged-border.h:25 msgid "Artist text" -msgstr "" +msgstr "טקסט אמנותי" #: ../src/extension/internal/filter/drop-shadow.h:35 msgid "Drop Shadow" -msgstr "" +msgstr "הטל הצללה" #: ../src/extension/internal/filter/drop-shadow.h:37 -#, fuzzy -msgid "Amount of Blur" -msgstr "כמות" +msgid "Blur radius, px" +msgstr "רדיוס הטשטוש, פיקסלים" #: ../src/extension/internal/filter/drop-shadow.h:38 -#: ../src/extension/internal/grid.cpp:197 -msgid "Horizontal Offset" -msgstr "" +#: ../src/ui/widget/object-composite-settings.cpp:62 +#: ../src/ui/widget/selected-style.cpp:1027 +#: ../src/ui/widget/selected-style.cpp:1028 +msgid "Opacity, %" +msgstr "אטימות, %" #: ../src/extension/internal/filter/drop-shadow.h:39 -#: ../src/extension/internal/grid.cpp:198 -msgid "Vertical Offset" -msgstr "" +msgid "Horizontal offset, px" +msgstr "קיזוז אופקי,פיקסלים" -#: ../src/extension/internal/filter/drop-shadow.h:43 -#: ../src/extension/internal/filter/filter.cpp:196 +#: ../src/extension/internal/filter/drop-shadow.h:40 +msgid "Vertical offset, px" +msgstr "קיזוז אנכי, פיקסלים" + +#: ../src/extension/internal/filter/drop-shadow.h:44 +#: ../src/extension/internal/filter/filter.cpp:201 #: ../src/extension/internal/filter/filter-file.cpp:146 #: ../src/extension/internal/filter/snow.h:38 -#, fuzzy msgid "Filter" -msgstr "קובץ" +msgstr "מסנן" -#: ../src/extension/internal/filter/drop-shadow.h:45 -msgid "I hate text" -msgstr "" +#: ../src/extension/internal/filter/drop-shadow.h:46 +msgid "Black, blurred drop shadow" +msgstr "צל מטושטש בהיטל, שחור" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/emboss.h:22 msgid "Emboss effect" -msgstr "" +msgstr "אפקט תבליט" #. ID -- should be unique #: ../src/extension/internal/filter/etched-glass.h:24 msgid "Etched Glass" -msgstr "" +msgstr "זכוכית צרובה" #: ../src/extension/internal/filter/filter-file.cpp:32 -#, fuzzy msgid "Bundled" -msgstr "רנדר" +msgstr "ארוז" #: ../src/extension/internal/filter/filter-file.cpp:33 msgid "Personal" -msgstr "" +msgstr "אישי" #: ../src/extension/internal/filter/filter-file.cpp:44 msgid "Null external module directory name. Filters will not be loaded." -msgstr "" +msgstr "שם תיקיית המודולים החיצונית ריקה. המסננים לא יטענו." #. ID -- should be unique #: ../src/extension/internal/filter/fire.h:24 -#, fuzzy msgid "Fire" -msgstr "קובץ" +msgstr "אש" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/fire.h:25 msgid "Artist on fire" -msgstr "" +msgstr "אומן בלהבות" #. ID -- should be unique #: ../src/extension/internal/filter/frost.h:24 -#, fuzzy msgid "Frost" -msgstr "חלק" +msgstr "קפאון" #. ID -- should be unique #: ../src/extension/internal/filter/ink-bleed.h:24 msgid "InkBleed" -msgstr "" +msgstr "דימום־דיו" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/ink-bleed.h:25 msgid "Artist Text" -msgstr "" +msgstr "טקסט אומן" #. ID -- should be unique #: ../src/extension/internal/filter/jelly-bean.h:24 msgid "Jelly Bean" -msgstr "" +msgstr "סוכריות ג'לי" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/jelly-bean.h:25 msgid "Mmmm, yummy." -msgstr "" +msgstr "ממממ, טעים." #. ID -- should be unique #: ../src/extension/internal/filter/jigsaw-piece.h:24 msgid "JigsawPiece" -msgstr "" +msgstr "חלק ממסורית" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/jigsaw-piece.h:25 msgid "It's a puzzle, no hints" -msgstr "" +msgstr "זה פאזל, אין רמזים" #. ID -- should be unique #: ../src/extension/internal/filter/leopard-fur.h:24 msgid "Leopard Fur" -msgstr "" +msgstr "פרוות נמר" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/leopard-fur.h:25 msgid "Purrrr, quiet the kitty is sleeping" -msgstr "" +msgstr "פררררר, שקט החתלתול ישן" #. ID -- should be unique #: ../src/extension/internal/filter/melt.h:22 -#, fuzzy msgid "Melt" -msgstr "מטר" +msgstr "נמס" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/melt.h:23 msgid "Melt effect" -msgstr "" +msgstr "אפקט הנמסות" #. ID -- should be unique #: ../src/extension/internal/filter/metal.h:24 -#, fuzzy msgid "Metal" -msgstr "מטר" +msgstr "מתכת" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/metal.h:25 msgid "Iron Man vector objects" -msgstr "" +msgstr "פריטי וקטורים של Iron Man" #. ID -- should be unique #: ../src/extension/internal/filter/motion-blur.h:24 msgid "Motion Blur" -msgstr "" +msgstr "טשטוש מתנועה" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/motion-blur.h:25 msgid "Hmm, fast vectors" -msgstr "" +msgstr "הממ, וקטורים מהירים" #. ID -- should be unique #: ../src/extension/internal/filter/oil-slick.h:24 msgid "OilSlick" -msgstr "" +msgstr "החלקת־שמן" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/oil-slick.h:25 msgid "Ooops! Slippery!" -msgstr "" +msgstr "אופס! חלקלק!" #. ID -- should be unique #: ../src/extension/internal/filter/patterned-glass.h:24 msgid "PatternedGlass" -msgstr "" +msgstr "זכוכית־מעוטרת" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/patterned-glass.h:25 msgid "Doesn't work, bug" -msgstr "" +msgstr "לא עובד, באג" #. ID -- should be unique #: ../src/extension/internal/filter/ridged-border.h:24 msgid "Ridged Border" -msgstr "" +msgstr "גבול חרוש" #. ID -- should be unique #: ../src/extension/internal/filter/ripple.h:24 -#, fuzzy msgid "Ripple" -msgstr "קובץ" +msgstr "גלי" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/ripple.h:25 msgid "You're 80% water" -msgstr "" +msgstr "אתה 80% מים" #. ID -- should be unique #: ../src/extension/internal/filter/roughen.h:24 msgid "Roughen" -msgstr "" +msgstr "חיספוס" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/roughen.h:25 msgid "Like Brad Pitt's stubble" -msgstr "" +msgstr "כמו הזיפים של בראד פיט" #. ID -- should be unique #: ../src/extension/internal/filter/rubber-stamp.h:24 msgid "RubberStamp" -msgstr "" +msgstr "חותמת־גומי" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/rubber-stamp.h:25 msgid "Use this to forge your passport" -msgstr "" +msgstr "השתמש בזה כדי לשכוח את הדרכון שלך" #. ID -- should be unique #: ../src/extension/internal/filter/sepia.h:24 -#, fuzzy msgid "Sepia" -msgstr "שלבים" +msgstr "חום כהה" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/sepia.h:25 msgid "Turn all the colors to be sepia tones" -msgstr "" +msgstr "הפוך את כל הצבעים כך שיהיו בגווני חום כהה" #: ../src/extension/internal/filter/snow.h:32 msgid "Snow" -msgstr "" +msgstr "שלג" #: ../src/extension/internal/filter/snow.h:34 msgid "Drift Size" -msgstr "" +msgstr "גודל הסחיפה" #: ../src/extension/internal/filter/snow.h:40 msgid "When the weather outside is frightening..." -msgstr "" +msgstr "כאשר מזג האוויר בחוץ מפחיד..." #. ID -- should be unique #: ../src/extension/internal/filter/speckle.h:24 -#, fuzzy msgid "Speckle" -msgstr "צורות" +msgstr "כתם" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/speckle.h:25 msgid "You look cute with speckles" -msgstr "" +msgstr "אתה נראה חמוד עם כתמים" #. ID -- should be unique #: ../src/extension/internal/filter/zebra.h:24 msgid "Zebra Stripes" -msgstr "" +msgstr "פסי זברה" #. Name in the menus, should have a N_() around it for translation #: ../src/extension/internal/filter/zebra.h:25 msgid "Paint your object with zebra stripes" -msgstr "" +msgstr "צבע את הפריט שלך בפסים של זברה" -#: ../src/extension/internal/gdkpixbuf-input.cpp:114 +#: ../src/extension/internal/gdkpixbuf-input.cpp:113 #, c-format msgid "%s GDK pixbuf Input" -msgstr "" +msgstr "קלט %s GDK pixbuf" #: ../src/extension/internal/gimpgrad.cpp:274 msgid "GIMP Gradients" -msgstr "" +msgstr "מדרגים של GIMP" #: ../src/extension/internal/gimpgrad.cpp:279 msgid "GIMP Gradient (*.ggr)" -msgstr "" +msgstr "מדרג של GIMP (*.ggr)" #: ../src/extension/internal/gimpgrad.cpp:280 msgid "Gradients used in GIMP" -msgstr "" +msgstr "מדרגים בהם GIMP משתמש" -#: ../src/extension/internal/grid.cpp:192 ../src/ui/widget/panel.cpp:122 +#: ../src/extension/internal/grid.cpp:192 +#: ../src/ui/widget/panel.cpp:112 msgid "Grid" -msgstr "" +msgstr "רשת" #: ../src/extension/internal/grid.cpp:194 msgid "Line Width" -msgstr "עובי קו" +msgstr "רוחב הקו" #: ../src/extension/internal/grid.cpp:195 msgid "Horizontal Spacing" -msgstr "" +msgstr "ריווח אופקי" #: ../src/extension/internal/grid.cpp:196 msgid "Vertical Spacing" -msgstr "" +msgstr "ריווח אנכי" + +#: ../src/extension/internal/grid.cpp:197 +msgid "Horizontal Offset" +msgstr "קיזוז אופקי" + +#: ../src/extension/internal/grid.cpp:198 +msgid "Vertical Offset" +msgstr "קיזוז אנכי" -#: ../src/extension/internal/grid.cpp:202 ../share/extensions/eqtexsvg.inx.h:3 -#: ../share/extensions/funcplot.inx.h:12 ../share/extensions/gears.inx.h:5 +#: ../src/extension/internal/grid.cpp:202 +#: ../share/extensions/draw_from_triangle.inx.h:30 +#: ../share/extensions/eqtexsvg.inx.h:3 +#: ../share/extensions/funcplot.inx.h:12 +#: ../share/extensions/gears.inx.h:5 #: ../share/extensions/grid_cartesian.inx.h:15 #: ../share/extensions/grid_polar.inx.h:18 #: ../share/extensions/lindenmayer.inx.h:11 #: ../share/extensions/polyhedron_3d.inx.h:32 #: ../share/extensions/render_alphabetsoup.inx.h:3 #: ../share/extensions/render_barcode.inx.h:5 -#: ../share/extensions/rtree.inx.h:4 ../share/extensions/spirograph.inx.h:6 +#: ../share/extensions/rtree.inx.h:4 +#: ../share/extensions/spirograph.inx.h:6 #: ../share/extensions/triangle.inx.h:10 msgid "Render" -msgstr "רנדר" +msgstr "עיבוד" #: ../src/extension/internal/grid.cpp:204 msgid "Draw a path which is a grid" -msgstr "" +msgstr "צייר נתיב שהוא רשת" + +#: ../src/extension/internal/javafx-out.cpp:922 +msgid "JavaFX Output" +msgstr "פלט JavaFX" + +#: ../src/extension/internal/javafx-out.cpp:927 +msgid "JavaFX (*.fx)" +msgstr "JavaFX (*.fx)" + +#: ../src/extension/internal/javafx-out.cpp:928 +msgid "JavaFX Raytracer File" +msgstr "קובץ Raytracer של JavaFX" -#: ../src/extension/internal/latex-pstricks.cpp:347 +#: ../src/extension/internal/latex-pstricks.cpp:345 msgid "LaTeX Print" -msgstr "" +msgstr "הדפסת LaTeX" -#: ../src/extension/internal/latex-pstricks-out.cpp:106 +#: ../src/extension/internal/latex-pstricks-out.cpp:105 msgid "LaTeX Output" -msgstr "" +msgstr "פלט LaTeX" -#: ../src/extension/internal/latex-pstricks-out.cpp:111 +#: ../src/extension/internal/latex-pstricks-out.cpp:110 msgid "LaTeX With PSTricks macros (*.tex)" -msgstr "" +msgstr "מקרו של LaTeX עם PSTricks (*.tex)" -#: ../src/extension/internal/latex-pstricks-out.cpp:112 +#: ../src/extension/internal/latex-pstricks-out.cpp:111 msgid "LaTeX PSTricks File" -msgstr "" +msgstr "קובץ LaTeX PSTricks" -#: ../src/extension/internal/odf.cpp:2424 +#: ../src/extension/internal/odf.cpp:2415 msgid "OpenDocument Drawing Output" -msgstr "" +msgstr "פלט ציור OpenDocument" -#: ../src/extension/internal/odf.cpp:2429 +#: ../src/extension/internal/odf.cpp:2420 msgid "OpenDocument drawing (*.odg)" -msgstr "" +msgstr "ציור OpenDocument (*.odg)" -#: ../src/extension/internal/odf.cpp:2430 +#: ../src/extension/internal/odf.cpp:2421 msgid "OpenDocument drawing file" -msgstr "" +msgstr "קובץ ציור OpenDocument" -#: ../src/extension/internal/pdf-cairo.cpp:127 -#: ../src/extension/internal/ps.cpp:147 +#: ../src/extension/internal/pdf-cairo.cpp:126 +#: ../src/extension/internal/ps.cpp:151 msgid "Print Destination" -msgstr "" +msgstr "יעד ההדפסה" #. Print properties frame -#: ../src/extension/internal/pdf-cairo.cpp:142 -#: ../src/extension/internal/ps.cpp:162 +#: ../src/extension/internal/pdf-cairo.cpp:141 +#: ../src/extension/internal/ps.cpp:166 msgid "Print properties" msgstr "אפשרויות הדפסה" -#: ../src/extension/internal/pdf-cairo.cpp:149 +#: ../src/extension/internal/pdf-cairo.cpp:148 msgid "Print using PDF operators" -msgstr "" +msgstr "הדפס באמצעות מפעיל PDF" -#: ../src/extension/internal/pdf-cairo.cpp:151 -msgid "" -"Use PDF vector operators. The resulting image is usually smaller in file " -"size and can be arbitrarily scaled, but patterns will be lost." -msgstr "" +#: ../src/extension/internal/pdf-cairo.cpp:150 +msgid "Use PDF vector operators. The resulting image is usually smaller in file size and can be arbitrarily scaled, but patterns will be lost." +msgstr "השתמש במפעילי וקטור ב־PDF. התמונה המתקבלת לרב קטנה בנפחה וניתן לשנות את גודלה באופן שרירותי, אך התבניות יאבדו." -#: ../src/extension/internal/pdf-cairo.cpp:156 -#: ../src/extension/internal/ps.cpp:176 +#: ../src/extension/internal/pdf-cairo.cpp:155 +#: ../src/extension/internal/ps.cpp:180 msgid "Print as bitmap" -msgstr "" +msgstr "הדפס כמפת סיביות" -#: ../src/extension/internal/pdf-cairo.cpp:158 -#: ../src/extension/internal/ps.cpp:178 -msgid "" -"Print everything as bitmap. The resulting image is usually larger in file " -"size and cannot be arbitrarily scaled without quality loss, but all objects " -"will be rendered exactly as displayed." -msgstr "" +#: ../src/extension/internal/pdf-cairo.cpp:157 +#: ../src/extension/internal/ps.cpp:182 +msgid "Print everything as bitmap. The resulting image is usually larger in file size and cannot be arbitrarily scaled without quality loss, but all objects will be rendered exactly as displayed." +msgstr "הדפס הכל כמפת סיביות. התמונה המתקבלת לרב גדולה בנפחה ולא ניתן לשנות את גודלה באופן שרירותי מבלי לאבד באיכות, אך כל הפריטים יעובדו בדיוק כפי שהם מוצגים." -#: ../src/extension/internal/pdf-cairo.cpp:172 -#: ../src/extension/internal/ps.cpp:192 +#: ../src/extension/internal/pdf-cairo.cpp:171 +#: ../src/extension/internal/ps.cpp:196 msgid "Preferred resolution (dots per inch) of bitmap" -msgstr "" +msgstr "רזולוציה מועדפת (נקודות לאינטש) למפת סיביות" -#: ../src/extension/internal/pdf-cairo.cpp:186 -#: ../src/extension/internal/ps.cpp:206 +#: ../src/extension/internal/pdf-cairo.cpp:185 +#: ../src/extension/internal/ps.cpp:210 msgid "Resolution:" msgstr "רזולוציה:" #. Print destination frame -#: ../src/extension/internal/pdf-cairo.cpp:190 -#: ../src/extension/internal/ps.cpp:213 +#: ../src/extension/internal/pdf-cairo.cpp:189 +#: ../src/extension/internal/ps.cpp:217 msgid "Print destination" -msgstr "יעד הדפסה" +msgstr "יעד להדפסה" -#: ../src/extension/internal/pdf-cairo.cpp:196 -#: ../src/extension/internal/ps.cpp:219 +#: ../src/extension/internal/pdf-cairo.cpp:195 +#: ../src/extension/internal/ps.cpp:223 msgid "" "Printer name (as given by lpstat -p);\n" "leave empty to use the system default printer.\n" "Use '> filename' to print to file.\n" "Use '| prog arg...' to pipe to a program." msgstr "" +"שם המדפסת (כפי שניתן על ידי lpstat -p);\n" +"הותר ריק כדי לעשות שימוש במדפסת ברירת המחדל של המערכת\n" +"השתמש ב '> filename' כדי להדפיס לקובץ.\n" +"השתמש ב-'| prog arg...' כדי לנתב לתוכנה." -#: ../src/extension/internal/pdf-cairo.cpp:1060 +#: ../src/extension/internal/pdf-cairo.cpp:1027 msgid "PDF Print" msgstr "הדפסת PDF" @@ -3754,156 +3918,149 @@ msgstr "הדפסת PDF" #. more info: http://www.acrobatusers.com/tech_corners/javascript_corner/tips/2006/page_bounds/ #: ../src/extension/internal/pdfinput/pdf-input.cpp:56 msgid "media box" -msgstr "" +msgstr "תיבת מדיה" #: ../src/extension/internal/pdfinput/pdf-input.cpp:57 msgid "crop box" -msgstr "" +msgstr "תיבת חיתוך" #: ../src/extension/internal/pdfinput/pdf-input.cpp:58 msgid "trim box" -msgstr "" +msgstr "תיבת קיצוץ" #: ../src/extension/internal/pdfinput/pdf-input.cpp:59 msgid "bleed box" -msgstr "" +msgstr "תיבת דימום" #: ../src/extension/internal/pdfinput/pdf-input.cpp:60 msgid "art box" -msgstr "" +msgstr "תיבת אומנות" #: ../src/extension/internal/pdfinput/pdf-input.cpp:72 msgid "Select page:" -msgstr "" +msgstr "בחר עמוד:" #. Display total number of pages #: ../src/extension/internal/pdfinput/pdf-input.cpp:86 #, c-format msgid "out of %i" -msgstr "" +msgstr "מתוך %i" #. Crop settings #: ../src/extension/internal/pdfinput/pdf-input.cpp:92 msgid "Clip to:" -msgstr "" +msgstr "הצמד אל:" #: ../src/extension/internal/pdfinput/pdf-input.cpp:104 msgid "Page settings" -msgstr "" +msgstr "הגדרות עמוד" #: ../src/extension/internal/pdfinput/pdf-input.cpp:106 msgid "Precision of approximating gradient meshes:" -msgstr "" +msgstr "דיוק ההערכה של הרכבות המדרג:" #: ../src/extension/internal/pdfinput/pdf-input.cpp:107 -msgid "" -"Note: setting the precision too high may result in a large SVG file " -"and slow performance." -msgstr "" +msgid "Note: setting the precision too high may result in a large SVG file and slow performance." +msgstr "הערה: הגדרת דיוק גבוהה מדי עלולה לגרום לקובץ SVG גדול בנפחו ולביצוע איטי." #: ../src/extension/internal/pdfinput/pdf-input.cpp:112 #: ../src/extension/internal/pdfinput/pdf-input.cpp:381 msgid "rough" -msgstr "" +msgstr "גס" #. Text options #: ../src/extension/internal/pdfinput/pdf-input.cpp:116 msgid "Text handling:" -msgstr "" +msgstr "טיפול בטקסט:" #: ../src/extension/internal/pdfinput/pdf-input.cpp:118 #: ../src/extension/internal/pdfinput/pdf-input.cpp:119 msgid "Import text as text" -msgstr "" +msgstr "ייבא טקסט כטקסט" #: ../src/extension/internal/pdfinput/pdf-input.cpp:122 msgid "Embed images" -msgstr "" +msgstr "הטמע תמונות" #: ../src/extension/internal/pdfinput/pdf-input.cpp:125 msgid "Import settings" -msgstr "" +msgstr "ייבא הגדרות" #: ../src/extension/internal/pdfinput/pdf-input.cpp:242 msgid "PDF Import Settings" -msgstr "" +msgstr "ייבא הגדרו PDF" #: ../src/extension/internal/pdfinput/pdf-input.cpp:382 msgid "pdfinput|medium" -msgstr "" +msgstr "pdfinput|בינוני" #: ../src/extension/internal/pdfinput/pdf-input.cpp:383 msgid "fine" -msgstr "" +msgstr "איכותי" #: ../src/extension/internal/pdfinput/pdf-input.cpp:384 msgid "very fine" -msgstr "" +msgstr "איכותי מאוד" #: ../src/extension/internal/pdfinput/pdf-input.cpp:739 -#, fuzzy msgid "PDF Input" -msgstr "קלט EMF" +msgstr "קלט PDF" #: ../src/extension/internal/pdfinput/pdf-input.cpp:744 msgid "Adobe PDF (*.pdf)" -msgstr "" +msgstr "Adobe PDF (*.pdf)" #: ../src/extension/internal/pdfinput/pdf-input.cpp:745 msgid "Adobe Portable Document Format" -msgstr "" +msgstr "Adobe מבנה קובץ נייד" #: ../src/extension/internal/pdfinput/pdf-input.cpp:752 -#, fuzzy msgid "AI Input" -msgstr "קלט EMF" +msgstr "קלט AI" #: ../src/extension/internal/pdfinput/pdf-input.cpp:757 msgid "Adobe Illustrator 9.0 and above (*.ai)" -msgstr "" +msgstr "Adobe Illustrator 9.0 ומעלה (*.ai)" #: ../src/extension/internal/pdfinput/pdf-input.cpp:758 msgid "Open files saved in Adobe Illustrator 9.0 and newer versions" -msgstr "" +msgstr "פתח קבצים שנשמרו תחת Adobe Illustrator 9.0 או גירסאות חדשות יותר" -#: ../src/extension/internal/pov-out.cpp:666 +#: ../src/extension/internal/pov-out.cpp:676 msgid "PovRay Output" -msgstr "" +msgstr "פלט PovRay" -#: ../src/extension/internal/pov-out.cpp:671 +#: ../src/extension/internal/pov-out.cpp:681 msgid "PovRay (*.pov) (export splines)" -msgstr "" +msgstr "PovRay (*.pov) (ייצא שגמים)" -#: ../src/extension/internal/pov-out.cpp:672 +#: ../src/extension/internal/pov-out.cpp:682 msgid "PovRay Raytracer File" -msgstr "" +msgstr "קובץ Raytracer של PovRay" -#: ../src/extension/internal/ps.cpp:147 +#: ../src/extension/internal/ps.cpp:151 msgid "Print Configuration" msgstr "הגדרות הדפסה" -#: ../src/extension/internal/ps.cpp:169 +#: ../src/extension/internal/ps.cpp:173 msgid "Print using PostScript operators" -msgstr "" +msgstr "הדפס באמצעות מפעילים של PostScript" -#: ../src/extension/internal/ps.cpp:171 -msgid "" -"Use PostScript vector operators. The resulting image is usually smaller in " -"file size and can be arbitrarily scaled, but alpha transparency and patterns " -"will be lost." -msgstr "" +#: ../src/extension/internal/ps.cpp:175 +msgid "Use PostScript vector operators. The resulting image is usually smaller in file size and can be arbitrarily scaled, but alpha transparency and patterns will be lost." +msgstr "השתמש במפעילים הוקטוריים של PostScript. התמונה המתקבלת הינה בדרך כלל בעלת נפח קטן יותר וניתן לשנות את גודלה באופן שרירותי, אך השקיפות (אלפא) והתבניות יאבדו." -#: ../src/extension/internal/ps.cpp:1753 +#: ../src/extension/internal/ps.cpp:1768 msgid "Postscript Print" -msgstr "" +msgstr "הדפסת Postscript" #: ../src/extension/internal/ps-out.cpp:82 msgid "Postscript Output" -msgstr "" +msgstr "פלט Postscript" #: ../src/extension/internal/ps-out.cpp:89 -msgid "PostScript (*.ps)" -msgstr "" +msgid "PostScript (old exporter via print) (*.ps)" +msgstr "PostScript (המייצא הישן דרך הדפסה) (*.ps)" #: ../src/extension/internal/svg.cpp:55 msgid "SVG Input" @@ -3911,53 +4068,54 @@ msgstr "קלט SVG" #: ../src/extension/internal/svg.cpp:60 msgid "Scalable Vector Graphic (*.svg)" -msgstr "" +msgstr "גרפיקת וקטורים משתנה (*.svg)" #: ../src/extension/internal/svg.cpp:61 msgid "Inkscape native file format and W3C standard" -msgstr "" +msgstr "קובץ מקומי של אינקסקייפ שתואם לתקן ה־W3C" #: ../src/extension/internal/svg.cpp:69 msgid "SVG Output Inkscape" -msgstr "" +msgstr "פלט SVG של אינקסקייפ" #: ../src/extension/internal/svg.cpp:74 msgid "Inkscape SVG (*.svg)" -msgstr "" +msgstr "SVG של אינקסקייפ (*.svg)" #: ../src/extension/internal/svg.cpp:75 msgid "SVG format with Inkscape extensions" -msgstr "" +msgstr "תבנית SVG עם הרחבות של אינקסקייפ" #: ../src/extension/internal/svg.cpp:83 -#: ../src/ui/dialog/inkscape-preferences.cpp:942 msgid "SVG Output" msgstr "פלט SVG" #: ../src/extension/internal/svg.cpp:88 msgid "Plain SVG (*.svg)" -msgstr "" +msgstr "SVG רגיל (*.svg)" #: ../src/extension/internal/svg.cpp:89 msgid "Scalable Vector Graphics format as defined by the W3C" -msgstr "" +msgstr "גרפיקת וקטורים משתנה כפי שהוגדר על ידי ה־W3C" #: ../src/extension/internal/svgz.cpp:47 #: ../share/extensions/svgz_input.inx.h:3 msgid "SVGZ Input" msgstr "קלט SVGZ" -#: ../src/extension/internal/svgz.cpp:53 ../src/extension/internal/svgz.cpp:67 +#: ../src/extension/internal/svgz.cpp:53 +#: ../src/extension/internal/svgz.cpp:67 #: ../share/extensions/svgz_input.inx.h:1 #: ../share/extensions/svgz_output.inx.h:1 msgid "Compressed Inkscape SVG (*.svgz)" -msgstr "" +msgstr "SVG של אינקסקייפ דחוס (*.svgz)" #: ../src/extension/internal/svgz.cpp:54 msgid "SVG file format compressed with GZip" -msgstr "" +msgstr "מבנה קובץ SVG דחוס ב־GZip" -#: ../src/extension/internal/svgz.cpp:62 ../src/extension/internal/svgz.cpp:76 +#: ../src/extension/internal/svgz.cpp:62 +#: ../src/extension/internal/svgz.cpp:76 #: ../share/extensions/svgz_output.inx.h:3 msgid "SVGZ Output" msgstr "פלט SVGZ" @@ -3966,19 +4124,19 @@ msgstr "פלט SVGZ" #: ../share/extensions/svgz_input.inx.h:2 #: ../share/extensions/svgz_output.inx.h:2 msgid "Inkscape's native file format compressed with GZip" -msgstr "" +msgstr "מבנה הקובץ המקומי של אינקסקייפ דחוס באמצעות GZip" #: ../src/extension/internal/svgz.cpp:81 msgid "Compressed plain SVG (*.svgz)" -msgstr "" +msgstr "SVG פשוט דחוס (*.svgz)" #: ../src/extension/internal/svgz.cpp:82 msgid "Scalable Vector Graphics format compressed with GZip" -msgstr "" +msgstr "מבנה גרפיקת וקטורים משתנה דחוס באמצעות GZip" -#: ../src/extension/internal/win32.cpp:491 +#: ../src/extension/internal/win32.cpp:485 msgid "Windows 32-bit Print" -msgstr "" +msgstr "הדפסת Windows 32 ביט" #: ../src/extension/internal/wpg-input.cpp:102 msgid "WPG Input" @@ -3986,19 +4144,19 @@ msgstr "קלט WPG" #: ../src/extension/internal/wpg-input.cpp:107 msgid "WordPerfect Graphics (*.wpg)" -msgstr "" +msgstr "גרפיקה של WordPerfect (*.wpg)" #: ../src/extension/internal/wpg-input.cpp:108 msgid "Vector graphics format used by Corel WordPerfect" -msgstr "" +msgstr "גרפיקות וקטורים הנמצאות בשימוש על ידי WordPerfect של Corel" -#: ../src/extension/prefdialog.cpp:237 -msgid "Live Preview" -msgstr "" +#: ../src/extension/prefdialog.cpp:236 +msgid "Live preview" +msgstr "תצוגה חיה" -#: ../src/extension/prefdialog.cpp:237 -msgid "Controls whether the effect settings are rendered live on canvas" -msgstr "" +#: ../src/extension/prefdialog.cpp:236 +msgid "Is the effect previewed live on canvas?" +msgstr "האם יש להציג את שינויי האפקט ישירות על משטח הציור?" #. We can't call sp_ui_error_dialog because we may be #. running from the console, in which case calling sp_ui @@ -4006,345 +4164,356 @@ msgstr "" #. sp_ui_error_dialog(_("Format autodetect failed. The file is being opened as SVG.")); #: ../src/extension/system.cpp:103 msgid "Format autodetect failed. The file is being opened as SVG." -msgstr "" +msgstr "זיהוי המבנה האוטומטי נכשל. הקובץ ייפתח בתור SVG." #. TRANSLATORS: default.svg is localizable - this is the name of the default document #. template. This way you can localize the default pagesize, translate the name of #. the default layer, etc. If you wish to localize this file, please create a #. localized share/templates/default.xx.svg file, where xx is your language code. -#: ../src/file.cpp:139 +#: ../src/file.cpp:154 msgid "default.svg" -msgstr "" +msgstr "ברירת מחדל.svg" -#: ../src/file.cpp:225 ../src/file.cpp:993 +#: ../src/file.cpp:240 +#: ../src/file.cpp:1020 #, c-format msgid "Failed to load the requested file %s" -msgstr "" +msgstr "שגיאה בטעינת הקובץ המבוקש %s" -#: ../src/file.cpp:250 +#: ../src/file.cpp:265 msgid "Document not saved yet. Cannot revert." -msgstr "" +msgstr "המסמך לא נשמר עדיין. לא ניתן לשחזר." -#: ../src/file.cpp:256 +#: ../src/file.cpp:271 #, c-format msgid "Changes will be lost! Are you sure you want to reload document %s?" -msgstr "" +msgstr "השינויים יאבדו! האם אתה בטוח שברצונך לטעון את המסמך %s?" -#: ../src/file.cpp:285 +#: ../src/file.cpp:300 msgid "Document reverted." -msgstr "" +msgstr "המסמך שוחזר." -#: ../src/file.cpp:287 +#: ../src/file.cpp:302 msgid "Document not reverted." -msgstr "" +msgstr "המסמך לא שוחזר." -#: ../src/file.cpp:437 +#: ../src/file.cpp:452 msgid "Select file to open" msgstr "בחר קובץ לפתיחה" -#: ../src/file.cpp:524 +#: ../src/file.cpp:539 msgid "Vacuum <defs>" -msgstr "" +msgstr "איפוס הגדרות <defs>" -#: ../src/file.cpp:529 +#: ../src/file.cpp:544 #, c-format msgid "Removed %i unused definition in <defs>." msgid_plural "Removed %i unused definitions in <defs>." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "הוסרה הגדרה %i שאינה בשימוש ב־<defs>." +msgstr[1] "הוסרו %i הגדרות שאינן בשימוש ב־<defs>." -#: ../src/file.cpp:534 +#: ../src/file.cpp:549 msgid "No unused definitions in <defs>." -msgstr "" +msgstr "אין הגדרות שאינן בשימוש ב־<defs>." -#: ../src/file.cpp:563 +#: ../src/file.cpp:578 #, c-format -msgid "" -"No Inkscape extension found to save document (%s). This may have been " -"caused by an unknown filename extension." -msgstr "" +msgid "No Inkscape extension found to save document (%s). This may have been caused by an unknown filename extension." +msgstr "לא נמצאו הרחבות אינסקייפ לשמירת המסמך (%s). ייתכן ודבר זה נגרם עקב סיומת קובץ לא ידועה." -#: ../src/file.cpp:564 ../src/file.cpp:572 +#: ../src/file.cpp:579 +#: ../src/file.cpp:587 msgid "Document not saved." msgstr "המסמך לא נשמר." -#: ../src/file.cpp:571 +#: ../src/file.cpp:586 #, c-format msgid "File %s could not be saved." -msgstr "שמירת הקובץ %s כשלה." +msgstr "שמירת הקובץ %s נכשלה." -#: ../src/file.cpp:582 +#: ../src/file.cpp:597 msgid "Document saved." msgstr "המסמך נשמר." -#: ../src/file.cpp:721 ../src/file.cpp:1118 ../src/file.cpp:1235 +#: ../src/file.cpp:738 +#: ../src/file.cpp:1147 +#: ../src/file.cpp:1266 #, c-format msgid "drawing%s" -msgstr "" +msgstr "ציור%s" -#: ../src/file.cpp:727 +#: ../src/file.cpp:744 #, c-format msgid "drawing-%d%s" -msgstr "" +msgstr "ציור־%d%s" -#: ../src/file.cpp:746 +#: ../src/file.cpp:763 msgid "Select file to save a copy to" -msgstr "" +msgstr "בחר קובץ אליו יישמר עותק" -#: ../src/file.cpp:748 +#: ../src/file.cpp:765 msgid "Select file to save to" -msgstr "" +msgstr "בחר קובץ לשמירה אליו" -#: ../src/file.cpp:819 +#: ../src/file.cpp:845 msgid "No changes need to be saved." -msgstr "" +msgstr "אין שינויים הזקוקים לשמירה." -#: ../src/file.cpp:836 +#: ../src/file.cpp:862 msgid "Saving document..." -msgstr "" +msgstr "שומר מסמך...‏" -#: ../src/file.cpp:990 +#: ../src/file.cpp:1017 msgid "Import" msgstr "ייבוא" -#: ../src/file.cpp:1022 +#: ../src/file.cpp:1049 msgid "Select file to import" msgstr "בחר קובץ לייבוא" -#: ../src/file.cpp:1140 ../src/file.cpp:1250 +#: ../src/file.cpp:1169 +#: ../src/file.cpp:1281 msgid "Select file to export to" msgstr "בחר קובץ לייצוא" -#: ../src/file.cpp:1277 +#: ../src/file.cpp:1308 +#, c-format msgid "Error saving a temporary copy" msgstr "שגיאה בשמירת עותק זמני" -#: ../src/file.cpp:1296 +#: ../src/file.cpp:1328 msgid "Open Clip Art Login" -msgstr "" +msgstr "התחברות לאוסף התמונות החופשיות" -#: ../src/file.cpp:1317 -msgid "" -"Error exporting the document. Verify if the server name, username and " -"password are correct, if the server has support for webdav and verify if you " -"didn't forget to choose a license." -msgstr "" +#: ../src/file.cpp:1349 +#, c-format +msgid "Error exporting the document. Verify if the server name, username and password are correct, if the server has support for webdav and verify if you didn't forget to choose a license." +msgstr "שגיאה בעת ייצוא המסמך. וודא ששם השרת, שם המשתמש והסיסמה נכונים. אם השרת תומך ב־webdav וודא שלא שכחת לבחור רשיון." -#: ../src/file.cpp:1338 +#: ../src/file.cpp:1370 msgid "Document exported..." -msgstr "" +msgstr "המסמך מיוצא..." -#: ../src/file.cpp:1366 ../src/verbs.cpp:2182 +#: ../src/file.cpp:1398 +#: ../src/verbs.cpp:2237 msgid "Import From Open Clip Art Library" -msgstr "" +msgstr "ייבא מספריית אוסף התמונות החופשיות" #: ../src/filter-enums.cpp:20 msgid "Blend" -msgstr "" +msgstr "תערובת" #: ../src/filter-enums.cpp:21 msgid "Color Matrix" -msgstr "" +msgstr "מטריצת צבעים" #: ../src/filter-enums.cpp:22 msgid "Component Transfer" -msgstr "" +msgstr "העברת רכיב" #: ../src/filter-enums.cpp:23 msgid "Composite" -msgstr "" +msgstr "מרוכב" #: ../src/filter-enums.cpp:24 msgid "Convolve Matrix" -msgstr "" +msgstr "מטריצה שזורה" #: ../src/filter-enums.cpp:25 msgid "Diffuse Lighting" -msgstr "" +msgstr "תאורה פזורה" #: ../src/filter-enums.cpp:26 msgid "Displacement Map" -msgstr "" +msgstr "מפת העתקת מיקום" #: ../src/filter-enums.cpp:27 msgid "Flood" -msgstr "" +msgstr "הצפה" -#: ../src/filter-enums.cpp:29 ../src/selection-describer.cpp:53 +#: ../src/filter-enums.cpp:29 +#: ../src/selection-describer.cpp:53 msgid "Image" -msgstr "" +msgstr "תמונה" #: ../src/filter-enums.cpp:30 msgid "Merge" -msgstr "" +msgstr "מזג" #: ../src/filter-enums.cpp:31 msgid "Morphology" -msgstr "" +msgstr "מורפולוגיה" #: ../src/filter-enums.cpp:33 msgid "Specular Lighting" -msgstr "" +msgstr "תאורה משתקפת" #: ../src/filter-enums.cpp:34 msgid "Tile" -msgstr "" +msgstr "אריח" -#: ../src/filter-enums.cpp:35 ../src/filter-enums.cpp:118 +#: ../src/filter-enums.cpp:35 +#: ../src/filter-enums.cpp:118 msgid "Turbulence" -msgstr "" +msgstr "מערבולת" #: ../src/filter-enums.cpp:40 msgid "Source Graphic" -msgstr "" +msgstr "גרפיקת מקור" #: ../src/filter-enums.cpp:41 msgid "Source Alpha" -msgstr "" +msgstr "שקיפות מקורית" #: ../src/filter-enums.cpp:42 msgid "Background Image" -msgstr "" +msgstr "תמונת הרקע" #: ../src/filter-enums.cpp:43 msgid "Background Alpha" -msgstr "" +msgstr "שקיפות הרקע" #: ../src/filter-enums.cpp:44 msgid "Fill Paint" -msgstr "" +msgstr "צבע המילוי" #: ../src/filter-enums.cpp:45 msgid "Stroke Paint" -msgstr "" +msgstr "צבע קו המתאר" #. TRANSLATORS: This is a context string, only put the word "Normal" in your translation #: ../src/filter-enums.cpp:52 msgid "filterBlendMode|Normal" -msgstr "" +msgstr "filterBlendMode|רגיל" #: ../src/filter-enums.cpp:53 msgid "Multiply" -msgstr "" +msgstr "מוכפל" #: ../src/filter-enums.cpp:54 msgid "Screen" -msgstr "" +msgstr "מסך" #: ../src/filter-enums.cpp:55 msgid "Darken" -msgstr "" +msgstr "האפלה" #: ../src/filter-enums.cpp:56 msgid "Lighten" -msgstr "" +msgstr "הבהרה" #: ../src/filter-enums.cpp:62 msgid "Matrix" -msgstr "" +msgstr "מטריצה" #: ../src/filter-enums.cpp:63 msgid "Saturate" -msgstr "" +msgstr "הרווה" #: ../src/filter-enums.cpp:64 msgid "Hue Rotate" -msgstr "" +msgstr "סובב גוון" #: ../src/filter-enums.cpp:65 msgid "Luminance to Alpha" -msgstr "" +msgstr "נהירות לשקיפות" #. File -#: ../src/filter-enums.cpp:71 ../src/verbs.cpp:2159 +#: ../src/filter-enums.cpp:71 +#: ../src/verbs.cpp:2214 msgid "Default" -msgstr "" +msgstr "ברירת מחדל" #: ../src/filter-enums.cpp:72 msgid "Over" -msgstr "" +msgstr "מעבר" #: ../src/filter-enums.cpp:73 msgid "In" -msgstr "" +msgstr "פנימה" #: ../src/filter-enums.cpp:74 msgid "Out" -msgstr "" +msgstr "החוצה" #: ../src/filter-enums.cpp:75 msgid "Atop" -msgstr "" +msgstr "מעל" #: ../src/filter-enums.cpp:76 msgid "XOR" -msgstr "" +msgstr "XOR" #: ../src/filter-enums.cpp:77 msgid "Arithmetic" -msgstr "" +msgstr "חשבון" #: ../src/filter-enums.cpp:83 msgid "Identity" -msgstr "" +msgstr "זהות" #: ../src/filter-enums.cpp:84 msgid "Table" -msgstr "" +msgstr "טבלה" #: ../src/filter-enums.cpp:85 msgid "Discrete" -msgstr "" +msgstr "הפרדה" #: ../src/filter-enums.cpp:86 msgid "Linear" -msgstr "" +msgstr "קווי" #: ../src/filter-enums.cpp:87 msgid "Gamma" msgstr "גאמא" -#: ../src/filter-enums.cpp:93 ../src/selection-chemistry.cpp:260 +#: ../src/filter-enums.cpp:93 +#: ../src/selection-chemistry.cpp:311 #: ../src/widgets/gradient-selector.cpp:134 msgid "Duplicate" msgstr "שכפל" #: ../src/filter-enums.cpp:94 msgid "Wrap" -msgstr "" +msgstr "גלישה" -#: ../src/filter-enums.cpp:101 ../src/flood-context.cpp:271 -#: ../src/widgets/sp-color-icc-selector.cpp:233 +#: ../src/filter-enums.cpp:101 +#: ../src/flood-context.cpp:275 +#: ../src/widgets/sp-color-icc-selector.cpp:234 #: ../src/widgets/sp-color-scales.cpp:398 #: ../src/widgets/sp-color-scales.cpp:399 msgid "Red" msgstr "אדום" -#: ../src/filter-enums.cpp:102 ../src/flood-context.cpp:272 -#: ../src/widgets/sp-color-icc-selector.cpp:233 +#: ../src/filter-enums.cpp:102 +#: ../src/flood-context.cpp:276 +#: ../src/widgets/sp-color-icc-selector.cpp:234 #: ../src/widgets/sp-color-scales.cpp:401 #: ../src/widgets/sp-color-scales.cpp:402 msgid "Green" msgstr "ירוק" -#: ../src/filter-enums.cpp:103 ../src/flood-context.cpp:273 -#: ../src/widgets/sp-color-icc-selector.cpp:233 +#: ../src/filter-enums.cpp:103 +#: ../src/flood-context.cpp:277 +#: ../src/widgets/sp-color-icc-selector.cpp:234 #: ../src/widgets/sp-color-scales.cpp:404 #: ../src/widgets/sp-color-scales.cpp:405 msgid "Blue" msgstr "כחול" -#: ../src/filter-enums.cpp:104 ../src/flood-context.cpp:277 +#: ../src/filter-enums.cpp:104 +#: ../src/flood-context.cpp:281 msgid "Alpha" -msgstr "אלפא" +msgstr "שקיפות" #: ../src/filter-enums.cpp:110 msgid "Erode" -msgstr "" +msgstr "סחף" #: ../src/filter-enums.cpp:111 msgid "Dilate" -msgstr "" +msgstr "הרחבה" #: ../src/filter-enums.cpp:117 msgid "Fractal Noise" @@ -4352,263 +4521,278 @@ msgstr "רעש פרקטלי" #: ../src/filter-enums.cpp:124 msgid "Distant Light" -msgstr "" +msgstr "אור מרוחק" #: ../src/filter-enums.cpp:125 msgid "Point Light" -msgstr "" +msgstr "אור נקודתי" #: ../src/filter-enums.cpp:126 msgid "Spot Light" -msgstr "" +msgstr "זרקור" -#: ../src/flood-context.cpp:270 +#: ../src/flood-context.cpp:274 msgid "Visible Colors" -msgstr "" +msgstr "צבעים נראים" -#: ../src/flood-context.cpp:276 ../src/widgets/sp-color-icc-selector.cpp:236 +#: ../src/flood-context.cpp:280 +#: ../src/widgets/sp-color-icc-selector.cpp:237 #: ../src/widgets/sp-color-scales.cpp:430 -#: ../src/widgets/sp-color-scales.cpp:431 ../src/widgets/toolbox.cpp:3390 +#: ../src/widgets/sp-color-scales.cpp:431 +#: ../src/widgets/toolbox.cpp:3848 #: ../share/extensions/color_randomize.inx.h:3 msgid "Lightness" -msgstr "" +msgstr "בהירות" -#: ../src/flood-context.cpp:289 ../src/ui/dialog/inkscape-preferences.cpp:968 +#: ../src/flood-context.cpp:293 +#: ../src/ui/dialog/inkscape-preferences.cpp:995 msgid "Small" msgstr "קטן" -#: ../src/flood-context.cpp:290 ../src/ui/dialog/inkscape-preferences.cpp:968 +#: ../src/flood-context.cpp:294 +#: ../src/ui/dialog/inkscape-preferences.cpp:995 msgid "Medium" msgstr "בינוני" -#: ../src/flood-context.cpp:291 +#: ../src/flood-context.cpp:295 msgid "Large" msgstr "גדול" -#: ../src/flood-context.cpp:491 +#: ../src/flood-context.cpp:497 msgid "Too much inset, the result is empty." -msgstr "" +msgstr "התכנסות יתר, התוצאה ריקה." -#: ../src/flood-context.cpp:531 +#: ../src/flood-context.cpp:537 #, c-format -msgid "" -"Area filled, path with %d node created and unioned with selection." -msgid_plural "" -"Area filled, path with %d nodes created and unioned with selection." -msgstr[0] "" +msgid "Area filled, path with %d node created and unioned with selection." +msgid_plural "Area filled, path with %d nodes created and unioned with selection." +msgstr[0] "אזור מלא, נוצר נתיב בעל מפרק %d ואוחד עם הבחירה." +msgstr[1] "אזור מלא, נוצר נתיב בעל %d מפרקים ואוחד עם הבחירה." -#: ../src/flood-context.cpp:535 +#: ../src/flood-context.cpp:541 #, c-format msgid "Area filled, path with %d node created." msgid_plural "Area filled, path with %d nodes created." -msgstr[0] "" +msgstr[0] "אזור מלא, נוצר נתיב בעל מפרק %d." +msgstr[1] "אזור מלא, נוצר נתיב בעל %d מפרקים." -#: ../src/flood-context.cpp:807 ../src/flood-context.cpp:1121 +#: ../src/flood-context.cpp:813 +#: ../src/flood-context.cpp:1127 msgid "Area is not bounded, cannot fill." -msgstr "" +msgstr "האזור אינו מתוחם, לא ניתן למלא." -#: ../src/flood-context.cpp:1126 -msgid "" -"Only the visible part of the bounded area was filled. If you want to " -"fill all of the area, undo, zoom out, and fill again." -msgstr "" +#: ../src/flood-context.cpp:1132 +msgid "Only the visible part of the bounded area was filled. If you want to fill all of the area, undo, zoom out, and fill again." +msgstr "רק האזור הנראה של השטח המתוחם מולא. אם תרצה למלא את כל האזור, חזור על הפעולה, התרחק ומלא שוב." -#: ../src/flood-context.cpp:1144 ../src/flood-context.cpp:1304 +#: ../src/flood-context.cpp:1150 +#: ../src/flood-context.cpp:1310 msgid "Fill bounded area" -msgstr "" +msgstr "מלא את האזור המתוחם" -#: ../src/flood-context.cpp:1164 +#: ../src/flood-context.cpp:1170 msgid "Set style on object" -msgstr "" +msgstr "הגדר סגנון לפריט" -#: ../src/flood-context.cpp:1223 +#: ../src/flood-context.cpp:1229 msgid "Draw over areas to add to fill, hold Alt for touch fill" -msgstr "" +msgstr "צייר על גבי אזורים כדי להוסיף למילוי, החזק Alt למילוי בנגיעה" -#: ../src/gradient-context.cpp:132 ../src/gradient-drag.cpp:74 +#: ../src/gradient-context.cpp:132 +#: ../src/gradient-drag.cpp:75 msgid "Linear gradient start" -msgstr "" +msgstr "תחילת המדרג הקווי" #. POINT_LG_BEGIN -#: ../src/gradient-context.cpp:133 ../src/gradient-drag.cpp:75 +#: ../src/gradient-context.cpp:133 +#: ../src/gradient-drag.cpp:76 msgid "Linear gradient end" -msgstr "" +msgstr "סיום המדרג הקווי" -#: ../src/gradient-context.cpp:134 ../src/gradient-drag.cpp:76 +#: ../src/gradient-context.cpp:134 +#: ../src/gradient-drag.cpp:77 msgid "Linear gradient mid stop" -msgstr "" +msgstr "נקודה באמצע המדרג הקווי" -#: ../src/gradient-context.cpp:135 ../src/gradient-drag.cpp:77 +#: ../src/gradient-context.cpp:135 +#: ../src/gradient-drag.cpp:78 msgid "Radial gradient center" -msgstr "" +msgstr "מרכז המדרג הרדיאלי" -#: ../src/gradient-context.cpp:136 ../src/gradient-context.cpp:137 -#: ../src/gradient-drag.cpp:78 ../src/gradient-drag.cpp:79 +#: ../src/gradient-context.cpp:136 +#: ../src/gradient-context.cpp:137 +#: ../src/gradient-drag.cpp:79 +#: ../src/gradient-drag.cpp:80 msgid "Radial gradient radius" -msgstr "" +msgstr "רדיוס המדרג הרדיאלי" -#: ../src/gradient-context.cpp:138 ../src/gradient-drag.cpp:80 +#: ../src/gradient-context.cpp:138 +#: ../src/gradient-drag.cpp:81 msgid "Radial gradient focus" -msgstr "" +msgstr "מיקוד המדרג הרדיאלי" #. POINT_RG_FOCUS -#: ../src/gradient-context.cpp:139 ../src/gradient-context.cpp:140 -#: ../src/gradient-drag.cpp:81 ../src/gradient-drag.cpp:82 +#: ../src/gradient-context.cpp:139 +#: ../src/gradient-context.cpp:140 +#: ../src/gradient-drag.cpp:82 +#: ../src/gradient-drag.cpp:83 msgid "Radial gradient mid stop" -msgstr "" +msgstr "נקודה באמצע המדרג הרדיאלי" #. TRANSLATORS: %s will be substituted with the point name (see previous messages); This is part of a compound message #: ../src/gradient-context.cpp:162 #, c-format msgid "%s selected" -msgstr "" +msgstr "%s נבחר/ו" #. TRANSLATORS: Mind the space in front. This is part of a compound message -#: ../src/gradient-context.cpp:164 ../src/gradient-context.cpp:173 +#: ../src/gradient-context.cpp:164 +#: ../src/gradient-context.cpp:173 #, c-format msgid " out of %d gradient handle" msgid_plural " out of %d gradient handles" -msgstr[0] "" +msgstr[0] " מתוך ידית אחיזה %d" +msgstr[1] " מתוך%d ידיות אחיזה" #. TRANSLATORS: Mind the space in front. (Refers to gradient handles selected). This is part of a compound message -#: ../src/gradient-context.cpp:165 ../src/gradient-context.cpp:174 +#: ../src/gradient-context.cpp:165 +#: ../src/gradient-context.cpp:174 #: ../src/gradient-context.cpp:181 #, c-format msgid " on %d selected object" msgid_plural " on %d selected objects" -msgstr[0] "" +msgstr[0] " על פריט %d שנבחר" +msgstr[1] " על %d פריטים שנבחרו" #. TRANSLATORS: This is a part of a compound message (out of two more indicating: grandint handle count & object count) #: ../src/gradient-context.cpp:171 #, c-format -msgid "" -"One handle merging %d stop (drag with Shift to separate) selected" -msgid_plural "" -"One handle merging %d stops (drag with Shift to separate) selected" -msgstr[0] "" +msgid "One handle merging %d stop (drag with Shift to separate) selected" +msgid_plural "One handle merging %d stops (drag with Shift to separate) selected" +msgstr[0] "ידית אחת ממזגת עצירה %d (גרור עם Shift כדי להפריד) נבחרה" +msgstr[1] "ידית אחת ממזגת %d עצירות (גרור עם Shift כדי להפריד) נבחרה" #. TRANSLATORS: The plural refers to number of selected gradient handles. This is part of a compound message (part two indicates selected object count) #: ../src/gradient-context.cpp:179 #, c-format msgid "%d gradient handle selected out of %d" msgid_plural "%d gradient handles selected out of %d" -msgstr[0] "" +msgstr[0] "נבחרה ידית מדרג %d מתוך %d" +msgstr[1] "נבחרו %d ידיות מדרג מתוך %d" #. TRANSLATORS: The plural refers to number of selected objects #: ../src/gradient-context.cpp:186 #, c-format msgid "No gradient handles selected out of %d on %d selected object" -msgid_plural "" -"No gradient handles selected out of %d on %d selected objects" -msgstr[0] "" +msgid_plural "No gradient handles selected out of %d on %d selected objects" +msgstr[0] "לא נבחרו ידיות מדרג מתוך %d בתוך פריט %d שנבחר" +msgstr[1] "לא נבחרו ידיות מדרג מתוך %d בתוך %d פריטים שנבחרו" -#: ../src/gradient-context.cpp:385 ../src/gradient-context.cpp:478 -#: ../src/widgets/gradient-vector.cpp:735 +#: ../src/gradient-context.cpp:386 +#: ../src/gradient-context.cpp:479 +#: ../src/widgets/gradient-vector.cpp:738 msgid "Add gradient stop" -msgstr "" +msgstr "הוסף עצירת מדרג" -#: ../src/gradient-context.cpp:453 +#: ../src/gradient-context.cpp:454 msgid "Simplify gradient" -msgstr "פשט גרדיאנט" +msgstr "פשט מדרגצ" -#: ../src/gradient-context.cpp:529 +#: ../src/gradient-context.cpp:531 msgid "Create default gradient" -msgstr "צור גרדיאנט ברירת מחדל" +msgstr "צור מדרג ברירת מחדל" -#: ../src/gradient-context.cpp:584 +#: ../src/gradient-context.cpp:586 msgid "Draw around handles to select them" -msgstr "" +msgstr "צייר מסביב לידיות כדי לבחור אותן" -#: ../src/gradient-context.cpp:682 +#: ../src/gradient-context.cpp:684 msgid "Ctrl: snap gradient angle" -msgstr "" +msgstr "Ctrl: הצמד את זווית המדרג" -#: ../src/gradient-context.cpp:683 +#: ../src/gradient-context.cpp:685 msgid "Shift: draw gradient around the starting point" -msgstr "" +msgstr "Shift: צייר מדרג מסביב לנקודת ההתחלה" -#: ../src/gradient-context.cpp:803 +#: ../src/gradient-context.cpp:805 msgid "Invert gradient" -msgstr "הפוך גרדיאנט" +msgstr "הפוך מדרג" -#: ../src/gradient-context.cpp:919 +#: ../src/gradient-context.cpp:922 #, c-format msgid "Gradient for %d object; with Ctrl to snap angle" msgid_plural "Gradient for %d objects; with Ctrl to snap angle" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "מדרג עבור פריט %d; לחץ על Ctrl כדי להצמיד לזווית" +msgstr[1] "מדרג עבור %d פריטים ; לחץ על Ctrl כדי להצמיד לזווית" -#: ../src/gradient-context.cpp:923 +#: ../src/gradient-context.cpp:926 msgid "Select objects on which to create gradient." -msgstr "בחר את האוביקטים שעליהם יווצר הגרדיאנט." +msgstr "בחר פריטים שעבורם יווצר מדרג." -#: ../src/gradient-drag.cpp:573 +#: ../src/gradient-drag.cpp:574 msgid "Merge gradient handles" -msgstr "" +msgstr "מזג את ידיות המדרג" -#: ../src/gradient-drag.cpp:895 +#: ../src/gradient-drag.cpp:897 msgid "Move gradient handle" -msgstr "" +msgstr "הזז את ידית המדרג" -#: ../src/gradient-drag.cpp:948 ../src/widgets/gradient-vector.cpp:767 +#: ../src/gradient-drag.cpp:950 +#: ../src/widgets/gradient-vector.cpp:770 msgid "Delete gradient stop" -msgstr "" +msgstr "מחק את עצירת המדרג" -#: ../src/gradient-drag.cpp:1112 +#: ../src/gradient-drag.cpp:1114 #, c-format -msgid "" -"%s %d for: %s%s; drag with Ctrl to snap offset; click with Ctrl" -"+Alt to delete stop" -msgstr "" +msgid "%s %d for: %s%s; drag with Ctrl to snap offset; click with Ctrl+Alt to delete stop" +msgstr "%s %d עבור: %s%s; גרור עם Ctrl כדי להצמיד קיזוז; לחץ עםCtrl+Alt כדי למחוק עצירה" -#: ../src/gradient-drag.cpp:1116 ../src/gradient-drag.cpp:1123 +#: ../src/gradient-drag.cpp:1118 +#: ../src/gradient-drag.cpp:1125 msgid " (stroke)" -msgstr "" +msgstr " (קו מתאר)" -#: ../src/gradient-drag.cpp:1120 +#: ../src/gradient-drag.cpp:1122 #, c-format -msgid "" -"%s for: %s%s; drag with Ctrl to snap angle, with Ctrl+Alt to " -"preserve angle, with Ctrl+Shift to scale around center" -msgstr "" +msgid "%s for: %s%s; drag with Ctrl to snap angle, with Ctrl+Alt to preserve angle, with Ctrl+Shift to scale around center" +msgstr "%s עבור: %s%s; גרור עם Ctrl כדי להצמיד לזווית, לחץ עלCtrl+Alt כדי לשמור על הזווית, לחץ על Ctrl+Shift כדי לשנות גודל מסביב למרכז" -#: ../src/gradient-drag.cpp:1128 -msgid "" -"Radial gradient center and focus; drag with Shift to " -"separate focus" -msgstr "" +#: ../src/gradient-drag.cpp:1130 +#, c-format +msgid "Radial gradient center and focus; drag with Shift to separate focus" +msgstr "מרכז ומיקוד המדרג הרדיאלי; גרור עם Shift כדי להפריד את המיקוד" -#: ../src/gradient-drag.cpp:1131 +#: ../src/gradient-drag.cpp:1133 #, c-format -msgid "" -"Gradient point shared by %d gradient; drag with Shift to " -"separate" -msgid_plural "" -"Gradient point shared by %d gradients; drag with Shift to " -"separate" -msgstr[0] "" -msgstr[1] "" - -#: ../src/gradient-drag.cpp:1806 +msgid "Gradient point shared by %d gradient; drag with Shift to separate" +msgid_plural "Gradient point shared by %d gradients; drag with Shift to separate" +msgstr[0] "נקודת המדרג משותפת על ידי מדרג %d; גרור עם Shift כדי להפריד" +msgstr[1] "נקודת המדרג משותפת על ידי %d מדרגים; גרור עם Shift כדי להפריד" + +#: ../src/gradient-drag.cpp:1809 msgid "Move gradient handle(s)" -msgstr "" +msgstr "הזז את ידית/ות המדרג" -#: ../src/gradient-drag.cpp:1842 +#: ../src/gradient-drag.cpp:1845 msgid "Move gradient mid stop(s)" -msgstr "" +msgstr "הזז את נקודת/ות אמצע המדרג" -#: ../src/gradient-drag.cpp:2130 +#: ../src/gradient-drag.cpp:2133 msgid "Delete gradient stop(s)" -msgstr "" +msgstr "מחק את עצירת/ות המדרג" #: ../src/helper/units.cpp:37 +#: ../src/live_effects/lpe-path_length.cpp:27 msgid "Unit" msgstr "יחידה" #. Add the units menu. -#: ../src/helper/units.cpp:37 ../src/widgets/select-toolbar.cpp:490 -#: ../src/widgets/toolbox.cpp:1280 ../src/widgets/toolbox.cpp:2457 -#: ../src/widgets/toolbox.cpp:5758 +#: ../src/helper/units.cpp:37 +#: ../src/widgets/select-toolbar.cpp:501 +#: ../src/widgets/toolbox.cpp:1487 +#: ../src/widgets/toolbox.cpp:2693 +#: ../src/widgets/toolbox.cpp:5196 +#: ../src/widgets/toolbox.cpp:6709 msgid "Units" msgstr "יחידות" @@ -4616,11 +4800,13 @@ msgstr "יחידות" msgid "Point" msgstr "נקודה" -#: ../src/helper/units.cpp:38 ../src/ui/widget/selected-style.cpp:287 +#: ../src/helper/units.cpp:38 +#: ../src/ui/widget/selected-style.cpp:287 msgid "pt" msgstr "נק" -#: ../src/helper/units.cpp:38 ../share/extensions/perfectboundcover.inx.h:16 +#: ../src/helper/units.cpp:38 +#: ../share/extensions/perfectboundcover.inx.h:16 msgid "Points" msgstr "נקודות" @@ -4630,31 +4816,31 @@ msgstr "נק" #: ../src/helper/units.cpp:39 msgid "Pica" -msgstr "" +msgstr "פיקא" #: ../src/helper/units.cpp:39 msgid "pc" -msgstr "" +msgstr "פיקא" #: ../src/helper/units.cpp:39 -#, fuzzy msgid "Picas" -msgstr "הדבק" +msgstr "פיקות" #: ../src/helper/units.cpp:39 msgid "Pc" -msgstr "" +msgstr "פיקות" #: ../src/helper/units.cpp:40 msgid "Pixel" msgstr "פיקסל" -#: ../src/helper/units.cpp:40 ../src/ui/dialog/inkscape-preferences.cpp:198 -#: ../src/ui/dialog/inkscape-preferences.cpp:202 -#: ../src/ui/dialog/inkscape-preferences.cpp:205 +#: ../src/helper/units.cpp:40 +#: ../src/ui/dialog/inkscape-preferences.cpp:207 +#: ../src/ui/dialog/inkscape-preferences.cpp:211 +#: ../src/ui/dialog/inkscape-preferences.cpp:214 #: ../src/ui/widget/selected-style.cpp:283 msgid "px" -msgstr "" +msgstr "פיקסלים" #: ../src/helper/units.cpp:40 msgid "Pixels" @@ -4662,16 +4848,18 @@ msgstr "פיקסלים" #: ../src/helper/units.cpp:40 msgid "Px" -msgstr "" +msgstr "פיקסל" #. You can add new elements from this point forward -#: ../src/helper/units.cpp:42 ../share/extensions/straightseg.inx.h:3 +#: ../src/helper/units.cpp:42 +#: ../share/extensions/straightseg.inx.h:3 msgid "Percent" msgstr "אחוז" -#: ../src/helper/units.cpp:42 ../src/ui/dialog/inkscape-preferences.cpp:218 +#: ../src/helper/units.cpp:42 +#: ../src/ui/dialog/inkscape-preferences.cpp:227 msgid "%" -msgstr "" +msgstr "%" #: ../src/helper/units.cpp:42 msgid "Percents" @@ -4681,7 +4869,8 @@ msgstr "אחוזים" msgid "Millimeter" msgstr "מילימטר" -#: ../src/helper/units.cpp:43 ../src/ui/widget/selected-style.cpp:291 +#: ../src/helper/units.cpp:43 +#: ../src/ui/widget/selected-style.cpp:291 msgid "mm" msgstr "מ\"מ" @@ -4716,517 +4905,441 @@ msgstr "מטרים" #. no svg_unit #: ../src/helper/units.cpp:46 msgid "Inch" -msgstr "אינץ'" +msgstr "אינטש" #: ../src/helper/units.cpp:46 msgid "in" -msgstr "" +msgstr "ב־" #: ../src/helper/units.cpp:46 msgid "Inches" -msgstr "אינצ'ים" +msgstr "אינטשים" #: ../src/helper/units.cpp:47 -#, fuzzy msgid "Foot" -msgstr "חלק" +msgstr "רגל" #: ../src/helper/units.cpp:47 msgid "ft" -msgstr "" +msgstr "רגל" #: ../src/helper/units.cpp:47 msgid "Feet" -msgstr "" +msgstr "רגל" #. Volatiles do not have default, so there are none here #. TRANSLATORS: for info, see http://www.w3.org/TR/REC-CSS2/syndata.html#length-units #: ../src/helper/units.cpp:50 msgid "Em square" -msgstr "" +msgstr "ריבוע לתו" #: ../src/helper/units.cpp:50 msgid "em" -msgstr "" +msgstr "גודל" #: ../src/helper/units.cpp:50 msgid "Em squares" -msgstr "" +msgstr "ריבועים בגודל" #. TRANSLATORS: for info, see http://www.w3.org/TR/REC-CSS2/syndata.html#length-units #: ../src/helper/units.cpp:52 msgid "Ex square" -msgstr "" +msgstr "ריבוע בגובה" #: ../src/helper/units.cpp:52 msgid "ex" -msgstr "" +msgstr "גובה" #: ../src/helper/units.cpp:52 msgid "Ex squares" -msgstr "" +msgstr "ריבועים בגובה" -#: ../src/inkscape.cpp:337 -#, fuzzy +#: ../src/inkscape.cpp:329 msgid "Autosaving documents..." -msgstr "שמור מסמך" +msgstr "שמירת המסמך אוטומטית...‏" -#: ../src/inkscape.cpp:405 +#: ../src/inkscape.cpp:400 msgid "Autosave failed! Could not find inkscape extension to save document." -msgstr "" +msgstr "השמירה האוטומטית נכשלה! לא ניתן למצוא את ההרחבה של אינקסקייפ לשמירת מסמכים." -#: ../src/inkscape.cpp:408 ../src/inkscape.cpp:415 -#, fuzzy, c-format +#: ../src/inkscape.cpp:403 +#: ../src/inkscape.cpp:410 +#, c-format msgid "Autosave failed! File %s could not be saved." -msgstr "שמירת הקובץ %s כשלה." +msgstr "השמירה האוטומטית נכשלה! לא ניתן היה לשמור את הקובץ %s." -#: ../src/inkscape.cpp:430 +#: ../src/inkscape.cpp:425 msgid "Autosave complete." -msgstr "" +msgstr "השמירה האוטומטית הושלמה." -#: ../src/inkscape.cpp:653 +#: ../src/inkscape.cpp:647 msgid "Untitled document" -msgstr "" +msgstr "מסמך ללא שם" #. Show nice dialog box -#: ../src/inkscape.cpp:682 +#: ../src/inkscape.cpp:676 msgid "Inkscape encountered an internal error and will close now.\n" -msgstr "" +msgstr "אינקסקייפ נתקלה בשגיאה פנימית והיא תסגר כעת.\n" -#: ../src/inkscape.cpp:683 -msgid "" -"Automatic backups of unsaved documents were done to the following " -"locations:\n" -msgstr "" +#: ../src/inkscape.cpp:677 +msgid "Automatic backups of unsaved documents were done to the following locations:\n" +msgstr "גיבוי אוטומטי של מסמכים שלא נשמרו התבצע במיקומים הבאים:\n" -#: ../src/inkscape.cpp:684 +#: ../src/inkscape.cpp:678 msgid "Automatic backup of the following documents failed:\n" -msgstr "" - -#: ../src/inkscape.cpp:829 -#, c-format -msgid "" -"Cannot create directory %s.\n" -"%s" -msgstr "" -"לא ניתן ליצור תיקיה %s.\n" -"%s" - -#: ../src/inkscape.cpp:830 -#, c-format -msgid "" -"%s is not a valid directory.\n" -"%s" -msgstr "" -"%s אינה תיקיה תקינה.\n" -"%s" - -#: ../src/inkscape.cpp:831 -#, c-format -msgid "" -"Cannot create file %s.\n" -"%s" -msgstr "" -"לא ניתן ליצור את הקובץ %s.\n" -"%s" - -#: ../src/inkscape.cpp:832 -#, c-format -msgid "" -"Cannot write file %s.\n" -"%s" -msgstr "" -"לא ניתן לכתוב אל הקובץ %s.\n" -"%s" - -#: ../src/inkscape.cpp:833 -msgid "" -"Although Inkscape will run, it will use default settings,\n" -"and any changes made in preferences will not be saved." -msgstr "" -"למרות שאינקסקייפ תעלה, היא תשתמש בהגדרות ברירת המחדל,\n" -"nוכל שינוי שיתבצע בהגדרות לא ישמר." - -#: ../src/inkscape.cpp:903 ../src/preferences.cpp:56 -#, c-format -msgid "" -"%s is not a regular file.\n" -"%s" -msgstr "" - -#: ../src/inkscape.cpp:904 ../src/preferences.cpp:57 -#, c-format -msgid "" -"%s not a valid XML file, or\n" -"you don't have read permissions on it.\n" -"%s" -msgstr "" - -#: ../src/inkscape.cpp:906 -#, c-format -msgid "" -"%s is not a valid menus file.\n" -"%s" -msgstr "" - -#: ../src/inkscape.cpp:907 -msgid "" -"Inkscape will run with default menus.\n" -"New menus will not be saved." -msgstr "" +msgstr "הגיבוי האוטומטי של המסמכים הבאים נכשל:\n" #. sp_ui_menu_append_check_item_from_verb(m, view, _("_Menu"), _("Show or hide the menu bar"), "menu", #. checkitem_toggled, checkitem_update, 0); -#: ../src/interface.cpp:838 +#: ../src/interface.cpp:827 msgid "Commands Bar" -msgstr "" +msgstr "סרגל פקודות" -#: ../src/interface.cpp:838 +#: ../src/interface.cpp:827 msgid "Show or hide the Commands bar (under the menu)" -msgstr "" +msgstr "הצגה או הסתרה של סרגל הפקודות (מתחת לתפריט)" -#: ../src/interface.cpp:840 +#: ../src/interface.cpp:829 msgid "Tool Controls Bar" -msgstr "" +msgstr "סרגל פקודות הכלים" -#: ../src/interface.cpp:840 +#: ../src/interface.cpp:829 msgid "Show or hide the Tool Controls bar" -msgstr "" +msgstr "הצגה או הסתרה של סרגל פקודות הכלים" -#: ../src/interface.cpp:842 +#: ../src/interface.cpp:831 msgid "_Toolbox" -msgstr "" +msgstr "_תיבת כלים" -#: ../src/interface.cpp:842 +#: ../src/interface.cpp:831 msgid "Show or hide the main toolbox (on the left)" -msgstr "" +msgstr "הצגה או הסתרה של תיבת הכלים הראשית (מימין)" -#: ../src/interface.cpp:848 +#: ../src/interface.cpp:837 msgid "_Palette" -msgstr "" +msgstr "_לוח צבעים" -#: ../src/interface.cpp:848 +#: ../src/interface.cpp:837 msgid "Show or hide the color palette" -msgstr "" +msgstr "הצגה או הסתרה של לוח הצבעים" -#: ../src/interface.cpp:850 +#: ../src/interface.cpp:839 msgid "_Statusbar" -msgstr "" +msgstr "_שורת מצב" -#: ../src/interface.cpp:850 +#: ../src/interface.cpp:839 msgid "Show or hide the statusbar (at the bottom of the window)" -msgstr "" +msgstr "הצגה או הסתרה של שורת המצב (בתחתית החלון)" -#: ../src/interface.cpp:904 +#: ../src/interface.cpp:893 #, c-format msgid "Verb \"%s\" Unknown" -msgstr "" +msgstr "הפועל \"%s\" אינו ידוע" + +#: ../src/interface.cpp:932 +msgid "Open _Recent" +msgstr "נפתחו לא_חרונה" #. TRANSLATORS: #%s is the id of the group e.g. , not a number. -#: ../src/interface.cpp:1023 +#: ../src/interface.cpp:1030 #, c-format msgid "Enter group #%s" -msgstr "" +msgstr "הכנס לקבוצה #%s" -#: ../src/interface.cpp:1034 +#: ../src/interface.cpp:1041 msgid "Go to parent" -msgstr "" +msgstr "עלה לתיקיית האב" -#: ../src/interface.cpp:1125 ../src/interface.cpp:1210 -#: ../src/ui/widget/selected-style.cpp:466 +#: ../src/interface.cpp:1132 +#: ../src/interface.cpp:1218 +#: ../src/ui/widget/selected-style.cpp:462 msgid "Drop color" -msgstr "" +msgstr "השמט צבע" -#: ../src/interface.cpp:1164 +#: ../src/interface.cpp:1171 msgid "Drop color on gradient" -msgstr "" +msgstr "השמט צבע מהמדרג" -#: ../src/interface.cpp:1223 +#: ../src/interface.cpp:1231 msgid "Could not parse SVG data" -msgstr "" +msgstr "לא ניתן לנתח את נתוני ה־SVG" -#: ../src/interface.cpp:1265 +#: ../src/interface.cpp:1274 msgid "Drop SVG" -msgstr "" +msgstr "השמט SVG" -#: ../src/interface.cpp:1323 +#: ../src/interface.cpp:1332 msgid "Drop bitmap image" -msgstr "" +msgstr "השמט מפת סיביות" -#: ../src/interface.cpp:1415 +#: ../src/interface.cpp:1424 #, c-format msgid "" -"A file named \"%s\" already exists. Do " -"you want to replace it?\n" +"A file named \"%s\" already exists. Do you want to replace it?\n" "\n" "The file already exists in \"%s\". Replacing it will overwrite its contents." msgstr "" +"קובץ עם השם \"%s\" כבר קיים. האם ברצונך להחליף אותו?\n" +"\n" +"הקובץ כבר קיים תחת \"%s\". החלפת הקובץ תגרום לשיכתובו." -#: ../src/interface.cpp:1422 +#: ../src/interface.cpp:1431 msgid "Replace" -msgstr "" +msgstr "החלף" -#: ../src/io/sys.cpp:411 ../src/io/sys.cpp:419 +#: ../src/io/sys.cpp:412 +#: ../src/io/sys.cpp:420 #, c-format msgid "Failed to read from child pipe (%s)" -msgstr "" +msgstr "כשל בקריאה מצאצא השרשרת (%s)" -#: ../src/io/sys.cpp:443 -#, fuzzy, c-format +#: ../src/io/sys.cpp:444 +#, c-format msgid "Failed to change to directory '%s' (%s)" -msgstr "" -"לא ניתן ליצור תיקיה %s.\n" -"%s" +msgstr "כשל בשינוי התיקייה אל '%s' (%s)" -#: ../src/io/sys.cpp:449 ../src/io/sys.cpp:675 +#: ../src/io/sys.cpp:450 +#: ../src/io/sys.cpp:676 #, c-format msgid "Failed to execute child process (%s)" -msgstr "" +msgstr "שגיאה בהפעלת תהליך הצאצא (%s)" -#: ../src/io/sys.cpp:622 +#: ../src/io/sys.cpp:623 #, c-format msgid "Invalid program name: %s" -msgstr "" +msgstr "שם התוכנה שגוי: %s" -#: ../src/io/sys.cpp:632 ../src/io/sys.cpp:921 +#: ../src/io/sys.cpp:633 +#: ../src/io/sys.cpp:922 #, c-format msgid "Invalid string in argument vector at %d: %s" -msgstr "" +msgstr "מחרוזת שגויה בוקטור ארגומנט ב־%d: %s" -#: ../src/io/sys.cpp:643 ../src/io/sys.cpp:936 +#: ../src/io/sys.cpp:644 +#: ../src/io/sys.cpp:937 #, c-format msgid "Invalid string in environment: %s" -msgstr "" +msgstr "מחרוזת שגויה בסביבה: %s" -#: ../src/io/sys.cpp:704 +#: ../src/io/sys.cpp:705 #, c-format msgid "Failed to create pipe for communicating with child process (%s)" -msgstr "" +msgstr "כשל ביצירת שרשרת לתקשורת עם תהליך הצאצא (%s)" -#: ../src/io/sys.cpp:917 -#, fuzzy, c-format +#: ../src/io/sys.cpp:918 +#, c-format msgid "Invalid working directory: %s" -msgstr "" -"%s אינה תיקיה תקינה.\n" -"%s" +msgstr "תיקיית העבודה שגויה: %s" -#: ../src/io/sys.cpp:985 +#: ../src/io/sys.cpp:986 #, c-format msgid "Failed to execute helper program (%s)" -msgstr "" +msgstr "כשל בהפעלת תוכנית העזר (%s)" #: ../src/jabber_whiteboard/invitation-confirm-dialog.cpp:26 #: ../src/jabber_whiteboard/session-file-selector.cpp:24 msgid "_Write session file:" -msgstr "" +msgstr "_כתוב קובץ הפעלה:" #: ../src/jabber_whiteboard/pedrogui.cpp:2630 msgid "Shared SVG whiteboard tool." -msgstr "" +msgstr "כלי לוח ציור SVG שיתופי." #: ../src/jabber_whiteboard/pedrogui.cpp:2631 msgid "Based on the Pedro XMPP client" -msgstr "" +msgstr "מבוסס על לקוח ה־XMPP Pedro" #: ../src/jabber_whiteboard/session-file-selector.cpp:60 msgid "Select a location and filename" -msgstr "בחר מיקום ושם קובץ" +msgstr "בחר את מיקום ושם הקובץ" #: ../src/jabber_whiteboard/session-file-selector.cpp:62 msgid "Set filename" -msgstr "" +msgstr "הגדר את שם הקובץ" #: ../src/jabber_whiteboard/session-manager.cpp:308 msgid "%1 has invited you to a whiteboard session." -msgstr "" +msgstr "%1 הזמין אותך למפגש לוח ציור שיתופי." #: ../src/jabber_whiteboard/session-manager.cpp:310 msgid "Do you wish to accept %1's whiteboard session invitation?" -msgstr "" +msgstr "האם ברצונך לקבל את הזמנת %1 להשתתפות בלוח ציור שיתופי?" #: ../src/jabber_whiteboard/session-manager.cpp:314 msgid "Accept invitation" -msgstr "קבל הזמנה" +msgstr "קבל את ההזמנה" #: ../src/jabber_whiteboard/session-manager.cpp:315 msgid "Decline invitation" -msgstr "דחה הזמנה" +msgstr "דחה את ההזמנה" #: ../src/jabber_whiteboard/session-manager.cpp:370 msgid "Inkboard session (%1 to %2)" -msgstr "" +msgstr "מפגש לוח אינק (%1 ל־%2)" -#: ../src/knot.cpp:430 +#: ../src/knot.cpp:432 msgid "Node or handle drag canceled." -msgstr "" +msgstr "גרירת מפרק או ידית בוטלה." -#: ../src/knotholder.cpp:132 +#: ../src/knotholder.cpp:130 msgid "Change handle" -msgstr "" +msgstr "שנה ידית" -#: ../src/knotholder.cpp:207 +#: ../src/knotholder.cpp:203 msgid "Move handle" -msgstr "" +msgstr "הזז ידית" #. TRANSLATORS: This refers to the pattern that's inside the object -#: ../src/knotholder.cpp:228 +#: ../src/knotholder.cpp:224 msgid "Move the pattern fill inside the object" -msgstr "" +msgstr "הזז את מילוי התבנית בתוך הפריט" -#: ../src/knotholder.cpp:231 +#: ../src/knotholder.cpp:227 msgid "Scale the pattern fill uniformly" -msgstr "" +msgstr "שנה את גודל תבנית המילוי באופן אחיד" -#: ../src/knotholder.cpp:234 +#: ../src/knotholder.cpp:230 msgid "Rotate the pattern fill; with Ctrl to snap angle" -msgstr "" +msgstr "סובב את תבנית המילוי; לחיצה על Ctrl כדי להצמיד לזווית" #: ../src/libgdl/gdl-dock-bar.c:108 -#, fuzzy msgid "Master" -msgstr "מטר" +msgstr "ראשי" #: ../src/libgdl/gdl-dock-bar.c:109 msgid "GdlDockMaster object which the dockbar widget is attached to" -msgstr "" +msgstr "פריט ה־GdlDockMaster שאליו מחובר הרכיב" #: ../src/libgdl/gdl-dock-bar.c:116 msgid "Dockbar style" -msgstr "" +msgstr "סגנון הסרגל המעוגן" #: ../src/libgdl/gdl-dock-bar.c:117 msgid "Dockbar style to show items on it" -msgstr "" +msgstr "סגנון הצגת הסמלים על הסרגל המעוגן" -#: ../src/libgdl/gdl-dock.c:175 ../src/ui/dialog/inkscape-preferences.cpp:496 -#: ../src/ui/dialog/inkscape-preferences.cpp:517 +#: ../src/libgdl/gdl-dock.c:175 +#: ../src/ui/dialog/inkscape-preferences.cpp:504 +#: ../src/ui/dialog/inkscape-preferences.cpp:525 msgid "Floating" -msgstr "" +msgstr "צף" #: ../src/libgdl/gdl-dock.c:176 msgid "Whether the dock is floating in its own window" -msgstr "" +msgstr "האם המעגן צף בחלון משלו" -#: ../src/libgdl/gdl-dock.c:183 ../src/libgdl/gdl-dock-master.c:144 -#, fuzzy +#: ../src/libgdl/gdl-dock.c:183 +#: ../src/libgdl/gdl-dock-master.c:144 msgid "Default title" -msgstr "רישיון" +msgstr "כותרת ברירת מחדל" #: ../src/libgdl/gdl-dock.c:184 msgid "Default title for the newly created floating docks" -msgstr "" +msgstr "כותרת ברירת המחדל עבור מעגנים צפים חדשים" #: ../src/libgdl/gdl-dock.c:191 msgid "Width for the dock when it's of floating type" -msgstr "" +msgstr "רוחב המעגן כאשר הוא מסוג צף" #: ../src/libgdl/gdl-dock.c:199 msgid "Height for the dock when it's of floating type" -msgstr "" +msgstr "גובה המעגן כאשר הוא מסוג צף" #: ../src/libgdl/gdl-dock.c:206 msgid "Float X" -msgstr "" +msgstr "ציפה ב־X" #: ../src/libgdl/gdl-dock.c:207 msgid "X coordinate for a floating dock" -msgstr "" +msgstr "נקודת הציון ב־X עבור מעגן צף" #: ../src/libgdl/gdl-dock.c:214 msgid "Float Y" -msgstr "" +msgstr "ציפה ב־Y" #: ../src/libgdl/gdl-dock.c:215 msgid "Y coordinate for a floating dock" -msgstr "" +msgstr "נקודת הציון ב־Y עבור מעגן צף" #: ../src/libgdl/gdl-dock.c:499 #, c-format msgid "Dock #%d" -msgstr "" +msgstr "מעגן #%d" #: ../src/libgdl/gdl-dock-item.c:287 -#, fuzzy msgid "Orientation" -msgstr "יעד הדפסה" +msgstr "ישור" #: ../src/libgdl/gdl-dock-item.c:288 msgid "Orientation of the docking item" -msgstr "" +msgstr "ישור הפריט המעוכן" #: ../src/libgdl/gdl-dock-item.c:303 msgid "Resizable" -msgstr "" +msgstr "בעל גודל הניתן לשינוי" #: ../src/libgdl/gdl-dock-item.c:304 msgid "If set, the dock item can be resized when docked in a panel" -msgstr "" +msgstr "במידה והוגדר, ניתן לשנות את גודל הפריט המעוגן כאשר הוא מעוגן לחלונית" #: ../src/libgdl/gdl-dock-item.c:311 msgid "Item behavior" -msgstr "" +msgstr "התנהגות הפריט" #: ../src/libgdl/gdl-dock-item.c:312 -msgid "" -"General behavior for the dock item (i.e. whether it can float, if it's " -"locked, etc.)" -msgstr "" +msgid "General behavior for the dock item (i.e. whether it can float, if it's locked, etc.)" +msgstr "התנהגות כללית עבור פריט המעגן (לדוגמה האם הוא יכול לצוף, מעוגן וכו')" -#: ../src/libgdl/gdl-dock-item.c:320 ../src/libgdl/gdl-dock-master.c:151 -#, fuzzy +#: ../src/libgdl/gdl-dock-item.c:320 +#: ../src/libgdl/gdl-dock-master.c:151 msgid "Locked" -msgstr "נעל" +msgstr "נעול" #: ../src/libgdl/gdl-dock-item.c:321 -msgid "" -"If set, the dock item cannot be dragged around and it doesn't show a grip" -msgstr "" +msgid "If set, the dock item cannot be dragged around and it doesn't show a grip" +msgstr "במידה והוגדר לא ניתן יהיה לגרור את הפריט ולא תופיע ידית אחיזה" #: ../src/libgdl/gdl-dock-item.c:329 msgid "Preferred width" -msgstr "" +msgstr "רוחב מועדף" #: ../src/libgdl/gdl-dock-item.c:330 msgid "Preferred width for the dock item" -msgstr "" +msgstr "הרוחב המועדף עבור פריט המעגן" #: ../src/libgdl/gdl-dock-item.c:336 msgid "Preferred height" -msgstr "" +msgstr "גובה מועדף" #: ../src/libgdl/gdl-dock-item.c:337 msgid "Preferred height for the dock item" -msgstr "" +msgstr "הגובה המועדף עבור פריט המעגן" #: ../src/libgdl/gdl-dock-item.c:616 #, c-format -msgid "" -"You can't add a dock object (%p of type %s) inside a %s. Use a GdlDock or " -"some other compound dock object." -msgstr "" +msgid "You can't add a dock object (%p of type %s) inside a %s. Use a GdlDock or some other compound dock object." +msgstr "אינך יכול לעגון פריטים (%p מסוג %s) בתוך %s. השתמש ב־GdlDock או באיזשהי תרכובת מעגן אחרת." #: ../src/libgdl/gdl-dock-item.c:623 #, c-format -msgid "" -"Attempting to add a widget with type %s to a %s, but it can only contain one " -"widget at a time; it already contains a widget of type %s" -msgstr "" +msgid "Attempting to add a widget with type %s to a %s, but it can only contain one widget at a time; it already contains a widget of type %s" +msgstr "מנסה להוסיף רכיב מסוג %s אל %s, אך הוא יכול להכיל רכיב אחד בו זמנית; והוא כבר מכיל פריט מסוג %s" -#: ../src/libgdl/gdl-dock-item.c:1345 ../src/libgdl/gdl-dock-item.c:1390 +#: ../src/libgdl/gdl-dock-item.c:1345 +#: ../src/libgdl/gdl-dock-item.c:1390 #, c-format msgid "Unsupported docking strategy %s in dock object of type %s" -msgstr "" +msgstr "אסטרטגיית העגינה %s אינה נתמכת בפריטי מעגן מסוג %s" #. UnLock menuitem #: ../src/libgdl/gdl-dock-item.c:1479 -#, fuzzy msgid "UnLock" -msgstr "נעל" +msgstr "שחרר" #. Hide menuitem. #: ../src/libgdl/gdl-dock-item.c:1486 msgid "Hide" -msgstr "" +msgstr "הסתר" #. Lock menuitem #: ../src/libgdl/gdl-dock-item.c:1491 @@ -5236,79 +5349,72 @@ msgstr "נעל" #: ../src/libgdl/gdl-dock-item.c:1717 #, c-format msgid "Attempt to bind an unbound item %p" -msgstr "" +msgstr "מנסה לאגד פריט לא מאוגד %p" #: ../src/libgdl/gdl-dock-item-grip.c:395 msgid "Iconify" -msgstr "" +msgstr "מזער לסמל" #: ../src/libgdl/gdl-dock-item-grip.c:395 msgid "Iconify this dock" -msgstr "" +msgstr "מזער מעגן זה לסמל" #: ../src/libgdl/gdl-dock-item-grip.c:397 -#, fuzzy msgid "Close" -msgstr "_סגור" +msgstr "סגור" #: ../src/libgdl/gdl-dock-item-grip.c:397 msgid "Close this dock" -msgstr "" +msgstr "סגור מעגן זה" #: ../src/libgdl/gdl-dock-item-grip.c:706 #: ../src/libgdl/gdl-dock-tablabel.c:128 msgid "Controlling dock item" -msgstr "" +msgstr "שולט בפריט מעוגן" #: ../src/libgdl/gdl-dock-item-grip.c:707 msgid "Dockitem which 'owns' this grip" -msgstr "" +msgstr "פריט עגינה ה'שולט' באחיזה זו" #: ../src/libgdl/gdl-dock-master.c:145 msgid "Default title for newly created floating docks" -msgstr "" +msgstr "כותרת ברירת מחדל עבור מעגנים צפים חדשים הנוצרים" #: ../src/libgdl/gdl-dock-master.c:152 -msgid "" -"If is set to 1, all the dock items bound to the master are locked; if it's " -"0, all are unlocked; -1 indicates inconsistency among the items" -msgstr "" +msgid "If is set to 1, all the dock items bound to the master are locked; if it's 0, all are unlocked; -1 indicates inconsistency among the items" +msgstr "במידה והוגדר ל־1, כל פריטי העגינה המאוגדים לראשי הינם נעולים; אם 0, כולם לא נעולים; -1 מצביע על אי אחידות בין הפריטים" -#: ../src/libgdl/gdl-dock-master.c:160 ../src/libgdl/gdl-switcher.c:707 +#: ../src/libgdl/gdl-dock-master.c:160 +#: ../src/libgdl/gdl-switcher.c:707 msgid "Switcher Style" -msgstr "" +msgstr "סגנון מחליף" -#: ../src/libgdl/gdl-dock-master.c:161 ../src/libgdl/gdl-switcher.c:708 +#: ../src/libgdl/gdl-dock-master.c:161 +#: ../src/libgdl/gdl-switcher.c:708 msgid "Switcher buttons style" -msgstr "" +msgstr "סגנון לחצי מחליף" #: ../src/libgdl/gdl-dock-master.c:168 msgid "Expand direction" -msgstr "" +msgstr "כיוון ההרחבה" #: ../src/libgdl/gdl-dock-master.c:169 -msgid "" -"Allow the master's dock items to expand their container dock objects in the " -"given direction" -msgstr "" +msgid "Allow the master's dock items to expand their container dock objects in the given direction" +msgstr "אפשר לפריטי העגינה הראשיים להרחיב את שטח התכולה של פרטי העגינה שלהם בכיוון הניתן" #: ../src/libgdl/gdl-dock-master.c:796 #, c-format -msgid "" -"master %p: unable to add object %p[%s] to the hash. There already is an " -"item with that name (%p)." -msgstr "" +msgid "master %p: unable to add object %p[%s] to the hash. There already is an item with that name (%p)." +msgstr "%p ראשי: לא ניתן להוסיף את הפריט %p[%s] לגיבוב. כבר יש פריט עם השם הזה(%p)." #: ../src/libgdl/gdl-dock-master.c:969 #, c-format -msgid "" -"The new dock controller %p is automatic. Only manual dock objects should be " -"named controller." -msgstr "" +msgid "The new dock controller %p is automatic. Only manual dock objects should be named controller." +msgstr "בקר המעגן %p הינו אוטומטי. רק פריטי מעגן ידניים אמורים להקרא בקר." #: ../src/libgdl/gdl-dock-notebook.c:134 -#: ../src/ui/dialog/align-and-distribute.cpp:903 -#: ../src/ui/dialog/document-properties.cpp:134 +#: ../src/ui/dialog/align-and-distribute.cpp:923 +#: ../src/ui/dialog/document-properties.cpp:133 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1364 #: ../src/widgets/desktop-widget.cpp:1544 msgid "Page" @@ -5316,2221 +5422,2547 @@ msgstr "עמוד" #: ../src/libgdl/gdl-dock-notebook.c:135 msgid "The index of the current page" -msgstr "" +msgstr "המפתח של העמוד הנוכחי" -#: ../src/libgdl/gdl-dock-object.c:120 ../src/ui/widget/page-sizer.cpp:198 +#: ../src/libgdl/gdl-dock-object.c:120 +#: ../src/ui/widget/page-sizer.cpp:216 msgid "Name" -msgstr "" +msgstr "שם" #: ../src/libgdl/gdl-dock-object.c:121 msgid "Unique name for identifying the dock object" -msgstr "" +msgstr "שם ייחודי לזיהוי פריט המעגן" #: ../src/libgdl/gdl-dock-object.c:128 msgid "Long name" -msgstr "" +msgstr "שם ארוך" #: ../src/libgdl/gdl-dock-object.c:129 msgid "Human readable name for the dock object" -msgstr "" +msgstr "שם המובן לבני אדם עבור פריט המעגן" #: ../src/libgdl/gdl-dock-object.c:135 msgid "Stock Icon" -msgstr "" +msgstr "סמל מחסנית" #: ../src/libgdl/gdl-dock-object.c:136 msgid "Stock icon for the dock object" -msgstr "" +msgstr "סמל המחסנית עבור פריט המעגן" #: ../src/libgdl/gdl-dock-object.c:142 msgid "Pixbuf Icon" -msgstr "" +msgstr "סמל חוצץ התמונה" #: ../src/libgdl/gdl-dock-object.c:143 msgid "Pixbuf icon for the dock object" -msgstr "" +msgstr "סמל חוצץ התמונה עבור פריט המעגן" #: ../src/libgdl/gdl-dock-object.c:148 msgid "Dock master" -msgstr "" +msgstr "מעגן ראשי" #: ../src/libgdl/gdl-dock-object.c:149 msgid "Dock master this dock object is bound to" -msgstr "" +msgstr "המעגן הראשי אליו מאוגד פריט מעגן זה" #: ../src/libgdl/gdl-dock-object.c:434 #, c-format -msgid "" -"Call to gdl_dock_object_dock in a dock object %p (object type is %s) which " -"hasn't implemented this method" -msgstr "" +msgid "Call to gdl_dock_object_dock in a dock object %p (object type is %s) which hasn't implemented this method" +msgstr "קרא ל־gdl_dock_object_dock בפריט מעגן %p (סוג הפריט הוא %s) שלא יישם שיטה זו" #: ../src/libgdl/gdl-dock-object.c:563 #, c-format -msgid "" -"Dock operation requested in a non-bound object %p. The application might " -"crash" -msgstr "" +msgid "Dock operation requested in a non-bound object %p. The application might crash" +msgstr "התבקשה פעולת מעגן עבור פריט לא מאוגד %p. התוכנה עלולה לקרוס" #: ../src/libgdl/gdl-dock-object.c:570 #, c-format msgid "Cannot dock %p to %p because they belong to different masters" -msgstr "" +msgstr "לא ניתן לעגון את %p אל %p מכיוון שהם שייכים לראשיים שונים" #: ../src/libgdl/gdl-dock-object.c:612 #, c-format -msgid "" -"Attempt to bind to %p an already bound dock object %p (current master: %p)" -msgstr "" +msgid "Attempt to bind to %p an already bound dock object %p (current master: %p)" +msgstr "נסיון לאיגוד אל %p פריט מעגן שכבר מאוגד %p (ראשי נוכחי: %p)" #: ../src/libgdl/gdl-dock-paned.c:132 -#, fuzzy msgid "Position" -msgstr "יעד הדפסה" +msgstr "מיקום" #: ../src/libgdl/gdl-dock-paned.c:133 msgid "Position of the divider in pixels" -msgstr "" +msgstr "מיקום המחיצה בפיקסלים" #: ../src/libgdl/gdl-dock-placeholder.c:143 msgid "Sticky" -msgstr "" +msgstr "דביק" #: ../src/libgdl/gdl-dock-placeholder.c:144 -msgid "" -"Whether the placeholder will stick to its host or move up the hierarchy when " -"the host is redocked" -msgstr "" +msgid "Whether the placeholder will stick to its host or move up the hierarchy when the host is redocked" +msgstr "האם ממלא המקום ידבק אל המארח שלו או שיעלה מעלה בהירארכיה כאשר המארח מעוגן מחדש" #: ../src/libgdl/gdl-dock-placeholder.c:151 msgid "Host" -msgstr "" +msgstr "מארח" #: ../src/libgdl/gdl-dock-placeholder.c:152 msgid "The dock object this placeholder is attached to" -msgstr "" +msgstr "פריט המעגן אליו מצורף ממלא מקום זה" #: ../src/libgdl/gdl-dock-placeholder.c:159 msgid "Next placement" -msgstr "" +msgstr "ההצבה הבאה" #: ../src/libgdl/gdl-dock-placeholder.c:160 -msgid "" -"The position an item will be docked to our host if a request is made to dock " -"to us" -msgstr "" +msgid "The position an item will be docked to our host if a request is made to dock to us" +msgstr "המיקום שאליו יעגון הפריט למארח שלנו במידה ויתבקש לעגון אלינו" #: ../src/libgdl/gdl-dock-placeholder.c:170 msgid "Width for the widget when it's attached to the placeholder" -msgstr "" +msgstr "רוחב הרכיב כאשר הוא מסופח לממלא המקום" #: ../src/libgdl/gdl-dock-placeholder.c:178 msgid "Height for the widget when it's attached to the placeholder" -msgstr "" +msgstr "גובה הרכיב כאשר הוא מסופח לממלא המקום" #: ../src/libgdl/gdl-dock-placeholder.c:184 msgid "Floating Toplevel" -msgstr "" +msgstr "רמת הציפה העליונה" #: ../src/libgdl/gdl-dock-placeholder.c:185 msgid "Whether the placeholder is standing in for a floating toplevel dock" -msgstr "" +msgstr "האם ממלא המקום מחליף את מקומו של מעגן הצף כעליון" #: ../src/libgdl/gdl-dock-placeholder.c:191 -#, fuzzy msgid "X-Coordinate" -msgstr "פינות" +msgstr "נקודת הציון ב־X" #: ../src/libgdl/gdl-dock-placeholder.c:192 msgid "X coordinate for dock when floating" -msgstr "" +msgstr "נקודת הציון ב־X עבור המעגן בעת הציפה" #: ../src/libgdl/gdl-dock-placeholder.c:198 -#, fuzzy msgid "Y-Coordinate" -msgstr "פינות" +msgstr "נקודת הציון ב־Y" #: ../src/libgdl/gdl-dock-placeholder.c:199 msgid "Y coordinate for dock when floating" -msgstr "" +msgstr "נקודת הציון ב־Y עבור המעגן בעת הציפה" #: ../src/libgdl/gdl-dock-placeholder.c:494 msgid "Attempt to dock a dock object to an unbound placeholder" -msgstr "" +msgstr "נסה לעגון פריט מעגן לממלא מקום לא מאוגד" #: ../src/libgdl/gdl-dock-placeholder.c:618 #, c-format msgid "Got a detach signal from an object (%p) who is not our host %p" -msgstr "" +msgstr "התקבל אות הפרדה מהפריט (%p) שאינו המארח שלנו %p" #: ../src/libgdl/gdl-dock-placeholder.c:643 #, c-format -msgid "" -"Something weird happened while getting the child placement for %p from " -"parent %p" -msgstr "" +msgid "Something weird happened while getting the child placement for %p from parent %p" +msgstr "משהו מוזר קרה בעת קבלת מיקום הצאצא עבור %p מההורה %p" #: ../src/libgdl/gdl-dock-tablabel.c:129 msgid "Dockitem which 'owns' this tablabel" -msgstr "" +msgstr "פריט מעגן ה'שולט' בתווית לשונית זו" -#: ../src/libnrtype/FontFactory.cpp:774 +#: ../src/libnrtype/FontFactory.cpp:780 msgid "Ignoring font without family that will crash Pango" -msgstr "" +msgstr "מתעלם מגופן ללא משפחה כדי שלא יקריס את פאנגו" #. {constant defined in effect.h, N_("name of your effect"), "name of your effect in SVG"} -#: ../src/live_effects/effect.cpp:68 -#, fuzzy +#: ../src/live_effects/effect.cpp:76 +msgid "Angle bisector" +msgstr "מחבר זוויתי" + +#: ../src/live_effects/effect.cpp:77 msgid "Bend" -msgstr "שחור" +msgstr "כופף" -#: ../src/live_effects/effect.cpp:69 -msgid "Pattern Along Path" -msgstr "" +#: ../src/live_effects/effect.cpp:78 +msgid "Boolops" +msgstr "אופרטורים בוליאנים" -#. for historic reasons, this effect is called skeletal(strokes) in Inkscape:SVG -#: ../src/live_effects/effect.cpp:70 -msgid "Sketch" -msgstr "" +#: ../src/live_effects/effect.cpp:79 +msgid "Circle (by center and radius)" +msgstr "עיגול (לפי מרכז ורדיוס)" -#: ../src/live_effects/effect.cpp:71 -msgid "VonKoch" -msgstr "" +#: ../src/live_effects/effect.cpp:80 +msgid "Circle by 3 points" +msgstr "עיגול לפי 3 נקודות" -#: ../src/live_effects/effect.cpp:72 -msgid "Knot" -msgstr "" +#: ../src/live_effects/effect.cpp:81 +msgid "Construct grid" +msgstr "הרכב רשת" -#: ../src/live_effects/effect.cpp:74 +#: ../src/live_effects/effect.cpp:83 msgid "doEffect stack test" -msgstr "" +msgstr "מחסנית בדיקת doEffect" -#: ../src/live_effects/effect.cpp:76 -msgid "Gears" -msgstr "" +#: ../src/live_effects/effect.cpp:85 +msgid "Envelope Deformation" +msgstr "עיוות מעטפה" -#: ../src/live_effects/effect.cpp:77 -msgid "Stitch Sub-Paths" -msgstr "" +#: ../src/live_effects/effect.cpp:86 +msgid "Freehand Shape" +msgstr "צורה ביד חופשית" -#: ../src/live_effects/effect.cpp:78 -msgid "Circle (center+radius)" -msgstr "" +#. this is actually a special type of PatternAlongPath, used to paste shapes in pen/pencil tool +#: ../src/live_effects/effect.cpp:87 +msgid "Gears" +msgstr "גלגלי שיניים" -#: ../src/live_effects/effect.cpp:79 -msgid "Perspective path" -msgstr "" +#: ../src/live_effects/effect.cpp:88 +msgid "Interpolate Sub-Paths" +msgstr "בצע אינטרפולציה לתת־נתיבים" -#: ../src/live_effects/effect.cpp:80 -msgid "Spiro spline" -msgstr "" +#: ../src/live_effects/effect.cpp:89 +msgid "Knot" +msgstr "קשר" -#: ../src/live_effects/effect.cpp:81 +#: ../src/live_effects/effect.cpp:90 msgid "Lattice Deformation" -msgstr "" +msgstr "עיוות סבוך" -#: ../src/live_effects/effect.cpp:82 -msgid "Envelope Deformation" -msgstr "" +#: ../src/live_effects/effect.cpp:91 +msgid "Line Segment" +msgstr "קו מקטע" -#: ../src/live_effects/effect.cpp:83 -#, fuzzy -msgid "Construct grid" -msgstr "ניגודיות" +#: ../src/live_effects/effect.cpp:92 +msgid "Mirror symmetry" +msgstr "סימטריית מראה" + +#: ../src/live_effects/effect.cpp:94 +msgid "Parallel" +msgstr "מקביל" -#: ../src/live_effects/effect.cpp:84 +#: ../src/live_effects/effect.cpp:95 +msgid "Path length" +msgstr "אורך הנתיב" + +#: ../src/live_effects/effect.cpp:96 +msgid "Pattern Along Path" +msgstr "תבנית לאורך נתיב" + +#. for historic reasons, this effect is called skeletal(strokes) in Inkscape:SVG +#: ../src/live_effects/effect.cpp:97 msgid "Perpendicular bisector" -msgstr "" +msgstr "מחבר אנכי" -#: ../src/live_effects/effect.cpp:85 -#, fuzzy +#: ../src/live_effects/effect.cpp:98 +msgid "Perspective path" +msgstr "נתיב פרספקטיבה" + +#: ../src/live_effects/effect.cpp:99 +msgid "Rotate copies" +msgstr "סובב עותקים" + +#: ../src/live_effects/effect.cpp:100 +msgid "Ruler" +msgstr "סרגל" + +#: ../src/live_effects/effect.cpp:101 +msgid "Sketch" +msgstr "סקיצה" + +#: ../src/live_effects/effect.cpp:102 +msgid "Spiro spline" +msgstr "רצועת ספירו" + +#: ../src/live_effects/effect.cpp:103 +msgid "Stitch Sub-Paths" +msgstr "תפור תת־נתיבים" + +#: ../src/live_effects/effect.cpp:104 msgid "Tangent to curve" -msgstr "היסט משיק" +msgstr "משיק לעקומה" -#: ../src/live_effects/effect.cpp:86 -#, fuzzy -msgid "Mirror reflection" -msgstr "PM: שיקוף" +#: ../src/live_effects/effect.cpp:105 +msgid "Text label" +msgstr "תווית טקסט" -#: ../src/live_effects/effect.cpp:178 -msgid "Create and apply path effect" -msgstr "" +#: ../src/live_effects/effect.cpp:106 +msgid "VonKoch" +msgstr "פתית השלג של קוך" -#: ../src/live_effects/effect.cpp:189 +#: ../src/live_effects/effect.cpp:255 msgid "Is visible?" -msgstr "" +msgstr "האם נראה?" -#: ../src/live_effects/effect.cpp:189 -msgid "" -"If unchecked, the effect remains applied to the object but is temporarily " -"disabled on canvas" -msgstr "" +#: ../src/live_effects/effect.cpp:255 +msgid "If unchecked, the effect remains applied to the object but is temporarily disabled on canvas" +msgstr "במידה ולא סומן, האפקט יחול על הפריט אך ינוטרל זמנית על משטח הציור" + +#: ../src/live_effects/effect.cpp:256 +msgid "Deactivate knotholder?" +msgstr "לנטרל את מחזיק הקשר?" -#: ../src/live_effects/effect.cpp:207 +#: ../src/live_effects/effect.cpp:256 +msgid "Check this to deactivate knotholder handles (useful if they interfere with node handles during editing)" +msgstr "בחר זאת כדי לנטרל את ידיות אחיזת הקשר (שימוש אם הן מפריעות לידיות המפרקים במהלך העריכה)" + +#: ../src/live_effects/effect.cpp:277 msgid "No effect" -msgstr "" +msgstr "ללא אפקט" -#: ../src/live_effects/effect.cpp:254 +#: ../src/live_effects/effect.cpp:324 #, c-format msgid "Please specify a parameter path for the LPE '%s' with %d mouse clicks" -msgstr "" - -#: ../src/live_effects/effect.cpp:294 -msgid "An exception occurred during execution of the Path Effect." -msgstr "" +msgstr "נא ציין נתיב פרמטר עבור אפקט הנתיב החי '%s' ב־%d לחיצות עכבר" -#: ../src/live_effects/effect.cpp:512 +#: ../src/live_effects/effect.cpp:623 #, c-format msgid "Editing parameter %s." -msgstr "" +msgstr "עורך את הפרמטר %s." -#: ../src/live_effects/effect.cpp:517 +#: ../src/live_effects/effect.cpp:628 msgid "None of the applied path effect's parameters can be edited on-canvas." -msgstr "" +msgstr "אף אחד מהפרמטרים של אפקט הנתיב יכולים לבוא לידי ביטוי על גבי לוח הציור." -#: ../src/live_effects/lpe-bendpath.cpp:57 +#: ../src/live_effects/lpe-angle_bisector.cpp:51 +#: ../src/live_effects/lpe-parallel.cpp:47 +#: ../src/live_effects/lpe-perp_bisector.cpp:103 +#: ../src/live_effects/lpe-tangent_to_curve.cpp:58 +msgid "Length left" +msgstr "אורך שמאל" + +#: ../src/live_effects/lpe-angle_bisector.cpp:51 +#: ../src/live_effects/lpe-perp_bisector.cpp:103 +msgid "Specifies the left end of the bisector" +msgstr "מגדיר את הצד השמאלי של המחבר" + +#: ../src/live_effects/lpe-angle_bisector.cpp:52 +#: ../src/live_effects/lpe-parallel.cpp:48 +#: ../src/live_effects/lpe-perp_bisector.cpp:104 +#: ../src/live_effects/lpe-tangent_to_curve.cpp:59 +msgid "Length right" +msgstr "אורך ימין" + +#: ../src/live_effects/lpe-angle_bisector.cpp:52 +#: ../src/live_effects/lpe-perp_bisector.cpp:104 +msgid "Specifies the right end of the bisector" +msgstr "מגדיר את הצד הימני של המחבר" + +#: ../src/live_effects/lpe-angle_bisector.cpp:59 +msgid "Adjust the \"left\" end of the bisector" +msgstr "התאם את הסוף \"השמאלי\" של המחבר" + +#: ../src/live_effects/lpe-angle_bisector.cpp:60 +msgid "Adjust the \"right\" of the bisector" +msgstr "הגדר את הצד \"הימני\"של המחבר" + +#: ../src/live_effects/lpe-bendpath.cpp:55 msgid "Bend path" -msgstr "" +msgstr "כופף נתיב" -#: ../src/live_effects/lpe-bendpath.cpp:57 +#: ../src/live_effects/lpe-bendpath.cpp:55 msgid "Path along which to bend the original path" -msgstr "" +msgstr "נתיב שלאורכו יכופף הנתיב המקורי" -#: ../src/live_effects/lpe-bendpath.cpp:58 +#: ../src/live_effects/lpe-bendpath.cpp:56 msgid "Width of the path" -msgstr "" +msgstr "רוחב הנתיב" -#: ../src/live_effects/lpe-bendpath.cpp:59 -#: ../src/live_effects/lpe-patternalongpath.cpp:65 +#: ../src/live_effects/lpe-bendpath.cpp:57 +#: ../src/live_effects/lpe-patternalongpath.cpp:64 msgid "Width in units of length" -msgstr "" +msgstr "רוחב ביחידות אורך" -#: ../src/live_effects/lpe-bendpath.cpp:59 +#: ../src/live_effects/lpe-bendpath.cpp:57 msgid "Scale the width of the path in units of its length" -msgstr "" +msgstr "מדוד את עובי הנתיב ביחידות הרוחב שלו" -#: ../src/live_effects/lpe-bendpath.cpp:60 +#: ../src/live_effects/lpe-bendpath.cpp:58 msgid "Original path is vertical" -msgstr "" +msgstr "הנתיב המקורי הוא אנכי" -#: ../src/live_effects/lpe-bendpath.cpp:60 +#: ../src/live_effects/lpe-bendpath.cpp:58 msgid "Rotates the original 90 degrees, before bending it along the bend path" -msgstr "" +msgstr "מסובב את המקור ב־90 מעלות, לפני שמכופף אותו לאורך נתיב הכיפוף" + +#: ../src/live_effects/lpe-boolops.cpp:23 +msgid "Null" +msgstr "ריק" + +#: ../src/live_effects/lpe-boolops.cpp:24 +msgid "Intersect" +msgstr "הצלבה" + +#: ../src/live_effects/lpe-boolops.cpp:25 +msgid "Subtract A-B" +msgstr "חסר את B מ־A" + +#: ../src/live_effects/lpe-boolops.cpp:26 +msgid "Identity A" +msgstr "זהות A" + +#: ../src/live_effects/lpe-boolops.cpp:27 +msgid "Subtract B-A" +msgstr "חסר את Aמ־B" + +#: ../src/live_effects/lpe-boolops.cpp:28 +msgid "Identity B" +msgstr "זהות B" + +#: ../src/live_effects/lpe-boolops.cpp:29 +#: ../src/splivarot.cpp:96 +msgid "Exclusion" +msgstr "אי הכללה" + +#: ../src/live_effects/lpe-boolops.cpp:30 +#: ../src/splivarot.cpp:66 +#: ../src/splivarot.cpp:72 +msgid "Union" +msgstr "איחוד" + +#: ../src/live_effects/lpe-boolops.cpp:36 +msgid "2nd path" +msgstr "הנתיב השני" + +#: ../src/live_effects/lpe-boolops.cpp:36 +msgid "Path to which the original path will be boolop'ed." +msgstr "הנתיב שעליו תבוצע הפעולה הבוליאנית עם הנתיב המקורי." + +#: ../src/live_effects/lpe-boolops.cpp:37 +msgid "Boolop type" +msgstr "סוג הפעולה הבוליאנית" + +#: ../src/live_effects/lpe-boolops.cpp:37 +msgid "Determines which kind of boolop will be performed." +msgstr "קובע איזה סוג של של אופרטורים בוליאניים יבוצעו." #: ../src/live_effects/lpe-constructgrid.cpp:28 msgid "Size X" -msgstr "" +msgstr "גודל X" #: ../src/live_effects/lpe-constructgrid.cpp:28 msgid "The size of the grid in X direction." -msgstr "" +msgstr "גודל הרשת בכיוון X/" #: ../src/live_effects/lpe-constructgrid.cpp:29 msgid "Size Y" -msgstr "" +msgstr "גודל Y" #: ../src/live_effects/lpe-constructgrid.cpp:29 msgid "The size of the grid in Y direction." -msgstr "" +msgstr "גודל הרשת בכיוון ה־Y." + +#: ../src/live_effects/lpe-copy_rotate.cpp:47 +msgid "Starting" +msgstr "מתחיל ב־" + +#: ../src/live_effects/lpe-copy_rotate.cpp:47 +msgid "Angle of the first copy" +msgstr "זווית העותק הראשון" + +#: ../src/live_effects/lpe-copy_rotate.cpp:48 +msgid "Rotation angle" +msgstr "זווית ההטייה" + +#: ../src/live_effects/lpe-copy_rotate.cpp:48 +msgid "Angle between two successive copies" +msgstr "זווית בין שני עותקים עוקבים" + +#: ../src/live_effects/lpe-copy_rotate.cpp:49 +msgid "Number of copies" +msgstr "מספר העותקים" + +#: ../src/live_effects/lpe-copy_rotate.cpp:49 +msgid "Number of copies of the original path" +msgstr "מספר העותקים של הנתיב המקורי" + +#: ../src/live_effects/lpe-copy_rotate.cpp:50 +msgid "Origin" +msgstr "מקור" + +#: ../src/live_effects/lpe-copy_rotate.cpp:50 +msgid "Origin of the rotation" +msgstr "מקור ההטייה" + +#: ../src/live_effects/lpe-copy_rotate.cpp:61 +msgid "Adjust the starting angle" +msgstr "הגדר את זווית ההתחלה" + +#: ../src/live_effects/lpe-copy_rotate.cpp:62 +msgid "Adjust the rotation angle" +msgstr "הגדר את זווית ההטייה" #: ../src/live_effects/lpe-curvestitch.cpp:42 msgid "Stitch path" -msgstr "" +msgstr "תפור נתיב" #: ../src/live_effects/lpe-curvestitch.cpp:42 msgid "The path that will be used as stitch." -msgstr "" +msgstr "הנתיב שישמש כתפר." #: ../src/live_effects/lpe-curvestitch.cpp:43 -#, fuzzy msgid "Number of paths" -msgstr "מספר צעדים" +msgstr "מספר נתיבים" #: ../src/live_effects/lpe-curvestitch.cpp:43 msgid "The number of paths that will be generated." -msgstr "" +msgstr "מספר הנתיבים שייוצרו." #: ../src/live_effects/lpe-curvestitch.cpp:44 msgid "Start edge variance" -msgstr "" +msgstr "שינוי בתחילת הקצה" #: ../src/live_effects/lpe-curvestitch.cpp:44 -msgid "" -"The amount of random jitter to move the start points of the stitches inside " -"& outside the guide path" -msgstr "" +msgid "The amount of random jitter to move the start points of the stitches inside & outside the guide path" +msgstr "כמות התנודה האקראית להזזת את נקודות ההתחלה של התפרים מתוך ומחוץ לנתיב המנחה" #: ../src/live_effects/lpe-curvestitch.cpp:45 -#, fuzzy msgid "Start spacing variance" -msgstr "דחה הזמנה" +msgstr "התחל בשינוי הריווח" #: ../src/live_effects/lpe-curvestitch.cpp:45 -msgid "" -"The amount of random shifting to move the start points of the stitches back " -"& forth along the guide path" -msgstr "" +msgid "The amount of random shifting to move the start points of the stitches back & forth along the guide path" +msgstr "כמות התזוזה היחסית להזזת נקודות התחלת התפרים קדימה ואחורה לאורך הנתיב המנחה" #: ../src/live_effects/lpe-curvestitch.cpp:46 msgid "End edge variance" -msgstr "" +msgstr "סיום קצה השינוי" #: ../src/live_effects/lpe-curvestitch.cpp:46 -msgid "" -"The amount of randomness that moves the end points of the stitches inside & " -"outside the guide path" -msgstr "" +msgid "The amount of randomness that moves the end points of the stitches inside & outside the guide path" +msgstr "כמות האקראיות שמניעה את נקודות הסיום של התפרים מפנים ומחוץ לנתיב המנחה" #: ../src/live_effects/lpe-curvestitch.cpp:47 -#, fuzzy msgid "End spacing variance" -msgstr "דחה הזמנה" +msgstr "סיום שינוי הריווח" #: ../src/live_effects/lpe-curvestitch.cpp:47 -msgid "" -"The amount of random shifting to move the end points of the stitches back & " -"forth along the guide path" -msgstr "" +msgid "The amount of random shifting to move the end points of the stitches back & forth along the guide path" +msgstr "כמות האקראיות בהזזת נקודות הסיום של התפרים קדימה ואחורה לאורך הנתיב המנחה" #: ../src/live_effects/lpe-curvestitch.cpp:48 msgid "Scale width" -msgstr "" +msgstr "שינוי הרוחב" #: ../src/live_effects/lpe-curvestitch.cpp:48 msgid "Scale the width of the stitch path" -msgstr "" +msgstr "שינוי רוחב נתיב התפר" #: ../src/live_effects/lpe-curvestitch.cpp:49 msgid "Scale width relative to length" -msgstr "" +msgstr "שינוי הרוחב הינו יחסי לאורך" #: ../src/live_effects/lpe-curvestitch.cpp:49 msgid "Scale the width of the stitch path relative to its length" -msgstr "" +msgstr "שנה את רוחב נתיב התפר ביחס לאורכו" -#: ../src/live_effects/lpe-envelope.cpp:36 +#: ../src/live_effects/lpe-envelope.cpp:33 msgid "Top bend path" -msgstr "" +msgstr "נתיב הכיפוף העליון" -#: ../src/live_effects/lpe-envelope.cpp:36 +#: ../src/live_effects/lpe-envelope.cpp:33 msgid "Top path along which to bend the original path" -msgstr "" +msgstr "הנתיב העליון שלאורכו יכופף הנתיב המקורי" -#: ../src/live_effects/lpe-envelope.cpp:37 +#: ../src/live_effects/lpe-envelope.cpp:34 msgid "Right bend path" -msgstr "" +msgstr "נתיב הכיפוף הימני" -#: ../src/live_effects/lpe-envelope.cpp:37 +#: ../src/live_effects/lpe-envelope.cpp:34 msgid "Right path along which to bend the original path" -msgstr "" +msgstr "הנתיב הימני שלאורכו יכופף הנתיב המקורי" -#: ../src/live_effects/lpe-envelope.cpp:38 +#: ../src/live_effects/lpe-envelope.cpp:35 msgid "Bottom bend path" -msgstr "" +msgstr "נתיב הכיפוף התחתון" -#: ../src/live_effects/lpe-envelope.cpp:38 +#: ../src/live_effects/lpe-envelope.cpp:35 msgid "Bottom path along which to bend the original path" -msgstr "" +msgstr "הנתיב התחתון שלאורכו יכופף הנתיב המקורי" -#: ../src/live_effects/lpe-envelope.cpp:39 +#: ../src/live_effects/lpe-envelope.cpp:36 msgid "Left bend path" -msgstr "" +msgstr "נתיב הכיפוף השמאלי" -#: ../src/live_effects/lpe-envelope.cpp:39 +#: ../src/live_effects/lpe-envelope.cpp:36 msgid "Left path along which to bend the original path" -msgstr "" +msgstr "הנתיב השמאלי שלאורכו יכופף הנתיב המקורי" -#: ../src/live_effects/lpe-envelope.cpp:40 +#: ../src/live_effects/lpe-envelope.cpp:37 msgid "Enable left & right paths" -msgstr "" +msgstr "אפשר נתיבים ימניים ושמאליים" -#: ../src/live_effects/lpe-envelope.cpp:40 +#: ../src/live_effects/lpe-envelope.cpp:37 msgid "Enable the left and right deformation paths" -msgstr "" +msgstr "אפשר את נתיבי העיוות השמאלי והימני" -#: ../src/live_effects/lpe-envelope.cpp:41 +#: ../src/live_effects/lpe-envelope.cpp:38 msgid "Enable top & bottom paths" -msgstr "" +msgstr "אפשר נתיבים תחתונים ועליונים" -#: ../src/live_effects/lpe-envelope.cpp:41 +#: ../src/live_effects/lpe-envelope.cpp:38 msgid "Enable the top and bottom deformation paths" -msgstr "" +msgstr "אפשר את נתיבי העיוות העליון והתחתון" #: ../src/live_effects/lpe-gears.cpp:212 msgid "Teeth" -msgstr "" +msgstr "שיניים" #: ../src/live_effects/lpe-gears.cpp:212 msgid "The number of teeth" -msgstr "" +msgstr "מספר השיניים" #: ../src/live_effects/lpe-gears.cpp:213 msgid "Phi" -msgstr "" +msgstr "יחס הזהב" #: ../src/live_effects/lpe-gears.cpp:213 -msgid "" -"Tooth pressure angle (typically 20-25 deg). The ratio of teeth not in " -"contact." -msgstr "" +msgid "Tooth pressure angle (typically 20-25 deg). The ratio of teeth not in contact." +msgstr "זווית לחץ השן (לרב 20-25 מעלות). יחס השיניים שאינן במגע." + +#: ../src/live_effects/lpe-interpolate.cpp:30 +msgid "Trajectory" +msgstr "מסלול" + +#: ../src/live_effects/lpe-interpolate.cpp:30 +msgid "Path along which intermediate steps are created." +msgstr "נתיב שלאורכו יווצרו צעדים בינוניים." + +#: ../src/live_effects/lpe-interpolate.cpp:31 +#: ../src/ui/dialog/inkscape-preferences.cpp:203 +msgid "Steps" +msgstr "שלבים" + +#: ../src/live_effects/lpe-interpolate.cpp:31 +msgid "Determines the number of steps from start to end path." +msgstr "מציין את מספר הצעדים מההתחלה לסיום הנתיב." + +#: ../src/live_effects/lpe-interpolate.cpp:32 +msgid "Equidistant spacing" +msgstr "ריווח שווה מרחק" + +#: ../src/live_effects/lpe-interpolate.cpp:32 +msgid "If true, the spacing between intermediates is constant along the length of the path. If false, the distance depends on the location of the nodes of the trajectory path." +msgstr "במידה ונכון, הרווח שבין הקטעים האמצעיים לאורך הנתיב. במידה ושגוי, המרחק תלוי במיקום המפרקים של נתיב המסלול" #. initialise your parameters here: -#: ../src/live_effects/lpe-knot.cpp:27 +#: ../src/live_effects/lpe-knot.cpp:331 msgid "Gap width" -msgstr "" +msgstr "גודל המרווח" -#: ../src/live_effects/lpe-knot.cpp:27 +#: ../src/live_effects/lpe-knot.cpp:331 msgid "The width of the gap in the path where it self-intersects" -msgstr "" +msgstr "גודל המרוויח בנתיב במיקום בו הוא נפגש עם עצמו" + +#: ../src/live_effects/lpe-knot.cpp:332 +msgid "Switcher size" +msgstr "גודל המחליף" + +#: ../src/live_effects/lpe-knot.cpp:332 +msgid "Orientation indicator/switcher size" +msgstr "גודל מחוון/משנה הכיווניות" + +#: ../src/live_effects/lpe-knot.cpp:333 +msgid "Crossing Signs" +msgstr "סימני חצייה" + +#: ../src/live_effects/lpe-knot.cpp:333 +msgid "Crossings signs" +msgstr "סימני חציות" + +#: ../src/live_effects/lpe-knot.cpp:340 +msgid "Drag to select a crossing, click to flip it" +msgstr "גרור לבחירת חצייה, לחץ כדי להפוך אותה" #. initialise your parameters here: -#: ../src/live_effects/lpe-lattice.cpp:45 +#: ../src/live_effects/lpe-lattice.cpp:47 msgid "Control handle 0" -msgstr "" +msgstr "ידית שליטה 0" -#: ../src/live_effects/lpe-lattice.cpp:45 -#: ../src/live_effects/lpe-lattice.cpp:46 -#: ../src/live_effects/lpe-lattice.cpp:47 #: ../src/live_effects/lpe-lattice.cpp:48 -#: ../src/live_effects/lpe-lattice.cpp:49 -#: ../src/live_effects/lpe-lattice.cpp:50 -#: ../src/live_effects/lpe-lattice.cpp:51 -#: ../src/live_effects/lpe-lattice.cpp:52 -#: ../src/live_effects/lpe-lattice.cpp:53 -#: ../src/live_effects/lpe-lattice.cpp:54 -#: ../src/live_effects/lpe-lattice.cpp:55 -#: ../src/live_effects/lpe-lattice.cpp:56 -#: ../src/live_effects/lpe-lattice.cpp:57 -#: ../src/live_effects/lpe-lattice.cpp:58 -#: ../src/live_effects/lpe-lattice.cpp:59 -#: ../src/live_effects/lpe-lattice.cpp:60 -msgid "Tadah" -msgstr "" - -#: ../src/live_effects/lpe-lattice.cpp:46 msgid "Control handle 1" -msgstr "" +msgstr "ידית שליטה 1" -#: ../src/live_effects/lpe-lattice.cpp:47 +#: ../src/live_effects/lpe-lattice.cpp:49 msgid "Control handle 2" -msgstr "" +msgstr "ידית שליטה 2" -#: ../src/live_effects/lpe-lattice.cpp:48 +#: ../src/live_effects/lpe-lattice.cpp:50 msgid "Control handle 3" -msgstr "" +msgstr "ידית שליטה 3" -#: ../src/live_effects/lpe-lattice.cpp:49 +#: ../src/live_effects/lpe-lattice.cpp:51 msgid "Control handle 4" -msgstr "" +msgstr "ידית שליטה 4" -#: ../src/live_effects/lpe-lattice.cpp:50 +#: ../src/live_effects/lpe-lattice.cpp:52 msgid "Control handle 5" -msgstr "" +msgstr "ידית שליטה 5" -#: ../src/live_effects/lpe-lattice.cpp:51 +#: ../src/live_effects/lpe-lattice.cpp:53 msgid "Control handle 6" -msgstr "" +msgstr "ידית שליטה 6" -#: ../src/live_effects/lpe-lattice.cpp:52 +#: ../src/live_effects/lpe-lattice.cpp:54 msgid "Control handle 7" -msgstr "" +msgstr "ידית שליטה 7" -#: ../src/live_effects/lpe-lattice.cpp:53 +#: ../src/live_effects/lpe-lattice.cpp:55 msgid "Control handle 8" -msgstr "" +msgstr "ידית שליטה 8" -#: ../src/live_effects/lpe-lattice.cpp:54 +#: ../src/live_effects/lpe-lattice.cpp:56 msgid "Control handle 9" -msgstr "" +msgstr "ידית שליטה 9" -#: ../src/live_effects/lpe-lattice.cpp:55 +#: ../src/live_effects/lpe-lattice.cpp:57 msgid "Control handle 10" -msgstr "" +msgstr "ידית שליטה 10" -#: ../src/live_effects/lpe-lattice.cpp:56 +#: ../src/live_effects/lpe-lattice.cpp:58 msgid "Control handle 11" -msgstr "" +msgstr "ידית שליטה 11" -#: ../src/live_effects/lpe-lattice.cpp:57 +#: ../src/live_effects/lpe-lattice.cpp:59 msgid "Control handle 12" -msgstr "" +msgstr "ידית שליטה 12" -#: ../src/live_effects/lpe-lattice.cpp:58 +#: ../src/live_effects/lpe-lattice.cpp:60 msgid "Control handle 13" -msgstr "" +msgstr "ידית שליטה 13" -#: ../src/live_effects/lpe-lattice.cpp:59 +#: ../src/live_effects/lpe-lattice.cpp:61 msgid "Control handle 14" -msgstr "" +msgstr "ידית שליטה 14" -#: ../src/live_effects/lpe-lattice.cpp:60 +#: ../src/live_effects/lpe-lattice.cpp:62 msgid "Control handle 15" -msgstr "" +msgstr "ידית שליטה 15" -#: ../src/live_effects/lpe-mirror_reflect.cpp:30 +#: ../src/live_effects/lpe-line_segment.cpp:27 +#: ../src/widgets/toolbox.cpp:5045 +msgid "Closed" +msgstr "סגור" + +#: ../src/live_effects/lpe-line_segment.cpp:28 +#: ../src/widgets/toolbox.cpp:5047 +msgid "Open start" +msgstr "התחלה פתוחה" + +#: ../src/live_effects/lpe-line_segment.cpp:29 +#: ../src/widgets/toolbox.cpp:5049 +msgid "Open end" +msgstr "סוף פתוח" + +#: ../src/live_effects/lpe-line_segment.cpp:30 +#: ../src/widgets/toolbox.cpp:5051 +msgid "Open both" +msgstr "פתח את שניהם" + +#: ../src/live_effects/lpe-line_segment.cpp:36 +msgid "End type" +msgstr "סוג הסיום" + +#: ../src/live_effects/lpe-line_segment.cpp:36 +msgid "Determines on which side the line or line segment is infinite." +msgstr "מציין באיזה צד הקו או מקטע הקו הינו אינסופי." + +#: ../src/live_effects/lpe-mirror_symmetry.cpp:30 +msgid "Discard original path?" +msgstr "להתעלם מהנתיב המקורי?" + +#: ../src/live_effects/lpe-mirror_symmetry.cpp:30 +msgid "Check this to only keep the mirrored part of the path" +msgstr "סמן זאת כדי להשאיר רק את החלק המשתקף של הנתיב" + +#: ../src/live_effects/lpe-mirror_symmetry.cpp:31 msgid "Reflection line" -msgstr "" +msgstr "קו השתקפות" -#: ../src/live_effects/lpe-mirror_reflect.cpp:30 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:31 msgid "Line which serves as 'mirror' for the reflection" -msgstr "" +msgstr "קו המהוה מעין 'מראה' עבור ההשתקפות" + +#: ../src/live_effects/lpe-offset.cpp:30 +msgid "Handle to control the distance of the offset from the curve" +msgstr "ידית לשליטה במרחק בין הקיזוז לעקומה" + +#: ../src/live_effects/lpe-parallel.cpp:46 +msgid "Adjust the offset" +msgstr "הגדר את הקיזוז" + +#: ../src/live_effects/lpe-parallel.cpp:47 +msgid "Specifies the left end of the parallel" +msgstr "מגדיר את הסוף השמאלי של המקביל" + +#: ../src/live_effects/lpe-parallel.cpp:48 +msgid "Specifies the right end of the parallel" +msgstr "מציין את הסוף הימני של המקביל" + +#: ../src/live_effects/lpe-parallel.cpp:56 +msgid "Adjust the \"left\" end of the parallel" +msgstr "הגדר את הסוף \"השמאלי\" של המקביל" + +#: ../src/live_effects/lpe-parallel.cpp:57 +msgid "Adjust the \"right\" end of the parallel" +msgstr "הגדר את הסוף \"הימני\" של המקביל" + +#: ../src/live_effects/lpe-path_length.cpp:25 +#: ../src/live_effects/lpe-sketch.cpp:54 +#: ../src/selection-chemistry.cpp:1478 +#: ../src/seltrans.cpp:448 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2249 +#: ../src/ui/dialog/transformation.cpp:738 +msgid "Scale" +msgstr "התאם מידות" -#: ../src/live_effects/lpe-patternalongpath.cpp:53 +#: ../src/live_effects/lpe-path_length.cpp:25 +msgid "Scaling factor" +msgstr "מקדם שינוי גודל" + +#: ../src/live_effects/lpe-path_length.cpp:28 +msgid "Display unit" +msgstr "הצג יחידות" + +#: ../src/live_effects/lpe-path_length.cpp:28 +msgid "Print unit after path length" +msgstr "הטבע את היחידות לאחר אורך הנתיב" + +#: ../src/live_effects/lpe-patternalongpath.cpp:52 #: ../share/extensions/pathalongpath.inx.h:11 msgid "Single" -msgstr "" +msgstr "יחיד" -#: ../src/live_effects/lpe-patternalongpath.cpp:54 +#: ../src/live_effects/lpe-patternalongpath.cpp:53 #: ../share/extensions/pathalongpath.inx.h:12 msgid "Single, stretched" -msgstr "" +msgstr "יחיד, מתוח" -#: ../src/live_effects/lpe-patternalongpath.cpp:55 +#: ../src/live_effects/lpe-patternalongpath.cpp:54 #: ../share/extensions/pathalongpath.inx.h:8 msgid "Repeated" -msgstr "" +msgstr "חוזר ונשנה" -#: ../src/live_effects/lpe-patternalongpath.cpp:56 +#: ../src/live_effects/lpe-patternalongpath.cpp:55 #: ../share/extensions/pathalongpath.inx.h:9 msgid "Repeated, stretched" -msgstr "" +msgstr "חוזר ונשנה, מתוח" -#: ../src/live_effects/lpe-patternalongpath.cpp:62 +#: ../src/live_effects/lpe-patternalongpath.cpp:61 msgid "Pattern source" -msgstr "" +msgstr "מקור התבנית" -#: ../src/live_effects/lpe-patternalongpath.cpp:62 +#: ../src/live_effects/lpe-patternalongpath.cpp:61 msgid "Path to put along the skeleton path" -msgstr "" +msgstr "נתיב להצבה לאורך נתיב השלד" -#: ../src/live_effects/lpe-patternalongpath.cpp:63 +#: ../src/live_effects/lpe-patternalongpath.cpp:62 msgid "Pattern copies" -msgstr "" +msgstr "עותקי תבנית" -#: ../src/live_effects/lpe-patternalongpath.cpp:63 +#: ../src/live_effects/lpe-patternalongpath.cpp:62 msgid "How many pattern copies to place along the skeleton path" -msgstr "" +msgstr "כמה עותקים מהתבנית יש להציב לאורך נתיב השלד" -#: ../src/live_effects/lpe-patternalongpath.cpp:64 +#: ../src/live_effects/lpe-patternalongpath.cpp:63 msgid "Width of the pattern" -msgstr "" +msgstr "רוחב התבנית" -#: ../src/live_effects/lpe-patternalongpath.cpp:65 +#: ../src/live_effects/lpe-patternalongpath.cpp:64 msgid "Scale the width of the pattern in units of its length" -msgstr "" +msgstr "שנה את רוחב התבנית ביחידות של אורכו" -#: ../src/live_effects/lpe-patternalongpath.cpp:66 +#: ../src/live_effects/lpe-patternalongpath.cpp:65 msgid "Spacing" msgstr "ריווח" -#: ../src/live_effects/lpe-patternalongpath.cpp:66 +#: ../src/live_effects/lpe-patternalongpath.cpp:65 #, c-format -msgid "" -"Space between copies of the pattern. Negative values allowed, but are " -"limited to -90% of pattern width." +msgid "Space between copies of the pattern. Negative values allowed, but are limited to -90% of pattern width." msgstr "" -#: ../src/live_effects/lpe-patternalongpath.cpp:67 +#: ../src/live_effects/lpe-patternalongpath.cpp:66 #: ../share/extensions/pathalongpath.inx.h:5 #: ../share/extensions/pathscatter.inx.h:7 msgid "Normal offset" -msgstr "היסט רגיל" +msgstr "קיזוז רגיל" -#: ../src/live_effects/lpe-patternalongpath.cpp:68 +#: ../src/live_effects/lpe-patternalongpath.cpp:67 #: ../share/extensions/pathalongpath.inx.h:15 #: ../share/extensions/pathscatter.inx.h:13 msgid "Tangential offset" -msgstr "היסט משיק" +msgstr "קיזוז משיק" -#: ../src/live_effects/lpe-patternalongpath.cpp:69 +#: ../src/live_effects/lpe-patternalongpath.cpp:68 msgid "Offsets in unit of pattern size" -msgstr "" +msgstr "קיזוזים ביחידת גודל התבנית" -#: ../src/live_effects/lpe-patternalongpath.cpp:69 -msgid "" -"Spacing, tangential and normal offset are expressed as a ratio of width/" -"height" -msgstr "" +#: ../src/live_effects/lpe-patternalongpath.cpp:68 +msgid "Spacing, tangential and normal offset are expressed as a ratio of width/height" +msgstr "קיזוזי ריווח, משיקיים ורגילים מבוטאים כיחס רוחב/גובה" -#: ../src/live_effects/lpe-patternalongpath.cpp:70 +#: ../src/live_effects/lpe-patternalongpath.cpp:69 #: ../share/extensions/pathalongpath.inx.h:7 #: ../share/extensions/pathscatter.inx.h:9 msgid "Pattern is vertical" -msgstr "" +msgstr "התבנית אנכית" -#: ../src/live_effects/lpe-patternalongpath.cpp:70 +#: ../src/live_effects/lpe-patternalongpath.cpp:69 msgid "Rotate pattern 90 deg before applying" -msgstr "" - -#: ../src/live_effects/lpe-perp_bisector.cpp:156 -#: ../src/live_effects/lpe-tangent_to_curve.cpp:65 -#, fuzzy -msgid "Length left" -msgstr "אורך:" +msgstr "סובב את התבנית ב־90 מעלות לפני ההחלה" -#: ../src/live_effects/lpe-perp_bisector.cpp:156 -msgid "Specifies the left end of the bisector" -msgstr "" - -#: ../src/live_effects/lpe-perp_bisector.cpp:157 -#: ../src/live_effects/lpe-tangent_to_curve.cpp:66 -#, fuzzy -msgid "Length right" -msgstr "אורך:" - -#: ../src/live_effects/lpe-perp_bisector.cpp:157 -msgid "Specifies the right end of the bisector" -msgstr "" - -#: ../src/live_effects/lpe-perp_bisector.cpp:164 -msgid "Lala" -msgstr "" +#: ../src/live_effects/lpe-perp_bisector.cpp:113 +msgid "Adjust the bisector's \"left\" end" +msgstr "הגדר את הסוף \"השמאלי\" של המחבר" -#: ../src/live_effects/lpe-perp_bisector.cpp:165 -msgid "Lolo" -msgstr "" +#: ../src/live_effects/lpe-perp_bisector.cpp:114 +msgid "Adjust the bisector's \"right\" end" +msgstr "הגדר את הסוף \"הימני\" של המחבר" #. initialise your parameters here: -#: ../src/live_effects/lpe-perspective_path.cpp:42 -#, fuzzy +#: ../src/live_effects/lpe-perspective_path.cpp:52 msgid "Scale x" -msgstr "צורות" +msgstr "התאמת מידות x" -#: ../src/live_effects/lpe-perspective_path.cpp:42 +#: ../src/live_effects/lpe-perspective_path.cpp:52 msgid "Scale factor in x direction" -msgstr "" +msgstr "מקדם שינוי הגודל בכיוון ה־x" -#: ../src/live_effects/lpe-perspective_path.cpp:43 -#, fuzzy +#: ../src/live_effects/lpe-perspective_path.cpp:53 msgid "Scale y" -msgstr "צורות" +msgstr "התאמת מידות y" -#: ../src/live_effects/lpe-perspective_path.cpp:43 +#: ../src/live_effects/lpe-perspective_path.cpp:53 msgid "Scale factor in y direction" -msgstr "" +msgstr "מקדם שינוי הגודל בכיוון ה־y" -#: ../src/live_effects/lpe-perspective_path.cpp:44 -#, fuzzy +#: ../src/live_effects/lpe-perspective_path.cpp:54 msgid "Offset x" -msgstr "היסט" +msgstr "קיזוז x" -#: ../src/live_effects/lpe-perspective_path.cpp:44 +#: ../src/live_effects/lpe-perspective_path.cpp:54 msgid "Offset in x direction" -msgstr "" +msgstr "הקיזוז בכיוון ה־X" -#: ../src/live_effects/lpe-perspective_path.cpp:45 -#, fuzzy +#: ../src/live_effects/lpe-perspective_path.cpp:55 msgid "Offset y" -msgstr "היסט" +msgstr "קיזוז y" -#: ../src/live_effects/lpe-perspective_path.cpp:45 +#: ../src/live_effects/lpe-perspective_path.cpp:55 msgid "Offset in y direction" -msgstr "" +msgstr "הקיזוז בכיוון ה־X" -#: ../src/live_effects/lpe-perspective_path.cpp:46 +#: ../src/live_effects/lpe-perspective_path.cpp:56 msgid "Uses XY plane?" -msgstr "" +msgstr "להשתמש במשטח XY?" -#: ../src/live_effects/lpe-perspective_path.cpp:46 -msgid "" -"If true, put the path on the left side of an imaginary box, otherwise on the " -"right side" -msgstr "" +#: ../src/live_effects/lpe-perspective_path.cpp:56 +msgid "If true, put the path on the left side of an imaginary box, otherwise on the right side" +msgstr "במידה ונכון, שים את הנתיב על הצד השמאלי של תיבה דמיונית, אחרת בצד הימני" + +#: ../src/live_effects/lpe-perspective_path.cpp:65 +msgid "Adjust the origin" +msgstr "הגדר את המקור" + +#: ../src/live_effects/lpe-ruler.cpp:27 +#: ../share/extensions/restack.inx.h:7 +msgid "Left" +msgstr "שמאל" + +#: ../src/live_effects/lpe-ruler.cpp:28 +#: ../share/extensions/restack.inx.h:14 +msgid "Right" +msgstr "ימין" + +#: ../src/live_effects/lpe-ruler.cpp:29 +#: ../src/live_effects/lpe-ruler.cpp:37 +msgid "Both" +msgstr "שניהם" + +#: ../src/live_effects/lpe-ruler.cpp:35 +#: ../src/widgets/toolbox.cpp:4704 +msgid "Start" +msgstr "התחלה" + +#: ../src/live_effects/lpe-ruler.cpp:36 +#: ../src/widgets/toolbox.cpp:4717 +msgid "End" +msgstr "סוף" + +#: ../src/live_effects/lpe-ruler.cpp:43 +msgid "Mark distance" +msgstr "המרחק המסומן" + +#: ../src/live_effects/lpe-ruler.cpp:43 +msgid "Distance between successive ruler marks" +msgstr "מרחק בין שני סמני סרגל בהמשכים" + +#: ../src/live_effects/lpe-ruler.cpp:44 +msgid "Major length" +msgstr "אורך עיקרי" + +#: ../src/live_effects/lpe-ruler.cpp:44 +msgid "Length of major ruler marks" +msgstr "המרחק בין הסימנים הראשיים של הסרגל" + +#: ../src/live_effects/lpe-ruler.cpp:45 +msgid "Minor length" +msgstr "אורך משני" + +#: ../src/live_effects/lpe-ruler.cpp:45 +msgid "Length of minor ruler marks" +msgstr "המרחק בין הסימנים המשניים של הסרגל" + +#: ../src/live_effects/lpe-ruler.cpp:46 +msgid "Major steps" +msgstr "צעדים ראשיים" + +#: ../src/live_effects/lpe-ruler.cpp:46 +msgid "Draw a major mark every ... steps" +msgstr "צייר סימן ראשי כל ... צעדים" + +#: ../src/live_effects/lpe-ruler.cpp:47 +msgid "Shift marks by" +msgstr "הזז את הסימנים ב־" + +#: ../src/live_effects/lpe-ruler.cpp:47 +msgid "Shift marks by this many steps" +msgstr "הזז את הסימנים בכמות צעדים זאת" + +#: ../src/live_effects/lpe-ruler.cpp:48 +msgid "Mark direction" +msgstr "כיוון הסימן" + +#: ../src/live_effects/lpe-ruler.cpp:48 +msgid "Direction of marks (when viewing along the path from start to end)" +msgstr "כיוון הסמנים (בעת הצפיה לאורך הנתיב מההתחלה ועד הסוף)" + +#: ../src/live_effects/lpe-ruler.cpp:49 +msgid "Offset of first mark" +msgstr "קיזוז הסמן הראשון" + +#: ../src/live_effects/lpe-ruler.cpp:50 +msgid "Border marks" +msgstr "סימני הגבול" + +#: ../src/live_effects/lpe-ruler.cpp:50 +msgid "Choose whether to draw marks at the beginning and end of the path" +msgstr "בחר האם לצייר סמנים בתחילת ובסוף הנתיב" #. initialise your parameters here: #: ../src/live_effects/lpe-skeleton.cpp:33 msgid "Float parameter" -msgstr "" +msgstr "פרמטר ציפה" #: ../src/live_effects/lpe-skeleton.cpp:33 msgid "just a real number like 1.4!" -msgstr "" +msgstr "פשוט מספרים אמיתיים כמו 1.4!" #. initialise your parameters here: #. testpointA(_("Test Point A"), _("Test A"), "ptA", &wr, this, Geom::Point(100,100)), #: ../src/live_effects/lpe-sketch.cpp:35 -#, fuzzy msgid "Strokes" -msgstr "שלבים" +msgstr "קוי מתאר" #: ../src/live_effects/lpe-sketch.cpp:35 msgid "Draw that many approximating strokes" -msgstr "" +msgstr "צייר כמות זו של קוי מתאר משוערכים" #: ../src/live_effects/lpe-sketch.cpp:36 msgid "Max stroke length" -msgstr "" +msgstr "גודל המתאר המרבי" #: ../src/live_effects/lpe-sketch.cpp:37 msgid "Maximum length of approximating strokes" -msgstr "" +msgstr "אורך קוי המתאר המוערכים המרבי" #: ../src/live_effects/lpe-sketch.cpp:38 msgid "Stroke length variation" -msgstr "" +msgstr "שינוי באורך קו המתאר" #: ../src/live_effects/lpe-sketch.cpp:39 msgid "Random variation of stroke length (relative to maximum length)" -msgstr "" +msgstr "שינוי אקראי של אורך קו המתאר (ביחס לאורך המרבי)" #: ../src/live_effects/lpe-sketch.cpp:40 msgid "Max. overlap" -msgstr "" +msgstr "חפיפה מרבית" #: ../src/live_effects/lpe-sketch.cpp:41 -msgid "" -"How much successive strokes should overlap (relative to maximum length)." -msgstr "" +msgid "How much successive strokes should overlap (relative to maximum length)" +msgstr "כמה קוי מתאר רציפים אמורים לחפוף (ביחס לאורך המרבי)" #: ../src/live_effects/lpe-sketch.cpp:42 msgid "Overlap variation" -msgstr "" +msgstr "שינוי החפיפה" #: ../src/live_effects/lpe-sketch.cpp:43 msgid "Random variation of overlap (relative to maximum overlap)" -msgstr "" +msgstr "שינוי אקראי של החפיפה (ביחס לחפיפה המרבית)" #: ../src/live_effects/lpe-sketch.cpp:44 msgid "Max. end tolerance" -msgstr "" +msgstr "סבילות סוף מרבית" #: ../src/live_effects/lpe-sketch.cpp:45 -msgid "" -"Maximum distance between ends of original and approximating paths (relative " -"to maximum length)" -msgstr "" +msgid "Maximum distance between ends of original and approximating paths (relative to maximum length)" +msgstr "המרחק המרבי בין סופי הנתיבים הרגיל והמשוערך (ביחס לאורך המרבי)" #: ../src/live_effects/lpe-sketch.cpp:46 -#, fuzzy msgid "Parallel offset" -msgstr "היסט רגיל" +msgstr "קיזוז מקבילי" #: ../src/live_effects/lpe-sketch.cpp:47 msgid "Average distance from approximating path to original path" -msgstr "" +msgstr "המרחק הממוצע בין הנתיב המשוערך לנתיב המקורי" #: ../src/live_effects/lpe-sketch.cpp:48 msgid "Max. tremble" -msgstr "" +msgstr "רטט מרבי" #: ../src/live_effects/lpe-sketch.cpp:49 msgid "Maximum tremble magnitude" -msgstr "" +msgstr "משיכת הרטט המרבית" #: ../src/live_effects/lpe-sketch.cpp:50 msgid "Tremble frequency" -msgstr "" +msgstr "תדירות הרטט" #: ../src/live_effects/lpe-sketch.cpp:51 -msgid "Avreage number of tremble periods in an approximating stroke" -msgstr "" +msgid "Average number of tremble periods in an approximating stroke" +msgstr "המספר הממוצע של נקודות רטט בקו מתאר משוערך" #: ../src/live_effects/lpe-sketch.cpp:52 msgid "Construction lines" -msgstr "" +msgstr "קווי בניה" #: ../src/live_effects/lpe-sketch.cpp:53 msgid "How many construction lines (tangents) to draw" -msgstr "" - -#: ../src/live_effects/lpe-sketch.cpp:54 ../src/selection-chemistry.cpp:1450 -#: ../src/seltrans.cpp:454 ../src/ui/dialog/filter-effects-dialog.cpp:2235 -#: ../src/ui/dialog/transformation.cpp:736 -msgid "Scale" -msgstr "" +msgstr "כמה קווי בנייה (משיקים) לצייר" #: ../src/live_effects/lpe-sketch.cpp:55 -msgid "" -"Scale factor relating curvature and length of construction lines (try " -"5*offset)" -msgstr "" +msgid "Scale factor relating curvature and length of construction lines (try 5*offset)" +msgstr "מקדם שינוי גודל ביחס לעקמומית ואורך קווי הבנייה (נסה 5*קיזוז)" #: ../src/live_effects/lpe-sketch.cpp:56 -#, fuzzy msgid "Max. length" -msgstr "אורך גל" +msgstr "האורך המרבי" #: ../src/live_effects/lpe-sketch.cpp:56 msgid "Maximum length of construction lines" -msgstr "" +msgstr "האורך המרבי של קווי הבנייה" #: ../src/live_effects/lpe-sketch.cpp:57 -#, fuzzy msgid "Length variation" -msgstr "קבל הזמנה" +msgstr "שינוי האורך" #: ../src/live_effects/lpe-sketch.cpp:57 msgid "Random variation of the length of construction lines" -msgstr "" +msgstr "שינוי אקראי באורך קווי הבנייה" -#: ../src/live_effects/lpe-tangent_to_curve.cpp:63 -#: ../share/extensions/motion.inx.h:1 ../share/extensions/restack.inx.h:1 +#: ../src/live_effects/lpe-tangent_to_curve.cpp:56 +#: ../share/extensions/motion.inx.h:1 +#: ../share/extensions/restack.inx.h:1 msgid "Angle" -msgstr "" +msgstr "זווית" -#: ../src/live_effects/lpe-tangent_to_curve.cpp:63 +#: ../src/live_effects/lpe-tangent_to_curve.cpp:56 msgid "Additional angle between tangent and curve" -msgstr "" +msgstr "זווית נוספת בין משיק ועיקול" -#: ../src/live_effects/lpe-tangent_to_curve.cpp:64 +#: ../src/live_effects/lpe-tangent_to_curve.cpp:57 msgid "Location along curve" -msgstr "" +msgstr "מיקום לאורך העיקול" -#: ../src/live_effects/lpe-tangent_to_curve.cpp:64 -msgid "" -"Location of the point of attachment along the curve (between 0.0 and number-" -"of-segments)" -msgstr "" +#: ../src/live_effects/lpe-tangent_to_curve.cpp:57 +msgid "Location of the point of attachment along the curve (between 0.0 and number-of-segments)" +msgstr "מיקום נקודת ההצמדה לאורך העיקול (בין 0.0 ומספר־המקטעים)" -#: ../src/live_effects/lpe-tangent_to_curve.cpp:65 +#: ../src/live_effects/lpe-tangent_to_curve.cpp:58 msgid "Specifies the left end of the tangent" -msgstr "" +msgstr "מציין את הצד השמאלי של המשיק" -#: ../src/live_effects/lpe-tangent_to_curve.cpp:66 +#: ../src/live_effects/lpe-tangent_to_curve.cpp:59 msgid "Specifies the right end of the tangent" -msgstr "" +msgstr "מציין את הצד הימני של המשיק" + +#: ../src/live_effects/lpe-tangent_to_curve.cpp:68 +msgid "Adjust the point of attachment of the tangent" +msgstr "הגדר את נקודת ההצמדה של המשיק" -#: ../src/live_effects/lpe-tangent_to_curve.cpp:73 +#: ../src/live_effects/lpe-tangent_to_curve.cpp:69 msgid "Adjust the \"left\" end of the tangent" -msgstr "" +msgstr "התאם את הסוף \"השמאלי\" של המשיק" -#: ../src/live_effects/lpe-tangent_to_curve.cpp:74 +#: ../src/live_effects/lpe-tangent_to_curve.cpp:70 msgid "Adjust the \"right\" end of the tangent" -msgstr "" +msgstr "הגדר את הצד \"הימני\" של המשיק" -#: ../src/live_effects/lpe-tangent_to_curve.cpp:75 -msgid "Adjust the point of attachment of the tangent" -msgstr "" +#: ../src/live_effects/lpe-test-doEffect-stack.cpp:22 +msgid "Stack step" +msgstr "ערימת פסיעות" #: ../src/live_effects/lpe-test-doEffect-stack.cpp:23 -msgid "Stack step" -msgstr "" +msgid "point param" +msgstr "משתנה נקודה" #: ../src/live_effects/lpe-test-doEffect-stack.cpp:24 -msgid "point param" -msgstr "" +msgid "path param" +msgstr "משתנה נתיב" -#: ../src/live_effects/lpe-vonkoch.cpp:42 -msgid "Bounding box" -msgstr "" +#: ../src/live_effects/lpe-text_label.cpp:22 +msgid "Label" +msgstr "תווית" -#: ../src/live_effects/lpe-vonkoch.cpp:43 -msgid "Last gen. segment" -msgstr "" +#: ../src/live_effects/lpe-text_label.cpp:22 +msgid "Text label attached to the path" +msgstr "תווית טקסט המוצמדת לנתיב" -#: ../src/live_effects/lpe-vonkoch.cpp:49 -msgid "Nb of generations" -msgstr "" +#: ../src/live_effects/lpe-vonkoch.cpp:47 +msgid "Reference segment" +msgstr "מקטע הפניה" -#: ../src/live_effects/lpe-vonkoch.cpp:49 -msgid "Depth of the recursion --- keep low!!" -msgstr "" +#: ../src/live_effects/lpe-vonkoch.cpp:47 +msgid "The reference segment. Defaults to bbox diameter." +msgstr "מקטע ההפנייה. ברירות המחדל לקוטר bbox." +#. refA(_("Ref Start"), _("Left side middle of the reference box"), "refA", &wr, this), +#. refB(_("Ref End"), _("Right side middle of the reference box"), "refB", &wr, this), #: ../src/live_effects/lpe-vonkoch.cpp:50 msgid "Generating path" -msgstr "" +msgstr "מייצר נתיב" #: ../src/live_effects/lpe-vonkoch.cpp:50 -msgid "Path whos segments define the fractal" -msgstr "" +msgid "Path whose segments define the iterated transforms" +msgstr "נתיב שמקטעיו מגדירים את ההמרות החוזרות" #: ../src/live_effects/lpe-vonkoch.cpp:51 -msgid "Draw all generations" -msgstr "" +msgid "Use uniform transforms only" +msgstr "השתמש בהמרות אחידות בלבד" #: ../src/live_effects/lpe-vonkoch.cpp:51 -msgid "If unchecked, draw only the last generation" -msgstr "" +msgid "2 consecutive segments are used to reverse/preserve orientation only (otherwise, they define a general transform)." +msgstr "2 מקטעים רציפים משמשים להפיכת/שימור הכיוון בלבד (אחרת, הם מגדירים המרה כללית)." #: ../src/live_effects/lpe-vonkoch.cpp:52 -msgid "Reference" -msgstr "" +msgid "Nb of generations" +msgstr "מספר יצירות" #: ../src/live_effects/lpe-vonkoch.cpp:52 -msgid "" -"Generating path segments define transforms in reference to bbox or last " -"segment" -msgstr "" +msgid "Depth of the recursion --- keep low!!" +msgstr "עומק החזרה --- השאר נמוך!!" #: ../src/live_effects/lpe-vonkoch.cpp:53 -msgid "Max complexity" -msgstr "" +msgid "Draw all generations" +msgstr "צייר את כל התוצרים" #: ../src/live_effects/lpe-vonkoch.cpp:53 +msgid "If unchecked, draw only the last generation" +msgstr "במידה ולא מסומן, יצוייר רק התוצר האחרון" + +#. FIXME: a path is used here instead of 2 points to work around path/point param incompatibility bug. +#: ../src/live_effects/lpe-vonkoch.cpp:55 +msgid "Max complexity" +msgstr "מורכבות מרבית" + +#: ../src/live_effects/lpe-vonkoch.cpp:55 msgid "Disable effect if the output is too complex" -msgstr "" +msgstr "בטל את האפקט אם הפלט מורכב מדי" #: ../src/live_effects/parameter/bool.cpp:69 msgid "Change bool parameter" -msgstr "" +msgstr "שנה את הפרמטר הבוליאני" -#: ../src/live_effects/parameter/enum.h:51 +#: ../src/live_effects/parameter/enum.h:50 msgid "Change enumeration parameter" -msgstr "" +msgstr "שנה את פרמטר הספירה" #: ../src/live_effects/parameter/parameter.cpp:138 msgid "Change scalar parameter" -msgstr "" +msgstr "שנה את פרמטר שינוי הגודל" -#: ../src/live_effects/parameter/path.cpp:157 -#: ../src/live_effects/parameter/point.cpp:110 +#: ../src/live_effects/parameter/path.cpp:158 msgid "Edit on-canvas" -msgstr "" +msgstr "ערוך על לוח הציור" -#: ../src/live_effects/parameter/path.cpp:167 +#: ../src/live_effects/parameter/path.cpp:168 msgid "Copy path" -msgstr "" +msgstr "העתק נתיב" -#: ../src/live_effects/parameter/path.cpp:177 +#: ../src/live_effects/parameter/path.cpp:178 msgid "Paste path" -msgstr "" +msgstr "הדבק נתיב" -#: ../src/live_effects/parameter/path.cpp:187 +#: ../src/live_effects/parameter/path.cpp:188 msgid "Link to path" -msgstr "" +msgstr "קשר לנתיב" -#: ../src/live_effects/parameter/path.cpp:363 +#: ../src/live_effects/parameter/path.cpp:409 msgid "Paste path parameter" -msgstr "" +msgstr "הדבק את הפרמטרים של הנתיב" -#: ../src/live_effects/parameter/path.cpp:395 +#: ../src/live_effects/parameter/path.cpp:441 msgid "Link path parameter to path" -msgstr "" +msgstr "קשר את פרמטר הנתיב לנתיב" -#: ../src/live_effects/parameter/point.cpp:95 +#: ../src/live_effects/parameter/point.cpp:91 msgid "Change point parameter" -msgstr "" +msgstr "שנה את פרמטר הנקודה" #: ../src/live_effects/parameter/pointparam-knotholder.cpp:134 msgid "Change LPE point parameter" -msgstr "" +msgstr "שנה את פרמטר נקודת אפקט הנתיב החי" #: ../src/live_effects/parameter/random.cpp:137 msgid "Change random parameter" -msgstr "" +msgstr "שנה פרמטר אקראי" + +#: ../src/live_effects/parameter/text.cpp:100 +msgid "Change text parameter" +msgstr "שנה את פרמטר הטקסט" + +#: ../src/live_effects/parameter/unit.cpp:77 +msgid "Change unit parameter" +msgstr "שנה את פרמטר היחידה" + +#: ../src/lpe-tool-context.cpp:271 +msgid "Choose a construction tool from the toolbar." +msgstr "בחר כלי בנייה מסרגל הכלים." #: ../src/main-cmdlineact.cpp:49 #, c-format msgid "Unable to find verb ID '%s' specified on the command line.\n" -msgstr "" +msgstr "לא ניתן למצוא את מזהה הפועל המצויין '%s' בשורת הפקודה.\n" #: ../src/main-cmdlineact.cpp:61 #, c-format msgid "Unable to find node ID: '%s'\n" -msgstr "" +msgstr "לא ניתן למצוא את מזהה המפרק: '%s'\n" -#: ../src/main.cpp:218 +#: ../src/main.cpp:257 msgid "Print the Inkscape version number" -msgstr "" +msgstr "הדפס את גירסת האינקסקייפ" -#: ../src/main.cpp:223 +#: ../src/main.cpp:262 msgid "Do not use X server (only process files from console)" -msgstr "" +msgstr "אל תשתמש בשרת X (עבד קבצים מהמסוף בלבד)" -#: ../src/main.cpp:228 +#: ../src/main.cpp:267 msgid "Try to use X server (even if $DISPLAY is not set)" -msgstr "" +msgstr "נסה להשתמש בשרת ה־X (אפילו אם DISPLAY אינו מוגדר)" -#: ../src/main.cpp:233 +#: ../src/main.cpp:272 msgid "Open specified document(s) (option string may be excluded)" -msgstr "" +msgstr "פתח את המסמך/ים שצויין/ו (ניתן לוותר על מחרוזת אפשרויות)" -#: ../src/main.cpp:234 ../src/main.cpp:239 ../src/main.cpp:244 -#: ../src/main.cpp:311 ../src/main.cpp:316 ../src/main.cpp:321 -#: ../src/main.cpp:326 ../src/main.cpp:332 +#: ../src/main.cpp:273 +#: ../src/main.cpp:278 +#: ../src/main.cpp:283 +#: ../src/main.cpp:350 +#: ../src/main.cpp:355 +#: ../src/main.cpp:360 +#: ../src/main.cpp:365 +#: ../src/main.cpp:371 msgid "FILENAME" -msgstr "" +msgstr "שם הקובץ" -#: ../src/main.cpp:238 +#: ../src/main.cpp:277 msgid "Print document(s) to specified output file (use '| program' for pipe)" -msgstr "" +msgstr "הדפס מסמך/ים לקובץ פלט מוגדר (השתמש ב־'| program' לצורך ניתוב)" -#: ../src/main.cpp:243 +#: ../src/main.cpp:282 msgid "Export document to a PNG file" -msgstr "" +msgstr "ייצא את המסמך לקובץ PNG" -#: ../src/main.cpp:248 +#: ../src/main.cpp:287 msgid "The resolution used for exporting SVG into bitmap (default 90)" -msgstr "" +msgstr "הרזולוציה שתשמש את קובץ מפת הסיביות שייוצא מה־SVG (ברירת מחדל 90)" -#: ../src/main.cpp:249 ../src/ui/widget/rendering-options.cpp:43 +#: ../src/main.cpp:288 +#: ../src/ui/widget/rendering-options.cpp:43 msgid "DPI" -msgstr "" +msgstr "DPI" -#: ../src/main.cpp:253 -msgid "" -"Exported area in SVG user units (default is the canvas; 0,0 is lower-left " -"corner)" -msgstr "" +#: ../src/main.cpp:292 +msgid "Exported area in SVG user units (default is the canvas; 0,0 is lower-left corner)" +msgstr "האזור המיוצא ביחידות משתמש SVG (ברירת המחדל היא לוח הציור; 0,0 היא הפינה השמאלית התחתונה)" -#: ../src/main.cpp:254 +#: ../src/main.cpp:293 msgid "x0:y0:x1:y1" -msgstr "" +msgstr "x0:y0:x1:y1" -#: ../src/main.cpp:258 +#: ../src/main.cpp:297 msgid "Exported area is the entire drawing (not canvas)" -msgstr "" +msgstr "האזור המיוצא הוא הציור כולו (לא לוח הציור)" -#: ../src/main.cpp:263 +#: ../src/main.cpp:302 msgid "Exported area is the entire canvas" -msgstr "" +msgstr "השטח המיוצא הינו לוח הציור כולו" -#: ../src/main.cpp:268 -msgid "" -"Snap the bitmap export area outwards to the nearest integer values (in SVG " -"user units)" -msgstr "" +#: ../src/main.cpp:307 +msgid "Snap the bitmap export area outwards to the nearest integer values (in SVG user units)" +msgstr "הצמד את שטח יצוא מפת הסיביות כלפי חוץ לכיוון ערכים מספריים עגולים (ביחידות משתמש SVG)" -#: ../src/main.cpp:273 +#: ../src/main.cpp:312 msgid "The width of exported bitmap in pixels (overrides export-dpi)" -msgstr "" +msgstr "רוחב מפת הסיביות המיוצאת בפיקסלים (דורס את -export-dpi)" -#: ../src/main.cpp:274 +#: ../src/main.cpp:313 msgid "WIDTH" -msgstr "" +msgstr "רוחב" -#: ../src/main.cpp:278 +#: ../src/main.cpp:317 msgid "The height of exported bitmap in pixels (overrides export-dpi)" -msgstr "" +msgstr "גובה מפת הסיביות המיוצאת בפיקסלים (דורס את dpi-ליצוא)" -#: ../src/main.cpp:279 +#: ../src/main.cpp:318 msgid "HEIGHT" -msgstr "" +msgstr "גובה" -#: ../src/main.cpp:283 +#: ../src/main.cpp:322 msgid "The ID of the object to export" -msgstr "" +msgstr "מזהה הפריט לייצוא" -#: ../src/main.cpp:284 ../src/main.cpp:382 +#: ../src/main.cpp:323 +#: ../src/main.cpp:411 msgid "ID" -msgstr "" +msgstr "מזהה" #. TRANSLATORS: this means: "Only export the object whose id is given in --export-id". #. See "man inkscape" for details. -#: ../src/main.cpp:290 -msgid "" -"Export just the object with export-id, hide all others (only with export-id)" -msgstr "" +#: ../src/main.cpp:329 +msgid "Export just the object with export-id, hide all others (only with export-id)" +msgstr "ייצא רק את הפריט עם מזהה-ייצוא, הסתר את כל השאר (רק עם export-id)" -#: ../src/main.cpp:295 +#: ../src/main.cpp:334 msgid "Use stored filename and DPI hints when exporting (only with export-id)" -msgstr "" +msgstr "השתמש בשם הקובץ המאוחסן וברמיזות DPI בזמן הייצוא (רק עם export-id)" -#: ../src/main.cpp:300 +#: ../src/main.cpp:339 msgid "Background color of exported bitmap (any SVG-supported color string)" -msgstr "" +msgstr "צבע הרקע של מפת הסיביות המיוצאת (כל מחרוזת צבע הנתמכת על ידי SVG)" -#: ../src/main.cpp:301 +#: ../src/main.cpp:340 msgid "COLOR" -msgstr "" +msgstr "צבע" -#: ../src/main.cpp:305 +#: ../src/main.cpp:344 msgid "Background opacity of exported bitmap (either 0.0 to 1.0, or 1 to 255)" -msgstr "" +msgstr "אטימות הרקע של מפת הסיביות המיוצאת (יכול להיות בין 0.0 ל־1.0, או 1 עד 255)" -#: ../src/main.cpp:306 +#: ../src/main.cpp:345 msgid "VALUE" -msgstr "" +msgstr "ערך" -#: ../src/main.cpp:310 +#: ../src/main.cpp:349 msgid "Export document to plain SVG file (no sodipodi or inkscape namespaces)" -msgstr "" +msgstr "ייצא את המסמך לקובץ SVG פשוט (ללא תוספות כלי sodipodi או אינקסקייפ)" -#: ../src/main.cpp:315 +#: ../src/main.cpp:354 msgid "Export document to a PS file" -msgstr "" +msgstr "ייצא מסמך לקובץ PS" -#: ../src/main.cpp:320 +#: ../src/main.cpp:359 msgid "Export document to an EPS file" -msgstr "" +msgstr "ייצא מסמך לקובץ EPS" -#: ../src/main.cpp:325 +#: ../src/main.cpp:364 msgid "Export document to a PDF file" -msgstr "" +msgstr "ייצא מסמך לקובץ PDF" -#: ../src/main.cpp:331 +#: ../src/main.cpp:370 msgid "Export document to an Enhanced Metafile (EMF) File" -msgstr "" +msgstr "ייצא את המסמך לקובץ מטא מורחב (EMF)" -#: ../src/main.cpp:337 +#: ../src/main.cpp:376 msgid "Convert text object to paths on export (EPS)" -msgstr "" - -#: ../src/main.cpp:342 -msgid "Embed fonts on export (Type 1 only) (EPS)" -msgstr "" - -#: ../src/main.cpp:347 -msgid "Export files with the bounding box set to the page size (EPS)" -msgstr "" +msgstr "המר את פריט הטקסט לנתיבים בזמן הייצוא (EPS)" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:353 -msgid "" -"Query the X coordinate of the drawing or, if specified, of the object with --" -"query-id" -msgstr "" +#: ../src/main.cpp:382 +msgid "Query the X coordinate of the drawing or, if specified, of the object with --query-id" +msgstr "תשאל את נקודת ציון ה־X של הציור או, אם צויין, מהפריט עם --query-id" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:359 -msgid "" -"Query the Y coordinate of the drawing or, if specified, of the object with --" -"query-id" -msgstr "" +#: ../src/main.cpp:388 +msgid "Query the Y coordinate of the drawing or, if specified, of the object with --query-id" +msgstr "תשאל את נקודת ציון ה־Y של הציור או, אם צויין, מהפריט עם --query-id" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:365 -msgid "" -"Query the width of the drawing or, if specified, of the object with --query-" -"id" -msgstr "" +#: ../src/main.cpp:394 +msgid "Query the width of the drawing or, if specified, of the object with --query-id" +msgstr "תשאל את רוחב הציור או, אם צויין, מהפריט עם --query-id" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:371 -msgid "" -"Query the height of the drawing or, if specified, of the object with --query-" -"id" -msgstr "" +#: ../src/main.cpp:400 +msgid "Query the height of the drawing or, if specified, of the object with --query-id" +msgstr "תשאל את רוחב הציור או, אם צויין, מהפריט עם --query-id" -#: ../src/main.cpp:376 +#: ../src/main.cpp:405 msgid "List id,x,y,w,h for all objects" -msgstr "" +msgstr "פרט מזהה,x,y,רוחב,גובה עבור כל הפריטים" -#: ../src/main.cpp:381 +#: ../src/main.cpp:410 msgid "The ID of the object whose dimensions are queried" -msgstr "" +msgstr "מזהה הפריט שמידותיו מתושאלות" #. TRANSLATORS: this option makes Inkscape print the name (path) of the extension directory -#: ../src/main.cpp:387 +#: ../src/main.cpp:416 msgid "Print out the extension directory and exit" -msgstr "" +msgstr "הדפס את תיקיית ההרחבה וצא" -#: ../src/main.cpp:392 +#: ../src/main.cpp:421 msgid "Remove unused definitions from the defs section(s) of the document" -msgstr "" +msgstr "הסר הגדרות שאינן בשימוש ממחלקת/ות ההגדרה של המסמך" -#: ../src/main.cpp:397 +#: ../src/main.cpp:426 msgid "List the IDs of all the verbs in Inkscape" -msgstr "" +msgstr "פרט את המזהים של כל הפעלים באינקסקייפ" -#: ../src/main.cpp:402 +#: ../src/main.cpp:431 msgid "Verb to call when Inkscape opens." -msgstr "" +msgstr "פועל לקריאה כאשר אינקסקייפ נפתחת." -#: ../src/main.cpp:403 +#: ../src/main.cpp:432 msgid "VERB-ID" -msgstr "" +msgstr "מזהה־פועל" -#: ../src/main.cpp:407 +#: ../src/main.cpp:436 msgid "Object ID to select when Inkscape opens." -msgstr "" +msgstr "מזהה פריט לבחירה כאשר אינקסקייפ נפתחת." -#: ../src/main.cpp:408 +#: ../src/main.cpp:437 msgid "OBJECT-ID" -msgstr "" +msgstr "מזהה־פריט" -#: ../src/main.cpp:687 +#: ../src/main.cpp:441 +msgid "Start Inkscape in interative shell mode." +msgstr "התחל את אינקסקייפ במצב מסוף אינטרקטיבי." + +#: ../src/main.cpp:750 +#: ../src/main.cpp:986 msgid "" "[OPTIONS...] [FILE...]\n" "\n" "Available options:" msgstr "" +"[אפשרויות...] [קובץ...]\n" +"\n" +"אפשרויות זמינות:" #: ../src/menus-skeleton.h:17 msgid "_New" -msgstr "" - -#: ../src/menus-skeleton.h:22 -msgid "Open _Recent" -msgstr "" +msgstr "_חדש" -#: ../src/menus-skeleton.h:50 ../src/verbs.cpp:2403 ../src/verbs.cpp:2409 +#: ../src/menus-skeleton.h:48 +#: ../src/verbs.cpp:2464 +#: ../src/verbs.cpp:2470 msgid "_Edit" -msgstr "" +msgstr "_עריכה" -#: ../src/menus-skeleton.h:60 ../src/verbs.cpp:2205 +#: ../src/menus-skeleton.h:58 +#: ../src/verbs.cpp:2260 msgid "Paste Si_ze" -msgstr "" +msgstr "גודל הה_דבקה" -#: ../src/menus-skeleton.h:72 +#: ../src/menus-skeleton.h:70 msgid "Clo_ne" -msgstr "" +msgstr "כ_פיל" -#: ../src/menus-skeleton.h:91 +#: ../src/menus-skeleton.h:90 msgid "_View" -msgstr "" +msgstr "_תצוגה" -#: ../src/menus-skeleton.h:92 +#: ../src/menus-skeleton.h:91 msgid "_Zoom" -msgstr "" +msgstr "_תקריב" -#: ../src/menus-skeleton.h:108 +#: ../src/menus-skeleton.h:107 msgid "_Display mode" -msgstr "" +msgstr "מ_צב תצוגה" -#: ../src/menus-skeleton.h:120 +#: ../src/menus-skeleton.h:119 msgid "Show/Hide" -msgstr "" +msgstr "הצג/הסתר" -#: ../src/menus-skeleton.h:137 +#. Not quite ready to be in the menus. +#. " \n" +#: ../src/menus-skeleton.h:138 msgid "_Layer" -msgstr "" +msgstr "_שכבה" -#: ../src/menus-skeleton.h:156 +#: ../src/menus-skeleton.h:158 msgid "_Object" -msgstr "" +msgstr "פ_ריט" -#: ../src/menus-skeleton.h:166 +#: ../src/menus-skeleton.h:168 msgid "Cli_p" -msgstr "" +msgstr "_קליפ" -#: ../src/menus-skeleton.h:170 +#: ../src/menus-skeleton.h:172 msgid "Mas_k" -msgstr "" +msgstr "מס_כה" -#: ../src/menus-skeleton.h:174 +#: ../src/menus-skeleton.h:176 msgid "Patter_n" -msgstr "" +msgstr "_תבנית" -#: ../src/menus-skeleton.h:198 +#: ../src/menus-skeleton.h:200 msgid "_Path" -msgstr "" +msgstr "_נתיב" -#: ../src/menus-skeleton.h:221 +#: ../src/menus-skeleton.h:223 msgid "Path Effects" -msgstr "" +msgstr "אפקטי נתיב" -#: ../src/menus-skeleton.h:227 +#: ../src/menus-skeleton.h:229 msgid "_Text" -msgstr "" +msgstr "_טקסט" -#: ../src/menus-skeleton.h:239 +#: ../src/menus-skeleton.h:244 msgid "Effe_cts" -msgstr "" +msgstr "_אפקטים" -#: ../src/menus-skeleton.h:246 +#: ../src/menus-skeleton.h:251 msgid "Whiteboa_rd" -msgstr "" +msgstr "לוח _שיתופי" -#: ../src/menus-skeleton.h:250 +#: ../src/menus-skeleton.h:255 msgid "_Help" -msgstr "" +msgstr "_עזרה" -#: ../src/menus-skeleton.h:254 +#: ../src/menus-skeleton.h:259 msgid "Tutorials" -msgstr "" +msgstr "מדריכים" -#: ../src/node-context.cpp:255 -msgid "" -"Ctrl: toggle node type, snap handle angle, move hor/vert; Ctrl" -"+Alt: move along handles" -msgstr "" +#: ../src/node-context.cpp:228 +msgid "Ctrl: toggle node type, snap handle angle, move hor/vert; Ctrl+Alt: move along handles" +msgstr "Ctrl: מחליף את סוג המפרק, מצמיד לזווית הידית, מזיז אופקית/אנכית; Ctrl+Alt: מזיז לאורך הידיות" -#: ../src/node-context.cpp:256 -msgid "" -"Shift: toggle node selection, disable snapping, rotate both handles" -msgstr "" +#: ../src/node-context.cpp:229 +msgid "Shift: toggle node selection, disable snapping, rotate both handles" +msgstr "Shift: מחליף את בחירת המפרקים, מבטל הצמדה, מסובב את שתי הידיות" -#: ../src/node-context.cpp:257 +#: ../src/node-context.cpp:230 msgid "Alt: lock handle length; Ctrl+Alt: move along handles" -msgstr "" +msgstr "Alt: נועל את אורך הידית; Ctrl+Alt: הזז לאורך הידיות" -#: ../src/nodepath.cpp:651 ../src/seltrans.cpp:547 +#: ../src/nodepath.cpp:753 +#: ../src/seltrans.cpp:541 msgid "Stamp" -msgstr "" +msgstr "חותמת" -#: ../src/nodepath.cpp:1486 ../src/nodepath.cpp:1513 +#: ../src/nodepath.cpp:1628 +#: ../src/nodepath.cpp:1654 msgid "Move nodes vertically" -msgstr "הזז צמתים אנכית" +msgstr "הזז מפרקים אנכית" -#: ../src/nodepath.cpp:1488 ../src/nodepath.cpp:1515 +#: ../src/nodepath.cpp:1630 +#: ../src/nodepath.cpp:1656 msgid "Move nodes horizontally" -msgstr "הזז צמתית אופקית" +msgstr "הזז מפרקים אופקית" -#: ../src/nodepath.cpp:1490 ../src/nodepath.cpp:1517 ../src/nodepath.cpp:1532 -#: ../src/nodepath.cpp:3359 +#: ../src/nodepath.cpp:1632 +#: ../src/nodepath.cpp:1658 +#: ../src/nodepath.cpp:1673 +#: ../src/nodepath.cpp:3575 msgid "Move nodes" -msgstr "הזז צמתים" +msgstr "הזז מפרקים" -#: ../src/nodepath.cpp:1570 -msgid "" -"Node handle: drag to shape the curve; with Ctrl to snap angle; " -"with Alt to lock length; with Shift to rotate both handles" -msgstr "" +#: ../src/nodepath.cpp:1711 +msgid "Node handle: drag to shape the curve; with Ctrl to snap angle; with Alt to lock length; with Shift to rotate both handles" +msgstr "ידית המפרק: גרור כדי לעצב את הפיתול; לחיצה על Ctrl כדי להצמיד לזווית; לחיצה על Alt כדי לנעול את האורך; לחיצה על Shift כדי להטות את שתי הידיות" -#: ../src/nodepath.cpp:1740 +#: ../src/nodepath.cpp:1881 msgid "Align nodes" -msgstr "יישר צמתים" +msgstr "יישר מפרקים" -#: ../src/nodepath.cpp:1802 +#: ../src/nodepath.cpp:1943 msgid "Distribute nodes" -msgstr "פזר צמתים" +msgstr "פזר מפרקים" -#: ../src/nodepath.cpp:1840 +#: ../src/nodepath.cpp:1981 msgid "Add nodes" -msgstr "הוסף צמתים" +msgstr "הוסף מפרקים" -#: ../src/nodepath.cpp:1842 ../src/nodepath.cpp:1914 +#: ../src/nodepath.cpp:1983 +#: ../src/nodepath.cpp:2082 msgid "Add node" -msgstr "הוסף צומת" +msgstr "הוסף מפרק" -#: ../src/nodepath.cpp:1995 +#: ../src/nodepath.cpp:2174 msgid "Break path" -msgstr "" +msgstr "שבור נתיב" -#: ../src/nodepath.cpp:2051 +#: ../src/nodepath.cpp:2230 msgid "Close subpath" -msgstr "" +msgstr "סגור תת־נתיב" -#: ../src/nodepath.cpp:2112 +#: ../src/nodepath.cpp:2291 msgid "Join nodes" -msgstr "אחד צמתים" +msgstr "צרף מפרקים" -#: ../src/nodepath.cpp:2139 +#: ../src/nodepath.cpp:2318 msgid "Close subpath by segment" -msgstr "" +msgstr "סגור את התת־נתיב עם מקטע" -#: ../src/nodepath.cpp:2193 +#: ../src/nodepath.cpp:2372 msgid "Join nodes by segment" -msgstr "" +msgstr "צרף מפרקים עם מקטע" -#: ../src/nodepath.cpp:2206 ../src/nodepath.cpp:2221 +#: ../src/nodepath.cpp:2385 +#: ../src/nodepath.cpp:2400 msgid "To join, you must have two endnodes selected." -msgstr "" +msgstr "כדי לצרף, עליך לבחור שתי נקודות קצה." -#: ../src/nodepath.cpp:2378 ../src/nodepath.cpp:2414 ../src/nodepath.cpp:2418 +#: ../src/nodepath.cpp:2557 +#: ../src/nodepath.cpp:2593 +#: ../src/nodepath.cpp:2597 msgid "Delete nodes" -msgstr "מחק צמתים" +msgstr "מחק מפרקים" -#: ../src/nodepath.cpp:2380 +#: ../src/nodepath.cpp:2559 msgid "Delete nodes preserving shape" -msgstr "" +msgstr "מחק מפרקים תוך שמירה על הצורה" -#: ../src/nodepath.cpp:2437 ../src/nodepath.cpp:2451 -msgid "" -"Select two non-endpoint nodes on a path between which to delete " -"segments." -msgstr "" +#: ../src/nodepath.cpp:2616 +#: ../src/nodepath.cpp:2630 +msgid "Select two non-endpoint nodes on a path between which to delete segments." +msgstr "בחר שתי נקודות שאינן נקודות קצה על הנתיב שביניהן כדי למחוק מקטע." -#: ../src/nodepath.cpp:2547 +#: ../src/nodepath.cpp:2726 msgid "Cannot find path between nodes." -msgstr "" +msgstr "לא ניתן למצוא נתיב בין המפרקים." -#: ../src/nodepath.cpp:2579 ../src/widgets/toolbox.cpp:1129 +#: ../src/nodepath.cpp:2758 +#: ../src/widgets/toolbox.cpp:1326 msgid "Delete segment" -msgstr "" +msgstr "מחק מקטע" -#: ../src/nodepath.cpp:2600 +#: ../src/nodepath.cpp:2779 msgid "Change segment type" -msgstr "" +msgstr "שנה את סוג המקטע" -#: ../src/nodepath.cpp:2617 ../src/nodepath.cpp:3317 +#: ../src/nodepath.cpp:2796 +#: ../src/nodepath.cpp:3533 msgid "Change node type" -msgstr "שנה סוג צומת" +msgstr "שנה את סוג המפרק" -#: ../src/nodepath.cpp:3605 +#: ../src/nodepath.cpp:3821 msgid "Retract handle" -msgstr "" +msgstr "משוך ידית פנימה" -#: ../src/nodepath.cpp:3654 +#: ../src/nodepath.cpp:3876 msgid "Move node handle" -msgstr "" +msgstr "הזז את ידית המפרק" -#: ../src/nodepath.cpp:3823 +#: ../src/nodepath.cpp:4062 #, c-format -msgid "" -"Node handle: angle %0.2f°, length %s; with Ctrl to snap " -"angle; with Alt to lock length; with Shift to rotate both " -"handles" -msgstr "" +msgid "Node handle: angle %0.2f°, length %s; with Ctrl to snap angle; with Alt to lock length; with Shift to rotate both handles" +msgstr "ידית המפרק: זווית %0.2f°, אורך %s; לחיצה על Ctrl כדי להצמיד לזווית; לחיצה על Alt כדי לנעול אורך; לחיצה על Shift כדי להטות את שתי הידיות" -#: ../src/nodepath.cpp:4017 +#: ../src/nodepath.cpp:4256 msgid "Rotate nodes" -msgstr "סובב צמתים" +msgstr "סובב מפרקים" -#: ../src/nodepath.cpp:4148 +#: ../src/nodepath.cpp:4387 msgid "Scale nodes" -msgstr "" +msgstr "שנה את מרחק המפרקים" -#: ../src/nodepath.cpp:4192 +#: ../src/nodepath.cpp:4431 msgid "Flip nodes" -msgstr "" +msgstr "הפוך מפרקים" -#: ../src/nodepath.cpp:4361 -msgid "" -"Node: drag to edit the path; with Ctrl to snap to horizontal/" -"vertical; with Ctrl+Alt to snap to handles' directions" -msgstr "" +#: ../src/nodepath.cpp:4600 +msgid "Node: drag to edit the path; with Ctrl to snap to horizontal/vertical; with Ctrl+Alt to snap to handles' directions" +msgstr "מפרק: גרור כדי לערוך את הנתיב; לחיצה על Ctrl כדי להצמיד לאופק/אנך; לחיצה על Ctrl+Alt כדי להצמיד לכיווני הידיות" #. TRANSLATORS: "end" is an adjective here (NOT a verb) -#: ../src/nodepath.cpp:4587 +#: ../src/nodepath.cpp:4833 msgid "end node" -msgstr "" +msgstr "מפרק קצה" #. TRANSLATORS: "cusp" means "sharp" (cusp node); see also the Advanced Tutorial -#: ../src/nodepath.cpp:4592 +#: ../src/nodepath.cpp:4838 msgid "cusp" -msgstr "" +msgstr "חוד" #. TRANSLATORS: "smooth" is an adjective here -#: ../src/nodepath.cpp:4595 +#: ../src/nodepath.cpp:4841 msgid "smooth" msgstr "חלק" -#: ../src/nodepath.cpp:4597 +#: ../src/nodepath.cpp:4843 +msgid "auto" +msgstr "אוטו'" + +#: ../src/nodepath.cpp:4845 msgid "symmetric" msgstr "סימטרי" #. TRANSLATORS: "end" is an adjective here (NOT a verb) -#: ../src/nodepath.cpp:4603 +#: ../src/nodepath.cpp:4851 msgid "end node, handle retracted (drag with Shift to extend)" -msgstr "" +msgstr "מפרק קצה, הידית נמשכה פנימה (גרור עם Shift כדי להרחיב)" -#: ../src/nodepath.cpp:4605 +#: ../src/nodepath.cpp:4853 msgid "one handle retracted (drag with Shift to extend)" -msgstr "" +msgstr "ידית אחת נמשכה פנימה (גרור עם Shift כדי להרחיב)" -#: ../src/nodepath.cpp:4608 +#: ../src/nodepath.cpp:4856 msgid "both handles retracted (drag with Shift to extend)" -msgstr "" +msgstr "שתי הידיות נמשכו פנימה (גרור עם Shift כדי להרחיב)" -#: ../src/nodepath.cpp:4620 -msgid "" -"Drag nodes or node handles; Alt+drag nodes to sculpt; " -"arrow keys to move nodes, < > to scale, [ ] to " -"rotate" -msgstr "" +#: ../src/nodepath.cpp:4868 +msgid "Drag nodes or node handles; Alt+drag nodes to sculpt; arrow keys to move nodes, < > to scale, [ ] to rotate" +msgstr "גרור את המפרקים או את ידיות המפרקים; Alt+גרור את המפרקים כדי לפסל; מקשי החיצים כדי להזיז את המפרקים, < > כדי לשנות גודל, [ ] לסיבוב" -#: ../src/nodepath.cpp:4621 +#: ../src/nodepath.cpp:4869 msgid "Drag the node or its handles; arrow keys to move the node" -msgstr "" +msgstr "גרור את המפרק או את ידותיו; מקשי החיצים כדי להזיז את המפרק" -#: ../src/nodepath.cpp:4646 ../src/nodepath.cpp:4658 +#: ../src/nodepath.cpp:4895 +#: ../src/nodepath.cpp:4907 msgid "Select a single object to edit its nodes or handles." -msgstr "" +msgstr "בחר פריט בודד כדי לערוך את המפרקים או הידיות שלו." -#: ../src/nodepath.cpp:4650 +#: ../src/nodepath.cpp:4899 #, c-format -msgid "" -"0 out of %i node selected. Click, Shift+click, " -"or drag around nodes to select." -msgid_plural "" -"0 out of %i nodes selected. Click, Shift+click, " -"or drag around nodes to select." -msgstr[0] "" -msgstr[1] "" - -#: ../src/nodepath.cpp:4656 +msgid "0 out of %i node selected. Click, Shift+click, or drag around nodes to select." +msgid_plural "0 out of %i nodes selected. Click, Shift+click, or drag around nodes to select." +msgstr[0] "נבחרו 0 מפרקים מתוך %i. לחץ, Shift+לחיצה, או גרור מסביב למפרקים לבחירה." +msgstr[1] "נבחרו 0 מפרקים מתוך %i. לחץ, Shift+לחיצה, או גרור מסביב למפרקים לבחירה." + +#: ../src/nodepath.cpp:4905 msgid "Drag the handles of the object to modify it." -msgstr "" +msgstr "גרור את הידיות של הפריט כדי לשנות אותו." -#: ../src/nodepath.cpp:4664 +#: ../src/nodepath.cpp:4913 #, c-format msgid "%i of %i node selected; %s. %s." msgid_plural "%i of %i nodes selected; %s. %s." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%i מתוך %i מפרקים נבחר; %s. %s." +msgstr[1] "%i מתוך %i מפרקים נבחרו; %s. %s." -#: ../src/nodepath.cpp:4671 +#: ../src/nodepath.cpp:4920 #, c-format -msgid "" -"%i of %i node selected in %i of %i subpaths. %s." -msgid_plural "" -"%i of %i nodes selected in %i of %i subpaths. %s." -msgstr[0] "" -msgstr[1] "" +msgid "%i of %i node selected in %i of %i subpaths. %s." +msgid_plural "%i of %i nodes selected in %i of %i subpaths. %s." +msgstr[0] "%i מתוך %i מפרקים נבחר תחת %i מתוך %i תת־נתיבים. %s." +msgstr[1] "%i מתוך %i מפרקים נבחרו תחת %i מתוך %i תת־נתיבים. %s." -#: ../src/nodepath.cpp:4677 +#: ../src/nodepath.cpp:4926 #, c-format msgid "%i of %i node selected. %s." msgid_plural "%i of %i nodes selected. %s." -msgstr[0] "" -msgstr[1] "" - -#: ../src/object-edit.cpp:420 -msgid "" -"Adjust the horizontal rounding radius; with Ctrl to make the " -"vertical radius the same" -msgstr "" - -#: ../src/object-edit.cpp:424 -msgid "" -"Adjust the vertical rounding radius; with Ctrl to make the " -"horizontal radius the same" -msgstr "" - -#: ../src/object-edit.cpp:428 ../src/object-edit.cpp:432 -msgid "" -"Adjust the width and height of the rectangle; with Ctrlto lock " -"ratio or stretch in one dimension only" -msgstr "" +msgstr[0] "%i מתוך %i מפרקים נבחר. %s." +msgstr[1] "%i מתוך %i מפרקים נבחרו. %s." -#: ../src/object-edit.cpp:666 ../src/object-edit.cpp:669 -#: ../src/object-edit.cpp:672 ../src/object-edit.cpp:675 -msgid "" -"Resize box in X/Y direction; with Shift along the Z axis; with " -"Ctrl to constrain to the directions of edges or diagonals" -msgstr "" +#: ../src/object-edit.cpp:408 +msgid "Adjust the horizontal rounding radius; with Ctrl to make the vertical radius the same" +msgstr "שנה את רדיוס העיגול האופקי; לחיצה על Ctrl כדי להפוך את הרדיוס האנכי לזהה" -#: ../src/object-edit.cpp:678 ../src/object-edit.cpp:681 -#: ../src/object-edit.cpp:684 ../src/object-edit.cpp:687 -msgid "" -"Resize box along the Z axis; with Shift in X/Y direction; with " -"Ctrl to constrain to the directions of edges or diagonals" -msgstr "" +#: ../src/object-edit.cpp:412 +msgid "Adjust the vertical rounding radius; with Ctrl to make the horizontal radius the same" +msgstr "שנה את רדיוס העיגול האנכי; לחיצה על Ctrl כדי להפוך את הרדיוס האופקי לזהה" -#: ../src/object-edit.cpp:690 +#: ../src/object-edit.cpp:416 +#: ../src/object-edit.cpp:420 +msgid "Adjust the width and height of the rectangle; with Ctrlto lock ratio or stretch in one dimension only" +msgstr "שנה את הגובה והרוחב של המרובע; לחיצה על Ctrl כדי לנעול את היחס או למתוח במימד אחד בלבד" + +#: ../src/object-edit.cpp:654 +#: ../src/object-edit.cpp:657 +#: ../src/object-edit.cpp:660 +#: ../src/object-edit.cpp:663 +msgid "Resize box in X/Y direction; with Shift along the Z axis; with Ctrl to constrain to the directions of edges or diagonals" +msgstr "שנה את התיבה בכיוון X/Y; לחיצה על Shift לאורך ציר ה־Z; לחיצה על Ctrl כדי לכפות את כיווני הקצוות או האלכסונים" + +#: ../src/object-edit.cpp:666 +#: ../src/object-edit.cpp:669 +#: ../src/object-edit.cpp:672 +#: ../src/object-edit.cpp:675 +msgid "Resize box along the Z axis; with Shift in X/Y direction; with Ctrl to constrain to the directions of edges or diagonals" +msgstr "שנה את גודל התיבה לאורך ציר ה־Z; לחיצה על Shift בכיוון X/Y; לחיצה על Ctrl כדי לכפות את כיווני הקצוות או האלכסונים" + +#: ../src/object-edit.cpp:678 msgid "Move the box in perspective" -msgstr "" +msgstr "הזז את התיבה בפרספקטיבה" -#: ../src/object-edit.cpp:908 +#: ../src/object-edit.cpp:896 msgid "Adjust ellipse width, with Ctrl to make circle" -msgstr "" +msgstr "הגדר את רוחב האליפסה, לחיצה על Ctrl כדי ליצור עיגול" -#: ../src/object-edit.cpp:911 +#: ../src/object-edit.cpp:899 msgid "Adjust ellipse height, with Ctrl to make circle" -msgstr "" +msgstr "הגדר את גובה האליפסה, לחיצה על Ctrl כדי ליצור עיגול" -#: ../src/object-edit.cpp:914 -msgid "" -"Position the start point of the arc or segment; with Ctrlto " -"snap angle; drag inside the ellipse for arc, outside for " -"segment" -msgstr "" +#: ../src/object-edit.cpp:902 +msgid "Position the start point of the arc or segment; with Ctrlto snap angle; drag inside the ellipse for arc, outside for segment" +msgstr "מקם את נקודת התחלת של הקשת או המקטע; לחיצה על Ctrl להצמיד לזווית; גרור כלפי פנים את האליפסה כדי ליצור קשת, החוצה כדי ליצור מקטע" -#: ../src/object-edit.cpp:918 -msgid "" -"Position the end point of the arc or segment; with Ctrl to " -"snap angle; drag inside the ellipse for arc, outside for " -"segment" -msgstr "" +#: ../src/object-edit.cpp:906 +msgid "Position the end point of the arc or segment; with Ctrl to snap angle; drag inside the ellipse for arc, outside for segment" +msgstr "מקם את נקודת סיום הקשת או המקטע; לחיצה על Ctrl כדי להצמיד לזווית; גרור כלפי פנים את האליפסה כדי ליצור קשת, החוצה כדי ליצור מקטע" -#: ../src/object-edit.cpp:1057 -msgid "" -"Adjust the tip radius of the star or polygon; with Shift to " -"round; with Alt to randomize" -msgstr "" +#: ../src/object-edit.cpp:1045 +msgid "Adjust the tip radius of the star or polygon; with Shift to round; with Alt to randomize" +msgstr "הגדר את רדיוס הקצוות של הכוכב או המצולע; לחיצה על Shift כדי לעגל; לחיצה על Alt כדי לבחור באקראי" -#: ../src/object-edit.cpp:1064 -msgid "" -"Adjust the base radius of the star; with Ctrl to keep star " -"rays radial (no skew); with Shift to round; with Alt to " -"randomize" -msgstr "" +#: ../src/object-edit.cpp:1052 +msgid "Adjust the base radius of the star; with Ctrl to keep star rays radial (no skew); with Shift to round; with Alt to randomize" +msgstr "הגדר את רדיוס הבסיס של הכוכב; לחיצה על Ctrl כדי לשמור על קרני הכוכב מעוגלות (ללא נטייה); לחיצה על Shift כדי לעגל לחיצה על Alt כדי לבחור באקראי" -#: ../src/object-edit.cpp:1245 -msgid "" -"Roll/unroll the spiral from inside; with Ctrl to snap angle; " -"with Alt to converge/diverge" -msgstr "" +#: ../src/object-edit.cpp:1235 +msgid "Roll/unroll the spiral from inside; with Ctrl to snap angle; with Alt to converge/diverge" +msgstr "גלול פנימה או החוצה מבפנים; לחיצה עלCtrl כדי להצמיד לזווית; לחיצה על Alt כדי לכנס/לרווח" -#: ../src/object-edit.cpp:1248 -msgid "" -"Roll/unroll the spiral from outside; with Ctrl to snap angle; " -"with Shift to scale/rotate" -msgstr "" +#: ../src/object-edit.cpp:1238 +msgid "Roll/unroll the spiral from outside; with Ctrl to snap angle; with Shift to scale/rotate" +msgstr "גלול פנימה או החוצה מבחוץ; לחיצה עלCtrl כדי להצמיד לזווית; לחיצה על Alt כדי לשנות גודל/לסובב" -#: ../src/object-edit.cpp:1292 +#: ../src/object-edit.cpp:1282 msgid "Adjust the offset distance" -msgstr "" +msgstr "הגדר את מרחק הקיזוז" -#: ../src/object-edit.cpp:1327 +#: ../src/object-edit.cpp:1318 msgid "Drag to resize the flowed text frame" -msgstr "" +msgstr "גרור כדי לשנות את גודל מסגרת הטקסט הצף" -#: ../src/path-chemistry.cpp:63 +#: ../src/path-chemistry.cpp:48 msgid "Select at least two objects to combine." -msgstr "" +msgstr "בחר לפחות שני פריטים כדי לשלב." -#: ../src/path-chemistry.cpp:67 +#: ../src/path-chemistry.cpp:52 msgid "Combining paths..." -msgstr "" +msgstr "משלב נתיבים" -#: ../src/path-chemistry.cpp:169 +#: ../src/path-chemistry.cpp:154 msgid "Combine" -msgstr "" +msgstr "שלב" -#: ../src/path-chemistry.cpp:176 +#: ../src/path-chemistry.cpp:161 msgid "No path(s) to combine in the selection." -msgstr "" +msgstr "אין נתיב/ים לשילוב בבחירה." -#: ../src/path-chemistry.cpp:190 +#: ../src/path-chemistry.cpp:173 msgid "Select path(s) to break apart." -msgstr "" +msgstr "בחר נתיב/ים להפרדה" -#: ../src/path-chemistry.cpp:194 +#: ../src/path-chemistry.cpp:177 msgid "Breaking apart paths..." -msgstr "" +msgstr "מפריד נתיבים..." -#: ../src/path-chemistry.cpp:280 +#: ../src/path-chemistry.cpp:263 msgid "Break apart" -msgstr "" +msgstr "הפרד" -#: ../src/path-chemistry.cpp:282 +#: ../src/path-chemistry.cpp:265 msgid "No path(s) to break apart in the selection." -msgstr "" +msgstr "אין נתיב/ים להפרדה בבחירה." -#: ../src/path-chemistry.cpp:306 +#: ../src/path-chemistry.cpp:277 msgid "Select object(s) to convert to path." -msgstr "" +msgstr "בחר פריט/ים להמרה לנתיב." -#: ../src/path-chemistry.cpp:312 +#: ../src/path-chemistry.cpp:283 msgid "Converting objects to paths..." -msgstr "" +msgstr "ממיר פריטים לנתיבים..." -#: ../src/path-chemistry.cpp:334 +#: ../src/path-chemistry.cpp:305 msgid "Object to path" -msgstr "" +msgstr "פריט לנתיב" -#: ../src/path-chemistry.cpp:336 +#: ../src/path-chemistry.cpp:307 msgid "No objects to convert to path in the selection." -msgstr "" +msgstr "אין פריטים להמרה לנתיבים בבחירה." -#: ../src/path-chemistry.cpp:487 +#: ../src/path-chemistry.cpp:544 msgid "Select path(s) to reverse." -msgstr "" +msgstr "בחר נתיבים כדי להפוך." -#: ../src/path-chemistry.cpp:496 +#: ../src/path-chemistry.cpp:553 msgid "Reversing paths..." -msgstr "" +msgstr "הופך נתיבים..." -#: ../src/path-chemistry.cpp:523 +#: ../src/path-chemistry.cpp:580 msgid "Reverse path" -msgstr "" +msgstr "הפוך נתיבים" -#: ../src/path-chemistry.cpp:525 +#: ../src/path-chemistry.cpp:582 msgid "No paths to reverse in the selection." -msgstr "" +msgstr "אין נתיבים להיפוך בבחירה." -#: ../src/pencil-context.cpp:239 ../src/pen-context.cpp:441 +#: ../src/pencil-context.cpp:251 +#: ../src/pen-context.cpp:486 msgid "Continuing selected path" -msgstr "" +msgstr "ממשיך עם הנתיב הנבחר" -#: ../src/pencil-context.cpp:248 ../src/pen-context.cpp:451 +#: ../src/pencil-context.cpp:260 +#: ../src/pen-context.cpp:496 msgid "Creating new path" -msgstr "" +msgstr "יוצר נתיב חדש" -#: ../src/pencil-context.cpp:253 ../src/pen-context.cpp:453 +#: ../src/pencil-context.cpp:271 +#: ../src/pen-context.cpp:498 msgid "Appending to selected path" -msgstr "" +msgstr "מוסיף לנתיב הנבחר" -#: ../src/pencil-context.cpp:336 +#: ../src/pencil-context.cpp:378 msgid "Release here to close and finish the path." -msgstr "" +msgstr "שחרר כאן כדי לסגור ולסיים את הנתיב." -#: ../src/pencil-context.cpp:342 +#: ../src/pencil-context.cpp:384 msgid "Drawing a freehand path" -msgstr "" +msgstr "מצייר נתיב ביד חופשית" -#: ../src/pencil-context.cpp:347 +#: ../src/pencil-context.cpp:389 msgid "Drag to continue the path from this point." -msgstr "" +msgstr "גרור ככדי להמשיך את הנתיב מנקודה זו." #. Write curves to object -#: ../src/pencil-context.cpp:409 +#: ../src/pencil-context.cpp:451 msgid "Finishing freehand" -msgstr "" +msgstr "מסיים יד חופשית" -#: ../src/pencil-context.cpp:460 ../src/pen-context.cpp:237 +#: ../src/pencil-context.cpp:502 +#: ../src/pen-context.cpp:254 msgid "Drawing cancelled" -msgstr "" +msgstr "הציור בוטל" -#: ../src/pen-context.cpp:620 +#: ../src/pen-context.cpp:658 msgid "Click or click and drag to close and finish the path." -msgstr "" +msgstr "לחץ או לחץ וגרור כדי לסגור ולסיים את הנתיב." -#: ../src/pen-context.cpp:630 -msgid "" -"Click or click and drag to continue the path from this point." -msgstr "" +#: ../src/pen-context.cpp:668 +msgid "Click or click and drag to continue the path from this point." +msgstr "לחץ או לחץ וגרור כדי להמשיך את הנתיב מנקודה זו." -#: ../src/pen-context.cpp:1177 +#: ../src/pen-context.cpp:1261 #, c-format -msgid "" -"Curve segment: angle %3.2f°, distance %s; with Ctrl to " -"snap angle, Enter to finish the path" -msgstr "" +msgid "Curve segment: angle %3.2f°, distance %s; with Ctrl to snap angle, Enter to finish the path" +msgstr "מקטע עקומה: זווית %3.2f°, מרחק %s; לחיצה על Ctrl כדי להצמיד לזווית, Enter כדי לסיים את הנתיב" -#: ../src/pen-context.cpp:1178 +#: ../src/pen-context.cpp:1262 #, c-format -msgid "" -"Line segment: angle %3.2f°, distance %s; with Ctrl to " -"snap angle, Enter to finish the path" -msgstr "" +msgid "Line segment: angle %3.2f°, distance %s; with Ctrl to snap angle, Enter to finish the path" +msgstr "מקטע קו ישר: זווית %3.2f°, מרחק %s; לחיצה על Ctrl כדי להצמיד לזווית, Enter כדי לסיים את הנתיב" -#: ../src/pen-context.cpp:1196 +#: ../src/pen-context.cpp:1280 #, c-format -msgid "" -"Curve handle: angle %3.2f°, length %s; with Ctrl to snap " -"angle" -msgstr "" +msgid "Curve handle: angle %3.2f°, length %s; with Ctrl to snap angle" +msgstr "ידית נטויה: זווית %3.2f°, אורך %s; לחיצה על Ctrl כדי להצמיד לזווית" -#: ../src/pen-context.cpp:1218 +#: ../src/pen-context.cpp:1302 #, c-format -msgid "" -"Curve handle, symmetric: angle %3.2f°, length %s; with Ctrl to snap angle, with Shift to move this handle only" -msgstr "" +msgid "Curve handle, symmetric: angle %3.2f°, length %s; with Ctrl to snap angle, with Shift to move this handle only" +msgstr "ידית העיקול, סימטרי: זווית %3.2f°, אורך %s; לחיצה על Ctrl כדי להצמיד לזווית, לחיצה על Shift כדי להזיז ידית זו בלבד" -#: ../src/pen-context.cpp:1219 +#: ../src/pen-context.cpp:1303 #, c-format -msgid "" -"Curve handle: angle %3.2f°, length %s; with Ctrl to snap " -"angle, with Shift to move this handle only" -msgstr "" +msgid "Curve handle: angle %3.2f°, length %s; with Ctrl to snap angle, with Shift to move this handle only" +msgstr "ידית עיקול: זווית %3.2f°, אורך %s; לחיצה על Ctrl כדי להצמיד לזווית, לחיצה על Shift כדי להזיז ידית זו בלבד" -#: ../src/pen-context.cpp:1259 +#: ../src/pen-context.cpp:1350 msgid "Drawing finished" -msgstr "" +msgstr "הציור הסתיים" #: ../src/persp3d.cpp:335 msgid "Toggle vanishing point" -msgstr "" +msgstr "החלף את נקודת ההעלמות" #: ../src/persp3d.cpp:346 msgid "Toggle multiple vanishing points" -msgstr "" +msgstr "החלף כמה נקודות העלמות" + +#: ../src/preferences.cpp:106 +msgid "Inkscape will run with default settings, and new settings will not be saved. " +msgstr "אינקסקייפ תפעל עם הגדרות ברירת המחדל, והגדרות חדשות לא יישמרו." -#: ../src/preferences.cpp:59 +#. the creation failed +#. _errorDialog(Glib::ustring::compose(_("Cannot create profile directory %1."), +#. Glib::filename_to_utf8(_prefs_dir)), not_saved); +#: ../src/preferences.cpp:121 #, c-format -msgid "" -"%s is not a valid preferences file.\n" -"%s" -msgstr "" +msgid "Cannot create profile directory %s." +msgstr "לא ניתן ליצור את תיקיית הפרופיל %s." -#: ../src/preferences.cpp:60 -msgid "" -"Inkscape will run with default settings.\n" -"New settings will not be saved." -msgstr "" +#. The profile dir is not actually a directory +#. _errorDialog(Glib::ustring::compose(_("%1 is not a valid directory."), +#. Glib::filename_to_utf8(_prefs_dir)), not_saved); +#: ../src/preferences.cpp:139 +#, c-format +msgid "%s is not a valid directory." +msgstr "%s אינה תיקיית תקנית." + +#. The write failed. +#. _errorDialog(Glib::ustring::compose(_("Failed to create the preferences file %1."), +#. Glib::filename_to_utf8(_prefs_filename)), not_saved); +#: ../src/preferences.cpp:150 +#, c-format +msgid "Failed to create the preferences file %s." +msgstr "כשל ביצירת קובץ ההעדפות %s." + +#. _errorDialog(Glib::ustring::compose(_("The preferences file %1 is not a regular file."), +#. Glib::filename_to_utf8(_prefs_filename)), not_saved); +#: ../src/preferences.cpp:168 +#, c-format +msgid "The preferences file %s is not a regular file." +msgstr "קובץ ההעדפות %s אינו קובץ רגיל." + +#. _errorDialog(Glib::ustring::compose(_("The preferences file %1 could not be read."), +#. Glib::filename_to_utf8(_prefs_filename)), not_saved); +#: ../src/preferences.cpp:180 +#, c-format +msgid "The preferences file %s could not be read." +msgstr "לא ניתן לקרוא את קובץ ההעדפות %s." + +#. _errorDialog(Glib::ustring::compose(_("The preferences file %1 is not a valid XML document."), +#. Glib::filename_to_utf8(_prefs_filename)), not_saved); +#: ../src/preferences.cpp:192 +#, c-format +msgid "The preferences file %s is not a valid XML document." +msgstr "קובץ ההעדפות %s איננו מסמך XML תקני." + +#. _errorDialog(Glib::ustring::compose(_("The file %1 is not a valid Inkscape preferences file."), +#. Glib::filename_to_utf8(_prefs_filename)), not_saved); +#: ../src/preferences.cpp:202 +#, c-format +msgid "The file %s is not a valid Inkscape preferences file." +msgstr "הקובץ %s אינו קובץ העדפות תקני של אינקסקייפ." #: ../src/rect-context.cpp:382 -msgid "" -"Ctrl: make square or integer-ratio rect, lock a rounded corner " -"circular" -msgstr "" +msgid "Ctrl: make square or integer-ratio rect, lock a rounded corner circular" +msgstr "Ctrl: צור ריבוע או מרובע בעל יחס צלעות שווה, נעל יחס קודקודים מעגלי" -#: ../src/rect-context.cpp:536 +#: ../src/rect-context.cpp:523 #, c-format -msgid "" -"Rectangle: %s × %s (constrained to ratio %d:%d); with Shift to draw around the starting point" -msgstr "" +msgid "Rectangle: %s × %s (constrained to ratio %d:%d); with Shift to draw around the starting point" +msgstr "מרובע: %s × %s (מאולץ ליחס %d:%d); לחיצה על Shift על מנת לצייר מסביב לנקודת ההתחלה" -#: ../src/rect-context.cpp:539 -#, fuzzy, c-format -msgid "" -"Rectangle: %s × %s (constrained to golden ratio 1.618 : 1); with " -"Shift to draw around the starting point" -msgstr "" -"אליפסה: %s × %s (מוגבלת ליחס %d:%d); לחצו Shift על " -"מנתלצייר מסביב לנקודת ההתחלה" +#: ../src/rect-context.cpp:526 +#, c-format +msgid "Rectangle: %s × %s (constrained to golden ratio 1.618 : 1); with Shift to draw around the starting point" +msgstr "מרובע: %s × %s (מאולץ ליחס זהב של 1.618 : 1); לחיצה על Shift על מנת לצייר מסביב לנקודת ההתחלה" -#: ../src/rect-context.cpp:541 -#, fuzzy, c-format -msgid "" -"Rectangle: %s × %s (constrained to golden ratio 1 : 1.618); with " -"Shift to draw around the starting point" -msgstr "" -"אליפסה: %s × %s (מוגבלת ליחס %d:%d); לחצו Shift על " -"מנתלצייר מסביב לנקודת ההתחלה" +#: ../src/rect-context.cpp:528 +#, c-format +msgid "Rectangle: %s × %s (constrained to golden ratio 1 : 1.618); with Shift to draw around the starting point" +msgstr "מרובע: %s × %s (מאולץ ליחס זהב של 1.618 : 1); לחיצה על Shift על מנת לצייר מסביב לנקודת ההתחלה" -#: ../src/rect-context.cpp:545 +#: ../src/rect-context.cpp:532 #, c-format -msgid "" -"Rectangle: %s × %s; with Ctrl to make square or integer-" -"ratio rectangle; with Shift to draw around the starting point" -msgstr "" +msgid "Rectangle: %s × %s; with Ctrl to make square or integer-ratio rectangle; with Shift to draw around the starting point" +msgstr "מרובע: %s × %s; לחיצה על Shift על מנת לצייר מסביב לנקודת ההתחלה" -#: ../src/rect-context.cpp:566 +#: ../src/rect-context.cpp:553 msgid "Create rectangle" -msgstr "" +msgstr "צור מרובע" -#: ../src/select-context.cpp:230 +#: ../src/select-context.cpp:232 msgid "Move canceled." -msgstr "" +msgstr "ההזזה בוטלה." -#: ../src/select-context.cpp:238 +#: ../src/select-context.cpp:240 msgid "Selection canceled." -msgstr "" +msgstr "הבחירה בוטלה." -#: ../src/select-context.cpp:545 -msgid "" -"Draw over objects to select them; release Alt to switch to " -"rubberband selection" -msgstr "" +#: ../src/select-context.cpp:550 +msgid "Draw over objects to select them; release Alt to switch to rubberband selection" +msgstr "צייר מעבר לפריטים כדי לבחור אותם; שחרר את המקש Alt כדי להחליף לבחירת רצועת גומי" -#: ../src/select-context.cpp:547 -msgid "" -"Drag around objects to select them; press Alt to switch to " -"touch selection" -msgstr "" +#: ../src/select-context.cpp:552 +msgid "Drag around objects to select them; press Alt to switch to touch selection" +msgstr "גרור מסביב לפריטים כדי לבחור אותם לחיצה על Alt כדי להמיר לבחירה בנגיעה" -#: ../src/select-context.cpp:707 +#: ../src/select-context.cpp:712 msgid "Ctrl: click to select in groups; drag to move hor/vert" -msgstr "" +msgstr "Ctrl: לחץ כדי לבחור בקבוצות; גרור כדי להזיז אנכית/אופקית" -#: ../src/select-context.cpp:708 +#: ../src/select-context.cpp:713 msgid "Shift: click to toggle select; drag for rubberband selection" -msgstr "" +msgstr "Shift: לחץ כדי להחליף את הבחירה; גרור כדי לבצע בחירת רצועת גומי" -#: ../src/select-context.cpp:709 -msgid "" -"Alt: click to select under; drag to move selected or select by touch" -msgstr "" +#: ../src/select-context.cpp:714 +msgid "Alt: click to select under; drag to move selected or select by touch" +msgstr "Alt: לחץ כדי לבחור את מה שמתחת; גרור כדי להזיז את הנבחר או בחר על ידי נגיעה" -#: ../src/select-context.cpp:880 +#: ../src/select-context.cpp:885 msgid "Selected object is not a group. Cannot enter." -msgstr "" +msgstr "הפריט הנבחר אינו קבוצה. לא ניתן להכנס." -#: ../src/selection-chemistry.cpp:194 +#: ../src/selection-chemistry.cpp:192 msgid "Delete text" -msgstr "" +msgstr "מחק טקסט" -#: ../src/selection-chemistry.cpp:202 +#: ../src/selection-chemistry.cpp:200 msgid "Nothing was deleted." -msgstr "" +msgstr "לא נמחק שום דבר." -#: ../src/selection-chemistry.cpp:220 ../src/text-context.cpp:995 -#: ../src/widgets/toolbox.cpp:1090 ../src/widgets/toolbox.cpp:4335 +#: ../src/selection-chemistry.cpp:218 +#: ../src/text-context.cpp:1014 +#: ../src/widgets/toolbox.cpp:1287 +#: ../src/widgets/toolbox.cpp:5288 msgid "Delete" -msgstr "" +msgstr "מחק" -#: ../src/selection-chemistry.cpp:235 +#: ../src/selection-chemistry.cpp:246 msgid "Select object(s) to duplicate." -msgstr "" +msgstr "בחר פריט/ים לשיכפול." -#: ../src/selection-chemistry.cpp:285 +#: ../src/selection-chemistry.cpp:336 msgid "Delete all" -msgstr "" +msgstr "מחק הכל" -#: ../src/selection-chemistry.cpp:409 +#: ../src/selection-chemistry.cpp:459 msgid "Select some objects to group." -msgstr "" +msgstr "בחר כמה פריטים לקיבוץ." -#: ../src/selection-chemistry.cpp:482 ../src/selection-describer.cpp:51 +#: ../src/selection-chemistry.cpp:532 +#: ../src/selection-describer.cpp:51 msgid "Group" -msgstr "" +msgstr "קבץ" -#: ../src/selection-chemistry.cpp:497 +#: ../src/selection-chemistry.cpp:546 msgid "Select a group to ungroup." -msgstr "" +msgstr "בחר קבוצה לפירוק." -#: ../src/selection-chemistry.cpp:538 +#: ../src/selection-chemistry.cpp:587 msgid "No groups to ungroup in the selection." -msgstr "" +msgstr "אין קבוצות לפירוק בבחירה." -#: ../src/selection-chemistry.cpp:544 ../src/sp-item-group.cpp:488 +#: ../src/selection-chemistry.cpp:593 +#: ../src/sp-item-group.cpp:497 msgid "Ungroup" -msgstr "" +msgstr "פרק" -#: ../src/selection-chemistry.cpp:605 +#: ../src/selection-chemistry.cpp:653 msgid "Select object(s) to raise." -msgstr "" +msgstr "בחר פריט/ים להגבהה." -#: ../src/selection-chemistry.cpp:611 ../src/selection-chemistry.cpp:672 -#: ../src/selection-chemistry.cpp:707 ../src/selection-chemistry.cpp:772 -msgid "" -"You cannot raise/lower objects from different groups or layers." -msgstr "" +#: ../src/selection-chemistry.cpp:659 +#: ../src/selection-chemistry.cpp:719 +#: ../src/selection-chemistry.cpp:753 +#: ../src/selection-chemistry.cpp:817 +msgid "You cannot raise/lower objects from different groups or layers." +msgstr "לא ניתן להנמיך/להגביה פריטים מקבוצות או שכבות שונות" #. TRANSLATORS: Only put the word "Raise" in the translation. Means "to raise an object" in the undo history -#: ../src/selection-chemistry.cpp:651 +#: ../src/selection-chemistry.cpp:699 msgid "undo_action|Raise" -msgstr "" +msgstr "הרמה" -#: ../src/selection-chemistry.cpp:664 +#: ../src/selection-chemistry.cpp:711 msgid "Select object(s) to raise to top." -msgstr "" +msgstr "בחר פריט/ים להגבהה כעליון/ים." -#: ../src/selection-chemistry.cpp:687 +#: ../src/selection-chemistry.cpp:734 msgid "Raise to top" -msgstr "" +msgstr "הגבה לעליון" -#: ../src/selection-chemistry.cpp:701 +#: ../src/selection-chemistry.cpp:747 msgid "Select object(s) to lower." -msgstr "" +msgstr "בחר פריט/ים להנמכה." -#: ../src/selection-chemistry.cpp:751 +#: ../src/selection-chemistry.cpp:797 msgid "Lower" -msgstr "" +msgstr "הנמך" -#: ../src/selection-chemistry.cpp:764 +#: ../src/selection-chemistry.cpp:809 msgid "Select object(s) to lower to bottom." -msgstr "" +msgstr "בחר פריט/ים להנמכה לתחתית." -#: ../src/selection-chemistry.cpp:799 +#: ../src/selection-chemistry.cpp:844 msgid "Lower to bottom" -msgstr "" +msgstr "הנמך לתחתית" -#: ../src/selection-chemistry.cpp:806 +#: ../src/selection-chemistry.cpp:851 msgid "Nothing to undo." -msgstr "" +msgstr "אין מה לבטל." -#: ../src/selection-chemistry.cpp:813 +#: ../src/selection-chemistry.cpp:858 msgid "Nothing to redo." -msgstr "" +msgstr "אין מה לבצע שוב.ל" -#: ../src/selection-chemistry.cpp:873 +#: ../src/selection-chemistry.cpp:918 msgid "Paste" msgstr "הדבק" -#: ../src/selection-chemistry.cpp:880 +#: ../src/selection-chemistry.cpp:925 msgid "Paste style" -msgstr "" +msgstr "הדבק סגנון" -#: ../src/selection-chemistry.cpp:889 +#: ../src/selection-chemistry.cpp:934 msgid "Paste live path effect" -msgstr "" +msgstr "הדבק אפקט נתיב חי" -#: ../src/selection-chemistry.cpp:909 -#, fuzzy +#: ../src/selection-chemistry.cpp:953 msgid "Select object(s) to remove live path effects from." -msgstr "בחר את האוביקטים שעליהם יווצר הגרדיאנט." +msgstr "בחר פריט/ים מהם יוסרו אפקטי הנתיב החיים." -#: ../src/selection-chemistry.cpp:921 +#: ../src/selection-chemistry.cpp:965 msgid "Remove live path effect" -msgstr "" +msgstr "הסר אפקט נתיב חי" -#: ../src/selection-chemistry.cpp:933 -#, fuzzy +#: ../src/selection-chemistry.cpp:976 msgid "Select object(s) to remove filters from." -msgstr "בחר את האוביקטים שעליהם יווצר הגרדיאנט." +msgstr "בחר פריטים מהם יש להסיר מסננים." -#: ../src/selection-chemistry.cpp:943 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1363 +#: ../src/selection-chemistry.cpp:986 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1376 msgid "Remove filter" -msgstr "" +msgstr "הסר מסנן" -#: ../src/selection-chemistry.cpp:952 +#: ../src/selection-chemistry.cpp:995 msgid "Paste size" -msgstr "" +msgstr "הדבק גודל" -#: ../src/selection-chemistry.cpp:960 +#: ../src/selection-chemistry.cpp:1003 msgid "Paste size separately" -msgstr "" +msgstr "הדבק את הגודל בנפרד" -#: ../src/selection-chemistry.cpp:971 +#: ../src/selection-chemistry.cpp:1012 msgid "Select object(s) to move to the layer above." -msgstr "" +msgstr "בחר פריט/ים להעברה לשכבה מעל." -#: ../src/selection-chemistry.cpp:996 +#: ../src/selection-chemistry.cpp:1038 msgid "Raise to next layer" -msgstr "" +msgstr "העלה לשכבה הבאה." -#: ../src/selection-chemistry.cpp:1002 +#: ../src/selection-chemistry.cpp:1045 msgid "No more layers above." -msgstr "" +msgstr "אין עוד שכבות מעל." -#: ../src/selection-chemistry.cpp:1016 +#: ../src/selection-chemistry.cpp:1057 msgid "Select object(s) to move to the layer below." -msgstr "" +msgstr "בחר פריט/ים להעברה לשכבה שמתחת." -#: ../src/selection-chemistry.cpp:1041 +#: ../src/selection-chemistry.cpp:1083 msgid "Lower to previous layer" -msgstr "" +msgstr "הנמך לשכבה הקודמת" -#: ../src/selection-chemistry.cpp:1047 +#: ../src/selection-chemistry.cpp:1090 msgid "No more layers below." -msgstr "" +msgstr "אין עוד שכבות מתחת." -#: ../src/selection-chemistry.cpp:1234 +#: ../src/selection-chemistry.cpp:1277 msgid "Remove transform" -msgstr "" +msgstr "הסרת שינוי הצורה" -#: ../src/selection-chemistry.cpp:1343 -msgid "Rotate 90° CW" -msgstr "" - -#: ../src/selection-chemistry.cpp:1367 +#: ../src/selection-chemistry.cpp:1380 msgid "Rotate 90° CCW" -msgstr "" +msgstr "סובב ב־90° נכ\"ש" -#: ../src/selection-chemistry.cpp:1388 ../src/seltrans.cpp:457 -#: ../src/ui/dialog/transformation.cpp:757 +#: ../src/selection-chemistry.cpp:1380 +msgid "Rotate 90° CW" +msgstr "סובב ב־90° עכ\"ש" + +#: ../src/selection-chemistry.cpp:1401 +#: ../src/seltrans.cpp:451 +#: ../src/ui/dialog/transformation.cpp:760 msgid "Rotate" -msgstr "" +msgstr "סובב" -#: ../src/selection-chemistry.cpp:1420 +#: ../src/selection-chemistry.cpp:1448 msgid "Rotate by pixels" -msgstr "" +msgstr "סובב לפי פיקסלים" -#: ../src/selection-chemistry.cpp:1475 +#: ../src/selection-chemistry.cpp:1503 msgid "Scale by whole factor" -msgstr "" +msgstr "התאם את המידות לפי מקדם שלם" -#: ../src/selection-chemistry.cpp:1491 +#: ../src/selection-chemistry.cpp:1518 msgid "Move vertically" -msgstr "" +msgstr "הזז אנכית" -#: ../src/selection-chemistry.cpp:1494 +#: ../src/selection-chemistry.cpp:1521 msgid "Move horizontally" -msgstr "" +msgstr "הזז אופקית" -#: ../src/selection-chemistry.cpp:1497 ../src/selection-chemistry.cpp:1525 -#: ../src/seltrans.cpp:451 ../src/ui/dialog/transformation.cpp:680 +#: ../src/selection-chemistry.cpp:1524 +#: ../src/selection-chemistry.cpp:1550 +#: ../src/seltrans.cpp:445 +#: ../src/ui/dialog/transformation.cpp:681 msgid "Move" msgstr "הזז" -#: ../src/selection-chemistry.cpp:1519 +#: ../src/selection-chemistry.cpp:1544 msgid "Move vertically by pixels" -msgstr "" +msgstr "הזז אנכית לפי פיקסלים" -#: ../src/selection-chemistry.cpp:1522 +#: ../src/selection-chemistry.cpp:1547 msgid "Move horizontally by pixels" -msgstr "" +msgstr "הזז אופקית לפי פיקסלים" -#: ../src/selection-chemistry.cpp:1650 +#: ../src/selection-chemistry.cpp:1675 msgid "The selection has no applied path effect." -msgstr "" +msgstr "על הבחירה לו הוחלו אפקטי נתיב." -#: ../src/selection-chemistry.cpp:1694 +#: ../src/selection-chemistry.cpp:1722 msgid "The selection has no applied clip path." -msgstr "" +msgstr "על הבחירה לו הוחל נתיב קליפ." -#: ../src/selection-chemistry.cpp:1696 +#: ../src/selection-chemistry.cpp:1724 msgid "The selection has no applied mask." -msgstr "" +msgstr "על הבחירה לו הוחלה מסכה." -#: ../src/selection-chemistry.cpp:1854 +#: ../src/selection-chemistry.cpp:1881 msgid "action|Clone" -msgstr "" +msgstr "action|כפילות" -#: ../src/selection-chemistry.cpp:1871 -msgid "Select a clone to unlink." -msgstr "" +#: ../src/selection-chemistry.cpp:1897 +msgid "Select clones to relink." +msgstr "בחר כפילים לקישור מחדש." + +#: ../src/selection-chemistry.cpp:1904 +msgid "Copy an object to clipboard to relink clones to." +msgstr "העתק פריט ללוח הגזירים כדי לקשר אליו את הכפילים מחדש." + +#: ../src/selection-chemistry.cpp:1928 +msgid "No clones to relink in the selection." +msgstr "אין כפילים לחיבור מחדש בבחירה." -#: ../src/selection-chemistry.cpp:1920 +#: ../src/selection-chemistry.cpp:1931 +msgid "Relink clone" +msgstr "קשר כפיל מחדש" + +#: ../src/selection-chemistry.cpp:1945 +msgid "Select clones to unlink." +msgstr "בחר כפילים לניתוק." + +#: ../src/selection-chemistry.cpp:1994 msgid "No clones to unlink in the selection." -msgstr "" +msgstr "אין כפילים לניתוק בבחירה." -#: ../src/selection-chemistry.cpp:1924 +#: ../src/selection-chemistry.cpp:1998 msgid "Unlink clone" -msgstr "" +msgstr "נתק כפיל" -#: ../src/selection-chemistry.cpp:1938 -msgid "" -"Select a clone to go to its original. Select a linked offset " -"to go to its source. Select a text on path to go to the path. Select " -"a flowed text to go to its frame." -msgstr "" +#: ../src/selection-chemistry.cpp:2011 +msgid "Select a clone to go to its original. Select a linked offset to go to its source. Select a text on path to go to the path. Select a flowed text to go to its frame." +msgstr "בחר כפיל כדי להגיע למקור שלו. בחר קיזוז מקושר כדי להגיע למקור שלו. בחר טקסט על נתיב כדי להגיע לנתיב. בחר טקסט צף כדי להגיע למסגרת שלו." -#: ../src/selection-chemistry.cpp:1961 -msgid "" -"Cannot find the object to select (orphaned clone, offset, textpath, " -"flowed text?)" -msgstr "" +#: ../src/selection-chemistry.cpp:2034 +msgid "Cannot find the object to select (orphaned clone, offset, textpath, flowed text?)" +msgstr "לא ניתן למצוא את הפריט לבחירה (כפיל יתום, קיזוז, נתיב טקסט, טקסט צף?)" -#: ../src/selection-chemistry.cpp:1967 -msgid "" -"The object you're trying to select is not visible (it is in <" -"defs>)" -msgstr "" +#: ../src/selection-chemistry.cpp:2040 +msgid "The object you're trying to select is not visible (it is in <defs>)" +msgstr "הפריט שאתה מנסה לבחור הינו בלתי נראה (זה ב־ <defs>)" -#: ../src/selection-chemistry.cpp:1995 +#: ../src/selection-chemistry.cpp:2086 msgid "Select object(s) to convert to marker." -msgstr "" +msgstr "בחר פריט/ים להמרה לסמנים." -#: ../src/selection-chemistry.cpp:2061 +#: ../src/selection-chemistry.cpp:2154 msgid "Objects to marker" -msgstr "" +msgstr "פריטים לסמנים" -#: ../src/selection-chemistry.cpp:2090 -#, fuzzy +#: ../src/selection-chemistry.cpp:2182 msgid "Select object(s) to convert to guides." -msgstr "בחר את האוביקטים שעליהם יווצר הגרדיאנט." +msgstr "בחר את הפריט/ים להמרה לנתיבים." -#: ../src/selection-chemistry.cpp:2101 +#: ../src/selection-chemistry.cpp:2194 msgid "Objects to guides" -msgstr "" +msgstr "פריטים לנתיבים" -#: ../src/selection-chemistry.cpp:2118 +#: ../src/selection-chemistry.cpp:2210 msgid "Select object(s) to convert to pattern." -msgstr "" +msgstr "בחר פריט/ים להמרה לתבנית." -#: ../src/selection-chemistry.cpp:2205 +#: ../src/selection-chemistry.cpp:2298 msgid "Objects to pattern" -msgstr "" +msgstr "פריטים לתבנית" -#: ../src/selection-chemistry.cpp:2222 +#: ../src/selection-chemistry.cpp:2314 msgid "Select an object with pattern fill to extract objects from." -msgstr "" +msgstr "בחר פריט עם תבנית מילוי כדי לחלץ ממנו פריטים." -#: ../src/selection-chemistry.cpp:2275 +#: ../src/selection-chemistry.cpp:2367 msgid "No pattern fills in the selection." -msgstr "" +msgstr "אין תבנית מילוי בבחירה." -#: ../src/selection-chemistry.cpp:2278 +#: ../src/selection-chemistry.cpp:2370 msgid "Pattern to objects" -msgstr "" +msgstr "תבנית לפריטים" -#: ../src/selection-chemistry.cpp:2364 +#: ../src/selection-chemistry.cpp:2455 msgid "Select object(s) to make a bitmap copy." -msgstr "" +msgstr "בחר פריט/ים מהם יעשה עותק מפת סיביות." -#: ../src/selection-chemistry.cpp:2368 -#, fuzzy +#: ../src/selection-chemistry.cpp:2459 msgid "Rendering bitmap..." -msgstr "רנדר" +msgstr "מעבד מפת סיביות..." -#: ../src/selection-chemistry.cpp:2530 +#: ../src/selection-chemistry.cpp:2623 msgid "Create bitmap" -msgstr "" +msgstr "צור מפת סיביות" -#: ../src/selection-chemistry.cpp:2563 +#: ../src/selection-chemistry.cpp:2655 msgid "Select object(s) to create clippath or mask from." -msgstr "" +msgstr "בחר פריט/ים מהם יווצר נתיב קליפ או מסכה." -#: ../src/selection-chemistry.cpp:2566 +#: ../src/selection-chemistry.cpp:2658 msgid "Select mask object and object(s) to apply clippath or mask to." -msgstr "" +msgstr "בחר פריט מסכה ופריט/ים כדי להחיל עליהם נתיב קליפ או מסכה." -#: ../src/selection-chemistry.cpp:2672 +#: ../src/selection-chemistry.cpp:2765 msgid "Set clipping path" -msgstr "" +msgstr "בחר נתיב קליפ" -#: ../src/selection-chemistry.cpp:2674 +#: ../src/selection-chemistry.cpp:2767 msgid "Set mask" -msgstr "" +msgstr "הגדר מסכה" -#: ../src/selection-chemistry.cpp:2688 +#: ../src/selection-chemistry.cpp:2780 msgid "Select object(s) to remove clippath or mask from." -msgstr "" +msgstr "בחר פריט/ים מהם יוסרו נתיב קליפ או מסכה." -#: ../src/selection-chemistry.cpp:2756 +#: ../src/selection-chemistry.cpp:2853 msgid "Release clipping path" -msgstr "" +msgstr "שחרר נתיב קליפ" -#: ../src/selection-chemistry.cpp:2758 +#: ../src/selection-chemistry.cpp:2855 msgid "Release mask" -msgstr "" +msgstr "שחרר מסכה" -#: ../src/selection-chemistry.cpp:2769 +#: ../src/selection-chemistry.cpp:2871 msgid "Select object(s) to fit canvas to." -msgstr "" +msgstr "בחר פריט/ים אליהם יותאם לוח הציור." -#: ../src/selection-chemistry.cpp:2803 -msgid "Fit page to selection" -msgstr "" +#. Fit Page +#: ../src/selection-chemistry.cpp:2891 +#: ../src/verbs.cpp:2695 +msgid "Fit Page to Selection" +msgstr "התאם עמוד לבחירה" + +#: ../src/selection-chemistry.cpp:2916 +#: ../src/verbs.cpp:2697 +msgid "Fit Page to Drawing" +msgstr "התאם את העמוד לציור" + +#: ../src/selection-chemistry.cpp:2932 +#: ../src/verbs.cpp:2699 +msgid "Fit Page to Selection or Drawing" +msgstr "התאם את העמוד לבחירה או לציור" #. TRANSLATORS: only translate and put "Link" in the translation. It means internet link (anchor) #: ../src/selection-describer.cpp:43 msgid "web|Link" -msgstr "" +msgstr "קישור" #: ../src/selection-describer.cpp:45 msgid "Circle" msgstr "מעגל" #. ellipse -#: ../src/selection-describer.cpp:47 ../src/selection-describer.cpp:73 -#: ../src/ui/dialog/inkscape-preferences.cpp:424 ../src/verbs.cpp:2425 +#: ../src/selection-describer.cpp:47 +#: ../src/selection-describer.cpp:73 +#: ../src/ui/dialog/inkscape-preferences.cpp:432 +#: ../src/verbs.cpp:2486 +#: ../src/widgets/toolbox.cpp:3427 msgid "Ellipse" msgstr "אליפסה" #: ../src/selection-describer.cpp:49 msgid "Flowed text" -msgstr "" +msgstr "טקסט צף" #: ../src/selection-describer.cpp:55 msgid "Line" @@ -7538,1187 +7970,1202 @@ msgstr "קו" #: ../src/selection-describer.cpp:57 msgid "Path" -msgstr "" +msgstr "נתיב" -#: ../src/selection-describer.cpp:59 ../src/widgets/toolbox.cpp:2028 +#: ../src/selection-describer.cpp:59 +#: ../src/widgets/toolbox.cpp:2263 msgid "Polygon" -msgstr "פוליגון" +msgstr "מצולע" #: ../src/selection-describer.cpp:61 msgid "Polyline" -msgstr "" +msgstr "קו משופע" #. Rectangle #: ../src/selection-describer.cpp:63 -#: ../src/ui/dialog/inkscape-preferences.cpp:414 ../src/verbs.cpp:2421 +#: ../src/ui/dialog/inkscape-preferences.cpp:422 +#: ../src/verbs.cpp:2482 msgid "Rectangle" -msgstr "מלבן" +msgstr "מרובע" #. 3D box #: ../src/selection-describer.cpp:65 -#: ../src/ui/dialog/inkscape-preferences.cpp:419 ../src/verbs.cpp:2423 +#: ../src/ui/dialog/inkscape-preferences.cpp:427 +#: ../src/verbs.cpp:2484 msgid "3D Box" -msgstr "" +msgstr "תיבה תלת מימדית" #: ../src/selection-describer.cpp:71 msgid "object|Clone" -msgstr "" +msgstr "object|כפילות" #: ../src/selection-describer.cpp:75 msgid "Offset path" -msgstr "" +msgstr "קיזוז נתיב" #. spiral #: ../src/selection-describer.cpp:77 -#: ../src/ui/dialog/inkscape-preferences.cpp:432 ../src/verbs.cpp:2429 +#: ../src/ui/dialog/inkscape-preferences.cpp:440 +#: ../src/verbs.cpp:2490 msgid "Spiral" -msgstr "" +msgstr "ספירלה" #. star #: ../src/selection-describer.cpp:79 -#: ../src/ui/dialog/inkscape-preferences.cpp:428 ../src/verbs.cpp:2427 -#: ../src/widgets/toolbox.cpp:2035 +#: ../src/ui/dialog/inkscape-preferences.cpp:436 +#: ../src/verbs.cpp:2488 +#: ../src/widgets/toolbox.cpp:2270 msgid "Star" -msgstr "" +msgstr "כוכב" -#: ../src/selection-describer.cpp:107 +#: ../src/selection-describer.cpp:115 msgid "Click selection to toggle scale/rotation handles" -msgstr "" +msgstr "לחץ על הבחירה כדי להחליף בין ידיות הסיבוב ושינוי הגודל" #. no items -#: ../src/selection-describer.cpp:109 -msgid "" -"No objects selected. Click, Shift+click, or drag around objects to select." -msgstr "" +#: ../src/selection-describer.cpp:117 +msgid "No objects selected. Click, Shift+click, or drag around objects to select." +msgstr "לא נבחרו פריטים. לחץ, Shift+לחיצה, או גרור מסביב לפריטים כדי לבחור אותם." -#: ../src/selection-describer.cpp:118 +#: ../src/selection-describer.cpp:126 msgid "root" -msgstr "" +msgstr "מקור" -#: ../src/selection-describer.cpp:130 +#: ../src/selection-describer.cpp:138 #, c-format msgid "layer %s" -msgstr "" +msgstr "שכבה %s" -#: ../src/selection-describer.cpp:132 +#: ../src/selection-describer.cpp:140 #, c-format msgid "layer %s" -msgstr "" +msgstr "שכבה %s" -#: ../src/selection-describer.cpp:141 +#: ../src/selection-describer.cpp:149 #, c-format msgid "%s" -msgstr "" +msgstr "%s" -#: ../src/selection-describer.cpp:150 +#: ../src/selection-describer.cpp:158 #, c-format msgid " in %s" -msgstr "" +msgstr " תחת %s" -#: ../src/selection-describer.cpp:152 +#: ../src/selection-describer.cpp:160 #, c-format msgid " in group %s (%s)" -msgstr "" +msgstr " תחת קבוצה %s (%s)" -#: ../src/selection-describer.cpp:154 +#: ../src/selection-describer.cpp:162 #, c-format msgid " in %i parents (%s)" msgid_plural " in %i parents (%s)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] " תחת %i הורים (%s)" +msgstr[1] " תחת %i הורים (%s)" -#: ../src/selection-describer.cpp:157 +#: ../src/selection-describer.cpp:165 #, c-format msgid " in %i layers" msgid_plural " in %i layers" -msgstr[0] "" -msgstr[1] "" +msgstr[0] " ב־%i שכבות" +msgstr[1] " ב־%i שכבות" -#: ../src/selection-describer.cpp:167 +#: ../src/selection-describer.cpp:175 msgid "Use Shift+D to look up original" -msgstr "" +msgstr "השתמש ב־Shift+D כדי לחפש את המקור" -#: ../src/selection-describer.cpp:171 +#: ../src/selection-describer.cpp:179 msgid "Use Shift+D to look up path" -msgstr "" +msgstr "השתמש ב־Shift+D כדי לחפש נתיב" -#: ../src/selection-describer.cpp:175 +#: ../src/selection-describer.cpp:183 msgid "Use Shift+D to look up frame" -msgstr "" +msgstr "השתמש ב־Shift+D כדי לחפש מסגרת" #. this is only used with 2 or more objects -#: ../src/selection-describer.cpp:190 +#: ../src/selection-describer.cpp:198 +#: ../src/tweak-context.cpp:204 #, c-format msgid "%i object selected" msgid_plural "%i objects selected" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "פריט %i נבחר" +msgstr[1] "נבחרו %i פריטים" #. this is only used with 2 or more objects -#: ../src/selection-describer.cpp:195 +#: ../src/selection-describer.cpp:203 #, c-format msgid "%i object of type %s" msgid_plural "%i objects of type %s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "פריט %i מסוג %s" +msgstr[1] "%i פריטים מסוג %s" #. this is only used with 2 or more objects -#: ../src/selection-describer.cpp:200 +#: ../src/selection-describer.cpp:208 #, c-format msgid "%i object of types %s, %s" msgid_plural "%i objects of types %s, %s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "פריט %i מסוג %s, %s" +msgstr[1] "%i פריטים מסוג %s, %s" #. this is only used with 2 or more objects -#: ../src/selection-describer.cpp:205 +#: ../src/selection-describer.cpp:213 #, c-format msgid "%i object of types %s, %s, %s" msgid_plural "%i objects of types %s, %s, %s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "פריט %i מסוג %s, %s, %s" +msgstr[1] "%i פריטים מסוג %s, %s, %s" #. this is only used with 2 or more objects -#: ../src/selection-describer.cpp:210 +#: ../src/selection-describer.cpp:218 #, c-format msgid "%i object of %i types" msgid_plural "%i objects of %i types" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "פריט %i מ־%i סוגים" +msgstr[1] "%i פריטים מ־%i סוגים" -#: ../src/selection-describer.cpp:215 +#: ../src/selection-describer.cpp:223 #, c-format msgid "%s%s. %s." -msgstr "" +msgstr "%s%s. %s." -#: ../src/seltrans.cpp:460 ../src/ui/dialog/transformation.cpp:815 +#: ../src/seltrans.cpp:454 +#: ../src/ui/dialog/transformation.cpp:819 msgid "Skew" -msgstr "" +msgstr "הטייה" -#: ../src/seltrans.cpp:472 +#: ../src/seltrans.cpp:466 msgid "Set center" -msgstr "" +msgstr "הגדר מרכז" -#: ../src/seltrans.cpp:569 -msgid "" -"Center of rotation and skewing: drag to reposition; scaling with " -"Shift also uses this center" -msgstr "" +#: ../src/seltrans.cpp:563 +msgid "Center of rotation and skewing: drag to reposition; scaling with Shift also uses this center" +msgstr "מרכז הסיבוב וההטייה: גרור כדי למקם מחדש; שינוי גודל עם Shift גם עושה שימוש במרכז זה" -#: ../src/seltrans.cpp:596 -msgid "" -"Squeeze or stretch selection; with Ctrl to scale uniformly; " -"with Shift to scale around rotation center" -msgstr "" +#: ../src/seltrans.cpp:590 +msgid "Squeeze or stretch selection; with Ctrl to scale uniformly; with Shift to scale around rotation center" +msgstr "דחוס או מתח את הבחירה; with Ctrl כדי לשנות גודל באופן אחיד; לחיצה על Shift כדי לשנות גודל מסביב למרכז הסיבוב" -#: ../src/seltrans.cpp:597 -msgid "" -"Scale selection; with Ctrl to scale uniformly; with Shift to scale around rotation center" -msgstr "" +#: ../src/seltrans.cpp:591 +msgid "Scale selection; with Ctrl to scale uniformly; with Shift to scale around rotation center" +msgstr "שנה את גודל הבחירה; לחיצה על Ctrl כדי לשנות גודל באופן אחיד; לחיצה על Shift כדי לשנות גודל מסביב למרכז הסיבוב" -#: ../src/seltrans.cpp:601 -msgid "" -"Skew selection; with Ctrl to snap angle; with Shift to " -"skew around the opposite side" -msgstr "" +#: ../src/seltrans.cpp:595 +msgid "Skew selection; with Ctrl to snap angle; with Shift to skew around the opposite side" +msgstr "הטה את הבחירה; לחיצה על Ctrl כדי להצמיד לזווית; לחיצה על Shift כדי להטות סביב הצד הנגדי" -#: ../src/seltrans.cpp:602 -msgid "" -"Rotate selection; with Ctrl to snap angle; with Shift " -"to rotate around the opposite corner" -msgstr "" +#: ../src/seltrans.cpp:596 +msgid "Rotate selection; with Ctrl to snap angle; with Shift to rotate around the opposite corner" +msgstr "סובב את הבחירה; לחיצה על Ctrl כדי להצמד לזווית; לחיצה על Shift to כדי לסובב סביב הפינה הנגדית" -#: ../src/seltrans.cpp:736 +#: ../src/seltrans.cpp:730 msgid "Reset center" -msgstr "" +msgstr "איפוס המרכז" -#: ../src/seltrans.cpp:980 ../src/seltrans.cpp:1079 +#: ../src/seltrans.cpp:975 +#: ../src/seltrans.cpp:1074 #, c-format msgid "Scale: %0.2f%% x %0.2f%%; with Ctrl to lock ratio" -msgstr "" +msgstr "שינוי גודל: %0.2f%% x %0.2f%%; לחיצה על Ctrl כדי לנעול יחס" #. TRANSLATORS: don't modify the first ";" #. (it will NOT be displayed as ";" - only the second one will be) -#: ../src/seltrans.cpp:1196 +#: ../src/seltrans.cpp:1186 #, c-format msgid "Skew: %0.2f°; with Ctrl to snap angle" -msgstr "" +msgstr "הטייה: %0.2f°; לחיצה על Ctrl כדי להצמיד לזווית" #. TRANSLATORS: don't modify the first ";" #. (it will NOT be displayed as ";" - only the second one will be) -#: ../src/seltrans.cpp:1255 +#: ../src/seltrans.cpp:1246 #, c-format msgid "Rotate: %0.2f°; with Ctrl to snap angle" -msgstr "" +msgstr "סיבוב: %0.2f°; לחיצה על Ctrl כדי להצמיד לזווית" -#: ../src/seltrans.cpp:1296 +#: ../src/seltrans.cpp:1287 #, c-format msgid "Move center to %s, %s" -msgstr "" +msgstr "הזז את המרכז אל %s, %s" -#: ../src/seltrans.cpp:1457 +#: ../src/seltrans.cpp:1450 #, c-format -msgid "" -"Move by %s, %s; with Ctrl to restrict to horizontal/vertical; " -"with Shift to disable snapping" -msgstr "" +msgid "Move by %s, %s; with Ctrl to restrict to horizontal/vertical; with Shift to disable snapping" +msgstr "הזז ב־%s, %s; לחיצה עלCtrl כדי להגביל אנכית/אופקית; לחיצה על Shift כדי לבטל הצמדה" -#: ../src/shape-editor.cpp:397 +#: ../src/shape-editor.cpp:477 msgid "Drag curve" -msgstr "" +msgstr "גרור עקומה" #: ../src/sp-anchor.cpp:178 #, c-format msgid "Link to %s" -msgstr "" +msgstr "קשר אל %s" #: ../src/sp-anchor.cpp:182 msgid "Link without URI" -msgstr "" +msgstr "קשר ללא מיקום אחיד" -#: ../src/sp-ellipse.cpp:494 ../src/sp-ellipse.cpp:873 +#: ../src/sp-ellipse.cpp:466 +#: ../src/sp-ellipse.cpp:845 msgid "Ellipse" msgstr "אליפסה" -#: ../src/sp-ellipse.cpp:635 +#: ../src/sp-ellipse.cpp:607 msgid "Circle" msgstr "מעגל" -#: ../src/sp-ellipse.cpp:868 +#: ../src/sp-ellipse.cpp:840 msgid "Segment" -msgstr "" +msgstr "מקטע" -#: ../src/sp-ellipse.cpp:870 +#: ../src/sp-ellipse.cpp:842 msgid "Arc" msgstr "קשת" #. TRANSLATORS: "Flow region" is an area where text is allowed to flow -#: ../src/sp-flowregion.cpp:269 +#: ../src/sp-flowregion.cpp:273 +#, c-format msgid "Flow region" -msgstr "" +msgstr "אזור ציפה" #. TRANSLATORS: A region "cut out of" a flow region; text is not allowed to flow inside the #. * flow excluded region. flowRegionExclude in SVG 1.2: see #. * http://www.w3.org/TR/2004/WD-SVG12-20041027/flow.html#flowRegion-elem and #. * http://www.w3.org/TR/2004/WD-SVG12-20041027/flow.html#flowRegionExclude-elem. -#: ../src/sp-flowregion.cpp:488 +#: ../src/sp-flowregion.cpp:492 +#, c-format msgid "Flow excluded region" -msgstr "" +msgstr "אזור אל־ציפה" #: ../src/sp-flowtext.cpp:377 #, c-format msgid "Flowed text (%d character)" msgid_plural "Flowed text (%d characters)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "טקסט צף (תו %d)" +msgstr[1] "טקסט צף (%d תווים)" #: ../src/sp-flowtext.cpp:379 #, c-format msgid "Linked flowed text (%d character)" msgid_plural "Linked flowed text (%d characters)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "טקסט צף מקושר (תו %d)" +msgstr[1] "טקסט צף מקושר (%d תווים)" -#: ../src/sp-guide.cpp:285 +#: ../src/sp-guide.cpp:287 msgid "Guides around page" -msgstr "" +msgstr "קווים מנחים מסביב לעמוד" -#: ../src/sp-guide.cpp:418 +#: ../src/sp-guide.cpp:420 #, c-format msgid "vertical, at %s" -msgstr "" +msgstr "אנכי, ב־%s" -#: ../src/sp-guide.cpp:421 +#: ../src/sp-guide.cpp:423 #, c-format msgid "horizontal, at %s" -msgstr "" +msgstr "אופקי, ב־%s" -#: ../src/sp-guide.cpp:426 +#: ../src/sp-guide.cpp:428 #, c-format msgid "at %d degrees, through (%s,%s); Ctrl+click to delete" -msgstr "" +msgstr "ב־%d מעלות, דרך (%s,%s); Ctrl+לחיצה למחיקה" -#: ../src/sp-image.cpp:1098 +#: ../src/sp-image.cpp:1101 msgid "embedded" -msgstr "" +msgstr "מוטמע" -#: ../src/sp-image.cpp:1106 +#: ../src/sp-image.cpp:1109 #, c-format msgid "Image with bad reference: %s" -msgstr "" +msgstr "תמונה בעלת הפניה שבורה: %s" -#: ../src/sp-image.cpp:1107 +#: ../src/sp-image.cpp:1110 #, c-format msgid "Image %d × %d: %s" -msgstr "" +msgstr "תמונה %d × %d: %s" -#: ../src/spiral-context.cpp:341 +#: ../src/spiral-context.cpp:343 msgid "Ctrl: snap angle" -msgstr "" +msgstr "Ctrl: הצמד לזווית" -#: ../src/spiral-context.cpp:343 +#: ../src/spiral-context.cpp:345 msgid "Alt: lock spiral radius" -msgstr "" +msgstr "Alt: נעל את הרדיוס הספירלי" -#: ../src/spiral-context.cpp:466 +#: ../src/spiral-context.cpp:471 #, c-format -msgid "" -"Spiral: radius %s, angle %5g°; with Ctrl to snap angle" -msgstr "" +msgid "Spiral: radius %s, angle %5g°; with Ctrl to snap angle" +msgstr "ספירלה: רדיוס %s, זוית %5g°; לחיצה על Ctrl כדי להצמיד לזווית" -#: ../src/spiral-context.cpp:487 +#: ../src/spiral-context.cpp:492 msgid "Create spiral" -msgstr "" +msgstr "צור ספירלה" -#: ../src/sp-item.cpp:959 +#: ../src/sp-item.cpp:1025 msgid "Object" -msgstr "" +msgstr "פריט" -#: ../src/sp-item.cpp:976 +#: ../src/sp-item.cpp:1042 #, c-format msgid "%s; clipped" -msgstr "" +msgstr "%s; עם קליפ" -#: ../src/sp-item.cpp:981 +#: ../src/sp-item.cpp:1047 #, c-format msgid "%s; masked" -msgstr "" +msgstr "%s; במסכה" -#: ../src/sp-item.cpp:986 +#: ../src/sp-item.cpp:1052 #, c-format msgid "%s; filtered" -msgstr "" +msgstr "%s; מסוננים" -#: ../src/sp-item-group.cpp:738 +#: ../src/sp-item-group.cpp:745 #, c-format msgid "Group of %d object" msgid_plural "Group of %d objects" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "קבוצה בעלת פריט %d" +msgstr[1] "קבוצה בעלת %d פריטים" #: ../src/sp-line.cpp:188 msgid "Line" -msgstr "" - -#: ../src/splivarot.cpp:71 ../src/splivarot.cpp:77 -msgid "Union" -msgstr "" +msgstr "שורה" -#: ../src/splivarot.cpp:83 +#: ../src/splivarot.cpp:78 msgid "Intersection" -msgstr "" +msgstr "הצטלבות" -#: ../src/splivarot.cpp:89 ../src/splivarot.cpp:95 +#: ../src/splivarot.cpp:84 +#: ../src/splivarot.cpp:90 msgid "Difference" -msgstr "" +msgstr "הבדל" #: ../src/splivarot.cpp:101 -msgid "Exclusion" -msgstr "" - -#: ../src/splivarot.cpp:106 msgid "Division" -msgstr "" +msgstr "חלוקה" -#: ../src/splivarot.cpp:111 +#: ../src/splivarot.cpp:106 msgid "Cut path" -msgstr "" +msgstr "חיתוך נתיב" -#: ../src/splivarot.cpp:128 +#: ../src/splivarot.cpp:121 msgid "Select at least 2 paths to perform a boolean operation." -msgstr "" +msgstr "בחר לפחות שני נתיבים על מנת לבצע עליהם פעולה בוליאנית." -#: ../src/splivarot.cpp:132 +#: ../src/splivarot.cpp:125 msgid "Select at least 1 path to perform a boolean union." -msgstr "" +msgstr "בחר לפחות נתיב אחד על מנת לבצע עליו איחוד בוליאני." -#: ../src/splivarot.cpp:138 -msgid "" -"Select exactly 2 paths to perform difference, XOR, division, or path " -"cut." -msgstr "" +#: ../src/splivarot.cpp:131 +msgid "Select exactly 2 paths to perform difference, XOR, division, or path cut." +msgstr "בחר שני נתיבים בדיוק כדי לבצע הבדל, XOR, חלוקה, או חיתוך נתיב." -#: ../src/splivarot.cpp:155 ../src/splivarot.cpp:170 -msgid "" -"Unable to determine the z-order of the objects selected for " -"difference, XOR, division, or path cut." -msgstr "" +#: ../src/splivarot.cpp:148 +#: ../src/splivarot.cpp:163 +msgid "Unable to determine the z-order of the objects selected for difference, XOR, division, or path cut." +msgstr "לא ניתן לאתר את הסדר המימדי של הפריטים שנבחרו לביצוע, XOR, חלוקה, או חיתוך נתיב." -#: ../src/splivarot.cpp:200 -msgid "" -"One of the objects is not a path, cannot perform boolean operation." -msgstr "" +#: ../src/splivarot.cpp:193 +msgid "One of the objects is not a path, cannot perform boolean operation." +msgstr "אחד הפריטים הוא איננו נתיב, לא ניתן לבצע פעולה בוליאנית." -#: ../src/splivarot.cpp:610 +#: ../src/splivarot.cpp:634 msgid "Select stroked path(s) to convert stroke to path." -msgstr "" +msgstr "בחר נתיב/י קו מתאר כדי להמיר קו מתאר לנתיב." -#: ../src/splivarot.cpp:894 +#: ../src/splivarot.cpp:949 msgid "Convert stroke to path" -msgstr "" +msgstr "המר קו מתאר לנתיב" #. TRANSLATORS: "to outline" means "to convert stroke to path" -#: ../src/splivarot.cpp:897 +#: ../src/splivarot.cpp:952 msgid "No stroked paths in the selection." -msgstr "" +msgstr "אין כל נתיבים בעלי קו מתאר בבחירה." -#: ../src/splivarot.cpp:981 +#: ../src/splivarot.cpp:1035 msgid "Selected object is not a path, cannot inset/outset." -msgstr "" +msgstr "הפריט הנבחר הוא אינו נתיב, לא ניתן לצמצם/להרחיב." -#: ../src/splivarot.cpp:1101 ../src/splivarot.cpp:1170 +#: ../src/splivarot.cpp:1154 +#: ../src/splivarot.cpp:1223 msgid "Create linked offset" -msgstr "" +msgstr "צור קיזוז מקושר" -#: ../src/splivarot.cpp:1102 ../src/splivarot.cpp:1171 +#: ../src/splivarot.cpp:1155 +#: ../src/splivarot.cpp:1224 msgid "Create dynamic offset" -msgstr "" +msgstr "צור קיזוז דינמי" -#: ../src/splivarot.cpp:1198 +#: ../src/splivarot.cpp:1249 msgid "Select path(s) to inset/outset." -msgstr "" +msgstr "בחר נתיב/ים להרחיב/לצמצם." -#: ../src/splivarot.cpp:1416 +#: ../src/splivarot.cpp:1467 msgid "Outset path" -msgstr "" +msgstr "הרחב נתיב" -#: ../src/splivarot.cpp:1416 +#: ../src/splivarot.cpp:1467 msgid "Inset path" -msgstr "" +msgstr "צמצם נתיב" -#: ../src/splivarot.cpp:1418 +#: ../src/splivarot.cpp:1469 msgid "No paths to inset/outset in the selection." -msgstr "" +msgstr "אין נתיבים לצימצום/הרחבת הבחירה." -#: ../src/splivarot.cpp:1579 +#: ../src/splivarot.cpp:1644 msgid "Simplifying paths (separately):" -msgstr "" +msgstr "מפשט נתיבים (בנפרד):" -#: ../src/splivarot.cpp:1581 +#: ../src/splivarot.cpp:1646 msgid "Simplifying paths:" -msgstr "" +msgstr "מפשט נתיבים:" -#: ../src/splivarot.cpp:1618 +#: ../src/splivarot.cpp:1683 #, c-format msgid "%s %d of %d paths simplified..." -msgstr "" +msgstr "%s %d מתוך %d נתיבים הופשטו..." -#: ../src/splivarot.cpp:1629 +#: ../src/splivarot.cpp:1695 #, c-format msgid "%d paths simplified." -msgstr "" +msgstr "%d נתיבים הופשטו." -#: ../src/splivarot.cpp:1645 +#: ../src/splivarot.cpp:1709 msgid "Select path(s) to simplify." -msgstr "" +msgstr "בחר נתיב/ים להפשטה." -#: ../src/splivarot.cpp:1659 +#: ../src/splivarot.cpp:1723 msgid "Simplify" msgstr "פשט" -#: ../src/splivarot.cpp:1661 +#: ../src/splivarot.cpp:1725 msgid "No paths to simplify in the selection." -msgstr "" +msgstr "אין נתיבים להפשטה בבחירה." + +#: ../src/sp-lpe-item.cpp:346 +msgid "An exception occurred during execution of the Path Effect." +msgstr "בוצעה חריגה בעת החלת האפקט על הנתיב." #. TRANSLATORS COMMENT: %s is either "outset" or "inset" depending on sign -#: ../src/sp-offset.cpp:432 +#: ../src/sp-offset.cpp:426 #, c-format msgid "Linked offset, %s by %f pt" -msgstr "" +msgstr "קיזוז מקושר, %s ב־%f נק'" -#: ../src/sp-offset.cpp:433 ../src/sp-offset.cpp:437 +#: ../src/sp-offset.cpp:427 +#: ../src/sp-offset.cpp:431 msgid "outset" -msgstr "" +msgstr "הרחב" -#: ../src/sp-offset.cpp:433 ../src/sp-offset.cpp:437 +#: ../src/sp-offset.cpp:427 +#: ../src/sp-offset.cpp:431 msgid "inset" -msgstr "" +msgstr "צמצם" #. TRANSLATORS COMMENT: %s is either "outset" or "inset" depending on sign -#: ../src/sp-offset.cpp:436 +#: ../src/sp-offset.cpp:430 #, c-format msgid "Dynamic offset, %s by %f pt" -msgstr "" +msgstr "קיזוז דינמי, %s ב־%f נק'" -#: ../src/sp-path.cpp:135 +#: ../src/sp-path.cpp:136 #, c-format msgid "Path (%i node, path effect)" msgid_plural "Path (%i nodes, path effect)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "נתיב (מפרק %i, אפקט נתיב)" +msgstr[1] "נתיב (%i מפרקים, אפקט נתיב)" -#: ../src/sp-path.cpp:138 +#: ../src/sp-path.cpp:139 #, c-format msgid "Path (%i node)" msgid_plural "Path (%i nodes)" -msgstr[0] "" -msgstr[1] "" - -#: ../src/sp-path.cpp:540 -#, fuzzy -msgid "Creating single dot" -msgstr "צור מחבר חדש" - -#: ../src/sp-path.cpp:541 -#, fuzzy -msgid "Create single dot" -msgstr "צור מחבר חדש" +msgstr[0] "נתיב (מפרק %i)" +msgstr[1] "נתיב (%i מפרקים)" -#: ../src/sp-polygon.cpp:235 +#: ../src/sp-polygon.cpp:226 msgid "Polygon" -msgstr "" +msgstr "מצולע" #: ../src/sp-polyline.cpp:177 msgid "Polyline" -msgstr "" +msgstr "קו שבור" -#: ../src/sp-rect.cpp:226 +#: ../src/sp-rect.cpp:225 msgid "Rectangle" -msgstr "" +msgstr "מרובע" #. TRANSLATORS: since turn count isn't an integer, please adjust the #. string as needed to deal with an localized plural forms. #: ../src/sp-spiral.cpp:324 #, c-format msgid "Spiral with %3f turns" -msgstr "" +msgstr "ספירלה בעלת %3f פניות" #: ../src/sp-star.cpp:307 #, c-format msgid "Star with %d vertex" msgid_plural "Star with %d vertices" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "כוכב בעל קודקוד %d" +msgstr[1] "כוכב בעל %d קודקודים" #: ../src/sp-star.cpp:311 #, c-format msgid "Polygon with %d vertex" msgid_plural "Polygon with %d vertices" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "מצולע בעל קודקוד %d" +msgstr[1] "מצולע בעל %d קודקודים" #: ../src/sp-switch.cpp:100 #, c-format msgid "Conditional group of %d object" msgid_plural "Conditional group of %d objects" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "קבוצה מותנית בעלת פריט %d" +msgstr[1] "קבוצה מותנית בעלת %d פריטים" #. TRANSLATORS: For description of font with no name. -#: ../src/sp-text.cpp:414 +#: ../src/sp-text.cpp:419 msgid "<no name found>" -msgstr "" +msgstr "<שם לא נמצא>" -#: ../src/sp-text.cpp:420 +#: ../src/sp-text.cpp:425 #, c-format msgid "Text on path (%s, %s)" -msgstr "" +msgstr "טקסט על נתיב (%s, %s)" -#: ../src/sp-text.cpp:421 +#: ../src/sp-text.cpp:426 #, c-format msgid "Text (%s, %s)" -msgstr "" +msgstr "טקסט (%s, %s)" #: ../src/sp-tref.cpp:368 #, c-format msgid "Cloned character data%s%s" -msgstr "" +msgstr "נתוני תו משוכפל%s%s" #: ../src/sp-tref.cpp:369 msgid " from " -msgstr "" +msgstr " מאת " #: ../src/sp-tref.cpp:374 msgid "Orphaned cloned character data" -msgstr "" +msgstr "נתוני תו משוכפלים יתומים" #: ../src/sp-tspan.cpp:284 msgid "Text span" -msgstr "" +msgstr "פריסת שורות" #. TRANSLATORS: Used for statusbar description for long chains: #. * "Clone of: Clone of: ... in Layer 1". -#: ../src/sp-use.cpp:318 +#: ../src/sp-use.cpp:327 msgid "..." -msgstr "" +msgstr "..." -#: ../src/sp-use.cpp:326 +#: ../src/sp-use.cpp:335 #, c-format msgid "Clone of: %s" -msgstr "" +msgstr "כפיל של: %s" -#: ../src/sp-use.cpp:330 +#: ../src/sp-use.cpp:339 msgid "Orphaned clone" -msgstr "" +msgstr "כפיל יתום" -#: ../src/star-context.cpp:352 +#: ../src/star-context.cpp:355 msgid "Ctrl: snap angle; keep rays radial" -msgstr "" +msgstr "Ctrl: הצמד לזווית; השאר את הקרניים מעוגלות" -#: ../src/star-context.cpp:476 +#: ../src/star-context.cpp:481 #, c-format -msgid "" -"Polygon: radius %s, angle %5g°; with Ctrl to snap angle" -msgstr "" +msgid "Polygon: radius %s, angle %5g°; with Ctrl to snap angle" +msgstr "מצולע: רדיוס %s, זווית %5g°; לחצו על Ctrl להצמדה לזווית" -#: ../src/star-context.cpp:477 +#: ../src/star-context.cpp:482 #, c-format msgid "Star: radius %s, angle %5g°; with Ctrl to snap angle" -msgstr "" +msgstr "כוכב : רדיוס %s, זווית %5g°; לחצו על Ctrl כדי להצמיד לזווית" -#: ../src/star-context.cpp:500 +#: ../src/star-context.cpp:505 msgid "Create star" -msgstr "" +msgstr "צור כוכב" #: ../src/text-chemistry.cpp:104 msgid "Select a text and a path to put text on path." -msgstr "" +msgstr "בחר טקסט ונתיב כדי לשים טקסט על נתיב." #: ../src/text-chemistry.cpp:109 -msgid "" -"This text object is already put on a path. Remove it from the path " -"first. Use Shift+D to look up its path." -msgstr "" +msgid "This text object is already put on a path. Remove it from the path first. Use Shift+D to look up its path." +msgstr "פריט טקסט זה כבר נמצא על נתיב. הסר אותו מהנתיב הראשון תחילה. השתמשו ב־ Shift+D כדי לחפש אחר הנתיב שלו." #. rect is the only SPShape which is not yet, and thus SVG forbids us from putting text on it #: ../src/text-chemistry.cpp:115 -msgid "" -"You cannot put text on a rectangle in this version. Convert rectangle to " -"path first." -msgstr "" +msgid "You cannot put text on a rectangle in this version. Convert rectangle to path first." +msgstr "לא ניתן לשים טקסט על מרובע בגירסה זו. המר את המרובע לנתיב תחילה." #: ../src/text-chemistry.cpp:125 msgid "The flowed text(s) must be visible in order to be put on a path." -msgstr "" +msgstr "הטקסט/ים המוזרמים חייבים להיות נראים כדי להצמיד אותם לנתיב" -#: ../src/text-chemistry.cpp:192 ../src/verbs.cpp:2283 +#: ../src/text-chemistry.cpp:192 +#: ../src/verbs.cpp:2340 msgid "Put text on path" -msgstr "" +msgstr "שים טקסט על נתיב" #: ../src/text-chemistry.cpp:204 msgid "Select a text on path to remove it from path." -msgstr "" +msgstr "בחר בטקסט על נתיב כדי להסיר אותו מהנתיב." #: ../src/text-chemistry.cpp:226 msgid "No texts-on-paths in the selection." -msgstr "" +msgstr "אין טקסטים על נתיבים בבחירה." -#: ../src/text-chemistry.cpp:229 ../src/verbs.cpp:2285 +#: ../src/text-chemistry.cpp:229 +#: ../src/verbs.cpp:2342 msgid "Remove text from path" -msgstr "" +msgstr "הסר טקסט מנתיב" -#: ../src/text-chemistry.cpp:269 ../src/text-chemistry.cpp:290 +#: ../src/text-chemistry.cpp:269 +#: ../src/text-chemistry.cpp:290 msgid "Select text(s) to remove kerns from." -msgstr "" +msgstr "בחר טקסט/ים מהם יש להסיר ריווח אותיות." #: ../src/text-chemistry.cpp:293 msgid "Remove manual kerns" -msgstr "" +msgstr "הסר ריווח אותיות ידני" #: ../src/text-chemistry.cpp:313 -msgid "" -"Select a text and one or more paths or shapes to flow text " -"into frame." -msgstr "" +msgid "Select a text and one or more paths or shapes to flow text into frame." +msgstr "בחר טקסט ונתיב או צורה אחדים או רבים כדי לגרום לטקסט לצוף אל תוך המסגרת." #: ../src/text-chemistry.cpp:381 msgid "Flow text into shape" -msgstr "" +msgstr "גרום לטקסט לצוף אל תוך הצורה" #: ../src/text-chemistry.cpp:403 msgid "Select a flowed text to unflow it." -msgstr "" +msgstr "בחר טקסט צף על מנת לבטל את ציפתו." #: ../src/text-chemistry.cpp:470 msgid "Unflow flowed text" -msgstr "" +msgstr "בטל ציפת טקסט צף" #: ../src/text-chemistry.cpp:482 msgid "Select flowed text(s) to convert." -msgstr "" +msgstr "בחר טקסט/ים מרחף/ים להמרה." #: ../src/text-chemistry.cpp:500 msgid "The flowed text(s) must be visible in order to be converted." -msgstr "" +msgstr "על הטקסט/ים הצפים להיות נראים על מנת שניתן יהי להמיר אותו/ם." #: ../src/text-chemistry.cpp:528 msgid "Convert flowed text to text" -msgstr "" +msgstr "המר טקסט צף לטקסט" #: ../src/text-chemistry.cpp:533 msgid "No flowed text(s) to convert in the selection." -msgstr "" +msgstr "אין טקסט/ים צף/ים להמרה בבחירה." -#: ../src/text-context.cpp:452 +#: ../src/text-context.cpp:461 msgid "Click to edit the text, drag to select part of the text." -msgstr "" +msgstr "לחץ כדי לערוך את הטקסט, גרור כדי לבחור חלק מהטקסט." -#: ../src/text-context.cpp:454 -msgid "" -"Click to edit the flowed text, drag to select part of the text." -msgstr "" +#: ../src/text-context.cpp:463 +msgid "Click to edit the flowed text, drag to select part of the text." +msgstr "לחץ כדי לערוך את הטקסט הצף, גרור כדי לבחור חלק מהטקסט." -#: ../src/text-context.cpp:508 +#: ../src/text-context.cpp:517 msgid "Create text" -msgstr "" +msgstr "צור טקסט" -#: ../src/text-context.cpp:532 +#: ../src/text-context.cpp:541 msgid "Non-printable character" -msgstr "" +msgstr "תו שאינו ניתן להדפסה" -#: ../src/text-context.cpp:547 +#: ../src/text-context.cpp:556 msgid "Insert Unicode character" -msgstr "" +msgstr "הזן תו יוניקוד" -#: ../src/text-context.cpp:582 +#: ../src/text-context.cpp:591 #, c-format msgid "Unicode (Enter to finish): %s: %s" -msgstr "" +msgstr "יוניקוד (Enter לסיום): %s: %s" -#: ../src/text-context.cpp:584 ../src/text-context.cpp:849 +#: ../src/text-context.cpp:593 +#: ../src/text-context.cpp:868 msgid "Unicode (Enter to finish): " -msgstr "" +msgstr "יוניקוד (Enter לסיום): " -#: ../src/text-context.cpp:659 +#: ../src/text-context.cpp:668 #, c-format msgid "Flowed text frame: %s × %s" -msgstr "" +msgstr "תבנית טקסט צף: %s × %s" -#: ../src/text-context.cpp:691 ../src/text-context.cpp:1544 +#: ../src/text-context.cpp:700 +#: ../src/text-context.cpp:1619 msgid "Type text; Enter to start new line." -msgstr "" +msgstr "הזן טקסט; Enter להתחלת שורה חדשה." -#: ../src/text-context.cpp:704 +#: ../src/text-context.cpp:713 msgid "Flowed text is created." -msgstr "" +msgstr "טקסט צף נוצר." -#: ../src/text-context.cpp:706 +#: ../src/text-context.cpp:715 msgid "Create flowed text" -msgstr "" +msgstr "צור טקסט צף" -#: ../src/text-context.cpp:708 -msgid "" -"The frame is too small for the current font size. Flowed text not " -"created." -msgstr "" +#: ../src/text-context.cpp:717 +msgid "The frame is too small for the current font size. Flowed text not created." +msgstr "המסגרת קטנה מדי עבור גודל הגופן הנוכחי. הטקסט הצף לא נוצר." -#: ../src/text-context.cpp:834 +#: ../src/text-context.cpp:853 msgid "No-break space" -msgstr "" +msgstr "רווח ללא עצירה" -#: ../src/text-context.cpp:836 +#: ../src/text-context.cpp:855 msgid "Insert no-break space" -msgstr "" +msgstr "הוסף רווח ללא עצירה" -#: ../src/text-context.cpp:873 +#: ../src/text-context.cpp:892 msgid "Make bold" -msgstr "" +msgstr "הפוך למודגש" -#: ../src/text-context.cpp:891 +#: ../src/text-context.cpp:910 msgid "Make italic" -msgstr "" +msgstr "הפוך לנטוי" -#: ../src/text-context.cpp:930 +#: ../src/text-context.cpp:949 msgid "New line" -msgstr "" +msgstr "שורה חדשה" -#: ../src/text-context.cpp:964 +#: ../src/text-context.cpp:983 msgid "Backspace" -msgstr "" +msgstr "מחק אחורה" -#: ../src/text-context.cpp:1012 +#: ../src/text-context.cpp:1031 msgid "Kern to the left" -msgstr "" +msgstr "הסט את הריווח לשמאל" -#: ../src/text-context.cpp:1034 +#: ../src/text-context.cpp:1056 msgid "Kern to the right" -msgstr "" +msgstr "הסט את הריווח לימין" -#: ../src/text-context.cpp:1056 +#: ../src/text-context.cpp:1081 msgid "Kern up" -msgstr "" +msgstr "רווח למעלה" -#: ../src/text-context.cpp:1079 +#: ../src/text-context.cpp:1107 msgid "Kern down" -msgstr "" +msgstr "רווח למטה" -#: ../src/text-context.cpp:1135 +#: ../src/text-context.cpp:1184 msgid "Rotate counterclockwise" -msgstr "" +msgstr "סובב נגד כיוון השעון" -#: ../src/text-context.cpp:1156 +#: ../src/text-context.cpp:1205 msgid "Rotate clockwise" -msgstr "" +msgstr "סובב עם כיוון השעון" -#: ../src/text-context.cpp:1173 +#: ../src/text-context.cpp:1222 msgid "Contract line spacing" -msgstr "" +msgstr "צמצם את מרווח השורות" -#: ../src/text-context.cpp:1181 +#: ../src/text-context.cpp:1230 msgid "Contract letter spacing" -msgstr "" +msgstr "צמצם את הרווח בין האותיות" -#: ../src/text-context.cpp:1200 +#: ../src/text-context.cpp:1249 msgid "Expand line spacing" -msgstr "" +msgstr "הרחב את הרווח שבין השורות" -#: ../src/text-context.cpp:1208 +#: ../src/text-context.cpp:1257 msgid "Expand letter spacing" -msgstr "" +msgstr "הרחב את הרווח שבין האותיות" -#: ../src/text-context.cpp:1312 +#: ../src/text-context.cpp:1384 msgid "Paste text" -msgstr "" +msgstr "הדבק טקסט" -#: ../src/text-context.cpp:1542 +#: ../src/text-context.cpp:1617 msgid "Type flowed text; Enter to start new paragraph." -msgstr "" +msgstr "הקלד טקסט צף; Enter כדי להתחיל פיסקה חדשה." -#: ../src/text-context.cpp:1552 ../src/tools-switch.cpp:211 -msgid "" -"Click to select or create text, drag to create flowed text; " -"then type." -msgstr "" +#: ../src/text-context.cpp:1627 +#: ../src/tools-switch.cpp:190 +msgid "Click to select or create text, drag to create flowed text; then type." +msgstr "לחץ לבחירה או צור טקסט, גרור ליצירת טקסט צף; ואז הקלד." -#: ../src/text-context.cpp:1659 +#: ../src/text-context.cpp:1737 msgid "Type text" -msgstr "" +msgstr "הקלד טקסט" #: ../src/text-editing.cpp:40 msgid "You cannot edit cloned character data." -msgstr "" +msgstr "אינך יכול לערוך נתוני תו משוכפלים." -#: ../src/tools-switch.cpp:151 -msgid "" -"To edit a path, click, Shift+click, or drag around " -"nodes to select them, then drag nodes and handles. Click on an " -"object to select." -msgstr "" +#: ../src/tools-switch.cpp:130 +msgid "To edit a path, click, Shift+click, or drag around nodes to select them, then drag nodes and handles. Click on an object to select." +msgstr "כדי לערוך נתיב, לחץ, Shift+לחיצה, או גרור מסביב למפרקים כדי לבחור אותם, ואז גרור את המפרקים והידיות. לחץ על פריט כדי לבחור אותו." -#: ../src/tools-switch.cpp:157 +#: ../src/tools-switch.cpp:136 msgid "To tweak a path by pushing, select it and drag over it." -msgstr "" +msgstr "כדי לצבוט נתיב על ידי דחיפה, בחר אותו וגרור מעליו." -#: ../src/tools-switch.cpp:163 -msgid "" -"Drag to create a rectangle. Drag controls to round corners and " -"resize. Click to select." -msgstr "" +#: ../src/tools-switch.cpp:142 +msgid "Drag to create a rectangle. Drag controls to round corners and resize. Click to select." +msgstr "גרור כדי ליצור מרובע. גרור את הפקדים כדי לעגל את הפינות ולשנות גודל. לחץ לבחירה." -#: ../src/tools-switch.cpp:169 -msgid "" -"Drag to create a 3D box. Drag controls to resize in " -"perspective. Click to select (with Ctrl+Alt for single faces)." -msgstr "" +#: ../src/tools-switch.cpp:148 +msgid "Drag to create a 3D box. Drag controls to resize in perspective. Click to select (with Ctrl+Alt for single faces)." +msgstr "גרור כדי ליצור תיבה תלת מימדית. גרור את הפקדים כדי לשנות גודל בפרספקטיבה. לחץ לבחירה (לחיצה על Ctrl+Alt לפאות בודדות)." -#: ../src/tools-switch.cpp:175 -msgid "" -"Drag to create an ellipse. Drag controls to make an arc or " -"segment. Click to select." -msgstr "" +#: ../src/tools-switch.cpp:154 +msgid "Drag to create an ellipse. Drag controls to make an arc or segment. Click to select." +msgstr "גרור כדי ליצור אליפסה. גרור את הפקדים כדי ליצור קשת או מקטע. לחץ לבחירה." -#: ../src/tools-switch.cpp:181 -msgid "" -"Drag to create a star. Drag controls to edit the star shape. " -"Click to select." -msgstr "" +#: ../src/tools-switch.cpp:160 +msgid "Drag to create a star. Drag controls to edit the star shape. Click to select." +msgstr "גרור כדי ליצור כטכב. גרור את הפקדים כדי לערוך את צורת הכוכב. לחץ לבחירה." -#: ../src/tools-switch.cpp:187 -msgid "" -"Drag to create a spiral. Drag controls to edit the spiral " -"shape. Click to select." -msgstr "" +#: ../src/tools-switch.cpp:166 +msgid "Drag to create a spiral. Drag controls to edit the spiral shape. Click to select." +msgstr "גרור כדי ליצור ספירלה. גרור את הפקדים כדי לערוך את צורת הספירלה. לחץ לבחירה." -#: ../src/tools-switch.cpp:193 -msgid "" -"Drag to create a freehand line. Start drawing with Shift to " -"append to selected path. Ctrl+click to create single dots." -msgstr "" +#: ../src/tools-switch.cpp:172 +msgid "Drag to create a freehand line. Start drawing with Shift to append to selected path. Ctrl+click to create single dots." +msgstr "גרור כדי ליצור קו ביד חופשית. התחל לצייר עם Shift כדי להצטרף לנתיב הנבחר. Ctrl+לחיצה כדי ליצור נקודות בודדות." -#: ../src/tools-switch.cpp:199 -msgid "" -"Click or click and drag to start a path; with Shift to " -"append to selected path. Ctrl+click to create single dots." -msgstr "" +#: ../src/tools-switch.cpp:178 +msgid "Click or click and drag to start a path; with Shift to append to selected path. Ctrl+click to create single dots." +msgstr "לחץ או לחץ וגרור כדי להתחיל נתיב; לחיצה על Shift כדי להצטרף לנתיב קיים. Ctrl+לחיצה כדי ליצור נקודות בודדות." -#: ../src/tools-switch.cpp:205 -msgid "" -"Drag to draw a calligraphic stroke; with Ctrl to track a " -"guide, with Alt to thin/thicken. Arrow keys adjust width (left/" -"right) and angle (up/down)." -msgstr "" +#: ../src/tools-switch.cpp:184 +msgid "Drag to draw a calligraphic stroke; with Ctrl to track a guide path. Arrow keys adjust width (left/right) and angle (up/down)." +msgstr "גרור כדי לצייר קו מתאר קליגרפי; לחיצה עלCtrl כדי לעקוב אחר קו מנחה, מקשי החיצים כדי להתאים את העובי (שמאלה/ימינה) ואת הזווית (למעלה/למטה)." -#: ../src/tools-switch.cpp:217 -msgid "" -"Drag or double click to create a gradient on selected objects, " -"drag handles to adjust gradients." -msgstr "" +#: ../src/tools-switch.cpp:196 +msgid "Drag or double click to create a gradient on selected objects, drag handles to adjust gradients." +msgstr "גרור או לחץ כפול כדי ליצור מדרג עבור הפריטים הנבחרים, גרור את הידיות כדי לכוונן את המדרגים." -#: ../src/tools-switch.cpp:223 -msgid "" -"Click or drag around an area to zoom in, Shift+click to " -"zoom out." -msgstr "" +#: ../src/tools-switch.cpp:202 +msgid "Click or drag around an area to zoom in, Shift+click to zoom out." +msgstr "לחץ או גרור מסביב לאזור כדי להתקרב אליו, Shift+לחיצה כדי להתרחק." -#: ../src/tools-switch.cpp:235 +#: ../src/tools-switch.cpp:214 msgid "Click and drag between shapes to create a connector." -msgstr "" +msgstr "לחץ וגרור בין צורות כדי ליצור מחבר." -#: ../src/tools-switch.cpp:241 -msgid "" -"Click to paint a bounded area, Shift+click to union the new " -"fill with the current selection, Ctrl+click to change the clicked " -"object's fill and stroke to the current setting." -msgstr "" +#: ../src/tools-switch.cpp:220 +msgid "Click to paint a bounded area, Shift+click to union the new fill with the current selection, Ctrl+click to change the clicked object's fill and stroke to the current setting." +msgstr "לחץ כדי לצבוע איזור תחום, Shift+לחיצה כדי לאחד את המילוי החדש עם הבחירה הנוכחית, Ctrl+לחיצה כדי לשנות את המילוי וקו המתאר של הפריט שנבחר להגדרות הנוכחיות." -#: ../src/tools-switch.cpp:247 +#: ../src/tools-switch.cpp:226 msgid "Drag to erase." -msgstr "" +msgstr "גרור למחיקה." + +#: ../src/tools-switch.cpp:232 +msgid "Choose a subtool from the toolbar" +msgstr "בחר תת־כלי מסרגל הכלים" #: ../src/trace/potrace/inkscape-potrace.cpp:524 #: ../src/trace/potrace/inkscape-potrace.cpp:598 #, c-format msgid "Trace: %d. %ld nodes" -msgstr "" +msgstr "מעקב: %d. %ld מפרקים" -#: ../src/trace/trace.cpp:71 ../src/trace/trace.cpp:136 -#: ../src/trace/trace.cpp:144 ../src/trace/trace.cpp:243 +#: ../src/trace/trace.cpp:71 +#: ../src/trace/trace.cpp:136 +#: ../src/trace/trace.cpp:144 +#: ../src/trace/trace.cpp:243 msgid "Select an image to trace" -msgstr "" +msgstr "בחר תמונה למעקב" #: ../src/trace/trace.cpp:106 msgid "Select only one image to trace" -msgstr "" +msgstr "בחר תמונה אחת בלבד למעקב" #: ../src/trace/trace.cpp:124 msgid "Select one image and one or more shapes above it" -msgstr "" +msgstr "בחר תמונה אחת ואחת או יותר צורות מעליה" #: ../src/trace/trace.cpp:234 msgid "Trace: No active desktop" -msgstr "" +msgstr "מעקב: אין שולחן עבודה פעיל" #: ../src/trace/trace.cpp:333 msgid "Invalid SIOX result" -msgstr "" +msgstr "תוצאת חילוץ הפריטים שגויה" #: ../src/trace/trace.cpp:438 msgid "Trace: No active document" -msgstr "" +msgstr "מעקב: אין מסמך פעיל" #: ../src/trace/trace.cpp:461 msgid "Trace: Image has no bitmap data" -msgstr "" +msgstr "מעקב: לתמונה אין נתוני מפת סיביות" #: ../src/trace/trace.cpp:468 msgid "Trace: Starting trace..." -msgstr "" +msgstr "מעקב: מתחיל במעקב..." #. ## inform the document, so we can undo #: ../src/trace/trace.cpp:570 msgid "Trace bitmap" -msgstr "" +msgstr "עקוב אחר מפת הסיכיות" #: ../src/trace/trace.cpp:574 #, c-format msgid "Trace: Done. %ld nodes created" -msgstr "" +msgstr "מעקב: בוצע. נוצרו %ld מפרקים" -#: ../src/tweak-context.cpp:960 -msgid "Nothing selected! Select objects to tweak." -msgstr "" +#: ../src/tweak-context.cpp:206 +#, c-format +msgid "Nothing selected" +msgstr "לא נבחר שום דבר." -#: ../src/tweak-context.cpp:965 +#: ../src/tweak-context.cpp:212 #, c-format -msgid "Pushing %d selected object" -msgid_plural "Pushing %d selected objects" -msgstr[0] "" -msgstr[1] "" +msgid "%s. Drag to move." +msgstr "%s. גרור כדי להזיז." -#: ../src/tweak-context.cpp:970 +#: ../src/tweak-context.cpp:217 #, c-format -msgid "Shrinking %d selected object" -msgid_plural "Shrinking %d selected objects" -msgstr[0] "" -msgstr[1] "" +msgid "%s. Drag or click to move in; with Shift to move out." +msgstr "%s. גרור או לחץ כדי להזיז פנימה; עם Shift כדי להזיז החוצה." -#: ../src/tweak-context.cpp:975 +#: ../src/tweak-context.cpp:220 #, c-format -msgid "Growing %d selected object" -msgid_plural "Growing %d selected objects" -msgstr[0] "" -msgstr[1] "" +msgid "%s. Drag or click to move randomly." +msgstr "%s. גרור או לחץ כדי להזיז אקראית." -#: ../src/tweak-context.cpp:980 +#: ../src/tweak-context.cpp:223 #, c-format -msgid "Attracting %d selected object" -msgid_plural "Attracting %d selected objects" -msgstr[0] "" -msgstr[1] "" +msgid "%s. Drag or click to scale down; with Shift to scale up." +msgstr "%s. גרור או לחץ כדילהקטין; עם Shift כדי להגדיל." -#: ../src/tweak-context.cpp:985 +#: ../src/tweak-context.cpp:226 #, c-format -msgid "Repelling %d selected object" -msgid_plural "Repelling %d selected objects" -msgstr[0] "" -msgstr[1] "" +msgid "%s. Drag or click to rotate clockwise; with Shift, counterclockwise." +msgstr "%s. גרור או לחץ כדי להטות עם כיוון השעון; עם Shift, נגד כיוון השעון." -#: ../src/tweak-context.cpp:990 +#: ../src/tweak-context.cpp:229 #, c-format -msgid "Roughening %d selected object" -msgid_plural "Roughening %d selected objects" -msgstr[0] "" -msgstr[1] "" +msgid "%s. Drag or click to duplicate; with Shift, delete." +msgstr "%s. גרור או לחץ כדי לשכפל; עם Shift, למחוק." -#: ../src/tweak-context.cpp:995 +#: ../src/tweak-context.cpp:232 #, c-format -msgid "Painting %d selected object" -msgid_plural "Painting %d selected objects" -msgstr[0] "" -msgstr[1] "" +msgid "%s. Drag to push paths." +msgstr "%s. גרור כדי לדחוף נתיבים." -#: ../src/tweak-context.cpp:1000 +#: ../src/tweak-context.cpp:236 #, c-format -msgid "Jittering colors in %d selected object" -msgid_plural "Jittering colors in %d selected objects" -msgstr[0] "" -msgstr[1] "" +msgid "%s. Drag or click to inset paths; with Shift to outset." +msgstr "%s. גרור או לחץ כדי לכנס נתיבים; עם Shift כדי להרחיק כלפי חוץ." -#: ../src/tweak-context.cpp:1040 -msgid "Push tweak" -msgstr "" +#: ../src/tweak-context.cpp:244 +#, c-format +msgid "%s. Drag or click to attract paths; with Shift to repel." +msgstr "%s. גרור או לחץ כדי למשוך נתיבים; עם Shift כדי לדחות." -#: ../src/tweak-context.cpp:1044 -msgid "Shrink tweak" -msgstr "" +#: ../src/tweak-context.cpp:252 +#, c-format +msgid "%s. Drag or click to roughen paths." +msgstr "%s. גרור או לחץ כדי לחספס נתיבים." -#: ../src/tweak-context.cpp:1048 -msgid "Grow tweak" -msgstr "" +#: ../src/tweak-context.cpp:256 +#, c-format +msgid "%s. Drag or click to paint objects with color." +msgstr "%s. גרור או לחץ כדי לצבוע פריטים בצבע." -#: ../src/tweak-context.cpp:1052 -msgid "Attract tweak" -msgstr "" +#: ../src/tweak-context.cpp:259 +#, c-format +msgid "%s. Drag or click to randomize colors." +msgstr "%s. גרור או לחץ כדי לשנות צבעים באקראי." -#: ../src/tweak-context.cpp:1056 -msgid "Repel tweak" -msgstr "" +#: ../src/tweak-context.cpp:263 +#, c-format +msgid "%s. Drag or click to increase blur; with Shift to decrease." +msgstr "%s. גרור או לחץ כדי להגביר את הטישטוש; עם Shift כדי להפחית." -#: ../src/tweak-context.cpp:1060 -msgid "Roughen tweak" -msgstr "" +#: ../src/tweak-context.cpp:1211 +msgid "Nothing selected! Select objects to tweak." +msgstr "לא נבחר כלום! בחר פריטים לעיוות.." + +#: ../src/tweak-context.cpp:1247 +msgid "Move tweak" +msgstr "שיפור הזזה" + +#: ../src/tweak-context.cpp:1251 +msgid "Move in/out tweak" +msgstr "עיוות בהזזה פנימה/החוצה" + +#: ../src/tweak-context.cpp:1255 +msgid "Move jitter tweak" +msgstr "עיוות בהזזה מזערית" + +#: ../src/tweak-context.cpp:1259 +msgid "Scale tweak" +msgstr "עיוות במתיחה" + +#: ../src/tweak-context.cpp:1263 +msgid "Rotate tweak" +msgstr "עיוות בהטייה" + +#: ../src/tweak-context.cpp:1267 +msgid "Duplicate/delete tweak" +msgstr "עיוות במחיקה/שיכפול" + +#: ../src/tweak-context.cpp:1271 +msgid "Push path tweak" +msgstr "עיוות בדחיפת נתיב" + +#: ../src/tweak-context.cpp:1275 +msgid "Shrink/grow path tweak" +msgstr "עיוות בכיווץ/הגדלה" + +#: ../src/tweak-context.cpp:1279 +msgid "Attract/repel path tweak" +msgstr "עיוות במשיכה/דחייה" + +#: ../src/tweak-context.cpp:1283 +msgid "Roughen path tweak" +msgstr "עיוות בחיספוס נתיב" -#: ../src/tweak-context.cpp:1064 +#: ../src/tweak-context.cpp:1287 msgid "Color paint tweak" -msgstr "" +msgstr "עיוות בצביעת בצע" -#: ../src/tweak-context.cpp:1068 +#: ../src/tweak-context.cpp:1291 msgid "Color jitter tweak" -msgstr "" +msgstr "עיוות בבילבול צבע" + +#: ../src/tweak-context.cpp:1295 +msgid "Blur tweak" +msgstr "שיפור לטשטוש" #. check whether something is selected -#: ../src/ui/clipboard.cpp:205 +#: ../src/ui/clipboard.cpp:224 msgid "Nothing was copied." -msgstr "" +msgstr "לא הועתק דבר." -#: ../src/ui/clipboard.cpp:266 ../src/ui/clipboard.cpp:428 -#: ../src/ui/clipboard.cpp:452 +#: ../src/ui/clipboard.cpp:285 +#: ../src/ui/clipboard.cpp:481 +#: ../src/ui/clipboard.cpp:505 msgid "Nothing on the clipboard." -msgstr "" +msgstr "אין דבר בלוח הגזירים" -#: ../src/ui/clipboard.cpp:288 +#: ../src/ui/clipboard.cpp:341 msgid "Select object(s) to paste style to." -msgstr "" +msgstr "בחר פריט/ים שאליהן יודבק הסגנון." -#: ../src/ui/clipboard.cpp:294 ../src/ui/clipboard.cpp:311 +#: ../src/ui/clipboard.cpp:347 +#: ../src/ui/clipboard.cpp:364 msgid "No style on the clipboard." -msgstr "" +msgstr "אין סגנון בלוח הגזירים." -#: ../src/ui/clipboard.cpp:333 +#: ../src/ui/clipboard.cpp:386 msgid "Select object(s) to paste size to." -msgstr "" +msgstr "בחר פריט/ים אליהם יודבק הגודל." -#: ../src/ui/clipboard.cpp:340 +#: ../src/ui/clipboard.cpp:393 msgid "No size on the clipboard." -msgstr "" +msgstr "אין גודל בלוח הגזירים." -#: ../src/ui/clipboard.cpp:391 +#: ../src/ui/clipboard.cpp:444 msgid "Select object(s) to paste live path effect to." -msgstr "" +msgstr "בחר פריט/ים אליהם יודבק אפקט נתיב חי." #. no_effect: -#: ../src/ui/clipboard.cpp:415 +#: ../src/ui/clipboard.cpp:468 msgid "No effect on the clipboard." -msgstr "" +msgstr "אין אפקט בלוח הגזירים." -#: ../src/ui/clipboard.cpp:435 ../src/ui/clipboard.cpp:462 +#: ../src/ui/clipboard.cpp:488 +#: ../src/ui/clipboard.cpp:515 msgid "Clipboard does not contain a path." -msgstr "" +msgstr "אין נתיב בלוח הגזירים." #. Item dialog -#: ../src/ui/context-menu.cpp:100 +#: ../src/ui/context-menu.cpp:105 msgid "Object _Properties" -msgstr "" +msgstr "מאפייני ה_פריט" #. Select item -#: ../src/ui/context-menu.cpp:110 +#: ../src/ui/context-menu.cpp:115 msgid "_Select This" -msgstr "" +msgstr "בחר _זאת" #. Create link -#: ../src/ui/context-menu.cpp:120 +#: ../src/ui/context-menu.cpp:125 msgid "_Create Link" -msgstr "" +msgstr "צ_ור קישור" + +#. Set mask +#: ../src/ui/context-menu.cpp:132 +msgid "Set Mask" +msgstr "הגדר מסכה" -#: ../src/ui/context-menu.cpp:177 +#. Release mask +#: ../src/ui/context-menu.cpp:143 +msgid "Release Mask" +msgstr "שחרר מסכה" + +#. Set Clip +#: ../src/ui/context-menu.cpp:154 +msgid "Set Clip" +msgstr "הגדר קליפ" + +#. Release Clip +#: ../src/ui/context-menu.cpp:165 +msgid "Release Clip" +msgstr "שחרר קליפ" + +#: ../src/ui/context-menu.cpp:288 msgid "Create link" -msgstr "" +msgstr "צור קישור" #. "Ungroup" -#: ../src/ui/context-menu.cpp:195 ../src/verbs.cpp:2279 +#: ../src/ui/context-menu.cpp:306 +#: ../src/verbs.cpp:2336 msgid "_Ungroup" -msgstr "" +msgstr "_פרק" #. Link dialog -#: ../src/ui/context-menu.cpp:235 +#: ../src/ui/context-menu.cpp:346 msgid "Link _Properties" -msgstr "" +msgstr "_מאפייני הקישור" #. Select item -#: ../src/ui/context-menu.cpp:241 +#: ../src/ui/context-menu.cpp:352 msgid "_Follow Link" -msgstr "" +msgstr "_עקוב אחר הקישור" #. Reset transformations -#: ../src/ui/context-menu.cpp:246 +#: ../src/ui/context-menu.cpp:357 msgid "_Remove Link" -msgstr "" +msgstr "ה_סר קישור" #. Link dialog -#: ../src/ui/context-menu.cpp:294 +#: ../src/ui/context-menu.cpp:405 msgid "Image _Properties" -msgstr "" +msgstr "מאפייני _תמונה" -#: ../src/ui/context-menu.cpp:300 +#: ../src/ui/context-menu.cpp:411 msgid "Edit Externally..." -msgstr "" +msgstr "ערוך חיצונית..." #. Item dialog -#: ../src/ui/context-menu.cpp:392 +#: ../src/ui/context-menu.cpp:504 msgid "_Fill and Stroke" -msgstr "" +msgstr "מילוי ו_קו מתאר" #. * #. * Constructor #. #: ../src/ui/dialog/aboutbox.cpp:77 msgid "About Inkscape" -msgstr "" +msgstr "אודות אינקסקייפ" #: ../src/ui/dialog/aboutbox.cpp:88 msgid "_Splash" -msgstr "" +msgstr "מסך _פתיחה" #: ../src/ui/dialog/aboutbox.cpp:92 msgid "_Authors" @@ -8752,2752 +9199,2660 @@ msgstr "" #: ../src/ui/dialog/aboutbox.cpp:338 msgid "translator-credits" msgstr "" +"Launchpad Contributions:\n" +" Yaron https://launchpad.net/~sh-yaron\n" +" Leon https://launchpad.net/~leon-mintz" -#: ../src/ui/dialog/align-and-distribute.cpp:234 -#: ../src/ui/dialog/align-and-distribute.cpp:776 +#: ../src/ui/dialog/align-and-distribute.cpp:247 +#: ../src/ui/dialog/align-and-distribute.cpp:794 msgid "Align" -msgstr "" +msgstr "יישור" -#: ../src/ui/dialog/align-and-distribute.cpp:392 -#: ../src/ui/dialog/align-and-distribute.cpp:777 +#: ../src/ui/dialog/align-and-distribute.cpp:406 +#: ../src/ui/dialog/align-and-distribute.cpp:795 msgid "Distribute" -msgstr "" +msgstr "פיזור" -#: ../src/ui/dialog/align-and-distribute.cpp:461 +#: ../src/ui/dialog/align-and-distribute.cpp:475 msgid "Minimum horizontal gap (in px units) between bounding boxes" -msgstr "" +msgstr "מרווח אופקי מזערי (בפיקסלים) בין תיבות תוחמות" #. TRANSLATORS: Horizontal gap. Only put "H:" equivalent in the translation -#: ../src/ui/dialog/align-and-distribute.cpp:463 +#: ../src/ui/dialog/align-and-distribute.cpp:477 msgid "gap|H:" -msgstr "" +msgstr "פ:" -#: ../src/ui/dialog/align-and-distribute.cpp:471 +#: ../src/ui/dialog/align-and-distribute.cpp:485 msgid "Minimum vertical gap (in px units) between bounding boxes" -msgstr "" +msgstr "מרווח אנכי מזערי (בפיקסלים) בין תיבות תוחמות" #. TRANSLATORS: Vertical gap -#: ../src/ui/dialog/align-and-distribute.cpp:473 +#: ../src/ui/dialog/align-and-distribute.cpp:487 msgid "V:" -msgstr "" +msgstr "אנ:" -#: ../src/ui/dialog/align-and-distribute.cpp:501 -#: ../src/ui/dialog/align-and-distribute.cpp:778 -#: ../src/widgets/toolbox.cpp:5626 +#: ../src/ui/dialog/align-and-distribute.cpp:516 +#: ../src/ui/dialog/align-and-distribute.cpp:796 +#: ../src/widgets/toolbox.cpp:6574 msgid "Remove overlaps" -msgstr "" +msgstr "הסר חפיפות" -#: ../src/ui/dialog/align-and-distribute.cpp:531 -#: ../src/widgets/toolbox.cpp:5484 +#: ../src/ui/dialog/align-and-distribute.cpp:547 +#: ../src/widgets/toolbox.cpp:6439 msgid "Arrange connector network" -msgstr "" +msgstr "סדר את רשת המחברים" -#: ../src/ui/dialog/align-and-distribute.cpp:561 +#: ../src/ui/dialog/align-and-distribute.cpp:578 msgid "Unclump" -msgstr "" +msgstr "לנתק" -#: ../src/ui/dialog/align-and-distribute.cpp:631 +#: ../src/ui/dialog/align-and-distribute.cpp:649 msgid "Randomize positions" -msgstr "" +msgstr "מקם באקראי" -#: ../src/ui/dialog/align-and-distribute.cpp:728 +#: ../src/ui/dialog/align-and-distribute.cpp:746 msgid "Distribute text baselines" -msgstr "" +msgstr "פזר את שורות בסיס הטקסט" -#: ../src/ui/dialog/align-and-distribute.cpp:748 +#: ../src/ui/dialog/align-and-distribute.cpp:766 msgid "Align text baselines" -msgstr "" +msgstr "יישר את שורות בסיס הטקסט" -#: ../src/ui/dialog/align-and-distribute.cpp:779 +#: ../src/ui/dialog/align-and-distribute.cpp:797 msgid "Connector network layout" -msgstr "" +msgstr "סידור רשת המחברים" -#: ../src/ui/dialog/align-and-distribute.cpp:780 +#: ../src/ui/dialog/align-and-distribute.cpp:798 msgid "Nodes" -msgstr "" +msgstr "מפרקים" -#: ../src/ui/dialog/align-and-distribute.cpp:786 +#: ../src/ui/dialog/align-and-distribute.cpp:804 msgid "Relative to: " -msgstr "" +msgstr "ביחס אל: " + +#: ../src/ui/dialog/align-and-distribute.cpp:805 +msgid "Treat selection as group: " +msgstr "התייחס לבחירה כקבוצה:" -#: ../src/ui/dialog/align-and-distribute.cpp:791 +#: ../src/ui/dialog/align-and-distribute.cpp:811 msgid "Align right sides of objects to left side of anchor" -msgstr "" +msgstr "יישר את צידיהם הימנים של הפריטים לצידו השמאלי של העוגן" -#: ../src/ui/dialog/align-and-distribute.cpp:794 +#: ../src/ui/dialog/align-and-distribute.cpp:814 msgid "Align left sides" -msgstr "" +msgstr "יישר את הצדדים השמאליים" -#: ../src/ui/dialog/align-and-distribute.cpp:797 +#: ../src/ui/dialog/align-and-distribute.cpp:817 msgid "Center on vertical axis" -msgstr "" +msgstr "מרכז על ציר אנכי" -#: ../src/ui/dialog/align-and-distribute.cpp:800 +#: ../src/ui/dialog/align-and-distribute.cpp:820 msgid "Align right sides" -msgstr "" +msgstr "יישר את הצדדים הימניים" -#: ../src/ui/dialog/align-and-distribute.cpp:803 +#: ../src/ui/dialog/align-and-distribute.cpp:823 msgid "Align left sides of objects to right side of anchor" -msgstr "" +msgstr "יישר את צידיהם השמאליים של הפריטים לצידו השמאלי של העוגן" -#: ../src/ui/dialog/align-and-distribute.cpp:806 +#: ../src/ui/dialog/align-and-distribute.cpp:826 msgid "Align bottoms of objects to top of anchor" -msgstr "" +msgstr "יישר את צידיהם התחתונים של הפריטים לראש העוגן" -#: ../src/ui/dialog/align-and-distribute.cpp:809 +#: ../src/ui/dialog/align-and-distribute.cpp:829 msgid "Align tops" -msgstr "" +msgstr "יישר צדדים עליונים" -#: ../src/ui/dialog/align-and-distribute.cpp:812 +#: ../src/ui/dialog/align-and-distribute.cpp:832 msgid "Center on horizontal axis" -msgstr "" +msgstr "מרכז על ציר אופקי" -#: ../src/ui/dialog/align-and-distribute.cpp:815 +#: ../src/ui/dialog/align-and-distribute.cpp:835 msgid "Align bottoms" -msgstr "" +msgstr "יישר צדדים תחתונים" -#: ../src/ui/dialog/align-and-distribute.cpp:818 +#: ../src/ui/dialog/align-and-distribute.cpp:838 msgid "Align tops of objects to bottom of anchor" -msgstr "" +msgstr "ישר את צידיהם העליונים של הפריטים לתחתית העוגן" -#: ../src/ui/dialog/align-and-distribute.cpp:823 +#: ../src/ui/dialog/align-and-distribute.cpp:843 msgid "Align baseline anchors of texts vertically" -msgstr "" +msgstr "יישר את עוגני שורות הבסיס של הטקסט באופן אנכי" -#: ../src/ui/dialog/align-and-distribute.cpp:826 +#: ../src/ui/dialog/align-and-distribute.cpp:846 msgid "Align baseline anchors of texts horizontally" -msgstr "" +msgstr "יישר את עוגני שורות הבסיס של הטקסט באופן אופקי" -#: ../src/ui/dialog/align-and-distribute.cpp:831 +#: ../src/ui/dialog/align-and-distribute.cpp:851 msgid "Make horizontal gaps between objects equal" -msgstr "" +msgstr "צור מרווח אופקי שווה בין פריטים" -#: ../src/ui/dialog/align-and-distribute.cpp:835 +#: ../src/ui/dialog/align-and-distribute.cpp:855 msgid "Distribute left sides equidistantly" -msgstr "" +msgstr "פזר את הצדדים השמאליים במרחק שווה" -#: ../src/ui/dialog/align-and-distribute.cpp:838 +#: ../src/ui/dialog/align-and-distribute.cpp:858 msgid "Distribute centers equidistantly horizontally" -msgstr "" +msgstr "פזר את המרכזים במרחק אופקי שווה" -#: ../src/ui/dialog/align-and-distribute.cpp:841 +#: ../src/ui/dialog/align-and-distribute.cpp:861 msgid "Distribute right sides equidistantly" -msgstr "" +msgstr "פזר את הצדדים הימניים במרחק שווה" -#: ../src/ui/dialog/align-and-distribute.cpp:845 +#: ../src/ui/dialog/align-and-distribute.cpp:865 msgid "Make vertical gaps between objects equal" -msgstr "" +msgstr "צור מרווח אנכי שווה בין הפריטים" -#: ../src/ui/dialog/align-and-distribute.cpp:849 +#: ../src/ui/dialog/align-and-distribute.cpp:869 msgid "Distribute tops equidistantly" -msgstr "" +msgstr "פזר את הצדדים העליונים במרחק שווה" -#: ../src/ui/dialog/align-and-distribute.cpp:852 +#: ../src/ui/dialog/align-and-distribute.cpp:872 msgid "Distribute centers equidistantly vertically" -msgstr "" +msgstr "פזר את המרכזים במרחק אנכי שווה" -#: ../src/ui/dialog/align-and-distribute.cpp:855 +#: ../src/ui/dialog/align-and-distribute.cpp:875 msgid "Distribute bottoms equidistantly" -msgstr "" +msgstr "פזר את הצדדים התחתונים במרחק שווה" -#: ../src/ui/dialog/align-and-distribute.cpp:860 +#: ../src/ui/dialog/align-and-distribute.cpp:880 msgid "Distribute baseline anchors of texts horizontally" -msgstr "" +msgstr "פזר את עוגני שורת בסיס הטקסט באופן אופקי" -#: ../src/ui/dialog/align-and-distribute.cpp:863 +#: ../src/ui/dialog/align-and-distribute.cpp:883 msgid "Distribute baseline anchors of texts vertically" -msgstr "" +msgstr "פזר את עוגני שורת בסיס הטקסט באופן אנכי" -#: ../src/ui/dialog/align-and-distribute.cpp:868 +#: ../src/ui/dialog/align-and-distribute.cpp:888 msgid "Randomize centers in both dimensions" -msgstr "" +msgstr "פזר באקראי את המרכזים בשני המימדים" -#: ../src/ui/dialog/align-and-distribute.cpp:871 +#: ../src/ui/dialog/align-and-distribute.cpp:891 msgid "Unclump objects: try to equalize edge-to-edge distances" -msgstr "" +msgstr "ניתוק פריטים: נסה להשוות את המרחקים מקצה לקצה" -#: ../src/ui/dialog/align-and-distribute.cpp:876 -msgid "" -"Move objects as little as possible so that their bounding boxes do not " -"overlap" -msgstr "" +#: ../src/ui/dialog/align-and-distribute.cpp:896 +msgid "Move objects as little as possible so that their bounding boxes do not overlap" +msgstr "הזז פריטים כמה שפחות כך שהתיבות התוחמות אותם לא יחפפו" -#: ../src/ui/dialog/align-and-distribute.cpp:880 -#: ../src/widgets/toolbox.cpp:5588 +#: ../src/ui/dialog/align-and-distribute.cpp:900 +#: ../src/widgets/toolbox.cpp:6537 msgid "Nicely arrange selected connector network" -msgstr "" +msgstr "סדר באופן יפה את רשת המחברים הנבחרת" -#: ../src/ui/dialog/align-and-distribute.cpp:885 +#: ../src/ui/dialog/align-and-distribute.cpp:905 msgid "Align selected nodes horizontally" -msgstr "" +msgstr "יישר את המפרקים הנבחרים אופקית" -#: ../src/ui/dialog/align-and-distribute.cpp:888 +#: ../src/ui/dialog/align-and-distribute.cpp:908 msgid "Align selected nodes vertically" -msgstr "" +msgstr "יישר את המפרקים הנבחרים אנכית" -#: ../src/ui/dialog/align-and-distribute.cpp:891 +#: ../src/ui/dialog/align-and-distribute.cpp:911 msgid "Distribute selected nodes horizontally" -msgstr "" +msgstr "פזר את המפרקים הנבחרים אופקית" -#: ../src/ui/dialog/align-and-distribute.cpp:894 +#: ../src/ui/dialog/align-and-distribute.cpp:914 msgid "Distribute selected nodes vertically" -msgstr "" +msgstr "פזר את המפרקים הנבחרים אנכית" #. Rest of the widgetry -#: ../src/ui/dialog/align-and-distribute.cpp:899 +#: ../src/ui/dialog/align-and-distribute.cpp:919 msgid "Last selected" -msgstr "" +msgstr "האחרון שנבחר" -#: ../src/ui/dialog/align-and-distribute.cpp:900 +#: ../src/ui/dialog/align-and-distribute.cpp:920 msgid "First selected" -msgstr "" +msgstr "הראשון שנבחר" -#: ../src/ui/dialog/align-and-distribute.cpp:901 +#: ../src/ui/dialog/align-and-distribute.cpp:921 msgid "Biggest item" -msgstr "" +msgstr "הפריט הגדול ביותר" -#: ../src/ui/dialog/align-and-distribute.cpp:902 +#: ../src/ui/dialog/align-and-distribute.cpp:922 msgid "Smallest item" -msgstr "" +msgstr "הפריט הקטן ביותר" -#: ../src/ui/dialog/align-and-distribute.cpp:904 +#: ../src/ui/dialog/align-and-distribute.cpp:924 #: ../src/widgets/desktop-widget.cpp:1548 msgid "Drawing" -msgstr "איור" +msgstr "ציור" -#: ../src/ui/dialog/document-metadata.cpp:79 +#: ../src/ui/dialog/document-metadata.cpp:77 msgid "Metadata" -msgstr "" +msgstr "נתוני מטא" -#: ../src/ui/dialog/document-metadata.cpp:80 +#: ../src/ui/dialog/document-metadata.cpp:78 msgid "License" -msgstr "רישיון" +msgstr "רשיון" -#: ../src/ui/dialog/document-metadata.cpp:160 +#: ../src/ui/dialog/document-metadata.cpp:158 msgid "Dublin Core Entities" -msgstr "" +msgstr "ישויות ליבת דבלין" -#: ../src/ui/dialog/document-metadata.cpp:182 +#: ../src/ui/dialog/document-metadata.cpp:180 msgid "License" -msgstr "" +msgstr "רשיון" #. --------------------------------------------------------------- -#: ../src/ui/dialog/document-properties.cpp:88 +#: ../src/ui/dialog/document-properties.cpp:87 msgid "Show page _border" -msgstr "" +msgstr "הצג את _גבול העמוד" -#: ../src/ui/dialog/document-properties.cpp:88 +#: ../src/ui/dialog/document-properties.cpp:87 msgid "If set, rectangular page border is shown" -msgstr "" +msgstr "במידה והוגדר, יוצג גבול הדף המרובע" -#: ../src/ui/dialog/document-properties.cpp:89 +#: ../src/ui/dialog/document-properties.cpp:88 msgid "Border on _top of drawing" -msgstr "" +msgstr "הגבול מ_על לציור" -#: ../src/ui/dialog/document-properties.cpp:89 +#: ../src/ui/dialog/document-properties.cpp:88 msgid "If set, border is always on top of the drawing" -msgstr "" +msgstr "במידה והוגדר, הגבול תמיד יוצג מעל הציור" -#: ../src/ui/dialog/document-properties.cpp:90 +#: ../src/ui/dialog/document-properties.cpp:89 msgid "_Show border shadow" -msgstr "" +msgstr "הצג _צללית לגבול" -#: ../src/ui/dialog/document-properties.cpp:90 +#: ../src/ui/dialog/document-properties.cpp:89 msgid "If set, page border shows a shadow on its right and lower side" -msgstr "" +msgstr "במידה והוגדר, גבול הדף יציג צל לימינו ולמרגלותיו" -#: ../src/ui/dialog/document-properties.cpp:91 +#: ../src/ui/dialog/document-properties.cpp:90 msgid "Back_ground:" -msgstr "" +msgstr "ר_קע:" -#: ../src/ui/dialog/document-properties.cpp:91 +#: ../src/ui/dialog/document-properties.cpp:90 msgid "Background color" -msgstr "" +msgstr "צבע הרקע" -#: ../src/ui/dialog/document-properties.cpp:91 -msgid "" -"Color and transparency of the page background (also used for bitmap export)" -msgstr "" +#: ../src/ui/dialog/document-properties.cpp:90 +msgid "Color and transparency of the page background (also used for bitmap export)" +msgstr "צבע ושקיפות רקע העמוד (ישמש גם עבור ייצוא מפת סיביות)" -#: ../src/ui/dialog/document-properties.cpp:92 +#: ../src/ui/dialog/document-properties.cpp:91 msgid "Border _color:" -msgstr "" +msgstr "צב_×¢ הגבול:" -#: ../src/ui/dialog/document-properties.cpp:92 +#: ../src/ui/dialog/document-properties.cpp:91 msgid "Page border color" -msgstr "" +msgstr "צבע גבול העמוד" -#: ../src/ui/dialog/document-properties.cpp:92 +#: ../src/ui/dialog/document-properties.cpp:91 msgid "Color of the page border" -msgstr "" +msgstr "הצבע של הגבול של העמוד" -#: ../src/ui/dialog/document-properties.cpp:93 +#: ../src/ui/dialog/document-properties.cpp:92 msgid "Default _units:" -msgstr "" +msgstr "_יחידות ברירת מחדל:" #. --------------------------------------------------------------- #. General snap options -#: ../src/ui/dialog/document-properties.cpp:97 +#: ../src/ui/dialog/document-properties.cpp:96 msgid "Show _guides" -msgstr "" +msgstr "הצג קווי מ_נחה" -#: ../src/ui/dialog/document-properties.cpp:97 +#: ../src/ui/dialog/document-properties.cpp:96 msgid "Show or hide guides" -msgstr "" +msgstr "הצג או הסתר קווים מנחים" -#: ../src/ui/dialog/document-properties.cpp:98 +#: ../src/ui/dialog/document-properties.cpp:97 msgid "_Snap guides while dragging" -msgstr "" +msgstr "_הצמד לקווים המנחים בעת הגרירה" -#: ../src/ui/dialog/document-properties.cpp:98 -msgid "" -"While dragging a guide, snap to object nodes or bounding box corners ('Snap " -"to nodes' or 'snap to bounding box corners' must be enabled in the 'Snap' " -"tab; only a small part of the guide near the cursor will snap)" -msgstr "" +#: ../src/ui/dialog/document-properties.cpp:97 +msgid "While dragging a guide, snap to object nodes or bounding box corners ('Snap to nodes' or 'snap to bounding box corners' must be enabled in the 'Snap' tab; only a small part of the guide near the cursor will snap)" +msgstr "בעת גרירת קו מנחה, הצמד למפרקי הפריט או פינות התיבה התוחמת (יש להפעיל את 'הצמד למפרקים' או 'הצמד לפינות התיבות התוחמות' בלשונית ה'הצמדה'; רק חלק קטן מהקו המנחה שליד סמן העכבר יוצמד." -#: ../src/ui/dialog/document-properties.cpp:100 +#: ../src/ui/dialog/document-properties.cpp:99 msgid "Guide co_lor:" -msgstr "" +msgstr "צבע הקו המנ_חה:" -#: ../src/ui/dialog/document-properties.cpp:100 +#: ../src/ui/dialog/document-properties.cpp:99 msgid "Guideline color" -msgstr "" +msgstr "צבע הקו המנחה" -#: ../src/ui/dialog/document-properties.cpp:100 +#: ../src/ui/dialog/document-properties.cpp:99 msgid "Color of guidelines" -msgstr "" +msgstr "צבעי הקווים המנחים" -#: ../src/ui/dialog/document-properties.cpp:101 +#: ../src/ui/dialog/document-properties.cpp:100 msgid "_Highlight color:" -msgstr "" +msgstr "צבע ה_דגשה:" -#: ../src/ui/dialog/document-properties.cpp:101 +#: ../src/ui/dialog/document-properties.cpp:100 msgid "Highlighted guideline color" -msgstr "" +msgstr "צבע קו מנחה מודגש" -#: ../src/ui/dialog/document-properties.cpp:101 +#: ../src/ui/dialog/document-properties.cpp:100 msgid "Color of a guideline when it is under mouse" -msgstr "" +msgstr "צבע הקו המנחה כאשר הוא נמצא תחת לסמן העכבר" #. --------------------------------------------------------------- -#: ../src/ui/dialog/document-properties.cpp:103 +#: ../src/ui/dialog/document-properties.cpp:102 msgid "_Enable snapping" -msgstr "" +msgstr "אפ_שר הצמדה" -#: ../src/ui/dialog/document-properties.cpp:103 ../src/verbs.cpp:2498 +#: ../src/ui/dialog/document-properties.cpp:102 +#: ../src/verbs.cpp:2563 msgid "Toggle snapping on or off" -msgstr "" +msgstr "הפעלת או ביטול ההצמדה" -#: ../src/ui/dialog/document-properties.cpp:104 +#: ../src/ui/dialog/document-properties.cpp:103 msgid "_Enable snap indicator" -msgstr "" +msgstr "מ_אפשר את מחוון ההצמדה" -#: ../src/ui/dialog/document-properties.cpp:104 +#: ../src/ui/dialog/document-properties.cpp:103 msgid "After snapping, a symbol is drawn at the point that has snapped" -msgstr "" +msgstr "לאחר ההצמדה, מופיע סמל בפינה שהוצמדה" -#: ../src/ui/dialog/document-properties.cpp:105 +#: ../src/ui/dialog/document-properties.cpp:104 msgid "_Bounding box corners" -msgstr "" +msgstr "_פינות התיבות התוחמות" -#: ../src/ui/dialog/document-properties.cpp:105 -msgid "" -"Only available in the selector tool: snap bounding box corners to guides, to " -"grids, and to other bounding boxes (but not to nodes or paths)" -msgstr "" +#: ../src/ui/dialog/document-properties.cpp:104 +msgid "Only available in the selector tool: snap bounding box corners to guides, to grids, and to other bounding boxes (but not to nodes or paths)" +msgstr "זמין רק בכלי הבחירה: הצמד את פינות התיבות התוחמות לקווים מנחים, לרשתות ולתיבות תוחמות אחרות (אך לא למפרקים או נתיבים)" -#: ../src/ui/dialog/document-properties.cpp:107 +#: ../src/ui/dialog/document-properties.cpp:106 msgid "_Nodes" -msgstr "" +msgstr "_מפרקים" -#: ../src/ui/dialog/document-properties.cpp:107 -msgid "" -"Snap nodes (e.g. path nodes, special points in shapes, gradient handles, " -"text base points, transformation origins, etc.) to guides, to grids, to " -"paths and to other nodes" -msgstr "" +#: ../src/ui/dialog/document-properties.cpp:106 +msgid "Snap nodes (e.g. path nodes, special points in shapes, gradient handles, text base points, transformation origins, etc.) to guides, to grids, to paths and to other nodes" +msgstr "הצמד מפרקים (כלומר מפרקי הנתיב, נקודות מיוחדות בצורות, ידיות המדרג, נקודות בסיס הטקסט, מקורות שינוי צורה וכו') לקווים מנחים, לרשתות, לנתיבים ולמפרקים אחרים." #. Options for snapping to objects -#: ../src/ui/dialog/document-properties.cpp:110 +#: ../src/ui/dialog/document-properties.cpp:109 msgid "Snap to path_s" -msgstr "" +msgstr "הצמד ל_נתיבים" -#: ../src/ui/dialog/document-properties.cpp:110 +#: ../src/ui/dialog/document-properties.cpp:109 msgid "Snap nodes to object paths" -msgstr "" +msgstr "הצמד מפרקים לנתיבי הפריט" -#: ../src/ui/dialog/document-properties.cpp:111 +#: ../src/ui/dialog/document-properties.cpp:110 msgid "Snap to n_odes" -msgstr "" +msgstr "הצמד למפ_רקים" -#: ../src/ui/dialog/document-properties.cpp:111 +#: ../src/ui/dialog/document-properties.cpp:110 msgid "Snap nodes and guides to object nodes" -msgstr "" +msgstr "הצמד מפרקים וקווים מנחים למפרקי הפריט" -#: ../src/ui/dialog/document-properties.cpp:112 +#: ../src/ui/dialog/document-properties.cpp:111 msgid "Snap to bounding bo_x edges" -msgstr "" +msgstr "הצמד את קצוות ה_תיבה התוחמת" -#: ../src/ui/dialog/document-properties.cpp:112 +#: ../src/ui/dialog/document-properties.cpp:111 msgid "Snap bounding box corners and guides to bounding box edges" -msgstr "" +msgstr "הצמד את פינות התיבה התוחמת וקווים מנחים לקצוות תיבה תוחמת" -#: ../src/ui/dialog/document-properties.cpp:113 +#: ../src/ui/dialog/document-properties.cpp:112 msgid "Snap to bounding box co_rners" -msgstr "" +msgstr "הצמד ל_פינות התיבה התוחמת" -#: ../src/ui/dialog/document-properties.cpp:113 +#: ../src/ui/dialog/document-properties.cpp:112 msgid "Snap bounding box corners to other bounding box corners" -msgstr "" +msgstr "הצמד פינות של תיבה תוחמת לפינות של תיבה תוחמת אחרת" -#: ../src/ui/dialog/document-properties.cpp:114 +#: ../src/ui/dialog/document-properties.cpp:113 msgid "Snap to page border" -msgstr "" +msgstr "הצמד לגבול העמוד" -#: ../src/ui/dialog/document-properties.cpp:114 +#: ../src/ui/dialog/document-properties.cpp:113 msgid "Snap bounding box corners and nodes to the page border" -msgstr "" +msgstr "הצמד את פינות התיבה התוחמת והמפרקים לגבולות העמוד" #. --------------------------------------------------------------- #. Applies to both nodes and guides, but not to bboxes, that's why its located here -#: ../src/ui/dialog/document-properties.cpp:117 +#: ../src/ui/dialog/document-properties.cpp:116 msgid "Rotation _center" -msgstr "" +msgstr "מרכז ה_סיבוב" -#: ../src/ui/dialog/document-properties.cpp:117 +#: ../src/ui/dialog/document-properties.cpp:116 msgid "Consider the rotation center of an object when snapping" -msgstr "" +msgstr "התייחס למרכז הסיבוב של פריט בזמן ההצמדה" + +#: ../src/ui/dialog/document-properties.cpp:117 +msgid "_Smooth nodes" +msgstr "ה_חלק מפרקים" + +#: ../src/ui/dialog/document-properties.cpp:117 +msgid "Snap to smooth nodes too, instead of only snapping to cusp nodes" +msgstr "הצמד להחלקת המפרקים גם כן, במקום להצמיד למפרקים חרמשיים בלבד" #: ../src/ui/dialog/document-properties.cpp:118 msgid "_Grid with guides" -msgstr "" +msgstr "_רשת עם קווים מנחים" #: ../src/ui/dialog/document-properties.cpp:118 msgid "Snap to grid-guide intersections" -msgstr "" +msgstr "הצמד אל הצטלבויות רשת וקו מנחה" #: ../src/ui/dialog/document-properties.cpp:119 -msgid "_Line segments" -msgstr "" +msgid "_Paths" +msgstr "_נתיבים" #: ../src/ui/dialog/document-properties.cpp:119 -msgid "" -"Snap to intersections of line segments ('snap to paths' must be enabled, see " -"the previous tab)" -msgstr "" +msgid "Snap to intersections of paths ('snap to paths' must be enabled, see the previous tab)" +msgstr "הצמד אל הצטלבויות נתיבים (יש להפעיל את 'הצמדה לנתיבים', הבט בלשונית הקודמת)" #. TRANSLATORS: In Grid|_New translate only the word _New. It ref to grid #: ../src/ui/dialog/document-properties.cpp:124 msgid "Grid|_New" -msgstr "" +msgstr "Grid|_חדשה" #: ../src/ui/dialog/document-properties.cpp:124 msgid "Create new grid." -msgstr "" +msgstr "צור רשת חדשה." #: ../src/ui/dialog/document-properties.cpp:125 msgid "_Remove" -msgstr "" +msgstr "_הסר" #: ../src/ui/dialog/document-properties.cpp:125 msgid "Remove selected grid." -msgstr "" +msgstr "הסר את הרשת הנבחרת." -#: ../src/ui/dialog/document-properties.cpp:135 +#: ../src/ui/dialog/document-properties.cpp:134 msgid "Guides" -msgstr "" +msgstr "קווים מנחים" -#: ../src/ui/dialog/document-properties.cpp:136 -#: ../src/ui/dialog/inkscape-preferences.cpp:905 +#: ../src/ui/dialog/document-properties.cpp:135 +#: ../src/ui/dialog/inkscape-preferences.cpp:958 msgid "Grids" -msgstr "" +msgstr "רשתות" -#: ../src/ui/dialog/document-properties.cpp:137 ../src/verbs.cpp:2498 -#, fuzzy +#: ../src/ui/dialog/document-properties.cpp:136 +#: ../src/verbs.cpp:2563 msgid "Snap" -msgstr "צורות" +msgstr "הצמדה" -#: ../src/ui/dialog/document-properties.cpp:138 +#: ../src/ui/dialog/document-properties.cpp:137 msgid "Snap points" -msgstr "" +msgstr "נקודות הצמדה" -#: ../src/ui/dialog/document-properties.cpp:227 +#: ../src/ui/dialog/document-properties.cpp:232 msgid "General" -msgstr "" +msgstr "כללי" -#: ../src/ui/dialog/document-properties.cpp:229 +#: ../src/ui/dialog/document-properties.cpp:234 msgid "Border" -msgstr "" +msgstr "גבול" -#: ../src/ui/dialog/document-properties.cpp:231 +#: ../src/ui/dialog/document-properties.cpp:236 msgid "Format" -msgstr "" +msgstr "מבנה" -#: ../src/ui/dialog/document-properties.cpp:259 +#: ../src/ui/dialog/document-properties.cpp:264 msgid "Guides" -msgstr "" +msgstr "קווים מנחים" -#: ../src/ui/dialog/document-properties.cpp:278 +#: ../src/ui/dialog/document-properties.cpp:283 msgid "Snap _distance" -msgstr "" +msgstr "מר_חק להצמדה" -#: ../src/ui/dialog/document-properties.cpp:278 +#: ../src/ui/dialog/document-properties.cpp:283 msgid "Snap only when _closer than:" -msgstr "" +msgstr "הצמד רק כ_אשר קרוב מאשר:" -#: ../src/ui/dialog/document-properties.cpp:278 -#: ../src/ui/dialog/document-properties.cpp:284 -#: ../src/ui/dialog/document-properties.cpp:290 +#: ../src/ui/dialog/document-properties.cpp:283 +#: ../src/ui/dialog/document-properties.cpp:289 +#: ../src/ui/dialog/document-properties.cpp:295 msgid "Always snap" -msgstr "" +msgstr "הצמד תמיד" -#: ../src/ui/dialog/document-properties.cpp:279 +#: ../src/ui/dialog/document-properties.cpp:284 msgid "Snapping distance, in screen pixels, for snapping to objects" -msgstr "" +msgstr "מרחק להצמדה, בפיקסלים על המסך, להצמדה לפריטים" -#: ../src/ui/dialog/document-properties.cpp:279 +#: ../src/ui/dialog/document-properties.cpp:284 msgid "Always snap to objects, regardless of their distance" -msgstr "" +msgstr "תמיד הצמד לפריטים, לא משנה מה המרחק" -#: ../src/ui/dialog/document-properties.cpp:280 -msgid "" -"If set, objects only snap to another object when it's within the range " -"specified below" -msgstr "" +#: ../src/ui/dialog/document-properties.cpp:285 +msgid "If set, objects only snap to another object when it's within the range specified below" +msgstr "במידה והוגדר, פריטים ייצמדו לפריט אחר רק כאשר הם בטווח המצויין" #. Options for snapping to grids -#: ../src/ui/dialog/document-properties.cpp:284 +#: ../src/ui/dialog/document-properties.cpp:289 msgid "Snap d_istance" -msgstr "" +msgstr "מרח_ק להצמדה" -#: ../src/ui/dialog/document-properties.cpp:284 +#: ../src/ui/dialog/document-properties.cpp:289 msgid "Snap only when c_loser than:" -msgstr "" +msgstr "הצמד רק כאשר קרוב מא_שר:" -#: ../src/ui/dialog/document-properties.cpp:285 +#: ../src/ui/dialog/document-properties.cpp:290 msgid "Snapping distance, in screen pixels, for snapping to grid" -msgstr "" +msgstr "מרחק להצמדה, בפיקסלים על המסך, להצמדה לרשת" -#: ../src/ui/dialog/document-properties.cpp:285 +#: ../src/ui/dialog/document-properties.cpp:290 msgid "Always snap to grids, regardless of the distance" -msgstr "" +msgstr "תמיד הצמד לרשתות, לא משנה מה המרחק" -#: ../src/ui/dialog/document-properties.cpp:286 -msgid "" -"If set, objects only snap to a grid line when it's within the range " -"specified below" -msgstr "" +#: ../src/ui/dialog/document-properties.cpp:291 +msgid "If set, objects only snap to a grid line when it's within the range specified below" +msgstr "במידה והוגדר, פריטים ייצמדו לקווי הרשת רק כאשר הם בטווח המצויין להלן" #. Options for snapping to guides -#: ../src/ui/dialog/document-properties.cpp:290 +#: ../src/ui/dialog/document-properties.cpp:295 msgid "Snap dist_ance" -msgstr "" +msgstr "מרחק לה_צמדה" -#: ../src/ui/dialog/document-properties.cpp:290 +#: ../src/ui/dialog/document-properties.cpp:295 msgid "Snap only when close_r than:" -msgstr "" +msgstr "הצמד רק כאשר קרוב מאשר:" -#: ../src/ui/dialog/document-properties.cpp:291 +#: ../src/ui/dialog/document-properties.cpp:296 msgid "Snapping distance, in screen pixels, for snapping to guides" -msgstr "" +msgstr "מרחק להצמדה, בפיקסלים על המסך, להצמדה לקווים מנחים" -#: ../src/ui/dialog/document-properties.cpp:291 +#: ../src/ui/dialog/document-properties.cpp:296 msgid "Always snap to guides, regardless of the distance" -msgstr "" +msgstr "תמיד הצמד לקווים מנחים, לא משנה מה המרחק" -#: ../src/ui/dialog/document-properties.cpp:292 -msgid "" -"If set, objects only snap to a guide when it's within the range specified " -"below" -msgstr "" +#: ../src/ui/dialog/document-properties.cpp:297 +msgid "If set, objects only snap to a guide when it's within the range specified below" +msgstr "במידה והוגדר, פריטים ייצמדו לקו מנחה ק כאשר הם בטווח המצויין להלן" -#: ../src/ui/dialog/document-properties.cpp:315 +#: ../src/ui/dialog/document-properties.cpp:320 msgid "Snapping" -msgstr "" +msgstr "הצמדה" -#: ../src/ui/dialog/document-properties.cpp:317 +#: ../src/ui/dialog/document-properties.cpp:322 msgid "What snaps" -msgstr "" +msgstr "מה נצמד" -#: ../src/ui/dialog/document-properties.cpp:319 +#: ../src/ui/dialog/document-properties.cpp:324 msgid "Snap to objects" -msgstr "" +msgstr "הצמדה לפריטים" -#: ../src/ui/dialog/document-properties.cpp:321 +#: ../src/ui/dialog/document-properties.cpp:326 msgid "Snap to grids" -msgstr "" +msgstr "הצמד לרשתות" -#: ../src/ui/dialog/document-properties.cpp:323 +#: ../src/ui/dialog/document-properties.cpp:328 msgid "Snap to guides" -msgstr "" +msgstr "הצמד לקווים מנחים" -#: ../src/ui/dialog/document-properties.cpp:361 +#: ../src/ui/dialog/document-properties.cpp:366 msgid "Snapping to intersections of" -msgstr "" +msgstr "הצמדה למפגש בין" -#: ../src/ui/dialog/document-properties.cpp:363 +#: ../src/ui/dialog/document-properties.cpp:368 msgid "Special points to consider" -msgstr "" +msgstr "נקודות מיוחדות להתחשבות" -#: ../src/ui/dialog/document-properties.cpp:433 +#: ../src/ui/dialog/document-properties.cpp:439 msgid "Creation" -msgstr "" +msgstr "יצירה" -#: ../src/ui/dialog/document-properties.cpp:434 +#: ../src/ui/dialog/document-properties.cpp:440 msgid "Defined grids" -msgstr "" +msgstr "רשתות מוגדרות" -#: ../src/ui/dialog/document-properties.cpp:650 +#: ../src/ui/dialog/document-properties.cpp:657 msgid "Remove grid" -msgstr "" - -#: ../src/ui/dialog/export.cpp:32 -msgid "Export" -msgstr "" +msgstr "הסר רשת" #: ../src/ui/dialog/extension-editor.cpp:80 msgid "Information" -msgstr "" +msgstr "מידע" #: ../src/ui/dialog/extension-editor.cpp:81 -#: ../share/extensions/lindenmayer.inx.h:3 ../share/extensions/measure.inx.h:2 +#: ../share/extensions/draw_from_triangle.inx.h:20 +#: ../share/extensions/lindenmayer.inx.h:3 +#: ../share/extensions/measure.inx.h:2 msgid "Help" -msgstr "" +msgstr "עזרה" #: ../src/ui/dialog/extension-editor.cpp:82 msgid "Parameters" -msgstr "" +msgstr "פרמטרים" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:382 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:383 msgid "No preview" -msgstr "" +msgstr "ללא תצוגה מקדימה" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:488 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:489 msgid "too large for preview" -msgstr "" +msgstr "גדול מדי לתצוגה מקדימה" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:577 msgid "Enable preview" -msgstr "" +msgstr "אפשר תצוגה מקדימה" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:711 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:712 -#: ../src/ui/dialog/filedialogimpl-win32.cpp:198 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:197 msgid "All Inkscape Files" -msgstr "" +msgstr "כל קבצי אינקסקייפ" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:716 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:717 -#: ../src/ui/dialog/filedialogimpl-win32.cpp:197 -#, fuzzy +#: ../src/ui/dialog/filedialogimpl-win32.cpp:196 msgid "All Files" -msgstr "קובץ" +msgstr "כל הקבצים" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:722 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:723 msgid "All Images" -msgstr "" +msgstr "כל התמונות" -#. ###### Add the file types menu -#. createFilterMenu(); -#. ###### Do we want the .xxx extension automatically added? #. ###### File options #. ###### Do we want the .xxx extension automatically added? -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:887 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:891 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1429 msgid "Append filename extension automatically" -msgstr "" +msgstr "הוסף את סיומת הקובץ אוטומטית" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1042 -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1294 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1045 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1293 msgid "Guess from extension" -msgstr "" +msgstr "נחש לפי סיומת הקובץ" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1315 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1314 msgid "Left edge of source" -msgstr "" +msgstr "הצד השמאלי של המקור" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1316 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1315 msgid "Top edge of source" -msgstr "" +msgstr "הצד העליון של המקור" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1317 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1316 msgid "Right edge of source" -msgstr "" +msgstr "הצד הימני של המקור" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1318 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1317 msgid "Bottom edge of source" -msgstr "" +msgstr "הצד התחתון של המקור" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1319 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1318 msgid "Source width" -msgstr "" +msgstr "רוחב המקורגו" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1320 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1319 msgid "Source height" -msgstr "" +msgstr "גובה המקור" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1321 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1320 msgid "Destination width" -msgstr "" +msgstr "רוחב היעד" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1322 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1321 msgid "Destination height" -msgstr "" +msgstr "גובה היעד" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1323 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1322 msgid "Resolution (dots per inch)" -msgstr "" +msgstr "רזולוציה (נקודות לאינטש)" #. ######################################### #. ## EXTRA WIDGET -- SOURCE SIDE #. ######################################### #. ##### Export options buttons/spinners, etc #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1360 -#, fuzzy msgid "Document" -msgstr "המסמך נשמר." +msgstr "מסמך" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1372 #: ../share/extensions/color_custom.inx.h:3 msgid "Custom" -msgstr "" +msgstr "מותאם אישית" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1412 -#, fuzzy msgid "Cairo" -msgstr "פחם" +msgstr "Cairo" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1415 msgid "Antialias" -msgstr "" +msgstr "החלק קצוות" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1418 msgid "Background" -msgstr "" +msgstr "רקע" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1441 -#, fuzzy msgid "Destination" -msgstr "יעד הדפסה" +msgstr "יעד" -#: ../src/ui/dialog/filedialogimpl-win32.cpp:199 -#, fuzzy +#: ../src/ui/dialog/filedialogimpl-win32.cpp:198 msgid "All Image Files" -msgstr "קובץ" +msgstr "כל קבצי התמונות" -#: ../src/ui/dialog/filedialogimpl-win32.cpp:428 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:427 msgid "Show Preview" -msgstr "" +msgstr "הצג תצוגה מקדימה" -#: ../src/ui/dialog/filedialogimpl-win32.cpp:564 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:563 msgid "No file selected" -msgstr "" +msgstr "לא נבחר קובץ" -#: ../src/ui/dialog/fill-and-stroke.cpp:53 +#: ../src/ui/dialog/fill-and-stroke.cpp:50 msgid "Fill" -msgstr "" +msgstr "מילוי" -#: ../src/ui/dialog/fill-and-stroke.cpp:54 +#: ../src/ui/dialog/fill-and-stroke.cpp:51 msgid "Stroke _paint" -msgstr "" +msgstr "צבע _קו המתאר" -#: ../src/ui/dialog/fill-and-stroke.cpp:55 +#: ../src/ui/dialog/fill-and-stroke.cpp:52 msgid "Stroke st_yle" -msgstr "" +msgstr "סגנון ק_ו המתאר" -#: ../src/ui/dialog/filter-effects-dialog.cpp:504 -msgid "" -"This matrix determines a linear transform on colour space. Each line affects " -"one of the color components. Each column determines how much of each color " -"component from the input is passed to the output. The last column does not " -"depend on input colors, so can be used to adjust a constant component value." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:506 +msgid "This matrix determines a linear transform on colour space. Each line affects one of the color components. Each column determines how much of each color component from the input is passed to the output. The last column does not depend on input colors, so can be used to adjust a constant component value." +msgstr "מטריצה זו קובעת שינוי קווי במרחב צבע. כל שורה משפיעה על מרכיב צבע אחד. כל עמודה מתארת כמה מאותו מרכיב צבע מהקלט מועבר לפלט. העמודה האחרונה אינה מסתמכת על צבעי הקלט, ולכן יכולה לשמש לצורך שינוי ערך מרכיב קבוע." -#: ../src/ui/dialog/filter-effects-dialog.cpp:614 +#: ../src/ui/dialog/filter-effects-dialog.cpp:616 msgid "Image File" -msgstr "" +msgstr "קובץ תמונה" -#: ../src/ui/dialog/filter-effects-dialog.cpp:617 +#: ../src/ui/dialog/filter-effects-dialog.cpp:619 msgid "Selected SVG Element" -msgstr "" +msgstr "רכיב SVG שנבחר" #. TODO: any image, not justy svg -#: ../src/ui/dialog/filter-effects-dialog.cpp:686 +#: ../src/ui/dialog/filter-effects-dialog.cpp:689 msgid "Select an image to be used as feImage input" -msgstr "" +msgstr "בחר תמונה לשימוש כקלט feImage" -#: ../src/ui/dialog/filter-effects-dialog.cpp:778 +#: ../src/ui/dialog/filter-effects-dialog.cpp:781 msgid "This SVG filter effect does not require any parameters." -msgstr "" +msgstr "אפקט מסנן SVG זה אינו דורש כל פרמטרים." -#: ../src/ui/dialog/filter-effects-dialog.cpp:784 +#: ../src/ui/dialog/filter-effects-dialog.cpp:787 msgid "This SVG filter effect is not yet implemented in Inkscape." -msgstr "" +msgstr "אפקט מסנן SVG זה אינו מובנה באינקסקייפ." -#: ../src/ui/dialog/filter-effects-dialog.cpp:975 +#: ../src/ui/dialog/filter-effects-dialog.cpp:978 msgid "Light Source:" -msgstr "" +msgstr "מקור האור:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:992 +#: ../src/ui/dialog/filter-effects-dialog.cpp:995 msgid "Direction angle for the light source on the XY plane, in degrees" -msgstr "" +msgstr "כיוון זווית מקור האור במשטח XY, במעלות." -#: ../src/ui/dialog/filter-effects-dialog.cpp:993 +#: ../src/ui/dialog/filter-effects-dialog.cpp:996 msgid "Direction angle for the light source on the YZ plane, in degrees" -msgstr "" +msgstr "כיוון זווית מקור האור במשטח YZ, במעלות" #. default x: #. default y: #. default z: -#: ../src/ui/dialog/filter-effects-dialog.cpp:996 #: ../src/ui/dialog/filter-effects-dialog.cpp:999 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1002 msgid "Location" -msgstr "" +msgstr "מיקום" -#: ../src/ui/dialog/filter-effects-dialog.cpp:996 #: ../src/ui/dialog/filter-effects-dialog.cpp:999 #: ../src/ui/dialog/filter-effects-dialog.cpp:1002 -#, fuzzy +#: ../src/ui/dialog/filter-effects-dialog.cpp:1005 msgid "X coordinate" -msgstr "פינות" +msgstr "נקודת הציון ב־X" -#: ../src/ui/dialog/filter-effects-dialog.cpp:996 #: ../src/ui/dialog/filter-effects-dialog.cpp:999 #: ../src/ui/dialog/filter-effects-dialog.cpp:1002 -#, fuzzy +#: ../src/ui/dialog/filter-effects-dialog.cpp:1005 msgid "Y coordinate" -msgstr "פינות" +msgstr "נקודת הציון ב־Y" -#: ../src/ui/dialog/filter-effects-dialog.cpp:996 #: ../src/ui/dialog/filter-effects-dialog.cpp:999 #: ../src/ui/dialog/filter-effects-dialog.cpp:1002 -#, fuzzy +#: ../src/ui/dialog/filter-effects-dialog.cpp:1005 msgid "Z coordinate" -msgstr "פינות" +msgstr "נקודת הציון ב־Z" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1002 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1005 msgid "Points At" -msgstr "" +msgstr "מצביע אל" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1003 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1006 msgid "Specular Exponent" -msgstr "" +msgstr "מעריך ההשתקפות" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1003 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1006 msgid "Exponent value controlling the focus for the light source" -msgstr "" +msgstr "ערך המעריך השולט במיקוד מקור האור" #. TODO: here I have used 100 degrees as default value. But spec says that if not specified, no limiting cone is applied. So, there should be a way for the user to set a "no limiting cone" option. -#: ../src/ui/dialog/filter-effects-dialog.cpp:1005 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1008 msgid "Cone Angle" -msgstr "" +msgstr "זווית קונית" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1005 -msgid "" -"This is the angle between the spot light axis (i.e. the axis between the " -"light source and the point to which it is pointing at) and the spot light " -"cone. No light is projected outside this cone." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:1008 +msgid "This is the angle between the spot light axis (i.e. the axis between the light source and the point to which it is pointing at) and the spot light cone. No light is projected outside this cone." +msgstr "זוהי הזווית בין ציר נקודת האור (לדוגמה הזווית שבין מקור האור והנקודה שאליה הוא מצביע) וחרוט נקודת האור. האור לא מוקרן מחוץ לחרוט." -#: ../src/ui/dialog/filter-effects-dialog.cpp:1065 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1069 msgid "New light source" -msgstr "" +msgstr "מקור אור חדש" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1106 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1110 msgid "_Duplicate" -msgstr "" +msgstr "_שכפול" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1132 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1136 msgid "_Filter" -msgstr "" +msgstr "_מסנן" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1146 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1150 msgid "R_ename" -msgstr "" +msgstr "ש_נה שם" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1240 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1253 msgid "Rename filter" -msgstr "" +msgstr "שנה את שם המסנן" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1276 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1289 msgid "Apply filter" -msgstr "" +msgstr "החל מסנן" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1352 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1365 msgid "Add filter" -msgstr "" +msgstr "הוסף מסנן" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1378 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1391 msgid "Duplicate filter" -msgstr "" +msgstr "שכפל מסנן" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1445 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1458 msgid "_Effect" -msgstr "" +msgstr "מ_סנן" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1453 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1466 msgid "Connections" -msgstr "" +msgstr "חיבורים" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1569 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1582 msgid "Remove filter primitive" -msgstr "" +msgstr "הסר סינון קדמוני" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1940 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1954 msgid "Remove merge node" -msgstr "" +msgstr "הסר את מיזוג המפרקים" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2056 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2070 msgid "Reorder filter primitive" -msgstr "" +msgstr "סדר מחדש סינון קדמוני" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2092 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2104 msgid "Add Effect:" -msgstr "" +msgstr "הוסף אפקט:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2093 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2105 msgid "No effect selected" -msgstr "" +msgstr "לא נבחר אפקט" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2094 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2106 msgid "No filter selected" -msgstr "" +msgstr "לא נבחר מסנן" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2130 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2144 msgid "Effect parameters" -msgstr "" +msgstr "פרמטרים לאפקט" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2131 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2145 msgid "Filter General Settings" -msgstr "" +msgstr "הגדרות כלליות למסנן" #. default x: #. default y: -#: ../src/ui/dialog/filter-effects-dialog.cpp:2187 -#, fuzzy +#: ../src/ui/dialog/filter-effects-dialog.cpp:2201 msgid "Coordinates" -msgstr "פינות" +msgstr "נקודות הציון" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2187 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2201 msgid "X coordinate of the left corners of filter effects region" -msgstr "" +msgstr "נקודת הציון ב־X של הפינות השמאליות של איזור אפקטי המסנן" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2187 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2201 msgid "Y coordinate of the upper corners of filter effects region" -msgstr "" +msgstr "נקודת הציון ב־Y של הפינות השמאליות של איזור אפקטי המסנן" #. default width: #. default height: -#: ../src/ui/dialog/filter-effects-dialog.cpp:2188 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2202 #: ../share/extensions/dimension.inx.h:1 msgid "Dimensions" -msgstr "" +msgstr "מימדים" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2188 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2202 msgid "Width of filter effects region" -msgstr "" +msgstr "רוחב איזור אפקטי המסנן" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2188 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2202 msgid "Height of filter effects region" -msgstr "" +msgstr "גובה איזור אפקטי המסנן" #. # end multiple scan #. ## end mode page -#: ../src/ui/dialog/filter-effects-dialog.cpp:2191 -#: ../src/ui/dialog/tracedialog.cpp:553 ../src/widgets/toolbox.cpp:3328 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2205 +#: ../src/ui/dialog/tracedialog.cpp:552 +#: ../src/widgets/toolbox.cpp:3786 #: ../share/extensions/triangle.inx.h:9 msgid "Mode" -msgstr "" +msgstr "מצב" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2194 -msgid "" -"Indicates the type of matrix operation. The keyword 'matrix' indicates that " -"a full 5x4 matrix of values will be provided. The other keywords represent " -"convenience shortcuts to allow commonly used color operations to be " -"performed without specifying a complete matrix." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2208 +msgid "Indicates the type of matrix operation. The keyword 'matrix' indicates that a full 5x4 matrix of values will be provided. The other keywords represent convenience shortcuts to allow commonly used color operations to be performed without specifying a complete matrix." +msgstr "מציין את סוג פעולת המטריצה. מילת המפתח 'מטריצה' מציינת שמטריצה שלמה של 5x4 ערכים תסופק. מילות המפתח האחרות מייצגות את מקשי הקיצור לנוחות המאפשרים ביצוע פעולות צבע נפוצות מבלי לציין מטריצה שלמה." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2195 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2209 msgid "Value(s)" -msgstr "" +msgstr "ערך/ים" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2209 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2250 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2223 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2264 msgid "Operator" -msgstr "" +msgstr "מפעיל" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2210 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2224 msgid "K1" -msgstr "" +msgstr "K1" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2210 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2211 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2212 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2213 -msgid "" -"If the arithmetic operation is chosen, each result pixel is computed using " -"the formula k1*i1*i2 + k2*i1 + k3*i2 + k4 where i1 and i2 are the pixel " -"values of the first and second inputs respectively." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2224 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2225 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2226 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2227 +msgid "If the arithmetic operation is chosen, each result pixel is computed using the formula k1*i1*i2 + k2*i1 + k3*i2 + k4 where i1 and i2 are the pixel values of the first and second inputs respectively." +msgstr "במידה ונבחרה פעולה חשבונית, כל פיקסל בתצורה מחושב באמצעות הנוסחה k1*i1*i2 + k2*i1 + k3*i2 + k4 בעוד i1 ו־i2 הינם ערכי הפיקסלים של הפלט הראשון והשני" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2211 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2225 msgid "K2" -msgstr "" +msgstr "K2" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2212 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2226 msgid "K3" -msgstr "" +msgstr "K3" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2213 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2227 msgid "K4" -msgstr "" +msgstr "K4" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2216 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2230 msgid "width of the convolve matrix" -msgstr "" +msgstr "רוחב מטריצת השזירה" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2216 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2230 msgid "height of the convolve matrix" -msgstr "" +msgstr "גובה מטריצת השזירה" #. default x: #. default y: -#: ../src/ui/dialog/filter-effects-dialog.cpp:2217 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2231 msgid "Target" -msgstr "" +msgstr "יעד" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2217 -msgid "" -"X coordinate of the target point in the convolve matrix. The convolution is " -"applied to pixels around this point." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2231 +msgid "X coordinate of the target point in the convolve matrix. The convolution is applied to pixels around this point." +msgstr "נקודת הציון ב־X של נקודת היעד במטריצת השזירה. השזירה מופעלת על הפיקסלים הסובבים נקודה זו." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2217 -msgid "" -"Y coordinate of the target point in the convolve matrix. The convolution is " -"applied to pixels around this point." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2231 +msgid "Y coordinate of the target point in the convolve matrix. The convolution is applied to pixels around this point." +msgstr "נקודת הציון ב־Y של נקודת היעד במטריצת השזירה. השזירה מופעלת על הפיקסלים הסובבים נקודה זו." #. TRANSLATORS: for info on "Kernel", see http://en.wikipedia.org/wiki/Kernel_(matrix) -#: ../src/ui/dialog/filter-effects-dialog.cpp:2219 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2233 msgid "Kernel" -msgstr "" +msgstr "גרעין" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2219 -msgid "" -"This matrix describes the convolve operation that is applied to the input " -"image in order to calculate the pixel colors at the output. Different " -"arrangements of values in this matrix result in various possible visual " -"effects. An identity matrix would lead to a motion blur effect (parallel to " -"the matrix diagonal) while a matrix filled with a constant non-zero value " -"would lead to a common blur effect." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2233 +msgid "This matrix describes the convolve operation that is applied to the input image in order to calculate the pixel colors at the output. Different arrangements of values in this matrix result in various possible visual effects. An identity matrix would lead to a motion blur effect (parallel to the matrix diagonal) while a matrix filled with a constant non-zero value would lead to a common blur effect." +msgstr "מטריצה זו מתארת את פעולת השזירה שמופעלת על תמונת הקלט על מנת לחשב את צבעי הפיקסלים לפלט. סידורים שונים של נתונים במטריצה זו יוצרים מגוון של אפקטים חזותיים. מטריצת זהות עלולה להוביל לאפקט טשטוש בתנועה (מקביל למטריצה האלכסונית) בעוד שמטריצה המלאה במספרים קבועים שאינם 0 תוביל לאפקט טשטוש נפוץ." #. TODO: svg spec: The default value is the sum of all values in kernelMatrix, with the exception that if the sum is zero, then the divisor is set to 1. -#: ../src/ui/dialog/filter-effects-dialog.cpp:2222 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2236 msgid "Divisor" -msgstr "" +msgstr "מחלק" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2222 -msgid "" -"After applying the kernelMatrix to the input image to yield a number, that " -"number is divided by divisor to yield the final destination color value. A " -"divisor that is the sum of all the matrix values tends to have an evening " -"effect on the overall color intensity of the result." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2236 +msgid "After applying the kernelMatrix to the input image to yield a number, that number is divided by divisor to yield the final destination color value. A divisor that is the sum of all the matrix values tends to have an evening effect on the overall color intensity of the result." +msgstr "לאחר החלת מטריצת הליבה לתמונת הקלט כדי להניב מספיק, המספר הזה מחולק במחלק כדי להניב את ערך צבע היעד הסופי. המחלק שהוא סכום כל ערכי המטריצה נוטה להיות בעל אפקט השוואה על עוצמת הצבע הכללית של התוצאה." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2223 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2237 msgid "Bias" -msgstr "" +msgstr "להטות" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2223 -msgid "" -"This value is added to each component. This is useful to define a constant " -"value as the zero response of the filter." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2237 +msgid "This value is added to each component. This is useful to define a constant value as the zero response of the filter." +msgstr "ערך זה נוסף לכל מרכיב. פעולה זו שימושית להגדרת ערכים קבועים כתגובת אפס של המסנן." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2224 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2238 msgid "Edge Mode" -msgstr "" +msgstr "מצב קצוות" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2224 -msgid "" -"Determines how to extend the input image as necessary with color values so " -"that the matrix operations can be applied when the kernel is positioned at " -"or near the edge of the input image." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2238 +msgid "Determines how to extend the input image as necessary with color values so that the matrix operations can be applied when the kernel is positioned at or near the edge of the input image." +msgstr "מציין כיצד למתוח את תמונת הפלט כנדרש עם ערכי צבע כך שניתן יהיה להחיל פעולות מטריצה כאשר הליבה ממוקמת ליד קצה תמונת הפלט." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2225 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2239 msgid "Preserve Alpha" -msgstr "" +msgstr "שמור על השקיפות" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2225 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2239 msgid "If set, the alpha channel won't be altered by this filter primitive." -msgstr "" +msgstr "במידה והוגדר, ערוץ השקיפות לא ישתנה על ידי מסנן קדמוני זה." #. default: white -#: ../src/ui/dialog/filter-effects-dialog.cpp:2228 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2242 msgid "Diffuse Color" -msgstr "" +msgstr "הפץ את הצבע" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2228 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2261 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2242 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2275 msgid "Defines the color of the light source" -msgstr "" +msgstr "מגדיר את צבע מקור האור" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2229 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2262 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2243 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2276 msgid "Surface Scale" -msgstr "" +msgstr "שינוי גודל פני השטח" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2229 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2262 -msgid "" -"This value amplifies the heights of the bump map defined by the input alpha " -"channel" -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2243 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2276 +msgid "This value amplifies the heights of the bump map defined by the input alpha channel" +msgstr "ערך זה מדגיש את גבהי מפת התבליט המוגדרת על ידי ערוץ השקיפות" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2230 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2263 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2244 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2277 msgid "Constant" -msgstr "" +msgstr "קבוע" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2230 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2263 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2244 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2277 msgid "This constant affects the Phong lighting model." -msgstr "" +msgstr "קבוע זה משפיע על מודל התאורה של פונג." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2231 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2265 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2245 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2279 msgid "Kernel Unit Length" -msgstr "" +msgstr "אורך יחידות הליבה" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2235 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2249 msgid "This defines the intensity of the displacement effect." -msgstr "" +msgstr "פעולה זו מגדירה את עוצמת אפקט שינוי המיקום." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2236 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2250 msgid "X displacement" -msgstr "" +msgstr "שינוי מקום ב־X" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2236 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2250 msgid "Color component that controls the displacement in the X direction" -msgstr "" +msgstr "מרכיב הצבע השולט על שינוי המיקום בכיוון ה־X" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2237 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2251 msgid "Y displacement" -msgstr "" +msgstr "שינוי מיקום ב־Y" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2237 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2251 msgid "Color component that controls the displacement in the Y direction" -msgstr "" +msgstr "מרכיב הצבע השולט על שינוי המיקום בכיוון ה־Y" #. default: black -#: ../src/ui/dialog/filter-effects-dialog.cpp:2240 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2254 msgid "Flood Color" -msgstr "" +msgstr "הצפה בצבע" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2240 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2254 msgid "The whole filter region will be filled with this color." -msgstr "" +msgstr "כל איזור המסנן יתמלא בצבע זה." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2244 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2258 msgid "Standard Deviation" -msgstr "" +msgstr "סטיית תקן" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2244 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2258 msgid "The standard deviation for the blur operation." -msgstr "" +msgstr "סטיית התקן עבור פעולת הטשטוש." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2250 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2264 msgid "" "Erode: performs \"thinning\" of input image.\n" "Dilate: performs \"fattenning\" of input image." msgstr "" +"שחיקה: מבצע \"הצרה\" של תמונת הפלט.\n" +"הרחבה: מבצע \"השמנה\" של תמונת הפלט." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2254 -#, fuzzy +#: ../src/ui/dialog/filter-effects-dialog.cpp:2268 msgid "Source of Image" -msgstr "מספר צעדים" +msgstr "מקור התמונה" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2257 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2271 msgid "Delta X" -msgstr "" +msgstr "שינוי ב־X" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2257 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2271 msgid "This is how far the input image gets shifted to the right" -msgstr "" +msgstr "זהו המרחק המרבי אליו תוזז התמונה לימין" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2258 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2272 msgid "Delta Y" -msgstr "" +msgstr "שינוי ב־Y" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2258 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2272 msgid "This is how far the input image gets shifted downwards" -msgstr "" +msgstr "זהו המרחק המרבי אליו תוזז התמונה כלפי מטה" #. default: white -#: ../src/ui/dialog/filter-effects-dialog.cpp:2261 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2275 msgid "Specular Color" -msgstr "" +msgstr "צבע ההשתקפות" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2264 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2278 #: ../share/extensions/interp.inx.h:2 msgid "Exponent" -msgstr "" +msgstr "מעריך" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2264 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2278 msgid "Exponent for specular term, larger is more \"shiny\"." -msgstr "" +msgstr "מעריך ביטוי ההשתקפות, גדול יותר זה \"נוצץ\" יותר." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2273 -msgid "" -"Indicates whether the filter primitive should perform a noise or turbulence " -"function." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2287 +msgid "Indicates whether the filter primitive should perform a noise or turbulence function." +msgstr "מציין האם המסנן הקדמוני אמור לבמע רעש או פונקציית עירבול." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2274 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2288 msgid "Base Frequency" -msgstr "" +msgstr "תדירות בסיס" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2275 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2289 msgid "Octaves" -msgstr "" +msgstr "מתומנים" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2276 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2290 msgid "Seed" -msgstr "" +msgstr "זרע" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2276 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2290 msgid "The starting number for the pseudo random number generator." -msgstr "" +msgstr "המספר ההתחלתי עבור ייצרן המספרים הבדויים האקראיים." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2288 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2302 msgid "Add filter primitive" -msgstr "" +msgstr "הוסף מסנן קדמוני" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2304 -msgid "" -"The feBlend filter primitive provides 4 image blending modes: screen, " -"multiply, darken and lighten." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2319 +msgid "The feBlend filter primitive provides 4 image blending modes: screen, multiply, darken and lighten." +msgstr "המסנן הקדמוני feBlend מספק 4 מצבי עירבול תמונה: מסך, הכפלה, האפלה והארה." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2308 -msgid "" -"The feColorMatrix filter primitive applies a matrix transformation to " -"colour of each rendered pixel. This allows for effects like turning object " -"to grayscale, modifying colour saturation and changing colour hue." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2323 +msgid "The feColorMatrix filter primitive applies a matrix transformation to colour of each rendered pixel. This allows for effects like turning object to grayscale, modifying colour saturation and changing colour hue." +msgstr "המסנן הקדמוני feColorMatrix מחיל מטריצת שינוי לצבע מכל פיקסל מעובד. דבר זה מאפשר אפקטים כמו הפיכת צבעי התמונה לגווני אפור, שינוי רוויית הצבע ושינוי גוון הצבע." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2312 -msgid "" -"The feComponentTransfer filter primitive manipulates the input's " -"color components (red, green, blue, and alpha) according to particular " -"transfer functions, allowing operations like brightness and contrast " -"adjustment, color balance, and thresholding." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2327 +msgid "The feComponentTransfer filter primitive manipulates the input's color components (red, green, blue, and alpha) according to particular transfer functions, allowing operations like brightness and contrast adjustment, color balance, and thresholding." +msgstr "המסנן הקדמוני feComponentTransfer משנה את רכיבי הצבע הנקלט (אדום, ירוק, כחול ושקיפות) בהתאם לפונקציות העברה מסויימות, מאפשר לפעולות כמו התאמת בהירות וניגודיות, איזון צבעים, והנחת סף." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2316 -msgid "" -"The feComposite filter primitive composites two images using one of " -"the Porter-Duff blending modes or the aritmetic mode described in SVG " -"standard. Porter-Duff blending modes are essentially logical operations " -"between the corresponding pixel values of the images." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2331 +msgid "The feComposite filter primitive composites two images using one of the Porter-Duff blending modes or the aritmetic mode described in SVG standard. Porter-Duff blending modes are essentially logical operations between the corresponding pixel values of the images." +msgstr "המסנן הקדמוני feComposite מאחד שתי תמונות באמצעות מצבי העירבול Porter-Duff או המצב החשבוני המתואר בתקן ה־SVG . מצבי עירבולPorter-Duff הינן פעולות לוגיות נחוצות בין הערכים התואמים של הפיקסלים שבתמונה." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2320 -msgid "" -"The feConvolveMatrix lets you specify a Convolution to be applied on " -"the image. Common effects created using convolution matrices are blur, " -"sharpening, embossing and edge detection. Note that while gaussian blur can " -"be created using this filter primitive, the special gaussian blur primitive " -"is faster and resolution-independent." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2335 +msgid "The feConvolveMatrix lets you specify a Convolution to be applied on the image. Common effects created using convolution matrices are blur, sharpening, embossing and edge detection. Note that while gaussian blur can be created using this filter primitive, the special gaussian blur primitive is faster and resolution-independent." +msgstr "המסנן הקדמוני feConvolveMatrix מאפשר לך לעוות את התמונה. אפקטים נפוצים הנוצרים באמצעות מטריצת עווית הינם טישטוש, חידוד , הבלטה וזיהוי קצוות. שים לב שבזמן שניתן ליצור טישטוש פעמוני באמצעות מסנן קדמוני זה, מסנן הטשטוש הפעמוני הקדמוני הינו מהיר יותר ואינו תלוי ברזולוציה." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2324 -msgid "" -"The feDiffuseLighting and feSpecularLighting filter primitives create " -"\"embossed\" shadings. The input's alpha channel is used to provide depth " -"information: higher opacity areas are raised toward the viewer and lower " -"opacity areas recede away from the viewer." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2339 +msgid "The feDiffuseLighting and feSpecularLighting filter primitives create \"embossed\" shadings. The input's alpha channel is used to provide depth information: higher opacity areas are raised toward the viewer and lower opacity areas recede away from the viewer." +msgstr "המסננים הקדמוניים feDiffuseLighting ו־feSpecularLighting יוצרים צלליות \"מובלטות\". קלט ערוץ השקיפות משמש לאספקת מידע אודות העומק: אזורים בעל אטימות גבוהה יותר מוגבהים לכיוון הצופה ואזורים בעלי אטימות נמוכה יותר נסוגים מן הצופה." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2328 -msgid "" -"The feDisplacementMap filter primitive displaces the pixels in the " -"first input using the second input as a displacement map, that shows from " -"how far the pixel should come from. Classical examples are whirl and pinch " -"effects." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2343 +msgid "The feDisplacementMap filter primitive displaces the pixels in the first input using the second input as a displacement map, that shows from how far the pixel should come from. Classical examples are whirl and pinch effects." +msgstr "המסנן הקדמוני feDisplacementMap מעביר את מיקומם של הפיקסלים בקלט הראשון באמצעות הקלט השני המשמש כמפת שינוי מיקום, המציגב מאיזה מרחק הפיקסל אמור להגיע. דוגמאות קלאסיות לכך הם האפקטים סחרור וצביטה." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2332 -msgid "" -"The feFlood filter primitive fills the region with a given color and " -"opacity. It is usually used as an input to other filters to apply color to " -"a graphic." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2347 +msgid "The feFlood filter primitive fills the region with a given color and opacity. It is usually used as an input to other filters to apply color to a graphic." +msgstr "המסנן הקדמוני feFlood ממלא את האזור בצבע ובאטימות נתונים. לרב נעשה בו שימוש כקלט על ידי מדנן אחרים כדי להחיל צבע על גרפיקה." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2336 -msgid "" -"The feGaussianBlur filter primitive uniformly blurs its input. It is " -"commonly used together with feOffset to create a drop shadow effect." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2351 +msgid "The feGaussianBlur filter primitive uniformly blurs its input. It is commonly used together with feOffset to create a drop shadow effect." +msgstr "המסנן הקדמוני feGaussianBlur מטשטש באופן אחיד את הקלט שלו. לרב נעשה בו שימוש יחד עם feOffset כדי ליצור אפקט של הטלת צללית." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2340 -msgid "" -"The feImage filter primitive fills the region with an external image " -"or another part of the document." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2355 +msgid "The feImage filter primitive fills the region with an external image or another part of the document." +msgstr "המסנן הקדמוני feImage ממלא את האזור עם תמונה חיצונית או עם חלק אחר מהמסמך." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2344 -msgid "" -"The feMerge filter primitive composites several temporary images " -"inside the filter primitive to a single image. It uses normal alpha " -"compositing for this. This is equivalent to using several feBlend primitives " -"in 'normal' mode or several feComposite primitives in 'over' mode." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2359 +msgid "The feMerge filter primitive composites several temporary images inside the filter primitive to a single image. It uses normal alpha compositing for this. This is equivalent to using several feBlend primitives in 'normal' mode or several feComposite primitives in 'over' mode." +msgstr "המסנן הקדמוני feMerge משלב מספר תמונות זמניות בתוך המסנן הקדמוני לתמונה אחידה. המסנן עושה שימוש בשילוב שקיפות רגיל בשביל זה. פעולה זו מקבילה לשימוש בכמה מסננים קדמונים מסוג feBlend במצב 'רגיל' או כמה מסננים קדמונים מסוג feComposite במצב 'חפיפה'." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2348 -msgid "" -"The feMorphology filter primitive provides erode and dilate effects. " -"For single-colour objects erode makes the object thinner and dilate makes it " -"thicker." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2363 +msgid "The feMorphology filter primitive provides erode and dilate effects. For single-colour objects erode makes the object thinner and dilate makes it thicker." +msgstr "המסנן הקדמוני feMorphology מספק אפקטים של סחיפה והתרחבות. עבור פריטים בעלי צבע אחיד סחיפה גורמת לפריט להיות צר יותר בעוד ההתרחבות מעבה אותו." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2352 -msgid "" -"The feOffset filter primitive offsets the image by an user-defined " -"amount. For example, this is useful for drop shadows, where the shadow is in " -"a slightly different position than the actual object." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2367 +msgid "The feOffset filter primitive offsets the image by an user-defined amount. For example, this is useful for drop shadows, where the shadow is in a slightly different position than the actual object." +msgstr "המסנן הקדמוני feOffset מסיט את התמונה לפי כמות המוגדרת בידי המשתמש. לדוגמא, פעולה זו שימושית להטלת צללים, כאשר הצל הוא במיקום שונה מהפריט עצמו." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2356 -msgid "" -"The feDiffuseLighting and feSpecularLighting filter primitives create " -"\"embossed\" shadings. The input's alpha channel is used to provide depth " -"information: higher opacity areas are raised toward the viewer and lower " -"opacity areas recede away from the viewer." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2371 +msgid "The feDiffuseLighting and feSpecularLighting filter primitives create \"embossed\" shadings. The input's alpha channel is used to provide depth information: higher opacity areas are raised toward the viewer and lower opacity areas recede away from the viewer." +msgstr "המסננים הקדמונים feDiffuseLighting ו־feSpecularLighting יוצרים צלליות \"מובלטות\". ערוץ השקיפות של הפלט משמש לאספקת מידע אודות העומק: אזורים בעלי אטימות גבוהה יותר מוגבהים אל עבר הצופה בעוד שאזורים בעלי אטימות נמוכה נסוגים מהצופה." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2360 -msgid "" -"The feTile filter primitive tiles a region with its input graphic" -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2375 +msgid "The feTile filter primitive tiles a region with its input graphic" +msgstr "המסנן הקדמוני feTile מרצף אזור באמצעות הקלט הגרפי שלו" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2364 -msgid "" -"The feTurbulence filter primitive renders Perlin noise. This kind of " -"noise is useful in simulating several nature phenomena like clouds, fire and " -"smoke and in generating complex textures like marble or granite." -msgstr "" +#: ../src/ui/dialog/filter-effects-dialog.cpp:2379 +msgid "The feTurbulence filter primitive renders Perlin noise. This kind of noise is useful in simulating several nature phenomena like clouds, fire and smoke and in generating complex textures like marble or granite." +msgstr "המסנן הקדמוני feTurbulence מייצר רעש פרלין. רעש מסוג זה שימושי להדמיית מספר תופעות טבע כגון עננים, אש ועשן ובייצור מרקמים מורכבים כמו שיש או גרניט." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2382 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2397 msgid "Duplicate filter primitive" -msgstr "" +msgstr "שכפל מסנן קדמוני" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2435 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2450 msgid "Set filter primitive attribute" -msgstr "" +msgstr "הגדר את תכונות המסנן הקדמוני" -#: ../src/ui/dialog/inkscape-preferences.cpp:147 +#: ../src/ui/dialog/inkscape-preferences.cpp:156 msgid "Mouse" -msgstr "" +msgstr "עכבר" -#: ../src/ui/dialog/inkscape-preferences.cpp:149 +#: ../src/ui/dialog/inkscape-preferences.cpp:158 msgid "Grab sensitivity:" -msgstr "" +msgstr "רגישות אחיזה:" -#: ../src/ui/dialog/inkscape-preferences.cpp:149 -#: ../src/ui/dialog/inkscape-preferences.cpp:152 -#: ../src/ui/dialog/inkscape-preferences.cpp:168 -#: ../src/ui/dialog/inkscape-preferences.cpp:172 -#: ../src/ui/dialog/inkscape-preferences.cpp:182 +#: ../src/ui/dialog/inkscape-preferences.cpp:158 +#: ../src/ui/dialog/inkscape-preferences.cpp:161 +#: ../src/ui/dialog/inkscape-preferences.cpp:177 +#: ../src/ui/dialog/inkscape-preferences.cpp:181 +#: ../src/ui/dialog/inkscape-preferences.cpp:191 msgid "pixels" -msgstr "" +msgstr "פיקסלים" -#: ../src/ui/dialog/inkscape-preferences.cpp:150 -msgid "" -"How close on the screen you need to be to an object to be able to grab it " -"with mouse (in screen pixels)" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:159 +msgid "How close on the screen you need to be to an object to be able to grab it with mouse (in screen pixels)" +msgstr "כמה קרוב על המסך תצטרך להיות לפריט כדי שתוכל לאחוז בו עם העכבר (בפיקסלים על המסך)" -#: ../src/ui/dialog/inkscape-preferences.cpp:152 +#: ../src/ui/dialog/inkscape-preferences.cpp:161 msgid "Click/drag threshold:" -msgstr "" +msgstr "סף לחיצה/גרירה:" -#: ../src/ui/dialog/inkscape-preferences.cpp:153 -msgid "" -"Maximum mouse drag (in screen pixels) which is considered a click, not a drag" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:162 +msgid "Maximum mouse drag (in screen pixels) which is considered a click, not a drag" +msgstr "גרירת עכבר מרבית (בפיקסלים על המסך) שתחשב כלחיצה ולא כגרירה" -#: ../src/ui/dialog/inkscape-preferences.cpp:155 +#: ../src/ui/dialog/inkscape-preferences.cpp:164 msgid "Use pressure-sensitive tablet (requires restart)" -msgstr "" +msgstr "השתמש בטבלה הרגישה ללחיצה (נדרש איתחול)" -#: ../src/ui/dialog/inkscape-preferences.cpp:157 -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 " -"mouse)" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:166 +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 mouse)" +msgstr "השתמש בתכונותיה של טבלה או התקן אחר הרגיש ללחיצה. בטל זאת רק אם אתה נתקל בבעיות עם הטבלה (עדיין תוכל להשתמש ב בתור עכבר)" -#: ../src/ui/dialog/inkscape-preferences.cpp:159 +#: ../src/ui/dialog/inkscape-preferences.cpp:168 msgid "Switch tool based on tablet device (requires restart)" -msgstr "" +msgstr "כלי ההחלפה המבוסס על התקן טבלאי (דורש איתחול)" -#: ../src/ui/dialog/inkscape-preferences.cpp:161 -msgid "" -"Change tool as different devices are used on the tablet (pen, eraser, mouse)" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:170 +msgid "Change tool as different devices are used on the tablet (pen, eraser, mouse)" +msgstr "שנה כלי לפי ההתקנים המופעלים על המחשב הטבלאי (עט, מחק, עכבר)" -#: ../src/ui/dialog/inkscape-preferences.cpp:166 +#: ../src/ui/dialog/inkscape-preferences.cpp:175 msgid "Scrolling" -msgstr "" +msgstr "גלילה" -#: ../src/ui/dialog/inkscape-preferences.cpp:168 +#: ../src/ui/dialog/inkscape-preferences.cpp:177 msgid "Mouse wheel scrolls by:" -msgstr "" +msgstr "גלגלת העכבר גוללת:" -#: ../src/ui/dialog/inkscape-preferences.cpp:169 -msgid "" -"One mouse wheel notch scrolls by this distance in screen pixels " -"(horizontally with Shift)" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:178 +msgid "One mouse wheel notch scrolls by this distance in screen pixels (horizontally with Shift)" +msgstr "חריץ גלגלת אחד בעכבר גולל במרחק זה בפיקסלים על המסך (אופקית עם Shift)" -#: ../src/ui/dialog/inkscape-preferences.cpp:170 +#: ../src/ui/dialog/inkscape-preferences.cpp:179 msgid "Ctrl+arrows" -msgstr "" +msgstr "Ctrl+חיצים" -#: ../src/ui/dialog/inkscape-preferences.cpp:172 +#: ../src/ui/dialog/inkscape-preferences.cpp:181 msgid "Scroll by:" -msgstr "" +msgstr "גלול ב־:" -#: ../src/ui/dialog/inkscape-preferences.cpp:173 +#: ../src/ui/dialog/inkscape-preferences.cpp:182 msgid "Pressing Ctrl+arrow key scrolls by this distance (in screen pixels)" -msgstr "" +msgstr "לחיצה על Ctrl+מקשי החיצים גולל במרחק זה (בפיקסלים על המסך)" -#: ../src/ui/dialog/inkscape-preferences.cpp:175 +#: ../src/ui/dialog/inkscape-preferences.cpp:184 msgid "Acceleration:" -msgstr "" +msgstr "תאוצה:" -#: ../src/ui/dialog/inkscape-preferences.cpp:176 -msgid "" -"Pressing and holding Ctrl+arrow will gradually speed up scrolling (0 for no " -"acceleration)" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:185 +msgid "Pressing and holding Ctrl+arrow will gradually speed up scrolling (0 for no acceleration)" +msgstr "לחיצה והחזקת Ctrl+חץ תגביר את מהירות הגלילה באופן הדרגתי (0 כדי לבטל האצה)" -#: ../src/ui/dialog/inkscape-preferences.cpp:177 +#: ../src/ui/dialog/inkscape-preferences.cpp:186 msgid "Autoscrolling" -msgstr "" +msgstr "גלילה אוטומטית" -#: ../src/ui/dialog/inkscape-preferences.cpp:179 +#: ../src/ui/dialog/inkscape-preferences.cpp:188 msgid "Speed:" -msgstr "" +msgstr "מהירות:" -#: ../src/ui/dialog/inkscape-preferences.cpp:180 -msgid "" -"How fast the canvas autoscrolls when you drag beyond canvas edge (0 to turn " -"autoscroll off)" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:189 +msgid "How fast the canvas autoscrolls when you drag beyond canvas edge (0 to turn autoscroll off)" +msgstr "באיזו מהירות יגלול לוח הציור אוטומטית כאשר אתה גורר מעבר לגבולות לוח הציור (0 לביטול הגלילה האוטומטית)" -#: ../src/ui/dialog/inkscape-preferences.cpp:182 -#: ../src/ui/dialog/tracedialog.cpp:410 ../src/ui/dialog/tracedialog.cpp:443 -#: ../src/ui/dialog/tracedialog.cpp:586 ../src/widgets/toolbox.cpp:5741 +#: ../src/ui/dialog/inkscape-preferences.cpp:191 +#: ../src/ui/dialog/tracedialog.cpp:409 +#: ../src/ui/dialog/tracedialog.cpp:442 +#: ../src/ui/dialog/tracedialog.cpp:585 +#: ../src/widgets/toolbox.cpp:6691 msgid "Threshold:" -msgstr "" +msgstr "סף:" -#: ../src/ui/dialog/inkscape-preferences.cpp:183 -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" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:192 +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" +msgstr "כמה רחוק (בפיקסלים על המסך) עליך להיות מקצה לוח הציור כדי להפעיל את הגלילה האוטומטית; ערך חיובי הוא מחוץ ללוח הציור, ערך שלילי הוא בתוך לוח הציור" -#: ../src/ui/dialog/inkscape-preferences.cpp:184 +#: ../src/ui/dialog/inkscape-preferences.cpp:193 msgid "Left mouse button pans when Space is pressed" -msgstr "" +msgstr "מקש העכבר השמאלי מסיט את התצוגה כאשר נלחץ מקש הרווח" -#: ../src/ui/dialog/inkscape-preferences.cpp:186 -msgid "" -"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)." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:195 +msgid "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)." +msgstr "כאשר פעיל, לחיצה והחזקה על מקש הרווח וגרירה עם מקש העכבר השמאלי מסיטה את לוח הציור (כמו ב־Adobe Illustrator). כאשר מבוטל, הרווח מחליף באופן זמני לכלי הבחירה (ברירת מחדל)." -#: ../src/ui/dialog/inkscape-preferences.cpp:187 +#: ../src/ui/dialog/inkscape-preferences.cpp:196 msgid "Mouse wheel zooms by default" -msgstr "" - -#: ../src/ui/dialog/inkscape-preferences.cpp:189 -msgid "" -"When on, mouse wheel zooms without Ctrl and scrolls canvas with Ctrl; when " -"off, it zooms with Ctrl and scrolls without Ctrl." -msgstr "" +msgstr "גלגלת העכבר מקרבת/מרחיקה כברירת מחדל" -#: ../src/ui/dialog/inkscape-preferences.cpp:194 -msgid "Steps" -msgstr "שלבים" +#: ../src/ui/dialog/inkscape-preferences.cpp:198 +msgid "When on, mouse wheel zooms without Ctrl and scrolls canvas with Ctrl; when off, it zooms with Ctrl and scrolls without Ctrl." +msgstr "כאשר פעיל, גלגלת העכבר מתקרבת ומתרחקת ללא Ctrl וגוללת את לוח הציור עם Ctrl; כאשר מבוטל, מתקרבת או מתרחקת עם Ctrl וגוללת בלי Ctrl." #. nudgedistance is limited to 1000 in select-context.cpp: use the same limit here -#: ../src/ui/dialog/inkscape-preferences.cpp:198 +#: ../src/ui/dialog/inkscape-preferences.cpp:207 msgid "Arrow keys move by:" -msgstr "" +msgstr "מקשי החיצים מזיזים ב־:" -#: ../src/ui/dialog/inkscape-preferences.cpp:199 -msgid "" -"Pressing an arrow key moves selected object(s) or node(s) by this distance " -"(in px units)" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:208 +msgid "Pressing an arrow key moves selected object(s) or node(s) by this distance (in px units)" +msgstr "לחיצה על חץ מזיזה את הפריט/ים הנבחר/ים במרחק זה (ביחידות פיקסל)" #. defaultscale is limited to 1000 in select-context.cpp: use the same limit here -#: ../src/ui/dialog/inkscape-preferences.cpp:202 +#: ../src/ui/dialog/inkscape-preferences.cpp:211 msgid "> and < scale by:" -msgstr "" +msgstr "> ו־< משנים קנה מידה ב־:" -#: ../src/ui/dialog/inkscape-preferences.cpp:203 -msgid "" -"Pressing > or < scales selection up or down by this increment (in px units)" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:212 +msgid "Pressing > or < scales selection up or down by this increment (in px units)" +msgstr "לחיצה על > או < משנה את קנה מידת הבחירה למעלה או למטה בכמות זו (ביחידות פיקסל)" -#: ../src/ui/dialog/inkscape-preferences.cpp:205 +#: ../src/ui/dialog/inkscape-preferences.cpp:214 msgid "Inset/Outset by:" -msgstr "" +msgstr "צמצם/הרחב ב־:" -#: ../src/ui/dialog/inkscape-preferences.cpp:206 -msgid "" -"Inset and Outset commands displace the path by this distance (in px units)" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:215 +msgid "Inset and Outset commands displace the path by this distance (in px units)" +msgstr "פקודות הצימצום וההרחבה משנות את פריסת הנתיב במרחק זה (ביחידות פיקסל)" -#: ../src/ui/dialog/inkscape-preferences.cpp:207 +#: ../src/ui/dialog/inkscape-preferences.cpp:216 msgid "Compass-like display of angles" -msgstr "" +msgstr "תצוגת זוויות כמו מצפן" -#: ../src/ui/dialog/inkscape-preferences.cpp:209 -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 " -"counterclockwise" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:218 +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 counterclockwise" +msgstr "כאשר פעיל, זוויות מוצגות עם 0 כצפון, טווח של 0 עד 360, חיובי עם כיוון השעון; אחרת עם 0 במזרח, טווח של 180- עד 180, חיובי נגד כיוון השעון" -#: ../src/ui/dialog/inkscape-preferences.cpp:215 +#: ../src/ui/dialog/inkscape-preferences.cpp:224 msgid "Rotation snaps every:" -msgstr "" +msgstr "הסיבוב נצמד בכל:" -#: ../src/ui/dialog/inkscape-preferences.cpp:215 +#: ../src/ui/dialog/inkscape-preferences.cpp:224 msgid "degrees" msgstr "מעלות" -#: ../src/ui/dialog/inkscape-preferences.cpp:216 -msgid "" -"Rotating with Ctrl pressed snaps every that much degrees; also, pressing " -"[ or ] rotates by this amount" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:225 +msgid "Rotating with Ctrl pressed snaps every that much degrees; also, pressing [ or ] rotates by this amount" +msgstr "סיבוב עם Ctrl לחוץ נצמד בכל מספר זה של מעלות; כמו כן, לחיצה על [ או ] מסובבת לפי כמות זו." -#: ../src/ui/dialog/inkscape-preferences.cpp:218 +#: ../src/ui/dialog/inkscape-preferences.cpp:227 msgid "Zoom in/out by:" -msgstr "" +msgstr "התקרב/התרחק ב־:" -#: ../src/ui/dialog/inkscape-preferences.cpp:219 -msgid "" -"Zoom tool click, +/- keys, and middle click zoom in and out by this " -"multiplier" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:228 +msgid "Zoom tool click, +/- keys, and middle click zoom in and out by this multiplier" +msgstr "לחיצה על כלי התקריב, על מקשי ה \"+/-\", והתקרבות או התרחקות באמצעות לחצן אמצעי לפי מכפיל זה" -#: ../src/ui/dialog/inkscape-preferences.cpp:225 +#: ../src/ui/dialog/inkscape-preferences.cpp:234 msgid "Show selection cue" -msgstr "" +msgstr "הצג סמן בחירה" -#: ../src/ui/dialog/inkscape-preferences.cpp:226 -msgid "" -"Whether selected objects display a selection cue (the same as in selector)" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:235 +msgid "Whether selected objects display a selection cue (the same as in selector)" +msgstr "במידה ונבחר פריטים יציגו סמן בחירה (כמו בכלי הבחירה)" -#: ../src/ui/dialog/inkscape-preferences.cpp:232 +#: ../src/ui/dialog/inkscape-preferences.cpp:241 msgid "Enable gradient editing" -msgstr "" +msgstr "אפשר עריכת מדרג" -#: ../src/ui/dialog/inkscape-preferences.cpp:233 +#: ../src/ui/dialog/inkscape-preferences.cpp:242 msgid "Whether selected objects display gradient editing controls" -msgstr "" +msgstr "במידה ונבחר פריטים יציגו פקדי עריכת מדרג" -#: ../src/ui/dialog/inkscape-preferences.cpp:238 +#: ../src/ui/dialog/inkscape-preferences.cpp:247 msgid "Conversion to guides uses edges instead of bounding box" -msgstr "" +msgstr "המרה לקווים מנחים עושה שימוש בקצוות במקום בתיבה התוחמת" -#: ../src/ui/dialog/inkscape-preferences.cpp:239 -msgid "" -"Converting an object to guides places these along the object's true edges " -"(imitating the object's shape), not along the bounding box." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:248 +msgid "Converting an object to guides places these along the object's true edges (imitating the object's shape), not along the bounding box." +msgstr "המרת פריט לקווים מנחים מציבה את אלה לאורך קצוותיו האמיתיים של הפריט (מחקה את צורת הפריט), לא לאורך התיבה התוחמת." -#: ../src/ui/dialog/inkscape-preferences.cpp:246 +#: ../src/ui/dialog/inkscape-preferences.cpp:255 msgid "Ctrl+click dot size:" -msgstr "" +msgstr "גודל נקודת Ctrl+לחיצה:" -#: ../src/ui/dialog/inkscape-preferences.cpp:246 +#: ../src/ui/dialog/inkscape-preferences.cpp:255 msgid "times current stroke width" -msgstr "" +msgstr "פי כמה מרוחב קו המתאר הנוכחי" -#: ../src/ui/dialog/inkscape-preferences.cpp:247 +#: ../src/ui/dialog/inkscape-preferences.cpp:256 msgid "Size of dots created with Ctrl+click (relative to current stroke width)" -msgstr "" +msgstr "גודל הנקודות שנוצרות עם Ctrl+לחיצה (ביחס לרוחב קו המתאר הנוכחי)" -#: ../src/ui/dialog/inkscape-preferences.cpp:262 +#: ../src/ui/dialog/inkscape-preferences.cpp:271 msgid "No objects selected to take the style from." -msgstr "" +msgstr "לא נבחרו פריטים מהם יש לקחת סגנון." -#: ../src/ui/dialog/inkscape-preferences.cpp:271 -msgid "" -"More than one object selected. Cannot take style from multiple " -"objects." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:280 +msgid "More than one object selected. Cannot take style from multiple objects." +msgstr "נבחר יותר מפריט אחד. לא ניתן לקחת סגנון ממספר פריטים." -#: ../src/ui/dialog/inkscape-preferences.cpp:305 +#: ../src/ui/dialog/inkscape-preferences.cpp:313 msgid "Create new objects with:" -msgstr "" +msgstr "צור פריטים חדשים עם:" -#: ../src/ui/dialog/inkscape-preferences.cpp:307 +#: ../src/ui/dialog/inkscape-preferences.cpp:315 msgid "Last used style" -msgstr "" +msgstr "הסגנון האחרון בשימוש" -#: ../src/ui/dialog/inkscape-preferences.cpp:309 +#: ../src/ui/dialog/inkscape-preferences.cpp:317 msgid "Apply the style you last set on an object" -msgstr "" +msgstr "החל את הסגנון שהגדרת לאחרונה לפריט" -#: ../src/ui/dialog/inkscape-preferences.cpp:314 +#: ../src/ui/dialog/inkscape-preferences.cpp:322 msgid "This tool's own style:" -msgstr "" +msgstr "סגנון ייחודי לכלי זה:" -#: ../src/ui/dialog/inkscape-preferences.cpp:318 -msgid "" -"Each tool may store its own style to apply to the newly created objects. Use " -"the button below to set it." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:326 +msgid "Each tool may store its own style to apply to the newly created objects. Use the button below to set it." +msgstr "כל כלי יכול לאחסן את סגנונו הייחודי להחלה על הפריטים החדשים שנוצרים. השתמש בכפתור להלן כדי להגדיר אותו." -#: ../src/ui/dialog/inkscape-preferences.cpp:323 +#. style swatch +#: ../src/ui/dialog/inkscape-preferences.cpp:330 msgid "Take from selection" -msgstr "" +msgstr "קח מהבחירה." -#: ../src/ui/dialog/inkscape-preferences.cpp:327 +#: ../src/ui/dialog/inkscape-preferences.cpp:335 msgid "This tool's style of new objects" -msgstr "" +msgstr "סגנון כלי זה עבור פריטים חדשים" -#: ../src/ui/dialog/inkscape-preferences.cpp:335 +#: ../src/ui/dialog/inkscape-preferences.cpp:342 msgid "Remember the style of the (first) selected object as this tool's style" -msgstr "" +msgstr "זכור את הסגנון של הפריט (הראשון) שנבחר בתור סגנון כלי זה" -#: ../src/ui/dialog/inkscape-preferences.cpp:340 +#: ../src/ui/dialog/inkscape-preferences.cpp:347 msgid "Tools" msgstr "כלים" -#: ../src/ui/dialog/inkscape-preferences.cpp:343 +#: ../src/ui/dialog/inkscape-preferences.cpp:350 msgid "Bounding box to use:" -msgstr "" +msgstr "תיבה תוחמת לשימוש:" -#: ../src/ui/dialog/inkscape-preferences.cpp:344 +#: ../src/ui/dialog/inkscape-preferences.cpp:351 msgid "Visual bounding box" -msgstr "" +msgstr "תיבה תוחמת חזותית" -#: ../src/ui/dialog/inkscape-preferences.cpp:346 +#: ../src/ui/dialog/inkscape-preferences.cpp:353 msgid "This bounding box includes stroke width, markers, filter margins, etc." -msgstr "" +msgstr "תיבה תוחמת זו מכילה את עובי קו המתאר, סמנים, מסנן שוליים וכו'." -#: ../src/ui/dialog/inkscape-preferences.cpp:347 +#: ../src/ui/dialog/inkscape-preferences.cpp:354 msgid "Geometric bounding box" -msgstr "" +msgstr "תיבה תוחמת גאומטרית" -#: ../src/ui/dialog/inkscape-preferences.cpp:349 +#: ../src/ui/dialog/inkscape-preferences.cpp:356 msgid "This bounding box includes only the bare path" -msgstr "" +msgstr "תיבה תוחמת זו מכילה רק את הנתיב החשוף" -#: ../src/ui/dialog/inkscape-preferences.cpp:351 -#, fuzzy +#: ../src/ui/dialog/inkscape-preferences.cpp:358 msgid "Conversion to guides:" -msgstr "הזז קו מנחה" +msgstr "המרה לקווים מנחים:" -#: ../src/ui/dialog/inkscape-preferences.cpp:352 -#, fuzzy +#: ../src/ui/dialog/inkscape-preferences.cpp:359 msgid "Keep objects after conversion to guides" -msgstr "בחר את האוביקטים שעליהם יווצר הגרדיאנט." +msgstr "השאר את הפריטים לאחר ההמרה לקווים מנחים" -#: ../src/ui/dialog/inkscape-preferences.cpp:354 -msgid "" -"When converting an object to guides, don't delete the object after the " -"conversion." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:361 +msgid "When converting an object to guides, don't delete the object after the conversion." +msgstr "כאשר ממירים פריט לקווים מנחים, אל תמחק את הפריט לאחר ההמרה." -#: ../src/ui/dialog/inkscape-preferences.cpp:355 -#, fuzzy +#: ../src/ui/dialog/inkscape-preferences.cpp:362 msgid "Treat groups as a single object" -msgstr "צור מחבר חדש" +msgstr "התייחס לקבוצות כאל פריטים בודדים" -#: ../src/ui/dialog/inkscape-preferences.cpp:357 -msgid "" -"Treat groups as a single object during conversion to guides rather than " -"converting each child separately." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:364 +msgid "Treat groups as a single object during conversion to guides rather than converting each child separately." +msgstr "התייחס לקבוצות כאל פריט יחיד במהלך המרה לקווים מנחים מאשר המרת כל צאצא בנפרד" -#: ../src/ui/dialog/inkscape-preferences.cpp:359 +#: ../src/ui/dialog/inkscape-preferences.cpp:366 msgid "Width is in absolute units" -msgstr "" +msgstr "הרוחב הוא ביחידות מוחלטות" -#: ../src/ui/dialog/inkscape-preferences.cpp:360 +#: ../src/ui/dialog/inkscape-preferences.cpp:367 msgid "Select new path" -msgstr "" +msgstr "בחר נתיב חדש" -#: ../src/ui/dialog/inkscape-preferences.cpp:361 +#: ../src/ui/dialog/inkscape-preferences.cpp:368 msgid "Don't attach connectors to text objects" -msgstr "" +msgstr "אל תחבר את המחברים לפריטי טקסט" #. Selector -#: ../src/ui/dialog/inkscape-preferences.cpp:364 +#: ../src/ui/dialog/inkscape-preferences.cpp:371 msgid "Selector" -msgstr "" +msgstr "בוחר" -#: ../src/ui/dialog/inkscape-preferences.cpp:367 +#: ../src/ui/dialog/inkscape-preferences.cpp:374 msgid "When transforming, show:" -msgstr "" +msgstr "בזמן שינוי הצורה, הצג:" -#: ../src/ui/dialog/inkscape-preferences.cpp:368 +#: ../src/ui/dialog/inkscape-preferences.cpp:375 msgid "Objects" -msgstr "" +msgstr "פריטים" -#: ../src/ui/dialog/inkscape-preferences.cpp:370 +#: ../src/ui/dialog/inkscape-preferences.cpp:377 msgid "Show the actual objects when moving or transforming" -msgstr "" +msgstr "הראה את הפריטים עצמם בעת הזזה או שינוי צורה" -#: ../src/ui/dialog/inkscape-preferences.cpp:371 +#: ../src/ui/dialog/inkscape-preferences.cpp:378 msgid "Box outline" -msgstr "" +msgstr "קווי חוץ התיבה" -#: ../src/ui/dialog/inkscape-preferences.cpp:373 +#: ../src/ui/dialog/inkscape-preferences.cpp:380 msgid "Show only a box outline of the objects when moving or transforming" -msgstr "" +msgstr "הצג רק את קווי חוץ התיבה של הפריטים כאשר הם מוזזים או צורתם משתנה" -#: ../src/ui/dialog/inkscape-preferences.cpp:374 +#: ../src/ui/dialog/inkscape-preferences.cpp:381 msgid "Per-object selection cue:" -msgstr "" +msgstr "סמן בחירה עבור כל פריט בנפרד:" -#: ../src/ui/dialog/inkscape-preferences.cpp:377 +#: ../src/ui/dialog/inkscape-preferences.cpp:384 msgid "No per-object selection indication" -msgstr "" +msgstr "ללא מחוון בחירה לכל פריט בפרד" -#: ../src/ui/dialog/inkscape-preferences.cpp:378 +#: ../src/ui/dialog/inkscape-preferences.cpp:385 msgid "Mark" -msgstr "" +msgstr "סימון" -#: ../src/ui/dialog/inkscape-preferences.cpp:380 +#: ../src/ui/dialog/inkscape-preferences.cpp:387 msgid "Each selected object has a diamond mark in the top left corner" -msgstr "" +msgstr "לכל פריט יוצג סמן יהלום בפינה השמאלית העליונה" -#: ../src/ui/dialog/inkscape-preferences.cpp:381 +#: ../src/ui/dialog/inkscape-preferences.cpp:388 msgid "Box" -msgstr "" +msgstr "תיבה" -#: ../src/ui/dialog/inkscape-preferences.cpp:383 +#: ../src/ui/dialog/inkscape-preferences.cpp:390 msgid "Each selected object displays its bounding box" -msgstr "" +msgstr "כל פריט שנבחר יציג את תיבתו התוחמת" #. Node -#: ../src/ui/dialog/inkscape-preferences.cpp:386 +#: ../src/ui/dialog/inkscape-preferences.cpp:393 msgid "Node" -msgstr "צומת" +msgstr "מפרק" -#: ../src/ui/dialog/inkscape-preferences.cpp:389 +#: ../src/ui/dialog/inkscape-preferences.cpp:396 msgid "Path outline:" -msgstr "" +msgstr "מתאר הנתיב:" -#: ../src/ui/dialog/inkscape-preferences.cpp:390 -#: ../src/ui/dialog/inkscape-preferences.cpp:391 -#, fuzzy +#: ../src/ui/dialog/inkscape-preferences.cpp:397 +#: ../src/ui/dialog/inkscape-preferences.cpp:398 msgid "Path outline color" -msgstr "הדבק צבע" +msgstr "צבע מתאר הנתיב" -#: ../src/ui/dialog/inkscape-preferences.cpp:391 +#: ../src/ui/dialog/inkscape-preferences.cpp:398 msgid "Selects the color used for showing the path outline." -msgstr "" +msgstr "בוחר את הצבא המשמש להצגת קו המתאר של הנתיב." -#: ../src/ui/dialog/inkscape-preferences.cpp:392 +#: ../src/ui/dialog/inkscape-preferences.cpp:399 msgid "Path outline flash on mouse-over" -msgstr "" +msgstr "קוי החוץ מהבהבים עם מעבר סמן העכבר" -#: ../src/ui/dialog/inkscape-preferences.cpp:393 +#: ../src/ui/dialog/inkscape-preferences.cpp:400 msgid "When hovering over a path, briefly flash its outline." -msgstr "" +msgstr "בעת מעבר מעל נתיב, קווי החוץ יהבהבו בקצרה." -#: ../src/ui/dialog/inkscape-preferences.cpp:395 +#: ../src/ui/dialog/inkscape-preferences.cpp:402 msgid "Flash time" -msgstr "" +msgstr "זמן ההיבהוב" -#: ../src/ui/dialog/inkscape-preferences.cpp:395 -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 " -"path." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:402 +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 path." +msgstr "מגדיר למשך כמה זמן קווי החוץ של הנתיב יהיו גלויים לאחר מעבר סמן העכבר (במילישניות). הגדר 0 כדי שקווי החוץ יוצגו עד שסמן העכבר עוזב את הנתיב." #. Tweak -#: ../src/ui/dialog/inkscape-preferences.cpp:398 ../src/verbs.cpp:2419 +#: ../src/ui/dialog/inkscape-preferences.cpp:405 +#: ../src/verbs.cpp:2480 msgid "Tweak" -msgstr "" +msgstr "עיוות" + +#: ../src/ui/dialog/inkscape-preferences.cpp:406 +msgid "Paint objects with:" +msgstr "צייר פריטים עם:" #. Zoom -#: ../src/ui/dialog/inkscape-preferences.cpp:403 -#: ../src/ui/view/edit-widget.cpp:1073 ../src/verbs.cpp:2441 -#: ../src/widgets/desktop-widget.cpp:490 +#: ../src/ui/dialog/inkscape-preferences.cpp:411 +#: ../src/ui/view/edit-widget.cpp:1073 +#: ../src/verbs.cpp:2502 +#: ../src/widgets/desktop-widget.cpp:477 #: ../share/extensions/render_alphabetsoup.inx.h:5 msgid "Zoom" -msgstr "זום" +msgstr "תקריב" #. Shapes -#: ../src/ui/dialog/inkscape-preferences.cpp:408 +#: ../src/ui/dialog/inkscape-preferences.cpp:416 msgid "Shapes" msgstr "צורות" #. Pencil -#: ../src/ui/dialog/inkscape-preferences.cpp:436 ../src/verbs.cpp:2431 +#: ../src/ui/dialog/inkscape-preferences.cpp:444 +#: ../src/verbs.cpp:2492 msgid "Pencil" -msgstr "עפרון" - -#: ../src/ui/dialog/inkscape-preferences.cpp:439 -#: ../src/ui/dialog/tracedialog.cpp:601 -msgid "Tolerance:" -msgstr "טולרנס" - -#: ../src/ui/dialog/inkscape-preferences.cpp:440 -msgid "" -"This value affects the amount of smoothing applied to freehand lines; lower " -"values produce more uneven paths with more nodes" -msgstr "" +msgstr "עיפרון" #. Pen -#: ../src/ui/dialog/inkscape-preferences.cpp:446 ../src/verbs.cpp:2433 +#: ../src/ui/dialog/inkscape-preferences.cpp:450 +#: ../src/verbs.cpp:2494 msgid "Pen" msgstr "עט" #. Calligraphy -#: ../src/ui/dialog/inkscape-preferences.cpp:452 ../src/verbs.cpp:2435 +#: ../src/ui/dialog/inkscape-preferences.cpp:456 +#: ../src/verbs.cpp:2496 msgid "Calligraphy" msgstr "קליגרפיה" -#: ../src/ui/dialog/inkscape-preferences.cpp:456 -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" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:460 +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" +msgstr "במידה והופעל, רוחב העט הינו ביחידות מוחלטות (פיקסל) ללא תלות בתקריב; אחרת רוחב העט תלוי בתקריב כך שייראה זהה בכל מרחק" -#: ../src/ui/dialog/inkscape-preferences.cpp:458 -msgid "" -"If on, each newly created object will be selected (deselecting previous " -"selection)" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:462 +msgid "If on, each newly created object will be selected (deselecting previous selection)" +msgstr "במידה והופעל, כל פריט חדש שנוצר ייבחר (ויבטל את הבחירה הקודמת)" #. Paint Bucket -#: ../src/ui/dialog/inkscape-preferences.cpp:460 ../src/verbs.cpp:2447 +#: ../src/ui/dialog/inkscape-preferences.cpp:464 +#: ../src/verbs.cpp:2508 msgid "Paint Bucket" msgstr "דלי צבע" #. Eraser -#: ../src/ui/dialog/inkscape-preferences.cpp:465 ../src/verbs.cpp:2451 -#, fuzzy +#: ../src/ui/dialog/inkscape-preferences.cpp:469 +#: ../src/verbs.cpp:2512 msgid "Eraser" -msgstr "מטר" +msgstr "מוחק" + +#. LPETool +#: ../src/ui/dialog/inkscape-preferences.cpp:473 +#: ../src/verbs.cpp:2514 +msgid "LPE Tool" +msgstr "כלי LPE" #. Gradient -#: ../src/ui/dialog/inkscape-preferences.cpp:475 ../src/verbs.cpp:2439 +#: ../src/ui/dialog/inkscape-preferences.cpp:483 +#: ../src/verbs.cpp:2500 msgid "Gradient" -msgstr "גרדיאנט" +msgstr "מדרג" #. Connector -#: ../src/ui/dialog/inkscape-preferences.cpp:479 ../src/verbs.cpp:2445 +#: ../src/ui/dialog/inkscape-preferences.cpp:487 +#: ../src/verbs.cpp:2506 msgid "Connector" msgstr "מחבר" -#: ../src/ui/dialog/inkscape-preferences.cpp:482 +#: ../src/ui/dialog/inkscape-preferences.cpp:490 msgid "If on, connector attachment points will not be shown for text objects" -msgstr "" +msgstr "במידה והופעל, נקודות חיבור המחברים לא יוצגו עבור פריטי טקסט" #. Dropper -#: ../src/ui/dialog/inkscape-preferences.cpp:484 ../src/verbs.cpp:2443 +#: ../src/ui/dialog/inkscape-preferences.cpp:492 +#: ../src/verbs.cpp:2504 msgid "Dropper" -msgstr "" +msgstr "דוגם" -#: ../src/ui/dialog/inkscape-preferences.cpp:491 +#: ../src/ui/dialog/inkscape-preferences.cpp:499 msgid "Save and restore window geometry for each document" -msgstr "" +msgstr "שמור ושחזר את מימדי החלון עבור כל מסמך" -#: ../src/ui/dialog/inkscape-preferences.cpp:492 +#: ../src/ui/dialog/inkscape-preferences.cpp:500 msgid "Remember and use last window's geometry" -msgstr "" +msgstr "זכור והשתמש במימדי החלון הקודם" -#: ../src/ui/dialog/inkscape-preferences.cpp:493 +#: ../src/ui/dialog/inkscape-preferences.cpp:501 msgid "Don't save window geometry" -msgstr "" +msgstr "אל תשמור את מימדי החלון" -#: ../src/ui/dialog/inkscape-preferences.cpp:495 -#: ../src/ui/dialog/inkscape-preferences.cpp:515 +#: ../src/ui/dialog/inkscape-preferences.cpp:503 +#: ../src/ui/dialog/inkscape-preferences.cpp:523 msgid "Dockable" -msgstr "" +msgstr "ניתן לעגינה" -#: ../src/ui/dialog/inkscape-preferences.cpp:498 +#: ../src/ui/dialog/inkscape-preferences.cpp:506 msgid "Dialogs are hidden in taskbar" -msgstr "" +msgstr "תיבות הדו־שיח מוסתרות בסרגל המשימות" -#: ../src/ui/dialog/inkscape-preferences.cpp:499 +#: ../src/ui/dialog/inkscape-preferences.cpp:507 msgid "Zoom when window is resized" -msgstr "" +msgstr "התקרב כאשר גודל החלון משתנה" -#: ../src/ui/dialog/inkscape-preferences.cpp:500 +#: ../src/ui/dialog/inkscape-preferences.cpp:508 msgid "Show close button on dialogs" -msgstr "" +msgstr "הצג לחצן סגירה בתיבת הדו־שיח" -#. consider moving this to an UI tab: -#: ../src/ui/dialog/inkscape-preferences.cpp:502 -#: ../src/ui/dialog/inkscape-preferences.cpp:968 +#: ../src/ui/dialog/inkscape-preferences.cpp:510 +#: ../src/ui/dialog/inkscape-preferences.cpp:995 msgid "Normal" -msgstr "" +msgstr "רגיל" -#: ../src/ui/dialog/inkscape-preferences.cpp:503 +#: ../src/ui/dialog/inkscape-preferences.cpp:511 msgid "Aggressive" -msgstr "" +msgstr "תוקפני" -#: ../src/ui/dialog/inkscape-preferences.cpp:505 +#: ../src/ui/dialog/inkscape-preferences.cpp:513 msgid "Saving window geometry (size and position):" -msgstr "" +msgstr "שמירת מימדי החלון (גודל ומיקום):" -#: ../src/ui/dialog/inkscape-preferences.cpp:507 +#: ../src/ui/dialog/inkscape-preferences.cpp:515 msgid "Let the window manager determine placement of all windows" -msgstr "" +msgstr "הרשה למנהל החלונות לקבוע את מיקומי כל החלונות" -#: ../src/ui/dialog/inkscape-preferences.cpp:509 -msgid "" -"Remember and use the last window's geometry (saves geometry to user " -"preferences)" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:517 +msgid "Remember and use the last window's geometry (saves geometry to user preferences)" +msgstr "זכור והשתמש במימדי החלון הקודם (שומר את המימדים להגדרות המשתמש)" -#: ../src/ui/dialog/inkscape-preferences.cpp:511 -msgid "" -"Save and restore window geometry for each document (saves geometry in the " -"document)" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:519 +msgid "Save and restore window geometry for each document (saves geometry in the document)" +msgstr "שמור ושחזר את מימדי החלון עבור כל מסמך (שומר את מימדי החלון במסמך)" -#: ../src/ui/dialog/inkscape-preferences.cpp:513 +#: ../src/ui/dialog/inkscape-preferences.cpp:521 msgid "Dialog behavior (requires restart):" -msgstr "" +msgstr "התנהגות תיבת הדו־שיח (דורש איתחול):" -#: ../src/ui/dialog/inkscape-preferences.cpp:520 +#: ../src/ui/dialog/inkscape-preferences.cpp:528 msgid "Dialogs on top:" -msgstr "" +msgstr "תיבות דו־שיח עליונות:" -#: ../src/ui/dialog/inkscape-preferences.cpp:523 +#: ../src/ui/dialog/inkscape-preferences.cpp:531 msgid "Dialogs are treated as regular windows" -msgstr "" +msgstr "תיבות הדו־שיח מקבלות יחס של חלון רגיל" -#: ../src/ui/dialog/inkscape-preferences.cpp:525 +#: ../src/ui/dialog/inkscape-preferences.cpp:533 msgid "Dialogs stay on top of document windows" -msgstr "" +msgstr "תיבות דו־שיח נשארות מעל חלונות המסמך" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:535 msgid "Same as Normal but may work better with some window managers" -msgstr "" +msgstr "כמו המצב הרגיל אך עלול לעבוד טוב יותר עם כמה מנהלי חלונות" + +#: ../src/ui/dialog/inkscape-preferences.cpp:539 +msgid "Dialog Transparency:" +msgstr "שקיפות הדו־שיח:" -#: ../src/ui/dialog/inkscape-preferences.cpp:530 +#: ../src/ui/dialog/inkscape-preferences.cpp:541 +msgid "Opacity when focused:" +msgstr "שקיפות בעת המיקוד:" + +#: ../src/ui/dialog/inkscape-preferences.cpp:543 +msgid "Opacity when unfocused:" +msgstr "שקיפות בהעדר המיקוד:" + +#: ../src/ui/dialog/inkscape-preferences.cpp:545 +msgid "Time of opacity change animation:" +msgstr "משך הנפשת שינוי האטימות:" + +#: ../src/ui/dialog/inkscape-preferences.cpp:548 msgid "Miscellaneous:" -msgstr "" +msgstr "שונות:" -#: ../src/ui/dialog/inkscape-preferences.cpp:533 +#: ../src/ui/dialog/inkscape-preferences.cpp:551 msgid "Whether dialog windows are to be hidden in the window manager taskbar" -msgstr "" +msgstr "האם יש להסתיר את חלונות תיבות הדו־שיח בסרגל המשימות של מנהל החלונות" -#: ../src/ui/dialog/inkscape-preferences.cpp:536 -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 " -"above the right scrollbar)" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:554 +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 above the right scrollbar)" +msgstr "התקרב או התרחק מהציור כאשר גודל החלון משתנה, כדי לשמור על אותו אזור נראה (זוהי ברירת המחדל שניתן לשנות בכל חלון באמצעות הכפתור שמעל סרגל הגלילה השמאלי)" -#: ../src/ui/dialog/inkscape-preferences.cpp:538 +#: ../src/ui/dialog/inkscape-preferences.cpp:556 msgid "Whether dialog windows have a close button (requires restart)" -msgstr "" +msgstr "האם לחלונות תיבות הדו־שיח יש לחצן סגירה (דורש איתחול)" -#: ../src/ui/dialog/inkscape-preferences.cpp:539 +#: ../src/ui/dialog/inkscape-preferences.cpp:557 msgid "Windows" msgstr "חלונות" -#: ../src/ui/dialog/inkscape-preferences.cpp:544 +#: ../src/ui/dialog/inkscape-preferences.cpp:562 msgid "Move in parallel" -msgstr "" +msgstr "הזז במקביל" -#: ../src/ui/dialog/inkscape-preferences.cpp:546 +#: ../src/ui/dialog/inkscape-preferences.cpp:564 msgid "Stay unmoved" -msgstr "" +msgstr "השאר ללא תזוזה" -#: ../src/ui/dialog/inkscape-preferences.cpp:548 +#: ../src/ui/dialog/inkscape-preferences.cpp:566 msgid "Move according to transform" -msgstr "" +msgstr "הזז בהתאם לשינוי הצורה" -#: ../src/ui/dialog/inkscape-preferences.cpp:550 +#: ../src/ui/dialog/inkscape-preferences.cpp:568 msgid "Are unlinked" -msgstr "" +msgstr "יבוטל קשרם" -#: ../src/ui/dialog/inkscape-preferences.cpp:552 +#: ../src/ui/dialog/inkscape-preferences.cpp:570 msgid "Are deleted" -msgstr "" +msgstr "נמחקים" -#: ../src/ui/dialog/inkscape-preferences.cpp:555 +#: ../src/ui/dialog/inkscape-preferences.cpp:573 msgid "When the original moves, its clones and linked offsets:" -msgstr "" +msgstr "כאשר המקור זז, כפיליו ומקושריו מוסטים:" -#: ../src/ui/dialog/inkscape-preferences.cpp:557 +#: ../src/ui/dialog/inkscape-preferences.cpp:575 msgid "Clones are translated by the same vector as their original." -msgstr "" +msgstr "כפילים זזים באותו וקטור כמו המקור שלהם." -#: ../src/ui/dialog/inkscape-preferences.cpp:559 +#: ../src/ui/dialog/inkscape-preferences.cpp:577 msgid "Clones preserve their positions when their original is moved." -msgstr "" +msgstr "הכפילים שומרים על מקומם כאשר המקור שלהם זז." -#: ../src/ui/dialog/inkscape-preferences.cpp:561 -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." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:579 +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." +msgstr "כל כפיל זז בהתאם לערך של מאפיין שינוי הצורה שלו (transform= ). לדוגמה, כפיל מסובב יזוז בכיוון אחר מהמקור שלו." -#: ../src/ui/dialog/inkscape-preferences.cpp:562 +#: ../src/ui/dialog/inkscape-preferences.cpp:580 msgid "When the original is deleted, its clones:" -msgstr "" +msgstr "כאשר המקור נמחק, כפיליו:" -#: ../src/ui/dialog/inkscape-preferences.cpp:564 +#: ../src/ui/dialog/inkscape-preferences.cpp:582 msgid "Orphaned clones are converted to regular objects." -msgstr "" +msgstr "כפילים יתומים מומרים לפריטים רגילים." -#: ../src/ui/dialog/inkscape-preferences.cpp:566 +#: ../src/ui/dialog/inkscape-preferences.cpp:584 msgid "Orphaned clones are deleted along with their original." -msgstr "" +msgstr "כפילים יתומים נמחקים עם המקור שלהם" + +#: ../src/ui/dialog/inkscape-preferences.cpp:586 +msgid "When duplicating original+clones:" +msgstr "כאשר משכפלים מקור+כפילים:" + +#: ../src/ui/dialog/inkscape-preferences.cpp:588 +msgid "Relink duplicated clones" +msgstr "קשר מחדש את הכפילים המשוכפלים" + +#: ../src/ui/dialog/inkscape-preferences.cpp:590 +msgid "When duplicating a selection containing both a clone and its original (possibly in groups), relink the duplicated clone to the duplicated original instead of the old original" +msgstr "בעת שיכפול בחירה המכילה גם את המקור וגם כפיל (ייתכן גם בקבוצות), קשר מחדש את הכפילים המשוכפלים למקור המשוכפל במקור למקור הישן" #. TRANSLATORS: Heading for the Inkscape Preferences "Clones" Page -#: ../src/ui/dialog/inkscape-preferences.cpp:569 +#: ../src/ui/dialog/inkscape-preferences.cpp:593 msgid "Clones" -msgstr "" +msgstr "כפילים" -#: ../src/ui/dialog/inkscape-preferences.cpp:574 +#: ../src/ui/dialog/inkscape-preferences.cpp:598 msgid "When applying, use the topmost selected object as clippath/mask" -msgstr "" +msgstr "כאשר מחילים, השתמש בפריט העליון שנבחר כנתיב קליפ/מסכה" -#: ../src/ui/dialog/inkscape-preferences.cpp:576 -msgid "" -"Uncheck this to use the bottom selected object as the clipping path or mask" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:600 +msgid "Uncheck this to use the bottom selected object as the clipping path or mask" +msgstr "בטל בחירה זו כדי להשתמש בפריט התחתון ביותר שנבחר בתור נתיב הגזירה או המסכה" -#: ../src/ui/dialog/inkscape-preferences.cpp:577 +#: ../src/ui/dialog/inkscape-preferences.cpp:601 msgid "Remove clippath/mask object after applying" -msgstr "" +msgstr "הסר פריט נתיב קליפ/מסכה לאחר ההחלה" -#: ../src/ui/dialog/inkscape-preferences.cpp:579 -msgid "" -"After applying, remove the object used as the clipping path or mask from the " -"drawing" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:603 +msgid "After applying, remove the object used as the clipping path or mask from the drawing" +msgstr "לאחר ההחלה, הסר את הפריט המשמש כנתיב גזירה או מסכה מהציור" -#: ../src/ui/dialog/inkscape-preferences.cpp:580 +#: ../src/ui/dialog/inkscape-preferences.cpp:604 msgid "Clippaths and masks" -msgstr "" +msgstr "נתיבי קליפ ומסכות" -#: ../src/ui/dialog/inkscape-preferences.cpp:585 -#: ../src/widgets/select-toolbar.cpp:524 +#: ../src/ui/dialog/inkscape-preferences.cpp:609 +#: ../src/widgets/select-toolbar.cpp:541 msgid "Scale stroke width" -msgstr "" +msgstr "שנה את גודל קו המתאר" -#: ../src/ui/dialog/inkscape-preferences.cpp:586 +#: ../src/ui/dialog/inkscape-preferences.cpp:610 msgid "Scale rounded corners in rectangles" -msgstr "" +msgstr "שנה את גודל הפינות המעוגלות במרובעים" -#: ../src/ui/dialog/inkscape-preferences.cpp:587 +#: ../src/ui/dialog/inkscape-preferences.cpp:611 msgid "Transform gradients" -msgstr "" +msgstr "שנה את צורת המדרג" -#: ../src/ui/dialog/inkscape-preferences.cpp:588 +#: ../src/ui/dialog/inkscape-preferences.cpp:612 msgid "Transform patterns" -msgstr "" +msgstr "שנה את צורת התבניות" -#: ../src/ui/dialog/inkscape-preferences.cpp:589 +#: ../src/ui/dialog/inkscape-preferences.cpp:613 msgid "Optimized" -msgstr "" +msgstr "מתועל" -#: ../src/ui/dialog/inkscape-preferences.cpp:590 +#: ../src/ui/dialog/inkscape-preferences.cpp:614 msgid "Preserved" -msgstr "" +msgstr "משומר" -#: ../src/ui/dialog/inkscape-preferences.cpp:593 -#: ../src/widgets/select-toolbar.cpp:525 +#: ../src/ui/dialog/inkscape-preferences.cpp:617 +#: ../src/widgets/select-toolbar.cpp:542 msgid "When scaling objects, scale the stroke width by the same proportion" -msgstr "" +msgstr "כאשר משנה את קנה מידת הפריטים, שנה את רוחב קו המתאר באותו היחס" -#: ../src/ui/dialog/inkscape-preferences.cpp:595 -#: ../src/widgets/select-toolbar.cpp:536 +#: ../src/ui/dialog/inkscape-preferences.cpp:619 +#: ../src/widgets/select-toolbar.cpp:553 msgid "When scaling rectangles, scale the radii of rounded corners" -msgstr "" +msgstr "כאשר משנה את קנה מידת המרובעים, שנה את רדיוס הפינות המעוגלות" -#: ../src/ui/dialog/inkscape-preferences.cpp:597 -#: ../src/widgets/select-toolbar.cpp:547 +#: ../src/ui/dialog/inkscape-preferences.cpp:621 +#: ../src/widgets/select-toolbar.cpp:564 msgid "Move gradients (in fill or stroke) along with the objects" -msgstr "" +msgstr "הזז מדרגים (במילוי או בקו המתאר) ביחד עם הפריטים" -#: ../src/ui/dialog/inkscape-preferences.cpp:599 -#: ../src/widgets/select-toolbar.cpp:558 +#: ../src/ui/dialog/inkscape-preferences.cpp:623 +#: ../src/widgets/select-toolbar.cpp:575 msgid "Move patterns (in fill or stroke) along with the objects" -msgstr "" +msgstr "הזז תבניות (במילוי או בקו המתאר) יחד עם הפריטים" -#: ../src/ui/dialog/inkscape-preferences.cpp:600 +#: ../src/ui/dialog/inkscape-preferences.cpp:624 msgid "Store transformation:" -msgstr "" +msgstr "אחסן שינוי צורה:" -#: ../src/ui/dialog/inkscape-preferences.cpp:602 -msgid "" -"If possible, apply transformation to objects without adding a transform= " -"attribute" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:626 +msgid "If possible, apply transformation to objects without adding a transform= attribute" +msgstr "במידת האפשר, החל את שינוי הצורה לפריט מבלי להוסיף מאפיין שינוי צורה (transform=)" -#: ../src/ui/dialog/inkscape-preferences.cpp:604 +#: ../src/ui/dialog/inkscape-preferences.cpp:628 msgid "Always store transformation as a transform= attribute on objects" -msgstr "" +msgstr "תמיד אחסן את שינוי הצורה כמאפיין שינוי צורה (transform=) על פריטים" -#: ../src/ui/dialog/inkscape-preferences.cpp:606 +#: ../src/ui/dialog/inkscape-preferences.cpp:630 msgid "Transforms" -msgstr "" +msgstr "שינויי צורה" -#: ../src/ui/dialog/inkscape-preferences.cpp:611 +#. blur quality +#. filter quality +#: ../src/ui/dialog/inkscape-preferences.cpp:636 +#: ../src/ui/dialog/inkscape-preferences.cpp:660 msgid "Best quality (slowest)" msgstr "איכות מעולה (הכי איטי)" -#: ../src/ui/dialog/inkscape-preferences.cpp:613 +#: ../src/ui/dialog/inkscape-preferences.cpp:638 +#: ../src/ui/dialog/inkscape-preferences.cpp:662 msgid "Better quality (slower)" msgstr "איכות טובה (איטי)" -#: ../src/ui/dialog/inkscape-preferences.cpp:615 +#: ../src/ui/dialog/inkscape-preferences.cpp:640 +#: ../src/ui/dialog/inkscape-preferences.cpp:664 msgid "Average quality" msgstr "איכות בינונית" -#: ../src/ui/dialog/inkscape-preferences.cpp:617 +#: ../src/ui/dialog/inkscape-preferences.cpp:642 +#: ../src/ui/dialog/inkscape-preferences.cpp:666 msgid "Lower quality (faster)" msgstr "איכות נמוכה (מהיר)" -#: ../src/ui/dialog/inkscape-preferences.cpp:619 +#: ../src/ui/dialog/inkscape-preferences.cpp:644 +#: ../src/ui/dialog/inkscape-preferences.cpp:668 msgid "Lowest quality (fastest)" msgstr "איכות ירודה (הכי מהיר)" -#: ../src/ui/dialog/inkscape-preferences.cpp:622 +#: ../src/ui/dialog/inkscape-preferences.cpp:647 msgid "Gaussian blur quality for display:" -msgstr "" +msgstr "איכות טשטוש פעמוני לתצוגה:" -#: ../src/ui/dialog/inkscape-preferences.cpp:624 -msgid "" -"Best quality, but display may be very slow at high zooms (bitmap export " -"always uses best quality)" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:649 +#: ../src/ui/dialog/inkscape-preferences.cpp:673 +msgid "Best quality, but display may be very slow at high zooms (bitmap export always uses best quality)" +msgstr "איכות מעולה, אך התצוגה עלולה להיות מאוד איטית בתקריבים קרובים מאוד (ייצוא מפת סיביות תמיד משתמש באיכות מעולה)" -#: ../src/ui/dialog/inkscape-preferences.cpp:626 +#: ../src/ui/dialog/inkscape-preferences.cpp:651 +#: ../src/ui/dialog/inkscape-preferences.cpp:675 msgid "Better quality, but slower display" -msgstr "" +msgstr "איכות טובה, אך תצוגה איטית יותר" -#: ../src/ui/dialog/inkscape-preferences.cpp:628 +#: ../src/ui/dialog/inkscape-preferences.cpp:653 +#: ../src/ui/dialog/inkscape-preferences.cpp:677 msgid "Average quality, acceptable display speed" -msgstr "" +msgstr "איכות בינונית, זמני תצוגה סבירים" -#: ../src/ui/dialog/inkscape-preferences.cpp:630 +#: ../src/ui/dialog/inkscape-preferences.cpp:655 +#: ../src/ui/dialog/inkscape-preferences.cpp:679 msgid "Lower quality (some artifacts), but display is faster" -msgstr "" +msgstr "איכות נמוכה (כמה חפצים), אך התצוגה מהירה יותר" -#: ../src/ui/dialog/inkscape-preferences.cpp:632 +#: ../src/ui/dialog/inkscape-preferences.cpp:657 +#: ../src/ui/dialog/inkscape-preferences.cpp:681 msgid "Lowest quality (considerable artifacts), but display is fastest" -msgstr "" +msgstr "איכות ירודה (חפצים מועטים), אך התצוגה היא המהירה ביותר" -#: ../src/ui/dialog/inkscape-preferences.cpp:634 +#: ../src/ui/dialog/inkscape-preferences.cpp:671 +msgid "Filter effects quality for display:" +msgstr "איכות אפקטי המסננים לתצוגה:" + +#. show infobox +#: ../src/ui/dialog/inkscape-preferences.cpp:684 msgid "Show filter primitives infobox" -msgstr "" +msgstr "הצג את תיבת המידע למסננים קדמונים" -#: ../src/ui/dialog/inkscape-preferences.cpp:636 -msgid "" -"Show icons and descriptions for the filter primitives available at the " -"filter effects dialog." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:686 +msgid "Show icons and descriptions for the filter primitives available at the filter effects dialog." +msgstr "הצג סמלים ותיאורים עבור המסננים הקדמונים הזמינים בתיבת הדו שיח של אפקטי המסנן." -#: ../src/ui/dialog/inkscape-preferences.cpp:638 +#: ../src/ui/dialog/inkscape-preferences.cpp:688 msgid "Filters" -msgstr "" +msgstr "מסננים" -#: ../src/ui/dialog/inkscape-preferences.cpp:644 +#: ../src/ui/dialog/inkscape-preferences.cpp:694 msgid "Select in all layers" -msgstr "" +msgstr "בחר בכל השכבות" -#: ../src/ui/dialog/inkscape-preferences.cpp:645 +#: ../src/ui/dialog/inkscape-preferences.cpp:695 msgid "Select only within current layer" -msgstr "" +msgstr "בחר בתחומי בשכבה הנוכחית בלבד" -#: ../src/ui/dialog/inkscape-preferences.cpp:646 +#: ../src/ui/dialog/inkscape-preferences.cpp:696 msgid "Select in current layer and sublayers" -msgstr "" +msgstr "בחר בשכבה הנוכחית ובתת־השכבות" -#: ../src/ui/dialog/inkscape-preferences.cpp:647 +#: ../src/ui/dialog/inkscape-preferences.cpp:697 msgid "Ignore hidden objects and layers" -msgstr "" +msgstr "התעלם מפריטים ושכבות נסתרים" -#: ../src/ui/dialog/inkscape-preferences.cpp:648 +#: ../src/ui/dialog/inkscape-preferences.cpp:698 msgid "Ignore locked objects and layers" -msgstr "" +msgstr "התעלם מפריטים ושכבות נעולים" -#: ../src/ui/dialog/inkscape-preferences.cpp:649 +#: ../src/ui/dialog/inkscape-preferences.cpp:699 msgid "Deselect upon layer change" -msgstr "" +msgstr "בטל את הבחירה עם שינוי השכבה" -#: ../src/ui/dialog/inkscape-preferences.cpp:651 +#: ../src/ui/dialog/inkscape-preferences.cpp:701 msgid "Ctrl+A, Tab, Shift+Tab:" -msgstr "" +msgstr "Ctrl+A, Tab, Shift+Tab:" -#: ../src/ui/dialog/inkscape-preferences.cpp:653 +#: ../src/ui/dialog/inkscape-preferences.cpp:703 msgid "Make keyboard selection commands work on objects in all layers" -msgstr "" +msgstr "גרום לפקודות בחירת המקלדת לעבוד על פריטים בכל השכבות" -#: ../src/ui/dialog/inkscape-preferences.cpp:655 +#: ../src/ui/dialog/inkscape-preferences.cpp:705 msgid "Make keyboard selection commands work on objects in current layer only" -msgstr "" +msgstr "גרום לפקודות בחירת המקלדת לעבוד על פריטים בשכבה הנוכחית בלבד" -#: ../src/ui/dialog/inkscape-preferences.cpp:657 -msgid "" -"Make keyboard selection commands work on objects in current layer and all " -"its sublayers" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:707 +msgid "Make keyboard selection commands work on objects in current layer and all its sublayers" +msgstr "גרום לפקודות בחירת המקלדת לעבוד על פריטים בשכבה הנוכחית ובתת־השכבות שלה" -#: ../src/ui/dialog/inkscape-preferences.cpp:659 -msgid "" -"Uncheck this to be able to select objects that are hidden (either by " -"themselves or by being in a hidden layer)" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:709 +msgid "Uncheck this to be able to select objects that are hidden (either by themselves or by being in a hidden layer)" +msgstr "בטל בחירה זו כדי לאפשר בחירת פריטים מוסתרים (או בעצמם או מהיותם חלק משכבה מוסתרת)" -#: ../src/ui/dialog/inkscape-preferences.cpp:661 -msgid "" -"Uncheck this to be able to select objects that are locked (either by " -"themselves or by being in a locked layer)" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:711 +msgid "Uncheck this to be able to select objects that are locked (either by themselves or by being in a locked layer)" +msgstr "בטל בחירה זו כדי לאפשר בחירת פריטים נעולים (או בעצמם או שהם חלק משכבה נעולה)" -#: ../src/ui/dialog/inkscape-preferences.cpp:664 -msgid "" -"Uncheck this to be able to keep the current objects selected when the " -"current layer changes" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:714 +msgid "Uncheck this to be able to keep the current objects selected when the current layer changes" +msgstr "בטל בחירה זו כדי לאפשר לשמור על בחירת הפריטים הנוכחיים גם כאשר השכבה הנוכחית משתנה" -#: ../src/ui/dialog/inkscape-preferences.cpp:666 +#: ../src/ui/dialog/inkscape-preferences.cpp:716 msgid "Selecting" -msgstr "" +msgstr "בחירה" -#: ../src/ui/dialog/inkscape-preferences.cpp:673 +#: ../src/ui/dialog/inkscape-preferences.cpp:723 msgid "Default export resolution:" -msgstr "" +msgstr "רזולוציית ברירת המחדל לייצוא :" -#: ../src/ui/dialog/inkscape-preferences.cpp:674 +#: ../src/ui/dialog/inkscape-preferences.cpp:724 msgid "Default bitmap resolution (in dots per inch) in the Export dialog" -msgstr "" +msgstr "רזולוציית ברירת המחדל למפת סיביות (בנקודות לאינטש) בתיבת דו־שיח הייצוא" -#: ../src/ui/dialog/inkscape-preferences.cpp:676 +#: ../src/ui/dialog/inkscape-preferences.cpp:726 msgid "Open Clip Art Library Server Name:" -msgstr "" +msgstr "שם שרת ספריית אוסף התמונות החופשיות:" -#: ../src/ui/dialog/inkscape-preferences.cpp:677 -msgid "" -"The server name of the Open Clip Art Library webdav server. It's used by the " -"Import and Export to OCAL function." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:727 +msgid "The server name of the Open Clip Art Library webdav server. It's used by the Import and Export to OCAL function." +msgstr "שם השרת עבור שרת ה־webdav לספריית אוסף התמונות החופשיות. בשימוש על ידי פונקציית הייבוא והייצוא אל ומהספריה." -#: ../src/ui/dialog/inkscape-preferences.cpp:679 +#: ../src/ui/dialog/inkscape-preferences.cpp:729 msgid "Open Clip Art Library Username:" -msgstr "" +msgstr "שם משתמש ספריית אוסף התמונות החופשיות:" -#: ../src/ui/dialog/inkscape-preferences.cpp:680 +#: ../src/ui/dialog/inkscape-preferences.cpp:730 msgid "The username used to log into Open Clip Art Library." -msgstr "" +msgstr "שם המשתמש המשמש להתחברות אל תוך ספריית אוסף התמונות החופשיות." -#: ../src/ui/dialog/inkscape-preferences.cpp:682 +#: ../src/ui/dialog/inkscape-preferences.cpp:732 msgid "Open Clip Art Library Password:" -msgstr "" +msgstr "סיסמאת ספריית אוסף התמונות החופשיות:" -#: ../src/ui/dialog/inkscape-preferences.cpp:683 +#: ../src/ui/dialog/inkscape-preferences.cpp:733 msgid "The password used to log into Open Clip Art Library." -msgstr "" +msgstr "הסיסמה המשמשת להתחברות אל תוך ספריית אוסף התמונות החופשיות." -#: ../src/ui/dialog/inkscape-preferences.cpp:685 +#: ../src/ui/dialog/inkscape-preferences.cpp:735 msgid "Import/Export" -msgstr "" +msgstr "ייבוא/ייצוא" #. TRANSLATORS: see http://www.newsandtech.com/issues/2004/03-04/pt/03-04_rendering.htm -#: ../src/ui/dialog/inkscape-preferences.cpp:731 +#: ../src/ui/dialog/inkscape-preferences.cpp:785 msgid "Perceptual" -msgstr "" +msgstr "תפיסתי" -#: ../src/ui/dialog/inkscape-preferences.cpp:731 +#: ../src/ui/dialog/inkscape-preferences.cpp:785 msgid "Relative Colorimetric" -msgstr "" +msgstr "מדד־צבע יחסי" -#: ../src/ui/dialog/inkscape-preferences.cpp:731 +#: ../src/ui/dialog/inkscape-preferences.cpp:785 msgid "Absolute Colorimetric" -msgstr "" +msgstr "מדד־צבע מוחלט" -#: ../src/ui/dialog/inkscape-preferences.cpp:735 +#: ../src/ui/dialog/inkscape-preferences.cpp:789 msgid "(Note: Color management has been disabled in this build)" -msgstr "" +msgstr "(הערה: ניהול צבעים בוטל בהרכבה זו)" -#: ../src/ui/dialog/inkscape-preferences.cpp:739 +#: ../src/ui/dialog/inkscape-preferences.cpp:793 msgid "Display adjustment" -msgstr "" +msgstr "התאמת התצוגה" -#: ../src/ui/dialog/inkscape-preferences.cpp:741 +#: ../src/ui/dialog/inkscape-preferences.cpp:795 msgid "Display profile:" -msgstr "" +msgstr "פרופיל התצוגה:" -#: ../src/ui/dialog/inkscape-preferences.cpp:742 +#: ../src/ui/dialog/inkscape-preferences.cpp:796 msgid "The ICC profile to use to calibrate display output." -msgstr "" +msgstr "פרופיל ה־ICC המשמש לכיול פלט התצוגה." -#: ../src/ui/dialog/inkscape-preferences.cpp:744 +#: ../src/ui/dialog/inkscape-preferences.cpp:798 msgid "Retrieve profile from display" -msgstr "" +msgstr "אחזר את הפרופיל מהתצוגה" -#: ../src/ui/dialog/inkscape-preferences.cpp:747 +#: ../src/ui/dialog/inkscape-preferences.cpp:801 msgid "Retrieve profiles from those attached to displays via XICC." -msgstr "" +msgstr "אחזר את הפרופילים מאלו המחוברים לתצוגות באמצעות XICC." -#: ../src/ui/dialog/inkscape-preferences.cpp:749 +#: ../src/ui/dialog/inkscape-preferences.cpp:803 msgid "Retrieve profiles from those attached to displays." -msgstr "" +msgstr "אחזר את הפרופילים מאלו המחוברים לתצוגות." -#: ../src/ui/dialog/inkscape-preferences.cpp:754 +#: ../src/ui/dialog/inkscape-preferences.cpp:808 msgid "Display rendering intent:" -msgstr "" +msgstr "הצג את תכלית העיבוד:" -#: ../src/ui/dialog/inkscape-preferences.cpp:755 -#: ../src/ui/dialog/inkscape-preferences.cpp:778 +#: ../src/ui/dialog/inkscape-preferences.cpp:809 +#: ../src/ui/dialog/inkscape-preferences.cpp:832 msgid "The rendering intent to use to calibrate display output." -msgstr "" +msgstr "תכלית העיבוד לשימוש כיול פלט התצוגה." -#: ../src/ui/dialog/inkscape-preferences.cpp:757 +#: ../src/ui/dialog/inkscape-preferences.cpp:811 msgid "Proofing" -msgstr "" +msgstr "חיסון" -#: ../src/ui/dialog/inkscape-preferences.cpp:759 +#: ../src/ui/dialog/inkscape-preferences.cpp:813 msgid "Simulate output on screen" -msgstr "" +msgstr "הדמה את הפלט על המסך" -#: ../src/ui/dialog/inkscape-preferences.cpp:761 +#: ../src/ui/dialog/inkscape-preferences.cpp:815 msgid "Simulates output of target device." -msgstr "" +msgstr "מדמה את הפלט להתקן היעד." -#: ../src/ui/dialog/inkscape-preferences.cpp:763 +#: ../src/ui/dialog/inkscape-preferences.cpp:817 msgid "Mark out of gamut colors" -msgstr "" +msgstr "סמן מחוץ למכלול הצבעים" -#: ../src/ui/dialog/inkscape-preferences.cpp:765 +#: ../src/ui/dialog/inkscape-preferences.cpp:819 msgid "Highlights colors that are out of gamut for the target device." -msgstr "" +msgstr "מדגיש את הצבעים שהינם מחוץ למכלול הצבעים עבור התקן היעד." -#: ../src/ui/dialog/inkscape-preferences.cpp:770 +#: ../src/ui/dialog/inkscape-preferences.cpp:824 msgid "Out of gamut warning color:" -msgstr "" +msgstr "צבע אזהרה לצבעים שמחוץ למכלול הצבעים:" -#: ../src/ui/dialog/inkscape-preferences.cpp:771 +#: ../src/ui/dialog/inkscape-preferences.cpp:825 msgid "Selects the color used for out of gamut warning." -msgstr "" +msgstr "בוחר את הצבע המשמש לאזהרה עבור צבעים שמחוץ למכלול הצבעים.פ" -#: ../src/ui/dialog/inkscape-preferences.cpp:773 +#: ../src/ui/dialog/inkscape-preferences.cpp:827 msgid "Device profile:" -msgstr "" +msgstr "פרופיל ההתקן:" -#: ../src/ui/dialog/inkscape-preferences.cpp:774 +#: ../src/ui/dialog/inkscape-preferences.cpp:828 msgid "The ICC profile to use to simulate device output." -msgstr "" +msgstr "פרופיל ה־ICC בו להשתמש כדי לדמות את פלט ההתקן." -#: ../src/ui/dialog/inkscape-preferences.cpp:777 +#: ../src/ui/dialog/inkscape-preferences.cpp:831 msgid "Device rendering intent:" -msgstr "" +msgstr "תכלית עיבוד ההתקן:" -#: ../src/ui/dialog/inkscape-preferences.cpp:780 +#: ../src/ui/dialog/inkscape-preferences.cpp:834 msgid "Black point compensation" -msgstr "" +msgstr "פיצוי על נקודות שחורות" -#: ../src/ui/dialog/inkscape-preferences.cpp:782 +#: ../src/ui/dialog/inkscape-preferences.cpp:836 msgid "Enables black point compensation." -msgstr "" +msgstr "מאפשר פיצוי על נקודות שחורות." -#: ../src/ui/dialog/inkscape-preferences.cpp:784 +#: ../src/ui/dialog/inkscape-preferences.cpp:838 msgid "Preserve black" -msgstr "" +msgstr "שימור השחור" -#: ../src/ui/dialog/inkscape-preferences.cpp:789 +#: ../src/ui/dialog/inkscape-preferences.cpp:843 msgid "(LittleCMS 1.15 or later required)" -msgstr "" +msgstr "(נדרשת LittleCMS 1.15 או גירסה מאוחרת יותר)" -#: ../src/ui/dialog/inkscape-preferences.cpp:791 +#: ../src/ui/dialog/inkscape-preferences.cpp:845 msgid "Preserve K channel in CMYK -> CMYK transforms" -msgstr "" +msgstr "שימור הערוץ K בהמרות CMYK -> CMYK" -#: ../src/ui/dialog/inkscape-preferences.cpp:804 +#: ../src/ui/dialog/inkscape-preferences.cpp:858 msgid "" -msgstr "" +msgstr "<ללא>" -#: ../src/ui/dialog/inkscape-preferences.cpp:850 +#: ../src/ui/dialog/inkscape-preferences.cpp:903 msgid "Color management" -msgstr "" +msgstr "ניהול צבעים" -#: ../src/ui/dialog/inkscape-preferences.cpp:855 +#: ../src/ui/dialog/inkscape-preferences.cpp:908 msgid "Major grid line emphasizing" -msgstr "" +msgstr "הדגשת קווי רשת עיקריים" -#: ../src/ui/dialog/inkscape-preferences.cpp:857 +#: ../src/ui/dialog/inkscape-preferences.cpp:910 msgid "Don't emphasize gridlines when zoomed out" -msgstr "" +msgstr "אל תדגיש את קווי הרשת בזמן התרחקות" -#: ../src/ui/dialog/inkscape-preferences.cpp:858 -msgid "" -"If set and zoomed out, the gridlines will be shown in normal color instead " -"of major grid line color." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:911 +msgid "If set and zoomed out, the gridlines will be shown in normal color instead of major grid line color." +msgstr "במידה והוגדר ובוצעה התרחקות מהתמונה, קווי הרשת יוצגו בצבעים רגילים במקום צבעי רשת ראשיים." -#: ../src/ui/dialog/inkscape-preferences.cpp:860 +#: ../src/ui/dialog/inkscape-preferences.cpp:913 msgid "Default grid settings" -msgstr "" +msgstr "הגדרות רשת ברירת מחדל" -#: ../src/ui/dialog/inkscape-preferences.cpp:866 -#: ../src/ui/dialog/inkscape-preferences.cpp:887 -#, fuzzy -msgid "Grid units" -msgstr "גרדיאנטים" +#: ../src/ui/dialog/inkscape-preferences.cpp:919 +#: ../src/ui/dialog/inkscape-preferences.cpp:940 +msgid "Grid units:" +msgstr "יחידות הרשת:" -#: ../src/ui/dialog/inkscape-preferences.cpp:869 -#: ../src/ui/dialog/inkscape-preferences.cpp:890 -msgid "Origin X" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:922 +#: ../src/ui/dialog/inkscape-preferences.cpp:943 +msgid "Origin X:" +msgstr "מקור בציר ה־X:" -#: ../src/ui/dialog/inkscape-preferences.cpp:870 -#: ../src/ui/dialog/inkscape-preferences.cpp:891 -msgid "Origin Y" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:923 +#: ../src/ui/dialog/inkscape-preferences.cpp:944 +msgid "Origin Y:" +msgstr "מקור בציר ה־Y:" -#: ../src/ui/dialog/inkscape-preferences.cpp:873 -#, fuzzy -msgid "Spacing X" -msgstr "ריווח" +#: ../src/ui/dialog/inkscape-preferences.cpp:926 +msgid "Spacing X:" +msgstr "ריווח בציר ה־X:" -#: ../src/ui/dialog/inkscape-preferences.cpp:874 -#: ../src/ui/dialog/inkscape-preferences.cpp:893 -#, fuzzy -msgid "Spacing Y" -msgstr "ריווח" +#: ../src/ui/dialog/inkscape-preferences.cpp:927 +#: ../src/ui/dialog/inkscape-preferences.cpp:946 +msgid "Spacing Y:" +msgstr "ריווח בציר ה־Y:" -#: ../src/ui/dialog/inkscape-preferences.cpp:877 -#: ../src/ui/dialog/inkscape-preferences.cpp:899 -msgid "Selects the color used for normal grid lines." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:929 +#: ../src/ui/dialog/inkscape-preferences.cpp:930 +#: ../src/ui/dialog/inkscape-preferences.cpp:951 +#: ../src/ui/dialog/inkscape-preferences.cpp:952 +msgid "Grid line color:" +msgstr "צבע קווי הרשת:" -#: ../src/ui/dialog/inkscape-preferences.cpp:879 -#: ../src/ui/dialog/inkscape-preferences.cpp:901 -msgid "Selects the color used for major (highlighted) grid lines." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:930 +#: ../src/ui/dialog/inkscape-preferences.cpp:952 +msgid "Color used for normal grid lines" +msgstr "הצבע המשמש לקווי הרשת הרגילים" -#: ../src/ui/dialog/inkscape-preferences.cpp:881 -#: ../src/ui/dialog/inkscape-preferences.cpp:903 -msgid "Major grid line every" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:931 +#: ../src/ui/dialog/inkscape-preferences.cpp:932 +#: ../src/ui/dialog/inkscape-preferences.cpp:953 +#: ../src/ui/dialog/inkscape-preferences.cpp:954 +msgid "Major grid line color:" +msgstr "צבע קווי הרשת הראשי:" -#: ../src/ui/dialog/inkscape-preferences.cpp:882 -msgid "Show dots instead of lines" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:932 +#: ../src/ui/dialog/inkscape-preferences.cpp:954 +msgid "Color used for major (highlighted) grid lines" +msgstr "הצבע של קווי הרשת הראשיים (מודגשים)" -#: ../src/ui/dialog/inkscape-preferences.cpp:896 -msgid "Angle X" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:934 +#: ../src/ui/dialog/inkscape-preferences.cpp:956 +msgid "Major grid line every:" +msgstr "קו רשת ראשי בכל:" -#: ../src/ui/dialog/inkscape-preferences.cpp:897 -msgid "Angle Z" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:935 +msgid "Show dots instead of lines" +msgstr "הצג נקודות במקום קווים" -#: ../src/ui/dialog/inkscape-preferences.cpp:910 +#: ../src/ui/dialog/inkscape-preferences.cpp:936 +msgid "If set, display dots at gridpoints instead of gridlines" +msgstr "במידה והוגדר, הצג נקודות בנקודות המפגש שעל הרשת במקום קווי רשת" + +#: ../src/ui/dialog/inkscape-preferences.cpp:963 msgid "Use named colors" -msgstr "" +msgstr "השתמש בשמות הצבעים" -#: ../src/ui/dialog/inkscape-preferences.cpp:911 -msgid "If set, write the CSS name of the color instead of it's numeric value." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:964 +msgid "If set, write the CSS name of the color when available (e.g. 'red' or 'magenta') instead of the numeric value" +msgstr "המידה והוגדר, כתוב את שם הצבע כפי שמקובל ב־CSS במידה וניתן (לדוגמה 'red' או 'magenta') במקום הערך המספרי" -#: ../src/ui/dialog/inkscape-preferences.cpp:913 -msgid "XML looks" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:966 +msgid "XML formatting" +msgstr "עיצוב XML" -#: ../src/ui/dialog/inkscape-preferences.cpp:915 -#, fuzzy +#: ../src/ui/dialog/inkscape-preferences.cpp:968 msgid "Inline attributes" -msgstr "הפוך גרדיאנט" +msgstr "מאפיינים בשורה" -#: ../src/ui/dialog/inkscape-preferences.cpp:916 -msgid "Inline the XML attributes" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:969 +msgid "Put attributes on the same line as the element tag" +msgstr "הוסף תכונות באותה השורה של תגית הרכיב" -#: ../src/ui/dialog/inkscape-preferences.cpp:919 -msgid "Indent spaces" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:972 +msgid "Indent, spaces:" +msgstr "ריווח, מרווחים:" -#: ../src/ui/dialog/inkscape-preferences.cpp:919 -msgid "The number of spaces to use for indentation." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:972 +msgid "The number of spaces to use for indenting nested elements; set to 0 for no indentation" +msgstr "מספר הרווחים לשימוש בעת הזחת הרכיבים המקננים; הגדר כ־0 כדי לבטל הזחה" -#: ../src/ui/dialog/inkscape-preferences.cpp:921 -msgid "Path string" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:974 +msgid "Path data" +msgstr "נתוני הנתיב" -#: ../src/ui/dialog/inkscape-preferences.cpp:923 +#: ../src/ui/dialog/inkscape-preferences.cpp:976 msgid "Allow relative coordinates" -msgstr "" +msgstr "אפשר נקודות ציון יחסיות" -#: ../src/ui/dialog/inkscape-preferences.cpp:924 +#: ../src/ui/dialog/inkscape-preferences.cpp:977 msgid "If set, relative coordinates may be used in path data" -msgstr "" +msgstr "במידה והוגדר, נקודות הציון היחסיות יכולות לשמש בנתוני הנתיב" -#. seems this is never used in Inkscape code -#. _svgoutput_allowshorthands.init( _("Allow shorthands"), "options.svgoutput", "allowshorthands", true); -#. _page_svgoutput.add_line( false, "", _svgoutput_allowshorthands, "", _(""), false); -#. -#: ../src/ui/dialog/inkscape-preferences.cpp:931 +#: ../src/ui/dialog/inkscape-preferences.cpp:979 msgid "Force repeat commands" -msgstr "" +msgstr "הכרח פעולות חזרה" -#: ../src/ui/dialog/inkscape-preferences.cpp:932 -msgid "" -"If set, force repeating of the same command (i.e. output 'L 1,2 L 3,4' " -"instead of 'L 1,2 3,4')." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:980 +msgid "Force repeating of the same path command (for example, 'L 1,2 L 3,4' instead of 'L 1,2 3,4')" +msgstr "הכרח חזרה על אותה פקודת הנתיב (לדוגמה, 'L 1,2 L 3,4' במקום 'L 1,2 3,4')" -#: ../src/ui/dialog/inkscape-preferences.cpp:934 -msgid "Numeric data" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:982 +msgid "Numbers" +msgstr "מספרים" -#: ../src/ui/dialog/inkscape-preferences.cpp:937 -msgid "Numeric precision" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:985 +msgid "Numeric precision:" +msgstr "דיוק עשרוני:" -#: ../src/ui/dialog/inkscape-preferences.cpp:937 -msgid "The number of digits to use behind the comma." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:985 +msgid "How many digits to write after the decimal dot" +msgstr "כמה מספרים להוסיף לאחר הנקודה העשרונית" -#: ../src/ui/dialog/inkscape-preferences.cpp:940 -msgid "Minimum exponent" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:988 +msgid "Minimum exponent:" +msgstr "מעריך מזערי:" -#: ../src/ui/dialog/inkscape-preferences.cpp:940 -msgid "" -"The minimum size of a number (10 to the power of this exponent), smaller " -"numbers will be written as zero." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:988 +msgid "The smallest number written to SVG is 10 to the power of this exponent; anything smaller is written as zero." +msgstr "המספר הקטן ביותר שנכתב ל־SVG הינו 10 בחזקת מעריך זה; כל מה שקטן יותר נכתב כ־0." -#: ../src/ui/dialog/inkscape-preferences.cpp:947 -msgid "Add label comments to printing output" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:990 +msgid "SVG output" +msgstr "פלט SVG" -#: ../src/ui/dialog/inkscape-preferences.cpp:949 -msgid "" -"When on, a comment will be added to the raw print output, marking the " -"rendered output for an object with its label" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:999 +msgid "Commands bar icon size" +msgstr "גודל סמלי סרגל הפקודות" -#: ../src/ui/dialog/inkscape-preferences.cpp:951 -msgid "Prevent sharing of gradient definitions" -msgstr "" - -#: ../src/ui/dialog/inkscape-preferences.cpp:953 -msgid "" -"When on, shared gradient definitions are automatically forked on change; " -"uncheck to allow sharing of gradient definitions so that editing one object " -"may affect other objects using the same gradient" -msgstr "" - -#: ../src/ui/dialog/inkscape-preferences.cpp:955 -msgid "Simplification threshold:" -msgstr "" - -#: ../src/ui/dialog/inkscape-preferences.cpp:956 -msgid "" -"How strong is the Simplify command by default. If you invoke this command " -"several times in quick succession, it will act more and more aggressively; " -"invoking it again after a pause restores the default threshold." -msgstr "" - -#: ../src/ui/dialog/inkscape-preferences.cpp:958 -msgid "2x2" -msgstr "" - -#: ../src/ui/dialog/inkscape-preferences.cpp:958 -msgid "4x4" -msgstr "" - -#: ../src/ui/dialog/inkscape-preferences.cpp:958 -msgid "8x8" -msgstr "" - -#: ../src/ui/dialog/inkscape-preferences.cpp:958 -msgid "16x16" -msgstr "" - -#: ../src/ui/dialog/inkscape-preferences.cpp:962 -msgid "Oversample bitmaps:" -msgstr "" - -#: ../src/ui/dialog/inkscape-preferences.cpp:972 -msgid "Commands bar icon size" -msgstr "" - -#: ../src/ui/dialog/inkscape-preferences.cpp:973 +#: ../src/ui/dialog/inkscape-preferences.cpp:1000 msgid "Set the size for the commands toolbar to use (requires restart)" -msgstr "" +msgstr "הגדר את גודל סרגל הכלי הפקודות לשימוש (דורש איתחול)" -#: ../src/ui/dialog/inkscape-preferences.cpp:976 +#: ../src/ui/dialog/inkscape-preferences.cpp:1003 msgid "Tool controls bar icon size" -msgstr "" +msgstr "גודל סמלי סרגל כלי הפקדים" -#: ../src/ui/dialog/inkscape-preferences.cpp:977 +#: ../src/ui/dialog/inkscape-preferences.cpp:1004 msgid "Set the size for the secondary toolbar to use (requires restart)" -msgstr "" +msgstr "הגדר את גודל סרגל הכלים המשני לשימוש (דורש איתחול)" -#: ../src/ui/dialog/inkscape-preferences.cpp:980 +#: ../src/ui/dialog/inkscape-preferences.cpp:1007 msgid "Main toolbar icon size" -msgstr "" +msgstr "גודל סמלי סרגל הכלים הראשי" -#: ../src/ui/dialog/inkscape-preferences.cpp:981 +#: ../src/ui/dialog/inkscape-preferences.cpp:1008 msgid "Set the size for the main tools to use (requires restart)" -msgstr "" +msgstr "הגדר את הגודל בו ישתמשו הכלים הראשיים (דורש איתחול)" -#: ../src/ui/dialog/inkscape-preferences.cpp:984 -msgid "Maximum number of recent documents:" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:1011 +msgid "Maximum documents in Open Recent:" +msgstr "מספר המסמכים המרבי באחרונים שנפתחו:" -#: ../src/ui/dialog/inkscape-preferences.cpp:985 +#: ../src/ui/dialog/inkscape-preferences.cpp:1012 msgid "The maximum length of the Open Recent list in the File menu" -msgstr "" +msgstr "מספר המסמכים המרבי שיופיעו ב'נפתחו לאחרונה' בתפריט 'קובץ'" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1015 +msgid "Zoom correction factor (in %):" +msgstr "מקדם תיקון התקריב (באחוזים):" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1016 +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 display objects in their true sizes" +msgstr "כוונן את המחוון עד שאורך הסרגל על המסך שלך תואם לאורכו המקורי. מידע זה משמש בעת תקריב של 1:1, 1:2 וכו', להצגת פריטים בגדליהם הממשיים" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1018 +msgid "Interface" +msgstr "מנשק" #. Autosave options -#: ../src/ui/dialog/inkscape-preferences.cpp:990 -msgid "Enable auto-save of document" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:1025 +msgid "Enable autosave (requires restart)" +msgstr "אפשר שמירה אוטומטית (דורש איתחול):" -#: ../src/ui/dialog/inkscape-preferences.cpp:991 -msgid "" -"Automatically saves the current document to disk at a given interval, thus " -"minimizing loss at a crash" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:1026 +msgid "Automatically save the current document(s) at a given interval, thus minimizing loss in case of a crash" +msgstr "שמור את המסמך/ים הנוכחי/ים אוטומטית בהפרשי זמן קבועים, ובכך ימוזער האובדן במקרה של קריסה" -#: ../src/ui/dialog/inkscape-preferences.cpp:993 +#: ../src/ui/dialog/inkscape-preferences.cpp:1028 msgid "Interval (in minutes):" -msgstr "" +msgstr "הפרש (בדקות):" -#: ../src/ui/dialog/inkscape-preferences.cpp:993 -msgid "" -"Sets the interval (in minutes) at which a workspace will be automatically " -"saved to disk" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:1028 +msgid "Interval (in minutes) at which document will be autosaved" +msgstr "הפרש (בשניות) לשמירת המסמך באופן אוטומטי" -#: ../src/ui/dialog/inkscape-preferences.cpp:995 -#, fuzzy +#: ../src/ui/dialog/inkscape-preferences.cpp:1030 msgid "Path:" -msgstr "הדבק" +msgstr "נתיב:" -#: ../src/ui/dialog/inkscape-preferences.cpp:995 -msgid "Sets the directory where autosaves will be written" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:1030 +msgid "The directory where autosaves will be written" +msgstr "התיקייה אליה ישמרו השמירות האוטומטיות" -#: ../src/ui/dialog/inkscape-preferences.cpp:997 -msgid "Maximum number of autosaves" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:1032 +msgid "Maximum number of autosaves:" +msgstr "מספר השמירות האוטומטיות המרבי:" -#: ../src/ui/dialog/inkscape-preferences.cpp:997 -msgid "" -"Allows for limiting the space used by autosaves, by setting a maximum number " -"of allowed files" -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:1032 +msgid "Maximum number of autosaved files; use this to limit the storage space used" +msgstr "מספר הקבצים המרבי שנשמרו אוטומטית; השתמש בזה כדי להגביל את נפח האיחסון בשימוש" #. When changing the interval or enabling/disabling the autosave function, #. * update our running configuration #. * #. * FIXME! #. * the inkscape_autosave_init should be called AFTER the values have been changed -#. * (which cannot be guaranteed from here) -#. * -#. * For now, autosave-settings will not change until restart +#. * (which cannot be guaranteed from here) - use a PrefObserver somewhere #. #. -#. _misc_autosave_enable.signal_toggled().connect( sigc::ptr_fun(inkscape_autosave_init), TRUE ); -#. _misc_autosave_interval.signal_changed().connect( sigc::ptr_fun(inkscape_autosave_init), TRUE ); +#. _autosave_autosave_enable.signal_toggled().connect( sigc::ptr_fun(inkscape_autosave_init), TRUE ); +#. _autosave_autosave_interval.signal_changed().connect( sigc::ptr_fun(inkscape_autosave_init), TRUE ); #. #. ----------- -#: ../src/ui/dialog/inkscape-preferences.cpp:1015 +#: ../src/ui/dialog/inkscape-preferences.cpp:1048 +msgid "Autosave" +msgstr "שמירה אוטומטית" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1054 +msgid "2x2" +msgstr "2x2" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1054 +msgid "4x4" +msgstr "4x4" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1054 +msgid "8x8" +msgstr "8x8" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1054 +msgid "16x16" +msgstr "16x16" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1058 +msgid "Oversample bitmaps:" +msgstr "דגום ביסודיות מפות סיביות:" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1061 msgid "Automatically reload bitmaps" -msgstr "" +msgstr "טען את מפות הסיביות מחדש אוטומטית" -#: ../src/ui/dialog/inkscape-preferences.cpp:1017 -msgid "Enbles automatic reload of linked images when changed on disk." -msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:1063 +msgid "Automatically reload linked images when file is changed on disk" +msgstr "טען אוטומטית את התמונות המקושרות כאשר משתנה קובץ בכונן" -#: ../src/ui/dialog/inkscape-preferences.cpp:1030 -#, fuzzy +#: ../src/ui/dialog/inkscape-preferences.cpp:1077 msgid "Bitmap editor:" -msgstr "עורך הגרדיאנט" +msgstr "עורך מפות סיביות:" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1083 +msgid "Resolution for Create Bitmap Copy:" +msgstr "הרזולוציה ליצירת עותק מפת סיביות:" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1084 +msgid "Resolution used by the Create Bitmap Copy command" +msgstr "הרזולוציה בה עושה שימוש הפקודה צור עותק מפת סיביות" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1086 +msgid "Bitmaps" +msgstr "מפות סיביות" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1092 +msgid "Add label comments to printing output" +msgstr "הוסף תוויות עם הערות לפלט המודפס" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1094 +msgid "When on, a comment will be added to the raw print output, marking the rendered output for an object with its label" +msgstr "כאשר פעיל, יתווספו הערות לפלט ההדפסה הגולמי, המסמנות את הפלט המעובד עבור הפריט באמצעות התווית שלו" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1096 +msgid "Prevent sharing of gradient definitions" +msgstr "מנע שיתוף של הגדרות מדרג" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1098 +msgid "When on, shared gradient definitions are automatically forked on change; uncheck to allow sharing of gradient definitions so that editing one object may affect other objects using the same gradient" +msgstr "כאשר פעיל, הגדרות מדרג משותף מסתעפות אוטומטית בזמן שינוי; בטל בחירה כדי לאפשר שיתוף מדרג של הגדרות מדרג כך שעריכת אחד הפריטים עלולה להשפיע על פריטים אחרים באמצעות אותו המדרג" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1101 +msgid "Simplification threshold:" +msgstr "סף ההפשטה:" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1102 +msgid "How strong is the Simplify command by default. If you invoke this command several times in quick succession, it will act more and more aggressively; invoking it again after a pause restores the default threshold." +msgstr "כמה חזקה תהיה פקודת ההפשטה כברירת מחדל. אם תפעיל פקודה זו מספר פעמים מהר וברציפות, היא תתנהג בצורה יותר ויותר תוקפנית; הפעלתה שוב לאחר הפוגה משחזרת את סף ברירת המחדל." + +#: ../src/ui/dialog/inkscape-preferences.cpp:1105 +msgid "Latency skew:" +msgstr "סטיית משך ההשהיה:" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1105 +msgid "(requires restart)" +msgstr "(דורש איתחול)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1036 +#: ../src/ui/dialog/inkscape-preferences.cpp:1106 +msgid "Factor by which the event clock is skewed from the actual time (0.9766 on some systems)." +msgstr "המקדם שלפיו שעון האירועים מושהה מהזמן הממשי (0.9766 בכמה מהמערכות)." + +#: ../src/ui/dialog/inkscape-preferences.cpp:1108 +msgid "Pre-render named icons" +msgstr "עבד מראש סמלים בעלי שם" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1110 +msgid "When on, named icons will be rendered before displaying the ui. This is for working around bugs in GTK+ named icon notification" +msgstr "באם פעיל, סמלים בעלי שם יעובדו לפני הצגת מנשק המשתמש. פעולה זו נועדה כדי לעקוף באגים בהתראת הסמלים בעלי השם ב־GTK+" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1112 msgid "Misc" -msgstr "" +msgstr "שונות" -#: ../src/ui/dialog/livepatheffect-editor.cpp:74 +#: ../src/ui/dialog/livepatheffect-editor.cpp:75 msgid "Apply new effect" -msgstr "" +msgstr "החל אפקט חדש" -#: ../src/ui/dialog/livepatheffect-editor.cpp:75 +#: ../src/ui/dialog/livepatheffect-editor.cpp:76 msgid "Current effect" -msgstr "" +msgstr "אפקט נוכחי" -#: ../src/ui/dialog/livepatheffect-editor.cpp:76 +#: ../src/ui/dialog/livepatheffect-editor.cpp:77 msgid "Effect list" -msgstr "" +msgstr "רשימת האפקטים" -#: ../src/ui/dialog/livepatheffect-editor.cpp:239 +#: ../src/ui/dialog/livepatheffect-editor.cpp:265 msgid "Unknown effect is applied" -msgstr "" +msgstr "הוחל אפקט בלתי ידוע" -#: ../src/ui/dialog/livepatheffect-editor.cpp:242 +#: ../src/ui/dialog/livepatheffect-editor.cpp:268 msgid "No effect applied" -msgstr "" +msgstr "לא הוחל אפקט" -#: ../src/ui/dialog/livepatheffect-editor.cpp:248 +#: ../src/ui/dialog/livepatheffect-editor.cpp:272 msgid "Item is not a path or shape" -msgstr "" +msgstr "הפריט אינו נתיב או צורה" -#: ../src/ui/dialog/livepatheffect-editor.cpp:252 +#: ../src/ui/dialog/livepatheffect-editor.cpp:276 msgid "Only one item can be selected" -msgstr "" +msgstr "ניתן לבחור פריט אחד" -#: ../src/ui/dialog/livepatheffect-editor.cpp:256 +#: ../src/ui/dialog/livepatheffect-editor.cpp:280 msgid "Empty selection" -msgstr "" +msgstr "בחירה ריקה" -#: ../src/ui/dialog/livepatheffect-editor.cpp:349 +#: ../src/ui/dialog/livepatheffect-editor.cpp:370 +msgid "Create and apply path effect" +msgstr "צור והחל אפקט נתיב" + +#: ../src/ui/dialog/livepatheffect-editor.cpp:387 msgid "Remove path effect" -msgstr "" +msgstr "הסר אפקט נתיב" -#: ../src/ui/dialog/livepatheffect-editor.cpp:366 +#: ../src/ui/dialog/livepatheffect-editor.cpp:403 msgid "Move path effect up" -msgstr "" +msgstr "הזז את אפקט הנתיב למעלה" -#: ../src/ui/dialog/livepatheffect-editor.cpp:384 +#: ../src/ui/dialog/livepatheffect-editor.cpp:419 msgid "Move path effect down" -msgstr "" +msgstr "הזז את אפקט הנתיב למטה" + +#: ../src/ui/dialog/livepatheffect-editor.cpp:458 +msgid "Activate path effect" +msgstr "הפעל את אפקטי הנתיב" + +#: ../src/ui/dialog/livepatheffect-editor.cpp:458 +msgid "Deactivate path effect" +msgstr "נטרל את אפקטי הנתיב" #: ../src/ui/dialog/memory.cpp:94 msgid "Heap" -msgstr "" +msgstr "מצבור" #: ../src/ui/dialog/memory.cpp:95 msgid "In Use" @@ -11507,117 +11862,112 @@ msgstr "בשימוש" #. More typical usage is to call this memory "free" rather than "slack". #: ../src/ui/dialog/memory.cpp:98 msgid "Slack" -msgstr "" +msgstr "חופשי" #: ../src/ui/dialog/memory.cpp:99 msgid "Total" -msgstr "" +msgstr "סך הכל" -#: ../src/ui/dialog/memory.cpp:139 ../src/ui/dialog/memory.cpp:145 -#: ../src/ui/dialog/memory.cpp:152 ../src/ui/dialog/memory.cpp:184 +#: ../src/ui/dialog/memory.cpp:139 +#: ../src/ui/dialog/memory.cpp:145 +#: ../src/ui/dialog/memory.cpp:152 +#: ../src/ui/dialog/memory.cpp:184 msgid "Unknown" -msgstr "" +msgstr "לא ידוע" #: ../src/ui/dialog/memory.cpp:165 msgid "Combined" -msgstr "" +msgstr "משולב" #: ../src/ui/dialog/memory.cpp:207 msgid "Recalculate" -msgstr "" +msgstr "חשב מחדש" -#: ../src/ui/dialog/messages.cpp:75 +#: ../src/ui/dialog/messages.cpp:73 msgid "Ready." msgstr "מוכן." -#: ../src/ui/dialog/messages.cpp:76 -msgid "" -"Enable log display by setting dialogs.debug 'redirect' attribute to 1 in " -"preferences.xml" -msgstr "" +#: ../src/ui/dialog/messages.cpp:74 +msgid "Enable log display by setting dialogs.debug 'redirect' attribute to 1 in preferences.xml" +msgstr "אפשר תצוגת דוח על ידי הגדרת מאפיין 'redirect' עבור dialogs.debug בתור 1 בקובץ preferences.xml" -#: ../src/ui/dialog/ocaldialogs.cpp:77 +#: ../src/ui/dialog/ocaldialogs.cpp:78 msgid "File" msgstr "קובץ" -#: ../src/ui/dialog/ocaldialogs.cpp:175 +#: ../src/ui/dialog/ocaldialogs.cpp:176 msgid "Username:" msgstr "שם משתמש:" -#: ../src/ui/dialog/ocaldialogs.cpp:176 +#: ../src/ui/dialog/ocaldialogs.cpp:177 msgid "Password:" msgstr "סיסמה:" -#: ../src/ui/dialog/ocaldialogs.cpp:402 +#: ../src/ui/dialog/ocaldialogs.cpp:404 msgid "Error while reading the Open Clip Art RSS feed" -msgstr "" +msgstr "שגיאה בעת קריאת הזנת אוסף התמונות החופשי" -#: ../src/ui/dialog/ocaldialogs.cpp:440 -msgid "" -"Failed to receive the Open Clip Art Library RSS feed. Verify if the server " -"name is correct in Configuration->Import/Export (e.g.: openclipart.org)" -msgstr "" +#: ../src/ui/dialog/ocaldialogs.cpp:443 +msgid "Failed to receive the Open Clip Art Library RSS feed. Verify if the server name is correct in Configuration->Import/Export (e.g.: openclipart.org)" +msgstr "שגיאה באיחזור הזנת ה־RSS של ספריית אוסף התמונות החופשיות. וודא כי שם השרת נכון תחת הגדרות->ייבוא/ייצוא (לדוגמה: openclipart.org)" -#: ../src/ui/dialog/ocaldialogs.cpp:454 +#: ../src/ui/dialog/ocaldialogs.cpp:457 msgid "Server supplied malformed Clip Art feed" -msgstr "" +msgstr "השרת סיפק הזנת אוסף תמונות פגומה" -#: ../src/ui/dialog/ocaldialogs.cpp:545 +#: ../src/ui/dialog/ocaldialogs.cpp:548 msgid "Search for:" -msgstr "" +msgstr "חפש אחר:" -#: ../src/ui/dialog/ocaldialogs.cpp:546 +#: ../src/ui/dialog/ocaldialogs.cpp:549 msgid "No files matched your search" -msgstr "" +msgstr "לא נמצאו קבצים העונים לחיפושך" -#: ../src/ui/dialog/ocaldialogs.cpp:557 +#: ../src/ui/dialog/ocaldialogs.cpp:560 msgid "Search" -msgstr "" +msgstr "חיפוש" -#: ../src/ui/dialog/ocaldialogs.cpp:574 +#: ../src/ui/dialog/ocaldialogs.cpp:577 msgid "Files found" -msgstr "" +msgstr "קבצים נמצאו" -#: ../src/ui/dialog/print.cpp:138 +#: ../src/ui/dialog/print.cpp:141 msgid "Could not open temporary PNG for bitmap printing" -msgstr "" +msgstr "לא ניתן לפתוח PNG זמני עבור הדפסת מפת סיביות" -#: ../src/ui/dialog/print.cpp:173 +#: ../src/ui/dialog/print.cpp:176 msgid "Could not set up Document" -msgstr "" +msgstr "לא ניתן להגדיר מסמך" -#: ../src/ui/dialog/print.cpp:177 +#: ../src/ui/dialog/print.cpp:180 msgid "Failed to set CairoRenderContext" -msgstr "" +msgstr "כשל בהגדת CairoRenderContext" #. set up dialog title, based on document name -#: ../src/ui/dialog/print.cpp:217 -#, fuzzy +#: ../src/ui/dialog/print.cpp:220 msgid "SVG Document" -msgstr "המסמך נשמר." +msgstr "מסמך SVG" -#: ../src/ui/dialog/print.cpp:218 -#, fuzzy +#: ../src/ui/dialog/print.cpp:221 msgid "Print" -msgstr "נקודה" +msgstr "הדפס" #. build custom preferences tab -#: ../src/ui/dialog/print.cpp:245 -#, fuzzy +#: ../src/ui/dialog/print.cpp:248 msgid "Rendering" -msgstr "רנדר" +msgstr "עיבוד תמונה" #: ../src/ui/dialog/scriptdialog.cpp:211 msgid "_Execute Javascript" -msgstr "" +msgstr "הפעל _ג'אווהסקריפט" #: ../src/ui/dialog/scriptdialog.cpp:213 msgid "_Execute Python" -msgstr "" +msgstr "הפעל _פייתון" #: ../src/ui/dialog/scriptdialog.cpp:215 msgid "_Execute Ruby" -msgstr "" +msgstr "הפעל _רובי" #: ../src/ui/dialog/scriptdialog.cpp:224 msgid "Script" @@ -11632,555 +11982,602 @@ msgid "Errors" msgstr "שגיאות" #. Dialog organization -#: ../src/ui/dialog/session-player.cpp:73 -#, fuzzy +#: ../src/ui/dialog/session-player.cpp:72 msgid "Session file" -msgstr "בחר ה_כל" +msgstr "קובץ הפעלה" -#: ../src/ui/dialog/session-player.cpp:74 +#: ../src/ui/dialog/session-player.cpp:73 msgid "Playback controls" -msgstr "" +msgstr "פקדי נגינת רקע" -#: ../src/ui/dialog/session-player.cpp:75 -#, fuzzy +#: ../src/ui/dialog/session-player.cpp:74 msgid "Message information" -msgstr "יעד הדפסה" +msgstr "נתוני הודעה" #. Active session file display #. fixme: Does this mean the active file for the session, or the file for the active session? #. Please indicate which with a TRANSLATORS comment. -#: ../src/ui/dialog/session-player.cpp:85 +#: ../src/ui/dialog/session-player.cpp:84 msgid "Active session file:" -msgstr "" +msgstr "קובץ הפעלה פעיל:" -#: ../src/ui/dialog/session-player.cpp:86 +#: ../src/ui/dialog/session-player.cpp:85 msgid "Delay (milliseconds):" -msgstr "" +msgstr "השהיה (מילישניות):" #. Unload/load buttons -#: ../src/ui/dialog/session-player.cpp:94 -#, fuzzy +#: ../src/ui/dialog/session-player.cpp:93 msgid "Close file" -msgstr "_סגור" +msgstr "סגור קובץ" -#: ../src/ui/dialog/session-player.cpp:95 +#: ../src/ui/dialog/session-player.cpp:94 msgid "Open new file" -msgstr "" +msgstr "פתח קובץ חדש" -#: ../src/ui/dialog/session-player.cpp:96 +#: ../src/ui/dialog/session-player.cpp:95 msgid "Set delay" -msgstr "" +msgstr "הגדר השהיה" -#: ../src/ui/dialog/session-player.cpp:138 -#, fuzzy +#: ../src/ui/dialog/session-player.cpp:137 msgid "Rewind" -msgstr "רנדר" +msgstr "חזור אחורה" -#: ../src/ui/dialog/session-player.cpp:139 +#: ../src/ui/dialog/session-player.cpp:138 msgid "Go back one change" -msgstr "" +msgstr "חזור לשינוי הקודם" -#: ../src/ui/dialog/session-player.cpp:140 -#, fuzzy +#: ../src/ui/dialog/session-player.cpp:139 msgid "Pause" -msgstr "הדבק" +msgstr "השהה" -#: ../src/ui/dialog/session-player.cpp:141 +#: ../src/ui/dialog/session-player.cpp:140 msgid "Go forward one change" -msgstr "" +msgstr "התקדם לשינוי הבא" -#: ../src/ui/dialog/session-player.cpp:142 +#: ../src/ui/dialog/session-player.cpp:141 msgid "Play" -msgstr "" +msgstr "נגן" -#: ../src/ui/dialog/session-player.cpp:177 +#: ../src/ui/dialog/session-player.cpp:176 msgid "Open session file" -msgstr "" +msgstr "פתח קובץ הפעלה" + +#: ../src/ui/dialog/svg-fonts-dialog.cpp:110 +msgid "Set SVG Font attribute" +msgstr "הגדר מאפיין גופן SVG" + +#: ../src/ui/dialog/svg-fonts-dialog.cpp:251 +msgid "Family Name:" +msgstr "שם המשפחה:" + +#: ../src/ui/dialog/svg-fonts-dialog.cpp:254 +msgid "Style:" +msgstr "סגנון:" + +#: ../src/ui/dialog/svg-fonts-dialog.cpp:255 +msgid "Variant:" +msgstr "וריאנט:" + +#: ../src/ui/dialog/svg-fonts-dialog.cpp:256 +msgid "Weight:" +msgstr "עובי:" + +#: ../src/ui/dialog/svg-fonts-dialog.cpp:260 +msgid "Set width:" +msgstr "הגדר רוחב:" + +#: ../src/ui/dialog/svg-fonts-dialog.cpp:273 +msgid "Glyph Name:" +msgstr "שם הגליף:" + +#: ../src/ui/dialog/svg-fonts-dialog.cpp:274 +msgid "Unicode:" +msgstr "יוניקוד:" + +#. Kerning Setup: +#: ../src/ui/dialog/svg-fonts-dialog.cpp:286 +msgid "Kerning Setup:" +msgstr "הגדרת הריווח:" + +#: ../src/ui/dialog/svg-fonts-dialog.cpp:288 +msgid "1st Glyph:" +msgstr "גליף ראשון:" + +#: ../src/ui/dialog/svg-fonts-dialog.cpp:290 +msgid "2nd Glyph:" +msgstr "גליף שני:" + +#: ../src/ui/dialog/svg-fonts-dialog.cpp:301 +msgid "Kerning value:" +msgstr "ערך הריווח:" + +#: ../src/ui/dialog/svg-fonts-dialog.cpp:321 +msgid "_Font" +msgstr "_גופן" + +#: ../src/ui/dialog/svg-fonts-dialog.cpp:329 +msgid "_Global Settings" +msgstr "הגדרות _כלליות" + +#: ../src/ui/dialog/svg-fonts-dialog.cpp:330 +msgid "_Glyphs" +msgstr "_גליפים" + +#: ../src/ui/dialog/svg-fonts-dialog.cpp:331 +msgid "_Kerning" +msgstr "_ריווח" + +#: ../src/ui/dialog/svg-fonts-dialog.cpp:343 +msgid "Preview Text:" +msgstr "תצוגת הטקסט המקדימה:" #. #### begin left panel #. ### begin notebook #. ## begin mode page #. # begin single scan #. brightness -#: ../src/ui/dialog/tracedialog.cpp:396 +#: ../src/ui/dialog/tracedialog.cpp:395 msgid "Brightness cutoff" -msgstr "" +msgstr "חיתוך בהירות" -#: ../src/ui/dialog/tracedialog.cpp:400 +#: ../src/ui/dialog/tracedialog.cpp:399 msgid "Trace by a given brightness level" -msgstr "" +msgstr "עקוב לפי רמת בהירות נתונה" -#: ../src/ui/dialog/tracedialog.cpp:408 +#: ../src/ui/dialog/tracedialog.cpp:407 msgid "Brightness cutoff for black/white" -msgstr "" +msgstr "חיתוך בהירות עבור שחור/לבן" -#: ../src/ui/dialog/tracedialog.cpp:415 +#: ../src/ui/dialog/tracedialog.cpp:414 msgid "Single scan: creates a path" -msgstr "" +msgstr "סריקה בודדה: יוצרת נתיב" #. canny edge detection #. TRANSLATORS: "Canny" is the name of the inventor of this edge detection method -#: ../src/ui/dialog/tracedialog.cpp:420 +#: ../src/ui/dialog/tracedialog.cpp:419 msgid "Edge detection" -msgstr "" +msgstr "זיהוי קצוות" -#: ../src/ui/dialog/tracedialog.cpp:424 +#: ../src/ui/dialog/tracedialog.cpp:423 msgid "Trace with optimal edge detection by J. Canny's algorithm" -msgstr "" +msgstr "עקוב עם איתור קצוות מיטבי לפי האלגוריתם של ג'ון קני" -#: ../src/ui/dialog/tracedialog.cpp:441 +#: ../src/ui/dialog/tracedialog.cpp:440 msgid "Brightness cutoff for adjacent pixels (determines edge thickness)" -msgstr "" +msgstr "חיתוך בהירות לפיקסלים סמוכים (מגדיר את עובי הקצה)" #. quantization #. TRANSLATORS: Color Quantization: the process of reducing the number #. of colors in an image by selecting an optimized set of representative #. colors and then re-applying this reduced set to the original image. -#: ../src/ui/dialog/tracedialog.cpp:453 +#: ../src/ui/dialog/tracedialog.cpp:452 msgid "Color quantization" -msgstr "" +msgstr "הפחתת צבעים" -#: ../src/ui/dialog/tracedialog.cpp:457 +#: ../src/ui/dialog/tracedialog.cpp:456 msgid "Trace along the boundaries of reduced colors" -msgstr "" +msgstr "עקוב לאורך גבולות הצבעים המופחתים" -#: ../src/ui/dialog/tracedialog.cpp:465 +#: ../src/ui/dialog/tracedialog.cpp:464 msgid "The number of reduced colors" -msgstr "" +msgstr "מספר הצבעים המופחתים" -#: ../src/ui/dialog/tracedialog.cpp:467 +#: ../src/ui/dialog/tracedialog.cpp:466 msgid "Colors:" -msgstr "" +msgstr "צבעים:" #. swap black and white -#: ../src/ui/dialog/tracedialog.cpp:473 +#: ../src/ui/dialog/tracedialog.cpp:472 msgid "Invert image" -msgstr "" +msgstr "הפוך תמונה" -#: ../src/ui/dialog/tracedialog.cpp:478 +#: ../src/ui/dialog/tracedialog.cpp:477 msgid "Invert black and white regions" -msgstr "" +msgstr "הפוך את האזורים הלבנים והשחורים" #. # end single scan #. # begin multiple scan -#: ../src/ui/dialog/tracedialog.cpp:487 +#: ../src/ui/dialog/tracedialog.cpp:486 msgid "Brightness steps" -msgstr "" +msgstr "צעדי בהירות" -#: ../src/ui/dialog/tracedialog.cpp:491 +#: ../src/ui/dialog/tracedialog.cpp:490 msgid "Trace the given number of brightness levels" -msgstr "" +msgstr "עקוב אחר המספר הנתון של רמות הבהירות" -#: ../src/ui/dialog/tracedialog.cpp:498 +#: ../src/ui/dialog/tracedialog.cpp:497 msgid "Scans:" -msgstr "" +msgstr "סריקות:" -#: ../src/ui/dialog/tracedialog.cpp:501 +#: ../src/ui/dialog/tracedialog.cpp:500 msgid "The desired number of scans" -msgstr "" +msgstr "מספר הסריקות המבוקש" -#: ../src/ui/dialog/tracedialog.cpp:505 +#: ../src/ui/dialog/tracedialog.cpp:504 msgid "Colors" -msgstr "" +msgstr "צבעים" -#: ../src/ui/dialog/tracedialog.cpp:509 +#: ../src/ui/dialog/tracedialog.cpp:508 msgid "Trace the given number of reduced colors" -msgstr "" +msgstr "עקוב אחר המספר הנתון של צבעים מופחתים" -#: ../src/ui/dialog/tracedialog.cpp:513 +#: ../src/ui/dialog/tracedialog.cpp:512 msgid "Grays" -msgstr "" +msgstr "גווני אפור" -#: ../src/ui/dialog/tracedialog.cpp:517 +#: ../src/ui/dialog/tracedialog.cpp:516 msgid "Same as Colors, but the result is converted to grayscale" -msgstr "" +msgstr "כמו הצבעים, אך התוצאה תומר לגווני אפור" #. TRANSLATORS: "Smooth" is a verb here -#: ../src/ui/dialog/tracedialog.cpp:522 +#: ../src/ui/dialog/tracedialog.cpp:521 msgid "Smooth" -msgstr "" +msgstr "החלקה" -#: ../src/ui/dialog/tracedialog.cpp:526 +#: ../src/ui/dialog/tracedialog.cpp:525 msgid "Apply Gaussian blur to the bitmap before tracing" -msgstr "" +msgstr "החל טשטוש פעמוני למפת הסיביות לפני המעקב" #. TRANSLATORS: "Stack" is a verb here -#: ../src/ui/dialog/tracedialog.cpp:529 +#: ../src/ui/dialog/tracedialog.cpp:528 msgid "Stack scans" -msgstr "" +msgstr "ערום סריקות" -#: ../src/ui/dialog/tracedialog.cpp:532 -msgid "" -"Stack scans on top of one another (no gaps) instead of tiling (usually with " -"gaps)" -msgstr "" +#: ../src/ui/dialog/tracedialog.cpp:531 +msgid "Stack scans on top of one another (no gaps) instead of tiling (usually with gaps)" +msgstr "ערום סריקות אחת על גבי השניה (ללא רווחים) במקום ריצוף (לרב עם רווחים)" -#: ../src/ui/dialog/tracedialog.cpp:535 +#: ../src/ui/dialog/tracedialog.cpp:534 msgid "Remove background" -msgstr "" +msgstr "הסר רקע" -#: ../src/ui/dialog/tracedialog.cpp:540 +#: ../src/ui/dialog/tracedialog.cpp:539 msgid "Remove bottom (background) layer when done" -msgstr "" +msgstr "הסר את השכבה התחתונה (הרקע) עם הסיום" -#: ../src/ui/dialog/tracedialog.cpp:544 +#: ../src/ui/dialog/tracedialog.cpp:543 msgid "Multiple scans: creates a group of paths" -msgstr "" +msgstr "מספר סריקות: יוצר קבוצה של נתיבים" #. ## begin option page #. # potrace parameters -#: ../src/ui/dialog/tracedialog.cpp:559 +#: ../src/ui/dialog/tracedialog.cpp:558 msgid "Suppress speckles" -msgstr "" +msgstr "הדחק נקודות" -#: ../src/ui/dialog/tracedialog.cpp:561 +#: ../src/ui/dialog/tracedialog.cpp:560 msgid "Ignore small spots (speckles) in the bitmap" -msgstr "" +msgstr "התעלם מכתמים קטנים (נקודות) במפת הסיביות" -#: ../src/ui/dialog/tracedialog.cpp:569 +#: ../src/ui/dialog/tracedialog.cpp:568 msgid "Speckles of up to this many pixels will be suppressed" -msgstr "" +msgstr "כתמים עד גודל זה יודחקו" -#: ../src/ui/dialog/tracedialog.cpp:571 +#: ../src/ui/dialog/tracedialog.cpp:570 msgid "Size:" -msgstr "" +msgstr "גודל:" -#: ../src/ui/dialog/tracedialog.cpp:574 +#: ../src/ui/dialog/tracedialog.cpp:573 msgid "Smooth corners" -msgstr "" +msgstr "החלק פינות" -#: ../src/ui/dialog/tracedialog.cpp:576 +#: ../src/ui/dialog/tracedialog.cpp:575 msgid "Smooth out sharp corners of the trace" -msgstr "" +msgstr "החלק קצוות חדים מהמעקב" -#: ../src/ui/dialog/tracedialog.cpp:585 +#: ../src/ui/dialog/tracedialog.cpp:584 msgid "Increase this to smooth corners more" -msgstr "" +msgstr "הגדל ערך זה כדי להחליק את הקצוות יותר" -#: ../src/ui/dialog/tracedialog.cpp:589 +#: ../src/ui/dialog/tracedialog.cpp:588 msgid "Optimize paths" -msgstr "" +msgstr "ייעל נתיבים" -#: ../src/ui/dialog/tracedialog.cpp:592 +#: ../src/ui/dialog/tracedialog.cpp:591 msgid "Try to optimize paths by joining adjacent Bezier curve segments" -msgstr "" +msgstr "נסה לייעל את הנתיבים על ידי צירוף מקטעי עקומות בזייה" + +#: ../src/ui/dialog/tracedialog.cpp:599 +msgid "Increase this to reduce the number of nodes in the trace by more aggressive optimization" +msgstr "הגדל מספר זה כדי להפחית את מספר המחברים במעקב על ידי ייעול תוקפני יותר" #: ../src/ui/dialog/tracedialog.cpp:600 -msgid "" -"Increase this to reduce the number of nodes in the trace by more aggressive " -"optimization" -msgstr "" +msgid "Tolerance:" +msgstr "סובלנות:" #. ## end option page -#: ../src/ui/dialog/tracedialog.cpp:607 ../src/ui/dialog/tracedialog.cpp:613 +#: ../src/ui/dialog/tracedialog.cpp:606 +#: ../src/ui/dialog/tracedialog.cpp:612 msgid "Options" -msgstr "" +msgstr "אפשרויות" #. ### credits -#: ../src/ui/dialog/tracedialog.cpp:621 +#: ../src/ui/dialog/tracedialog.cpp:620 msgid "Thanks to Peter Selinger, http://potrace.sourceforge.net" -msgstr "" +msgstr "תודה לפיטר סלינג'ר, http://potrace.sourceforge.net" -#: ../src/ui/dialog/tracedialog.cpp:623 +#: ../src/ui/dialog/tracedialog.cpp:622 msgid "Credits" -msgstr "" +msgstr "תודות" #. #### begin right panel #. ## SIOX -#: ../src/ui/dialog/tracedialog.cpp:637 +#: ../src/ui/dialog/tracedialog.cpp:636 msgid "SIOX foreground selection" -msgstr "" +msgstr "בחירת קידמה מחולצת פשוטה" -#: ../src/ui/dialog/tracedialog.cpp:640 +#: ../src/ui/dialog/tracedialog.cpp:639 msgid "Cover the area you want to select as the foreground" -msgstr "" +msgstr "כסה את האיזור אותו תרצה לבחור כקידמה" #. ## preview -#: ../src/ui/dialog/tracedialog.cpp:645 +#: ../src/ui/dialog/tracedialog.cpp:644 msgid "Update" -msgstr "" +msgstr "עדכן" -#: ../src/ui/dialog/tracedialog.cpp:651 -msgid "" -"Preview the intermediate bitmap with the current settings, without actual " -"tracing" -msgstr "" +#: ../src/ui/dialog/tracedialog.cpp:650 +msgid "Preview the intermediate bitmap with the current settings, without actual tracing" +msgstr "הצג בתצוגה מקדימה את מפת הסיביות בשלב הביניים עם ההגדרות הנוכחיות, מבלי לעקוב ממש" -#: ../src/ui/dialog/tracedialog.cpp:655 +#: ../src/ui/dialog/tracedialog.cpp:654 msgid "Preview" -msgstr "" +msgstr "תצוגה מקדימה" -#: ../src/ui/dialog/tracedialog.cpp:672 +#: ../src/ui/dialog/tracedialog.cpp:671 msgid "Abort a trace in progress" -msgstr "" +msgstr "בטל מעקב שבתהליך" -#: ../src/ui/dialog/tracedialog.cpp:676 +#: ../src/ui/dialog/tracedialog.cpp:675 msgid "Execute the trace" -msgstr "" +msgstr "הפעל את המעקב" -#: ../src/ui/dialog/transformation.cpp:83 -#: ../src/ui/dialog/transformation.cpp:93 +#: ../src/ui/dialog/transformation.cpp:82 +#: ../src/ui/dialog/transformation.cpp:92 msgid "_Horizontal" -msgstr "" +msgstr "או_פקי" -#: ../src/ui/dialog/transformation.cpp:83 +#: ../src/ui/dialog/transformation.cpp:82 msgid "Horizontal displacement (relative) or position (absolute)" -msgstr "" +msgstr "העברה (יחסית) או מיקום (מוחלט) אופקיים" -#: ../src/ui/dialog/transformation.cpp:85 -#: ../src/ui/dialog/transformation.cpp:95 +#: ../src/ui/dialog/transformation.cpp:84 +#: ../src/ui/dialog/transformation.cpp:94 msgid "_Vertical" -msgstr "" +msgstr "א_נכי" -#: ../src/ui/dialog/transformation.cpp:85 +#: ../src/ui/dialog/transformation.cpp:84 msgid "Vertical displacement (relative) or position (absolute)" -msgstr "" +msgstr "העברה (יחסית) או מיקום (מוחלט) אנכיים" -#: ../src/ui/dialog/transformation.cpp:87 +#: ../src/ui/dialog/transformation.cpp:86 msgid "_Width" -msgstr "" +msgstr "_רוחב" -#: ../src/ui/dialog/transformation.cpp:87 +#: ../src/ui/dialog/transformation.cpp:86 msgid "Horizontal size (absolute or percentage of current)" -msgstr "" +msgstr "גודל אופקי (מוחלט או באחוזים מהנוכחי)" -#: ../src/ui/dialog/transformation.cpp:89 +#: ../src/ui/dialog/transformation.cpp:88 msgid "_Height" -msgstr "" +msgstr "_גובה" -#: ../src/ui/dialog/transformation.cpp:89 +#: ../src/ui/dialog/transformation.cpp:88 msgid "Vertical size (absolute or percentage of current)" -msgstr "" +msgstr "גודל אנכי (מוחלט או אחוזים מהנוכחי)" -#: ../src/ui/dialog/transformation.cpp:91 +#: ../src/ui/dialog/transformation.cpp:90 msgid "A_ngle" -msgstr "" +msgstr "_זווית" -#: ../src/ui/dialog/transformation.cpp:91 +#: ../src/ui/dialog/transformation.cpp:90 msgid "Rotation angle (positive = counterclockwise)" -msgstr "" +msgstr "זווית לסיבוב (חיובי = נגד כיוון השעון)" -#: ../src/ui/dialog/transformation.cpp:93 -msgid "" -"Horizontal skew angle (positive = counterclockwise), or absolute " -"displacement, or percentage displacement" -msgstr "" +#: ../src/ui/dialog/transformation.cpp:92 +msgid "Horizontal skew angle (positive = counterclockwise), or absolute displacement, or percentage displacement" +msgstr "זווית הטייה אופקית (חיובי = נגד כיוון השעון), או מוחלט להעברה או אחוזים להעברה" -#: ../src/ui/dialog/transformation.cpp:95 -msgid "" -"Vertical skew angle (positive = counterclockwise), or absolute displacement, " -"or percentage displacement" -msgstr "" +#: ../src/ui/dialog/transformation.cpp:94 +msgid "Vertical skew angle (positive = counterclockwise), or absolute displacement, or percentage displacement" +msgstr "זווית הטייה אנכית (חיובית = נגד כיוון השעון), או מוחלטת להעברה או אחוזים להעברה" -#: ../src/ui/dialog/transformation.cpp:98 +#: ../src/ui/dialog/transformation.cpp:97 msgid "Transformation matrix element A" -msgstr "" +msgstr "מטריצת שינוי צורה רכיב א" -#: ../src/ui/dialog/transformation.cpp:99 +#: ../src/ui/dialog/transformation.cpp:98 msgid "Transformation matrix element B" -msgstr "" +msgstr "מטריצת שינוי צורה רכיב ב" -#: ../src/ui/dialog/transformation.cpp:100 +#: ../src/ui/dialog/transformation.cpp:99 msgid "Transformation matrix element C" -msgstr "" +msgstr "מטריצת שינוי צורה רכיב ג" -#: ../src/ui/dialog/transformation.cpp:101 +#: ../src/ui/dialog/transformation.cpp:100 msgid "Transformation matrix element D" -msgstr "" +msgstr "מטריצת שינוי צורה רכיב ד" -#: ../src/ui/dialog/transformation.cpp:102 +#: ../src/ui/dialog/transformation.cpp:101 msgid "Transformation matrix element E" -msgstr "" +msgstr "מטריצת שינוי צורה רכיב ה" -#: ../src/ui/dialog/transformation.cpp:103 +#: ../src/ui/dialog/transformation.cpp:102 msgid "Transformation matrix element F" -msgstr "" +msgstr "מטריצת שינוי צורה רכיב ו" -#: ../src/ui/dialog/transformation.cpp:105 +#: ../src/ui/dialog/transformation.cpp:104 msgid "Rela_tive move" -msgstr "" +msgstr "הזזה י_חסית" -#: ../src/ui/dialog/transformation.cpp:105 -msgid "" -"Add the specified relative displacement to the current position; otherwise, " -"edit the current absolute position directly" -msgstr "" +#: ../src/ui/dialog/transformation.cpp:104 +msgid "Add the specified relative displacement to the current position; otherwise, edit the current absolute position directly" +msgstr "הוסף את ההעברה היחסית המצויינת למיקום הנוכחי; או, ערוך את המיקום המוחלט ישירות" -#: ../src/ui/dialog/transformation.cpp:106 +#: ../src/ui/dialog/transformation.cpp:105 msgid "Scale proportionally" -msgstr "" +msgstr "שנה את הגודל באופן יחסי" -#: ../src/ui/dialog/transformation.cpp:106 +#: ../src/ui/dialog/transformation.cpp:105 msgid "Preserve the width/height ratio of the scaled objects" -msgstr "" +msgstr "שמור את יחסי הגובה/רוחב של הפריטים שגודלם שונה" -#: ../src/ui/dialog/transformation.cpp:107 +#: ../src/ui/dialog/transformation.cpp:106 msgid "Apply to each _object separately" -msgstr "" +msgstr "החל על כל _פריט בנפרד" -#: ../src/ui/dialog/transformation.cpp:107 -msgid "" -"Apply the scale/rotate/skew to each selected object separately; otherwise, " -"transform the selection as a whole" -msgstr "" +#: ../src/ui/dialog/transformation.cpp:106 +msgid "Apply the scale/rotate/skew to each selected object separately; otherwise, transform the selection as a whole" +msgstr "החל את שינוי הגודל/סיבוב/הטייה עבור הפריט הנבחר בנפרד; או, שנה את צורת הבחירה כמכלול" -#: ../src/ui/dialog/transformation.cpp:108 +#: ../src/ui/dialog/transformation.cpp:107 msgid "Edit c_urrent matrix" -msgstr "" +msgstr "ערוך את המ_טריצה הנוכחית" -#: ../src/ui/dialog/transformation.cpp:108 -msgid "" -"Edit the current transform= matrix; otherwise, post-multiply transform= by " -"this matrix" -msgstr "" +#: ../src/ui/dialog/transformation.cpp:107 +msgid "Edit the current transform= matrix; otherwise, post-multiply transform= by this matrix" +msgstr "ערוך את מטריצת שינוי הצורה; או, אסוף את שינויי הצורה במטריצה זאת" -#: ../src/ui/dialog/transformation.cpp:118 +#: ../src/ui/dialog/transformation.cpp:117 msgid "_Move" -msgstr "" +msgstr "ה_זז" -#: ../src/ui/dialog/transformation.cpp:121 +#: ../src/ui/dialog/transformation.cpp:120 msgid "_Scale" -msgstr "" +msgstr "_קנה מידה" -#: ../src/ui/dialog/transformation.cpp:124 +#: ../src/ui/dialog/transformation.cpp:123 msgid "_Rotate" -msgstr "" +msgstr "_סובב" -#: ../src/ui/dialog/transformation.cpp:127 +#: ../src/ui/dialog/transformation.cpp:126 msgid "Ske_w" -msgstr "" +msgstr "ה_טה" -#: ../src/ui/dialog/transformation.cpp:130 +#: ../src/ui/dialog/transformation.cpp:129 msgid "Matri_x" -msgstr "" +msgstr "מטרי_צה" #: ../src/ui/dialog/transformation.cpp:153 msgid "Reset the values on the current tab to defaults" -msgstr "" +msgstr "אפס את הערכים בלשונית הנוכחית לברירת המחדל" #: ../src/ui/dialog/transformation.cpp:160 msgid "Apply transformation to selection" -msgstr "" +msgstr "החל את שינוי הצורה לבחירה" -#: ../src/ui/dialog/transformation.cpp:842 +#: ../src/ui/dialog/transformation.cpp:846 msgid "Edit transformation matrix" -msgstr "" +msgstr "ערוך את מטריצת שינוי הצורה" -#: ../src/ui/dialog/whiteboard-connect.cpp:44 +#: ../src/ui/dialog/whiteboard-connect.cpp:47 msgid "_Use SSL" -msgstr "" +msgstr "ה_שתמש ב־SSL" -#: ../src/ui/dialog/whiteboard-connect.cpp:44 +#: ../src/ui/dialog/whiteboard-connect.cpp:47 msgid "_Register" -msgstr "" +msgstr "ה_רשם" #. Construct dialog interface -#: ../src/ui/dialog/whiteboard-connect.cpp:75 -#, fuzzy +#: ../src/ui/dialog/whiteboard-connect.cpp:78 msgid "_Server:" -msgstr "_שמור" +msgstr "_שרת:" -#: ../src/ui/dialog/whiteboard-connect.cpp:76 -#, fuzzy +#: ../src/ui/dialog/whiteboard-connect.cpp:79 msgid "_Username:" -msgstr "שם משתמש:" +msgstr "ש_ם משתמש:" -#: ../src/ui/dialog/whiteboard-connect.cpp:77 -#, fuzzy +#: ../src/ui/dialog/whiteboard-connect.cpp:80 msgid "_Password:" -msgstr "סיסמה:" +msgstr "_סיסמה:" -#: ../src/ui/dialog/whiteboard-connect.cpp:78 +#: ../src/ui/dialog/whiteboard-connect.cpp:81 msgid "P_ort:" -msgstr "" +msgstr "_פתחה:" #. Buttons -#: ../src/ui/dialog/whiteboard-connect.cpp:113 -#, fuzzy +#: ../src/ui/dialog/whiteboard-connect.cpp:118 msgid "Connect" -msgstr "מחבר" +msgstr "התחבר" -#: ../src/ui/dialog/whiteboard-connect.cpp:144 +#: ../src/ui/dialog/whiteboard-connect.cpp:149 msgid "Establishing connection to Jabber server %1" -msgstr "" +msgstr "מקיים חיבור אל שרת הג'אבר %1" -#: ../src/ui/dialog/whiteboard-connect.cpp:171 -#: ../src/ui/dialog/whiteboard-connect.cpp:216 -#: ../src/ui/dialog/whiteboard-connect.cpp:254 +#: ../src/ui/dialog/whiteboard-connect.cpp:176 +#: ../src/ui/dialog/whiteboard-connect.cpp:222 +#: ../src/ui/dialog/whiteboard-connect.cpp:260 msgid "Failed to establish connection to Jabber server %1" -msgstr "" +msgstr "כשל בקיום החיבור לשרת הג'אבר %1" -#: ../src/ui/dialog/whiteboard-connect.cpp:209 +#: ../src/ui/dialog/whiteboard-connect.cpp:215 msgid "Establishing connection to Jabber server %1 as user %2" -msgstr "" +msgstr "מקיים חיבור לשרת הג'אבר %1 בתור המשתמש %2" -#: ../src/ui/dialog/whiteboard-connect.cpp:221 +#: ../src/ui/dialog/whiteboard-connect.cpp:227 msgid "Authentication failed on Jabber server %1 as %2" -msgstr "" - -#: ../src/ui/dialog/whiteboard-connect.cpp:226 -#: ../src/ui/dialog/whiteboard-connect.cpp:264 -msgid "SSL initialization failed when connecting to Jabber server %1" -msgstr "" +msgstr "האימות נכשל בשרת הג'אבר %1 בתור %2" #: ../src/ui/dialog/whiteboard-connect.cpp:232 #: ../src/ui/dialog/whiteboard-connect.cpp:270 +msgid "SSL initialization failed when connecting to Jabber server %1" +msgstr "הפעלת SSL נכשלה בעת ההתחברות לשרת הג'אבר %1" + +#: ../src/ui/dialog/whiteboard-connect.cpp:238 +#: ../src/ui/dialog/whiteboard-connect.cpp:276 msgid "Connected to Jabber server %1 as %2" -msgstr "" +msgstr "מחובר לשרת הג'אבר %1 תחת השם %2" -#: ../src/ui/dialog/whiteboard-connect.cpp:259 +#: ../src/ui/dialog/whiteboard-connect.cpp:265 msgid "Registration failed on Jabber server %1 as %2" -msgstr "" +msgstr "נכשלה ההרשמה בשרת הג'אבר %1 עבור השם %2" #. Construct labels -#: ../src/ui/dialog/whiteboard-sharewithchat.cpp:75 +#: ../src/ui/dialog/whiteboard-sharewithchat.cpp:76 msgid "Chatroom _name:" -msgstr "" +msgstr "שם _חדר השיחה:" -#: ../src/ui/dialog/whiteboard-sharewithchat.cpp:76 +#: ../src/ui/dialog/whiteboard-sharewithchat.cpp:77 msgid "Chatroom _server:" -msgstr "" +msgstr "_שרת חדר השיחה:" -#: ../src/ui/dialog/whiteboard-sharewithchat.cpp:77 +#: ../src/ui/dialog/whiteboard-sharewithchat.cpp:78 msgid "Chatroom _password:" -msgstr "" +msgstr "_סיסמת חדר השיחה:" -#: ../src/ui/dialog/whiteboard-sharewithchat.cpp:78 +#: ../src/ui/dialog/whiteboard-sharewithchat.cpp:79 msgid "Chatroom _handle:" -msgstr "" +msgstr "ה_כינוי בחדר השיחה:" #. Button setup and callback registration -#: ../src/ui/dialog/whiteboard-sharewithchat.cpp:102 -#, fuzzy +#: ../src/ui/dialog/whiteboard-sharewithchat.cpp:103 msgid "Connect to chatroom" -msgstr "מחבר" +msgstr "התחבר לחדר שיחה" -#: ../src/ui/dialog/whiteboard-sharewithchat.cpp:137 +#: ../src/ui/dialog/whiteboard-sharewithchat.cpp:138 msgid "Synchronizing with chatroom %1@%2 using the handle %3" -msgstr "" +msgstr "מסנכרן עם חדר השיחה %1@%2 באמצעות הכינוי %3" #. Construct dialog interface #: ../src/ui/dialog/whiteboard-sharewithuser.cpp:76 msgid "_User's Jabber ID:" -msgstr "" +msgstr "מזהה ה_ג'אבר של המשתמש:" #. Buttons #: ../src/ui/dialog/whiteboard-sharewithuser.cpp:80 msgid "_Invite user" -msgstr "" +msgstr "ה_זמן משתמש" #: ../src/ui/dialog/whiteboard-sharewithuser.cpp:81 -#, fuzzy msgid "_Cancel" -msgstr "ערוץ" +msgstr "_ביטול" #: ../src/ui/dialog/whiteboard-sharewithuser.cpp:92 msgid "Buddy List" -msgstr "" +msgstr "רשימת חברים" #: ../src/ui/dialog/whiteboard-sharewithuser.cpp:181 msgid "Sending whiteboard invitation to %1" -msgstr "" +msgstr "שולח הזמנת לוח עבודה אל %1" #. FIXME: strings are replaced by placeholders, NOT to be translated until the code is enabled #. See http://sourceforge.net/mailarchive/message.php?msg_id=11746016 for details @@ -12198,515 +12595,617 @@ msgstr "" #. Node Tool controls #. Calligraphy Tool controls #. Session playback controls -#: ../src/ui/stock-items.cpp:31 ../src/ui/stock-items.cpp:32 -#: ../src/ui/stock-items.cpp:33 ../src/ui/stock-items.cpp:34 -#: ../src/ui/stock-items.cpp:35 ../src/ui/stock-items.cpp:36 -#: ../src/ui/stock-items.cpp:37 ../src/ui/stock-items.cpp:38 -#: ../src/ui/stock-items.cpp:39 ../src/ui/stock-items.cpp:40 -#: ../src/ui/stock-items.cpp:41 ../src/ui/stock-items.cpp:42 -#: ../src/ui/stock-items.cpp:45 ../src/ui/stock-items.cpp:46 -#: ../src/ui/stock-items.cpp:47 ../src/ui/stock-items.cpp:48 -#: ../src/ui/stock-items.cpp:49 ../src/ui/stock-items.cpp:50 -#: ../src/ui/stock-items.cpp:51 ../src/ui/stock-items.cpp:52 -#: ../src/ui/stock-items.cpp:53 ../src/ui/stock-items.cpp:54 -#: ../src/ui/stock-items.cpp:55 ../src/ui/stock-items.cpp:56 -#: ../src/ui/stock-items.cpp:57 ../src/ui/stock-items.cpp:58 -#: ../src/ui/stock-items.cpp:61 ../src/ui/stock-items.cpp:62 -#: ../src/ui/stock-items.cpp:63 ../src/ui/stock-items.cpp:64 -#: ../src/ui/stock-items.cpp:65 ../src/ui/stock-items.cpp:66 -#: ../src/ui/stock-items.cpp:67 ../src/ui/stock-items.cpp:68 -#: ../src/ui/stock-items.cpp:69 ../src/ui/stock-items.cpp:70 -#: ../src/ui/stock-items.cpp:71 ../src/ui/stock-items.cpp:72 -#: ../src/ui/stock-items.cpp:73 ../src/ui/stock-items.cpp:74 -#: ../src/ui/stock-items.cpp:75 ../src/ui/stock-items.cpp:76 -#: ../src/ui/stock-items.cpp:77 ../src/ui/stock-items.cpp:78 -#: ../src/ui/stock-items.cpp:79 ../src/ui/stock-items.cpp:80 -#: ../src/ui/stock-items.cpp:81 ../src/ui/stock-items.cpp:82 -#: ../src/ui/stock-items.cpp:83 ../src/ui/stock-items.cpp:84 -#: ../src/ui/stock-items.cpp:85 ../src/ui/stock-items.cpp:86 -#: ../src/ui/stock-items.cpp:87 ../src/ui/stock-items.cpp:88 -#: ../src/ui/stock-items.cpp:91 ../src/ui/stock-items.cpp:92 -#: ../src/ui/stock-items.cpp:93 ../src/ui/stock-items.cpp:94 -#: ../src/ui/stock-items.cpp:95 ../src/ui/stock-items.cpp:96 -#: ../src/ui/stock-items.cpp:97 ../src/ui/stock-items.cpp:98 -#: ../src/ui/stock-items.cpp:99 ../src/ui/stock-items.cpp:100 -#: ../src/ui/stock-items.cpp:101 ../src/ui/stock-items.cpp:102 -#: ../src/ui/stock-items.cpp:103 ../src/ui/stock-items.cpp:104 -#: ../src/ui/stock-items.cpp:107 ../src/ui/stock-items.cpp:108 -#: ../src/ui/stock-items.cpp:109 ../src/ui/stock-items.cpp:110 -#: ../src/ui/stock-items.cpp:111 ../src/ui/stock-items.cpp:112 -#: ../src/ui/stock-items.cpp:113 ../src/ui/stock-items.cpp:114 -#: ../src/ui/stock-items.cpp:115 ../src/ui/stock-items.cpp:116 -#: ../src/ui/stock-items.cpp:117 ../src/ui/stock-items.cpp:118 -#: ../src/ui/stock-items.cpp:119 ../src/ui/stock-items.cpp:120 -#: ../src/ui/stock-items.cpp:121 ../src/ui/stock-items.cpp:122 -#: ../src/ui/stock-items.cpp:123 ../src/ui/stock-items.cpp:124 -#: ../src/ui/stock-items.cpp:125 ../src/ui/stock-items.cpp:126 -#: ../src/ui/stock-items.cpp:129 ../src/ui/stock-items.cpp:130 -#: ../src/ui/stock-items.cpp:131 ../src/ui/stock-items.cpp:132 -#: ../src/ui/stock-items.cpp:133 ../src/ui/stock-items.cpp:134 -#: ../src/ui/stock-items.cpp:135 ../src/ui/stock-items.cpp:136 -#: ../src/ui/stock-items.cpp:137 ../src/ui/stock-items.cpp:138 -#: ../src/ui/stock-items.cpp:139 ../src/ui/stock-items.cpp:140 -#: ../src/ui/stock-items.cpp:141 ../src/ui/stock-items.cpp:142 -#: ../src/ui/stock-items.cpp:143 ../src/ui/stock-items.cpp:144 -#: ../src/ui/stock-items.cpp:145 ../src/ui/stock-items.cpp:149 -#: ../src/ui/stock-items.cpp:150 ../src/ui/stock-items.cpp:151 -#: ../src/ui/stock-items.cpp:152 ../src/ui/stock-items.cpp:155 -#: ../src/ui/stock-items.cpp:156 ../src/ui/stock-items.cpp:157 -#: ../src/ui/stock-items.cpp:160 ../src/ui/stock-items.cpp:161 -#: ../src/ui/stock-items.cpp:162 ../src/ui/stock-items.cpp:163 -#: ../src/ui/stock-items.cpp:164 ../src/ui/stock-items.cpp:165 -#: ../src/ui/stock-items.cpp:166 ../src/ui/stock-items.cpp:167 -#: ../src/ui/stock-items.cpp:168 ../src/ui/stock-items.cpp:169 -#: ../src/ui/stock-items.cpp:170 ../src/ui/stock-items.cpp:171 -#: ../src/ui/stock-items.cpp:174 ../src/ui/stock-items.cpp:175 -#: ../src/ui/stock-items.cpp:176 ../src/ui/stock-items.cpp:177 -#: ../src/ui/stock-items.cpp:180 ../src/ui/stock-items.cpp:181 -#: ../src/ui/stock-items.cpp:182 ../src/ui/stock-items.cpp:183 -#: ../src/ui/stock-items.cpp:184 ../src/ui/stock-items.cpp:185 -#: ../src/ui/stock-items.cpp:186 ../src/ui/stock-items.cpp:187 -#: ../src/ui/stock-items.cpp:188 ../src/ui/stock-items.cpp:189 -#: ../src/ui/stock-items.cpp:190 ../src/ui/stock-items.cpp:193 -#: ../src/ui/stock-items.cpp:194 ../src/ui/stock-items.cpp:197 -#: ../src/ui/stock-items.cpp:198 ../src/ui/stock-items.cpp:199 -#: ../src/ui/stock-items.cpp:200 ../src/ui/stock-items.cpp:201 -#: ../src/ui/view/edit-widget.cpp:343 ../src/ui/view/edit-widget.cpp:348 -#: ../src/ui/view/edit-widget.cpp:356 ../src/ui/view/edit-widget.cpp:361 -#: ../src/ui/view/edit-widget.cpp:366 ../src/ui/view/edit-widget.cpp:371 -#: ../src/ui/view/edit-widget.cpp:376 ../src/ui/view/edit-widget.cpp:381 -#: ../src/ui/view/edit-widget.cpp:394 ../src/ui/view/edit-widget.cpp:399 -#: ../src/ui/view/edit-widget.cpp:413 ../src/ui/view/edit-widget.cpp:417 -#: ../src/ui/view/edit-widget.cpp:421 ../src/ui/view/edit-widget.cpp:425 -#: ../src/ui/view/edit-widget.cpp:429 ../src/ui/view/edit-widget.cpp:433 -#: ../src/ui/view/edit-widget.cpp:447 ../src/ui/view/edit-widget.cpp:451 -#: ../src/ui/view/edit-widget.cpp:455 ../src/ui/view/edit-widget.cpp:486 -#: ../src/ui/view/edit-widget.cpp:495 ../src/ui/view/edit-widget.cpp:499 -#: ../src/ui/view/edit-widget.cpp:503 ../src/ui/view/edit-widget.cpp:507 -#: ../src/ui/view/edit-widget.cpp:511 ../src/ui/view/edit-widget.cpp:515 -#: ../src/ui/view/edit-widget.cpp:519 ../src/ui/view/edit-widget.cpp:523 -#: ../src/ui/view/edit-widget.cpp:527 ../src/ui/view/edit-widget.cpp:531 -#: ../src/ui/view/edit-widget.cpp:535 ../src/ui/view/edit-widget.cpp:632 -#: ../src/ui/view/edit-widget.cpp:644 ../src/ui/view/edit-widget.cpp:648 -#: ../src/ui/view/edit-widget.cpp:652 ../src/ui/view/edit-widget.cpp:656 -#: ../src/ui/view/edit-widget.cpp:660 ../src/ui/view/edit-widget.cpp:664 -#: ../src/ui/view/edit-widget.cpp:668 ../src/ui/view/edit-widget.cpp:672 -#: ../src/ui/view/edit-widget.cpp:676 ../src/ui/view/edit-widget.cpp:680 -#: ../src/ui/view/edit-widget.cpp:684 ../src/ui/view/edit-widget.cpp:688 -#: ../src/ui/view/edit-widget.cpp:692 ../src/ui/view/edit-widget.cpp:696 -#: ../src/ui/view/edit-widget.cpp:700 ../src/ui/view/edit-widget.cpp:704 -#: ../src/ui/view/edit-widget.cpp:709 ../src/ui/view/edit-widget.cpp:715 -#: ../src/ui/view/edit-widget.cpp:719 ../src/ui/view/edit-widget.cpp:769 -#: ../src/ui/view/edit-widget.cpp:774 ../src/ui/view/edit-widget.cpp:810 -#: ../src/ui/view/edit-widget.cpp:815 ../src/ui/view/edit-widget.cpp:820 -#: ../src/ui/view/edit-widget.cpp:824 ../src/ui/view/edit-widget.cpp:828 -#: ../src/ui/view/edit-widget.cpp:832 ../src/ui/view/edit-widget.cpp:836 -#: ../src/ui/view/edit-widget.cpp:840 ../src/ui/view/edit-widget.cpp:844 -#: ../src/ui/view/edit-widget.cpp:848 ../src/ui/view/edit-widget.cpp:852 -#: ../src/ui/view/edit-widget.cpp:856 ../src/ui/view/edit-widget.cpp:861 -#: ../src/ui/view/edit-widget.cpp:865 ../src/ui/view/edit-widget.cpp:869 -#: ../src/ui/view/edit-widget.cpp:873 ../src/ui/view/edit-widget.cpp:878 -#: ../src/ui/view/edit-widget.cpp:882 ../src/ui/view/edit-widget.cpp:886 -#: ../src/ui/view/edit-widget.cpp:890 ../src/ui/view/edit-widget.cpp:894 -#: ../src/ui/view/edit-widget.cpp:898 ../src/ui/view/edit-widget.cpp:902 -#: ../src/ui/view/edit-widget.cpp:906 ../src/ui/view/edit-widget.cpp:910 -#: ../src/ui/view/edit-widget.cpp:914 ../src/ui/view/edit-widget.cpp:918 +#: ../src/ui/stock-items.cpp:31 +#: ../src/ui/stock-items.cpp:32 +#: ../src/ui/stock-items.cpp:33 +#: ../src/ui/stock-items.cpp:34 +#: ../src/ui/stock-items.cpp:35 +#: ../src/ui/stock-items.cpp:36 +#: ../src/ui/stock-items.cpp:37 +#: ../src/ui/stock-items.cpp:38 +#: ../src/ui/stock-items.cpp:39 +#: ../src/ui/stock-items.cpp:40 +#: ../src/ui/stock-items.cpp:41 +#: ../src/ui/stock-items.cpp:42 +#: ../src/ui/stock-items.cpp:45 +#: ../src/ui/stock-items.cpp:46 +#: ../src/ui/stock-items.cpp:47 +#: ../src/ui/stock-items.cpp:48 +#: ../src/ui/stock-items.cpp:49 +#: ../src/ui/stock-items.cpp:50 +#: ../src/ui/stock-items.cpp:51 +#: ../src/ui/stock-items.cpp:52 +#: ../src/ui/stock-items.cpp:53 +#: ../src/ui/stock-items.cpp:54 +#: ../src/ui/stock-items.cpp:55 +#: ../src/ui/stock-items.cpp:56 +#: ../src/ui/stock-items.cpp:57 +#: ../src/ui/stock-items.cpp:58 +#: ../src/ui/stock-items.cpp:61 +#: ../src/ui/stock-items.cpp:62 +#: ../src/ui/stock-items.cpp:63 +#: ../src/ui/stock-items.cpp:64 +#: ../src/ui/stock-items.cpp:65 +#: ../src/ui/stock-items.cpp:66 +#: ../src/ui/stock-items.cpp:67 +#: ../src/ui/stock-items.cpp:68 +#: ../src/ui/stock-items.cpp:69 +#: ../src/ui/stock-items.cpp:70 +#: ../src/ui/stock-items.cpp:71 +#: ../src/ui/stock-items.cpp:72 +#: ../src/ui/stock-items.cpp:73 +#: ../src/ui/stock-items.cpp:74 +#: ../src/ui/stock-items.cpp:75 +#: ../src/ui/stock-items.cpp:76 +#: ../src/ui/stock-items.cpp:77 +#: ../src/ui/stock-items.cpp:78 +#: ../src/ui/stock-items.cpp:79 +#: ../src/ui/stock-items.cpp:80 +#: ../src/ui/stock-items.cpp:81 +#: ../src/ui/stock-items.cpp:82 +#: ../src/ui/stock-items.cpp:83 +#: ../src/ui/stock-items.cpp:84 +#: ../src/ui/stock-items.cpp:85 +#: ../src/ui/stock-items.cpp:86 +#: ../src/ui/stock-items.cpp:87 +#: ../src/ui/stock-items.cpp:88 +#: ../src/ui/stock-items.cpp:91 +#: ../src/ui/stock-items.cpp:92 +#: ../src/ui/stock-items.cpp:93 +#: ../src/ui/stock-items.cpp:94 +#: ../src/ui/stock-items.cpp:95 +#: ../src/ui/stock-items.cpp:96 +#: ../src/ui/stock-items.cpp:97 +#: ../src/ui/stock-items.cpp:98 +#: ../src/ui/stock-items.cpp:99 +#: ../src/ui/stock-items.cpp:100 +#: ../src/ui/stock-items.cpp:101 +#: ../src/ui/stock-items.cpp:102 +#: ../src/ui/stock-items.cpp:103 +#: ../src/ui/stock-items.cpp:104 +#: ../src/ui/stock-items.cpp:107 +#: ../src/ui/stock-items.cpp:108 +#: ../src/ui/stock-items.cpp:109 +#: ../src/ui/stock-items.cpp:110 +#: ../src/ui/stock-items.cpp:111 +#: ../src/ui/stock-items.cpp:112 +#: ../src/ui/stock-items.cpp:113 +#: ../src/ui/stock-items.cpp:114 +#: ../src/ui/stock-items.cpp:115 +#: ../src/ui/stock-items.cpp:116 +#: ../src/ui/stock-items.cpp:117 +#: ../src/ui/stock-items.cpp:118 +#: ../src/ui/stock-items.cpp:119 +#: ../src/ui/stock-items.cpp:120 +#: ../src/ui/stock-items.cpp:121 +#: ../src/ui/stock-items.cpp:122 +#: ../src/ui/stock-items.cpp:123 +#: ../src/ui/stock-items.cpp:124 +#: ../src/ui/stock-items.cpp:125 +#: ../src/ui/stock-items.cpp:126 +#: ../src/ui/stock-items.cpp:129 +#: ../src/ui/stock-items.cpp:130 +#: ../src/ui/stock-items.cpp:131 +#: ../src/ui/stock-items.cpp:132 +#: ../src/ui/stock-items.cpp:133 +#: ../src/ui/stock-items.cpp:134 +#: ../src/ui/stock-items.cpp:135 +#: ../src/ui/stock-items.cpp:136 +#: ../src/ui/stock-items.cpp:137 +#: ../src/ui/stock-items.cpp:138 +#: ../src/ui/stock-items.cpp:139 +#: ../src/ui/stock-items.cpp:140 +#: ../src/ui/stock-items.cpp:141 +#: ../src/ui/stock-items.cpp:142 +#: ../src/ui/stock-items.cpp:143 +#: ../src/ui/stock-items.cpp:144 +#: ../src/ui/stock-items.cpp:145 +#: ../src/ui/stock-items.cpp:149 +#: ../src/ui/stock-items.cpp:150 +#: ../src/ui/stock-items.cpp:151 +#: ../src/ui/stock-items.cpp:152 +#: ../src/ui/stock-items.cpp:155 +#: ../src/ui/stock-items.cpp:156 +#: ../src/ui/stock-items.cpp:157 +#: ../src/ui/stock-items.cpp:160 +#: ../src/ui/stock-items.cpp:161 +#: ../src/ui/stock-items.cpp:162 +#: ../src/ui/stock-items.cpp:163 +#: ../src/ui/stock-items.cpp:164 +#: ../src/ui/stock-items.cpp:165 +#: ../src/ui/stock-items.cpp:166 +#: ../src/ui/stock-items.cpp:167 +#: ../src/ui/stock-items.cpp:168 +#: ../src/ui/stock-items.cpp:169 +#: ../src/ui/stock-items.cpp:170 +#: ../src/ui/stock-items.cpp:171 +#: ../src/ui/stock-items.cpp:174 +#: ../src/ui/stock-items.cpp:175 +#: ../src/ui/stock-items.cpp:176 +#: ../src/ui/stock-items.cpp:177 +#: ../src/ui/stock-items.cpp:180 +#: ../src/ui/stock-items.cpp:181 +#: ../src/ui/stock-items.cpp:182 +#: ../src/ui/stock-items.cpp:183 +#: ../src/ui/stock-items.cpp:184 +#: ../src/ui/stock-items.cpp:185 +#: ../src/ui/stock-items.cpp:186 +#: ../src/ui/stock-items.cpp:187 +#: ../src/ui/stock-items.cpp:188 +#: ../src/ui/stock-items.cpp:189 +#: ../src/ui/stock-items.cpp:190 +#: ../src/ui/stock-items.cpp:193 +#: ../src/ui/stock-items.cpp:194 +#: ../src/ui/stock-items.cpp:197 +#: ../src/ui/stock-items.cpp:198 +#: ../src/ui/stock-items.cpp:199 +#: ../src/ui/stock-items.cpp:200 +#: ../src/ui/stock-items.cpp:201 +#: ../src/ui/view/edit-widget.cpp:343 +#: ../src/ui/view/edit-widget.cpp:348 +#: ../src/ui/view/edit-widget.cpp:356 +#: ../src/ui/view/edit-widget.cpp:361 +#: ../src/ui/view/edit-widget.cpp:366 +#: ../src/ui/view/edit-widget.cpp:371 +#: ../src/ui/view/edit-widget.cpp:376 +#: ../src/ui/view/edit-widget.cpp:381 +#: ../src/ui/view/edit-widget.cpp:394 +#: ../src/ui/view/edit-widget.cpp:399 +#: ../src/ui/view/edit-widget.cpp:413 +#: ../src/ui/view/edit-widget.cpp:417 +#: ../src/ui/view/edit-widget.cpp:421 +#: ../src/ui/view/edit-widget.cpp:425 +#: ../src/ui/view/edit-widget.cpp:429 +#: ../src/ui/view/edit-widget.cpp:433 +#: ../src/ui/view/edit-widget.cpp:447 +#: ../src/ui/view/edit-widget.cpp:451 +#: ../src/ui/view/edit-widget.cpp:455 +#: ../src/ui/view/edit-widget.cpp:486 +#: ../src/ui/view/edit-widget.cpp:495 +#: ../src/ui/view/edit-widget.cpp:499 +#: ../src/ui/view/edit-widget.cpp:503 +#: ../src/ui/view/edit-widget.cpp:507 +#: ../src/ui/view/edit-widget.cpp:511 +#: ../src/ui/view/edit-widget.cpp:515 +#: ../src/ui/view/edit-widget.cpp:519 +#: ../src/ui/view/edit-widget.cpp:523 +#: ../src/ui/view/edit-widget.cpp:527 +#: ../src/ui/view/edit-widget.cpp:531 +#: ../src/ui/view/edit-widget.cpp:535 +#: ../src/ui/view/edit-widget.cpp:632 +#: ../src/ui/view/edit-widget.cpp:644 +#: ../src/ui/view/edit-widget.cpp:648 +#: ../src/ui/view/edit-widget.cpp:652 +#: ../src/ui/view/edit-widget.cpp:656 +#: ../src/ui/view/edit-widget.cpp:660 +#: ../src/ui/view/edit-widget.cpp:664 +#: ../src/ui/view/edit-widget.cpp:668 +#: ../src/ui/view/edit-widget.cpp:672 +#: ../src/ui/view/edit-widget.cpp:676 +#: ../src/ui/view/edit-widget.cpp:680 +#: ../src/ui/view/edit-widget.cpp:684 +#: ../src/ui/view/edit-widget.cpp:688 +#: ../src/ui/view/edit-widget.cpp:692 +#: ../src/ui/view/edit-widget.cpp:696 +#: ../src/ui/view/edit-widget.cpp:700 +#: ../src/ui/view/edit-widget.cpp:704 +#: ../src/ui/view/edit-widget.cpp:709 +#: ../src/ui/view/edit-widget.cpp:715 +#: ../src/ui/view/edit-widget.cpp:719 +#: ../src/ui/view/edit-widget.cpp:769 +#: ../src/ui/view/edit-widget.cpp:774 +#: ../src/ui/view/edit-widget.cpp:810 +#: ../src/ui/view/edit-widget.cpp:815 +#: ../src/ui/view/edit-widget.cpp:820 +#: ../src/ui/view/edit-widget.cpp:824 +#: ../src/ui/view/edit-widget.cpp:828 +#: ../src/ui/view/edit-widget.cpp:832 +#: ../src/ui/view/edit-widget.cpp:836 +#: ../src/ui/view/edit-widget.cpp:840 +#: ../src/ui/view/edit-widget.cpp:844 +#: ../src/ui/view/edit-widget.cpp:848 +#: ../src/ui/view/edit-widget.cpp:852 +#: ../src/ui/view/edit-widget.cpp:856 +#: ../src/ui/view/edit-widget.cpp:861 +#: ../src/ui/view/edit-widget.cpp:865 +#: ../src/ui/view/edit-widget.cpp:869 +#: ../src/ui/view/edit-widget.cpp:873 +#: ../src/ui/view/edit-widget.cpp:878 +#: ../src/ui/view/edit-widget.cpp:882 +#: ../src/ui/view/edit-widget.cpp:886 +#: ../src/ui/view/edit-widget.cpp:890 +#: ../src/ui/view/edit-widget.cpp:894 +#: ../src/ui/view/edit-widget.cpp:898 +#: ../src/ui/view/edit-widget.cpp:902 +#: ../src/ui/view/edit-widget.cpp:906 +#: ../src/ui/view/edit-widget.cpp:910 +#: ../src/ui/view/edit-widget.cpp:914 +#: ../src/ui/view/edit-widget.cpp:918 #: ../src/ui/view/edit-widget.cpp:1003 msgid "PLACEHOLDER, do not translate" -msgstr "" +msgstr " " -#: ../src/ui/view/edit-widget.cpp:1062 ../src/widgets/desktop-widget.cpp:381 +#: ../src/ui/view/edit-widget.cpp:1062 +#: ../src/widgets/desktop-widget.cpp:374 msgid "Zoom drawing if window size changes" -msgstr "" +msgstr "התקרב לציור אם גודל החלון משתנה" -#: ../src/ui/view/edit-widget.cpp:1083 ../src/widgets/desktop-widget.cpp:510 +#: ../src/ui/view/edit-widget.cpp:1083 +#: ../src/widgets/desktop-widget.cpp:497 msgid "Cursor coordinates" -msgstr "" +msgstr "מיקום הסמן" -#. display the initial welcome message in the statusbar -#: ../src/ui/view/edit-widget.cpp:1100 ../src/widgets/desktop-widget.cpp:558 -msgid "" -"Welcome to Inkscape! Use shape or freehand tools to create objects; " -"use selector (arrow) to move or transform them." -msgstr "" +#: ../src/ui/view/edit-widget.cpp:1100 +msgid "Welcome to Inkscape! Use shape or drawing tools to create objects; use selector (arrow) to move or transform them." +msgstr " ברוכים הבאים לאינקסקייפ! השתמשו בכלי הצורה או היד־החופשית כדי ליצור פריטים; השתמשו בכלי־הבחירה (חץ) כדי להזיז או לשנות את צורתם." -#: ../src/ui/view/edit-widget.cpp:1211 ../src/widgets/desktop-widget.cpp:844 +#: ../src/ui/view/edit-widget.cpp:1211 +#: ../src/widgets/desktop-widget.cpp:832 #, c-format msgid "" -"Save changes to document \"%s\" before " -"closing?\n" +"Save changes to document \"%s\" before closing?\n" "\n" "If you close without saving, your changes will be discarded." msgstr "" +"לשמור שינויים למסמך \"%s\" לפני הסגירה?\n" +"\n" +"אם תסגור מבלי לשמור, השינויים שלך יאבדו." -#: ../src/ui/view/edit-widget.cpp:1222 ../src/ui/view/edit-widget.cpp:1269 -#: ../src/widgets/desktop-widget.cpp:851 ../src/widgets/desktop-widget.cpp:907 +#: ../src/ui/view/edit-widget.cpp:1222 +#: ../src/ui/view/edit-widget.cpp:1269 +#: ../src/widgets/desktop-widget.cpp:839 +#: ../src/widgets/desktop-widget.cpp:895 msgid "Close _without saving" -msgstr "" +msgstr "סגור מ_בלי לשמור" -#: ../src/ui/view/edit-widget.cpp:1257 ../src/widgets/desktop-widget.cpp:899 +#: ../src/ui/view/edit-widget.cpp:1257 +#: ../src/widgets/desktop-widget.cpp:887 #, c-format msgid "" -"The file \"%s\" was saved with a " -"format (%s) that may cause data loss!\n" +"The file \"%s\" was saved with a format (%s) that may cause data loss!\n" "\n" "Do you want to save this file as an Inkscape SVG?" msgstr "" +"הקובץ \"%s\" נשמר בתבנית (%s) שעלולה לגרום לאובדן נתונים!\n" +"\n" +"האם ברצונך לשמור את הקובץ בתור SVG של אינקסקייפ?" -#: ../src/ui/view/edit-widget.cpp:1272 ../src/widgets/desktop-widget.cpp:910 +#: ../src/ui/view/edit-widget.cpp:1272 +#: ../src/widgets/desktop-widget.cpp:898 msgid "_Save as SVG" -msgstr "" +msgstr "_שמור בתור SVG" #: ../src/ui/widget/filter-effect-chooser.cpp:25 msgid "_Blend mode:" -msgstr "" +msgstr "מצב _עירבול:" #: ../src/ui/widget/filter-effect-chooser.cpp:26 msgid "B_lur:" -msgstr "" +msgstr "_טשטוש:" #: ../src/ui/widget/licensor.cpp:35 msgid "Proprietary" -msgstr "" +msgstr "קנייני" #: ../src/ui/widget/licensor.cpp:38 msgid "Other" -msgstr "" - -#: ../src/ui/widget/object-composite-settings.cpp:51 -#: ../src/ui/widget/selected-style.cpp:1031 -#: ../src/ui/widget/selected-style.cpp:1032 -msgid "Opacity, %" -msgstr "" +msgstr "אחר" -#: ../src/ui/widget/object-composite-settings.cpp:152 -#, fuzzy +#: ../src/ui/widget/object-composite-settings.cpp:169 msgid "Change blur" -msgstr "ערוץ" +msgstr "שנה טשטוש" -#: ../src/ui/widget/object-composite-settings.cpp:192 -#: ../src/ui/widget/selected-style.cpp:855 -#: ../src/ui/widget/selected-style.cpp:1149 +#: ../src/ui/widget/object-composite-settings.cpp:209 +#: ../src/ui/widget/selected-style.cpp:851 +#: ../src/ui/widget/selected-style.cpp:1145 msgid "Change opacity" -msgstr "" +msgstr "שנה אטימות" -#: ../src/ui/widget/page-sizer.cpp:190 +#: ../src/ui/widget/page-sizer.cpp:208 msgid "U_nits:" -msgstr "" +msgstr "_יחידות:" -#: ../src/ui/widget/page-sizer.cpp:191 +#: ../src/ui/widget/page-sizer.cpp:209 msgid "Width of paper" -msgstr "" +msgstr "רוחב הנייר" -#: ../src/ui/widget/page-sizer.cpp:192 +#: ../src/ui/widget/page-sizer.cpp:210 msgid "_Height:" -msgstr "" +msgstr "גו_בה:" -#: ../src/ui/widget/page-sizer.cpp:192 +#: ../src/ui/widget/page-sizer.cpp:210 msgid "Height of paper" -msgstr "" +msgstr "גובה הנייר" -#: ../src/ui/widget/page-sizer.cpp:236 +#: ../src/ui/widget/page-sizer.cpp:256 msgid "P_age size:" -msgstr "" +msgstr "_גודל הדף:" -#: ../src/ui/widget/page-sizer.cpp:244 +#: ../src/ui/widget/page-sizer.cpp:264 msgid "Page orientation:" -msgstr "" +msgstr "_כיוון הדף:" -#: ../src/ui/widget/page-sizer.cpp:247 +#: ../src/ui/widget/page-sizer.cpp:267 msgid "_Landscape" -msgstr "" +msgstr "ל_רוחב" -#: ../src/ui/widget/page-sizer.cpp:252 +#: ../src/ui/widget/page-sizer.cpp:272 msgid "_Portrait" -msgstr "" +msgstr "ל_אורך" #. ## Set up custom size frame -#: ../src/ui/widget/page-sizer.cpp:259 +#: ../src/ui/widget/page-sizer.cpp:279 msgid "Custom size" -msgstr "" +msgstr "גודל מותאם אישית" -#: ../src/ui/widget/page-sizer.cpp:272 +#: ../src/ui/widget/page-sizer.cpp:292 msgid "_Fit page to selection" -msgstr "" +msgstr "_התאם את העמוד לבחירה" -#: ../src/ui/widget/page-sizer.cpp:273 -msgid "" -"Resize the page to fit the current selection, or the entire drawing if there " -"is no selection" -msgstr "" +#: ../src/ui/widget/page-sizer.cpp:293 +msgid "Resize the page to fit the current selection, or the entire drawing if there is no selection" +msgstr "שנה את גודל העמוד כך שיתאים לבחירה הנוכחית, או לגודל הציור כולו במידה ולא נבחר דבר" -#: ../src/ui/widget/page-sizer.cpp:331 +#: ../src/ui/widget/page-sizer.cpp:351 msgid "Set page size" -msgstr "" +msgstr "הגדר את גודל העמוד" -#: ../src/ui/widget/panel.cpp:121 +#: ../src/ui/widget/panel.cpp:111 msgid "List" -msgstr "" +msgstr "רשימה" -#: ../src/ui/widget/panel.cpp:144 +#: ../src/ui/widget/panel.cpp:134 msgid "swatches|Size" -msgstr "" +msgstr "swatches|גודל" -#: ../src/ui/widget/panel.cpp:148 +#: ../src/ui/widget/panel.cpp:138 msgid "tiny" -msgstr "" +msgstr "פיצפון" -#: ../src/ui/widget/panel.cpp:149 +#: ../src/ui/widget/panel.cpp:139 msgid "small" -msgstr "" +msgstr "קטן" #. TRANSLATORS: Translate only the word "medium". Indicates size of colour swatches -#: ../src/ui/widget/panel.cpp:151 +#: ../src/ui/widget/panel.cpp:141 msgid "swatchesHeight|medium" -msgstr "" +msgstr "swatches|בינוני" -#: ../src/ui/widget/panel.cpp:152 +#: ../src/ui/widget/panel.cpp:142 msgid "large" -msgstr "" +msgstr "גדול" -#: ../src/ui/widget/panel.cpp:153 +#: ../src/ui/widget/panel.cpp:143 msgid "huge" -msgstr "" +msgstr "ענק" -#: ../src/ui/widget/panel.cpp:175 +#: ../src/ui/widget/panel.cpp:165 msgid "swatches|Width" -msgstr "" +msgstr "swatches|רוחב" -#: ../src/ui/widget/panel.cpp:179 +#: ../src/ui/widget/panel.cpp:169 msgid "narrower" -msgstr "" +msgstr "צר יותר" -#: ../src/ui/widget/panel.cpp:180 +#: ../src/ui/widget/panel.cpp:170 msgid "narrow" -msgstr "" +msgstr "צר" #. TRANSLATORS: Translate only the word "medium". Indicates width of colour swatches -#: ../src/ui/widget/panel.cpp:182 +#: ../src/ui/widget/panel.cpp:172 msgid "swatchesWidth|medium" -msgstr "" +msgstr "swatches|בינוני" -#: ../src/ui/widget/panel.cpp:183 -#, fuzzy +#: ../src/ui/widget/panel.cpp:173 msgid "wide" -msgstr "רוחב" +msgstr "רחב" -#: ../src/ui/widget/panel.cpp:184 -#, fuzzy +#: ../src/ui/widget/panel.cpp:174 msgid "wider" -msgstr "רוחב" +msgstr "רחב יותר" #. TRANSLATORS: Translate only the word "Wrap". Indicates how colour swatches are displayed -#: ../src/ui/widget/panel.cpp:215 +#: ../src/ui/widget/panel.cpp:205 msgid "swatches|Wrap" -msgstr "" +msgstr "swatches|גלישה" -#: ../src/ui/widget/preferences-widget.cpp:278 +#: ../src/ui/widget/preferences-widget.cpp:498 msgid "Reset" -msgstr "" +msgstr "אפס" #: ../src/ui/widget/random.cpp:123 -msgid "" -"Reseed the random number generator; this creates a different sequence of " -"random numbers." -msgstr "" +msgid "Reseed the random number generator; this creates a different sequence of random numbers." +msgstr "הזרע מחדש את יצרן המספרים האקראים; פעולה זו תיצור רצף שונה של מספרים אקראיים." #: ../src/ui/widget/rendering-options.cpp:39 -#, fuzzy msgid "Backend" -msgstr "שחור" +msgstr "מנגנון" #: ../src/ui/widget/rendering-options.cpp:40 -#, fuzzy msgid "Vector" -msgstr "פקטור" +msgstr "וקטור" #: ../src/ui/widget/rendering-options.cpp:41 msgid "Bitmap" -msgstr "" +msgstr "מפת סיביות" #: ../src/ui/widget/rendering-options.cpp:42 msgid "Bitmap options" -msgstr "" +msgstr "אפשרויות מפת סיביות" #: ../src/ui/widget/rendering-options.cpp:44 msgid "Preferred resolution of rendering, in dots per inch." -msgstr "" +msgstr "רזולוציה מועדפת לעיבוד התמונה, בנקודות לאינטש." #: ../src/ui/widget/rendering-options.cpp:52 -msgid "" -"Render using Cairo vector operations. The resulting image is usually " -"smaller in file size and can be arbitrarily scaled, but some filter effects " -"will not be correctly rendered." -msgstr "" +msgid "Render using Cairo vector operations. The resulting image is usually smaller in file size and can be arbitrarily scaled, but some filter effects will not be correctly rendered." +msgstr "עבד את התמונה באמצעות פעולות וקטוריות של Cairo. התמונה שתתקבל לרב תהיה קטנה בנפח הקובץ וניתן יהיה למתוח אותה באופן שרירותי, אך כמה מאפקטי הסינון לא יהיו נכונים" #: ../src/ui/widget/rendering-options.cpp:57 -msgid "" -"Render everything as bitmap. The resulting image is usually larger in file " -"size and cannot be arbitrarily scaled without quality loss, but all objects " -"will be rendered exactly as displayed." -msgstr "" +msgid "Render everything as bitmap. The resulting image is usually larger in file size and cannot be arbitrarily scaled without quality loss, but all objects will be rendered exactly as displayed." +msgstr "עבד הכל כמפת סיביות. התמונה המתקבלת לרב תהיה קטנה יותר בנפח הקובץ ולא ניתן יהיה למתוח אותה באופן שרירותי, אך כל הפריטים יעובדו בדיוק כפי שהם מוצגים." #: ../src/ui/widget/selected-style.cpp:106 -#: ../src/ui/widget/style-swatch.cpp:110 +#: ../src/ui/widget/style-swatch.cpp:117 msgid "Fill:" -msgstr "" +msgstr "מילוי:" #: ../src/ui/widget/selected-style.cpp:107 -#: ../src/ui/widget/style-swatch.cpp:111 +#: ../src/ui/widget/style-swatch.cpp:118 msgid "Stroke:" -msgstr "" +msgstr "קו מתאר:" #: ../src/ui/widget/selected-style.cpp:108 msgid "O:" -msgstr "" +msgstr "א:" #: ../src/ui/widget/selected-style.cpp:150 msgid "N/A" -msgstr "" +msgstr "לא זמין" #: ../src/ui/widget/selected-style.cpp:153 -#: ../src/ui/widget/selected-style.cpp:1024 -#: ../src/ui/widget/selected-style.cpp:1025 +#: ../src/ui/widget/selected-style.cpp:1020 +#: ../src/ui/widget/selected-style.cpp:1021 msgid "Nothing selected" -msgstr "" +msgstr "לא נבחר דבר" #: ../src/ui/widget/selected-style.cpp:155 -#: ../src/ui/widget/style-swatch.cpp:328 +#: ../src/ui/widget/style-swatch.cpp:296 msgid "None" -msgstr "" +msgstr "ללא" #: ../src/ui/widget/selected-style.cpp:158 -#: ../src/ui/widget/style-swatch.cpp:330 +#: ../src/ui/widget/style-swatch.cpp:298 msgid "No fill" -msgstr "" +msgstr "ללא מילוי" #: ../src/ui/widget/selected-style.cpp:158 -#: ../src/ui/widget/style-swatch.cpp:330 +#: ../src/ui/widget/style-swatch.cpp:298 msgid "No stroke" -msgstr "" +msgstr "ללא קו מתאר" #: ../src/ui/widget/selected-style.cpp:160 -#: ../src/ui/widget/style-swatch.cpp:309 ../src/widgets/paint-selector.cpp:189 +#: ../src/ui/widget/style-swatch.cpp:277 +#: ../src/widgets/paint-selector.cpp:189 msgid "Pattern" -msgstr "" +msgstr "תבנית" #: ../src/ui/widget/selected-style.cpp:163 -#: ../src/ui/widget/style-swatch.cpp:311 ../src/widgets/paint-selector.cpp:997 +#: ../src/ui/widget/style-swatch.cpp:279 +#: ../src/widgets/paint-selector.cpp:997 msgid "Pattern fill" -msgstr "" +msgstr "מילוי בתבנית" #: ../src/ui/widget/selected-style.cpp:163 -#: ../src/ui/widget/style-swatch.cpp:311 +#: ../src/ui/widget/style-swatch.cpp:279 msgid "Pattern stroke" -msgstr "" +msgstr "תבנית כקו המתאר" #: ../src/ui/widget/selected-style.cpp:165 msgid "L" -msgstr "" +msgstr "ק" #: ../src/ui/widget/selected-style.cpp:168 -#: ../src/ui/widget/style-swatch.cpp:303 +#: ../src/ui/widget/style-swatch.cpp:271 msgid "Linear gradient fill" -msgstr "" +msgstr "מילוי מדרג קווי" #: ../src/ui/widget/selected-style.cpp:168 -#: ../src/ui/widget/style-swatch.cpp:303 +#: ../src/ui/widget/style-swatch.cpp:271 msgid "Linear gradient stroke" -msgstr "" +msgstr "מדרג קווי בקו המתאר" #: ../src/ui/widget/selected-style.cpp:175 msgid "R" -msgstr "" +msgstr "מ" #: ../src/ui/widget/selected-style.cpp:178 -#: ../src/ui/widget/style-swatch.cpp:307 +#: ../src/ui/widget/style-swatch.cpp:275 msgid "Radial gradient fill" -msgstr "" +msgstr "מילוי מדרג מעגלי" #: ../src/ui/widget/selected-style.cpp:178 -#: ../src/ui/widget/style-swatch.cpp:307 +#: ../src/ui/widget/style-swatch.cpp:275 msgid "Radial gradient stroke" -msgstr "" +msgstr "מדרג מעגלי בקו המתאר" #: ../src/ui/widget/selected-style.cpp:185 msgid "Different" -msgstr "" +msgstr "שונה" #: ../src/ui/widget/selected-style.cpp:188 msgid "Different fills" -msgstr "" +msgstr "מילויים שונים" #: ../src/ui/widget/selected-style.cpp:188 msgid "Different strokes" -msgstr "" +msgstr "קוי מתאר שונים" #: ../src/ui/widget/selected-style.cpp:190 -#: ../src/ui/widget/style-swatch.cpp:333 +#: ../src/ui/widget/style-swatch.cpp:301 msgid "Unset" -msgstr "" +msgstr "לא הוגדר" #: ../src/ui/widget/selected-style.cpp:196 msgid "Flat color fill" -msgstr "" +msgstr "מילוי צבע אחיד" #: ../src/ui/widget/selected-style.cpp:196 msgid "Flat color stroke" -msgstr "" +msgstr "קו מתאר בצבע אחיד" #. TRANSLATOR COMMENT: A means "Averaged" #: ../src/ui/widget/selected-style.cpp:199 msgid "a" -msgstr "" +msgstr "א" #: ../src/ui/widget/selected-style.cpp:202 msgid "Fill is averaged over selected objects" -msgstr "" +msgstr "המילוי נקבע בממוצע לפי צבעי הפריטים הנבחרים" #: ../src/ui/widget/selected-style.cpp:202 msgid "Stroke is averaged over selected objects" -msgstr "" +msgstr "קו המתאר נקבע בממוצע לפי צבעי הפריטים הנבחרים" #. TRANSLATOR COMMENT: M means "Multiple" #: ../src/ui/widget/selected-style.cpp:205 msgid "m" -msgstr "" +msgstr "כ" #: ../src/ui/widget/selected-style.cpp:208 msgid "Multiple selected objects have the same fill" -msgstr "" +msgstr "למספר הפריטים שנבחרו ישנו מילוי זהה" #: ../src/ui/widget/selected-style.cpp:208 msgid "Multiple selected objects have the same stroke" -msgstr "" +msgstr "למספר הפריטים שנבחרו ישנו קו מתאר זהה" #: ../src/ui/widget/selected-style.cpp:210 msgid "Edit fill..." -msgstr "" +msgstr "ערוך מילוי..." #: ../src/ui/widget/selected-style.cpp:210 msgid "Edit stroke..." -msgstr "" +msgstr "ערוך קו מתאר..." #: ../src/ui/widget/selected-style.cpp:214 msgid "Last set color" -msgstr "" +msgstr "הצבע שנקבע לאחרונה" #: ../src/ui/widget/selected-style.cpp:218 msgid "Last selected color" -msgstr "" +msgstr "הצבע שנבחר לאחרונה" #: ../src/ui/widget/selected-style.cpp:222 msgid "Invert" -msgstr "" +msgstr "הפוך" #: ../src/ui/widget/selected-style.cpp:226 msgid "White" msgstr "לבן" #: ../src/ui/widget/selected-style.cpp:230 -#: ../src/widgets/sp-color-icc-selector.cpp:237 +#: ../src/widgets/sp-color-icc-selector.cpp:238 #: ../src/widgets/sp-color-scales.cpp:461 #: ../src/widgets/sp-color-scales.cpp:462 msgid "Black" @@ -12721,2174 +13220,2221 @@ msgid "Paste color" msgstr "הדבק צבע" #: ../src/ui/widget/selected-style.cpp:242 -#: ../src/ui/widget/selected-style.cpp:780 +#: ../src/ui/widget/selected-style.cpp:776 msgid "Swap fill and stroke" -msgstr "" +msgstr "החלף בין המילוי לקו המתאר" #: ../src/ui/widget/selected-style.cpp:246 -#: ../src/ui/widget/selected-style.cpp:522 -#: ../src/ui/widget/selected-style.cpp:531 +#: ../src/ui/widget/selected-style.cpp:518 +#: ../src/ui/widget/selected-style.cpp:527 msgid "Make fill opaque" -msgstr "" +msgstr "הפוך את המילוי לאטום" #: ../src/ui/widget/selected-style.cpp:246 msgid "Make stroke opaque" -msgstr "" +msgstr "הפוך את קו המתאר לאטום" #: ../src/ui/widget/selected-style.cpp:308 msgid "Remove" msgstr "הסר" -#: ../src/ui/widget/selected-style.cpp:543 +#: ../src/ui/widget/selected-style.cpp:539 msgid "Apply last set color to fill" -msgstr "" +msgstr "החל את הצבע האחרון שנקבע כמילוי" -#: ../src/ui/widget/selected-style.cpp:555 +#: ../src/ui/widget/selected-style.cpp:551 msgid "Apply last set color to stroke" -msgstr "" +msgstr "החל את הצבע האחרון שנקבע כקו מתאר" -#: ../src/ui/widget/selected-style.cpp:566 +#: ../src/ui/widget/selected-style.cpp:562 msgid "Apply last selected color to fill" -msgstr "" +msgstr "החל את הצבע האחרון שנבחר כמילוי" -#: ../src/ui/widget/selected-style.cpp:577 +#: ../src/ui/widget/selected-style.cpp:573 msgid "Apply last selected color to stroke" -msgstr "" +msgstr "החל את הצבע האחרון שנבחר כקו מתאר" -#: ../src/ui/widget/selected-style.cpp:597 +#: ../src/ui/widget/selected-style.cpp:593 msgid "Invert fill" -msgstr "" +msgstr "הפוך מילוי" -#: ../src/ui/widget/selected-style.cpp:617 +#: ../src/ui/widget/selected-style.cpp:613 msgid "Invert stroke" -msgstr "" +msgstr "הפוך קו מתאר" -#: ../src/ui/widget/selected-style.cpp:629 +#: ../src/ui/widget/selected-style.cpp:625 msgid "White fill" -msgstr "" +msgstr "מילוי לבן" -#: ../src/ui/widget/selected-style.cpp:641 +#: ../src/ui/widget/selected-style.cpp:637 msgid "White stroke" -msgstr "" +msgstr "קו מתאר לבן" -#: ../src/ui/widget/selected-style.cpp:653 +#: ../src/ui/widget/selected-style.cpp:649 msgid "Black fill" -msgstr "" +msgstr "מילוי שחור" -#: ../src/ui/widget/selected-style.cpp:665 +#: ../src/ui/widget/selected-style.cpp:661 msgid "Black stroke" -msgstr "" +msgstr "קו מתאר שחור" -#: ../src/ui/widget/selected-style.cpp:708 +#: ../src/ui/widget/selected-style.cpp:704 msgid "Paste fill" -msgstr "" +msgstr "הדבק מילוי" -#: ../src/ui/widget/selected-style.cpp:726 +#: ../src/ui/widget/selected-style.cpp:722 msgid "Paste stroke" -msgstr "" +msgstr "הדבק קו מתאר" -#: ../src/ui/widget/selected-style.cpp:890 +#: ../src/ui/widget/selected-style.cpp:886 msgid "Change stroke width" -msgstr "" +msgstr "שנה את עובי קו המתאר" -#: ../src/ui/widget/selected-style.cpp:985 +#: ../src/ui/widget/selected-style.cpp:981 msgid ", drag to adjust" -msgstr "" +msgstr ", גרור להתאמה" -#: ../src/ui/widget/selected-style.cpp:1066 +#: ../src/ui/widget/selected-style.cpp:1062 #, c-format msgid "Stroke width: %.5g%s%s" -msgstr "" +msgstr "עובי קו המתאר: %.5g%s%s" -#: ../src/ui/widget/selected-style.cpp:1070 +#: ../src/ui/widget/selected-style.cpp:1066 msgid " (averaged)" -msgstr "" +msgstr " (ממוצע)" -#: ../src/ui/widget/selected-style.cpp:1098 +#: ../src/ui/widget/selected-style.cpp:1094 msgid "0 (transparent)" -msgstr "" +msgstr "0 (שקוף)" -#: ../src/ui/widget/selected-style.cpp:1122 +#: ../src/ui/widget/selected-style.cpp:1118 msgid "100% (opaque)" -msgstr "" +msgstr "100% (אטום)" #: ../src/ui/widget/selected-style.cpp:1271 msgid "Adjust saturation" -msgstr "" +msgstr "כוונן את הרוויה" #: ../src/ui/widget/selected-style.cpp:1273 #, c-format -msgid "" -"Adjusting saturation: was %.3g, now %.3g (diff %.3g); with " -"Ctrl to adjust lightness, without modifiers to adjust hue" -msgstr "" +msgid "Adjusting saturation: was %.3g, now %.3g (diff %.3g); with Ctrl to adjust lightness, without modifiers to adjust hue" +msgstr "מכוונן את הרוויה: לשעבר %.3g, כעת%.3g (שינוי %.3g); לחיצה על Ctrl כדי לכוונן את התאורה, ללא מקשי שינוי לכוונון הגוון" #: ../src/ui/widget/selected-style.cpp:1277 -#, fuzzy msgid "Adjust lightness" -msgstr "בהירות" +msgstr "כוונן את התאורה" #: ../src/ui/widget/selected-style.cpp:1279 #, c-format -msgid "" -"Adjusting lightness: was %.3g, now %.3g (diff %.3g); with " -"Shift to adjust saturation, without modifiers to adjust hue" -msgstr "" +msgid "Adjusting lightness: was %.3g, now %.3g (diff %.3g); with Shift to adjust saturation, without modifiers to adjust hue" +msgstr "מכוונן את התאורה: לשעבר %.3g, כעת %.3g (שינוי %.3g); לחיצה על Shift כדי לכוונן את הרוויה, ללא מקשי שינוי כדי לכוונן את הגוון" #: ../src/ui/widget/selected-style.cpp:1283 msgid "Adjust hue" -msgstr "" +msgstr "כוונן את הגוון" #: ../src/ui/widget/selected-style.cpp:1285 #, c-format -msgid "" -"Adjusting hue: was %.3g, now %.3g (diff %.3g); with Shift to adjust saturation, with Ctrl to adjust lightness" -msgstr "" +msgid "Adjusting hue: was %.3g, now %.3g (diff %.3g); with Shift to adjust saturation, with Ctrl to adjust lightness" +msgstr "מכוונן את הגוון: לשעבר %.3g, כעת %.3g (שינוי %.3g); לחיצה על Shift כדי לכוונן את הרוויה, לחיצה על Ctrl כדי לכוונן את התאורה" -#: ../src/ui/widget/selected-style.cpp:1391 -#: ../src/ui/widget/selected-style.cpp:1405 +#: ../src/ui/widget/selected-style.cpp:1394 +#: ../src/ui/widget/selected-style.cpp:1408 msgid "Adjust stroke width" -msgstr "" +msgstr "התאם את עובי קו המתאר" -#: ../src/ui/widget/selected-style.cpp:1392 +#: ../src/ui/widget/selected-style.cpp:1395 #, c-format msgid "Adjusting stroke width: was %.3g, now %.3g (diff %.3g)" -msgstr "" +msgstr "מתאים את עובי קו המתאר: היה %.3g, כעת %.3g (שינוי %.3g)" #. TRANSLATORS: Only translate the word "Link" - means to _link_ two sliders together #: ../src/ui/widget/spin-slider.cpp:118 msgid "sliders|Link" -msgstr "" +msgstr "sliders|קשר" -#: ../src/ui/widget/style-swatch.cpp:301 +#: ../src/ui/widget/style-swatch.cpp:269 msgid "L Gradient" -msgstr "" +msgstr "מדרג ק" -#: ../src/ui/widget/style-swatch.cpp:305 +#: ../src/ui/widget/style-swatch.cpp:273 msgid "R Gradient" -msgstr "" +msgstr "מדרג מ" -#: ../src/ui/widget/style-swatch.cpp:321 +#: ../src/ui/widget/style-swatch.cpp:289 #, c-format msgid "Fill: %06x/%.3g" -msgstr "" +msgstr "מילוי: %06x/%.3g" -#: ../src/ui/widget/style-swatch.cpp:323 +#: ../src/ui/widget/style-swatch.cpp:291 #, c-format msgid "Stroke: %06x/%.3g" -msgstr "" +msgstr "קו מתאר: %06x/%.3g" -#: ../src/ui/widget/style-swatch.cpp:355 +#: ../src/ui/widget/style-swatch.cpp:323 #, c-format msgid "Stroke width: %.5g%s" -msgstr "" +msgstr "עובי קו המתאר: %.5g%s" -#: ../src/ui/widget/style-swatch.cpp:371 +#: ../src/ui/widget/style-swatch.cpp:339 #, c-format msgid "O:%.3g" -msgstr "" +msgstr "א:%.3g" -#: ../src/ui/widget/style-swatch.cpp:373 +#: ../src/ui/widget/style-swatch.cpp:341 #, c-format msgid "O:.%d" -msgstr "" +msgstr "א:.%d" -#: ../src/ui/widget/style-swatch.cpp:378 +#: ../src/ui/widget/style-swatch.cpp:346 #, c-format msgid "Opacity: %.3g" -msgstr "" +msgstr "אטימות: %.3g" #: ../src/vanishing-point.cpp:124 msgid "Split vanishing points" -msgstr "" +msgstr "פצל את נקודות ההעלמות" #: ../src/vanishing-point.cpp:169 msgid "Merge vanishing points" -msgstr "" +msgstr "מזג את נקודות ההעלמות" #: ../src/vanishing-point.cpp:225 msgid "3D box: Move vanishing point" -msgstr "" +msgstr "תיבה תלת־מימדית: הזז את נקודת ההעלמות" #: ../src/vanishing-point.cpp:306 #, c-format msgid "Finite vanishing point shared by %d box" -msgid_plural "" -"Finite vanishing point shared by %d boxes; drag with Shift to separate selected box(es)" -msgstr[0] "" +msgid_plural "Finite vanishing point shared by %d boxes; drag with Shift to separate selected box(es)" +msgstr[0] "סופית נקודת ההעלמות משותפת בין תיבה %d" +msgstr[1] "סופית נקודת ההעלמות משותפת בין %d תיבות; גרור עם Shift כדי להפריד את התיבה/ות הנבחרת/ות" #. This won't make sense any more when infinite VPs are not shown on the canvas, #. but currently we update the status message anyway #: ../src/vanishing-point.cpp:313 #, c-format msgid "Infinite vanishing point shared by %d box" -msgid_plural "" -"Infinite vanishing point shared by %d boxes; drag with " -"Shift to separate selected box(es)" -msgstr[0] "" +msgid_plural "Infinite vanishing point shared by %d boxes; drag with Shift to separate selected box(es)" +msgstr[0] "אינסופי נקודות ההעלמות משותפות בין תיבה %d" +msgstr[1] "אין סופי נקודות ההעלמות משותפות בין %d תיבות; גרור עם Shift כדי להפריד את התיבה/ות הנבחרת/ות)" #: ../src/vanishing-point.cpp:321 #, c-format -msgid "" -"shared by %d box; drag with Shift to separate selected box(es)" -msgid_plural "" -"shared by %d boxes; drag with Shift to separate selected box" -"(es)" -msgstr[0] "" +msgid "shared by %d box; drag with Shift to separate selected box(es)" +msgid_plural "shared by %d boxes; drag with Shift to separate selected box(es)" +msgstr[0] "משותף בין תיבה %d; גרור עם Shiftכדי להפריד את התיבה/ות הנבחרת/ות" +msgstr[1] "משותף בין %d תיבות; גרור עם Shift כדי להפריד את התיבה/ות הנברחת/ות" -#: ../src/verbs.cpp:1134 +#: ../src/verbs.cpp:1137 msgid "Switch to next layer" -msgstr "" +msgstr "עבור לשכבה הבאה" -#: ../src/verbs.cpp:1135 +#: ../src/verbs.cpp:1138 msgid "Switched to next layer." -msgstr "" +msgstr "הועברת לשכבה הבאה." -#: ../src/verbs.cpp:1137 +#: ../src/verbs.cpp:1140 msgid "Cannot go past last layer." -msgstr "" +msgstr "לא ניתן לגשת מעבר לשכבה האחרונה." -#: ../src/verbs.cpp:1146 +#: ../src/verbs.cpp:1149 msgid "Switch to previous layer" -msgstr "" +msgstr "עבור לשכבה הקודמת" -#: ../src/verbs.cpp:1147 +#: ../src/verbs.cpp:1150 msgid "Switched to previous layer." -msgstr "" +msgstr "הועברת לשכבה הקודמת." -#: ../src/verbs.cpp:1149 +#: ../src/verbs.cpp:1152 msgid "Cannot go before first layer." -msgstr "" +msgstr "לא ניתן לגשת מעבר לשכבה הראשונה." -#: ../src/verbs.cpp:1166 ../src/verbs.cpp:1250 +#: ../src/verbs.cpp:1169 +#: ../src/verbs.cpp:1246 +#: ../src/verbs.cpp:1278 +#: ../src/verbs.cpp:1284 msgid "No current layer." -msgstr "" +msgstr "אין שכבה נוכחית." -#: ../src/verbs.cpp:1195 ../src/verbs.cpp:1199 +#: ../src/verbs.cpp:1198 +#: ../src/verbs.cpp:1202 #, c-format msgid "Raised layer %s." -msgstr "" +msgstr "השכבה המוגבהת %s." -#: ../src/verbs.cpp:1196 +#: ../src/verbs.cpp:1199 msgid "Layer to top" -msgstr "" +msgstr "העבר כעליונה" -#: ../src/verbs.cpp:1200 +#: ../src/verbs.cpp:1203 msgid "Raise layer" -msgstr "" +msgstr "הגבה שכבה" -#: ../src/verbs.cpp:1203 ../src/verbs.cpp:1207 +#: ../src/verbs.cpp:1206 +#: ../src/verbs.cpp:1210 #, c-format msgid "Lowered layer %s." -msgstr "" +msgstr "שכבה מונמכת %s." -#: ../src/verbs.cpp:1204 +#: ../src/verbs.cpp:1207 msgid "Layer to bottom" -msgstr "" +msgstr "שכבה לתחתית" -#: ../src/verbs.cpp:1208 +#: ../src/verbs.cpp:1211 msgid "Lower layer" -msgstr "" +msgstr "הנמך שכבה" -#: ../src/verbs.cpp:1217 +#: ../src/verbs.cpp:1220 msgid "Cannot move layer any further." -msgstr "" +msgstr "לא ניתן להעביר את השכבה הלאה." + +#: ../src/verbs.cpp:1229 +#, c-format +msgid "%s copy" +msgstr "עותק של %s" + +#: ../src/verbs.cpp:1241 +msgid "Duplicate layer" +msgstr "שכפל שכבה" -#: ../src/verbs.cpp:1245 +#. TRANSLATORS: this means "The layer has been duplicated." +#: ../src/verbs.cpp:1244 +msgid "Duplicated layer." +msgstr "השכבה שוכפלה." + +#: ../src/verbs.cpp:1273 msgid "Delete layer" -msgstr "" +msgstr "מחק שכבה" #. TRANSLATORS: this means "The layer has been deleted." -#: ../src/verbs.cpp:1248 +#: ../src/verbs.cpp:1276 msgid "Deleted layer." -msgstr "" +msgstr "השכבה נמחקה." + +#: ../src/verbs.cpp:1287 +msgid "Toggle layer solo" +msgstr "החלף את בידוד השכבה" -#: ../src/verbs.cpp:1330 +#: ../src/verbs.cpp:1367 msgid "Flip horizontally" -msgstr "" +msgstr "הפוך אופקית" -#: ../src/verbs.cpp:1345 +#: ../src/verbs.cpp:1382 msgid "Flip vertically" -msgstr "" +msgstr "הפוך אנכית" #. TRANSLATORS: If you have translated the tutorial-basic.svg file to your language, #. then translate this string as "tutorial-basic.LANG.svg" (where LANG is your language #. code); otherwise leave as "tutorial-basic.svg". -#: ../src/verbs.cpp:1829 +#: ../src/verbs.cpp:1884 msgid "tutorial-basic.svg" msgstr "" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:1833 +#: ../src/verbs.cpp:1888 msgid "tutorial-shapes.svg" msgstr "" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:1837 +#: ../src/verbs.cpp:1892 msgid "tutorial-advanced.svg" msgstr "" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:1841 +#: ../src/verbs.cpp:1896 msgid "tutorial-tracing.svg" msgstr "" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:1845 +#: ../src/verbs.cpp:1900 msgid "tutorial-calligraphy.svg" msgstr "" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:1849 +#: ../src/verbs.cpp:1904 msgid "tutorial-elements.svg" msgstr "" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:1853 +#: ../src/verbs.cpp:1908 msgid "tutorial-tips.svg" msgstr "" -#: ../src/verbs.cpp:2129 ../src/verbs.cpp:2634 +#: ../src/verbs.cpp:2184 +#: ../src/verbs.cpp:2703 msgid "Unlock all objects in the current layer" -msgstr "" +msgstr "שחרר את כל הפריטים בשכבה הנוכחית" -#: ../src/verbs.cpp:2133 ../src/verbs.cpp:2636 +#: ../src/verbs.cpp:2188 +#: ../src/verbs.cpp:2705 msgid "Unlock all objects in all layers" -msgstr "" +msgstr "שחרר את כל הפריטים בכל השכבות" -#: ../src/verbs.cpp:2137 ../src/verbs.cpp:2638 +#: ../src/verbs.cpp:2192 +#: ../src/verbs.cpp:2707 msgid "Unhide all objects in the current layer" -msgstr "" +msgstr "הצג את כל הפריטים בשכבה הנוכחית" -#: ../src/verbs.cpp:2141 ../src/verbs.cpp:2640 +#: ../src/verbs.cpp:2196 +#: ../src/verbs.cpp:2709 msgid "Unhide all objects in all layers" -msgstr "" +msgstr "הצג את כל הפריטים בכל השכבות" -#: ../src/verbs.cpp:2156 +#: ../src/verbs.cpp:2211 msgid "Does nothing" -msgstr "" +msgstr "לא עושה דבר" -#: ../src/verbs.cpp:2159 +#: ../src/verbs.cpp:2214 msgid "Create new document from the default template" -msgstr "" +msgstr "יוצר מסמך חדש מתבנית ברירת המחדל" -#: ../src/verbs.cpp:2161 +#: ../src/verbs.cpp:2216 msgid "_Open..." msgstr "_פתח..." -#: ../src/verbs.cpp:2162 +#: ../src/verbs.cpp:2217 msgid "Open an existing document" -msgstr "" +msgstr "פתח מסמך קיים" -#: ../src/verbs.cpp:2163 +#: ../src/verbs.cpp:2218 msgid "Re_vert" -msgstr "" +msgstr "_שחזר" -#: ../src/verbs.cpp:2164 +#: ../src/verbs.cpp:2219 msgid "Revert to the last saved version of document (changes will be lost)" -msgstr "" +msgstr "שחזר לגירסה האחרונה של המסמך שנשמרה (השינויים יאבדו)" -#: ../src/verbs.cpp:2165 +#: ../src/verbs.cpp:2220 msgid "_Save" msgstr "_שמור" -#: ../src/verbs.cpp:2165 +#: ../src/verbs.cpp:2220 msgid "Save document" msgstr "שמור מסמך" -#: ../src/verbs.cpp:2167 +#: ../src/verbs.cpp:2222 msgid "Save _As..." msgstr "שמור _בשם..." -#: ../src/verbs.cpp:2168 +#: ../src/verbs.cpp:2223 msgid "Save document under a new name" -msgstr "" +msgstr "שומר את המסמך תחת שם חדש" -#: ../src/verbs.cpp:2169 +#: ../src/verbs.cpp:2224 msgid "Save a Cop_y..." msgstr "שמור _עותק..." -#: ../src/verbs.cpp:2170 +#: ../src/verbs.cpp:2225 msgid "Save a copy of the document under a new name" -msgstr "" +msgstr "שומר עותק של המסמך תחת שם חדש" -#: ../src/verbs.cpp:2171 +#: ../src/verbs.cpp:2226 msgid "_Print..." msgstr "_הדפס..." -#: ../src/verbs.cpp:2171 +#: ../src/verbs.cpp:2226 msgid "Print document" -msgstr "" +msgstr "מדפיס את המסמך" #. TRANSLATORS: "Vacuum Defs" means "Clean up defs" (so as to remove unused definitions) -#: ../src/verbs.cpp:2174 +#: ../src/verbs.cpp:2229 msgid "Vac_uum Defs" -msgstr "" +msgstr "נקה ה_גדרות" -#: ../src/verbs.cpp:2174 -msgid "" -"Remove unused definitions (such as gradients or clipping paths) from the <" -"defs> of the document" -msgstr "" +#: ../src/verbs.cpp:2229 +msgid "Remove unused definitions (such as gradients or clipping paths) from the <defs> of the document" +msgstr "הסר הגדרות שאינן בשימוש (כגון מדרגים או נתיבי חיתוך) מה<הגדרות> של המסמך" -#: ../src/verbs.cpp:2176 +#: ../src/verbs.cpp:2231 msgid "Print Previe_w" -msgstr "" +msgstr "תצוגה _מקדימה" -#: ../src/verbs.cpp:2177 +#: ../src/verbs.cpp:2232 msgid "Preview document printout" -msgstr "" +msgstr "הצג תצוגה מקדימה של פלט ההדפסה" -#: ../src/verbs.cpp:2178 +#: ../src/verbs.cpp:2233 msgid "_Import..." -msgstr "_ייבא..." +msgstr "יי_בא..." -#: ../src/verbs.cpp:2179 +#: ../src/verbs.cpp:2234 msgid "Import a bitmap or SVG image into this document" -msgstr "" +msgstr "ייבא תמונת מפת סיביות או קובץ SVG לתוך מסמך זה" -#: ../src/verbs.cpp:2180 +#: ../src/verbs.cpp:2235 msgid "_Export Bitmap..." -msgstr "" +msgstr "יי_צא מפת סיביות..." -#: ../src/verbs.cpp:2181 +#: ../src/verbs.cpp:2236 msgid "Export this document or a selection as a bitmap image" -msgstr "" +msgstr "ייצא מסמך זה או את הבחירה כתמונת מפת סיביות" -#: ../src/verbs.cpp:2182 +#: ../src/verbs.cpp:2237 msgid "Import a document from Open Clip Art Library" -msgstr "" +msgstr "ייבא מסמך מספריית אוסף התמונות החופשיות" -#: ../src/verbs.cpp:2183 +#: ../src/verbs.cpp:2238 msgid "Export To Open Clip Art Library" -msgstr "" +msgstr "ייצא אל ספריית אוסף התמונות החופשיות" -#: ../src/verbs.cpp:2183 +#: ../src/verbs.cpp:2238 msgid "Export this document to Open Clip Art Library" -msgstr "" +msgstr "ייצא מסמך זה לספריית אוסף התמונות החופשיות" -#: ../src/verbs.cpp:2184 +#: ../src/verbs.cpp:2239 msgid "N_ext Window" -msgstr "" +msgstr "_חלון הבא" -#: ../src/verbs.cpp:2185 +#: ../src/verbs.cpp:2240 msgid "Switch to the next document window" -msgstr "" +msgstr "עבור לחלון המסמך הבא" -#: ../src/verbs.cpp:2186 +#: ../src/verbs.cpp:2241 msgid "P_revious Window" -msgstr "" +msgstr "חלון _קודם" -#: ../src/verbs.cpp:2187 +#: ../src/verbs.cpp:2242 msgid "Switch to the previous document window" -msgstr "" +msgstr "עבור לחלון המסמך הקודם" -#: ../src/verbs.cpp:2188 +#: ../src/verbs.cpp:2243 msgid "_Close" msgstr "_סגור" -#: ../src/verbs.cpp:2189 +#: ../src/verbs.cpp:2244 msgid "Close this document window" -msgstr "" +msgstr "סגור חלון מסמך זה" -#: ../src/verbs.cpp:2190 +#: ../src/verbs.cpp:2245 msgid "_Quit" -msgstr "_צא" +msgstr "י_ציאה" -#: ../src/verbs.cpp:2190 +#: ../src/verbs.cpp:2245 msgid "Quit Inkscape" -msgstr "" +msgstr "צא מאינקסקייפ" -#: ../src/verbs.cpp:2193 +#: ../src/verbs.cpp:2248 msgid "Undo last action" -msgstr "" +msgstr "בטל את הפעולה האחרונה" -#: ../src/verbs.cpp:2196 +#: ../src/verbs.cpp:2251 msgid "Do again the last undone action" -msgstr "" +msgstr "בצא שנית את הפעולה האחרונה שבוטלה" -#: ../src/verbs.cpp:2197 +#: ../src/verbs.cpp:2252 msgid "Cu_t" -msgstr "" +msgstr "ג_זור" -#: ../src/verbs.cpp:2198 +#: ../src/verbs.cpp:2253 msgid "Cut selection to clipboard" -msgstr "" +msgstr "גזור את הבחירה ללוח הגזירים" -#: ../src/verbs.cpp:2199 +#: ../src/verbs.cpp:2254 msgid "_Copy" -msgstr "" +msgstr "ה_עתק" -#: ../src/verbs.cpp:2200 +#: ../src/verbs.cpp:2255 msgid "Copy selection to clipboard" -msgstr "" +msgstr "העתק את הבחירה ללוח הגזירים" -#: ../src/verbs.cpp:2201 +#: ../src/verbs.cpp:2256 msgid "_Paste" -msgstr "" +msgstr "ה_דבק" -#: ../src/verbs.cpp:2202 +#: ../src/verbs.cpp:2257 msgid "Paste objects from clipboard to mouse point, or paste text" -msgstr "" +msgstr "הדסק פריטים מלוח הגזירים לנקודת העכבר, או הדבק טקסט" -#: ../src/verbs.cpp:2203 +#: ../src/verbs.cpp:2258 msgid "Paste _Style" -msgstr "" +msgstr "הדבק _סגנון" -#: ../src/verbs.cpp:2204 +#: ../src/verbs.cpp:2259 msgid "Apply the style of the copied object to selection" -msgstr "" +msgstr "החל את הסגנון של הפריט שהועתק על הבחירה" -#: ../src/verbs.cpp:2206 +#: ../src/verbs.cpp:2261 msgid "Scale selection to match the size of the copied object" -msgstr "" +msgstr "שנה את גודל הבחירה כדי שתתאים לגודל הפריט המועתק" -#: ../src/verbs.cpp:2207 +#: ../src/verbs.cpp:2262 msgid "Paste _Width" -msgstr "" +msgstr "הדבק _רוחב" -#: ../src/verbs.cpp:2208 +#: ../src/verbs.cpp:2263 msgid "Scale selection horizontally to match the width of the copied object" -msgstr "" +msgstr "שנה את גודל הבחירה כדי שתתאים לרוחב הפריט המועתק" -#: ../src/verbs.cpp:2209 +#: ../src/verbs.cpp:2264 msgid "Paste _Height" -msgstr "" +msgstr "הדבק _גובה" -#: ../src/verbs.cpp:2210 +#: ../src/verbs.cpp:2265 msgid "Scale selection vertically to match the height of the copied object" -msgstr "" +msgstr "שנה את גודל הבחירה כדי שתתאים לגובה הפריט המועתק" -#: ../src/verbs.cpp:2211 +#: ../src/verbs.cpp:2266 msgid "Paste Size Separately" -msgstr "" +msgstr "הדבק את הגודל בנפרד" -#: ../src/verbs.cpp:2212 +#: ../src/verbs.cpp:2267 msgid "Scale each selected object to match the size of the copied object" -msgstr "" +msgstr "שנה את גודלו של כל פריט שנבחר כדי להתאים לגודל הפריט המועתק" -#: ../src/verbs.cpp:2213 +#: ../src/verbs.cpp:2268 msgid "Paste Width Separately" -msgstr "" +msgstr "הדבק את הרוחב בנפרד" -#: ../src/verbs.cpp:2214 -msgid "" -"Scale each selected object horizontally to match the width of the copied " -"object" -msgstr "" +#: ../src/verbs.cpp:2269 +msgid "Scale each selected object horizontally to match the width of the copied object" +msgstr "שנה את גודלו של כל פריט שנבחר כדי להתאים לרוחב הפריט המועתק" -#: ../src/verbs.cpp:2215 +#: ../src/verbs.cpp:2270 msgid "Paste Height Separately" -msgstr "" +msgstr "הדבק את הגובה בנפרד" -#: ../src/verbs.cpp:2216 -msgid "" -"Scale each selected object vertically to match the height of the copied " -"object" -msgstr "" +#: ../src/verbs.cpp:2271 +msgid "Scale each selected object vertically to match the height of the copied object" +msgstr "שנה את גודלו של כל פריט שנבחר כדי להתאים לגובה הפריט המועתק" -#: ../src/verbs.cpp:2217 +#: ../src/verbs.cpp:2272 msgid "Paste _In Place" -msgstr "" +msgstr "הדבק ב_מקום" -#: ../src/verbs.cpp:2218 +#: ../src/verbs.cpp:2273 msgid "Paste objects from clipboard to the original location" -msgstr "" +msgstr "הדבק פריטים מלוח הגזירים אל המיקום המקורי" -#: ../src/verbs.cpp:2219 +#: ../src/verbs.cpp:2274 msgid "Paste Path _Effect" -msgstr "" +msgstr "הדבק אפקט _נתיב" -#: ../src/verbs.cpp:2220 +#: ../src/verbs.cpp:2275 msgid "Apply the path effect of the copied object to selection" -msgstr "" +msgstr "החל את אפקט הנתיב של הפריט המועתק על הבחירה" -#: ../src/verbs.cpp:2221 +#: ../src/verbs.cpp:2276 msgid "Remove Path _Effect" -msgstr "" +msgstr "הסר אפק_ט נתיב" -#: ../src/verbs.cpp:2222 +#: ../src/verbs.cpp:2277 msgid "Remove any path effects from selected objects" -msgstr "" +msgstr "הסר כל אפקט נתיב שהוא מהפריטים הנבחרים" -#: ../src/verbs.cpp:2223 -#, fuzzy +#: ../src/verbs.cpp:2278 msgid "Remove Filter" -msgstr "הסר" +msgstr "הסר מסנן" -#: ../src/verbs.cpp:2224 +#: ../src/verbs.cpp:2279 msgid "Remove any filters from selected objects" -msgstr "" +msgstr "הסר מסננים כלשהם מהפריטים הנבחרים" -#: ../src/verbs.cpp:2225 +#: ../src/verbs.cpp:2280 msgid "_Delete" -msgstr "" +msgstr "מ_חק" -#: ../src/verbs.cpp:2226 +#: ../src/verbs.cpp:2281 msgid "Delete selection" -msgstr "" +msgstr "מחק את הבחירה" -#: ../src/verbs.cpp:2227 +#: ../src/verbs.cpp:2282 msgid "Duplic_ate" -msgstr "" +msgstr "_שכפל" -#: ../src/verbs.cpp:2228 +#: ../src/verbs.cpp:2283 msgid "Duplicate selected objects" -msgstr "" +msgstr "שכפל את הפריטים הנבחרים" -#: ../src/verbs.cpp:2229 +#: ../src/verbs.cpp:2284 msgid "Create Clo_ne" -msgstr "" +msgstr "צור כ_פיל" -#: ../src/verbs.cpp:2230 +#: ../src/verbs.cpp:2285 msgid "Create a clone (a copy linked to the original) of selected object" -msgstr "" +msgstr "צור כפיל (העתק המקושר למקור) של הפריט הנבחר" -#: ../src/verbs.cpp:2231 +#: ../src/verbs.cpp:2286 msgid "Unlin_k Clone" -msgstr "" +msgstr "× _תק כפיל" -#: ../src/verbs.cpp:2232 -msgid "" -"Cut the selected clone's link to its original, turning it into a standalone " -"object" -msgstr "" +#: ../src/verbs.cpp:2287 +msgid "Cut the selected clones' links to the originals, turning them into standalone objects" +msgstr "חתוך את קישורי הכפילים הנבחרים אל המקור שלהם, ובכך יהפכו לפריטים בפני עצמם" -#: ../src/verbs.cpp:2233 +#: ../src/verbs.cpp:2288 +msgid "Relink to Copied" +msgstr "קשר מחדש אל המועתק" + +#: ../src/verbs.cpp:2289 +msgid "Relink the selected clones to the object currently on the clipboard" +msgstr "קשר את הכפילים הנבחרים לפריט שנמצא כרגע בלוח הגזירים" + +#: ../src/verbs.cpp:2290 msgid "Select _Original" -msgstr "" +msgstr "בחר את ה_מקור" -#: ../src/verbs.cpp:2234 +#: ../src/verbs.cpp:2291 msgid "Select the object to which the selected clone is linked" -msgstr "" +msgstr "בחר את הפריט שאליו הכפיל מקושר" #. TRANSLATORS: Convert selection to a line marker -#: ../src/verbs.cpp:2236 +#: ../src/verbs.cpp:2293 msgid "Objects to _Marker" -msgstr "" +msgstr "פריטים ל_סמנים" -#: ../src/verbs.cpp:2237 +#: ../src/verbs.cpp:2294 msgid "Convert selection to a line marker" -msgstr "" +msgstr "המר אתהבחירה לקו סימון" #. TRANSLATORS: Convert selection to a collection of guidelines -#: ../src/verbs.cpp:2239 +#: ../src/verbs.cpp:2296 msgid "Objects to Gu_ides" -msgstr "" +msgstr "פריטים לק_ווים מנחים" -#: ../src/verbs.cpp:2240 -msgid "" -"Convert selected objects to a collection of guidelines aligned with their " -"edges" -msgstr "" +#: ../src/verbs.cpp:2297 +msgid "Convert selected objects to a collection of guidelines aligned with their edges" +msgstr "המר את הפריטים הנבחרים לאוסף של קווים מנחים המיושרים לקצוותיהם" #. TRANSLATORS: Convert selection to a rectangle with tiled pattern fill -#: ../src/verbs.cpp:2242 +#: ../src/verbs.cpp:2299 msgid "Objects to Patter_n" -msgstr "" +msgstr "פריטים לתב_נית" -#: ../src/verbs.cpp:2243 +#: ../src/verbs.cpp:2300 msgid "Convert selection to a rectangle with tiled pattern fill" -msgstr "" +msgstr "המר את הבחירה למרובע בעל מילוי תבניתי מרוצף" #. TRANSLATORS: Extract objects from a tiled pattern fill -#: ../src/verbs.cpp:2245 +#: ../src/verbs.cpp:2302 msgid "Pattern to _Objects" -msgstr "" +msgstr "תבנית ל_פריטים" -#: ../src/verbs.cpp:2246 +#: ../src/verbs.cpp:2303 msgid "Extract objects from a tiled pattern fill" -msgstr "" +msgstr "חלץ פריטים ממילוי תבניתי מרוצף" -#: ../src/verbs.cpp:2247 +#: ../src/verbs.cpp:2304 msgid "Clea_r All" -msgstr "" +msgstr "× _קה הכל" -#: ../src/verbs.cpp:2248 +#: ../src/verbs.cpp:2305 msgid "Delete all objects from document" -msgstr "מחק את כל האוביקטים מן המסמך" +msgstr "מחק את כל הפריטים מהמסמך" -#: ../src/verbs.cpp:2249 +#: ../src/verbs.cpp:2306 msgid "Select Al_l" msgstr "בחר ה_כל" -#: ../src/verbs.cpp:2250 +#: ../src/verbs.cpp:2307 msgid "Select all objects or all nodes" -msgstr "" +msgstr "בחר את כל הפריטים או את כל המפרקים" -#: ../src/verbs.cpp:2251 +#: ../src/verbs.cpp:2308 msgid "Select All in All La_yers" -msgstr "" +msgstr "בחר הכל בכל ה_שכבות" -#: ../src/verbs.cpp:2252 +#: ../src/verbs.cpp:2309 msgid "Select all objects in all visible and unlocked layers" -msgstr "" +msgstr "בחר את כל הפריטים בכל השכבות הנראות והמשוחררות" -#: ../src/verbs.cpp:2253 +#: ../src/verbs.cpp:2310 msgid "In_vert Selection" -msgstr "" +msgstr "הפוך _בחירה" -#: ../src/verbs.cpp:2254 +#: ../src/verbs.cpp:2311 msgid "Invert selection (unselect what is selected and select everything else)" -msgstr "" +msgstr "הפוך את הבחירה (אל תבחר את מה שנבחר ובחר את כל השאר)" -#: ../src/verbs.cpp:2255 +#: ../src/verbs.cpp:2312 msgid "Invert in All Layers" -msgstr "" +msgstr "הפוך בכל השכבות" -#: ../src/verbs.cpp:2256 +#: ../src/verbs.cpp:2313 msgid "Invert selection in all visible and unlocked layers" -msgstr "" +msgstr "הפוך את הבחירה בכל השכבות הנראות והמשוחררות" -#: ../src/verbs.cpp:2257 +#: ../src/verbs.cpp:2314 msgid "Select Next" -msgstr "" +msgstr "בחר את הבא" -#: ../src/verbs.cpp:2258 +#: ../src/verbs.cpp:2315 msgid "Select next object or node" -msgstr "" +msgstr "בחר את הפריט או המפרק הבא" -#: ../src/verbs.cpp:2259 +#: ../src/verbs.cpp:2316 msgid "Select Previous" -msgstr "" +msgstr "בחר את הקודם" -#: ../src/verbs.cpp:2260 +#: ../src/verbs.cpp:2317 msgid "Select previous object or node" -msgstr "" +msgstr "בחר את הפריט או המפרק הקודם" -#: ../src/verbs.cpp:2261 +#: ../src/verbs.cpp:2318 msgid "D_eselect" -msgstr "" +msgstr "בטל ב_חירה" -#: ../src/verbs.cpp:2262 +#: ../src/verbs.cpp:2319 msgid "Deselect any selected objects or nodes" -msgstr "" +msgstr "בטל את בחירת המפרקים או הפריטים שנבחרו" -#: ../src/verbs.cpp:2263 +#: ../src/verbs.cpp:2320 msgid "_Guides around page" -msgstr "" +msgstr "_קווים מנחים מסביב לעמוד" -#: ../src/verbs.cpp:2264 +#: ../src/verbs.cpp:2321 msgid "Create four guides aligned with the page borders" -msgstr "" +msgstr "צור ארבעה קווים מנחים המיושרים עם גבולות העמוד" -#: ../src/verbs.cpp:2265 +#: ../src/verbs.cpp:2322 msgid "Next Path Effect Parameter" -msgstr "" +msgstr "פרמטר אפקט הנתיב הבא" -#: ../src/verbs.cpp:2266 +#: ../src/verbs.cpp:2323 msgid "Show next Path Effect parameter for editing" -msgstr "" +msgstr "הצג את פרמטר אפקט הנתיב הבא לעריכה" #. Selection -#: ../src/verbs.cpp:2269 +#: ../src/verbs.cpp:2326 msgid "Raise to _Top" -msgstr "" +msgstr "הגבה ל_עליון" -#: ../src/verbs.cpp:2270 +#: ../src/verbs.cpp:2327 msgid "Raise selection to top" -msgstr "" +msgstr "הגבה את הבחירה כך שתהיה עליונה" -#: ../src/verbs.cpp:2271 +#: ../src/verbs.cpp:2328 msgid "Lower to _Bottom" -msgstr "" +msgstr "הנמך ל_תחתית" -#: ../src/verbs.cpp:2272 +#: ../src/verbs.cpp:2329 msgid "Lower selection to bottom" -msgstr "" +msgstr "הנמך את הבחירה לתחתית" -#: ../src/verbs.cpp:2273 +#: ../src/verbs.cpp:2330 msgid "_Raise" -msgstr "" +msgstr "ה_גבה" -#: ../src/verbs.cpp:2274 +#: ../src/verbs.cpp:2331 msgid "Raise selection one step" -msgstr "" +msgstr "הגבה את הבחירה בצעד אחד" -#: ../src/verbs.cpp:2275 +#: ../src/verbs.cpp:2332 msgid "_Lower" -msgstr "" +msgstr "ה_נמך" -#: ../src/verbs.cpp:2276 +#: ../src/verbs.cpp:2333 msgid "Lower selection one step" -msgstr "" +msgstr "הנמך את הבחירה בצעד אחד" -#: ../src/verbs.cpp:2277 +#: ../src/verbs.cpp:2334 msgid "_Group" -msgstr "" +msgstr "_קבץ" -#: ../src/verbs.cpp:2278 +#: ../src/verbs.cpp:2335 msgid "Group selected objects" -msgstr "" +msgstr "קבץ את הפריטים הנבחרים" -#: ../src/verbs.cpp:2280 +#: ../src/verbs.cpp:2337 msgid "Ungroup selected groups" -msgstr "" +msgstr "פרק את הקבוצות הנבחרות" -#: ../src/verbs.cpp:2282 +#: ../src/verbs.cpp:2339 msgid "_Put on Path" -msgstr "" +msgstr "ה_צמד לנתיב" -#: ../src/verbs.cpp:2284 +#: ../src/verbs.cpp:2341 msgid "_Remove from Path" -msgstr "" +msgstr "ה_סר מנתיב" -#: ../src/verbs.cpp:2286 +#: ../src/verbs.cpp:2343 msgid "Remove Manual _Kerns" -msgstr "" +msgstr "הסר ריווח י_דני" #. TRANSLATORS: "glyph": An image used in the visual representation of characters; #. roughly speaking, how a character looks. A font is a set of glyphs. -#: ../src/verbs.cpp:2289 +#: ../src/verbs.cpp:2346 msgid "Remove all manual kerns and glyph rotations from a text object" -msgstr "" +msgstr "הסר את כל שינוי מרווחי האותיות הידני וסיבובי התווים מפריט הטקסט" -#: ../src/verbs.cpp:2291 +#: ../src/verbs.cpp:2348 msgid "_Union" -msgstr "" +msgstr "_איחוד" -#: ../src/verbs.cpp:2292 +#: ../src/verbs.cpp:2349 msgid "Create union of selected paths" -msgstr "" +msgstr "צור איחוד של הנתיבים הנבחרים" -#: ../src/verbs.cpp:2293 +#: ../src/verbs.cpp:2350 msgid "_Intersection" -msgstr "" +msgstr "_הצטלבות" -#: ../src/verbs.cpp:2294 +#: ../src/verbs.cpp:2351 msgid "Create intersection of selected paths" -msgstr "" +msgstr "צור את הצטלבות הנתיבים הנבחרים" -#: ../src/verbs.cpp:2295 +#: ../src/verbs.cpp:2352 msgid "_Difference" -msgstr "" +msgstr "ה_בדל" -#: ../src/verbs.cpp:2296 +#: ../src/verbs.cpp:2353 msgid "Create difference of selected paths (bottom minus top)" -msgstr "" +msgstr "צור את הבדל הנתיבים הנבחרים (תחתון פחות עליון)" -#: ../src/verbs.cpp:2297 +#: ../src/verbs.cpp:2354 msgid "E_xclusion" -msgstr "" +msgstr "אי ה_כללה" -#: ../src/verbs.cpp:2298 -msgid "" -"Create exclusive OR of selected paths (those parts that belong to only one " -"path)" -msgstr "" +#: ../src/verbs.cpp:2355 +msgid "Create exclusive OR of selected paths (those parts that belong to only one path)" +msgstr "צור \"או\" בלעדי של הנתיבים הנבחרים (החלקים השייכים לנתיב אחד בלבד)" -#: ../src/verbs.cpp:2299 +#: ../src/verbs.cpp:2356 msgid "Di_vision" -msgstr "" +msgstr "ח_לוקה" -#: ../src/verbs.cpp:2300 +#: ../src/verbs.cpp:2357 msgid "Cut the bottom path into pieces" -msgstr "" +msgstr "חתוך את הנתיב התחתון לחתיכות" #. TRANSLATORS: "to cut a path" is not the same as "to break a path apart" - see the #. Advanced tutorial for more info -#: ../src/verbs.cpp:2303 +#: ../src/verbs.cpp:2360 msgid "Cut _Path" -msgstr "" +msgstr "חתוך _נתיב" -#: ../src/verbs.cpp:2304 +#: ../src/verbs.cpp:2361 msgid "Cut the bottom path's stroke into pieces, removing fill" -msgstr "" +msgstr "חתוך את קו המתאר של הנתיב התחתון לחתיכות, המילוי יוסר" #. TRANSLATORS: "outset": expand a shape by offsetting the object's path, #. i.e. by displacing it perpendicular to the path in each point. #. See also the Advanced Tutorial for explanation. -#: ../src/verbs.cpp:2308 +#: ../src/verbs.cpp:2365 msgid "Outs_et" -msgstr "" +msgstr "ה_רחב" -#: ../src/verbs.cpp:2309 +#: ../src/verbs.cpp:2366 msgid "Outset selected paths" -msgstr "" +msgstr "הרחב את הנתיבים הנבחרים" -#: ../src/verbs.cpp:2311 +#: ../src/verbs.cpp:2368 msgid "O_utset Path by 1 px" -msgstr "" +msgstr "הרחב את הנ_תיבים בפיקסל 1" -#: ../src/verbs.cpp:2312 +#: ../src/verbs.cpp:2369 msgid "Outset selected paths by 1 px" -msgstr "" +msgstr "הרחב את הנתיבים בפיקסל 1" -#: ../src/verbs.cpp:2314 +#: ../src/verbs.cpp:2371 msgid "O_utset Path by 10 px" -msgstr "" +msgstr "הרחב את הנתיבים ב־10 פי_קסלים" -#: ../src/verbs.cpp:2315 +#: ../src/verbs.cpp:2372 msgid "Outset selected paths by 10 px" -msgstr "" +msgstr "הרחב את הבחירה ב־10 פיקסלים" #. TRANSLATORS: "inset": contract a shape by offsetting the object's path, #. i.e. by displacing it perpendicular to the path in each point. #. See also the Advanced Tutorial for explanation. -#: ../src/verbs.cpp:2319 +#: ../src/verbs.cpp:2376 msgid "I_nset" -msgstr "" +msgstr "_צמצם" -#: ../src/verbs.cpp:2320 +#: ../src/verbs.cpp:2377 msgid "Inset selected paths" -msgstr "" +msgstr "צמצם את הנתיבים הנבחרים" -#: ../src/verbs.cpp:2322 +#: ../src/verbs.cpp:2379 msgid "I_nset Path by 1 px" -msgstr "" +msgstr "_צמצם בפיקסל 1" -#: ../src/verbs.cpp:2323 +#: ../src/verbs.cpp:2380 msgid "Inset selected paths by 1 px" -msgstr "" +msgstr "צמצם את הנתיבים הנבחרים בפיקסל 1" -#: ../src/verbs.cpp:2325 +#: ../src/verbs.cpp:2382 msgid "I_nset Path by 10 px" -msgstr "" +msgstr "_צמצם את הנתיב ב־10 פיקסלים" -#: ../src/verbs.cpp:2326 +#: ../src/verbs.cpp:2383 msgid "Inset selected paths by 10 px" -msgstr "" +msgstr "צמצם את הנתיבים הנבחרים ב־10 פיקסלים" -#: ../src/verbs.cpp:2328 +#: ../src/verbs.cpp:2385 msgid "D_ynamic Offset" -msgstr "" +msgstr "קיזוז _דינאמי" -#: ../src/verbs.cpp:2328 +#: ../src/verbs.cpp:2385 msgid "Create a dynamic offset object" -msgstr "" +msgstr "צור פריט בעל קיזוז דינאמי" -#: ../src/verbs.cpp:2330 +#: ../src/verbs.cpp:2387 msgid "_Linked Offset" -msgstr "" +msgstr "קיזוז מ_קושר" -#: ../src/verbs.cpp:2331 +#: ../src/verbs.cpp:2388 msgid "Create a dynamic offset object linked to the original path" -msgstr "" +msgstr "צור פריט קיזוז דנאמי המקושר לנתיב המקורי" -#: ../src/verbs.cpp:2333 +#: ../src/verbs.cpp:2390 msgid "_Stroke to Path" -msgstr "" +msgstr "קו מ_תאר לנתיב" -#: ../src/verbs.cpp:2334 +#: ../src/verbs.cpp:2391 msgid "Convert selected object's stroke to paths" -msgstr "" +msgstr "המר את קווי המתאר של הפריטים הנבחרים לנתיבים" -#: ../src/verbs.cpp:2335 +#: ../src/verbs.cpp:2392 msgid "Si_mplify" -msgstr "" +msgstr "הפ_שט" -#: ../src/verbs.cpp:2336 +#: ../src/verbs.cpp:2393 msgid "Simplify selected paths (remove extra nodes)" -msgstr "" +msgstr "פשט את הנתיבים הנבחרים (הסר מפרקים נוספים)" -#: ../src/verbs.cpp:2337 +#: ../src/verbs.cpp:2394 msgid "_Reverse" -msgstr "" +msgstr "_סדר הפוך" -#: ../src/verbs.cpp:2338 +#: ../src/verbs.cpp:2395 msgid "Reverse the direction of selected paths (useful for flipping markers)" -msgstr "" +msgstr "הפוך את הכיוון של הנתיבים הנבחרים (שימושי להפיכת סמנים)" #. TRANSLATORS: "to trace" means "to convert a bitmap to vector graphics" (to vectorize) -#: ../src/verbs.cpp:2340 +#: ../src/verbs.cpp:2397 msgid "_Trace Bitmap..." -msgstr "" +msgstr "_עקוב אחר מפת סיביות..." -#: ../src/verbs.cpp:2341 +#: ../src/verbs.cpp:2398 msgid "Create one or more paths from a bitmap by tracing it" -msgstr "" +msgstr "צור נתיב אחד או יותר ממפת סיביות על ידי מעקב אחריו" -#: ../src/verbs.cpp:2342 +#: ../src/verbs.cpp:2399 msgid "_Make a Bitmap Copy" -msgstr "" +msgstr "_צור עותק מפת סיביות" -#: ../src/verbs.cpp:2343 +#: ../src/verbs.cpp:2400 msgid "Export selection to a bitmap and insert it into document" -msgstr "" +msgstr "ייצא את הבחירה למפת סיביות והכנס אותה לתוך מסמך" -#: ../src/verbs.cpp:2344 +#: ../src/verbs.cpp:2401 msgid "_Combine" -msgstr "" +msgstr "_שלב" -#: ../src/verbs.cpp:2345 +#: ../src/verbs.cpp:2402 msgid "Combine several paths into one" -msgstr "" +msgstr "שלב מספר נתיבים לאחד" #. TRANSLATORS: "to cut a path" is not the same as "to break a path apart" - see the #. Advanced tutorial for more info -#: ../src/verbs.cpp:2348 +#: ../src/verbs.cpp:2405 msgid "Break _Apart" -msgstr "" +msgstr "_פרק" -#: ../src/verbs.cpp:2349 +#: ../src/verbs.cpp:2406 msgid "Break selected paths into subpaths" -msgstr "" +msgstr "הפרד את הנתיבים הנבחרים לתת נתיבים" -#: ../src/verbs.cpp:2350 +#: ../src/verbs.cpp:2407 msgid "Rows and Columns..." -msgstr "" +msgstr "טורים ועמודות..." -#: ../src/verbs.cpp:2351 +#: ../src/verbs.cpp:2408 msgid "Arrange selected objects in a table" -msgstr "" +msgstr "סדר את האוייקטים הנבחרים בטבלה" #. Layer -#: ../src/verbs.cpp:2353 +#: ../src/verbs.cpp:2410 msgid "_Add Layer..." -msgstr "" +msgstr "_הוסף שכבה..." -#: ../src/verbs.cpp:2354 +#: ../src/verbs.cpp:2411 msgid "Create a new layer" -msgstr "" +msgstr "צור שכבה חדשה" -#: ../src/verbs.cpp:2355 +#: ../src/verbs.cpp:2412 msgid "Re_name Layer..." -msgstr "" +msgstr "ש_נה את שם השכבה..." -#: ../src/verbs.cpp:2356 +#: ../src/verbs.cpp:2413 msgid "Rename the current layer" -msgstr "" +msgstr "שנה את שם השכבה הנוכחית" -#: ../src/verbs.cpp:2357 +#: ../src/verbs.cpp:2414 msgid "Switch to Layer Abov_e" -msgstr "" +msgstr "עבור לשכבה מלמ_עלה" -#: ../src/verbs.cpp:2358 +#: ../src/verbs.cpp:2415 msgid "Switch to the layer above the current" -msgstr "" +msgstr "עבור לשכבה שמעל לנוכחית" -#: ../src/verbs.cpp:2359 +#: ../src/verbs.cpp:2416 msgid "Switch to Layer Belo_w" -msgstr "" +msgstr "עבור לשכבה מלמ_טה" -#: ../src/verbs.cpp:2360 +#: ../src/verbs.cpp:2417 msgid "Switch to the layer below the current" -msgstr "" +msgstr "עבור לשכבה שמעל לנוכחית" -#: ../src/verbs.cpp:2361 +#: ../src/verbs.cpp:2418 msgid "Move Selection to Layer Abo_ve" -msgstr "" +msgstr "העבר את הבחירה לשכבה שמ_על" -#: ../src/verbs.cpp:2362 +#: ../src/verbs.cpp:2419 msgid "Move selection to the layer above the current" -msgstr "" +msgstr "העבר את הבחירה לשכבה שמעל לנוכחית" -#: ../src/verbs.cpp:2363 +#: ../src/verbs.cpp:2420 msgid "Move Selection to Layer Bel_ow" -msgstr "" +msgstr "העבר את הבחירה לשכבה שמת_חת" -#: ../src/verbs.cpp:2364 +#: ../src/verbs.cpp:2421 msgid "Move selection to the layer below the current" -msgstr "" +msgstr "העבר את הבחירה לשכבה שמתחת לנוכחית" -#: ../src/verbs.cpp:2365 +#: ../src/verbs.cpp:2422 msgid "Layer to _Top" -msgstr "" +msgstr "הפוך שכבה ל_עליונה" -#: ../src/verbs.cpp:2366 +#: ../src/verbs.cpp:2423 msgid "Raise the current layer to the top" -msgstr "" +msgstr "הפוך את השכבה הנוכחית לעליונה" -#: ../src/verbs.cpp:2367 +#: ../src/verbs.cpp:2424 msgid "Layer to _Bottom" -msgstr "" +msgstr "שכבה ל_תחתית" -#: ../src/verbs.cpp:2368 +#: ../src/verbs.cpp:2425 msgid "Lower the current layer to the bottom" -msgstr "" +msgstr "הורד את השכבה הנוכחית לתחתית" -#: ../src/verbs.cpp:2369 +#: ../src/verbs.cpp:2426 msgid "_Raise Layer" -msgstr "" +msgstr "ה_עלה את השכבה" -#: ../src/verbs.cpp:2370 +#: ../src/verbs.cpp:2427 msgid "Raise the current layer" -msgstr "" +msgstr "העלה את השכבה הנוכחית" -#: ../src/verbs.cpp:2371 +#: ../src/verbs.cpp:2428 msgid "_Lower Layer" -msgstr "" +msgstr "ה_ורד את השכבה" -#: ../src/verbs.cpp:2372 +#: ../src/verbs.cpp:2429 msgid "Lower the current layer" -msgstr "" +msgstr "הורד את השכבה הנוכחית" + +#: ../src/verbs.cpp:2430 +msgid "Duplicate Current Layer..." +msgstr "שכפל את השכבה הנוכחית..." + +#: ../src/verbs.cpp:2431 +msgid "Duplicate an existing layer" +msgstr "שכפל שכבה נוכחית" -#: ../src/verbs.cpp:2373 +#: ../src/verbs.cpp:2432 msgid "_Delete Current Layer" -msgstr "" +msgstr "_מחק את השכבה הנוכחית" -#: ../src/verbs.cpp:2374 +#: ../src/verbs.cpp:2433 msgid "Delete the current layer" -msgstr "" +msgstr "מחק את השכבה הנוכחית" + +#: ../src/verbs.cpp:2434 +msgid "_Show/hide other layers" +msgstr "ה_צג/הסתר את השכבות האחרות" + +#: ../src/verbs.cpp:2435 +msgid "Solo the current layer" +msgstr "בודד את השכבה הנוכחית" #. Object -#: ../src/verbs.cpp:2377 +#: ../src/verbs.cpp:2438 msgid "Rotate _90° CW" -msgstr "" +msgstr "הטה ב־_90° עכ\"ש" #. This is shared between tooltips and statusbar, so they #. must use UTF-8, not HTML entities for special characters. -#: ../src/verbs.cpp:2380 +#: ../src/verbs.cpp:2441 msgid "Rotate selection 90° clockwise" -msgstr "" +msgstr "הטה את הבחירה ב־90° עם כיוון השעון" -#: ../src/verbs.cpp:2381 +#: ../src/verbs.cpp:2442 msgid "Rotate 9_0° CCW" -msgstr "" +msgstr "הטה ב־9_0° נכ\"ש" #. This is shared between tooltips and statusbar, so they #. must use UTF-8, not HTML entities for special characters. -#: ../src/verbs.cpp:2384 +#: ../src/verbs.cpp:2445 msgid "Rotate selection 90° counter-clockwise" -msgstr "" +msgstr "הטה אתר הבחירה ב־90° נגד כיוון השעון" -#: ../src/verbs.cpp:2385 +#: ../src/verbs.cpp:2446 msgid "Remove _Transformations" -msgstr "" +msgstr "הסר _שינויי צורה" -#: ../src/verbs.cpp:2386 +#: ../src/verbs.cpp:2447 msgid "Remove transformations from object" -msgstr "" +msgstr "הסר את שינויי הצורה מהפריט" -#: ../src/verbs.cpp:2387 +#: ../src/verbs.cpp:2448 msgid "_Object to Path" -msgstr "" +msgstr "_פריט לנתיב" -#: ../src/verbs.cpp:2388 +#: ../src/verbs.cpp:2449 msgid "Convert selected object to path" -msgstr "" +msgstr "המר את הפריט הנבחר לנתיב" -#: ../src/verbs.cpp:2389 +#: ../src/verbs.cpp:2450 msgid "_Flow into Frame" -msgstr "" +msgstr "_הצף לתוך המסגרת" -#: ../src/verbs.cpp:2390 -msgid "" -"Put text into a frame (path or shape), creating a flowed text linked to the " -"frame object" -msgstr "" +#: ../src/verbs.cpp:2451 +msgid "Put text into a frame (path or shape), creating a flowed text linked to the frame object" +msgstr "שים טקסט בתוך המסגרת (נתיב או צורה), ובכך יווצר טקסט צף המקושר לפריט מסגרת" -#: ../src/verbs.cpp:2391 +#: ../src/verbs.cpp:2452 msgid "_Unflow" -msgstr "" +msgstr "_טיבוע" -#: ../src/verbs.cpp:2392 +#: ../src/verbs.cpp:2453 msgid "Remove text from frame (creates a single-line text object)" -msgstr "" +msgstr "הסר טקסט מהמסגרת (יוצר פריט טקסט בשורה אחת)" -#: ../src/verbs.cpp:2393 +#: ../src/verbs.cpp:2454 msgid "_Convert to Text" -msgstr "" +msgstr "ה_מר לטקסט" -#: ../src/verbs.cpp:2394 +#: ../src/verbs.cpp:2455 msgid "Convert flowed text to regular text object (preserves appearance)" -msgstr "" +msgstr "המר טקסט צף לפריט טקסט רגיל (שומר על חזותו)" -#: ../src/verbs.cpp:2396 +#: ../src/verbs.cpp:2457 msgid "Flip _Horizontal" -msgstr "" +msgstr "הפוך או_פקית" -#: ../src/verbs.cpp:2396 +#: ../src/verbs.cpp:2457 msgid "Flip selected objects horizontally" -msgstr "" +msgstr "הפוך את הפריטים הנבחרים אופקית" -#: ../src/verbs.cpp:2399 +#: ../src/verbs.cpp:2460 msgid "Flip _Vertical" -msgstr "" +msgstr "הפוך א_נכית" -#: ../src/verbs.cpp:2399 +#: ../src/verbs.cpp:2460 msgid "Flip selected objects vertically" -msgstr "" +msgstr "הפוך את הפריטים הנבחרים אנכית" -#: ../src/verbs.cpp:2402 +#: ../src/verbs.cpp:2463 msgid "Apply mask to selection (using the topmost object as mask)" -msgstr "" +msgstr "החל מסכה על הבחירה (על ידי שימוש בפריט העליון ביותר כמסכה)" -#: ../src/verbs.cpp:2404 +#: ../src/verbs.cpp:2465 msgid "Edit mask" -msgstr "" +msgstr "ערוך מסכה" -#: ../src/verbs.cpp:2405 ../src/verbs.cpp:2411 +#: ../src/verbs.cpp:2466 +#: ../src/verbs.cpp:2472 msgid "_Release" -msgstr "" +msgstr "_שחרר" -#: ../src/verbs.cpp:2406 +#: ../src/verbs.cpp:2467 msgid "Remove mask from selection" -msgstr "" +msgstr "שחרר את המסכה מהבחירה" -#: ../src/verbs.cpp:2408 -msgid "" -"Apply clipping path to selection (using the topmost object as clipping path)" -msgstr "" +#: ../src/verbs.cpp:2469 +msgid "Apply clipping path to selection (using the topmost object as clipping path)" +msgstr "החל נתיב חיתוך על הבחירה (על ידי שימוש בפריט העליון ביותר כנתיב חיתוך)" -#: ../src/verbs.cpp:2410 ../src/widgets/toolbox.cpp:1222 +#: ../src/verbs.cpp:2471 +#: ../src/widgets/toolbox.cpp:1429 msgid "Edit clipping path" -msgstr "" +msgstr "ערוך את נתיב הקליפ" -#: ../src/verbs.cpp:2412 +#: ../src/verbs.cpp:2473 msgid "Remove clipping path from selection" -msgstr "" +msgstr "הסר נתיב חיתוך מהבחירה" #. Tools -#: ../src/verbs.cpp:2415 +#: ../src/verbs.cpp:2476 msgid "Select" -msgstr "" +msgstr "בחר" -#: ../src/verbs.cpp:2416 +#: ../src/verbs.cpp:2477 msgid "Select and transform objects" -msgstr "" +msgstr "בחר ושנה את צורתם של פריטים" -#: ../src/verbs.cpp:2417 +#: ../src/verbs.cpp:2478 msgid "Node Edit" -msgstr "" +msgstr "עריכת נתיבים" -#: ../src/verbs.cpp:2418 +#: ../src/verbs.cpp:2479 msgid "Edit paths by nodes" -msgstr "" +msgstr "ערוך נתיבים לפי מפרקים" -#: ../src/verbs.cpp:2420 +#: ../src/verbs.cpp:2481 msgid "Tweak objects by sculpting or painting" -msgstr "" +msgstr "וסת פריטים על ידי גילוף או ציור" -#: ../src/verbs.cpp:2422 +#: ../src/verbs.cpp:2483 msgid "Create rectangles and squares" -msgstr "" +msgstr "צור מרובעים וריבועים" -#: ../src/verbs.cpp:2424 +#: ../src/verbs.cpp:2485 msgid "Create 3D boxes" -msgstr "" +msgstr "צור תיבות תלת מימדיות" -#: ../src/verbs.cpp:2426 +#: ../src/verbs.cpp:2487 msgid "Create circles, ellipses, and arcs" -msgstr "" +msgstr "צור עיגולים, אליפסות וקשתות" -#: ../src/verbs.cpp:2428 +#: ../src/verbs.cpp:2489 msgid "Create stars and polygons" -msgstr "" +msgstr "צור כוכבים ומצולעים" -#: ../src/verbs.cpp:2430 +#: ../src/verbs.cpp:2491 msgid "Create spirals" -msgstr "" +msgstr "צור ספירלות" -#: ../src/verbs.cpp:2432 +#: ../src/verbs.cpp:2493 msgid "Draw freehand lines" -msgstr "" +msgstr "צייר קווים ביד חופשית" -#: ../src/verbs.cpp:2434 +#: ../src/verbs.cpp:2495 msgid "Draw Bezier curves and straight lines" -msgstr "" +msgstr "צייר עקומות בזייה וקווים ישרים" -#: ../src/verbs.cpp:2436 +#: ../src/verbs.cpp:2497 msgid "Draw calligraphic or brush strokes" -msgstr "" +msgstr "צייר קווי מתאר קליגרפיים או כמברשת" -#: ../src/verbs.cpp:2438 +#: ../src/verbs.cpp:2499 msgid "Create and edit text objects" -msgstr "" +msgstr "צור וערוך פריטי טקסט" -#: ../src/verbs.cpp:2440 +#: ../src/verbs.cpp:2501 msgid "Create and edit gradients" -msgstr "" +msgstr "צור וערוך מדרגים" -#: ../src/verbs.cpp:2442 +#: ../src/verbs.cpp:2503 msgid "Zoom in or out" -msgstr "" +msgstr "התקרב או התרחק" -#: ../src/verbs.cpp:2444 +#: ../src/verbs.cpp:2505 msgid "Pick colors from image" -msgstr "" +msgstr "בחר צבעים מהתמונה" -#: ../src/verbs.cpp:2446 +#: ../src/verbs.cpp:2507 msgid "Create diagram connectors" -msgstr "" +msgstr "צור מחברי תרשים" -#: ../src/verbs.cpp:2448 +#: ../src/verbs.cpp:2509 msgid "Fill bounded areas" -msgstr "" +msgstr "מלא איזורים תחומים" -#: ../src/verbs.cpp:2449 +#: ../src/verbs.cpp:2510 msgid "LPE Edit" -msgstr "" +msgstr "ערוך LPE" -#: ../src/verbs.cpp:2450 +#: ../src/verbs.cpp:2511 msgid "Edit Live Path Effect parameters" -msgstr "" +msgstr "ערוך את הפרמטרים של האפקט החי" -#: ../src/verbs.cpp:2452 +#: ../src/verbs.cpp:2513 msgid "Erase existing paths" -msgstr "" +msgstr "מחק נתיבים קיימים" + +#: ../src/verbs.cpp:2515 +msgid "Do geometric constructions" +msgstr "בצע בניות גאומטריות" #. Tool prefs -#: ../src/verbs.cpp:2454 +#: ../src/verbs.cpp:2517 msgid "Selector Preferences" -msgstr "" +msgstr "העדפות כלי הבחירה" -#: ../src/verbs.cpp:2455 +#: ../src/verbs.cpp:2518 msgid "Open Preferences for the Selector tool" -msgstr "" +msgstr "פתח את העדפות כלי הבחירה" -#: ../src/verbs.cpp:2456 +#: ../src/verbs.cpp:2519 msgid "Node Tool Preferences" -msgstr "" +msgstr "העדפות כלי המפרק" -#: ../src/verbs.cpp:2457 +#: ../src/verbs.cpp:2520 msgid "Open Preferences for the Node tool" -msgstr "" +msgstr "פתח העדפות עבור כלי המפרק" -#: ../src/verbs.cpp:2458 +#: ../src/verbs.cpp:2521 msgid "Tweak Tool Preferences" -msgstr "" +msgstr "העדפות כלי הויסות" -#: ../src/verbs.cpp:2459 +#: ../src/verbs.cpp:2522 msgid "Open Preferences for the Tweak tool" -msgstr "" +msgstr "פתח העדפות עבור כלי הויסות" -#: ../src/verbs.cpp:2460 +#: ../src/verbs.cpp:2523 msgid "Rectangle Preferences" -msgstr "" +msgstr "העדפות כלי המרובע" -#: ../src/verbs.cpp:2461 +#: ../src/verbs.cpp:2524 msgid "Open Preferences for the Rectangle tool" -msgstr "" +msgstr "פתח העדפות עבור כלי המרובע" -#: ../src/verbs.cpp:2462 +#: ../src/verbs.cpp:2525 msgid "3D Box Preferences" -msgstr "" +msgstr "העדפות תיבה תלת מימדית" -#: ../src/verbs.cpp:2463 +#: ../src/verbs.cpp:2526 msgid "Open Preferences for the 3D Box tool" -msgstr "" +msgstr "פתח את ההעדפות עבור כלי תיבות התלת מימד" -#: ../src/verbs.cpp:2464 +#: ../src/verbs.cpp:2527 msgid "Ellipse Preferences" -msgstr "" +msgstr "העדפות כלי האליפסה" -#: ../src/verbs.cpp:2465 +#: ../src/verbs.cpp:2528 msgid "Open Preferences for the Ellipse tool" -msgstr "" +msgstr "פתח את ההעדפות עבור כלי האליפסות" -#: ../src/verbs.cpp:2466 +#: ../src/verbs.cpp:2529 msgid "Star Preferences" -msgstr "" +msgstr "העדפות כלי הכוכב" -#: ../src/verbs.cpp:2467 +#: ../src/verbs.cpp:2530 msgid "Open Preferences for the Star tool" -msgstr "" +msgstr "פתח את ההעדפות עבור כלי הכוכבים" -#: ../src/verbs.cpp:2468 +#: ../src/verbs.cpp:2531 msgid "Spiral Preferences" -msgstr "" +msgstr "העדפות כלי הספירלה" -#: ../src/verbs.cpp:2469 +#: ../src/verbs.cpp:2532 msgid "Open Preferences for the Spiral tool" -msgstr "" +msgstr "פתח את ההעדפות עבור כלי הספירלות" -#: ../src/verbs.cpp:2470 +#: ../src/verbs.cpp:2533 msgid "Pencil Preferences" -msgstr "" +msgstr "העדפות כלי העפרון" -#: ../src/verbs.cpp:2471 +#: ../src/verbs.cpp:2534 msgid "Open Preferences for the Pencil tool" -msgstr "" +msgstr "פתח את ההעדפות עבור כלי הציור עפרון" -#: ../src/verbs.cpp:2472 +#: ../src/verbs.cpp:2535 msgid "Pen Preferences" -msgstr "" +msgstr "העדפות כלי העט" -#: ../src/verbs.cpp:2473 +#: ../src/verbs.cpp:2536 msgid "Open Preferences for the Pen tool" -msgstr "" +msgstr "פתח את ההעדפות עבור כלי הציור עט" -#: ../src/verbs.cpp:2474 +#: ../src/verbs.cpp:2537 msgid "Calligraphic Preferences" -msgstr "" +msgstr "העדפות כלי הקליגרפיה" -#: ../src/verbs.cpp:2475 +#: ../src/verbs.cpp:2538 msgid "Open Preferences for the Calligraphy tool" -msgstr "" +msgstr "פתח את ההעדפות עבור כלי הקליגרפיה" -#: ../src/verbs.cpp:2476 +#: ../src/verbs.cpp:2539 msgid "Text Preferences" -msgstr "" +msgstr "העדפות כלי הטקסט" -#: ../src/verbs.cpp:2477 +#: ../src/verbs.cpp:2540 msgid "Open Preferences for the Text tool" -msgstr "" +msgstr "פתח את ההעדפות עבור כלי הטקסט" -#: ../src/verbs.cpp:2478 +#: ../src/verbs.cpp:2541 msgid "Gradient Preferences" -msgstr "" +msgstr "העדפות כלי המדרג" -#: ../src/verbs.cpp:2479 +#: ../src/verbs.cpp:2542 msgid "Open Preferences for the Gradient tool" -msgstr "" +msgstr "פתח את ההעדפות עבור כלי המדרגים" -#: ../src/verbs.cpp:2480 +#: ../src/verbs.cpp:2543 msgid "Zoom Preferences" -msgstr "" +msgstr "העדפות כלי התקריב" -#: ../src/verbs.cpp:2481 +#: ../src/verbs.cpp:2544 msgid "Open Preferences for the Zoom tool" -msgstr "" +msgstr "פתח את ההעדפות עבור כלי התקריבים" -#: ../src/verbs.cpp:2482 +#: ../src/verbs.cpp:2545 msgid "Dropper Preferences" -msgstr "" +msgstr "העדפות כלי הטפטפת" -#: ../src/verbs.cpp:2483 +#: ../src/verbs.cpp:2546 msgid "Open Preferences for the Dropper tool" -msgstr "" +msgstr "פתח את ההעדפות עבור כלי הטפטפת" -#: ../src/verbs.cpp:2484 +#: ../src/verbs.cpp:2547 msgid "Connector Preferences" -msgstr "" +msgstr "העדפות כלי המחבר" -#: ../src/verbs.cpp:2485 +#: ../src/verbs.cpp:2548 msgid "Open Preferences for the Connector tool" -msgstr "" +msgstr "פתח את ההעדפות עבור כלי המחברים" -#: ../src/verbs.cpp:2486 +#: ../src/verbs.cpp:2549 msgid "Paint Bucket Preferences" -msgstr "" +msgstr "העדפות דלי הצבע" -#: ../src/verbs.cpp:2487 +#: ../src/verbs.cpp:2550 msgid "Open Preferences for the Paint Bucket tool" -msgstr "" +msgstr "פתח את ההעדפות עבור כלי דלי הצבע" -#: ../src/verbs.cpp:2488 +#: ../src/verbs.cpp:2551 msgid "Eraser Preferences" -msgstr "" +msgstr "העדפות המחק" -#: ../src/verbs.cpp:2489 +#: ../src/verbs.cpp:2552 msgid "Open Preferences for the Eraser tool" -msgstr "" +msgstr "פתח את חלון ההעדפות עבור כלי המחיקה" + +#: ../src/verbs.cpp:2553 +msgid "LPE Tool Preferences" +msgstr "העדפות כלי אפקטי הנתיב החיים" + +#: ../src/verbs.cpp:2554 +msgid "Open Preferences for the LPETool tool" +msgstr "פתח את ההעדפות עבור כלי אפקטי הנתיב החיים" #. Zoom/View -#: ../src/verbs.cpp:2492 +#: ../src/verbs.cpp:2557 msgid "Zoom In" -msgstr "" +msgstr "התקרב" -#: ../src/verbs.cpp:2492 +#: ../src/verbs.cpp:2557 msgid "Zoom in" -msgstr "" +msgstr "התקרב" -#: ../src/verbs.cpp:2493 +#: ../src/verbs.cpp:2558 msgid "Zoom Out" -msgstr "" +msgstr "התרחק" -#: ../src/verbs.cpp:2493 +#: ../src/verbs.cpp:2558 msgid "Zoom out" -msgstr "" +msgstr "התרחק" -#: ../src/verbs.cpp:2494 +#: ../src/verbs.cpp:2559 msgid "_Rulers" -msgstr "" +msgstr "_סרגלים" -#: ../src/verbs.cpp:2494 +#: ../src/verbs.cpp:2559 msgid "Show or hide the canvas rulers" -msgstr "" +msgstr "הצג או הסתר את סרגלי משטח הציור" -#: ../src/verbs.cpp:2495 +#: ../src/verbs.cpp:2560 msgid "Scroll_bars" -msgstr "" +msgstr "סרגלי _גלילה" -#: ../src/verbs.cpp:2495 +#: ../src/verbs.cpp:2560 msgid "Show or hide the canvas scrollbars" -msgstr "" +msgstr "הצג או הסתר את סרגלי הגלילה של משטח הציור" -#: ../src/verbs.cpp:2496 +#: ../src/verbs.cpp:2561 msgid "_Grid" -msgstr "" +msgstr "_רשת" -#: ../src/verbs.cpp:2496 +#: ../src/verbs.cpp:2561 msgid "Show or hide the grid" -msgstr "" +msgstr "מציג או מסתיר את הרשת" -#: ../src/verbs.cpp:2497 +#: ../src/verbs.cpp:2562 msgid "G_uides" -msgstr "" +msgstr "_קווים מנחים" -#: ../src/verbs.cpp:2497 +#: ../src/verbs.cpp:2562 msgid "Show or hide guides (drag from a ruler to create a guide)" -msgstr "" +msgstr "הצג או הסתר את הקווים המנחים (גרור מסרגל כדי ליצור קו מנחה)" -#: ../src/verbs.cpp:2499 +#: ../src/verbs.cpp:2564 msgid "Nex_t Zoom" -msgstr "" +msgstr "התקריב ה_בא" -#: ../src/verbs.cpp:2499 +#: ../src/verbs.cpp:2564 msgid "Next zoom (from the history of zooms)" -msgstr "" +msgstr "התקריב הבא (מהיסטוריית התקריבים)" -#: ../src/verbs.cpp:2501 +#: ../src/verbs.cpp:2566 msgid "Pre_vious Zoom" -msgstr "" +msgstr "התקריב ה_קודם" -#: ../src/verbs.cpp:2501 +#: ../src/verbs.cpp:2566 msgid "Previous zoom (from the history of zooms)" -msgstr "" +msgstr "תקריב קודם (מהיסטוריית התקריבים)" -#: ../src/verbs.cpp:2503 +#: ../src/verbs.cpp:2568 msgid "Zoom 1:_1" -msgstr "" +msgstr "תקריב 1:_1" -#: ../src/verbs.cpp:2503 +#: ../src/verbs.cpp:2568 msgid "Zoom to 1:1" -msgstr "" +msgstr "תקריב ליחס 1:1" -#: ../src/verbs.cpp:2505 +#: ../src/verbs.cpp:2570 msgid "Zoom 1:_2" -msgstr "" +msgstr "תקריב 1:_2" -#: ../src/verbs.cpp:2505 +#: ../src/verbs.cpp:2570 msgid "Zoom to 1:2" -msgstr "" +msgstr "תקריב ליחס 1:2" -#: ../src/verbs.cpp:2507 +#: ../src/verbs.cpp:2572 msgid "_Zoom 2:1" -msgstr "" +msgstr "_תקריב 2:1" -#: ../src/verbs.cpp:2507 +#: ../src/verbs.cpp:2572 msgid "Zoom to 2:1" -msgstr "" +msgstr "תקריב ליחס 2:1" -#: ../src/verbs.cpp:2510 +#: ../src/verbs.cpp:2575 msgid "_Fullscreen" -msgstr "" +msgstr "_מסך מלא" -#: ../src/verbs.cpp:2510 +#: ../src/verbs.cpp:2575 msgid "Stretch this document window to full screen" -msgstr "" +msgstr "מתח את חלון מסמך זה למלוא גודל המסך" -#: ../src/verbs.cpp:2513 +#: ../src/verbs.cpp:2578 +msgid "Toggle _Focus Mode" +msgstr "ה_חלף את מצב המיקוד" + +#: ../src/verbs.cpp:2578 +msgid "Remove excess toolbars to focus on drawing" +msgstr "הסר סרגלי כלים מיותרים כדי להתמקד על הציור" + +#: ../src/verbs.cpp:2580 msgid "Duplic_ate Window" -msgstr "" +msgstr "שכפל _חלון" -#: ../src/verbs.cpp:2513 +#: ../src/verbs.cpp:2580 msgid "Open a new window with the same document" -msgstr "" +msgstr "פתח חלון חדש עם המסמך הנוכחי" -#: ../src/verbs.cpp:2515 +#: ../src/verbs.cpp:2582 msgid "_New View Preview" -msgstr "" +msgstr "תצוגה מקדימה _מתחדשת" -#: ../src/verbs.cpp:2516 +#: ../src/verbs.cpp:2583 msgid "New View Preview" -msgstr "" +msgstr "תצוגה מקדימה מתחדשת" #. "view_new_preview" -#: ../src/verbs.cpp:2518 +#: ../src/verbs.cpp:2585 msgid "_Normal" -msgstr "" +msgstr "_רגיל" -#: ../src/verbs.cpp:2519 +#: ../src/verbs.cpp:2586 msgid "Switch to normal display mode" -msgstr "" +msgstr "העבר למצב תצוגה רגיל" -#: ../src/verbs.cpp:2520 -#, fuzzy +#: ../src/verbs.cpp:2587 msgid "No _Filters" -msgstr "קובץ" +msgstr "אין _מסננים" -#: ../src/verbs.cpp:2521 +#: ../src/verbs.cpp:2588 msgid "Switch to normal display without filters" -msgstr "" +msgstr "העבר למצב תצוגה רגיל ללא מסננים" -#: ../src/verbs.cpp:2522 +#: ../src/verbs.cpp:2589 msgid "_Outline" -msgstr "" +msgstr "ק_ו חיצוני" -#: ../src/verbs.cpp:2523 +#: ../src/verbs.cpp:2590 msgid "Switch to outline (wireframe) display mode" -msgstr "" +msgstr "עבור למצב תצוגה של קווים חיצוניים (קווי המתאר)" -#: ../src/verbs.cpp:2524 +#: ../src/verbs.cpp:2591 msgid "_Toggle" -msgstr "" +msgstr "_החלפה" -#: ../src/verbs.cpp:2525 +#: ../src/verbs.cpp:2592 msgid "Toggle between normal and outline display modes" -msgstr "" +msgstr "החלף בין מצב התצוגה הרגיל לבין תצוגת קווי החוץ" -#: ../src/verbs.cpp:2527 +#: ../src/verbs.cpp:2594 msgid "Color-managed view" -msgstr "" +msgstr "תצוגה מנוהלת־צבע" -#: ../src/verbs.cpp:2528 +#: ../src/verbs.cpp:2595 msgid "Toggle color-managed display for this document window" -msgstr "" +msgstr "החלף תצוגת המנוהל על ידי צבע עבור חלון מסמך זה" -#: ../src/verbs.cpp:2530 +#: ../src/verbs.cpp:2597 msgid "Ico_n Preview..." -msgstr "" +msgstr "תצוגת _סמליל מקדימה..." -#: ../src/verbs.cpp:2531 +#: ../src/verbs.cpp:2598 msgid "Open a window to preview objects at different icon resolutions" -msgstr "" +msgstr "פתח חלון כדי להציג תצוגה מקדימה של פריטים ברזולוציות סמלים שונות" -#: ../src/verbs.cpp:2533 +#: ../src/verbs.cpp:2600 msgid "Zoom to fit page in window" -msgstr "" +msgstr "התקרב כדי שהמסמך יותאם לחלון" -#: ../src/verbs.cpp:2534 +#: ../src/verbs.cpp:2601 msgid "Page _Width" -msgstr "" +msgstr "_רוחב העמוד" -#: ../src/verbs.cpp:2535 +#: ../src/verbs.cpp:2602 msgid "Zoom to fit page width in window" -msgstr "" +msgstr "התקרב כדי שרוחב המסמך יותאם לחלון" -#: ../src/verbs.cpp:2537 +#: ../src/verbs.cpp:2604 msgid "Zoom to fit drawing in window" -msgstr "" +msgstr "התקרב כדי שגודל הציור יותאם לחלון" -#: ../src/verbs.cpp:2539 +#: ../src/verbs.cpp:2606 msgid "Zoom to fit selection in window" -msgstr "" +msgstr "התקרב כדי שגודל הבחירה יותאם לחלון" #. Dialogs -#: ../src/verbs.cpp:2542 +#: ../src/verbs.cpp:2609 msgid "In_kscape Preferences..." -msgstr "" +msgstr "ה_עדפות אינקסקייפ..." -#: ../src/verbs.cpp:2543 +#: ../src/verbs.cpp:2610 msgid "Edit global Inkscape preferences" -msgstr "" +msgstr "ערוך את הגדרות אינקסקייפ הגלובליות" -#: ../src/verbs.cpp:2544 +#: ../src/verbs.cpp:2611 msgid "_Document Properties..." -msgstr "" +msgstr "מא_פייני המסמך..." -#: ../src/verbs.cpp:2545 +#: ../src/verbs.cpp:2612 msgid "Edit properties of this document (to be saved with the document)" -msgstr "" +msgstr "ערוך את מאפייני מסמך זה (יישמרו יחד עם המסמך)" -#: ../src/verbs.cpp:2546 +#: ../src/verbs.cpp:2613 msgid "Document _Metadata..." -msgstr "" +msgstr "מ_טאדת המסמך..." -#: ../src/verbs.cpp:2547 +#: ../src/verbs.cpp:2614 msgid "Edit document metadata (to be saved with the document)" -msgstr "" +msgstr "ערוך את מטאדת המסמך (תשמר יחד עם המסמך)" -#: ../src/verbs.cpp:2548 +#: ../src/verbs.cpp:2615 msgid "_Fill and Stroke..." -msgstr "" +msgstr "מ_ילוי וקו מתאר..." -#: ../src/verbs.cpp:2549 -msgid "" -"Edit objects' colors, gradients, stroke width, arrowheads, dash patterns..." -msgstr "" +#: ../src/verbs.cpp:2616 +msgid "Edit objects' colors, gradients, stroke width, arrowheads, dash patterns..." +msgstr "ערוך עבור הפריט את הצבעים, המדרגים, עובי קו המתאר, ראשי חץ, תבניות מרוסקות..." #. TRANSLATORS: "Swatches" means: color samples -#: ../src/verbs.cpp:2551 +#: ../src/verbs.cpp:2618 msgid "S_watches..." -msgstr "" +msgstr "ד_גימות..." -#: ../src/verbs.cpp:2552 +#: ../src/verbs.cpp:2619 msgid "Select colors from a swatches palette" -msgstr "" +msgstr "בחר צבעים מלוח צבע הדגימות" -#: ../src/verbs.cpp:2553 +#: ../src/verbs.cpp:2620 msgid "Transfor_m..." -msgstr "" +msgstr "שינוי _צורה..." -#: ../src/verbs.cpp:2554 +#: ../src/verbs.cpp:2621 msgid "Precisely control objects' transformations" -msgstr "" +msgstr "שלוט בשינוי צורת הפריט באופן מדוייק" -#: ../src/verbs.cpp:2555 +#: ../src/verbs.cpp:2622 msgid "_Align and Distribute..." -msgstr "" +msgstr "יישר ופ_זר..." -#: ../src/verbs.cpp:2556 +#: ../src/verbs.cpp:2623 msgid "Align and distribute objects" -msgstr "" +msgstr "יישר ופזר את הפריטים" -#: ../src/verbs.cpp:2557 +#: ../src/verbs.cpp:2624 msgid "Undo _History..." -msgstr "" +msgstr "הי_סטוריית הפעולות..." -#: ../src/verbs.cpp:2558 +#: ../src/verbs.cpp:2625 msgid "Undo History" -msgstr "" +msgstr "היסטוריית הפעולות" -#: ../src/verbs.cpp:2559 +#: ../src/verbs.cpp:2626 msgid "_Text and Font..." -msgstr "" +msgstr "_טקסט וגופן" -#: ../src/verbs.cpp:2560 +#: ../src/verbs.cpp:2627 msgid "View and select font family, font size and other text properties" -msgstr "" +msgstr "הצג ובחר את משפחת הגופן, גודל הגופן ומאפייני הטקסט" -#: ../src/verbs.cpp:2561 +#: ../src/verbs.cpp:2628 msgid "_XML Editor..." -msgstr "" +msgstr "_עורך XML..." -#: ../src/verbs.cpp:2562 +#: ../src/verbs.cpp:2629 msgid "View and edit the XML tree of the document" -msgstr "" +msgstr "הצג וערוך את ×¢×¥ ה־XML של המסמך" -#: ../src/verbs.cpp:2563 +#: ../src/verbs.cpp:2630 msgid "_Find..." -msgstr "" +msgstr "_חפש..." -#: ../src/verbs.cpp:2564 +#: ../src/verbs.cpp:2631 msgid "Find objects in document" -msgstr "" +msgstr "חפש פריטים במסמך" -#: ../src/verbs.cpp:2565 +#: ../src/verbs.cpp:2632 msgid "_Messages..." -msgstr "" +msgstr "_הודעות..." -#: ../src/verbs.cpp:2566 +#: ../src/verbs.cpp:2633 msgid "View debug messages" -msgstr "" +msgstr "הצג הודעות ניפוי שגיאות" -#: ../src/verbs.cpp:2567 +#: ../src/verbs.cpp:2634 msgid "S_cripts..." -msgstr "" +msgstr "ס_קריפטים..." -#: ../src/verbs.cpp:2568 +#: ../src/verbs.cpp:2635 msgid "Run scripts" -msgstr "" +msgstr "הרץ סקריפטים (תסריטים)" -#: ../src/verbs.cpp:2569 +#: ../src/verbs.cpp:2636 msgid "Show/Hide D_ialogs" -msgstr "" +msgstr "הצג/הסתר _תיבות דו־שיח" -#: ../src/verbs.cpp:2570 +#: ../src/verbs.cpp:2637 msgid "Show or hide all open dialogs" -msgstr "" +msgstr "הצג או הסתר את כל תיבות הדו־שיח הפתוחות" -#: ../src/verbs.cpp:2571 +#: ../src/verbs.cpp:2638 msgid "Create Tiled Clones..." -msgstr "" +msgstr "צור כפילים מרוצפים..." -#: ../src/verbs.cpp:2572 -msgid "" -"Create multiple clones of selected object, arranging them into a pattern or " -"scattering" -msgstr "" +#: ../src/verbs.cpp:2639 +msgid "Create multiple clones of selected object, arranging them into a pattern or scattering" +msgstr "צור מספר כפילים לפריט הנבחר, כך שיסודרו בצורת תבנית או פזורים" -#: ../src/verbs.cpp:2573 +#: ../src/verbs.cpp:2640 msgid "_Object Properties..." -msgstr "" +msgstr "מ_אפייני פריט..." -#: ../src/verbs.cpp:2574 +#: ../src/verbs.cpp:2641 msgid "Edit the ID, locked and visible status, and other object properties" -msgstr "" +msgstr "ערוך את המזהה, מצב ההצגה והנעילה ומאפייני פריט נוספים" -#: ../src/verbs.cpp:2577 +#: ../src/verbs.cpp:2644 msgid "_Instant Messaging..." -msgstr "" +msgstr "_הודעות מיידיות..." -#: ../src/verbs.cpp:2577 +#: ../src/verbs.cpp:2644 msgid "Jabber Instant Messaging Client" -msgstr "" +msgstr "לקוח ג'אבר להודעות מיידיות" -#: ../src/verbs.cpp:2579 +#: ../src/verbs.cpp:2646 msgid "_Input Devices..." -msgstr "" +msgstr "ה_תקני קלט..." -#: ../src/verbs.cpp:2580 ../src/verbs.cpp:2582 +#: ../src/verbs.cpp:2647 +#: ../src/verbs.cpp:2649 msgid "Configure extended input devices, such as a graphics tablet" -msgstr "" +msgstr "הגדר התקני פלט מורחבים, כגון טבלה גרפית" -#: ../src/verbs.cpp:2581 +#: ../src/verbs.cpp:2648 msgid "_Input Devices (new)..." -msgstr "" +msgstr "ה_תקני קלט(חדש)..." -#: ../src/verbs.cpp:2583 +#: ../src/verbs.cpp:2650 msgid "_Extensions..." -msgstr "" +msgstr "_הרחבות..." -#: ../src/verbs.cpp:2584 +#: ../src/verbs.cpp:2651 msgid "Query information about extensions" -msgstr "" +msgstr "תשאל מידע אודות הרחבות" -#: ../src/verbs.cpp:2585 +#: ../src/verbs.cpp:2652 msgid "Layer_s..." -msgstr "" +msgstr "_שכבות..." -#: ../src/verbs.cpp:2586 +#: ../src/verbs.cpp:2653 msgid "View Layers" -msgstr "" +msgstr "הצג שכבות" -#: ../src/verbs.cpp:2587 +#: ../src/verbs.cpp:2654 msgid "Path Effects..." -msgstr "" +msgstr "אפקטי נתיב..." -#: ../src/verbs.cpp:2588 +#: ../src/verbs.cpp:2655 msgid "Manage path effects" -msgstr "" +msgstr "נהל אפקטי נתיב" -#: ../src/verbs.cpp:2589 +#: ../src/verbs.cpp:2656 msgid "Filter Effects..." -msgstr "" +msgstr "אפקטי מסננים..." -#: ../src/verbs.cpp:2590 +#: ../src/verbs.cpp:2657 msgid "Manage SVG filter effects" -msgstr "" +msgstr "נהל את אפקטי המסנן של SVG" + +#: ../src/verbs.cpp:2658 +msgid "SVG Fonts..." +msgstr "גופני SVG..." + +#: ../src/verbs.cpp:2659 +msgid "Manage SVG fonts" +msgstr "נהל גופני SVG" #. Help -#: ../src/verbs.cpp:2593 +#: ../src/verbs.cpp:2662 msgid "About E_xtensions" -msgstr "" +msgstr "אודות ה_רחבות" -#: ../src/verbs.cpp:2594 +#: ../src/verbs.cpp:2663 msgid "Information on Inkscape extensions" -msgstr "" +msgstr "מידע אודות הרחבות אינקסקייפ" -#: ../src/verbs.cpp:2595 +#: ../src/verbs.cpp:2664 msgid "About _Memory" -msgstr "" +msgstr "אודות ה_זיכרון" -#: ../src/verbs.cpp:2596 +#: ../src/verbs.cpp:2665 msgid "Memory usage information" -msgstr "" +msgstr "מידע ניהול הזיכרון" -#: ../src/verbs.cpp:2597 +#: ../src/verbs.cpp:2666 msgid "_About Inkscape" -msgstr "" +msgstr "_אודות אינקסקייפ" -#: ../src/verbs.cpp:2598 +#: ../src/verbs.cpp:2667 msgid "Inkscape version, authors, license" -msgstr "" +msgstr "גירסת, מחברי ורשיון אינקסקייפ" #. "help_about" #. new HelpVerb(SP_VERB_SHOW_LICENSE, "ShowLicense", N_("_License"), #. N_("Distribution terms"), /*"show_license"*/"inkscape_options"), #. Tutorials -#: ../src/verbs.cpp:2603 +#: ../src/verbs.cpp:2672 msgid "Inkscape: _Basic" -msgstr "" +msgstr "אינקסקייפ: _הבסיס" -#: ../src/verbs.cpp:2604 +#: ../src/verbs.cpp:2673 msgid "Getting started with Inkscape" -msgstr "" +msgstr "מתחילים באינקסקייפ" #. "tutorial_basic" -#: ../src/verbs.cpp:2605 +#: ../src/verbs.cpp:2674 msgid "Inkscape: _Shapes" -msgstr "" +msgstr "אינקסקייפ: _צורות" -#: ../src/verbs.cpp:2606 +#: ../src/verbs.cpp:2675 msgid "Using shape tools to create and edit shapes" -msgstr "" +msgstr "שימוש בכלי הצורה כדי ליצור ולערוך צורות" -#: ../src/verbs.cpp:2607 +#: ../src/verbs.cpp:2676 msgid "Inkscape: _Advanced" -msgstr "" +msgstr "אינקסקייפ: _מתקדמים" -#: ../src/verbs.cpp:2608 +#: ../src/verbs.cpp:2677 msgid "Advanced Inkscape topics" -msgstr "" +msgstr "נושאים מתקדמים באינקסקייפ" #. "tutorial_advanced" #. TRANSLATORS: "to trace" means "to convert a bitmap to vector graphics" (to vectorize) -#: ../src/verbs.cpp:2610 +#: ../src/verbs.cpp:2679 msgid "Inkscape: T_racing" -msgstr "" +msgstr "אינקסקייפ: מ_עקב" -#: ../src/verbs.cpp:2611 +#: ../src/verbs.cpp:2680 msgid "Using bitmap tracing" -msgstr "" +msgstr "שימוש במעקב מפת סיביות" #. "tutorial_tracing" -#: ../src/verbs.cpp:2612 +#: ../src/verbs.cpp:2681 msgid "Inkscape: _Calligraphy" -msgstr "" +msgstr "אינקסקייפ: _קליגרפיקה" -#: ../src/verbs.cpp:2613 +#: ../src/verbs.cpp:2682 msgid "Using the Calligraphy pen tool" -msgstr "" +msgstr "שימוש בכלי העט הקליגרפי" -#: ../src/verbs.cpp:2614 +#: ../src/verbs.cpp:2683 msgid "_Elements of Design" -msgstr "" +msgstr "_יסודות העיצוב" -#: ../src/verbs.cpp:2615 +#: ../src/verbs.cpp:2684 msgid "Principles of design in the tutorial form" -msgstr "" +msgstr "עקרונות העיצוב בצורת מדריך" #. "tutorial_design" -#: ../src/verbs.cpp:2616 +#: ../src/verbs.cpp:2685 msgid "_Tips and Tricks" -msgstr "" +msgstr "_עצות וטריקים" -#: ../src/verbs.cpp:2617 +#: ../src/verbs.cpp:2686 msgid "Miscellaneous tips and tricks" -msgstr "" +msgstr "טיפים ועצות שונים ומשונים" #. "tutorial_tips" #. Effect -#: ../src/verbs.cpp:2620 +#: ../src/verbs.cpp:2689 msgid "Previous Effect" -msgstr "" +msgstr "האפקט הקודם" -#: ../src/verbs.cpp:2621 +#: ../src/verbs.cpp:2690 msgid "Repeat the last effect with the same settings" -msgstr "" +msgstr "חזור על האפקט הקודם עם אותן ההגדרות" -#: ../src/verbs.cpp:2622 +#: ../src/verbs.cpp:2691 msgid "Previous Effect Settings..." -msgstr "" +msgstr "הגדרות האפקט הקודם..." -#: ../src/verbs.cpp:2623 +#: ../src/verbs.cpp:2692 msgid "Repeat the last effect with new settings" -msgstr "" +msgstr "חזור על האפקט הקודם עם הגדרות חדשות" -#. Fit Page -#: ../src/verbs.cpp:2626 -msgid "Fit Page to Selection" -msgstr "" - -#: ../src/verbs.cpp:2627 +#: ../src/verbs.cpp:2696 msgid "Fit the page to the current selection" -msgstr "" - -#: ../src/verbs.cpp:2628 -msgid "Fit Page to Drawing" -msgstr "התאם הדף לאיור" +msgstr "התאם את העמוד לבחירה הנוכחית" -#: ../src/verbs.cpp:2629 +#: ../src/verbs.cpp:2698 msgid "Fit the page to the drawing" -msgstr "" - -#: ../src/verbs.cpp:2630 -msgid "Fit Page to Selection or Drawing" -msgstr "" +msgstr "התאם את העמוד לציור" -#: ../src/verbs.cpp:2631 -msgid "" -"Fit the page to the current selection or the drawing if there is no selection" -msgstr "" +#: ../src/verbs.cpp:2700 +msgid "Fit the page to the current selection or the drawing if there is no selection" +msgstr "התאם את העמוד לבחירה הנוכחית או לציור במידה ולא בוצעה בחירה" #. LockAndHide -#: ../src/verbs.cpp:2633 +#: ../src/verbs.cpp:2702 msgid "Unlock All" -msgstr "" +msgstr "שחרר הכל" -#: ../src/verbs.cpp:2635 +#: ../src/verbs.cpp:2704 msgid "Unlock All in All Layers" -msgstr "" +msgstr "שחרר הכל בכל השכבות" -#: ../src/verbs.cpp:2637 +#: ../src/verbs.cpp:2706 msgid "Unhide All" -msgstr "" +msgstr "הצג הכל" -#: ../src/verbs.cpp:2639 +#: ../src/verbs.cpp:2708 msgid "Unhide All in All Layers" -msgstr "" +msgstr "הצג הכל בכל השכבות" #: ../src/widgets/calligraphic-profile-rename.cpp:34 msgid "Profile name:" -msgstr "" +msgstr "שם הפרופיל:" #: ../src/widgets/calligraphic-profile-rename.cpp:48 -#, fuzzy msgid "Save" -msgstr "_שמור" +msgstr "שמור" -#: ../src/widgets/dash-selector.cpp:106 +#: ../src/widgets/dash-selector.cpp:62 msgid "Dash pattern" -msgstr "" +msgstr "תבנית קו הקטעים" -#: ../src/widgets/dash-selector.cpp:121 +#: ../src/widgets/dash-selector.cpp:77 msgid "Pattern offset" -msgstr "" +msgstr "קיזוז התבנית" -#: ../src/widgets/desktop-widget.cpp:620 +#. display the initial welcome message in the statusbar +#: ../src/widgets/desktop-widget.cpp:545 +msgid "Welcome to Inkscape! Use shape or freehand tools to create objects; use selector (arrow) to move or transform them." +msgstr " ברוכים הבאים לאינקסקייפ! השתמשו בכלי הצורה או היד־החופשית כדי ליצור פריטים; השתמש בכלי-הבחירה (חץ) כדי להזיז או לשנות את צורתם." + +#: ../src/widgets/desktop-widget.cpp:607 #, c-format msgid "%s: %d (outline) - Inkscape" -msgstr "" +msgstr "%s: %d (קו מתאר) - אינקסקייפ" -#: ../src/widgets/desktop-widget.cpp:622 +#: ../src/widgets/desktop-widget.cpp:609 #, c-format msgid "%s: %d - Inkscape" -msgstr "" +msgstr "%s: %d - אינקסקייפ" -#: ../src/widgets/desktop-widget.cpp:626 +#: ../src/widgets/desktop-widget.cpp:613 #, c-format msgid "%s (outline) - Inkscape" -msgstr "" +msgstr "%s (קו חיצוני) - אינקסקייפ" -#: ../src/widgets/desktop-widget.cpp:628 +#: ../src/widgets/desktop-widget.cpp:615 #, c-format msgid "%s - Inkscape" -msgstr "" +msgstr "%s - אינקסקייפ" #. Family frame -#: ../src/widgets/font-selector.cpp:154 +#: ../src/widgets/font-selector.cpp:157 msgid "Font family" -msgstr "" +msgstr "משפחת הגופן" #. Style frame -#: ../src/widgets/font-selector.cpp:185 -#: ../share/extensions/polyhedron_3d.inx.h:44 +#: ../src/widgets/font-selector.cpp:188 +#: ../share/extensions/polyhedron_3d.inx.h:43 msgid "Style" msgstr "סגנון" -#: ../src/widgets/font-selector.cpp:223 +#: ../src/widgets/font-selector.cpp:226 msgid "Font size:" -msgstr "גודל גופן:" +msgstr "גודל הגופן:" #. TRANSLATORS: Test string used in text and font dialog (when no #. * text has been entered) to get a preview of the font. Choose #. * some representative characters that users of your locale will be #. * interested in. -#: ../src/widgets/font-selector.cpp:636 ../src/widgets/toolbox.cpp:5123 +#: ../src/widgets/font-selector.cpp:639 +#: ../src/widgets/toolbox.cpp:6087 msgid "AaBbCcIiPpQq12369$€¢?.;/()" -msgstr "" +msgstr "AaBbCcאבנסשת12369$€₪?.;/()" #: ../src/widgets/gradient-selector.cpp:139 -#: ../src/widgets/gradient-toolbar.cpp:462 +#: ../src/widgets/gradient-toolbar.cpp:465 msgid "Edit..." msgstr "ערוך..." #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/pservers.html#LinearGradientSpreadMethodAttribute #: ../src/widgets/gradient-selector.cpp:156 -msgid "" -"Whether to fill with flat color beyond the ends of the gradient vector " -"(spreadMethod=\"pad\"), or repeat the gradient in the same direction " -"(spreadMethod=\"repeat\"), or repeat the gradient in alternating opposite " -"directions (spreadMethod=\"reflect\")" -msgstr "" +msgid "Whether to fill with flat color beyond the ends of the gradient vector (spreadMethod=\"pad\"), or repeat the gradient in the same direction (spreadMethod=\"repeat\"), or repeat the gradient in alternating opposite directions (spreadMethod=\"reflect\")" +msgstr "האם למלא בצבע אחיד מאחורי קצוות ידיות המדרג (spreadMethod=\"pad\"), או לחזור על המדרג באותו הכיוון (spreadMethod=\"repeat\"), או לחזור על המדרג עם הפיכת הכיוון בכל עותק (spreadMethod=\"reflect\")" #: ../src/widgets/gradient-selector.cpp:166 msgid "reflected" -msgstr "" +msgstr "משתקף" #: ../src/widgets/gradient-selector.cpp:170 msgid "direct" -msgstr "" +msgstr "ישיר" #: ../src/widgets/gradient-selector.cpp:178 msgid "Repeat:" -msgstr "" +msgstr "חזרה:" -#: ../src/widgets/gradient-toolbar.cpp:151 +#: ../src/widgets/gradient-toolbar.cpp:154 msgid "Assign gradient to object" -msgstr "" +msgstr "הקצה מדרג לפריט" -#: ../src/widgets/gradient-toolbar.cpp:185 +#: ../src/widgets/gradient-toolbar.cpp:188 msgid "No gradients" -msgstr "" +msgstr "אין מדרגים" -#: ../src/widgets/gradient-toolbar.cpp:194 +#: ../src/widgets/gradient-toolbar.cpp:197 msgid "Nothing selected" -msgstr "" +msgstr "לא נבחר דבר" -#: ../src/widgets/gradient-toolbar.cpp:205 +#: ../src/widgets/gradient-toolbar.cpp:208 msgid "No gradients in selection" -msgstr "" +msgstr "אין מדרגים בבחירה" -#: ../src/widgets/gradient-toolbar.cpp:215 +#: ../src/widgets/gradient-toolbar.cpp:218 msgid "Multiple gradients" -msgstr "" +msgstr "מספר מדרגים" -#: ../src/widgets/gradient-toolbar.cpp:463 +#: ../src/widgets/gradient-toolbar.cpp:466 msgid "Edit the stops of the gradient" -msgstr "" - -#: ../src/widgets/gradient-toolbar.cpp:522 ../src/widgets/toolbox.cpp:1936 -#: ../src/widgets/toolbox.cpp:2010 ../src/widgets/toolbox.cpp:2340 -#: ../src/widgets/toolbox.cpp:2378 ../src/widgets/toolbox.cpp:2992 -#: ../src/widgets/toolbox.cpp:3016 ../src/widgets/toolbox.cpp:4110 -#: ../src/widgets/toolbox.cpp:4137 +msgstr "עורך את העצירות של המדרג" + +#: ../src/widgets/gradient-toolbar.cpp:526 +#: ../src/widgets/toolbox.cpp:2167 +#: ../src/widgets/toolbox.cpp:2245 +#: ../src/widgets/toolbox.cpp:2576 +#: ../src/widgets/toolbox.cpp:2614 +#: ../src/widgets/toolbox.cpp:3229 +#: ../src/widgets/toolbox.cpp:3253 +#: ../src/widgets/toolbox.cpp:4666 +#: ../src/widgets/toolbox.cpp:4695 msgid "New:" -msgstr "" +msgstr "חדש:" -#: ../src/widgets/gradient-toolbar.cpp:535 +#: ../src/widgets/gradient-toolbar.cpp:539 msgid "Create linear gradient" -msgstr "" +msgstr "צור מדרג קווי" -#: ../src/widgets/gradient-toolbar.cpp:549 +#: ../src/widgets/gradient-toolbar.cpp:553 msgid "Create radial (elliptic or circular) gradient" -msgstr "" +msgstr "צור מדרג מעגלי (אליפטי או רדיאלי)" -#: ../src/widgets/gradient-toolbar.cpp:564 +#. TODO replace aux_toolbox_space(tbl, AUX_SPACING); +#: ../src/widgets/gradient-toolbar.cpp:568 msgid "on" -msgstr "" +msgstr "מופעל" -#: ../src/widgets/gradient-toolbar.cpp:577 +#: ../src/widgets/gradient-toolbar.cpp:581 msgid "Create gradient in the fill" -msgstr "" +msgstr "צור מדרג במילוי" -#: ../src/widgets/gradient-toolbar.cpp:591 +#: ../src/widgets/gradient-toolbar.cpp:595 msgid "Create gradient in the stroke" -msgstr "" +msgstr "צור מדרג בקו המתאר" #. FIXME: implement averaging of all parameters for multiple selected #. gtk_label_set_markup(GTK_LABEL(l), _("Average:")); -#: ../src/widgets/gradient-toolbar.cpp:605 ../src/widgets/toolbox.cpp:1938 -#: ../src/widgets/toolbox.cpp:2348 ../src/widgets/toolbox.cpp:2366 -#: ../src/widgets/toolbox.cpp:2994 ../src/widgets/toolbox.cpp:3005 -#: ../src/widgets/toolbox.cpp:4113 ../src/widgets/toolbox.cpp:4124 +#: ../src/widgets/gradient-toolbar.cpp:609 +#: ../src/widgets/toolbox.cpp:2169 +#: ../src/widgets/toolbox.cpp:2584 +#: ../src/widgets/toolbox.cpp:2602 +#: ../src/widgets/toolbox.cpp:3231 +#: ../src/widgets/toolbox.cpp:3242 +#: ../src/widgets/toolbox.cpp:4669 +#: ../src/widgets/toolbox.cpp:4680 msgid "Change:" -msgstr "" +msgstr "שנה:" #: ../src/widgets/gradient-vector.cpp:270 msgid "No gradients in document" -msgstr "" +msgstr "אין מדרגים במסמך" #: ../src/widgets/gradient-vector.cpp:276 msgid "No gradient selected" -msgstr "" +msgstr "לא נבחרו מדרגים" -#: ../src/widgets/gradient-vector.cpp:538 +#: ../src/widgets/gradient-vector.cpp:541 msgid "No stops in gradient" -msgstr "" +msgstr "אין עצירות במדרג" -#: ../src/widgets/gradient-vector.cpp:661 +#: ../src/widgets/gradient-vector.cpp:664 msgid "Change gradient stop offset" -msgstr "" +msgstr "שנה את קיזוז עצירת המדרג" #. TRANSLATORS: "Stop" means: a "phase" of a gradient -#: ../src/widgets/gradient-vector.cpp:803 +#: ../src/widgets/gradient-vector.cpp:806 msgid "Add stop" -msgstr "" +msgstr "הוסף עצירה" -#: ../src/widgets/gradient-vector.cpp:806 +#: ../src/widgets/gradient-vector.cpp:809 msgid "Add another control stop to gradient" -msgstr "" +msgstr "הוסף נקודת שליטה עוצרת למדרג" -#: ../src/widgets/gradient-vector.cpp:808 +#: ../src/widgets/gradient-vector.cpp:811 msgid "Delete stop" -msgstr "" +msgstr "מחק עצירה" -#: ../src/widgets/gradient-vector.cpp:811 +#: ../src/widgets/gradient-vector.cpp:814 msgid "Delete current control stop from gradient" -msgstr "" +msgstr "מחק את נקודת השליטה בעצירה מהמדרג" #. Label -#: ../src/widgets/gradient-vector.cpp:822 +#: ../src/widgets/gradient-vector.cpp:825 msgid "Offset:" -msgstr "" +msgstr "קיזוז:" #. TRANSLATORS: "Stop" means: a "phase" of a gradient -#: ../src/widgets/gradient-vector.cpp:867 +#: ../src/widgets/gradient-vector.cpp:870 msgid "Stop Color" -msgstr "" +msgstr "צבע העצירה" -#: ../src/widgets/gradient-vector.cpp:896 +#: ../src/widgets/gradient-vector.cpp:900 msgid "Gradient editor" -msgstr "עורך הגרדיאנט" +msgstr "עורך המדרג" -#: ../src/widgets/gradient-vector.cpp:1171 +#: ../src/widgets/gradient-vector.cpp:1176 msgid "Change gradient stop color" -msgstr "" +msgstr "שנה את צבע עצירת המדרג" #: ../src/widgets/layer-selector.cpp:115 msgid "Toggle current layer visibility" -msgstr "" +msgstr "החלף את הצגת השכבה הנוכחית" #: ../src/widgets/layer-selector.cpp:135 msgid "Lock or unlock current layer" -msgstr "" +msgstr "נעל או שחרר את השכבה הנוכחית" #: ../src/widgets/layer-selector.cpp:138 msgid "Current layer" @@ -14896,299 +15442,283 @@ msgstr "שכבה נוכחית" #: ../src/widgets/layer-selector.cpp:566 msgid "(root)" -msgstr "" +msgstr "(מקור)" -#: ../src/widgets/paint-selector.cpp:181 ../src/widgets/paint-selector.cpp:564 +#: ../src/widgets/paint-selector.cpp:181 +#: ../src/widgets/paint-selector.cpp:564 msgid "No paint" -msgstr "" +msgstr "ללא צבע" -#: ../src/widgets/paint-selector.cpp:183 ../src/widgets/paint-selector.cpp:636 +#: ../src/widgets/paint-selector.cpp:183 +#: ../src/widgets/paint-selector.cpp:636 msgid "Flat color" -msgstr "" +msgstr "צבע אחיד" -#: ../src/widgets/paint-selector.cpp:185 ../src/widgets/paint-selector.cpp:707 +#: ../src/widgets/paint-selector.cpp:185 +#: ../src/widgets/paint-selector.cpp:707 msgid "Linear gradient" -msgstr "" +msgstr "מדרג קווי" -#: ../src/widgets/paint-selector.cpp:187 ../src/widgets/paint-selector.cpp:710 +#: ../src/widgets/paint-selector.cpp:187 +#: ../src/widgets/paint-selector.cpp:710 msgid "Radial gradient" -msgstr "" +msgstr "מדרג מעגלי" #: ../src/widgets/paint-selector.cpp:191 msgid "Unset paint (make it undefined so it can be inherited)" -msgstr "" +msgstr "צבע לא נקבע (הפוך אותו ללא מוגדר כדי שניתן יהיה לרשת אותו)" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/painting.html#FillRuleProperty #: ../src/widgets/paint-selector.cpp:203 -msgid "" -"Any path self-intersections or subpaths create holes in the fill (fill-rule: " -"evenodd)" -msgstr "" +msgid "Any path self-intersections or subpaths create holes in the fill (fill-rule: evenodd)" +msgstr "כל נתיב או תת־נתיב המצטלב בעצמו יוצר חורים במילוי (fill-rule: evenodd)" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/painting.html#FillRuleProperty #: ../src/widgets/paint-selector.cpp:214 -msgid "" -"Fill is solid unless a subpath is counterdirectional (fill-rule: nonzero)" -msgstr "" +msgid "Fill is solid unless a subpath is counterdirectional (fill-rule: nonzero)" +msgstr "המילוי הינוי אחיד אלא אם כן תת־הנתיב הוא בכיוון ההפוך (fill-rule: nonzero)" #: ../src/widgets/paint-selector.cpp:531 msgid "No objects" -msgstr "" +msgstr "אין פריטים" #: ../src/widgets/paint-selector.cpp:542 msgid "Multiple styles" -msgstr "" +msgstr "סגנונות מרובים" #: ../src/widgets/paint-selector.cpp:553 msgid "Paint is undefined" -msgstr "" +msgstr "הצבע לא מוגדר" #: ../src/widgets/paint-selector.cpp:984 -msgid "" -"Use the Node tool to adjust position, scale, and rotation of the " -"pattern on canvas. Use Object > Pattern > Objects to Pattern to " -"create a new pattern from selection." -msgstr "" +msgid "Use the Node tool to adjust position, scale, and rotation of the pattern on canvas. Use Object > Pattern > Objects to Pattern to create a new pattern from selection." +msgstr "השתמש בכלי המפרקים כדי לכוונן את מיקום, גודל, וסיבוב התבנית על משטח הציור. השתמש בפריט < תבנית < פריטים לתבנית כדי ליצור תבנית חדשה מהבחירה." -#: ../src/widgets/select-toolbar.cpp:244 +#: ../src/widgets/select-toolbar.cpp:246 msgid "Transform by toolbar" -msgstr "" +msgstr "שנה צורה לפי סרגל הכלים" -#: ../src/widgets/select-toolbar.cpp:299 +#: ../src/widgets/select-toolbar.cpp:303 msgid "Now stroke width is scaled when objects are scaled." -msgstr "" +msgstr "כעת עובי קו המתאר משתנה כאשר גודל הפריטים משתנה." -#: ../src/widgets/select-toolbar.cpp:301 +#: ../src/widgets/select-toolbar.cpp:305 msgid "Now stroke width is not scaled when objects are scaled." -msgstr "" +msgstr "כעת עובי קו המתאר לא משתנה כאשר גודל הפריטים משתנה." -#: ../src/widgets/select-toolbar.cpp:310 -msgid "" -"Now rounded rectangle corners are scaled when rectangles are " -"scaled." -msgstr "" +#: ../src/widgets/select-toolbar.cpp:316 +msgid "Now rounded rectangle corners are scaled when rectangles are scaled." +msgstr "כעת פינות מעוגלות משתנות כאשר גודל המרובעים משתנה." -#: ../src/widgets/select-toolbar.cpp:312 -msgid "" -"Now rounded rectangle corners are not scaled when rectangles " -"are scaled." -msgstr "" +#: ../src/widgets/select-toolbar.cpp:318 +msgid "Now rounded rectangle corners are not scaled when rectangles are scaled." +msgstr "כעת פינות מעוגלות לא משתנות כאשר גודל המרובעים משתנה." -#: ../src/widgets/select-toolbar.cpp:321 -msgid "" -"Now gradients are transformed along with their objects when " -"those are transformed (moved, scaled, rotated, or skewed)." -msgstr "" +#: ../src/widgets/select-toolbar.cpp:329 +msgid "Now gradients are transformed along with their objects when those are transformed (moved, scaled, rotated, or skewed)." +msgstr "כעת מדרגים משנים צורה יחד עם הפריטים שאליהם הם שייכים כאשר אלה משנים צורה (הזזה, גודל, סיבוב או מתיחה)." -#: ../src/widgets/select-toolbar.cpp:323 -msgid "" -"Now gradients remain fixed when objects are transformed " -"(moved, scaled, rotated, or skewed)." -msgstr "" +#: ../src/widgets/select-toolbar.cpp:331 +msgid "Now gradients remain fixed when objects are transformed (moved, scaled, rotated, or skewed)." +msgstr "כעת מדרגים נשארים קבועים כאשר הפריטים שאליהם הם שייכים משנים צורה (הזזה, גודל, סיבוב או מתיחה)." -#: ../src/widgets/select-toolbar.cpp:332 -msgid "" -"Now patterns are transformed along with their objects when " -"those are transformed (moved, scaled, rotated, or skewed)." -msgstr "" +#: ../src/widgets/select-toolbar.cpp:342 +msgid "Now patterns are transformed along with their objects when those are transformed (moved, scaled, rotated, or skewed)." +msgstr "כעת תבניות משנות צורה יחד עם הפריטים שאליהם הם שייכים כאשר אלה משנים צורה (הזזה, גודל, סיבוב או מתיחה)." -#: ../src/widgets/select-toolbar.cpp:334 -msgid "" -"Now patterns remain fixed when objects are transformed (moved, " -"scaled, rotated, or skewed)." -msgstr "" +#: ../src/widgets/select-toolbar.cpp:344 +msgid "Now patterns remain fixed when objects are transformed (moved, scaled, rotated, or skewed)." +msgstr "כעת תבניות נשארות קבועות כאשר הפריטים שאליהם הם שייכים משנים צורה (הזזה, גודל, סיבוב או מתיחה)." #. four spinbuttons #. TRANSLATORS: only translate "string" in "context|string". #. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS -#: ../src/widgets/select-toolbar.cpp:446 +#: ../src/widgets/select-toolbar.cpp:457 msgid "select_toolbar|X position" -msgstr "" +msgstr "select_toolbar|מיקום X" -#: ../src/widgets/select-toolbar.cpp:446 +#: ../src/widgets/select-toolbar.cpp:457 msgid "select_toolbar|X" -msgstr "" +msgstr "select_toolbar|X" -#: ../src/widgets/select-toolbar.cpp:448 +#: ../src/widgets/select-toolbar.cpp:459 msgid "Horizontal coordinate of selection" -msgstr "" +msgstr "נקודת הציון האופקית של הבחירה" #. TRANSLATORS: only translate "string" in "context|string". #. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS -#: ../src/widgets/select-toolbar.cpp:454 +#: ../src/widgets/select-toolbar.cpp:465 msgid "select_toolbar|Y position" -msgstr "" +msgstr "select_toolbar|מיקום Y" -#: ../src/widgets/select-toolbar.cpp:454 +#: ../src/widgets/select-toolbar.cpp:465 msgid "select_toolbar|Y" -msgstr "" +msgstr "select_toolbar|Y" -#: ../src/widgets/select-toolbar.cpp:456 +#: ../src/widgets/select-toolbar.cpp:467 msgid "Vertical coordinate of selection" -msgstr "" +msgstr "נקודת הציון האנכית של הבחירה" #. TRANSLATORS: only translate "string" in "context|string". #. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS -#: ../src/widgets/select-toolbar.cpp:462 +#: ../src/widgets/select-toolbar.cpp:473 msgid "select_toolbar|Width" -msgstr "" +msgstr "select_toolbar|רוחב" -#: ../src/widgets/select-toolbar.cpp:462 +#: ../src/widgets/select-toolbar.cpp:473 msgid "select_toolbar|W" -msgstr "" +msgstr "select_toolbar|ר" -#: ../src/widgets/select-toolbar.cpp:464 +#: ../src/widgets/select-toolbar.cpp:475 msgid "Width of selection" -msgstr "" +msgstr "רוחב הבחירה" -#: ../src/widgets/select-toolbar.cpp:471 +#: ../src/widgets/select-toolbar.cpp:482 msgid "Lock width and height" -msgstr "" +msgstr "נעל גובה ורוחב" -#: ../src/widgets/select-toolbar.cpp:472 +#: ../src/widgets/select-toolbar.cpp:483 msgid "When locked, change both width and height by the same proportion" -msgstr "" +msgstr "כאשר ננעל, השינוי יבוצע ברוחב ובגובה באותו היחס" #. TRANSLATORS: only translate "string" in "context|string". #. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS -#: ../src/widgets/select-toolbar.cpp:483 +#: ../src/widgets/select-toolbar.cpp:494 msgid "select_toolbar|Height" -msgstr "" +msgstr "select_toolbar|גובה" -#: ../src/widgets/select-toolbar.cpp:483 +#: ../src/widgets/select-toolbar.cpp:494 msgid "select_toolbar|H" -msgstr "" +msgstr "select_toolbar|ג" -#: ../src/widgets/select-toolbar.cpp:485 +#: ../src/widgets/select-toolbar.cpp:496 msgid "Height of selection" -msgstr "" +msgstr "גובה הבחירה" -#: ../src/widgets/select-toolbar.cpp:516 +#: ../src/widgets/select-toolbar.cpp:533 msgid "Affect:" -msgstr "" +msgstr "השפעה:" -#: ../src/widgets/select-toolbar.cpp:535 +#: ../src/widgets/select-toolbar.cpp:552 msgid "Scale rounded corners" -msgstr "" +msgstr "שנה את גודל הפינות המעוגלות" -#: ../src/widgets/select-toolbar.cpp:546 -#, fuzzy +#: ../src/widgets/select-toolbar.cpp:563 msgid "Move gradients" -msgstr "הפוך גרדיאנט" +msgstr "הזז מדרגים" -#: ../src/widgets/select-toolbar.cpp:557 -#, fuzzy +#: ../src/widgets/select-toolbar.cpp:574 msgid "Move patterns" -msgstr "מטרים" +msgstr "הזז תבניות" #: ../src/widgets/sp-color-gtkselector.cpp:50 msgid "System" msgstr "מערכת" -#: ../src/widgets/sp-color-icc-selector.cpp:110 +#: ../src/widgets/sp-color-icc-selector.cpp:111 msgid "CMS" -msgstr "" +msgstr "מערכת ניהול תוכן" -#: ../src/widgets/sp-color-icc-selector.cpp:219 +#: ../src/widgets/sp-color-icc-selector.cpp:220 #: ../src/widgets/sp-color-scales.cpp:397 msgid "_R" -msgstr "" +msgstr "_R" -#: ../src/widgets/sp-color-icc-selector.cpp:219 #: ../src/widgets/sp-color-icc-selector.cpp:220 +#: ../src/widgets/sp-color-icc-selector.cpp:221 #: ../src/widgets/sp-color-scales.cpp:400 msgid "_G" -msgstr "" +msgstr "_G" -#: ../src/widgets/sp-color-icc-selector.cpp:219 +#: ../src/widgets/sp-color-icc-selector.cpp:220 #: ../src/widgets/sp-color-scales.cpp:403 msgid "_B" -msgstr "" +msgstr "_B" -#: ../src/widgets/sp-color-icc-selector.cpp:221 #: ../src/widgets/sp-color-icc-selector.cpp:222 +#: ../src/widgets/sp-color-icc-selector.cpp:223 #: ../src/widgets/sp-color-scales.cpp:423 msgid "_H" -msgstr "" +msgstr "_H" -#: ../src/widgets/sp-color-icc-selector.cpp:221 #: ../src/widgets/sp-color-icc-selector.cpp:222 +#: ../src/widgets/sp-color-icc-selector.cpp:223 #: ../src/widgets/sp-color-scales.cpp:426 msgid "_S" -msgstr "" +msgstr "_S" -#: ../src/widgets/sp-color-icc-selector.cpp:222 +#: ../src/widgets/sp-color-icc-selector.cpp:223 #: ../src/widgets/sp-color-scales.cpp:429 msgid "_L" -msgstr "" +msgstr "_L" -#: ../src/widgets/sp-color-icc-selector.cpp:223 #: ../src/widgets/sp-color-icc-selector.cpp:224 +#: ../src/widgets/sp-color-icc-selector.cpp:225 #: ../src/widgets/sp-color-scales.cpp:451 msgid "_C" -msgstr "" +msgstr "_C" -#: ../src/widgets/sp-color-icc-selector.cpp:223 #: ../src/widgets/sp-color-icc-selector.cpp:224 +#: ../src/widgets/sp-color-icc-selector.cpp:225 #: ../src/widgets/sp-color-scales.cpp:454 msgid "_M" -msgstr "" +msgstr "_M" -#: ../src/widgets/sp-color-icc-selector.cpp:223 #: ../src/widgets/sp-color-icc-selector.cpp:224 +#: ../src/widgets/sp-color-icc-selector.cpp:225 #: ../src/widgets/sp-color-scales.cpp:457 msgid "_Y" -msgstr "" +msgstr "_Y" -#: ../src/widgets/sp-color-icc-selector.cpp:223 +#: ../src/widgets/sp-color-icc-selector.cpp:224 #: ../src/widgets/sp-color-scales.cpp:460 msgid "_K" -msgstr "" +msgstr "_K" -#: ../src/widgets/sp-color-icc-selector.cpp:234 +#: ../src/widgets/sp-color-icc-selector.cpp:235 msgid "Gray" -msgstr "" +msgstr "אפור" -#: ../src/widgets/sp-color-icc-selector.cpp:237 #: ../src/widgets/sp-color-icc-selector.cpp:238 +#: ../src/widgets/sp-color-icc-selector.cpp:239 #: ../src/widgets/sp-color-scales.cpp:452 #: ../src/widgets/sp-color-scales.cpp:453 msgid "Cyan" -msgstr "" +msgstr "ציאן" -#: ../src/widgets/sp-color-icc-selector.cpp:237 #: ../src/widgets/sp-color-icc-selector.cpp:238 +#: ../src/widgets/sp-color-icc-selector.cpp:239 #: ../src/widgets/sp-color-scales.cpp:455 #: ../src/widgets/sp-color-scales.cpp:456 msgid "Magenta" -msgstr "" +msgstr "ארגמן" -#: ../src/widgets/sp-color-icc-selector.cpp:237 #: ../src/widgets/sp-color-icc-selector.cpp:238 +#: ../src/widgets/sp-color-icc-selector.cpp:239 #: ../src/widgets/sp-color-scales.cpp:458 #: ../src/widgets/sp-color-scales.cpp:459 msgid "Yellow" msgstr "צהוב" -#: ../src/widgets/sp-color-icc-selector.cpp:295 +#: ../src/widgets/sp-color-icc-selector.cpp:296 msgid "Fix" -msgstr "" +msgstr "קיבוע" -#: ../src/widgets/sp-color-icc-selector.cpp:298 +#: ../src/widgets/sp-color-icc-selector.cpp:299 msgid "Fix RGB fallback to match icc-color() value." -msgstr "" +msgstr "קבע את נקודת הנפילה של RGC כדי שתתאים לערך ה־icc-color()." #. Label -#: ../src/widgets/sp-color-icc-selector.cpp:379 +#: ../src/widgets/sp-color-icc-selector.cpp:380 #: ../src/widgets/sp-color-scales.cpp:406 #: ../src/widgets/sp-color-scales.cpp:432 #: ../src/widgets/sp-color-scales.cpp:463 #: ../src/widgets/sp-color-wheel-selector.cpp:134 msgid "_A" -msgstr "" +msgstr "_A" -#: ../src/widgets/sp-color-icc-selector.cpp:389 -#: ../src/widgets/sp-color-icc-selector.cpp:401 +#: ../src/widgets/sp-color-icc-selector.cpp:390 +#: ../src/widgets/sp-color-icc-selector.cpp:402 #: ../src/widgets/sp-color-scales.cpp:407 #: ../src/widgets/sp-color-scales.cpp:408 #: ../src/widgets/sp-color-scales.cpp:433 @@ -15198,3117 +15728,3463 @@ msgstr "" #: ../src/widgets/sp-color-wheel-selector.cpp:144 #: ../src/widgets/sp-color-wheel-selector.cpp:156 msgid "Alpha (opacity)" -msgstr "" +msgstr "אלפא (אטימות)" -#: ../src/widgets/sp-color-notebook.cpp:329 +#: ../src/widgets/sp-color-notebook.cpp:330 msgid "RGBA_:" -msgstr "" +msgstr "RGBA_:" -#: ../src/widgets/sp-color-notebook.cpp:337 +#: ../src/widgets/sp-color-notebook.cpp:338 msgid "Hexadecimal RGBA value of the color" -msgstr "" +msgstr "ערך ה־RGBA בבסיס הקסדצימלי של הצבע" #: ../src/widgets/sp-color-scales.cpp:77 msgid "RGB" -msgstr "" +msgstr "RGB" #: ../src/widgets/sp-color-scales.cpp:77 msgid "HSL" -msgstr "" +msgstr "HSL" #: ../src/widgets/sp-color-scales.cpp:77 msgid "CMYK" -msgstr "" +msgstr "CMYK" #: ../src/widgets/sp-color-selector.cpp:64 msgid "Unnamed" -msgstr "" +msgstr "ללא שם" #: ../src/widgets/sp-color-wheel-selector.cpp:61 msgid "Wheel" -msgstr "" +msgstr "גלגל" #: ../src/widgets/sp-xmlview-attr-list.cpp:46 msgid "Attribute" -msgstr "" +msgstr "מאפיין" #: ../src/widgets/sp-xmlview-attr-list.cpp:47 #: ../share/extensions/perfectboundcover.inx.h:19 msgid "Value" -msgstr "" +msgstr "ערך" #: ../src/widgets/sp-xmlview-content.cpp:169 msgid "Type text in a text node" -msgstr "" +msgstr "הזן טקסט במפרק טקסט" -#: ../src/widgets/toolbox.cpp:187 +#: ../src/widgets/toolbox.cpp:194 msgid "Color/opacity used for color tweaking" -msgstr "" +msgstr "צבע/אטימות המשמשים לויסות הצבע" -#: ../src/widgets/toolbox.cpp:191 +#: ../src/widgets/toolbox.cpp:198 msgid "Style of new stars" -msgstr "" +msgstr "סגנון של כוכבים חדשים" -#: ../src/widgets/toolbox.cpp:193 +#: ../src/widgets/toolbox.cpp:200 msgid "Style of new rectangles" -msgstr "" +msgstr "סגנון של מרובעים חדשים" -#: ../src/widgets/toolbox.cpp:195 +#: ../src/widgets/toolbox.cpp:202 msgid "Style of new 3D boxes" -msgstr "" +msgstr "סגנון של תיבות תלת מימד חדשות" -#: ../src/widgets/toolbox.cpp:197 +#: ../src/widgets/toolbox.cpp:204 msgid "Style of new ellipses" -msgstr "" +msgstr "סגנון של אליפסות חדשות" -#: ../src/widgets/toolbox.cpp:199 +#: ../src/widgets/toolbox.cpp:206 msgid "Style of new spirals" -msgstr "" +msgstr "סגנון של ספירלות חדשות" -#: ../src/widgets/toolbox.cpp:201 +#: ../src/widgets/toolbox.cpp:208 msgid "Style of new paths created by Pencil" -msgstr "" +msgstr "סגנון של נתיבים חדשים הנוצרים בעפרון" -#: ../src/widgets/toolbox.cpp:203 +#: ../src/widgets/toolbox.cpp:210 msgid "Style of new paths created by Pen" -msgstr "" +msgstr "סגנון של נתיבים חדשים הנוצרים בעט" -#: ../src/widgets/toolbox.cpp:205 +#: ../src/widgets/toolbox.cpp:212 msgid "Style of new calligraphic strokes" -msgstr "" +msgstr "סגנון של קווי מתאר קליגרפיים חדשים" -#: ../src/widgets/toolbox.cpp:207 +#: ../src/widgets/toolbox.cpp:214 +#: ../src/widgets/toolbox.cpp:216 msgid "TBD" msgstr "" -#: ../src/widgets/toolbox.cpp:217 +#: ../src/widgets/toolbox.cpp:226 msgid "Style of Paint Bucket fill objects" -msgstr "" +msgstr "סגנון של פריטי דלי מילוי הצבע" -#: ../src/widgets/toolbox.cpp:1075 -#, fuzzy +#: ../src/widgets/toolbox.cpp:1272 msgid "Insert node" -msgstr "הוסף" +msgstr "הוסף מפרק" -#: ../src/widgets/toolbox.cpp:1076 +#: ../src/widgets/toolbox.cpp:1273 msgid "Insert new nodes into selected segments" -msgstr "" +msgstr "הוסף מפרקים חדשים למקטעים הנבחרים" -#: ../src/widgets/toolbox.cpp:1079 +#: ../src/widgets/toolbox.cpp:1276 msgid "Insert" msgstr "הוסף" -#: ../src/widgets/toolbox.cpp:1087 +#: ../src/widgets/toolbox.cpp:1284 msgid "Delete selected nodes" -msgstr "" +msgstr "מחק את המפרקים הנבחרים" -#: ../src/widgets/toolbox.cpp:1097 -#, fuzzy +#: ../src/widgets/toolbox.cpp:1294 msgid "Join endnodes" -msgstr "אחד צמתים" +msgstr "צרף מפרקי קצה" -#: ../src/widgets/toolbox.cpp:1098 +#: ../src/widgets/toolbox.cpp:1295 msgid "Join selected endnodes" -msgstr "" +msgstr "צרף את מפרקי הקצה הנבחרים" -#: ../src/widgets/toolbox.cpp:1101 +#: ../src/widgets/toolbox.cpp:1298 msgid "Join" -msgstr "אחד" +msgstr "צרף" -#: ../src/widgets/toolbox.cpp:1108 -#, fuzzy +#: ../src/widgets/toolbox.cpp:1305 msgid "Break nodes" -msgstr "הזז צמתים" +msgstr "שבור מפרקים" -#: ../src/widgets/toolbox.cpp:1109 +#: ../src/widgets/toolbox.cpp:1306 msgid "Break path at selected nodes" -msgstr "" +msgstr "שבור את הנתיב במפרקים הנבחרים" -#: ../src/widgets/toolbox.cpp:1119 +#: ../src/widgets/toolbox.cpp:1316 msgid "Join with segment" -msgstr "" +msgstr "צרף עם מקטע" -#: ../src/widgets/toolbox.cpp:1120 +#: ../src/widgets/toolbox.cpp:1317 msgid "Join selected endnodes with a new segment" -msgstr "" +msgstr "צרף את מפרקי הקצה הנבחרים עם מקטע חדש" -#: ../src/widgets/toolbox.cpp:1130 +#: ../src/widgets/toolbox.cpp:1327 msgid "Delete segment between two non-endpoint nodes" -msgstr "" +msgstr "מחק מקטע בין שתי נקודות שאינן מפרקי קצה" -#: ../src/widgets/toolbox.cpp:1139 +#: ../src/widgets/toolbox.cpp:1336 msgid "Node Cusp" -msgstr "" +msgstr "מפרק חוד" -#: ../src/widgets/toolbox.cpp:1140 +#: ../src/widgets/toolbox.cpp:1337 msgid "Make selected nodes corner" -msgstr "" +msgstr "הפוך את המפרקים הנבחרים לפינה" -#: ../src/widgets/toolbox.cpp:1149 +#: ../src/widgets/toolbox.cpp:1346 msgid "Node Smooth" -msgstr "" +msgstr "החלק מפרק" -#: ../src/widgets/toolbox.cpp:1150 +#: ../src/widgets/toolbox.cpp:1347 msgid "Make selected nodes smooth" -msgstr "" +msgstr "החלק את המפרקים הנבחרים" -#: ../src/widgets/toolbox.cpp:1159 +#: ../src/widgets/toolbox.cpp:1356 msgid "Node Symmetric" -msgstr "" +msgstr "מפרק סימטרי" -#: ../src/widgets/toolbox.cpp:1160 +#: ../src/widgets/toolbox.cpp:1357 msgid "Make selected nodes symmetric" -msgstr "" +msgstr "הפוך את המפרקים הנבחרים לסימטריים" -#: ../src/widgets/toolbox.cpp:1169 +#: ../src/widgets/toolbox.cpp:1366 +msgid "Node Auto" +msgstr "נתיב אוטו'" + +#: ../src/widgets/toolbox.cpp:1367 +msgid "Make selected nodes auto-smooth" +msgstr "הפוך את המפרקים הנבחרים לחלקים אוטומטית" + +#: ../src/widgets/toolbox.cpp:1376 msgid "Node Line" -msgstr "" +msgstr "מפרק קו" -#: ../src/widgets/toolbox.cpp:1170 +#: ../src/widgets/toolbox.cpp:1377 msgid "Make selected segments lines" -msgstr "" +msgstr "הפוך את המקטעים הנבחרים לקווים" -#: ../src/widgets/toolbox.cpp:1179 +#: ../src/widgets/toolbox.cpp:1386 msgid "Node Curve" -msgstr "" +msgstr "מפרק עיקול" -#: ../src/widgets/toolbox.cpp:1180 +#: ../src/widgets/toolbox.cpp:1387 msgid "Make selected segments curves" -msgstr "" +msgstr "הפוך את המקטעים הנבחרים לעיקולים" -#: ../src/widgets/toolbox.cpp:1189 +#: ../src/widgets/toolbox.cpp:1396 msgid "Show Handles" -msgstr "" +msgstr "הצג ידיות" -#: ../src/widgets/toolbox.cpp:1190 +#: ../src/widgets/toolbox.cpp:1397 msgid "Show the Bezier handles of selected nodes" -msgstr "" +msgstr "הצג את ידיות הבזייה של המפרקים הנבחרים" -#: ../src/widgets/toolbox.cpp:1200 +#: ../src/widgets/toolbox.cpp:1407 msgid "Show Outline" -msgstr "" +msgstr "הצג קו מתאר" -#: ../src/widgets/toolbox.cpp:1201 +#: ../src/widgets/toolbox.cpp:1408 msgid "Show the outline of the path" -msgstr "" +msgstr "הצג את קו המתאר של הנתיב" -#: ../src/widgets/toolbox.cpp:1211 +#: ../src/widgets/toolbox.cpp:1418 msgid "Next path effect parameter" -msgstr "" +msgstr "פרמטר אפקט הנתיב הבא" -#: ../src/widgets/toolbox.cpp:1212 +#: ../src/widgets/toolbox.cpp:1419 msgid "Show next path effect parameter for editing" -msgstr "" +msgstr "הצג את פרמטר אפקט הנתיב הבא לעריכה" -#: ../src/widgets/toolbox.cpp:1223 +#: ../src/widgets/toolbox.cpp:1430 msgid "Edit the clipping path of the object" -msgstr "" +msgstr "ערוך את הנתיב החותך של הפריט" -#: ../src/widgets/toolbox.cpp:1233 +#: ../src/widgets/toolbox.cpp:1440 msgid "Edit mask path" -msgstr "" +msgstr "ערוך את נתיב המסכה" -#: ../src/widgets/toolbox.cpp:1234 +#: ../src/widgets/toolbox.cpp:1441 msgid "Edit the mask of the object" -msgstr "" +msgstr "ערוך את מסכת הפריט" -#: ../src/widgets/toolbox.cpp:1248 +#: ../src/widgets/toolbox.cpp:1455 msgid "X coordinate:" -msgstr "" +msgstr "נקודת ציון X:" -#: ../src/widgets/toolbox.cpp:1248 +#: ../src/widgets/toolbox.cpp:1455 msgid "X coordinate of selected node(s)" -msgstr "" +msgstr "נקודת הציון בציר ה־X של המפרק/ים הנבחר/ים" -#: ../src/widgets/toolbox.cpp:1266 +#: ../src/widgets/toolbox.cpp:1473 msgid "Y coordinate:" -msgstr "" +msgstr "נקודת ציון Y:" -#: ../src/widgets/toolbox.cpp:1266 +#: ../src/widgets/toolbox.cpp:1473 msgid "Y coordinate of selected node(s)" -msgstr "" +msgstr "נקודת הציון בציר ה־Y של המפרק/ים הנבחר/ים" -#: ../src/widgets/toolbox.cpp:1688 +#: ../src/widgets/toolbox.cpp:1916 msgid "Star: Change number of corners" -msgstr "" +msgstr "כוכב: שנה את מספר הפינות" -#: ../src/widgets/toolbox.cpp:1730 +#: ../src/widgets/toolbox.cpp:1959 msgid "Star: Change spoke ratio" -msgstr "" +msgstr "כוכב: שנה את יחס הקרניים" -#: ../src/widgets/toolbox.cpp:1773 +#: ../src/widgets/toolbox.cpp:2002 msgid "Make polygon" -msgstr "" +msgstr "הפוך למצולע" -#: ../src/widgets/toolbox.cpp:1773 +#: ../src/widgets/toolbox.cpp:2002 msgid "Make star" -msgstr "" +msgstr "הפוך לכוכב" -#: ../src/widgets/toolbox.cpp:1808 +#: ../src/widgets/toolbox.cpp:2038 msgid "Star: Change rounding" -msgstr "" +msgstr "כוכב: החלף עיגול" -#: ../src/widgets/toolbox.cpp:1842 +#: ../src/widgets/toolbox.cpp:2073 msgid "Star: Change randomization" -msgstr "" +msgstr "כוכב: שנה אקראיות" -#: ../src/widgets/toolbox.cpp:2029 +#: ../src/widgets/toolbox.cpp:2264 msgid "Regular polygon (with one handle) instead of a star" -msgstr "" +msgstr "מצולע רגיל (עם ידית אחת) במקום כוכב" -#: ../src/widgets/toolbox.cpp:2036 +#: ../src/widgets/toolbox.cpp:2271 msgid "Star instead of a regular polygon (with one handle)" -msgstr "" +msgstr "כוכב במקום מצולע רגיל (בעל ידית אחת)" -#: ../src/widgets/toolbox.cpp:2057 +#: ../src/widgets/toolbox.cpp:2292 msgid "triangle/tri-star" -msgstr "" +msgstr "משולש/כוכב 3" -#: ../src/widgets/toolbox.cpp:2057 +#: ../src/widgets/toolbox.cpp:2292 msgid "square/quad-star" -msgstr "" +msgstr "ריבוע/כוכב 4" -#: ../src/widgets/toolbox.cpp:2057 +#: ../src/widgets/toolbox.cpp:2292 msgid "pentagon/five-pointed star" -msgstr "" +msgstr "מחומש/כוכב 5" -#: ../src/widgets/toolbox.cpp:2057 +#: ../src/widgets/toolbox.cpp:2292 msgid "hexagon/six-pointed star" -msgstr "" +msgstr "משושה/כוכב 6" -#: ../src/widgets/toolbox.cpp:2060 +#: ../src/widgets/toolbox.cpp:2295 msgid "Corners" msgstr "פינות" -#: ../src/widgets/toolbox.cpp:2060 +#: ../src/widgets/toolbox.cpp:2295 msgid "Corners:" msgstr "פינות:" -#: ../src/widgets/toolbox.cpp:2060 +#: ../src/widgets/toolbox.cpp:2295 msgid "Number of corners of a polygon or star" -msgstr "" +msgstr "מספר הפינות של המצולע או הכוכב" -#: ../src/widgets/toolbox.cpp:2073 +#: ../src/widgets/toolbox.cpp:2308 msgid "thin-ray star" -msgstr "" +msgstr "כוכב קרן־צרה" -#: ../src/widgets/toolbox.cpp:2073 +#: ../src/widgets/toolbox.cpp:2308 msgid "pentagram" -msgstr "" +msgstr "כוכב מחומש" -#: ../src/widgets/toolbox.cpp:2073 +#: ../src/widgets/toolbox.cpp:2308 msgid "hexagram" -msgstr "" +msgstr "מגן דוד" -#: ../src/widgets/toolbox.cpp:2073 +#: ../src/widgets/toolbox.cpp:2308 msgid "heptagram" -msgstr "" +msgstr "כוכב משובע" -#: ../src/widgets/toolbox.cpp:2073 +#: ../src/widgets/toolbox.cpp:2308 msgid "octagram" -msgstr "" +msgstr "כוכב מתומן" -#: ../src/widgets/toolbox.cpp:2073 +#: ../src/widgets/toolbox.cpp:2308 msgid "regular polygon" -msgstr "" +msgstr "מצולע רגיל" -#: ../src/widgets/toolbox.cpp:2076 +#: ../src/widgets/toolbox.cpp:2311 msgid "Spoke ratio" -msgstr "" +msgstr "יחס קרן" -#: ../src/widgets/toolbox.cpp:2076 +#: ../src/widgets/toolbox.cpp:2311 msgid "Spoke ratio:" -msgstr "" +msgstr "יחס הקרן:" #. TRANSLATORS: Tip radius of a star is the distance from the center to the farthest handle. #. Base radius is the same for the closest handle. -#: ../src/widgets/toolbox.cpp:2079 +#: ../src/widgets/toolbox.cpp:2314 msgid "Base radius to tip radius ratio" -msgstr "" +msgstr "יחס הרדיוס מהבסיס עד הקצה" -#: ../src/widgets/toolbox.cpp:2097 +#: ../src/widgets/toolbox.cpp:2332 msgid "stretched" -msgstr "" +msgstr "מתוח" -#: ../src/widgets/toolbox.cpp:2097 +#: ../src/widgets/toolbox.cpp:2332 msgid "twisted" -msgstr "" +msgstr "מעוות" -#: ../src/widgets/toolbox.cpp:2097 +#: ../src/widgets/toolbox.cpp:2332 msgid "slightly pinched" -msgstr "" +msgstr "מעט מקומץ" -#: ../src/widgets/toolbox.cpp:2097 +#: ../src/widgets/toolbox.cpp:2332 msgid "NOT rounded" -msgstr "" +msgstr "לא מעוגל" -#: ../src/widgets/toolbox.cpp:2097 +#: ../src/widgets/toolbox.cpp:2332 msgid "slightly rounded" -msgstr "" +msgstr "מעוגל במקצת" -#: ../src/widgets/toolbox.cpp:2097 +#: ../src/widgets/toolbox.cpp:2332 msgid "visibly rounded" -msgstr "" +msgstr "מעוגל ברורות" -#: ../src/widgets/toolbox.cpp:2097 +#: ../src/widgets/toolbox.cpp:2332 msgid "well rounded" -msgstr "" +msgstr "מעוגל כיאה" -#: ../src/widgets/toolbox.cpp:2097 +#: ../src/widgets/toolbox.cpp:2332 msgid "amply rounded" -msgstr "" +msgstr "מעוגל בשפע" -#: ../src/widgets/toolbox.cpp:2097 ../src/widgets/toolbox.cpp:2112 +#: ../src/widgets/toolbox.cpp:2332 +#: ../src/widgets/toolbox.cpp:2347 msgid "blown up" -msgstr "" +msgstr "מנופח" -#: ../src/widgets/toolbox.cpp:2100 -#, fuzzy +#: ../src/widgets/toolbox.cpp:2335 msgid "Rounded" -msgstr "רנדר" +msgstr "מעוגל" -#: ../src/widgets/toolbox.cpp:2100 +#: ../src/widgets/toolbox.cpp:2335 msgid "Rounded:" -msgstr "" +msgstr "מעוגל:" -#: ../src/widgets/toolbox.cpp:2100 +#: ../src/widgets/toolbox.cpp:2335 msgid "How much rounded are the corners (0 for sharp)" -msgstr "" +msgstr "כמה מעוגלות הן הפינות (0 לפינה חדה)" -#: ../src/widgets/toolbox.cpp:2112 +#: ../src/widgets/toolbox.cpp:2347 msgid "NOT randomized" -msgstr "" +msgstr "לא אקראי" -#: ../src/widgets/toolbox.cpp:2112 +#: ../src/widgets/toolbox.cpp:2347 msgid "slightly irregular" -msgstr "" +msgstr "מעט חריג" -#: ../src/widgets/toolbox.cpp:2112 +#: ../src/widgets/toolbox.cpp:2347 msgid "visibly randomized" -msgstr "" +msgstr "אקראי ברורות" -#: ../src/widgets/toolbox.cpp:2112 +#: ../src/widgets/toolbox.cpp:2347 msgid "strongly randomized" -msgstr "" +msgstr "אקראי בחוזקה" -#: ../src/widgets/toolbox.cpp:2115 +#: ../src/widgets/toolbox.cpp:2350 msgid "Randomized" -msgstr "" +msgstr "אקראי" -#: ../src/widgets/toolbox.cpp:2115 +#: ../src/widgets/toolbox.cpp:2350 msgid "Randomized:" -msgstr "" +msgstr "אקראיות:" -#: ../src/widgets/toolbox.cpp:2115 +#: ../src/widgets/toolbox.cpp:2350 msgid "Scatter randomly the corners and angles" -msgstr "" +msgstr "פזר את הפינות והזוויות באופן אקראי" -#: ../src/widgets/toolbox.cpp:2130 ../src/widgets/toolbox.cpp:3067 -#: ../src/widgets/toolbox.cpp:3847 ../src/widgets/toolbox.cpp:5804 +#: ../src/widgets/toolbox.cpp:2365 +#: ../src/widgets/toolbox.cpp:3304 +#: ../src/widgets/toolbox.cpp:3564 +#: ../src/widgets/toolbox.cpp:6755 msgid "Defaults" -msgstr "" +msgstr "ברירות מחדל" -#: ../src/widgets/toolbox.cpp:2131 ../src/widgets/toolbox.cpp:3068 -msgid "" -"Reset shape parameters to defaults (use Inkscape Preferences > Tools to " -"change defaults)" -msgstr "" +#: ../src/widgets/toolbox.cpp:2366 +#: ../src/widgets/toolbox.cpp:3305 +msgid "Reset shape parameters to defaults (use Inkscape Preferences > Tools to change defaults)" +msgstr "אפס את הפרמטרים של הצורה לברירות המחדל (השתמש בהעדפות אינקסקייפ -> כלים כדי לשנות את ברירות המחדל)" -#: ../src/widgets/toolbox.cpp:2203 +#: ../src/widgets/toolbox.cpp:2439 msgid "Change rectangle" -msgstr "" +msgstr "שנה מרובע" -#: ../src/widgets/toolbox.cpp:2396 +#: ../src/widgets/toolbox.cpp:2632 msgid "W:" -msgstr "" +msgstr "ר:" -#: ../src/widgets/toolbox.cpp:2396 +#: ../src/widgets/toolbox.cpp:2632 msgid "Width of rectangle" -msgstr "" +msgstr "רוחב המרובע" -#: ../src/widgets/toolbox.cpp:2413 +#: ../src/widgets/toolbox.cpp:2649 msgid "H:" -msgstr "" +msgstr "או:" -#: ../src/widgets/toolbox.cpp:2413 +#: ../src/widgets/toolbox.cpp:2649 msgid "Height of rectangle" -msgstr "" +msgstr "גובה המרובע" -#: ../src/widgets/toolbox.cpp:2427 ../src/widgets/toolbox.cpp:2442 +#: ../src/widgets/toolbox.cpp:2663 +#: ../src/widgets/toolbox.cpp:2678 msgid "not rounded" -msgstr "" +msgstr "לא מעוגל" -#: ../src/widgets/toolbox.cpp:2430 +#: ../src/widgets/toolbox.cpp:2666 msgid "Horizontal radius" -msgstr "" +msgstr "רדיוס אופקי" -#: ../src/widgets/toolbox.cpp:2430 +#: ../src/widgets/toolbox.cpp:2666 msgid "Rx:" -msgstr "" +msgstr "רx:" -#: ../src/widgets/toolbox.cpp:2430 +#: ../src/widgets/toolbox.cpp:2666 msgid "Horizontal radius of rounded corners" -msgstr "" +msgstr "רדיוס אופקי של הפינות המעוגלות" -#: ../src/widgets/toolbox.cpp:2445 +#: ../src/widgets/toolbox.cpp:2681 msgid "Vertical radius" -msgstr "" +msgstr "רדיוס אנכי" -#: ../src/widgets/toolbox.cpp:2445 +#: ../src/widgets/toolbox.cpp:2681 msgid "Ry:" -msgstr "" +msgstr "רy:" -#: ../src/widgets/toolbox.cpp:2445 +#: ../src/widgets/toolbox.cpp:2681 msgid "Vertical radius of rounded corners" -msgstr "" +msgstr "רדיוס אנכי של הפינות המעוגלות" -#: ../src/widgets/toolbox.cpp:2464 +#: ../src/widgets/toolbox.cpp:2700 msgid "Not rounded" -msgstr "" +msgstr "לא מעוגלות" -#: ../src/widgets/toolbox.cpp:2465 +#: ../src/widgets/toolbox.cpp:2701 msgid "Make corners sharp" -msgstr "" +msgstr "הפוך את הפינות לחדות" #. TODO: use the correct axis here, too -#: ../src/widgets/toolbox.cpp:2654 +#: ../src/widgets/toolbox.cpp:2889 msgid "3D Box: Change perspective (angle of infinite axis)" -msgstr "" +msgstr "תיבת תלת מימדית: שנה פרספקטיבה (זווית של ציר אין סופי)" -#: ../src/widgets/toolbox.cpp:2723 +#: ../src/widgets/toolbox.cpp:2959 msgid "Angle in X direction" -msgstr "" +msgstr "הזווית בכיוון ה־X" #. Translators: PL is short for 'perspective line' -#: ../src/widgets/toolbox.cpp:2725 +#: ../src/widgets/toolbox.cpp:2961 msgid "Angle of PLs in X direction" -msgstr "" +msgstr "הזווית של קווי הפרספקטיבה בכיוון ה־X" #. Translators: VP is short for 'vanishing point' -#: ../src/widgets/toolbox.cpp:2747 +#: ../src/widgets/toolbox.cpp:2983 msgid "State of VP in X direction" -msgstr "" +msgstr "מצב נקודת ההעלמות בכיוון ה־X" -#: ../src/widgets/toolbox.cpp:2748 +#: ../src/widgets/toolbox.cpp:2984 msgid "Toggle VP in X direction between 'finite' and 'infinite' (=parallel)" -msgstr "" +msgstr "החלף את נקודת ההעלמות בכיוון ה־X בין 'סופי' ל־'אינסופי' (=מקביל)" -#: ../src/widgets/toolbox.cpp:2763 +#: ../src/widgets/toolbox.cpp:2999 msgid "Angle in Y direction" -msgstr "" +msgstr "הזווית בכיוון ה־Y" -#: ../src/widgets/toolbox.cpp:2763 +#: ../src/widgets/toolbox.cpp:2999 msgid "Angle Y:" -msgstr "" +msgstr "זווית Y:" #. Translators: PL is short for 'perspective line' -#: ../src/widgets/toolbox.cpp:2765 +#: ../src/widgets/toolbox.cpp:3001 msgid "Angle of PLs in Y direction" -msgstr "" +msgstr "הזווית של קווי הפרספקטיבה בכיוון ה־Y" #. Translators: VP is short for 'vanishing point' -#: ../src/widgets/toolbox.cpp:2786 +#: ../src/widgets/toolbox.cpp:3022 msgid "State of VP in Y direction" -msgstr "" +msgstr "מצב נקודת ההעלמות בכיוון ה־Y" -#: ../src/widgets/toolbox.cpp:2787 +#: ../src/widgets/toolbox.cpp:3023 msgid "Toggle VP in Y direction between 'finite' and 'infinite' (=parallel)" -msgstr "" +msgstr "החלף את נקודת ההעלמות בכיוון ה־Y בין 'סופי' ל־'אינסופי' (=מקביל)" -#: ../src/widgets/toolbox.cpp:2802 +#: ../src/widgets/toolbox.cpp:3038 msgid "Angle in Z direction" -msgstr "" +msgstr "הזווית בכיוון Z:" #. Translators: PL is short for 'perspective line' -#: ../src/widgets/toolbox.cpp:2804 +#: ../src/widgets/toolbox.cpp:3040 msgid "Angle of PLs in Z direction" -msgstr "" +msgstr "הזווית של קווי הפרספקטיבה בכיוון ה־Z" #. Translators: VP is short for 'vanishing point' -#: ../src/widgets/toolbox.cpp:2825 +#: ../src/widgets/toolbox.cpp:3061 msgid "State of VP in Z direction" -msgstr "" +msgstr "מצב נקודת ההעלמות בכיוון ה־Z" -#: ../src/widgets/toolbox.cpp:2826 +#: ../src/widgets/toolbox.cpp:3062 msgid "Toggle VP in Z direction between 'finite' and 'infinite' (=parallel)" -msgstr "" +msgstr "החלף את נקודת ההעלמות בכיוון ה־Z בין 'סופי' ל־'אינסופי' (=מקביל)" -#: ../src/widgets/toolbox.cpp:2883 +#: ../src/widgets/toolbox.cpp:3120 msgid "Change spiral" -msgstr "" +msgstr "שנה ספירלה" -#: ../src/widgets/toolbox.cpp:3024 +#: ../src/widgets/toolbox.cpp:3261 msgid "just a curve" -msgstr "" +msgstr "רק עיקול" -#: ../src/widgets/toolbox.cpp:3024 +#: ../src/widgets/toolbox.cpp:3261 msgid "one full revolution" -msgstr "" +msgstr "הקפה אחת מלאה" -#: ../src/widgets/toolbox.cpp:3027 -#, fuzzy +#: ../src/widgets/toolbox.cpp:3264 msgid "Number of turns" -msgstr "מספר צעדים" +msgstr "מספר פניות" -#: ../src/widgets/toolbox.cpp:3027 +#: ../src/widgets/toolbox.cpp:3264 msgid "Turns:" -msgstr "" +msgstr "פניות:" -#: ../src/widgets/toolbox.cpp:3027 +#: ../src/widgets/toolbox.cpp:3264 msgid "Number of revolutions" -msgstr "" +msgstr "מספר הקפות" -#: ../src/widgets/toolbox.cpp:3038 +#: ../src/widgets/toolbox.cpp:3275 msgid "circle" -msgstr "" +msgstr "עיגול" -#: ../src/widgets/toolbox.cpp:3038 +#: ../src/widgets/toolbox.cpp:3275 msgid "edge is much denser" -msgstr "" +msgstr "הקצה צפוף בהרבה יותר" -#: ../src/widgets/toolbox.cpp:3038 +#: ../src/widgets/toolbox.cpp:3275 msgid "edge is denser" -msgstr "" +msgstr "הקצה צפוף יותר" -#: ../src/widgets/toolbox.cpp:3038 +#: ../src/widgets/toolbox.cpp:3275 msgid "even" -msgstr "" +msgstr "שווה" -#: ../src/widgets/toolbox.cpp:3038 +#: ../src/widgets/toolbox.cpp:3275 msgid "center is denser" -msgstr "" +msgstr "המרכז צפוף יותר" -#: ../src/widgets/toolbox.cpp:3038 +#: ../src/widgets/toolbox.cpp:3275 msgid "center is much denser" -msgstr "" +msgstr "המרכז צפוף בהרבה יותר" -#: ../src/widgets/toolbox.cpp:3041 +#: ../src/widgets/toolbox.cpp:3278 msgid "Divergence" -msgstr "" +msgstr "סטייה" -#: ../src/widgets/toolbox.cpp:3041 +#: ../src/widgets/toolbox.cpp:3278 msgid "Divergence:" -msgstr "" +msgstr "סטייה:" -#: ../src/widgets/toolbox.cpp:3041 +#: ../src/widgets/toolbox.cpp:3278 msgid "How much denser/sparser are outer revolutions; 1 = uniform" -msgstr "" +msgstr "בכמה ההקפים החיצוניים יהיו דלילים/צפופים יותר; 1 = אחיד" -#: ../src/widgets/toolbox.cpp:3052 +#: ../src/widgets/toolbox.cpp:3289 msgid "starts from center" -msgstr "" +msgstr "מתחיל מהמרכז" -#: ../src/widgets/toolbox.cpp:3052 +#: ../src/widgets/toolbox.cpp:3289 msgid "starts mid-way" -msgstr "" +msgstr "מתחיל מאמצע הדרך" -#: ../src/widgets/toolbox.cpp:3052 +#: ../src/widgets/toolbox.cpp:3289 msgid "starts near edge" -msgstr "" +msgstr "מתחיל קרוב לקצה" -#: ../src/widgets/toolbox.cpp:3055 -#, fuzzy +#: ../src/widgets/toolbox.cpp:3292 msgid "Inner radius" -msgstr "הפוך גרדיאנט" +msgstr "רדיוס פנימי" -#: ../src/widgets/toolbox.cpp:3055 +#: ../src/widgets/toolbox.cpp:3292 msgid "Inner radius:" -msgstr "" +msgstr "רדיוס פנימי:" -#: ../src/widgets/toolbox.cpp:3055 +#: ../src/widgets/toolbox.cpp:3292 msgid "Radius of the innermost revolution (relative to the spiral size)" -msgstr "" +msgstr "רדיוס ההקפה הפנימית ביותר (ביחד לגודל הספירלה)" -#: ../src/widgets/toolbox.cpp:3101 -#, fuzzy -msgid "Mode:" -msgstr "אליפסה" - -#: ../src/widgets/toolbox.cpp:3121 -msgid "Bézier" -msgstr "" +#: ../src/widgets/toolbox.cpp:3365 +msgid "Bezier" +msgstr "בזייה" -#: ../src/widgets/toolbox.cpp:3122 -msgid "Regular Bézier mode" -msgstr "" +#: ../src/widgets/toolbox.cpp:3366 +msgid "Create regular Bezier path" +msgstr "צור נתיב בזייה רגיל" -#: ../src/widgets/toolbox.cpp:3128 -#, fuzzy +#: ../src/widgets/toolbox.cpp:3372 msgid "Spiro" -msgstr "פחם" +msgstr "ספירו" -#: ../src/widgets/toolbox.cpp:3129 -msgid "Spiro splines mode" -msgstr "" +#: ../src/widgets/toolbox.cpp:3373 +msgid "Create Spiro path" +msgstr "צור נתיב ספירו" -#. Width -#: ../src/widgets/toolbox.cpp:3238 -msgid "(pinch tweak)" -msgstr "" +#: ../src/widgets/toolbox.cpp:3380 +msgid "Zigzag" +msgstr "זיגזג" + +#: ../src/widgets/toolbox.cpp:3381 +msgid "Create a sequence of straight line segments" +msgstr "צור רצף של מקטעים של קווים ישרים" + +#: ../src/widgets/toolbox.cpp:3387 +msgid "Paraxial" +msgstr "משני הכיוונים" + +#: ../src/widgets/toolbox.cpp:3388 +msgid "Create a sequence of paraxial line segments" +msgstr "צור רצף של מקטעים משני הצדדים" + +#: ../src/widgets/toolbox.cpp:3396 +#: ../src/widgets/toolbox.cpp:3787 +#: ../share/extensions/extrude.inx.h:3 +msgid "Mode:" +msgstr "מצב:" + +#: ../src/widgets/toolbox.cpp:3425 +msgid "Triangle in" +msgstr "משולש פנים" + +#: ../src/widgets/toolbox.cpp:3426 +msgid "Triangle out" +msgstr "משולש חוץ" -#: ../src/widgets/toolbox.cpp:3238 ../src/widgets/toolbox.cpp:3254 -#: ../src/widgets/toolbox.cpp:3420 ../src/widgets/toolbox.cpp:3642 -#: ../src/widgets/toolbox.cpp:3674 ../src/widgets/toolbox.cpp:4315 +#: ../src/widgets/toolbox.cpp:3428 +msgid "From clipboard" +msgstr "מלוח הגזירים" + +#: ../src/widgets/toolbox.cpp:3453 +#: ../src/widgets/toolbox.cpp:3454 +msgid "Shape:" +msgstr "צורה:" + +#: ../src/widgets/toolbox.cpp:3538 +msgid "(many nodes, rough)" +msgstr "(הרבה מפרקים, גס)" + +#: ../src/widgets/toolbox.cpp:3538 +#: ../src/widgets/toolbox.cpp:3658 +#: ../src/widgets/toolbox.cpp:3675 +#: ../src/widgets/toolbox.cpp:3878 +#: ../src/widgets/toolbox.cpp:4248 +#: ../src/widgets/toolbox.cpp:4281 +#: ../src/widgets/toolbox.cpp:5267 msgid "(default)" -msgstr "" +msgstr "(ברירת מחדל)" + +#: ../src/widgets/toolbox.cpp:3538 +msgid "(few nodes, smooth)" +msgstr "(מעט מפרקים, חלק)" + +#: ../src/widgets/toolbox.cpp:3541 +msgid "Smoothing:" +msgstr "החלקה:" + +#: ../src/widgets/toolbox.cpp:3541 +msgid "Smoothing: " +msgstr "החלקה:" -#: ../src/widgets/toolbox.cpp:3238 +#: ../src/widgets/toolbox.cpp:3542 +msgid "How much smoothing (simplifying) is applied to the line" +msgstr "כמה החלקה (פישוט) תחול על הקו" + +#: ../src/widgets/toolbox.cpp:3565 +msgid "Reset pencil parameters to defaults (use Inkscape Preferences > Tools to change defaults)" +msgstr "אפס את הפרמטרים של העפרון לברירות המחדל (השתמש בהעדפות אינקסקייפ -> כלים כדי לשנות את ברירות המחדל)" + +#. Width +#: ../src/widgets/toolbox.cpp:3658 +msgid "(pinch tweak)" +msgstr "(ויסות בצביטה)" + +#: ../src/widgets/toolbox.cpp:3658 msgid "(broad tweak)" -msgstr "" +msgstr "(רוחב הויסות)" -#: ../src/widgets/toolbox.cpp:3241 +#: ../src/widgets/toolbox.cpp:3661 msgid "The width of the tweak area (relative to the visible canvas area)" -msgstr "" +msgstr "רוחב אזור הויסות (ביחס לאיזור הנראה של משטח הציור)" #. Force -#: ../src/widgets/toolbox.cpp:3254 +#: ../src/widgets/toolbox.cpp:3675 msgid "(minimum force)" -msgstr "" +msgstr "(חוזק מזערי)" -#: ../src/widgets/toolbox.cpp:3254 +#: ../src/widgets/toolbox.cpp:3675 msgid "(maximum force)" -msgstr "" +msgstr "(חוזק מרבי)" -#: ../src/widgets/toolbox.cpp:3257 +#: ../src/widgets/toolbox.cpp:3678 msgid "Force" -msgstr "" +msgstr "חוזק" -#: ../src/widgets/toolbox.cpp:3257 +#: ../src/widgets/toolbox.cpp:3678 msgid "Force:" -msgstr "" +msgstr "חוזק:" -#: ../src/widgets/toolbox.cpp:3257 +#: ../src/widgets/toolbox.cpp:3678 msgid "The force of the tweak action" -msgstr "" +msgstr "חוזקה של פעולת הויסות" -#: ../src/widgets/toolbox.cpp:3274 -msgid "Push mode" -msgstr "" +#: ../src/widgets/toolbox.cpp:3696 +msgid "Move mode" +msgstr "מצב הזזה" -#: ../src/widgets/toolbox.cpp:3275 -msgid "Push parts of paths in any direction" -msgstr "" +#: ../src/widgets/toolbox.cpp:3697 +msgid "Move objects in any direction" +msgstr "הזז פריטים בכל כיוון" -#: ../src/widgets/toolbox.cpp:3281 -msgid "Shrink mode" -msgstr "" +#: ../src/widgets/toolbox.cpp:3703 +msgid "Move in/out mode" +msgstr "מצב הזזה פנימה/החוצה" -#: ../src/widgets/toolbox.cpp:3282 -msgid "Shrink (inset) parts of paths" -msgstr "" +#: ../src/widgets/toolbox.cpp:3704 +msgid "Move objects towards cursor; with Shift from cursor" +msgstr "הזז פריטים אל עבר הסמן; עם Shift הרחק מהסמן" -#: ../src/widgets/toolbox.cpp:3288 -msgid "Grow mode" -msgstr "" +#: ../src/widgets/toolbox.cpp:3710 +msgid "Move jitter mode" +msgstr "מצב הזזה מזערית" -#: ../src/widgets/toolbox.cpp:3289 -msgid "Grow (outset) parts of paths" -msgstr "" +#: ../src/widgets/toolbox.cpp:3711 +msgid "Move objects in random directions" +msgstr "הזז פריטים בכיוונים אקראיים" -#: ../src/widgets/toolbox.cpp:3295 -msgid "Attract mode" -msgstr "" +#: ../src/widgets/toolbox.cpp:3717 +msgid "Scale mode" +msgstr "מצב שינוי גודל" -#: ../src/widgets/toolbox.cpp:3296 -msgid "Attract parts of paths towards cursor" -msgstr "" +#: ../src/widgets/toolbox.cpp:3718 +msgid "Scale objects, with Shift scale up" +msgstr "שנה את גודל הפריטים, עם Shift להגדלה" -#: ../src/widgets/toolbox.cpp:3302 -msgid "Repel mode" -msgstr "" +#: ../src/widgets/toolbox.cpp:3724 +msgid "Rotate mode" +msgstr "מצב סיבוב" -#: ../src/widgets/toolbox.cpp:3303 -msgid "Repel parts of paths from cursor" -msgstr "" +#: ../src/widgets/toolbox.cpp:3725 +msgid "Rotate objects, with Shift counterclockwise" +msgstr "הטה פריטים, עם Shift נגד כיוון השעון" + +#: ../src/widgets/toolbox.cpp:3731 +msgid "Duplicate/delete mode" +msgstr "מצב שיכפול/מחיקה" + +#: ../src/widgets/toolbox.cpp:3732 +msgid "Duplicate objects, with Shift delete" +msgstr "שיכפול פריטים, עם Shift מחיקה" + +#: ../src/widgets/toolbox.cpp:3738 +msgid "Push mode" +msgstr "מצב דחיפה" + +#: ../src/widgets/toolbox.cpp:3739 +msgid "Push parts of paths in any direction" +msgstr "דחוף חלקים של נתיבים בכל כיוון" -#: ../src/widgets/toolbox.cpp:3309 +#: ../src/widgets/toolbox.cpp:3745 +msgid "Shrink/grow mode" +msgstr "מצב הגדלה/כיווץ" + +#: ../src/widgets/toolbox.cpp:3746 +msgid "Shrink (inset) parts of paths; with Shift grow (outset)" +msgstr "כווץ (צמצם) חלקים מנתיבים; עם Shift כדי להגדיל (הרחב)" + +#: ../src/widgets/toolbox.cpp:3752 +msgid "Attract/repel mode" +msgstr "מצב משיכה/דחייה" + +#: ../src/widgets/toolbox.cpp:3753 +msgid "Attract parts of paths towards cursor; with Shift from cursor" +msgstr "משוך חלקים של הנתיבים אל עבר הסמן; עם Shift הרחק מהסמן" + +#: ../src/widgets/toolbox.cpp:3759 msgid "Roughen mode" -msgstr "" +msgstr "מצב חיספוס" -#: ../src/widgets/toolbox.cpp:3310 +#: ../src/widgets/toolbox.cpp:3760 msgid "Roughen parts of paths" -msgstr "" +msgstr "חספס חלקים של נתיבים" -#: ../src/widgets/toolbox.cpp:3316 +#: ../src/widgets/toolbox.cpp:3766 msgid "Color paint mode" -msgstr "" +msgstr "מצב צביעה בצבע" -#: ../src/widgets/toolbox.cpp:3317 +#: ../src/widgets/toolbox.cpp:3767 msgid "Paint the tool's color upon selected objects" -msgstr "" +msgstr "צבע את צבע הכלי על פריטים נבחרים" -#: ../src/widgets/toolbox.cpp:3323 +#: ../src/widgets/toolbox.cpp:3773 msgid "Color jitter mode" -msgstr "" +msgstr "מצב עירבול צבעים" -#: ../src/widgets/toolbox.cpp:3324 +#: ../src/widgets/toolbox.cpp:3774 msgid "Jitter the colors of selected objects" -msgstr "" +msgstr "ערבל את הצבעים של הפריטים הנבחרים" -#: ../src/widgets/toolbox.cpp:3329 -msgid "Mode:" -msgstr "" +#: ../src/widgets/toolbox.cpp:3780 +msgid "Blur mode" +msgstr "מצב טשטוש" -#: ../src/widgets/toolbox.cpp:3350 +#: ../src/widgets/toolbox.cpp:3781 +msgid "Blur selected objects more; with Shift, blur less" +msgstr "הוסף לטשטש את הפריטים הנבחרים; עם Shift, לטשטש פחות" + +#: ../src/widgets/toolbox.cpp:3808 msgid "Channels:" -msgstr "" +msgstr "ערוצים:" -#: ../src/widgets/toolbox.cpp:3361 +#: ../src/widgets/toolbox.cpp:3819 msgid "In color mode, act on objects' hue" -msgstr "" +msgstr "במצב צבע, פעל על גוון הפריט" #. TRANSLATORS: "H" here stands for hue -#: ../src/widgets/toolbox.cpp:3365 +#: ../src/widgets/toolbox.cpp:3823 msgid "H" -msgstr "" +msgstr "H" -#: ../src/widgets/toolbox.cpp:3376 +#: ../src/widgets/toolbox.cpp:3834 msgid "In color mode, act on objects' saturation" -msgstr "" +msgstr "במצב צבע, פעל על רוויית הפריט" #. TRANSLATORS: "S" here stands for Saturation -#: ../src/widgets/toolbox.cpp:3380 +#: ../src/widgets/toolbox.cpp:3838 msgid "S" -msgstr "" +msgstr "S" -#: ../src/widgets/toolbox.cpp:3391 +#: ../src/widgets/toolbox.cpp:3849 msgid "In color mode, act on objects' lightness" -msgstr "" +msgstr "במצב צבע, פעל על תאורת הפריט" #. TRANSLATORS: "L" here stands for Lightness -#: ../src/widgets/toolbox.cpp:3395 +#: ../src/widgets/toolbox.cpp:3853 msgid "L" -msgstr "" +msgstr "L" -#: ../src/widgets/toolbox.cpp:3406 +#: ../src/widgets/toolbox.cpp:3864 msgid "In color mode, act on objects' opacity" -msgstr "" +msgstr "במצב צבע, פעל על אטימות הפריט" #. TRANSLATORS: "O" here stands for Opacity -#: ../src/widgets/toolbox.cpp:3410 +#: ../src/widgets/toolbox.cpp:3868 msgid "O" -msgstr "" +msgstr "O" #. Fidelity -#: ../src/widgets/toolbox.cpp:3420 +#: ../src/widgets/toolbox.cpp:3878 msgid "(rough, simplified)" -msgstr "" +msgstr "(מחוספס, מופשט)" -#: ../src/widgets/toolbox.cpp:3420 +#: ../src/widgets/toolbox.cpp:3878 msgid "(fine, but many nodes)" -msgstr "" +msgstr "(מעודן, אך בעל מפרקים רבים)" -#: ../src/widgets/toolbox.cpp:3423 +#: ../src/widgets/toolbox.cpp:3881 msgid "Fidelity" -msgstr "" +msgstr "דיוק" -#: ../src/widgets/toolbox.cpp:3423 +#: ../src/widgets/toolbox.cpp:3881 msgid "Fidelity:" -msgstr "" +msgstr "דיוק:" -#: ../src/widgets/toolbox.cpp:3424 -msgid "" -"Low fidelity simplifies paths; high fidelity preserves path features but may " -"generate a lot of new nodes" -msgstr "" +#: ../src/widgets/toolbox.cpp:3882 +msgid "Low fidelity simplifies paths; high fidelity preserves path features but may generate a lot of new nodes" +msgstr "דיוק נמוך מפשט את הנתיבים; דיוק גבוה שומר את תכונות הצורה אך יוצר המון מפרקים" -#: ../src/widgets/toolbox.cpp:3441 ../src/widgets/toolbox.cpp:3789 +#: ../src/widgets/toolbox.cpp:3899 +#: ../src/widgets/toolbox.cpp:4399 msgid "Pressure" -msgstr "" +msgstr "לחץ" -#: ../src/widgets/toolbox.cpp:3442 +#: ../src/widgets/toolbox.cpp:3900 msgid "Use the pressure of the input device to alter the force of tweak action" -msgstr "" +msgstr "השתמש בלחץ התקן הקלט כדי לשנות את חוזק פעולת הויסות" + +#: ../src/widgets/toolbox.cpp:4080 +msgid "No preset" +msgstr "אין ערכה" + +#: ../src/widgets/toolbox.cpp:4098 +msgid "Save..." +msgstr "שמור..." #. Width -#: ../src/widgets/toolbox.cpp:3642 ../src/widgets/toolbox.cpp:4315 +#: ../src/widgets/toolbox.cpp:4248 +#: ../src/widgets/toolbox.cpp:5267 msgid "(hairline)" -msgstr "" +msgstr "(חוט השערה)" -#: ../src/widgets/toolbox.cpp:3642 ../src/widgets/toolbox.cpp:4315 +#: ../src/widgets/toolbox.cpp:4248 +#: ../src/widgets/toolbox.cpp:5267 msgid "(broad stroke)" -msgstr "" +msgstr "(סגנון רחב)" -#: ../src/widgets/toolbox.cpp:3645 ../src/widgets/toolbox.cpp:4318 -#, fuzzy +#: ../src/widgets/toolbox.cpp:4251 +#: ../src/widgets/toolbox.cpp:5270 msgid "Pen Width" -msgstr "עובי קו" +msgstr "עובי העט" -#: ../src/widgets/toolbox.cpp:3646 +#: ../src/widgets/toolbox.cpp:4252 msgid "The width of the calligraphic pen (relative to the visible canvas area)" -msgstr "" +msgstr "עובי העט הקליגרפית (ביחס למשטח הציור הנראה)" #. Thinning -#: ../src/widgets/toolbox.cpp:3658 +#: ../src/widgets/toolbox.cpp:4265 msgid "(speed blows up stroke)" -msgstr "" +msgstr "(ניפוח קו מתאר מהיר)" -#: ../src/widgets/toolbox.cpp:3658 +#: ../src/widgets/toolbox.cpp:4265 msgid "(slight widening)" -msgstr "" +msgstr "(עיבוי קל)" -#: ../src/widgets/toolbox.cpp:3658 +#: ../src/widgets/toolbox.cpp:4265 msgid "(constant width)" -msgstr "" +msgstr "(עובי רציף)" -#: ../src/widgets/toolbox.cpp:3658 +#: ../src/widgets/toolbox.cpp:4265 msgid "(slight thinning, default)" -msgstr "" +msgstr "(הצרה קלה, ברירת מחדל)" -#: ../src/widgets/toolbox.cpp:3658 +#: ../src/widgets/toolbox.cpp:4265 msgid "(speed deflates stroke)" -msgstr "" +msgstr "(הצרת קו מתאר מהירה)" -#: ../src/widgets/toolbox.cpp:3661 +#: ../src/widgets/toolbox.cpp:4268 msgid "Stroke Thinning" -msgstr "" +msgstr "הצרת קו מתאר" -#: ../src/widgets/toolbox.cpp:3661 +#: ../src/widgets/toolbox.cpp:4268 msgid "Thinning:" -msgstr "" +msgstr "הצרה:" -#: ../src/widgets/toolbox.cpp:3662 -msgid "" -"How much velocity thins the stroke (> 0 makes fast strokes thinner, < 0 " -"makes them broader, 0 makes width independent of velocity)" -msgstr "" +#: ../src/widgets/toolbox.cpp:4269 +msgid "How much velocity thins the stroke (> 0 makes fast strokes thinner, < 0 makes them broader, 0 makes width independent of velocity)" +msgstr "מהי המהירות להצרת קו המתאר (> 0 מצר את קו המתאר מהר יותר, < 0 מעבה אותם, 0 מבטל את הקשר בין מהירות לעובי)" #. Angle -#: ../src/widgets/toolbox.cpp:3674 +#: ../src/widgets/toolbox.cpp:4281 msgid "(left edge up)" -msgstr "" +msgstr "(קצה שמאלה למעלה)" -#: ../src/widgets/toolbox.cpp:3674 +#: ../src/widgets/toolbox.cpp:4281 msgid "(horizontal)" -msgstr "" +msgstr "(אופקי)" -#: ../src/widgets/toolbox.cpp:3674 +#: ../src/widgets/toolbox.cpp:4281 msgid "(right edge up)" -msgstr "" +msgstr "(קצה ימני למעלה)" -#: ../src/widgets/toolbox.cpp:3677 +#: ../src/widgets/toolbox.cpp:4284 msgid "Pen Angle" -msgstr "" +msgstr "זווית העט" -#: ../src/widgets/toolbox.cpp:3677 +#: ../src/widgets/toolbox.cpp:4284 msgid "Angle:" -msgstr "" +msgstr "זווית:" -#: ../src/widgets/toolbox.cpp:3678 -msgid "" -"The angle of the pen's nib (in degrees; 0 = horizontal; has no effect if " -"fixation = 0)" -msgstr "" +#: ../src/widgets/toolbox.cpp:4285 +msgid "The angle of the pen's nib (in degrees; 0 = horizontal; has no effect if fixation = 0)" +msgstr "זווית חוד העט (במעלות; 0 = אופקי; אין שום השפעה אם הייצוב = 0)" #. Fixation -#: ../src/widgets/toolbox.cpp:3692 +#: ../src/widgets/toolbox.cpp:4299 msgid "(perpendicular to stroke, \"brush\")" -msgstr "" +msgstr "(מאונך לקו המתאר, \"מברשת\")" -#: ../src/widgets/toolbox.cpp:3692 +#: ../src/widgets/toolbox.cpp:4299 msgid "(almost fixed, default)" -msgstr "" +msgstr "(כמעט מקובע, ברירת מחדל)" -#: ../src/widgets/toolbox.cpp:3692 +#: ../src/widgets/toolbox.cpp:4299 msgid "(fixed by Angle, \"pen\")" -msgstr "" +msgstr "(מקובע לפי זווית, \"עט\")" -#: ../src/widgets/toolbox.cpp:3695 +#: ../src/widgets/toolbox.cpp:4302 msgid "Fixation" -msgstr "" +msgstr "ייצוב" -#: ../src/widgets/toolbox.cpp:3695 +#: ../src/widgets/toolbox.cpp:4302 msgid "Fixation:" -msgstr "" +msgstr "ייצוב:" -#: ../src/widgets/toolbox.cpp:3696 -msgid "" -"Angle behavior (0 = nib always perpendicular to stroke direction, 1 = fixed " -"angle)" -msgstr "" +#: ../src/widgets/toolbox.cpp:4303 +msgid "Angle behavior (0 = nib always perpendicular to stroke direction, 100 = fixed angle)" +msgstr "התנהגות הזוויות (0 = החוד תמיד יהיה מאונך לכיוון קו המתאר, 100 = זווית קבועה)" #. Cap Rounding -#: ../src/widgets/toolbox.cpp:3708 +#: ../src/widgets/toolbox.cpp:4315 msgid "(blunt caps, default)" -msgstr "" +msgstr "(חודים קהים, ברירת מחדל)" -#: ../src/widgets/toolbox.cpp:3708 +#: ../src/widgets/toolbox.cpp:4315 msgid "(slightly bulging)" -msgstr "" +msgstr "(בולט במקצת)" -#: ../src/widgets/toolbox.cpp:3708 +#: ../src/widgets/toolbox.cpp:4315 msgid "(approximately round)" -msgstr "" +msgstr "(מעוגל בקירוב)" -#: ../src/widgets/toolbox.cpp:3708 +#: ../src/widgets/toolbox.cpp:4315 msgid "(long protruding caps)" -msgstr "" +msgstr "(סיומת בולטת וארוכה)" -#: ../src/widgets/toolbox.cpp:3712 +#: ../src/widgets/toolbox.cpp:4319 msgid "Cap rounding" -msgstr "" +msgstr "עיגול סיומת" -#: ../src/widgets/toolbox.cpp:3712 +#: ../src/widgets/toolbox.cpp:4319 msgid "Caps:" -msgstr "" +msgstr "סיומות:" -#: ../src/widgets/toolbox.cpp:3713 -msgid "" -"Increase to make caps at the ends of strokes protrude more (0 = no caps, 1 = " -"round caps)" -msgstr "" +#: ../src/widgets/toolbox.cpp:4320 +msgid "Increase to make caps at the ends of strokes protrude more (0 = no caps, 1 = round caps)" +msgstr "הגדל כדי להבליט את סיומות קווי המתאר (0 = ללא סיומת, 1 = סיומות עגולות)" #. Tremor -#: ../src/widgets/toolbox.cpp:3725 +#: ../src/widgets/toolbox.cpp:4332 msgid "(smooth line)" -msgstr "" +msgstr "(קו חלק)" -#: ../src/widgets/toolbox.cpp:3725 +#: ../src/widgets/toolbox.cpp:4332 msgid "(slight tremor)" -msgstr "" +msgstr "(זעזוע קל)" -#: ../src/widgets/toolbox.cpp:3725 +#: ../src/widgets/toolbox.cpp:4332 msgid "(noticeable tremor)" -msgstr "" +msgstr "(זעזוע מורגש)" -#: ../src/widgets/toolbox.cpp:3725 +#: ../src/widgets/toolbox.cpp:4332 msgid "(maximum tremor)" -msgstr "" +msgstr "(זעזוע מרבי)" -#: ../src/widgets/toolbox.cpp:3728 +#: ../src/widgets/toolbox.cpp:4335 msgid "Stroke Tremor" -msgstr "" +msgstr "זעזוע קו המתאר" -#: ../src/widgets/toolbox.cpp:3728 +#: ../src/widgets/toolbox.cpp:4335 msgid "Tremor:" -msgstr "" +msgstr "זעזוע:" -#: ../src/widgets/toolbox.cpp:3729 +#: ../src/widgets/toolbox.cpp:4336 msgid "Increase to make strokes rugged and trembling" -msgstr "" +msgstr "הגדל כדי להפוך את קווי המתאר למחוספסים ונרעדים" #. Wiggle -#: ../src/widgets/toolbox.cpp:3742 +#: ../src/widgets/toolbox.cpp:4350 msgid "(no wiggle)" -msgstr "" +msgstr "(ללא נידנוד)" -#: ../src/widgets/toolbox.cpp:3742 +#: ../src/widgets/toolbox.cpp:4350 msgid "(slight deviation)" -msgstr "" +msgstr "(סטייה קלה)" -#: ../src/widgets/toolbox.cpp:3742 +#: ../src/widgets/toolbox.cpp:4350 msgid "(wild waves and curls)" -msgstr "" +msgstr "(גלים וסלסולים פרועים)" -#: ../src/widgets/toolbox.cpp:3745 -#, fuzzy +#: ../src/widgets/toolbox.cpp:4353 msgid "Pen Wiggle" -msgstr "עפרון" +msgstr "נדנוד עט" -#: ../src/widgets/toolbox.cpp:3745 +#: ../src/widgets/toolbox.cpp:4353 msgid "Wiggle:" -msgstr "" +msgstr "נדנוד:" -#: ../src/widgets/toolbox.cpp:3746 +#: ../src/widgets/toolbox.cpp:4354 msgid "Increase to make the pen waver and wiggle" -msgstr "" +msgstr "הגדל כדי להפוך את העט לגלי ומתנודד יותר" #. Mass -#: ../src/widgets/toolbox.cpp:3758 +#: ../src/widgets/toolbox.cpp:4367 msgid "(no inertia)" -msgstr "" +msgstr "(ללא התמדה)" -#: ../src/widgets/toolbox.cpp:3758 +#: ../src/widgets/toolbox.cpp:4367 msgid "(slight smoothing, default)" -msgstr "" +msgstr "(החלקה קלה, ברירת מחדל)" -#: ../src/widgets/toolbox.cpp:3758 +#: ../src/widgets/toolbox.cpp:4367 msgid "(noticeable lagging)" -msgstr "" +msgstr "(השתרכות מורגשת)" -#: ../src/widgets/toolbox.cpp:3758 +#: ../src/widgets/toolbox.cpp:4367 msgid "(maximum inertia)" -msgstr "" +msgstr "(התמדה מרבית)" -#: ../src/widgets/toolbox.cpp:3761 +#: ../src/widgets/toolbox.cpp:4370 msgid "Pen Mass" -msgstr "" +msgstr "נפח העט" -#: ../src/widgets/toolbox.cpp:3761 +#: ../src/widgets/toolbox.cpp:4370 msgid "Mass:" -msgstr "" +msgstr "נפח:" -#: ../src/widgets/toolbox.cpp:3762 +#: ../src/widgets/toolbox.cpp:4371 msgid "Increase to make the pen drag behind, as if slowed by inertia" -msgstr "" +msgstr "הגדל כדי לגרום לאט להשתרך מאחור, כאילו נמשך בידי כוח ההתמדה" -#: ../src/widgets/toolbox.cpp:3776 +#: ../src/widgets/toolbox.cpp:4386 msgid "Trace Background" -msgstr "" +msgstr "עקוב אחר הרקע" -#: ../src/widgets/toolbox.cpp:3777 -msgid "" -"Trace the lightness of the background by the width of the pen (white - " -"minimum width, black - maximum width)" -msgstr "" +#: ../src/widgets/toolbox.cpp:4387 +msgid "Trace the lightness of the background by the width of the pen (white - minimum width, black - maximum width)" +msgstr "עקוב אחר תאורת הרקע לפי עובי העט (לבן - רוחב מזערי, שחור - רוחב מרבי)" -#: ../src/widgets/toolbox.cpp:3790 +#: ../src/widgets/toolbox.cpp:4400 msgid "Use the pressure of the input device to alter the width of the pen" -msgstr "" +msgstr "השתמש בעוצמת הלחיצה של התקן הקלט כדי לשנות את עובי העט" -#: ../src/widgets/toolbox.cpp:3802 +#: ../src/widgets/toolbox.cpp:4412 msgid "Tilt" -msgstr "" +msgstr "הטה" -#: ../src/widgets/toolbox.cpp:3803 +#: ../src/widgets/toolbox.cpp:4413 msgid "Use the tilt of the input device to alter the angle of the pen's nib" -msgstr "" - -#: ../src/widgets/toolbox.cpp:3821 -msgid "No preset" -msgstr "" +msgstr "השתמש בהטיית התקן הקלט כדי לשנות את זווית חוד העט" -#: ../src/widgets/toolbox.cpp:3836 -msgid "Change calligraphic profile" -msgstr "" - -#: ../src/widgets/toolbox.cpp:3848 -msgid "Save current settings as new profile" -msgstr "" +#: ../src/widgets/toolbox.cpp:4426 +msgid "Choose a preset" +msgstr "בחר ערכה" -#: ../src/widgets/toolbox.cpp:3933 +#: ../src/widgets/toolbox.cpp:4514 msgid "Arc: Change start/end" -msgstr "" +msgstr "קשת: שנה התחלה/סיום" -#: ../src/widgets/toolbox.cpp:4022 +#: ../src/widgets/toolbox.cpp:4578 msgid "Arc: Change open/closed" -msgstr "" - -#: ../src/widgets/toolbox.cpp:4146 -#, fuzzy -msgid "Start" -msgstr "התחלה:" +msgstr "קשת: שנה פתוחה/סגורה" -#: ../src/widgets/toolbox.cpp:4146 +#: ../src/widgets/toolbox.cpp:4704 msgid "Start:" msgstr "התחלה:" -#: ../src/widgets/toolbox.cpp:4147 +#: ../src/widgets/toolbox.cpp:4705 msgid "The angle (in degrees) from the horizontal to the arc's start point" -msgstr "" - -#: ../src/widgets/toolbox.cpp:4159 -#, fuzzy -msgid "End" -msgstr "סוף:" +msgstr "הזווית (במעלות) מהאופק לנקודת התחלת הקשת" -#: ../src/widgets/toolbox.cpp:4159 +#: ../src/widgets/toolbox.cpp:4717 msgid "End:" msgstr "סוף:" -#: ../src/widgets/toolbox.cpp:4160 +#: ../src/widgets/toolbox.cpp:4718 msgid "The angle (in degrees) from the horizontal to the arc's end point" -msgstr "" +msgstr "הזווית (במעלות) מהאופק לנקודת קצה הקשת" -#: ../src/widgets/toolbox.cpp:4176 +#: ../src/widgets/toolbox.cpp:4734 msgid "Closed arc" -msgstr "" +msgstr "קשת סגורה" -#: ../src/widgets/toolbox.cpp:4177 +#: ../src/widgets/toolbox.cpp:4735 msgid "Switch to segment (closed shape with two radii)" -msgstr "" +msgstr "הפוך למקטע (צורה סגורה בעלת שני רדיוסים)" -#: ../src/widgets/toolbox.cpp:4183 +#: ../src/widgets/toolbox.cpp:4741 msgid "Open Arc" -msgstr "" +msgstr "קשת פתוחה" -#: ../src/widgets/toolbox.cpp:4184 +#: ../src/widgets/toolbox.cpp:4742 msgid "Switch to arc (unclosed shape)" -msgstr "" +msgstr "הפוך לקשת (צורה לא סגורה)" -#: ../src/widgets/toolbox.cpp:4208 +#: ../src/widgets/toolbox.cpp:4765 msgid "Make whole" -msgstr "" +msgstr "הפוך לשלמה" -#: ../src/widgets/toolbox.cpp:4209 +#: ../src/widgets/toolbox.cpp:4766 msgid "Make the shape a whole ellipse, not arc or segment" -msgstr "" +msgstr "הפוך את הצורה לאליפסה שלמה, לא קשת או מקטע" -#: ../src/widgets/toolbox.cpp:4275 -#, fuzzy +#: ../src/widgets/toolbox.cpp:4835 msgid "Opacity:" -msgstr "ריווח:" +msgstr "אטימות:" -#: ../src/widgets/toolbox.cpp:4282 +#: ../src/widgets/toolbox.cpp:4842 msgid "Pick opacity" -msgstr "" +msgstr "בחר אטימות" -#: ../src/widgets/toolbox.cpp:4283 -msgid "" -"Pick both the color and the alpha (transparency) under cursor; otherwise, " -"pick only the visible color premultiplied by alpha" -msgstr "" +#: ../src/widgets/toolbox.cpp:4843 +msgid "Pick both the color and the alpha (transparency) under cursor; otherwise, pick only the visible color premultiplied by alpha" +msgstr "בחר את הצבע ואת השקיפות תחת הסמן; או שתבחר רק את הצבע הנראה מוכפל בשקיפות" -#: ../src/widgets/toolbox.cpp:4286 -#, fuzzy +#: ../src/widgets/toolbox.cpp:4846 msgid "Pick" -msgstr "הדבק" +msgstr "בחר" -#: ../src/widgets/toolbox.cpp:4295 +#: ../src/widgets/toolbox.cpp:4855 msgid "Assign opacity" -msgstr "" +msgstr "הקצה אטימות" -#: ../src/widgets/toolbox.cpp:4296 -msgid "" -"If alpha was picked, assign it to selection as fill or stroke transparency" -msgstr "" +#: ../src/widgets/toolbox.cpp:4856 +msgid "If alpha was picked, assign it to selection as fill or stroke transparency" +msgstr "אם נבחרה שקיפות, הקצה אותה לבחירה בתור שקיפות למילוי או לקו המתאר" -#: ../src/widgets/toolbox.cpp:4299 +#: ../src/widgets/toolbox.cpp:4859 msgid "Assign" -msgstr "" +msgstr "הקצה" -#: ../src/widgets/toolbox.cpp:4319 +#: ../src/widgets/toolbox.cpp:5110 +msgid "All inactive" +msgstr "כל הלא פעילים" + +#: ../src/widgets/toolbox.cpp:5111 +msgid "No geometric tool is active" +msgstr "אין כלי גאומטרי פעיל" + +#: ../src/widgets/toolbox.cpp:5112 +msgid "all_inactive" +msgstr "כל ה_לא־פעילים" + +#: ../src/widgets/toolbox.cpp:5144 +msgid "Show limiting bounding box" +msgstr "הצג את התיבה התוחמת המגבילה" + +#: ../src/widgets/toolbox.cpp:5145 +msgid "Show bounding box (used to cut infinite lines)" +msgstr "הצג את התיבה התוחמת (משמשת לחיתוך קווים אינסופיים)" + +#: ../src/widgets/toolbox.cpp:5156 +msgid "Get limiting bounding box from selection" +msgstr "קבל את התיבה התוחמת המגבילה מהבחירה" + +#: ../src/widgets/toolbox.cpp:5157 +msgid "Set limiting bounding box (used to cut infinite lines) to the bounding box of current selection" +msgstr "הגדר את התיבה התוחמת המגבילה (משמש לחיתוך קווים אינסופיים) לתיבה התוחמת של הבחירה הנוכחית" + +#: ../src/widgets/toolbox.cpp:5169 +msgid "Choose a line segment type" +msgstr "בחר את סוג קו המקטע" + +#: ../src/widgets/toolbox.cpp:5185 +msgid "Display measuring info" +msgstr "הצג את נתוני המדידה" + +#: ../src/widgets/toolbox.cpp:5186 +msgid "Display measuring info for selected items" +msgstr "הצג את נתוני המדידה עבור הפריטים הנבחרים" + +#: ../src/widgets/toolbox.cpp:5206 +msgid "Open LPE dialog" +msgstr "פתח דיאלוג LPE" + +#: ../src/widgets/toolbox.cpp:5207 +msgid "Open LPE dialog (to adapt parameters numerically)" +msgstr "פתח דו־שיח אפקט נתיב חי (כדי להשתמש בפרמטרים מספריים)" + +#: ../src/widgets/toolbox.cpp:5271 msgid "The width of the eraser pen (relative to the visible canvas area)" -msgstr "" +msgstr "עובי כלי המוחק (ביחס למשטח הציור הגלוי)" -#: ../src/widgets/toolbox.cpp:4336 +#: ../src/widgets/toolbox.cpp:5289 msgid "Delete objects touched by the eraser" -msgstr "" +msgstr "מחק פריטים בהם נוגע המוחק" -#: ../src/widgets/toolbox.cpp:4342 +#: ../src/widgets/toolbox.cpp:5295 msgid "Cut" -msgstr "" +msgstr "גזור" -#: ../src/widgets/toolbox.cpp:4343 +#: ../src/widgets/toolbox.cpp:5296 msgid "Cut out from objects" -msgstr "" +msgstr "תגזיר מפריטים" -#: ../src/widgets/toolbox.cpp:4678 +#: ../src/widgets/toolbox.cpp:5637 msgid "Text: Change font family" -msgstr "" +msgstr "טקסט: שנה את משפחת הגופן" -#: ../src/widgets/toolbox.cpp:4763 +#: ../src/widgets/toolbox.cpp:5726 msgid "Text: Change alignment" -msgstr "" +msgstr "טקסט: שנה יישור" -#: ../src/widgets/toolbox.cpp:4846 +#: ../src/widgets/toolbox.cpp:5805 msgid "Text: Change font style" -msgstr "" +msgstr "טקסט: שנה את סגנון הגופן" -#: ../src/widgets/toolbox.cpp:4893 +#: ../src/widgets/toolbox.cpp:5853 msgid "Text: Change orientation" -msgstr "" +msgstr "טקסט: שנה אוריינטציה" -#: ../src/widgets/toolbox.cpp:4992 +#: ../src/widgets/toolbox.cpp:5956 msgid "Text: Change font size" -msgstr "" +msgstr "טקסט: שנה את גודל הגופן" -#: ../src/widgets/toolbox.cpp:5232 -msgid "" -"This font is currently not installed on your system. Inkscape will use the " -"default font instead." -msgstr "" +#: ../src/widgets/toolbox.cpp:6191 +msgid "This font is currently not installed on your system. Inkscape will use the default font instead." +msgstr "גופן זה אינו מתקן כעת במערכת שלך. אינקסקייפ תשתמש בגופן ברירת המחדל במקום." -#: ../src/widgets/toolbox.cpp:5271 +#: ../src/widgets/toolbox.cpp:6227 msgid "Align left" -msgstr "יישר לימין" +msgstr "יישר לשמאל" -#: ../src/widgets/toolbox.cpp:5282 +#: ../src/widgets/toolbox.cpp:6238 msgid "Center" -msgstr "יישר למרכז" +msgstr "מרכז" -#: ../src/widgets/toolbox.cpp:5293 +#: ../src/widgets/toolbox.cpp:6249 msgid "Align right" -msgstr "יישר לשמאל" +msgstr "יישר לימין" -#: ../src/widgets/toolbox.cpp:5304 +#: ../src/widgets/toolbox.cpp:6260 msgid "Justify" -msgstr "יישור אחיד" +msgstr "פיזור אחיד" -#: ../src/widgets/toolbox.cpp:5320 +#: ../src/widgets/toolbox.cpp:6275 msgid "Bold" msgstr "מודגש" -#: ../src/widgets/toolbox.cpp:5331 +#: ../src/widgets/toolbox.cpp:6286 msgid "Italic" msgstr "נטוי" -#: ../src/widgets/toolbox.cpp:5465 +#: ../src/widgets/toolbox.cpp:6419 msgid "Change connector spacing" -msgstr "" +msgstr "שנה את ריווח המחברים" -#: ../src/widgets/toolbox.cpp:5553 +#: ../src/widgets/toolbox.cpp:6502 msgid "Avoid" -msgstr "" +msgstr "המנע" -#: ../src/widgets/toolbox.cpp:5563 +#: ../src/widgets/toolbox.cpp:6512 msgid "Ignore" msgstr "התעלם" -#: ../src/widgets/toolbox.cpp:5575 -#, fuzzy +#: ../src/widgets/toolbox.cpp:6524 msgid "Connector Spacing" -msgstr "מחבר" +msgstr "ריווח מחברים" -#: ../src/widgets/toolbox.cpp:5575 +#: ../src/widgets/toolbox.cpp:6524 msgid "Spacing:" msgstr "ריווח:" -#: ../src/widgets/toolbox.cpp:5576 +#: ../src/widgets/toolbox.cpp:6525 msgid "The amount of space left around objects by auto-routing connectors" -msgstr "" +msgstr "המרווח שנשאר מסביב לפריטים על ידי ניתוב אוטומטי של מחברים" -#: ../src/widgets/toolbox.cpp:5587 +#: ../src/widgets/toolbox.cpp:6536 msgid "Graph" -msgstr "" +msgstr "תרשים" -#: ../src/widgets/toolbox.cpp:5597 -#, fuzzy +#: ../src/widgets/toolbox.cpp:6546 msgid "Connector Length" -msgstr "מחבר" +msgstr "אורך המחבר" -#: ../src/widgets/toolbox.cpp:5597 +#: ../src/widgets/toolbox.cpp:6546 msgid "Length:" msgstr "אורך:" -#: ../src/widgets/toolbox.cpp:5598 +#: ../src/widgets/toolbox.cpp:6547 msgid "Ideal length for connectors when layout is applied" -msgstr "" +msgstr "אורך אידיאלי עבור מחברים כאשר הופעלה פריסה" -#: ../src/widgets/toolbox.cpp:5610 +#: ../src/widgets/toolbox.cpp:6559 msgid "Downwards" -msgstr "" +msgstr "כלפי מטה" -#: ../src/widgets/toolbox.cpp:5611 +#: ../src/widgets/toolbox.cpp:6560 msgid "Make connectors with end-markers (arrows) point downwards" -msgstr "" +msgstr "הגדר סמני קצה (חיצים) למחברים המצביעים כלפי מטה" -#: ../src/widgets/toolbox.cpp:5627 +#: ../src/widgets/toolbox.cpp:6575 msgid "Do not allow overlapping shapes" -msgstr "" +msgstr "אל תאפשר את חפיפת הצורות" -#: ../src/widgets/toolbox.cpp:5728 +#: ../src/widgets/toolbox.cpp:6678 msgid "Fill by" -msgstr "" +msgstr "מלא באמצעות" -#: ../src/widgets/toolbox.cpp:5729 +#: ../src/widgets/toolbox.cpp:6679 msgid "Fill by:" -msgstr "" +msgstr "מלא באמצעות:" -#: ../src/widgets/toolbox.cpp:5741 +#: ../src/widgets/toolbox.cpp:6691 msgid "Fill Threshold" -msgstr "" +msgstr "סף מילוי" -#: ../src/widgets/toolbox.cpp:5742 -msgid "" -"The maximum allowed difference between the clicked pixel and the neighboring " -"pixels to be counted in the fill" -msgstr "" +#: ../src/widgets/toolbox.cpp:6692 +msgid "The maximum allowed difference between the clicked pixel and the neighboring pixels to be counted in the fill" +msgstr "ההבדל המרבי המורשה בין הפיקסל שנלחץ לבין שכניו הפיקסלים למיספור במילוי" -#: ../src/widgets/toolbox.cpp:5766 +#: ../src/widgets/toolbox.cpp:6717 msgid "Grow/shrink by" -msgstr "" +msgstr "הגדל/הקטן ב־" -#: ../src/widgets/toolbox.cpp:5766 +#: ../src/widgets/toolbox.cpp:6717 msgid "Grow/shrink by:" -msgstr "" +msgstr "הגדל/הקטן ב־:" -#: ../src/widgets/toolbox.cpp:5767 -msgid "" -"The amount to grow (positive) or shrink (negative) the created fill path" -msgstr "" +#: ../src/widgets/toolbox.cpp:6718 +msgid "The amount to grow (positive) or shrink (negative) the created fill path" +msgstr "מהי כמות ההגדלה (חיובית) או ההקטנה (שלילי) למילוי הנתיב שנוצר" -#: ../src/widgets/toolbox.cpp:5792 -#, fuzzy +#: ../src/widgets/toolbox.cpp:6743 msgid "Close gaps" -msgstr "_סגור" +msgstr "סגור פערים" -#: ../src/widgets/toolbox.cpp:5793 +#: ../src/widgets/toolbox.cpp:6744 msgid "Close gaps:" -msgstr "" +msgstr "סגור פערים:" -#: ../src/widgets/toolbox.cpp:5805 -msgid "" -"Reset paint bucket parameters to defaults (use Inkscape Preferences > Tools " -"to change defaults)" -msgstr "" +#: ../src/widgets/toolbox.cpp:6756 +msgid "Reset paint bucket parameters to defaults (use Inkscape Preferences > Tools to change defaults)" +msgstr "אפס את משתני דלי הצבע לברירת המחדל (השתמש בהעדפות אינקסקייפ -> כלים כדי לשנות את ברירות המחדל)" -#: ../share/extensions/dimension.py:97 +#: ../share/extensions/dimension.py:99 msgid "Unable to process this object. Try changing it into a path first." -msgstr "" +msgstr "לא ניתן לעבד אובייקט זה. נסה לשנות אותו להתיב תחילה." -#: ../share/extensions/embedimage.py:79 -msgid "" -"No xlink:href or sodipodi:absref attributes found, or they do not point to " -"an existing file! Unable to embed image." -msgstr "" +#: ../share/extensions/embedimage.py:74 +msgid "No xlink:href or sodipodi:absref attributes found, or they do not point to an existing file! Unable to embed image." +msgstr "לא נמצאו מאפייני xlink:href או sodipodi:absref, או שהם אינם מצביעים על קבצים קיימים! לא ניתן להטמיע את התמונה." -#: ../share/extensions/embedimage.py:104 +#: ../share/extensions/embedimage.py:76 #, python-format -msgid "" -"%s is not of type image/png, image/jpeg, image/bmp, image/gif, image/tiff, " -"or image/x-icon" -msgstr "" +msgid "Sorry we could not locate %s" +msgstr "מתנצלים על שלא הצלחנו לאתר את %s" -#: ../share/extensions/embedimage.py:106 +#: ../share/extensions/embedimage.py:101 #, python-format -msgid "Sorry we could not locate %s" -msgstr "" +msgid "%s is not of type image/png, image/jpeg, image/bmp, image/gif, image/tiff, or image/x-icon" +msgstr "%s איננו אחד מהסוגים image/png, image/jpeg, image/bmp, image/gif, image/tiff, או image/x-icon" #: ../share/extensions/export_gimp_palette.py:14 -msgid "" -"The export_gpl.py module requires PyXML. Please download the latest version " -"from http://pyxml.sourceforge.net/." -msgstr "" +msgid "The export_gpl.py module requires PyXML. Please download the latest version from http://pyxml.sourceforge.net/." +msgstr "המודול export_gpl.py דורש את PyXML. אנא הורד את הגרסה האחרונה מהכתובת http://pyxml.sourceforge.net/." #: ../share/extensions/extractimage.py:66 msgid "Difficulty finding the image data." -msgstr "" +msgstr "קושי במציאת נתוני התמונה." #: ../share/extensions/inkex.py:61 -msgid "" -"The fantastic lxml wrapper for libxml2 is required by inkex.py and therefore " -"this extension. Please download and install the latest version from http://" -"cheeseshop.python.org/pypi/lxml/, or install it through your package manager " -"by a command like: sudo apt-get install python-lxml" -msgstr "" +msgid "The fantastic lxml wrapper for libxml2 is required by inkex.py and therefore this extension. Please download and install the latest version from http://cheeseshop.python.org/pypi/lxml/, or install it through your package manager by a command like: sudo apt-get install python-lxml" +msgstr "אריזת ה­־lxml הנפלאה עבור libxml2 נדרשת על ידי inkex.py ולכן על ידי הרחבה זו. אנא הורד והתקן את הגירסה האחרונה מהכתובת http://cheeseshop.python.org/pypi/lxml/, או התקן אותה דרך מנהל החבילות על ידי פקודה כגון: sudo apt-get install python-lxml" -#: ../share/extensions/inkex.py:187 +#: ../share/extensions/inkex.py:186 #, python-format msgid "No matching node for expression: %s" -msgstr "" +msgstr "אין מפרק התואם לביטוי: %s" #: ../share/extensions/markers_strokepaint.py:41 #, python-format msgid "No style attribute found for id: %s" -msgstr "" +msgstr "לא נמצא ערך סגנון עבור המזהה: %s" #: ../share/extensions/markers_strokepaint.py:56 #, python-format msgid "unable to locate marker: %s" -msgstr "" +msgstr "לא ניתן לאתר את הסמן: %s" #: ../share/extensions/pathalongpath.py:197 #: ../share/extensions/pathscatter.py:208 #: ../share/extensions/perspective.py:55 #: ../share/extensions/summersnight.py:30 msgid "This extension requires two selected paths." -msgstr "" +msgstr "הרחבה זו דורשת בחירת שני נתיבים." #: ../share/extensions/pathmodifier.py:229 #, python-format msgid "Please first convert objects to paths! (Got [%s].)" -msgstr "" +msgstr "אנא המר את הפריטים לנתיבים תחילה! (התקבלו [%s].)" #: ../share/extensions/perspective.py:29 -msgid "" -"Failed to import the numpy or numpy.linalg modules. These modules are " -"required by this extension. Please install them and try again. On a Debian-" -"like system this can be done with the command, sudo apt-get install python-" -"numpy." -msgstr "" +msgid "Failed to import the numpy or numpy.linalg modules. These modules are required by this extension. Please install them and try again. On a Debian-like system this can be done with the command, sudo apt-get install python-numpy." +msgstr "כשל בייבוא המודולים numpy או numpy.linalg. מודולים אלו נדרשים על ידי הרחבה זו. אנא התקן אותם ונסה שנית. במערכות דמויות דביאן ניתן לעשות זאת על ידי הרצת הפקודה: sudo apt-get install python-numpy." #: ../share/extensions/perspective.py:64 -msgid "" -"This extension requires that the second selected path be four nodes long." -msgstr "" +msgid "This extension requires that the second selected path be four nodes long." +msgstr "הרחבה זו דורשת שהנתיב השני הנבחר יהיה בן ארבע מפרקים." -#: ../share/extensions/polyhedron_3d.py:60 -msgid "" -"Failed to import the numpy module. This module is required by this " -"extension. Please install them and try again. On a Debian-like system this " -"can be done with the command, sudo apt-get install python-numpy." -msgstr "" +#: ../share/extensions/polyhedron_3d.py:58 +msgid "Failed to import the numpy module. This module is required by this extension. Please install them and try again. On a Debian-like system this can be done with the command, sudo apt-get install python-numpy." +msgstr "כשל בייבוא המודול numpy. מודול זה נדרש על ידי הרחבה זו. אנא התקן אותו ונסה שוב. במערכות דמויות דביאן ניתן לעשות זאת על ידי הרצת הפקודה: sudo apt-get install python-numpy." + +#: ../share/extensions/polyhedron_3d.py:329 +msgid "No face data found in specified file\n" +msgstr "לא נמצאו נתוני פנים בקובץ שצויין\n" + +#: ../share/extensions/polyhedron_3d.py:335 +msgid "No edge data found in specified file\n" +msgstr "לא נמצאו נתוני קצה בקובץ המצויין\n" + +#. we cannot generate a list of faces from the edges without a lot of computation +#: ../share/extensions/polyhedron_3d.py:510 +msgid "Face Data Not Found. Ensure file contains face data, and check the file is imported as \"Face-Specifed\" under the \"Model File\" tab.\n" +msgstr "נתוני הפנים לא נמצאו. ודאו כי הקובץ מכיל נתוני פנים, ובדוק שהקובץ מיובא בתור \"הגדרת פנים\" תחת הלשונית \"קובץ דגם\".\n" + +#: ../share/extensions/polyhedron_3d.py:512 +msgid "Internal Error. No view type selected\n" +msgstr "שגיאה פנימית. לא נבחר סוג תצוגה\n" #: ../share/extensions/summersnight.py:32 msgid "The second path must be exactly four nodes long." -msgstr "" +msgstr "על הנתיב השני להיות לפחות בן ארבע מפרקים." -#: ../share/extensions/svg_and_media_zip_output.py:103 -#, fuzzy, python-format +#: ../share/extensions/svg_and_media_zip_output.py:102 +#, python-format msgid "Could not locate file: %s" -msgstr "" -"לא ניתן ליצור את הקובץ %s.\n" -"%s" +msgstr "לא ניתן לאתר את הקובץ: %s" #. vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 encoding=utf-8 textwidth=99 #: ../share/extensions/addnodes.inx.h:1 msgid "Add Nodes" -msgstr "הוסף צמתים" +msgstr "הוסף מפרקים" #: ../share/extensions/addnodes.inx.h:2 msgid "By max. segment length" -msgstr "" +msgstr "לפי אורך המקטע המרבי" #: ../share/extensions/addnodes.inx.h:3 -#, fuzzy msgid "By number of segments" -msgstr "מספר צעדים" +msgstr "לפי מספר המקטעים" #: ../share/extensions/addnodes.inx.h:4 msgid "Division method" -msgstr "" +msgstr "שיטת החלוקה" #: ../share/extensions/addnodes.inx.h:5 msgid "Maximum segment length (px)" -msgstr "" +msgstr "אורך המקטע המרבי (פיקסלים)" -#: ../share/extensions/addnodes.inx.h:6 ../share/extensions/edge3d.inx.h:6 -#: ../share/extensions/flatten.inx.h:3 ../share/extensions/fractalize.inx.h:2 +#: ../share/extensions/addnodes.inx.h:6 +#: ../share/extensions/edge3d.inx.h:6 +#: ../share/extensions/flatten.inx.h:3 +#: ../share/extensions/fractalize.inx.h:2 #: ../share/extensions/markers_strokepaint.inx.h:2 #: ../share/extensions/perspective.inx.h:1 #: ../share/extensions/radiusrand.inx.h:4 #: ../share/extensions/rubberstretch.inx.h:3 #: ../share/extensions/straightseg.inx.h:2 -#: ../share/extensions/summersnight.inx.h:2 ../share/extensions/whirl.inx.h:2 +#: ../share/extensions/summersnight.inx.h:2 +#: ../share/extensions/whirl.inx.h:2 msgid "Modify Path" -msgstr "" +msgstr "שנה נתיב" #: ../share/extensions/addnodes.inx.h:7 -#, fuzzy msgid "Number of segments" -msgstr "מספר צעדים" +msgstr "מספר המקטעים" #: ../share/extensions/ai_input.inx.h:1 msgid "AI 8.0 Input" -msgstr "" +msgstr "קלט AI 8.0" #: ../share/extensions/ai_input.inx.h:2 msgid "Adobe Illustrator 8.0 and below (*.ai)" -msgstr "" +msgstr "Adobe Illustrator 8.0 ומטה (*.ai)" #: ../share/extensions/ai_input.inx.h:3 msgid "Open files saved with Adobe Illustrator 8.0 or older" -msgstr "" +msgstr "פתח קבצים שנשמרו עם Adobe Illustrator 8.0 ומטה" #: ../share/extensions/ai_output.inx.h:1 msgid "AI 8.0 Output" -msgstr "" +msgstr "פלט AI 8.0" #: ../share/extensions/ai_output.inx.h:2 msgid "Adobe Illustrator 8.0 (*.ai)" -msgstr "" +msgstr "Adobe Illustrator 8.0 (*.ai)" #: ../share/extensions/ai_output.inx.h:3 msgid "Write Adobe Illustrator 8.0 (Postscript-based)" -msgstr "" +msgstr "כתוב כ־Adobe Illustrator 8.0 (מבוסס-Postscript)" #: ../share/extensions/aisvg.inx.h:1 msgid "AI SVG Input" -msgstr "" +msgstr "פלט של SVG ב־AI" #: ../share/extensions/aisvg.inx.h:2 msgid "Adobe Illustrator SVG (*.ai.svg)" -msgstr "" +msgstr "Adobe Illustrator SVG (*.ai.svg)" #: ../share/extensions/aisvg.inx.h:3 msgid "Cleans the cruft out of Adobe Illustrator SVGs before opening" -msgstr "" +msgstr "נקה את הפסולת מקבצי ה־SVG של Adobe Illustrator לפני הפתיחה" #: ../share/extensions/ccx_input.inx.h:1 msgid "Corel DRAW Compressed Exchange files (.ccx)" -msgstr "" +msgstr "קבצי Corel DRAW Compressed Exchange (.ccx)" #: ../share/extensions/ccx_input.inx.h:2 msgid "Corel DRAW Compressed Exchange files input" -msgstr "" +msgstr "קלט קבצי Corel DRAW Compressed Exchange" #: ../share/extensions/ccx_input.inx.h:3 msgid "Open compressed exchange files saved in Corel DRAW" -msgstr "" +msgstr "פתח קבצי תחלופה דחוסים שנשמרו תחת Corel DRAW" #: ../share/extensions/cdr_input.inx.h:1 msgid "Corel DRAW 7-X4 files (*.cdr)" -msgstr "" +msgstr "קבצי Corel DRAW 7-X4 (*.cdr)" #: ../share/extensions/cdr_input.inx.h:2 msgid "Corel DRAW Input" -msgstr "" +msgstr "קלו Corel DRAW" #: ../share/extensions/cdr_input.inx.h:3 msgid "Open files saved in Corel DRAW 7-X4" -msgstr "" +msgstr "פתח קבצים שנשמרו תחת Corel DRAW 7-X4" #: ../share/extensions/cdt_input.inx.h:1 msgid "Corel DRAW 7-13 template files (.cdt)" -msgstr "" +msgstr "קבצי תבנית של Corel DRAW 7-13 (.cdt)" #: ../share/extensions/cdt_input.inx.h:2 msgid "Corel DRAW templates input" -msgstr "" +msgstr "קלט של תבניות Corel DRAW" #: ../share/extensions/cdt_input.inx.h:3 msgid "Open files saved in Corel DRAW 7-13" -msgstr "" +msgstr "פתח קבצים שנשמרו תחת Corel DRAW 7-13" #: ../share/extensions/cgm_input.inx.h:1 msgid "Computer Graphics Metafile files (.cgm)" -msgstr "" +msgstr "קבצי Computer Graphics Metafile (.cgm)" #: ../share/extensions/cgm_input.inx.h:2 msgid "Computer Graphics Metafile files input" -msgstr "" +msgstr "קלט קבצי Computer Graphics Metafile" #: ../share/extensions/cgm_input.inx.h:3 msgid "Open Computer Graphics Metafile files" -msgstr "" +msgstr "קבצי Open Computer Graphics Metafile" #: ../share/extensions/cmx_input.inx.h:1 msgid "Corel DRAW Presentation Exchange files (.cmx)" -msgstr "" +msgstr "קבצי Corel DRAW Presentation Exchange (.cmx)" #: ../share/extensions/cmx_input.inx.h:2 msgid "Corel DRAW Presentation Exchange files input" -msgstr "" +msgstr "קלט קבצי Corel DRAW Presentation Exchange" #: ../share/extensions/cmx_input.inx.h:3 msgid "Open presentation exchange files saved in Corel DRAW" -msgstr "" +msgstr "פתח קבצי מצגת תחלופיים שנשמרו תחת Corel DRAW" #: ../share/extensions/color_brighter.inx.h:1 msgid "Brighter" -msgstr "" +msgstr "בהיר יותר" #: ../share/extensions/color_custom.inx.h:1 msgid "Blue Function" -msgstr "" +msgstr "פונקציית כחול" #: ../share/extensions/color_custom.inx.h:4 msgid "Green Function" -msgstr "" +msgstr "פונקציית ירוק" #: ../share/extensions/color_custom.inx.h:5 msgid "Red Function" -msgstr "" +msgstr "פונקציית אדום" #: ../share/extensions/color_darker.inx.h:2 msgid "Darker" -msgstr "" +msgstr "כהה יותר" #: ../share/extensions/color_desaturate.inx.h:2 msgid "Desaturate" -msgstr "" +msgstr "ביטול הרוויה" #: ../share/extensions/color_grayscale.inx.h:2 msgid "Grayscale" -msgstr "" +msgstr "גווני אפור" #: ../share/extensions/color_lesshue.inx.h:2 msgid "Less Hue" -msgstr "" +msgstr "פחות גוון" #: ../share/extensions/color_lesslight.inx.h:2 msgid "Less Light" -msgstr "" +msgstr "פחות אור" #: ../share/extensions/color_lesssaturation.inx.h:2 msgid "Less Saturation" -msgstr "" +msgstr "פחות רוויה" #: ../share/extensions/color_morehue.inx.h:2 msgid "More Hue" -msgstr "" +msgstr "יותר גוון" #: ../share/extensions/color_morelight.inx.h:2 msgid "More Light" -msgstr "" +msgstr "יותר אור" #: ../share/extensions/color_moresaturation.inx.h:2 msgid "More Saturation" -msgstr "" +msgstr "יותר רוויה" #: ../share/extensions/color_negative.inx.h:2 msgid "Negative" -msgstr "" +msgstr "תשליל" #: ../share/extensions/color_randomize.inx.h:4 msgid "Randomize" -msgstr "" +msgstr "בחר באקראי" #: ../share/extensions/color_removeblue.inx.h:2 msgid "Remove Blue" -msgstr "" +msgstr "הסר כחול" #: ../share/extensions/color_removegreen.inx.h:2 msgid "Remove Green" -msgstr "" +msgstr "הסר ירוק" #: ../share/extensions/color_removered.inx.h:2 msgid "Remove Red" -msgstr "" +msgstr "הסר אדום" #: ../share/extensions/color_replace.inx.h:1 msgid "By color (RRGGBB hex):" -msgstr "" +msgstr "לפי צבע (RRGGBB בהקסה):" #: ../share/extensions/color_replace.inx.h:3 -#, fuzzy msgid "Replace color" -msgstr "הדבק צבע" +msgstr "החלף צבע" #: ../share/extensions/color_replace.inx.h:4 msgid "Replace color (RRGGBB hex):" -msgstr "" +msgstr "החלף צבע (RRGGBB בהקסה):" #: ../share/extensions/color_rgbbarrel.inx.h:2 msgid "RGB Barrel" -msgstr "" +msgstr "תוף ה־RGB" #: ../share/extensions/dia.inx.h:1 msgid "A diagram created with the program Dia" -msgstr "" +msgstr "תרשים שנוצר עם התוכנה Dia" #: ../share/extensions/dia.inx.h:2 msgid "Dia Diagram (*.dia)" -msgstr "" +msgstr "תרשים Dia (*.dia)" #: ../share/extensions/dia.inx.h:3 msgid "Dia Input" -msgstr "" +msgstr "קלט Dia" #: ../share/extensions/dia.inx.h:4 -msgid "" -"In order to import Dia files, Dia itself must be installed. You can get Dia " -"at http://live.gnome.org/Dia" -msgstr "" +msgid "In order to import Dia files, Dia itself must be installed. You can get Dia at http://live.gnome.org/Dia" +msgstr "על מנת ליבא קבצי Dia, עליך להתקין את Dia. ניתן להשיג את Dia בכתובת http://live.gnome.org/Dia" #: ../share/extensions/dia.inx.h:5 -msgid "" -"The dia2svg.sh script should be installed with your Inkscape distribution. " -"If you do not have it, there is likely to be something wrong with your " -"Inkscape installation." -msgstr "" +msgid "The dia2svg.sh script should be installed with your Inkscape distribution. If you do not have it, there is likely to be something wrong with your Inkscape installation." +msgstr "הסקריפט dia2svg.sh אמור להיות מותקן עם הפצת האינקסקייפ שלך. אם אין לך אותו, ייתכן ומשהו אינו כשורה עם התקנת האינקסקייפ שלך." -#: ../share/extensions/dimension.inx.h:2 ../share/extensions/dots.inx.h:4 -#: ../share/extensions/handles.inx.h:2 ../share/extensions/measure.inx.h:11 +#: ../share/extensions/dimension.inx.h:2 +#: ../share/extensions/dots.inx.h:4 +#: ../share/extensions/handles.inx.h:2 +#: ../share/extensions/measure.inx.h:11 msgid "Visualize Path" -msgstr "" +msgstr "חזיון נתיב" #: ../share/extensions/dimension.inx.h:3 -#, fuzzy msgid "X Offset" -msgstr "היסט" +msgstr "קיזוז ב־X" #: ../share/extensions/dimension.inx.h:4 -#, fuzzy msgid "Y Offset" -msgstr "היסט" +msgstr "קיזוז ב־Y" #: ../share/extensions/dots.inx.h:1 msgid "Dot size" -msgstr "" +msgstr "גודל הנקודה" #: ../share/extensions/dots.inx.h:2 msgid "Font size" -msgstr "" +msgstr "גודל הגופן" #: ../share/extensions/dots.inx.h:3 msgid "Number Nodes" -msgstr "" +msgstr "מספר את המפרקים" + +#: ../share/extensions/draw_from_triangle.inx.h:1 +msgid "Altitudes" +msgstr "גבהים" + +#: ../share/extensions/draw_from_triangle.inx.h:2 +msgid "Angle Bisectors" +msgstr "מחברים זוויתיים" + +#: ../share/extensions/draw_from_triangle.inx.h:3 +msgid "Centroid" +msgstr "מרכז הצורה" + +#: ../share/extensions/draw_from_triangle.inx.h:4 +msgid "Circumcentre" +msgstr "מפגש האנכים האמצעיים" + +#: ../share/extensions/draw_from_triangle.inx.h:5 +msgid "Circumcircle" +msgstr "עיגול חוסם" + +#: ../share/extensions/draw_from_triangle.inx.h:6 +msgid "Common Objects" +msgstr "פריטים משותפים" + +#: ../share/extensions/draw_from_triangle.inx.h:7 +msgid "Contact Triangle" +msgstr "מגע במשולש" + +#: ../share/extensions/draw_from_triangle.inx.h:8 +msgid "Custom Point Specified By:" +msgstr "הנקודה המותאמת מצויינת על ידי:" + +#: ../share/extensions/draw_from_triangle.inx.h:9 +msgid "Custom Points and Options" +msgstr "נקודות מותאמות ואפשרויות" + +#: ../share/extensions/draw_from_triangle.inx.h:10 +msgid "Draw Circle About This Point" +msgstr "צייר עיגול על נקודה זו" + +#: ../share/extensions/draw_from_triangle.inx.h:11 +msgid "Draw From Triangle" +msgstr "צייר ממשולש" + +#: ../share/extensions/draw_from_triangle.inx.h:12 +msgid "Draw Isogonal Conjugate" +msgstr "צייר מפגשים משתקפים" + +#: ../share/extensions/draw_from_triangle.inx.h:13 +msgid "Draw Isotomic Conjugate" +msgstr "צייר נקודת השתקפות" + +#: ../share/extensions/draw_from_triangle.inx.h:14 +msgid "Draw Marker At This Point" +msgstr "צייר סמן בנקודה זו" + +#: ../share/extensions/draw_from_triangle.inx.h:15 +msgid "Excentral Triangle" +msgstr "משולש חיצוני" + +#: ../share/extensions/draw_from_triangle.inx.h:16 +msgid "Excentres" +msgstr "פנימיים" + +#: ../share/extensions/draw_from_triangle.inx.h:17 +msgid "Excircles" +msgstr "עיגולים חיצוניים" + +#: ../share/extensions/draw_from_triangle.inx.h:18 +msgid "Extouch Triangle" +msgstr "נוגעים במשולש מבחוץ" + +#: ../share/extensions/draw_from_triangle.inx.h:19 +msgid "Gergonne Point" +msgstr "נקודת Gergonne" + +#: ../share/extensions/draw_from_triangle.inx.h:21 +msgid "Incentre" +msgstr "חסום" + +#: ../share/extensions/draw_from_triangle.inx.h:22 +msgid "Incircle" +msgstr "מעגל חסום" + +#: ../share/extensions/draw_from_triangle.inx.h:23 +msgid "Nagel Point" +msgstr "נקודת Nagel" + +#: ../share/extensions/draw_from_triangle.inx.h:24 +msgid "Nine-Point Centre" +msgstr "מרכז 9 נקודות" + +#: ../share/extensions/draw_from_triangle.inx.h:25 +msgid "Nine-Point Circle" +msgstr "עיגול 9 נקודות" + +#: ../share/extensions/draw_from_triangle.inx.h:26 +msgid "Orthic Triangle" +msgstr "משולש גבהים" + +#: ../share/extensions/draw_from_triangle.inx.h:27 +msgid "Orthocentre" +msgstr "מרכז הגבהים במשולש" + +#: ../share/extensions/draw_from_triangle.inx.h:28 +msgid "Point At" +msgstr "נקודה ב־" + +#: ../share/extensions/draw_from_triangle.inx.h:29 +msgid "Radius / px" +msgstr "רדיוס / פיקסלים" + +#: ../share/extensions/draw_from_triangle.inx.h:31 +msgid "Report this triangle's properties" +msgstr "דווח על מאפייני המשולש הזה" + +#: ../share/extensions/draw_from_triangle.inx.h:32 +msgid "Symmedial Triangle" +msgstr "משולש חסום אמצעי" + +#: ../share/extensions/draw_from_triangle.inx.h:33 +msgid "Symmedian Point" +msgstr "נקודת מפגש חוצי הזווית" + +#: ../share/extensions/draw_from_triangle.inx.h:34 +msgid "Symmedians" +msgstr "חוצי זווית" + +#: ../share/extensions/draw_from_triangle.inx.h:35 +msgid "Triangle Function" +msgstr "פונקציה משולשת" + +#: ../share/extensions/draw_from_triangle.inx.h:36 +msgid "Trilinear Coordinates" +msgstr "נקודות תלת־לינאריות" #: ../share/extensions/dxf_input.inx.h:1 #: ../share/extensions/dxf_output.inx.h:1 msgid "AutoCAD DXF (*.dxf)" -msgstr "" +msgstr "AutoCAD DXF (*.dxf)" #: ../share/extensions/dxf_input.inx.h:2 msgid "DXF Input" -msgstr "" +msgstr "קלט DXF" #: ../share/extensions/dxf_input.inx.h:3 msgid "Import AutoCAD's Document Exchange Format" -msgstr "" +msgstr "ייבא במבנה החלפת המסמכים של AutoCAD (DXF)" #: ../share/extensions/dxf_input.inx.h:4 -msgid "" -"dxf2svg may come with Inkscape, but is also at http://dxf-svg-convert." -"sourceforge.net/" -msgstr "" +msgid "dxf2svg may come with Inkscape, but is also at http://dxf-svg-convert.sourceforge.net/" +msgstr "ייתכן ו־dxf2svg מגיע יחד עם אינקסקייפ, אך הוא גם זמין בכתובת http://dxf-svg-convert.sourceforge.net/" #: ../share/extensions/dxf_outlines.inx.h:1 msgid "Desktop Cutting Plotter" -msgstr "" +msgstr "תוויין חותך שולני" #: ../share/extensions/dxf_outlines.inx.h:2 msgid "Desktop Cutting Plotter (*.DXF)" -msgstr "" +msgstr "תוויין חותך שולחני (*.DXF)" + +#: ../share/extensions/dxf_outlines.inx.h:3 +msgid "ROBO-Master output" +msgstr "פלט ROBO-Master" #: ../share/extensions/dxf_output.inx.h:2 msgid "DXF Output" -msgstr "" +msgstr "פלט DXF" #: ../share/extensions/dxf_output.inx.h:3 msgid "DXF file written by pstoedit" -msgstr "" +msgstr "קובץ DXF שנכתב על ידי pstoedit" #: ../share/extensions/dxf_output.inx.h:4 msgid "pstoedit must be installed to run; see http://www.pstoedit.net/pstoedit" -msgstr "" +msgstr "עליך להתקין את pstoedit על מנת להריצו; ראה http://www.pstoedit.net/pstoedit" #: ../share/extensions/edge3d.inx.h:1 msgid "Blur height" -msgstr "" +msgstr "גובה הטישטוש" #: ../share/extensions/edge3d.inx.h:2 msgid "Blur stdDeviation" -msgstr "" +msgstr "סטיית תקן הטישטוש" #: ../share/extensions/edge3d.inx.h:3 msgid "Blur width" -msgstr "" +msgstr "רוחב הטישטוש" #: ../share/extensions/edge3d.inx.h:4 -#, fuzzy msgid "Edge 3D" -msgstr "קצה" +msgstr "קצה תלת מימדי" #: ../share/extensions/edge3d.inx.h:5 msgid "Illumination Angle" -msgstr "" +msgstr "זווית תאורה" #: ../share/extensions/edge3d.inx.h:7 msgid "Only black and white" -msgstr "" +msgstr "שחור ולבן בלבד" #: ../share/extensions/edge3d.inx.h:8 -#, fuzzy msgid "Shades" -msgstr "הצל" +msgstr "צללים" #: ../share/extensions/embedimage.inx.h:1 msgid "Embed All Images" -msgstr "" +msgstr "הטמע את כל התמונות" #: ../share/extensions/embedimage.inx.h:2 msgid "Embed only selected images" -msgstr "" +msgstr "הטמע את התמונות הנבחרות בלבד" #: ../share/extensions/eps_input.inx.h:1 msgid "EPS Input" -msgstr "" - -#: ../share/extensions/eps_input.inx.h:2 -msgid "Encapsulated Postscript" -msgstr "" +msgstr "קלט EPS" #: ../share/extensions/epsi_output.inx.h:1 msgid "EPSI Output" -msgstr "" +msgstr "פלט EPSI" #: ../share/extensions/epsi_output.inx.h:2 msgid "Encapsulated Postscript Interchange (*.epsi)" -msgstr "" +msgstr "Postscript Interchange מכומס (*.epsi)" #: ../share/extensions/epsi_output.inx.h:3 msgid "Encapsulated Postscript with a thumbnail" -msgstr "" +msgstr "Postscript ממוזער עם תמונה ממוזערת" #: ../share/extensions/eqtexsvg.inx.h:1 msgid "LaTeX formula" -msgstr "" +msgstr "נוסחת LaTeX" #: ../share/extensions/eqtexsvg.inx.h:2 msgid "LaTeX formula: " -msgstr "" +msgstr "נוסחת LaTeX: " #: ../share/extensions/export_gimp_palette.inx.h:1 msgid "Export as GIMP Palette" -msgstr "" +msgstr "ייצא כפלטה של GIMP" #: ../share/extensions/export_gimp_palette.inx.h:2 msgid "Exports the colors of this document as GIMP Palette" -msgstr "" +msgstr "מייצא את צבעי מסמך זה כפלטת צבעים של GIMP" #: ../share/extensions/export_gimp_palette.inx.h:3 msgid "GIMP Palette (*.gpl)" -msgstr "" +msgstr "ערכת צבעים של GIMP (*.gpl)" #: ../share/extensions/extractimage.inx.h:1 msgid "Extract One Image" -msgstr "" +msgstr "חלץ תמונה אחת" #: ../share/extensions/extractimage.inx.h:3 msgid "Note: The file extension is appended automatically." -msgstr "" +msgstr "הערה: סיומת הקובץ נוספת אוטומטית." #: ../share/extensions/extractimage.inx.h:4 msgid "Path to save image" -msgstr "" +msgstr "נתיב לשמירת התמונה" + +#: ../share/extensions/extrude.inx.h:1 +msgid "Extrude" +msgstr "הוצאה" #: ../share/extensions/fig_input.inx.h:1 msgid "Open files saved with XFIG" -msgstr "" +msgstr "פתח קבצים שנשמרו עם XFIG" #: ../share/extensions/fig_input.inx.h:2 msgid "XFIG Graphics File (*.fig)" -msgstr "" +msgstr "קבצי גרפיקה של XFIG (*.fig)" #: ../share/extensions/fig_input.inx.h:3 msgid "XFIG Input" -msgstr "" +msgstr "קלט XFIG" #: ../share/extensions/flatten.inx.h:1 msgid "Flatness" -msgstr "" +msgstr "שטיחות" #: ../share/extensions/flatten.inx.h:2 msgid "Flatten Beziers" -msgstr "" +msgstr "שטח את העיקולים" #: ../share/extensions/fractalize.inx.h:1 msgid "Fractalize" -msgstr "" +msgstr "פרקטליזציה" #: ../share/extensions/fractalize.inx.h:3 msgid "Smoothness" -msgstr "" +msgstr "חלקלקות" #: ../share/extensions/fractalize.inx.h:4 msgid "Subdivisions" -msgstr "" +msgstr "תת־חלוקות" #: ../share/extensions/funcplot.inx.h:1 msgid "Calculate first derivative numerically" -msgstr "" +msgstr "חשב את הנגזרת הראשונה מספרית" #: ../share/extensions/funcplot.inx.h:2 msgid "Draw Axes" -msgstr "" +msgstr "צייר צירים" #: ../share/extensions/funcplot.inx.h:3 msgid "End X value" -msgstr "" +msgstr "ערך ה־X לסיום" #: ../share/extensions/funcplot.inx.h:4 msgid "First derivative" -msgstr "" +msgstr "הנגזרת הראשונה" #: ../share/extensions/funcplot.inx.h:5 msgid "Function" -msgstr "" +msgstr "פונקציה" #: ../share/extensions/funcplot.inx.h:6 msgid "Function Plotter" -msgstr "" +msgstr "תוויין" #: ../share/extensions/funcplot.inx.h:7 msgid "Functions" -msgstr "" +msgstr "פונקציות" #: ../share/extensions/funcplot.inx.h:8 msgid "Isotropic scaling (uses smallest of width/xrange or height/yrange)" -msgstr "" +msgstr "שינוי גודל איזוטרופי (משתמש בקטן ביותר מבין רוחב/טווח־x או גובה/טווח־y)" #: ../share/extensions/funcplot.inx.h:9 msgid "Multiply X range by 2*pi" -msgstr "" +msgstr "הכפל את טווח ה־X ב־pi*2" #: ../share/extensions/funcplot.inx.h:10 msgid "Range and sampling" -msgstr "" +msgstr "טווח ודגימה" #: ../share/extensions/funcplot.inx.h:11 msgid "Remove rectangle" -msgstr "" +msgstr "הסר מרובע" #: ../share/extensions/funcplot.inx.h:13 msgid "Samples" -msgstr "" +msgstr "דוגמאות" #: ../share/extensions/funcplot.inx.h:14 -msgid "" -"Select a rectangle before calling the extension, it will determine X and Y " -"scales. With polar coordinates: Start and end X values define the angle " -"range in radians. X scale is set so that left and right edges of rectangle " -"are at +/-1. Isotropic scaling is disabled. First derivative is always " -"determined numerically." -msgstr "" +msgid "Select a rectangle before calling the extension, it will determine X and Y scales. With polar coordinates: Start and end X values define the angle range in radians. X scale is set so that left and right edges of rectangle are at +/-1. Isotropic scaling is disabled. First derivative is always determined numerically." +msgstr "בחר מרובע לפני הקריאה להרחבה זו, ההרחבה תזהה את מימדי ה־X וה־Y. עם נקודות ציון קוטביות: ערכי ה־X של הסוף וההתחלה את טווח הזווית ברדיאנים. מימדי ה־X מוגדרים כך שקצוות הימני והשמאלי של המרובע הינם +/-1. שינוי גודל איזוטרופי מבוטל. הנגזרת הראשונה תמיד נקבעת מספרית." #: ../share/extensions/funcplot.inx.h:15 -msgid "" -"Standard Python math functions are available: ceil(x); fabs(x); floor(x); " -"fmod(x,y); frexp(x); ldexp(x,i); modf(x); exp(x); log(x [, base]); log10(x); " -"pow(x,y); sqrt(x); acos(x); asin(x); atan(x); atan2(y,x); hypot(x,y); cos" -"(x); sin(x); tan(x); degrees(x); radians(x); cosh(x); sinh(x); tanh(x). The " -"constants pi and e are also available." -msgstr "" +msgid "Standard Python math functions are available: ceil(x); fabs(x); floor(x); fmod(x,y); frexp(x); ldexp(x,i); modf(x); exp(x); log(x [, base]); log10(x); pow(x,y); sqrt(x); acos(x); asin(x); atan(x); atan2(y,x); hypot(x,y); cos(x); sin(x); tan(x); degrees(x); radians(x); cosh(x); sinh(x); tanh(x). The constants pi and e are also available." +msgstr "הפונקציות המתמטיות התקניות של Python זמינות: ceil(x); fabs(x); floor(x); fmod(x,y); frexp(x); ldexp(x,i); modf(x); exp(x); log(x [, base]); log10(x); pow(x,y); sqrt(x); acos(x); asin(x); atan(x); atan2(y,x); hypot(x,y); cos(x); sin(x); tan(x); degrees(x); radians(x); cosh(x); sinh(x); tanh(x). כמו כן הקבועים pi ו־e זמינים גם כן." #: ../share/extensions/funcplot.inx.h:16 msgid "Start X value" -msgstr "" +msgstr "ערך ה־X ההתחלתי" #: ../share/extensions/funcplot.inx.h:17 msgid "Use" -msgstr "" +msgstr "השתמש" #: ../share/extensions/funcplot.inx.h:18 msgid "Use polar coordinates" -msgstr "" +msgstr "השתמש בנקודות ציון קוטביות" #: ../share/extensions/funcplot.inx.h:19 msgid "Y value of rectangle's bottom" -msgstr "" +msgstr "ערך ה־Y של תחתית המרובע" #: ../share/extensions/funcplot.inx.h:20 msgid "Y value of rectangle's top" -msgstr "" +msgstr "ערך ה־Y של הקצה העליון של המרובע" #: ../share/extensions/gears.inx.h:1 msgid "Circular pitch, px" -msgstr "" +msgstr "מרווח שיניים מעגלי, פיקסלים" #: ../share/extensions/gears.inx.h:2 msgid "Gear" -msgstr "" +msgstr "גלגל שיניים" #: ../share/extensions/gears.inx.h:3 msgid "Number of teeth" -msgstr "" +msgstr "מספר שיניים" #: ../share/extensions/gears.inx.h:4 msgid "Pressure angle" -msgstr "" +msgstr "זווית הלחץ" #: ../share/extensions/gimp_xcf.inx.h:1 msgid "GIMP XCF" -msgstr "" +msgstr "GIMP XCF" #: ../share/extensions/gimp_xcf.inx.h:2 msgid "GIMP XCF maintaining layers (*.XCF)" -msgstr "" +msgstr "GIMP XCF ששמר על שכבותיו (*.XCF)" #: ../share/extensions/gimp_xcf.inx.h:3 msgid "Save Grid:" -msgstr "" +msgstr "שמירת רשת:" #: ../share/extensions/gimp_xcf.inx.h:4 -#, fuzzy msgid "Save Guides:" -msgstr "הזז קו מנחה" +msgstr "שמור קווים מנחים:" #: ../share/extensions/grid_cartesian.inx.h:1 -msgid "Border Thickness / px" -msgstr "" +msgid "Border Thickness [px]" +msgstr "עובי הגבול [פיקסלים]" #: ../share/extensions/grid_cartesian.inx.h:2 msgid "Cartesian Grid" -msgstr "" +msgstr "רשת קרטזית" #: ../share/extensions/grid_cartesian.inx.h:3 msgid "Halve X Subsubdiv. Frequency after 'n' Subdivs. (log only)" -msgstr "" +msgstr "חצי תת­־תת­־חלוקת X. תדירות לאחר 'n' תת­־חלוקות. (רישום בלבד)" #: ../share/extensions/grid_cartesian.inx.h:4 msgid "Halve Y Subsubdiv. Frequency after 'n' Subdivs. (log only)" -msgstr "" +msgstr "חצי תת­־תת­־חלוקת Y. תדירות לאחר 'n' תת­־חלוקות. (רישום בלבד)" #: ../share/extensions/grid_cartesian.inx.h:5 msgid "Logarithmic X Subdiv. (Base given by entry above)" -msgstr "" +msgstr "תת־חלוקת X לוגריתמית (הבסיס נתון על ידי הרשומה שלהלן)" #: ../share/extensions/grid_cartesian.inx.h:6 msgid "Logarithmic Y Subdiv. (Base given by entry above)" -msgstr "" +msgstr "תת־חלוקת Y לוגריתמית (הבסיס נתון על ידי הרשומה שלהלן)" #: ../share/extensions/grid_cartesian.inx.h:7 -msgid "Major X Division Thickness / px" -msgstr "" +msgid "Major X Division Spacing [px]" +msgstr "ריווח חלוקת X ראשי [פיקסלים]" #: ../share/extensions/grid_cartesian.inx.h:8 -msgid "Major X Divisions" -msgstr "" +msgid "Major X Division Thickness [px]" +msgstr "עובי חלוקת X ראשית [פיקסלים]" #: ../share/extensions/grid_cartesian.inx.h:9 -msgid "Major X Divsion Spacing / px" -msgstr "" +msgid "Major X Divisions" +msgstr "חלוקות X ראשיות" #: ../share/extensions/grid_cartesian.inx.h:10 msgid "Major Y Division Spacing" -msgstr "" +msgstr "חלוקת הריווח הראשית ציר Y" #: ../share/extensions/grid_cartesian.inx.h:11 -msgid "Major Y Division Thickness / px" -msgstr "" +msgid "Major Y Division Thickness [px]" +msgstr "עובי חלוקת Y ראשית [פיקסלים]" #: ../share/extensions/grid_cartesian.inx.h:12 msgid "Major Y Divisions" -msgstr "" +msgstr "חלוקות Y ראשיות" #: ../share/extensions/grid_cartesian.inx.h:13 -msgid "Minor X Division Thickness / px" -msgstr "" +msgid "Minor X Division Thickness [px]" +msgstr "עובי חלוקת X משנית [פיקסלים]" #: ../share/extensions/grid_cartesian.inx.h:14 -msgid "Minor Y Division Thickness / px" -msgstr "" +msgid "Minor Y Division Thickness [px]" +msgstr "עובי חלוקת Y משנית [פיקסלים]" #: ../share/extensions/grid_cartesian.inx.h:16 msgid "Subdivisions per Major X Division" -msgstr "" +msgstr "תת־חלוקות לחלוקת X ראשית" #: ../share/extensions/grid_cartesian.inx.h:17 msgid "Subdivisions per Major Y Division" -msgstr "" +msgstr "תת־חלוקות לחלוקת Y ראשית" #: ../share/extensions/grid_cartesian.inx.h:18 -msgid "Subminor X Division Thickness / px" -msgstr "" +msgid "Subminor X Division Thickness [px]" +msgstr "עובי חלוקת תת־משנה X [פיקסלים]" #: ../share/extensions/grid_cartesian.inx.h:19 -msgid "Subminor Y Division Thickness / px" -msgstr "" +msgid "Subminor Y Division Thickness [px]" +msgstr "עובי חלוקת תת־משנה Y [פיקסלים]" #: ../share/extensions/grid_cartesian.inx.h:20 msgid "Subsubdivs. per X Subdiv." -msgstr "" +msgstr "תת­־תת­־חלוקות לכל תת­־חלוקת X" #: ../share/extensions/grid_cartesian.inx.h:21 msgid "Subsubdivs. per Y Subdivision" -msgstr "" +msgstr "תת­־תת­־חלוקות לכל תת­־חלוקת Y" #: ../share/extensions/grid_polar.inx.h:1 msgid "Angle Divisions" -msgstr "" +msgstr "חלוקות זווית" #: ../share/extensions/grid_polar.inx.h:2 msgid "Angle Divisions at Centre" -msgstr "" +msgstr "חלוקת הזווית במרכז" #: ../share/extensions/grid_polar.inx.h:3 -msgid "Centre Dot Diameter / px" -msgstr "" +msgid "Centre Dot Diameter [px]" +msgstr "נקודת מרכז המעגל [פיקסלים]" #: ../share/extensions/grid_polar.inx.h:4 -msgid "Circumferential Label Outset / px" -msgstr "" +msgid "Circumferential Label Outset [px]" +msgstr "מרחק התווית ההיקפית [פיקסלים]" #: ../share/extensions/grid_polar.inx.h:5 -msgid "Circumferential Label Size / px" -msgstr "" +msgid "Circumferential Label Size [px]" +msgstr "גודל התוויות ההקפיות [פיקסלים]" #: ../share/extensions/grid_polar.inx.h:6 msgid "Circumferential Labels" -msgstr "" +msgstr "תוויות היקפיות" #: ../share/extensions/grid_polar.inx.h:8 msgid "Logarithmic Subdiv. (Base given by entry above)" -msgstr "" +msgstr "תת­־חלוקה לוגריתמית. (הבסיס ניתן לפני הרשומה שלהלן)" #: ../share/extensions/grid_polar.inx.h:9 -msgid "Major Angular Division Thickness / px" -msgstr "" +msgid "Major Angular Division Thickness [px]" +msgstr "עובי החלוקה הזוויתית הראשית [פיקסלים]" #: ../share/extensions/grid_polar.inx.h:10 -msgid "Major Circular Division Thickness / px" -msgstr "" +msgid "Major Circular Division Spacing [px]" +msgstr "ריווח החלוקה המעגלית הראשית [פיקסלים]" #: ../share/extensions/grid_polar.inx.h:11 -msgid "Major Circular Divisions" -msgstr "" +msgid "Major Circular Division Thickness [px]" +msgstr "עובי החלוקה המעגלית הראשית [פיקסלים]" #: ../share/extensions/grid_polar.inx.h:12 -msgid "Major Circular Divsion Spacing / px" -msgstr "" +msgid "Major Circular Divisions" +msgstr "חלוקה מעגלית ראשית" #: ../share/extensions/grid_polar.inx.h:13 msgid "Minor Angle Division End 'n' Divs. Before Centre" -msgstr "" +msgstr "החלוקה הזוויתית המשנית מסיימת 'n' חלוקות. לפני המרכז" #: ../share/extensions/grid_polar.inx.h:14 -msgid "Minor Angular Division Thickness / px" -msgstr "" +msgid "Minor Angular Division Thickness [px]" +msgstr "עובי חלוקה זוויתית משנית [פיקסלים]" #: ../share/extensions/grid_polar.inx.h:15 -msgid "Minor Circular Division Thickness / px" -msgstr "" +msgid "Minor Circular Division Thickness [px]" +msgstr "עובי חלוקה מעגלית משנית [פיקסלים]" #: ../share/extensions/grid_polar.inx.h:17 msgid "Polar Grid" -msgstr "" +msgstr "רשת קוטבית" #: ../share/extensions/grid_polar.inx.h:19 msgid "Subdivisions per Major Angular Division" -msgstr "" +msgstr "תת­־חלוקות לכל חלוקה זוויתית ראשית" #: ../share/extensions/grid_polar.inx.h:20 msgid "Subdivisions per Major Circular Division" -msgstr "" +msgstr "תת­־חלוקות לכל תת­־חלוקה מעגלית" #: ../share/extensions/handles.inx.h:1 msgid "Draw Handles" -msgstr "" +msgstr "צייר ידיות" #: ../share/extensions/hpgl_output.inx.h:1 msgid "Export to an HP Graphics Language file" -msgstr "" +msgstr "ייצא לקובץ שפת הגרפיקה של HP" #: ../share/extensions/hpgl_output.inx.h:2 msgid "HP Graphics Language file (*.hpgl)" -msgstr "" +msgstr "קבצי שפה של גרפיקת HP (*.hpgl)" #: ../share/extensions/hpgl_output.inx.h:3 -#, fuzzy msgid "HPGL Output" -msgstr "פלט SVG" +msgstr "פלט HGPL" #: ../share/extensions/inkscape_help_askaquestion.inx.h:1 msgid "Ask Us a Question" -msgstr "" +msgstr "שאל אותנו שאלה" #: ../share/extensions/inkscape_help_commandline.inx.h:1 msgid "Command Line Options" -msgstr "" +msgstr "אפשרויות שורת הפקודה" #: ../share/extensions/inkscape_help_faq.inx.h:1 msgid "FAQ" -msgstr "" +msgstr "שאלות נפוצות" #: ../share/extensions/inkscape_help_keys.inx.h:1 msgid "Keys and Mouse Reference" -msgstr "" +msgstr "הפניות עכבר ומקלדת" #: ../share/extensions/inkscape_help_manual.inx.h:1 msgid "Inkscape Manual" -msgstr "" +msgstr "מדריך למשתמש באינקסקייפ" #: ../share/extensions/inkscape_help_relnotes.inx.h:1 msgid "New in This Version" -msgstr "" +msgstr "חדש בגירסה זו" #: ../share/extensions/inkscape_help_reportabug.inx.h:1 msgid "Report a Bug" -msgstr "" +msgstr "דווח על תקלה" #: ../share/extensions/inkscape_help_svgspec.inx.h:1 msgid "SVG 1.1 Specification" -msgstr "" +msgstr "איפיון התקן SVG 1.1" #: ../share/extensions/interp.inx.h:1 msgid "Duplicate endpaths" -msgstr "" +msgstr "קצה נתיב כפול" #: ../share/extensions/interp.inx.h:4 msgid "Interpolate" -msgstr "" +msgstr "ריגול" #: ../share/extensions/interp.inx.h:5 msgid "Interpolate style" -msgstr "" +msgstr "סגנון העירבול" #: ../share/extensions/interp.inx.h:6 msgid "Interpolation method" -msgstr "" +msgstr "שיטת הריגול" #: ../share/extensions/interp.inx.h:7 msgid "Interpolation steps" -msgstr "" +msgstr "צעדי הריגול" #: ../share/extensions/lindenmayer.inx.h:1 msgid "Axiom" -msgstr "" +msgstr "אקסיומה" #: ../share/extensions/lindenmayer.inx.h:2 msgid "Axiom and rules" -msgstr "" +msgstr "אקסיומות וחוקים" #: ../share/extensions/lindenmayer.inx.h:4 msgid "L-system" -msgstr "" +msgstr "מערכת ל" #: ../share/extensions/lindenmayer.inx.h:5 msgid "Left angle" -msgstr "" +msgstr "זווית שמאלית" #: ../share/extensions/lindenmayer.inx.h:8 #, no-c-format msgid "Randomize angle (%)" -msgstr "" +msgstr "זווית האקראיות (%)" #: ../share/extensions/lindenmayer.inx.h:10 #, no-c-format msgid "Randomize step (%)" -msgstr "" +msgstr "צעדי האקראיות (%)" #: ../share/extensions/lindenmayer.inx.h:12 msgid "Right angle" -msgstr "" +msgstr "זווית ימנית" #: ../share/extensions/lindenmayer.inx.h:13 msgid "Rules" -msgstr "" +msgstr "כללים" #: ../share/extensions/lindenmayer.inx.h:14 msgid "Step length (px)" -msgstr "" +msgstr "אורך הצעד (פיקסלים)" #: ../share/extensions/lindenmayer.inx.h:15 -msgid "" -"The path is generated by applying the substitutions of Rules to the Axiom, " -"Order times. The following commands are recognized in Axiom and Rules: Any " -"of A,B,C,D,E,F: draw forward Any of G,H,I,J,K,L: move forward +: turn left " -"-: turn right |: turn 180 degrees [: remember poing ]: return to remembered " -"point" +msgid "The path is generated by applying the substitutions of Rules to the Axiom, Order times. The following commands are recognized in Axiom and Rules: Any of A,B,C,D,E,F: draw forward Any of G,H,I,J,K,L: move forward +: turn left -: turn right |: turn 180 degrees [: remember point ]: return to remembered point" msgstr "" #: ../share/extensions/lorem_ipsum.inx.h:1 msgid "Lorem ipsum" -msgstr "" +msgstr "לורם איפסום" #: ../share/extensions/lorem_ipsum.inx.h:2 msgid "Number of paragraphs" -msgstr "" +msgstr "מספר פיסקאות" #: ../share/extensions/lorem_ipsum.inx.h:3 msgid "Paragraph length fluctuation (sentences)" -msgstr "" +msgstr "תנודה באורך הפיסקאות (משפטים)" #: ../share/extensions/lorem_ipsum.inx.h:4 msgid "Sentences per paragraph" -msgstr "" +msgstr "משפטים בכל פיסקה" #: ../share/extensions/lorem_ipsum.inx.h:6 -msgid "" -"This effect creates the standard \"Lorem Ipsum\" pseudolatin placeholder " -"text. If a flowed text is selected, Lorem Ipsum is added to it; otherwise a " -"new flowed text object, the size of the page, is created in a new layer." -msgstr "" +msgid "This effect creates the standard \"Lorem Ipsum\" pseudolatin placeholder text. If a flowed text is selected, Lorem Ipsum is added to it; otherwise a new flowed text object, the size of the page, is created in a new layer." +msgstr "אפקט זה מייצר פיסקאות בעלות טקסט למילוי המקום (\"לורם איפסום\") אקראיות. אם נבחר טקסט מרחף, לורם איפסום נוסף אליו; במידה ולא יווצר פריט טקסט מרחף חדש בגודל העמוד תחת שכבה חדשה." #: ../share/extensions/markers_strokepaint.inx.h:1 msgid "Color Markers to Match Stroke" -msgstr "" +msgstr "סמני צבע להתאמה לקו המתאר" #: ../share/extensions/measure.inx.h:1 msgid "Font size [px]" -msgstr "" +msgstr "גודל הגופן [פיקסלים]" #. mm #: ../share/extensions/measure.inx.h:4 msgid "Length Unit: " -msgstr "" +msgstr "מידת האורך: " #: ../share/extensions/measure.inx.h:5 msgid "Measure" -msgstr "" +msgstr "מדידה" #: ../share/extensions/measure.inx.h:6 msgid "Measure Path" -msgstr "" +msgstr "מדידת הנתיב" #: ../share/extensions/measure.inx.h:7 msgid "Offset [px]" -msgstr "" +msgstr "קיזוז [פיקסלים]" #: ../share/extensions/measure.inx.h:8 msgid "Precision" -msgstr "" +msgstr "דיוק" #: ../share/extensions/measure.inx.h:9 msgid "Scale Factor (Drawing:Real Length) = 1:" -msgstr "" +msgstr "מקדם אמת מידה (ציור:גודל אמיתי) = 1:" #: ../share/extensions/measure.inx.h:10 -msgid "" -"This effect measures the length of the selected path and adds it as a text-" -"on-path object with the selected unit. The number of significant digits can " -"be controlled by the Precision field. The Offset field controls the distance " -"from the text to the path. The Scale factor can be used to make measurements " -"in scaled drawings. For example, if 1 cm in the drawing equals 2.5 m in the " -"real world, Scale must be set to 250." -msgstr "" +msgid "This effect measures the length of the selected path and adds it as a text-on-path object with the selected unit. The number of significant digits can be controlled by the Precision field. The Offset field controls the distance from the text to the path. The Scale factor can be used to make measurements in scaled drawings. For example, if 1 cm in the drawing equals 2.5 m in the real world, Scale must be set to 250." +msgstr "אפקט זה מודד את האורך של הנתיב הנבחר ומוסיף מעין אפקט של טקסט־על־גבי־נתיב עם היחידה הנבחרת. מספר הספרות המשמעותיות ניתן לשליטה על ידי שדה הדיוק. שדה הקיזוז שולט במרחק שבין הטקסט לנתיב. מקדם שינוי קנה המידה יכול לשמש למדידה בציורים שנמתחו. לדוגמה, אם ס\"מ אחד בציור שווה ל-2.5 מ' בעולם האמיתי, קנה המידה חייב להיות מוגדר ל־250." -#: ../share/extensions/motion.inx.h:2 -msgid "Extrude" -msgstr "" +#: ../share/extensions/motion.inx.h:3 +msgid "Magnitude" +msgstr "בהירות" #: ../share/extensions/motion.inx.h:4 -msgid "Magnitude" -msgstr "" +msgid "Motion" +msgstr "תנועה" #: ../share/extensions/outline2svg.inx.h:1 msgid "ASCII Text with outline markup" -msgstr "" +msgstr "קוד ASCII עם סימון חיצוני" #: ../share/extensions/outline2svg.inx.h:2 msgid "Text Outline File (*.outline)" -msgstr "" +msgstr "קובץ קווי מתאר של טקסט (*.outline)" #: ../share/extensions/outline2svg.inx.h:3 msgid "Text Outline Input" -msgstr "" +msgstr "קלט קוי מתאר של טקסט" #: ../share/extensions/pathalongpath.inx.h:1 msgid "Copies of the pattern:" -msgstr "" +msgstr "העתקים של התבנית:" #: ../share/extensions/pathalongpath.inx.h:2 msgid "Deformation type:" -msgstr "" +msgstr "סוג העיוות:" #: ../share/extensions/pathalongpath.inx.h:3 #: ../share/extensions/pathscatter.inx.h:3 msgid "Duplicate the pattern before deformation" -msgstr "" +msgstr "שכפל את התבנית לפני העיוות" #: ../share/extensions/pathalongpath.inx.h:6 msgid "Pattern along Path" -msgstr "" +msgstr "תבנית לאורך הנתיב" #: ../share/extensions/pathalongpath.inx.h:10 msgid "Ribbon" -msgstr "" +msgstr "רצועה" #: ../share/extensions/pathalongpath.inx.h:13 -#, fuzzy msgid "Snake" -msgstr "צורות" +msgstr "נחש" #: ../share/extensions/pathalongpath.inx.h:14 #: ../share/extensions/pathscatter.inx.h:11 msgid "Space between copies:" -msgstr "" +msgstr "רווח בין העותקים:" #: ../share/extensions/pathalongpath.inx.h:16 -msgid "" -"This effect bends a pattern object along arbitrary \"skeleton\" paths. The " -"pattern is the top most object in the selection. (groups of paths/shapes/" -"clones... allowed)" -msgstr "" +msgid "This effect bends a pattern object along arbitrary \"skeleton\" paths. The pattern is the top most object in the selection. (groups of paths/shapes/clones... allowed)" +msgstr "אפקט זה מכופף את התבנית לאורך נתיבי \"שלד\" שרירותיים. התבנית היא הפריט העליון ביותר בבחירה. (קבוצות של נתיבים/צורות/כפילים... מותרים)" #: ../share/extensions/pathscatter.inx.h:1 -#, fuzzy msgid "Cloned" -msgstr "_סגור" +msgstr "משוכפל" #: ../share/extensions/pathscatter.inx.h:2 msgid "Copied" -msgstr "" +msgstr "מועתק" #: ../share/extensions/pathscatter.inx.h:4 -msgid "Follow path orientation." -msgstr "" +msgid "Follow path orientation" +msgstr "עקוב אחר יישור העמוד" #: ../share/extensions/pathscatter.inx.h:6 -#, fuzzy msgid "Moved" -msgstr "הזז" +msgstr "הועבר" #: ../share/extensions/pathscatter.inx.h:8 msgid "Original pattern will be:" -msgstr "" +msgstr "התבנית המקורית תהיה:" #: ../share/extensions/pathscatter.inx.h:10 -#, fuzzy msgid "Scatter" -msgstr "מטר" +msgstr "פיזור" #: ../share/extensions/pathscatter.inx.h:12 msgid "Stretch spaces to fit skeleton length" -msgstr "" +msgstr "מתח את הרווחים כדי שיתאימו לאורך הגולגולת" #: ../share/extensions/pathscatter.inx.h:14 -msgid "" -"This effect scatters a pattern along arbitrary \"skeleton\" paths. The " -"pattern is the top most object in the selection. (groups of paths/shapes/" -"clones... allowed)" -msgstr "" +msgid "This effect scatters a pattern along arbitrary \"skeleton\" paths. The pattern is the top most object in the selection. (groups of paths/shapes/clones... allowed)" +msgstr "אפקט זה מפזר את התבנית לאורך נתיבי \"שלד\" שרירותיים. התבנית היא הפריט העליון ביותר בבחירה. (קבוצות של נתיבים/צורות/כפילים... מותרים)" #: ../share/extensions/perfectboundcover.inx.h:1 msgid "Bleed (in)" -msgstr "" +msgstr "שוליים לחיתוך (אינטש)" #: ../share/extensions/perfectboundcover.inx.h:2 msgid "Bond Weight #" -msgstr "" +msgstr "עובי הקשר במספרים" #: ../share/extensions/perfectboundcover.inx.h:3 msgid "Book Height (inches)" -msgstr "" +msgstr "גובה הספר (אינטשים)" #: ../share/extensions/perfectboundcover.inx.h:4 -#, fuzzy msgid "Book Properties" -msgstr "אפשרויות הדפסה" +msgstr "מאפייני הספר" #: ../share/extensions/perfectboundcover.inx.h:5 msgid "Book Width (inches)" -msgstr "" +msgstr "רוחב הספר (אינטשים)" #: ../share/extensions/perfectboundcover.inx.h:6 msgid "Caliper (inches)" -msgstr "" +msgstr "מחוגה (אינטשים)" #: ../share/extensions/perfectboundcover.inx.h:7 -#, fuzzy msgid "Cover" -msgstr "הזז" +msgstr "כריכה" #: ../share/extensions/perfectboundcover.inx.h:8 msgid "Cover Thickness Measurement" -msgstr "" +msgstr "מדידת עובי הכריכה" #: ../share/extensions/perfectboundcover.inx.h:9 msgid "Generate Template" -msgstr "" +msgstr "ייצר תבנית" #: ../share/extensions/perfectboundcover.inx.h:10 msgid "Interior Pages" -msgstr "" +msgstr "דפים פנימיים" #: ../share/extensions/perfectboundcover.inx.h:11 msgid "Note: Bond Weight # calculations are a best-guess estimate." -msgstr "" +msgstr "הערה: חישובי עובי הנייר הינם ההערכות המוצלחות ביותר." #: ../share/extensions/perfectboundcover.inx.h:12 -#, fuzzy msgid "Number of Pages" -msgstr "מספר צעדים" +msgstr "מספר העמודים" #: ../share/extensions/perfectboundcover.inx.h:13 msgid "Pages Per Inch (PPI)" -msgstr "" +msgstr "עמודים לאינטש (PPI)" #: ../share/extensions/perfectboundcover.inx.h:14 msgid "Paper Thickness Measurement" -msgstr "" +msgstr "מדידת עובי הדף" #: ../share/extensions/perfectboundcover.inx.h:15 msgid "Perfect-Bound Cover" -msgstr "" +msgstr "כריכת ספר" #: ../share/extensions/perfectboundcover.inx.h:17 msgid "Remove existing guides" -msgstr "" +msgstr "הסר קווים מנחים קיימים" #: ../share/extensions/perfectboundcover.inx.h:18 -#, fuzzy msgid "Specify Width" -msgstr "עובי קו" +msgstr "ציין רוחב" #: ../share/extensions/perspective.inx.h:2 msgid "Perspective" -msgstr "" +msgstr "פרספקטיבה" #: ../share/extensions/polyhedron_3d.inx.h:1 -#, fuzzy msgid "3D Polyhedron" -msgstr "פוליגון" +msgstr "פוליהדרון תלת־מימדי" #: ../share/extensions/polyhedron_3d.inx.h:2 msgid "Clockwise Wound Object" -msgstr "" +msgstr "עקל את הפריט עכ\"ש" #: ../share/extensions/polyhedron_3d.inx.h:3 msgid "Cube" -msgstr "" +msgstr "קוביה" #: ../share/extensions/polyhedron_3d.inx.h:4 msgid "Cuboctohedron" -msgstr "" +msgstr "קובוקטהדרון" #: ../share/extensions/polyhedron_3d.inx.h:5 msgid "Dodecahedron" -msgstr "" +msgstr "תריסרון" #: ../share/extensions/polyhedron_3d.inx.h:6 msgid "Draw Back-Facing Polygons" -msgstr "" +msgstr "צייר מצולעים שפניהם מופנות פנימה" #: ../share/extensions/polyhedron_3d.inx.h:7 msgid "Edge-Specified" -msgstr "" +msgstr "קצה מוגדר" #: ../share/extensions/polyhedron_3d.inx.h:8 -#, fuzzy msgid "Edges" -msgstr "קצה" +msgstr "קצוות" #: ../share/extensions/polyhedron_3d.inx.h:9 msgid "Face-Specified" -msgstr "" +msgstr "פנים מוגדרות" #: ../share/extensions/polyhedron_3d.inx.h:10 msgid "Faces" -msgstr "" +msgstr "פנים" #: ../share/extensions/polyhedron_3d.inx.h:11 -#, fuzzy msgid "Filename:" -msgstr "שם משתמש:" +msgstr "שם הקובץ:" #: ../share/extensions/polyhedron_3d.inx.h:12 msgid "Fill Colour (Blue)" -msgstr "" +msgstr "צבע המילוי (כחול)" #: ../share/extensions/polyhedron_3d.inx.h:13 msgid "Fill Colour (Green)" -msgstr "" +msgstr "צבע המילוי (ירוק)" #: ../share/extensions/polyhedron_3d.inx.h:14 msgid "Fill Colour (Red)" -msgstr "" +msgstr "צבע המילוי (אדום)" #: ../share/extensions/polyhedron_3d.inx.h:16 #, no-c-format msgid "Fill Opacity/ %" -msgstr "" +msgstr "אטימות המילוי/ %" #: ../share/extensions/polyhedron_3d.inx.h:17 msgid "Great Dodecahedron" -msgstr "" +msgstr "תריסרון משוכלל" #: ../share/extensions/polyhedron_3d.inx.h:18 msgid "Great Stellated Dodecahedron" -msgstr "" +msgstr "Great Stellated Dodecahedron" #: ../share/extensions/polyhedron_3d.inx.h:19 msgid "Icosahedron" -msgstr "" +msgstr "עשרימון" #: ../share/extensions/polyhedron_3d.inx.h:20 -#, fuzzy msgid "Light x-Position" -msgstr "יעד הדפסה" +msgstr "מיקום ה־x של האור" #: ../share/extensions/polyhedron_3d.inx.h:21 -#, fuzzy msgid "Light y-Position" -msgstr "יעד הדפסה" +msgstr "מיקום ה־y של האור" #: ../share/extensions/polyhedron_3d.inx.h:22 -#, fuzzy msgid "Light z-Position" -msgstr "יעד הדפסה" +msgstr "מיקום ה־z של האור" #: ../share/extensions/polyhedron_3d.inx.h:23 msgid "Line Thickness / px" -msgstr "" +msgstr "עובי הקו / פיקסלים" #: ../share/extensions/polyhedron_3d.inx.h:24 msgid "Load From File" -msgstr "" +msgstr "טען מקובץ" #: ../share/extensions/polyhedron_3d.inx.h:25 -#, fuzzy msgid "Maximum" -msgstr "בינוני" +msgstr "מרבי" #: ../share/extensions/polyhedron_3d.inx.h:26 msgid "Mean" -msgstr "" +msgstr "ממוצע" #: ../share/extensions/polyhedron_3d.inx.h:27 -#, fuzzy msgid "Minimum" -msgstr "בינוני" +msgstr "מזערי" #: ../share/extensions/polyhedron_3d.inx.h:28 -#, fuzzy msgid "Model File" -msgstr "קובץ" +msgstr "קובץ דגם" #: ../share/extensions/polyhedron_3d.inx.h:29 msgid "Object Type" -msgstr "" +msgstr "סוג הפריט" #: ../share/extensions/polyhedron_3d.inx.h:30 msgid "Object:" -msgstr "" +msgstr "פריט:" #: ../share/extensions/polyhedron_3d.inx.h:31 msgid "Octahedron" -msgstr "" +msgstr "אוקטהדרון" #: ../share/extensions/polyhedron_3d.inx.h:33 -msgid "Report Normal Vector Information" -msgstr "" - -#: ../share/extensions/polyhedron_3d.inx.h:34 -#, fuzzy msgid "Rotate Around:" -msgstr "סובב צמתים" +msgstr "סובב סביב:" -#: ../share/extensions/polyhedron_3d.inx.h:35 +#: ../share/extensions/polyhedron_3d.inx.h:34 msgid "Rotation / Degrees" -msgstr "" +msgstr "הטייה / מעלות" -#: ../share/extensions/polyhedron_3d.inx.h:36 -#, fuzzy +#: ../share/extensions/polyhedron_3d.inx.h:35 msgid "Scaling Factor" -msgstr "פקטור" +msgstr "מקדם שינוי הגודל" -#: ../share/extensions/polyhedron_3d.inx.h:37 -#, fuzzy +#: ../share/extensions/polyhedron_3d.inx.h:36 msgid "Shading" -msgstr "ריווח" +msgstr "הצללה" -#: ../share/extensions/polyhedron_3d.inx.h:39 +#: ../share/extensions/polyhedron_3d.inx.h:38 msgid "Small Triambic Icosahedron" -msgstr "" +msgstr "כוכב 90 חודים" -#: ../share/extensions/polyhedron_3d.inx.h:40 +#: ../share/extensions/polyhedron_3d.inx.h:39 msgid "Snub Cube" -msgstr "" +msgstr "קוביה 38 פאות" -#: ../share/extensions/polyhedron_3d.inx.h:41 +#: ../share/extensions/polyhedron_3d.inx.h:40 msgid "Snub Dodecahedron" -msgstr "" +msgstr "קוביה 92 פאות" -#: ../share/extensions/polyhedron_3d.inx.h:43 +#: ../share/extensions/polyhedron_3d.inx.h:42 #, no-c-format msgid "Stroke Opacity/ %" -msgstr "" +msgstr "אטימות קו המתאר/ %" -#: ../share/extensions/polyhedron_3d.inx.h:45 +#: ../share/extensions/polyhedron_3d.inx.h:44 msgid "Tetrahedron" -msgstr "" +msgstr "ארבעון" -#: ../share/extensions/polyhedron_3d.inx.h:46 +#: ../share/extensions/polyhedron_3d.inx.h:45 msgid "Then Rotate Around:" -msgstr "" +msgstr "אז סובב סביב:" -#: ../share/extensions/polyhedron_3d.inx.h:47 +#: ../share/extensions/polyhedron_3d.inx.h:46 msgid "Truncated Cube" -msgstr "" +msgstr "קוביה קטומה" -#: ../share/extensions/polyhedron_3d.inx.h:48 +#: ../share/extensions/polyhedron_3d.inx.h:47 msgid "Truncated Dodecahedron" -msgstr "" +msgstr "תריסרון קטוע" -#: ../share/extensions/polyhedron_3d.inx.h:49 +#: ../share/extensions/polyhedron_3d.inx.h:48 msgid "Truncated Icosahedron" -msgstr "" +msgstr "עשרימון קטוע" -#: ../share/extensions/polyhedron_3d.inx.h:50 +#: ../share/extensions/polyhedron_3d.inx.h:49 msgid "Truncated Octahedron" -msgstr "" +msgstr "תמניון קטוע" -#: ../share/extensions/polyhedron_3d.inx.h:51 +#: ../share/extensions/polyhedron_3d.inx.h:50 msgid "Truncated Tetrahedron" -msgstr "" +msgstr "ארבעון קטוע" -#: ../share/extensions/polyhedron_3d.inx.h:52 -#, fuzzy +#: ../share/extensions/polyhedron_3d.inx.h:51 msgid "Vertices" -msgstr "אחוזים" +msgstr "קודקודים" -#: ../share/extensions/polyhedron_3d.inx.h:53 +#: ../share/extensions/polyhedron_3d.inx.h:52 msgid "View" -msgstr "" +msgstr "תצוגה" -#: ../share/extensions/polyhedron_3d.inx.h:54 +#: ../share/extensions/polyhedron_3d.inx.h:53 msgid "X-Axis" -msgstr "" +msgstr "ציר ה־X" -#: ../share/extensions/polyhedron_3d.inx.h:55 +#: ../share/extensions/polyhedron_3d.inx.h:54 msgid "Y-Axis" -msgstr "" +msgstr "ציר ה־Y" -#: ../share/extensions/polyhedron_3d.inx.h:56 +#: ../share/extensions/polyhedron_3d.inx.h:55 msgid "Z-Axis" -msgstr "" +msgstr "ציר ה־Z" -#: ../share/extensions/polyhedron_3d.inx.h:57 +#: ../share/extensions/polyhedron_3d.inx.h:56 msgid "Z-Sort Faces By:" -msgstr "" - -#: ../share/extensions/ps_input.inx.h:1 -msgid "Postscript" -msgstr "" - -#: ../share/extensions/ps_input.inx.h:2 -msgid "Postscript (*.ps)" -msgstr "" +msgstr "סידור הפנים בציר Z לפי:" #: ../share/extensions/ps_input.inx.h:3 -msgid "Postscript Input" -msgstr "" +msgid "PostScript Input" +msgstr "קלט PostScript" #: ../share/extensions/radiusrand.inx.h:1 msgid "Jitter nodes" -msgstr "" +msgstr "ערבל מפרקים" #: ../share/extensions/radiusrand.inx.h:2 msgid "Maximum displacement in X, px" -msgstr "" +msgstr "פיזור מרבי בציר ה־X, פיקסלים" #: ../share/extensions/radiusrand.inx.h:3 msgid "Maximum displacement in Y, px" -msgstr "" +msgstr "פיזור מרבי בציר ה־Y, פיקסלים" #: ../share/extensions/radiusrand.inx.h:5 msgid "Shift node handles" -msgstr "" +msgstr "הזז את ידיות המפרקים" #: ../share/extensions/radiusrand.inx.h:6 msgid "Shift nodes" -msgstr "" +msgstr "הזז את המפרקים" #: ../share/extensions/radiusrand.inx.h:7 -msgid "" -"This effect randomly shifts the nodes (and optionally node handles) of the " -"selected path." -msgstr "" +msgid "This effect randomly shifts the nodes (and optionally node handles) of the selected path." +msgstr "אפקט זה מזיז את המפרקים באופן אקראי (הזזת הידיות אפשרית גם כן) של הנתיב הנבחר." #: ../share/extensions/radiusrand.inx.h:8 msgid "Use normal distribution" -msgstr "" +msgstr "השתמש בפיזור רגיל" #: ../share/extensions/render_alphabetsoup.inx.h:1 msgid "Alphabet Soup" -msgstr "" +msgstr "מרק האלפבית" #: ../share/extensions/render_alphabetsoup.inx.h:2 msgid "Random Seed" -msgstr "" +msgstr "זרע אקראי" #: ../share/extensions/render_barcode.inx.h:1 msgid "Bar Height:" -msgstr "" +msgstr "גובה הקווים:" #: ../share/extensions/render_barcode.inx.h:2 msgid "Barcode" -msgstr "" +msgstr "ברקוד" #: ../share/extensions/render_barcode.inx.h:3 msgid "Barcode Data:" -msgstr "" +msgstr "נתוני ברקוד:" #: ../share/extensions/render_barcode.inx.h:4 msgid "Barcode Type:" -msgstr "" +msgstr "סוג הברקוד:" #: ../share/extensions/restack.inx.h:2 msgid "Arbitrary Angle:" -msgstr "" +msgstr "זווית שרירותית:" #: ../share/extensions/restack.inx.h:4 -#, fuzzy msgid "Bottom" -msgstr "זום" +msgstr "תחתון" #: ../share/extensions/restack.inx.h:5 msgid "Bottom to Top (90)" -msgstr "" +msgstr "מלמטה־למעלה (90)" #: ../share/extensions/restack.inx.h:6 msgid "Horizontal Point:" -msgstr "" - -#: ../share/extensions/restack.inx.h:7 -msgid "Left" -msgstr "" +msgstr "נקודה אופקית:" #: ../share/extensions/restack.inx.h:8 msgid "Left to Right (0)" -msgstr "" +msgstr "שמאל־לימין (0)" #: ../share/extensions/restack.inx.h:9 -#, fuzzy msgid "Middle" -msgstr "קובץ" +msgstr "אמצעי" #: ../share/extensions/restack.inx.h:10 msgid "Radial Inward" -msgstr "" +msgstr "מעגלי כלפי פנים" #: ../share/extensions/restack.inx.h:11 msgid "Radial Outward" -msgstr "" +msgstr "מעגלי כלפי חוץ" #: ../share/extensions/restack.inx.h:12 msgid "Restack" -msgstr "" +msgstr "ערום מחדש" #: ../share/extensions/restack.inx.h:13 -#, fuzzy msgid "Restack Direction:" -msgstr "רזולוציה:" - -#: ../share/extensions/restack.inx.h:14 -#, fuzzy -msgid "Right" -msgstr "גובה" +msgstr "כיוון המערם המחודש:" #: ../share/extensions/restack.inx.h:15 msgid "Right to Left (180)" -msgstr "" +msgstr "ימין־לשמאל (180)" #: ../share/extensions/restack.inx.h:17 msgid "Top to Bottom (270)" -msgstr "" +msgstr "הפוך אנכית (270)" #: ../share/extensions/restack.inx.h:18 msgid "Vertical Point:" -msgstr "" +msgstr "נקודה אנכית:" #: ../share/extensions/rtree.inx.h:1 msgid "Initial size" -msgstr "" +msgstr "גודל התחלתי" #: ../share/extensions/rtree.inx.h:2 msgid "Minimum size" -msgstr "" +msgstr "גודל מזערי" #: ../share/extensions/rtree.inx.h:3 msgid "Random Tree" -msgstr "" +msgstr "×¢×¥ אקראי" #: ../share/extensions/rubberstretch.inx.h:2 #, no-c-format msgid "Curve (%):" -msgstr "" +msgstr "עיקול (%):" #: ../share/extensions/rubberstretch.inx.h:4 msgid "Rubber Stretch" -msgstr "" +msgstr "מתיחת גומי" #: ../share/extensions/rubberstretch.inx.h:6 -#, fuzzy, no-c-format +#, no-c-format msgid "Strength (%):" -msgstr "אורך:" +msgstr "כוח (%):" #: ../share/extensions/sk1_input.inx.h:1 -#, fuzzy msgid "Open files saved in sK1 vector graphics editor" -msgstr "אינקסקייפ עורך גרפיקה וקטורית" +msgstr "פתח קבצים שנשמרו בעורך הגרפיקה sK1" #: ../share/extensions/sk1_input.inx.h:2 msgid "sK1 vector graphics files (.sk1)" -msgstr "" +msgstr "קבצי גרפיקת וקטורים sK1 (.sk1)" #: ../share/extensions/sk1_input.inx.h:3 msgid "sK1 vector graphics files input" -msgstr "" +msgstr "קלט קבצי גרפיקה וקטורית sK1" #: ../share/extensions/sk_input.inx.h:1 msgid "A diagram created with the program Sketch" -msgstr "" +msgstr "תרשים שנוצר באמצעות התוכנה Sketch" #: ../share/extensions/sk_input.inx.h:2 msgid "Sketch Diagram (*.sk)" -msgstr "" +msgstr "תרשים Sketch (*.sk)" #: ../share/extensions/sk_input.inx.h:3 msgid "Sketch Input" -msgstr "" +msgstr "קלט Sketch" #: ../share/extensions/spirograph.inx.h:1 msgid "Gear Placement" -msgstr "" +msgstr "מיקום גלגל השיניים" #: ../share/extensions/spirograph.inx.h:2 msgid "Inside (Hypotrochoid)" -msgstr "" +msgstr "פנימי (היפוטרוכויד)" #: ../share/extensions/spirograph.inx.h:3 msgid "Outside (Epitrochoid)" -msgstr "" +msgstr "חיצוני (אפיטרוכויד)" #: ../share/extensions/spirograph.inx.h:4 msgid "Quality (Default = 16)" -msgstr "" +msgstr "איכות (ברירת מחדל = 16)" #: ../share/extensions/spirograph.inx.h:5 msgid "R - Ring Radius (px)" -msgstr "" +msgstr "R - רדיוס הטבעת (פיקסלים)" #: ../share/extensions/spirograph.inx.h:7 msgid "Rotation (deg)" -msgstr "" +msgstr "סיבוב (מעלות)" #: ../share/extensions/spirograph.inx.h:8 msgid "Spirograph" -msgstr "" +msgstr "ספירוגרף" #: ../share/extensions/spirograph.inx.h:9 msgid "d - Pen Radius (px)" -msgstr "" +msgstr "d - רדיוס העט (פיקסלים)" #: ../share/extensions/spirograph.inx.h:10 msgid "r - Gear Radius (px)" -msgstr "" +msgstr "r - רדיוס גלגל השיניים (פיקסלים)" #: ../share/extensions/straightseg.inx.h:1 msgid "Behavior" -msgstr "" +msgstr "התנהגות" #: ../share/extensions/straightseg.inx.h:4 msgid "Straighten Segments" -msgstr "" +msgstr "יישר מקטעים" #: ../share/extensions/summersnight.inx.h:1 msgid "Envelope" -msgstr "" +msgstr "מעטפה" -#: ../share/extensions/svg2xaml.inx.h:1 ../share/extensions/xaml2svg.inx.h:1 +#: ../share/extensions/svg2xaml.inx.h:1 +#: ../share/extensions/xaml2svg.inx.h:1 msgid "Microsoft XAML (*.xaml)" -msgstr "" +msgstr "Microsoft XAML (*.xaml)" -#: ../share/extensions/svg2xaml.inx.h:2 ../share/extensions/xaml2svg.inx.h:2 +#: ../share/extensions/svg2xaml.inx.h:2 +#: ../share/extensions/xaml2svg.inx.h:2 msgid "Microsoft's GUI definition format" -msgstr "" +msgstr "מבנה הגדרת ה־GUI של מיקרוסופט" #: ../share/extensions/svg2xaml.inx.h:3 msgid "XAML Output" -msgstr "" +msgstr "פלט XAML" #: ../share/extensions/svg_and_media_zip_output.inx.h:1 msgid "Compressed Inkscape SVG with media (*.zip)" -msgstr "" +msgstr "קבצי SVG של אינקסקייפ דחוסים יחד עם מדיה (*.zip)" #: ../share/extensions/svg_and_media_zip_output.inx.h:2 -msgid "" -"Inkscape's native file format compressed with Zip and including all media " -"files" -msgstr "" +msgid "Inkscape's native file format compressed with Zip and including all media files" +msgstr "מבנה הקובץ הטבעי של אינקסקייפ דחוס ב־Zip וכולל את כל קבצי המדיה" #: ../share/extensions/svg_and_media_zip_output.inx.h:3 msgid "ZIP Output" -msgstr "" +msgstr "פלט ZIP" #: ../share/extensions/text_braille.inx.h:1 -#, fuzzy msgid "Convert to Braille" -msgstr "הזז קו מנחה" +msgstr "המר לברייל" #: ../share/extensions/text_flipcase.inx.h:2 msgid "fLIP cASE" -msgstr "" +msgstr "החלף רישיות" #: ../share/extensions/text_lowercase.inx.h:2 msgid "lowercase" -msgstr "" +msgstr "אותיות קטנות" #: ../share/extensions/text_randomcase.inx.h:2 msgid "rANdOm CasE" -msgstr "" +msgstr "בלבל רישיות" #: ../share/extensions/text_replace.inx.h:1 msgid "By:" -msgstr "" +msgstr "×¢\"י:" #: ../share/extensions/text_replace.inx.h:2 msgid "Replace text" -msgstr "" +msgstr "החלף טקסט" #: ../share/extensions/text_replace.inx.h:3 msgid "Replace:" -msgstr "" +msgstr "החלף:" #: ../share/extensions/text_sentencecase.inx.h:1 msgid "Sentence case" -msgstr "" +msgstr "רישיות למשפט" #: ../share/extensions/text_titlecase.inx.h:2 msgid "Title Case" -msgstr "" +msgstr "רישיות למילה" #: ../share/extensions/text_uppercase.inx.h:2 msgid "UPPERCASE" -msgstr "" +msgstr "אותיות גדולות" #: ../share/extensions/triangle.inx.h:1 -#, fuzzy msgid "Angle a / deg" -msgstr "מעלות" +msgstr "זווית א / מעלות" #: ../share/extensions/triangle.inx.h:2 -#, fuzzy msgid "Angle b / deg" -msgstr "מעלות" +msgstr "זווית ב / מעלות" #: ../share/extensions/triangle.inx.h:3 -#, fuzzy msgid "Angle c / deg" -msgstr "מעלות" +msgstr "זווית ג / מעלות" #: ../share/extensions/triangle.inx.h:4 msgid "From Side a and Angles a, b" -msgstr "" +msgstr "מצד a והזוויות a, b" #: ../share/extensions/triangle.inx.h:5 msgid "From Side c and Angles a, b" -msgstr "" +msgstr "מצד c והזוויות a, b" #: ../share/extensions/triangle.inx.h:6 msgid "From Sides a, b and Angle a" -msgstr "" +msgstr "מהצדדים a, b והזווית a" #: ../share/extensions/triangle.inx.h:7 msgid "From Sides a, b and Angle c" -msgstr "" +msgstr "מהצדדים a, b והזווית c" #: ../share/extensions/triangle.inx.h:8 msgid "From Three Sides" -msgstr "" +msgstr "משלושה צדדים" #: ../share/extensions/triangle.inx.h:11 msgid "Side Length a / px" -msgstr "" +msgstr "אורך הצד א / פיקסלים" #: ../share/extensions/triangle.inx.h:12 msgid "Side Length b / px" -msgstr "" +msgstr "אורך הצד ב / פיקסלים" #: ../share/extensions/triangle.inx.h:13 msgid "Side Length c / px" -msgstr "" +msgstr "אורך הצד ג / פיקסלים" #: ../share/extensions/triangle.inx.h:14 msgid "Triangle" -msgstr "" +msgstr "משולש" #: ../share/extensions/txt2svg.inx.h:1 msgid "ASCII Text" -msgstr "טקסט אסקיי" +msgstr "טקסט ASCII" #: ../share/extensions/txt2svg.inx.h:2 msgid "Text File (*.txt)" -msgstr "" +msgstr "קובץ טקסט (*.txt)" #: ../share/extensions/txt2svg.inx.h:3 msgid "Text Input" -msgstr "" +msgstr "קלט טקסט" #: ../share/extensions/whirl.inx.h:1 msgid "Amount of whirl" -msgstr "" +msgstr "כמות הסיחרור" #: ../share/extensions/whirl.inx.h:3 msgid "Rotation is clockwise" -msgstr "" +msgstr "הסיבוב הוא עם כיוון השעון" #: ../share/extensions/whirl.inx.h:4 msgid "Whirl" -msgstr "" +msgstr "סיחרור" #: ../share/extensions/wmf_input.inx.h:1 msgid "A popular graphics file format for clipart" -msgstr "" +msgstr "מבנה קובץ נפוץ עבור אוסף תמונות" #: ../share/extensions/wmf_input.inx.h:2 msgid "Windows Metafile (*.wmf)" -msgstr "" +msgstr "קובץ מטא של Windows(*.wmf)" #: ../share/extensions/wmf_input.inx.h:3 msgid "Windows Metafile Input" -msgstr "" +msgstr "קלט קובץ מטא של Windows" #: ../share/extensions/xaml2svg.inx.h:3 msgid "XAML Input" -msgstr "" - -#, fuzzy -#~ msgid "Shape" -#~ msgstr "צורות" - -#, fuzzy +msgstr "קלט XAML" + +#~ msgid "Embed fonts on export (Type 1 only) (EPS)" +#~ msgstr "הטמע גופנים בעת הייצוא (סוג 1 בלבד) (EPS)" +#~ msgid "Export files with the bounding box set to the page size (EPS)" +#~ msgstr "ייצא קבצים עם תיבה התוחמת את כל גודל העמוד (EPS)" +#~ msgid "Report Normal Vector Information" +#~ msgstr "דווח על נתוני וקטור רגילים" +#~ msgid "" +#~ "Cannot set %s: Another element with value %s already exists!" +#~ msgstr "לא ניתן להגדיר את %s: רכיב אחר בעל הערך %s כבר קיים!" +#~ msgid "Cairo PS Output" +#~ msgstr "פלט PS של Cairo" +#~ msgid "" +#~ "Cannot create file %s.\n" +#~ "%s" +#~ msgstr "" +#~ "לא ניתן ליצור את הקובץ %s.\n" +#~ "%s" +#~ msgid "" +#~ "Cannot write file %s.\n" +#~ "%s" +#~ msgstr "" +#~ "לא ניתן לכתוב אל הקובץ %s.\n" +#~ "%s" +#~ msgid "" +#~ "Although Inkscape will run, it will use default settings,\n" +#~ "and any changes made in preferences will not be saved." +#~ msgstr "" +#~ "למרות שאינקסקייפ תפעל, היא תשתמש בהגדרות ברירת המחדל,\n" +#~ "לכן כל שינוי שיבוצע בהגדרות לא יישמר." +#~ msgid "" +#~ "%s not a valid XML file, or\n" +#~ "you don't have read permissions on it.\n" +#~ "%s" +#~ msgstr "" +#~ "%s אינו קובץ XML תקני, או\n" +#~ "שאין לך הרשאות גישה אליו.\n" +#~ "%s" +#~ msgid "" +#~ "%s is not a valid menus file.\n" +#~ "%s" +#~ msgstr "" +#~ "%s אינו קובץ תפריטים תקני.\n" +#~ "%s" +#~ msgid "" +#~ "Inkscape will run with default menus.\n" +#~ "New menus will not be saved." +#~ msgstr "" +#~ "אינקסקייפ תרוץ עם תפריטי ברירת המחדל.\n" +#~ "תפריטים חדשים לא ישמרו." +#~ msgid "Bend Path" +#~ msgstr "כופף נתיב" +#~ msgid "Slant" +#~ msgstr "נטייה" +#~ msgid "Stroke path" +#~ msgstr "נתיב קו מתאר" +#~ msgid "Space between copies of the pattern" +#~ msgstr "רווח בין עותקי התבנית" +#~ msgid "y = y + x*(slant factor)" +#~ msgstr "y = y + x*(מקדם שיפוע)" +#~ msgid "The x-coord of this point is around which the slant will happen" +#~ msgstr "נקודת הציון ב-X של הנקודה שמסביבה השיפוע יתבצע" +#~ msgid "This effect does not support arcs yet, try to convert to path." +#~ msgstr "אפקט זה אינו תומך בקשתות עדיין, נסה להמיר לנתיב." +#~ msgid "At least one of the objects is not a path, cannot combine." +#~ msgstr "לפחות אחד מהפריטים איננו נתיב, לא ניתן לשלב" +#~ msgid "" +#~ "You cannot combine objects from different groups or layers." +#~ msgstr "לא ניתן לשלב פריטים מקבוצות או שכבות שונות." +#~ msgid "Nothing in the clipboard." +#~ msgstr "אין כלום בלוח הגזירים." +#~ msgid "Nothing on the style clipboard." +#~ msgstr "אין כלום בלוח גזירי הסגנון." +#~ msgid "Clipboard does not contain a live path effect." +#~ msgstr "לוח הגזירים אינו מכיל אפקט נתיב חי." +#~ msgid "Fit page to selection" +#~ msgstr "התאם את העמוד לבחירה" +#~ msgid "Pushing %d selected object" +#~ msgid_plural "Pushing %d selected objects" +#~ msgstr[0] "דוחף פריט %d שנבחר" +#~ msgstr[1] "דוחף %d פריטים שנבחרו" +#~ msgid "Shrinking %d selected object" +#~ msgid_plural "Shrinking %d selected objects" +#~ msgstr[0] "מכווץ פריט %d שנבחר" +#~ msgstr[1] "מכווץ %d פריטים שנבחרו" +#~ msgid "Growing %d selected object" +#~ msgid_plural "Growing %d selected objects" +#~ msgstr[0] "מגדיל פריט %d שנבחר" +#~ msgstr[1] "מגדיל %d פריטים שנבחרו" +#~ msgid "Attracting %d selected object" +#~ msgid_plural "Attracting %d selected objects" +#~ msgstr[0] "מושך פריט %d שנבחר" +#~ msgstr[1] "מושך %d פריטים שנבחרו" +#~ msgid "Repelling %d selected object" +#~ msgid_plural "Repelling %d selected objects" +#~ msgstr[0] "הודף פריט %d שנבחר" +#~ msgstr[1] "הודף %d פריטים שנבחרו" +#~ msgid "Roughening %d selected object" +#~ msgid_plural "Roughening %d selected objects" +#~ msgstr[0] "מחספס פריט %d שנבחר" +#~ msgstr[1] "מחספס %d פריטים שנבחרו" +#~ msgid "Painting %d selected object" +#~ msgid_plural "Painting %d selected objects" +#~ msgstr[0] "צובע פריט %d שנבחר" +#~ msgstr[1] "צובע %d פריטים שנבחרו" +#~ msgid "Jittering colors in %d selected object" +#~ msgid_plural "Jittering colors in %d selected objects" +#~ msgstr[0] "מערבב את צבעי הפריט ה-%d שנבחר" +#~ msgstr[1] "מערבב את צבעי%d הפריטים שנבחרו" +#~ msgid "Repel tweak" +#~ msgstr "עיוות בהדיפה" +#~ msgid "Snapping to special nodes" +#~ msgstr "הצמדה למפרקים מיוחדים" +#~ msgid "Export" +#~ msgstr "ייצא" +#~ msgid "" +#~ "This value affects the amount of smoothing applied to freehand lines; " +#~ "lower values produce more uneven paths with more nodes" +#~ msgstr "" +#~ "ערך זה משפיע על כמות ההחלקה שתופעל על קווים ביד חופשית; ערכים נמוכים יותר " +#~ "מייצרים יותר נתיבים לא שווים עם יותר מפרקים" +#~ msgid "Dialogs stay on top (experimental!)" +#~ msgstr "תיבות הדו-שיח נשארות עליונות (נסיוני!)" +#~ msgid "" +#~ "Whether dialogs should stay on top of document windows. Read the " +#~ "ReleaseNotes on this issue! (Rightclick the taskbar button and press " +#~ "'Restore' to bring back a minimized document window)" +#~ msgstr "" +#~ "האם תיבות הדו-שיח אמורות להשאר מעל לחלונות המסמך. קרא את הערות-ההפצה " +#~ "להפצה זו! (מקש ימני על לחצן סרגל המשימות ולחיצה על 'שיחזור' כדי להעלות " +#~ "בחזרה חלון מסמך ממוזער)" +#~ msgid "Grid units" +#~ msgstr "יחידות הרשת" +#~ msgid "Origin Y" +#~ msgstr "מקור ב-Y" +#~ msgid "Spacing X" +#~ msgstr "ריווח ב-X" +#~ msgid "Spacing Y" +#~ msgstr "ריווח ב-Y" +#~ msgid "Selects the color used for major (highlighted) grid lines." +#~ msgstr "בוחר את הצבע המשמש לקווי רשת ראשיים (מודגשים)." +#~ msgid "Major grid line every" +#~ msgstr "קו רשת ראשי בכל" +#~ msgid "Angle X" +#~ msgstr "זווית ב-X" +#~ msgid "Angle Z" +#~ msgstr "זווית ב-Z" +#~ msgid "Make the commands toolbar icons smaller" +#~ msgstr "הקטן את סמלי הפקודות בסרגל הכלים" +#~ msgid "" +#~ "Make the commands toolbar use the 'secondary' toolbar size (requires " +#~ "restart)" +#~ msgstr "" +#~ "גרום לסרגל הכלים של הפקודות להשתמש בגודל סרגל הכלים ה'משני' (דורש איתחול)" +#~ msgid "_Apply" +#~ msgstr "_החל" +#~ msgid "Apply chosen effect to selection" +#~ msgstr "החל את האפקט הנבחר על הבחירה" #~ msgid "Tall" -#~ msgstr "קטן" - -#, fuzzy +#~ msgstr "גבוה" #~ msgid "Square" -#~ msgstr "שפר חדות" +#~ msgstr "ריבוע" +#~ msgid "Wide" +#~ msgstr "רחב" +#~ msgid "Delete Segment" +#~ msgstr "מחק מקטע" +#~ msgid "Node Break" +#~ msgstr "שבור מפרק" +#~ msgid "Grow mode" +#~ msgstr "מצב הגדלה" +#~ msgid "Grow (outset) parts of paths" +#~ msgstr "הגדל (הרחב) חלקים מנתיבים" +#~ msgid "Repel mode" +#~ msgstr "מצב הדיפה" +#~ msgid "Repel parts of paths from cursor" +#~ msgstr "הדוף חלקים מנתיבים מסמן העכבר" +#~ msgid "Reset all parameters to defaults" +#~ msgstr "אפס את כל ההגדרות לברירת מחדל" +#~ msgid "Custom..." +#~ msgstr "מותאם אישית..." +#~ msgid "Interpolate style (experimental)" +#~ msgstr "סגנון הריגול (ניסויי)" +#~ msgid "Postscript" +#~ msgstr "Postscript" +#~ msgid "Postscript (*.ps)" +#~ msgstr "Postscript (*.ps)" +#~ msgid "Developer Examples" +#~ msgstr "דוגמאות למפתחים" +#~ msgid "RadioButton example" +#~ msgstr "כפתור בחירה לדוגמה" +#~ msgid "Select option: " +#~ msgstr "בחר אפשרות: " +#~ msgid "Select second option: " +#~ msgstr "בחר אפשרות שניה: " +#~ msgid "Random Point" +#~ msgstr "נקודה אקראית" +#~ msgid "Random Position" +#~ msgstr "מיקום אקראי" #, fuzzy #~ msgid "Degrees:" @@ -18322,6 +19198,10 @@ msgstr "" #~ msgid "Creator:" #~ msgstr "פינות:" +#, fuzzy +#~ msgid "Rights:" +#~ msgstr "גובה" + #, fuzzy #~ msgid "Relation:" #~ msgstr "רזולוציה:" @@ -18330,6 +19210,15 @@ msgstr "" #~ msgid "Coverage:" #~ msgstr "טולרנס" +#, fuzzy +#~ msgid "Contributor:" +#~ msgstr "ניגודיות" + #, fuzzy #~ msgid "Free Art License" #~ msgstr "רישיון" + +#, fuzzy +#~ msgid "Default License" +#~ msgstr "רישיון" + diff --git a/po/nl.po b/po/nl.po index 8ac1ddd0e..6d9fa53cf 100644 --- a/po/nl.po +++ b/po/nl.po @@ -3756,7 +3756,7 @@ msgstr "Het automatisch detecteren van de bestandsindeling is mislukt. Het besta #. localized share/templates/default.xx.svg file, where xx is your language code. #: ../src/file.cpp:136 msgid "default.svg" -msgstr "standaard.svg" +msgstr "default.svg" #: ../src/file.cpp:222 #: ../src/file.cpp:962 diff --git a/po/ru.po b/po/ru.po index 74a16232a..bc7032f4c 100644 --- a/po/ru.po +++ b/po/ru.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: inkscape\n" "Report-Msgid-Bugs-To: inkscape-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2008-10-26 02:38+0400\n" -"PO-Revision-Date: 2008-10-26 02:48+0300\n" +"POT-Creation-Date: 2008-11-03 13:17+0300\n" +"PO-Revision-Date: 2008-11-03 13:42+0300\n" "Last-Translator: Alexandre Prokoudine \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" @@ -110,12 +110,12 @@ msgid "Select at least one non-connector object." msgstr "Выделите как минимум один объект (не соединительную линию)." #: ../src/connector-context.cpp:1321 -#: ../src/widgets/toolbox.cpp:6485 +#: ../src/widgets/toolbox.cpp:6503 msgid "Make connectors avoid selected objects" msgstr "Линии обходят выделенные объекты" #: ../src/connector-context.cpp:1322 -#: ../src/widgets/toolbox.cpp:6495 +#: ../src/widgets/toolbox.cpp:6513 msgid "Make connectors ignore selected objects" msgstr "Линии игнорируют выделенные объекты" @@ -734,8 +734,8 @@ msgstr "Взять видимый цвет (без прозрачности) в #: ../src/dialogs/clonetiler.cpp:2778 #: ../src/extension/internal/bitmap/opacity.cpp:37 #: ../src/extension/internal/bitmap/opacity.cpp:39 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2246 -#: ../src/widgets/toolbox.cpp:3845 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2255 +#: ../src/widgets/toolbox.cpp:3863 msgid "Opacity" msgstr "Непрозрачность" @@ -838,7 +838,7 @@ msgid "Each clone is created with the probability determined by the picked value msgstr "Вероятность появления каждого клона определяется значением, взятым в данной точке" #: ../src/dialogs/clonetiler.cpp:2758 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2221 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2230 msgid "Size" msgstr "Размер" @@ -1012,19 +1012,19 @@ msgstr "x_1" #: ../src/dialogs/export.cpp:320 #: ../src/dialogs/object-attributes.cpp:60 #: ../src/dialogs/object-attributes.cpp:68 -#: ../src/widgets/toolbox.cpp:3643 -#: ../src/widgets/toolbox.cpp:4233 -#: ../src/widgets/toolbox.cpp:5252 +#: ../src/widgets/toolbox.cpp:3661 +#: ../src/widgets/toolbox.cpp:4251 +#: ../src/widgets/toolbox.cpp:5270 msgid "Width:" msgstr "Ширина:" #: ../src/dialogs/export.cpp:326 msgid "_y0:" -msgstr "_y0" +msgstr "y_0" #: ../src/dialogs/export.cpp:331 msgid "y_1:" -msgstr "y_1" +msgstr "_y1" #: ../src/dialogs/export.cpp:336 #: ../src/dialogs/export.cpp:495 @@ -1076,11 +1076,11 @@ msgstr "Экспортировать каждый выделенный объе #: ../src/dialogs/export.cpp:629 msgid "Hide all except selected" -msgstr "Спрятать все объекты кроме выделенных" +msgstr "Экспортировать только выделенное" #: ../src/dialogs/export.cpp:633 msgid "In the exported image, hide all objects except those that are selected" -msgstr "Спрятать все объекты экспортируемого рисунка кроме выделенного" +msgstr "Исключить из конечного изображения все невыделенные объекты" #: ../src/dialogs/export.cpp:650 msgid "_Export" @@ -1423,14 +1423,14 @@ msgstr "Единица измерения:" #: ../src/dialogs/guidelinedialog.cpp:45 #: ../src/dialogs/object-attributes.cpp:58 #: ../src/dialogs/object-attributes.cpp:66 -#: ../src/widgets/toolbox.cpp:1437 +#: ../src/widgets/toolbox.cpp:1455 msgid "X:" msgstr "X:" #: ../src/dialogs/guidelinedialog.cpp:46 #: ../src/dialogs/object-attributes.cpp:59 #: ../src/dialogs/object-attributes.cpp:67 -#: ../src/widgets/toolbox.cpp:1455 +#: ../src/widgets/toolbox.cpp:1473 msgid "Y:" msgstr "Y:" @@ -1799,8 +1799,8 @@ msgstr "Физическое или цифровое представление #. _settings->add_checkbutton(false, SP_ATTR_STITCHTILES, _("Stitch Tiles"), "stitch", "noStitch"); #: ../src/dialogs/rdf.cpp:248 #: ../src/extension/internal/bitmap/addNoise.cpp:46 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2199 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2278 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2208 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2287 msgid "Type" msgstr "Тип" @@ -1923,30 +1923,30 @@ msgstr "XML-фрагмент RDF-раздела \"Лицензия\"." #. TRANSLATORS: "Set" is a verb here #: ../src/dialogs/sp-attribute-widget.cpp:166 #: ../src/dialogs/sp-attribute-widget.cpp:773 -#: ../src/dialogs/xml-tree.cpp:534 +#: ../src/dialogs/xml-tree.cpp:535 msgid "Set attribute" msgstr "Установить атрибут" -#: ../src/dialogs/stroke-style.cpp:293 -#: ../src/dialogs/stroke-style.cpp:352 +#: ../src/dialogs/stroke-style.cpp:294 +#: ../src/dialogs/stroke-style.cpp:353 msgid "Set stroke color" msgstr "Установка цвета обводки" -#: ../src/dialogs/stroke-style.cpp:343 +#: ../src/dialogs/stroke-style.cpp:344 #: ../src/ui/widget/selected-style.cpp:255 #: ../src/ui/widget/selected-style.cpp:484 msgid "Remove stroke" msgstr "Удалить обводку" -#: ../src/dialogs/stroke-style.cpp:404 +#: ../src/dialogs/stroke-style.cpp:405 msgid "Set gradient on stroke" msgstr "Заливка обводки градиентом" -#: ../src/dialogs/stroke-style.cpp:448 +#: ../src/dialogs/stroke-style.cpp:449 msgid "Set pattern on stroke" msgstr "Заливка обводки текстурой" -#: ../src/dialogs/stroke-style.cpp:469 +#: ../src/dialogs/stroke-style.cpp:470 #: ../src/ui/widget/selected-style.cpp:193 #: ../src/ui/widget/selected-style.cpp:251 #: ../src/ui/widget/selected-style.cpp:509 @@ -1954,7 +1954,7 @@ msgstr "Заливка обводки текстурой" msgid "Unset stroke" msgstr "Снять обводку" -#: ../src/dialogs/stroke-style.cpp:772 +#: ../src/dialogs/stroke-style.cpp:773 #: ../src/filter-enums.cpp:95 #: ../src/flood-context.cpp:292 #: ../src/live_effects/lpe-ruler.cpp:34 @@ -1964,27 +1964,27 @@ msgstr "Снять обводку" #: ../src/ui/dialog/inkscape-preferences.cpp:509 #: ../src/ui/dialog/inkscape-preferences.cpp:1054 #: ../src/verbs.cpp:2211 -#: ../src/widgets/toolbox.cpp:3406 +#: ../src/widgets/toolbox.cpp:3424 #: ../share/extensions/grid_polar.inx.h:16 msgid "None" msgstr "Нет" -#: ../src/dialogs/stroke-style.cpp:827 +#: ../src/dialogs/stroke-style.cpp:828 #: ../src/widgets/gradient-vector.cpp:264 #: ../src/widgets/paint-selector.cpp:885 msgid "No document selected" msgstr "Документ не выбран" -#: ../src/dialogs/stroke-style.cpp:911 +#: ../src/dialogs/stroke-style.cpp:912 msgid "Set markers" msgstr "Установка маркеров" #. Stroke width -#: ../src/dialogs/stroke-style.cpp:1084 +#: ../src/dialogs/stroke-style.cpp:1085 msgid "StrokeWidth|Width:" msgstr "Толщина:" -#: ../src/dialogs/stroke-style.cpp:1098 +#: ../src/dialogs/stroke-style.cpp:1099 #: ../share/extensions/edge3d.inx.h:9 msgid "Stroke width" msgstr "Толщина обводки" @@ -1992,28 +1992,28 @@ 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/dialogs/stroke-style.cpp:1122 +#: ../src/dialogs/stroke-style.cpp:1123 msgid "Join:" msgstr "Соединение:" #. TRANSLATORS: Miter join: joining lines with a sharp (pointed) corner. #. For an example, draw a triangle with a large stroke width and modify the #. "Join" option (in the Fill and Stroke dialog). -#: ../src/dialogs/stroke-style.cpp:1134 +#: ../src/dialogs/stroke-style.cpp:1135 msgid "Miter join" msgstr "Острое" #. TRANSLATORS: Round join: joining lines with a rounded corner. #. For an example, draw a triangle with a large stroke width and modify the #. "Join" option (in the Fill and Stroke dialog). -#: ../src/dialogs/stroke-style.cpp:1142 +#: ../src/dialogs/stroke-style.cpp:1143 msgid "Round join" msgstr "Скруглённое" #. TRANSLATORS: Bevel join: joining lines with a blunted (flattened) corner. #. For an example, draw a triangle with a large stroke width and modify the #. "Join" option (in the Fill and Stroke dialog). -#: ../src/dialogs/stroke-style.cpp:1150 +#: ../src/dialogs/stroke-style.cpp:1151 msgid "Bevel join" msgstr "Фаска" @@ -2024,59 +2024,71 @@ msgstr "Фаска" #. spike that extends well beyond the connection point. The purpose of the #. miter limit is to cut off such spikes (i.e. convert them into bevels) #. when they become too long. -#: ../src/dialogs/stroke-style.cpp:1161 +#: ../src/dialogs/stroke-style.cpp:1162 msgid "Miter limit:" msgstr "Предел острия:" -#: ../src/dialogs/stroke-style.cpp:1169 +#: ../src/dialogs/stroke-style.cpp:1170 msgid "Maximum length of the miter (in units of stroke width)" msgstr "Максимальная длина острия (в единицах толщины обводки)" #. Cap type #. TRANSLATORS: cap type specifies the shape for the ends of lines -#: ../src/dialogs/stroke-style.cpp:1181 +#: ../src/dialogs/stroke-style.cpp:1182 msgid "Cap:" msgstr "Концы:" #. TRANSLATORS: Butt cap: the line shape does not extend beyond the end point #. of the line; the ends of the line are square -#: ../src/dialogs/stroke-style.cpp:1192 +#: ../src/dialogs/stroke-style.cpp:1193 msgid "Butt cap" msgstr "Плоские" #. TRANSLATORS: Round cap: the line shape extends beyond the end point of the #. line; the ends of the line are rounded -#: ../src/dialogs/stroke-style.cpp:1199 +#: ../src/dialogs/stroke-style.cpp:1200 msgid "Round cap" msgstr "Круглые" #. TRANSLATORS: Square cap: the line shape extends beyond the end point of the #. line; the ends of the line are square -#: ../src/dialogs/stroke-style.cpp:1206 +#: ../src/dialogs/stroke-style.cpp:1207 msgid "Square cap" msgstr "Квадратные" #. Dash -#: ../src/dialogs/stroke-style.cpp:1212 +#: ../src/dialogs/stroke-style.cpp:1213 msgid "Dashes:" msgstr "Пунктир:" #. TRANSLATORS: Path markers are an SVG feature that allows you to attach arbitrary shapes #. (arrowheads, bullets, faces, whatever) to the start, end, or middle nodes of a path. -#: ../src/dialogs/stroke-style.cpp:1229 +#: ../src/dialogs/stroke-style.cpp:1230 msgid "Start Markers:" msgstr "Маркер начала:" -#: ../src/dialogs/stroke-style.cpp:1239 +#: ../src/dialogs/stroke-style.cpp:1232 +msgid "Start Markers are drawn on the first node of a path or shape" +msgstr "" + +#: ../src/dialogs/stroke-style.cpp:1241 msgid "Mid Markers:" msgstr "Маркер середины:" -#: ../src/dialogs/stroke-style.cpp:1249 +#: ../src/dialogs/stroke-style.cpp:1243 +msgid "Mid Markers are drawn on every node of a path or shape except the first and last nodes" +msgstr "" + +#: ../src/dialogs/stroke-style.cpp:1252 msgid "End Markers:" msgstr "Маркер конца:" -#: ../src/dialogs/stroke-style.cpp:1573 -#: ../src/dialogs/stroke-style.cpp:1669 +#: ../src/dialogs/stroke-style.cpp:1254 +msgid "End Markers are drawn on the last node of a path or shape" +msgstr "" + +#: ../src/dialogs/stroke-style.cpp:1577 +#: ../src/dialogs/stroke-style.cpp:1673 msgid "Set stroke style" msgstr "Установка стиля обводки" @@ -2138,12 +2150,12 @@ msgid "Justify lines" msgstr "Выключить строки по ширине" #: ../src/dialogs/text-edit.cpp:303 -#: ../src/widgets/toolbox.cpp:6290 +#: ../src/widgets/toolbox.cpp:6308 msgid "Horizontal text" msgstr "Горизонтальный текст" #: ../src/dialogs/text-edit.cpp:317 -#: ../src/widgets/toolbox.cpp:6302 +#: ../src/widgets/toolbox.cpp:6320 msgid "Vertical text" msgstr "Вертикальный текст" @@ -2249,111 +2261,111 @@ msgstr "Расставить" msgid "Arrange selected objects" msgstr "Расставить выделенные объекты" -#: ../src/dialogs/xml-tree.cpp:174 +#: ../src/dialogs/xml-tree.cpp:175 msgid "Click to select nodes, drag to rearrange." msgstr "Щелчком выделяется ветвь, перетаскиванием меняется порядок." -#: ../src/dialogs/xml-tree.cpp:185 +#: ../src/dialogs/xml-tree.cpp:186 msgid "Click attribute to edit." msgstr "Щелкните мышкой по атрибуту для его правки." -#: ../src/dialogs/xml-tree.cpp:189 +#: ../src/dialogs/xml-tree.cpp:190 #, c-format msgid "Attribute %s selected. Press Ctrl+Enter when done editing to commit changes." msgstr "Выбран атрибут %s. Нажмите Ctrl+Enter, когда закончите правку." -#: ../src/dialogs/xml-tree.cpp:285 +#: ../src/dialogs/xml-tree.cpp:286 msgid "Drag to reorder nodes" msgstr "Используйте мышь для перетаскивания ветвей" -#: ../src/dialogs/xml-tree.cpp:305 +#: ../src/dialogs/xml-tree.cpp:306 msgid "New element node" msgstr "Создать ветвь элемента" -#: ../src/dialogs/xml-tree.cpp:327 +#: ../src/dialogs/xml-tree.cpp:328 msgid "New text node" msgstr "Создать ветвь с текстом" -#: ../src/dialogs/xml-tree.cpp:348 -#: ../src/dialogs/xml-tree.cpp:1427 -#: ../src/nodepath.cpp:2168 +#: ../src/dialogs/xml-tree.cpp:349 +#: ../src/dialogs/xml-tree.cpp:1432 +#: ../src/nodepath.cpp:2202 msgid "Duplicate node" msgstr "Дублирование ветви" -#: ../src/dialogs/xml-tree.cpp:369 -#: ../src/dialogs/xml-tree.cpp:1444 -#: ../src/nodepath.cpp:3415 -#: ../src/widgets/toolbox.cpp:1275 +#: ../src/dialogs/xml-tree.cpp:370 +#: ../src/dialogs/xml-tree.cpp:1449 +#: ../src/nodepath.cpp:3482 +#: ../src/widgets/toolbox.cpp:1283 msgid "Delete node" msgstr "Удаление ветви" -#: ../src/dialogs/xml-tree.cpp:385 -#: ../src/dialogs/xml-tree.cpp:1589 +#: ../src/dialogs/xml-tree.cpp:386 +#: ../src/dialogs/xml-tree.cpp:1594 msgid "Unindent node" msgstr "Переместить к корню" -#: ../src/dialogs/xml-tree.cpp:400 -#: ../src/dialogs/xml-tree.cpp:1568 +#: ../src/dialogs/xml-tree.cpp:401 +#: ../src/dialogs/xml-tree.cpp:1573 msgid "Indent node" msgstr "Переместить от корня" -#: ../src/dialogs/xml-tree.cpp:412 -#: ../src/dialogs/xml-tree.cpp:1521 +#: ../src/dialogs/xml-tree.cpp:413 +#: ../src/dialogs/xml-tree.cpp:1526 msgid "Raise node" msgstr "Поднять ветвь" -#: ../src/dialogs/xml-tree.cpp:424 -#: ../src/dialogs/xml-tree.cpp:1538 +#: ../src/dialogs/xml-tree.cpp:425 +#: ../src/dialogs/xml-tree.cpp:1543 msgid "Lower node" msgstr "Опустить ветвь" -#: ../src/dialogs/xml-tree.cpp:469 -#: ../src/dialogs/xml-tree.cpp:1462 +#: ../src/dialogs/xml-tree.cpp:470 +#: ../src/dialogs/xml-tree.cpp:1467 msgid "Delete attribute" msgstr "Удалить атрибут" #. TRANSLATORS: "Attribute" is a noun here -#: ../src/dialogs/xml-tree.cpp:514 +#: ../src/dialogs/xml-tree.cpp:515 msgid "Attribute name" msgstr "Имя атрибута" #. TRANSLATORS: "Set" is a verb here -#: ../src/dialogs/xml-tree.cpp:536 +#: ../src/dialogs/xml-tree.cpp:537 msgid "Set" msgstr "Установить" #. TRANSLATORS: "Attribute" is a noun here -#: ../src/dialogs/xml-tree.cpp:559 +#: ../src/dialogs/xml-tree.cpp:560 msgid "Attribute value" msgstr "Значение атрибута" -#: ../src/dialogs/xml-tree.cpp:892 +#: ../src/dialogs/xml-tree.cpp:897 msgid "Drag XML subtree" msgstr "Перетаскивание поддерева XML" -#: ../src/dialogs/xml-tree.cpp:1329 +#: ../src/dialogs/xml-tree.cpp:1334 msgid "New element node..." msgstr "Создать ветвь элемента..." -#: ../src/dialogs/xml-tree.cpp:1351 +#: ../src/dialogs/xml-tree.cpp:1356 #: ../src/ui/dialog/whiteboard-connect.cpp:119 #: ../src/ui/dialog/whiteboard-sharewithchat.cpp:104 msgid "Cancel" msgstr "Отменить" -#: ../src/dialogs/xml-tree.cpp:1359 +#: ../src/dialogs/xml-tree.cpp:1364 msgid "Create" msgstr "Создать" -#: ../src/dialogs/xml-tree.cpp:1393 +#: ../src/dialogs/xml-tree.cpp:1398 msgid "Create new element node" msgstr "Создание ветви элемента" -#: ../src/dialogs/xml-tree.cpp:1409 +#: ../src/dialogs/xml-tree.cpp:1414 msgid "Create new text node" msgstr "Создание текстовой ветви" -#: ../src/dialogs/xml-tree.cpp:1491 +#: ../src/dialogs/xml-tree.cpp:1496 msgid "Change attribute" msgstr "Смена атрибута" @@ -2398,7 +2410,7 @@ msgstr "Основная длина оси Z" #: ../src/display/canvas-axonomgrid.cpp:399 #: ../src/ui/dialog/inkscape-preferences.cpp:949 -#: ../src/widgets/toolbox.cpp:2941 +#: ../src/widgets/toolbox.cpp:2959 msgid "Angle X:" msgstr "Угол X:" @@ -2409,7 +2421,7 @@ msgstr "Угол оси X" #: ../src/display/canvas-axonomgrid.cpp:401 #: ../src/ui/dialog/inkscape-preferences.cpp:950 -#: ../src/widgets/toolbox.cpp:3020 +#: ../src/widgets/toolbox.cpp:3038 msgid "Angle Z:" msgstr "Угол Z:" @@ -2768,8 +2780,8 @@ msgstr "Адаптивная постеризация" #: ../src/libgdl/gdl-dock-placeholder.c:169 #: ../src/live_effects/lpe-bendpath.cpp:56 #: ../src/live_effects/lpe-patternalongpath.cpp:63 -#: ../src/widgets/toolbox.cpp:2614 -#: ../src/widgets/toolbox.cpp:3643 +#: ../src/widgets/toolbox.cpp:2632 +#: ../src/widgets/toolbox.cpp:3661 msgid "Width" msgstr "Ширина" @@ -2778,7 +2790,7 @@ msgstr "Ширина" #: ../src/extension/internal/bitmap/sample.cpp:41 #: ../src/libgdl/gdl-dock.c:198 #: ../src/libgdl/gdl-dock-placeholder.c:177 -#: ../src/widgets/toolbox.cpp:2631 +#: ../src/widgets/toolbox.cpp:2649 msgid "Height" msgstr "Высота" @@ -2878,7 +2890,7 @@ msgstr "Размывание" #: ../src/extension/internal/bitmap/oilPaint.cpp:38 #: ../src/extension/internal/bitmap/sharpen.cpp:39 #: ../src/extension/internal/bitmap/unsharpmask.cpp:42 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2256 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2265 msgid "Radius" msgstr "Радиус" @@ -3134,7 +3146,7 @@ msgstr "Яркость" #: ../src/widgets/sp-color-icc-selector.cpp:237 #: ../src/widgets/sp-color-scales.cpp:427 #: ../src/widgets/sp-color-scales.cpp:428 -#: ../src/widgets/toolbox.cpp:3815 +#: ../src/widgets/toolbox.cpp:3833 #: ../share/extensions/color_randomize.inx.h:5 msgid "Saturation" msgstr "Насыщенность" @@ -3145,7 +3157,7 @@ msgstr "Насыщенность" #: ../src/widgets/sp-color-icc-selector.cpp:237 #: ../src/widgets/sp-color-scales.cpp:424 #: ../src/widgets/sp-color-scales.cpp:425 -#: ../src/widgets/toolbox.cpp:3800 +#: ../src/widgets/toolbox.cpp:3818 #: ../share/extensions/color_randomize.inx.h:2 msgid "Hue" msgstr "Тон" @@ -3343,7 +3355,7 @@ msgstr "PDF 1.4" #: ../src/extension/internal/cairo-ps-out.cpp:284 #: ../src/extension/internal/cairo-ps-out.cpp:321 #: ../src/extension/internal/cairo-renderer-pdf-out.cpp:218 -#: ../src/extension/internal/emf-win32-inout.cpp:2435 +#: ../src/extension/internal/emf-win32-inout.cpp:2433 #: ../src/extension/internal/eps-out.cpp:92 #: ../src/extension/internal/ps-out.cpp:84 msgid "Convert texts to paths" @@ -3447,39 +3459,39 @@ msgstr "Файл Encapsulated PostScript" msgid "Convert filter effects to bitmaps" msgstr "Объекты с фильтрами SVG в растр" -#: ../src/extension/internal/emf-win32-inout.cpp:2405 +#: ../src/extension/internal/emf-win32-inout.cpp:2403 msgid "EMF Input" msgstr "Импорт EMF" -#: ../src/extension/internal/emf-win32-inout.cpp:2410 +#: ../src/extension/internal/emf-win32-inout.cpp:2408 msgid "Enhanced Metafiles (*.emf)" msgstr "Файлы Enhanced Metafiles (*.emf)" -#: ../src/extension/internal/emf-win32-inout.cpp:2411 +#: ../src/extension/internal/emf-win32-inout.cpp:2409 msgid "Enhanced Metafiles" msgstr "Файлы Enhanced Metafile" -#: ../src/extension/internal/emf-win32-inout.cpp:2419 +#: ../src/extension/internal/emf-win32-inout.cpp:2417 msgid "WMF Input" msgstr "Импорт WMF" -#: ../src/extension/internal/emf-win32-inout.cpp:2424 +#: ../src/extension/internal/emf-win32-inout.cpp:2422 msgid "Windows Metafiles (*.wmf)" msgstr "Файлы Windows Metafile (*.wmf)" -#: ../src/extension/internal/emf-win32-inout.cpp:2425 +#: ../src/extension/internal/emf-win32-inout.cpp:2423 msgid "Windows Metafiles" msgstr "Файлы Windows Metafile" -#: ../src/extension/internal/emf-win32-inout.cpp:2433 +#: ../src/extension/internal/emf-win32-inout.cpp:2431 msgid "EMF Output" msgstr "Экспорт в EMF" -#: ../src/extension/internal/emf-win32-inout.cpp:2439 +#: ../src/extension/internal/emf-win32-inout.cpp:2437 msgid "Enhanced Metafile (*.emf)" msgstr "Файлы Enhanced Metafile (*.emf)" -#: ../src/extension/internal/emf-win32-inout.cpp:2440 +#: ../src/extension/internal/emf-win32-inout.cpp:2438 msgid "Enhanced Metafile" msgstr "Enhanced Metafile" @@ -3567,7 +3579,7 @@ msgid "Blur radius, px" msgstr "Радиус размывания, px" #: ../src/extension/internal/filter/drop-shadow.h:38 -#: ../src/ui/widget/object-composite-settings.cpp:52 +#: ../src/ui/widget/object-composite-settings.cpp:62 #: ../src/ui/widget/selected-style.cpp:1027 #: ../src/ui/widget/selected-style.cpp:1028 msgid "Opacity, %" @@ -3845,7 +3857,7 @@ msgstr "Сдвиг по вертикали" #: ../src/extension/internal/grid.cpp:202 #: ../share/extensions/draw_from_triangle.inx.h:30 #: ../share/extensions/eqtexsvg.inx.h:3 -#: ../share/extensions/funcplot.inx.h:12 +#: ../share/extensions/funcplot.inx.h:13 #: ../share/extensions/gears.inx.h:5 #: ../share/extensions/grid_cartesian.inx.h:15 #: ../share/extensions/grid_polar.inx.h:18 @@ -4227,7 +4239,7 @@ msgid "default.svg" msgstr "default.svg" #: ../src/file.cpp:240 -#: ../src/file.cpp:1020 +#: ../src/file.cpp:1023 #, c-format msgid "Failed to load the requested file %s" msgstr "Не удалось загрузить запрошенный файл %s" @@ -4276,6 +4288,7 @@ msgstr "Не найдено расширение Inkscape для сохране #: ../src/file.cpp:579 #: ../src/file.cpp:587 +#: ../src/file.cpp:593 msgid "Document not saved." msgstr "Документ не сохранен." @@ -4284,70 +4297,70 @@ msgstr "Документ не сохранен." msgid "File %s could not be saved." msgstr "Невозможно сохранить файл %s." -#: ../src/file.cpp:597 +#: ../src/file.cpp:600 msgid "Document saved." msgstr "Документ сохранен." -#: ../src/file.cpp:738 -#: ../src/file.cpp:1147 -#: ../src/file.cpp:1266 +#: ../src/file.cpp:741 +#: ../src/file.cpp:1150 +#: ../src/file.cpp:1269 #, c-format msgid "drawing%s" msgstr "рисунок%s" -#: ../src/file.cpp:744 +#: ../src/file.cpp:747 #, c-format msgid "drawing-%d%s" msgstr "рисунок-%d%s" -#: ../src/file.cpp:763 +#: ../src/file.cpp:766 msgid "Select file to save a copy to" msgstr "Выберите файл для сохранения копии" -#: ../src/file.cpp:765 +#: ../src/file.cpp:768 msgid "Select file to save to" msgstr "Выберите файл для сохранения" -#: ../src/file.cpp:845 +#: ../src/file.cpp:848 msgid "No changes need to be saved." msgstr "Файл не был изменен. Сохранение не требуется." -#: ../src/file.cpp:862 +#: ../src/file.cpp:865 msgid "Saving document..." msgstr "Выполняется сохранение документа..." -#: ../src/file.cpp:1017 +#: ../src/file.cpp:1020 msgid "Import" msgstr "Импорт" -#: ../src/file.cpp:1049 +#: ../src/file.cpp:1052 msgid "Select file to import" msgstr "Выберите файл для импорта" -#: ../src/file.cpp:1169 -#: ../src/file.cpp:1281 +#: ../src/file.cpp:1172 +#: ../src/file.cpp:1284 msgid "Select file to export to" msgstr "Выберите файл для экспорта" -#: ../src/file.cpp:1308 +#: ../src/file.cpp:1311 #, c-format msgid "Error saving a temporary copy" msgstr "Ошибка сохранения временной копии" -#: ../src/file.cpp:1328 +#: ../src/file.cpp:1331 msgid "Open Clip Art Login" msgstr "Вход в Open Clip Art" -#: ../src/file.cpp:1349 +#: ../src/file.cpp:1352 #, fuzzy, c-format msgid "Error exporting the document. Verify if the server name, username and password are correct, if the server has support for webdav and verify if you didn't forget to choose a license." msgstr "В ходе экспорта документа произошла ошибка. Проверьте, корректно ли введены имя сервера, имя пользователя и пароль, есть ли у сервера поддержка webdav, не забыли ли вы указать лицензию." -#: ../src/file.cpp:1370 +#: ../src/file.cpp:1373 msgid "Document exported..." msgstr "Документ экспортирован..." -#: ../src/file.cpp:1398 +#: ../src/file.cpp:1401 #: ../src/verbs.cpp:2237 msgid "Import From Open Clip Art Library" msgstr "Импортировать из Open Clip Art Library" @@ -4592,7 +4605,7 @@ msgstr "Видимые цвета" #: ../src/widgets/sp-color-icc-selector.cpp:237 #: ../src/widgets/sp-color-scales.cpp:430 #: ../src/widgets/sp-color-scales.cpp:431 -#: ../src/widgets/toolbox.cpp:3830 +#: ../src/widgets/toolbox.cpp:3848 #: ../share/extensions/color_randomize.inx.h:3 msgid "Lightness" msgstr "Яркость" @@ -4654,43 +4667,43 @@ msgid "Draw over areas to add to fill, hold Alt for touch fill" msgstr "Проведите курсором мыши по областям, добавляемым в заливку, нажмите Alt для переключения на касательную заливку" #: ../src/gradient-context.cpp:132 -#: ../src/gradient-drag.cpp:74 +#: ../src/gradient-drag.cpp:75 msgid "Linear gradient start" msgstr "Линейный градиент: начало" #. POINT_LG_BEGIN #: ../src/gradient-context.cpp:133 -#: ../src/gradient-drag.cpp:75 +#: ../src/gradient-drag.cpp:76 msgid "Linear gradient end" msgstr "Линейный градиент: конец" #: ../src/gradient-context.cpp:134 -#: ../src/gradient-drag.cpp:76 +#: ../src/gradient-drag.cpp:77 msgid "Linear gradient mid stop" msgstr "Опорная точка линейного градиента" #: ../src/gradient-context.cpp:135 -#: ../src/gradient-drag.cpp:77 +#: ../src/gradient-drag.cpp:78 msgid "Radial gradient center" msgstr "Радиальный градиент: центр" #: ../src/gradient-context.cpp:136 #: ../src/gradient-context.cpp:137 -#: ../src/gradient-drag.cpp:78 #: ../src/gradient-drag.cpp:79 +#: ../src/gradient-drag.cpp:80 msgid "Radial gradient radius" msgstr "Радиальный градиент: радиус" #: ../src/gradient-context.cpp:138 -#: ../src/gradient-drag.cpp:80 +#: ../src/gradient-drag.cpp:81 msgid "Radial gradient focus" msgstr "Радиальный градиент: фокус" #. POINT_RG_FOCUS #: ../src/gradient-context.cpp:139 #: ../src/gradient-context.cpp:140 -#: ../src/gradient-drag.cpp:81 #: ../src/gradient-drag.cpp:82 +#: ../src/gradient-drag.cpp:83 msgid "Radial gradient mid stop" msgstr "Опорная точка радиального градиента" @@ -4790,40 +4803,40 @@ msgstr[2] "Градиент для %d объектов; Ctrl ог msgid "Select objects on which to create gradient." msgstr "Выделите объекты, к которым будет применен градиент." -#: ../src/gradient-drag.cpp:573 +#: ../src/gradient-drag.cpp:574 msgid "Merge gradient handles" msgstr "Объединение рычагов градиента" -#: ../src/gradient-drag.cpp:896 +#: ../src/gradient-drag.cpp:897 msgid "Move gradient handle" msgstr "Смещение рычага градиента" -#: ../src/gradient-drag.cpp:949 +#: ../src/gradient-drag.cpp:950 #: ../src/widgets/gradient-vector.cpp:770 msgid "Delete gradient stop" msgstr "Удаление опорной точки" -#: ../src/gradient-drag.cpp:1113 +#: ../src/gradient-drag.cpp:1114 #, c-format msgid "%s %d for: %s%s; drag with Ctrl to snap offset; click with Ctrl+Alt to delete stop" msgstr "%s %d для: %s%s; c Ctrl прилипать по 1/10 радиуса, щелчком с Ctrl+Alt удалить опорную точку" -#: ../src/gradient-drag.cpp:1117 -#: ../src/gradient-drag.cpp:1124 +#: ../src/gradient-drag.cpp:1118 +#: ../src/gradient-drag.cpp:1125 msgid " (stroke)" msgstr "(штрих)" -#: ../src/gradient-drag.cpp:1121 +#: ../src/gradient-drag.cpp:1122 #, c-format msgid "%s for: %s%s; drag with Ctrl to snap angle, with Ctrl+Alt to preserve angle, with Ctrl+Shift to scale around center" msgstr "%s для: %s%s; Ctrl ограничивает угол, Ctrl+Alt фиксирует угол, Ctrl+Shift масштабирует вокруг центра" -#: ../src/gradient-drag.cpp:1129 +#: ../src/gradient-drag.cpp:1130 #, c-format msgid "Radial gradient center and focus; drag with Shift to separate focus" msgstr "Центр и фокус радиального градиента; перетаскивание с Shift отделяет фокус" -#: ../src/gradient-drag.cpp:1132 +#: ../src/gradient-drag.cpp:1133 #, c-format msgid "Gradient point shared by %d gradient; drag with Shift to separate" msgid_plural "Gradient point shared by %d gradients; drag with Shift to separate" @@ -4831,15 +4844,15 @@ msgstr[0] "Точка градиента, общая для %d гради msgstr[1] "Точка градиента, общая для %d градиентов; перетаскивание с Shift разделяет точки" msgstr[2] "Точка градиента, общая для %d градиентов; перетаскивание с Shift разделяет точки" -#: ../src/gradient-drag.cpp:1807 +#: ../src/gradient-drag.cpp:1809 msgid "Move gradient handle(s)" msgstr "Смещение рычага градиента" -#: ../src/gradient-drag.cpp:1843 +#: ../src/gradient-drag.cpp:1845 msgid "Move gradient mid stop(s)" msgstr "Смещение опорной точки градиента" -#: ../src/gradient-drag.cpp:2131 +#: ../src/gradient-drag.cpp:2133 msgid "Delete gradient stop(s)" msgstr "Удалить опорную точку (-и)" @@ -4851,10 +4864,10 @@ msgstr "Единица" #. Add the units menu. #: ../src/helper/units.cpp:37 #: ../src/widgets/select-toolbar.cpp:501 -#: ../src/widgets/toolbox.cpp:1469 -#: ../src/widgets/toolbox.cpp:2675 -#: ../src/widgets/toolbox.cpp:5178 -#: ../src/widgets/toolbox.cpp:6691 +#: ../src/widgets/toolbox.cpp:1487 +#: ../src/widgets/toolbox.cpp:2693 +#: ../src/widgets/toolbox.cpp:5196 +#: ../src/widgets/toolbox.cpp:6709 msgid "Units" msgstr "Единицы" @@ -5053,88 +5066,88 @@ msgstr "Не получилось сохранить резервную копи #. sp_ui_menu_append_check_item_from_verb(m, view, _("_Menu"), _("Show or hide the menu bar"), "menu", #. checkitem_toggled, checkitem_update, 0); -#: ../src/interface.cpp:827 +#: ../src/interface.cpp:828 msgid "Commands Bar" msgstr "Панель команд" -#: ../src/interface.cpp:827 +#: ../src/interface.cpp:828 msgid "Show or hide the Commands bar (under the menu)" msgstr "Показать/скрыть панель команд (под меню)" -#: ../src/interface.cpp:829 +#: ../src/interface.cpp:830 msgid "Tool Controls Bar" msgstr "Панель параметров инструментов" -#: ../src/interface.cpp:829 +#: ../src/interface.cpp:830 msgid "Show or hide the Tool Controls bar" msgstr "Показать/скрыть панель с параметрами инструментов" -#: ../src/interface.cpp:831 +#: ../src/interface.cpp:832 msgid "_Toolbox" msgstr "_Панель инструментов" -#: ../src/interface.cpp:831 +#: ../src/interface.cpp:832 msgid "Show or hide the main toolbox (on the left)" msgstr "Показать/скрыть главную панель инструментов (слева)" -#: ../src/interface.cpp:837 +#: ../src/interface.cpp:838 msgid "_Palette" msgstr "О_бразцы цветов" -#: ../src/interface.cpp:837 +#: ../src/interface.cpp:838 msgid "Show or hide the color palette" msgstr "Показать/скрыть панель с палитрой цветов" -#: ../src/interface.cpp:839 +#: ../src/interface.cpp:840 msgid "_Statusbar" msgstr "_Строка состояния" -#: ../src/interface.cpp:839 +#: ../src/interface.cpp:840 msgid "Show or hide the statusbar (at the bottom of the window)" msgstr "Показать/скрыть строку состояния (внизу окна)" -#: ../src/interface.cpp:893 +#: ../src/interface.cpp:894 #, c-format msgid "Verb \"%s\" Unknown" msgstr "Глагол \"%s\" неизвестен" -#: ../src/interface.cpp:932 +#: ../src/interface.cpp:933 msgid "Open _Recent" msgstr "Открыть н_едавние" #. TRANSLATORS: #%s is the id of the group e.g. , not a number. -#: ../src/interface.cpp:1030 +#: ../src/interface.cpp:1031 #, c-format msgid "Enter group #%s" msgstr "Войти в группу #%s" -#: ../src/interface.cpp:1041 +#: ../src/interface.cpp:1042 msgid "Go to parent" msgstr "На уровень выше" -#: ../src/interface.cpp:1132 -#: ../src/interface.cpp:1218 +#: ../src/interface.cpp:1133 +#: ../src/interface.cpp:1219 #: ../src/ui/widget/selected-style.cpp:462 msgid "Drop color" msgstr "Перенос цвета" -#: ../src/interface.cpp:1171 +#: ../src/interface.cpp:1172 msgid "Drop color on gradient" msgstr "Перенос цвета на градиент" -#: ../src/interface.cpp:1231 +#: ../src/interface.cpp:1232 msgid "Could not parse SVG data" msgstr "Невозможно разобрать данные SVG" -#: ../src/interface.cpp:1274 +#: ../src/interface.cpp:1275 msgid "Drop SVG" msgstr "Drop SVG" -#: ../src/interface.cpp:1332 +#: ../src/interface.cpp:1333 msgid "Drop bitmap image" msgstr "Импорт растра" -#: ../src/interface.cpp:1424 +#: ../src/interface.cpp:1425 #, c-format msgid "" "A file named \"%s\" already exists. Do you want to replace it?\n" @@ -5145,7 +5158,7 @@ msgstr "" "\n" "Этот файл уже есть в каталоге \"%s\". Замена перезапишет его содержание." -#: ../src/interface.cpp:1431 +#: ../src/interface.cpp:1432 msgid "Replace" msgstr "Заменить" @@ -5629,7 +5642,7 @@ msgstr "Something weird happened while getting the child placement for %p from p msgid "Dockitem which 'owns' this tablabel" msgstr "Dockitem which 'owns' this tablabel" -#: ../src/libnrtype/FontFactory.cpp:778 +#: ../src/libnrtype/FontFactory.cpp:780 msgid "Ignoring font without family that will crash Pango" msgstr "Игнорирование шрифта без гарнитуры приведет к обрушиванию Pango" @@ -6104,31 +6117,31 @@ msgid "If true, the spacing between intermediates is constant along the length o msgstr "Если включено, интервал между промежуточными фигурами не меняется на протяжении всего контура. Если выключено, расстояние меняется в зависимости от положения узлов на контуре траектории." #. initialise your parameters here: -#: ../src/live_effects/lpe-knot.cpp:327 +#: ../src/live_effects/lpe-knot.cpp:331 msgid "Gap width" msgstr "Ширина интервала:" -#: ../src/live_effects/lpe-knot.cpp:327 +#: ../src/live_effects/lpe-knot.cpp:331 msgid "The width of the gap in the path where it self-intersects" msgstr "Ширина интервала в участках, где контур сам себя пересекает" -#: ../src/live_effects/lpe-knot.cpp:328 +#: ../src/live_effects/lpe-knot.cpp:332 msgid "Switcher size" msgstr "Размер переключателя:" -#: ../src/live_effects/lpe-knot.cpp:328 +#: ../src/live_effects/lpe-knot.cpp:332 msgid "Orientation indicator/switcher size" msgstr "Размер индикатора-переключателя направления" -#: ../src/live_effects/lpe-knot.cpp:329 +#: ../src/live_effects/lpe-knot.cpp:333 msgid "Crossing Signs" msgstr "" -#: ../src/live_effects/lpe-knot.cpp:329 +#: ../src/live_effects/lpe-knot.cpp:333 msgid "Crossings signs" msgstr "" -#: ../src/live_effects/lpe-knot.cpp:336 +#: ../src/live_effects/lpe-knot.cpp:340 msgid "Drag to select a crossing, click to flip it" msgstr "" @@ -6198,22 +6211,22 @@ msgid "Control handle 15" msgstr "Регулятор 15" #: ../src/live_effects/lpe-line_segment.cpp:27 -#: ../src/widgets/toolbox.cpp:5027 +#: ../src/widgets/toolbox.cpp:5045 msgid "Closed" msgstr "Закрытый" #: ../src/live_effects/lpe-line_segment.cpp:28 -#: ../src/widgets/toolbox.cpp:5029 +#: ../src/widgets/toolbox.cpp:5047 msgid "Open start" msgstr "С открытым началом" #: ../src/live_effects/lpe-line_segment.cpp:29 -#: ../src/widgets/toolbox.cpp:5031 +#: ../src/widgets/toolbox.cpp:5049 msgid "Open end" msgstr "С открытым концом" #: ../src/live_effects/lpe-line_segment.cpp:30 -#: ../src/widgets/toolbox.cpp:5033 +#: ../src/widgets/toolbox.cpp:5051 msgid "Open both" msgstr "Открыт с обеих сторон" @@ -6269,7 +6282,7 @@ msgstr "Изменить правый конец параллели" #: ../src/live_effects/lpe-sketch.cpp:54 #: ../src/selection-chemistry.cpp:1478 #: ../src/seltrans.cpp:448 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2240 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2249 #: ../src/ui/dialog/transformation.cpp:738 msgid "Scale" msgstr "Масштабирование" @@ -6442,12 +6455,12 @@ msgid "Both" msgstr "Оба" #: ../src/live_effects/lpe-ruler.cpp:35 -#: ../src/widgets/toolbox.cpp:4686 +#: ../src/widgets/toolbox.cpp:4704 msgid "Start" msgstr "Начало" #: ../src/live_effects/lpe-ruler.cpp:36 -#: ../src/widgets/toolbox.cpp:4699 +#: ../src/widgets/toolbox.cpp:4717 msgid "End" msgstr "Конец" @@ -6814,208 +6827,208 @@ msgstr "Не удалось найти ID команды '%s', указанны msgid "Unable to find node ID: '%s'\n" msgstr "Невозможно найти ID узла: '%s'\n" -#: ../src/main.cpp:256 +#: ../src/main.cpp:257 msgid "Print the Inkscape version number" msgstr "Напечатать версию Inkscape" -#: ../src/main.cpp:261 +#: ../src/main.cpp:262 msgid "Do not use X server (only process files from console)" msgstr "Не использовать X сервер (допустимы только консольные операции)" -#: ../src/main.cpp:266 +#: ../src/main.cpp:267 msgid "Try to use X server (even if $DISPLAY is not set)" msgstr "Пытаться использовать X сервер (даже если переменная $DISPLAY не установлена)" -#: ../src/main.cpp:271 +#: ../src/main.cpp:272 msgid "Open specified document(s) (option string may be excluded)" msgstr "Открыть указанные документы (строка параметра может быть исключена)" -#: ../src/main.cpp:272 -#: ../src/main.cpp:277 -#: ../src/main.cpp:282 -#: ../src/main.cpp:349 -#: ../src/main.cpp:354 -#: ../src/main.cpp:359 -#: ../src/main.cpp:364 -#: ../src/main.cpp:370 +#: ../src/main.cpp:273 +#: ../src/main.cpp:278 +#: ../src/main.cpp:283 +#: ../src/main.cpp:350 +#: ../src/main.cpp:355 +#: ../src/main.cpp:360 +#: ../src/main.cpp:365 +#: ../src/main.cpp:371 msgid "FILENAME" msgstr "FILENAME" -#: ../src/main.cpp:276 +#: ../src/main.cpp:277 msgid "Print document(s) to specified output file (use '| program' for pipe)" msgstr "Напечатать документ(ы) в указанный файл (используйте '| program' для передачи программе)" -#: ../src/main.cpp:281 +#: ../src/main.cpp:282 msgid "Export document to a PNG file" msgstr "Экспортировать документ в файл PNG" -#: ../src/main.cpp:286 +#: ../src/main.cpp:287 msgid "The resolution used for exporting SVG into bitmap (default 90)" msgstr "Разрешение, используемое для экспорта SVG в растр (по умолчанию 90)" -#: ../src/main.cpp:287 +#: ../src/main.cpp:288 #: ../src/ui/widget/rendering-options.cpp:43 msgid "DPI" msgstr "DPI" -#: ../src/main.cpp:291 +#: ../src/main.cpp:292 msgid "Exported area in SVG user units (default is the canvas; 0,0 is lower-left corner)" msgstr "Экспортируемая область в SVG пользовательских единицах измерения (по умолчанию - вся канва; 0,0 - левый нижний угол)" -#: ../src/main.cpp:292 +#: ../src/main.cpp:293 msgid "x0:y0:x1:y1" msgstr "x0:y0:x1:y1" -#: ../src/main.cpp:296 +#: ../src/main.cpp:297 msgid "Exported area is the entire drawing (not canvas)" msgstr "Экспортируемая область включает в себя весь рисунок (а не страницу)" -#: ../src/main.cpp:301 +#: ../src/main.cpp:302 msgid "Exported area is the entire canvas" msgstr "Экспортируемая область включает в себя весь холст" -#: ../src/main.cpp:306 +#: ../src/main.cpp:307 msgid "Snap the bitmap export area outwards to the nearest integer values (in SVG user units)" msgstr "Расширить область экспортируемого растра до ближайших целых значений (в SVG единицах)" -#: ../src/main.cpp:311 +#: ../src/main.cpp:312 msgid "The width of exported bitmap in pixels (overrides export-dpi)" msgstr "Ширина экспортируемого растра в точках (отменяет export-dpi)" -#: ../src/main.cpp:312 +#: ../src/main.cpp:313 msgid "WIDTH" msgstr "WIDTH" -#: ../src/main.cpp:316 +#: ../src/main.cpp:317 msgid "The height of exported bitmap in pixels (overrides export-dpi)" msgstr "Высота экспортируемого растра в точках (отменяет export-dpi)" -#: ../src/main.cpp:317 +#: ../src/main.cpp:318 msgid "HEIGHT" msgstr "HEIGHT" -#: ../src/main.cpp:321 +#: ../src/main.cpp:322 msgid "The ID of the object to export" msgstr "Идентификатор экспортируемого объекта" -#: ../src/main.cpp:322 -#: ../src/main.cpp:410 +#: ../src/main.cpp:323 +#: ../src/main.cpp:411 msgid "ID" msgstr "ID" #. TRANSLATORS: this means: "Only export the object whose id is given in --export-id". #. See "man inkscape" for details. -#: ../src/main.cpp:328 +#: ../src/main.cpp:329 msgid "Export just the object with export-id, hide all others (only with export-id)" msgstr "Экспортировать только объект с заданным export-id, скрыв все прочие объекты (только с опцией export-id)" -#: ../src/main.cpp:333 +#: ../src/main.cpp:334 msgid "Use stored filename and DPI hints when exporting (only with export-id)" msgstr "Использовать сохраненное имя файла и разрешение при экспорте (только с опцией export-id)" -#: ../src/main.cpp:338 +#: ../src/main.cpp:339 msgid "Background color of exported bitmap (any SVG-supported color string)" msgstr "Фоновый цвет для экспорта растра (любая поддерживаемая в SVG цветовая строка)" -#: ../src/main.cpp:339 +#: ../src/main.cpp:340 msgid "COLOR" msgstr "COLOR" -#: ../src/main.cpp:343 +#: ../src/main.cpp:344 msgid "Background opacity of exported bitmap (either 0.0 to 1.0, or 1 to 255)" msgstr "Непрозрачность фона для экспорта растра (от 0.0 до 1.0 либо от 1 до 255)" -#: ../src/main.cpp:344 +#: ../src/main.cpp:345 msgid "VALUE" msgstr "VALUE" -#: ../src/main.cpp:348 +#: ../src/main.cpp:349 msgid "Export document to plain SVG file (no sodipodi or inkscape namespaces)" msgstr "Экспортировать документ в формат чистый SVG (без пространств имен sodipodi: или inkscape:)" -#: ../src/main.cpp:353 +#: ../src/main.cpp:354 msgid "Export document to a PS file" msgstr "Экспортировать документ в файл PS" -#: ../src/main.cpp:358 +#: ../src/main.cpp:359 msgid "Export document to an EPS file" msgstr "Экспортировать документ в файл EPS" -#: ../src/main.cpp:363 +#: ../src/main.cpp:364 msgid "Export document to a PDF file" msgstr "Экспортировать документ в файл PDF" -#: ../src/main.cpp:369 +#: ../src/main.cpp:370 msgid "Export document to an Enhanced Metafile (EMF) File" msgstr "Экспортировать документ в файл Enhanced Metafile (EMF)" -#: ../src/main.cpp:375 +#: ../src/main.cpp:376 msgid "Convert text object to paths on export (EPS)" msgstr "Перевести текст в контуры при экспорте (EPS)" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:381 +#: ../src/main.cpp:382 msgid "Query the X coordinate of the drawing or, if specified, of the object with --query-id" msgstr "Запросить X координату рисунка или, если задано, объекта с --query-id" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:387 +#: ../src/main.cpp:388 msgid "Query the Y coordinate of the drawing or, if specified, of the object with --query-id" msgstr "Запросить Y координату рисунка или, если задано, объекта с --query-id" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:393 +#: ../src/main.cpp:394 msgid "Query the width of the drawing or, if specified, of the object with --query-id" msgstr "Запросить ширину рисунка или, если задано, объекта — при помощи --query-id" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:399 +#: ../src/main.cpp:400 msgid "Query the height of the drawing or, if specified, of the object with --query-id" msgstr "Запросить высоту рисунка или, если задано, объекта с --query-id" -#: ../src/main.cpp:404 +#: ../src/main.cpp:405 msgid "List id,x,y,w,h for all objects" msgstr "Перечислить id,x,y,w,h для всех объектов" -#: ../src/main.cpp:409 +#: ../src/main.cpp:410 msgid "The ID of the object whose dimensions are queried" msgstr "Идентификатор объекта для запроса" #. TRANSLATORS: this option makes Inkscape print the name (path) of the extension directory -#: ../src/main.cpp:415 +#: ../src/main.cpp:416 msgid "Print out the extension directory and exit" msgstr "Вывести на экран каталог расширения и выйти" -#: ../src/main.cpp:420 +#: ../src/main.cpp:421 msgid "Remove unused definitions from the defs section(s) of the document" msgstr "Убрать лишние определения из раздела <defs> документа" -#: ../src/main.cpp:425 +#: ../src/main.cpp:426 msgid "List the IDs of all the verbs in Inkscape" msgstr "Вывести список ID всех действий Inkscape" -#: ../src/main.cpp:430 +#: ../src/main.cpp:431 msgid "Verb to call when Inkscape opens." msgstr "Вызываемое действие при открытии Inkscape." -#: ../src/main.cpp:431 +#: ../src/main.cpp:432 msgid "VERB-ID" msgstr "ДЕЙСТВИЕ-ID" -#: ../src/main.cpp:435 +#: ../src/main.cpp:436 msgid "Object ID to select when Inkscape opens." msgstr "ID объекта, выделяемого при открытии документа в Inkscape." -#: ../src/main.cpp:436 +#: ../src/main.cpp:437 msgid "OBJECT-ID" msgstr "ОБЪЕКТ-ID" -#: ../src/main.cpp:440 +#: ../src/main.cpp:441 msgid "Start Inkscape in interative shell mode." msgstr "Запустить Inkscape в интерактивном командном режиме" -#: ../src/main.cpp:721 -#: ../src/main.cpp:957 +#: ../src/main.cpp:741 +#: ../src/main.cpp:977 msgid "" "[OPTIONS...] [FILE...]\n" "\n" @@ -7122,182 +7135,190 @@ msgstr "Shift: выделить/развыделить узел, откл msgid "Alt: lock handle length; Ctrl+Alt: move along handles" msgstr "Alt: зафиксировать длину рычага; Ctrl+Alt: двигать вдоль рычагов" -#: ../src/nodepath.cpp:749 +#: ../src/nodepath.cpp:746 #: ../src/seltrans.cpp:541 msgid "Stamp" msgstr "Штамповка" -#: ../src/nodepath.cpp:1602 -#: ../src/nodepath.cpp:1628 +#: ../src/nodepath.cpp:1624 +#: ../src/nodepath.cpp:1650 msgid "Move nodes vertically" msgstr "Смещение узлов по вертикали" -#: ../src/nodepath.cpp:1604 -#: ../src/nodepath.cpp:1630 +#: ../src/nodepath.cpp:1626 +#: ../src/nodepath.cpp:1652 msgid "Move nodes horizontally" msgstr "Смещение узлов по горизонтали" -#: ../src/nodepath.cpp:1606 -#: ../src/nodepath.cpp:1632 -#: ../src/nodepath.cpp:1647 -#: ../src/nodepath.cpp:3501 +#: ../src/nodepath.cpp:1628 +#: ../src/nodepath.cpp:1654 +#: ../src/nodepath.cpp:1669 +#: ../src/nodepath.cpp:3574 msgid "Move nodes" msgstr "Смещение узлов" -#: ../src/nodepath.cpp:1685 +#: ../src/nodepath.cpp:1707 msgid "Node handle: drag to shape the curve; with Ctrl to snap angle; with Alt to lock length; with Shift to rotate both handles" msgstr "Рычаг узла: перетаскивание с Ctrl ограничивает угол; с Alt фиксирует длину; с Shift синхронно вращает противоположный рычаг" -#: ../src/nodepath.cpp:1855 +#: ../src/nodepath.cpp:1877 msgid "Align nodes" msgstr "Выровнять узлы" -#: ../src/nodepath.cpp:1917 +#: ../src/nodepath.cpp:1939 msgid "Distribute nodes" msgstr "Расстановка узлов" -#: ../src/nodepath.cpp:1955 +#: ../src/nodepath.cpp:1977 msgid "Add nodes" msgstr "Добавление узлов" -#: ../src/nodepath.cpp:1957 -#: ../src/nodepath.cpp:2056 +#: ../src/nodepath.cpp:1979 +#: ../src/nodepath.cpp:2081 msgid "Add node" msgstr "Добавление узла" -#: ../src/nodepath.cpp:2139 +#: ../src/nodepath.cpp:2173 msgid "Break path" msgstr "Разбитие контура" -#: ../src/nodepath.cpp:2195 +#: ../src/nodepath.cpp:2229 msgid "Close subpath" msgstr "Закрытие подконтура" -#: ../src/nodepath.cpp:2256 +#: ../src/nodepath.cpp:2290 msgid "Join nodes" msgstr "Соединение узлов" -#: ../src/nodepath.cpp:2283 +#: ../src/nodepath.cpp:2317 msgid "Close subpath by segment" msgstr "Закрытие подконтура сегментом" -#: ../src/nodepath.cpp:2337 +#: ../src/nodepath.cpp:2371 msgid "Join nodes by segment" msgstr "Соединение узлов сегментом" -#: ../src/nodepath.cpp:2350 -#: ../src/nodepath.cpp:2365 +#: ../src/nodepath.cpp:2384 +#: ../src/nodepath.cpp:2399 msgid "To join, you must have two endnodes selected." msgstr "Для соединения выделите два оконечных узла." -#: ../src/nodepath.cpp:2522 -#: ../src/nodepath.cpp:2558 -#: ../src/nodepath.cpp:2562 +#: ../src/nodepath.cpp:2556 +#: ../src/nodepath.cpp:2592 +#: ../src/nodepath.cpp:2596 msgid "Delete nodes" msgstr "Удаление узлов" -#: ../src/nodepath.cpp:2524 +#: ../src/nodepath.cpp:2558 msgid "Delete nodes preserving shape" msgstr "Удаление узлов без смены формы" -#: ../src/nodepath.cpp:2581 -#: ../src/nodepath.cpp:2595 +#: ../src/nodepath.cpp:2615 +#: ../src/nodepath.cpp:2629 msgid "Select two non-endpoint nodes on a path between which to delete segments." msgstr "Выделите два неоконечных узла контура, чтобы удалить сегменты между ними" -#: ../src/nodepath.cpp:2691 +#: ../src/nodepath.cpp:2725 msgid "Cannot find path between nodes." msgstr "Невозможно найти контур между узлами." -#: ../src/nodepath.cpp:2723 -#: ../src/widgets/toolbox.cpp:1318 +#: ../src/nodepath.cpp:2757 +#: ../src/widgets/toolbox.cpp:1326 msgid "Delete segment" msgstr "Удаление сегмента" -#: ../src/nodepath.cpp:2744 +#: ../src/nodepath.cpp:2778 msgid "Change segment type" msgstr "Смена типа сегмента" -#: ../src/nodepath.cpp:2761 -#: ../src/nodepath.cpp:3459 +#: ../src/nodepath.cpp:2795 +#: ../src/nodepath.cpp:3532 msgid "Change node type" msgstr "Смена типа узла" -#: ../src/nodepath.cpp:3747 +#: ../src/nodepath.cpp:3820 msgid "Retract handle" msgstr "Втяжка узла" -#: ../src/nodepath.cpp:3796 +#: ../src/nodepath.cpp:3875 msgid "Move node handle" msgstr "Смещение рычага узла" -#: ../src/nodepath.cpp:3982 +#: ../src/nodepath.cpp:4061 #, c-format msgid "Node handle: angle %0.2f°, length %s; with Ctrl to snap angle; with Alt to lock length; with Shift to rotate both handles" msgstr "Рычаг узла под углом %0.2f°, длина %s; перетаскивание с Ctrl ограничивает угол; с Alt фиксирует длину; с Shift синхронно вращает противоположный рычаг" -#: ../src/nodepath.cpp:4176 +#: ../src/nodepath.cpp:4255 msgid "Rotate nodes" msgstr "Вращение узлов" -#: ../src/nodepath.cpp:4307 +#: ../src/nodepath.cpp:4370 +msgid "Cannot scale nodes when all are at the same location." +msgstr "" + +#: ../src/nodepath.cpp:4396 msgid "Scale nodes" msgstr "Масштабирование узлов" -#: ../src/nodepath.cpp:4351 +#: ../src/nodepath.cpp:4440 msgid "Flip nodes" msgstr "Зеркалирование узлов" -#: ../src/nodepath.cpp:4520 +#: ../src/nodepath.cpp:4609 msgid "Node: drag to edit the path; with Ctrl to snap to horizontal/vertical; with Ctrl+Alt to snap to handles' directions" msgstr "Узел: перетаскивание при нажатой клавише Ctrl — с прилипанием по горизонтали/вертикали; с Ctrl+Alt — вдоль рычагов" #. TRANSLATORS: "end" is an adjective here (NOT a verb) -#: ../src/nodepath.cpp:4754 +#: ../src/nodepath.cpp:4842 msgid "end node" msgstr "оконечный узел" #. TRANSLATORS: "cusp" means "sharp" (cusp node); see also the Advanced Tutorial -#: ../src/nodepath.cpp:4759 +#: ../src/nodepath.cpp:4847 msgid "cusp" msgstr "острый" #. TRANSLATORS: "smooth" is an adjective here -#: ../src/nodepath.cpp:4762 +#: ../src/nodepath.cpp:4850 msgid "smooth" msgstr "гладкий" -#: ../src/nodepath.cpp:4764 +#: ../src/nodepath.cpp:4852 +msgid "auto" +msgstr "автоматический" + +#: ../src/nodepath.cpp:4854 msgid "symmetric" msgstr "симметричный" #. TRANSLATORS: "end" is an adjective here (NOT a verb) -#: ../src/nodepath.cpp:4770 +#: ../src/nodepath.cpp:4860 msgid "end node, handle retracted (drag with Shift to extend)" msgstr "оконечный узел, рычаг втянут (вытаскивается с Shift)" -#: ../src/nodepath.cpp:4772 +#: ../src/nodepath.cpp:4862 msgid "one handle retracted (drag with Shift to extend)" msgstr "один рычаг втянут (вытаскивается с Shift)" -#: ../src/nodepath.cpp:4775 +#: ../src/nodepath.cpp:4865 msgid "both handles retracted (drag with Shift to extend)" msgstr "оба рычага втянуты (вытаскиваются с Shift)" -#: ../src/nodepath.cpp:4787 +#: ../src/nodepath.cpp:4877 msgid "Drag nodes or node handles; Alt+drag nodes to sculpt; arrow keys to move nodes, < > to scale, [ ] to rotate" msgstr "Перетаскивайте узлы или рычаги; Alt+перетаскивание узлов для лепки; клавиши со стрелками для смещения узлов, < > для масштабирования, [ ] для вращения" -#: ../src/nodepath.cpp:4788 +#: ../src/nodepath.cpp:4878 msgid "Drag the node or its handles; arrow keys to move the node" msgstr "Перетаскивайте узел или его рычаги; клавиши-стрелки двигают узел" -#: ../src/nodepath.cpp:4814 -#: ../src/nodepath.cpp:4826 +#: ../src/nodepath.cpp:4904 +#: ../src/nodepath.cpp:4916 msgid "Select a single object to edit its nodes or handles." msgstr "Выберите один объект для изменения его узлов или рычагов." -#: ../src/nodepath.cpp:4818 +#: ../src/nodepath.cpp:4908 #, c-format msgid "0 out of %i node selected. Click, Shift+click, or drag around nodes to select." msgid_plural "0 out of %i nodes selected. Click, Shift+click, or drag around nodes to select." @@ -7305,11 +7326,11 @@ msgstr[0] "Выделен 0 из %i узлов. Для выдел msgstr[1] "Выделено 0 из %i узлов. Для выделения узлов используйте щелчок, Shift+щелчок, либо обведение рамкой." msgstr[2] "Выделено 0 из %i узлов. Для выделения узлов используйте щелчок, Shift+щелчок, либо обведение рамкой." -#: ../src/nodepath.cpp:4824 +#: ../src/nodepath.cpp:4914 msgid "Drag the handles of the object to modify it." msgstr "Двигайте ручки фигуры, чтобы изменить ее." -#: ../src/nodepath.cpp:4832 +#: ../src/nodepath.cpp:4922 #, c-format msgid "%i of %i node selected; %s. %s." msgid_plural "%i of %i nodes selected; %s. %s." @@ -7317,7 +7338,7 @@ msgstr[0] "%i из %i узла выделен; %s. %s." msgstr[1] "%i из %i узлов выделено; %s. %s." msgstr[2] "%i из %i узлов выделено; %s. %s." -#: ../src/nodepath.cpp:4839 +#: ../src/nodepath.cpp:4929 #, c-format msgid "%i of %i node selected in %i of %i subpaths. %s." msgid_plural "%i of %i nodes selected in %i of %i subpaths. %s." @@ -7325,7 +7346,7 @@ msgstr[0] "%i из %i узла выделен в %i из %i из %i узлов выделено в %i из %i субконтуров. %s." msgstr[2] "%i из %i узлов выделено в %i из %i субконтуров. %s." -#: ../src/nodepath.cpp:4845 +#: ../src/nodepath.cpp:4935 #, c-format msgid "%i of %i node selected. %s." msgid_plural "%i of %i nodes selected. %s." @@ -7343,9 +7364,8 @@ msgstr "Менять вертикальный радиус закругл #: ../src/object-edit.cpp:416 #: ../src/object-edit.cpp:420 -#, fuzzy msgid "Adjust the width and height of the rectangle; with Ctrlto lock ratio or stretch in one dimension only" -msgstr "Менять ширину и высоту прямоугольника. Ctrl фиксирует отношение либо растягивает/сжимает только по одному измерению." +msgstr "Менять ширину и высоту прямоугольника; Ctrl фиксирует отношение сторон или растягивает/сжимает только по одному измерению." #: ../src/object-edit.cpp:654 #: ../src/object-edit.cpp:657 @@ -7374,9 +7394,8 @@ msgid "Adjust ellipse height, with Ctrl to make circle" msgstr "Менять малую ось эллипса. Ctrl дает круг." #: ../src/object-edit.cpp:902 -#, fuzzy msgid "Position the start point of the arc or segment; with Ctrlto snap angle; drag inside the ellipse for arc, outside for segment" -msgstr "Начальная точка сектора или дуги. Ctrl ограничивает угол. Перетаскивание внутри дает дугу, снаружи — сектор." +msgstr "Начальная точка сектора или дуги; Ctrl ограничивает угол; перетаскивание внутри дает дугу, снаружи — сектор." #: ../src/object-edit.cpp:906 msgid "Position the end point of the arc or segment; with Ctrl to snap angle; drag inside the ellipse for arc, outside for segment" @@ -7406,67 +7425,67 @@ msgstr "Менять расстояние втяжки" msgid "Drag to resize the flowed text frame" msgstr "Изменять размер текстового блока" -#: ../src/path-chemistry.cpp:60 +#: ../src/path-chemistry.cpp:48 msgid "Select at least two objects to combine." msgstr "Выделите как минимум два объекта для объединения." -#: ../src/path-chemistry.cpp:64 +#: ../src/path-chemistry.cpp:52 msgid "Combining paths..." msgstr "Выполняется объединение контуров..." -#: ../src/path-chemistry.cpp:166 +#: ../src/path-chemistry.cpp:154 msgid "Combine" msgstr "Объединение" -#: ../src/path-chemistry.cpp:173 +#: ../src/path-chemistry.cpp:161 msgid "No path(s) to combine in the selection." msgstr "В выделении нет контуров для объединения." -#: ../src/path-chemistry.cpp:185 +#: ../src/path-chemistry.cpp:173 msgid "Select path(s) to break apart." msgstr "Выделите контур(ы) для разбиения." -#: ../src/path-chemistry.cpp:189 +#: ../src/path-chemistry.cpp:177 msgid "Breaking apart paths..." msgstr "Выполняется разбиение контуров..." -#: ../src/path-chemistry.cpp:275 +#: ../src/path-chemistry.cpp:263 msgid "Break apart" msgstr "Разбиение" -#: ../src/path-chemistry.cpp:277 +#: ../src/path-chemistry.cpp:265 msgid "No path(s) to break apart in the selection." msgstr "В выделении нет разбиваемых контуров." -#: ../src/path-chemistry.cpp:295 +#: ../src/path-chemistry.cpp:277 msgid "Select object(s) to convert to path." msgstr "Выделите объекты для преобразования в контур." -#: ../src/path-chemistry.cpp:301 +#: ../src/path-chemistry.cpp:283 msgid "Converting objects to paths..." msgstr "Выполняется преобразование объектов в контуры..." -#: ../src/path-chemistry.cpp:323 +#: ../src/path-chemistry.cpp:305 msgid "Object to path" msgstr "Оконтуривание объекта" -#: ../src/path-chemistry.cpp:325 +#: ../src/path-chemistry.cpp:307 msgid "No objects to convert to path in the selection." msgstr "В выделении нет объектов, преобразуемых в контур." -#: ../src/path-chemistry.cpp:489 +#: ../src/path-chemistry.cpp:544 msgid "Select path(s) to reverse." msgstr "Выделите контур(ы) для разворота." -#: ../src/path-chemistry.cpp:498 +#: ../src/path-chemistry.cpp:553 msgid "Reversing paths..." msgstr "Выполняется разворот контуров..." -#: ../src/path-chemistry.cpp:525 +#: ../src/path-chemistry.cpp:580 msgid "Reverse path" msgstr "Развернуть контур" -#: ../src/path-chemistry.cpp:527 +#: ../src/path-chemistry.cpp:582 msgid "No paths to reverse in the selection." msgstr "В выделении нет контуров для разворота." @@ -7480,29 +7499,29 @@ msgstr "Продолжение выделенного контура" msgid "Creating new path" msgstr "Создание нового контура" -#: ../src/pencil-context.cpp:265 +#: ../src/pencil-context.cpp:271 #: ../src/pen-context.cpp:498 msgid "Appending to selected path" msgstr "Добавление к выделенному контуру" -#: ../src/pencil-context.cpp:363 +#: ../src/pencil-context.cpp:378 msgid "Release here to close and finish the path." msgstr "Отпустите здесь для закрытия и завершения контура." -#: ../src/pencil-context.cpp:369 +#: ../src/pencil-context.cpp:384 msgid "Drawing a freehand path" msgstr "Рисуется произвольный контур" -#: ../src/pencil-context.cpp:374 +#: ../src/pencil-context.cpp:389 msgid "Drag to continue the path from this point." msgstr "Перетащите для продолжения контура из этой точки." #. Write curves to object -#: ../src/pencil-context.cpp:436 +#: ../src/pencil-context.cpp:451 msgid "Finishing freehand" msgstr "Завершается произвольный контур" -#: ../src/pencil-context.cpp:487 +#: ../src/pencil-context.cpp:502 #: ../src/pen-context.cpp:254 msgid "Drawing cancelled" msgstr "Отмена рисования" @@ -7515,32 +7534,32 @@ msgstr "Щелчок или щелчок + перетаскивани msgid "Click or click and drag to continue the path from this point." msgstr "Щелчок или щелчок + перетаскивание продолжает контур из этой точки." -#: ../src/pen-context.cpp:1261 +#: ../src/pen-context.cpp:1260 #, c-format msgid "Curve segment: angle %3.2f°, distance %s; with Ctrl to snap angle, Enter to finish the path" msgstr "Сегмент кривой: угол %3.2f°, расстояние %s; Ctrl ограничивает угол, Enter завершает контур" -#: ../src/pen-context.cpp:1262 +#: ../src/pen-context.cpp:1261 #, c-format msgid "Line segment: angle %3.2f°, distance %s; with Ctrl to snap angle, Enter to finish the path" msgstr "Сегмент линии: угол %3.2f°, расстояние %s; Ctrl ограничивает угол, Enter завершает контур" -#: ../src/pen-context.cpp:1280 +#: ../src/pen-context.cpp:1279 #, c-format msgid "Curve handle: angle %3.2f°, length %s; with Ctrl to snap angle" msgstr "Ус узла кривой: угол %3.2f°, длина %s; Ctrl ограничивает угол" -#: ../src/pen-context.cpp:1302 +#: ../src/pen-context.cpp:1301 #, fuzzy, c-format msgid "Curve handle, symmetric: angle %3.2f°, length %s; with Ctrl to snap angle, with Shift to move this handle only" msgstr "%s: угол %3.2f°, длина %s; перетаскивание с Ctrl ограничивает угол; с Shift синхронно вращает противоположный ус" -#: ../src/pen-context.cpp:1303 +#: ../src/pen-context.cpp:1302 #, fuzzy, c-format msgid "Curve handle: angle %3.2f°, length %s; with Ctrl to snap angle, with Shift to move this handle only" msgstr "%s: угол %3.2f°, длина %s; перетаскивание с Ctrl ограничивает угол; с Shift синхронно вращает противоположный ус" -#: ../src/pen-context.cpp:1350 +#: ../src/pen-context.cpp:1349 msgid "Drawing finished" msgstr "Рисование закончено" @@ -7553,7 +7572,6 @@ msgid "Toggle multiple vanishing points" msgstr "Переключение нескольких точек схода" #: ../src/preferences.cpp:106 -#, fuzzy msgid "Inkscape will run with default settings, and new settings will not be saved. " msgstr "" "Inkscape запустится с исходными настройками.\n" @@ -7588,18 +7606,16 @@ msgstr "Не удалось загрузить файл параметров %s. #. _errorDialog(Glib::ustring::compose(_("The preferences file %1 is not a regular file."), #. Glib::filename_to_utf8(_prefs_filename)), not_saved); #: ../src/preferences.cpp:168 -#, fuzzy, c-format +#, c-format msgid "The preferences file %s is not a regular file." -msgstr "" -"%s не является обычным файлом.\n" -"%s" +msgstr "Файл параметров программы %s не является обычным файлом." #. _errorDialog(Glib::ustring::compose(_("The preferences file %1 could not be read."), #. Glib::filename_to_utf8(_prefs_filename)), not_saved); #: ../src/preferences.cpp:180 -#, fuzzy, c-format +#, c-format msgid "The preferences file %s could not be read." -msgstr "Невозможно сохранить файл %s." +msgstr "Не удалось прочитать файл параметров программы %s." #. _errorDialog(Glib::ustring::compose(_("The preferences file %1 is not a valid XML document."), #. Glib::filename_to_utf8(_prefs_filename)), not_saved); @@ -7687,8 +7703,8 @@ msgstr "Ничего не удалено." #: ../src/selection-chemistry.cpp:218 #: ../src/text-context.cpp:1014 -#: ../src/widgets/toolbox.cpp:1279 -#: ../src/widgets/toolbox.cpp:5270 +#: ../src/widgets/toolbox.cpp:1287 +#: ../src/widgets/toolbox.cpp:5288 msgid "Delete" msgstr "Удаление" @@ -7795,7 +7811,7 @@ msgid "Select object(s) to remove filters from." msgstr "Выделите объект(ы) для удаления фильтров." #: ../src/selection-chemistry.cpp:986 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1367 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1376 msgid "Remove filter" msgstr "Удаление фильтра" @@ -7897,14 +7913,12 @@ msgid "action|Clone" msgstr "Склонировать" #: ../src/selection-chemistry.cpp:1897 -#, fuzzy msgid "Select clones to relink." -msgstr "Выделите клон для отсоединения." +msgstr "Выделите клоны для пересоединения" #: ../src/selection-chemistry.cpp:1904 -#, fuzzy msgid "Copy an object to clipboard to relink clones to." -msgstr "Выделите объект для клонирования." +msgstr "Скопируйте объект в буфер обмена, чтобы затем повторно присоединить к нему клоны." #: ../src/selection-chemistry.cpp:1928 msgid "No clones to relink in the selection." @@ -7916,9 +7930,8 @@ msgid "Relink clone" msgstr "Отсоединение клона" #: ../src/selection-chemistry.cpp:1945 -#, fuzzy msgid "Select clones to unlink." -msgstr "Выделите клон для отсоединения." +msgstr "Выделите клоны для отсоединения." #: ../src/selection-chemistry.cpp:1994 msgid "No clones to unlink in the selection." @@ -8050,7 +8063,7 @@ msgstr "Окружность" #: ../src/selection-describer.cpp:73 #: ../src/ui/dialog/inkscape-preferences.cpp:432 #: ../src/verbs.cpp:2486 -#: ../src/widgets/toolbox.cpp:3409 +#: ../src/widgets/toolbox.cpp:3427 msgid "Ellipse" msgstr "Эллипс" @@ -8067,7 +8080,7 @@ msgid "Path" msgstr "Контур" #: ../src/selection-describer.cpp:59 -#: ../src/widgets/toolbox.cpp:2245 +#: ../src/widgets/toolbox.cpp:2263 msgid "Polygon" msgstr "Многоугольник" @@ -8108,7 +8121,7 @@ msgstr "Спираль" #: ../src/selection-describer.cpp:79 #: ../src/ui/dialog/inkscape-preferences.cpp:436 #: ../src/verbs.cpp:2488 -#: ../src/widgets/toolbox.cpp:2252 +#: ../src/widgets/toolbox.cpp:2270 msgid "Star" msgstr "Звезда" @@ -8287,7 +8300,7 @@ msgstr "Вращение: %0.2f°; Ctrl ограничивае msgid "Move center to %s, %s" msgstr "Переместить центр в %s, %s" -#: ../src/seltrans.cpp:1448 +#: ../src/seltrans.cpp:1450 #, c-format msgid "Move by %s, %s; with Ctrl to restrict to horizontal/vertical; with Shift to disable snapping" msgstr "Перемещение на %s, %s; с Ctrl только по горизонтали/вертикали; с Shift без прилипания" @@ -8545,7 +8558,7 @@ msgstr "Упрощение контура" msgid "No paths to simplify in the selection." msgstr "В выделении нет контуров для упрощения." -#: ../src/sp-lpe-item.cpp:339 +#: ../src/sp-lpe-item.cpp:346 msgid "An exception occurred during execution of the Path Effect." msgstr "Прерывание при выполнении контурного эффекта" @@ -9093,59 +9106,59 @@ msgstr "%s. Перетащите курсор или щелкните для msgid "%s. Drag or click to increase blur; with Shift to decrease." msgstr "%s. Перетащите курсор или щелкните для втягивания, с Shift — для растягивания контуров." -#: ../src/tweak-context.cpp:1179 +#: ../src/tweak-context.cpp:1211 msgid "Nothing selected! Select objects to tweak." msgstr "Ничего не выделено! Выделите объект(ы) для коррекции." -#: ../src/tweak-context.cpp:1215 +#: ../src/tweak-context.cpp:1247 msgid "Move tweak" msgstr "Перемещение корректором" -#: ../src/tweak-context.cpp:1219 +#: ../src/tweak-context.cpp:1251 msgid "Move in/out tweak" msgstr "Притягивание/отталкивание объектов" -#: ../src/tweak-context.cpp:1223 +#: ../src/tweak-context.cpp:1255 msgid "Move jitter tweak" msgstr "Случайное перемещение корректором" -#: ../src/tweak-context.cpp:1227 +#: ../src/tweak-context.cpp:1259 msgid "Scale tweak" msgstr "Масштабирование корректором" -#: ../src/tweak-context.cpp:1231 +#: ../src/tweak-context.cpp:1263 msgid "Rotate tweak" msgstr "Вращение корректором" -#: ../src/tweak-context.cpp:1235 +#: ../src/tweak-context.cpp:1267 msgid "Duplicate/delete tweak" msgstr "Дубликация/удаление корректором" -#: ../src/tweak-context.cpp:1239 +#: ../src/tweak-context.cpp:1271 msgid "Push path tweak" msgstr "Толкание контуров корректором" -#: ../src/tweak-context.cpp:1243 +#: ../src/tweak-context.cpp:1275 msgid "Shrink/grow path tweak" msgstr "Коррекция объема контуров" -#: ../src/tweak-context.cpp:1247 +#: ../src/tweak-context.cpp:1279 msgid "Attract/repel path tweak" msgstr "Притяжение и отталкивание контуров" -#: ../src/tweak-context.cpp:1251 +#: ../src/tweak-context.cpp:1283 msgid "Roughen path tweak" msgstr "Огрубление контуров корректором" -#: ../src/tweak-context.cpp:1255 +#: ../src/tweak-context.cpp:1287 msgid "Color paint tweak" msgstr "Коррекция заливки цветом" -#: ../src/tweak-context.cpp:1259 +#: ../src/tweak-context.cpp:1291 msgid "Color jitter tweak" msgstr "Коррекция перебором цветов" -#: ../src/tweak-context.cpp:1263 +#: ../src/tweak-context.cpp:1295 msgid "Blur tweak" msgstr "Коррекция размывания" @@ -9344,12 +9357,12 @@ msgstr "В:" #: ../src/ui/dialog/align-and-distribute.cpp:516 #: ../src/ui/dialog/align-and-distribute.cpp:796 -#: ../src/widgets/toolbox.cpp:6556 +#: ../src/widgets/toolbox.cpp:6574 msgid "Remove overlaps" msgstr "Убрать перекрытия" #: ../src/ui/dialog/align-and-distribute.cpp:547 -#: ../src/widgets/toolbox.cpp:6421 +#: ../src/widgets/toolbox.cpp:6439 msgid "Arrange connector network" msgstr "Гармоничная расстановка связанных объектов" @@ -9486,7 +9499,7 @@ msgid "Move objects as little as possible so that their bounding boxes do not ov msgstr "Переместить объекты так, чтобы их рамки едва-едва не пересекались" #: ../src/ui/dialog/align-and-distribute.cpp:900 -#: ../src/widgets/toolbox.cpp:6519 +#: ../src/widgets/toolbox.cpp:6537 msgid "Nicely arrange selected connector network" msgstr "Гармонично расставить связанные коннектором объекты" @@ -9937,13 +9950,13 @@ msgstr "Включить предпросмотр" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:711 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:712 -#: ../src/ui/dialog/filedialogimpl-win32.cpp:198 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:197 msgid "All Inkscape Files" msgstr "Все файлы Inkscape" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:716 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:717 -#: ../src/ui/dialog/filedialogimpl-win32.cpp:197 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:196 msgid "All Files" msgstr "Все файлы" @@ -10029,15 +10042,15 @@ msgstr "Фон" msgid "Destination" msgstr "Назначение" -#: ../src/ui/dialog/filedialogimpl-win32.cpp:199 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:198 msgid "All Image Files" msgstr "Все файлы изображений" -#: ../src/ui/dialog/filedialogimpl-win32.cpp:428 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:427 msgid "Show Preview" msgstr "Предпросмотр" -#: ../src/ui/dialog/filedialogimpl-win32.cpp:564 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:563 msgid "No file selected" msgstr "Ни один файл не выбран" @@ -10153,273 +10166,273 @@ msgstr "_Фильтры" msgid "R_ename" msgstr "Пере_именовать" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1244 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1253 msgid "Rename filter" msgstr "Переименовать фильтр" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1280 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1289 msgid "Apply filter" msgstr "Применение фильтра" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1356 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1365 msgid "Add filter" msgstr "Добавление фильтра" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1382 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1391 msgid "Duplicate filter" msgstr "Дублирование фильтра" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1449 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1458 msgid "_Effect" msgstr "Эффе_кт" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1457 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1466 msgid "Connections" msgstr "Cоединения" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1573 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1582 msgid "Remove filter primitive" msgstr "Удаление примитива фильтра" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1945 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1954 msgid "Remove merge node" msgstr "Удалить объединяющий узел" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2061 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2070 msgid "Reorder filter primitive" msgstr "Смена порядка примитивов фильтра" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2095 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2104 msgid "Add Effect:" msgstr "Добавить:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2096 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2105 msgid "No effect selected" msgstr "Ни один эффект не выбран" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2097 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2106 msgid "No filter selected" msgstr "Ни один фильтр не выбран" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2135 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2144 msgid "Effect parameters" msgstr "Параметры эффекта" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2136 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2145 msgid "Filter General Settings" msgstr "Общие параметры фильтра" #. default x: #. default y: -#: ../src/ui/dialog/filter-effects-dialog.cpp:2192 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2201 msgid "Coordinates" msgstr "Координаты" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2192 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2201 msgid "X coordinate of the left corners of filter effects region" msgstr "Координата X левых углов области действия фильтра эффектов" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2192 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2201 msgid "Y coordinate of the upper corners of filter effects region" msgstr "Координата X верхних углов области действия фильтра эффектов" #. default width: #. default height: -#: ../src/ui/dialog/filter-effects-dialog.cpp:2193 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2202 #: ../share/extensions/dimension.inx.h:1 msgid "Dimensions" msgstr "Размеры" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2193 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2202 msgid "Width of filter effects region" msgstr "Ширина области действия фильтра эффектов" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2193 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2202 msgid "Height of filter effects region" msgstr "Высота области действия фильтра эффектов" #. # end multiple scan #. ## end mode page -#: ../src/ui/dialog/filter-effects-dialog.cpp:2196 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2205 #: ../src/ui/dialog/tracedialog.cpp:552 -#: ../src/widgets/toolbox.cpp:3768 +#: ../src/widgets/toolbox.cpp:3786 #: ../share/extensions/triangle.inx.h:9 msgid "Mode" msgstr "Режим" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2199 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2208 msgid "Indicates the type of matrix operation. The keyword 'matrix' indicates that a full 5x4 matrix of values will be provided. The other keywords represent convenience shortcuts to allow commonly used color operations to be performed without specifying a complete matrix." msgstr "Тип матричной операции. Слово «матрица» означает, что будет предоставлена полная матрица значений размером 5×4. Остальные варианты — это простой способ выполнить наиболее популярные операции, не задавая все значения матрицы вручную." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2200 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2209 msgid "Value(s)" msgstr "Значение(-я)" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2214 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2255 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2223 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2264 msgid "Operator" msgstr "Оператор" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2215 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2224 msgid "K1" msgstr "K1" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2215 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2216 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2217 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2218 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2224 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2225 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2226 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2227 msgid "If the arithmetic operation is chosen, each result pixel is computed using the formula k1*i1*i2 + k2*i1 + k3*i2 + k4 where i1 and i2 are the pixel values of the first and second inputs respectively." msgstr "Если выбран арифметический оператор, каждый получаемый пиксел вычисляется по формуле k1*i1*i2 + k2*i1 + k3*i2 + k4, где i1 и i2 — пикселы первого и второго входов соответственно." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2216 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2225 msgid "K2" msgstr "K2" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2217 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2226 msgid "K3" msgstr "K3" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2218 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2227 msgid "K4" msgstr "K4" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2221 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2230 msgid "width of the convolve matrix" msgstr "Ширина матрицы свёртки" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2221 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2230 msgid "height of the convolve matrix" msgstr "Высота матрицы свёртки" #. default x: #. default y: -#: ../src/ui/dialog/filter-effects-dialog.cpp:2222 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2231 msgid "Target" msgstr "Цель" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2222 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2231 msgid "X coordinate of the target point in the convolve matrix. The convolution is applied to pixels around this point." msgstr "Координата X конечной точки матрицы свертки. Свертка применяется к пикселам вокруг этой точки." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2222 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2231 msgid "Y coordinate of the target point in the convolve matrix. The convolution is applied to pixels around this point." msgstr "Координата Y конечной точки матрицы свертки. Свертка применяется к пикселам вокруг этой точки." #. TRANSLATORS: for info on "Kernel", see http://en.wikipedia.org/wiki/Kernel_(matrix) -#: ../src/ui/dialog/filter-effects-dialog.cpp:2224 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2233 msgid "Kernel" msgstr "Ядро" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2224 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2233 msgid "This matrix describes the convolve operation that is applied to the input image in order to calculate the pixel colors at the output. Different arrangements of values in this matrix result in various possible visual effects. An identity matrix would lead to a motion blur effect (parallel to the matrix diagonal) while a matrix filled with a constant non-zero value would lead to a common blur effect." msgstr "Эта матрица описывает операцию свертки, которая будет применена к входящему изображению для вычисления цветов пикселов на выходе. Различные комбинации значений дают различные визуальные эффекты. Тождественная матрица даст эффект размывания движением, в то время как матрица, заполненная постоянным ненулевым значением даст обычный эффект размывания." #. TODO: svg spec: The default value is the sum of all values in kernelMatrix, with the exception that if the sum is zero, then the divisor is set to 1. -#: ../src/ui/dialog/filter-effects-dialog.cpp:2227 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2236 msgid "Divisor" msgstr "Делитель" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2227 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2236 msgid "After applying the kernelMatrix to the input image to yield a number, that number is divided by divisor to yield the final destination color value. A divisor that is the sum of all the matrix values tends to have an evening effect on the overall color intensity of the result." msgstr "После применения kernelMatrix к входящему изображению для получения числа, это число делится на делитель для получения конечного значения цвета. Делитель, являющийся суммой всех значений матрицы, имеет тенденцию приглушать общую интенсивность цветов в конечной картинке." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2228 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2237 msgid "Bias" msgstr "Смещение" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2228 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2237 msgid "This value is added to each component. This is useful to define a constant value as the zero response of the filter." msgstr "Это значение добавляется к каждому компоненту. Полезно для задания константы как нулевого отклика фильтра." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2229 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2238 msgid "Edge Mode" msgstr "Режим краёв" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2229 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2238 msgid "Determines how to extend the input image as necessary with color values so that the matrix operations can be applied when the kernel is positioned at or near the edge of the input image." msgstr "Определяет, как расширить входящие изображение цветными пикселами, чтобы матричные операции могли работать с ядром, расположенным на крае изображения или близко к нему." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2230 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2239 msgid "Preserve Alpha" msgstr "Сохранять альфа-канал" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2230 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2239 msgid "If set, the alpha channel won't be altered by this filter primitive." msgstr "Если включено, альфа-канал не будет изменен этим примитивом фильтра." #. default: white -#: ../src/ui/dialog/filter-effects-dialog.cpp:2233 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2242 msgid "Diffuse Color" msgstr "Цвет диффузии" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2233 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2266 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2242 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2275 msgid "Defines the color of the light source" msgstr "Определяет цвет источника света" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2234 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2267 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2243 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2276 msgid "Surface Scale" msgstr "Коэфф. высоты поверхности" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2234 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2267 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2243 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2276 msgid "This value amplifies the heights of the bump map defined by the input alpha channel" msgstr "На это значение умножается высота карты рельефа, определенная входящим альфа-каналом" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2235 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2268 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2244 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2277 msgid "Constant" msgstr "Константа диффузии" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2235 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2268 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2244 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2277 msgid "This constant affects the Phong lighting model." msgstr "Эта константа касается модели освещения Фонга" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2236 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2270 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2245 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2279 msgid "Kernel Unit Length" msgstr "Длина единицы ядра" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2240 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2249 msgid "This defines the intensity of the displacement effect." msgstr "Определяет интенсивность эффекта смещения" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2241 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2250 msgid "X displacement" msgstr "Смещение по X" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2241 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2250 msgid "Color component that controls the displacement in the X direction" msgstr "Цветовой компонент, контролирующий смещение по оси X" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2242 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2251 msgid "Y displacement" msgstr "Смещение по Y" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2242 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2251 msgid "Color component that controls the displacement in the Y direction" msgstr "Цветовой компонент, контролирующий смещение по оси Y" #. default: black -#: ../src/ui/dialog/filter-effects-dialog.cpp:2245 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2254 msgid "Flood Color" msgstr "Цвет заливки" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2245 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2254 msgid "The whole filter region will be filled with this color." msgstr "Вся область действия фильтра будет залита этим цветом" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2249 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2258 msgid "Standard Deviation" msgstr "Стандартное отклонение" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2249 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2258 msgid "The standard deviation for the blur operation." msgstr "Стандартное отклонение при размывании, выражается в процентах" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2255 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2264 msgid "" "Erode: performs \"thinning\" of input image.\n" "Dilate: performs \"fattenning\" of input image." @@ -10427,133 +10440,133 @@ msgstr "" "Эрозия: «утоньшает» входящее изображение\n" "Дилатация: «утолщает» входящее изображение" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2259 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2268 msgid "Source of Image" msgstr "Источник изображения" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2262 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2271 msgid "Delta X" msgstr "Дельта X" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2262 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2271 msgid "This is how far the input image gets shifted to the right" msgstr "Как далеко входящее изображение смещается вправо" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2263 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2272 msgid "Delta Y" msgstr "Дельта Y" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2263 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2272 msgid "This is how far the input image gets shifted downwards" msgstr "Как далеко входящее изображение смещается вниз" #. default: white -#: ../src/ui/dialog/filter-effects-dialog.cpp:2266 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2275 msgid "Specular Color" msgstr "Цвет отражения" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2269 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2278 #: ../share/extensions/interp.inx.h:2 msgid "Exponent" msgstr "Экспонента" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2269 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2278 msgid "Exponent for specular term, larger is more \"shiny\"." msgstr "Экспонента отражения: чем больше значение, тем ярче отражение" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2278 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2287 msgid "Indicates whether the filter primitive should perform a noise or turbulence function." msgstr "Должен ли примитив выполнять функцию создания турбулентности или же шума" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2279 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2288 msgid "Base Frequency" msgstr "Основная частота" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2280 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2289 msgid "Octaves" msgstr "Числа Кейли" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2281 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2290 msgid "Seed" msgstr "Случайное значение" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2281 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2290 msgid "The starting number for the pseudo random number generator." msgstr "Начальное число для генератора псевдослучайных чисел" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2293 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2302 msgid "Add filter primitive" msgstr "Добавление примитива фильтра" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2310 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2319 msgid "The feBlend filter primitive provides 4 image blending modes: screen, multiply, darken and lighten." msgstr "Примитив feBlend дает 4 режима наложения: экран, умножение, затемнение и осветление." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2314 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2323 msgid "The feColorMatrix filter primitive applies a matrix transformation to colour of each rendered pixel. This allows for effects like turning object to grayscale, modifying colour saturation and changing colour hue." msgstr "Примитив feColorMatrix применяет матричное преобразование для раскрашивания каждого пиксела. Таким образом можно обесцвечивать, повышать насыщенность и менять тон." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2318 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2327 msgid "The feComponentTransfer filter primitive manipulates the input's color components (red, green, blue, and alpha) according to particular transfer functions, allowing operations like brightness and contrast adjustment, color balance, and thresholding." msgstr "Примитив feComponentTransfer позволяет манипулировать цветовыми компонентами входящего объекта (красный, зеленый, синий и альфа-каналы) в соответствии с определенными функциями передачи, допуская операции вроде коррекции яркости и контраста, цветового баланса и порога." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2322 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2331 msgid "The feComposite filter primitive composites two images using one of the Porter-Duff blending modes or the aritmetic mode described in SVG standard. Porter-Duff blending modes are essentially logical operations between the corresponding pixel values of the images." msgstr "Примитив feComposite совмещает два изображения, используя один из режимов наложения Портера-Даффа или арифметический оператор из стандарта SVG. Режимы наложения Портера-Даффа — по сути,логические операции между значениями соответствующих пикселов этих изображений." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2326 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2335 msgid "The feConvolveMatrix lets you specify a Convolution to be applied on the image. Common effects created using convolution matrices are blur, sharpening, embossing and edge detection. Note that while gaussian blur can be created using this filter primitive, the special gaussian blur primitive is faster and resolution-independent." msgstr "Примитив feConvolveMatrix позволяет указать свертку, применяемую к изображению. Типичные эффекты, создаваемые при помощи матрицы свертки — размывание, повышение резкости, создание рельефа и определение краев. Хотя гауссово размывание можно выполнить и этим примитивом, специализированный примитив работает быстрее и не зависит от разрешения." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2330 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2339 msgid "The feDiffuseLighting and feSpecularLighting filter primitives create \"embossed\" shadings. The input's alpha channel is used to provide depth information: higher opacity areas are raised toward the viewer and lower opacity areas recede away from the viewer." msgstr "Примитивы feDiffuseLighting и feSpecularLighting создают рельефные тени. Входящий альфа-канал используется для предоставления информации о глубине: чем выше непрозрачность, тем выше рельеф и, соответственно, тем ближе к наблюдателю верхняя точка этого рельефа." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2334 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2343 msgid "The feDisplacementMap filter primitive displaces the pixels in the first input using the second input as a displacement map, that shows from how far the pixel should come from. Classical examples are whirl and pinch effects." msgstr "Примитив feDisplacementMap смещает пикселы первого входа, используя пикселы второго в качестве карты смещения, показывающей, как далеко должны отойти пикселы. Типичные эффекты, создаваемые при помощи карты смещения — завихрение и щипок." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2338 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2347 msgid "The feFlood filter primitive fills the region with a given color and opacity. It is usually used as an input to other filters to apply color to a graphic." msgstr "Примитив feFlood заливает область заданным цветом и непрозрачностью. Обычно он используется как вход для других фильтров, применяющих цвет." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2342 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2351 msgid "The feGaussianBlur filter primitive uniformly blurs its input. It is commonly used together with feOffset to create a drop shadow effect." msgstr "Примитив feGaussianBlur равномерно размывает объекты на входе. Фильтр часто используется с feOffset для создания эффекта отбрасываемой тени." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2346 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2355 msgid "The feImage filter primitive fills the region with an external image or another part of the document." msgstr "Примитив feImage заполняет область внешним изображением или другой частью документа." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2350 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2359 msgid "The feMerge filter primitive composites several temporary images inside the filter primitive to a single image. It uses normal alpha compositing for this. This is equivalent to using several feBlend primitives in 'normal' mode or several feComposite primitives in 'over' mode." msgstr "Примитив feMerge сводит несколько временных изображений в одно, используя обычное альфа‑совмещение. Получаемый эффект эквивалентен нескольким примитивам feBlend в режиме «Обычный» или нескольким примитивам feComposite в режиме «Над» (over)." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2354 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2363 msgid "The feMorphology filter primitive provides erode and dilate effects. For single-colour objects erode makes the object thinner and dilate makes it thicker." msgstr "Примитив feMorphology позволяет применить эффект эрозии и дилатации. Объекты с плоской заливкой при эрозии становятся тоньше, а с дилатацией — толще." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2358 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2367 msgid "The feOffset filter primitive offsets the image by an user-defined amount. For example, this is useful for drop shadows, where the shadow is in a slightly different position than the actual object." msgstr "Примитив feOffset смещает изображение на заданное расстояние. Он используется, к примеру, для создания эффекта отбрасываемой тени, где тень слегка смещена относительно исходного объекта." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2362 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2371 msgid "The feDiffuseLighting and feSpecularLighting filter primitives create \"embossed\" shadings. The input's alpha channel is used to provide depth information: higher opacity areas are raised toward the viewer and lower opacity areas recede away from the viewer." msgstr "Примитивы feDiffuseLighting и feSpecularLighting создают рельефные тени. Входящий альфа-канал используется для предоставления информации о глубине: чем выше непрозрачность, тем выше рельеф и, соответственно, тем ближе к наблюдателю верхняя точка этого рельефа." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2366 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2375 msgid "The feTile filter primitive tiles a region with its input graphic" msgstr "Примитив feTile заполняет область мозаикой из входящего изображения." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2370 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2379 msgid "The feTurbulence filter primitive renders Perlin noise. This kind of noise is useful in simulating several nature phenomena like clouds, fire and smoke and in generating complex textures like marble or granite." msgstr "Примитив feTurbulence создает перлинов шум. Этот тип шума полезен для имитации различных природных явлений вроде облаков, огня и дыма, а также для создания сложных текстур наподобие мрамора или гранита." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2388 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2397 msgid "Duplicate filter primitive" msgstr "Дубликация примитива фильтра" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2441 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2450 msgid "Set filter primitive attribute" msgstr "Смена атрибута примитива фильтра" @@ -10655,7 +10668,7 @@ msgstr "С какой скоростью будет происходить пр #: ../src/ui/dialog/tracedialog.cpp:409 #: ../src/ui/dialog/tracedialog.cpp:442 #: ../src/ui/dialog/tracedialog.cpp:585 -#: ../src/widgets/toolbox.cpp:6673 +#: ../src/widgets/toolbox.cpp:6691 msgid "Threshold:" msgstr "Порог:" @@ -11124,7 +11137,7 @@ msgstr "То же, что и «Нормальный», но может лучш #: ../src/ui/dialog/inkscape-preferences.cpp:539 msgid "Dialog Transparency:" -msgstr "" +msgstr "Прозрачность диалога:" #: ../src/ui/dialog/inkscape-preferences.cpp:541 msgid "Opacity when focused:" @@ -11136,7 +11149,7 @@ msgstr "Непрозрачность вне фокуса:" #: ../src/ui/dialog/inkscape-preferences.cpp:545 msgid "Time of opacity change animation:" -msgstr "" +msgstr "Длительность анимации:" #: ../src/ui/dialog/inkscape-preferences.cpp:548 msgid "Miscellaneous:" @@ -11362,9 +11375,8 @@ msgid "Lowest quality (considerable artifacts), but display is fastest" msgstr "Очень низкое качество с достаточно заметными артефактами, но очень быстрая отрисовка" #: ../src/ui/dialog/inkscape-preferences.cpp:671 -#, fuzzy msgid "Filter effects quality for display:" -msgstr "Качество гауссова размывания при отображении:" +msgstr "Качество фильтров эффектов отображении:" #. show infobox #: ../src/ui/dialog/inkscape-preferences.cpp:684 @@ -12990,7 +13002,7 @@ msgid "" "\n" "If you close without saving, your changes will be discarded." msgstr "" -"Сохранить изменения в документе \"%s\"перед закрытием?\n" +"Сохранить изменения в документе \"%s\" перед закрытием?\n" "\n" "Если вы закроете документ, не сохранив его, все изменения будут потеряны." @@ -13034,11 +13046,11 @@ msgstr "Проприетарная" msgid "Other" msgstr "Другая" -#: ../src/ui/widget/object-composite-settings.cpp:158 +#: ../src/ui/widget/object-composite-settings.cpp:169 msgid "Change blur" msgstr "Смена размывания" -#: ../src/ui/widget/object-composite-settings.cpp:198 +#: ../src/ui/widget/object-composite-settings.cpp:209 #: ../src/ui/widget/selected-style.cpp:851 #: ../src/ui/widget/selected-style.cpp:1145 msgid "Change opacity" @@ -14595,7 +14607,7 @@ msgid "Apply clipping path to selection (using the topmost object as clipping pa msgstr "Применить самый верхний объект выделения к нему как обтравочный контур" #: ../src/verbs.cpp:2471 -#: ../src/widgets/toolbox.cpp:1411 +#: ../src/widgets/toolbox.cpp:1429 msgid "Edit clipping path" msgstr "Изменить обтравочный контур" @@ -15428,7 +15440,7 @@ msgstr "Кегль шрифта:" #. * some representative characters that users of your locale will be #. * interested in. #: ../src/widgets/font-selector.cpp:639 -#: ../src/widgets/toolbox.cpp:6069 +#: ../src/widgets/toolbox.cpp:6087 msgid "AaBbCcIiPpQq12369$€¢?.;/()" msgstr "АаБбВвГгЁёФфЩщЯя$€¢?.;/()" @@ -15479,14 +15491,14 @@ msgid "Edit the stops of the gradient" msgstr "Изменить опорные точки в градиенте" #: ../src/widgets/gradient-toolbar.cpp:526 -#: ../src/widgets/toolbox.cpp:2149 -#: ../src/widgets/toolbox.cpp:2227 -#: ../src/widgets/toolbox.cpp:2558 -#: ../src/widgets/toolbox.cpp:2596 -#: ../src/widgets/toolbox.cpp:3211 -#: ../src/widgets/toolbox.cpp:3235 -#: ../src/widgets/toolbox.cpp:4648 -#: ../src/widgets/toolbox.cpp:4677 +#: ../src/widgets/toolbox.cpp:2167 +#: ../src/widgets/toolbox.cpp:2245 +#: ../src/widgets/toolbox.cpp:2576 +#: ../src/widgets/toolbox.cpp:2614 +#: ../src/widgets/toolbox.cpp:3229 +#: ../src/widgets/toolbox.cpp:3253 +#: ../src/widgets/toolbox.cpp:4666 +#: ../src/widgets/toolbox.cpp:4695 msgid "New:" msgstr "Новый:" @@ -15514,13 +15526,13 @@ msgstr "Создать градиент в обводке" #. FIXME: implement averaging of all parameters for multiple selected #. gtk_label_set_markup(GTK_LABEL(l), _("Average:")); #: ../src/widgets/gradient-toolbar.cpp:609 -#: ../src/widgets/toolbox.cpp:2151 -#: ../src/widgets/toolbox.cpp:2566 +#: ../src/widgets/toolbox.cpp:2169 #: ../src/widgets/toolbox.cpp:2584 -#: ../src/widgets/toolbox.cpp:3213 -#: ../src/widgets/toolbox.cpp:3224 -#: ../src/widgets/toolbox.cpp:4651 -#: ../src/widgets/toolbox.cpp:4662 +#: ../src/widgets/toolbox.cpp:2602 +#: ../src/widgets/toolbox.cpp:3231 +#: ../src/widgets/toolbox.cpp:3242 +#: ../src/widgets/toolbox.cpp:4669 +#: ../src/widgets/toolbox.cpp:4680 msgid "Change:" msgstr "Менять:" @@ -15963,1360 +15975,1368 @@ msgstr "" msgid "Style of Paint Bucket fill objects" msgstr "Стиль заливки новых объектов, созданных инструментом заливки" -#: ../src/widgets/toolbox.cpp:1264 +#: ../src/widgets/toolbox.cpp:1272 msgid "Insert node" msgstr "Вставка узла" -#: ../src/widgets/toolbox.cpp:1265 +#: ../src/widgets/toolbox.cpp:1273 msgid "Insert new nodes into selected segments" msgstr "Вставить новые узлы в выделенные сегменты" -#: ../src/widgets/toolbox.cpp:1268 +#: ../src/widgets/toolbox.cpp:1276 msgid "Insert" msgstr "Вставить" -#: ../src/widgets/toolbox.cpp:1276 +#: ../src/widgets/toolbox.cpp:1284 msgid "Delete selected nodes" msgstr "Удалить выделенные узлы" -#: ../src/widgets/toolbox.cpp:1286 +#: ../src/widgets/toolbox.cpp:1294 msgid "Join endnodes" msgstr "Соединение оконечных узлов" -#: ../src/widgets/toolbox.cpp:1287 +#: ../src/widgets/toolbox.cpp:1295 msgid "Join selected endnodes" msgstr "Соединить контуры по выделенным оконечным узлам" -#: ../src/widgets/toolbox.cpp:1290 +#: ../src/widgets/toolbox.cpp:1298 msgid "Join" msgstr "Соединение" -#: ../src/widgets/toolbox.cpp:1297 +#: ../src/widgets/toolbox.cpp:1305 #, fuzzy msgid "Break nodes" msgstr "Перемещение узлов" -#: ../src/widgets/toolbox.cpp:1298 +#: ../src/widgets/toolbox.cpp:1306 msgid "Break path at selected nodes" msgstr "Разорвать контур в выделенном узле" -#: ../src/widgets/toolbox.cpp:1308 +#: ../src/widgets/toolbox.cpp:1316 #, fuzzy msgid "Join with segment" msgstr "Соединение узлов сегментом" -#: ../src/widgets/toolbox.cpp:1309 +#: ../src/widgets/toolbox.cpp:1317 msgid "Join selected endnodes with a new segment" msgstr "Соединить контуры по выделенным оконечным узлам новым сегментом" -#: ../src/widgets/toolbox.cpp:1319 +#: ../src/widgets/toolbox.cpp:1327 msgid "Delete segment between two non-endpoint nodes" msgstr "Удалить сегмент между двумя неоконечными узлами" -#: ../src/widgets/toolbox.cpp:1328 +#: ../src/widgets/toolbox.cpp:1336 msgid "Node Cusp" msgstr "Острые узлы" -#: ../src/widgets/toolbox.cpp:1329 +#: ../src/widgets/toolbox.cpp:1337 msgid "Make selected nodes corner" msgstr "Сделать выделенные узлы острыми" -#: ../src/widgets/toolbox.cpp:1338 +#: ../src/widgets/toolbox.cpp:1346 msgid "Node Smooth" msgstr "Гладкие узлы" -#: ../src/widgets/toolbox.cpp:1339 +#: ../src/widgets/toolbox.cpp:1347 msgid "Make selected nodes smooth" msgstr "Сделать выделенные узлы сглаженными" -#: ../src/widgets/toolbox.cpp:1348 +#: ../src/widgets/toolbox.cpp:1356 msgid "Node Symmetric" msgstr "Симметричные узлы" -#: ../src/widgets/toolbox.cpp:1349 +#: ../src/widgets/toolbox.cpp:1357 msgid "Make selected nodes symmetric" msgstr "Сделать выделенные узлы симметричными" -#: ../src/widgets/toolbox.cpp:1358 +#: ../src/widgets/toolbox.cpp:1366 +msgid "Node Auto" +msgstr "Автоматический узел" + +#: ../src/widgets/toolbox.cpp:1367 +msgid "Make selected nodes auto-smooth" +msgstr "Сделать выделенные узлы автоматически сглаженными" + +#: ../src/widgets/toolbox.cpp:1376 msgid "Node Line" msgstr "Линия по узлам" -#: ../src/widgets/toolbox.cpp:1359 +#: ../src/widgets/toolbox.cpp:1377 msgid "Make selected segments lines" msgstr "Сделать выделенные сегменты прямыми" -#: ../src/widgets/toolbox.cpp:1368 +#: ../src/widgets/toolbox.cpp:1386 msgid "Node Curve" msgstr "Кривая по узлам" -#: ../src/widgets/toolbox.cpp:1369 +#: ../src/widgets/toolbox.cpp:1387 msgid "Make selected segments curves" msgstr "Сделать выделенные сегменты кривыми" -#: ../src/widgets/toolbox.cpp:1378 +#: ../src/widgets/toolbox.cpp:1396 msgid "Show Handles" msgstr "Показывать рычаги" -#: ../src/widgets/toolbox.cpp:1379 +#: ../src/widgets/toolbox.cpp:1397 msgid "Show the Bezier handles of selected nodes" msgstr "Показывать рычаги выбранных узлов" -#: ../src/widgets/toolbox.cpp:1389 +#: ../src/widgets/toolbox.cpp:1407 msgid "Show Outline" msgstr "Показать контур" -#: ../src/widgets/toolbox.cpp:1390 +#: ../src/widgets/toolbox.cpp:1408 msgid "Show the outline of the path" msgstr "Показать очертания контура" -#: ../src/widgets/toolbox.cpp:1400 +#: ../src/widgets/toolbox.cpp:1418 msgid "Next path effect parameter" msgstr "Следующий параметр контурного эффекта" -#: ../src/widgets/toolbox.cpp:1401 +#: ../src/widgets/toolbox.cpp:1419 msgid "Show next path effect parameter for editing" msgstr "Показать следующий редактируемый параметр динамического эффекта" -#: ../src/widgets/toolbox.cpp:1412 +#: ../src/widgets/toolbox.cpp:1430 msgid "Edit the clipping path of the object" msgstr "Изменить обтравочный контур объекта" -#: ../src/widgets/toolbox.cpp:1422 +#: ../src/widgets/toolbox.cpp:1440 msgid "Edit mask path" msgstr "Изменить контур маски" -#: ../src/widgets/toolbox.cpp:1423 +#: ../src/widgets/toolbox.cpp:1441 msgid "Edit the mask of the object" msgstr "Изменить маску объекта" -#: ../src/widgets/toolbox.cpp:1437 +#: ../src/widgets/toolbox.cpp:1455 msgid "X coordinate:" msgstr "Координата по X:" -#: ../src/widgets/toolbox.cpp:1437 +#: ../src/widgets/toolbox.cpp:1455 msgid "X coordinate of selected node(s)" msgstr "Координата X выбранных узлов" -#: ../src/widgets/toolbox.cpp:1455 +#: ../src/widgets/toolbox.cpp:1473 msgid "Y coordinate:" msgstr "Координата по Y:" -#: ../src/widgets/toolbox.cpp:1455 +#: ../src/widgets/toolbox.cpp:1473 msgid "Y coordinate of selected node(s)" msgstr "Координата Y выбранных узлов" -#: ../src/widgets/toolbox.cpp:1898 +#: ../src/widgets/toolbox.cpp:1916 msgid "Star: Change number of corners" msgstr "Смена количества лучей" -#: ../src/widgets/toolbox.cpp:1941 +#: ../src/widgets/toolbox.cpp:1959 msgid "Star: Change spoke ratio" msgstr "Смена отношения радиусов" -#: ../src/widgets/toolbox.cpp:1984 +#: ../src/widgets/toolbox.cpp:2002 msgid "Make polygon" msgstr "Звезда → многоугольник" -#: ../src/widgets/toolbox.cpp:1984 +#: ../src/widgets/toolbox.cpp:2002 msgid "Make star" msgstr "Многоугольник → звезда" -#: ../src/widgets/toolbox.cpp:2020 +#: ../src/widgets/toolbox.cpp:2038 msgid "Star: Change rounding" msgstr "Смена закругления" -#: ../src/widgets/toolbox.cpp:2055 +#: ../src/widgets/toolbox.cpp:2073 msgid "Star: Change randomization" msgstr "Смена случайности искажения" -#: ../src/widgets/toolbox.cpp:2246 +#: ../src/widgets/toolbox.cpp:2264 msgid "Regular polygon (with one handle) instead of a star" msgstr "Правильный многоугольник, а не звезда" -#: ../src/widgets/toolbox.cpp:2253 +#: ../src/widgets/toolbox.cpp:2271 msgid "Star instead of a regular polygon (with one handle)" msgstr "Звезда вместо обычного многоугольника (с одним рычагом)" -#: ../src/widgets/toolbox.cpp:2274 +#: ../src/widgets/toolbox.cpp:2292 msgid "triangle/tri-star" msgstr "треугольник/звезда с 3 лучами" -#: ../src/widgets/toolbox.cpp:2274 +#: ../src/widgets/toolbox.cpp:2292 msgid "square/quad-star" msgstr "квадрат/звезда с 4 лучами" -#: ../src/widgets/toolbox.cpp:2274 +#: ../src/widgets/toolbox.cpp:2292 msgid "pentagon/five-pointed star" msgstr "пятиугольник/звезда с 5 лучами" -#: ../src/widgets/toolbox.cpp:2274 +#: ../src/widgets/toolbox.cpp:2292 msgid "hexagon/six-pointed star" msgstr "шестиугольник/звезда с 6 лучами" -#: ../src/widgets/toolbox.cpp:2277 +#: ../src/widgets/toolbox.cpp:2295 msgid "Corners" msgstr "Углы" -#: ../src/widgets/toolbox.cpp:2277 +#: ../src/widgets/toolbox.cpp:2295 msgid "Corners:" msgstr "Углы:" -#: ../src/widgets/toolbox.cpp:2277 +#: ../src/widgets/toolbox.cpp:2295 msgid "Number of corners of a polygon or star" msgstr "Количество вершин многоугольника или звезды" -#: ../src/widgets/toolbox.cpp:2290 +#: ../src/widgets/toolbox.cpp:2308 msgid "thin-ray star" msgstr "звезда с тонкими лучами" -#: ../src/widgets/toolbox.cpp:2290 +#: ../src/widgets/toolbox.cpp:2308 msgid "pentagram" msgstr "пентаграмма" -#: ../src/widgets/toolbox.cpp:2290 +#: ../src/widgets/toolbox.cpp:2308 msgid "hexagram" msgstr "гексаграмма" -#: ../src/widgets/toolbox.cpp:2290 +#: ../src/widgets/toolbox.cpp:2308 msgid "heptagram" msgstr "гептаграмма" -#: ../src/widgets/toolbox.cpp:2290 +#: ../src/widgets/toolbox.cpp:2308 msgid "octagram" msgstr "октограмма" -#: ../src/widgets/toolbox.cpp:2290 +#: ../src/widgets/toolbox.cpp:2308 msgid "regular polygon" msgstr "обычный многоугольник" -#: ../src/widgets/toolbox.cpp:2293 +#: ../src/widgets/toolbox.cpp:2311 msgid "Spoke ratio" msgstr "Отношение радиусов" -#: ../src/widgets/toolbox.cpp:2293 +#: ../src/widgets/toolbox.cpp:2311 msgid "Spoke ratio:" msgstr "Отношение радиусов:" #. TRANSLATORS: Tip radius of a star is the distance from the center to the farthest handle. #. Base radius is the same for the closest handle. -#: ../src/widgets/toolbox.cpp:2296 +#: ../src/widgets/toolbox.cpp:2314 msgid "Base radius to tip radius ratio" msgstr "Отношение радиусов основания и вершины луча" -#: ../src/widgets/toolbox.cpp:2314 +#: ../src/widgets/toolbox.cpp:2332 msgid "stretched" msgstr "растянуто" -#: ../src/widgets/toolbox.cpp:2314 +#: ../src/widgets/toolbox.cpp:2332 msgid "twisted" msgstr "извилисто" -#: ../src/widgets/toolbox.cpp:2314 +#: ../src/widgets/toolbox.cpp:2332 msgid "slightly pinched" msgstr "слегка прищемлено" -#: ../src/widgets/toolbox.cpp:2314 +#: ../src/widgets/toolbox.cpp:2332 msgid "NOT rounded" msgstr "БЕЗ закругления" -#: ../src/widgets/toolbox.cpp:2314 +#: ../src/widgets/toolbox.cpp:2332 msgid "slightly rounded" msgstr "небольшое закругление" -#: ../src/widgets/toolbox.cpp:2314 +#: ../src/widgets/toolbox.cpp:2332 msgid "visibly rounded" msgstr "заметное закругление" -#: ../src/widgets/toolbox.cpp:2314 +#: ../src/widgets/toolbox.cpp:2332 msgid "well rounded" msgstr "порядочное закругление" -#: ../src/widgets/toolbox.cpp:2314 +#: ../src/widgets/toolbox.cpp:2332 msgid "amply rounded" msgstr "изрядное закругление" -#: ../src/widgets/toolbox.cpp:2314 -#: ../src/widgets/toolbox.cpp:2329 +#: ../src/widgets/toolbox.cpp:2332 +#: ../src/widgets/toolbox.cpp:2347 msgid "blown up" msgstr "безумное" -#: ../src/widgets/toolbox.cpp:2317 +#: ../src/widgets/toolbox.cpp:2335 msgid "Rounded" msgstr "Закругление" -#: ../src/widgets/toolbox.cpp:2317 +#: ../src/widgets/toolbox.cpp:2335 msgid "Rounded:" msgstr "Закругление:" -#: ../src/widgets/toolbox.cpp:2317 +#: ../src/widgets/toolbox.cpp:2335 msgid "How much rounded are the corners (0 for sharp)" msgstr "Насколько сглажены углы (0 — острые)" -#: ../src/widgets/toolbox.cpp:2329 +#: ../src/widgets/toolbox.cpp:2347 msgid "NOT randomized" msgstr "без случайности" -#: ../src/widgets/toolbox.cpp:2329 +#: ../src/widgets/toolbox.cpp:2347 msgid "slightly irregular" msgstr "едва беспорядочно" -#: ../src/widgets/toolbox.cpp:2329 +#: ../src/widgets/toolbox.cpp:2347 msgid "visibly randomized" msgstr "заметная случайность" -#: ../src/widgets/toolbox.cpp:2329 +#: ../src/widgets/toolbox.cpp:2347 msgid "strongly randomized" msgstr "изрядная случайность" -#: ../src/widgets/toolbox.cpp:2332 +#: ../src/widgets/toolbox.cpp:2350 msgid "Randomized" msgstr "Случайность" -#: ../src/widgets/toolbox.cpp:2332 +#: ../src/widgets/toolbox.cpp:2350 msgid "Randomized:" msgstr "Искажение:" -#: ../src/widgets/toolbox.cpp:2332 +#: ../src/widgets/toolbox.cpp:2350 msgid "Scatter randomly the corners and angles" msgstr "Случайным образом смещать вершины и вращать углы" -#: ../src/widgets/toolbox.cpp:2347 -#: ../src/widgets/toolbox.cpp:3286 -#: ../src/widgets/toolbox.cpp:3546 -#: ../src/widgets/toolbox.cpp:6737 +#: ../src/widgets/toolbox.cpp:2365 +#: ../src/widgets/toolbox.cpp:3304 +#: ../src/widgets/toolbox.cpp:3564 +#: ../src/widgets/toolbox.cpp:6755 msgid "Defaults" msgstr "По умолчанию" -#: ../src/widgets/toolbox.cpp:2348 -#: ../src/widgets/toolbox.cpp:3287 +#: ../src/widgets/toolbox.cpp:2366 +#: ../src/widgets/toolbox.cpp:3305 msgid "Reset shape parameters to defaults (use Inkscape Preferences > Tools to change defaults)" msgstr "Сбросить параметры фигуры к значениям по умолчанию (параметры по умолчанию можно изменить в настройках Inkscape)" -#: ../src/widgets/toolbox.cpp:2421 +#: ../src/widgets/toolbox.cpp:2439 msgid "Change rectangle" msgstr "Удаление закругления" -#: ../src/widgets/toolbox.cpp:2614 +#: ../src/widgets/toolbox.cpp:2632 msgid "W:" msgstr "Ш:" -#: ../src/widgets/toolbox.cpp:2614 +#: ../src/widgets/toolbox.cpp:2632 msgid "Width of rectangle" msgstr "Ширина прямоугольника" -#: ../src/widgets/toolbox.cpp:2631 +#: ../src/widgets/toolbox.cpp:2649 msgid "H:" msgstr "Г:" -#: ../src/widgets/toolbox.cpp:2631 +#: ../src/widgets/toolbox.cpp:2649 msgid "Height of rectangle" msgstr "Высота прямоугольника" -#: ../src/widgets/toolbox.cpp:2645 -#: ../src/widgets/toolbox.cpp:2660 +#: ../src/widgets/toolbox.cpp:2663 +#: ../src/widgets/toolbox.cpp:2678 msgid "not rounded" msgstr "без закругления" -#: ../src/widgets/toolbox.cpp:2648 +#: ../src/widgets/toolbox.cpp:2666 msgid "Horizontal radius" msgstr "Горизонтальный радиус" -#: ../src/widgets/toolbox.cpp:2648 +#: ../src/widgets/toolbox.cpp:2666 msgid "Rx:" msgstr "Гор. радиус:" -#: ../src/widgets/toolbox.cpp:2648 +#: ../src/widgets/toolbox.cpp:2666 msgid "Horizontal radius of rounded corners" msgstr "Горизонтальный радиус закругленных углов" -#: ../src/widgets/toolbox.cpp:2663 +#: ../src/widgets/toolbox.cpp:2681 msgid "Vertical radius" msgstr "Вертикальный радиус" -#: ../src/widgets/toolbox.cpp:2663 +#: ../src/widgets/toolbox.cpp:2681 msgid "Ry:" msgstr "Верт. радиус:" -#: ../src/widgets/toolbox.cpp:2663 +#: ../src/widgets/toolbox.cpp:2681 msgid "Vertical radius of rounded corners" msgstr "Вертикальный радиус закругленных углов" -#: ../src/widgets/toolbox.cpp:2682 +#: ../src/widgets/toolbox.cpp:2700 msgid "Not rounded" msgstr "Не закруглён" -#: ../src/widgets/toolbox.cpp:2683 +#: ../src/widgets/toolbox.cpp:2701 msgid "Make corners sharp" msgstr "Убрать закругление углов" #. TODO: use the correct axis here, too -#: ../src/widgets/toolbox.cpp:2871 +#: ../src/widgets/toolbox.cpp:2889 msgid "3D Box: Change perspective (angle of infinite axis)" msgstr "Паралеллепипед: смена перспективы" -#: ../src/widgets/toolbox.cpp:2941 +#: ../src/widgets/toolbox.cpp:2959 msgid "Angle in X direction" msgstr "Угол в направлении X" #. Translators: PL is short for 'perspective line' -#: ../src/widgets/toolbox.cpp:2943 +#: ../src/widgets/toolbox.cpp:2961 msgid "Angle of PLs in X direction" msgstr "Угол ПЛ в направлении X" #. Translators: VP is short for 'vanishing point' -#: ../src/widgets/toolbox.cpp:2965 +#: ../src/widgets/toolbox.cpp:2983 msgid "State of VP in X direction" msgstr "Состояние точек схода в направлении X" -#: ../src/widgets/toolbox.cpp:2966 +#: ../src/widgets/toolbox.cpp:2984 msgid "Toggle VP in X direction between 'finite' and 'infinite' (=parallel)" msgstr "Переключить точку схода в направлении X между «конечной» и «бесконечной» (=параллельной)" -#: ../src/widgets/toolbox.cpp:2981 +#: ../src/widgets/toolbox.cpp:2999 msgid "Angle in Y direction" msgstr "Угол в направлении Y" -#: ../src/widgets/toolbox.cpp:2981 +#: ../src/widgets/toolbox.cpp:2999 msgid "Angle Y:" msgstr "Угол Y:" #. Translators: PL is short for 'perspective line' -#: ../src/widgets/toolbox.cpp:2983 +#: ../src/widgets/toolbox.cpp:3001 msgid "Angle of PLs in Y direction" msgstr "Угол ПЛ в направлении Y" #. Translators: VP is short for 'vanishing point' -#: ../src/widgets/toolbox.cpp:3004 +#: ../src/widgets/toolbox.cpp:3022 msgid "State of VP in Y direction" msgstr "Состояние точек схода в направлении Y" -#: ../src/widgets/toolbox.cpp:3005 +#: ../src/widgets/toolbox.cpp:3023 msgid "Toggle VP in Y direction between 'finite' and 'infinite' (=parallel)" msgstr "Переключить точку схода в направлении Y между «конечной» и «бесконечной» (=параллельной)" -#: ../src/widgets/toolbox.cpp:3020 +#: ../src/widgets/toolbox.cpp:3038 msgid "Angle in Z direction" msgstr "Угол в направлении Z" #. Translators: PL is short for 'perspective line' -#: ../src/widgets/toolbox.cpp:3022 +#: ../src/widgets/toolbox.cpp:3040 msgid "Angle of PLs in Z direction" msgstr "Угол ПЛ в направлении Z" #. Translators: VP is short for 'vanishing point' -#: ../src/widgets/toolbox.cpp:3043 +#: ../src/widgets/toolbox.cpp:3061 msgid "State of VP in Z direction" msgstr "Состояние точек схода в направлении Z" -#: ../src/widgets/toolbox.cpp:3044 +#: ../src/widgets/toolbox.cpp:3062 msgid "Toggle VP in Z direction between 'finite' and 'infinite' (=parallel)" msgstr "Переключить точку схода в направлении Z между «конечной» и «бесконечной» (=параллельной)" -#: ../src/widgets/toolbox.cpp:3102 +#: ../src/widgets/toolbox.cpp:3120 msgid "Change spiral" msgstr "Сброс изменений спирали" -#: ../src/widgets/toolbox.cpp:3243 +#: ../src/widgets/toolbox.cpp:3261 msgid "just a curve" msgstr "просто кривая" -#: ../src/widgets/toolbox.cpp:3243 +#: ../src/widgets/toolbox.cpp:3261 msgid "one full revolution" msgstr "один полный оборот" -#: ../src/widgets/toolbox.cpp:3246 +#: ../src/widgets/toolbox.cpp:3264 msgid "Number of turns" msgstr "Количество поворотов" -#: ../src/widgets/toolbox.cpp:3246 +#: ../src/widgets/toolbox.cpp:3264 msgid "Turns:" msgstr "Витков:" -#: ../src/widgets/toolbox.cpp:3246 +#: ../src/widgets/toolbox.cpp:3264 msgid "Number of revolutions" msgstr "Количество витков" -#: ../src/widgets/toolbox.cpp:3257 +#: ../src/widgets/toolbox.cpp:3275 msgid "circle" msgstr "окружность" -#: ../src/widgets/toolbox.cpp:3257 +#: ../src/widgets/toolbox.cpp:3275 msgid "edge is much denser" msgstr "край намного плотнее" -#: ../src/widgets/toolbox.cpp:3257 +#: ../src/widgets/toolbox.cpp:3275 msgid "edge is denser" msgstr "центр плотнее" -#: ../src/widgets/toolbox.cpp:3257 +#: ../src/widgets/toolbox.cpp:3275 msgid "even" msgstr "ровная спираль" -#: ../src/widgets/toolbox.cpp:3257 +#: ../src/widgets/toolbox.cpp:3275 msgid "center is denser" msgstr "центр плотнее" -#: ../src/widgets/toolbox.cpp:3257 +#: ../src/widgets/toolbox.cpp:3275 msgid "center is much denser" msgstr "центр намного плотнее" -#: ../src/widgets/toolbox.cpp:3260 +#: ../src/widgets/toolbox.cpp:3278 msgid "Divergence" msgstr "Отклонение" -#: ../src/widgets/toolbox.cpp:3260 +#: ../src/widgets/toolbox.cpp:3278 msgid "Divergence:" msgstr "Нелинейность:" -#: ../src/widgets/toolbox.cpp:3260 +#: ../src/widgets/toolbox.cpp:3278 msgid "How much denser/sparser are outer revolutions; 1 = uniform" msgstr "Насколько постепенно увеличивать или уменьшать расстояния между витками; 1 = равномерно" -#: ../src/widgets/toolbox.cpp:3271 +#: ../src/widgets/toolbox.cpp:3289 msgid "starts from center" msgstr "начинается из центра" -#: ../src/widgets/toolbox.cpp:3271 +#: ../src/widgets/toolbox.cpp:3289 msgid "starts mid-way" msgstr "начинается с середины" -#: ../src/widgets/toolbox.cpp:3271 +#: ../src/widgets/toolbox.cpp:3289 msgid "starts near edge" msgstr "начинается с края" -#: ../src/widgets/toolbox.cpp:3274 +#: ../src/widgets/toolbox.cpp:3292 msgid "Inner radius" msgstr "Внутренний радиус" -#: ../src/widgets/toolbox.cpp:3274 +#: ../src/widgets/toolbox.cpp:3292 msgid "Inner radius:" msgstr "Внутренний радиус:" -#: ../src/widgets/toolbox.cpp:3274 +#: ../src/widgets/toolbox.cpp:3292 msgid "Radius of the innermost revolution (relative to the spiral size)" msgstr "Радиус первого изнутри витка (относительно размера спирали)" -#: ../src/widgets/toolbox.cpp:3347 +#: ../src/widgets/toolbox.cpp:3365 msgid "Bezier" msgstr "Кривые Безье" -#: ../src/widgets/toolbox.cpp:3348 +#: ../src/widgets/toolbox.cpp:3366 msgid "Create regular Bezier path" msgstr "Рисовать кривую Безье" -#: ../src/widgets/toolbox.cpp:3354 +#: ../src/widgets/toolbox.cpp:3372 msgid "Spiro" msgstr "Кривые Спиро" -#: ../src/widgets/toolbox.cpp:3355 +#: ../src/widgets/toolbox.cpp:3373 msgid "Create Spiro path" msgstr "Рисовать кривую Спиро" -#: ../src/widgets/toolbox.cpp:3362 +#: ../src/widgets/toolbox.cpp:3380 msgid "Zigzag" msgstr "Зигзаги" -#: ../src/widgets/toolbox.cpp:3363 +#: ../src/widgets/toolbox.cpp:3381 msgid "Create a sequence of straight line segments" msgstr "Рисовать последовательность прямых отрезков" -#: ../src/widgets/toolbox.cpp:3369 +#: ../src/widgets/toolbox.cpp:3387 msgid "Paraxial" msgstr "Параксиальный режим" -#: ../src/widgets/toolbox.cpp:3370 +#: ../src/widgets/toolbox.cpp:3388 msgid "Create a sequence of paraxial line segments" msgstr "Рисовать последовательность прямых отрезков" -#: ../src/widgets/toolbox.cpp:3378 -#: ../src/widgets/toolbox.cpp:3769 +#: ../src/widgets/toolbox.cpp:3396 +#: ../src/widgets/toolbox.cpp:3787 #: ../share/extensions/extrude.inx.h:3 msgid "Mode:" msgstr "Режим:" -#: ../src/widgets/toolbox.cpp:3407 +#: ../src/widgets/toolbox.cpp:3425 msgid "Triangle in" msgstr "Декрещендо" -#: ../src/widgets/toolbox.cpp:3408 +#: ../src/widgets/toolbox.cpp:3426 msgid "Triangle out" msgstr "Крещендо" -#: ../src/widgets/toolbox.cpp:3410 +#: ../src/widgets/toolbox.cpp:3428 msgid "From clipboard" msgstr "Из буфера обмена" -#: ../src/widgets/toolbox.cpp:3435 -#: ../src/widgets/toolbox.cpp:3436 +#: ../src/widgets/toolbox.cpp:3453 +#: ../src/widgets/toolbox.cpp:3454 msgid "Shape:" msgstr "Форма:" -#: ../src/widgets/toolbox.cpp:3520 +#: ../src/widgets/toolbox.cpp:3538 msgid "(many nodes, rough)" msgstr "(много узлов, грубые линии)" -#: ../src/widgets/toolbox.cpp:3520 -#: ../src/widgets/toolbox.cpp:3640 -#: ../src/widgets/toolbox.cpp:3657 -#: ../src/widgets/toolbox.cpp:3860 -#: ../src/widgets/toolbox.cpp:4230 -#: ../src/widgets/toolbox.cpp:4263 -#: ../src/widgets/toolbox.cpp:5249 +#: ../src/widgets/toolbox.cpp:3538 +#: ../src/widgets/toolbox.cpp:3658 +#: ../src/widgets/toolbox.cpp:3675 +#: ../src/widgets/toolbox.cpp:3878 +#: ../src/widgets/toolbox.cpp:4248 +#: ../src/widgets/toolbox.cpp:4281 +#: ../src/widgets/toolbox.cpp:5267 msgid "(default)" msgstr "(по умолчанию)" -#: ../src/widgets/toolbox.cpp:3520 +#: ../src/widgets/toolbox.cpp:3538 msgid "(few nodes, smooth)" msgstr "(мало узлов, плавные линии)" -#: ../src/widgets/toolbox.cpp:3523 +#: ../src/widgets/toolbox.cpp:3541 msgid "Smoothing:" msgstr "Сглаживание:" -#: ../src/widgets/toolbox.cpp:3523 +#: ../src/widgets/toolbox.cpp:3541 msgid "Smoothing: " msgstr "Сглаживание:" -#: ../src/widgets/toolbox.cpp:3524 +#: ../src/widgets/toolbox.cpp:3542 msgid "How much smoothing (simplifying) is applied to the line" msgstr "Как сильно сглаживается (упрощается) рисуемая от руки линия" -#: ../src/widgets/toolbox.cpp:3547 +#: ../src/widgets/toolbox.cpp:3565 msgid "Reset pencil parameters to defaults (use Inkscape Preferences > Tools to change defaults)" msgstr "Сбросить параметры карандаша к значениям по умолчанию (параметры по умолчанию можно изменить в диалоге настройки Inkscape)" #. Width -#: ../src/widgets/toolbox.cpp:3640 +#: ../src/widgets/toolbox.cpp:3658 msgid "(pinch tweak)" msgstr "(узкая кисть)" -#: ../src/widgets/toolbox.cpp:3640 +#: ../src/widgets/toolbox.cpp:3658 msgid "(broad tweak)" msgstr "(широкая кисть)" -#: ../src/widgets/toolbox.cpp:3643 +#: ../src/widgets/toolbox.cpp:3661 msgid "The width of the tweak area (relative to the visible canvas area)" msgstr "Ширина области коррекции (относительно видимой области холста)" #. Force -#: ../src/widgets/toolbox.cpp:3657 +#: ../src/widgets/toolbox.cpp:3675 msgid "(minimum force)" msgstr "(минимальная)" -#: ../src/widgets/toolbox.cpp:3657 +#: ../src/widgets/toolbox.cpp:3675 msgid "(maximum force)" msgstr "(максимальная)" -#: ../src/widgets/toolbox.cpp:3660 +#: ../src/widgets/toolbox.cpp:3678 msgid "Force" msgstr "Сила" -#: ../src/widgets/toolbox.cpp:3660 +#: ../src/widgets/toolbox.cpp:3678 msgid "Force:" msgstr "Сила:" -#: ../src/widgets/toolbox.cpp:3660 +#: ../src/widgets/toolbox.cpp:3678 msgid "The force of the tweak action" msgstr "Сила действия инструмента коррекции" -#: ../src/widgets/toolbox.cpp:3678 +#: ../src/widgets/toolbox.cpp:3696 msgid "Move mode" msgstr "Перемещение объектов" -#: ../src/widgets/toolbox.cpp:3679 +#: ../src/widgets/toolbox.cpp:3697 msgid "Move objects in any direction" msgstr "Перемещать объекты в любом направлении" -#: ../src/widgets/toolbox.cpp:3685 +#: ../src/widgets/toolbox.cpp:3703 msgid "Move in/out mode" msgstr "Приближение и отталкивание объектов" -#: ../src/widgets/toolbox.cpp:3686 +#: ../src/widgets/toolbox.cpp:3704 msgid "Move objects towards cursor; with Shift from cursor" msgstr "Перемещать объекты по направлению к курсору, с Shift — в направлении от курсора" -#: ../src/widgets/toolbox.cpp:3692 +#: ../src/widgets/toolbox.cpp:3710 msgid "Move jitter mode" msgstr "Случайное перемещение объектов" -#: ../src/widgets/toolbox.cpp:3693 +#: ../src/widgets/toolbox.cpp:3711 msgid "Move objects in random directions" msgstr "Перемещать объекты в случайных направлениях" -#: ../src/widgets/toolbox.cpp:3699 +#: ../src/widgets/toolbox.cpp:3717 msgid "Scale mode" msgstr "Масштабирование объектов" -#: ../src/widgets/toolbox.cpp:3700 +#: ../src/widgets/toolbox.cpp:3718 msgid "Scale objects, with Shift scale up" msgstr "Менять размер объектов, с Shift — увеличивать" -#: ../src/widgets/toolbox.cpp:3706 +#: ../src/widgets/toolbox.cpp:3724 msgid "Rotate mode" msgstr "Вращение объектов" -#: ../src/widgets/toolbox.cpp:3707 +#: ../src/widgets/toolbox.cpp:3725 msgid "Rotate objects, with Shift counterclockwise" msgstr "Вращать объекты, с Shift — против часовой стрелки" -#: ../src/widgets/toolbox.cpp:3713 +#: ../src/widgets/toolbox.cpp:3731 msgid "Duplicate/delete mode" msgstr "Дублирование и удаление объектов" -#: ../src/widgets/toolbox.cpp:3714 +#: ../src/widgets/toolbox.cpp:3732 msgid "Duplicate objects, with Shift delete" msgstr "Дублировать объекты, с Shift — удалять" -#: ../src/widgets/toolbox.cpp:3720 +#: ../src/widgets/toolbox.cpp:3738 msgid "Push mode" msgstr "Толкание контуров" -#: ../src/widgets/toolbox.cpp:3721 +#: ../src/widgets/toolbox.cpp:3739 msgid "Push parts of paths in any direction" msgstr "Выталкивать части контуров" -#: ../src/widgets/toolbox.cpp:3727 +#: ../src/widgets/toolbox.cpp:3745 msgid "Shrink/grow mode" msgstr "Сокращение и наращивание объема контуров" -#: ../src/widgets/toolbox.cpp:3728 +#: ../src/widgets/toolbox.cpp:3746 msgid "Shrink (inset) parts of paths; with Shift grow (outset)" msgstr "Сокращать объем контуров (втягивать их), с Shift — наращивать его (раздувать контуры)" -#: ../src/widgets/toolbox.cpp:3734 +#: ../src/widgets/toolbox.cpp:3752 msgid "Attract/repel mode" msgstr "Притяжение и отталкивание контуров" -#: ../src/widgets/toolbox.cpp:3735 +#: ../src/widgets/toolbox.cpp:3753 msgid "Attract parts of paths towards cursor; with Shift from cursor" msgstr "Притягивать части контуров к курсору; с Shift — отталкивать их от курсора" -#: ../src/widgets/toolbox.cpp:3741 +#: ../src/widgets/toolbox.cpp:3759 msgid "Roughen mode" msgstr "Огрубление контуров" -#: ../src/widgets/toolbox.cpp:3742 +#: ../src/widgets/toolbox.cpp:3760 msgid "Roughen parts of paths" msgstr "Огрублять части контуров, рисовать заусенцы" -#: ../src/widgets/toolbox.cpp:3748 +#: ../src/widgets/toolbox.cpp:3766 msgid "Color paint mode" msgstr "Раскрашивание объектов" -#: ../src/widgets/toolbox.cpp:3749 +#: ../src/widgets/toolbox.cpp:3767 msgid "Paint the tool's color upon selected objects" msgstr "Рисовать цветом инструмента по выбранным объектам" -#: ../src/widgets/toolbox.cpp:3755 +#: ../src/widgets/toolbox.cpp:3773 msgid "Color jitter mode" msgstr "Перебор цветов для объектов" -#: ../src/widgets/toolbox.cpp:3756 +#: ../src/widgets/toolbox.cpp:3774 msgid "Jitter the colors of selected objects" msgstr "Перебирать цвета выделенных объектов" -#: ../src/widgets/toolbox.cpp:3762 +#: ../src/widgets/toolbox.cpp:3780 msgid "Blur mode" msgstr "Размывание" -#: ../src/widgets/toolbox.cpp:3763 +#: ../src/widgets/toolbox.cpp:3781 msgid "Blur selected objects more; with Shift, blur less" msgstr "Размывать объекты, с Shift — уменьшать размытость" -#: ../src/widgets/toolbox.cpp:3790 +#: ../src/widgets/toolbox.cpp:3808 msgid "Channels:" msgstr "Каналы:" -#: ../src/widgets/toolbox.cpp:3801 +#: ../src/widgets/toolbox.cpp:3819 msgid "In color mode, act on objects' hue" msgstr "В режиме изменения цвета влиять на тон объектов" #. TRANSLATORS: "H" here stands for hue -#: ../src/widgets/toolbox.cpp:3805 +#: ../src/widgets/toolbox.cpp:3823 msgid "H" msgstr "H" -#: ../src/widgets/toolbox.cpp:3816 +#: ../src/widgets/toolbox.cpp:3834 msgid "In color mode, act on objects' saturation" msgstr "В режиме изменения цвета влиять на насыщенность объектов" #. TRANSLATORS: "S" here stands for Saturation -#: ../src/widgets/toolbox.cpp:3820 +#: ../src/widgets/toolbox.cpp:3838 msgid "S" msgstr "S" -#: ../src/widgets/toolbox.cpp:3831 +#: ../src/widgets/toolbox.cpp:3849 msgid "In color mode, act on objects' lightness" msgstr "В режиме изменения цвета влиять на яркость объектов" #. TRANSLATORS: "L" here stands for Lightness -#: ../src/widgets/toolbox.cpp:3835 +#: ../src/widgets/toolbox.cpp:3853 msgid "L" msgstr "L" -#: ../src/widgets/toolbox.cpp:3846 +#: ../src/widgets/toolbox.cpp:3864 msgid "In color mode, act on objects' opacity" msgstr "В режиме изменения цвета влиять на непрозрачность объектов" #. TRANSLATORS: "O" here stands for Opacity -#: ../src/widgets/toolbox.cpp:3850 +#: ../src/widgets/toolbox.cpp:3868 msgid "O" msgstr "O" #. Fidelity -#: ../src/widgets/toolbox.cpp:3860 +#: ../src/widgets/toolbox.cpp:3878 msgid "(rough, simplified)" msgstr "(грубо, упрощённо)" -#: ../src/widgets/toolbox.cpp:3860 +#: ../src/widgets/toolbox.cpp:3878 msgid "(fine, but many nodes)" msgstr "(точно, но много узлов)" -#: ../src/widgets/toolbox.cpp:3863 +#: ../src/widgets/toolbox.cpp:3881 msgid "Fidelity" msgstr "Точность" -#: ../src/widgets/toolbox.cpp:3863 +#: ../src/widgets/toolbox.cpp:3881 msgid "Fidelity:" msgstr "Точность:" -#: ../src/widgets/toolbox.cpp:3864 +#: ../src/widgets/toolbox.cpp:3882 msgid "Low fidelity simplifies paths; high fidelity preserves path features but may generate a lot of new nodes" msgstr "Низкая точность упрощает контуры; высокая точность сохраняет общую форму неизменной части контура, но добавляет новые узлы" -#: ../src/widgets/toolbox.cpp:3881 -#: ../src/widgets/toolbox.cpp:4381 +#: ../src/widgets/toolbox.cpp:3899 +#: ../src/widgets/toolbox.cpp:4399 msgid "Pressure" msgstr "Нажим" -#: ../src/widgets/toolbox.cpp:3882 +#: ../src/widgets/toolbox.cpp:3900 msgid "Use the pressure of the input device to alter the force of tweak action" msgstr "Нажим устройства ввода изменяет силу корректирующего действия" -#: ../src/widgets/toolbox.cpp:4062 +#: ../src/widgets/toolbox.cpp:4080 msgid "No preset" msgstr "Не выбрана" -#: ../src/widgets/toolbox.cpp:4080 +#: ../src/widgets/toolbox.cpp:4098 msgid "Save..." msgstr "Сохранить..." #. Width -#: ../src/widgets/toolbox.cpp:4230 -#: ../src/widgets/toolbox.cpp:5249 +#: ../src/widgets/toolbox.cpp:4248 +#: ../src/widgets/toolbox.cpp:5267 msgid "(hairline)" msgstr "(волосок)" -#: ../src/widgets/toolbox.cpp:4230 -#: ../src/widgets/toolbox.cpp:5249 +#: ../src/widgets/toolbox.cpp:4248 +#: ../src/widgets/toolbox.cpp:5267 msgid "(broad stroke)" msgstr "(широкий штрих)" -#: ../src/widgets/toolbox.cpp:4233 -#: ../src/widgets/toolbox.cpp:5252 +#: ../src/widgets/toolbox.cpp:4251 +#: ../src/widgets/toolbox.cpp:5270 msgid "Pen Width" msgstr "Толщина пера" -#: ../src/widgets/toolbox.cpp:4234 +#: ../src/widgets/toolbox.cpp:4252 msgid "The width of the calligraphic pen (relative to the visible canvas area)" msgstr "Ширина каллиграфического пера (относительно видимой области холста)" #. Thinning -#: ../src/widgets/toolbox.cpp:4247 +#: ../src/widgets/toolbox.cpp:4265 msgid "(speed blows up stroke)" msgstr "(скорость утолщает штрих)" -#: ../src/widgets/toolbox.cpp:4247 +#: ../src/widgets/toolbox.cpp:4265 msgid "(slight widening)" msgstr "(легкое утолщение)" -#: ../src/widgets/toolbox.cpp:4247 +#: ../src/widgets/toolbox.cpp:4265 msgid "(constant width)" msgstr "(постоянная ширина)" -#: ../src/widgets/toolbox.cpp:4247 +#: ../src/widgets/toolbox.cpp:4265 msgid "(slight thinning, default)" msgstr "(легкое утоньшение, по умолчанию)" -#: ../src/widgets/toolbox.cpp:4247 +#: ../src/widgets/toolbox.cpp:4265 msgid "(speed deflates stroke)" msgstr "(скорость обнуляет штрих)" -#: ../src/widgets/toolbox.cpp:4250 +#: ../src/widgets/toolbox.cpp:4268 msgid "Stroke Thinning" msgstr "Утоньшение штриха" -#: ../src/widgets/toolbox.cpp:4250 +#: ../src/widgets/toolbox.cpp:4268 msgid "Thinning:" msgstr "Сужение:" -#: ../src/widgets/toolbox.cpp:4251 +#: ../src/widgets/toolbox.cpp:4269 msgid "How much velocity thins the stroke (> 0 makes fast strokes thinner, < 0 makes them broader, 0 makes width independent of velocity)" msgstr "Как сильно скорость сужает штрих (> 0: быстрые штрихи уже, < 0: быстрые штрихи шире; при 0 ширина штриха не зависит от скорости)" #. Angle -#: ../src/widgets/toolbox.cpp:4263 +#: ../src/widgets/toolbox.cpp:4281 msgid "(left edge up)" msgstr "(левый угол вверху)" -#: ../src/widgets/toolbox.cpp:4263 +#: ../src/widgets/toolbox.cpp:4281 msgid "(horizontal)" msgstr "(перо горизонтально)" -#: ../src/widgets/toolbox.cpp:4263 +#: ../src/widgets/toolbox.cpp:4281 msgid "(right edge up)" msgstr "(правый угол вверху)" -#: ../src/widgets/toolbox.cpp:4266 +#: ../src/widgets/toolbox.cpp:4284 msgid "Pen Angle" msgstr "Угол пера" -#: ../src/widgets/toolbox.cpp:4266 +#: ../src/widgets/toolbox.cpp:4284 msgid "Angle:" msgstr "Угол:" -#: ../src/widgets/toolbox.cpp:4267 +#: ../src/widgets/toolbox.cpp:4285 msgid "The angle of the pen's nib (in degrees; 0 = horizontal; has no effect if fixation = 0)" msgstr "Угол пера (в градусах; 0 = горизонтально; при нулевой фиксации значения не имеет)" #. Fixation -#: ../src/widgets/toolbox.cpp:4281 +#: ../src/widgets/toolbox.cpp:4299 msgid "(perpendicular to stroke, \"brush\")" msgstr "(перпендикулярно штриху)" -#: ../src/widgets/toolbox.cpp:4281 +#: ../src/widgets/toolbox.cpp:4299 msgid "(almost fixed, default)" msgstr "(почти полная, значение по умолчанию)" -#: ../src/widgets/toolbox.cpp:4281 +#: ../src/widgets/toolbox.cpp:4299 msgid "(fixed by Angle, \"pen\")" msgstr "(угол зафиксирован)" -#: ../src/widgets/toolbox.cpp:4284 +#: ../src/widgets/toolbox.cpp:4302 msgid "Fixation" msgstr "Фиксация" -#: ../src/widgets/toolbox.cpp:4284 +#: ../src/widgets/toolbox.cpp:4302 msgid "Fixation:" msgstr "Фиксация:" -#: ../src/widgets/toolbox.cpp:4285 +#: ../src/widgets/toolbox.cpp:4303 msgid "Angle behavior (0 = nib always perpendicular to stroke direction, 100 = fixed angle)" msgstr "Фиксация угла (0 = перо всегда перпендикулярно направлению штриха, 100 = угол не меняется)" #. Cap Rounding -#: ../src/widgets/toolbox.cpp:4297 +#: ../src/widgets/toolbox.cpp:4315 msgid "(blunt caps, default)" msgstr "(плоские концы, значение по умолчанию)" -#: ../src/widgets/toolbox.cpp:4297 +#: ../src/widgets/toolbox.cpp:4315 msgid "(slightly bulging)" msgstr "(слегка закругленные)" -#: ../src/widgets/toolbox.cpp:4297 +#: ../src/widgets/toolbox.cpp:4315 msgid "(approximately round)" msgstr "(примерно круглые)" -#: ../src/widgets/toolbox.cpp:4297 +#: ../src/widgets/toolbox.cpp:4315 msgid "(long protruding caps)" msgstr "(округлые, далеко выдающиеся концы)" -#: ../src/widgets/toolbox.cpp:4301 +#: ../src/widgets/toolbox.cpp:4319 msgid "Cap rounding" msgstr "Закругление концов" -#: ../src/widgets/toolbox.cpp:4301 +#: ../src/widgets/toolbox.cpp:4319 msgid "Caps:" msgstr "Концы:" -#: ../src/widgets/toolbox.cpp:4302 +#: ../src/widgets/toolbox.cpp:4320 msgid "Increase to make caps at the ends of strokes protrude more (0 = no caps, 1 = round caps)" msgstr "Увеличение значения дает далеко выдающиеся концы (0=без концов, 1=округлые концы)" #. Tremor -#: ../src/widgets/toolbox.cpp:4314 +#: ../src/widgets/toolbox.cpp:4332 msgid "(smooth line)" msgstr "(гладкая линия)" -#: ../src/widgets/toolbox.cpp:4314 +#: ../src/widgets/toolbox.cpp:4332 msgid "(slight tremor)" msgstr "(легкое дрожание)" -#: ../src/widgets/toolbox.cpp:4314 +#: ../src/widgets/toolbox.cpp:4332 msgid "(noticeable tremor)" msgstr "(заметное дрожание)" -#: ../src/widgets/toolbox.cpp:4314 +#: ../src/widgets/toolbox.cpp:4332 msgid "(maximum tremor)" msgstr "(максимальное дрожание)" -#: ../src/widgets/toolbox.cpp:4317 +#: ../src/widgets/toolbox.cpp:4335 msgid "Stroke Tremor" msgstr "Дрожание штриха" -#: ../src/widgets/toolbox.cpp:4317 +#: ../src/widgets/toolbox.cpp:4335 msgid "Tremor:" msgstr "Дрожание:" -#: ../src/widgets/toolbox.cpp:4318 +#: ../src/widgets/toolbox.cpp:4336 msgid "Increase to make strokes rugged and trembling" msgstr "Увеличение значения делает штрихи дрожащими" #. Wiggle -#: ../src/widgets/toolbox.cpp:4332 +#: ../src/widgets/toolbox.cpp:4350 msgid "(no wiggle)" msgstr "(без виляния)" -#: ../src/widgets/toolbox.cpp:4332 +#: ../src/widgets/toolbox.cpp:4350 msgid "(slight deviation)" msgstr "(легкое отклонение)" -#: ../src/widgets/toolbox.cpp:4332 +#: ../src/widgets/toolbox.cpp:4350 msgid "(wild waves and curls)" msgstr "(сумасшедшее вихляние)" -#: ../src/widgets/toolbox.cpp:4335 +#: ../src/widgets/toolbox.cpp:4353 msgid "Pen Wiggle" msgstr "Виляние пером" -#: ../src/widgets/toolbox.cpp:4335 +#: ../src/widgets/toolbox.cpp:4353 msgid "Wiggle:" msgstr "Виляние:" -#: ../src/widgets/toolbox.cpp:4336 +#: ../src/widgets/toolbox.cpp:4354 msgid "Increase to make the pen waver and wiggle" msgstr "Увеличение значения делает штрихи виляющими" #. Mass -#: ../src/widgets/toolbox.cpp:4349 +#: ../src/widgets/toolbox.cpp:4367 msgid "(no inertia)" msgstr "(без инерции)" -#: ../src/widgets/toolbox.cpp:4349 +#: ../src/widgets/toolbox.cpp:4367 msgid "(slight smoothing, default)" msgstr "(легкое отставание, по умолчанию)" -#: ../src/widgets/toolbox.cpp:4349 +#: ../src/widgets/toolbox.cpp:4367 msgid "(noticeable lagging)" msgstr "(заметное отставание)" -#: ../src/widgets/toolbox.cpp:4349 +#: ../src/widgets/toolbox.cpp:4367 msgid "(maximum inertia)" msgstr "(максимальная инерция)" -#: ../src/widgets/toolbox.cpp:4352 +#: ../src/widgets/toolbox.cpp:4370 msgid "Pen Mass" msgstr "Масса пера" -#: ../src/widgets/toolbox.cpp:4352 +#: ../src/widgets/toolbox.cpp:4370 msgid "Mass:" msgstr "Масса:" -#: ../src/widgets/toolbox.cpp:4353 +#: ../src/widgets/toolbox.cpp:4371 msgid "Increase to make the pen drag behind, as if slowed by inertia" msgstr "Увеличение значения затормаживает перо, словно оно очень инертно" -#: ../src/widgets/toolbox.cpp:4368 +#: ../src/widgets/toolbox.cpp:4386 msgid "Trace Background" msgstr "Трассировать фон" -#: ../src/widgets/toolbox.cpp:4369 +#: ../src/widgets/toolbox.cpp:4387 msgid "Trace the lightness of the background by the width of the pen (white - minimum width, black - maximum width)" msgstr "Трассировать освещенность фона толщиной линии пера (белый — минимальная толщина, черный — максимальная толщина)" -#: ../src/widgets/toolbox.cpp:4382 +#: ../src/widgets/toolbox.cpp:4400 msgid "Use the pressure of the input device to alter the width of the pen" msgstr "Нажим (pressure) устройства ввода изменяет ширину пера" -#: ../src/widgets/toolbox.cpp:4394 +#: ../src/widgets/toolbox.cpp:4412 msgid "Tilt" msgstr "Наклон" -#: ../src/widgets/toolbox.cpp:4395 +#: ../src/widgets/toolbox.cpp:4413 msgid "Use the tilt of the input device to alter the angle of the pen's nib" msgstr "Наклон (tilt) устройства ввода изменяет угол пера" -#: ../src/widgets/toolbox.cpp:4408 +#: ../src/widgets/toolbox.cpp:4426 msgid "Choose a preset" msgstr "Выберите предустановку" -#: ../src/widgets/toolbox.cpp:4496 +#: ../src/widgets/toolbox.cpp:4514 msgid "Arc: Change start/end" msgstr "Дуга: изменить начало/конец" -#: ../src/widgets/toolbox.cpp:4560 +#: ../src/widgets/toolbox.cpp:4578 msgid "Arc: Change open/closed" msgstr "Дуга: Изменить открытость/закрытость" -#: ../src/widgets/toolbox.cpp:4686 +#: ../src/widgets/toolbox.cpp:4704 msgid "Start:" msgstr "Начало:" -#: ../src/widgets/toolbox.cpp:4687 +#: ../src/widgets/toolbox.cpp:4705 msgid "The angle (in degrees) from the horizontal to the arc's start point" msgstr "Угол (в градусах) от горизонтали до начальной точки дуги" -#: ../src/widgets/toolbox.cpp:4699 +#: ../src/widgets/toolbox.cpp:4717 msgid "End:" msgstr "Конец:" -#: ../src/widgets/toolbox.cpp:4700 +#: ../src/widgets/toolbox.cpp:4718 msgid "The angle (in degrees) from the horizontal to the arc's end point" msgstr "Угол (в градусах) от горизонтали до конечной точки дуги" -#: ../src/widgets/toolbox.cpp:4716 +#: ../src/widgets/toolbox.cpp:4734 msgid "Closed arc" msgstr "Закрытая дуга" -#: ../src/widgets/toolbox.cpp:4717 +#: ../src/widgets/toolbox.cpp:4735 msgid "Switch to segment (closed shape with two radii)" msgstr "Переключиться на сегмент (закрытый эллипс с двумя радиусами)" -#: ../src/widgets/toolbox.cpp:4723 +#: ../src/widgets/toolbox.cpp:4741 msgid "Open Arc" msgstr "Открытая дуга" -#: ../src/widgets/toolbox.cpp:4724 +#: ../src/widgets/toolbox.cpp:4742 msgid "Switch to arc (unclosed shape)" msgstr "Переключиться на дугу (незакрытый эллипс)" -#: ../src/widgets/toolbox.cpp:4747 +#: ../src/widgets/toolbox.cpp:4765 msgid "Make whole" msgstr "Сделать целым" -#: ../src/widgets/toolbox.cpp:4748 +#: ../src/widgets/toolbox.cpp:4766 msgid "Make the shape a whole ellipse, not arc or segment" msgstr "Сделать фигуру целым эллипсом, а не дугой или сегментом" -#: ../src/widgets/toolbox.cpp:4817 +#: ../src/widgets/toolbox.cpp:4835 msgid "Opacity:" msgstr "Непрозрачность:" -#: ../src/widgets/toolbox.cpp:4824 +#: ../src/widgets/toolbox.cpp:4842 msgid "Pick opacity" msgstr "Снять непрозрачность" -#: ../src/widgets/toolbox.cpp:4825 +#: ../src/widgets/toolbox.cpp:4843 msgid "Pick both the color and the alpha (transparency) under cursor; otherwise, pick only the visible color premultiplied by alpha" msgstr "Снимать значение альфа-канала (полупрозрачности) под курсором; если отключено, снимается только видимый цвет" -#: ../src/widgets/toolbox.cpp:4828 +#: ../src/widgets/toolbox.cpp:4846 msgid "Pick" msgstr "Снять" -#: ../src/widgets/toolbox.cpp:4837 +#: ../src/widgets/toolbox.cpp:4855 msgid "Assign opacity" msgstr "Назначить непрозрачность" -#: ../src/widgets/toolbox.cpp:4838 +#: ../src/widgets/toolbox.cpp:4856 msgid "If alpha was picked, assign it to selection as fill or stroke transparency" msgstr "Если полупрозрачность снята, назначать её заливке или обводке в выделении" -#: ../src/widgets/toolbox.cpp:4841 +#: ../src/widgets/toolbox.cpp:4859 msgid "Assign" msgstr "Назначить" -#: ../src/widgets/toolbox.cpp:5092 +#: ../src/widgets/toolbox.cpp:5110 msgid "All inactive" msgstr "Все неактивны" -#: ../src/widgets/toolbox.cpp:5093 +#: ../src/widgets/toolbox.cpp:5111 msgid "No geometric tool is active" msgstr "Ни один инструмент создания геометрических конструкций не выбран" -#: ../src/widgets/toolbox.cpp:5094 +#: ../src/widgets/toolbox.cpp:5112 msgid "all_inactive" msgstr "все_неактивны" -#: ../src/widgets/toolbox.cpp:5126 +#: ../src/widgets/toolbox.cpp:5144 msgid "Show limiting bounding box" msgstr "Показывать ограничивающую площадку (BB)" -#: ../src/widgets/toolbox.cpp:5127 +#: ../src/widgets/toolbox.cpp:5145 msgid "Show bounding box (used to cut infinite lines)" msgstr "" -#: ../src/widgets/toolbox.cpp:5138 +#: ../src/widgets/toolbox.cpp:5156 msgid "Get limiting bounding box from selection" msgstr "Делать ограничивающую площадку (BB) из выделения" -#: ../src/widgets/toolbox.cpp:5139 +#: ../src/widgets/toolbox.cpp:5157 msgid "Set limiting bounding box (used to cut infinite lines) to the bounding box of current selection" msgstr "Создание и редактирование масштабируемой векторной графики в формате SVG" -#: ../src/widgets/toolbox.cpp:5151 +#: ../src/widgets/toolbox.cpp:5169 msgid "Choose a line segment type" msgstr "Выберите тип сегмента линии" -#: ../src/widgets/toolbox.cpp:5167 +#: ../src/widgets/toolbox.cpp:5185 msgid "Display measuring info" msgstr "Показывать данные измерений" -#: ../src/widgets/toolbox.cpp:5168 +#: ../src/widgets/toolbox.cpp:5186 msgid "Display measuring info for selected items" msgstr "" -#: ../src/widgets/toolbox.cpp:5188 +#: ../src/widgets/toolbox.cpp:5206 msgid "Open LPE dialog" msgstr "Открыть диалог LPE" -#: ../src/widgets/toolbox.cpp:5189 +#: ../src/widgets/toolbox.cpp:5207 msgid "Open LPE dialog (to adapt parameters numerically)" msgstr "Открыть диалог динамических контурных эффектов для ручного ввода параметров" -#: ../src/widgets/toolbox.cpp:5253 +#: ../src/widgets/toolbox.cpp:5271 msgid "The width of the eraser pen (relative to the visible canvas area)" msgstr "Толщина пера ластика (относительно видимой области холста)" -#: ../src/widgets/toolbox.cpp:5271 +#: ../src/widgets/toolbox.cpp:5289 msgid "Delete objects touched by the eraser" msgstr "Удалять объекты, которых коснулся ластик" -#: ../src/widgets/toolbox.cpp:5277 +#: ../src/widgets/toolbox.cpp:5295 msgid "Cut" msgstr "Вырезать" -#: ../src/widgets/toolbox.cpp:5278 +#: ../src/widgets/toolbox.cpp:5296 msgid "Cut out from objects" msgstr "Вырезать из объектов" -#: ../src/widgets/toolbox.cpp:5619 +#: ../src/widgets/toolbox.cpp:5637 msgid "Text: Change font family" msgstr "Текст: сменить гарнитуру" -#: ../src/widgets/toolbox.cpp:5708 +#: ../src/widgets/toolbox.cpp:5726 msgid "Text: Change alignment" msgstr "Текст: сменить выключку" -#: ../src/widgets/toolbox.cpp:5787 +#: ../src/widgets/toolbox.cpp:5805 msgid "Text: Change font style" msgstr "Текст: сменить начертание" -#: ../src/widgets/toolbox.cpp:5835 +#: ../src/widgets/toolbox.cpp:5853 msgid "Text: Change orientation" msgstr "Текст: сменить ориентацию" -#: ../src/widgets/toolbox.cpp:5938 +#: ../src/widgets/toolbox.cpp:5956 msgid "Text: Change font size" msgstr "Текст: сменить кегль" -#: ../src/widgets/toolbox.cpp:6173 +#: ../src/widgets/toolbox.cpp:6191 msgid "This font is currently not installed on your system. Inkscape will use the default font instead." msgstr "Этот шрифт сейчас отсутствует в системе. Вместо него Inkscape использует шрифт по умолчанию." -#: ../src/widgets/toolbox.cpp:6209 +#: ../src/widgets/toolbox.cpp:6227 msgid "Align left" msgstr "Выключка влево" -#: ../src/widgets/toolbox.cpp:6220 +#: ../src/widgets/toolbox.cpp:6238 msgid "Center" msgstr "Выключка по центру" -#: ../src/widgets/toolbox.cpp:6231 +#: ../src/widgets/toolbox.cpp:6249 msgid "Align right" msgstr "Выключка вправо" -#: ../src/widgets/toolbox.cpp:6242 +#: ../src/widgets/toolbox.cpp:6260 msgid "Justify" msgstr "Выключка по ширине" -#: ../src/widgets/toolbox.cpp:6257 +#: ../src/widgets/toolbox.cpp:6275 msgid "Bold" msgstr "Полужирное" -#: ../src/widgets/toolbox.cpp:6268 +#: ../src/widgets/toolbox.cpp:6286 msgid "Italic" msgstr "Наклонное" -#: ../src/widgets/toolbox.cpp:6401 +#: ../src/widgets/toolbox.cpp:6419 msgid "Change connector spacing" msgstr "Смена интервала соед. линии" -#: ../src/widgets/toolbox.cpp:6484 +#: ../src/widgets/toolbox.cpp:6502 msgid "Avoid" msgstr "Избегать" -#: ../src/widgets/toolbox.cpp:6494 +#: ../src/widgets/toolbox.cpp:6512 msgid "Ignore" msgstr "Игнорировать" -#: ../src/widgets/toolbox.cpp:6506 +#: ../src/widgets/toolbox.cpp:6524 msgid "Connector Spacing" msgstr "Интервал линии соединения" -#: ../src/widgets/toolbox.cpp:6506 +#: ../src/widgets/toolbox.cpp:6524 msgid "Spacing:" msgstr "Интервал:" -#: ../src/widgets/toolbox.cpp:6507 +#: ../src/widgets/toolbox.cpp:6525 msgid "The amount of space left around objects by auto-routing connectors" msgstr "Оставшееся пространство вокруг объектов при автосоединении" -#: ../src/widgets/toolbox.cpp:6518 +#: ../src/widgets/toolbox.cpp:6536 msgid "Graph" msgstr "Граф" -#: ../src/widgets/toolbox.cpp:6528 +#: ../src/widgets/toolbox.cpp:6546 msgid "Connector Length" msgstr "Длина линии соединения" -#: ../src/widgets/toolbox.cpp:6528 +#: ../src/widgets/toolbox.cpp:6546 msgid "Length:" msgstr "Длина:" -#: ../src/widgets/toolbox.cpp:6529 +#: ../src/widgets/toolbox.cpp:6547 msgid "Ideal length for connectors when layout is applied" msgstr "Идеальная длина при использовании оптимизации внешнего вида линий соединения" -#: ../src/widgets/toolbox.cpp:6541 +#: ../src/widgets/toolbox.cpp:6559 msgid "Downwards" msgstr "Вниз" -#: ../src/widgets/toolbox.cpp:6542 +#: ../src/widgets/toolbox.cpp:6560 msgid "Make connectors with end-markers (arrows) point downwards" msgstr "Линии соединения со стрелками указывают вниз" -#: ../src/widgets/toolbox.cpp:6557 +#: ../src/widgets/toolbox.cpp:6575 msgid "Do not allow overlapping shapes" msgstr "Не допускать перекрытия фигур" -#: ../src/widgets/toolbox.cpp:6660 +#: ../src/widgets/toolbox.cpp:6678 msgid "Fill by" msgstr "Чем залить" -#: ../src/widgets/toolbox.cpp:6661 +#: ../src/widgets/toolbox.cpp:6679 msgid "Fill by:" msgstr "Чем залить:" -#: ../src/widgets/toolbox.cpp:6673 +#: ../src/widgets/toolbox.cpp:6691 msgid "Fill Threshold" msgstr "Порог заливки" -#: ../src/widgets/toolbox.cpp:6674 +#: ../src/widgets/toolbox.cpp:6692 msgid "The maximum allowed difference between the clicked pixel and the neighboring pixels to be counted in the fill" msgstr "Максимально допустимая разница между щелкнутым пикселом и соседними пикселами, попадающими в заливку" -#: ../src/widgets/toolbox.cpp:6699 +#: ../src/widgets/toolbox.cpp:6717 msgid "Grow/shrink by" msgstr "Увеличить/уменьшить на" -#: ../src/widgets/toolbox.cpp:6699 +#: ../src/widgets/toolbox.cpp:6717 msgid "Grow/shrink by:" msgstr "Увеличить/уменьшить на:" -#: ../src/widgets/toolbox.cpp:6700 +#: ../src/widgets/toolbox.cpp:6718 msgid "The amount to grow (positive) or shrink (negative) the created fill path" msgstr "Насколько увеличить (положительное число) или уменьшить (отрицательное число) создаваемый контур с заливкой" -#: ../src/widgets/toolbox.cpp:6725 +#: ../src/widgets/toolbox.cpp:6743 msgid "Close gaps" msgstr "Закрыть интервалы" -#: ../src/widgets/toolbox.cpp:6726 +#: ../src/widgets/toolbox.cpp:6744 msgid "Close gaps:" msgstr "Закрыть интервалы:" -#: ../src/widgets/toolbox.cpp:6738 +#: ../src/widgets/toolbox.cpp:6756 msgid "Reset paint bucket parameters to defaults (use Inkscape Preferences > Tools to change defaults)" msgstr "Сбросить параметры заливки к значениям по умолчанию (параметры по умолчанию можно изменить через диалог настройки Inkscape)" @@ -17722,9 +17742,8 @@ msgid "Custom Points and Options" msgstr "Заказные точки и параметры" #: ../share/extensions/draw_from_triangle.inx.h:10 -#, fuzzy msgid "Draw Circle About This Point" -msgstr "Окружность через три точки" +msgstr "Нарисовать окружность вокруг этой точки" #: ../share/extensions/draw_from_triangle.inx.h:11 msgid "Draw From Triangle" @@ -18023,19 +18042,18 @@ msgid "Multiply X range by 2*pi" msgstr "Умножить диапазон X на 2*pi" #: ../share/extensions/funcplot.inx.h:10 +msgid "Number of samples" +msgstr "Количество шагов:" + +#: ../share/extensions/funcplot.inx.h:11 msgid "Range and sampling" msgstr "Диапазон и выборка" -#: ../share/extensions/funcplot.inx.h:11 +#: ../share/extensions/funcplot.inx.h:12 msgid "Remove rectangle" msgstr "Удалить прямоугольник" -#: ../share/extensions/funcplot.inx.h:13 -msgid "Samples" -msgstr "Примеры" - #: ../share/extensions/funcplot.inx.h:14 -#, fuzzy msgid "Select a rectangle before calling the extension, it will determine X and Y scales. With polar coordinates: Start and end X values define the angle range in radians. X scale is set so that left and right edges of rectangle are at +/-1. Isotropic scaling is disabled. First derivative is always determined numerically." msgstr "Перед вызовом эффекта выделите прямоугольник, который определит масштаб по X и Y. С полярными координатами: значения по X для начала и конца определяют диапазон угла в радианах. Масштаб X установлен так, что левые и правые края прямоугольника находятся в +/-1. Изотропное масштабирование отключено. Первое производное всегда задается числами." @@ -18044,9 +18062,8 @@ msgid "Standard Python math functions are available: ceil(x); fabs(x); floor(x); msgstr "Возможно использование следующих типовых математических функций Python: ceil(x); fabs(x); floor(x); fmod(x,y); frexp(x); ldexp(x,i); modf(x); exp(x); log(x [, base]); log10(x); pow(x,y); sqrt(x); acos(x); asin(x); atan(x); atan2(y,x); hypot(x,y); cos(x); sin(x); tan(x); degrees(x); radians(x); cosh(x); sinh(x); tanh(x). Также возможно использование констант pi и e." #: ../share/extensions/funcplot.inx.h:16 -#, fuzzy msgid "Start X value" -msgstr "Начальное значение по оси X" +msgstr "Начальное значение по оси X:" #: ../share/extensions/funcplot.inx.h:17 msgid "Use" @@ -18057,14 +18074,12 @@ msgid "Use polar coordinates" msgstr "Использовать полярные координаты" #: ../share/extensions/funcplot.inx.h:19 -#, fuzzy msgid "Y value of rectangle's bottom" -msgstr "Координата низа прямоугольника по оси Y" +msgstr "Координата низа прямоугольника по оси Y:" #: ../share/extensions/funcplot.inx.h:20 -#, fuzzy msgid "Y value of rectangle's top" -msgstr "Координата верха прямоугольника по оси Y" +msgstr "Координата верха прямоугольника по оси Y:" #: ../share/extensions/gears.inx.h:1 msgid "Circular pitch, px" @@ -19145,6 +19160,8 @@ msgstr "Импорт файлов Windows Metafile" msgid "XAML Input" msgstr "Импорт XAML" +#~ msgid "Samples" +#~ msgstr "Примеры" #~ msgid "Embed fonts on export (Type 1 only) (EPS)" #~ msgstr "Встроить шрифтовый файл (только Type 1) при экспорте (EPS)" #~ msgid "Export files with the bounding box set to the page size (EPS)" diff --git a/share/Makefile.am b/share/Makefile.am index f8f1dd53b..ec42d761f 100644 --- a/share/Makefile.am +++ b/share/Makefile.am @@ -1,6 +1,7 @@ SUBDIRS = clipart \ examples \ extensions \ + filters \ fonts \ gradients \ icons \ diff --git a/share/README b/share/README index 0dd74cf49..97ebf34d0 100644 --- a/share/README +++ b/share/README @@ -1,5 +1,2 @@ -This new folder is part of the Inkscape 0.38 directory reorganization. Please place the appropriate files into this folder. - -Thank You! - -Inkscape Developers +This is the root dir for Inkscape's resources that it loads at runtime: +icons, markers, filters, keyboard maps, etc. \ No newline at end of file diff --git a/share/extensions/Inkscape.pm b/share/extensions/Inkscape.pm new file mode 100644 index 000000000..b87762c0d --- /dev/null +++ b/share/extensions/Inkscape.pm @@ -0,0 +1,260 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +=head1 NAME + +Inkscape - a helper for Inkscape extensions writen in PERL + +=head1 SYNOPSIS + + use Inkscape; + my ($w, $h) = $inkscape->getCanvasSize; + $svg->setElAttribute {tag=>'svg',pos=>0}, 'width', $w * 2; + +=head1 DESCRIPTION + +This package try to do the common initial work in inkscape extensions +and provide a collection of helper methods about inkscape interaction +and SVG basic manipulation. + +If you want more power to SVG manipulation, try use SVG::DOM together. +http://search.cpan.org/~ronan/SVG-2.44/lib/SVG/DOM.pm + +=cut + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Inkscape Package # +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +{ +package Inkscape; +our $VERSION = "0.01"; + +=head2 The %args hash + +The B<%args> hash gives to you all arguments provided by Inkscape. + + $svg->setElAttribute 'svg', 'width', $w * $args{zoom}; + +The B will allways be an array reference. Also if it is empty. + +=cut + +#use vars qw($VERSION $inkscape %args @ISA @EXPORT %EXPORT_TAGS $TODO); +#require Exporter; +#@ISA = qw(Exporter); +#my $inkscape = Inkscape->new; +#@EXPORT = qw( $inkscape ); + +sub import { + if ( defined $_[1] && $_[1] eq 'AUTO_LOAD' ) { + #$inkscape->getArgs(@ARGV); + if ( $#ARGV > -1 && -f $ARGV[$#ARGV] ) { + #$inkscape->getSVG($ARGV[$#ARGV]); + } + } +} + +sub getArgs { + my $self = shift; + my @argv = @_; + @argv = @ARGV if ( $#argv == -1 ); + my %args = (id => []); + foreach ( @argv ) { + if ( m/^--([^=]+)=(.*)$/ ) { + my $key = $1; + my $val = $2; + $val = 1 if $val eq 'true'; + $val = 0 if $val eq 'false'; + if ( defined $args{$key} ) { + if ( ref($args{$key}) ne 'ARRAY' ) { + $args{$key} = [ $args{$key} ]; + } + push( @{$args{$key}}, $val ); + } else { + $args{$key} = $val; + } + } + } + %args; +} + +sub getSVG{ + my $self = shift; + my $file = shift; + SVGHelper->new( $file ); +} + +=head2 Inkscape Methods + +The $inkscape auto defined object is a helper to use non interactive +inkscape interface. You allways need to provide an SVG file path to +the methods. + +=cut + +my $singleton; +sub new { + my $class = shift; + my $self = {}; + #$self->{args} = ( id => [] ); + $singleton ||= bless $self, $class; +} + +} # end package Inkscape + + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# SVG Package # +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +{ +package SVGHelper; +our $VERSION = "0.01"; + +=head2 SVGHelper Methods + +The $svg auto defined object is a helper to access the SVG file provided +by the Inkscape. That is not a singleton, so if you want manipulate other +SVG files, you can instanciate a new SVGHelper. + +=head3 new + + my $mysvg = SVGHelper->new( '/path/to/my.svg' ); + +Instantiates SVGHelper with a SVG file. + +=cut + +sub new { + my ( $class, $file ) = @_; + my $self = {}; + $file = $ARGV[$#ARGV] if ( ! $file ); + open SVG, $file or die "Can't open \"$file\": $!\n"; + $self->{file} = $file; + $self->{code} = join('',); + close SVG; + bless $self, $class; +} + +=head3 generateSearchRegExp + + if ( $svg->{code} =~ m/$svg->generateSearchRegExp({class=>"hot"})/ ) + print "Yes! there are Hot elements!" + +Generates the regexp string to localize tags in the SVG, based in the arguments +on the localizator hash. + +Arguments to localize the tags: + B<{id}> = "" + Select only one tag with this id. You don't need to use other select + arguments with this one. + B<{pos}> = + When you use inprecise arguments for selection the position will select + only one tag in the defined position at the finded list of tags. + B<{tag}> = "" + Select by tag name, may select a list if you don't use {pos}. + B<{>B<>B<}> = + Select by + +=cut + +sub generateSearchRegExp { + # '.*' in a value will break all. we must change '.' by '[^"]' + +} + +=head3 setElAttribute + + # Setting an atribute in a tag localizated it's id: + $svg->setElAttribute {id=>'myDrawing'}, 'width', $w * 2; + # Setting an atribute in a tag localizated it's position: + $svg->setElAttribute {tag=>'svg',pos=>0}, 'width', $w * 2; + # Setting an atribute in some tags localizated by atributes: + $svg->setElAttribute {tag=>'circle',r=>10}, 'r', 50; + +This method will set an atribute in a tag or in a colection of tags, selected +by the localizator hash. + +=cut + +sub setElAttribute { + my $self = shift; + my ( $searchArgs, $att, $val ) = @_; + print $self->generateSearchRegExp( $searchArgs ); +} + +sub convertUnit { + my $self = shift; + $_[0] =~ m/^([.0-9]*)\s*([^ ]*)/; + my $num = $1; + my $unFrom = $2 || 'px'; + my $unTo = $_[1]; + my $appendUnit = $_[2]; + # From http://www.w3.org/TR/SVG/coords.html#Units + # "1pt" equals "1.25px" (and therefore 1.25 user units) + # "1pc" equals "15px" (and therefore 15 user units) + # "1mm" would be "3.543307px" (3.543307 user units) + # "1cm" equals "35.43307px" (and therefore 35.43307 user units) + # "1in" equals "90px" (and therefore 90 user units) + my %equivPX = ( + px => 1, + pt => 1.25, + pc => 15, + mm => 3.543307, + cm => 35.43307, + in => 90 + ); + ( ( $num * $equivPX{$unFrom} ) / $equivPX{$unTo} ) . ( $appendUnit ? $unTo : '' ); +} + +=head3 getCanvasSize + + my ($w, $h) = $svg->getCanvasSize; + +Get the B and B values of the B<> tag. + +=cut + +sub getCanvasSize { + my $self = shift; + my $unitTo = $_[0]; + $self->{code} =~ m/]*width="([^"]*)"[^>]*height="([^"]*)"[^>]*>/; + my ( $w, $h ) = + ( $unitTo ) ? + ( $self->convertUnit($1, $unitTo), $self->convertUnit($2, $unitTo) ) : + ( $1, $2 ); +} + +my $sysNULL = ( -e '/dev/null' )? '/dev/null' : 'NIL'; + +sub getElPosition { + my $self = shift; + my $x = `inkscape --query-id=$_[0] --query-x "$self->{file}" 2>$sysNULL`; + my $y = `inkscape --query-id=$_[0] --query-y "$self->{file}" 2>$sysNULL`; + return ( $x )? ( $x, $y ) : undef; +} + +sub getElSize { + my $self = shift; + my $w = `inkscape --query-id=$_[0] --query-width "$self->{file}" 2>$sysNULL`; + my $h = `inkscape --query-id=$_[0] --query-height "$self->{file}" 2>$sysNULL`; + return ( $w )? ( $w, $h ) : undef; +} + +} # end package SVGHelper + +=head1 AUTHOR + +Aurelio A. Heckert + +=head1 COPYRIGHT + +Copyright (C) 2008 Aurelio A. Heckert + +This PERL module is a free software licenced under LGPL v3 +http://www.gnu.org/licenses/lgpl-3.0-standalone.html + +=cut + +1; diff --git a/share/extensions/Makefile.am b/share/extensions/Makefile.am index 3dd64b6a9..dd92eb24c 100644 --- a/share/extensions/Makefile.am +++ b/share/extensions/Makefile.am @@ -38,6 +38,7 @@ extensions = \ color_replace.py\ cspsubdiv.py \ cubicsuperpath.py \ + cut-marks.pl \ dia2svg.sh \ dimension.py \ dots.py \ @@ -63,6 +64,7 @@ extensions = \ hpgl_output.py \ ill2svg.pl \ inkex.py \ + Inkscape.pm \ interp.py \ launch_webbrowser.py \ lindenmayer.py \ @@ -147,6 +149,7 @@ modules = \ color_removered.inx\ color_rgbbarrel.inx\ color_replace.inx\ + cut-marks.inx \ dia.inx \ dimension.inx \ dots.inx \ diff --git a/share/extensions/cut-marks.inx b/share/extensions/cut-marks.inx new file mode 100644 index 000000000..1f05ae6d9 --- /dev/null +++ b/share/extensions/cut-marks.inx @@ -0,0 +1,34 @@ + + + <_name>Add Cut Marks + org.inkscape.printing.addcutmarks + + + + ••••••••••••••••••••••••••••••••••••••••••••• + + <_param name="info1" type="description">The fields above are needed only if you don't use a rect: + + + cm + mm + in + px + + 1.0 + 1.0 + 1.0 + 1.5 + + + all + + + + + + + + diff --git a/share/extensions/cut-marks.pl b/share/extensions/cut-marks.pl new file mode 100644 index 000000000..dba846d09 --- /dev/null +++ b/share/extensions/cut-marks.pl @@ -0,0 +1,98 @@ +#!/usr/bin/perl + +BEGIN { + # adding the inkscape extension dir in the include path list. + my $path = `inkscape -x`; + $path =~ s/\r?\n//; + push @INC, $path; +} + +use strict; + +use Inkscape; +my $inkscape = Inkscape->new; + +my %args = $inkscape->getArgs(); +my $svg = $inkscape->getSVG(); + +my $unit = $args{unit}; +my $ml = $svg->convertUnit( $args{'margin-r'}.$unit, 'px' ); +my $mr = $svg->convertUnit( $args{'margin-l'}.$unit, 'px' ); +my $mt = $svg->convertUnit( $args{'margin-t'}.$unit, 'px' ); +my $mb = $svg->convertUnit( $args{'margin-b'}.$unit, 'px' ); + +my ( $cw, $ch ) = $svg->getCanvasSize( 'px' ); + +if ( $args{'use-rect'} ) { + if ( ! $args{id}[0] ) { + warn "You asked to use a rect to define the margin, but you didn\'t select an element.\n"; + exit 1; + } + $unit = ''; + my ( $x, $y ) = $svg->getElPosition( $args{id}[0] ); + my ( $w, $h ) = $svg->getElSize( $args{id}[0] ); + $mr = $x; + $ml = $cw - ( $x + $w ); + $mt = $y; + $mb = $ch - ( $y + $h ); +} + +# Positions for the cut lines: +my $cutR = $mr; +my $cutL = $cw - $ml; +my $cutT = $mt; +my $cutB = $ch - $mb; + +# Printing test attributes: +my $ptaCX = $cw - ( $ml / 2 ); +my $ptaCY = $ch / 4; +my $ptaR = $ml / 2.5; +$ptaR = $cw / 50 if ( ($cw / 50) < $ptaR ); +my $ptaBoxW = $ptaR / 1.5; + +my $theX = 'M '.($ptaCX-$ptaR).','.$ptaCY.' L '.($ptaCX+$ptaR).','.$ptaCY. + 'M '.$ptaCX.','.($ptaCY-$ptaR).' L '.$ptaCX.','.($ptaCY+$ptaR); + +sub generateGradientTest { + my ( $color, $x, $y ) = @_; + my $boxes = ''; + for ( my $i=0; $i<10; $i++ ) { + $boxes .= ''; + } + return $boxes; +} + +my $gradBoxes = + generateGradientTest( "#000", $ptaCX-$ptaBoxW-1, $ptaCY+$ptaR+10 ) . + generateGradientTest( "#FF0", $ptaCX+1, $ptaCY+$ptaR+10 ) . + generateGradientTest( "#0FF", $ptaCX-$ptaBoxW-1, $ptaCY+$ptaR+12+($ptaBoxW*10) ) . + generateGradientTest( "#F0F", $ptaCX+1, $ptaCY+$ptaR+12+($ptaBoxW*10) ); + +my $marks = < + + + + $gradBoxes + +END_XML + +$svg->{code} =~ s!!$marks!g; + +print $svg->{code}; diff --git a/share/extensions/dxf_input.inx b/share/extensions/dxf_input.inx index 8a37eff61..677e9f0bd 100644 --- a/share/extensions/dxf_input.inx +++ b/share/extensions/dxf_input.inx @@ -1,17 +1,16 @@ - <_name>DXF Input - org.inkscape.input.dxf - dxf2svg - org.inkscape.input.svg - - .dxf - image/x-svgz - <_filetypename>AutoCAD DXF (*.dxf) - <_filetypetooltip>Import AutoCAD's Document Exchange Format - org.inkscape.output.svg - - + <_name>DXF Input + org.inkscape.input.dxf + dxf_input.py + inkex.py + + .dxf + image/x-svgz + <_filetypename>AutoCAD DXF (*.dxf) + <_filetypetooltip>Import AutoCAD's Document Exchange Format + + diff --git a/share/extensions/dxf_input.py b/share/extensions/dxf_input.py new file mode 100644 index 000000000..7114d3447 --- /dev/null +++ b/share/extensions/dxf_input.py @@ -0,0 +1,198 @@ +#!/usr/bin/env python +''' +dxf_input.py - input a DXF file >= (AutoCAD Release 13 == AC1012) + +Copyright (C) 2008 Alvin Penner, penner@vaxxine.com + +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 +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +''' + +import inkex, simplestyle, math +from StringIO import StringIO + +def export_MTEXT(): + # mandatory group codes : (1, 10, 20) (text, x, y) + if vals[groups['1']] and vals[groups['10']] and vals[groups['20']]: + x = vals[groups['10']][0] + y = vals[groups['20']][0] + # optional group codes : (40, 50) (text height mm, text angle) + size = 12 # default fontsize in px + if vals[groups['40']]: + size = scale*vals[groups['40']][0] + attribs = {'x': '%f' % x, 'y': '%f' % y, 'style': 'font-size: %dpx' % size} + angle = 0 # default angle in degrees + if vals[groups['50']]: + angle = vals[groups['50']][0] + attribs.update({'transform': 'rotate (%f %f %f)' % (-angle, x, y)}) + node = inkex.etree.SubElement(doc.getroot(), 'text', attribs) + node.text = vals[groups['1']][0] + +def export_POINT(): + # mandatory group codes : (10, 20) (x, y) + if vals[groups['10']] and vals[groups['20']]: + generate_ellipse(vals[groups['10']][0], vals[groups['20']][0], w/2, 0.0, 1.0, 0.0, 0.0) + +def export_LINE(): + # mandatory group codes : (10, 11, 20, 21) (x1, x2, y1, y2) + if vals[groups['10']] and vals[groups['11']] and vals[groups['20']] and vals[groups['21']]: + path = 'M %f,%f %f,%f' % (vals[groups['10']][0], vals[groups['20']][0], scale*vals[groups['11']][0], height - scale*vals[groups['21']][0]) + attribs = {'d': path, 'style': style} + inkex.etree.SubElement(doc.getroot(), 'path', attribs) + +def export_SPLINE(): + # mandatory group codes : (10, 20, 70) (x, y, flags) + if vals[groups['10']] and vals[groups['20']] and vals[groups['70']]: + if vals[groups['70']][0] == 8 and len(vals[groups['10']]) == 4 and len(vals[groups['20']]) == 4: + path = 'M %f,%f C %f,%f %f,%f %f,%f' % (vals[groups['10']][0], vals[groups['20']][0], vals[groups['10']][1], vals[groups['20']][1], vals[groups['10']][2], vals[groups['20']][2], vals[groups['10']][3], vals[groups['20']][3]) + attribs = {'d': path, 'style': style} + inkex.etree.SubElement(doc.getroot(), 'path', attribs) + +def export_CIRCLE(): + # mandatory group codes : (10, 20, 40) (x, y, radius) + if vals[groups['10']] and vals[groups['20']] and vals[groups['40']]: + generate_ellipse(vals[groups['10']][0], vals[groups['20']][0], scale*vals[groups['40']][0], 0.0, 1.0, 0.0, 0.0) + +def export_ARC(): + # mandatory group codes : (10, 20, 40, 50, 51) (x, y, radius, angle1, angle2) + if vals[groups['10']] and vals[groups['20']] and vals[groups['40']] and vals[groups['50']] and vals[groups['51']]: + generate_ellipse(vals[groups['10']][0], vals[groups['20']][0], scale*vals[groups['40']][0], 0.0, 1.0, vals[groups['50']][0]*math.pi/180.0, vals[groups['51']][0]*math.pi/180.0) + +def export_ELLIPSE(): + # mandatory group codes : (10, 11, 20, 21, 40, 41, 42) (xc, xm, yc, ym, width ratio, angle1, angle2) + if vals[groups['10']] and vals[groups['11']] and vals[groups['20']] and vals[groups['21']] and vals[groups['40']] and vals[groups['41']] and vals[groups['42']]: + generate_ellipse(vals[groups['10']][0], vals[groups['20']][0], scale*vals[groups['11']][0], scale*vals[groups['21']][0], vals[groups['40']][0], vals[groups['41']][0], vals[groups['42']][0]) + +def export_LEADER(): + # mandatory group codes : (10, 20) (x, y) + if vals[groups['10']] and vals[groups['20']]: + if len(vals[groups['10']]) > 1 and len(vals[groups['20']]) == len(vals[groups['10']]): + path = 'M %f,%f' % (vals[groups['10']][0], vals[groups['20']][0]) + for i in range (1, len(vals[groups['10']])): + path += ' %f,%f' % (vals[groups['10']][i], vals[groups['20']][i]) + attribs = {'d': path, 'style': style} + inkex.etree.SubElement(doc.getroot(), 'path', attribs) + +def export_LWPOLYLINE(): + # mandatory group codes : (10, 20, 70) (x, y, flags) + if vals[groups['10']] and vals[groups['20']] and vals[groups['70']]: + if len(vals[groups['10']]) > 1 and len(vals[groups['20']]) == len(vals[groups['10']]): + # optional group codes : (42) (bulge) + iseqs = 0 + ibulge = 0 + while seqs[iseqs] != '20': + iseqs += 1 + path = 'M %f,%f' % (vals[groups['10']][0], vals[groups['20']][0]) + xold = vals[groups['10']][0] + yold = vals[groups['20']][0] + for i in range (1, len(vals[groups['10']])): + bulge = 0 + iseqs += 1 + while seqs[iseqs] != '20': + if seqs[iseqs] == '42': + bulge = vals[groups['42']][ibulge] + ibulge += 1 + iseqs += 1 + if bulge: + sweep = 0 # sweep CCW + if bulge < 0: + sweep = 1 # sweep CW + bulge = -bulge + large = 0 # large-arc-flag + if bulge > 1: + large = 1 + r = math.sqrt((vals[groups['10']][i] - xold)**2 + (vals[groups['20']][i] - yold)**2) + r = 0.25*r*(bulge + 1.0/bulge) + path += ' A %f,%f 0.0 %d %d %f,%f' % (r, r, large, sweep, vals[groups['10']][i], vals[groups['20']][i]) + else: + path += ' L %f,%f' % (vals[groups['10']][i], vals[groups['20']][i]) + xold = vals[groups['10']][i] + yold = vals[groups['20']][i] + if vals[groups['70']][0] == 1: # closed path + path += ' z' + attribs = {'d': path, 'style': style} + inkex.etree.SubElement(doc.getroot(), 'path', attribs) + +def generate_ellipse(xc, yc, xm, ym, w, a1, a2): + rm = math.sqrt(xm*xm + ym*ym) + a = math.atan(ym/xm) + if xm < 0: + a += math.pi + diff = (a2 - a1 + 2*math.pi) % (2*math.pi) + if diff: # open arc + large = 0 # large-arc-flag + if diff > math.pi: + large = 1 + xt = rm*math.cos(a1) + yt = w*rm*math.sin(a1) + x1 = xt*math.cos(a) - yt*math.sin(a) + y1 = xt*math.sin(a) + yt*math.cos(a) + xt = rm*math.cos(a2) + yt = w*rm*math.sin(a2) + x2 = xt*math.cos(a) - yt*math.sin(a) + y2 = xt*math.sin(a) + yt*math.cos(a) + path = 'M %f,%f A %f,%f %f %d 0 %f,%f' % (xc+x1, yc-y1, rm, w*rm, -180.0*a/math.pi, large, xc+x2, yc-y2) + else: # closed arc + path = 'M %f,%f A %f,%f %f 1 0 %f,%f %f,%f %f 1 0 %f,%f z' % (xc+xm, yc-ym, rm, w*rm, -180.0*a/math.pi, xc-xm, yc+ym, rm, w*rm, -180.0*a/math.pi, xc+xm, yc-ym) + attribs = {'d': path, 'style': style} + inkex.etree.SubElement(doc.getroot(), 'path', attribs) + +def get_line(): + return (stream.readline().strip(), stream.readline().strip()) + +# define DXF Entities and specify which Group Codes to monitor + +entities = {'MTEXT': export_MTEXT, 'POINT': export_POINT, 'LINE': export_LINE, 'SPLINE': export_SPLINE, 'CIRCLE': export_CIRCLE, 'ARC': export_ARC, 'ELLIPSE': export_ELLIPSE, 'LEADER': export_LEADER, 'LWPOLYLINE': export_LWPOLYLINE, 'ENDSEC': ''} +groups = {'1': 0, '10': 1, '11': 2, '20': 3, '21': 4, '40': 5, '41': 6, '42': 7, '50': 8, '51': 9, '70': 10, '370': 11} +scale = 90.0/25.4 # convert from mm to pixels +height = 90.0*11.0 # 11 inch height in pixels +entity = '' + +doc = inkex.etree.parse(StringIO('')) +stream = open(inkex.sys.argv[1], 'r') +line = get_line() +while line[0] and line[1] != 'ENTITIES': + line = get_line() + +while line[0] and line[1] != 'ENDSEC': + line = get_line() + if entity and groups.has_key(line[0]): + seqs.append(line[0]) # list of group codes + if line[0] == '1': # text value + val = line[1].replace('\~', ' ') + elif line[0] == '70': # unscaled integer value + val = int(line[1]) + elif line[0] == '10': # scaled float x value + val = scale*float(line[1]) + elif line[0] == '20': # scaled float y value + val = height - scale*float(line[1]) + else: # unscaled float value + val = float(line[1]) + vals[groups[line[0]]].append(val) + elif entities.has_key(line[1]): + if entities.has_key(entity): + style = simplestyle.formatStyle({'stroke': '#000000', 'fill': 'none'}) + w = 0.5 # default lineweight for POINT + if vals[groups['370']]: # Common Lineweight + if vals[groups['370']][0] > 0: + w = scale*vals[groups['370']][0]/100.0 + style = simplestyle.formatStyle({'stroke': '#000000', 'fill': 'none', 'stroke-width': '%.1f' % w}) + entities[entity]() + entity = line[1] + vals = [[],[],[],[],[],[],[],[],[],[],[],[]] + seqs = [] + +doc.write(inkex.sys.stdout) + +# vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 encoding=utf-8 textwidth=99 diff --git a/share/extensions/simpletransform.py b/share/extensions/simpletransform.py index 568b8d80d..b2f6a0e96 100644 --- a/share/extensions/simpletransform.py +++ b/share/extensions/simpletransform.py @@ -27,10 +27,10 @@ def parseTransform(transf,mat=[[1.0,0.0,0.0],[0.0,1.0,0.0]]): if transf=="" or transf==None: return(mat) stransf = transf.strip() - result=re.match("(translate|scale|rotate|skewX|skewY|matrix)\s*\(([^)]*)\)",stransf) + result=re.match("(translate|scale|rotate|skewX|skewY|matrix)\s*\(([^)]*)\)\s*,?",stransf) #-- translate -- if result.group(1)=="translate": - args=result.group(2).replace(' ',',').split(",") + args=result.group(2).replace(',',' ').split() dx=float(args[0]) if len(args)==1: dy=0.0 @@ -39,7 +39,7 @@ def parseTransform(transf,mat=[[1.0,0.0,0.0],[0.0,1.0,0.0]]): matrix=[[1,0,dx],[0,1,dy]] #-- scale -- if result.group(1)=="scale": - args=result.group(2).replace(' ',',').split(",") + args=result.group(2).replace(',',' ').split() sx=float(args[0]) if len(args)==1: sy=sx @@ -48,7 +48,7 @@ def parseTransform(transf,mat=[[1.0,0.0,0.0],[0.0,1.0,0.0]]): matrix=[[sx,0,0],[0,sy,0]] #-- rotate -- if result.group(1)=="rotate": - args=result.group(2).replace(' ',',').split(",") + args=result.group(2).replace(',',' ').split() a=float(args[0])*math.pi/180 if len(args)==1: cx,cy=(0.0,0.0) @@ -65,7 +65,7 @@ def parseTransform(transf,mat=[[1.0,0.0,0.0],[0.0,1.0,0.0]]): matrix=[[1,0,0],[math.tan(a),1,0]] #-- matrix -- if result.group(1)=="matrix": - a11,a21,a12,a22,v1,v2=result.group(2).replace(' ',',').split(",") + a11,a21,a12,a22,v1,v2=result.group(2).replace(',',' ').split() matrix=[[float(a11),float(a12),float(v1)],[float(a21),float(a22),float(v2)]] matrix=composeTransform(mat,matrix) diff --git a/share/filters/Makefile.am b/share/filters/Makefile.am new file mode 100644 index 000000000..8da20a47f --- /dev/null +++ b/share/filters/Makefile.am @@ -0,0 +1,8 @@ + +filtersdir = $(datadir)/inkscape/filters + +filters_DATA = \ + README \ + filters.svg + +EXTRA_DIST = $(filters_DATA) diff --git a/share/filters/README b/share/filters/README new file mode 100644 index 000000000..727f080a6 --- /dev/null +++ b/share/filters/README @@ -0,0 +1,12 @@ +This directory is for the custom SVG filters. +Inkscape loads filters from all SVG files here at runtime +and makes them accessible via the Effects > Filters and its submenus. + +Each filter must have attributes: + +inkscape:label is the name in the menu +inkscape:menu is the submenu under Effects > Filters +inkscape:menu-tooltip is the menu command's tooltip in the statusbar + + + diff --git a/share/filters/filters.svg b/share/filters/filters.svg new file mode 100644 index 000000000..7105d668f --- /dev/null +++ b/share/filters/filters.svg @@ -0,0 +1,461 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/share/keys/default.xml b/share/keys/default.xml index e5e5d43aa..c52e45608 100644 --- a/share/keys/default.xml +++ b/share/keys/default.xml @@ -152,6 +152,10 @@ override) the bindings in the main default.xml. + + + + @@ -466,7 +470,9 @@ override) the bindings in the main default.xml. - + + + diff --git a/share/keys/inkscape.xml b/share/keys/inkscape.xml index 4c9f686f4..e5ef7d430 100644 --- a/share/keys/inkscape.xml +++ b/share/keys/inkscape.xml @@ -150,6 +150,10 @@ override) the bindings in the main default.xml. + + + + @@ -460,7 +464,9 @@ override) the bindings in the main default.xml. - + + + diff --git a/share/templates/LaTeX_Beamer.svg b/share/templates/LaTeX_Beamer.svg index 16fba0a2f..43e49ea29 100644 --- a/share/templates/LaTeX_Beamer.svg +++ b/share/templates/LaTeX_Beamer.svg @@ -22,9 +22,6 @@ pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" - gridtolerance="10000" - guidetolerance="8.8" - objecttolerance="10" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="1.540463" diff --git a/share/templates/default.ca.svg b/share/templates/default.ca.svg index dd85a841e..f8fb8c4cf 100644 --- a/share/templates/default.ca.svg +++ b/share/templates/default.ca.svg @@ -16,9 +16,6 @@ pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" - gridtolerance="10000" - guidetolerance="10" - objecttolerance="10" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.35" diff --git a/share/templates/default.fi.svg b/share/templates/default.fi.svg index 9f5b87e6d..0a7b41c2b 100644 --- a/share/templates/default.fi.svg +++ b/share/templates/default.fi.svg @@ -29,7 +29,6 @@ inkscape:cy="520" inkscape:document-units="px" inkscape:current-layer="layer1" - gridtolerance="10000" inkscape:window-width="877" inkscape:window-height="739" inkscape:window-x="177" diff --git a/share/templates/default.svg b/share/templates/default.svg index 17697c4e8..a6a610fdb 100644 --- a/share/templates/default.svg +++ b/share/templates/default.svg @@ -16,9 +16,6 @@ pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" - gridtolerance="10000" - guidetolerance="10" - objecttolerance="10" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.35" diff --git a/share/templates/fontforge_glyph.svg b/share/templates/fontforge_glyph.svg index 707b98d15..35ebf2824 100644 --- a/share/templates/fontforge_glyph.svg +++ b/share/templates/fontforge_glyph.svg @@ -32,9 +32,6 @@ inkscape:window-width="641" inkscape:pageshadow="2" inkscape:pageopacity="0.0" - guidetolerance="10.0" - gridtolerance="10.0" - objecttolerance="10.0" borderopacity="1.0" bordercolor="#666666" pagecolor="#ffffff" diff --git a/src/2geom/bezier-curve.h b/src/2geom/bezier-curve.h index 135aa4f71..589335d22 100644 --- a/src/2geom/bezier-curve.h +++ b/src/2geom/bezier-curve.h @@ -104,15 +104,16 @@ public: void setPoint(unsigned ix, Point v) { inner[X].setPoint(ix, v[X]); inner[Y].setPoint(ix, v[Y]); } Point const operator[](unsigned ix) const { return Point(inner[X][ix], inner[Y][ix]); } - Rect boundsFast() const { return bounds_fast(inner); } - Rect boundsExact() const { return bounds_exact(inner); } - Rect boundsLocal(Interval i, unsigned deg) const { - if(i.min() == 0 && i.max() == 1) return boundsFast(); + virtual OptRect boundsFast() const { return bounds_fast(inner); } + virtual OptRect boundsExact() const { return bounds_exact(inner); } + virtual OptRect boundsLocal(OptInterval i, unsigned deg) const { + if (!i) return OptRect(); + if(i->min() == 0 && i->max() == 1) return boundsFast(); if(deg == 0) return bounds_local(inner, i); // TODO: UUUUUUGGGLLY - if(deg == 1 && order > 1) return Rect(bounds_local(Geom::derivative(inner[X]), i), - bounds_local(Geom::derivative(inner[Y]), i)); - return Rect(Interval(0,0), Interval(0,0)); + if(deg == 1 && order > 1) return OptRect(bounds_local(Geom::derivative(inner[X]), i), + bounds_local(Geom::derivative(inner[Y]), i)); + return OptRect(); } //TODO: local diff --git a/src/2geom/bezier.h b/src/2geom/bezier.h index 94dd909ca..889dde9ed 100644 --- a/src/2geom/bezier.h +++ b/src/2geom/bezier.h @@ -72,7 +72,7 @@ private: friend Bezier portion(const Bezier & a, Coord from, Coord to); - friend Interval bounds_fast(Bezier const & b); + friend OptInterval bounds_fast(Bezier const & b); friend Bezier derivative(const Bezier & a); @@ -185,10 +185,9 @@ public: std::vector valueAndDerivatives(Coord t, unsigned n_derivs) const { std::vector val_n_der; Coord d_[order()+1]; - unsigned nn = n_derivs + 1; // the size of the result vector equals n_derivs+1 + unsigned nn = n_derivs + 1; // the size of the result vector equals n_derivs+1 ... if(nn > order()) - //nn = order(); - nn = order()+1; + nn = order()+1; // .. but with a maximum of order() + 1! for(unsigned i = 0; i < size(); i++) d_[i] = c_[i]; for(unsigned di = 0; di < nn; di++) { @@ -309,18 +308,22 @@ inline Bezier integral(const Bezier & a) { return inte; } -inline Interval bounds_fast(Bezier const & b) { +inline OptInterval bounds_fast(Bezier const & b) { return Interval::fromArray(&b.c_[0], b.size()); } //TODO: better bounds exact -inline Interval bounds_exact(Bezier const & b) { +inline OptInterval bounds_exact(Bezier const & b) { return bounds_exact(b.toSBasis()); } -inline Interval bounds_local(Bezier const & b, Interval i) { - return bounds_fast(portion(b, i.min(), i.max())); +inline OptInterval bounds_local(Bezier const & b, OptInterval i) { //return bounds_local(b.toSBasis(), i); + if (i) { + return bounds_fast(portion(b, i->min(), i->max())); + } else { + return OptInterval(); + } } inline std::ostream &operator<< (std::ostream &out_file, const Bezier & b) { diff --git a/src/2geom/concepts.h b/src/2geom/concepts.h index 8f4d98ef2..9c57db44d 100644 --- a/src/2geom/concepts.h +++ b/src/2geom/concepts.h @@ -37,21 +37,20 @@ #include <2geom/point.h> #include #include +#include <2geom/forward.h> namespace Geom { //forward decls -template class D2; - template struct ResultTraits; template <> struct ResultTraits { - typedef Interval bounds_type; + typedef OptInterval bounds_type; typedef SBasis sb_type; }; template <> struct ResultTraits { - typedef D2 bounds_type; + typedef OptRect bounds_type; typedef D2 sb_type; }; diff --git a/src/2geom/crossing.h b/src/2geom/crossing.h index 291f69382..3ad034ac9 100644 --- a/src/2geom/crossing.h +++ b/src/2geom/crossing.h @@ -120,7 +120,12 @@ typedef std::vector CrossingSet; template std::vector bounds(C const &a) { std::vector rs; - for(unsigned i = 0; i < a.size(); i++) rs.push_back(a[i].boundsFast()); + for (unsigned i = 0; i < a.size(); i++) { + OptRect bb = a[i].boundsFast(); + if (bb) { + rs.push_back(*bb); + } + } return rs; } diff --git a/src/2geom/curve.h b/src/2geom/curve.h index b81548ba8..af02d6edb 100644 --- a/src/2geom/curve.h +++ b/src/2geom/curve.h @@ -74,10 +74,10 @@ public: virtual Curve *duplicate() const = 0; - virtual Rect boundsFast() const = 0; - virtual Rect boundsExact() const = 0; - virtual Rect boundsLocal(Interval i, unsigned deg) const = 0; - Rect boundsLocal(Interval i) const { return boundsLocal(i, 0); } + virtual OptRect boundsFast() const = 0; + virtual OptRect boundsExact() const = 0; + virtual OptRect boundsLocal(OptInterval i, unsigned deg) const = 0; + OptRect boundsLocal(OptInterval i) const { return boundsLocal(i, 0); } virtual std::vector roots(double v, Dim2 d) const = 0; @@ -133,12 +133,12 @@ public: */ virtual Point unitTangentAt(Coord t, unsigned n = 3) const { - for (unsigned deriv_n = 1; deriv_n <= n; deriv_n++) { - Point deriv = pointAndDerivatives(t, deriv_n)[deriv_n]; - Coord length = deriv.length(); + std::vector derivs = pointAndDerivatives(t, n); + for (unsigned deriv_n = 1; deriv_n < derivs.size(); deriv_n++) { + Coord length = derivs[deriv_n].length(); if ( ! are_near(length, 0) ) { // length of derivative is non-zero, so return unit vector - return deriv / length; + derivs[deriv_n] / length; } } return Point (0,0); diff --git a/src/2geom/d2-sbasis.cpp b/src/2geom/d2-sbasis.cpp index 01f83bf5e..55c7ef55e 100644 --- a/src/2geom/d2-sbasis.cpp +++ b/src/2geom/d2-sbasis.cpp @@ -150,6 +150,81 @@ split_at_discontinuities (Geom::Piecewise > const & pwsbi return ret; } +static void set_first_point(Piecewise > &f, Point a){ + if ( f.empty() ){ + f.concat(Piecewise >(D2(Linear(a[X]),Linear(a[Y])))); + return; + } + for (unsigned dim=0; dim<2; dim++){ + if (f.segs.front()[dim].size() == 0){ + f.segs.front()[dim].push_back(Linear(a[dim],0)); + }else{ + f.segs.front()[dim][0][0] = a[dim]; + } + } +} +static void set_last_point(Piecewise > &f, Point a){ + if ( f.empty() ){ + f.concat(Piecewise >(D2(Linear(a[X]),Linear(a[Y])))); + return; + } + for (unsigned dim=0; dim<2; dim++){ + if (f.segs.back()[dim].size() == 0){ + f.segs.back()[dim].push_back(Linear(0,a[dim])); + }else{ + f.segs.back()[dim][0][1] = a[dim]; + } + } +} + +std::vector > > fuse_nearby_ends(std::vector > > const &f, double tol){ + + if ( f.size()==0 ) return f; + std::vector > > result; + std::vector > pre_result; + for (unsigned i=0; i()); + pre_result.back().push_back(i); + } + } + for (unsigned i=0; i > comp; + for (unsigned j=0; j > new_comp = f.at(pre_result[i][j]); + if ( j>0 ){ + set_first_point( new_comp, comp.segs.back().at1() ); + } + comp.concat(new_comp); + } + if ( L2(comp.firstValue()-comp.lastValue()) < tol ){ + //TODO: check sizes!!! + set_last_point( comp, comp.segs.front().at0() ); + } + result.push_back(comp); + } + return result; + return f; +} + + } // namespace Geom diff --git a/src/2geom/d2-sbasis.h b/src/2geom/d2-sbasis.h index dd1a8e11c..c61052da7 100644 --- a/src/2geom/d2-sbasis.h +++ b/src/2geom/d2-sbasis.h @@ -79,6 +79,8 @@ Piecewise > operator*(Piecewise > const &a, Matrix const & Piecewise > force_continuity(Piecewise > const &f, double tol=0, bool closed=false); +std::vector > > fuse_nearby_ends(std::vector > > const &f, double tol=0); + std::vector > > split_at_discontinuities (Geom::Piecewise > const & pwsbin, double tol = .0001); class CoordIterator @@ -114,13 +116,25 @@ inline CoordIterator iterateCoord(Piecewise > const &a, unsigned d) { } //bounds specializations with order -inline Rect bounds_fast(D2 const & s, unsigned order=0) { - return Rect(bounds_fast(s[X], order), - bounds_fast(s[Y], order)); +inline OptRect bounds_fast(D2 const & s, unsigned order=0) { + OptRect retval; + OptInterval xint = bounds_fast(s[X], order); + if (xint) { + OptInterval yint = bounds_fast(s[Y], order); + if (yint) { + retval = Rect(*xint, *yint); + } + } + return retval; } -inline Rect bounds_local(D2 const & s, Interval i, unsigned order=0) { - return Rect(bounds_local(s[X], i, order), - bounds_local(s[Y], i, order)); +inline OptRect bounds_local(D2 const & s, OptInterval i, unsigned order=0) { + OptRect retval; + OptInterval xint = bounds_local(s[X], i, order); + OptInterval yint = bounds_local(s[Y], i, order); + if (xint && yint) { + retval = Rect(*xint, *yint); + } + return retval; } } diff --git a/src/2geom/d2.h b/src/2geom/d2.h index 7e2bbae53..a14e3b0eb 100644 --- a/src/2geom/d2.h +++ b/src/2geom/d2.h @@ -400,19 +400,19 @@ namespace Geom{ //Some D2 Fragment implementation which requires rect: template -Rect bounds_fast(const D2 &a) { - boost::function_requires >(); - return Rect(bounds_fast(a[X]), bounds_fast(a[Y])); +OptRect bounds_fast(const D2 &a) { + boost::function_requires >(); + return OptRect(bounds_fast(a[X]), bounds_fast(a[Y])); } template -Rect bounds_exact(const D2 &a) { - boost::function_requires >(); - return Rect(bounds_exact(a[X]), bounds_exact(a[Y])); +OptRect bounds_exact(const D2 &a) { + boost::function_requires >(); + return OptRect(bounds_exact(a[X]), bounds_exact(a[Y])); } template -Rect bounds_local(const D2 &a, const Interval &t) { - boost::function_requires >(); - return Rect(bounds_local(a[X], t), bounds_local(a[Y], t)); +OptRect bounds_local(const D2 &a, const OptInterval &t) { + boost::function_requires >(); + return OptRect(bounds_local(a[X], t), bounds_local(a[Y], t)); } }; diff --git a/src/2geom/elliptical-arc.cpp b/src/2geom/elliptical-arc.cpp index bf2b72b63..f2b6b6be2 100644 --- a/src/2geom/elliptical-arc.cpp +++ b/src/2geom/elliptical-arc.cpp @@ -31,6 +31,7 @@ #include <2geom/elliptical-arc.h> #include <2geom/bezier-curve.h> #include <2geom/poly.h> +#include <2geom/sbasis-math.h> #include #include @@ -42,7 +43,7 @@ namespace Geom { -Rect EllipticalArc::boundsExact() const +OptRect EllipticalArc::boundsExact() const { std::vector extremes(4); double cosrot = std::cos(rotation_angle()); diff --git a/src/2geom/elliptical-arc.h b/src/2geom/elliptical-arc.h index 24b4fcf46..25c79a363 100644 --- a/src/2geom/elliptical-arc.h +++ b/src/2geom/elliptical-arc.h @@ -168,17 +168,17 @@ class EllipticalArc : public Curve } - Rect boundsFast() const + virtual OptRect boundsFast() const { - return boundsExact(); + return boundsExact(); } - Rect boundsExact() const; + virtual OptRect boundsExact() const; // TODO: native implementation of the following methods - Rect boundsLocal(Interval i, unsigned int deg) const + virtual OptRect boundsLocal(OptInterval i, unsigned int deg) const { - return SBasisCurve(toSBasis()).boundsLocal(i, deg); + return SBasisCurve(toSBasis()).boundsLocal(i, deg); } std::vector roots(double v, Dim2 d) const; diff --git a/src/2geom/forward.h b/src/2geom/forward.h index 184801ef4..15740faf0 100644 --- a/src/2geom/forward.h +++ b/src/2geom/forward.h @@ -62,6 +62,7 @@ class NotInvertible; class ContinuityError; class Interval; +class OptInterval; class Linear; class Hat; class Tri; @@ -81,6 +82,7 @@ class SBasis; class SBasisCurve; typedef D2 Rect; +class OptRect; class Shape; class Region; diff --git a/src/2geom/geom.cpp b/src/2geom/geom.cpp index d0689981a..f9b1a664b 100644 --- a/src/2geom/geom.cpp +++ b/src/2geom/geom.cpp @@ -9,6 +9,7 @@ #include <2geom/geom.h> #include <2geom/point.h> #include +#include <2geom/rect.h> namespace Geom { @@ -313,6 +314,14 @@ rect_line_intersect(Geom::Point const &c0, Geom::Point const &c1, return results; } +std::vector +rect_line_intersect(Geom::Rect &r, + Geom::Point const &p0, Geom::Point const &p1) +{ + return rect_line_intersect(r.min(), r.max(), p0, p1); +} + + /** * polyCentroid: Calculates the centroid (xCentroid, yCentroid) and area of a polygon, given its * vertices (x[0], y[0]) ... (x[n-1], y[n-1]). It is assumed that the contour is closed, i.e., that diff --git a/src/2geom/geom.h b/src/2geom/geom.h index aeb40f7e1..d0af7d7d2 100644 --- a/src/2geom/geom.h +++ b/src/2geom/geom.h @@ -38,6 +38,7 @@ #include #include <2geom/point.h> +#include <2geom/rect.h> namespace Geom { @@ -73,6 +74,11 @@ std::vector rect_line_intersect(Geom::Point const &E, Geom::Point const &F, Geom::Point const &p0, Geom::Point const &p1); + +std::vector +rect_line_intersect(Geom::Rect &r, + Geom::Point const &p0, Geom::Point const &p1); + int centroid(std::vector p, Geom::Point& centroid, double &area); } diff --git a/src/2geom/hvlinesegment.h b/src/2geom/hvlinesegment.h index 3e1287682..ccb95afdb 100644 --- a/src/2geom/hvlinesegment.h +++ b/src/2geom/hvlinesegment.h @@ -116,17 +116,17 @@ class HLineSegment : public Curve m_line_seg.setFinal( Point(finalPoint()[X], _y) ); } - Rect boundsFast() const + virtual OptRect boundsFast() const { return boundsExact(); } - Rect boundsExact() const + virtual OptRect boundsExact() const { return Rect( initialPoint(), finalPoint() ); } - Rect boundsLocal(Interval i, unsigned deg) const + virtual OptRect boundsLocal(OptInterval i, unsigned deg) const { return m_line_seg.boundsLocal(i, deg); } @@ -355,17 +355,17 @@ class VLineSegment : public Curve m_line_seg.setFinal( Point(_x, finalPoint()[Y]) ); } - Rect boundsFast() const + virtual OptRect boundsFast() const { return boundsExact(); } - Rect boundsExact() const + virtual OptRect boundsExact() const { return Rect( initialPoint(), finalPoint() ); } - Rect boundsLocal(Interval i, unsigned deg) const + virtual OptRect boundsLocal(OptInterval i, unsigned deg) const { return m_line_seg.boundsLocal(i, deg); } diff --git a/src/2geom/interval.h b/src/2geom/interval.h index 8f7a0b2a1..009528586 100644 --- a/src/2geom/interval.h +++ b/src/2geom/interval.h @@ -44,17 +44,20 @@ namespace Geom { -/* Although an Interval where _b[0] > _b[1] is considered empty, for proper functioning of other methods, - * a proper empty Interval is [+infinity, -infinity]. Then, expandTo(p) will set the interval to [p,p]. +class Interval; + +/** + * \brief This class represents a range of numbers that is never empty. + * + * The endpoints are included in the range. */ class Interval { private: Coord _b[2]; public: - // The default constructor creates an empty interval, that ranges from +infinity to -infinity. - // Doing an expandTo(p) on this empty interval will correctly set the whole interval to [p,p]. - explicit Interval() { _b[0] = +infinity(); _b[1] = -infinity(); } + /// The default constructor creates an interval [0,0] DO NOT RELY ON THIS, BEST NOT TO USE THIS CONSTRUCTOR + explicit Interval() { _b[0] = 0; _b[1] = 0; } explicit Interval(Coord u) { _b[0] = _b[1] = u; } /* When creating an Interval using the constructor specifying the exact range, the created interval * will be [u,v] when u<=v ; and will be [v,u] when v < u !!! @@ -78,7 +81,8 @@ public: inline Coord extent() const { return _b[1] - _b[0]; } inline Coord middle() const { return (_b[1] + _b[0]) * 0.5; } - inline bool isEmpty() const { return _b[0] > _b[1]; } +// inline bool isEmpty() const { return _b[0] > _b[1]; } + inline bool isSingular() const { return _b[0] == _b[1]; } inline bool contains(Coord val) const { return _b[0] <= val && val <= _b[1]; } bool contains(const Interval & val) const { return _b[0] <= val._b[0] && val._b[1] <= _b[1]; } bool intersects(const Interval & val) const { @@ -167,9 +171,15 @@ public: return result; } + /** When this would create an empty interval, the interval will be the centerpoint of the old range only. + */ inline void expandBy(double amnt) { _b[0] -= amnt; _b[1] += amnt; + if (_b[0] > _b[1]) { + Coord halfway = (_b[0]+_b[1])/2; + _b[0] = _b[1] = halfway; + } } inline void unionWith(const Interval & a) { @@ -214,12 +224,42 @@ inline Interval unify(const Interval & a, const Interval & b) { return Interval(std::min(a.min(), b.min()), std::max(a.max(), b.max())); } -inline boost::optional intersect(const Interval & a, const Interval & b) { + +/** + * \brief OptInterval is an Interval that can be empty. + */ +class OptInterval : public boost::optional { +public: + OptInterval() : boost::optional() {}; + OptInterval(Interval const &a) : boost::optional(a) {}; + OptInterval(Coord u) : boost::optional(Interval(u)) {}; + OptInterval(Coord u, Coord v) : boost::optional(Interval(u,v)) {}; + + /** + * Check whether this OptInterval is empty or not. + */ + inline bool isEmpty() { return (*this == false); }; + + /** + * If \c this is empty, copy argument \c a. Otherwise, union with it (and do nothing when \c a is empty) + */ + inline void unionWith(const OptInterval & a) { + if (a) { + if (*this) { // check that we are not empty + (*this)->unionWith(*a); + } else { + *this = a; + } + } + } +}; + +inline OptInterval intersect(const Interval & a, const Interval & b) { Coord u = std::max(a.min(), b.min()), v = std::min(a.max(), b.max()); //technically >= might be incorrect, but singulars suck - return u >= v ? boost::optional() - : boost::optional(Interval(u, v)); + return u >= v ? OptInterval() + : OptInterval(Interval(u, v)); } } diff --git a/src/2geom/linear.h b/src/2geom/linear.h index 4594e17be..e8828b283 100644 --- a/src/2geom/linear.h +++ b/src/2geom/linear.h @@ -37,6 +37,15 @@ #include <2geom/interval.h> #include <2geom/isnan.h> + +//#define USE_SBASIS_OF + +#ifdef USE_SBASIS_OF + +#include "linear-of.h" + +#else + namespace Geom{ inline double lerp(double t, double a, double b) { return a*(1-t) + b*t; } @@ -100,9 +109,9 @@ public: //defined in sbasis.h inline SBasis toSBasis() const; - inline Interval bounds_exact() const { return Interval(a[0], a[1]); } - inline Interval bounds_fast() const { return bounds_exact(); } - inline Interval bounds_local(double u, double v) const { return Interval(valueAt(u), valueAt(v)); } + inline OptInterval bounds_exact() const { return Interval(a[0], a[1]); } + inline OptInterval bounds_fast() const { return bounds_exact(); } + inline OptInterval bounds_local(double u, double v) const { return Interval(valueAt(u), valueAt(v)); } operator Tri() const { return a[1] - a[0]; @@ -169,7 +178,9 @@ inline Linear operator/=(Linear & a, double b) { a[0] /= b; a[1] /= b; return a; } -}; + +} +#endif #endif //SEEN_LINEAR_H diff --git a/src/2geom/nearest-point.cpp b/src/2geom/nearest-point.cpp index 705767f13..71beab9cb 100644 --- a/src/2geom/nearest-point.cpp +++ b/src/2geom/nearest-point.cpp @@ -50,34 +50,34 @@ namespace Geom */ double nearest_point( Point const& p, - D2 const& c, - D2 const& dc, - double from, double to ) + D2 const& c, + D2 const& dc, + double from, double to ) { - if ( from > to ) std::swap(from, to); - if ( from < 0 || to > 1 ) - { - THROW_RANGEERROR("[from,to] interval out of bounds"); - } - if (c.isConstant()) return from; - SBasis dd = dot(c - p, dc); - std::vector zeros = Geom::roots(dd); + if ( from > to ) std::swap(from, to); + if ( from < 0 || to > 1 ) + { + THROW_RANGEERROR("[from,to] interval out of bounds"); + } + if (c.isConstant()) return from; + SBasis dd = dot(c - p, dc); + std::vector zeros = Geom::roots(dd); - double closest = from; - double min_dist_sq = L2sq(c(from) - p); - double distsq; - for ( unsigned int i = 0; i < zeros.size(); ++i ) - { - distsq = L2sq(c(zeros[i]) - p); - if ( min_dist_sq > L2sq(c(zeros[i]) - p) ) - { - closest = zeros[i]; - min_dist_sq = distsq; - } - } - if ( min_dist_sq > L2sq( c(to) - p ) ) - closest = to; - return closest; + double closest = from; + double min_dist_sq = L2sq(c(from) - p); + double distsq; + for ( unsigned int i = 0; i < zeros.size(); ++i ) + { + distsq = L2sq(c(zeros[i]) - p); + if ( min_dist_sq > L2sq(c(zeros[i]) - p) ) + { + closest = zeros[i]; + min_dist_sq = distsq; + } + } + if ( min_dist_sq > L2sq( c(to) - p ) ) + closest = to; + return closest; } @@ -89,54 +89,54 @@ double nearest_point( Point const& p, std::vector all_nearest_points( Point const& p, - D2 const& c, - D2 const& dc, - double from, double to ) + D2 const& c, + D2 const& dc, + double from, double to ) { - std::swap(from, to); - if ( from > to ) std::swap(from, to); - if ( from < 0 || to > 1 ) - { - THROW_RANGEERROR("[from,to] interval out of bounds"); - } + std::swap(from, to); + if ( from > to ) std::swap(from, to); + if ( from < 0 || to > 1 ) + { + THROW_RANGEERROR("[from,to] interval out of bounds"); + } - std::vector result; - if (c.isConstant()) - { - result.push_back(from); - return result; - } - SBasis dd = dot(c - p, dc); + std::vector result; + if (c.isConstant()) + { + result.push_back(from); + return result; + } + SBasis dd = dot(c - p, dc); - std::vector zeros = Geom::roots(dd); - std::vector candidates; - candidates.push_back(from); - candidates.insert(candidates.end(), zeros.begin(), zeros.end()); - candidates.push_back(to); - std::vector distsq; - distsq.reserve(candidates.size()); - for ( unsigned int i = 0; i < candidates.size(); ++i ) - { - distsq.push_back( L2sq(c(candidates[i]) - p) ); - } - unsigned int closest = 0; - double dsq = distsq[0]; - for ( unsigned int i = 1; i < candidates.size(); ++i ) - { - if ( dsq > distsq[i] ) - { - closest = i; - dsq = distsq[i]; - } - } - for ( unsigned int i = 0; i < candidates.size(); ++i ) - { - if( distsq[closest] == distsq[i] ) - { - result.push_back(candidates[i]); - } - } - return result; + std::vector zeros = Geom::roots(dd); + std::vector candidates; + candidates.push_back(from); + candidates.insert(candidates.end(), zeros.begin(), zeros.end()); + candidates.push_back(to); + std::vector distsq; + distsq.reserve(candidates.size()); + for ( unsigned int i = 0; i < candidates.size(); ++i ) + { + distsq.push_back( L2sq(c(candidates[i]) - p) ); + } + unsigned int closest = 0; + double dsq = distsq[0]; + for ( unsigned int i = 1; i < candidates.size(); ++i ) + { + if ( dsq > distsq[i] ) + { + closest = i; + dsq = distsq[i]; + } + } + for ( unsigned int i = 0; i < candidates.size(); ++i ) + { + if( distsq[closest] == distsq[i] ) + { + result.push_back(candidates[i]); + } + } + return result; } @@ -145,141 +145,141 @@ all_nearest_points( Point const& p, double nearest_point( Point const& p, - Piecewise< D2 > const& c, - double from, double to ) + Piecewise< D2 > const& c, + double from, double to ) { - if ( from > to ) std::swap(from, to); - if ( from < c.cuts[0] || to > c.cuts[c.size()] ) - { - THROW_RANGEERROR("[from,to] interval out of bounds"); - } + if ( from > to ) std::swap(from, to); + if ( from < c.cuts[0] || to > c.cuts[c.size()] ) + { + THROW_RANGEERROR("[from,to] interval out of bounds"); + } - unsigned int si = c.segN(from); - unsigned int ei = c.segN(to); - if ( si == ei ) - { - double nearest= - nearest_point(p, c[si], c.segT(from, si), c.segT(to, si)); - return c.mapToDomain(nearest, si); - } - double t; - double nearest = nearest_point(p, c[si], c.segT(from, si)); - unsigned int ni = si; - double dsq; - double mindistsq = distanceSq(p, c[si](nearest)); - Rect bb; - for ( unsigned int i = si + 1; i < ei; ++i ) - { - bb = bounds_fast(c[i]); - dsq = distanceSq(p, bb); - if ( mindistsq <= dsq ) continue; - t = nearest_point(p, c[i]); - dsq = distanceSq(p, c[i](t)); - if ( mindistsq > dsq ) - { - nearest = t; - ni = i; - mindistsq = dsq; - } - } - bb = bounds_fast(c[ei]); - dsq = distanceSq(p, bb); - if ( mindistsq > dsq ) - { - t = nearest_point(p, c[ei], 0, c.segT(to, ei)); - dsq = distanceSq(p, c[ei](t)); - if ( mindistsq > dsq ) - { - nearest = t; - ni = ei; - } - } - return c.mapToDomain(nearest, ni); + unsigned int si = c.segN(from); + unsigned int ei = c.segN(to); + if ( si == ei ) + { + double nearest= + nearest_point(p, c[si], c.segT(from, si), c.segT(to, si)); + return c.mapToDomain(nearest, si); + } + double t; + double nearest = nearest_point(p, c[si], c.segT(from, si)); + unsigned int ni = si; + double dsq; + double mindistsq = distanceSq(p, c[si](nearest)); + Rect bb(Geom::Point(0,0),Geom::Point(0,0)); + for ( unsigned int i = si + 1; i < ei; ++i ) + { + bb = *bounds_fast(c[i]); + dsq = distanceSq(p, bb); + if ( mindistsq <= dsq ) continue; + t = nearest_point(p, c[i]); + dsq = distanceSq(p, c[i](t)); + if ( mindistsq > dsq ) + { + nearest = t; + ni = i; + mindistsq = dsq; + } + } + bb = *bounds_fast(c[ei]); + dsq = distanceSq(p, bb); + if ( mindistsq > dsq ) + { + t = nearest_point(p, c[ei], 0, c.segT(to, ei)); + dsq = distanceSq(p, c[ei](t)); + if ( mindistsq > dsq ) + { + nearest = t; + ni = ei; + } + } + return c.mapToDomain(nearest, ni); } std::vector all_nearest_points( Point const& p, Piecewise< D2 > const& c, - double from, double to ) + double from, double to ) { - if ( from > to ) std::swap(from, to); - if ( from < c.cuts[0] || to > c.cuts[c.size()] ) - { - THROW_RANGEERROR("[from,to] interval out of bounds"); - } + if ( from > to ) std::swap(from, to); + if ( from < c.cuts[0] || to > c.cuts[c.size()] ) + { + THROW_RANGEERROR("[from,to] interval out of bounds"); + } - unsigned int si = c.segN(from); - unsigned int ei = c.segN(to); - if ( si == ei ) - { - std::vector all_nearest = - all_nearest_points(p, c[si], c.segT(from, si), c.segT(to, si)); - for ( unsigned int i = 0; i < all_nearest.size(); ++i ) - { - all_nearest[i] = c.mapToDomain(all_nearest[i], si); - } - return all_nearest; - } - std::vector all_t; - std::vector< std::vector > all_np; - all_np.push_back( all_nearest_points(p, c[si], c.segT(from, si)) ); - std::vector ni; - ni.push_back(si); - double dsq; - double mindistsq = distanceSq( p, c[si](all_np.front().front()) ); - Rect bb; - for ( unsigned int i = si + 1; i < ei; ++i ) - { - bb = bounds_fast(c[i]); - dsq = distanceSq(p, bb); - if ( mindistsq < dsq ) continue; - all_t = all_nearest_points(p, c[i]); - dsq = distanceSq( p, c[i](all_t.front()) ); - if ( mindistsq > dsq ) - { - all_np.clear(); - all_np.push_back(all_t); - ni.clear(); - ni.push_back(i); - mindistsq = dsq; - } - else if ( mindistsq == dsq ) - { - all_np.push_back(all_t); - ni.push_back(i); - } - } - bb = bounds_fast(c[ei]); - dsq = distanceSq(p, bb); - if ( mindistsq >= dsq ) - { - all_t = all_nearest_points(p, c[ei], 0, c.segT(to, ei)); - dsq = distanceSq( p, c[ei](all_t.front()) ); - if ( mindistsq > dsq ) - { - for ( unsigned int i = 0; i < all_t.size(); ++i ) - { - all_t[i] = c.mapToDomain(all_t[i], ei); - } - return all_t; - } - else if ( mindistsq == dsq ) - { - all_np.push_back(all_t); - ni.push_back(ei); - } - } - std::vector all_nearest; - for ( unsigned int i = 0; i < all_np.size(); ++i ) - { - for ( unsigned int j = 0; j < all_np[i].size(); ++j ) - { - all_nearest.push_back( c.mapToDomain(all_np[i][j], ni[i]) ); - } - } - all_nearest.erase(std::unique(all_nearest.begin(), all_nearest.end()), - all_nearest.end()); - return all_nearest; + unsigned int si = c.segN(from); + unsigned int ei = c.segN(to); + if ( si == ei ) + { + std::vector all_nearest = + all_nearest_points(p, c[si], c.segT(from, si), c.segT(to, si)); + for ( unsigned int i = 0; i < all_nearest.size(); ++i ) + { + all_nearest[i] = c.mapToDomain(all_nearest[i], si); + } + return all_nearest; + } + std::vector all_t; + std::vector< std::vector > all_np; + all_np.push_back( all_nearest_points(p, c[si], c.segT(from, si)) ); + std::vector ni; + ni.push_back(si); + double dsq; + double mindistsq = distanceSq( p, c[si](all_np.front().front()) ); + Rect bb(Geom::Point(0,0),Geom::Point(0,0)); + for ( unsigned int i = si + 1; i < ei; ++i ) + { + bb = *bounds_fast(c[i]); + dsq = distanceSq(p, bb); + if ( mindistsq < dsq ) continue; + all_t = all_nearest_points(p, c[i]); + dsq = distanceSq( p, c[i](all_t.front()) ); + if ( mindistsq > dsq ) + { + all_np.clear(); + all_np.push_back(all_t); + ni.clear(); + ni.push_back(i); + mindistsq = dsq; + } + else if ( mindistsq == dsq ) + { + all_np.push_back(all_t); + ni.push_back(i); + } + } + bb = *bounds_fast(c[ei]); + dsq = distanceSq(p, bb); + if ( mindistsq >= dsq ) + { + all_t = all_nearest_points(p, c[ei], 0, c.segT(to, ei)); + dsq = distanceSq( p, c[ei](all_t.front()) ); + if ( mindistsq > dsq ) + { + for ( unsigned int i = 0; i < all_t.size(); ++i ) + { + all_t[i] = c.mapToDomain(all_t[i], ei); + } + return all_t; + } + else if ( mindistsq == dsq ) + { + all_np.push_back(all_t); + ni.push_back(ei); + } + } + std::vector all_nearest; + for ( unsigned int i = 0; i < all_np.size(); ++i ) + { + for ( unsigned int j = 0; j < all_np[i].size(); ++j ) + { + all_nearest.push_back( c.mapToDomain(all_np[i][j], ni[i]) ); + } + } + all_nearest.erase(std::unique(all_nearest.begin(), all_nearest.end()), + all_nearest.end()); + return all_nearest; } } // end namespace Geom diff --git a/src/2geom/path-intersection.cpp b/src/2geom/path-intersection.cpp index 715c67c23..5a4e76020 100644 --- a/src/2geom/path-intersection.cpp +++ b/src/2geom/path-intersection.cpp @@ -23,9 +23,9 @@ int winding(Path const &path, Point p) { Path::const_iterator start; for(Path::const_iterator iter = path.begin(); ; ++iter) { if(iter == path.end_closed()) { return 0; } - if(iter->initialPoint()[Y]!=p[Y]) { start = iter; break; } - if(iter->finalPoint()[Y]!=p[Y]) { start = iter; break; } - if(iter->boundsFast().height()!=0.){ start = iter; break; } + if(iter->initialPoint()[Y]!=p[Y]) { start = iter; break; } + if(iter->finalPoint()[Y]!=p[Y]) { start = iter; break; } + if(iter->boundsFast()->height()!=0.){ start = iter; break; } } int wind = 0; unsigned cnt = 0; @@ -36,7 +36,7 @@ int winding(Path const &path, Point p) { cnt++; if(cnt > path.size()) return wind; //some bug makes this required starting = false; - Rect bounds = iter->boundsFast(); + Rect bounds = *(iter->boundsFast()); Coord x = p[X], y = p[Y]; if(x > bounds.right() || !bounds[Y].contains(y)) continue; //ray doesn't intersect box @@ -70,7 +70,7 @@ int winding(Path const &path, Point p) { next++; for(; ; next++) { if(next == path.end_closed()) next = path.begin(); - Rect bnds = next->boundsFast(); + Rect bnds = *(next->boundsFast()); //TODO: X considerations if(bnds.height() > 0) { //It has diverged @@ -267,13 +267,13 @@ void pair_intersect(Curve const & A, double Al, double Ah, Curve const & B, double Bl, double Bh, Crossings &ret, unsigned depth=0) { // std::cout << depth << "(" << Al << ", " << Ah << ")\n"; - Rect Ar = A.boundsLocal(Interval(Al, Ah)); - if(Ar.isEmpty()) return; + OptRect Ar = A.boundsLocal(Interval(Al, Ah)); + if (!Ar) return; - Rect Br = B.boundsLocal(Interval(Bl, Bh)); - if(Br.isEmpty()) return; + OptRect Br = B.boundsLocal(Interval(Bl, Bh)); + if (!Br) return; - if(!Ar.intersects(Br)) return; + if(! Ar->intersects(*Br)) return; //Checks the general linearity of the function if((depth > 12)) { // || (A.boundsLocal(Interval(Al, Ah), 1).maxExtent() < 0.1 diff --git a/src/2geom/path.cpp b/src/2geom/path.cpp index c04d9d08d..136e6d481 100644 --- a/src/2geom/path.cpp +++ b/src/2geom/path.cpp @@ -43,21 +43,21 @@ using namespace Geom::PathInternal; namespace Geom { -Rect Path::boundsFast() const { - Rect bounds; +OptRect Path::boundsFast() const { + OptRect bounds; if (empty()) return bounds; bounds=front().boundsFast(); const_iterator iter = begin(); if ( iter != end() ) { - for ( ++iter; iter != end() ; ++iter ) { - bounds.unionWith(iter->boundsFast()); - } + for ( ++iter; iter != end() ; ++iter ) { + bounds.unionWith(iter->boundsFast()); + } } return bounds; } -Rect Path::boundsExact() const { - Rect bounds; +OptRect Path::boundsExact() const { + OptRect bounds; if (empty()) return bounds; bounds=front().boundsExact(); const_iterator iter = begin(); @@ -143,10 +143,10 @@ Path::allNearestPoints(Point const& _point, double from, double to) const double dsq; double mindistsq = distanceSq( _point, _path[si].pointAt( all_np.front().front() ) ); - Rect bb; + Rect bb(Geom::Point(0,0),Geom::Point(0,0)); for ( unsigned int i = si + 1; i < ei; ++i ) { - bb = _path[i].boundsFast(); + bb = *(_path[i].boundsFast()); dsq = distanceSq(_point, bb); if ( mindistsq < dsq ) continue; all_t = _path[i].allNearestPoints(_point); @@ -165,7 +165,7 @@ Path::allNearestPoints(Point const& _point, double from, double to) const ni.push_back(i); } } - bb = _path[ei].boundsFast(); + bb = *(_path[ei].boundsFast()); dsq = distanceSq(_point, bb); if ( mindistsq >= dsq ) { @@ -254,10 +254,10 @@ double Path::nearestPoint(Point const &_point, double from, double to, double *d unsigned int ni = si; double dsq; double mindistsq = distanceSq(_point, _path[si].pointAt(nearest)); - Rect bb; + Rect bb(Geom::Point(0,0),Geom::Point(0,0)); for ( unsigned int i = si + 1; i < ei; ++i ) { - bb = _path[i].boundsFast(); + bb = *(_path[i].boundsFast()); dsq = distanceSq(_point, bb); if ( mindistsq <= dsq ) continue; t = _path[i].nearestPoint(_point); @@ -269,7 +269,7 @@ double Path::nearestPoint(Point const &_point, double from, double to, double *d mindistsq = dsq; } } - bb = _path[ei].boundsFast(); + bb = *(_path[ei].boundsFast()); dsq = distanceSq(_point, bb); if ( mindistsq > dsq ) { diff --git a/src/2geom/path.h b/src/2geom/path.h index e02b749e7..b95a54eaa 100644 --- a/src/2geom/path.h +++ b/src/2geom/path.h @@ -259,8 +259,8 @@ public: bool closed() const { return closed_; } void close(bool closed=true) { closed_ = closed; } - Rect boundsFast() const; - Rect boundsExact() const; + OptRect boundsFast() const; + OptRect boundsExact() const; Piecewise > toPwSb() const { Piecewise > ret; @@ -566,8 +566,9 @@ public: } - /* + /** * It is important to note that the coordinates passed to appendNew should be finite! + * If one of the coordinates is infinite, 2geom will throw a ContinuityError exception. */ template diff --git a/src/2geom/pathvector.cpp b/src/2geom/pathvector.cpp index 39a00d8dc..790265c76 100644 --- a/src/2geom/pathvector.cpp +++ b/src/2geom/pathvector.cpp @@ -56,12 +56,11 @@ PathVector reverse_paths_and_order (PathVector const & path_in) return path_out; } -// FIXME: this function does not work for empty paths, because Rect cannot be initialized empty yet. check rect.h -Rect bounds_fast( PathVector const& pv ) +OptRect bounds_fast( PathVector const& pv ) { typedef PathVector::const_iterator const_iterator; - Rect bound; + OptRect bound; if (pv.empty()) return bound; bound = (pv.begin())->boundsFast(); @@ -72,12 +71,11 @@ Rect bounds_fast( PathVector const& pv ) return bound; } -// FIXME: this function does not work for empty paths, because Rect cannot be initialized empty yet. check rect.h -Rect bounds_exact( PathVector const& pv ) +OptRect bounds_exact( PathVector const& pv ) { typedef PathVector::const_iterator const_iterator; - Rect bound; + OptRect bound; if (pv.empty()) return bound; bound = (pv.begin())->boundsExact(); diff --git a/src/2geom/pathvector.h b/src/2geom/pathvector.h index 5df3ad00c..9efae7c73 100644 --- a/src/2geom/pathvector.h +++ b/src/2geom/pathvector.h @@ -102,8 +102,8 @@ Geom::Point finalPoint(PathVector const &path_in) PathVector reverse_paths_and_order (PathVector const & path_in); -Rect bounds_fast( PathVector const & pv ); -Rect bounds_exact( PathVector const & pv ); +OptRect bounds_fast( PathVector const & pv ); +OptRect bounds_exact( PathVector const & pv ); struct PathVectorPosition { // pathvector[path_nr].pointAt(t) is the position diff --git a/src/2geom/piecewise.h b/src/2geom/piecewise.h index ec3ba26ce..bbd1f054a 100644 --- a/src/2geom/piecewise.h +++ b/src/2geom/piecewise.h @@ -80,6 +80,8 @@ class Piecewise { push_cut(1.); } + unsigned input_dim(){return 1;} + typedef typename T::output_type output_type; explicit Piecewise(const output_type & v) { @@ -198,14 +200,18 @@ class Piecewise { //Transforms the domain into another interval inline void setDomain(Interval dom) { if(empty()) return; + /* dom can not be empty if(dom.isEmpty()) { cuts.clear(); segs.clear(); return; - } + }*/ double cf = cuts.front(); double o = dom.min() - cf, s = dom.extent() / (cuts.back() - cf); for(unsigned i = 0; i <= size(); i++) cuts[i] = (cuts[i] - cf) * s + o; + //fix floating point precision errors. + cuts[0] = dom.min(); + cuts[size()] = dom.max(); } //Concatenates this Piecewise function with another, offseting time of the other to match the end. @@ -227,15 +233,15 @@ class Piecewise { inline void continuousConcat(const Piecewise &other) { boost::function_requires >(); if(other.empty()) return; - typename T::output_type y = segs.back().at1() - other.segs.front().at0(); if(empty()) { for(unsigned i = 0; i < other.size(); i++) - push_seg(other[i] + y); + push_seg(other[i]); cuts = other.cuts; return; } + typename T::output_type y = segs.back().at1() - other.segs.front().at0(); double t = cuts.back() - other.cuts.front(); for(unsigned i = 0; i < other.size(); i++) push(other[i] + y, other.cuts[i + 1] + t); @@ -278,11 +284,12 @@ inline typename FragmentConcept::BoundsType bounds_exact(const Piecewise & } template -inline typename FragmentConcept::BoundsType bounds_local(const Piecewise &f, const Interval &m) { +inline typename FragmentConcept::BoundsType bounds_local(const Piecewise &f, const OptInterval &_m) { boost::function_requires >(); - if(f.empty()) return typename FragmentConcept::BoundsType(); - if(m.isEmpty()) return typename FragmentConcept::BoundsType(f(m.min())); + if(f.empty() || !_m) return typename FragmentConcept::BoundsType(); + Interval const &m = *_m; + if(m.isSingular()) return typename FragmentConcept::BoundsType(f(m.min())); unsigned fi = f.segN(m.min()), ti = f.segN(m.max()); double ft = f.segT(m.min(), fi), tt = f.segT(m.max(), ti); @@ -640,7 +647,7 @@ Piecewise compose(Piecewise const &f, SBasis const &g){ } //first check bounds... - Interval bs = bounds_fast(g); + Interval bs = *bounds_fast(g); if (f.cuts.front() > bs.max() || bs.min() > f.cuts.back()){ int idx = (bs.max() < f.cuts[1]) ? 0 : f.cuts.size()-2; double t0 = f.cuts[idx], width = f.cuts[idx+1] - t0; diff --git a/src/2geom/point.h b/src/2geom/point.h index e6e74242d..d89b53f83 100644 --- a/src/2geom/point.h +++ b/src/2geom/point.h @@ -9,6 +9,7 @@ #include #include <2geom/coord.h> +#include <2geom/isnan.h> #include <2geom/utils.h> namespace Geom { @@ -22,6 +23,7 @@ class Point { Coord _pt[2]; public: + /// The default constructor creates an Point(0,0) DO NOT RELY ON THIS, BEST NOT TO USE THIS CONSTRUCTOR inline Point() { _pt[X] = _pt[Y] = 0; } @@ -81,6 +83,13 @@ class Point { void normalize(); + inline bool isFinite() const { + for ( unsigned i = 0 ; i < 2 ; ++i ) { + if(!IS_FINITE(_pt[i])) return false; + } + return true; + } + inline Point operator+(Point const &o) const { return Point(_pt[X] + o._pt[X], _pt[Y] + o._pt[Y]); } diff --git a/src/2geom/rect.h b/src/2geom/rect.h index 563c8a058..fb42ff92d 100644 --- a/src/2geom/rect.h +++ b/src/2geom/rect.h @@ -48,6 +48,7 @@ namespace Geom { /** D2 specialization to Rect */ typedef D2 Rect; +class OptRect; Rect unify(const Rect &, const Rect &); /** @@ -60,10 +61,12 @@ class D2 { private: Interval f[2]; public: - /* The default constructor creates an empty rect, constructed of two empty Intervals. (users rely on this!) + /** Best not to use this constructor, do not rely on what it initializes the object to. + *The default constructor creates a rect of default intervals. */ D2() { f[X] = f[Y] = Interval(); } + public: D2(Interval const &a, Interval const &b) { f[X] = a; f[Y] = b; @@ -105,14 +108,20 @@ class D2 { inline Point midpoint() const { return Point(f[X].middle(), f[Y].middle()); } /** - * Compute the area of this rectangle. Note that a zero area rectangle is not necessarily empty - just as the interval [0,0] contains one point, the rectangle [0,0] x [0,0] contains 1 point and no area. + * \brief Compute the area of this rectangle. + * + * Note that a zero area rectangle is not empty - just as the interval [0,0] contains one point, the rectangle [0,0] x [0,0] contains 1 point and no area. + * \retval For a valid return value, the rect must be tested for emptyness first. */ inline double area() const { return f[X].extent() * f[Y].extent(); } + inline bool hasZeroArea(double eps = EPSILON) const { return (area() <= eps); } + inline double maxExtent() const { return std::max(f[X].extent(), f[Y].extent()); } + inline double minExtent() const { return std::min(f[X].extent(), f[Y].extent()); } - inline bool isEmpty() const { - return f[X].isEmpty() || f[Y].isEmpty(); - } +// inline bool isEmpty() const { +// return f[X].isEmpty() || f[Y].isEmpty(); +// } inline bool intersects(Rect const &r) const { return f[X].intersects(r[X]) && f[Y].intersects(r[Y]); } @@ -129,40 +138,20 @@ class D2 { inline void unionWith(Rect const &b) { f[X].unionWith(b[X]); f[Y].unionWith(b[Y]); } + void unionWith(OptRect const &b); - inline void expandBy(double amnt) { + inline void expandBy(double amnt) { f[X].expandBy(amnt); f[Y].expandBy(amnt); } inline void expandBy(Point const p) { f[X].expandBy(p[X]); f[Y].expandBy(p[Y]); } - - /** Transforms the rect by m. Note that it gives correct results only for scales and translates, - in the case of rotations, the area of the rect will grow as it cannot rotate. */ - inline Rect operator*(Matrix const m) const { - return unify(Rect(corner(0) * m, corner(2) * m), - Rect(corner(1) * m, corner(3) * m)); - } }; inline Rect unify(Rect const & a, Rect const & b) { return Rect(unify(a[X], b[X]), unify(a[Y], b[Y])); } -/** - * Returns the smallest rectangle that encloses both rectangles. - * An empty argument is assumed to be an empty rectangle - */ -inline boost::optional unify(boost::optional const & a, boost::optional const & b) { - if (!a) { - return b; - } else if (!b) { - return a; - } else { - return unify(*a, *b); - } -} - inline Rect union_list(std::vector const &r) { if(r.empty()) return Rect(Interval(0,0), Interval(0,0)); Rect ret = r[0]; @@ -171,12 +160,6 @@ inline Rect union_list(std::vector const &r) { return ret; } -inline boost::optional intersect(Rect const & a, Rect const & b) { - boost::optional x = intersect(a[X], b[X]); - boost::optional y = intersect(a[Y], b[Y]); - return x && y ? boost::optional(Rect(*x, *y)) : boost::optional(); -} - inline double distanceSq( Point const& p, Rect const& rect ) { @@ -209,6 +192,70 @@ double distance( Point const& p, Rect const& rect ) return std::sqrt(distanceSq(p, rect)); } +/** + * The OptRect class can represent and empty Rect and non-empty Rects. + * If OptRect is not empty, it means that both X and Y intervals are not empty. + * + */ +class OptRect : public boost::optional { +public: + OptRect() : boost::optional() {}; + OptRect(Rect const &a) : boost::optional(a) {}; + + /** + * Creates an empty OptRect when one of the argument intervals is empty. + */ + OptRect(OptInterval const &x_int, OptInterval const &y_int) { + if (x_int && y_int) { + *this = Rect(*x_int, *y_int); + } + // else, stay empty. + } + + /** + * Check whether this OptRect is empty or not. + */ + inline bool isEmpty() { return (*this == false); }; + + /** + * If \c this is empty, copy argument \c b. Otherwise, union with it (and do nothing when \c b is empty) + */ + inline void unionWith(OptRect const &b) { + if (b) { + if (*this) { // check that we are not empty + (**this)[X].unionWith((*b)[X]); + (**this)[Y].unionWith((*b)[Y]); + } else { + *this = b; + } + } + } +}; + + +/** + * Returns the smallest rectangle that encloses both rectangles. + * An empty argument is assumed to be an empty rectangle + */ +inline OptRect unify(OptRect const & a, OptRect const & b) { + if (!a) { + return b; + } else if (!b) { + return a; + } else { + return unify(*a, *b); + } +} + +inline OptRect intersect(Rect const & a, Rect const & b) { + return OptRect(intersect(a[X], b[X]), intersect(a[Y], b[Y])); +} + +inline void Rect::unionWith(OptRect const &b) { + if (b) { + unionWith(*b); + } +} } // end namespace Geom diff --git a/src/2geom/region.h b/src/2geom/region.h index 7b2f5763d..fe2517e23 100644 --- a/src/2geom/region.h +++ b/src/2geom/region.h @@ -48,14 +48,14 @@ class Region { friend Shape shape_boolean(bool rev, Shape const & a, Shape const & b, CrossingSet const & crs); Path boundary; - mutable boost::optional box; + mutable OptRect box; bool fill; public: Region() : fill(true) {} explicit Region(Path const &p) : boundary(p) { fill = path_direction(p); } Region(Path const &p, bool dir) : boundary(p), fill(dir) {} - Region(Path const &p, boost::optional const &b) : boundary(p), box(b) { fill = path_direction(p); } - Region(Path const &p, boost::optional const &b, bool dir) : boundary(p), box(b), fill(dir) {} + Region(Path const &p, OptRect const &b) : boundary(p), box(b) { fill = path_direction(p); } + Region(Path const &p, OptRect const &b, bool dir) : boundary(p), box(b), fill(dir) {} unsigned size() const { return boundary.size(); } @@ -65,7 +65,7 @@ class Region { operator Path() const { return boundary; } Rect boundsFast() const { - if(!box) box = boost::optional(boundary.boundsFast()); + if(!box) box = boundary.boundsFast(); /// \todo this doesn't look right at all... return *box; } diff --git a/src/2geom/sbasis-2d.cpp b/src/2geom/sbasis-2d.cpp index 9566e0a19..e3a407094 100644 --- a/src/2geom/sbasis-2d.cpp +++ b/src/2geom/sbasis-2d.cpp @@ -173,7 +173,7 @@ sb2d_cubic_solve(SBasis2d const &f, Geom::Point const &A, Geom::Point const &B){ double error = -1; unsigned best = 0; for (unsigned i=0; ifabs(bounds.min()) ? fabs(bounds.max()) : fabs(bounds.min()) ); if ( new_error < error || error < 0 ){ error = new_error; diff --git a/src/2geom/sbasis-curve.h b/src/2geom/sbasis-curve.h index e11919401..b45e63eb8 100644 --- a/src/2geom/sbasis-curve.h +++ b/src/2geom/sbasis-curve.h @@ -68,9 +68,9 @@ public: void setInitial(Point v) { for(unsigned d = 0; d < 2; d++) { inner[d][0][0] = v[d]; } } void setFinal(Point v) { for(unsigned d = 0; d < 2; d++) { inner[d][0][1] = v[d]; } } - Rect boundsFast() const { return bounds_fast(inner); } - Rect boundsExact() const { return bounds_exact(inner); } - Rect boundsLocal(Interval i, unsigned deg) const { return bounds_local(inner, i, deg); } + virtual OptRect boundsFast() const { return bounds_fast(inner); } + virtual OptRect boundsExact() const { return bounds_exact(inner); } + virtual OptRect boundsLocal(OptInterval i, unsigned deg) const { return bounds_local(inner, i, deg); } std::vector roots(double v, Dim2 d) const { return Geom::roots(inner[d] - v); } diff --git a/src/2geom/sbasis-geometric.cpp b/src/2geom/sbasis-geometric.cpp index f0170ec6b..96a5ed0ce 100644 --- a/src/2geom/sbasis-geometric.cpp +++ b/src/2geom/sbasis-geometric.cpp @@ -528,7 +528,7 @@ unsigned Geom::centroid(Piecewise > const &p, Point& centroid, double * Below are basic functions dedicated to solving this assuming a0 and a1 !=0. */ -static Interval +static OptInterval find_bounds_for_lambda0(double aa0,double aa1,double cc0,double cc1, int insist_on_speeds_signs){ @@ -541,7 +541,7 @@ find_bounds_for_lambda0(double aa0,double aa1,double cc0,double cc1, double c = (c0(); - p = compose(p,Linear(domain.min(),domain.max())); + p = compose(p,Linear(domain->min(),domain->max())); std::vectorrts = roots(p); for (unsigned i=0; imin() + rts[i] * domain->extent(); } return rts; } diff --git a/src/2geom/sbasis-math.cpp b/src/2geom/sbasis-math.cpp index 1d179a563..e08023e84 100644 --- a/src/2geom/sbasis-math.cpp +++ b/src/2geom/sbasis-math.cpp @@ -41,6 +41,7 @@ namespace Geom { +#include <2geom/d2-sbasis.h> #include #include @@ -327,18 +328,44 @@ Piecewise reciprocalOnDomain(Interval range, double tol){ } Piecewise reciprocal(SBasis const &f, double tol, int order){ - Piecewise reciprocal_fn=reciprocalOnDomain(bounds_fast(f), tol); + Piecewise reciprocal_fn=reciprocalOnDomain(*bounds_fast(f), tol); Piecewise result=compose(reciprocal_fn,f); truncateResult(result,order); return(result); } Piecewise reciprocal(Piecewise const &f, double tol, int order){ - Piecewise reciprocal_fn=reciprocalOnDomain(bounds_fast(f), tol); + Piecewise reciprocal_fn=reciprocalOnDomain(*bounds_fast(f), tol); Piecewise result=compose(reciprocal_fn,f); truncateResult(result,order); return(result); } +/** + * \brief Retruns a Piecewise SBasis with prescribed values at prescribed times. + * + * \param times: vector of times at which the values are given. Should be sorted in increasing order. + * \param values: vector of prescribed values. Should have the same size as times and be sorted accordingly. + * \param smoothness: (defaults to 1) regularity class of the result: 0=piecewise linear, 1=continuous derivative, etc... + */ +Piecewise interpolate(std::vector times, std::vector values, unsigned smoothness){ + assert ( values.size() == times.size() ); + if ( values.size() == 0 ) return Piecewise(); + if ( values.size() == 1 ) return Piecewise(values[0]);//what about time?? + + SBasis sk = shift(Linear(1.),smoothness); + SBasis bump_in = integral(sk); + bump_in -= bump_in.at0(); + bump_in /= bump_in.at1(); + SBasis bump_out = reverse( bump_in ); + + Piecewise result; + result.cuts.push_back(times[0]); + for (unsigned i = 0; i #include <2geom/piecewise.h> +#include <2geom/d2.h> namespace Geom{ //-|x|--------------------------------------------------------------- @@ -81,6 +82,8 @@ Piecewise reciprocalOnDomain(Interval range, double tol=1e-3); Piecewise reciprocal( SBasis const &f, double tol=1e-3, int order=3); Piecewise reciprocal(Piecewiseconst &f, double tol=1e-3, int order=3); +//--interpolate------------------------------------------------------------ +Piecewise interpolate( std::vector times, std::vector values, unsigned smoothness = 1); } #endif //SEEN_GEOM_PW_SB_CALCULUS_H diff --git a/src/2geom/sbasis-roots.cpp b/src/2geom/sbasis-roots.cpp index 2eb1e4cbb..5249053fa 100644 --- a/src/2geom/sbasis-roots.cpp +++ b/src/2geom/sbasis-roots.cpp @@ -57,7 +57,19 @@ namespace Geom{ \returns inteval */ -Interval bounds_exact(SBasis const &a) { + +#ifdef USE_SBASIS_OF +OptInterval bounds_exact(SBasisOf const &a) { + Interval result = Interval(a.at0(), a.at1()); + SBasisOf df = derivative(a); + vectorextrema = roots(df); + for (unsigned i=0; iextrema = roots(df); @@ -66,6 +78,7 @@ Interval bounds_exact(SBasis const &a) { } return result; } +#endif /** Find a small interval that bounds a \param a sbasis function @@ -73,7 +86,11 @@ Interval bounds_exact(SBasis const &a) { */ // I have no idea how this works, some clever bounding argument by jfb. -Interval bounds_fast(const SBasis &sb, int order) { +#ifdef USE_SBASIS_OF +OptInterval bounds_fast(const SBasisOf &sb, int order) { +#else +OptInterval bounds_fast(const SBasis &sb, int order) { +#endif Interval res(0,0); // an empty sbasis is 0. for(int j = sb.size()-1; j>=order; j--) { @@ -105,11 +122,15 @@ Interval bounds_fast(const SBasis &sb, int order) { \param sb sbasis function \param i domain interval \param order number of terms - \returns inteval + \return interval */ -Interval bounds_local(const SBasis &sb, const Interval &i, int order) { - double t0=i.min(), t1=i.max(), lo=0., hi=0.; +#ifdef USE_SBASIS_OF +OptInterval bounds_local(const SBasisOf &sb, const OptInterval &i, int order) { +#else +OptInterval bounds_local(const SBasis &sb, const OptInterval &i, int order) { +#endif + double t0=i->min(), t1=i->max(), lo=0., hi=0.; for(int j = sb.size()-1; j>=order; j--) { double a=sb[j][0]; double b=sb[j][1]; @@ -154,8 +175,13 @@ static int upper_level(vector const &levels,double x,double tol=0.){ return(upper_bound(levels.begin(),levels.end(),x-tol)-levels.begin()); } +#ifdef USE_SBASIS_OF +static void multi_roots_internal(SBasis const &f, + SBasis const &df, +#else static void multi_roots_internal(SBasis const &f, SBasis const &df, +#endif std::vector const &levels, std::vector > &roots, double htol, @@ -209,7 +235,7 @@ static void multi_roots_internal(SBasis const &f, int idxa=upper_level(levels,fa,vtol); int idxb=upper_level(levels,fb,vtol); - Interval bs = bounds_local(df,Interval(a,b)); + Interval bs = *bounds_local(df,Interval(a,b)); //first times when a level (higher or lower) can be reached from a or b. double ta_hi,tb_hi,ta_lo,tb_lo; @@ -306,8 +332,8 @@ std::vector > multi_roots(SBasis const &f, void subdiv_sbasis(SBasis const & s, std::vector & roots, double left, double right) { - Interval bs = bounds_fast(s); - if(bs.min() > 0 || bs.max() < 0) + OptInterval bs = bounds_fast(s); + if(!bs || bs->min() > 0 || bs->max() < 0) return; // no roots here if(s.tailError(1) < 1e-7) { double t = s[0][0] / (s[0][0] - s[0][1]); diff --git a/src/2geom/sbasis.cpp b/src/2geom/sbasis.cpp index 2619da594..0bd672c15 100644 --- a/src/2geom/sbasis.cpp +++ b/src/2geom/sbasis.cpp @@ -43,7 +43,7 @@ namespace Geom{ \returns the largest possible error this truncation could give */ double SBasis::tailError(unsigned tail) const { - Interval bs = bounds_fast(*this, tail); + Interval bs = *bounds_fast(*this, tail); return std::max(fabs(bs.min()),fabs(bs.max())); } @@ -212,7 +212,7 @@ SBasis shift(SBasis const &a, int sh) { */ SBasis shift(Linear const &a, int sh) { SBasis c; - if(sh > 0) { + if(sh >= 0) { c.insert(c.begin(), sh, Linear(0,0)); c.push_back(a); } diff --git a/src/2geom/sbasis.h b/src/2geom/sbasis.h index 72bf422e7..f2681a722 100644 --- a/src/2geom/sbasis.h +++ b/src/2geom/sbasis.h @@ -43,7 +43,14 @@ #include <2geom/utils.h> #include <2geom/exception.h> -namespace Geom { + +#ifdef USE_SBASIS_OF + +#include "sbasis-of.h" + +#else + +namespace Geom{ /*** An empty SBasis is identically 0. */ class SBasis : public std::vector{ @@ -135,9 +142,9 @@ private: inline SBasis Linear::toSBasis() const { return SBasis(*this); } //implemented in sbasis-roots.cpp -Interval bounds_exact(SBasis const &a); -Interval bounds_fast(SBasis const &a, int order = 0); -Interval bounds_local(SBasis const &a, const Interval &t, int order = 0); +OptInterval bounds_exact(SBasis const &a); +OptInterval bounds_fast(SBasis const &a, int order = 0); +OptInterval bounds_local(SBasis const &a, const OptInterval &t, int order = 0); /** Returns a function which reverses the domain of a. \param a sbasis function @@ -325,6 +332,7 @@ std::vector > multi_roots(SBasis const &f, double b=1); } +#endif /* Local Variables: diff --git a/src/2geom/shape.cpp b/src/2geom/shape.cpp index 814c6c68c..64abf48ff 100644 --- a/src/2geom/shape.cpp +++ b/src/2geom/shape.cpp @@ -349,7 +349,7 @@ void crossing_dual(unsigned &i, unsigned &j, CrossingSet const & crs) { //locate a crossing on the outside, by casting a ray through the middle of the bbox void outer_crossing(unsigned &ix, unsigned &jx, bool & dir, std::vector const & ps, CrossingSet const & crs) { - Rect bounds = ps[ix].boundsFast(); + Rect bounds = *(ps[ix].boundsFast()); double ry = bounds[Y].middle(); double max_val = bounds.left(), max_t = 0; ix = ps.size(); diff --git a/src/2geom/svg-elliptical-arc.cpp b/src/2geom/svg-elliptical-arc.cpp index 23645fe11..42c787eca 100644 --- a/src/2geom/svg-elliptical-arc.cpp +++ b/src/2geom/svg-elliptical-arc.cpp @@ -47,7 +47,7 @@ namespace Geom { -Rect SVGEllipticalArc::boundsExact() const +OptRect SVGEllipticalArc::boundsExact() const { if (isDegenerate() && is_svg_compliant()) return chord().boundsExact(); diff --git a/src/2geom/svg-elliptical-arc.h b/src/2geom/svg-elliptical-arc.h index 1d6d2d74d..92ec51b49 100644 --- a/src/2geom/svg-elliptical-arc.h +++ b/src/2geom/svg-elliptical-arc.h @@ -200,15 +200,15 @@ class SVGEllipticalArc : public Curve return m_svg_compliant; } - Rect boundsFast() const + virtual OptRect boundsFast() const { return boundsExact(); } - Rect boundsExact() const; + virtual OptRect boundsExact() const; // TODO: native implementation of the following methods - Rect boundsLocal(Interval i, unsigned int deg) const + virtual OptRect boundsLocal(OptInterval i, unsigned int deg) const { if (isDegenerate() && is_svg_compliant()) return chord().boundsLocal(i, deg); diff --git a/src/2geom/svg-path-parser.cpp b/src/2geom/svg-path-parser.cpp index 2f26870a5..071b171b3 100644 --- a/src/2geom/svg-path-parser.cpp +++ b/src/2geom/svg-path-parser.cpp @@ -38,6 +38,7 @@ #include <2geom/point.h> #include <2geom/svg-path-parser.h> +#include <2geom/angle.h> namespace Geom { @@ -139,7 +140,7 @@ private: }; -#line 143 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.cpp" +#line 144 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.cpp" static const char _svg_path_actions[] = { 0, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 15, 1, @@ -1144,7 +1145,7 @@ static const int svg_path_first_final = 270; static const int svg_path_en_main = 1; -#line 143 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 144 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" void Parser::parse(char const *str) @@ -1157,12 +1158,12 @@ throw(SVGPathParseError) _reset(); -#line 1161 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.cpp" +#line 1162 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.cpp" { cs = svg_path_start; } -#line 1166 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.cpp" +#line 1167 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.cpp" { int _klen; unsigned int _trans; @@ -1235,13 +1236,13 @@ _match: switch ( *_acts++ ) { case 0: -#line 155 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 156 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" { start = p; } break; case 1: -#line 159 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 160 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" { char const *end=p; std::string buf(start, end); @@ -1250,55 +1251,55 @@ _match: } break; case 2: -#line 166 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 167 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" { _push(1.0); } break; case 3: -#line 170 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 171 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" { _push(0.0); } break; case 4: -#line 174 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 175 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" { _absolute = true; } break; case 5: -#line 178 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 179 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" { _absolute = false; } break; case 6: -#line 182 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 183 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" { _moveTo(_pop_point()); } break; case 7: -#line 186 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 187 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" { _lineTo(_pop_point()); } break; case 8: -#line 190 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 191 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" { _hlineTo(Point(_pop_coord(X), _current[Y])); } break; case 9: -#line 194 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 195 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" { _vlineTo(Point(_current[X], _pop_coord(Y))); } break; case 10: -#line 198 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 199 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" { Point p = _pop_point(); Point c1 = _pop_point(); @@ -1307,7 +1308,7 @@ _match: } break; case 11: -#line 205 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 206 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" { Point p = _pop_point(); Point c1 = _pop_point(); @@ -1315,7 +1316,7 @@ _match: } break; case 12: -#line 211 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 212 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" { Point p = _pop_point(); Point c = _pop_point(); @@ -1323,14 +1324,14 @@ _match: } break; case 13: -#line 217 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 218 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" { Point p = _pop_point(); _quadTo(_quad_tangent, p); } break; case 14: -#line 222 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 223 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" { Point point = _pop_point(); bool sweep = _pop_flag(); @@ -1343,16 +1344,16 @@ _match: } break; case 15: -#line 233 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 234 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" { _closePath(); } break; case 16: -#line 369 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 370 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" {goto _out;} break; -#line 1356 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.cpp" +#line 1357 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.cpp" } } @@ -1363,7 +1364,7 @@ _again: goto _resume; _out: {} } -#line 379 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" +#line 380 "/home/njh/svn/lib2geom/src/2geom/svg-path-parser.rl" if ( cs < svg_path_first_final ) { diff --git a/src/2geom/sweep.cpp b/src/2geom/sweep.cpp index 227c822bd..53b953255 100644 --- a/src/2geom/sweep.cpp +++ b/src/2geom/sweep.cpp @@ -9,10 +9,8 @@ std::vector > sweep_bounds(std::vector rs) { std::vector > pairs(rs.size()); for(unsigned i = 0; i < rs.size(); i++) { - if(!rs[i].isEmpty()) { - events.push_back(Event(rs[i].left(), i, false)); - events.push_back(Event(rs[i].right(), i, true)); - } + events.push_back(Event(rs[i].left(), i, false)); + events.push_back(Event(rs[i].right(), i, true)); } std::sort(events.begin(), events.end()); @@ -48,10 +46,8 @@ std::vector > sweep_bounds(std::vector a, std::vecto events[n].reserve(sz*2); for(unsigned i = 0; i < sz; i++) { Rect r = n ? b[i] : a[i]; - if(!r.isEmpty()) { - events[n].push_back(Event(r.left(), i, false)); - events[n].push_back(Event(r.right(), i, true)); - } + events[n].push_back(Event(r.left(), i, false)); + events[n].push_back(Event(r.right(), i, true)); } std::sort(events[n].begin(), events[n].end()); } diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a84909382..5e4b41d01 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -204,10 +204,6 @@ snapped-line.cpp snapped-point.cpp snapper.cpp star-context.cpp -streams-gzip.cpp -streams-handles.cpp -streams-jar.cpp -streams-zlib.cpp style.cpp #style-test.cpp svg-view.cpp diff --git a/src/Doxyfile b/src/Doxyfile deleted file mode 100644 index 42fbee2c2..000000000 --- a/src/Doxyfile +++ /dev/null @@ -1,62 +0,0 @@ -# Doxyfile: default configuration for `doxygen'. - -# We used to explicitly list inputs (for faster doxygen runs), but -# switched to recursive scan because we have a large number of inputs -# and almost everybody forgot to update the list to reflect latest changes. -FILE_PATTERNS = *.cpp *.h -RECURSIVE = yes -EXCLUDE_PATTERNS = sp-skeleton.* -# Input used to be generated with the command -# find -name '*.cpp' -o -name '*.h'|xargs grep -l '\\file'|sort|sed 's,^./, ,;s,$, \\,' -# (and remove the non source files sp-skeleton.*). -#INPUT = \ -# application/application.cpp \ -# (file listing was here...) - - -# Uncomment this to treat undocumented things as if they had an empty -# documentation string; comment it out to suppress all undocumented things from -# the output. -# Leaving it uncommented allows using doxygen output as the primary information -# source about a class (without needing to look at the source code to look for -# undocumented things). -# OTOH, you may find it annoying to have reems of relatively unhelpful -# information: commenting it out gives more compact display of the helpful -# bits. -# I'm commenting it out for now to facilitate checking existing doc comments -# for doxygen correctness. -#EXTRACT_ALL = yes - -# I'll disable this for the moment, to reduce the number of files in the output. -SOURCE_BROWSER = no - -# Keep the output out of the src directory so that it doesn't get in the way of -# `rgrep'. -OUTPUT_DIRECTORY = ../doxygen - -# In absence of explicit `\brief', treat the first "sentence" as the brief part -# and the rest as detail. (With explicit `\brief', the first _paragraph_ is -# considered the brief part.) -# -# It's unclear whether programmers should deliberately use this facility. -# Advantage: Less clutter. -# Disadvantage: Absence of `\brief' may indicate that the comment was written -# by someone unfamiliar with doxygen and not giving thought to what the brief -# description should be. Using explicit `\brief' may facilitate checking -# non-\briefed comments for doxygen correctness. -# OTOH, using `\brief' may be parrot-like: it doesn't necessarily indicate -# doxygen familiarity. -JAVADOC_AUTOBRIEF = yes - -WARN_IF_UNDOCUMENTED = yes - -GENERATE_TODOLIST = yes - -GENERATE_BUGLIST = yes - -REFERENCED_BY_RELATION = yes - -EXTRACT_STATIC = yes - -WARN_LOGFILE = doxygen-log - diff --git a/src/Makefile.am b/src/Makefile.am index 0726b7228..c6b58bce8 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -40,6 +40,7 @@ include extension/Makefile_insert include extension/implementation/Makefile_insert include extension/internal/Makefile_insert include extension/script/Makefile_insert +include filters/Makefile_insert include helper/Makefile_insert include inkjar/Makefile_insert include io/Makefile_insert @@ -87,6 +88,7 @@ noinst_LIBRARIES = \ extension/internal/libinternal.a \ extension/libextension.a \ extension/script/libscript.a \ + filters/libfilters.a \ bind/libbind.a \ helper/libspchelp.a \ io/libio.a \ @@ -146,6 +148,7 @@ EXTRA_DIST = \ extension/internal/makefile.in \ extension/makefile.in \ extension/script/makefile.in \ + filters/makefile.in \ helper/makefile.in \ inkjar/makefile.in \ io/makefile.in \ diff --git a/src/Makefile_insert b/src/Makefile_insert index 8244996c8..4bef3dc56 100644 --- a/src/Makefile_insert +++ b/src/Makefile_insert @@ -166,41 +166,6 @@ libinkpre_a_SOURCES = \ sp-defs.cpp sp-defs.h \ sp-desc.cpp sp-desc.h \ sp-ellipse.cpp sp-ellipse.h \ - sp-feblend.cpp sp-feblend.h \ - sp-feblend-fns.h \ - sp-fecolormatrix.cpp sp-fecolormatrix.h \ - sp-fecolormatrix-fns.h \ - sp-fecomponenttransfer.cpp sp-fecomponenttransfer.h \ - sp-fecomponenttransfer-funcnode.cpp sp-fecomponenttransfer-funcnode.h \ - sp-fecomponenttransfer-fns.h \ - sp-fecomposite.cpp sp-fecomposite.h \ - sp-fecomposite-fns.h \ - sp-feconvolvematrix.cpp sp-feconvolvematrix.h \ - sp-feconvolvematrix-fns.h \ - sp-fediffuselighting.cpp sp-fediffuselighting.h \ - sp-fediffuselighting-fns.h \ - sp-fedisplacementmap.cpp sp-fedisplacementmap.h \ - sp-fedisplacementmap-fns.h \ - sp-fedistantlight.cpp sp-fedistantlight.h \ - sp-feflood.cpp sp-feflood.h \ - sp-feflood-fns.h \ - sp-feimage.cpp sp-feimage.h \ - sp-feimage-fns.h \ - sp-femerge.cpp sp-femerge.h \ - sp-femerge-fns.h \ - sp-femergenode.cpp sp-femergenode.h \ - sp-femorphology.cpp sp-femorphology.h \ - sp-femorphology-fns.h \ - sp-feoffset.cpp sp-feoffset.h \ - sp-feoffset-fns.h \ - sp-fepointlight.cpp sp-fepointlight.h \ - sp-fespecularlighting.cpp sp-fespecularlighting.h \ - sp-fespecularlighting-fns.h \ - sp-fespotlight.cpp sp-fespotlight.h \ - sp-fetile.cpp sp-fetile.h \ - sp-fetile-fns.h \ - sp-feturbulence.cpp sp-feturbulence.h \ - sp-feturbulence-fns.h \ sp-filter-fns.h \ sp-filter-primitive.cpp \ sp-filter-primitive.h \ @@ -279,10 +244,6 @@ libinkpre_a_SOURCES = \ spiral-context.cpp spiral-context.h \ splivarot.cpp splivarot.h \ star-context.cpp star-context.h \ - streams-gzip.h streams-gzip.cpp \ - streams-handles.h streams-handles.cpp \ - streams-jar.h streams-jar.cpp \ - streams-zlib.h streams-zlib.cpp \ style.cpp style.h \ sp-style-elem.cpp sp-style-elem.h \ svg-profile.h \ @@ -356,6 +317,7 @@ inkscape_private_libs = \ pedro/libpedro.a \ trace/libtrace.a \ svg/libspsvg.a \ + filters/libfilters.a \ widgets/libspwidgets.a \ display/libspdisplay.a \ helper/libspchelp.a \ diff --git a/src/application/app-prototype.cpp b/src/application/app-prototype.cpp index 3af818824..3d9aa15e8 100644 --- a/src/application/app-prototype.cpp +++ b/src/application/app-prototype.cpp @@ -1,7 +1,7 @@ -/** - * \brief Base class for different application modes - * - * Author: +/** @file + * @brief Base class for different application modes + */ +/* Author: * Bryce W. Harrington * * Copyright (C) 2005 Bryce Harrington @@ -40,4 +40,4 @@ AppPrototype::~AppPrototype() fill-column:99 End: */ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : \ No newline at end of file diff --git a/src/application/app-prototype.h b/src/application/app-prototype.h index a7c8ad86f..a31bfa7d8 100644 --- a/src/application/app-prototype.h +++ b/src/application/app-prototype.h @@ -1,7 +1,7 @@ -/** - * \brief Base class for different application modes - * - * Author: +/** @file + * @brief Base class for different application modes + */ +/* Author: * Bryce W. Harrington * * Copyright (C) 2005 Bryce Harrington @@ -50,4 +50,4 @@ protected: fill-column:99 End: */ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : \ No newline at end of file diff --git a/src/application/application.cpp b/src/application/application.cpp index c7aa28971..ab516b9d4 100644 --- a/src/application/application.cpp +++ b/src/application/application.cpp @@ -1,7 +1,7 @@ -/** \file - * \brief The top level class for managing the application. - * - * Authors: +/** @file + * @brief The top level class for managing the application + */ +/* Authors: * Bryce W. Harrington * Ralf Stephan * diff --git a/src/application/application.h b/src/application/application.h index 212add9e8..fce6bd47f 100644 --- a/src/application/application.h +++ b/src/application/application.h @@ -1,7 +1,7 @@ -/** \file - * \brief The top level class for managing the application. - * - * Authors: +/** @file + * @brief The top level class for managing the application. + */ +/* Authors: * Bryce W. Harrington * Ralf Stephan * diff --git a/src/application/editor.cpp b/src/application/editor.cpp index 0b8ac263e..24c811778 100644 --- a/src/application/editor.cpp +++ b/src/application/editor.cpp @@ -1,9 +1,9 @@ -/** \file - * \brief Editor Implementation class declaration for Inkscape. This +/** @file + * @brief Editor class declaration. This * singleton class implements much of the functionality of the former * 'inkscape' object and its services and signals. - * - * Authors: + */ +/* Authors: * Bryce W. Harrington * Derek P. Moore * Ralf Stephan diff --git a/src/application/editor.h b/src/application/editor.h index 1eed9a267..4545022b8 100644 --- a/src/application/editor.h +++ b/src/application/editor.h @@ -1,9 +1,8 @@ -/** \file - * \brief Class to manage an application used for editing SVG documents - * using GUI views - * - * \note This class is a Singleton - * +/** @file + * @brief Singleton class to manage an application used for editing SVG + * documents using GUI views + */ +/* * Authors: * Bryce W. Harrington * Ralf Stephan diff --git a/src/attributes-test.h b/src/attributes-test.h index 89be0eb4f..381821cd8 100644 --- a/src/attributes-test.h +++ b/src/attributes-test.h @@ -347,7 +347,6 @@ struct {char const *attr; bool supported;} const all_attrs[] = { {"inkscape:bbox-nodes", true}, {"inkscape:snap-page", true}, {"inkscape:snap-global", true}, - {"inkscape:snap-indicator", true}, {"inkscape:snap-bbox", true}, {"inkscape:snap-nodes", true}, {"inkscape:snap-guide", true}, diff --git a/src/attributes.cpp b/src/attributes.cpp index add2c8caf..149d177f5 100644 --- a/src/attributes.cpp +++ b/src/attributes.cpp @@ -87,7 +87,6 @@ static SPStyleProp const props[] = { {SP_ATTR_INKSCAPE_WINDOW_X, "inkscape:window-x"}, {SP_ATTR_INKSCAPE_WINDOW_Y, "inkscape:window-y"}, {SP_ATTR_INKSCAPE_SNAP_GLOBAL, "inkscape:snap-global"}, - {SP_ATTR_INKSCAPE_SNAP_INDICATOR, "inkscape:snap-indicator"}, {SP_ATTR_INKSCAPE_SNAP_BBOX, "inkscape:snap-bbox"}, {SP_ATTR_INKSCAPE_SNAP_NODES, "inkscape:snap-nodes"}, {SP_ATTR_INKSCAPE_SNAP_GUIDE, "inkscape:snap-guide"}, diff --git a/src/attributes.h b/src/attributes.h index e15822411..f8925f47c 100644 --- a/src/attributes.h +++ b/src/attributes.h @@ -87,7 +87,6 @@ enum SPAttributeEnum { SP_ATTR_INKSCAPE_WINDOW_X, SP_ATTR_INKSCAPE_WINDOW_Y, SP_ATTR_INKSCAPE_SNAP_GLOBAL, - SP_ATTR_INKSCAPE_SNAP_INDICATOR, SP_ATTR_INKSCAPE_SNAP_BBOX, SP_ATTR_INKSCAPE_SNAP_NODES, SP_ATTR_INKSCAPE_SNAP_GUIDE, diff --git a/src/bind/dobinding.cpp b/src/bind/dobinding.cpp index 6f9010533..1ba708ed7 100644 --- a/src/bind/dobinding.cpp +++ b/src/bind/dobinding.cpp @@ -1,6 +1,7 @@ /** - * This is a simple mechanism to bind Inkscape to Java, and thence - * to all of the nice things that can be layered upon that. + * @file + * @brief This is a simple mechanism to bind Inkscape to Java, and thence + * to all of the nice things that can be layered upon that. * * Authors: * Bob Jamison diff --git a/src/bind/javabind-private.h b/src/bind/javabind-private.h index 2530bd735..a03f0c1a2 100644 --- a/src/bind/javabind-private.h +++ b/src/bind/javabind-private.h @@ -1,7 +1,6 @@ -#ifndef __JAVABIND_PRIVATE_H__ -#define __JAVABIND_PRIVATE_H__ /** - * This is a simple mechanism to bind Inkscape to Java, and thence + * @file + * @brief This is a simple mechanism to bind Inkscape to Java, and thence * to all of the nice things that can be layered upon that. * * Authors: @@ -24,12 +23,12 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#include +#ifndef __JAVABIND_PRIVATE_H__ +#define __JAVABIND_PRIVATE_H__ +#include #include "javabind.h" - - namespace Inkscape { diff --git a/src/bind/javabind.cpp b/src/bind/javabind.cpp index e0e246d48..cb8c778b1 100644 --- a/src/bind/javabind.cpp +++ b/src/bind/javabind.cpp @@ -1,5 +1,6 @@ /** - * This is a simple mechanism to bind Inkscape to Java, and thence + * @file + * @brief This is a simple mechanism to bind Inkscape to Java, and thence * to all of the nice things that can be layered upon that. * * Authors: diff --git a/src/bind/javabind.h b/src/bind/javabind.h index 6ea896a2c..894f52d5d 100644 --- a/src/bind/javabind.h +++ b/src/bind/javabind.h @@ -1,7 +1,6 @@ -#ifndef __JAVABIND_H__ -#define __JAVABIND_H__ /** - * This is a simple mechanism to bind Inkscape to Java, and thence + * @file + * @brief This is a simple mechanism to bind Inkscape to Java, and thence * to all of the nice things that can be layered upon that. * * Authors: @@ -24,6 +23,9 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#ifndef __JAVABIND_H__ +#define __JAVABIND_H__ + #include #include diff --git a/src/box3d-side.cpp b/src/box3d-side.cpp index 866cbbca4..241279100 100644 --- a/src/box3d-side.cpp +++ b/src/box3d-side.cpp @@ -216,7 +216,6 @@ box3d_side_set_shape (SPShape *shape) return; } - SPCurve *c = new SPCurve(); // TODO: Draw the correct quadrangle here // To do this, determine the perspective of the box, the orientation of the side (e.g., XY-FRONT) // compute the coordinates of the corners in P^3, project them onto the canvas, and draw the @@ -225,14 +224,24 @@ box3d_side_set_shape (SPShape *shape) unsigned int corners[4]; box3d_side_compute_corner_ids(side, corners); + SPCurve *c = new SPCurve(); c->moveto(box3d_get_corner_screen(box, corners[0])); c->lineto(box3d_get_corner_screen(box, corners[1])); c->lineto(box3d_get_corner_screen(box, corners[2])); c->lineto(box3d_get_corner_screen(box, corners[3])); - c->closepath(); - sp_lpe_item_perform_path_effect(SP_LPE_ITEM (side), c); - sp_shape_set_curve_insync (SP_SHAPE (side), c, TRUE); + + /* Reset the shape'scurve to the "original_curve" + * This is very important for LPEs to work properly! (the bbox might be recalculated depending on the curve in shape)*/ + sp_shape_set_curve_insync (shape, c, TRUE); + if (sp_lpe_item_has_path_effect(SP_LPE_ITEM(shape)) && sp_lpe_item_path_effects_enabled(SP_LPE_ITEM(shape))) { + SPCurve *c_lpe = c->copy(); + bool success = sp_lpe_item_perform_path_effect(SP_LPE_ITEM (shape), c_lpe); + if (success) { + sp_shape_set_curve_insync (shape, c_lpe, TRUE); + } + c_lpe->unref(); + } c->unref(); } diff --git a/src/conn-avoid-ref.cpp b/src/conn-avoid-ref.cpp index 34c839c6f..657850ec7 100644 --- a/src/conn-avoid-ref.cpp +++ b/src/conn-avoid-ref.cpp @@ -190,7 +190,7 @@ static Avoid::Polygn avoid_item_poly(SPItem const *item) // by the sp_*_update functions, e.g., text. sp_document_ensure_up_to_date(item->document); - boost::optional rHull = item->getBounds(sp_item_i2doc_affine(item)); + Geom::OptRect rHull = item->getBounds(sp_item_i2doc_affine(item)); if (!rHull) { return Avoid::newPoly(0); } diff --git a/src/connector-context.cpp b/src/connector-context.cpp index ef89c290f..8260456d4 100644 --- a/src/connector-context.cpp +++ b/src/connector-context.cpp @@ -602,7 +602,7 @@ connector_handle_motion_notify(SPConnectorContext *const cc, GdkEventMotion cons if (connector_within_tolerance) { gint const tolerance = prefs->getIntLimited("/options/dragtolerance/value", 0, 0, 100); - if ( NR::LInfty( event_w - connector_drag_origin_w ) < tolerance ) { + if ( Geom::LInfty( event_w - connector_drag_origin_w ) < tolerance ) { return FALSE; // Do not drag if we're within tolerance from origin. } } @@ -1149,7 +1149,7 @@ static void cc_set_active_shape(SPConnectorContext *cc, SPItem *item) } - boost::optional bbox = sp_item_bbox_desktop(cc->active_shape); + Geom::OptRect bbox = sp_item_bbox_desktop(cc->active_shape); if (bbox) { Geom::Point center = bbox->midpoint(); sp_knot_set_position(cc->connpthandle, center, 0); diff --git a/src/desktop-style.cpp b/src/desktop-style.cpp index 07817529d..c92bcfdf5 100644 --- a/src/desktop-style.cpp +++ b/src/desktop-style.cpp @@ -25,7 +25,7 @@ #include "style.h" #include "preferences.h" #include "sp-use.h" -#include "sp-feblend.h" +#include "filters/blend.h" #include "sp-filter.h" #include "sp-filter-reference.h" #include "sp-gaussian-blur.h" diff --git a/src/desktop.cpp b/src/desktop.cpp index 1ee24f9c6..cd39e77ae 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -535,7 +535,7 @@ bool SPDesktop::isLayer(SPObject *object) const { bool SPDesktop::isWithinViewport (SPItem *item) const { Geom::Rect const viewport = get_display_area(); - boost::optional const bbox = sp_item_bbox_desktop(item); + Geom::OptRect const bbox = sp_item_bbox_desktop(item); if (bbox) { return viewport.contains(*bbox); } else { @@ -756,7 +756,7 @@ SPDesktop::set_display_area (double x0, double y0, double x1, double y1, double // FIXME: This 2geom idiom doesn't allow us to declare dbox const Geom::Rect viewbox = canvas->getViewbox(); - viewbox.expandBy(border); + viewbox.expandBy(-border); double scale = _d2w.descrim(); double newscale; @@ -937,8 +937,8 @@ SPDesktop::zoom_quick (bool enable) } if (!zoomed) { - boost::optional const d = selection->bounds(); - if (d && !d->isEmpty() && d->area() * 2.0 < _quick_zoom_stored_area.area()) { + Geom::OptRect const d = selection->bounds(); + if (d && d->area() * 2.0 < _quick_zoom_stored_area.area()) { set_display_area(*d, 10); zoomed = true; } @@ -1038,8 +1038,7 @@ SPDesktop::zoom_page() Geom::Rect d(Geom::Point(0, 0), Geom::Point(sp_document_width(doc()), sp_document_height(doc()))); - // FIXME: the original NR::Rect::isEmpty call contained an additional threshold of 1.0; is it safe to ignore it? - if (d.isEmpty()) { + if (d.minExtent() < 1.0) { return; } @@ -1070,10 +1069,9 @@ SPDesktop::zoom_page_width() void SPDesktop::zoom_selection() { - boost::optional const d = selection->bounds(); + Geom::OptRect const d = selection->bounds(); - // FIXME: the original NR::Rect::isEmpty call contained an additional threshold of 0.1; is it safe to ignore it? - if ( !d || d->isEmpty() ) { + if ( !d || d->minExtent() < 0.1 ) { return; } @@ -1099,13 +1097,12 @@ SPDesktop::zoom_drawing() SPItem *docitem = SP_ITEM (sp_document_root (doc())); g_return_if_fail (docitem != NULL); - boost::optional d = sp_item_bbox_desktop(docitem); + Geom::OptRect d = sp_item_bbox_desktop(docitem); /* Note that the second condition here indicates that ** there are no items in the drawing. */ - // FIXME: the original NR::Rect::isEmpty call contained an additional threshold of 1.0; is it safe to ignore it? - if ( !d || d->isEmpty() ) { + if ( !d || d->minExtent() < 0.1 ) { return; } diff --git a/src/dialogs/CMakeLists.txt b/src/dialogs/CMakeLists.txt index 4087fbfe9..e9fa7c6fc 100644 --- a/src/dialogs/CMakeLists.txt +++ b/src/dialogs/CMakeLists.txt @@ -1,6 +1,5 @@ SET(dialogs_SRC clonetiler.cpp -debugdialog.cpp dialog-events.cpp eek-color-def.cpp eek-preview.cpp @@ -21,7 +20,6 @@ sp-attribute-widget.cpp stroke-style.cpp swatches.cpp text-edit.cpp -tiledialog.cpp unclump.cpp xml-tree.cpp ) diff --git a/src/dialogs/Makefile_insert b/src/dialogs/Makefile_insert index 4b1d42abb..5d5614668 100644 --- a/src/dialogs/Makefile_insert +++ b/src/dialogs/Makefile_insert @@ -13,57 +13,53 @@ dialogs/all: dialogs/libspdialogs.a dialogs/clean: rm -f dialogs/libspdialogs.a $(dialogs_libspdialogs_a_OBJECTS) -dialogs_libspdialogs_a_SOURCES = \ - dialogs/debugdialog.cpp \ - dialogs/debugdialog.h \ +dialogs_libspdialogs_a_SOURCES = \ + dialogs/clonetiler.cpp \ + dialogs/clonetiler.h \ dialogs/dialog-events.cpp \ - dialogs/dialog-events.h \ - dialogs/eek-color-def.h \ + dialogs/dialog-events.h \ dialogs/eek-color-def.cpp \ - dialogs/eek-preview.h \ - dialogs/eek-preview.cpp \ - dialogs/export.cpp \ - dialogs/export.h \ - dialogs/extensions.cpp \ - dialogs/extensions.h \ - dialogs/fill-style.cpp \ - dialogs/fill-style.h \ + dialogs/eek-color-def.h \ + dialogs/eek-preview.cpp \ + dialogs/eek-preview.h \ + dialogs/export.cpp \ + dialogs/export.h \ + dialogs/extensions.cpp \ + dialogs/extensions.h \ + dialogs/fill-style.cpp \ + dialogs/fill-style.h \ + dialogs/find.cpp \ + dialogs/find.h \ dialogs/guidelinedialog.cpp \ dialogs/guidelinedialog.h \ + dialogs/iconpreview.cpp \ + dialogs/iconpreview.h \ dialogs/in-dt-coordsys.cpp \ dialogs/in-dt-coordsys.h \ - dialogs/input.cpp \ - dialogs/input.h \ + dialogs/input.cpp \ + dialogs/input.h \ dialogs/item-properties.cpp \ dialogs/item-properties.h \ dialogs/layer-properties.cpp \ dialogs/layer-properties.h \ dialogs/layers-panel.cpp \ - dialogs/layers-panel.h \ + dialogs/layers-panel.h \ dialogs/object-attributes.cpp \ dialogs/object-attributes.h \ + dialogs/rdf.cpp \ + dialogs/rdf.h \ dialogs/sp-attribute-widget.cpp \ dialogs/sp-attribute-widget.h \ dialogs/stroke-style.cpp \ - dialogs/stroke-style.h \ - dialogs/swatches.cpp \ - dialogs/swatches.h \ - dialogs/text-edit.cpp \ - dialogs/text-edit.h \ - dialogs/tiledialog.cpp \ - dialogs/tiledialog.h \ - dialogs/xml-tree.cpp \ - dialogs/xml-tree.h \ - dialogs/rdf.cpp \ - dialogs/rdf.h \ - dialogs/find.cpp \ - dialogs/find.h \ - dialogs/clonetiler.cpp \ - dialogs/clonetiler.h \ - dialogs/unclump.cpp \ - dialogs/unclump.h \ - dialogs/iconpreview.cpp \ - dialogs/iconpreview.h + dialogs/stroke-style.h \ + dialogs/swatches.cpp \ + dialogs/swatches.h \ + dialogs/text-edit.cpp \ + dialogs/text-edit.h \ + dialogs/unclump.cpp \ + dialogs/unclump.h \ + dialogs/xml-tree.cpp \ + dialogs/xml-tree.h # dialogs/sp-widget.c \ # dialogs/sp-widget.h \ diff --git a/src/dialogs/clonetiler.cpp b/src/dialogs/clonetiler.cpp index ce0fc15df..d1074ef73 100644 --- a/src/dialogs/clonetiler.cpp +++ b/src/dialogs/clonetiler.cpp @@ -1,14 +1,12 @@ -#define __SP_CLONE_TILER_C__ - -/* +/** @file * Clone tiling dialog - * - * Authors: + */ +/* Authors: * bulia byak * Johan Engelen * * Copyright (C) 2004-2006 Authors - * Released under GNU GPL + * Released under GNU GPL, read the file 'COPYING' for more information */ #ifdef HAVE_CONFIG_H @@ -1246,7 +1244,7 @@ clonetiler_apply( GtkWidget */*widget*/, void * ) bool prefs_bbox = prefs->getBool("/tools/bounding_box", false); SPItem::BBoxType bbox_type = ( prefs_bbox ? SPItem::APPROXIMATE_BBOX : SPItem::GEOMETRIC_BBOX ); - boost::optional r = SP_ITEM(obj)->getBounds(sp_item_i2doc_affine(SP_ITEM(obj)), + Geom::OptRect r = SP_ITEM(obj)->getBounds(sp_item_i2doc_affine(SP_ITEM(obj)), bbox_type); if (r) { w = r->dimensions()[Geom::X]; diff --git a/src/dialogs/clonetiler.h b/src/dialogs/clonetiler.h index 82206818c..6bfb257a4 100644 --- a/src/dialogs/clonetiler.h +++ b/src/dialogs/clonetiler.h @@ -1,15 +1,14 @@ -#ifndef __SP_CLONE_TILER_H__ -#define __SP_CLONE_TILER_H__ - -/** - * \brief Clone tiling dialog - * - * Authors: - * bulia byak +/** @file + * @brief Clone tiling dialog + */ +/* Authors: + * bulia byak * * Copyright (C) 2004 Authors - * + * Released under the GNU GPL, read the file 'COPYING' for more information */ +#ifndef __SP_CLONE_TILER_H__ +#define __SP_CLONE_TILER_H__ #include diff --git a/src/dialogs/debugdialog.cpp b/src/dialogs/debugdialog.cpp deleted file mode 100644 index 42bf96050..000000000 --- a/src/dialogs/debugdialog.cpp +++ /dev/null @@ -1,348 +0,0 @@ -/* - * A very simple dialog for displaying Inkscape messages. Messages - * sent to g_log(), g_warning(), g_message(), ets, are routed here, - * in order to avoid messing with the startup console. - * - * Authors: - * Bob Jamison - * Other dudes from The Inkscape Organization - * - * Copyright (C) 2004 The Inkscape Organization - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ -#ifdef HAVE_CONFIG_H -# include -#endif - -#include -#include -#include -#include -#include -#include -#include - -#include "debugdialog.h" - -namespace Inkscape { -namespace UI { -namespace Dialogs { - - -//######################################################################### -//## I M P L E M E N T A T I O N -//######################################################################### - -/** - * A dialog that displays log messages - */ -class DebugDialogImpl : public DebugDialog, public Gtk::Dialog -{ - - public: - - - /** - * Constructor - */ - DebugDialogImpl(); - - /** - * Destructor - */ - ~DebugDialogImpl(); - - - /** - * Show the dialog - */ - void show(); - - /** - * Do not show the dialog - */ - void hide(); - - /** - * Clear all information from the dialog - */ - void clear(); - - /** - * Display a message - */ - void message(char const *msg); - - /** - * Redirect g_log() messages to this widget - */ - void captureLogMessages(); - - /** - * Return g_log() messages to normal handling - */ - void releaseLogMessages(); - - - - private: - - - Gtk::MenuBar menuBar; - - Gtk::Menu fileMenu; - - Gtk::ScrolledWindow textScroll; - - Gtk::TextView messageText; - - //Handler ID's - guint handlerDefault; - guint handlerGlibmm; - guint handlerAtkmm; - guint handlerPangomm; - guint handlerGdkmm; - guint handlerGtkmm; - -}; - - - - -//######################################################################### -//## E V E N T S -//######################################################################### - -/** - * Also a public method. Remove all text from the dialog - */ -void DebugDialogImpl::clear() -{ - Glib::RefPtr buffer = messageText.get_buffer(); - buffer->erase(buffer->begin(), buffer->end()); -} - - -//######################################################################### -//## C O N S T R U C T O R / D E S T R U C T O R -//######################################################################### -/** - * Constructor - */ -DebugDialogImpl::DebugDialogImpl() -{ - set_title(_("Messages")); - set_size_request(300, 400); - - Gtk::VBox *mainVBox = get_vbox(); - - //## Add a menu for clear() - menuBar.items().push_back( Gtk::Menu_Helpers::MenuElem(_("_File"), fileMenu) ); - fileMenu.items().push_back( Gtk::Menu_Helpers::MenuElem(_("_Clear"), - sigc::mem_fun(*this, &DebugDialogImpl::clear) ) ); - fileMenu.items().push_back( Gtk::Menu_Helpers::MenuElem(_("Capture log messages"), - sigc::mem_fun(*this, &DebugDialogImpl::captureLogMessages) ) ); - fileMenu.items().push_back( Gtk::Menu_Helpers::MenuElem(_("Release log messages"), - sigc::mem_fun(*this, &DebugDialogImpl::releaseLogMessages) ) ); - mainVBox->pack_start(menuBar, Gtk::PACK_SHRINK); - - - //### Set up the text widget - messageText.set_editable(false); - textScroll.add(messageText); - textScroll.set_policy(Gtk::POLICY_ALWAYS, Gtk::POLICY_ALWAYS); - mainVBox->pack_start(textScroll); - - show_all_children(); - - message("ready."); - message("enable log display by setting "); - message("dialogs.debug 'redirect' attribute to 1 in preferences.xml"); - - handlerDefault = 0; - handlerGlibmm = 0; - handlerAtkmm = 0; - handlerPangomm = 0; - handlerGdkmm = 0; - handlerGtkmm = 0; -} - -/** - * Factory method. Use this to create a new DebugDialog - */ -DebugDialog *DebugDialog::create() -{ - DebugDialog *dialog = new DebugDialogImpl(); - return dialog; -} - - -/** - * Constructor - */ -DebugDialogImpl::~DebugDialogImpl() -{ - - -} - - -//######################################################################### -//## M E T H O D S -//######################################################################### - -void DebugDialogImpl::show() -{ - //call super() - Gtk::Dialog::show(); - //sp_transientize((GtkWidget *)gobj()); //Make transient - raise(); - Gtk::Dialog::present(); -} - - - -void DebugDialogImpl::hide() -{ - //call super() - Gtk::Dialog::hide(); -} - - - -void DebugDialogImpl::message(char const *msg) -{ - Glib::RefPtr buffer = messageText.get_buffer(); - Glib::ustring uMsg = msg; - if (uMsg[uMsg.length()-1] != '\n') - uMsg += '\n'; - buffer->insert (buffer->end(), uMsg); -} - - -/* static instance, to reduce dependencies */ -static DebugDialog *debugDialogInstance = NULL; - -DebugDialog *DebugDialog::getInstance() -{ - if ( !debugDialogInstance ) - { - debugDialogInstance = new DebugDialogImpl(); - } - return debugDialogInstance; -} - - - -void DebugDialog::showInstance() -{ - DebugDialog *debugDialog = getInstance(); - debugDialog->show(); -} - - - - -/*##### THIS IS THE IMPORTANT PART ##### */ -void dialogLoggingFunction(const gchar */*log_domain*/, - GLogLevelFlags /*log_level*/, - const gchar *messageText, - gpointer user_data) -{ - DebugDialogImpl *dlg = (DebugDialogImpl *)user_data; - - dlg->message(messageText); - -} - - -void DebugDialogImpl::captureLogMessages() -{ - /* - This might likely need more code, to capture Gtkmm - and Glibmm warnings, or maybe just simply grab stdout/stderr - */ - GLogLevelFlags flags = (GLogLevelFlags) (G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL | - G_LOG_LEVEL_WARNING | G_LOG_LEVEL_MESSAGE | - G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG); - if ( !handlerDefault ) - { - handlerDefault = g_log_set_handler(NULL, flags, - dialogLoggingFunction, (gpointer)this); - } - if ( !handlerGlibmm ) - { - handlerGlibmm = g_log_set_handler("glibmm", flags, - dialogLoggingFunction, (gpointer)this); - } - if ( !handlerAtkmm ) - { - handlerAtkmm = g_log_set_handler("atkmm", flags, - dialogLoggingFunction, (gpointer)this); - } - if ( !handlerPangomm ) - { - handlerPangomm = g_log_set_handler("pangomm", flags, - dialogLoggingFunction, (gpointer)this); - } - if ( !handlerGdkmm ) - { - handlerGdkmm = g_log_set_handler("gdkmm", flags, - dialogLoggingFunction, (gpointer)this); - } - if ( !handlerGtkmm ) - { - handlerGtkmm = g_log_set_handler("gtkmm", flags, - dialogLoggingFunction, (gpointer)this); - } - message("log capture started"); -} - -void DebugDialogImpl::releaseLogMessages() -{ - if ( handlerDefault ) - { - g_log_remove_handler(NULL, handlerDefault); - handlerDefault = 0; - } - if ( handlerGlibmm ) - { - g_log_remove_handler("glibmm", handlerGlibmm); - handlerGlibmm = 0; - } - if ( handlerAtkmm ) - { - g_log_remove_handler("atkmm", handlerAtkmm); - handlerAtkmm = 0; - } - if ( handlerPangomm ) - { - g_log_remove_handler("pangomm", handlerPangomm); - handlerPangomm = 0; - } - if ( handlerGdkmm ) - { - g_log_remove_handler("gdkmm", handlerGdkmm); - handlerGdkmm = 0; - } - if ( handlerGtkmm ) - { - g_log_remove_handler("gtkmm", handlerGtkmm); - handlerGtkmm = 0; - } - message("log capture discontinued"); -} - - - -} //namespace Dialogs -} //namespace UI -} //namespace Inkscape - -//######################################################################### -//## E N D O F F I L E -//######################################################################### - - - diff --git a/src/dialogs/debugdialog.h b/src/dialogs/debugdialog.h deleted file mode 100644 index 1a4a036fd..000000000 --- a/src/dialogs/debugdialog.h +++ /dev/null @@ -1,104 +0,0 @@ -#ifndef __DEBUGDIALOG_H__ -#define __DEBUGDIALOG_H__ -/* - * A very simple dialog for displaying Inkscape messages. Messages - * sent to g_log(), g_warning(), g_message(), ets, are routed here, - * in order to avoid messing with the startup console. - * - * Authors: - * Bob Jamison - * Other dudes from The Inkscape Organization - * - * Copyright (C) 2004 The Inkscape Organization - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - - - -namespace Inkscape { -namespace UI { -namespace Dialogs { - - -/** - * A dialog that displays log messages - */ -class DebugDialog -{ - - public: - - - /** - * Constructor - */ - DebugDialog() {}; - - - /** - * Factory method - */ - static DebugDialog *create(); - - /** - * Destructor - */ - virtual ~DebugDialog() {}; - - - /** - * Show the dialog - */ - virtual void show() = 0; - - /** - * Do not show the dialog - */ - virtual void hide() = 0; - - /** - * Clear all information from the dialog - */ - virtual void clear() = 0; - - /** - * Display a message - */ - virtual void message(char const *msg) = 0; - - /** - * Redirect g_log() messages to this widget - */ - virtual void captureLogMessages() = 0; - - /** - * Return g_log() messages to normal handling - */ - virtual void releaseLogMessages() = 0; - - /** - * Get a shared singleton instance - */ - static DebugDialog *getInstance(); - - /** - * Show the instance above - */ - static void showInstance(); - - - - -}; - - -} //namespace Dialogs -} //namespace UI -} //namespace Inkscape - - - - -#endif /* __DEBUGDIALOG_H__ */ - diff --git a/src/dialogs/dialog-events.cpp b/src/dialogs/dialog-events.cpp index b306e42d6..da55936ce 100644 --- a/src/dialogs/dialog-events.cpp +++ b/src/dialogs/dialog-events.cpp @@ -1,9 +1,7 @@ -#define __DIALOG_EVENTS_C__ - -/** - * \brief Event handler for dialog windows - * - * Authors: +/** @file + * @brief Event handler for dialog windows + */ +/* Authors: * bulia byak * Johan Engelen * @@ -31,9 +29,9 @@ /** -* \brief This function is called to zero the transientize semaphore by a -* timeout. -*/ + * \brief This function is called to zero the transientize semaphore by a + * timeout. + */ gboolean sp_allow_again (gpointer *wd) { diff --git a/src/dialogs/dialog-events.h b/src/dialogs/dialog-events.h index 46cbc7a67..2fca84ad2 100644 --- a/src/dialogs/dialog-events.h +++ b/src/dialogs/dialog-events.h @@ -1,10 +1,7 @@ -#ifndef __DIALOG_EVENTS_H__ -#define __DIALOG_EVENTS_H__ - -/** - * \brief Event handler for dialog windows - * - * Authors: +/** @file + * @brief Event handler for dialog windows + */ +/* Authors: * bulia byak * * Copyright (C) 2003 authors @@ -12,6 +9,9 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ +#ifndef __DIALOG_EVENTS_H__ +#define __DIALOG_EVENTS_H__ + #include #include #include @@ -31,8 +31,8 @@ class Entry; } typedef struct { - GtkWidget *win; - guint stop; + GtkWidget *win; + guint stop; } win_data; diff --git a/src/dialogs/eek-color-def.cpp b/src/dialogs/eek-color-def.cpp index 9a079b68f..85b00b251 100644 --- a/src/dialogs/eek-color-def.cpp +++ b/src/dialogs/eek-color-def.cpp @@ -1,5 +1,5 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * +/** @file + * @brief EEK color definition */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 @@ -133,5 +133,15 @@ void ColorDef::removeCallback( ColorCallback cb, void* data ) (void)data; } - } // namespace eek + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/dialogs/eek-color-def.h b/src/dialogs/eek-color-def.h index e17e8a596..63cd096be 100644 --- a/src/dialogs/eek-color-def.h +++ b/src/dialogs/eek-color-def.h @@ -1,7 +1,5 @@ -#ifndef SEEN_EEK_COLOR_DEF_H -#define SEEN_EEK_COLOR_DEF_H -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * +/** @file + * @brief EEK color definition */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 @@ -39,6 +37,9 @@ * * ***** END LICENSE BLOCK ***** */ +#ifndef SEEN_EEK_COLOR_DEF_H +#define SEEN_EEK_COLOR_DEF_H + #include #include @@ -87,5 +88,15 @@ private: } // namespace eek - #endif // SEEN_EEK_COLOR_DEF_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:encoding=utf-8:textwidth=99 : diff --git a/src/dialogs/eek-preview.cpp b/src/dialogs/eek-preview.cpp index 145346af3..f9aadc561 100644 --- a/src/dialogs/eek-preview.cpp +++ b/src/dialogs/eek-preview.cpp @@ -1,5 +1,5 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * +/** @file + * @brief EEK preview stuff */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 @@ -655,27 +655,27 @@ static void eek_preview_init( EekPreview *preview ) /* GTK_STATE_SELECTED, */ /* GTK_STATE_INSENSITIVE */ - if ( 0 ) { - GdkColor color = {0,0,0,0}; - - color.red = 0xffff; - color.green = 0; - color.blue = 0xffff; - gdk_colormap_alloc_color( gdk_colormap_get_system(), &color, FALSE, TRUE ); - gtk_widget_modify_bg(widg, GTK_STATE_ACTIVE, &color); - - color.red = 0; - color.green = 0xffff; - color.blue = 0; - gdk_colormap_alloc_color( gdk_colormap_get_system(), &color, FALSE, TRUE ); - gtk_widget_modify_bg(widg, GTK_STATE_SELECTED, &color); - - color.red = 0xffff; - color.green = 0; - color.blue = 0; - gdk_colormap_alloc_color( gdk_colormap_get_system(), &color, FALSE, TRUE ); - gtk_widget_modify_bg( widg, GTK_STATE_PRELIGHT, &color ); - } + if ( 0 ) { + GdkColor color = {0,0,0,0}; + + color.red = 0xffff; + color.green = 0; + color.blue = 0xffff; + gdk_colormap_alloc_color( gdk_colormap_get_system(), &color, FALSE, TRUE ); + gtk_widget_modify_bg(widg, GTK_STATE_ACTIVE, &color); + + color.red = 0; + color.green = 0xffff; + color.blue = 0; + gdk_colormap_alloc_color( gdk_colormap_get_system(), &color, FALSE, TRUE ); + gtk_widget_modify_bg(widg, GTK_STATE_SELECTED, &color); + + color.red = 0xffff; + color.green = 0; + color.blue = 0; + gdk_colormap_alloc_color( gdk_colormap_get_system(), &color, FALSE, TRUE ); + gtk_widget_modify_bg( widg, GTK_STATE_PRELIGHT, &color ); + } } @@ -684,3 +684,13 @@ GtkWidget* eek_preview_new(void) return GTK_WIDGET( g_object_new( EEK_PREVIEW_TYPE, NULL ) ); } +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/dialogs/eek-preview.h b/src/dialogs/eek-preview.h index ee99125af..40597eb48 100644 --- a/src/dialogs/eek-preview.h +++ b/src/dialogs/eek-preview.h @@ -1,7 +1,5 @@ -#ifndef SEEN_EEK_PREVIEW_H -#define SEEN_EEK_PREVIEW_H -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * +/** @file + * @brief EEK preview stuff */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 @@ -39,6 +37,9 @@ * * ***** END LICENSE BLOCK ***** */ +#ifndef SEEN_EEK_PREVIEW_H +#define SEEN_EEK_PREVIEW_H + #include G_BEGIN_DECLS @@ -131,5 +132,15 @@ void eek_preview_set_size_mappings( guint count, GtkIconSize const* sizes ); G_END_DECLS - #endif /* SEEN_EEK_PREVIEW_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:encoding=utf-8:textwidth=99 : diff --git a/src/dialogs/export.cpp b/src/dialogs/export.cpp index dc337ef8e..f1a68c999 100644 --- a/src/dialogs/export.cpp +++ b/src/dialogs/export.cpp @@ -1,11 +1,7 @@ -#define __SP_EXPORT_C__ - -/** \file - * \brief PNG export dialog +/** @file + * @brief PNG export dialog */ - -/* - * Authors: +/* Authors: * Lauris Kaplinski * bulia byak * Johan Engelen @@ -317,7 +313,7 @@ sp_export_dialog_area_box (GtkWidget * dlg) dlg ); sp_export_spinbutton_new ( "width", 0.0, 0.0, PNG_UINT_31_MAX, 0.1, 1.0, - us->gobj(), GTK_WIDGET(t->gobj()), 4, 0, _("Width:"), NULL, EXPORT_COORD_PRECISION, 1, + us->gobj(), GTK_WIDGET(t->gobj()), 4, 0, _("Wid_th:"), NULL, EXPORT_COORD_PRECISION, 1, G_CALLBACK (sp_export_area_width_value_changed), dlg ); @@ -333,7 +329,7 @@ sp_export_dialog_area_box (GtkWidget * dlg) dlg ); sp_export_spinbutton_new ( "height", 0.0, 0.0, PNG_UINT_31_MAX, 0.1, 1.0, - us->gobj(), GTK_WIDGET(t->gobj()), 4, 1, _("Height:"), NULL, EXPORT_COORD_PRECISION, 1, + us->gobj(), GTK_WIDGET(t->gobj()), 4, 1, _("Hei_ght:"), NULL, EXPORT_COORD_PRECISION, 1, G_CALLBACK (sp_export_area_height_value_changed), dlg ); @@ -492,7 +488,7 @@ sp_export_dialog (void) sp_export_spinbutton_new ( "bmheight", 16.0, 1.0, 1000000.0, 1.0, 10.0, NULL, GTK_WIDGET(t->gobj()), 0, 1, - _("Height:"), _("pixels at"), 0, 1, + _("_Height:"), _("pixels at"), 0, 1, G_CALLBACK (sp_export_bitmap_height_value_changed), dlg ); @@ -626,7 +622,7 @@ sp_export_dialog (void) { Gtk::HBox* hide_box = new Gtk::HBox(FALSE, 5); - GtkWidget *he = gtk_check_button_new_with_label(_("Hide all except selected")); + GtkWidget *he = gtk_check_button_new_with_label(_("Hide _all except selected")); gtk_widget_set_sensitive(GTK_WIDGET(he), TRUE); gtk_object_set_data(GTK_OBJECT(dlg), "hide_checkbox", he); hide_box->pack_start(*Glib::wrap(he), false, false); @@ -778,7 +774,7 @@ sp_export_selection_modified ( Inkscape::Application */*inkscape*/, if ( SP_ACTIVE_DESKTOP ) { SPDocument *doc; doc = sp_desktop_document (SP_ACTIVE_DESKTOP); - boost::optional bbox = sp_item_bbox_desktop (SP_ITEM (SP_DOCUMENT_ROOT (doc))); + Geom::OptRect bbox = sp_item_bbox_desktop (SP_ITEM (SP_DOCUMENT_ROOT (doc))); if (bbox) { sp_export_set_area (base, bbox->min()[Geom::X], bbox->min()[Geom::Y], @@ -837,7 +833,7 @@ sp_export_area_toggled (GtkToggleButton *tb, GtkObject *base) if ( SP_ACTIVE_DESKTOP ) { SPDocument *doc; - boost::optional bbox; + Geom::OptRect bbox; doc = sp_desktop_document (SP_ACTIVE_DESKTOP); /* Notice how the switch is used to 'fall through' here to get @@ -1102,26 +1098,27 @@ sp_export_export_clicked (GtkButton */*button*/, GtkObject *base) dpi = DPI_BASE; } - NRRect area; - sp_item_invoke_bbox(item, &area, sp_item_i2r_affine((SPItem *) item), TRUE); - - gint width = (gint) ((area.x1 - area.x0) * dpi / PX_PER_IN + 0.5); - gint height = (gint) ((area.y1 - area.y0) * dpi / PX_PER_IN + 0.5); - - if (width > 1 && height > 1) { - /* Do export */ - if (!sp_export_png_file (sp_desktop_document (SP_ACTIVE_DESKTOP), fn, - area.x0, area.y0, area.x1, area.y1, width, height, dpi, dpi, - nv->pagecolor, - NULL, NULL, TRUE, // overwrite without asking - hide ? (GSList *) sp_desktop_selection(SP_ACTIVE_DESKTOP)->itemList() : NULL - )) { - gchar * error; - gchar * safeFile = Inkscape::IO::sanitizeString(fn); - error = g_strdup_printf(_("Could not export to filename %s.\n"), safeFile); - sp_ui_error_dialog(error); - g_free(safeFile); - g_free(error); + Geom::OptRect area; + sp_item_invoke_bbox(item, area, sp_item_i2r_affine((SPItem *) item), TRUE); + if (area) { + gint width = (gint) (area->width() * dpi / PX_PER_IN + 0.5); + gint height = (gint) (area->height() * dpi / PX_PER_IN + 0.5); + + if (width > 1 && height > 1) { + /* Do export */ + if (!sp_export_png_file (sp_desktop_document (SP_ACTIVE_DESKTOP), fn, + *area, width, height, dpi, dpi, + nv->pagecolor, + NULL, NULL, TRUE, // overwrite without asking + hide ? (GSList *) sp_desktop_selection(SP_ACTIVE_DESKTOP)->itemList() : NULL + )) { + gchar * error; + gchar * safeFile = Inkscape::IO::sanitizeString(fn); + error = g_strdup_printf(_("Could not export to filename %s.\n"), safeFile); + sp_ui_error_dialog(error); + g_free(safeFile); + g_free(error); + } } } n++; @@ -1183,7 +1180,7 @@ sp_export_export_clicked (GtkButton */*button*/, GtkObject *base) /* Do export */ if (!sp_export_png_file (sp_desktop_document (SP_ACTIVE_DESKTOP), filename_ext, - x0, y0, x1, y1, width, height, xdpi, ydpi, + Geom::Rect(Geom::Point(x0, y0), Geom::Point(x1, y1)), width, height, xdpi, ydpi, nv->pagecolor, sp_export_progress_callback, base, FALSE, hide ? (GSList *) sp_desktop_selection(SP_ACTIVE_DESKTOP)->itemList() : NULL @@ -1407,7 +1404,7 @@ sp_export_detect_size(GtkObject * base) { switch (this_test[i]) { case SELECTION_SELECTION: if ((sp_desktop_selection(SP_ACTIVE_DESKTOP))->isEmpty() == false) { - boost::optional bbox = (sp_desktop_selection (SP_ACTIVE_DESKTOP))->bounds(); + Geom::OptRect bbox = (sp_desktop_selection (SP_ACTIVE_DESKTOP))->bounds(); //std::cout << "Selection " << bbox; if ( bbox && sp_export_bbox_equal(*bbox,current_bbox)) { @@ -1418,7 +1415,7 @@ sp_export_detect_size(GtkObject * base) { case SELECTION_DRAWING: { SPDocument *doc = sp_desktop_document (SP_ACTIVE_DESKTOP); - boost::optional bbox = sp_item_bbox_desktop (SP_ITEM (SP_DOCUMENT_ROOT (doc))); + Geom::OptRect bbox = sp_item_bbox_desktop (SP_ITEM (SP_DOCUMENT_ROOT (doc))); // std::cout << "Drawing " << bbox2; if ( bbox && sp_export_bbox_equal(*bbox,current_bbox) ) { @@ -1969,9 +1966,9 @@ sp_export_filename_modified (GtkObject * object, gpointer data) Local Variables: mode:c++ c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)) + 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 : +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/dialogs/export.h b/src/dialogs/export.h index 3bb0a1375..801ddc91a 100644 --- a/src/dialogs/export.h +++ b/src/dialogs/export.h @@ -1,14 +1,24 @@ +/** @file + * @brief export to bitmap dialog + */ +/* Authors: + * Lauris Kaplinski + * bulia byak + * Johan Engelen + * + * Copyright (C) 1999-2007 Authors + * Copyright (C) 2001-2002 Ximian, Inc. + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + #ifndef SP_EXPORT_H #define SP_EXPORT_H /** - * \brief export to bitmap dialog - * * Creates a dialog window for exporting an image to a bitmap if one doesn't already exist and - * shows it to the user. If the dialog has already been created, it simply shows the window. - * + * shows it to the user. If the dialog has already been created, it simply shows the window. */ - void sp_export_dialog (void); #endif diff --git a/src/dialogs/extensions.cpp b/src/dialogs/extensions.cpp index e363df607..f168da33a 100644 --- a/src/dialogs/extensions.cpp +++ b/src/dialogs/extensions.cpp @@ -1,16 +1,13 @@ -/* - * A simple dialog for previewing icon representation. - * - * Authors: +/** @file + * @brief A simple dialog with information about extensions + */ +/* Authors: * Jon A. Cruz * * Copyright (C) 2005 Jon A. Cruz * * Released under GNU GPL, read the file 'COPYING' for more information */ -#ifdef HAVE_CONFIG_H -# include -#endif #include //for GTK_RESPONSE* types #include @@ -116,8 +113,17 @@ void ExtensionsPanel::rescan() // g_message("\\------------------"); } - - } //namespace Dialogs } //namespace UI } //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:encoding=utf-8:textwidth=99 : diff --git a/src/dialogs/extensions.h b/src/dialogs/extensions.h index e253ab849..8b0fc2780 100644 --- a/src/dialogs/extensions.h +++ b/src/dialogs/extensions.h @@ -1,24 +1,23 @@ - -#ifndef SEEN_EXTENSIONS_H -#define SEEN_EXTENSIONS_H -/* - * A simple dialog for previewing icon representation. - * - * Authors: +/** @file + * A simple dialog with information about extensions + */ +/* Authors: * Jon A. Cruz * * Copyright (C) 2005 The Inkscape Organization - * * Released under GNU GPL, read the file 'COPYING' for more information */ + +#ifndef SEEN_EXTENSIONS_H +#define SEEN_EXTENSIONS_H #include #include "ui/widget/panel.h" namespace Inkscape { - namespace Extension { - class Extension; - } +namespace Extension { +class Extension; +} } namespace Inkscape { @@ -54,6 +53,4 @@ private: } //namespace UI } //namespace Inkscape - - #endif // SEEN_EXTENSIONS_H diff --git a/src/dialogs/fill-style.cpp b/src/dialogs/fill-style.cpp index e095425a9..e1c30e7ae 100644 --- a/src/dialogs/fill-style.cpp +++ b/src/dialogs/fill-style.cpp @@ -1,9 +1,7 @@ -#define __SP_FILL_STYLE_C__ - -/** - * \brief Fill style widget - * - * Authors: +/** @file + * @brief Fill style widget + */ +/* Authors: * Lauris Kaplinski * Frank Felfe * bulia byak diff --git a/src/dialogs/fill-style.h b/src/dialogs/fill-style.h index 96cb06987..3924412ec 100644 --- a/src/dialogs/fill-style.h +++ b/src/dialogs/fill-style.h @@ -1,10 +1,7 @@ -#ifndef __SP_FILL_STYLE_H__ -#define __SP_FILL_STYLE_H__ - -/** - * \brief Fill style configuration - * - * Authors: +/** @file + * @brief Fill style configuration + */ +/* Authors: * Lauris Kaplinski * * Copyright (C) 2002 Lauris Kaplinski @@ -12,10 +9,11 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ -#include +#ifndef SEEN_DIALOGS_SP_FILL_STYLE_H +#define SEEN_DIALOGS_SP_FILL_STYLE_H +#include #include - #include "forward.h" diff --git a/src/dialogs/find.cpp b/src/dialogs/find.cpp index 96a630553..29a0fe7e8 100644 --- a/src/dialogs/find.cpp +++ b/src/dialogs/find.cpp @@ -1,9 +1,7 @@ -#define __SP_TRANSFORMATION_C__ - -/** - * \brief Find dialog - * - * Authors: +/** @file + * @brief Find dialog + */ +/* Authors: * bulia byak * * Copyright (C) 2004 Authors @@ -11,13 +9,7 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - - #include "widgets/icon.h" - #include "message-stack.h" //TODO : delete this @@ -69,9 +61,6 @@ sp_find_dialog(){ #define MIN_ONSCREEN_DISTANCE 50 -using NR::X; -using NR::Y; - static GtkWidget *dlg = NULL; static win_data wd; diff --git a/src/dialogs/find.h b/src/dialogs/find.h index 38200d532..fe5861a73 100644 --- a/src/dialogs/find.h +++ b/src/dialogs/find.h @@ -1,10 +1,7 @@ -#ifndef SEEN_FIND_H -#define SEEN_FIND_H - -/** - * \brief Find dialog - * - * Authors: +/** @file + * @brief Find dialog + */ +/* Authors: * bulia byak * * Copyright (C) 2004 Authors @@ -12,6 +9,9 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ +#ifndef SEEN_FIND_H +#define SEEN_FIND_H + #include void sp_find_dialog(); diff --git a/src/dialogs/guidelinedialog.cpp b/src/dialogs/guidelinedialog.cpp index 1dc23cb2b..f0115ee91 100644 --- a/src/dialogs/guidelinedialog.cpp +++ b/src/dialogs/guidelinedialog.cpp @@ -1,9 +1,7 @@ -#define __GUIDELINE_CPP__ - -/* - * simple guideline dialog - * - * Authors: +/** @file + * @brief Simple guideline dialog + */ +/* Authors: * Lauris Kaplinski * Andrius R. * Johan Engelen @@ -285,4 +283,3 @@ void GuidelinePropertiesDialog::_setup() { End: */ // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : - diff --git a/src/dialogs/iconpreview.cpp b/src/dialogs/iconpreview.cpp index f31914e3e..4d402d235 100644 --- a/src/dialogs/iconpreview.cpp +++ b/src/dialogs/iconpreview.cpp @@ -1,7 +1,7 @@ -/* - * A simple dialog for previewing icon representation. - * - * Authors: +/** @file + * @brief A simple dialog for previewing icon representation. + */ +/* Authors: * Jon A. Cruz * Bob Jamison * Other dudes from The Inkscape Organization diff --git a/src/dialogs/iconpreview.h b/src/dialogs/iconpreview.h index 3a3652334..8f143725d 100644 --- a/src/dialogs/iconpreview.h +++ b/src/dialogs/iconpreview.h @@ -1,9 +1,7 @@ -#ifndef SEEN_ICON_PREVIEW_H -#define SEEN_ICON_PREVIEW_H -/* - * A simple dialog for previewing icon representation. - * - * Authors: +/** @file + * @brief A simple dialog for previewing icon representation. + */ +/* Authors: * Jon A. Cruz * Bob Jamison * Other dudes from The Inkscape Organization @@ -13,6 +11,9 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ +#ifndef SEEN_ICON_PREVIEW_H +#define SEEN_ICON_PREVIEW_H + #include #include #include diff --git a/src/dialogs/in-dt-coordsys.h b/src/dialogs/in-dt-coordsys.h index 6078f9b41..c2ec96d8e 100644 --- a/src/dialogs/in-dt-coordsys.h +++ b/src/dialogs/in-dt-coordsys.h @@ -4,7 +4,6 @@ bool in_dt_coordsys(SPObject const &item); - #endif /* !SEEN_IN_DT_COORDSYS */ /* diff --git a/src/dialogs/input.cpp b/src/dialogs/input.cpp index e23fcc848..0b4587f55 100644 --- a/src/dialogs/input.cpp +++ b/src/dialogs/input.cpp @@ -1,5 +1,3 @@ -#define __SP_INPUT_C__ - /** @file * @brief Extended input devices dialog */ @@ -13,8 +11,9 @@ */ #ifdef HAVE_CONFIG_H -# include "config.h" +# include #endif + #include #include #include diff --git a/src/dialogs/input.h b/src/dialogs/input.h index 70e68774e..0996d06ca 100644 --- a/src/dialogs/input.h +++ b/src/dialogs/input.h @@ -1,10 +1,7 @@ -#ifndef __SP_INPUT_H__ -#define __SP_INPUT_H__ - -/** - * \brief Extended input device dialog - * - * Author: +/** @file + * @brief Extended input device dialog + */ +/* Author: * Nicklas Lindgren * * Copyright (C) 2005 Authors @@ -12,6 +9,8 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ +#ifndef SEEN_DIALOGS_INPUT_H +#define SEEN_DIALOGS_INPUT_H void sp_input_load_from_preferences (void); void sp_input_save_to_preferences (void); diff --git a/src/dialogs/item-properties.cpp b/src/dialogs/item-properties.cpp index 808775786..d1992b158 100644 --- a/src/dialogs/item-properties.cpp +++ b/src/dialogs/item-properties.cpp @@ -1,9 +1,7 @@ -#define __SP_ITEM_PROPERTIES_C__ - -/* - * Object properties dialog - * - * Authors: +/** @file + * @brief Object properties dialog + */ +/* Authors: * Lauris Kaplinski * bulia byak * Johan Engelen diff --git a/src/dialogs/item-properties.h b/src/dialogs/item-properties.h index a81034aae..9815a1fc5 100644 --- a/src/dialogs/item-properties.h +++ b/src/dialogs/item-properties.h @@ -1,20 +1,17 @@ -#ifndef __SP_ITEM_PROPERTIES_H__ -#define __SP_ITEM_PROPERTIES_H__ - -/** +/** @file * \brief Display settings dialog - * - * Author: + */ +/* Author: * Lauris Kaplinski * * Copyright (C) 2001 Ximian, Inc. - * + * Released under GNU GPL, read the file 'COPYING' for more information */ -#include - - +#ifndef SEEN_DIALOGS_ITEM_PROPERTIES_H +#define SEEN_DIALOGS_ITEM_PROPERTIES_H +#include #include #include "../forward.h" @@ -22,8 +19,6 @@ GtkWidget *sp_item_widget_new (void); void sp_item_dialog (void); - - #endif /* diff --git a/src/dialogs/layer-properties.cpp b/src/dialogs/layer-properties.cpp index bd95fbc71..ccd91fa2e 100644 --- a/src/dialogs/layer-properties.cpp +++ b/src/dialogs/layer-properties.cpp @@ -1,8 +1,7 @@ -/** - * - * \brief Dialog for renaming layers - * - * Author: +/** @file + * @brief Dialog for renaming layers + */ +/* Author: * Bryce W. Harrington * Andrius R. * @@ -12,12 +11,7 @@ * Released under GNU GPL. Read the file 'COPYING' for more information */ -#ifdef HAVE_CONFIG_H -# include -#endif - #include - #include #include "inkscape.h" #include "desktop.h" diff --git a/src/dialogs/layer-properties.h b/src/dialogs/layer-properties.h index 58bed141d..807967e8d 100644 --- a/src/dialogs/layer-properties.h +++ b/src/dialogs/layer-properties.h @@ -1,8 +1,7 @@ -/** - * - * \brief Dialog for renaming layers - * - * Author: +/** @file + * @brief Dialog for renaming layers + */ +/* Author: * Bryce W. Harrington * * Copyright (C) 2004 Bryce Harrington diff --git a/src/dialogs/layers-panel.h b/src/dialogs/layers-panel.h index 62596e407..1f593b9c6 100644 --- a/src/dialogs/layers-panel.h +++ b/src/dialogs/layers-panel.h @@ -1,5 +1,3 @@ -#ifndef SEEN_LAYERS_PANEL_H -#define SEEN_LAYERS_PANEL_H /* * A simple dialog for layer UI. * @@ -11,6 +9,9 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ +#ifndef SEEN_LAYERS_PANEL_H +#define SEEN_LAYERS_PANEL_H + #include #include #include diff --git a/src/dialogs/object-attributes.cpp b/src/dialogs/object-attributes.cpp index e0c891ea1..d9bcf1489 100644 --- a/src/dialogs/object-attributes.cpp +++ b/src/dialogs/object-attributes.cpp @@ -1,9 +1,7 @@ -#define __SP_OBJECT_ATTRIBUTES_C__ - -/** - * \brief Generic properties editor - * - * Authors: +/** @file + * @brief Generic properties editor + */ +/* Authors: * Lauris Kaplinski * bulia byak * @@ -12,10 +10,6 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - #include #include #include @@ -149,11 +143,8 @@ sp_object_attributes_dialog (SPObject *object, const gchar *tag) sp_object_attr_show_dialog (object, image_desc, tag); } } - } // end of sp_object_attributes_dialog() - - /* Local Variables: mode:c++ diff --git a/src/dialogs/object-attributes.h b/src/dialogs/object-attributes.h index 2fc562e16..726d8e43b 100644 --- a/src/dialogs/object-attributes.h +++ b/src/dialogs/object-attributes.h @@ -1,10 +1,7 @@ -#ifndef __SP_OBJECT_ATTRIBUTES_H__ -#define __SP_OBJECT_ATTRIBUTES_H__ - -/** - * \brief Generic object attribute editor - * - * Author: +/** @file + * @brief Generic object attribute editor + */ +/* Author: * Lauris Kaplinski * * Copyright (C) 2001 Ximian, Inc. @@ -12,17 +9,15 @@ * Licensed under GNU GPL */ -#include - - +#ifndef SEEN_DIALOGS_OBJECT_ATTRIBUTES_H +#define SEEN_DIALOGS_OBJECT_ATTRIBUTES_H +#include #include #include "../forward.h" void sp_object_attributes_dialog (SPObject *object, const gchar *tag); - - #endif /* diff --git a/src/dialogs/rdf.cpp b/src/dialogs/rdf.cpp index 70cac4e1f..f0b174922 100644 --- a/src/dialogs/rdf.cpp +++ b/src/dialogs/rdf.cpp @@ -1,9 +1,9 @@ -/** - * \brief RDF manipulation functions - * - * FIXME: move these to xml/ instead of dialogs/ +/** @file + * @brief RDF manipulation functions * - * Authors: + * @todo move these to xml/ instead of dialogs/ + */ +/* Authors: * Kees Cook * Jon Phillips * @@ -11,22 +11,14 @@ * Copyright (C) 2006 Jon Phillips * * Released under GNU GPL, read the file 'COPYING' for more information - * */ -#ifdef HAVE_CONFIG_H -# include -#endif - - - #include "xml/repr.h" #include "rdf.h" #include "sp-item-group.h" #include "inkscape.h" /* - Example RDF XML from various places... filetype - - */ struct rdf_double_t rdf_license_empty [] = { @@ -1021,7 +1011,6 @@ rdf_set_defaults ( SPDocument * doc ) } } - /* Local Variables: mode:c++ @@ -1031,4 +1020,4 @@ rdf_set_defaults ( SPDocument * doc ) fill-column:99 End: */ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/dialogs/rdf.h b/src/dialogs/rdf.h index 4c907e7aa..a98f5a1e4 100644 --- a/src/dialogs/rdf.h +++ b/src/dialogs/rdf.h @@ -1,20 +1,16 @@ -/** - * - * \brief headers for RDF types - * - * Authors: +/** @file + * @brief headers for RDF types + */ +/* Authors: * Kees Cook * - * Copyright (C) 2004 Kees Cook - * + * Copyright (C) 2004 Authors * Released under GNU GPL, read the file 'COPYING' for more information - * */ #ifndef _RDF_H_ #define _RDF_H_ #include - #include #include "document.h" @@ -121,4 +117,4 @@ void rdf_set_defaults ( SPDocument * doc ); fill-column:99 End: */ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/dialogs/sp-attribute-widget.cpp b/src/dialogs/sp-attribute-widget.cpp index 9848d9f26..de14fc173 100644 --- a/src/dialogs/sp-attribute-widget.cpp +++ b/src/dialogs/sp-attribute-widget.cpp @@ -1,20 +1,12 @@ -#define __SP_ATTRIBUTE_WIDGET_C__ - -/** - * \brief SPAttributeWidget - * - * Widget, that listens and modifies repr attributes - * - * Authors: +/** @file + * @brief Widget that listens and modifies repr attributes + */ +/* Authors: * Lauris Kaplinski * * Copyright (C) 2001 Ximian, Inc. - * - * Licensed under GNU GPL + * Released under GNU GPL, read the file 'COPYING' for more information */ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif #include #include diff --git a/src/dialogs/sp-attribute-widget.h b/src/dialogs/sp-attribute-widget.h index dc27c5a24..01da29bed 100644 --- a/src/dialogs/sp-attribute-widget.h +++ b/src/dialogs/sp-attribute-widget.h @@ -1,12 +1,7 @@ -#ifndef __SP_ATTRIBUTE_WIDGET_H__ -#define __SP_ATTRIBUTE_WIDGET_H__ - -/** - * \brief SPAttributeWidget - * - * Widget, that listens and modifies repr attributes - * - * Authors: +/** @file + * @brief Widget that listens and modifies repr attributes + */ +/* Authors: * Lauris Kaplinski * * Copyright (C) 2002 authors @@ -15,8 +10,10 @@ * Licensed under GNU GPL, read the file 'COPYING' for more information */ -#include +#ifndef SEEN_DIALOGS_SP_ATTRIBUTE_WIDGET_H +#define SEEN_DIALOGS_SP_ATTRIBUTE_WIDGET_H +#include #include #define SP_TYPE_ATTRIBUTE_WIDGET (sp_attribute_widget_get_type ()) @@ -119,7 +116,6 @@ void sp_attribute_table_set_repr ( SPAttributeTable *spw, const gchar **labels, const gchar **attrs ); - #endif /* diff --git a/src/dialogs/stroke-style.cpp b/src/dialogs/stroke-style.cpp index c7173ad1e..b0375f755 100644 --- a/src/dialogs/stroke-style.cpp +++ b/src/dialogs/stroke-style.cpp @@ -1,9 +1,7 @@ -#define __SP_STROKE_STYLE_C__ - -/** - * \brief Stroke style dialog - * - * Authors: +/** @file + * @brief Stroke style dialog + */ +/* Authors: * Lauris Kaplinski * Bryce Harrington * bulia byak @@ -20,12 +18,6 @@ #define noSP_SS_VERBOSE -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - - - #include #include @@ -594,7 +586,7 @@ sp_marker_prev_new(unsigned psize, gchar const *mname, // Find object's bbox in document Geom::Matrix const i2doc(sp_item_i2doc_affine(SP_ITEM(object))); - boost::optional dbox = SP_ITEM(object)->getBounds(i2doc); + Geom::OptRect dbox = SP_ITEM(object)->getBounds(i2doc); if (!dbox) { return NULL; @@ -1834,7 +1826,6 @@ ink_extract_marker_name(gchar const *n, SPDocument *doc) return marker; } - /* Local Variables: mode:c++ @@ -1844,4 +1835,4 @@ ink_extract_marker_name(gchar const *n, SPDocument *doc) fill-column:99 End: */ -// vim: filetype=c++:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/dialogs/stroke-style.h b/src/dialogs/stroke-style.h index 475a2d388..b947209e3 100644 --- a/src/dialogs/stroke-style.h +++ b/src/dialogs/stroke-style.h @@ -1,16 +1,16 @@ -#ifndef __SP_STROKE_STYLE_H__ -#define __SP_STROKE_STYLE_H__ - -/** - * \brief Stroke style dialog - * - * Author: +/** @file + * @brief Stroke style dialog + */ +/* Author: * Lauris Kaplinski * * Copyright (C) 2001 Ximian, Inc. - * + * Released under GNU GPL, read the file 'COPYING' for more information */ +#ifndef SEEN_DIALOGS_STROKE_STYLE_H +#define SEEN_DIALOGS_STROKE_STYLE_H + #include #include diff --git a/src/dialogs/swatches.cpp b/src/dialogs/swatches.cpp index 71c16d87a..2eb30f27c 100644 --- a/src/dialogs/swatches.cpp +++ b/src/dialogs/swatches.cpp @@ -1,7 +1,7 @@ -/* - * A simple panel for color swatches - * - * Authors: +/** @file + * @brief Color swatches dialog + */ +/* Authors: * Jon A. Cruz * John Bintz * @@ -10,9 +10,6 @@ * * Released under GNU GPL, read the file 'COPYING' for more information */ -#ifdef HAVE_CONFIG_H -# include -#endif #include diff --git a/src/dialogs/swatches.h b/src/dialogs/swatches.h index 630fada7c..fc3c772b8 100644 --- a/src/dialogs/swatches.h +++ b/src/dialogs/swatches.h @@ -1,16 +1,14 @@ - -#ifndef SEEN_SWATCHES_H -#define SEEN_SWATCHES_H -/* - * A simple dialog for previewing icon representation. - * - * Authors: +/** @file + * @brief Color swatches dialog + */ +/* Authors: * Jon A. Cruz * * Copyright (C) 2005 Jon A. Cruz - * * Released under GNU GPL, read the file 'COPYING' for more information */ +#ifndef SEEN_DIALOGS_SWATCHES_H +#define SEEN_DIALOGS_SWATCHES_H #include #include diff --git a/src/dialogs/text-edit.cpp b/src/dialogs/text-edit.cpp index 1f8395c95..e213a8aba 100644 --- a/src/dialogs/text-edit.cpp +++ b/src/dialogs/text-edit.cpp @@ -1,9 +1,7 @@ -#define __SP_TEXT_EDIT_C__ - -/** - * \brief Text editing dialog - * - * Authors: +/** @file + * @brief Text editing dialog + */ +/* Authors: * Lauris Kaplinski * bulia byak * Johan Engelen @@ -19,7 +17,6 @@ #endif #include - #include #ifdef WITH_GTKSPELL diff --git a/src/dialogs/text-edit.h b/src/dialogs/text-edit.h index 1fa60c457..1e5cdc77d 100644 --- a/src/dialogs/text-edit.h +++ b/src/dialogs/text-edit.h @@ -1,12 +1,18 @@ -#ifndef SP_TEXT_EDIT_H -#define SP_TEXT_EDIT_H - -/** - * \brief text-edit +/** @file + * @brief Text-edit + */ +/* Authors: + * Lauris Kaplinski + * bulia byak + * Johan Engelen * - * Text editing and font changes + * Copyright (C) 1999-2007 Authors + * Copyright (C) 2000-2001 Ximian, Inc. * + * Released under GNU GPL, read the file 'COPYING' for more information */ +#ifndef SEEN_DIALOGS_TEXT_EDIT_H +#define SEEN_DIALOGS_TEXT_EDIT_H void sp_text_edit_dialog (void); void sp_text_edit_dialog_default_set_insensitive (); //FIXME: Replace trough a verb diff --git a/src/dialogs/tiledialog.cpp b/src/dialogs/tiledialog.cpp deleted file mode 100644 index f597c601b..000000000 --- a/src/dialogs/tiledialog.cpp +++ /dev/null @@ -1,887 +0,0 @@ -/* - * A simple dialog for creating grid type arrangements of selected objects - * - * Authors: - * Bob Jamison ( based off trace dialog) - * John Cliff - * Other dudes from The Inkscape Organization - * - * Copyright (C) 2004 Bob Jamison - * Copyright (C) 2004 John Cliff - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ -//#define DEBUG_GRID_ARRANGE 1 - -#ifdef HAVE_CONFIG_H -# include -#endif - - -#include //for GTK_RESPONSE* types -#include -#include -#include - -#include "verbs.h" -#include "preferences.h" -#include "inkscape.h" -#include "desktop-handles.h" -#include "selection.h" -#include "document.h" -#include "sp-item.h" -#include "widgets/icon.h" -#include "tiledialog.h" - - - -/* - * Sort items by their x co-ordinates, taking account of y (keeps rows intact) - * - * <0 *elem1 goes before *elem2 - * 0 *elem1 == *elem2 - * >0 *elem1 goes after *elem2 - */ -int -sp_compare_x_position(SPItem *first, SPItem *second) -{ - using Geom::X; - using Geom::Y; - - boost::optional a = first->getBounds(sp_item_i2doc_affine(first)); - boost::optional b = second->getBounds(sp_item_i2doc_affine(second)); - - if ( !a || !b ) { - // FIXME? - return 0; - } - - double const a_height = a->dimensions()[Y]; - double const b_height = b->dimensions()[Y]; - - bool a_in_b_vert = false; - if ((a->min()[Y] < b->min()[Y] + 0.1) && (a->min()[Y] > b->min()[Y] - b_height)) { - a_in_b_vert = true; - } else if ((b->min()[Y] < a->min()[Y] + 0.1) && (b->min()[Y] > a->min()[Y] - a_height)) { - a_in_b_vert = true; - } else if (b->min()[Y] == a->min()[Y]) { - a_in_b_vert = true; - } else { - a_in_b_vert = false; - } - - if (!a_in_b_vert) { - return -1; - } - if (a_in_b_vert && a->min()[X] > b->min()[X]) { - return 1; - } - if (a_in_b_vert && a->min()[X] < b->min()[X]) { - return -1; - } - return 0; -} - -/* - * Sort items by their y co-ordinates. - */ -int -sp_compare_y_position(SPItem *first, SPItem *second) -{ - boost::optional a = first->getBounds(sp_item_i2doc_affine(first)); - boost::optional b = second->getBounds(sp_item_i2doc_affine(second)); - - if ( !a || !b ) { - // FIXME? - return 0; - } - - if (a->min()[Geom::Y] > b->min()[Geom::Y]) { - return 1; - } - if (a->min()[Geom::Y] < b->min()[Geom::Y]) { - return -1; - } - - return 0; -} - -namespace Inkscape { -namespace UI { -namespace Dialog { - - -//######################################################################### -//## E V E N T S -//######################################################################### - -/* - * - * This arranges the selection in a grid pattern. - * - */ - -void TileDialog::Grid_Arrange () -{ - - int cnt,row_cnt,col_cnt,a,row,col; - double grid_left,grid_top,col_width,row_height,paddingx,paddingy,width, height, new_x, new_y,cx,cy; - double total_col_width,total_row_height; - col_width = 0; - row_height = 0; - total_col_width=0; - total_row_height=0; - - // check for correct numbers in the row- and col-spinners - on_col_spinbutton_changed(); - on_row_spinbutton_changed(); - - // set padding to manual values - paddingx = XPadSpinner.get_value(); - paddingy = YPadSpinner.get_value(); - - std::vector row_heights; - std::vector col_widths; - std::vector row_ys; - std::vector col_xs; - - int NoOfCols = NoOfColsSpinner.get_value_as_int(); - int NoOfRows = NoOfRowsSpinner.get_value_as_int(); - - width = 0; - for (a=0;aitemList(); - cnt=0; - for (; items != NULL; items = items->next) { - SPItem *item = SP_ITEM(items->data); - boost::optional b = item->getBounds(sp_item_i2doc_affine(item)); - if (!b) { - continue; - } - - width = b->dimensions()[Geom::X]; - height = b->dimensions()[Geom::Y]; - - cx = b->midpoint()[Geom::X]; - cy = b->midpoint()[Geom::Y]; - - if (b->min()[Geom::X] < grid_left) { - grid_left = b->min()[Geom::X]; - } - if (b->min()[Geom::Y] < grid_top) { - grid_top = b->min()[Geom::Y]; - } - if (width > col_width) { - col_width = width; - } - if (height > row_height) { - row_height = height; - } - } - - - // require the sorting done before we can calculate row heights etc. - - const GSList *items2 = selection->itemList(); - GSList *rev = g_slist_copy((GSList *) items2); - GSList *sorted = NULL; - rev = g_slist_sort(rev, (GCompareFunc) sp_compare_y_position); - sorted = g_slist_sort(rev, (GCompareFunc) sp_compare_x_position); - - - // Calculate individual Row and Column sizes if necessary - - - cnt=0; - const GSList *sizes = sorted; - for (; sizes != NULL; sizes = sizes->next) { - SPItem *item = SP_ITEM(sizes->data); - boost::optional b = item->getBounds(sp_item_i2doc_affine(item)); - if (b) { - width = b->dimensions()[Geom::X]; - height = b->dimensions()[Geom::Y]; - if (width > col_widths[(cnt % NoOfCols)]) { - col_widths[(cnt % NoOfCols)] = width; - } - if (height > row_heights[(cnt / NoOfCols)]) { - row_heights[(cnt / NoOfCols)] = height; - } - } - - cnt++; - } - - - /// Make sure the top and left of the grid dont move by compensating for align values. - if (RowHeightButton.get_active()){ - grid_top = grid_top - (((row_height - row_heights[0]) / 2)*(VertAlign)); - } - if (ColumnWidthButton.get_active()){ - grid_left = grid_left - (((col_width - col_widths[0]) /2)*(HorizAlign)); - } - - #ifdef DEBUG_GRID_ARRANGE - g_print("\n cx = %f cy= %f gridleft=%f",cx,cy,grid_left); - #endif - - // Calculate total widths and heights, allowing for columns and rows non uniformly sized. - - if (ColumnWidthButton.get_active()){ - total_col_width = col_width * NoOfCols; - col_widths.clear(); - for (a=0;a sel_bbox = selection->bounds(); - // Fit to bbox, calculate padding between rows accordingly. - if ( sel_bbox && !SpaceManualRadioButton.get_active() ){ -#ifdef DEBUG_GRID_ARRANGE -g_print("\n row = %f col = %f selection x= %f selection y = %f", total_row_height,total_col_width, b.extent(Geom::X), b.extent(Geom::Y)); -#endif - paddingx = (sel_bbox->width() - total_col_width) / (NoOfCols -1); - paddingy = (sel_bbox->height() - total_row_height) / (NoOfRows -1); - } - -/* - Horizontal align - Left = 0 - Centre = 1 - Right = 2 - - Vertical align - Top = 0 - Middle = 1 - Bottom = 2 - - X position is calculated by taking the grids left co-ord, adding the distance to the column, - then adding 1/2 the spacing multiplied by the align variable above, - Y position likewise, takes the top of the grid, adds the y to the current row then adds the padding in to align it. - -*/ - - // Calculate row and column x and y coords required to allow for columns and rows which are non uniformly sized. - - for (a=0;adata); - sorted = sorted->next; - } - - for (; current_row != NULL; current_row = current_row->next) { - SPItem *item=SP_ITEM(current_row->data); - Inkscape::XML::Node *repr = SP_OBJECT_REPR(item); - boost::optional b = item->getBounds(sp_item_i2doc_affine(item)); - Geom::Point min; - if (b) { - width = b->dimensions()[Geom::X]; - height = b->dimensions()[Geom::Y]; - min = b->min(); - } else { - width = height = 0; - min = Geom::Point(0, 0); - } - - row = cnt / NoOfCols; - col = cnt % NoOfCols; - - new_x = grid_left + (((col_widths[col] - width)/2)*HorizAlign) + col_xs[col]; - new_y = grid_top + (((row_heights[row] - height)/2)*VertAlign) + row_ys[row]; - - // signs are inverted between x and y due to y inversion - Geom::Point move = Geom::Point(new_x - min[Geom::X], min[Geom::Y] - new_y); - Geom::Matrix const affine = Geom::Matrix(Geom::Translate(move)); - sp_item_set_i2d_affine(item, sp_item_i2d_affine(item) * affine); - sp_item_write_transform(item, repr, item->transform, NULL); - SP_OBJECT (current_row->data)->updateRepr(); - cnt +=1; - } - g_slist_free (current_row); - } - - sp_document_done (sp_desktop_document (desktop), SP_VERB_SELECTION_GRIDTILE, - _("Arrange in a grid")); - -} - - -//######################################################################### -//## E V E N T S -//######################################################################### - - -void TileDialog::_apply() -{ - Grid_Arrange(); -} - - -/** - * changed value in # of columns spinbox. - */ -void TileDialog::on_row_spinbutton_changed() -{ - // quit if run by the attr_changed listener - if (updating) { - return; - } - - // in turn, prevent listener from responding - updating = true; - SPDesktop *desktop = getDesktop(); - - Inkscape::Selection *selection = sp_desktop_selection (desktop); - - GSList const *items = selection->itemList(); - int selcount = g_slist_length((GSList *)items); - - double PerCol = ceil(selcount / NoOfColsSpinner.get_value()); - NoOfRowsSpinner.set_value(PerCol); - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - prefs->setDouble("/dialogs/gridtiler/NoOfCols", NoOfColsSpinner.get_value()); - updating=false; -} - -/** - * changed value in # of rows spinbox. - */ -void TileDialog::on_col_spinbutton_changed() -{ - // quit if run by the attr_changed listener - if (updating) { - return; - } - - // in turn, prevent listener from responding - updating = true; - SPDesktop *desktop = getDesktop(); - Inkscape::Selection *selection = sp_desktop_selection (desktop); - - GSList const *items = selection->itemList(); - int selcount = g_slist_length((GSList *)items); - - double PerRow = ceil(selcount / NoOfRowsSpinner.get_value()); - NoOfColsSpinner.set_value(PerRow); - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - prefs->setDouble("/dialogs/gridtiler/NoOfCols", PerRow); - - updating=false; -} - -/** - * changed value in x padding spinbox. - */ -void TileDialog::on_xpad_spinbutton_changed() -{ - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - prefs->setDouble("/dialogs/gridtiler/XPad", XPadSpinner.get_value()); - -} - -/** - * changed value in y padding spinbox. - */ -void TileDialog::on_ypad_spinbutton_changed() -{ - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - prefs->setDouble("/dialogs/gridtiler/YPad", YPadSpinner.get_value()); -} - - -/** - * checked/unchecked autosize Rows button. - */ -void TileDialog::on_RowSize_checkbutton_changed() -{ - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - if (RowHeightButton.get_active()) { - prefs->setDouble("/dialogs/gridtiler/AutoRowSize", 20); - } else { - prefs->setDouble("/dialogs/gridtiler/AutoRowSize", -20); - } - RowHeightBox.set_sensitive ( !RowHeightButton.get_active()); -} - -/** - * checked/unchecked autosize Rows button. - */ -void TileDialog::on_ColSize_checkbutton_changed() -{ - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - if (ColumnWidthButton.get_active()) { - prefs->setDouble("/dialogs/gridtiler/AutoColSize", 20); - } else { - prefs->setDouble("/dialogs/gridtiler/AutoColSize", -20); - } - ColumnWidthBox.set_sensitive ( !ColumnWidthButton.get_active()); -} - -/** - * changed value in columns spinbox. - */ -void TileDialog::on_rowSize_spinbutton_changed() -{ - // quit if run by the attr_changed listener - if (updating) { - return; - } - - // in turn, prevent listener from responding - updating = true; - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - prefs->setDouble("/dialogs/gridtiler/RowHeight", RowHeightSpinner.get_value()); - updating=false; - -} - -/** - * changed value in rows spinbox. - */ -void TileDialog::on_colSize_spinbutton_changed() -{ - // quit if run by the attr_changed listener - if (updating) { - return; - } - - // in turn, prevent listener from responding - updating = true; - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - prefs->setDouble("/dialogs/gridtiler/ColWidth", ColumnWidthSpinner.get_value()); - updating=false; - -} - -/** - * changed Radio button in Spacing group. - */ -void TileDialog::Spacing_button_changed() -{ - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - if (SpaceManualRadioButton.get_active()) { - prefs->setDouble("/dialogs/gridtiler/SpacingType", 20); - } else { - prefs->setDouble("/dialogs/gridtiler/SpacingType", -20); - } - - SizesHBox.set_sensitive ( SpaceManualRadioButton.get_active()); -} - -/** - * changed Radio button in Vertical Align group. - */ -void TileDialog::VertAlign_changed() -{ - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - if (VertTopRadioButton.get_active()) { - VertAlign = 0; - prefs->setInt("/dialogs/gridtiler/VertAlign", 0); - } else if (VertCentreRadioButton.get_active()){ - VertAlign = 1; - prefs->setInt("/dialogs/gridtiler/VertAlign", 1); - } else if (VertBotRadioButton.get_active()){ - VertAlign = 2; - prefs->setInt("/dialogs/gridtiler/VertAlign", 2); - } -} - -/** - * changed Radio button in Vertical Align group. - */ -void TileDialog::HorizAlign_changed() -{ - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - if (HorizLeftRadioButton.get_active()) { - HorizAlign = 0; - prefs->setInt("/dialogs/gridtiler/HorizAlign", 0); - } else if (HorizCentreRadioButton.get_active()){ - HorizAlign = 1; - prefs->setInt("/dialogs/gridtiler/HorizAlign", 1); - } else if (HorizRightRadioButton.get_active()){ - HorizAlign = 2; - prefs->setInt("/dialogs/gridtiler/HorizAlign", 2); - } -} - -/** - * Desktop selection changed - */ -void TileDialog::updateSelection() -{ - // quit if run by the attr_changed listener - if (updating) { - return; - } - - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - double col_width = 0; - double row_height = 0; - // in turn, prevent listener from responding - updating = true; - SPDesktop *desktop = getDesktop(); - Inkscape::Selection *selection = sp_desktop_selection (desktop); - const GSList *items = selection->itemList(); - int selcount = g_slist_length((GSList *)items); - - if (NoOfColsSpinner.get_value()>1 && NoOfRowsSpinner.get_value()>1){ - // Update the number of rows assuming number of columns wanted remains same. - double NoOfRows = ceil(selcount / NoOfColsSpinner.get_value()); - NoOfRowsSpinner.set_value(NoOfRows); - - // if the selection has less than the number set for one row, reduce it appropriately - if (selcountsetInt("/dialogs/gridtiler/NoOfCols", NoOfCols); - } - } else { - double PerRow = ceil(sqrt(selcount)); - double PerCol = ceil(sqrt(selcount)); - NoOfRowsSpinner.set_value(PerRow); - NoOfColsSpinner.set_value(PerCol); - prefs->setInt("/dialogs/gridtiler/NoOfCols", static_cast(PerCol)); - - } - - updating=false; - -} - - - -/*########################## -## Experimental -##########################*/ - -static void updateSelectionCallback(Inkscape::Application */*inkscape*/, Inkscape::Selection */*selection*/, TileDialog *dlg) -{ - TileDialog *tledlg = (TileDialog *) dlg; - tledlg->updateSelection(); -} - - -//######################################################################### -//## C O N S T R U C T O R / D E S T R U C T O R -//######################################################################### -/** - * Constructor - */ -TileDialog::TileDialog() - : UI::Widget::Panel("", "/dialogs/gridtiler", SP_VERB_SELECTION_GRIDTILE) -{ - // bool used by spin button callbacks to stop loops where they change each other. - updating = false; - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - - // could not do this in gtkmm - there's no Gtk::SizeGroup public constructor (!) - GtkSizeGroup *_col1 = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); - GtkSizeGroup *_col2 = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); - GtkSizeGroup *_col3 = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); - - { - // Selection Change signal - g_signal_connect ( G_OBJECT (INKSCAPE), "change_selection", G_CALLBACK (updateSelectionCallback), this); - } - - Gtk::Box *contents = _getContents(); - -#define MARGIN 2 - - //##Set up the panel - - SPDesktop *desktop = getDesktop(); - - Inkscape::Selection *selection = sp_desktop_selection (desktop); - int selcount = 1; - if (!selection->isEmpty()) { - GSList const *items = selection->itemList(); - selcount = g_slist_length((GSList *)items); - } - - - /*#### Number of Rows ####*/ - - double PerRow = ceil(sqrt(selcount)); - double PerCol = ceil(sqrt(selcount)); - - #ifdef DEBUG_GRID_ARRANGE - g_print("/n PerRox = %f PerCol = %f selcount = %d",PerRow,PerCol,selcount); - #endif - - NoOfRowsLabel.set_label(_("Rows:")); - NoOfRowsBox.pack_start(NoOfRowsLabel, false, false, MARGIN); - - NoOfRowsSpinner.set_digits(0); - NoOfRowsSpinner.set_increments(1, 5); - NoOfRowsSpinner.set_range(1.0, 100.0); - NoOfRowsSpinner.set_value(PerCol); - NoOfRowsSpinner.signal_changed().connect(sigc::mem_fun(*this, &TileDialog::on_col_spinbutton_changed)); - tips.set_tip(NoOfRowsSpinner, _("Number of rows")); - NoOfRowsBox.pack_start(NoOfRowsSpinner, false, false, MARGIN); - gtk_size_group_add_widget(_col1, (GtkWidget *) NoOfRowsBox.gobj()); - - RowHeightButton.set_label(_("Equal height")); - double AutoRow = prefs->getDouble("/dialogs/gridtiler/AutoRowSize", 15); - if (AutoRow>0) - AutoRowSize=true; - else - AutoRowSize=false; - RowHeightButton.set_active(AutoRowSize); - - NoOfRowsBox.pack_start(RowHeightButton, false, false, MARGIN); - - tips.set_tip(RowHeightButton, _("If not set, each row has the height of the tallest object in it")); - RowHeightButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::on_RowSize_checkbutton_changed)); - - { - /*#### Radio buttons to control vertical alignment ####*/ - - VertAlignLabel.set_label(_("Align:")); - VertAlignHBox.pack_start(VertAlignLabel, false, false, MARGIN); - - VertTopRadioButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::VertAlign_changed)); - VertAlignGroup = VertTopRadioButton.get_group(); - VertAlignVBox.pack_start(VertTopRadioButton, false, false, 0); - - VertCentreRadioButton.set_group(VertAlignGroup); - VertCentreRadioButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::VertAlign_changed)); - VertAlignVBox.pack_start(VertCentreRadioButton, false, false, 0); - - VertBotRadioButton.set_group(VertAlignGroup); - VertBotRadioButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::VertAlign_changed)); - VertAlignVBox.pack_start(VertBotRadioButton, false, false, 0); - - VertAlign = prefs->getInt("/dialogs/gridtiler/VertAlign", 1); - if (VertAlign == 0) { - VertTopRadioButton.set_active(TRUE); - } - else if (VertAlign == 1) { - VertCentreRadioButton.set_active(TRUE); - } - else if (VertAlign == 2){ - VertBotRadioButton.set_active(TRUE); - } - VertAlignHBox.pack_start(VertAlignVBox, false, false, MARGIN); - NoOfRowsBox.pack_start(VertAlignHBox, false, false, MARGIN); - } - - SpinsHBox.pack_start(NoOfRowsBox, false, false, MARGIN); - - - /*#### Label for X ####*/ - padXByYLabel.set_label(" "); - XByYLabelVBox.pack_start(padXByYLabel, false, false, MARGIN); - XByYLabel.set_markup(" × "); - XByYLabelVBox.pack_start(XByYLabel, false, false, MARGIN); - SpinsHBox.pack_start(XByYLabelVBox, false, false, MARGIN); - gtk_size_group_add_widget(_col2, (GtkWidget *) XByYLabelVBox.gobj()); - - /*#### Number of columns ####*/ - - NoOfColsLabel.set_label(_("Columns:")); - NoOfColsBox.pack_start(NoOfColsLabel, false, false, MARGIN); - - NoOfColsSpinner.set_digits(0); - NoOfColsSpinner.set_increments(1, 5); - NoOfColsSpinner.set_range(1.0, 100.0); - NoOfColsSpinner.set_value(PerRow); - NoOfColsSpinner.signal_changed().connect(sigc::mem_fun(*this, &TileDialog::on_row_spinbutton_changed)); - tips.set_tip(NoOfColsSpinner, _("Number of columns")); - NoOfColsBox.pack_start(NoOfColsSpinner, false, false, MARGIN); - gtk_size_group_add_widget(_col3, (GtkWidget *) NoOfColsBox.gobj()); - - ColumnWidthButton.set_label(_("Equal width")); - double AutoCol = prefs->getDouble("/dialogs/gridtiler/AutoColSize", 15); - if (AutoCol>0) - AutoColSize=true; - else - AutoColSize=false; - ColumnWidthButton.set_active(AutoColSize); - NoOfColsBox.pack_start(ColumnWidthButton, false, false, MARGIN); - - tips.set_tip(ColumnWidthButton, _("If not set, each column has the width of the widest object in it")); - ColumnWidthButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::on_ColSize_checkbutton_changed)); - - - { - /*#### Radio buttons to control horizontal alignment ####*/ - - HorizAlignLabel.set_label(_("Align:")); - HorizAlignVBox.pack_start(HorizAlignLabel, false, false, MARGIN); - - HorizAlignHBox.pack_start(*(new Gtk::HBox()), true, true, 0); // centering strut - - HorizLeftRadioButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::HorizAlign_changed)); - HorizAlignGroup = HorizLeftRadioButton.get_group(); - HorizAlignHBox.pack_start(HorizLeftRadioButton, false, false, 0); - - HorizCentreRadioButton.set_group(HorizAlignGroup); - HorizCentreRadioButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::HorizAlign_changed)); - HorizAlignHBox.pack_start(HorizCentreRadioButton, false, false, 0); - - HorizRightRadioButton.set_group(HorizAlignGroup); - HorizRightRadioButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::HorizAlign_changed)); - HorizAlignHBox.pack_start(HorizRightRadioButton, false, false, 0); - - HorizAlignHBox.pack_start(*(new Gtk::HBox()), true, true, 0); // centering strut - - HorizAlign = prefs->getInt("/dialogs/gridtiler/HorizAlign", 1); - if (HorizAlign == 0) { - HorizLeftRadioButton.set_active(TRUE); - } - else if (HorizAlign == 1) { - HorizCentreRadioButton.set_active(TRUE); - } - else if (HorizAlign == 2) { - HorizRightRadioButton.set_active(TRUE); - } - HorizAlignVBox.pack_start(HorizAlignHBox, false, false, MARGIN); - NoOfColsBox.pack_start(HorizAlignVBox, false, false, MARGIN); - } - - SpinsHBox.pack_start(NoOfColsBox, false, false, MARGIN); - - TileBox.pack_start(SpinsHBox, false, false, MARGIN); - - { - /*#### Radio buttons to control spacing manually or to fit selection bbox ####*/ - SpaceByBBoxRadioButton.set_label(_("Fit into selection box")); - SpaceByBBoxRadioButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::Spacing_button_changed)); - SpacingGroup = SpaceByBBoxRadioButton.get_group(); - - SpacingVBox.pack_start(SpaceByBBoxRadioButton, false, false, MARGIN); - - SpaceManualRadioButton.set_label(_("Set spacing:")); - SpaceManualRadioButton.set_group(SpacingGroup); - SpaceManualRadioButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::Spacing_button_changed)); - SpacingVBox.pack_start(SpaceManualRadioButton, false, false, MARGIN); - - TileBox.pack_start(SpacingVBox, false, false, MARGIN); - } - - { - /*#### Y Padding ####*/ - - GtkWidget *i = sp_icon_new (Inkscape::ICON_SIZE_MENU, "clonetiler_per_row"); - YPadBox.pack_start (*(Glib::wrap(i)), false, false, MARGIN); - - YPadSpinner.set_digits(1); - YPadSpinner.set_increments(0.2, 2); - YPadSpinner.set_range(-10000, 10000); - double YPad = prefs->getDouble("/dialogs/gridtiler/YPad", 15); - YPadSpinner.set_value(YPad); - YPadBox.pack_start(YPadSpinner, true, true, MARGIN); - tips.set_tip(YPadSpinner, _("Vertical spacing between rows (px units)")); - YPadSpinner.signal_changed().connect(sigc::mem_fun(*this, &TileDialog::on_ypad_spinbutton_changed)); - gtk_size_group_add_widget(_col1, (GtkWidget *) YPadBox.gobj()); - - SizesHBox.pack_start(YPadBox, false, false, MARGIN); - } - - { - Gtk::HBox *spacer = new Gtk::HBox; - SizesHBox.pack_start(*spacer, false, false, 0); - gtk_size_group_add_widget(_col2, (GtkWidget *) spacer->gobj()); - } - - { - /*#### X padding ####*/ - - GtkWidget *i = sp_icon_new (Inkscape::ICON_SIZE_MENU, "clonetiler_per_column"); - XPadBox.pack_start (*(Glib::wrap(i)), false, false, MARGIN); - - XPadSpinner.set_digits(1); - XPadSpinner.set_increments(0.2, 2); - XPadSpinner.set_range(-10000, 10000); - double XPad = prefs->getDouble("/dialogs/gridtiler/XPad", 15); - XPadSpinner.set_value(XPad); - XPadBox.pack_start(XPadSpinner, true, true, MARGIN); - tips.set_tip(XPadSpinner, _("Horizontal spacing between columns (px units)")); - XPadSpinner.signal_changed().connect(sigc::mem_fun(*this, &TileDialog::on_xpad_spinbutton_changed)); - gtk_size_group_add_widget(_col3, (GtkWidget *) XPadBox.gobj()); - - SizesHBox.pack_start(XPadBox, false, false, MARGIN); - } - - - TileBox.pack_start(SizesHBox, false, false, MARGIN); - - contents->pack_start(TileBox); - - double SpacingType = prefs->getDouble("/dialogs/gridtiler/SpacingType", 15); - if (SpacingType>0) { - ManualSpacing=true; - } else { - ManualSpacing=false; - } - SpaceManualRadioButton.set_active(ManualSpacing); - SpaceByBBoxRadioButton.set_active(!ManualSpacing); - SizesHBox.set_sensitive (ManualSpacing); - - //## The OK button - TileOkButton = addResponseButton(_("Arrange"), GTK_RESPONSE_APPLY); - tips.set_tip((*TileOkButton), _("Arrange selected objects")); - - show_all_children(); -} - -} //namespace Dialog -} //namespace UI -} //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:encoding=utf-8:textwidth=99 :: diff --git a/src/dialogs/tiledialog.h b/src/dialogs/tiledialog.h deleted file mode 100644 index a1201956a..000000000 --- a/src/dialogs/tiledialog.h +++ /dev/null @@ -1,189 +0,0 @@ -#ifndef __TILEDIALOG_H__ -#define __TILEDIALOG_H__ -/* - * A simple dialog for creating grid type arrangements of selected objects - * - * Authors: - * Bob Jamison ( based off trace dialog) - * John Cliff - * Other dudes from The Inkscape Organization - * - * Copyright (C) 2004 Bob Jamison - * Copyright (C) 2004 John Cliff - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - - -#include -#include -#include -#include -#include -#include -#include - -#include "ui/widget/panel.h" - -namespace Inkscape { -namespace UI { -namespace Dialog { - - -/** - * A dialog that displays log messages - */ -class TileDialog : public UI::Widget::Panel { - -public: - - /** - * Constructor - */ - TileDialog() ; - - /** - * Factory method - */ - static TileDialog& getInstance() { return *new TileDialog(); } - - /** - * Destructor - */ - virtual ~TileDialog() {}; - - /** - * Do the actual work - */ - void Grid_Arrange(); - - /** - * Respond to selection change - */ - void updateSelection(); - - - /** - * Callback from Apply - */ - virtual void _apply(); - - /** - * Callback from spinbuttons - */ - void on_row_spinbutton_changed(); - void on_col_spinbutton_changed(); - void on_xpad_spinbutton_changed(); - void on_ypad_spinbutton_changed(); - void on_RowSize_checkbutton_changed(); - void on_ColSize_checkbutton_changed(); - void on_rowSize_spinbutton_changed(); - void on_colSize_spinbutton_changed(); - void Spacing_button_changed(); - void VertAlign_changed(); - void HorizAlign_changed(); - - -private: - TileDialog(TileDialog const &d); // no copy - void operator=(TileDialog const &d); // no assign - - bool userHidden; - bool updating; - - - - Gtk::Notebook notebook; - Gtk::Tooltips tips; - - Gtk::VBox TileBox; - Gtk::Button *TileOkButton; - Gtk::Button *TileCancelButton; - - // Number selected label - Gtk::Label SelectionContentsLabel; - - - Gtk::HBox AlignHBox; - Gtk::HBox SpinsHBox; - Gtk::HBox SizesHBox; - - // Number per Row - Gtk::VBox NoOfColsBox; - Gtk::Label NoOfColsLabel; - Gtk::SpinButton NoOfColsSpinner; - bool AutoRowSize; - Gtk::CheckButton RowHeightButton; - - Gtk::VBox XByYLabelVBox; - Gtk::Label padXByYLabel; - Gtk::Label XByYLabel; - - // Number per Column - Gtk::VBox NoOfRowsBox; - Gtk::Label NoOfRowsLabel; - Gtk::SpinButton NoOfRowsSpinner; - bool AutoColSize; - Gtk::CheckButton ColumnWidthButton; - - // Vertical align - Gtk::Label VertAlignLabel; - Gtk::HBox VertAlignHBox; - Gtk::VBox VertAlignVBox; - Gtk::RadioButtonGroup VertAlignGroup; - Gtk::RadioButton VertCentreRadioButton; - Gtk::RadioButton VertTopRadioButton; - Gtk::RadioButton VertBotRadioButton; - double VertAlign; - - // Horizontal align - Gtk::Label HorizAlignLabel; - Gtk::VBox HorizAlignVBox; - Gtk::HBox HorizAlignHBox; - Gtk::RadioButtonGroup HorizAlignGroup; - Gtk::RadioButton HorizCentreRadioButton; - Gtk::RadioButton HorizLeftRadioButton; - Gtk::RadioButton HorizRightRadioButton; - double HorizAlign; - - // padding in x - Gtk::VBox XPadBox; - Gtk::Label XPadLabel; - Gtk::SpinButton XPadSpinner; - - // padding in y - Gtk::VBox YPadBox; - Gtk::Label YPadLabel; - Gtk::SpinButton YPadSpinner; - - // BBox or manual spacing - Gtk::VBox SpacingVBox; - Gtk::RadioButtonGroup SpacingGroup; - Gtk::RadioButton SpaceByBBoxRadioButton; - Gtk::RadioButton SpaceManualRadioButton; - bool ManualSpacing; - - - - // Row height - Gtk::VBox RowHeightVBox; - Gtk::HBox RowHeightBox; - Gtk::Label RowHeightLabel; - Gtk::SpinButton RowHeightSpinner; - - // Column width - Gtk::VBox ColumnWidthVBox; - Gtk::HBox ColumnWidthBox; - Gtk::Label ColumnWidthLabel; - Gtk::SpinButton ColumnWidthSpinner; - -}; - - -} //namespace Dialog -} //namespace UI -} //namespace Inkscape - - -#endif /* __TILEDIALOG_H__ */ - diff --git a/src/dialogs/unclump.cpp b/src/dialogs/unclump.cpp index 1329fdb5f..2190bf77e 100644 --- a/src/dialogs/unclump.cpp +++ b/src/dialogs/unclump.cpp @@ -1,16 +1,13 @@ -#define __UNCLUMP_C__ - -/* - * Unclumping objects - * - * Authors: +/** @file + * @brief Unclumping objects + */ +/* Authors: * bulia byak * * Copyright (C) 2005 Authors - * Released under GNU GPL + * Released under GNU GPL, read the file 'COPYING' for more information */ - #include #include #include "libnr/nr-matrix-ops.h" @@ -35,7 +32,7 @@ unclump_center (SPItem *item) return i->second; } - boost::optional r = item->getBounds(sp_item_i2d_affine(item)); + Geom::OptRect r = item->getBounds(sp_item_i2d_affine(item)); if (r) { Geom::Point const c = r->midpoint(); c_cache[SP_OBJECT_ID(item)] = c; @@ -54,7 +51,7 @@ unclump_wh (SPItem *item) if ( i != wh_cache.end() ) { wh = i->second; } else { - boost::optional r = item->getBounds(sp_item_i2d_affine(item)); + Geom::OptRect r = item->getBounds(sp_item_i2d_affine(item)); if (r) { wh = r->dimensions(); wh_cache[SP_OBJECT_ID(item)] = wh; @@ -379,3 +376,14 @@ unclump (GSList *items) } } } + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/dialogs/unclump.h b/src/dialogs/unclump.h index 6cebc0caf..c5a8bf7d7 100644 --- a/src/dialogs/unclump.h +++ b/src/dialogs/unclump.h @@ -1,20 +1,29 @@ -#ifndef UNCLUMP_H_SEEN -#define UNCLUMP_H_SEEN - -/** \file - * Unclumping objects +/** @file + * @brief Unclumping objects */ -/* - * Authors: +/* Authors: * bulia byak * * Copyright (C) 2005 Authors - * Released under GNU GPL + * Released under GNU GPL, read the file 'COPYING' for more information */ +#ifndef SEEN_DIALOGS_UNCLUMP_H +#define SEEN_DIALOGS_UNCLUMP_H + #include void unclump(GSList *items); - #endif /* !UNCLUMP_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/dialogs/xml-tree.cpp b/src/dialogs/xml-tree.cpp index 2c596bc0e..78a5aa3a7 100644 --- a/src/dialogs/xml-tree.cpp +++ b/src/dialogs/xml-tree.cpp @@ -1,36 +1,18 @@ -#define __SP_XMLVIEW_TREE_C__ - -/** - * \brief XML View - * - * Authors: +/** @file + * @brief XML editor + */ +/* Authors: * Lauris Kaplinski * MenTaLguY * bulia byak * Johan Engelen + * David Turner * * Copyright (C) 1999-2006 Authors - * Copyright (C) 2004 David Turner - * * Released under GNU GPL, read the file 'COPYING' for more information */ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - +#include #include #include "helper/window.h" #include "macros.h" diff --git a/src/dialogs/xml-tree.h b/src/dialogs/xml-tree.h index 6d0d44a7d..0edea8f4d 100644 --- a/src/dialogs/xml-tree.h +++ b/src/dialogs/xml-tree.h @@ -1,10 +1,7 @@ -#ifndef SP_XML_TREE_H -#define SP_XML_TREE_H - -/** - * \brief XML tree editing dialog for Inkscape - * - * Copyright Lauris Kaplinski, 2000 +/** @file + * @brief XML tree editing dialog for Inkscape + */ +/* Copyright Lauris Kaplinski, 2000 * * Released under GNU General Public License. * @@ -13,6 +10,9 @@ * */ +#ifndef SEEN_DIALOGS_XML_TREE_H +#define SEEN_DIALOGS_XML_TREE_H + void sp_xml_tree_dialog (void); #endif diff --git a/src/display/canvas-bpath.cpp b/src/display/canvas-bpath.cpp index 1900ed961..357d67359 100644 --- a/src/display/canvas-bpath.cpp +++ b/src/display/canvas-bpath.cpp @@ -143,13 +143,19 @@ sp_canvas_bpath_update (SPCanvasItem *item, Geom::Matrix const &affine, unsigned cbp->affine = affine; - Geom::Rect bbox = bounds_exact_transformed(cbp->curve->get_pathvector(), affine); - - item->x1 = (int)bbox.min()[Geom::X] - 1; - item->y1 = (int)bbox.min()[Geom::Y] - 1; - item->x2 = (int)bbox.max()[Geom::X] + 1; - item->y2 = (int)bbox.max()[Geom::Y] + 1; - + Geom::OptRect bbox = bounds_exact_transformed(cbp->curve->get_pathvector(), affine); + + if (bbox) { + item->x1 = (int)bbox->min()[Geom::X] - 1; + item->y1 = (int)bbox->min()[Geom::Y] - 1; + item->x2 = (int)bbox->max()[Geom::X] + 1; + item->y2 = (int)bbox->max()[Geom::Y] + 1; + } else { + item->x1 = 0; + item->y1 = 0; + item->x2 = 0; + item->y2 = 0; + } sp_canvas_request_redraw (item->canvas, (int)item->x1, (int)item->y1, (int)item->x2, (int)item->y2); } diff --git a/src/display/inkscape-cairo.cpp b/src/display/inkscape-cairo.cpp index 54f979f37..a31a9387f 100644 --- a/src/display/inkscape-cairo.cpp +++ b/src/display/inkscape-cairo.cpp @@ -170,9 +170,9 @@ feed_path_to_cairo (cairo_t *ct, Geom::Path const &path) /** Feeds path-creating calls to the cairo context translating them from the Path, with the given transform and shift */ static void -feed_path_to_cairo (cairo_t *ct, Geom::Path const &path, Geom::Matrix trans, boost::optional area, bool optimize_stroke, double stroke_width) +feed_path_to_cairo (cairo_t *ct, Geom::Path const &path, Geom::Matrix trans, Geom::OptRect area, bool optimize_stroke, double stroke_width) { - if (!area || area->isEmpty()) + if (!area) return; if (path.empty()) return; @@ -214,9 +214,9 @@ feed_path_to_cairo (cairo_t *ct, Geom::Path const &path, Geom::Matrix trans, boo /** Feeds path-creating calls to the cairo context translating them from the PathVector, with the given transform and shift * One must have done cairo_new_path(ct); before calling this function. */ void -feed_pathvector_to_cairo (cairo_t *ct, Geom::PathVector const &pathv, Geom::Matrix trans, boost::optional area, bool optimize_stroke, double stroke_width) +feed_pathvector_to_cairo (cairo_t *ct, Geom::PathVector const &pathv, Geom::Matrix trans, Geom::OptRect area, bool optimize_stroke, double stroke_width) { - if (!area || area->isEmpty()) + if (!area) return; if (pathv.empty()) return; diff --git a/src/display/inkscape-cairo.h b/src/display/inkscape-cairo.h index 4a9c15ae3..cb4d474a6 100644 --- a/src/display/inkscape-cairo.h +++ b/src/display/inkscape-cairo.h @@ -21,7 +21,7 @@ class SPCanvasBuf; cairo_t *nr_create_cairo_context_canvasbuf (NRRectL *area, SPCanvasBuf *b); cairo_t *nr_create_cairo_context (NRRectL *area, NRPixBlock *pb); -void feed_pathvector_to_cairo (cairo_t *ct, Geom::PathVector const &pathv, Geom::Matrix trans, boost::optional area, bool optimize_stroke, double stroke_width); +void feed_pathvector_to_cairo (cairo_t *ct, Geom::PathVector const &pathv, Geom::Matrix trans, Geom::OptRect area, bool optimize_stroke, double stroke_width); void feed_pathvector_to_cairo (cairo_t *ct, Geom::PathVector const &pathv); #endif diff --git a/src/display/nr-arena-group.cpp b/src/display/nr-arena-group.cpp index 8b388aa40..d63d9b704 100644 --- a/src/display/nr-arena-group.cpp +++ b/src/display/nr-arena-group.cpp @@ -20,7 +20,7 @@ #include "sp-filter.h" #include "sp-filter-reference.h" #include "sp-gaussian-blur.h" -#include "sp-feblend.h" +#include "filters/blend.h" #include "display/nr-filter-blend.h" #include "libnr/nr-matrix-fns.h" #include "libnr/nr-matrix-ops.h" diff --git a/src/display/nr-arena-image.cpp b/src/display/nr-arena-image.cpp index 17c9ab07c..3778dc642 100644 --- a/src/display/nr-arena-image.cpp +++ b/src/display/nr-arena-image.cpp @@ -24,7 +24,7 @@ #include "sp-filter.h" #include "sp-filter-reference.h" #include "sp-gaussian-blur.h" -#include "sp-feblend.h" +#include "filters/blend.h" #include "display/nr-filter-blend.h" int nr_arena_image_x_sample = 1; diff --git a/src/display/nr-arena-item.cpp b/src/display/nr-arena-item.cpp index d944b4228..b4fada749 100644 --- a/src/display/nr-arena-item.cpp +++ b/src/display/nr-arena-item.cpp @@ -255,9 +255,7 @@ nr_arena_item_invoke_update (NRArenaItem *item, NRRectL *area, NRGC *gc, item->ctm = childgc.transform; /* Invoke the real method */ - item->state = - NR_ARENA_ITEM_VIRTUAL (item, update) (item, area, &childgc, state, - reset); + item->state = NR_ARENA_ITEM_VIRTUAL (item, update) (item, area, &childgc, state, reset); if (item->state & NR_ARENA_ITEM_STATE_INVALID) return item->state; /* Enlarge the bounding box to contain filter effects */ @@ -838,12 +836,12 @@ nr_arena_item_set_order (NRArenaItem *item, int order) } void -nr_arena_item_set_item_bbox (NRArenaItem *item, boost::optional &bbox) +nr_arena_item_set_item_bbox (NRArenaItem *item, Geom::OptRect &bbox) { nr_return_if_fail(item != NULL); nr_return_if_fail(NR_IS_ARENA_ITEM(item)); - if(bbox) item->item_bbox = *bbox; + item->item_bbox = bbox; } /** Returns a background image for use with filter effects. */ diff --git a/src/display/nr-arena-item.h b/src/display/nr-arena-item.h index 9db8d7a40..23dd92a43 100644 --- a/src/display/nr-arena-item.h +++ b/src/display/nr-arena-item.h @@ -92,7 +92,7 @@ struct NRArenaItem : public NRObject { NRRectL bbox; /* BBox in item coordinates - this should be a bounding box as * specified in SVG standard. Required by filters. */ - boost::optional item_bbox; + Geom::OptRect item_bbox; /* Our affine */ Geom::Matrix *transform; /* Clip item */ @@ -178,7 +178,7 @@ void nr_arena_item_set_visible (NRArenaItem *item, unsigned int visible); void nr_arena_item_set_clip (NRArenaItem *item, NRArenaItem *clip); void nr_arena_item_set_mask (NRArenaItem *item, NRArenaItem *mask); void nr_arena_item_set_order (NRArenaItem *item, int order); -void nr_arena_item_set_item_bbox (NRArenaItem *item, boost::optional &bbox); +void nr_arena_item_set_item_bbox (NRArenaItem *item, Geom::OptRect &bbox); NRPixBlock *nr_arena_item_get_background (NRArenaItem const *item, int depth = 0); diff --git a/src/display/nr-arena-shape.cpp b/src/display/nr-arena-shape.cpp index 4c988be46..e47907826 100644 --- a/src/display/nr-arena-shape.cpp +++ b/src/display/nr-arena-shape.cpp @@ -229,7 +229,7 @@ nr_arena_shape_set_child_position(NRArenaItem *item, NRArenaItem *child, NRArena void nr_arena_shape_update_stroke(NRArenaShape *shape, NRGC* gc, NRRectL *area); void nr_arena_shape_update_fill(NRArenaShape *shape, NRGC *gc, NRRectL *area, bool force_shape = false); -void nr_arena_shape_add_bboxes(NRArenaShape* shape, Geom::Rect &bbox); +void nr_arena_shape_add_bboxes(NRArenaShape* shape, Geom::OptRect &bbox); /** * Updates the arena shape 'item' and all of its children, including the markers. @@ -237,7 +237,7 @@ void nr_arena_shape_add_bboxes(NRArenaShape* shape, Geom::Rect &bbox); static guint nr_arena_shape_update(NRArenaItem *item, NRRectL *area, NRGC *gc, guint state, guint reset) { - Geom::Rect boundingbox; + Geom::OptRect boundingbox; NRArenaShape *shape = NR_ARENA_SHAPE(item); @@ -255,10 +255,15 @@ nr_arena_shape_update(NRArenaItem *item, NRRectL *area, NRGC *gc, guint state, g if (state & NR_ARENA_ITEM_STATE_BBOX) { if (shape->curve) { boundingbox = bounds_exact_transformed(shape->curve->get_pathvector(), gc->transform); - item->bbox.x0 = (gint32)(boundingbox[0][0] - 1.0F); - item->bbox.y0 = (gint32)(boundingbox[1][0] - 1.0F); - item->bbox.x1 = (gint32)(boundingbox[0][1] + 1.9999F); - item->bbox.y1 = (gint32)(boundingbox[1][1] + 1.9999F); + /// \todo just write item->bbox = boundingbox + if (boundingbox) { + item->bbox.x0 = (gint32)((*boundingbox)[0][0] - 1.0F); + item->bbox.y0 = (gint32)((*boundingbox)[1][0] - 1.0F); + item->bbox.x1 = (gint32)((*boundingbox)[0][1] + 1.9999F); + item->bbox.y1 = (gint32)((*boundingbox)[1][1] + 1.9999F); + } else { + item->bbox = NR_RECT_L_EMPTY; + } } if (beststate & NR_ARENA_ITEM_STATE_BBOX) { for (NRArenaItem *child = shape->markers; child != NULL; child = child->next) { @@ -271,43 +276,44 @@ nr_arena_shape_update(NRArenaItem *item, NRRectL *area, NRGC *gc, guint state, g shape->delayed_shp=true; shape->ctm = gc->transform; - boundingbox[0][0] = boundingbox[1][0] = NR_HUGE; - boundingbox[0][1] = boundingbox[1][1] = -NR_HUGE; + boundingbox = Geom::OptRect(); bool outline = (NR_ARENA_ITEM(shape)->arena->rendermode == Inkscape::RENDERMODE_OUTLINE); if (shape->curve) { boundingbox = bounds_exact_transformed(shape->curve->get_pathvector(), gc->transform); - if (shape->_stroke.paint.type() != NRArenaShape::Paint::NONE || outline) { + if (boundingbox && (shape->_stroke.paint.type() != NRArenaShape::Paint::NONE || outline)) { float width, scale; scale = gc->transform.descrim(); width = MAX(0.125, shape->_stroke.width * scale); if ( fabs(shape->_stroke.width * scale) > 0.01 ) { // sinon c'est 0=oon veut pas de bord - boundingbox.expandBy(width); + boundingbox->expandBy(width); } // those pesky miters, now float miterMax=width*shape->_stroke.mitre_limit; if ( miterMax > 0.01 ) { // grunt mode. we should compute the various miters instead (one for each point on the curve) - boundingbox.expandBy(miterMax); + boundingbox->expandBy(miterMax); } } + } + + /// \todo just write item->bbox = boundingbox + if (boundingbox) { + shape->approx_bbox.x0 = (gint32)((*boundingbox)[0][0] - 1.0F); + shape->approx_bbox.y0 = (gint32)((*boundingbox)[1][0] - 1.0F); + shape->approx_bbox.x1 = (gint32)((*boundingbox)[0][1] + 1.9999F); + shape->approx_bbox.y1 = (gint32)((*boundingbox)[1][1] + 1.9999F); } else { + shape->approx_bbox = NR_RECT_L_EMPTY; } - shape->approx_bbox.x0 = (gint32)(boundingbox[0][0] - 1.0F); - shape->approx_bbox.y0 = (gint32)(boundingbox[1][0] - 1.0F); - shape->approx_bbox.x1 = (gint32)(boundingbox[0][1] + 1.9999F); - shape->approx_bbox.y1 = (gint32)(boundingbox[1][1] + 1.9999F); if ( area && nr_rect_l_test_intersect_ptr(area, &shape->approx_bbox) ) shape->delayed_shp=false; /* Release state data */ - if (TRUE || !Geom::transform_equalp(gc->transform, shape->ctm, NR_EPSILON)) { - /* Concept test */ - if (shape->fill_shp) { - delete shape->fill_shp; - shape->fill_shp = NULL; - } + if (shape->fill_shp) { + delete shape->fill_shp; + shape->fill_shp = NULL; } if (shape->stroke_shp) { delete shape->stroke_shp; @@ -339,22 +345,28 @@ nr_arena_shape_update(NRArenaItem *item, NRRectL *area, NRGC *gc, guint state, g nr_arena_shape_update_stroke(shape, gc, area); nr_arena_shape_update_fill(shape, gc, area); - boundingbox[0][0] = boundingbox[0][1] = boundingbox[1][0] = boundingbox[1][1] = 0.0; + boundingbox = Geom::OptRect(); nr_arena_shape_add_bboxes(shape, boundingbox); - shape->approx_bbox.x0 = (gint32)(boundingbox[0][0] - 1.0F); - shape->approx_bbox.y0 = (gint32)(boundingbox[1][0] - 1.0F); - shape->approx_bbox.x1 = (gint32)(boundingbox[0][1] + 1.9999F); - shape->approx_bbox.y1 = (gint32)(boundingbox[1][1] + 1.9999F); + /// \todo just write shape->approx_bbox = boundingbox + if (boundingbox) { + shape->approx_bbox.x0 = (gint32)((*boundingbox)[0][0] - 1.0F); + shape->approx_bbox.y0 = (gint32)((*boundingbox)[1][0] - 1.0F); + shape->approx_bbox.x1 = (gint32)((*boundingbox)[0][1] + 1.9999F); + shape->approx_bbox.y1 = (gint32)((*boundingbox)[1][1] + 1.9999F); + } else { + shape->approx_bbox = NR_RECT_L_EMPTY; + } } - if (boundingbox.isEmpty()) + if (!boundingbox) return NR_ARENA_ITEM_STATE_ALL; - item->bbox.x0 = (gint32)(boundingbox[0][0] - 1.0F); - item->bbox.y0 = (gint32)(boundingbox[1][0] - 1.0F); - item->bbox.x1 = (gint32)(boundingbox[0][1] + 1.0F); - item->bbox.y1 = (gint32)(boundingbox[1][1] + 1.0F); + /// \todo just write item->bbox = boundingbox + item->bbox.x0 = (gint32)((*boundingbox)[0][0] - 1.0F); + item->bbox.y0 = (gint32)((*boundingbox)[1][0] - 1.0F); + item->bbox.x1 = (gint32)((*boundingbox)[0][1] + 1.0F); + item->bbox.y1 = (gint32)((*boundingbox)[1][1] + 1.0F); nr_arena_request_render_rect(item->arena, &item->bbox); item->render_opacity = TRUE; @@ -442,9 +454,8 @@ void nr_arena_shape_update_fill(NRArenaShape *shape, NRGC *gc, NRRectL *area, bool force_shape) { if ((shape->_fill.paint.type() != NRArenaShape::Paint::NONE || force_shape) && -// ((shape->curve->get_length() > 2) || (SP_CURVE_BPATH(shape->curve)[1].code == NR_CURVETO)) ) { // <-- this used to be the old code, i think it has to determine that the path has a sort of 'internal region' where fill would occur has_inner_area(shape->curve->get_pathvector()) ) { - if (TRUE || !shape->fill_shp) { + Geom::Matrix cached_to_new = Geom::identity(); int isometry = 0; if ( shape->cached_fill ) { @@ -522,7 +533,6 @@ nr_arena_shape_update_fill(NRArenaShape *shape, NRGC *gc, NRRectL *area, bool fo shape->fill_shp->needEdgesSorting(); } shape->delayed_shp |= shape->cached_fpartialy; - } } } @@ -683,7 +693,7 @@ nr_arena_shape_update_stroke(NRArenaShape *shape,NRGC* gc, NRRectL *area) void -nr_arena_shape_add_bboxes(NRArenaShape* shape, Geom::Rect &bbox) +nr_arena_shape_add_bboxes(NRArenaShape* shape, Geom::OptRect &bbox) { /* TODO: are these two if's mutually exclusive? ( i.e. "shape->stroke_shp <=> !shape->fill_shp" ) * if so, then this can be written much more compact ! */ @@ -715,7 +725,7 @@ nr_arena_shape_add_bboxes(NRArenaShape* shape, Geom::Rect &bbox) // cairo outline rendering: static unsigned int -cairo_arena_shape_render_outline(cairo_t *ct, NRArenaItem *item, boost::optional area) +cairo_arena_shape_render_outline(cairo_t *ct, NRArenaItem *item, Geom::OptRect area) { NRArenaShape *shape = NR_ARENA_SHAPE(item); diff --git a/src/display/nr-filter-composite.cpp b/src/display/nr-filter-composite.cpp index a1a488674..32fa3e2a5 100644 --- a/src/display/nr-filter-composite.cpp +++ b/src/display/nr-filter-composite.cpp @@ -12,7 +12,7 @@ #include #include "2geom/isnan.h" -#include "sp-fecomposite.h" +#include "filters/composite.h" #include "display/nr-filter-composite.h" #include "display/nr-filter-pixops.h" #include "display/nr-filter-slot.h" diff --git a/src/display/nr-filter-composite.h b/src/display/nr-filter-composite.h index e41dd77db..72331f767 100644 --- a/src/display/nr-filter-composite.h +++ b/src/display/nr-filter-composite.h @@ -12,7 +12,7 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ -#include "sp-fecomposite.h" +#include "filters/composite.h" #include "display/nr-filter-primitive.h" #include "display/nr-filter-slot.h" #include "display/nr-filter-units.h" diff --git a/src/display/nr-filter-diffuselighting.h b/src/display/nr-filter-diffuselighting.h index 669d2c7e1..b3b574f0c 100644 --- a/src/display/nr-filter-diffuselighting.h +++ b/src/display/nr-filter-diffuselighting.h @@ -19,9 +19,9 @@ #include "display/nr-filter-slot.h" #include "display/nr-filter-units.h" #include "libnr/nr-matrix.h" -#include "sp-fedistantlight.h" -#include "sp-fepointlight.h" -#include "sp-fespotlight.h" +#include "filters/distantlight.h" +#include "filters/pointlight.h" +#include "filters/spotlight.h" #include "color.h" namespace NR { diff --git a/src/display/nr-filter-displacement-map.h b/src/display/nr-filter-displacement-map.h index 34ba3aad2..6730822d9 100644 --- a/src/display/nr-filter-displacement-map.h +++ b/src/display/nr-filter-displacement-map.h @@ -12,7 +12,7 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ -#include "sp-fedisplacementmap.h" +#include "filters/displacementmap.h" #include "display/nr-filter-primitive.h" #include "display/nr-filter-slot.h" #include "display/nr-filter-units.h" diff --git a/src/display/nr-filter-image.cpp b/src/display/nr-filter-image.cpp index 7837770ed..517f2dac9 100644 --- a/src/display/nr-filter-image.cpp +++ b/src/display/nr-filter-image.cpp @@ -62,7 +62,7 @@ int FilterImage::render(FilterSlot &slot, FilterUnits const &units) { Matrix identity(1.0, 0.0, 0.0, 1.0, 0.0, 0.0); - boost::optional area = SVGElem->getBounds(identity); + Geom::OptRect area = SVGElem->getBounds(identity); NRRectL rect; rect.x0=area->min()[NR::X]; diff --git a/src/display/nr-filter-merge.cpp b/src/display/nr-filter-merge.cpp index 1632a7a82..4581238b7 100644 --- a/src/display/nr-filter-merge.cpp +++ b/src/display/nr-filter-merge.cpp @@ -13,7 +13,7 @@ #include #include "2geom/isnan.h" -#include "sp-femerge.h" +#include "filters/merge.h" #include "display/nr-filter-merge.h" #include "display/nr-filter-pixops.h" #include "display/nr-filter-slot.h" diff --git a/src/display/nr-filter-merge.h b/src/display/nr-filter-merge.h index 5fe6b33e3..3fa62a9cc 100644 --- a/src/display/nr-filter-merge.h +++ b/src/display/nr-filter-merge.h @@ -14,7 +14,7 @@ #include -#include "sp-femerge.h" +#include "filters/merge.h" #include "display/nr-filter-primitive.h" #include "display/nr-filter-slot.h" #include "display/nr-filter-units.h" diff --git a/src/display/nr-filter-specularlighting.h b/src/display/nr-filter-specularlighting.h index 6de682972..4d0bea8ff 100644 --- a/src/display/nr-filter-specularlighting.h +++ b/src/display/nr-filter-specularlighting.h @@ -19,9 +19,9 @@ #include "display/nr-filter-slot.h" #include "display/nr-filter-units.h" #include "libnr/nr-matrix.h" -#include "sp-fedistantlight.h" -#include "sp-fepointlight.h" -#include "sp-fespotlight.h" +#include "filters/distantlight.h" +#include "filters/pointlight.h" +#include "filters/spotlight.h" #include "color.h" namespace NR { diff --git a/src/display/nr-filter-units.h b/src/display/nr-filter-units.h index 49fe30aa9..df38c2bb9 100644 --- a/src/display/nr-filter-units.h +++ b/src/display/nr-filter-units.h @@ -16,6 +16,7 @@ #include "libnr/nr-matrix.h" #include "libnr/nr-rect.h" #include "libnr/nr-rect-l.h" +#include <2geom/rect.h> namespace NR { diff --git a/src/display/nr-filter.cpp b/src/display/nr-filter.cpp index 31aec0748..01a092177 100644 --- a/src/display/nr-filter.cpp +++ b/src/display/nr-filter.cpp @@ -136,7 +136,7 @@ int Filter::render(NRArenaItem const *item, NRPixBlock *pb) } Geom::Rect filter_area = filter_effect_area(item_bbox); - if (item_bbox.area() == 0.0) { + if (item_bbox.hasZeroArea()) { // It's no use to try and filter an empty object. return 1; } diff --git a/src/display/nr-light.cpp b/src/display/nr-light.cpp index c2e6f1f83..72ed684b0 100644 --- a/src/display/nr-light.cpp +++ b/src/display/nr-light.cpp @@ -16,9 +16,9 @@ #include "libnr/nr-pixops.h" #include "display/nr-light.h" #include "display/nr-3dutils.h" -#include "sp-fedistantlight.h" -#include "sp-fepointlight.h" -#include "sp-fespotlight.h" +#include "filters/distantlight.h" +#include "filters/pointlight.h" +#include "filters/spotlight.h" namespace NR { diff --git a/src/display/nr-svgfonts.cpp b/src/display/nr-svgfonts.cpp index 02c9a9ea2..723929ea7 100644 --- a/src/display/nr-svgfonts.cpp +++ b/src/display/nr-svgfonts.cpp @@ -249,7 +249,7 @@ SvgFont::scaled_font_render_glyph (cairo_scaled_font_t *scaled_font, //This glyph has a path description on its d attribute, so we render it: cairo_new_path(cr); Geom::Scale s(1.0/((SPFont*) node->parent)->horiz_adv_x); - Geom::Rect area( Geom::Point(0,0), Geom::Point(1,1) ); //I need help here! (reaction: note that the 'area' parameter is an *optional* rect, so you can pass an empty boost::optional() ) + Geom::Rect area( Geom::Point(0,0), Geom::Point(1,1) ); //I need help here! (reaction: note that the 'area' parameter is an *optional* rect, so you can pass an empty Geom::OptRect() ) feed_pathvector_to_cairo (cr, pathv, s, area, false, 0); cairo_fill(cr); } diff --git a/src/display/snap-indicator.cpp b/src/display/snap-indicator.cpp index 59578123e..441b64c02 100644 --- a/src/display/snap-indicator.cpp +++ b/src/display/snap-indicator.cpp @@ -15,9 +15,9 @@ #include "desktop.h" #include "desktop-handles.h" -#include "sp-namedview.h" #include "display/sodipodi-ctrl.h" #include "knot.h" +#include "preferences.h" namespace Inkscape { namespace Display { @@ -47,9 +47,10 @@ SnapIndicator::set_new_snappoint(Inkscape::SnappedPoint const p) } */ - SPNamedView *nv = sp_desktop_namedview(_desktop); - - if (nv->snapindicator) { + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + bool value = prefs->getBool("/options/snapindicator/value", true); + + if (value) { // TODO add many different kinds of snap indicator :-) // For this we should use p->getTarget() to find out what has snapped // and adjust the shape of the snapindicator accordingly, e.g. a cross diff --git a/src/display/sodipodi-ctrl.cpp b/src/display/sodipodi-ctrl.cpp index 1bed9355d..c26402743 100644 --- a/src/display/sodipodi-ctrl.cpp +++ b/src/display/sodipodi-ctrl.cpp @@ -12,6 +12,7 @@ #include "sp-canvas-util.h" #include "display-forward.h" #include "sodipodi-ctrl.h" +#include "libnr/nr-pixops.h" enum { ARG_0, @@ -122,6 +123,11 @@ sp_ctrl_destroy (GtkObject *object) ctrl = SP_CTRL (object); + if (ctrl->cache) { + g_free(ctrl->cache); + ctrl->cache = NULL; + } + if (GTK_OBJECT_CLASS (parent_class)->destroy) (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); } @@ -314,11 +320,13 @@ sp_ctrl_build_cache (SPCtrl *ctrl) side = (ctrl->span * 2 +1); c = ctrl->span ; - g_free (ctrl->cache); size = (side) * (side) * 4; - ctrl->cache = (guchar*)g_malloc (size); if (side < 2) return; + if (ctrl->cache) + g_free (ctrl->cache); + ctrl->cache = (guchar*)g_malloc (size); + switch (ctrl->shape) { case SP_CTRL_SHAPE_SQUARE: p = ctrl->cache; @@ -482,9 +490,9 @@ sp_ctrl_build_cache (SPCtrl *ctrl) } // composite background, foreground, alpha for xor mode -#define COMPOSE_X(b,f,a) ( ( ((guchar) b) * ((guchar) (0xff - a)) + ((guchar) ((b ^ ~f) + b/4 - (b>127? 63 : 0))) * ((guchar) a) ) / 0xff ) +#define COMPOSE_X(b,f,a) ( FAST_DIVIDE<255>( ((guchar) b) * ((guchar) (0xff - a)) + ((guchar) ((b ^ ~f) + b/4 - (b>127? 63 : 0))) * ((guchar) a) ) ) // composite background, foreground, alpha for color mode -#define COMPOSE_N(b,f,a) ( ( ((guchar) b) * ((guchar) (0xff - a)) + ((guchar) f) * ((guchar) a) ) / 0xff ) +#define COMPOSE_N(b,f,a) ( FAST_DIVIDE<255>( ((guchar) b) * ((guchar) (0xff - a)) + ((guchar) f) * ((guchar) a) ) ) static void sp_ctrl_render (SPCanvasItem *item, SPCanvasBuf *buf) diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp index e9bf1633e..651bd0414 100644 --- a/src/display/sp-canvas.cpp +++ b/src/display/sp-canvas.cpp @@ -795,7 +795,7 @@ sp_canvas_group_update (SPCanvasItem *item, Geom::Matrix const &affine, unsigned } } - boost::optional const bounds = corners.bounds(); + Geom::OptRect const bounds = corners.bounds(); if (bounds) { item->x1 = bounds->min()[Geom::X]; item->y1 = bounds->min()[Geom::Y]; @@ -1612,45 +1612,54 @@ sp_canvas_motion (GtkWidget *widget, GdkEventMotion *event) // Snap when speed drops below e.g. 0.02 px/msec, or when no motion events have occured for some period. // i.e. snap when we're at stand still. A speed threshold enforces snapping for tablets, which might never // be fully at stand still and might keep spitting out motion events. - - if (event->type == GDK_MOTION_NOTIFY) { - Geom::Point event_pos(event->x, event->y); - guint32 event_t = gdk_event_get_time ( (GdkEvent *) event ); - - if (dt) { // put snapping on hold - dt->namedview->snap_manager.snapprefs.setSnapPostponedGlobally(true); - } - - if (prev_pos) { - Geom::Coord dist = Geom::L2(event_pos - *prev_pos); - guint32 delta_t = event_t - prev_time; - gdouble speed = delta_t > 0 ? dist/delta_t : 1000; - // std::cout << "speed = " << speed << " px/msec " << "| time passed = " << delta_t << " msec" << std::endl; - if (speed > 0.02) { // Jitter threshold, might be needed for tablets - // We're moving fast, so postpone any snapping until the next GDK_MOTION_NOTIFY event. We - // will keep on postponing the snapping as long as the speed is high. - // We must snap at some point in time though, so set a watchdog timer at some time from - // now, just in case there's no future motion event that drops under the speed limit (when - // stoppping abruptly) - sp_canvas_snap_watchdog_kill(canvas); - sp_canvas_snap_watchdog_set(canvas, event); // watchdog is reset, i.e. pushed forward in time - } else { // Speed is very low, so we're virtually at stand still - // But if we're really standing still, then we should snap now. We could use some low-pass filtering, - // otherwise snapping occurs for each jitter movement. For this filtering we'll leave the watchdog to expire, - // snap, and set a new watchdog again. - if (canvas->watchdog_id == 0) { // no watchdog has been set - // it might have already expired, so we'll set a new one; the snapping frequency will be limited by this - sp_canvas_snap_watchdog_set(canvas, event); - } // else: watchdog has been set before and we'll wait for it to expire - } - } else { - // This is the first GDK_MOTION_NOTIFY event, so postpone snapping and set the watchdog - sp_canvas_snap_watchdog_set(canvas, event); - } + if (dt) { + bool const c1 = event->type == GDK_MOTION_NOTIFY; + bool const c21 = event->state & GDK_BUTTON1_MASK; // Snapping only occurs when dragging with the left mouse button down + bool const c22 = event->state & GDK_BUTTON2_MASK; // We shouldn't hold back any events when other mouse buttons have been + bool const c23 = event->state & GDK_BUTTON3_MASK; // pressed, e.g. when scrolling with the middle mouse button; if we do then + // Inkscape will get stuck in an unresponsive state + bool const c3 = dt->namedview->snap_manager.snapprefs.getSnapEnabledGlobally(); + if (c1 && c21 && (!c22) && (!c23) && c3) { + Geom::Point event_pos(event->x, event->y); + guint32 event_t = gdk_event_get_time ( (GdkEvent *) event ); + + dt->namedview->snap_manager.snapprefs.setSnapPostponedGlobally(true); // put snapping on hold - prev_pos = event_pos; - prev_time = event_t; - } + if (prev_pos) { + Geom::Coord dist = Geom::L2(event_pos - *prev_pos); + guint32 delta_t = event_t - prev_time; + gdouble speed = delta_t > 0 ? dist/delta_t : 1000; + // std::cout << "speed = " << speed << " px/msec " << "| time passed = " << delta_t << " msec" << std::endl; + if (speed > 0.02) { // Jitter threshold, might be needed for tablets + // We're moving fast, so postpone any snapping until the next GDK_MOTION_NOTIFY event. We + // will keep on postponing the snapping as long as the speed is high. + // We must snap at some point in time though, so set a watchdog timer at some time from + // now, just in case there's no future motion event that drops under the speed limit (when + // stoppping abruptly) + sp_canvas_snap_watchdog_kill(canvas); + sp_canvas_snap_watchdog_set(canvas, event); // watchdog is reset, i.e. pushed forward in time + // If the watchdog expires before a new motion event is received, we will snap (as explained + // above). This means however that when the timer is too short, we will always snap and that the + // speed threshold is ineffective. In the extreme case the delay is set to zero, and snapping will + // be immediate, as it used to be in the old days ;-). + } else { // Speed is very low, so we're virtually at stand still + // But if we're really standing still, then we should snap now. We could use some low-pass filtering, + // otherwise snapping occurs for each jitter movement. For this filtering we'll leave the watchdog to expire, + // snap, and set a new watchdog again. + if (canvas->watchdog_id == 0) { // no watchdog has been set + // it might have already expired, so we'll set a new one; the snapping frequency will be limited by this + sp_canvas_snap_watchdog_set(canvas, event); + } // else: watchdog has been set before and we'll wait for it to expire + } + } else { + // This is the first GDK_MOTION_NOTIFY event, so postpone snapping and set the watchdog + sp_canvas_snap_watchdog_set(canvas, event); + } + + prev_pos = event_pos; + prev_time = event_t; + } + } canvas->state = event->state; pick_current_item (canvas, (GdkEvent *) event); @@ -1687,8 +1696,10 @@ gboolean sp_canvas_snap_watchdog_callback(gpointer data) void sp_canvas_snap_watchdog_set(SPCanvas *canvas, GdkEventMotion *event) { + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + double value = prefs->getDoubleLimited("/options/snapdelay/value", 0, 0, 1000); g_assert(canvas->watchdog_id == 0); - canvas->watchdog_id = g_timeout_add(400, &sp_canvas_snap_watchdog_callback, canvas); + canvas->watchdog_id = g_timeout_add(value, &sp_canvas_snap_watchdog_callback, canvas); g_assert(canvas->watchdog_event == NULL); canvas->watchdog_event = gdk_event_copy( (GdkEvent *) event); } diff --git a/src/document.cpp b/src/document.cpp index 28a2be9a1..d38d5423f 100644 --- a/src/document.cpp +++ b/src/document.cpp @@ -560,6 +560,11 @@ gdouble sp_document_height(SPDocument *document) return root->height.computed; } +Geom::Point sp_document_dimensions(SPDocument *doc) +{ + return Geom::Point(sp_document_width(doc), sp_document_height(doc)); +} + /** * Given a Geom::Rect that may, for example, correspond to the bbox of an object, * this function fits the canvas to that rect by resizing the canvas @@ -567,8 +572,6 @@ gdouble sp_document_height(SPDocument *document) */ void SPDocument::fitToRect(Geom::Rect const &rect) { - g_return_if_fail(!rect.isEmpty()); - double const w = rect.width(); double const h = rect.height(); @@ -918,7 +921,7 @@ static GSList *find_items_in_area(GSList *s, SPGroup *group, unsigned int dkey, s = find_items_in_area(s, SP_GROUP(o), dkey, area, test); } else { SPItem *child = SP_ITEM(o); - boost::optional box = sp_item_bbox_desktop(child); + Geom::OptRect box = sp_item_bbox_desktop(child); if ( box && test(area, *box) && (take_insensitive || child->isVisibleAndUnlocked(dkey))) { s = g_slist_append(s, child); } diff --git a/src/document.h b/src/document.h index fff3289dd..99a887c6b 100644 --- a/src/document.h +++ b/src/document.h @@ -21,7 +21,7 @@ #include #include "libcroco/cr-cascade.h" -#include <2geom/rect.h> +#include <2geom/forward.h> #include "gc-managed.h" #include "gc-finalized.h" @@ -41,10 +41,6 @@ struct SPItem; struct SPObject; struct SPGroup; -namespace Geom { - class Point; -} - namespace Inkscape { struct Application; class Selection; @@ -187,6 +183,7 @@ SPDocument *sp_document_create(Inkscape::XML::Document *rdoc, gchar const *uri, gdouble sp_document_width (SPDocument * document); gdouble sp_document_height (SPDocument * document); +Geom::Point sp_document_dimensions (SPDocument * document); struct SPUnit; diff --git a/src/doxygen-main.cpp b/src/doxygen-main.cpp index 035d83a14..bfca9b21a 100644 --- a/src/doxygen-main.cpp +++ b/src/doxygen-main.cpp @@ -1,15 +1,147 @@ -/** \file - * Contains Doxygen documentation - main page. - * - * Authors: +/** @file + * @brief Doxygen documentation - main page and namespace documentation. + */ +/* Authors: * Ralf Stephan + * Krzysztof Kosiński * - * Copyright (C) 2005-2006 authors + * Copyright (C) 2005-2008 authors * * Released under GNU GPL, read the file 'COPYING' for more information */ -/** \mainpage The Inkscape Source Code Documentation +// Note: % before a word prevents that word from being linkified + +/** + * @brief Main %Inkscape namespace + * + * This namespace contains all code internal to %Inkscape. + */ +namespace Inkscape { + +/** + * @brief Some STL-style algorithms + * + * This namespace contains a few generic algorithms used with the %XML tree. + */ +namespace Algorithms {} + + +/** + * @brief Debugging utilities + * + * This namespace contains various debugging code which can help developers + * to pinpoint problems with their (or others') code. + */ +namespace Debug {} + +/** + * @brief Rendering-related code + * + * This namespace contains code related to the renderer. + */ +namespace Display {} + +/** + * @brief Extension support + * + * This namespace contains the extension subsystem and implementations + * of the internal extensions. This includes input and output filters, bitmap + * extensions, and printing. + */ +namespace Extension {} + +/** + * @brief Boehm-GC based garbage collector + * + * This namespace contains code related to the garbage collector and base + * classes for %GC-managed objects. + */ +namespace GC {} + +/** + * @brief Low-level IO code + * + * This namespace contains low level IO-related code, including a homegrown + * streams implementation, routines for formatting SVG output, and some + * file handling utility functions. + */ +namespace IO {} + +/** + * @brief Live Path Effects code + * + * This namespace contains classes and functions related to the implementation + * of Live Path Effects, which apply arbitrary transformation to a path and + * update whenever the original path is modified. + */ +namespace LivePathEffect {} + +/** + * @brief Tracing backend + * + * This namespace contains the integrated potrace-based tracing backend, used + * in the Trace Bitmap and Paint Bucket features. + */ +namespace Trace {} + +/** + * @brief User interface code + * + * This namespace contains everything related to the user interface of Inkscape. + */ +namespace UI { + +/** + * @brief Dialog code + * + * This namespace contains all code related to dialogs. + */ +namespace Dialog {} + +/** + * @brief Custom widgets + * + * This namespace contains custom user interface widgets used thorought + * Inkscape. + */ +namespace Widget {} + +} // namespace UI + +/** + * @brief Miscellaneous supporting code + * + * This namespace contains miscellaneous low-level code: an implementation of + * garbage-collected lists, tuples, generic pointer iterators and length unit + * handling. + */ +namespace Util {} + +/** + * @brief %Inkscape %XML tree + * + * This namespace contains classes and functions that comprise the XML tree + * of Inkscape documents. + * + * SVG documents in Inkscape are represented as two parallel hierarchies + * of nodes: the object tree, which contains all information about + * the document's state when loaded, and the %XML tree, which contains all + * information about the document's %XML representation. For this reason + * this tree is also called the "repr tree", and %XML nodes are called "reprs". + * + * The central class is XML::Node, which provides all operations. It should be + * noted that nodes are currently typeless and operations not valid for their + * type simply do nothing (like trying to iterate over children of a text node). + * In addition to standard DOM operations, the %XML tree supports observers - + * objects derived from Xml::NodeObserver which receive notifications about + * changes in the document tree. + */ +namespace XML {} + +} // namespace Inkscape + +/** \mainpage Inkscape Source Code Documentation * While the standard doxygen documentation can be accessed through the links * in the header, the following documents are additionally available to the * interested reader. @@ -32,23 +164,26 @@ * * \subsection liblinks External documentation on libraries used in inkscape * - * Gtkmm - * atkmm - * gdkmm - * pangomm - * libsigc++ + * C++: + * gtkmm + * atkmm + * gdkmm + * glibmm + * pangomm + * libsigc++ + * C: * GTK+ * gdk-pixbuf * GObject * atk * pango - * GnomeVFS - * libsigc * ORBit * bonobo * bonobo-activation * libxslt * libxml2 + * Legacy: + * GnomeVFS * * \subsection stdlinks External standards documentation * @@ -58,7 +193,7 @@ * SVGTest * PNG * XSLT - * PS + * PostScript * Gnome-HIG */ diff --git a/src/eraser-context.cpp b/src/eraser-context.cpp index fab6f4dad..465bee16a 100644 --- a/src/eraser-context.cpp +++ b/src/eraser-context.cpp @@ -742,7 +742,7 @@ set_to_accumulated(SPEraserContext *dc) Inkscape::XML::Document *xml_doc = sp_document_repr_doc(desktop->doc()); SPItem* acid = SP_ITEM(desktop->doc()->getObjectByRepr(dc->repr)); - boost::optional eraserBbox = acid->getBounds(Geom::identity()); + Geom::OptRect eraserBbox = acid->getBounds(Geom::identity()); Geom::Rect bounds = (*eraserBbox) * desktop->doc2dt(); std::vector remainingItems; GSList* toWorkOn = 0; @@ -764,7 +764,7 @@ set_to_accumulated(SPEraserContext *dc) for (GSList *i = toWorkOn ; i ; i = i->next ) { SPItem *item = SP_ITEM(i->data); if ( eraserMode ) { - boost::optional bbox = item->getBounds(Geom::identity()); + Geom::OptRect bbox = item->getBounds(Geom::identity()); if (bbox && bbox->intersects(*eraserBbox)) { Inkscape::XML::Node* dup = dc->repr->duplicate(xml_doc); dc->repr->parent()->appendChild(dup); diff --git a/src/event-context.cpp b/src/event-context.cpp index be7b2e033..963bf2d7e 100644 --- a/src/event-context.cpp +++ b/src/event-context.cpp @@ -499,7 +499,7 @@ static gint sp_event_context_private_root_handler(SPEventContext *event_context, ret = TRUE; } else if (zoom_rb == event->button.button) { zoom_rb = 0; - boost::optional const b = Inkscape::Rubberband::get(desktop)->getRectangle(); + Geom::OptRect const b = Inkscape::Rubberband::get(desktop)->getRectangle(); Inkscape::Rubberband::get(desktop)->stop(); if (b && !within_tolerance) { desktop->set_display_area(*b, 10); diff --git a/src/extension/init.cpp b/src/extension/init.cpp index afacbed63..0dba9df8f 100644 --- a/src/extension/init.cpp +++ b/src/extension/init.cpp @@ -25,18 +25,12 @@ #include "system.h" #include "db.h" #include "internal/svgz.h" -#include "internal/ps.h" -#ifdef HAVE_CAIRO_PDF -# include "internal/pdf-cairo.h" -#endif #ifdef WIN32 # include "internal/win32.h" # include "internal/emf-win32-inout.h" # include "internal/emf-win32-print.h" #endif -#include "internal/ps-out.h" #ifdef HAVE_CAIRO_PDF -# include "internal/cairo-pdf-out.h" # include "internal/cairo-renderer-pdf-out.h" # include "internal/cairo-png-out.h" # include "internal/cairo-ps-out.h" @@ -52,7 +46,6 @@ #include "internal/odf.h" #include "internal/latex-pstricks-out.h" #include "internal/latex-pstricks.h" -#include "internal/eps-out.h" #include "internal/gdkpixbuf-input.h" #include "internal/bluredge.h" #include "internal/gimpgrad.h" @@ -160,19 +153,12 @@ init() /* TODO: Change to Internal */ Internal::Svg::init(); Internal::Svgz::init(); - //Internal::PsOutput::init(); // disabled, to be deleted, replaced by CairoPsOutput - //Internal::EpsOutput::init(); // disabled, to be deleted, replaced by CairoEpsOutput - Internal::PrintPS::init(); + #ifdef HAVE_CAIRO_PDF - if (prefs->getBool("/options/useoldpdfexporter/value")) { - //g_print ("Using CairoPdfOutput: old pdf exporter\n"); - Internal::CairoPdfOutput::init(); - Internal::PrintCairoPDF::init(); - } else { //g_print ("Using CairoRendererPdfOutput: new pdf exporter\n"); Internal::CairoRendererPdfOutput::init(); Internal::CairoRendererOutput::init(); - } + Internal::CairoPsOutput::init(); Internal::CairoEpsOutput::init(); #endif diff --git a/src/extension/internal/Makefile_insert b/src/extension/internal/Makefile_insert index 1de46034e..ee431ee48 100644 --- a/src/extension/internal/Makefile_insert +++ b/src/extension/internal/Makefile_insert @@ -98,16 +98,8 @@ extension_internal_libinternal_a_SOURCES = \ extension/internal/svg.cpp \ extension/internal/svgz.h \ extension/internal/svgz.cpp \ - extension/internal/ps.h \ - extension/internal/ps.cpp \ - extension/internal/ps-out.h \ - extension/internal/ps-out.cpp \ - extension/internal/pdf-cairo.cpp \ - extension/internal/pdf-cairo.h \ extension/internal/pdf-input-cairo.cpp \ extension/internal/pdf-input-cairo.h \ - extension/internal/cairo-pdf-out.h \ - extension/internal/cairo-pdf-out.cpp \ extension/internal/cairo-ps-out.h \ extension/internal/cairo-ps-out.cpp \ extension/internal/cairo-render-context.h \ @@ -118,8 +110,6 @@ extension_internal_libinternal_a_SOURCES = \ extension/internal/cairo-renderer-pdf-out.cpp \ extension/internal/cairo-png-out.h \ extension/internal/cairo-png-out.cpp \ - extension/internal/eps-out.h \ - extension/internal/eps-out.cpp \ extension/internal/javafx-out.cpp \ extension/internal/javafx-out.h \ extension/internal/gdkpixbuf-input.h \ diff --git a/src/extension/internal/cairo-pdf-out.cpp b/src/extension/internal/cairo-pdf-out.cpp deleted file mode 100644 index ac598b9a0..000000000 --- a/src/extension/internal/cairo-pdf-out.cpp +++ /dev/null @@ -1,273 +0,0 @@ -/* - * A quick hack to use the print output to write out a file. This - * then makes 'save as...' PDF. - * - * Authors: - * Ted Gould - * Ulf Erikson - * - * Copyright (C) 2004-2006 Authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#ifdef HAVE_CAIRO_PDF - -#include "cairo-pdf-out.h" -#include -#include "extension/system.h" -#include "extension/print.h" -#include "extension/db.h" -#include "extension/output.h" -#include "display/nr-arena.h" -#include "display/nr-arena-item.h" -#include "sp-path.h" - -namespace Inkscape { -namespace Extension { -namespace Internal { - -bool -CairoPdfOutput::check (Inkscape::Extension::Extension * module) -{ - if (NULL == Inkscape::Extension::db.get(SP_MODULE_KEY_PRINT_CAIRO_PDF)) - return FALSE; - - return TRUE; -} - - -static unsigned int -pdf_print_document_to_file(SPDocument *doc, gchar const *filename, unsigned int pdf_level, bool texttopath, bool filtertobitmap) -{ - Inkscape::Extension::Print *mod; - SPPrintContext context; - gchar const *oldconst; - gchar *oldoutput; - unsigned int ret; - - sp_document_ensure_up_to_date(doc); - - mod = Inkscape::Extension::get_print(SP_MODULE_KEY_PRINT_CAIRO_PDF); - oldconst = mod->get_param_string("destination"); - oldoutput = g_strdup(oldconst); - mod->set_param_string("destination", (gchar *)filename); - -/* Start */ - context.module = mod; - /* fixme: This has to go into module constructor somehow */ - /* Create new arena */ - const gchar* exportId = mod->get_param_string("exportId"); - bool exportDrawing = mod->get_param_bool("exportDrawing"); - bool exportCanvas = mod->get_param_bool("exportCanvas"); - if (exportId && strcmp(exportId, "")) { - // we want to export the given item only - mod->base = SP_ITEM(doc->getObjectById(exportId)); - if (exportCanvas) - mod->set_param_bool("pageBoundingBox", TRUE); - else - mod->set_param_bool("pageBoundingBox", FALSE); - } else { - // we want to export the entire document from root - mod->base = SP_ITEM(sp_document_root(doc)); - if (exportDrawing) - mod->set_param_bool("pageBoundingBox", FALSE); - else - mod->set_param_bool("pageBoundingBox", TRUE); - } - mod->arena = NRArena::create(); - mod->dkey = sp_item_display_key_new(1); - mod->root = sp_item_invoke_show(mod->base, mod->arena, mod->dkey, SP_ITEM_SHOW_DISPLAY); - - /* Print document */ - ret = mod->begin(doc); - if (ret) { - sp_item_invoke_print(mod->base, &context); - ret = mod->finish(); - } - - /* Release arena */ - sp_item_invoke_hide(mod->base, mod->dkey); - mod->base = NULL; - mod->root = NULL; - nr_object_unref((NRObject *) mod->arena); - mod->arena = NULL; -/* end */ - - mod->set_param_string("destination", oldoutput); - g_free(oldoutput); - - return ret; -} - - -/** - \brief This function calls the print system with the filename - \param mod unused - \param doc Document to be saved - \param uri Filename to save to (probably will end in .pdf) - - The most interesting thing that this function does is just attach - an '>' on the front of the filename. This is the syntax used to - tell the printing system to save to file. -*/ -void -CairoPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, const gchar *uri) -{ - Inkscape::Extension::Extension * ext; - unsigned int ret; - - ext = Inkscape::Extension::db.get(SP_MODULE_KEY_PRINT_CAIRO_PDF); - if (ext == NULL) - return; - - bool old_textToPath = FALSE; - bool new_textToPath = FALSE; - try { - old_textToPath = ext->get_param_bool("textToPath"); - new_textToPath = mod->get_param_bool("textToPath"); - ext->set_param_bool("textToPath", new_textToPath); - } - catch(...) { - g_warning("Parameter might not exist"); - } - - bool old_blurToBitmap = FALSE; - bool new_blurToBitmap = FALSE; - try { - old_blurToBitmap = ext->get_param_bool("blurToBitmap"); - new_blurToBitmap = mod->get_param_bool("blurToBitmap"); - ext->set_param_bool("blurToBitmap", new_blurToBitmap); - } - catch(...) { - g_warning("Parameter might not exist"); - } - - const gchar* old_exportId = NULL; - const gchar* new_exportId = NULL; - try { - old_exportId = ext->get_param_string("exportId"); - new_exportId = mod->get_param_string("exportId"); - ext->set_param_string("exportId", new_exportId); - } - catch(...) { - g_warning("Parameter might not exist"); - } - - bool old_exportDrawing = false; - bool new_exportDrawing = false; - try { - old_exportDrawing = ext->get_param_bool("exportDrawing"); - new_exportDrawing = mod->get_param_bool("exportDrawing"); - ext->set_param_bool("exportDrawing", new_exportDrawing); - } - catch(...) { - g_warning("Parameter might not exist"); - } - - bool old_exportCanvas = false; - bool new_exportCanvas = false; - try { - old_exportCanvas = ext->get_param_bool("exportCanvas"); - new_exportCanvas = mod->get_param_bool("exportCanvas"); - ext->set_param_bool("exportCanvas", new_exportCanvas); - } - catch(...) { - g_warning("Parameter might not exist"); - } - - gchar * final_name; - final_name = g_strdup_printf("> %s", uri); - ret = pdf_print_document_to_file(doc, final_name, 0, new_textToPath, new_blurToBitmap); - g_free(final_name); - - try { - ext->set_param_bool("blurToBitmap", old_blurToBitmap); - } - catch(...) { - g_warning("Parameter might not exist"); - } - try { - ext->set_param_bool("textToPath", old_textToPath); - } - catch(...) { - g_warning("Parameter might not exist"); - } - try { - ext->set_param_string("exportId", old_exportId); - } - catch(...) { - g_warning("Parameter might not exist"); - } - try { - ext->set_param_bool("exportDrawing", old_exportDrawing); - } - catch(...) { - g_warning("Parameter might not exist"); - } - try { - ext->set_param_bool("exportCanvas", old_exportCanvas); - } - catch(...) { - g_warning("Parameter might not exist"); - } - - if (!ret) - throw Inkscape::Extension::Output::save_failed(); - - return; -} - -#include "clear-n_.h" -/** - \brief A function allocate a copy of this function. - - This is the definition of PDF out. This function just - calls the extension system with the memory allocated XML that - describes the data. -*/ -void -CairoPdfOutput::init (void) -{ - Inkscape::Extension::build_from_mem( - "\n" - "" N_("Cairo PDF Output") "\n" - "org.inkscape.output.pdf.cairo\n" - "\n" - "<_item value='PDF14'>" N_("PDF 1.4") "\n" - "\n" - "false\n" - "false\n" - "90\n" - "false\n" - "false\n" - "\n" - "\n" - ".pdf\n" - "application/pdf\n" - "" N_("PDF via Cairo (*.pdf)") "\n" - "" N_("PDF File") "\n" - "\n" - "", new CairoPdfOutput()); - - return; -} - -} } } /* namespace Inkscape, Extension, Implementation */ - -#endif /* HAVE_CAIRO_PDF */ - -/* - 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 : diff --git a/src/extension/internal/cairo-pdf-out.h b/src/extension/internal/cairo-pdf-out.h deleted file mode 100644 index 42cd9365c..000000000 --- a/src/extension/internal/cairo-pdf-out.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * A quick hack to use the print output to write out a file. This - * then makes 'save as...' PDF. - * - * Authors: - * Ted Gould - * Ulf Erikson - * - * Copyright (C) 2004-2006 Authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifndef EXTENSION_INTERNAL_CAIRO_PDF_OUT_H -#define EXTENSION_INTERNAL_CAIRO_PDF_OUT_H - -#include "extension/implementation/implementation.h" - -#ifdef HAVE_CAIRO_PDF - -namespace Inkscape { -namespace Extension { -namespace Internal { - -class CairoPdfOutput : Inkscape::Extension::Implementation::Implementation { - -public: - bool check(Inkscape::Extension::Extension *module); - void save(Inkscape::Extension::Output *mod, - SPDocument *doc, - gchar const *uri); - static void init(); -}; - -} } } /* namespace Inkscape, Extension, Implementation */ - -#endif /* HAVE_CAIRO_PDF */ - -#endif /* !EXTENSION_INTERNAL_CAIRO_PDF_OUT_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:encoding=utf-8:textwidth=99 : diff --git a/src/extension/internal/cairo-ps-out.cpp b/src/extension/internal/cairo-ps-out.cpp index 01afec0fc..e33316c94 100644 --- a/src/extension/internal/cairo-ps-out.cpp +++ b/src/extension/internal/cairo-ps-out.cpp @@ -282,7 +282,7 @@ CairoPsOutput::init (void) "true\n" "true\n" "false\n" - "false\n" + "true\n" "90\n" "\n" "\n" @@ -319,7 +319,7 @@ CairoEpsOutput::init (void) "true\n" "true\n" "false\n" - "false\n" + "true\n" "90\n" "\n" "\n" diff --git a/src/extension/internal/cairo-renderer-pdf-out.cpp b/src/extension/internal/cairo-renderer-pdf-out.cpp index c82cc7611..cb17002d4 100644 --- a/src/extension/internal/cairo-renderer-pdf-out.cpp +++ b/src/extension/internal/cairo-renderer-pdf-out.cpp @@ -216,7 +216,7 @@ CairoRendererPdfOutput::init (void) "<_item value='PDF14'>" N_("PDF 1.4") "\n" "\n" "false\n" - "false\n" + "true\n" "90\n" "false\n" "false\n" diff --git a/src/extension/internal/cairo-renderer.cpp b/src/extension/internal/cairo-renderer.cpp index 5d6315894..4bc983cb7 100644 --- a/src/extension/internal/cairo-renderer.cpp +++ b/src/extension/internal/cairo-renderer.cpp @@ -446,7 +446,7 @@ static void sp_asbitmap_render(SPItem *item, CairoRenderContext *ctx) TRACE(("sp_asbitmap_render: resolution: %f\n", res )); // Get the bounding box of the selection in document coordinates. - boost::optional bbox = + Geom::OptRect bbox = item->getBounds(sp_item_i2d_affine(item), SPItem::RENDERING_BBOX); if (!bbox) // no bbox, e.g. empty group diff --git a/src/extension/internal/eps-out.cpp b/src/extension/internal/eps-out.cpp deleted file mode 100644 index c08bd1de6..000000000 --- a/src/extension/internal/eps-out.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Authors: - * Ted Gould - * - * Copyright (C) 2004 Authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include -#endif -#include "eps-out.h" -#include -#include "extension/system.h" -#include "extension/db.h" -#include "extension/output.h" - -namespace Inkscape { -namespace Extension { -namespace Internal { - -bool -EpsOutput::check (Inkscape::Extension::Extension * module) -{ - if (NULL == Inkscape::Extension::db.get(SP_MODULE_KEY_PRINT_PS)) - return FALSE; - - return TRUE; -} - -/** - \brief This function calls the print system with the filename - \param mod unused - \param doc Document to be saved - \param uri Filename to save to (probably will end in .eps) - - The most interesting thing that this function does is just attach - an '>' on the front of the filename. This is the syntax used to - tell the printing system to save to file. -*/ -void -EpsOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, const gchar *uri) -{ - gchar * final_name; - Inkscape::Extension::Extension * ext; - - ext = Inkscape::Extension::db.get(SP_MODULE_KEY_PRINT_PS); - if (ext == NULL) - return; - - bool old_pageBoundingBox = ext->get_param_bool("pageBoundingBox"); - bool new_val = mod->get_param_bool("pageBoundingBox"); - ext->set_param_bool("pageBoundingBox", new_val); - - bool old_textToPath = ext->get_param_bool("textToPath"); - new_val = mod->get_param_bool("textToPath"); - ext->set_param_bool("textToPath", new_val); - - bool old_fontEmbedded = ext->get_param_bool("fontEmbedded"); - new_val = mod->get_param_bool("fontEmbedded"); - ext->set_param_bool("fontEmbedded", new_val); - - final_name = g_strdup_printf("> %s", uri); - sp_print_document_to_file(doc, final_name); - g_free(final_name); - - ext->set_param_bool("pageBoundingBox", old_pageBoundingBox); - ext->set_param_bool("textToPath", old_textToPath); - ext->set_param_bool("fontEmbedded", old_fontEmbedded); - - return; -} - -#include "clear-n_.h" - -/** - \brief A function allocate a copy of this function. - - This is the definition of postscript out. This function just - calls the extension system with the memory allocated XML that - describes the data. -*/ -void -EpsOutput::init (void) -{ - Inkscape::Extension::build_from_mem( - "\n" - "" N_("Encapsulated Postscript Output") "\n" - "org.inkscape.output.eps\n" - "false\n" - "true\n" - "false\n" - "\n" - ".eps\n" - "image/x-eps\n" - "" N_("Encapsulated Postscript (*.eps)") "\n" - "" N_("Encapsulated Postscript File") "\n" - "\n" - "", new EpsOutput()); - - return; -} - -} } } /* namespace Inkscape, Extension, Implementation */ - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/src/extension/internal/eps-out.h b/src/extension/internal/eps-out.h deleted file mode 100644 index 41a6c1f5c..000000000 --- a/src/extension/internal/eps-out.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * - * Authors: - * Ted Gould - * - * Copyright (C) 2004 Authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifndef EXTENSION_INTERNAL_EPS_OUT_H -#define EXTENSION_INTERNAL_EPS_OUT_H - -#include -#include - -#include "extension/implementation/implementation.h" - -namespace Inkscape { -namespace Extension { -namespace Internal { - -class EpsOutput : Inkscape::Extension::Implementation::Implementation { -public: - bool check(Inkscape::Extension::Extension *module); - - void save(Inkscape::Extension::Output *mod, - SPDocument *doc, - gchar const *uri); - - static void init(void); -}; - -} } } /* namespace Inkscape, Extension, Implementation */ - -#endif /* EXTENSION_INTERNAL_EPS_OUT_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 : diff --git a/src/extension/internal/filter/drop-shadow.h b/src/extension/internal/filter/drop-shadow.h index e0785df30..4a02086e2 100644 --- a/src/extension/internal/filter/drop-shadow.h +++ b/src/extension/internal/filter/drop-shadow.h @@ -41,7 +41,9 @@ public: "\n" "all\n" "\n" - "\n" + "\n" + "\n" + "\n" "\n" "" N_("Black, blurred drop shadow") "\n" "\n" @@ -61,7 +63,7 @@ DropShadow::get_filter_text (Inkscape::Extension::Extension * ext) float y = ext->get_param_float("yoffset"); _filter = g_strdup_printf( - "\n" + "\n" "\n" "\n" "\n" @@ -74,6 +76,61 @@ DropShadow::get_filter_text (Inkscape::Extension::Extension * ext) return _filter; }; +class DropGlow : public Inkscape::Extension::Internal::Filter::Filter { +protected: + virtual gchar const * get_filter_text (Inkscape::Extension::Extension * ext); + +public: + DropGlow ( ) : Filter() { }; + virtual ~DropGlow ( ) { if (_filter != NULL) g_free((void *)_filter); return; } + + static void init (void) { + Inkscape::Extension::build_from_mem( + "\n" + "" N_("Drop Glow") "\n" + "org.inkscape.effect.filter.drop-glow\n" + "2.0\n" + "50\n" + "4.0\n" + "4.0\n" + "\n" + "all\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "" N_("White, blurred drop glow") "\n" + "\n" + "\n", new DropGlow()); + }; + +}; + +gchar const * +DropGlow::get_filter_text (Inkscape::Extension::Extension * ext) +{ + if (_filter != NULL) g_free((void *)_filter); + + float blur = ext->get_param_float("blur"); + float opacity = ext->get_param_float("opacity") / 100; + float x = ext->get_param_float("xoffset"); + float y = ext->get_param_float("yoffset"); + + _filter = g_strdup_printf( + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n", blur, opacity, x, y); + + return _filter; +}; + }; /* namespace Filter */ }; /* namespace Internal */ }; /* namespace Extension */ diff --git a/src/extension/internal/filter/filter-all.cpp b/src/extension/internal/filter/filter-all.cpp index 6f0208a0b..b4b8caf81 100644 --- a/src/extension/internal/filter/filter-all.cpp +++ b/src/extension/internal/filter/filter-all.cpp @@ -8,34 +8,8 @@ #include "filter.h" /* Put your filter here */ -#include "apparition.h" -#include "bloom.h" -#include "clouds.h" -#include "crystal.h" -#include "cutout.h" #include "drop-shadow.h" -#include "emboss.h" -#include "etched-glass.h" -#include "fire.h" -#include "frost.h" -#include "ink-bleed.h" -#include "jelly-bean.h" -#include "jigsaw-piece.h" -#include "leopard-fur.h" -#include "melt.h" -#include "metal.h" -#include "motion-blur.h" -#include "oil-slick.h" -#include "patterned-glass.h" -#include "ridged-border.h" -#include "ripple.h" -#include "roughen.h" -#include "rubber-stamp.h" -#include "sepia.h" #include "snow.h" -#include "speckle.h" -#include "zebra.h" - namespace Inkscape { namespace Extension { @@ -46,35 +20,13 @@ namespace Filter { void Filter::filters_all (void ) { - Apparition::init(); - Bloom::init(); - Clouds::init(); - Crystal::init(); - Cutout::init(); + // Here come the filters which are coded in C++ in order to present a parameters dialog DropShadow::init(); - Emboss::init(); - EtchedGlass::init(); - Fire::init(); - Frost::init(); - InkBleed::init(); - JellyBean::init(); - JigsawPiece::init(); - LeopardFur::init(); - Melt::init(); - Metal::init(); - MotionBlur::init(); - OilSlick::init(); - PatternedGlass::init(); - RidgedBorder::init(); - Ripple::init(); - Roughen::init(); - RubberStamp::init(); - Sepia::init(); + DropGlow::init(); Snow::init(); - Speckle::init(); - Zebra::init(); - + // Here come the rest of the filters that are read from SVG files in share/filters and + // .config/Inkscape/filters /* This should always be last, don't put stuff below this * line. */ Filter::filters_all_files(); diff --git a/src/extension/internal/filter/filter-file.cpp b/src/extension/internal/filter/filter-file.cpp index 857c01a1c..7cb671f51 100644 --- a/src/extension/internal/filter/filter-file.cpp +++ b/src/extension/internal/filter/filter-file.cpp @@ -130,6 +130,8 @@ void Filter::filters_load_node (Inkscape::XML::Node * node, gchar * menuname) { gchar const * label = node->attribute("inkscape:label"); + gchar const * menu = node->attribute("inkscape:menu"); + gchar const * menu_tooltip = node->attribute("inkscape:menu-tooltip"); gchar const * id = node->attribute("id"); if (label == NULL) { @@ -143,12 +145,18 @@ Filter::filters_load_node (Inkscape::XML::Node * node, gchar * menuname) "\n" "all\n" "\n" - "\n" - "\n" - "\n" + "\n" + "\n" + "\n" "\n" + "%s\n" "\n" - "\n", label, id, menuname); + "\n", label, id, menu? menu : menuname, menu_tooltip? menu_tooltip : label); + + // FIXME: Bad hack: since we pull out a single filter node out of SVG file and + // serialize it, it loses the namespace declarations from the root, so we must provide + // one right here for our inkscape attributes + node->setAttribute("xmlns:inkscape", SP_INKSCAPE_NS_URI); mywriter writer; sp_repr_write_stream(node, writer, 0, FALSE, g_quark_from_static_string("svg"), 0, 0); diff --git a/src/extension/internal/filter/filter.cpp b/src/extension/internal/filter/filter.cpp index 1ba0ce8ca..5a104b6a1 100644 --- a/src/extension/internal/filter/filter.cpp +++ b/src/extension/internal/filter/filter.cpp @@ -109,8 +109,6 @@ Filter::merge_filters (Inkscape::XML::Node * to, Inkscape::XML::Node * from, Ink } Inkscape::GC::release(to_child); } - - return; } #define FILTER_SRC_GRAPHIC "fbSourceGraphic" @@ -139,8 +137,10 @@ Filter::effect (Inkscape::Extension::Effect *module, Inkscape::UI::View::View *d gchar const * filter = sp_repr_css_property(css, "filter", NULL); if (filter == NULL) { + Inkscape::XML::Node * newfilterroot = xmldoc->createElement("svg:filter"); defsrepr->appendChild(newfilterroot); + Glib::ustring url = "url(#"; url += newfilterroot->attribute("id"); url += ")"; merge_filters(newfilterroot, get_filter(module)->root(), xmldoc); @@ -189,7 +189,7 @@ Filter::effect (Inkscape::Extension::Effect *module, Inkscape::UI::View::View *d #include "extension/internal/clear-n_.h" void -Filter::filter_init (gchar const * id, gchar const * name, gchar const * tip, gchar const * filter) +Filter::filter_init (gchar const * id, gchar const * name, gchar const * submenu, gchar const * tip, gchar const * filter) { gchar * xml_str = g_strdup_printf( "\n" @@ -198,11 +198,12 @@ Filter::filter_init (gchar const * id, gchar const * name, gchar const * tip, gc "\n" "all\n" "\n" - "\n" + "\n" + "\n" "\n" "%s\n" "\n" - "\n", name, id, tip); + "\n", name, id, submenu, tip); Inkscape::Extension::build_from_mem(xml_str, new Filter::Filter(filter)); g_free(xml_str); return; diff --git a/src/extension/internal/filter/filter.h b/src/extension/internal/filter/filter.h index 05fdcc4cd..fe6b678d9 100644 --- a/src/extension/internal/filter/filter.h +++ b/src/extension/internal/filter/filter.h @@ -36,7 +36,7 @@ public: Inkscape::Extension::Implementation::ImplementationDocumentCache * newDocCache (Inkscape::Extension::Extension * ext, Inkscape::UI::View::View * doc); void effect(Inkscape::Extension::Effect *module, Inkscape::UI::View::View *document, Inkscape::Extension::Implementation::ImplementationDocumentCache * docCache); - static void filter_init(gchar const * id, gchar const * name, gchar const * tip, gchar const * filter); + static void filter_init(gchar const * id, gchar const * name, gchar const * submenu, gchar const * tip, gchar const * filter); static void filters_all(void); /* File loader related */ diff --git a/src/extension/internal/filter/snow.h b/src/extension/internal/filter/snow.h index 366bdcf1f..cf5065754 100644 --- a/src/extension/internal/filter/snow.h +++ b/src/extension/internal/filter/snow.h @@ -35,9 +35,11 @@ public: "\n" "all\n" "\n" - "\n" + "\n" + "\n" + "\n" "\n" - "" N_("When the weather outside is frightening...") "\n" + "" N_("Snow has fallen on object") "\n" "\n" "\n", new Snow()); }; diff --git a/src/extension/internal/grid.cpp b/src/extension/internal/grid.cpp index 366bab000..d4b35b261 100644 --- a/src/extension/internal/grid.cpp +++ b/src/extension/internal/grid.cpp @@ -85,7 +85,7 @@ Grid::effect (Inkscape::Extension::Effect *module, Inkscape::UI::View::View *doc bounding_area = Geom::Rect( Geom::Point(0,0), Geom::Point(sp_document_width(doc), sp_document_height(doc)) ); } else { - boost::optional bounds = selection->bounds(); + Geom::OptRect bounds = selection->bounds(); if (bounds) { bounding_area = *bounds; } diff --git a/src/extension/internal/javafx-out.cpp b/src/extension/internal/javafx-out.cpp index 967ddd92d..69ee296e5 100644 --- a/src/extension/internal/javafx-out.cpp +++ b/src/extension/internal/javafx-out.cpp @@ -187,6 +187,16 @@ static JavaFXOutput::String getStrokeLineJoin(unsigned value) { } +/** + * Replace illegal characters for JavaFX for a underscore. + */ +static JavaFXOutput::String sanatize(const JavaFXOutput::String &badstr){ + JavaFXOutput::String good(badstr); + for (int pos = 0; pos < badstr.length(); ++pos ) + if((badstr.at(pos)=='-')||(badstr.at(pos)==' ')) + good.replace(pos, 1, "_"); + return good; +} /** * Output data to the buffer, printf()-style @@ -298,11 +308,13 @@ bool JavaFXOutput::doTail() */ bool JavaFXOutput::doGradient(SPGradient *grad, const String &id) { + String jfxid = sanatize(id); + if (SP_IS_LINEARGRADIENT(grad)) { SPLinearGradient *g = SP_LINEARGRADIENT(grad); - out(" /* create LinearGradient for %s */\n", id.c_str()); - out(" private function %s(): LinearGradient {\n", id.c_str()); + out(" /* create LinearGradient for %s */\n", jfxid.c_str()); + out(" private function %s(): LinearGradient {\n", jfxid.c_str()); out(" LinearGradient {\n"); std::vector stops = g->vector.stops; if (stops.size() > 0) @@ -320,14 +332,14 @@ bool JavaFXOutput::doGradient(SPGradient *grad, const String &id) out(" ]\n"); } out(" };\n"); - out(" } // end LinearGradient: %s\n", id.c_str()); + out(" } // end LinearGradient: %s\n", jfxid.c_str()); out("\n\n"); } else if (SP_IS_RADIALGRADIENT(grad)) { SPRadialGradient *g = SP_RADIALGRADIENT(grad); - out(" /* create RadialGradient for %s */\n", id.c_str()); - out(" private function %s() {\n", id.c_str()); + out(" /* create RadialGradient for %s */\n", jfxid.c_str()); + out(" private function %s() {\n", jfxid.c_str()); out(" RadialGradient {\n"); out(" centerX: %s\n", DSTR(g->cx.value)); out(" centerY: %s\n", DSTR(g->cy.value)); @@ -350,12 +362,12 @@ bool JavaFXOutput::doGradient(SPGradient *grad, const String &id) out(" ]\n"); } out(" };\n"); - out(" } // end RadialGradient: %s\n", id.c_str()); + out(" } // end RadialGradient: %s\n", jfxid.c_str()); out("\n\n"); } else { - err("Unknown gradient type for '%s'\n", id.c_str()); + err("Unknown gradient type for '%s'\n", jfxid.c_str()); return false; } @@ -392,7 +404,7 @@ bool JavaFXOutput::doStyle(SPStyle *style) /* trim the anchor '#' from the front */ if (uri.size() > 0 && uri[0]=='#') uri = uri.substr(1); - out(" fill: %s()\n", uri.c_str()); + out(" fill: %s()\n", sanatize(uri).c_str()); } } @@ -456,6 +468,8 @@ bool JavaFXOutput::doCurve(SPItem *item, const String &id) using Geom::X; using Geom::Y; + String jfxid = sanatize(id); + //### Get the Shape if (!SP_IS_SHAPE(item))//Bulia's suggestion. Allow all shapes return true; @@ -467,10 +481,10 @@ bool JavaFXOutput::doCurve(SPItem *item, const String &id) nrShapes++; - out(" /** path %s */\n", id.c_str()); - out(" private function %s() : Path {\n",id.c_str()); + out(" /** path %s */\n", jfxid.c_str()); + out(" private function %s() : Path {\n",jfxid.c_str()); out(" Path {\n"); - out(" id: \"%s\"\n", id.c_str()); + out(" id: \"%s\"\n", jfxid.c_str()); /** * Output the style information @@ -560,7 +574,7 @@ bool JavaFXOutput::doCurve(SPItem *item, const String &id) out(" ] // elements\n"); out(" }; // Path\n"); - out(" } // end path %s\n\n", id.c_str()); + out(" } // end path %s\n\n", jfxid.c_str()); double cminx = cminmax.min()[X]; double cmaxx = cminmax.max()[X]; @@ -737,7 +751,8 @@ bool JavaFXOutput::doTree(SPDocument *doc) } -bool JavaFXOutput::doBody(SPDocument *doc, SPObject *obj) { +bool JavaFXOutput::doBody(SPDocument *doc, SPObject *obj) +{ /** * Check the type of node and process */ diff --git a/src/extension/internal/odf.cpp b/src/extension/internal/odf.cpp index 2e0082832..c15b839d7 100644 --- a/src/extension/internal/odf.cpp +++ b/src/extension/internal/odf.cpp @@ -962,10 +962,10 @@ static Geom::Matrix getODFTransform(const SPItem *item) * Get the bounding box of an item, as mapped onto * an ODF document, in cm. */ -static boost::optional getODFBoundingBox(const SPItem *item) +static Geom::OptRect getODFBoundingBox(const SPItem *item) { - boost::optional bbox_temp = sp_item_bbox_desktop((SPItem *)item); - boost::optional bbox; + Geom::OptRect bbox_temp = sp_item_bbox_desktop((SPItem *)item); + Geom::OptRect bbox; if (bbox_temp) { bbox = *bbox_temp; double doc_height = sp_document_height(SP_ACTIVE_DOCUMENT); @@ -1866,7 +1866,7 @@ bool OdfOutput::writeTree(Writer &couts, Writer &souts, Geom::Matrix tf = getODFTransform(item); //### Get ODF bounding box params for item - boost::optional bbox = getODFBoundingBox(item); + Geom::OptRect bbox = getODFBoundingBox(item); if (!bbox) { return true; } diff --git a/src/extension/internal/pdf-cairo.cpp b/src/extension/internal/pdf-cairo.cpp deleted file mode 100644 index 6c2b2ed62..000000000 --- a/src/extension/internal/pdf-cairo.cpp +++ /dev/null @@ -1,1060 +0,0 @@ -#define __SP_PDF_CAIRO_C__ - -/** \file - * PDF printing with Cairo. - */ -/* - * Authors: - * Miklós Erdélyi - * - * Based on pdf.cpp - * - * Licensed under GNU GPL - */ - -/* Plain Print */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#ifdef HAVE_CAIRO_PDF - -#ifndef PANGO_ENABLE_BACKEND -#define PANGO_ENABLE_BACKEND -#endif - -#ifndef PANGO_ENABLE_ENGINE -#define PANGO_ENABLE_ENGINE -#endif - - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include "display/nr-arena-item.h" -#include "display/canvas-bpath.h" -#include "display/inkscape-cairo.h" -#include "sp-item.h" -#include "style.h" -#include "sp-linear-gradient.h" -#include "sp-radial-gradient.h" - -#include "libnrtype/font-instance.h" -#include "libnrtype/font-style-to-pos.h" - -#include "libnr/nr-matrix.h" -#include "libnr/nr-matrix-fns.h" -#include "libnr/nr-matrix-ops.h" - -#include - -#include "pdf-cairo.h" -#include "extension/system.h" -#include "extension/print.h" - -#include "io/sys.h" - -#include -#include - -#include -#include - -#ifdef RENDER_WITH_PANGO_CAIRO -#include -#else -#include -#endif -namespace Inkscape { -namespace Extension { -namespace Internal { - -static cairo_status_t _write_callback(void *closure, const unsigned char *data, unsigned int length); -static void _concat_transform(cairo_t *cr, double xx, double yx, double xy, double yy, double x0, double y0); - -PrintCairoPDF::PrintCairoPDF() : - cr(NULL), - pdf_surface(NULL), - _layout(NULL), - _dpi(72), - _bitmap(false) -{ -} - -PrintCairoPDF::~PrintCairoPDF(void) -{ - if (cr) cairo_destroy(cr); - if (pdf_surface) cairo_surface_destroy(pdf_surface); - if (_layout) g_object_unref(_layout); - - /* restore default signal handling for SIGPIPE */ -#if !defined(_WIN32) && !defined(__WIN32__) - (void) signal(SIGPIPE, SIG_DFL); -#endif - - return; -} - -unsigned int -PrintCairoPDF::setup(Inkscape::Extension::Print * mod) -{ - static gchar const *const pdr[] = {"72", "75", "100", "144", "150", "200", "300", "360", "600", "1200", "2400", NULL}; - -#ifdef TED - Inkscape::XML::Node *repr = ((SPModule *) mod)->repr; -#endif - - unsigned int ret = FALSE; - - /* Create dialog */ - GtkTooltips *tt = gtk_tooltips_new(); - g_object_ref((GObject *) tt); - gtk_object_sink((GtkObject *) tt); - - GtkWidget *dlg = gtk_dialog_new_with_buttons(_("Print Destination"), -// SP_DT_WIDGET(SP_ACTIVE_DESKTOP)->window, - NULL, - (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR | GTK_DIALOG_DESTROY_WITH_PARENT), - GTK_STOCK_CANCEL, - GTK_RESPONSE_CANCEL, - GTK_STOCK_PRINT, - GTK_RESPONSE_OK, - NULL); - - gtk_dialog_set_default_response(GTK_DIALOG(dlg), GTK_RESPONSE_OK); - - GtkWidget *vbox = GTK_DIALOG(dlg)->vbox; - gtk_container_set_border_width(GTK_CONTAINER(vbox), 4); - /* Print properties frame */ - GtkWidget *f = gtk_frame_new(_("Print properties")); - gtk_box_pack_start(GTK_BOX(vbox), f, FALSE, FALSE, 4); - GtkWidget *vb = gtk_vbox_new(FALSE, 4); - gtk_container_add(GTK_CONTAINER(f), vb); - gtk_container_set_border_width(GTK_CONTAINER(vb), 4); - /* Print type */ - bool const p2bm = mod->get_param_bool("bitmap"); - GtkWidget *rb = gtk_radio_button_new_with_label(NULL, _("Print using PDF operators")); - gtk_tooltips_set_tip((GtkTooltips *) tt, rb, - _("Use PDF vector operators. The resulting image is usually smaller " - "in file size and can be arbitrarily scaled, but " - "patterns will be lost."), NULL); - if (!p2bm) gtk_toggle_button_set_active((GtkToggleButton *) rb, TRUE); - gtk_box_pack_start(GTK_BOX(vb), rb, FALSE, FALSE, 0); - rb = gtk_radio_button_new_with_label(gtk_radio_button_get_group((GtkRadioButton *) rb), _("Print as bitmap")); - gtk_tooltips_set_tip((GtkTooltips *) tt, rb, - _("Print everything as bitmap. The resulting image is usually larger " - "in file size and cannot be arbitrarily scaled without quality loss, " - "but all objects will be rendered exactly as displayed."), NULL); - if (p2bm) gtk_toggle_button_set_active((GtkToggleButton *) rb, TRUE); - gtk_box_pack_start(GTK_BOX(vb), rb, FALSE, FALSE, 0); - /* Resolution */ - GtkWidget *hb = gtk_hbox_new(FALSE, 4); - gtk_box_pack_start(GTK_BOX(vb), hb, FALSE, FALSE, 0); - GtkWidget *combo = gtk_combo_new(); - gtk_combo_set_value_in_list(GTK_COMBO(combo), FALSE, FALSE); - gtk_combo_set_use_arrows(GTK_COMBO(combo), TRUE); - gtk_combo_set_use_arrows_always(GTK_COMBO(combo), TRUE); - gtk_widget_set_size_request(combo, 64, -1); - gtk_tooltips_set_tip((GtkTooltips *) tt, GTK_COMBO(combo)->entry, - _("Preferred resolution (dots per inch) of bitmap"), NULL); - /* Setup strings */ - GList *sl = NULL; - for (unsigned i = 0; pdr[i] != NULL; i++) { - sl = g_list_prepend(sl, (gpointer) pdr[i]); - } - sl = g_list_reverse(sl); - gtk_combo_set_popdown_strings(GTK_COMBO(combo), sl); - g_list_free(sl); - if (1) { - gchar const *val = mod->get_param_string("resolution"); - gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(combo)->entry), val); - } - gtk_box_pack_end(GTK_BOX(hb), combo, FALSE, FALSE, 0); - GtkWidget *l = gtk_label_new(_("Resolution:")); - gtk_box_pack_end(GTK_BOX(hb), l, FALSE, FALSE, 0); - - /* Print destination frame */ - f = gtk_frame_new(_("Print destination")); - gtk_box_pack_start(GTK_BOX(vbox), f, FALSE, FALSE, 4); - vb = gtk_vbox_new(FALSE, 4); - gtk_container_add(GTK_CONTAINER(f), vb); - gtk_container_set_border_width(GTK_CONTAINER(vb), 4); - - l = gtk_label_new(_("Printer name (as given by lpstat -p);\n" - "leave empty to use the system default printer.\n" - "Use '> filename' to print to file.\n" - "Use '| prog arg...' to pipe to a program.")); - gtk_box_pack_start(GTK_BOX(vb), l, FALSE, FALSE, 0); - - GtkWidget *e = gtk_entry_new(); - if (1) { - gchar const *val = mod->get_param_string("destination"); - gtk_entry_set_text(GTK_ENTRY(e), ( val != NULL - ? val - : "" )); - } - gtk_box_pack_start(GTK_BOX(vb), e, FALSE, FALSE, 0); - - // pressing enter in the destination field is the same as clicking Print: - gtk_entry_set_activates_default(GTK_ENTRY(e), TRUE); - - gtk_widget_show_all(vbox); - - int const response = gtk_dialog_run(GTK_DIALOG(dlg)); - - g_object_unref((GObject *) tt); - - if (response == GTK_RESPONSE_OK) { - gchar const *fn; - char const *sstr; - - _bitmap = gtk_toggle_button_get_active((GtkToggleButton *) rb); - sstr = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(combo)->entry)); - _dpi = (unsigned int) MAX((int)(atof(sstr)), 1); - /* Arrgh, have to do something */ - fn = gtk_entry_get_text(GTK_ENTRY(e)); - /* skip leading whitespace, bug #1068483 */ - while (fn && *fn==' ') { fn++; } - /* g_print("Printing to %s\n", fn); */ - - mod->set_param_bool("bitmap", _bitmap); - mod->set_param_string("resolution", (gchar *)sstr); - mod->set_param_string("destination", (gchar *)fn); - ret = TRUE; - } - - gtk_widget_destroy(dlg); - - return ret; -} - -unsigned int -PrintCairoPDF::begin(Inkscape::Extension::Print *mod, SPDocument *doc) -{ - FILE *osf = NULL; - FILE *osp = NULL; - - _alpha_stack.clear(); - _alpha_stack.push_back(1.0); - - gsize bytesRead = 0; - gsize bytesWritten = 0; - GError *error = NULL; - gchar const *utf8_fn = mod->get_param_string("destination"); - gchar *local_fn = g_filename_from_utf8( utf8_fn, - -1, &bytesRead, &bytesWritten, &error); - gchar const *fn = local_fn; - - /* TODO: Replace the below fprintf's with something that does the right thing whether in - * gui or batch mode (e.g. --print=blah). Consider throwing an exception: currently one of - * the callers (sp_print_document_to_file, "ret = mod->begin(doc)") wrongly ignores the - * return code. - */ - if (fn != NULL) { - if (*fn == '|') { - fn += 1; - while (isspace(*fn)) fn += 1; -#ifndef WIN32 - osp = popen(fn, "w"); -#else - osp = _popen(fn, "w"); -#endif - if (!osp) { - fprintf(stderr, "inkscape: popen(%s): %s\n", - fn, strerror(errno)); - return 0; - } - _stream = osp; - } else if (*fn == '>') { - fn += 1; - while (isspace(*fn)) fn += 1; - Inkscape::IO::dump_fopen_call(fn, "K"); - osf = Inkscape::IO::fopen_utf8name(fn, "w+"); - if (!osf) { - fprintf(stderr, "inkscape: fopen(%s): %s\n", - fn, strerror(errno)); - return 0; - } - _stream = osf; - } else { - /* put cwd stuff in here */ - gchar *qn = ( *fn - ? g_strdup_printf("lpr -P %s", fn) /* FIXME: quote fn */ - : g_strdup("lpr") ); -#ifndef WIN32 - osp = popen(qn, "w"); -#else - osp = _popen(qn, "w"); -#endif - if (!osp) { - fprintf(stderr, "inkscape: popen(%s): %s\n", - qn, strerror(errno)); - return 0; - } - g_free(qn); - _stream = osp; - } - } - - g_free(local_fn); - - if (_stream) { - /* fixme: this is kinda icky */ -#if !defined(_WIN32) && !defined(__WIN32__) - (void) signal(SIGPIPE, SIG_IGN); -#endif - } - - // test output stream? - - // width and height in pt - _width = sp_document_width(doc) * PT_PER_PX; - _height = sp_document_height(doc) * PT_PER_PX; - - NRRect d; - bool pageBoundingBox = mod->get_param_bool("pageBoundingBox"); - SPItem* doc_item = SP_ITEM(mod->base); - // printf("Page Bounding Box: %s\n", pageBoundingBox ? "TRUE" : "FALSE"); - Geom::Matrix t (Geom::identity()); - if (pageBoundingBox) { - d.x0 = d.y0 = 0; - d.x1 = _width; - d.y1 = _height; - } else { - // if not page, use our base, which is either root or the item we want to export - sp_item_invoke_bbox(doc_item, &d, sp_item_i2doc_affine (doc_item), TRUE); - // convert from px to pt - d.x0 *= PT_PER_PX; - d.x1 *= PT_PER_PX; - d.y0 *= PT_PER_PX; - d.y1 *= PT_PER_PX; - } - - // When rendering a standalone object, we must set cairo's transform to the accumulated - // ancestor transform of that item - e.g. it may be rotated or skewed by its parent group, and - // we must reproduce that in the export even though we start traversing the tree from the - // object itself, ignoring its ancestors - - // complete transform, including doc_item's own transform - t = sp_item_i2doc_affine (doc_item); - // subreact doc_item's transform (comes first) from it - t = Geom::Matrix(doc_item->transform).inverse() * t; - - // create cairo context - pdf_surface = cairo_pdf_surface_create_for_stream(Inkscape::Extension::Internal::_write_callback, _stream, d.x1-d.x0, d.y1-d.y0); - cr = cairo_create(pdf_surface); - - // move to the origin - cairo_translate (cr, -d.x0, -d.y0); - - // set cairo transform; we must scale the translation values to pt - _concat_transform (cr, t[0], t[1], t[2], t[3], t[4]*PT_PER_PX, t[5]*PT_PER_PX); - - if (!_bitmap) { - cairo_scale(cr, PT_PER_PX, PT_PER_PX); - - // from now on we can output px, but they will be treated as pt - // note that the we do not have to flip the y axis - // because Cairo's coordinate system is identical to Inkscape's - } - - return 1; -} - -unsigned int -PrintCairoPDF::finish(Inkscape::Extension::Print *mod) -{ - if (!_stream) return 0; - if (_bitmap) return 0; - - cairo_show_page(cr); - - cairo_destroy(cr); - cairo_surface_finish(pdf_surface); - cairo_status_t status = cairo_surface_status(pdf_surface); - cairo_surface_destroy(pdf_surface); - cr = NULL; - pdf_surface = NULL; - - /* Flush stream to be sure. */ - (void) fflush(_stream); - - /* fixme: should really use pclose for popen'd streams */ - fclose(_stream); - _stream = 0; - - if (status == CAIRO_STATUS_SUCCESS) - return true; - else - return false; -} - -unsigned int -PrintCairoPDF::bind(Inkscape::Extension::Print *mod, Geom::Matrix const *transform, float opacity) -{ - if (!_stream) return 0; // XXX: fixme, returning -1 as unsigned. - if (_bitmap) return 0; - - if (opacity < 1.0) { - cairo_push_group(cr); - } else { - cairo_save(cr); - } - _concat_transform(cr, (*transform)[0], (*transform)[1], (*transform)[2], (*transform)[3], (*transform)[4], (*transform)[5]); - // printf("bind: (%f) %f %f %f %f %f %f\n", opacity, transform->c[0], transform->c[1], transform->c[2], transform->c[3], transform->c[4], transform->c[5]); - // remember these to be able to undo them when outputting text - _last_tx = (*transform)[4]; - _last_ty = (*transform)[5]; - - _alpha_stack.push_back(opacity); - - return 1; -} - -unsigned int -PrintCairoPDF::release(Inkscape::Extension::Print *mod) -{ - if (!_stream) return 0; // XXX: fixme, returning -1 as unsigned. - if (_bitmap) return 0; - - float opacity = _alpha_stack.back(); - - if (opacity < 1.0) { - cairo_pop_group_to_source(cr); - cairo_paint_with_alpha(cr, opacity); - } else { - cairo_restore(cr); - } -// g_printf("release\n"); - _alpha_stack.pop_back(); - g_assert(_alpha_stack.size() > 0); - - return 1; -} - -unsigned int -PrintCairoPDF::comment(Inkscape::Extension::Print *mod, char const *comment) -{ - if (!_stream) return 0; // XXX: fixme, returning -1 as unsigned. - if (_bitmap) return 0; - - return 1; -} - -cairo_pattern_t* -PrintCairoPDF::create_pattern_for_paint(SPPaintServer const *const paintserver, NRRect const *pbox, float alpha) -{ - cairo_pattern_t *pattern = NULL; - bool apply_bbox2user = false; - - if (SP_IS_LINEARGRADIENT (paintserver)) { - - SPLinearGradient *lg=SP_LINEARGRADIENT(paintserver); - - sp_gradient_ensure_vector(SP_GRADIENT(lg)); // when exporting from commandline, vector is not built - - Geom::Point p1 (lg->x1.computed, lg->y1.computed); - Geom::Point p2 (lg->x2.computed, lg->y2.computed); - if (pbox && SP_GRADIENT(lg)->units == SP_GRADIENT_UNITS_OBJECTBOUNDINGBOX) { - // convert to userspace - Geom::Matrix bbox2user(pbox->x1 - pbox->x0, 0, 0, pbox->y1 - pbox->y0, pbox->x0, pbox->y0); - p1 *= bbox2user; - p2 *= bbox2user; - } - - // create linear gradient pattern - pattern = cairo_pattern_create_linear(p1[Geom::X], p1[Geom::Y], p2[Geom::X], p2[Geom::Y]); - - // add stops - for (gint i = 0; unsigned(i) < lg->vector.stops.size(); i++) { - float rgb[3]; - sp_color_get_rgb_floatv(&lg->vector.stops[i].color, rgb); - cairo_pattern_add_color_stop_rgba(pattern, lg->vector.stops[i].offset, rgb[0], rgb[1], rgb[2], lg->vector.stops[i].opacity * alpha); - } - } else if (SP_IS_RADIALGRADIENT (paintserver)) { - - SPRadialGradient *rg=SP_RADIALGRADIENT(paintserver); - - sp_gradient_ensure_vector(SP_GRADIENT(rg)); // when exporting from commandline, vector is not built - - Geom::Point c (rg->cx.computed, rg->cy.computed); - Geom::Point f (rg->fx.computed, rg->fy.computed); - double r = rg->r.computed; - - Geom::Coord const df = hypot(f[Geom::X] - c[Geom::X], f[Geom::Y] - c[Geom::Y]); - if (df >= r) { - f[Geom::X] = c[Geom::X] + (f[Geom::X] - c[Geom::X] ) * r / (float) df; - f[Geom::Y] = c[Geom::Y] + (f[Geom::Y] - c[Geom::Y] ) * r / (float) df; - } - - if (pbox && SP_GRADIENT(rg)->units == SP_GRADIENT_UNITS_OBJECTBOUNDINGBOX) - apply_bbox2user = true; - - // create radial gradient pattern - pattern = cairo_pattern_create_radial(f[Geom::X], f[Geom::Y], 0, c[Geom::X], c[Geom::Y], r); - - // add stops - for (gint i = 0; unsigned(i) < rg->vector.stops.size(); i++) { - float rgb[3]; - sp_color_get_rgb_floatv(&rg->vector.stops[i].color, rgb); - cairo_pattern_add_color_stop_rgba(pattern, rg->vector.stops[i].offset, rgb[0], rgb[1], rgb[2], rg->vector.stops[i].opacity * alpha); - } - } - - if (pattern) { - SPGradient *g = SP_GRADIENT(paintserver); - - // set extend type - SPGradientSpread spread = sp_gradient_get_spread(g); - switch (spread) { - case SP_GRADIENT_SPREAD_REPEAT: - cairo_pattern_set_extend(pattern, CAIRO_EXTEND_REPEAT); - break; - case SP_GRADIENT_SPREAD_REFLECT: - cairo_pattern_set_extend(pattern, CAIRO_EXTEND_REFLECT); - break; - case SP_GRADIENT_SPREAD_PAD: - default: - cairo_pattern_set_extend(pattern, CAIRO_EXTEND_PAD); - break; - } - - cairo_matrix_t pattern_matrix; - if (g->gradientTransform_set) { - // apply gradient transformation - cairo_matrix_init(&pattern_matrix, - g->gradientTransform[0], g->gradientTransform[1], - g->gradientTransform[2], g->gradientTransform[3], - g->gradientTransform[4], g->gradientTransform[5]); - } else { - cairo_matrix_init_identity (&pattern_matrix); - } - - if (apply_bbox2user) { - // convert to userspace - cairo_matrix_t bbox2user; - cairo_matrix_init (&bbox2user, pbox->x1 - pbox->x0, 0, 0, pbox->y1 - pbox->y0, pbox->x0, pbox->y0); - cairo_matrix_multiply (&pattern_matrix, &bbox2user, &pattern_matrix); - } - cairo_matrix_invert(&pattern_matrix); // because Cairo expects a userspace->patternspace matrix - cairo_pattern_set_matrix(pattern, &pattern_matrix); - } - - return pattern; -} - -void -PrintCairoPDF::print_fill_style(cairo_t *cr, SPStyle const *const style, NRRect const *pbox) -{ - g_return_if_fail( style->fill.isColor() - || ( style->fill.isPaintserver() - && SP_IS_GRADIENT(SP_STYLE_FILL_SERVER(style)) ) ); - - if (style->fill.isColor()) { - float rgb[3]; - sp_color_get_rgb_floatv(&style->fill.value.color, rgb); - - float alpha = SP_SCALE24_TO_FLOAT(style->fill_opacity.value); - - cairo_set_source_rgba(cr, rgb[0], rgb[1], rgb[2], alpha); - } else { - g_assert( style->fill.isPaintserver() - && SP_IS_GRADIENT(SP_STYLE_FILL_SERVER(style)) ); - - cairo_pattern_t *pattern = create_pattern_for_paint(SP_STYLE_FILL_SERVER(style), pbox, 1.0); - - if (pattern) { - cairo_set_source(cr, pattern); - cairo_pattern_destroy(pattern); - } - } -} - -unsigned int -PrintCairoPDF::fill(Inkscape::Extension::Print *mod, Geom::PathVector const &pathv, Geom::Matrix const *ctm, SPStyle const *const style, - NRRect const *pbox, NRRect const *dbox, NRRect const *bbox) -{ - if (!_stream) return 0; // XXX: fixme, returning -1 as unsigned. - if (_bitmap) return 0; - - if ( style->fill.isColor() - || ( style->fill.isPaintserver() - && SP_IS_GRADIENT(SP_STYLE_FILL_SERVER(style)) ) ) { - - float alpha = SP_SCALE24_TO_FLOAT(style->fill_opacity.value); - - cairo_save(cr); - - print_fill_style(cr, style, pbox); - - cairo_new_path(cr); - feed_pathvector_to_cairo(cr, pathv); - - if (style->fill_rule.computed == SP_WIND_RULE_EVENODD) { - cairo_set_fill_rule(cr, CAIRO_FILL_RULE_EVEN_ODD); - } else { - cairo_set_fill_rule(cr, CAIRO_FILL_RULE_WINDING); - } - if (alpha != 1.0 && - !style->fill.isColor()) { - - cairo_clip (cr); - cairo_paint_with_alpha (cr, alpha); - } else { - cairo_fill(cr); - } - - cairo_restore(cr); - } - - return 0; -} - -void -PrintCairoPDF::print_stroke_style(cairo_t *cr, SPStyle const *style, NRRect const *pbox) -{ - float alpha = SP_SCALE24_TO_FLOAT(style->stroke_opacity.value); - - if ( style->stroke.isColor() ) { - float rgb[3]; - sp_color_get_rgb_floatv(&style->stroke.value.color, rgb); - - cairo_set_source_rgba(cr, rgb[0], rgb[1], rgb[2], alpha); - } else if ( style->stroke.isPaintserver() - && SP_IS_GRADIENT(SP_STYLE_STROKE_SERVER(style)) ) { - - cairo_pattern_t *pattern = create_pattern_for_paint(SP_STYLE_STROKE_SERVER(style), pbox, alpha); - - if (pattern) { - cairo_set_source(cr, pattern); - cairo_pattern_destroy(pattern); - } - } - - if (style->stroke_dash.n_dash && - style->stroke_dash.dash ) - { - cairo_set_dash(cr, style->stroke_dash.dash, style->stroke_dash.n_dash, style->stroke_dash.offset); - } else { - cairo_set_dash(cr, NULL, 0, 0.0); // disable dashing - } - - cairo_set_line_width(cr, style->stroke_width.computed); - - // set line join type - cairo_line_join_t join = CAIRO_LINE_JOIN_MITER; - switch (style->stroke_linejoin.computed) { - case SP_STROKE_LINEJOIN_MITER: - join = CAIRO_LINE_JOIN_MITER; - break; - case SP_STROKE_LINEJOIN_ROUND: - join = CAIRO_LINE_JOIN_ROUND; - break; - case SP_STROKE_LINEJOIN_BEVEL: - join = CAIRO_LINE_JOIN_BEVEL; - break; - } - cairo_set_line_join(cr, join); - - // set line cap type - cairo_line_cap_t cap = CAIRO_LINE_CAP_BUTT; - switch (style->stroke_linecap.computed) { - case SP_STROKE_LINECAP_BUTT: - cap = CAIRO_LINE_CAP_BUTT; - break; - case SP_STROKE_LINECAP_ROUND: - cap = CAIRO_LINE_CAP_ROUND; - break; - case SP_STROKE_LINECAP_SQUARE: - cap = CAIRO_LINE_CAP_SQUARE; - break; - } - cairo_set_line_cap(cr, cap); - cairo_set_miter_limit(cr, MAX(1, style->stroke_miterlimit.value)); -} - -unsigned int -PrintCairoPDF::stroke(Inkscape::Extension::Print *mod, Geom::PathVector const &pathv, Geom::Matrix const *ctm, SPStyle const *style, - NRRect const *pbox, NRRect const *dbox, NRRect const *bbox) -{ - if (!_stream) return 0; // XXX: fixme, returning -1 as unsigned. - if (_bitmap) return 0; - - if ( style->stroke.isColor() || - ( style->stroke.isPaintserver() - && SP_IS_GRADIENT(SP_STYLE_STROKE_SERVER(style)) ) ) { - - cairo_save(cr); - - cairo_new_path(cr); - print_stroke_style(cr, style, pbox); - - feed_pathvector_to_cairo(cr, pathv); - cairo_stroke(cr); - - cairo_restore(cr); - } - - return 0; -} - -unsigned int -PrintCairoPDF::image(Inkscape::Extension::Print *mod, guchar *px, unsigned int w, unsigned int h, unsigned int rs, - Geom::Matrix const *transform, SPStyle const *style) -{ - if (!_stream) return 0; // XXX: fixme, returning -1 as unsigned. - if (_bitmap) return 0; - - guchar* px_rgba = (guchar*)g_malloc(4 * w * h); - if (!px_rgba) return 0; - - float alpha = _alpha_stack.back(); - - // make a copy of the original pixbuf with premultiplied alpha - // if we pass the original pixbuf it will get messed up - for (unsigned i = 0; i < h; i++) { - for (unsigned j = 0; j < w; j++) { - guchar const *src = px + i * rs + j * 4; - guint32 *dst = (guint32 *)(px_rgba + i * rs + j * 4); - guchar r, g, b, alpha_dst; - - // calculate opacity-modified alpha - alpha_dst = src[3]; - if (alpha != 1.0) - alpha_dst = (guchar)ceil((float)alpha_dst * alpha); - - // premul alpha (needed because this will be undone by cairo-pdf) - r = src[0]*alpha_dst/255; - g = src[1]*alpha_dst/255; - b = src[2]*alpha_dst/255; - - *dst = (((alpha_dst) << 24) | (((r)) << 16) | (((g)) << 8) | (b)); - } - } - - cairo_surface_t *image_surface = cairo_image_surface_create_for_data(px_rgba, CAIRO_FORMAT_ARGB32, w, h, w * 4); - if (cairo_surface_status(image_surface)) { - g_printf("Error: %s\n", cairo_status_to_string(cairo_surface_status(image_surface))); - return 0; - } - - cairo_save(cr); - - // scaling by width & height is not needed because it will be done by cairo-pdf - // we have to translate down by height also in order to eliminate the last translation done by sp_image_print - cairo_matrix_t matrix; - cairo_matrix_init(&matrix, - (*transform)[0]/w, (*transform)[1], - (*transform)[2], -(*transform)[3]/h, - (*transform)[4], (*transform)[5] + (*transform)[3]); - cairo_transform(cr, &matrix); - - cairo_pattern_t *pattern = cairo_pattern_create_for_surface(image_surface); - cairo_pattern_set_extend(pattern, CAIRO_EXTEND_NONE); - - cairo_set_source(cr, pattern); - cairo_pattern_destroy(pattern); - - // set clip region so that the pattern will not be repeated (bug in Cairo prior 1.2.1) - cairo_new_path(cr); - cairo_rectangle(cr, 0, 0, w, h); - cairo_clip(cr); - - cairo_paint(cr); - - cairo_restore(cr); - - cairo_surface_destroy(image_surface); - g_free(px_rgba); - - return 0; -} - -#define GLYPH_ARRAY_SIZE 64 - -#ifndef RENDER_WITH_PANGO_CAIRO - -Geom::Point -PrintCairoPDF::draw_glyphs(cairo_t *cr, Geom::Point p, PangoFont *font, PangoGlyphString *glyph_string, - bool vertical, bool stroke) -{ - cairo_glyph_t glyph_array[GLYPH_ARRAY_SIZE]; - cairo_glyph_t *glyphs = glyph_array; - if (glyph_string->num_glyphs > GLYPH_ARRAY_SIZE) - glyphs = (cairo_glyph_t*)g_malloc(sizeof(cairo_glyph_t) * glyph_string->num_glyphs); - - PangoGlyphUnit x_offset = 0, y_offset = 0; - PangoGlyphInfo *info; - int num_invalid_glyphs = 0; - for (gint i = 0; i < glyph_string->num_glyphs; i++) { - info = &glyph_string->glyphs[i]; - // skip glyphs which are PANGO_GLYPH_EMPTY (0x0FFFFFFF) or have - // the PANGO_GLYPH_UNKNOWN_FLAG (0x10000000) set - if (info->glyph == 0x0FFFFFFF || info->glyph & 0x10000000) { - num_invalid_glyphs++; - continue; - } - - glyphs[i - num_invalid_glyphs].index = info->glyph; - glyphs[i - num_invalid_glyphs].x = p[Geom::X] + (x_offset + info->geometry.x_offset)/PANGO_SCALE; - glyphs[i - num_invalid_glyphs].y = p[Geom::Y] + (y_offset + info->geometry.y_offset)/PANGO_SCALE; - - if (vertical) { - cairo_text_extents_t extents; - cairo_glyph_extents(cr, &glyphs[i - num_invalid_glyphs], 1, &extents); - y_offset += (PangoGlyphUnit)(extents.y_advance * PANGO_SCALE); - } - else - x_offset += info->geometry.width; - } - - if (stroke) - cairo_glyph_path(cr, glyphs, glyph_string->num_glyphs - num_invalid_glyphs); - else - cairo_show_glyphs(cr, glyphs, glyph_string->num_glyphs - num_invalid_glyphs); - - if (glyph_string->num_glyphs > GLYPH_ARRAY_SIZE) - g_free(glyphs); - - return Geom::Point(x_offset, y_offset); -} -#endif - - - -unsigned int -PrintCairoPDF::text(Inkscape::Extension::Print *mod, char const *text, Geom::Point p, - SPStyle const *const style) -{ - bool dirty_pattern = false; - - if (!_stream) return 0; // XXX: fixme, returning -1 as unsigned. - if (_bitmap) return 0; - - cairo_save(cr); - - // this needs to be there to encounter Cairo's userspace locking semantics for set_source - // otherwise gradients won't be shown correctly - // printf("\n _last_tx:%f _last_ty:%f", _last_tx, _last_ty); - cairo_translate(cr, -_last_tx, -_last_ty); - - // create pango layout and context if needed - if (_layout == NULL) { -#ifdef RENDER_WITH_PANGO_CAIRO - //_context = pango_cairo_font_map_create_context(PANGO_CAIRO_FONT_MAP(pango_cairo_font_map_get_default())); - _layout = pango_cairo_create_layout(cr); -#else - _layout = pango_layout_new((font_factory::Default())->fontContext); -#endif - } - - // create font instance from style and use it - font_instance *tf = font_factory::Default()->FaceFromStyle(style); - if (tf == NULL) { // do something - g_printf("Warning: trouble getting font_instance\n"); - tf = (font_factory::Default())->Face("sans", font_style_to_pos(*style)); - } - PangoFontDescription *adjusted = pango_font_description_copy(tf->descr); - - pango_font_description_set_absolute_size(adjusted, (gint)(style->font_size.computed * PANGO_SCALE)); - pango_layout_set_font_description(_layout, adjusted); - pango_layout_set_text(_layout, text, -1); - - pango_font_description_free(adjusted); - tf->Unref(); - -#ifdef RENDER_WITH_PANGO_CAIRO - pango_cairo_update_layout(cr, _layout); -#else - pango_layout_context_changed(_layout); // is this needed? -#endif - - PangoLayoutLine *line = pango_layout_get_line(_layout, 0); - if (line == NULL) - return 0; - -#ifndef RENDER_WITH_PANGO_CAIRO - // apply the selected font - double size; - PangoLayoutRun *first_run = (PangoLayoutRun *)line->runs->data; - PangoFcFont *fc_font = PANGO_FC_FONT(first_run->item->analysis.font); - FcPattern *fc_pattern = fc_font->font_pattern; - - if ( style->writing_mode.set && - (style->writing_mode.computed == SP_CSS_WRITING_MODE_TB_RL || - style->writing_mode.computed == SP_CSS_WRITING_MODE_TB_LR) ) - { - FcPatternDel(fc_pattern, FC_VERTICAL_LAYOUT); - FcPatternAddBool(fc_pattern, FC_VERTICAL_LAYOUT, FcTrue); - dirty_pattern = true; - } - - cairo_font_face_t *font_face = cairo_ft_font_face_create_for_pattern(fc_pattern); - cairo_set_font_face(cr, font_face); - - if (FcPatternGetDouble(fc_pattern, FC_PIXEL_SIZE, 0, &size) != FcResultMatch) - size = 12.0; - - // adjust size and horizontal flip - cairo_matrix_t matrix; - cairo_get_font_matrix(cr, &matrix); - matrix.xx = size; - matrix.yy = -matrix.xx; - cairo_set_font_matrix(cr, &matrix); -#endif - - if ( style->fill.isColor() - || ( style->fill.isPaintserver() - && SP_IS_GRADIENT(SP_STYLE_FILL_SERVER(style)) ) ) - { - // set fill style - print_fill_style(cr, style, NULL); - -#ifndef RENDER_WITH_PANGO_CAIRO - Geom::Point cursor(_last_tx, _last_ty); - for (GSList *tmpList = line->runs; tmpList && tmpList->data; tmpList = tmpList->next) { - PangoLayoutRun *run = (PangoLayoutRun *)tmpList->data; - cursor += draw_glyphs(cr, cursor, run->item->analysis.font, run->glyphs, dirty_pattern, false) / PANGO_SCALE; - } -#else - cairo_new_path(cr); - // as pango has inverted origin we simulate the moveto and apply the vertical flip - //cairo_move_to(cr, _last_tx, _last_ty); - cairo_translate(cr, _last_tx, _last_ty); - cairo_scale(cr, 1, -1); - cairo_move_to(cr, 0, 0); - pango_cairo_show_layout_line(cr, line); - cairo_scale(cr, 1, -1); - cairo_translate(cr, -_last_tx, -_last_ty); - -#endif - } - - if (style->stroke.isColor() - || ( style->stroke.isPaintserver() - && SP_IS_GRADIENT(SP_STYLE_STROKE_SERVER(style)) ) ) - { - // set stroke style - print_stroke_style(cr, style, NULL); - - // paint stroke -#ifndef RENDER_WITH_PANGO_CAIRO - Geom::Point cursor(_last_tx, _last_ty); - for (GSList *tmpList = line->runs; tmpList && tmpList->data; tmpList = tmpList->next) { - PangoLayoutRun *run = (PangoLayoutRun *)tmpList->data; - cursor += draw_glyphs(cr, cursor, run->item->analysis.font, run->glyphs, dirty_pattern, true) / PANGO_SCALE; - } -#else - cairo_new_path(cr); - // as pango has inverted origin we simulate the moveto and apply the vertical flip - //cairo_move_to(cr, _last_tx, _last_ty); - cairo_translate(cr, _last_tx, _last_ty); - cairo_scale(cr, 1, -1); - cairo_move_to(cr, 0, 0); - pango_cairo_layout_line_path(cr, line); - cairo_scale(cr, 1, -1); - cairo_translate(cr, -_last_tx, -_last_ty); -#endif - cairo_stroke(cr); - } - - - cairo_restore(cr); - -#ifndef RENDER_WITH_PANGO_CAIRO - cairo_font_face_destroy(font_face); - - if (dirty_pattern) { - FcPatternDel(fc_pattern, FC_VERTICAL_LAYOUT); - FcPatternAddBool(fc_pattern, FC_VERTICAL_LAYOUT, FcFalse); - } -#endif - - return 0; -} - -/* Helper functions */ - -static void -_concat_transform(cairo_t *cr, double xx, double yx, double xy, double yy, double x0, double y0) -{ - cairo_matrix_t matrix; - - cairo_matrix_init(&matrix, xx, yx, xy, yy, x0, y0); - cairo_transform(cr, &matrix); -} - -static cairo_status_t -_write_callback(void *closure, const unsigned char *data, unsigned int length) -{ - size_t written; - FILE *file = (FILE*)closure; - - written = fwrite (data, 1, length, file); - - if (written == length) - return CAIRO_STATUS_SUCCESS; - else - return CAIRO_STATUS_WRITE_ERROR; -} - -bool -PrintCairoPDF::textToPath(Inkscape::Extension::Print * ext) -{ - return ext->get_param_bool("textToPath"); -} - -#include "clear-n_.h" - -void -PrintCairoPDF::init(void) -{ - /* PDF out */ - (void) Inkscape::Extension::build_from_mem( - "\n" - "" N_("PDF Print") "\n" - "" SP_MODULE_KEY_PRINT_CAIRO_PDF "\n" - "false\n" - "72\n" - "| lp\n" - "true\n" - "true\n" - "false\n" - "false\n" - "\n" - "\n" - "", new PrintCairoPDF()); -} - - -} /* namespace Internal */ -} /* namespace Extension */ -} /* namespace Inkscape */ - -/* End of GNU GPL code */ - -#endif /* HAVE_CAIRO_PDF */ - - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/extension/internal/pdf-cairo.h b/src/extension/internal/pdf-cairo.h deleted file mode 100644 index 2b81fa30e..000000000 --- a/src/extension/internal/pdf-cairo.h +++ /dev/null @@ -1,109 +0,0 @@ -#ifndef EXTENSION_INTERNAL_PDF_CAIRO_H_SEEN -#define EXTENSION_INTERNAL_PDF_CAIRO_H_SEEN - -/** \file - * Declaration of PrintCairoPDF, the internal module used to do PDF printing with Cairo. - */ -/* - * Authors: - * Lauris Kaplinski - * Ted Gould - * - * Lauris' original code is in the public domain. - * Ted's changes are licensed under the GNU GPL. - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#ifdef HAVE_CAIRO_PDF - -#include "extension/extension.h" -#include "extension/implementation/implementation.h" -#include -#include - -#include "libnrtype/font-instance.h" - -#include "svg/stringstream.h" -#include "sp-gradient.h" - -#include - -namespace Inkscape { -namespace Extension { -namespace Internal { - -class PrintCairoPDF : public Inkscape::Extension::Implementation::Implementation { - float _width; - float _height; - FILE *_stream; - cairo_t *cr; - cairo_surface_t *pdf_surface; - PangoLayout *_layout; -// PangoContext *_context; - std::vector _alpha_stack; - double _last_tx, _last_ty; - - unsigned short _dpi; - bool _bitmap; - - cairo_pattern_t *create_pattern_for_paint(SPPaintServer const *const paintserver, NRRect const *pbox, float alpha); - - void print_fill_style(cairo_t *cr, SPStyle const *const style, NRRect const *pbox); - void print_stroke_style(cairo_t *cr, SPStyle const *style, NRRect const *pbox); - -#ifndef RENDER_WITH_PANGO_CAIRO - Geom::Point draw_glyphs(cairo_t *cr, Geom::Point p, PangoFont *font, PangoGlyphString *glyph_string, - bool vertical, bool stroke); -#endif - -public: - PrintCairoPDF(void); - virtual ~PrintCairoPDF(void); - - /* Print functions */ - virtual unsigned int setup(Inkscape::Extension::Print *module); - /* - virtual unsigned int set_preview(Inkscape::Extension::Print *module); - */ - - virtual unsigned int begin(Inkscape::Extension::Print *module, SPDocument *doc); - virtual unsigned int finish(Inkscape::Extension::Print *module); - - /* Rendering methods */ - virtual unsigned int bind(Inkscape::Extension::Print *module, Geom::Matrix const *transform, float opacity); - virtual unsigned int release(Inkscape::Extension::Print *module); - virtual unsigned int comment(Inkscape::Extension::Print *module, char const *comment); - virtual unsigned int fill(Inkscape::Extension::Print *module, Geom::PathVector const &pathv, Geom::Matrix const *ctm, SPStyle const *style, - NRRect const *pbox, NRRect const *dbox, NRRect const *bbox); - virtual unsigned int stroke(Inkscape::Extension::Print *module, Geom::PathVector const &pathv, Geom::Matrix const *transform, SPStyle const *style, - NRRect const *pbox, NRRect const *dbox, NRRect const *bbox); - virtual unsigned int image(Inkscape::Extension::Print *module, unsigned char *px, unsigned int w, unsigned int h, unsigned int rs, - Geom::Matrix const *transform, SPStyle const *style); - virtual unsigned int text(Inkscape::Extension::Print *module, char const *text, - Geom::Point p, SPStyle const *style); - - bool textToPath(Inkscape::Extension::Print *ext); - static void init(void); -}; - -} /* namespace Internal */ -} /* namespace Extension */ -} /* namespace Inkscape */ - -#endif /* HAVE_CAIRO_PDF */ - -#endif /* !EXTENSION_INTERNAL_PDF_CAIRO_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/extension/internal/ps-out.cpp b/src/extension/internal/ps-out.cpp deleted file mode 100644 index ba9338198..000000000 --- a/src/extension/internal/ps-out.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/* - * A quick hack to use the print output to write out a file. This - * then makes 'save as...' Postscript. - * - * Authors: - * Ted Gould - * - * Copyright (C) 2004 Authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include -#endif -#include "ps-out.h" -#include -#include "extension/system.h" -#include "extension/db.h" -#include "extension/output.h" - -namespace Inkscape { -namespace Extension { -namespace Internal { - -bool -PsOutput::check( Inkscape::Extension::Extension * /*module*/ ) -{ - if (NULL == Inkscape::Extension::db.get(SP_MODULE_KEY_PRINT_PS)) - return FALSE; - - return TRUE; -} - -/** - \brief This function calls the print system with the filename - \param mod unused - \param doc Document to be saved - \param uri Filename to save to (probably will end in .ps) - - The most interesting thing that this function does is just attach - an '>' on the front of the filename. This is the syntax used to - tell the printing system to save to file. -*/ -void -PsOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, const gchar *uri) -{ - Inkscape::Extension::Extension * ext; - - ext = Inkscape::Extension::db.get(SP_MODULE_KEY_PRINT_PS); - if (ext == NULL) - return; - - bool old_textToPath = ext->get_param_bool("textToPath"); - bool new_val = mod->get_param_bool("textToPath"); - ext->set_param_bool("textToPath", new_val); - - gchar * final_name; - final_name = g_strdup_printf("> %s", uri); - sp_print_document_to_file(doc, final_name); - g_free(final_name); - - ext->set_param_bool("textToPath", old_textToPath); - - return; -} - -#include "clear-n_.h" - -/** - \brief A function allocate a copy of this function. - - This is the definition of postscript out. This function just - calls the extension system with the memory allocated XML that - describes the data. -*/ -void -PsOutput::init (void) -{ - Inkscape::Extension::build_from_mem( - "\n" - "" N_("Postscript Output") "\n" - "org.inkscape.output.ps\n" - "true\n" - "false\n" - "\n" - ".ps\n" - "image/x-postscript\n" - "" N_("PostScript (old exporter via print) (*.ps)") "\n" - "" N_("PostScript File") "\n" - "\n" - "", new PsOutput()); - - return; -} - -} } } /* namespace Inkscape, Extension, Implementation */ diff --git a/src/extension/internal/ps-out.h b/src/extension/internal/ps-out.h deleted file mode 100644 index 592f3d70e..000000000 --- a/src/extension/internal/ps-out.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * A quick hack to use the print output to write out a file. This - * then makes 'save as...' Postscript. - * - * Authors: - * Ted Gould - * - * Copyright (C) 2004 Authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifndef EXTENSION_INTERNAL_PS_OUT_H -#define EXTENSION_INTERNAL_PS_OUT_H - -#include "extension/implementation/implementation.h" - -namespace Inkscape { -namespace Extension { -namespace Internal { - -class PsOutput : Inkscape::Extension::Implementation::Implementation { - -public: - bool check(Inkscape::Extension::Extension *module); - void save(Inkscape::Extension::Output *mod, - SPDocument *doc, - gchar const *uri); - static void init(); -}; - -} } } /* namespace Inkscape, Extension, Implementation */ - -#endif /* !EXTENSION_INTERNAL_PS_OUT_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:encoding=utf-8:textwidth=99 : diff --git a/src/extension/internal/ps.cpp b/src/extension/internal/ps.cpp deleted file mode 100644 index f8b3d999e..000000000 --- a/src/extension/internal/ps.cpp +++ /dev/null @@ -1,1797 +0,0 @@ -#define __SP_PS_C__ - -/** \file - * PostScript printing. - */ -/* - * Authors: - * Lauris Kaplinski - * bulia byak - * - * Basic printing code, EXCEPT image and - * ascii85 filter is in public domain - * - * Image printing and Ascii85 filter: - * - * Copyright (C) 2006 Johan Engelen - * Copyright (C) 1997-98 Peter Kirchgessner - * Copyright (C) 1995 Spencer Kimball and Peter Mattis - * George White - * Austin Donnelly - * - * Licensed under GNU GPL - */ - -/* Plain Print */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include "display/nr-arena-item.h" -#include "display/canvas-bpath.h" -#include "sp-item.h" -#include "style.h" -#include "sp-linear-gradient.h" -#include "sp-radial-gradient.h" - -#include "libnrtype/font-instance.h" -#include "libnrtype/font-style-to-pos.h" - -#include - -#include "ps.h" -#include "extension/system.h" -#include "extension/print.h" - -#include "io/sys.h" - -#include -#include FT_FREETYPE_H -#include FT_XFREE86_H -#include -#include -#include -#include -#include -#include -#include -#include - -#include <2geom/sbasis-to-bezier.h> -#include <2geom/bezier-curve.h> -#include <2geom/hvlinesegment.h> -#include "helper/geom-curves.h" - -/* -using std::atof; -using std::ceil; -using std::fclose; -using std::ferror; -using std::fflush; -using std::fgetc; -using std::fprintf; --> this line will result 'std::libintl_fprintf' has not been declared -using std::fputc; -using std::fseek; -using std::ifstream; -using std::ios; -using std::memset; -using std::strchr; -using std::strcmp; -using std::strerror; -using std::tmpfile; -*/ -using namespace std; - -namespace Inkscape { -namespace Extension { -namespace Internal { - -PrintPS::PrintPS() : - _stream(NULL), - _dpi(72), - _bitmap(false) -{ - //map font types - _fontTypesMap["Type 1"] = FONT_TYPE1; - _fontTypesMap["TrueType"] = FONT_TRUETYPE; - //TODO: support other font types (cf. embed_font()) -} - -PrintPS::~PrintPS(void) -{ - /* fixme: should really use pclose for popen'd streams */ - if (_stream) fclose(_stream); - if(_begin_stream) fclose(_begin_stream); - if(_fonts) g_tree_destroy(_fonts); - - /* restore default signal handling for SIGPIPE */ -#if !defined(_WIN32) && !defined(__WIN32__) - (void) signal(SIGPIPE, SIG_DFL); -#endif - - return; -} - -unsigned int -PrintPS::setup(Inkscape::Extension::Print * mod) -{ - static gchar const *const pdr[] = {"72", "75", "100", "144", "150", "200", "300", "360", "600", "1200", "2400", NULL}; - -#ifdef TED - Inkscape::XML::Node *repr = ((SPModule *) mod)->repr; -#endif - - unsigned int ret = FALSE; - gchar const *destination = mod->get_param_string("destination"); - - /* Create dialog */ - GtkTooltips *tt = gtk_tooltips_new(); - g_object_ref((GObject *) tt); - gtk_object_sink((GtkObject *) tt); - - GtkWidget *dlg = gtk_dialog_new_with_buttons( - destination ? _("Print Configuration") : _("Print Destination"), -// SP_DT_WIDGET(SP_ACTIVE_DESKTOP)->window, - NULL, - (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR | GTK_DIALOG_DESTROY_WITH_PARENT), - GTK_STOCK_CANCEL, - GTK_RESPONSE_CANCEL, - destination ? GTK_STOCK_GO_FORWARD : GTK_STOCK_PRINT, - GTK_RESPONSE_OK, - NULL); - - gtk_dialog_set_default_response(GTK_DIALOG(dlg), GTK_RESPONSE_OK); - - GtkWidget *vbox = GTK_DIALOG(dlg)->vbox; - gtk_container_set_border_width(GTK_CONTAINER(vbox), 4); - /* Print properties frame */ - GtkWidget *f = gtk_frame_new(_("Print properties")); - gtk_box_pack_start(GTK_BOX(vbox), f, FALSE, FALSE, 4); - GtkWidget *vb = gtk_vbox_new(FALSE, 4); - gtk_container_add(GTK_CONTAINER(f), vb); - gtk_container_set_border_width(GTK_CONTAINER(vb), 4); - /* Print type */ - bool const p2bm = mod->get_param_bool("bitmap"); - GtkWidget *rb = gtk_radio_button_new_with_label(NULL, _("Print using PostScript operators")); - gtk_tooltips_set_tip((GtkTooltips *) tt, rb, - _("Use PostScript vector operators. The resulting image is usually smaller " - "in file size and can be arbitrarily scaled, but alpha transparency " - "and patterns will be lost."), NULL); - if (!p2bm) gtk_toggle_button_set_active((GtkToggleButton *) rb, TRUE); - gtk_box_pack_start(GTK_BOX(vb), rb, FALSE, FALSE, 0); - rb = gtk_radio_button_new_with_label(gtk_radio_button_get_group((GtkRadioButton *) rb), _("Print as bitmap")); - gtk_tooltips_set_tip((GtkTooltips *) tt, rb, - _("Print everything as bitmap. The resulting image is usually larger " - "in file size and cannot be arbitrarily scaled without quality loss, " - "but all objects will be rendered exactly as displayed."), NULL); - if (p2bm) gtk_toggle_button_set_active((GtkToggleButton *) rb, TRUE); - gtk_box_pack_start(GTK_BOX(vb), rb, FALSE, FALSE, 0); - /* Resolution */ - GtkWidget *hb = gtk_hbox_new(FALSE, 4); - gtk_box_pack_start(GTK_BOX(vb), hb, FALSE, FALSE, 0); - GtkWidget *combo = gtk_combo_new(); - gtk_combo_set_value_in_list(GTK_COMBO(combo), FALSE, FALSE); - gtk_combo_set_use_arrows(GTK_COMBO(combo), TRUE); - gtk_combo_set_use_arrows_always(GTK_COMBO(combo), TRUE); - gtk_widget_set_size_request(combo, 64, -1); - gtk_tooltips_set_tip((GtkTooltips *) tt, GTK_COMBO(combo)->entry, - _("Preferred resolution (dots per inch) of bitmap"), NULL); - /* Setup strings */ - GList *sl = NULL; - for (unsigned i = 0; pdr[i] != NULL; i++) { - sl = g_list_prepend(sl, (gpointer) pdr[i]); - } - sl = g_list_reverse(sl); - gtk_combo_set_popdown_strings(GTK_COMBO(combo), sl); - g_list_free(sl); - if (1) { - gchar const *val = mod->get_param_string("resolution"); - gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(combo)->entry), val); - } - gtk_box_pack_end(GTK_BOX(hb), combo, FALSE, FALSE, 0); - GtkWidget *l = gtk_label_new(_("Resolution:")); - gtk_box_pack_end(GTK_BOX(hb), l, FALSE, FALSE, 0); - - GtkWidget *e = NULL; - /* if the destination isn't already set, we must prompt for it */ - if (!destination) { - /* Print destination frame */ - f = gtk_frame_new(_("Print destination")); - gtk_box_pack_start(GTK_BOX(vbox), f, FALSE, FALSE, 4); - vb = gtk_vbox_new(FALSE, 4); - gtk_container_add(GTK_CONTAINER(f), vb); - gtk_container_set_border_width(GTK_CONTAINER(vb), 4); - - l = gtk_label_new(_("Printer name (as given by lpstat -p);\n" - "leave empty to use the system default printer.\n" - "Use '> filename' to print to file.\n" - "Use '| prog arg...' to pipe to a program.")); - gtk_box_pack_start(GTK_BOX(vb), l, FALSE, FALSE, 0); - - e = gtk_entry_new(); - gtk_entry_set_text(GTK_ENTRY(e), ( destination != NULL - ? destination - : "" )); - gtk_box_pack_start(GTK_BOX(vb), e, FALSE, FALSE, 0); - - // pressing enter in the destination field is the same as clicking Print: - gtk_entry_set_activates_default(GTK_ENTRY(e), TRUE); - } - - gtk_widget_show_all(vbox); - - int const response = gtk_dialog_run(GTK_DIALOG(dlg)); - - g_object_unref((GObject *) tt); - - if (response == GTK_RESPONSE_OK) { - gchar const *fn; - char const *sstr; - - _bitmap = gtk_toggle_button_get_active((GtkToggleButton *) rb); - sstr = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(combo)->entry)); - _dpi = (unsigned int) MAX((int)(atof(sstr)), 1); - - /* if the destination was prompted for, record the new value */ - if (e) { - /* Arrgh, have to do something */ - fn = gtk_entry_get_text(GTK_ENTRY(e)); - /* skip leading whitespace, bug #1068483 */ - while (fn && *fn==' ') { fn++; } - /* g_print("Printing to %s\n", fn); */ - - mod->set_param_string("destination", (gchar *)fn); - } - mod->set_param_bool("bitmap", _bitmap); - mod->set_param_string("resolution", (gchar *)sstr); - ret = TRUE; - } - - gtk_widget_destroy(dlg); - - return ret; -} - -unsigned int -PrintPS::begin(Inkscape::Extension::Print *mod, SPDocument *doc) -{ - gboolean epsexport = false; - - - _latin1_encoded_fonts.clear(); - _newlatin1font_proc_defined = false; - - FILE *osf = NULL; - FILE *osp = NULL; - FILE *osf_tmp = NULL; - - gsize bytesRead = 0; - gsize bytesWritten = 0; - GError *error = NULL; - //check whether fonts have to be embedded in the (EPS only) output - bool font_embedded = mod->fontEmbedded(); - gchar const *utf8_fn = mod->get_param_string("destination"); - gchar *local_fn = g_filename_from_utf8( utf8_fn, - -1, &bytesRead, &bytesWritten, &error); - gchar const *fn = local_fn; - - /* TODO: Replace the below fprintf's with something that does the right thing whether in - * gui or batch mode (e.g. --print=blah). Consider throwing an exception: currently one of - * the callers (sp_print_document_to_file, "ret = mod->begin(doc)") wrongly ignores the - * return code. - */ - if (fn != NULL) { - if (*fn == '|') { - fn += 1; - while (g_ascii_isspace(*fn)) fn += 1; -#ifndef WIN32 - osp = popen(fn, "w"); -#else - osp = _popen(fn, "w"); -#endif - if (!osp) { - fprintf(stderr, "inkscape: popen(%s): %s\n", - fn, strerror(errno)); - return 0; - } - _stream = _begin_stream = osp; - } else if (*fn == '>') { - fn += 1; - epsexport = g_str_has_suffix(fn,".eps"); - while (isspace(*fn)) fn += 1; - Inkscape::IO::dump_fopen_call(fn, "K"); - osf = Inkscape::IO::fopen_utf8name(fn, "w+"); - if (!osf) { - fprintf(stderr, "inkscape: fopen(%s): %s\n", - fn, strerror(errno)); - return 0; - } - _begin_stream = osf; - /* if font embedding is requested for EPS export... - * TODO:could be extended to PS export if texttopath=FALSE possible - */ - if(font_embedded && epsexport) - { - /** - * Create temporary file where to print the main "script" part of the EPS document. - * Use an extra stream (_begin_stream) to print the prolog and document setup sections. - * Thus, once all the (main) script part printed, all the fonts used are known and can be embedded - * just after the prolog section, in a Begin(End)Setup section (document setup), - * one Begin(End)Resource (DSC comment) section for each font embedded. - * Then, append the final script part from the temporary file (_stream in this case). - * Reference: Adobe Technical note 5001, "PostScript Document Struturing Conventions Specifications" - * page 19 - */ - osf_tmp = tmpfile(); - if(!osf_tmp) - { - g_warning("Could not create a temporary file for font embedding. Font embedding canceled."); - mod->set_param_bool("fontEmbedded", false); - font_embedded = false; - _stream = osf; - } else _stream = osf_tmp; - } else _stream = osf; - } else { - /* put cwd stuff in here */ - gchar *qn = ( *fn - ? g_strdup_printf("lpr -P %s", fn) /* FIXME: quote fn */ - : g_strdup("lpr") ); -#ifndef WIN32 - osp = popen(qn, "w"); -#else - osp = _popen(qn, "w"); -#endif - if (!osp) { - fprintf(stderr, "inkscape: popen(%s): %s\n", - qn, strerror(errno)); - return 0; - } - g_free(qn); - _stream = _begin_stream = osp; - } - } - - g_free(local_fn); - - if (_stream) { - /* fixme: this is kinda icky */ -#if !defined(_WIN32) && !defined(__WIN32__) - (void) signal(SIGPIPE, SIG_IGN); -#endif - } - - int const res = fprintf(_begin_stream, ( epsexport - ? "%%!PS-Adobe-3.0 EPSF-3.0\n" - : "%%!PS-Adobe-3.0\n" )); - /* flush this to test output stream as early as possible */ - if (fflush(_begin_stream)) { - /*g_print("caught error in sp_module_print_plain_begin\n");*/ - if (ferror(_begin_stream)) { - g_print("Error %d on output stream: %s\n", errno, - g_strerror(errno)); - } - g_print("Printing failed\n"); - /* fixme: should use pclose() for pipes */ - fclose(_begin_stream); - _begin_stream = NULL; - fflush(stdout); - return 0; - } - //TODO: do this same test on _stream - - // width and height in pt - _width = sp_document_width(doc) * PT_PER_PX; - _height = sp_document_height(doc) * PT_PER_PX; - - NRRect d; - bool pageBoundingBox; - bool pageLandscape; - pageBoundingBox = mod->get_param_bool("pageBoundingBox"); - // printf("Page Bounding Box: %s\n", pageBoundingBox ? "TRUE" : "FALSE"); - if (pageBoundingBox) { - d.x0 = d.y0 = 0; - d.x1 = ceil(_width); - d.y1 = ceil(_height); - } else { - SPItem* doc_item = SP_ITEM(sp_document_root(doc)); - sp_item_invoke_bbox(doc_item, &d, sp_item_i2r_affine(doc_item), TRUE); - // convert from px to pt - d.x0 *= PT_PER_PX; - d.x1 *= PT_PER_PX; - d.y0 *= PT_PER_PX; - d.y1 *= PT_PER_PX; - } - - Inkscape::SVGOStringStream os; - if (res >= 0) { - - os << "%%Creator: " << PACKAGE_STRING << "\n"; - // This will become problematic if inkscape gains the - // ability to handle multi paged documents. If this is - // the case the %%Orientation: comments should be - // renamed to %%PageOrientation: and moved to the - // respective pages. - os << "%%Pages: 1\n"; - - // 2004 Dec 10, BFC: - // The point of the following code is (1) to do the thing that's expected by users - // who have done File>New>A4_landscape or ...letter_landscape (i.e., rotate - // the output), while (2) not messing up users who simply want their output wider - // than it is tall (e.g., small figures for inclusion in LaTeX). - // The original patch by WQ only had the w>h condition. - { - double w = (d.x1 - d.x0); // width and height of bounding box, in pt - double h = (d.y1 - d.y0); - pageLandscape = ( - (w > 0. && h > 0.) // empty documents fail this sanity check, have w<0, h<0 - && (w > h) // implies, but does not prove, the user wanted landscape - && (w > 600) // approximate maximum printable width of an A4 - && (!epsexport) // eps should always be portrait - ) - ? true : false; - } - - if (pageLandscape) { - os << "%%Orientation: Landscape\n"; - os << "%%BoundingBox: " << (int) (_height - d.y1) << " " - << (int) d.x0 << " " - << (int) ceil(_height - d.y0) << " " - << (int) ceil(d.x1) << "\n"; - // According to Mike Sweet (the author of CUPS) - // HiResBoundingBox is only appropriate - // for EPS files. This means that we should - // distinguish if we export to ps or eps here. - // FIXME: I couldn't find HiResBoundingBox in the PS - // reference manual, so I guess we should skip - // it. - os << "%%HiResBoundingBox: " << (_height - d.y1) << " " - << d.x0 << " " - << (_height - d.y0) << " " - << d.x1 << "\n"; - if (!epsexport) { - os << "%%DocumentMedia: plain " - << (int) ceil(_height) << " " - << (int) ceil(_width) << " " - << "0 () ()\n"; - } - } else { - os << "%%Orientation: Portrait\n"; - os << "%%BoundingBox: " << (int) d.x0 << " " - << (int) d.y0 << " " - << (int) ceil(d.x1) << " " - << (int) ceil(d.y1) << "\n"; - os << "%%HiResBoundingBox: " << d.x0 << " " - << d.y0 << " " - << d.x1 << " " - << d.y1 << "\n"; - if (!epsexport) { - os << "%%DocumentMedia: plain " - << (int) ceil(_width) << " " - << (int) ceil(_height) << " " - << "0 () ()\n"; - } - } - - os << "%%EndComments\n"; - /* If font embedding requested, begin document setup section where to include font resources */ - if(font_embedded) os << "%%BeginSetup\n";/* Resume it later with Begin(End)Resource sections for font embedding. So, for now, we are done with the prolog/setup part. */ - gint ret = fprintf(_begin_stream, "%s", os.str().c_str()); - if(ret < 0) return ret; - - /* Main Script part (after document setup) begins */ - /* Empty os from all previous printing */ - std::string clrstr = ""; - os.str(clrstr); - // This will become problematic if we print multi paged documents: - os << "%%Page: 1 1\n"; - - if (pageLandscape) { - os << "90 rotate\n"; - if (_bitmap) { - os << "0 " << (int) -ceil(_height) << " translate\n"; - } - } else { - if (!_bitmap) { - os << "0 " << (int) ceil(_height) << " translate\n"; - } - } - - if (!_bitmap) { - os << PT_PER_PX << " " << -PT_PER_PX << " scale\n"; - // from now on we can output px, but they will be treated as pt - } - - /* As a new PS document is created, _fontlist has to be reinitialized (unref fonts from possible former PS docs) */ - _fonts = g_tree_new_full((GCompareDataFunc)strcmp, NULL, (GDestroyNotify)g_free, (GDestroyNotify)g_free); - } - - os << "0 0 0 setrgbcolor\n" - << "[] 0 setdash\n" - << "1 setlinewidth\n" - << "0 setlinejoin\n" - << "0 setlinecap\n"; - - /* FIXME: This function is declared to return unsigned, whereas fprintf returns a signed int * - * that can be zero if the first fprintf failed (os is empty) or "negative" (i.e. very positive - * in unsigned int interpretation) if the first fprintf failed but this one succeeds, or - * positive if both succeed. */ - return fprintf(_stream, "%s", os.str().c_str()); -} - -unsigned int -PrintPS::finish(Inkscape::Extension::Print *mod) -{ - if (!_stream) return 0; - - if (_bitmap) { - double const dots_per_pt = _dpi / PT_PER_IN; - - double const x0 = 0.0; - double const y0 = 0.0; - double const x1 = x0 + _width; - double const y1 = y0 + _height; - - /* Bitmap width/height in bitmap dots. */ - int const width = (int) (_width * dots_per_pt + 0.5); - int const height = (int) (_height * dots_per_pt + 0.5); - - Geom::Matrix affine; - affine[0] = width / ((x1 - x0) * PX_PER_PT); - affine[1] = 0.0; - affine[2] = 0.0; - affine[3] = height / ((y1 - y0) * PX_PER_PT); - affine[4] = -affine[0] * x0; - affine[5] = -affine[3] * y0; - - nr_arena_item_set_transform(mod->root, &affine); - - guchar *const px = g_new(guchar, 4 * width * 64); - - for (int y = 0; y < height; y += 64) { - /* Set area of interest. */ - NRRectL bbox; - bbox.x0 = 0; - bbox.y0 = y; - bbox.x1 = width; - bbox.y1 = MIN(height, y + 64); - - /* Update to renderable state. */ - NRGC gc(NULL); - gc.transform.setIdentity(); - nr_arena_item_invoke_update(mod->root, &bbox, &gc, NR_ARENA_ITEM_STATE_ALL, NR_ARENA_ITEM_STATE_NONE); - /* Render */ - /* This should take guchar* instead of unsigned char*) */ - NRPixBlock pb; - nr_pixblock_setup_extern(&pb, NR_PIXBLOCK_MODE_R8G8B8A8N, - bbox.x0, bbox.y0, bbox.x1, bbox.y1, - (guchar*)px, 4 * width, FALSE, FALSE); - memset(px, 0xff, 4 * width * 64); - nr_arena_item_invoke_render(NULL, mod->root, &bbox, &pb, 0); - /* Blitter goes here */ - Geom::Matrix imgt; - imgt[0] = (bbox.x1 - bbox.x0) / dots_per_pt; - imgt[1] = 0.0; - imgt[2] = 0.0; - imgt[3] = (bbox.y1 - bbox.y0) / dots_per_pt; - imgt[4] = 0.0; - imgt[5] = _height - y / dots_per_pt - (bbox.y1 - bbox.y0) / dots_per_pt; - - print_image(_stream, px, bbox.x1 - bbox.x0, bbox.y1 - bbox.y0, 4 * width, &imgt); - } - - g_free(px); - } - - fprintf(_stream, "showpage\n"); - int const res = fprintf(_stream, "%%%%EOF\n"); - - /* Flush stream to be sure. */ - (void) fflush(_stream); - - char c; - /* If font embedding... */ - if(mod->get_param_bool("fontEmbedded")) - { - /* Close the document setup section that had been started (because all the needed resources are supposed to be included now) */ - /*res = */fprintf(_begin_stream, "%s", "%%EndSetup\n"); - /* If font embedding requested, the following PS script part was printed to a different file from the prolog/setup, so script part (current _stream) needs to be copied to prolog/setup file to get the complete (E)PS document */ - if(fseek(_stream, 0, SEEK_SET) == 0) - { - while((c = fgetc(_stream))!=EOF) fputc(c, _begin_stream); - } - fclose(_stream); - _stream = _begin_stream; - } - - /* fixme: should really use pclose for popen'd streams */ - fclose(_stream); - _stream = NULL; - - _latin1_encoded_fonts.clear(); - - g_tree_destroy(_fonts); - - return res; -} - -unsigned int -PrintPS::bind(Inkscape::Extension::Print */*mod*/, Geom::Matrix const *transform, float /*opacity*/) -{ - if (!_stream) return 0; // XXX: fixme, returning -1 as unsigned. - if (_bitmap) return 0; - - Inkscape::SVGOStringStream os; - os << "gsave [" << (*transform)[0] << " " - << (*transform)[1] << " " - << (*transform)[2] << " " - << (*transform)[3] << " " - << (*transform)[4] << " " - << (*transform)[5] << "] concat\n"; - - return fprintf(_stream, "%s", os.str().c_str()); -} - -unsigned int -PrintPS::release(Inkscape::Extension::Print */*mod*/) -{ - if (!_stream) return 0; // XXX: fixme, returning -1 as unsigned. - if (_bitmap) return 0; - - return fprintf(_stream, "grestore\n"); -} - -unsigned int -PrintPS::comment(Inkscape::Extension::Print */*mod*/, char const *comment) -{ - if (!_stream) return 0; // XXX: fixme, returning -1 as unsigned. - if (_bitmap) return 0; - - return fprintf(_stream, "%%! %s\n",comment); -} - -void -PrintPS::print_fill_style(SVGOStringStream &os, SPStyle const *const style, NRRect const *pbox) -{ - g_return_if_fail( style->fill.isColor() - || ( style->fill.isPaintserver() - && SP_IS_GRADIENT(SP_STYLE_FILL_SERVER(style)) ) ); - - if (style->fill.isColor()) { - float rgb[3]; - sp_color_get_rgb_floatv(&style->fill.value.color, rgb); - - os << rgb[0] << " " << rgb[1] << " " << rgb[2] << " setrgbcolor\n"; - - } else { - g_assert( style->fill.isPaintserver() - && SP_IS_GRADIENT(SP_STYLE_FILL_SERVER(style)) ); - - if (SP_IS_LINEARGRADIENT(SP_STYLE_FILL_SERVER(style))) { - - SPLinearGradient *lg = SP_LINEARGRADIENT(SP_STYLE_FILL_SERVER(style)); - Geom::Point p1 (lg->x1.computed, lg->y1.computed); - Geom::Point p2 (lg->x2.computed, lg->y2.computed); - if (pbox && SP_GRADIENT(lg)->units == SP_GRADIENT_UNITS_OBJECTBOUNDINGBOX) { - // convert to userspace - Geom::Matrix bbox2user(pbox->x1 - pbox->x0, 0, 0, pbox->y1 - pbox->y0, pbox->x0, pbox->y0); - p1 *= bbox2user; - p2 *= bbox2user; - } - - os << "<<\n/ShadingType 2\n/ColorSpace /DeviceRGB\n"; - os << "/Coords [" << p1[Geom::X] << " " << p1[Geom::Y] << " " << p2[Geom::X] << " " << p2[Geom::Y] <<"]\n"; - os << "/Extend [true true]\n"; - os << "/Domain [0 1]\n"; - os << "/Function <<\n/FunctionType 3\n/Functions\n[\n"; - - sp_gradient_ensure_vector(SP_GRADIENT(lg)); // when exporting from commandline, vector is not built - for (unsigned i = 0; i + 1 < lg->vector.stops.size(); i++) { - float rgb[3]; - sp_color_get_rgb_floatv(&lg->vector.stops[i].color, rgb); - os << "<<\n/FunctionType 2\n/Domain [0 1]\n"; - os << "/C0 [" << rgb[0] << " " << rgb[1] << " " << rgb[2] << "]\n"; - sp_color_get_rgb_floatv(&lg->vector.stops[i+1].color, rgb); - os << "/C1 [" << rgb[0] << " " << rgb[1] << " " << rgb[2] << "]\n"; - os << "/N 1\n>>\n"; - } - os << "]\n/Domain [0 1]\n"; - os << "/Bounds [ "; - for (unsigned i = 0; i + 2 < lg->vector.stops.size(); i++) { - os << lg->vector.stops[i+1].offset <<" "; - } - os << "]\n"; - os << "/Encode [ "; - for (unsigned i = 0; i + 1 < lg->vector.stops.size(); i++) { - os << "0 1 "; - } - os << "]\n"; - os << ">>\n>>\n"; - - } else if (SP_IS_RADIALGRADIENT(SP_STYLE_FILL_SERVER(style))) { - - SPRadialGradient *rg = SP_RADIALGRADIENT(SP_STYLE_FILL_SERVER(style)); - Geom::Point c(rg->cx.computed, rg->cy.computed); - Geom::Point f(rg->fx.computed, rg->fy.computed); - double r = rg->r.computed; - if (pbox && SP_GRADIENT(rg)->units == SP_GRADIENT_UNITS_OBJECTBOUNDINGBOX) { - // convert to userspace - Geom::Matrix const bbox2user(pbox->x1 - pbox->x0, 0, - 0, pbox->y1 - pbox->y0, - pbox->x0, pbox->y0); - c *= bbox2user; - f *= bbox2user; - r *= bbox2user.descrim(); - } - - os << "<<\n/ShadingType 3\n/ColorSpace /DeviceRGB\n"; - os << "/Coords ["<< f[Geom::X] <<" "<< f[Geom::Y] <<" 0 "<< c[Geom::X] <<" "<< c[Geom::Y] <<" "<< r <<"]\n"; - os << "/Extend [true true]\n"; - os << "/Domain [0 1]\n"; - os << "/Function <<\n/FunctionType 3\n/Functions\n[\n"; - - sp_gradient_ensure_vector(SP_GRADIENT(rg)); // when exporting from commandline, vector is not built - for (unsigned i = 0; i + 1 < rg->vector.stops.size(); i++) { - float rgb[3]; - sp_color_get_rgb_floatv(&rg->vector.stops[i].color, rgb); - os << "<<\n/FunctionType 2\n/Domain [0 1]\n"; - os << "/C0 [" << rgb[0] << " " << rgb[1] << " " << rgb[2] << "]\n"; - sp_color_get_rgb_floatv(&rg->vector.stops[i+1].color, rgb); - os << "/C1 [" << rgb[0] << " " << rgb[1] << " " << rgb[2] << "]\n"; - os << "/N 1\n>>\n"; - } - os << "]\n/Domain [0 1]\n"; - os << "/Bounds [ "; - for (unsigned i = 0; i + 2 < rg->vector.stops.size(); i++) { - os << rg->vector.stops[i+1].offset << " "; - } - os << "]\n"; - os << "/Encode [ "; - for (unsigned i = 0; i + 1 < rg->vector.stops.size(); i++) { - os << "0 1 "; - } - os << "]\n"; - os << ">>\n>>\n"; - } - } -} - -void -PrintPS::print_stroke_style(SVGOStringStream &os, SPStyle const *style) -{ - float rgb[3]; - sp_color_get_rgb_floatv(&style->stroke.value.color, rgb); - - os << rgb[0] << " " << rgb[1] << " " << rgb[2] << " setrgbcolor\n"; - - // There are rare cases in which for a solid line stroke_dasharray_set is true. To avoid - // invalid PS-lines such as "[0.0000000 0.0000000] 0.0000000 setdash", which should be "[] 0 setdash", - // we first check if all components of stroke_dash.dash are 0. - bool LineSolid = true; - if (style->stroke_dash.n_dash && - style->stroke_dash.dash ) - { - int i = 0; - while (LineSolid && (i < style->stroke_dash.n_dash)) { - if (style->stroke_dash.dash[i] > 0.00000001) - LineSolid = false; - i++; - } - if (!LineSolid) { - os << "["; - for (i = 0; i < style->stroke_dash.n_dash; i++) { - if (i > 0) { - os << " "; - } - os << style->stroke_dash.dash[i]; - } - os << "] " << style->stroke_dash.offset << " setdash\n"; - } else { - os << "[] 0 setdash\n"; - } - } else { - os << "[] 0 setdash\n"; - } - - os << style->stroke_width.computed << " setlinewidth\n"; - os << style->stroke_linejoin.computed << " setlinejoin\n"; - os << style->stroke_linecap.computed << " setlinecap\n"; -} - - -unsigned int -PrintPS::fill(Inkscape::Extension::Print *mod, Geom::PathVector const &pathv, Geom::Matrix const *ctm, SPStyle const *const style, - NRRect const *pbox, NRRect const *dbox, NRRect const *bbox) -{ - if (!_stream) return 0; // XXX: fixme, returning -1 as unsigned. - if (_bitmap) return 0; - - if ( style->fill.isColor() - || ( style->fill.isPaintserver() - && SP_IS_GRADIENT(SP_STYLE_FILL_SERVER(style)) ) ) - { - Inkscape::SVGOStringStream os; - - os << "gsave\n"; - - print_fill_style(os, style, pbox); - - print_pathvector(os, pathv); - - if (style->fill_rule.computed == SP_WIND_RULE_EVENODD) { - if (style->fill.isColor()) { - os << "eofill\n"; - } else { - g_assert( style->fill.isPaintserver() - && SP_IS_GRADIENT(SP_STYLE_FILL_SERVER(style)) ); - SPGradient const *g = SP_GRADIENT(SP_STYLE_FILL_SERVER(style)); - os << "eoclip\n"; - if (g->gradientTransform_set) { - os << "gsave [" << g->gradientTransform[0] << " " << g->gradientTransform[1] - << " " << g->gradientTransform[2] << " " << g->gradientTransform[3] - << " " << g->gradientTransform[4] << " " << g->gradientTransform[5] << "] concat\n"; - } - os << "shfill\n"; - if (g->gradientTransform_set) { - os << "grestore\n"; - } - } - } else { - if (style->fill.isColor()) { - os << "fill\n"; - } else { - g_assert( style->fill.isPaintserver() - && SP_IS_GRADIENT(SP_STYLE_FILL_SERVER(style)) ); - SPGradient const *g = SP_GRADIENT(SP_STYLE_FILL_SERVER(style)); - os << "clip\n"; - if (g->gradientTransform_set) { - os << "gsave [" << g->gradientTransform[0] << " " << g->gradientTransform[1] - << " " << g->gradientTransform[2] << " " << g->gradientTransform[3] - << " " << g->gradientTransform[4] << " " << g->gradientTransform[5] << "] concat\n"; - } - os << "shfill\n"; - if (g->gradientTransform_set) { - os << "grestore\n"; - } - } - } - - os << "grestore\n"; - - fprintf(_stream, "%s", os.str().c_str()); - } - - return 0; -} - - -unsigned int -PrintPS::stroke(Inkscape::Extension::Print *mod, Geom::PathVector const &pathv, Geom::Matrix const *ctm, SPStyle const *style, - NRRect const *pbox, NRRect const *dbox, NRRect const *bbox) -{ - if (!_stream) return 0; // XXX: fixme, returning -1 as unsigned. - if (_bitmap) return 0; - - if (style->stroke.isColor()) { - Inkscape::SVGOStringStream os; - - print_stroke_style(os, style); - - print_pathvector(os, pathv); - - os << "stroke\n"; - - fprintf(_stream, "%s", os.str().c_str()); - } - - return 0; -} - -unsigned int -PrintPS::image(Inkscape::Extension::Print *mod, guchar *px, unsigned int w, unsigned int h, unsigned int rs, - Geom::Matrix const *transform, SPStyle const *style) -{ - if (!_stream) return 0; // XXX: fixme, returning -1 as unsigned. - if (_bitmap) return 0; - - return print_image(_stream, px, w, h, rs, transform); -} - -/* PSFontName is now useless (cf. text() method code) */ -char const * -PrintPS::PSFontName(SPStyle const *style) -{ - font_instance *tf = font_factory::Default()->FaceFromStyle(style); - - char const *n; - char name_buf[256]; - - // PS does not like spaces in fontnames, replace them with the usual dashes. - - if (tf) { - tf->PSName(name_buf, sizeof(name_buf)); - n = g_strdelimit(name_buf, " ", '-'); - tf->Unref(); - } else { - // this system does not have this font, so just use the name from SVG in the hope that PS interpreter will make sense of it - bool i = (style->font_style.value == SP_CSS_FONT_STYLE_ITALIC); - bool o = (style->font_style.value == SP_CSS_FONT_STYLE_OBLIQUE); - bool b = (style->font_weight.value == SP_CSS_FONT_WEIGHT_BOLD) || - (style->font_weight.value >= SP_CSS_FONT_WEIGHT_500 && style->font_weight.value <= SP_CSS_FONT_WEIGHT_900); - - n = g_strdup_printf("%s%s%s%s", - g_strdelimit(style->text->font_family.value, " ", '-'), - (b || i || o) ? "-" : "", - (b) ? "Bold" : "", - (i) ? "Italic" : ((o) ? "Oblique" : "") ); - } - - return g_strdup(n); -} - -//LSB = Least Significant Byte -//converts 4-byte array to "LSB first" to "LSB last" -/** -* (Used by PrintPS::embed_t1 (from libgnomeprint/gnome-font-face.c), -* to get the length of data segment (bytes 3-6 in IBM PC (PostScript) font file format. -* Reference: Adobe technical note 5040, "Supporting Downloadable PostScript -* Language Fonts", page 9) -*/ - -#define INT32_LSB_2_5(q) ((q)[2] + ((q)[3] << 8) + ((q)[4] << 16) + ((q)[5] << 24)) - -/** -* \brief For "Type 1" font only, print font data in output stream, to embed font data in PS output. -* \param os Stream of output. -* \param font Font whose data to embed. -* \return FALSE if font embedding canceled (due to error or not supported font type), TRUE otherwise -* TODO: enable font embedding for True Type -*/ -//adapted more/less from libgnomeprint/gnome_font_face_ps_embed_t1() -bool -PrintPS::embed_t1 (SVGOStringStream &os, font_instance* font) -{ - //check font type - FT_Face font_face = pango_ft2_font_get_face(font->pFont); - const FT_String* font_type = FT_Get_X11_Font_Format(font_face); - g_return_val_if_fail (_fontTypesMap[font_type] == FONT_TYPE1, false); - //get font filename, stream to font file and size - FT_Stream font_stream = font_face->stream; - const char* font_filename = (char*) font_stream->pathname.pointer; - unsigned long font_stream_size = font_stream->size; - //first detect if font file is in IBM PC format - /** - * if first byte is 0x80, font file is pfb, do the same as a pfb to pfa converter - * Reference: Adobe technical note 5040, "Supporting Downloadable PostScript - * Language Fonts", page 9 - * else: include all the ASCII data in the font pfa file - **/ - char* buf = new char[7]; - unsigned char* buffer = new unsigned char[7];//for the 6 header bytes (data segment length is unknown at this point) and final '\0' - std::string ascii_data;//for data segment "type 1" in IBM PC Format - //read the 6 header bytes - //for debug: g_warning("Reading from font file %s...", font_filename); - font_stream->close(font_stream); - ifstream font_file (font_filename, ios::in|ios::binary); - if (!font_file.is_open()) { - g_warning ("file %s: line %d: Cannot open font file %s", __FILE__, __LINE__, font_filename); - return false; - } - font_file.read(buf, 6); - buffer = (unsigned char*) buf; - - //If font file is pfb, do the same as pfb to pfa converter - //check byte 1 - if (buffer[0] == 0x80) { - const char hextab[17] = "0123456789abcdef"; - unsigned long offset = 0; - - while (offset < font_stream_size) { - gint length, i; - if (buffer[0] != 0x80) { - g_warning ("file %s: line %d: Corrupt %s", __FILE__, __LINE__, font_filename); - //TODO: print some default font data anyway like libgnomeprint/gnome_font_face_ps_embed_empty - return false; - } - switch (buffer[1]) { - case 1: - //get data segment length from bytes 3-6 - //(Note: byte 1 is first byte in comments to match Adobe technical note 5040, but index 0 in code) - length = INT32_LSB_2_5 (buffer); - offset += 6; - //resize the buffer to fit the data segment length - delete [] buf; - buf = new char[length + 1]; - buffer = new unsigned char[length + 1]; - //read and print all the data segment length - font_file.read(buf, length); - buffer = (unsigned char*) buf; - /** - * Assigning a part from the buffer of length "length" ensures - * that no incorrect extra character will be printed and make the PS output invalid - * That was the case with the code: - * os << buffer; - * (A substring method could have been used as well.) - */ - ascii_data.assign(buf, 0, length); - os << ascii_data; - offset += length; - //read next 6 header bytes - font_file.read(buf, 6); - break; - case 2: - length = INT32_LSB_2_5 (buffer); - offset += 6; - //resize the buffer to fit the data segment length - delete [] buf; - buf = new char[length + 1]; - buffer = new unsigned char[length + 1]; - //read and print all the data segment length - font_file.read(buf, length); - buffer = (unsigned char*) buf; - for (i = 0; i < length; i++) { - os << hextab[buffer[i] >> 4]; - os << hextab[buffer[i] & 15]; - offset += 1; - if ((i & 31) == 31 || i == length - 1) - os << "\n"; - } - //read next 6 header bytes - font_file.read(buf, 6); - break; - case 3: - /* Finished */ - os << "\n"; - offset = font_stream_size; - break; - default: - os << "%%%ERROR: Font file corrupted at byte " << offset << "\n"; - //TODO: print some default font data anyway like libgnomeprint/gnome_font_face_ps_embed_empty - return false; - } - } - } - //else: font file is pfa, include all directly - else { - //font is not in IBM PC format, all the file content can be directly printed - //resize buffer - delete [] buf; - buf = new char[font_stream_size + 1]; - delete [] buffer; - font_file.seekg (0, ios::beg); - font_file.read(buf, font_stream_size); - /** - * Assigning a part from the buffer of length "length" ensures - * that no incorrect extra character will be printed and make the PS output invalid - * That was the case with the code: - * os << buffer; - * (A substring method could have been used as well.) - */ - ascii_data.assign(buf, 0, font_stream_size); - os << ascii_data; - } - font_file.close(); - delete [] buf; - buf = NULL; - buffer = NULL;// Clear buffer to prevent using invalid memory reference. - - char font_psname[256]; - font->PSName(font_psname, sizeof(font_psname)); - FT_Long font_num_glyphs = font_face->num_glyphs; - if (font_num_glyphs < 256) { - gint glyph; - /* 8-bit vector */ - os << "(" << font_psname << ") cvn findfont dup length dict begin\n"; - os << "{1 index /FID ne {def} {pop pop} ifelse} forall\n"; - os << "/Encoding [\n"; - for (glyph = 0; glyph < 256; glyph++) { - guint g; - gchar c[256]; - FT_Error status; - g = (glyph < font_num_glyphs) ? glyph : 0; - status = FT_Get_Glyph_Name (font_face, g, c, 256); - - if (status != FT_Err_Ok) { - g_warning ("file %s: line %d: Glyph %d has no name in %s", __FILE__, __LINE__, g, font_filename); - g_snprintf (c, 256, ".notdef"); - } - - os << "/" << c << ( ((glyph & 0xf) == 0xf)?"\n":" " ); - } - os << "] def currentdict end\n"; - //TODO: manage several font instances for same ps name like in libgnomeprint/gnome_print_ps2_set_font_real() - //gf_pso_sprintf (pso, "(%s) cvn exch definefont pop\n", pso->encodedname); - os << "(" << font_psname << ") cvn exch definefont pop\n"; - } else { - gint nfonts, i, j; - /* 16-bit vector */ - nfonts = (font_num_glyphs + 255) >> 8; - - os << "32 dict begin\n"; - /* Common entries */ - os << "/FontType 0 def\n"; - os << "/FontMatrix [1 0 0 1 0 0] def\n"; - os << "/FontName (" << font_psname << "-Glyph-Composite) cvn def\n"; - os << "/LanguageLevel 2 def\n"; - - /* Type 0 entries */ - os << "/FMapType 2 def\n"; - - /* Bitch 'o' bitches */ - os << "/FDepVector [\n"; - - for (i = 0; i < nfonts; i++) { - os << "(" << font_psname << ") cvn findfont dup length dict begin\n"; - os << "{1 index /FID ne {def} {pop pop} ifelse} forall\n"; - os << "/Encoding [\n"; - for (j = 0; j < 256; j++) { - gint glyph; - gchar c[256]; - FT_Error status; - glyph = 256 * i + j; - if (glyph >= font_num_glyphs) - glyph = 0; - status = FT_Get_Glyph_Name (font_face, glyph, c, 256); - if (status != FT_Err_Ok) { - g_warning ("file %s: line %d: Glyph %d has no name in %s", __FILE__, __LINE__, glyph, font_filename); - g_snprintf (c, 256, ".notdef"); - } - os << "/" << c << ( ((j & 0xf) == 0xf)?"\n":" " ); - } - os << "] def\n"; - os << "currentdict end (" << font_psname << "-Glyph-Page-"; - os << std::dec << i; - os << ") cvn exch definefont\n"; - } - os << "] def\n"; - os << "/Encoding [\n"; - for (i = 0; i < 256; i++) { - gint fn; - fn = (i < nfonts) ? i : 0; - os << std::dec << fn; - os << ( ((i & 0xf) == 0xf) ? "\n" : " " ); - } - os << "] def\n"; - os << "currentdict end\n"; - //TODO: manage several font instances for same ps name like in libgnomeprint/gnome_print_ps2_set_font_real() - //gf_pso_sprintf (pso, "(%s) cvn exch definefont pop\n", pso->encodedname); - os << "(" << font_psname << ") cvn exch definefont pop\n"; - } - //font embedding completed - return true; -} - - - -/** -* \brief Print font data in output stream, to embed font data in PS output. -* \param os Stream of output. -* \param font Font whose data to embed. -* \return FALSE if font embedding canceled (due to error or not supported font type), TRUE otherwise -*/ -//adapted from libgnomeprint/gnome_font_face_ps_embed() -bool PrintPS::embed_font(SVGOStringStream &os, font_instance* font) -{ - //Hinted at by a comment in libgnomeprint/fcpattern_to_gp_font_entry() - //Determining the font type in the "Pango way" - FT_Face font_face = pango_ft2_font_get_face(font->pFont); - const FT_String* font_type = FT_Get_X11_Font_Format(font_face); - - /** - * Possible values of "font_type": Type 1, TrueType, etc. - * Embedding available only for Type 1 fonts so far. - */ - //TODO: provide support for other font types (TrueType is a priority) - switch(_fontTypesMap[font_type]) - { - case FONT_TYPE1: - return embed_t1 (os, font); - //TODO: implement TT font embedding - /*case FONT_TRUETYPE: - embed_tt (os, font); - break;*/ - default: - g_warning("Unknown (not supported) font type for embedding: %s", font_type); - //TODO: embed something like in libgnomeprint/gnome_font_face_ps_embed_empty(); - return false; - } -} - - -/** -* \brief Converts UTF-8 string to sequence of glyph numbers for PostScript string (cf. "show" commands.). -* \param os Stream of output. -* \param font Font used for unicode->glyph mapping. -* \param unistring UTF-8 encoded string to convert. -*/ -void PrintPS::print_glyphlist(SVGOStringStream &os, font_instance* font, Glib::ustring unistring) -{ - //iterate through unicode chars in unistring - Glib::ustring::iterator unistring_iter; - gunichar unichar; - gint glyph_index, glyph_page; - - FT_Face font_face = pango_ft2_font_get_face(font->pFont); - FT_Long font_num_glyphs = font_face->num_glyphs; - //whether font has more than one glyph pages (16-bit encoding) - bool two_bytes_encoded = (font_num_glyphs > 255); - - for (unistring_iter = unistring.begin(); unistring_iter!=unistring.end(); unistring_iter++) - { - //get unicode char - unichar = *unistring_iter; - //get matching glyph index in current font for unicode char - //default glyph index is 0 for undefined font character (glyph unavailable) - //TODO: if glyph unavailable for current font, use a default font among the most Unicode-compliant - e.g. Bitstream Cyberbit - I guess - glyph_index = font->MapUnicodeChar(unichar); - //if more than one glyph pages for current font (16-bit encoding), - if(two_bytes_encoded) - { - //add glyph page before glyph index. - glyph_page = (glyph_index >> 8) & 0xff; - os << "\\"; - //convert in octal code before printing - os << std::oct << glyph_page; - } - //(If one page - 8-bit encoding -, nothing to add.) - //TODO: explain the following line inspired from libgnomeprint/gnome_print_ps2_glyphlist() - glyph_index = glyph_index & 0xff; - //TODO: mark glyph as used for current font, if Inkscape has to embed minimal font data in PS - os << "\\"; - //convert in octal code before printing - os << std::oct << glyph_index; - } -} - -unsigned int -PrintPS::text(Inkscape::Extension::Print *mod, char const *text, Geom::Point p, - SPStyle const *const style) -{ - if (!_stream) return 0; // XXX: fixme, returning -1 as unsigned. - if (_bitmap) return 0; - - //check whether fonts have to be embedded in the PS output - //if not, use the former way of Inkscape to print text - gboolean font_embedded = mod->fontEmbedded(); - - Inkscape::SVGOStringStream os; - //find font - /** - * A font_instance object is necessary for the next steps, - * that's why using PSFontName() method just to get the PS fontname - * is not enough and not appropriate - */ - font_instance *tf = font_factory::Default()->FaceFromStyle(style); - - const gchar *fn = NULL; - char name_buf[256]; - - //check whether font was found - /** - * This check is not strictly reliable - * since Inkscape returns a default font if font not found. - * This is just to be consistent with the method PSFontName(). - */ - if (tf) { - //get font PS name - tf->PSName(name_buf, sizeof(name_buf)); - fn = name_buf; - } else { - // this system does not have this font, so cancel font embedding... - font_embedded = FALSE; - //this case seems to never happen since Inkscape uses a default font instead (like BitstreamVeraSans on Windows) - g_warning("Font %s not found.", fn); - //...and just use the name from SVG in the hope that PS interpreter will make sense of it - bool i = (style->font_style.value == SP_CSS_FONT_STYLE_ITALIC); - bool o = (style->font_style.value == SP_CSS_FONT_STYLE_OBLIQUE); - bool b = (style->font_weight.value == SP_CSS_FONT_WEIGHT_BOLD) || - (style->font_weight.value >= SP_CSS_FONT_WEIGHT_500 && style->font_weight.value <= SP_CSS_FONT_WEIGHT_900); - - fn = g_strdup_printf("%s%s%s%s", - g_strdelimit(style->text->font_family.value, " ", '-'), - (b || i || o) ? "-" : "", - (b) ? "Bold" : "", - (i) ? "Italic" : ((o) ? "Oblique" : "") ); - } - - /** - * If font embedding is requested, tempt to embed the font the first time it is used, once and for all. - * There is no selection of the glyph descriptions to embed, based on the characters used effectively in the document. - * (TODO?) - * Else, back to the former way of printing. - */ - gpointer is_embedded; - //if not first time the font is used and if font embedding requested, check whether the font has been embedded (successfully the first time). - if(g_tree_lookup_extended(_fonts, fn, NULL, &is_embedded)) font_embedded = font_embedded && (strcmp((char *)is_embedded, "TRUE") == 0); - else - { - //first time the font is used - if(font_embedded) - { - //embed font in PS output - //adapted from libgnomeprint/gnome_print_ps2_close() - os << "%%BeginResource: font " << fn << "\n"; - font_embedded = embed_font(os, tf); - os << "%%EndResource: font " << fn << "\n"; - if(!font_embedded) g_warning("Font embedding canceled for font: %s", fn); - else fprintf(_begin_stream, "%s", os.str().c_str()); - //empty os before resume printing to the script stream - std::string clrstr = ""; - os.str(clrstr); - - } - //add to the list - g_tree_insert(_fonts, g_strdup(fn), g_strdup((font_embedded)?"TRUE":"FALSE")); - } - - Glib::ustring s; - // Escape chars - Inkscape::SVGOStringStream escaped_text; - //if font embedding, all characters will be converted to glyph indices (cf. PrintPS::print_glyphlist()), - //so no need to escape characters - //else back to the old way, i.e. escape chars: '\',')','(' and UTF-8 ones - if(font_embedded) s = text; - else { - escaped_text << std::oct; - for (gchar const *p_text = text ; *p_text ; p_text = g_utf8_next_char(p_text)) { - gunichar const c = g_utf8_get_char(p_text); - if (c == '\\' || c == ')' || c == '(') - escaped_text << '\\' << static_cast(c); - else if (c >= 0x80) - escaped_text << '\\' << c; - else - escaped_text << static_cast(c); - } - } - - os << "gsave\n"; - - // set font - if(font_embedded) os << "/" << fn << " findfont\n"; - else { - if (_latin1_encoded_fonts.find(fn) == _latin1_encoded_fonts.end()) { - if (!_newlatin1font_proc_defined) { - // input: newfontname, existingfontname - // output: new font object, also defined to newfontname - os << "/newlatin1font " // name of the proc - "{findfont dup length dict copy " // load the font and create a copy of it - "dup /Encoding ISOLatin1Encoding put " // change the encoding in the copy - "definefont} def\n"; // create the new font and leave it on the stack, define the proc - _newlatin1font_proc_defined = true; - } - if(strchr(fn, ' ') == NULL) - os << "/" << fn << "-ISOLatin1 /" << fn << " newlatin1font\n"; - else - os << "(/" << fn << "-ISOLatin1) (/" << fn << ") newlatin1font\n"; - _latin1_encoded_fonts.insert(fn); - } else - if(strchr(fn, ' ') == NULL) - os << "/" << fn << "-ISOLatin1 findfont\n"; - else - os << "(/" << fn << "-ISOLatin1) findfont\n"; - } - os << style->font_size.computed << " scalefont\n"; - os << "setfont\n"; - //The commented line beneath causes Inkscape to crash under Linux but not under Windows - //g_free((void*) fn); - - if ( style->fill.isColor() - || ( style->fill.isPaintserver() - && SP_IS_GRADIENT(SP_STYLE_FILL_SERVER(style)) ) ) - { - // set fill style - print_fill_style(os, style, NULL); - // FIXME: we don't know the pbox of text, so have to pass NULL. This means gradients with - // bbox units won't work with text. However userspace gradients don't work with text either - // (text is black) for some reason. - - os << "newpath\n"; - os << p[Geom::X] << " " << p[Geom::Y] << " moveto\n"; - os << "("; - if(font_embedded) print_glyphlist(os, tf, s); - else os << escaped_text.str(); - os << ") show\n"; - } - - if (style->stroke.isColor()) { - - // set stroke style - print_stroke_style(os, style); - - // paint stroke - os << "newpath\n"; - os << p[Geom::X] << " " << p[Geom::Y] << " moveto\n"; - os << "("; - if(font_embedded) print_glyphlist(os, tf, s); - else os << escaped_text.str(); - os << ") false charpath stroke\n"; - } - - if(tf) tf->Unref(); - - os << "grestore\n"; - - fprintf(_stream, "%s", os.str().c_str()); - - return 0; -} - - - -/* PostScript helpers */ - -void -PrintPS::print_pathvector(SVGOStringStream &os, Geom::PathVector const &pathv) -{ - if (pathv.empty()) - return; - - os << "newpath\n"; - - for(Geom::PathVector::const_iterator it = pathv.begin(); it != pathv.end(); ++it) { - - os << it->initialPoint()[Geom::X] << " " << it->initialPoint()[Geom::Y] << " moveto\n"; - - for(Geom::Path::const_iterator cit = it->begin(); cit != it->end_open(); ++cit) { - print_2geomcurve(os, *cit); - } - - if (it->closed()) { - os << "closepath\n"; - } - - } -} - -void -PrintPS::print_2geomcurve(SVGOStringStream &os, Geom::Curve const & c ) -{ - using Geom::X; - using Geom::Y; - - if( is_straight_curve(c) ) - { - os << c.finalPoint()[X] << " " << c.finalPoint()[Y] << " lineto\n"; - } - else if(Geom::CubicBezier const *cubic_bezier = dynamic_cast(&c)) { - std::vector points = cubic_bezier->points(); - os << points[1][X] << " " << points[1][Y] << " " - << points[2][X] << " " << points[2][Y] << " " - << points[3][X] << " " << points[3][Y] << " curveto\n"; - } - else { - //this case handles sbasis as well as all other curve types - Geom::Path sbasis_path = Geom::cubicbezierpath_from_sbasis(c.toSBasis(), 0.1); - - for(Geom::Path::iterator iter = sbasis_path.begin(); iter != sbasis_path.end(); ++iter) { - print_2geomcurve(os, *iter); - } - } -} - - -/* The following code is licensed under GNU GPL. -** The packbits, ascii85 and imaging printing code -** is from the gimp's postscript.c. -*/ - -/** -* \param nin Number of bytes of source data. -* \param src Source data. -* \param nout Number of output bytes. -* \param dst Buffer for output. -*/ -void -PrintPS::compress_packbits(int nin, - guchar *src, - int *nout, - guchar *dst) - -{ - register guchar c; - int nrepeat, nliteral; - guchar *run_start; - guchar *start_dst = dst; - guchar *last_literal = NULL; - - for (;;) { - if (nin <= 0) break; - - run_start = src; - c = *run_start; - - /* Search repeat bytes */ - if ((nin > 1) && (c == src[1])) { - nrepeat = 1; - nin -= 2; - src += 2; - while ((nin > 0) && (c == *src)) { - nrepeat++; - src++; - nin--; - if (nrepeat == 127) break; /* Maximum repeat */ - } - - /* Add two-byte repeat to last literal run ? */ - if ( (nrepeat == 1) - && (last_literal != NULL) && (((*last_literal)+1)+2 <= 128) ) - { - *last_literal += 2; - *(dst++) = c; - *(dst++) = c; - continue; - } - - /* Add repeat run */ - *(dst++) = (guchar)((-nrepeat) & 0xff); - *(dst++) = c; - last_literal = NULL; - continue; - } - /* Search literal bytes */ - nliteral = 1; - nin--; - src++; - - for (;;) { - if (nin <= 0) break; - - if ((nin >= 2) && (src[0] == src[1])) /* A two byte repeat ? */ - break; - - nliteral++; - nin--; - src++; - if (nliteral == 128) break; /* Maximum literal run */ - } - - /* Could be added to last literal run ? */ - if ((last_literal != NULL) && (((*last_literal)+1)+nliteral <= 128)) { - *last_literal += nliteral; - } else { - last_literal = dst; - *(dst++) = (guchar)(nliteral-1); - } - while (nliteral-- > 0) *(dst++) = *(run_start++); - } - *nout = dst - start_dst; -} - -void -PrintPS::ascii85_init(void) -{ - ascii85_len = 0; - ascii85_linewidth = 0; -} - -void -PrintPS::ascii85_flush(SVGOStringStream &os) -{ - char c[5]; - bool const zero_case = (ascii85_buf == 0); - static int const max_linewidth = 75; - - for (int i = 4; i >= 0; i--) { - c[i] = (ascii85_buf % 85) + '!'; - ascii85_buf /= 85; - } - /* check for special case: "!!!!!" becomes "z", but only if not - * at end of data. */ - if (zero_case && (ascii85_len == 4)) { - if (ascii85_linewidth >= max_linewidth) { - os << '\n'; - ascii85_linewidth = 0; - } - os << 'z'; - ascii85_linewidth++; - } else { - for (int i = 0; i < ascii85_len+1; i++) { - if ((ascii85_linewidth >= max_linewidth) && (c[i] != '%')) { - os << '\n'; - ascii85_linewidth = 0; - } - os << c[i]; - ascii85_linewidth++; - } - } - - ascii85_len = 0; - ascii85_buf = 0; -} - -inline void -PrintPS::ascii85_out(guchar byte, SVGOStringStream &os) -{ - if (ascii85_len == 4) - ascii85_flush(os); - - ascii85_buf <<= 8; - ascii85_buf |= byte; - ascii85_len++; -} - -void -PrintPS::ascii85_nout(int n, guchar *uptr, SVGOStringStream &os) -{ - while (n-- > 0) { - ascii85_out(*uptr, os); - uptr++; - } -} - -void -PrintPS::ascii85_done(SVGOStringStream &os) -{ - if (ascii85_len) { - /* zero any unfilled buffer portion, then flush */ - ascii85_buf <<= (8 * (4-ascii85_len)); - ascii85_flush(os); - } - - os << "~>\n"; -} - -unsigned int -PrintPS::print_image(FILE *ofp, guchar *px, unsigned int width, unsigned int height, unsigned int rs, - Geom::Matrix const *transform) -{ - Inkscape::SVGOStringStream os; - - os << "gsave\n"; - - os << "[" << (*transform)[0] << " " - << (*transform)[1] << " " - << (*transform)[2] << " " - << (*transform)[3] << " " - << (*transform)[4] << " " - << (*transform)[5] << "] concat\n"; - - /* Write read image procedure */ - os << "<<\n"; - os << " /ImageType 3\n"; - os << " /InterleaveType 1\n"; - - os << " /MaskDict\n"; - os << " <<\n"; - os << " /ImageType 1\n"; - os << " /Width " << width << "\n"; - os << " /Height " << height << "\n"; - os << " /ImageMatrix " - << "[" << width << " " - << 0 << " " - << 0 << " " - << -((long) height) << " " - << 0 << " " - << height << "]\n"; - os << " /BitsPerComponent 8\n"; - os << " /Decode [1 0]\n"; - os << " >>\n"; - - os << " /DataDict\n"; - os << " <<\n"; - os << " /ImageType 1\n"; - os << " /Width " << width << "\n"; - os << " /Height " << height << "\n"; - os << " /ImageMatrix " - << "[" << width << " " - << 0 << " " - << 0 << " " - << -((long )height) << " " - << 0 << " " - << height << "]\n"; - os << " /DataSource currentfile /ASCII85Decode filter\n"; - os << " /BitsPerComponent 8\n"; - os << " /Decode [0 1 0 1 0 1]\n"; - os << " >>\n"; - - os << ">>\n"; - - /* Allocate buffer for packbits data. Worst case: Less than 1% increase */ - guchar *const packb = (guchar *)g_malloc((4*width * 105)/100+2); - guchar *const plane = (guchar *)g_malloc(4*width); - - os << "image\n"; - - ascii85_init(); - - for (unsigned i = 0; i < height; i++) { - guchar const *const src = px + i * rs; - - guchar const *src_ptr = src; - guchar *plane_ptr = plane; - for (unsigned j = 0; j < width; j++) { - *(plane_ptr++) = *(src_ptr+3); - *(plane_ptr++) = *(src_ptr+0); - *(plane_ptr++) = *(src_ptr+1); - *(plane_ptr++) = *(src_ptr+2); - src_ptr += 4; - } - - ascii85_nout(4*width, plane, os); - } - ascii85_done(os); - - g_free(packb); - g_free(plane); - - os << "grestore\n"; - - fprintf(ofp, "%s", os.str().c_str()); - - return 0; -} - -bool -PrintPS::textToPath(Inkscape::Extension::Print * ext) -{ - return ext->get_param_bool("textToPath"); -} - -/** -* \brief Get "fontEmbedded" param -* \retval TRUE Fonts have to be embedded in the output so that the user might not need to install fonts to have the interpreter read the document correctly -* \retval FALSE No font embedding -* -* Only available for Adobe Type 1 fonts in EPS output till now -*/ -bool -PrintPS::fontEmbedded(Inkscape::Extension::Print * ext) -{ - return ext->get_param_bool("fontEmbedded"); -} - -#include "clear-n_.h" - -void -PrintPS::init(void) -{ - /* SVG in */ - (void) Inkscape::Extension::build_from_mem( - "\n" - "" N_("Postscript Print") "\n" - "" SP_MODULE_KEY_PRINT_PS "\n" - "false\n" - "72\n" - "| lp\n" - "true\n" - "true\n" - "false\n" - "\n" - "", new PrintPS()); -} - - -} /* namespace Internal */ -} /* namespace Extension */ -} /* namespace Inkscape */ - -/* End of GNU GPL code */ - - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/extension/internal/ps.h b/src/extension/internal/ps.h deleted file mode 100644 index 92928b9e4..000000000 --- a/src/extension/internal/ps.h +++ /dev/null @@ -1,123 +0,0 @@ -#ifndef EXTENSION_INTERNAL_PS_H_SEEN -#define EXTENSION_INTERNAL_PS_H_SEEN - -/** \file - * Declaration of PrintPS, the internal module used to do Postscript Printing. - */ -/* - * Authors: - * Lauris Kaplinski - * Ted Gould - * - * Lauris' original code is in the public domain. - * Ted's changes are licensed under the GNU GPL. - */ - -#include -#include "extension/extension.h" -#include "extension/implementation/implementation.h" -#include -#include - -#include - -#include "svg/stringstream.h" - -namespace Inkscape { -namespace Extension { -namespace Internal { - -typedef enum {FONT_TYPE1, FONT_TRUETYPE} FontType; - -class PrintPS : public Inkscape::Extension::Implementation::Implementation { - float _width; - float _height; - FILE * _begin_stream;//stream to print prolog and document setup of EPS, if font embedding - FILE * _stream;//(main) stream to print the (E)PS output, or only the script part following prolog/document setup, if font embedding - - unsigned short _dpi; - bool _bitmap; - std::set _latin1_encoded_fonts; - bool _newlatin1font_proc_defined; - - GTree * _fonts;//maps fonts used in the document, to (value=)"TRUE" only if the font was effectively embedded, "FALSE" if not. - - //map strings of font types to enumeration of int values - std::map _fontTypesMap; - - void print_2geomcurve(SVGOStringStream &os, Geom::Curve const & c ); - void print_pathvector(SVGOStringStream &os, Geom::PathVector const &pathv); - - void print_fill_style(SVGOStringStream &os, SPStyle const *style, NRRect const *pbox); - void print_stroke_style(SVGOStringStream &os, SPStyle const *style); - - char const *PSFontName(SPStyle const *style); - bool embed_t1(SVGOStringStream &os, font_instance* font); - bool embed_font(SVGOStringStream &os, font_instance* font); - - void print_glyphlist(SVGOStringStream &os, font_instance* font, Glib::ustring unistring); - - unsigned int print_image(FILE *ofp, guchar *px, unsigned int width, unsigned int height, unsigned int rs, - Geom::Matrix const *transform); - void compress_packbits(int nin, guchar *src, int *nout, guchar *dst); - - /* ASCII 85 variables */ - guint32 ascii85_buf; - int ascii85_len; - int ascii85_linewidth; - /* ASCII 85 Functions */ - void ascii85_init(void); - void ascii85_flush(SVGOStringStream &os); - inline void ascii85_out(guchar byte, SVGOStringStream &os); - void ascii85_nout(int n, guchar *uptr, SVGOStringStream &os); - void ascii85_done(SVGOStringStream &os); - - -public: - PrintPS(void); - virtual ~PrintPS(void); - - /* Print functions */ - virtual unsigned int setup(Inkscape::Extension::Print *module); - /* - virtual unsigned int set_preview(Inkscape::Extension::Print *module); - */ - - virtual unsigned int begin(Inkscape::Extension::Print *module, SPDocument *doc); - virtual unsigned int finish(Inkscape::Extension::Print *module); - - /* Rendering methods */ - virtual unsigned int bind(Inkscape::Extension::Print *module, Geom::Matrix const *transform, float opacity); - virtual unsigned int release(Inkscape::Extension::Print *module); - virtual unsigned int comment(Inkscape::Extension::Print *module, char const *comment); - virtual unsigned int fill(Inkscape::Extension::Print *module, Geom::PathVector const &pathv, Geom::Matrix const *ctm, SPStyle const *style, - NRRect const *pbox, NRRect const *dbox, NRRect const *bbox); - virtual unsigned int stroke(Inkscape::Extension::Print *module, Geom::PathVector const &pathv, Geom::Matrix const *transform, SPStyle const *style, - NRRect const *pbox, NRRect const *dbox, NRRect const *bbox); - virtual unsigned int image(Inkscape::Extension::Print *module, unsigned char *px, unsigned int w, unsigned int h, unsigned int rs, - Geom::Matrix const *transform, SPStyle const *style); - virtual unsigned int text(Inkscape::Extension::Print *module, char const *text, - Geom::Point p, SPStyle const *style); - - bool textToPath(Inkscape::Extension::Print *ext); - static void init(void); - bool fontEmbedded (Inkscape::Extension::Print * ext); -}; - -} /* namespace Internal */ -} /* namespace Extension */ -} /* namespace Inkscape */ - - -#endif /* !EXTENSION_INTERNAL_PS_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/extension/output.h b/src/extension/output.h index f6f16fb85..b52a96211 100644 --- a/src/extension/output.h +++ b/src/extension/output.h @@ -29,6 +29,7 @@ class Output : public Extension { public: class save_failed {}; /**< Generic failure for an undescribed reason */ + class save_cancelled {}; /**< Saving was cancelled */ class no_extension_found {}; /**< Failed because we couldn't find an extension to match the filename */ Output (Inkscape::XML::Node * in_repr, diff --git a/src/extension/system.cpp b/src/extension/system.cpp index cd70042b6..31cf877a8 100644 --- a/src/extension/system.cpp +++ b/src/extension/system.cpp @@ -218,8 +218,9 @@ save(Extension *key, SPDocument *doc, gchar const *filename, bool setextension, throw Output::save_failed(); } - if (!omod->prefs()) - return; + if (!omod->prefs()) { + throw Output::save_cancelled(); + } gchar *fileName = NULL; if (setextension) { diff --git a/src/file.cpp b/src/file.cpp index d5700bb6e..71a3ddd6c 100644 --- a/src/file.cpp +++ b/src/file.cpp @@ -589,6 +589,9 @@ file_save(Gtk::Window &parentWindow, SPDocument *doc, const Glib::ustring &uri, g_free(text); g_free(safeUri); return FALSE; + } catch (Inkscape::Extension::Output::save_cancelled &e) { + SP_ACTIVE_DESKTOP->messageStack()->flash(Inkscape::ERROR_MESSAGE, _("Document not saved.")); + return FALSE; } catch (Inkscape::Extension::Output::no_overwrite &e) { return sp_file_save_dialog(parentWindow, doc); } @@ -1003,7 +1006,7 @@ file_import(SPDocument *in_doc, const Glib::ustring &uri, bool const saved_pref = prefs->getBool("/options/transform/pattern", true); prefs->setBool("/options/transform/pattern", true); sp_document_ensure_up_to_date(sp_desktop_document(desktop)); - boost::optional sel_bbox = selection->bounds(); + Geom::OptRect sel_bbox = selection->bounds(); if (sel_bbox) { Geom::Point m( desktop->point() - sel_bbox->midpoint() ); sp_selection_move_relative(selection, m); diff --git a/src/filter-chemistry.cpp b/src/filter-chemistry.cpp index 5bb34415d..1681831c2 100644 --- a/src/filter-chemistry.cpp +++ b/src/filter-chemistry.cpp @@ -21,7 +21,7 @@ #include "filter-chemistry.h" #include "filter-enums.h" -#include "sp-feblend.h" +#include "filters/blend.h" #include "sp-filter.h" #include "sp-filter-reference.h" #include "sp-gaussian-blur.h" @@ -319,7 +319,7 @@ new_filter_blend_gaussian_blur (SPDocument *document, const char *blendmode, gdo SPFilter * new_filter_simple_from_item (SPDocument *document, SPItem *item, const char *mode, gdouble radius) { - boost::optional const r = sp_item_bbox_desktop(item, SPItem::GEOMETRIC_BBOX); + Geom::OptRect const r = sp_item_bbox_desktop(item, SPItem::GEOMETRIC_BBOX); double width; double height; @@ -374,7 +374,7 @@ modify_filter_gaussian_blur_from_item(SPDocument *document, SPItem *item, stdDeviation /= expansion; // Get the object size - boost::optional const r = sp_item_bbox_desktop(item, SPItem::GEOMETRIC_BBOX); + Geom::OptRect const r = sp_item_bbox_desktop(item, SPItem::GEOMETRIC_BBOX); double width; double height; if (r) { diff --git a/src/filter-enums.h b/src/filter-enums.h index 87d5c1217..815d439c1 100644 --- a/src/filter-enums.h +++ b/src/filter-enums.h @@ -20,7 +20,7 @@ #include "display/nr-filter-morphology.h" #include "display/nr-filter-turbulence.h" #include "display/nr-filter-types.h" -#include "sp-fedisplacementmap.h" +#include "filters/displacementmap.h" #include "util/enums.h" // Filter primitives diff --git a/src/filters/Makefile_insert b/src/filters/Makefile_insert new file mode 100644 index 000000000..babc72e93 --- /dev/null +++ b/src/filters/Makefile_insert @@ -0,0 +1,64 @@ +## Makefile.am fragment sourced by src/Makefile.am. + +filters/all: filters/libfilters.a + +filters/clean: + rm -f extension/libfilters.a $(extension_libextension_a_OBJECTS) + +filters_libfilters_a_SOURCES = \ + filters/blend.cpp \ + filters/blend-fns.h \ + filters/blend.h \ + filters/colormatrix.cpp \ + filters/colormatrix-fns.h \ + filters/colormatrix.h \ + filters/componenttransfer.cpp \ + filters/componenttransfer-fns.h \ + filters/componenttransfer-funcnode.cpp \ + filters/componenttransfer-funcnode.h \ + filters/componenttransfer.h \ + filters/composite.cpp \ + filters/composite-fns.h \ + filters/composite.h \ + filters/convolvematrix.cpp \ + filters/convolvematrix-fns.h \ + filters/convolvematrix.h \ + filters/diffuselighting.cpp \ + filters/diffuselighting-fns.h \ + filters/diffuselighting.h \ + filters/displacementmap.cpp \ + filters/displacementmap-fns.h \ + filters/displacementmap.h \ + filters/distantlight.cpp \ + filters/distantlight.h \ + filters/flood.cpp \ + filters/flood-fns.h \ + filters/flood.h \ + filters/image.cpp \ + filters/image-fns.h \ + filters/image.h \ + filters/merge.cpp \ + filters/merge-fns.h \ + filters/merge.h \ + filters/mergenode.cpp \ + filters/mergenode.h \ + filters/morphology.cpp \ + filters/morphology-fns.h \ + filters/morphology.h \ + filters/offset.cpp \ + filters/offset-fns.h \ + filters/offset.h \ + filters/pointlight.cpp \ + filters/pointlight.h \ + filters/specularlighting.cpp \ + filters/specularlighting-fns.h \ + filters/specularlighting.h \ + filters/spotlight.cpp \ + filters/spotlight.h \ + filters/tile.cpp \ + filters/tile-fns.h \ + filters/tile.h \ + filters/turbulence.cpp \ + filters/turbulence-fns.h \ + filters/turbulence.h + diff --git a/src/filters/blend-fns.h b/src/filters/blend-fns.h new file mode 100644 index 000000000..f08ed9dd1 --- /dev/null +++ b/src/filters/blend-fns.h @@ -0,0 +1,38 @@ +#ifndef SP_FEBLEND_FNS_H +#define SP_FEBLEND_FNS_H + +/** \file + * Macros and fn declarations related to gaussian blur filter. + */ + +#include +#include + +namespace Inkscape { +namespace XML { +class Node; +} +} + +class SPFeBlend; + +#define SP_TYPE_FEBLEND (sp_feBlend_get_type()) +#define SP_FEBLEND(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEBLEND, SPFeBlend)) +#define SP_FEBLEND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEBLEND, SPFeBlendClass)) +#define SP_IS_FEBLEND(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEBLEND)) +#define SP_IS_FEBLEND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEBLEND)) + +GType sp_feBlend_get_type(); + +#endif /* !SP_FEBLEND_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/blend.cpp b/src/filters/blend.cpp new file mode 100644 index 000000000..8c2d7978e --- /dev/null +++ b/src/filters/blend.cpp @@ -0,0 +1,249 @@ +#define __SP_FEBLEND_CPP__ + +/** \file + * SVG implementation. + * + */ +/* + * Authors: + * Hugo Rodrigues + * Niko Kiirala + * + * Copyright (C) 2006,2007 authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#include "attributes.h" +#include "svg/svg.h" +#include "blend.h" +#include "xml/repr.h" + +#include "display/nr-filter.h" +#include "display/nr-filter-primitive.h" +#include "display/nr-filter-blend.h" +#include "display/nr-filter-types.h" + +/* FeBlend base class */ + +static void sp_feBlend_class_init(SPFeBlendClass *klass); +static void sp_feBlend_init(SPFeBlend *feBlend); + +static void sp_feBlend_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_feBlend_release(SPObject *object); +static void sp_feBlend_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_feBlend_update(SPObject *object, SPCtx *ctx, guint flags); +static Inkscape::XML::Node *sp_feBlend_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +static void sp_feBlend_build_renderer(SPFilterPrimitive *sp_prim, NR::Filter *filter); + +static SPFilterPrimitiveClass *feBlend_parent_class; + +GType +sp_feBlend_get_type() +{ + static GType feBlend_type = 0; + + if (!feBlend_type) { + GTypeInfo feBlend_info = { + sizeof(SPFeBlendClass), + NULL, NULL, + (GClassInitFunc) sp_feBlend_class_init, + NULL, NULL, + sizeof(SPFeBlend), + 16, + (GInstanceInitFunc) sp_feBlend_init, + NULL, /* value_table */ + }; + feBlend_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeBlend", &feBlend_info, (GTypeFlags)0); + } + return feBlend_type; +} + +static void +sp_feBlend_class_init(SPFeBlendClass *klass) +{ + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; + + feBlend_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_feBlend_build; + sp_object_class->release = sp_feBlend_release; + sp_object_class->write = sp_feBlend_write; + sp_object_class->set = sp_feBlend_set; + sp_object_class->update = sp_feBlend_update; + + sp_primitive_class->build_renderer = sp_feBlend_build_renderer; +} + +static void +sp_feBlend_init(SPFeBlend *feBlend) +{ + feBlend->in2 = NR::NR_FILTER_SLOT_NOT_SET; +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPFeBlend variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_feBlend_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) feBlend_parent_class)->build) { + ((SPObjectClass *) feBlend_parent_class)->build(object, document, repr); + } + + /*LOAD ATTRIBUTES FROM REPR HERE*/ + sp_object_read_attr(object, "mode"); + sp_object_read_attr(object, "in2"); +} + +/** + * Drops any allocated memory. + */ +static void +sp_feBlend_release(SPObject *object) +{ + if (((SPObjectClass *) feBlend_parent_class)->release) + ((SPObjectClass *) feBlend_parent_class)->release(object); +} + +static NR::FilterBlendMode sp_feBlend_readmode(gchar const *value) +{ + if (!value) return NR::BLEND_NORMAL; + switch (value[0]) { + case 'n': + if (strncmp(value, "normal", 6) == 0) + return NR::BLEND_NORMAL; + break; + case 'm': + if (strncmp(value, "multiply", 8) == 0) + return NR::BLEND_MULTIPLY; + break; + case 's': + if (strncmp(value, "screen", 6) == 0) + return NR::BLEND_SCREEN; + break; + case 'd': + if (strncmp(value, "darken", 6) == 0) + return NR::BLEND_DARKEN; + break; + case 'l': + if (strncmp(value, "lighten", 7) == 0) + return NR::BLEND_LIGHTEN; + break; + default: + // do nothing by default + break; + } + return NR::BLEND_NORMAL; +} + +/** + * Sets a specific value in the SPFeBlend. + */ +static void +sp_feBlend_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeBlend *feBlend = SP_FEBLEND(object); + (void)feBlend; + + NR::FilterBlendMode mode; + int input; + switch(key) { + /*DEAL WITH SETTING ATTRIBUTES HERE*/ + case SP_ATTR_MODE: + mode = sp_feBlend_readmode(value); + if (mode != feBlend->blend_mode) { + feBlend->blend_mode = mode; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_IN2: + input = sp_filter_primitive_read_in(feBlend, value); + if (input != feBlend->in2) { + feBlend->in2 = input; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + default: + if (((SPObjectClass *) feBlend_parent_class)->set) + ((SPObjectClass *) feBlend_parent_class)->set(object, key, value); + break; + } + +} + +/** + * Receives update notifications. + */ +static void +sp_feBlend_update(SPObject *object, SPCtx *ctx, guint flags) +{ + if (flags & SP_OBJECT_MODIFIED_FLAG) { + sp_object_read_attr(object, "mode"); + sp_object_read_attr(object, "in2"); + } + + if (((SPObjectClass *) feBlend_parent_class)->update) { + ((SPObjectClass *) feBlend_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_feBlend_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + // Inkscape-only object, not copied during an "plain SVG" dump: + if (flags & SP_OBJECT_WRITE_EXT) { + if (repr) { + // is this sane? + // repr->mergeFrom(SP_OBJECT_REPR(object), "id"); + } else { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + } + + if (((SPObjectClass *) feBlend_parent_class)->write) { + ((SPObjectClass *) feBlend_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +static void sp_feBlend_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { + g_assert(primitive != NULL); + g_assert(filter != NULL); + + SPFeBlend *sp_blend = SP_FEBLEND(primitive); + + int primitive_n = filter->add_primitive(NR::NR_FILTER_BLEND); + NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); + NR::FilterBlend *nr_blend = dynamic_cast(nr_primitive); + g_assert(nr_blend != NULL); + + sp_filter_primitive_renderer_common(primitive, nr_primitive); + + nr_blend->set_mode(sp_blend->blend_mode); + nr_blend->set_input(1, sp_blend->in2); +} + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/blend.h b/src/filters/blend.h new file mode 100644 index 000000000..bcb95c3c2 --- /dev/null +++ b/src/filters/blend.h @@ -0,0 +1,49 @@ +#ifndef SP_FEBLEND_H_SEEN +#define SP_FEBLEND_H_SEEN + +/** \file + * SVG implementation, see Blend.cpp. + */ +/* + * Authors: + * Hugo Rodrigues + * Niko Kiirala + * + * Copyright (C) 2006,2007 authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-filter.h" +#include "blend-fns.h" + +#include "display/nr-filter-blend.h" + +/* FeBlend base class */ +class SPFeBlendClass; + +struct SPFeBlend : public SPFilterPrimitive { + /** BLEND ATTRIBUTES HERE */ + NR::FilterBlendMode blend_mode; + int in2; +}; + +struct SPFeBlendClass { + SPFilterPrimitiveClass parent_class; +}; + +GType sp_feBlend_get_type(); + + +#endif /* !SP_FEBLEND_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/colormatrix-fns.h b/src/filters/colormatrix-fns.h new file mode 100644 index 000000000..3a4a8d35c --- /dev/null +++ b/src/filters/colormatrix-fns.h @@ -0,0 +1,38 @@ +#ifndef SP_FECOLORMATRIX_FNS_H +#define SP_FECOLORMATRIX_FNS_H + +/** \file + * Macros and fn declarations related to gaussian blur filter. + */ + +#include +#include + +namespace Inkscape { +namespace XML { +class Node; +} +} + +class SPFeColorMatrix; + +#define SP_TYPE_FECOLORMATRIX (sp_feColorMatrix_get_type()) +#define SP_FECOLORMATRIX(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FECOLORMATRIX, SPFeColorMatrix)) +#define SP_FECOLORMATRIX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FECOLORMATRIX, SPFeColorMatrixClass)) +#define SP_IS_FECOLORMATRIX(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FECOLORMATRIX)) +#define SP_IS_FECOLORMATRIX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FECOLORMATRIX)) + +GType sp_feColorMatrix_get_type(); + +#endif /* !SP_FECOLORMATRIX_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/colormatrix.cpp b/src/filters/colormatrix.cpp new file mode 100644 index 000000000..29c2458e8 --- /dev/null +++ b/src/filters/colormatrix.cpp @@ -0,0 +1,234 @@ +#define __SP_FECOLORMATRIX_CPP__ + +/** \file + * SVG implementation. + * + */ +/* + * Authors: + * Felipe Sanches + * hugo Rodrigues + * + * Copyright (C) 2007 Felipe C. da S. Sanches + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#include "attributes.h" +#include "svg/svg.h" +#include "colormatrix.h" +#include "xml/repr.h" +#include "helper-fns.h" + +#include "display/nr-filter-colormatrix.h" + +/* FeColorMatrix base class */ + +static void sp_feColorMatrix_class_init(SPFeColorMatrixClass *klass); +static void sp_feColorMatrix_init(SPFeColorMatrix *feColorMatrix); + +static void sp_feColorMatrix_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_feColorMatrix_release(SPObject *object); +static void sp_feColorMatrix_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_feColorMatrix_update(SPObject *object, SPCtx *ctx, guint flags); +static Inkscape::XML::Node *sp_feColorMatrix_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +static void sp_feColorMatrix_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); + +static SPFilterPrimitiveClass *feColorMatrix_parent_class; + +GType +sp_feColorMatrix_get_type() +{ + static GType feColorMatrix_type = 0; + + if (!feColorMatrix_type) { + GTypeInfo feColorMatrix_info = { + sizeof(SPFeColorMatrixClass), + NULL, NULL, + (GClassInitFunc) sp_feColorMatrix_class_init, + NULL, NULL, + sizeof(SPFeColorMatrix), + 16, + (GInstanceInitFunc) sp_feColorMatrix_init, + NULL, /* value_table */ + }; + feColorMatrix_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeColorMatrix", &feColorMatrix_info, (GTypeFlags)0); + } + return feColorMatrix_type; +} + +static void +sp_feColorMatrix_class_init(SPFeColorMatrixClass *klass) +{ + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; + + feColorMatrix_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_feColorMatrix_build; + sp_object_class->release = sp_feColorMatrix_release; + sp_object_class->write = sp_feColorMatrix_write; + sp_object_class->set = sp_feColorMatrix_set; + sp_object_class->update = sp_feColorMatrix_update; + sp_primitive_class->build_renderer = sp_feColorMatrix_build_renderer; +} + +static void +sp_feColorMatrix_init(SPFeColorMatrix */*feColorMatrix*/) +{ +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPFeColorMatrix variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_feColorMatrix_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) feColorMatrix_parent_class)->build) { + ((SPObjectClass *) feColorMatrix_parent_class)->build(object, document, repr); + } + + /*LOAD ATTRIBUTES FROM REPR HERE*/ + sp_object_read_attr(object, "type"); + sp_object_read_attr(object, "values"); +} + +/** + * Drops any allocated memory. + */ +static void +sp_feColorMatrix_release(SPObject *object) +{ + if (((SPObjectClass *) feColorMatrix_parent_class)->release) + ((SPObjectClass *) feColorMatrix_parent_class)->release(object); +} + +static NR::FilterColorMatrixType sp_feColorMatrix_read_type(gchar const *value){ + if (!value) return NR::COLORMATRIX_MATRIX; //matrix is default + switch(value[0]){ + case 'm': + if (strcmp(value, "matrix") == 0) return NR::COLORMATRIX_MATRIX; + break; + case 's': + if (strcmp(value, "saturate") == 0) return NR::COLORMATRIX_SATURATE; + break; + case 'h': + if (strcmp(value, "hueRotate") == 0) return NR::COLORMATRIX_HUEROTATE; + break; + case 'l': + if (strcmp(value, "luminanceToAlpha") == 0) return NR::COLORMATRIX_LUMINANCETOALPHA; + break; + } + return NR::COLORMATRIX_MATRIX; //matrix is default +} + +/** + * Sets a specific value in the SPFeColorMatrix. + */ +static void +sp_feColorMatrix_set(SPObject *object, unsigned int key, gchar const *str) +{ + SPFeColorMatrix *feColorMatrix = SP_FECOLORMATRIX(object); + (void)feColorMatrix; + + NR::FilterColorMatrixType read_type; + /*DEAL WITH SETTING ATTRIBUTES HERE*/ + switch(key) { + case SP_ATTR_TYPE: + read_type = sp_feColorMatrix_read_type(str); + if (feColorMatrix->type != read_type){ + feColorMatrix->type = read_type; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_VALUES: + if (str){ + feColorMatrix->values = helperfns_read_vector(str, 20); + feColorMatrix->value = helperfns_read_number(str, HELPERFNS_NO_WARNING); + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + default: + if (((SPObjectClass *) feColorMatrix_parent_class)->set) + ((SPObjectClass *) feColorMatrix_parent_class)->set(object, key, str); + break; + } +} + +/** + * Receives update notifications. + */ +static void +sp_feColorMatrix_update(SPObject *object, SPCtx *ctx, guint flags) +{ + if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | + SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { + + /* do something to trigger redisplay, updates? */ + + } + + if (((SPObjectClass *) feColorMatrix_parent_class)->update) { + ((SPObjectClass *) feColorMatrix_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_feColorMatrix_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + // Inkscape-only object, not copied during an "plain SVG" dump: + if (flags & SP_OBJECT_WRITE_EXT) { + if (repr) { + // is this sane? + //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); + } else { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + } + + if (((SPObjectClass *) feColorMatrix_parent_class)->write) { + ((SPObjectClass *) feColorMatrix_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +static void sp_feColorMatrix_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { + g_assert(primitive != NULL); + g_assert(filter != NULL); + + SPFeColorMatrix *sp_colormatrix = SP_FECOLORMATRIX(primitive); + + int primitive_n = filter->add_primitive(NR::NR_FILTER_COLORMATRIX); + NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); + NR::FilterColorMatrix *nr_colormatrix = dynamic_cast(nr_primitive); + g_assert(nr_colormatrix != NULL); + + sp_filter_primitive_renderer_common(primitive, nr_primitive); + nr_colormatrix->set_type(sp_colormatrix->type); + nr_colormatrix->set_value(sp_colormatrix->value); + nr_colormatrix->set_values(sp_colormatrix->values); +} + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/colormatrix.h b/src/filters/colormatrix.h new file mode 100644 index 000000000..4b9eda1a7 --- /dev/null +++ b/src/filters/colormatrix.h @@ -0,0 +1,49 @@ +#ifndef SP_FECOLORMATRIX_H_SEEN +#define SP_FECOLORMATRIX_H_SEEN + +/** \file + * SVG implementation, see ColorMatrix.cpp. + */ +/* + * Authors: + * Hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-filter.h" +#include "colormatrix-fns.h" +#include "display/nr-filter-colormatrix.h" +#include + +/* FeColorMatrix base class */ +class SPFeColorMatrixClass; + +struct SPFeColorMatrix : public SPFilterPrimitive { + /** COLORMATRIX ATTRIBUTES HERE */ + NR::FilterColorMatrixType type; + gdouble value; + std::vector values; +}; + +struct SPFeColorMatrixClass { + SPFilterPrimitiveClass parent_class; +}; + +GType sp_feColorMatrix_get_type(); + + +#endif /* !SP_FECOLORMATRIX_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/componenttransfer-fns.h b/src/filters/componenttransfer-fns.h new file mode 100644 index 000000000..49983770a --- /dev/null +++ b/src/filters/componenttransfer-fns.h @@ -0,0 +1,38 @@ +#ifndef SP_FECOMPONENTTRANSFER_FNS_H +#define SP_FECOMPONENTTRANSFER_FNS_H + +/** \file + * Macros and fn declarations related to gaussian blur filter. + */ + +#include +#include + +namespace Inkscape { +namespace XML { +class Node; +} +} + +class SPFeComponentTransfer; + +#define SP_TYPE_FECOMPONENTTRANSFER (sp_feComponentTransfer_get_type()) +#define SP_FECOMPONENTTRANSFER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FECOMPONENTTRANSFER, SPFeComponentTransfer)) +#define SP_FECOMPONENTTRANSFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FECOMPONENTTRANSFER, SPFeComponentTransferClass)) +#define SP_IS_FECOMPONENTTRANSFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FECOMPONENTTRANSFER)) +#define SP_IS_FECOMPONENTTRANSFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FECOMPONENTTRANSFER)) + +GType sp_feComponentTransfer_get_type(); + +#endif /* !SP_FECOMPONENTTRANSFER_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/componenttransfer-funcnode.cpp b/src/filters/componenttransfer-funcnode.cpp new file mode 100644 index 000000000..72a4e8744 --- /dev/null +++ b/src/filters/componenttransfer-funcnode.cpp @@ -0,0 +1,345 @@ +#define __SP_FEFUNCNODE_CPP__ + +/** \file + * SVG , , and implementations. + */ +/* + * Authors: + * Hugo Rodrigues + * Niko Kiirala + * Felipe Corrêa da Silva Sanches + * + * Copyright (C) 2006, 2007, 2008 Authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#include "attributes.h" +#include "document.h" +#include "componenttransfer.h" +#include "componenttransfer-funcnode.h" +#include "display/nr-filter-component-transfer.h" +#include "xml/repr.h" +#include "helper-fns.h" + +#define SP_MACROS_SILENT +#include "macros.h" + +/* FeFuncNode class */ + +static void sp_fefuncnode_class_init(SPFeFuncNodeClass *klass); +static void sp_fefuncnode_init(SPFeFuncNode *fefuncnode); + +static void sp_fefuncnode_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_fefuncnode_release(SPObject *object); +static void sp_fefuncnode_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_fefuncnode_update(SPObject *object, SPCtx *ctx, guint flags); +static Inkscape::XML::Node *sp_fefuncnode_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); + +static SPObjectClass *feFuncNode_parent_class; + +GType +sp_fefuncR_get_type() +{ + static GType fefuncnode_type = 0; + + if (!fefuncnode_type) { + GTypeInfo fefuncnode_info = { + sizeof(SPFeFuncNodeClass), + NULL, NULL, + (GClassInitFunc) sp_fefuncnode_class_init, + NULL, NULL, + sizeof(SPFeFuncNode), + 16, + (GInstanceInitFunc) sp_fefuncnode_init, + NULL, /* value_table */ + }; + fefuncnode_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeFuncR", &fefuncnode_info, (GTypeFlags)0); + } + return fefuncnode_type; +} + +GType +sp_fefuncG_get_type() +{ + static GType fefuncnode_type = 0; + + if (!fefuncnode_type) { + GTypeInfo fefuncnode_info = { + sizeof(SPFeFuncNodeClass), + NULL, NULL, + (GClassInitFunc) sp_fefuncnode_class_init, + NULL, NULL, + sizeof(SPFeFuncNode), + 16, + (GInstanceInitFunc) sp_fefuncnode_init, + NULL, /* value_table */ + }; + fefuncnode_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeFuncG", &fefuncnode_info, (GTypeFlags)0); + } + return fefuncnode_type; +} + +GType +sp_fefuncB_get_type() +{ + static GType fefuncnode_type = 0; + + if (!fefuncnode_type) { + GTypeInfo fefuncnode_info = { + sizeof(SPFeFuncNodeClass), + NULL, NULL, + (GClassInitFunc) sp_fefuncnode_class_init, + NULL, NULL, + sizeof(SPFeFuncNode), + 16, + (GInstanceInitFunc) sp_fefuncnode_init, + NULL, /* value_table */ + }; + fefuncnode_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeFuncB", &fefuncnode_info, (GTypeFlags)0); + } + return fefuncnode_type; +} + +GType +sp_fefuncA_get_type() +{ + static GType fefuncnode_type = 0; + + if (!fefuncnode_type) { + GTypeInfo fefuncnode_info = { + sizeof(SPFeFuncNodeClass), + NULL, NULL, + (GClassInitFunc) sp_fefuncnode_class_init, + NULL, NULL, + sizeof(SPFeFuncNode), + 16, + (GInstanceInitFunc) sp_fefuncnode_init, + NULL, /* value_table */ + }; + fefuncnode_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeFuncA", &fefuncnode_info, (GTypeFlags)0); + } + return fefuncnode_type; +} + +static void +sp_fefuncnode_class_init(SPFeFuncNodeClass *klass) +{ + + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + + feFuncNode_parent_class = (SPObjectClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_fefuncnode_build; + sp_object_class->release = sp_fefuncnode_release; + sp_object_class->write = sp_fefuncnode_write; + sp_object_class->set = sp_fefuncnode_set; + sp_object_class->update = sp_fefuncnode_update; +} + +static void +sp_fefuncnode_init(SPFeFuncNode *fefuncnode) +{ + fefuncnode->type = NR::COMPONENTTRANSFER_TYPE_IDENTITY; + //fefuncnode->tableValues = NULL; + fefuncnode->slope = 1; + fefuncnode->intercept = 0; + fefuncnode->amplitude = 1; + fefuncnode->exponent = 1; + fefuncnode->offset = 0; +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPDistantLight variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_fefuncnode_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) feFuncNode_parent_class)->build) { + ((SPObjectClass *) feFuncNode_parent_class)->build(object, document, repr); + } + + //Read values of key attributes from XML nodes into object. + sp_object_read_attr(object, "type"); + sp_object_read_attr(object, "tableValues"); + sp_object_read_attr(object, "slope"); + sp_object_read_attr(object, "intercept"); + sp_object_read_attr(object, "amplitude"); + sp_object_read_attr(object, "exponent"); + sp_object_read_attr(object, "offset"); + + +//is this necessary? + sp_document_add_resource(document, "fefuncnode", object); //maybe feFuncR, fefuncG, feFuncB and fefuncA ? +} + +/** + * Drops any allocated memory. + */ +static void +sp_fefuncnode_release(SPObject *object) +{ + //SPFeFuncNode *fefuncnode = SP_FEFUNCNODE(object); + + if (SP_OBJECT_DOCUMENT(object)) { + /* Unregister ourselves */ + sp_document_remove_resource(SP_OBJECT_DOCUMENT(object), "fefuncnode", SP_OBJECT(object)); + } + +//TODO: release resources here +} + +static NR::FilterComponentTransferType sp_feComponenttransfer_read_type(gchar const *value){ + if (!value) return NR::COMPONENTTRANSFER_TYPE_ERROR; //type attribute is REQUIRED. + switch(value[0]){ + case 'i': + if (strncmp(value, "identity", 8) == 0) return NR::COMPONENTTRANSFER_TYPE_IDENTITY; + break; + case 't': + if (strncmp(value, "table", 5) == 0) return NR::COMPONENTTRANSFER_TYPE_TABLE; + break; + case 'd': + if (strncmp(value, "discrete", 8) == 0) return NR::COMPONENTTRANSFER_TYPE_DISCRETE; + break; + case 'l': + if (strncmp(value, "linear", 6) == 0) return NR::COMPONENTTRANSFER_TYPE_LINEAR; + break; + case 'g': + if (strncmp(value, "gamma", 5) == 0) return NR::COMPONENTTRANSFER_TYPE_GAMMA; + break; + } + return NR::COMPONENTTRANSFER_TYPE_ERROR; //type attribute is REQUIRED. +} + +/** + * Sets a specific value in the SPFeFuncNode. + */ +static void +sp_fefuncnode_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeFuncNode *feFuncNode = SP_FEFUNCNODE(object); + NR::FilterComponentTransferType type; + double read_num; + switch(key) { + case SP_ATTR_TYPE: + type = sp_feComponenttransfer_read_type(value); + if(type != feFuncNode->type) { + feFuncNode->type = type; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_TABLEVALUES: + if (value){ + feFuncNode->tableValues = helperfns_read_vector(value); + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_SLOPE: + read_num = helperfns_read_number(value); + if (read_num != feFuncNode->slope) { + feFuncNode->slope = read_num; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_INTERCEPT: + read_num = helperfns_read_number(value); + if (read_num != feFuncNode->intercept) { + feFuncNode->intercept = read_num; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_AMPLITUDE: + read_num = helperfns_read_number(value); + if (read_num != feFuncNode->amplitude) { + feFuncNode->amplitude = read_num; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_EXPONENT: + read_num = helperfns_read_number(value); + if (read_num != feFuncNode->exponent) { + feFuncNode->exponent = read_num; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_OFFSET: + read_num = helperfns_read_number(value); + if (read_num != feFuncNode->offset) { + feFuncNode->offset = read_num; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + default: + if (((SPObjectClass *) feFuncNode_parent_class)->set) + ((SPObjectClass *) feFuncNode_parent_class)->set(object, key, value); + break; + } +} + +/** + * * Receives update notifications. + * */ +static void +sp_fefuncnode_update(SPObject *object, SPCtx *ctx, guint flags) +{ + SPFeFuncNode *feFuncNode = SP_FEFUNCNODE(object); + (void)feFuncNode; + + if (flags & SP_OBJECT_MODIFIED_FLAG) { + /* do something to trigger redisplay, updates? */ + //TODO + //sp_object_read_attr(object, "azimuth"); + //sp_object_read_attr(object, "elevation"); + } + + if (((SPObjectClass *) feFuncNode_parent_class)->update) { + ((SPObjectClass *) feFuncNode_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_fefuncnode_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + SPFeFuncNode *fefuncnode = SP_FEFUNCNODE(object); + + if (!repr) { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + + (void)fefuncnode; + /* +TODO: I'm not sure what to do here... + + if (fefuncnode->azimuth_set) + sp_repr_set_css_double(repr, "azimuth", fefuncnode->azimuth); + if (fefuncnode->elevation_set) + sp_repr_set_css_double(repr, "elevation", fefuncnode->elevation);*/ + + if (((SPObjectClass *) feFuncNode_parent_class)->write) { + ((SPObjectClass *) feFuncNode_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/componenttransfer-funcnode.h b/src/filters/componenttransfer-funcnode.h new file mode 100644 index 000000000..2f0b2fc28 --- /dev/null +++ b/src/filters/componenttransfer-funcnode.h @@ -0,0 +1,72 @@ +#ifndef SP_FECOMPONENTTRANSFER_FUNCNODE_H_SEEN +#define SP_FECOMPONENTTRANSFER_FUNCNODE_H_SEEN + +/** \file + * SVG implementation, see sp-filter.cpp. + */ +/* + * Authors: + * Hugo Rodrigues + * Niko Kiirala + * Felipe Corrêa da Silva Sanches + * + * Copyright (C) 2006,2007 Authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-object.h" +#include "display/nr-filter-component-transfer.h" + +#define SP_TYPE_FEFUNCR (sp_fefuncR_get_type()) +#define SP_TYPE_FEFUNCG (sp_fefuncG_get_type()) +#define SP_TYPE_FEFUNCB (sp_fefuncB_get_type()) +#define SP_TYPE_FEFUNCA (sp_fefuncA_get_type()) + +#define SP_IS_FEFUNCR(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEFUNCR)) +#define SP_IS_FEFUNCG(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEFUNCG)) +#define SP_IS_FEFUNCB(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEFUNCB)) +#define SP_IS_FEFUNCA(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEFUNCA)) + +#define SP_FEFUNCNODE(obj) (SP_IS_FEFUNCR(obj) ? G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEFUNCR, SPFeFuncNode) : (SP_IS_FEFUNCG(obj) ? G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEFUNCG, SPFeFuncNode) : (SP_IS_FEFUNCB(obj) ? G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEFUNCB, SPFeFuncNode):(SP_IS_FEFUNCA(obj) ? G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEFUNCA, SPFeFuncNode): NULL)))) + +#define SP_FEFUNCNODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEFUNCNODE, SPFeFuncNodeClass)) + +#define SP_IS_FEFUNCNODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEFUNCNODE)) + +/* Component Transfer funcNode class */ + +class SPFeFuncNode; +class SPFeFuncNodeClass; + +struct SPFeFuncNode : public SPObject { + NR::FilterComponentTransferType type; + std::vector tableValues; + double slope; + double intercept; + double amplitude; + double exponent; + double offset; +}; + +struct SPFeFuncNodeClass { + SPObjectClass parent_class; +}; + +GType sp_fefuncR_get_type(); +GType sp_fefuncG_get_type(); +GType sp_fefuncB_get_type(); +GType sp_fefuncA_get_type(); + +#endif /* !SP_FECOMPONENTTRANSFER_FUNCNODE_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/componenttransfer.cpp b/src/filters/componenttransfer.cpp new file mode 100644 index 000000000..09ea48bc6 --- /dev/null +++ b/src/filters/componenttransfer.cpp @@ -0,0 +1,257 @@ +#define __SP_FECOMPONENTTRANSFER_CPP__ + +/** \file + * SVG implementation. + * + */ +/* + * Authors: + * hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#include "document.h" +#include "attributes.h" +#include "svg/svg.h" +#include "componenttransfer.h" +#include "componenttransfer-funcnode.h" +#include "xml/repr.h" +//#include "display/nr-filter-component-transfer.h" + +/* FeComponentTransfer base class */ + +static void sp_feComponentTransfer_class_init(SPFeComponentTransferClass *klass); +static void sp_feComponentTransfer_init(SPFeComponentTransfer *feComponentTransfer); + +static void sp_feComponentTransfer_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_feComponentTransfer_release(SPObject *object); +static void sp_feComponentTransfer_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_feComponentTransfer_update(SPObject *object, SPCtx *ctx, guint flags); +static void sp_feComponentTransfer_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); +static void sp_feComponentTransfer_remove_child(SPObject *object, Inkscape::XML::Node *child); +static void sp_feComponentTransfer_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref); +static Inkscape::XML::Node *sp_feComponentTransfer_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +static SPFilterPrimitiveClass *feComponentTransfer_parent_class; + +GType +sp_feComponentTransfer_get_type() +{ + static GType feComponentTransfer_type = 0; + + if (!feComponentTransfer_type) { + GTypeInfo feComponentTransfer_info = { + sizeof(SPFeComponentTransferClass), + NULL, NULL, + (GClassInitFunc) sp_feComponentTransfer_class_init, + NULL, NULL, + sizeof(SPFeComponentTransfer), + 16, + (GInstanceInitFunc) sp_feComponentTransfer_init, + NULL, /* value_table */ + }; + feComponentTransfer_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeComponentTransfer", &feComponentTransfer_info, (GTypeFlags)0); + } + return feComponentTransfer_type; +} + +static void +sp_feComponentTransfer_class_init(SPFeComponentTransferClass *klass) +{ + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; + feComponentTransfer_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_feComponentTransfer_build; + sp_object_class->release = sp_feComponentTransfer_release; + sp_object_class->write = sp_feComponentTransfer_write; + sp_object_class->set = sp_feComponentTransfer_set; + sp_object_class->update = sp_feComponentTransfer_update; + sp_object_class->child_added = sp_feComponentTransfer_child_added; + sp_object_class->remove_child = sp_feComponentTransfer_remove_child; + + sp_primitive_class->build_renderer = sp_feComponentTransfer_build_renderer; +} + +static void +sp_feComponentTransfer_init(SPFeComponentTransfer */*feComponentTransfer*/) +{} + +/** + * Reads the Inkscape::XML::Node, and initializes SPFeComponentTransfer variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_feComponentTransfer_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) feComponentTransfer_parent_class)->build) { + ((SPObjectClass *) feComponentTransfer_parent_class)->build(object, document, repr); + } + + /*LOAD ATTRIBUTES FROM REPR HERE*/ + + //do we need this? + sp_document_add_resource(document, "feComponentTransfer", object); +} + +static void sp_feComponentTransfer_children_modified(SPFeComponentTransfer *sp_componenttransfer) +{ + if (sp_componenttransfer->renderer) { + SPObject* node = sp_componenttransfer->children; + for(;node;node=node->next){ + int i=4; + if (SP_IS_FEFUNCR(node)) i=0; + if (SP_IS_FEFUNCG(node)) i=1; + if (SP_IS_FEFUNCB(node)) i=2; + if (SP_IS_FEFUNCA(node)) i=3; + if (i==4) break; + sp_componenttransfer->renderer->type[i] = ((SPFeFuncNode *) node)->type; + sp_componenttransfer->renderer->tableValues[i] = ((SPFeFuncNode *) node)->tableValues; + sp_componenttransfer->renderer->slope[i] = ((SPFeFuncNode *) node)->slope; + sp_componenttransfer->renderer->intercept[i] = ((SPFeFuncNode *) node)->intercept; + sp_componenttransfer->renderer->amplitude[i] = ((SPFeFuncNode *) node)->amplitude; + sp_componenttransfer->renderer->exponent[i] = ((SPFeFuncNode *) node)->exponent; + sp_componenttransfer->renderer->offset[i] = ((SPFeFuncNode *) node)->offset; + } + } +} + +/** + * Callback for child_added event. + */ +static void +sp_feComponentTransfer_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref) +{ + g_warning("child_added"); + SPFeComponentTransfer *f = SP_FECOMPONENTTRANSFER(object); + + if (((SPObjectClass *) feComponentTransfer_parent_class)->child_added) + (* ((SPObjectClass *) feComponentTransfer_parent_class)->child_added)(object, child, ref); + + sp_feComponentTransfer_children_modified(f); + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); +} + + +/** + * Callback for remove_child event. + */ +static void +sp_feComponentTransfer_remove_child(SPObject *object, Inkscape::XML::Node *child) +{ + SPFeComponentTransfer *f = SP_FECOMPONENTTRANSFER(object); + + if (((SPObjectClass *) feComponentTransfer_parent_class)->remove_child) + (* ((SPObjectClass *) feComponentTransfer_parent_class)->remove_child)(object, child); + + sp_feComponentTransfer_children_modified(f); + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); +} + +/** + * Drops any allocated memory. + */ +static void +sp_feComponentTransfer_release(SPObject *object) +{ + if (((SPObjectClass *) feComponentTransfer_parent_class)->release) + ((SPObjectClass *) feComponentTransfer_parent_class)->release(object); +} + +/** + * Sets a specific value in the SPFeComponentTransfer. + */ +static void +sp_feComponentTransfer_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeComponentTransfer *feComponentTransfer = SP_FECOMPONENTTRANSFER(object); + (void)feComponentTransfer; + + switch(key) { + /*DEAL WITH SETTING ATTRIBUTES HERE*/ + default: + if (((SPObjectClass *) feComponentTransfer_parent_class)->set) + ((SPObjectClass *) feComponentTransfer_parent_class)->set(object, key, value); + break; + } + +} + +/** + * Receives update notifications. + */ +static void +sp_feComponentTransfer_update(SPObject *object, SPCtx *ctx, guint flags) +{ + if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | + SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { + + /* do something to trigger redisplay, updates? */ + + } + + if (((SPObjectClass *) feComponentTransfer_parent_class)->update) { + ((SPObjectClass *) feComponentTransfer_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_feComponentTransfer_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + // Inkscape-only object, not copied during an "plain SVG" dump: + if (flags & SP_OBJECT_WRITE_EXT) { + if (repr) { + // is this sane? + //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); + } else { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + } + + if (((SPObjectClass *) feComponentTransfer_parent_class)->write) { + ((SPObjectClass *) feComponentTransfer_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +static void sp_feComponentTransfer_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { + g_assert(primitive != NULL); + g_assert(filter != NULL); + + SPFeComponentTransfer *sp_componenttransfer = SP_FECOMPONENTTRANSFER(primitive); + + int primitive_n = filter->add_primitive(NR::NR_FILTER_COMPONENTTRANSFER); + NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); + NR::FilterComponentTransfer *nr_componenttransfer = dynamic_cast(nr_primitive); + g_assert(nr_componenttransfer != NULL); + + sp_componenttransfer->renderer = nr_componenttransfer; + sp_filter_primitive_renderer_common(primitive, nr_primitive); + + + sp_feComponentTransfer_children_modified(sp_componenttransfer); //do we need it?! +} + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/componenttransfer.h b/src/filters/componenttransfer.h new file mode 100644 index 000000000..515825d65 --- /dev/null +++ b/src/filters/componenttransfer.h @@ -0,0 +1,48 @@ +#ifndef SP_FECOMPONENTTRANSFER_H_SEEN +#define SP_FECOMPONENTTRANSFER_H_SEEN + +/** \file + * SVG implementation, see ComponentTransfer.cpp. + */ +/* + * Authors: + * Hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-filter.h" +#include "componenttransfer-fns.h" +#include "display/nr-filter-component-transfer.h" +#include + +/* FeComponentTransfer base class */ +class SPFeComponentTransferClass; + +struct SPFeComponentTransfer : public SPFilterPrimitive { + /** COMPONENTTRANSFER ATTRIBUTES HERE */ + + NR::FilterComponentTransfer *renderer; +}; + +struct SPFeComponentTransferClass { + SPFilterPrimitiveClass parent_class; +}; + +GType sp_feComponentTransfer_get_type(); + + +#endif /* !SP_FECOMPONENTTRANSFER_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/composite-fns.h b/src/filters/composite-fns.h new file mode 100644 index 000000000..c79cb17bb --- /dev/null +++ b/src/filters/composite-fns.h @@ -0,0 +1,38 @@ +#ifndef SP_FECOMPOSITE_FNS_H +#define SP_FECOMPOSITE_FNS_H + +/** \file + * Macros and fn declarations related to gaussian blur filter. + */ + +#include +#include + +namespace Inkscape { +namespace XML { +class Node; +} +} + +class SPFeComposite; + +#define SP_TYPE_FECOMPOSITE (sp_feComposite_get_type()) +#define SP_FECOMPOSITE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FECOMPOSITE, SPFeComposite)) +#define SP_FECOMPOSITE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FECOMPOSITE, SPFeCompositeClass)) +#define SP_IS_FECOMPOSITE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FECOMPOSITE)) +#define SP_IS_FECOMPOSITE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FECOMPOSITE)) + +GType sp_feComposite_get_type(); + +#endif /* !SP_FECOMPOSITE_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/composite.cpp b/src/filters/composite.cpp new file mode 100644 index 000000000..61658ba9e --- /dev/null +++ b/src/filters/composite.cpp @@ -0,0 +1,283 @@ +#define __SP_FECOMPOSITE_CPP__ + +/** \file + * SVG implementation. + * + */ +/* + * Authors: + * hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "attributes.h" +#include "svg/svg.h" +#include "composite.h" +#include "helper-fns.h" +#include "xml/repr.h" +#include "display/nr-filter-composite.h" + +/* FeComposite base class */ + +static void sp_feComposite_class_init(SPFeCompositeClass *klass); +static void sp_feComposite_init(SPFeComposite *feComposite); + +static void sp_feComposite_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_feComposite_release(SPObject *object); +static void sp_feComposite_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_feComposite_update(SPObject *object, SPCtx *ctx, guint flags); +static Inkscape::XML::Node *sp_feComposite_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +static void sp_feComposite_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); + +static SPFilterPrimitiveClass *feComposite_parent_class; + +GType +sp_feComposite_get_type() +{ + static GType feComposite_type = 0; + + if (!feComposite_type) { + GTypeInfo feComposite_info = { + sizeof(SPFeCompositeClass), + NULL, NULL, + (GClassInitFunc) sp_feComposite_class_init, + NULL, NULL, + sizeof(SPFeComposite), + 16, + (GInstanceInitFunc) sp_feComposite_init, + NULL, /* value_table */ + }; + feComposite_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeComposite", &feComposite_info, (GTypeFlags)0); + } + return feComposite_type; +} + +static void +sp_feComposite_class_init(SPFeCompositeClass *klass) +{ + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; + + feComposite_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_feComposite_build; + sp_object_class->release = sp_feComposite_release; + sp_object_class->write = sp_feComposite_write; + sp_object_class->set = sp_feComposite_set; + sp_object_class->update = sp_feComposite_update; + + sp_primitive_class->build_renderer = sp_feComposite_build_renderer; +} + +static void +sp_feComposite_init(SPFeComposite *feComposite) +{ + feComposite->composite_operator = COMPOSITE_DEFAULT; + feComposite->k1 = 0; + feComposite->k2 = 0; + feComposite->k3 = 0; + feComposite->k4 = 0; + feComposite->in2 = NR::NR_FILTER_SLOT_NOT_SET; +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPFeComposite variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_feComposite_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) feComposite_parent_class)->build) { + ((SPObjectClass *) feComposite_parent_class)->build(object, document, repr); + } + + SPFeComposite *composite = SP_FECOMPOSITE(object); + + sp_object_read_attr(object, "operator"); + if (composite->composite_operator == COMPOSITE_ARITHMETIC) { + sp_object_read_attr(object, "k1"); + sp_object_read_attr(object, "k2"); + sp_object_read_attr(object, "k3"); + sp_object_read_attr(object, "k4"); + } + sp_object_read_attr(object, "in2"); +} + +/** + * Drops any allocated memory. + */ +static void +sp_feComposite_release(SPObject *object) +{ + if (((SPObjectClass *) feComposite_parent_class)->release) + ((SPObjectClass *) feComposite_parent_class)->release(object); +} + +static FeCompositeOperator +sp_feComposite_read_operator(gchar const *value) { + if (!value) return COMPOSITE_DEFAULT; + + if (strcmp(value, "over") == 0) return COMPOSITE_OVER; + else if (strcmp(value, "in") == 0) return COMPOSITE_IN; + else if (strcmp(value, "out") == 0) return COMPOSITE_OUT; + else if (strcmp(value, "atop") == 0) return COMPOSITE_ATOP; + else if (strcmp(value, "xor") == 0) return COMPOSITE_XOR; + else if (strcmp(value, "arithmetic") == 0) return COMPOSITE_ARITHMETIC; + return COMPOSITE_DEFAULT; +} + +/** + * Sets a specific value in the SPFeComposite. + */ +static void +sp_feComposite_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeComposite *feComposite = SP_FECOMPOSITE(object); + (void)feComposite; + + int input; + FeCompositeOperator op; + double k_n; + switch(key) { + /*DEAL WITH SETTING ATTRIBUTES HERE*/ + case SP_ATTR_OPERATOR: + op = sp_feComposite_read_operator(value); + if (op != feComposite->composite_operator) { + feComposite->composite_operator = op; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + + case SP_ATTR_K1: + k_n = helperfns_read_number(value); + if (k_n != feComposite->k1) { + feComposite->k1 = k_n; + if (feComposite->composite_operator == COMPOSITE_ARITHMETIC) + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + + case SP_ATTR_K2: + k_n = helperfns_read_number(value); + if (k_n != feComposite->k2) { + feComposite->k2 = k_n; + if (feComposite->composite_operator == COMPOSITE_ARITHMETIC) + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + + case SP_ATTR_K3: + k_n = helperfns_read_number(value); + if (k_n != feComposite->k3) { + feComposite->k3 = k_n; + if (feComposite->composite_operator == COMPOSITE_ARITHMETIC) + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + + case SP_ATTR_K4: + k_n = helperfns_read_number(value); + if (k_n != feComposite->k4) { + feComposite->k4 = k_n; + if (feComposite->composite_operator == COMPOSITE_ARITHMETIC) + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + + case SP_ATTR_IN2: + input = sp_filter_primitive_read_in(feComposite, value); + if (input != feComposite->in2) { + feComposite->in2 = input; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + + default: + if (((SPObjectClass *) feComposite_parent_class)->set) + ((SPObjectClass *) feComposite_parent_class)->set(object, key, value); + break; + } + +} + +/** + * Receives update notifications. + */ +static void +sp_feComposite_update(SPObject *object, SPCtx *ctx, guint flags) +{ + if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | + SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { + + /* do something to trigger redisplay, updates? */ + + } + + if (((SPObjectClass *) feComposite_parent_class)->update) { + ((SPObjectClass *) feComposite_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_feComposite_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + // Inkscape-only object, not copied during an "plain SVG" dump: + if (flags & SP_OBJECT_WRITE_EXT) { + if (repr) { + // is this sane? + //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); + } else { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + } + + if (((SPObjectClass *) feComposite_parent_class)->write) { + ((SPObjectClass *) feComposite_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +static void sp_feComposite_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { + g_assert(primitive != NULL); + g_assert(filter != NULL); + + SPFeComposite *sp_composite = SP_FECOMPOSITE(primitive); + + int primitive_n = filter->add_primitive(NR::NR_FILTER_COMPOSITE); + NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); + NR::FilterComposite *nr_composite = dynamic_cast(nr_primitive); + g_assert(nr_composite != NULL); + + sp_filter_primitive_renderer_common(primitive, nr_primitive); + + nr_composite->set_operator(sp_composite->composite_operator); + nr_composite->set_input(1, sp_composite->in2); + if (sp_composite->composite_operator == COMPOSITE_ARITHMETIC) { + nr_composite->set_arithmetic(sp_composite->k1, sp_composite->k2, + sp_composite->k3, sp_composite->k4); + } +} + + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/composite.h b/src/filters/composite.h new file mode 100644 index 000000000..095d7616d --- /dev/null +++ b/src/filters/composite.h @@ -0,0 +1,59 @@ +#ifndef SP_FECOMPOSITE_H_SEEN +#define SP_FECOMPOSITE_H_SEEN + +/** \file + * SVG implementation, see Composite.cpp. + */ +/* + * Authors: + * Hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-filter.h" +#include "composite-fns.h" + +enum FeCompositeOperator { + // Default value is 'over', but let's distinquish specifying the + // default and implicitely using the default + COMPOSITE_DEFAULT, + COMPOSITE_OVER, + COMPOSITE_IN, + COMPOSITE_OUT, + COMPOSITE_ATOP, + COMPOSITE_XOR, + COMPOSITE_ARITHMETIC, + COMPOSITE_ENDOPERATOR +}; + +/* FeComposite base class */ +class SPFeCompositeClass; + +struct SPFeComposite : public SPFilterPrimitive { + FeCompositeOperator composite_operator; + double k1, k2, k3, k4; + int in2; +}; + +struct SPFeCompositeClass { + SPFilterPrimitiveClass parent_class; +}; + +GType sp_feComposite_get_type(); + + +#endif /* !SP_FECOMPOSITE_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/convolvematrix-fns.h b/src/filters/convolvematrix-fns.h new file mode 100644 index 000000000..76baf7f41 --- /dev/null +++ b/src/filters/convolvematrix-fns.h @@ -0,0 +1,38 @@ +#ifndef SP_FECONVOLVEMATRIX_FNS_H +#define SP_FECONVOLVEMATRIX_FNS_H + +/** \file + * Macros and fn declarations related to gaussian blur filter. + */ + +#include +#include + +namespace Inkscape { +namespace XML { +class Node; +} +} + +class SPFeConvolveMatrix; + +#define SP_TYPE_FECONVOLVEMATRIX (sp_feConvolveMatrix_get_type()) +#define SP_FECONVOLVEMATRIX(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FECONVOLVEMATRIX, SPFeConvolveMatrix)) +#define SP_FECONVOLVEMATRIX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FECONVOLVEMATRIX, SPFeConvolveMatrixClass)) +#define SP_IS_FECONVOLVEMATRIX(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FECONVOLVEMATRIX)) +#define SP_IS_FECONVOLVEMATRIX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FECONVOLVEMATRIX)) + +GType sp_feConvolveMatrix_get_type(); + +#endif /* !SP_FECONVOLVEMATRIX_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/convolvematrix.cpp b/src/filters/convolvematrix.cpp new file mode 100644 index 000000000..a930bc4e7 --- /dev/null +++ b/src/filters/convolvematrix.cpp @@ -0,0 +1,338 @@ +#define __SP_FECONVOLVEMATRIX_CPP__ + +/** \file + * SVG implementation. + * + */ +/* + * Authors: + * Felipe Corrêa da Silva Sanches + * hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#include +#include "attributes.h" +#include "svg/svg.h" +#include "convolvematrix.h" +#include "helper-fns.h" +#include "xml/repr.h" +#include "display/nr-filter-convolve-matrix.h" +#include + +/* FeConvolveMatrix base class */ + +static void sp_feConvolveMatrix_class_init(SPFeConvolveMatrixClass *klass); +static void sp_feConvolveMatrix_init(SPFeConvolveMatrix *feConvolveMatrix); + +static void sp_feConvolveMatrix_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_feConvolveMatrix_release(SPObject *object); +static void sp_feConvolveMatrix_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_feConvolveMatrix_update(SPObject *object, SPCtx *ctx, guint flags); +static Inkscape::XML::Node *sp_feConvolveMatrix_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +static void sp_feConvolveMatrix_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); + +static SPFilterPrimitiveClass *feConvolveMatrix_parent_class; + +GType +sp_feConvolveMatrix_get_type() +{ + static GType feConvolveMatrix_type = 0; + + if (!feConvolveMatrix_type) { + GTypeInfo feConvolveMatrix_info = { + sizeof(SPFeConvolveMatrixClass), + NULL, NULL, + (GClassInitFunc) sp_feConvolveMatrix_class_init, + NULL, NULL, + sizeof(SPFeConvolveMatrix), + 16, + (GInstanceInitFunc) sp_feConvolveMatrix_init, + NULL, /* value_table */ + }; + feConvolveMatrix_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeConvolveMatrix", &feConvolveMatrix_info, (GTypeFlags)0); + } + return feConvolveMatrix_type; +} + +static void +sp_feConvolveMatrix_class_init(SPFeConvolveMatrixClass *klass) +{ + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; + + feConvolveMatrix_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_feConvolveMatrix_build; + sp_object_class->release = sp_feConvolveMatrix_release; + sp_object_class->write = sp_feConvolveMatrix_write; + sp_object_class->set = sp_feConvolveMatrix_set; + sp_object_class->update = sp_feConvolveMatrix_update; + + sp_primitive_class->build_renderer = sp_feConvolveMatrix_build_renderer; +} + +static void +sp_feConvolveMatrix_init(SPFeConvolveMatrix *feConvolveMatrix) +{ + //Setting default values: + feConvolveMatrix->order.set("3 3"); + feConvolveMatrix->targetX = 1; + feConvolveMatrix->targetY = 1; + feConvolveMatrix->edgeMode = NR::CONVOLVEMATRIX_EDGEMODE_DUPLICATE; + feConvolveMatrix->preserveAlpha = false; + + //some helper variables: + feConvolveMatrix->targetXIsSet = false; + feConvolveMatrix->targetYIsSet = false; + feConvolveMatrix->kernelMatrixIsSet = false; +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPFeConvolveMatrix variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_feConvolveMatrix_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) feConvolveMatrix_parent_class)->build) { + ((SPObjectClass *) feConvolveMatrix_parent_class)->build(object, document, repr); + } + + /*LOAD ATTRIBUTES FROM REPR HERE*/ + sp_object_read_attr(object, "order"); + sp_object_read_attr(object, "kernelMatrix"); + sp_object_read_attr(object, "divisor"); + sp_object_read_attr(object, "bias"); + sp_object_read_attr(object, "targetX"); + sp_object_read_attr(object, "targetY"); + sp_object_read_attr(object, "edgeMode"); + sp_object_read_attr(object, "kernelUnitLength"); + sp_object_read_attr(object, "preserveAlpha"); +} + +/** + * Drops any allocated memory. + */ +static void +sp_feConvolveMatrix_release(SPObject *object) +{ + if (((SPObjectClass *) feConvolveMatrix_parent_class)->release) + ((SPObjectClass *) feConvolveMatrix_parent_class)->release(object); +} + +static NR::FilterConvolveMatrixEdgeMode sp_feConvolveMatrix_read_edgeMode(gchar const *value){ + if (!value) return NR::CONVOLVEMATRIX_EDGEMODE_DUPLICATE; //duplicate is default + switch(value[0]){ + case 'd': + if (strncmp(value, "duplicate", 9) == 0) return NR::CONVOLVEMATRIX_EDGEMODE_DUPLICATE; + break; + case 'w': + if (strncmp(value, "wrap", 4) == 0) return NR::CONVOLVEMATRIX_EDGEMODE_WRAP; + break; + case 'n': + if (strncmp(value, "none", 4) == 0) return NR::CONVOLVEMATRIX_EDGEMODE_NONE; + break; + } + return NR::CONVOLVEMATRIX_EDGEMODE_DUPLICATE; //duplicate is default +} + +/** + * Sets a specific value in the SPFeConvolveMatrix. + */ +static void +sp_feConvolveMatrix_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeConvolveMatrix *feConvolveMatrix = SP_FECONVOLVEMATRIX(object); + (void)feConvolveMatrix; + double read_num; + int read_int; + bool read_bool; + NR::FilterConvolveMatrixEdgeMode read_mode; + + switch(key) { + /*DEAL WITH SETTING ATTRIBUTES HERE*/ + case SP_ATTR_ORDER: + feConvolveMatrix->order.set(value); + //From SVG spec: If is not provided, it defaults to . + if (feConvolveMatrix->order.optNumIsSet() == false) + feConvolveMatrix->order.setOptNumber(feConvolveMatrix->order.getNumber()); + if (feConvolveMatrix->targetXIsSet == false) feConvolveMatrix->targetX = (int) floor(feConvolveMatrix->order.getNumber()/2); + if (feConvolveMatrix->targetYIsSet == false) feConvolveMatrix->targetY = (int) floor(feConvolveMatrix->order.getOptNumber()/2); + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + case SP_ATTR_KERNELMATRIX: + if (value){ + feConvolveMatrix->kernelMatrixIsSet = true; + feConvolveMatrix->kernelMatrix = helperfns_read_vector(value, (int) (feConvolveMatrix->order.getNumber() * feConvolveMatrix->order.getOptNumber())); + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } else { + g_warning("For feConvolveMatrix you MUST pass a kernelMatrix parameter!"); + } + break; + case SP_ATTR_DIVISOR: + if (!value){ + read_num = 1; + } else { + read_num = helperfns_read_number(value); + if (read_num == 0) { + if (feConvolveMatrix->kernelMatrixIsSet){ + g_warning("You shouldn't pass a divisor value equal to 0! Assuming the sum of all values in kernelMatrix as the default value."); + for (unsigned int i = 0; i< feConvolveMatrix->kernelMatrix.size(); i++) + read_num += feConvolveMatrix->kernelMatrix[i]; + } else { + g_warning("You shouldn't pass a divisor value equal to 0! Assuming 1 as the default value."); + read_num = 1; + } + } + } + if (read_num != feConvolveMatrix->divisor){ + feConvolveMatrix->divisor = read_num; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_BIAS: + read_num = 0; + if (value) read_num = helperfns_read_number(value); + if (read_num != feConvolveMatrix->bias){ + feConvolveMatrix->bias = read_num; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_TARGETX: + read_int = (int) helperfns_read_number(value); + if (read_int < 0 || read_int > feConvolveMatrix->order.getNumber()){ + g_warning("targetX must be a value between 0 and orderX! Assuming orderX as default value."); + read_int = (int) feConvolveMatrix->order.getNumber(); + } + feConvolveMatrix->targetXIsSet = true; + if (read_int != feConvolveMatrix->targetX){ + feConvolveMatrix->targetX = read_int; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_TARGETY: + read_int = (int) helperfns_read_number(value); + if (read_int < 0 || read_int > feConvolveMatrix->order.getOptNumber()){ + g_warning("targetY must be a value between 0 and orderY! Assuming orderY as default value."); + read_int = (int) feConvolveMatrix->order.getOptNumber(); + } + feConvolveMatrix->targetYIsSet = true; + if (read_int != feConvolveMatrix->targetY){ + feConvolveMatrix->targetY = read_int; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_EDGEMODE: + read_mode = sp_feConvolveMatrix_read_edgeMode(value); + if (read_mode != feConvolveMatrix->edgeMode){ + feConvolveMatrix->edgeMode = read_mode; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_KERNELUNITLENGTH: + feConvolveMatrix->kernelUnitLength.set(value); + //From SVG spec: If the value is not specified, it defaults to the same value as . + if (feConvolveMatrix->kernelUnitLength.optNumIsSet() == false) + feConvolveMatrix->kernelUnitLength.setOptNumber(feConvolveMatrix->kernelUnitLength.getNumber()); + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + case SP_ATTR_PRESERVEALPHA: + read_bool = helperfns_read_bool(value, false); + if (read_bool != feConvolveMatrix->preserveAlpha){ + feConvolveMatrix->preserveAlpha = read_bool; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + default: + if (((SPObjectClass *) feConvolveMatrix_parent_class)->set) + ((SPObjectClass *) feConvolveMatrix_parent_class)->set(object, key, value); + break; + } + +} + +/** + * Receives update notifications. + */ +static void +sp_feConvolveMatrix_update(SPObject *object, SPCtx *ctx, guint flags) +{ + if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | + SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { + + /* do something to trigger redisplay, updates? */ + + } + + if (((SPObjectClass *) feConvolveMatrix_parent_class)->update) { + ((SPObjectClass *) feConvolveMatrix_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_feConvolveMatrix_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + // Inkscape-only object, not copied during an "plain SVG" dump: + if (flags & SP_OBJECT_WRITE_EXT) { + if (repr) { + // is this sane? + //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); + } else { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + } + + if (((SPObjectClass *) feConvolveMatrix_parent_class)->write) { + ((SPObjectClass *) feConvolveMatrix_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +static void sp_feConvolveMatrix_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { + g_assert(primitive != NULL); + g_assert(filter != NULL); + + SPFeConvolveMatrix *sp_convolve = SP_FECONVOLVEMATRIX(primitive); + + int primitive_n = filter->add_primitive(NR::NR_FILTER_CONVOLVEMATRIX); + NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); + NR::FilterConvolveMatrix *nr_convolve = dynamic_cast(nr_primitive); + g_assert(nr_convolve != NULL); + + sp_filter_primitive_renderer_common(primitive, nr_primitive); + + nr_convolve->set_targetX(sp_convolve->targetX); + nr_convolve->set_targetY(sp_convolve->targetY); + nr_convolve->set_orderX( (int)sp_convolve->order.getNumber() ); + nr_convolve->set_orderY( (int)sp_convolve->order.getOptNumber() ); + nr_convolve->set_kernelMatrix(sp_convolve->kernelMatrix); + nr_convolve->set_divisor(sp_convolve->divisor); + nr_convolve->set_bias(sp_convolve->bias); + nr_convolve->set_preserveAlpha(sp_convolve->preserveAlpha); + +} +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/convolvematrix.h b/src/filters/convolvematrix.h new file mode 100644 index 000000000..991f63988 --- /dev/null +++ b/src/filters/convolvematrix.h @@ -0,0 +1,60 @@ +#ifndef SP_FECONVOLVEMATRIX_H_SEEN +#define SP_FECONVOLVEMATRIX_H_SEEN + +/** \file + * SVG implementation, see ConvolveMatrix.cpp. + */ +/* + * Authors: + * Felipe Corrêa da Silva Sanches + * Hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-filter.h" +#include "convolvematrix-fns.h" +#include "number-opt-number.h" +#include "display/nr-filter-convolve-matrix.h" +#include + +/* FeConvolveMatrix base class */ +class SPFeConvolveMatrixClass; + +struct SPFeConvolveMatrix : public SPFilterPrimitive { + /* CONVOLVEMATRIX ATTRIBUTES */ + NumberOptNumber order; + std::vector kernelMatrix; + double divisor, bias; + int targetX, targetY; + NR::FilterConvolveMatrixEdgeMode edgeMode; + NumberOptNumber kernelUnitLength; + bool preserveAlpha; + //some helper variables: + bool targetXIsSet; + bool targetYIsSet; + bool divisorIsSet; + bool kernelMatrixIsSet; +}; + +struct SPFeConvolveMatrixClass { + SPFilterPrimitiveClass parent_class; +}; + +GType sp_feConvolveMatrix_get_type(); + + +#endif /* !SP_FECONVOLVEMATRIX_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/diffuselighting-fns.h b/src/filters/diffuselighting-fns.h new file mode 100644 index 000000000..b91ed80f6 --- /dev/null +++ b/src/filters/diffuselighting-fns.h @@ -0,0 +1,38 @@ +#ifndef SP_FEDIFFUSELIGHTING_FNS_H +#define SP_FEDIFFUSELIGHTING_FNS_H + +/** \file + * Macros and fn declarations related to gaussian blur filter. + */ + +#include +#include + +namespace Inkscape { +namespace XML { +class Node; +} +} + +class SPFeDiffuseLighting; + +#define SP_TYPE_FEDIFFUSELIGHTING (sp_feDiffuseLighting_get_type()) +#define SP_FEDIFFUSELIGHTING(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEDIFFUSELIGHTING, SPFeDiffuseLighting)) +#define SP_FEDIFFUSELIGHTING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEDIFFUSELIGHTING, SPFeDiffuseLightingClass)) +#define SP_IS_FEDIFFUSELIGHTING(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEDIFFUSELIGHTING)) +#define SP_IS_FEDIFFUSELIGHTING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEDIFFUSELIGHTING)) + +GType sp_feDiffuseLighting_get_type(); + +#endif /* !SP_FEDIFFUSELIGHTING_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/diffuselighting.cpp b/src/filters/diffuselighting.cpp new file mode 100644 index 000000000..a4935bf72 --- /dev/null +++ b/src/filters/diffuselighting.cpp @@ -0,0 +1,386 @@ +#define __SP_FEDIFFUSELIGHTING_CPP__ + +/** \file + * SVG implementation. + * + */ +/* + * Authors: + * hugo Rodrigues + * Jean-Rene Reinhard + * + * Copyright (C) 2006 Hugo Rodrigues + * 2007 authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "attributes.h" +#include "svg/svg.h" +#include "sp-object.h" +#include "svg/svg-color.h" +#include "diffuselighting.h" +#include "xml/repr.h" +#include "display/nr-filter-diffuselighting.h" + +/* FeDiffuseLighting base class */ + +static void sp_feDiffuseLighting_class_init(SPFeDiffuseLightingClass *klass); +static void sp_feDiffuseLighting_init(SPFeDiffuseLighting *feDiffuseLighting); + +static void sp_feDiffuseLighting_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_feDiffuseLighting_release(SPObject *object); +static void sp_feDiffuseLighting_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_feDiffuseLighting_update(SPObject *object, SPCtx *ctx, guint flags); +//we assume that svg:feDiffuseLighting can have any number of children +//only the first one is considered as the light source of the filter +//TODO is that right? +//if not modify child_added and remove_child to raise errors +static void sp_feDiffuseLighting_child_added(SPObject *object, + Inkscape::XML::Node *child, + Inkscape::XML::Node *ref); +static void sp_feDiffuseLighting_remove_child(SPObject *object, Inkscape::XML::Node *child); +static void sp_feDiffuseLighting_order_changed(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref); +static Inkscape::XML::Node *sp_feDiffuseLighting_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +static void sp_feDiffuseLighting_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); +static void sp_feDiffuseLighting_children_modified(SPFeDiffuseLighting *sp_diffuselighting); + +static SPFilterPrimitiveClass *feDiffuseLighting_parent_class; + +GType +sp_feDiffuseLighting_get_type() +{ + static GType feDiffuseLighting_type = 0; + + if (!feDiffuseLighting_type) { + GTypeInfo feDiffuseLighting_info = { + sizeof(SPFeDiffuseLightingClass), + NULL, NULL, + (GClassInitFunc) sp_feDiffuseLighting_class_init, + NULL, NULL, + sizeof(SPFeDiffuseLighting), + 16, + (GInstanceInitFunc) sp_feDiffuseLighting_init, + NULL, /* value_table */ + }; + feDiffuseLighting_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeDiffuseLighting", &feDiffuseLighting_info, (GTypeFlags)0); + } + return feDiffuseLighting_type; +} + +static void +sp_feDiffuseLighting_class_init(SPFeDiffuseLightingClass *klass) +{ + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; + feDiffuseLighting_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_feDiffuseLighting_build; + sp_object_class->release = sp_feDiffuseLighting_release; + sp_object_class->write = sp_feDiffuseLighting_write; + sp_object_class->set = sp_feDiffuseLighting_set; + sp_object_class->update = sp_feDiffuseLighting_update; + sp_object_class->child_added = sp_feDiffuseLighting_child_added; + sp_object_class->remove_child = sp_feDiffuseLighting_remove_child; + sp_object_class->order_changed = sp_feDiffuseLighting_order_changed; + + sp_primitive_class->build_renderer = sp_feDiffuseLighting_build_renderer; +} + +static void +sp_feDiffuseLighting_init(SPFeDiffuseLighting *feDiffuseLighting) +{ + feDiffuseLighting->surfaceScale = 1; + feDiffuseLighting->diffuseConstant = 1; + feDiffuseLighting->lighting_color = 0xffffffff; + //TODO kernelUnit + feDiffuseLighting->renderer = NULL; + + feDiffuseLighting->surfaceScale_set = FALSE; + feDiffuseLighting->diffuseConstant_set = FALSE; + feDiffuseLighting->lighting_color_set = FALSE; +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPFeDiffuseLighting variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_feDiffuseLighting_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) feDiffuseLighting_parent_class)->build) { + ((SPObjectClass *) feDiffuseLighting_parent_class)->build(object, document, repr); + } + + /*LOAD ATTRIBUTES FROM REPR HERE*/ + sp_object_read_attr(object, "surfaceScale"); + sp_object_read_attr(object, "diffuseConstant"); + sp_object_read_attr(object, "kernelUnitLength"); + sp_object_read_attr(object, "lighting-color"); + +} + +/** + * Drops any allocated memory. + */ +static void +sp_feDiffuseLighting_release(SPObject *object) +{ + if (((SPObjectClass *) feDiffuseLighting_parent_class)->release) + ((SPObjectClass *) feDiffuseLighting_parent_class)->release(object); +} + +/** + * Sets a specific value in the SPFeDiffuseLighting. + */ +static void +sp_feDiffuseLighting_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeDiffuseLighting *feDiffuseLighting = SP_FEDIFFUSELIGHTING(object); + gchar const *cend_ptr = NULL; + gchar *end_ptr = NULL; + + switch(key) { + /*DEAL WITH SETTING ATTRIBUTES HERE*/ +//TODO test forbidden values + case SP_ATTR_SURFACESCALE: + end_ptr = NULL; + if (value) { + feDiffuseLighting->surfaceScale = g_ascii_strtod(value, &end_ptr); + if (end_ptr) { + feDiffuseLighting->surfaceScale_set = TRUE; + } + } + if (!value || !end_ptr) { + feDiffuseLighting->surfaceScale = 1; + feDiffuseLighting->surfaceScale_set = FALSE; + } + if (feDiffuseLighting->renderer) { + feDiffuseLighting->renderer->surfaceScale = feDiffuseLighting->surfaceScale; + } + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + case SP_ATTR_DIFFUSECONSTANT: + end_ptr = NULL; + if (value) { + feDiffuseLighting->diffuseConstant = g_ascii_strtod(value, &end_ptr); + if (end_ptr && feDiffuseLighting->diffuseConstant >= 0) { + feDiffuseLighting->diffuseConstant_set = TRUE; + } else { + end_ptr = NULL; + g_warning("feDiffuseLighting: diffuseConstant should be a positive number ... defaulting to 1"); + } + } + if (!value || !end_ptr) { + feDiffuseLighting->diffuseConstant = 1; + feDiffuseLighting->diffuseConstant_set = FALSE; + } + if (feDiffuseLighting->renderer) { + feDiffuseLighting->renderer->diffuseConstant = feDiffuseLighting->diffuseConstant; + } + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + case SP_ATTR_KERNELUNITLENGTH: + //TODO kernelUnit + //feDiffuseLighting->kernelUnitLength.set(value); + /*TODOif (feDiffuseLighting->renderer) { + feDiffuseLighting->renderer->surfaceScale = feDiffuseLighting->renderer; + } + */ + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + case SP_PROP_LIGHTING_COLOR: + cend_ptr = NULL; + feDiffuseLighting->lighting_color = sp_svg_read_color(value, &cend_ptr, 0xffffffff); + //if a value was read + if (cend_ptr) { + feDiffuseLighting->lighting_color_set = TRUE; + } else { + //lighting_color already contains the default value + feDiffuseLighting->lighting_color_set = FALSE; + } + if (feDiffuseLighting->renderer) { + feDiffuseLighting->renderer->lighting_color = feDiffuseLighting->lighting_color; + } + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + default: + if (((SPObjectClass *) feDiffuseLighting_parent_class)->set) + ((SPObjectClass *) feDiffuseLighting_parent_class)->set(object, key, value); + break; + } + +} + +/** + * Receives update notifications. + */ +static void +sp_feDiffuseLighting_update(SPObject *object, SPCtx *ctx, guint flags) +{ + if (flags & (SP_OBJECT_MODIFIED_FLAG)) { + sp_object_read_attr(object, "surfaceScale"); + sp_object_read_attr(object, "diffuseConstant"); + sp_object_read_attr(object, "kernelUnit"); + sp_object_read_attr(object, "lighting-color"); + } + + if (((SPObjectClass *) feDiffuseLighting_parent_class)->update) { + ((SPObjectClass *) feDiffuseLighting_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_feDiffuseLighting_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + SPFeDiffuseLighting *fediffuselighting = SP_FEDIFFUSELIGHTING(object); + + // Inkscape-only object, not copied during an "plain SVG" dump: + if (flags & SP_OBJECT_WRITE_EXT) { + if (repr) { + // is this sane? + //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); + } else { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + } + + if (fediffuselighting->surfaceScale_set) + sp_repr_set_css_double(repr, "surfaceScale", fediffuselighting->surfaceScale); + else + repr->setAttribute("surfaceScale", NULL); + if (fediffuselighting->diffuseConstant_set) + sp_repr_set_css_double(repr, "diffuseConstant", fediffuselighting->diffuseConstant); + else + repr->setAttribute("diffuseConstant", NULL); + /*TODO kernelUnits */ + if (fediffuselighting->lighting_color_set) { + gchar c[64]; + sp_svg_write_color(c, sizeof(c), fediffuselighting->lighting_color); + repr->setAttribute("lighting-color", c); + } else + repr->setAttribute("lighting-color", NULL); + + if (((SPObjectClass *) feDiffuseLighting_parent_class)->write) { + ((SPObjectClass *) feDiffuseLighting_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +/** + * Callback for child_added event. + */ +static void +sp_feDiffuseLighting_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref) +{ + SPFeDiffuseLighting *f = SP_FEDIFFUSELIGHTING(object); + + if (((SPObjectClass *) feDiffuseLighting_parent_class)->child_added) + (* ((SPObjectClass *) feDiffuseLighting_parent_class)->child_added)(object, child, ref); + + sp_feDiffuseLighting_children_modified(f); + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); +} + + +/** + * Callback for remove_child event. + */ +static void +sp_feDiffuseLighting_remove_child(SPObject *object, Inkscape::XML::Node *child) +{ + SPFeDiffuseLighting *f = SP_FEDIFFUSELIGHTING(object); + + if (((SPObjectClass *) feDiffuseLighting_parent_class)->remove_child) + (* ((SPObjectClass *) feDiffuseLighting_parent_class)->remove_child)(object, child); + + sp_feDiffuseLighting_children_modified(f); + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); +} + +static void +sp_feDiffuseLighting_order_changed (SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref) +{ + SPFeDiffuseLighting *f = SP_FEDIFFUSELIGHTING(object); + if (((SPObjectClass *) (feDiffuseLighting_parent_class))->order_changed) + (* ((SPObjectClass *) (feDiffuseLighting_parent_class))->order_changed) (object, child, old_ref, new_ref); + + sp_feDiffuseLighting_children_modified(f); + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); +} + +static void sp_feDiffuseLighting_children_modified(SPFeDiffuseLighting *sp_diffuselighting) +{ + if (sp_diffuselighting->renderer) { + sp_diffuselighting->renderer->light_type = NR::NO_LIGHT; + if (SP_IS_FEDISTANTLIGHT(sp_diffuselighting->children)) { + sp_diffuselighting->renderer->light_type = NR::DISTANT_LIGHT; + sp_diffuselighting->renderer->light.distant = SP_FEDISTANTLIGHT(sp_diffuselighting->children); + } + if (SP_IS_FEPOINTLIGHT(sp_diffuselighting->children)) { + sp_diffuselighting->renderer->light_type = NR::POINT_LIGHT; + sp_diffuselighting->renderer->light.point = SP_FEPOINTLIGHT(sp_diffuselighting->children); + } + if (SP_IS_FESPOTLIGHT(sp_diffuselighting->children)) { + sp_diffuselighting->renderer->light_type = NR::SPOT_LIGHT; + sp_diffuselighting->renderer->light.spot = SP_FESPOTLIGHT(sp_diffuselighting->children); + } + } +} + +static void sp_feDiffuseLighting_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { + g_assert(primitive != NULL); + g_assert(filter != NULL); + + SPFeDiffuseLighting *sp_diffuselighting = SP_FEDIFFUSELIGHTING(primitive); + + int primitive_n = filter->add_primitive(NR::NR_FILTER_DIFFUSELIGHTING); + NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); + NR::FilterDiffuseLighting *nr_diffuselighting = dynamic_cast(nr_primitive); + g_assert(nr_diffuselighting != NULL); + + sp_diffuselighting->renderer = nr_diffuselighting; + sp_filter_primitive_renderer_common(primitive, nr_primitive); + + nr_diffuselighting->diffuseConstant = sp_diffuselighting->diffuseConstant; + nr_diffuselighting->surfaceScale = sp_diffuselighting->surfaceScale; + nr_diffuselighting->lighting_color = sp_diffuselighting->lighting_color; + //We assume there is at most one child + nr_diffuselighting->light_type = NR::NO_LIGHT; + if (SP_IS_FEDISTANTLIGHT(primitive->children)) { + nr_diffuselighting->light_type = NR::DISTANT_LIGHT; + nr_diffuselighting->light.distant = SP_FEDISTANTLIGHT(primitive->children); + } + if (SP_IS_FEPOINTLIGHT(primitive->children)) { + nr_diffuselighting->light_type = NR::POINT_LIGHT; + nr_diffuselighting->light.point = SP_FEPOINTLIGHT(primitive->children); + } + if (SP_IS_FESPOTLIGHT(primitive->children)) { + nr_diffuselighting->light_type = NR::SPOT_LIGHT; + nr_diffuselighting->light.spot = SP_FESPOTLIGHT(primitive->children); + } + + //nr_offset->set_dx(sp_offset->dx); + //nr_offset->set_dy(sp_offset->dy); +} + + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/diffuselighting.h b/src/filters/diffuselighting.h new file mode 100644 index 000000000..8e909f9ae --- /dev/null +++ b/src/filters/diffuselighting.h @@ -0,0 +1,63 @@ +#ifndef SP_FEDIFFUSELIGHTING_H_SEEN +#define SP_FEDIFFUSELIGHTING_H_SEEN + +/** \file + * SVG implementation, see DiffuseLighting.cpp. + */ +/* + * Authors: + * Hugo Rodrigues + * Jean-Rene Reinhard + * + * Copyright (C) 2006 Hugo Rodrigues + * 2007 authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-filter.h" +#include "diffuselighting-fns.h" + +namespace NR { +class FilterDiffuseLighting; +} + +/* FeDiffuseLighting base class */ +class SPFeDiffuseLightingClass; + +struct SPFeDiffuseLighting : public SPFilterPrimitive { + /** DIFFUSELIGHTING ATTRIBUTES HERE */ + /** surfaceScale attribute */ + gfloat surfaceScale; + guint surfaceScale_set : 1; + /** diffuseConstant attribute */ + gfloat diffuseConstant; + guint diffuseConstant_set : 1; + /** kernelUnitLength attribute */ + NumberOptNumber kernelUnitLength; + /** lighting-color property */ + guint32 lighting_color; + guint lighting_color_set : 1; + /** pointer to the associated renderer */ + NR::FilterDiffuseLighting *renderer; +}; + +struct SPFeDiffuseLightingClass { + SPFilterPrimitiveClass parent_class; +}; + +GType sp_feDiffuseLighting_get_type(); + + +#endif /* !SP_FEDIFFUSELIGHTING_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/displacementmap-fns.h b/src/filters/displacementmap-fns.h new file mode 100644 index 000000000..6d92c6b78 --- /dev/null +++ b/src/filters/displacementmap-fns.h @@ -0,0 +1,38 @@ +#ifndef SP_FEDISPLACEMENTMAP_FNS_H +#define SP_FEDISPLACEMENTMAP_FNS_H + +/** \file + * Macros and fn declarations related to gaussian blur filter. + */ + +#include +#include + +namespace Inkscape { +namespace XML { +class Node; +} +} + +class SPFeDisplacementMap; + +#define SP_TYPE_FEDISPLACEMENTMAP (sp_feDisplacementMap_get_type()) +#define SP_FEDISPLACEMENTMAP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEDISPLACEMENTMAP, SPFeDisplacementMap)) +#define SP_FEDISPLACEMENTMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEDISPLACEMENTMAP, SPFeDisplacementMapClass)) +#define SP_IS_FEDISPLACEMENTMAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEDISPLACEMENTMAP)) +#define SP_IS_FEDISPLACEMENTMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEDISPLACEMENTMAP)) + +GType sp_feDisplacementMap_get_type(); + +#endif /* !SP_FEDISPLACEMENTMAP_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/displacementmap.cpp b/src/filters/displacementmap.cpp new file mode 100644 index 000000000..405922b46 --- /dev/null +++ b/src/filters/displacementmap.cpp @@ -0,0 +1,259 @@ +#define __SP_FEDISPLACEMENTMAP_CPP__ + +/** \file + * SVG implementation. + * + */ +/* + * Authors: + * hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "attributes.h" +#include "svg/svg.h" +#include "displacementmap.h" +#include "xml/repr.h" +#include "display/nr-filter-displacement-map.h" +#include "helper-fns.h" + +/* FeDisplacementMap base class */ + +static void sp_feDisplacementMap_class_init(SPFeDisplacementMapClass *klass); +static void sp_feDisplacementMap_init(SPFeDisplacementMap *feDisplacementMap); + +static void sp_feDisplacementMap_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_feDisplacementMap_release(SPObject *object); +static void sp_feDisplacementMap_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_feDisplacementMap_update(SPObject *object, SPCtx *ctx, guint flags); +static void sp_feDisplacementMap_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); +static Inkscape::XML::Node *sp_feDisplacementMap_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); + +static SPFilterPrimitiveClass *feDisplacementMap_parent_class; + +GType +sp_feDisplacementMap_get_type() +{ + static GType feDisplacementMap_type = 0; + + if (!feDisplacementMap_type) { + GTypeInfo feDisplacementMap_info = { + sizeof(SPFeDisplacementMapClass), + NULL, NULL, + (GClassInitFunc) sp_feDisplacementMap_class_init, + NULL, NULL, + sizeof(SPFeDisplacementMap), + 16, + (GInstanceInitFunc) sp_feDisplacementMap_init, + NULL, /* value_table */ + }; + feDisplacementMap_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeDisplacementMap", &feDisplacementMap_info, (GTypeFlags)0); + } + return feDisplacementMap_type; +} + +static void +sp_feDisplacementMap_class_init(SPFeDisplacementMapClass *klass) +{ + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; + + feDisplacementMap_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_feDisplacementMap_build; + sp_object_class->release = sp_feDisplacementMap_release; + sp_object_class->write = sp_feDisplacementMap_write; + sp_object_class->set = sp_feDisplacementMap_set; + sp_object_class->update = sp_feDisplacementMap_update; + sp_primitive_class->build_renderer = sp_feDisplacementMap_build_renderer; +} + +static void +sp_feDisplacementMap_init(SPFeDisplacementMap *feDisplacementMap) +{ + feDisplacementMap->scale=0; + feDisplacementMap->xChannelSelector = DISPLACEMENTMAP_CHANNEL_ALPHA; + feDisplacementMap->yChannelSelector = DISPLACEMENTMAP_CHANNEL_ALPHA; + feDisplacementMap->in2 = NR::NR_FILTER_SLOT_NOT_SET; +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPFeDisplacementMap variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_feDisplacementMap_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) feDisplacementMap_parent_class)->build) { + ((SPObjectClass *) feDisplacementMap_parent_class)->build(object, document, repr); + } + + /*LOAD ATTRIBUTES FROM REPR HERE*/ + sp_object_read_attr(object, "scale"); + sp_object_read_attr(object, "in2"); + sp_object_read_attr(object, "xChannelSelector"); + sp_object_read_attr(object, "yChannelSelector"); +} + +/** + * Drops any allocated memory. + */ +static void +sp_feDisplacementMap_release(SPObject *object) +{ + if (((SPObjectClass *) feDisplacementMap_parent_class)->release) + ((SPObjectClass *) feDisplacementMap_parent_class)->release(object); +} + +static FilterDisplacementMapChannelSelector sp_feDisplacementMap_readChannelSelector(gchar const *value) +{ + if (!value) return DISPLACEMENTMAP_CHANNEL_ALPHA; + switch (value[0]) { + case 'R': + return DISPLACEMENTMAP_CHANNEL_RED; + break; + case 'G': + return DISPLACEMENTMAP_CHANNEL_GREEN; + break; + case 'B': + return DISPLACEMENTMAP_CHANNEL_BLUE; + break; + case 'A': + return DISPLACEMENTMAP_CHANNEL_ALPHA; + break; + default: + // error + g_warning("Invalid attribute for Channel Selector. Valid modes are 'R', 'G', 'B' or 'A'"); + break; + } + return DISPLACEMENTMAP_CHANNEL_ALPHA; //default is Alpha Channel +} + +/** + * Sets a specific value in the SPFeDisplacementMap. + */ +static void +sp_feDisplacementMap_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeDisplacementMap *feDisplacementMap = SP_FEDISPLACEMENTMAP(object); + (void)feDisplacementMap; + int input; + double read_num; + FilterDisplacementMapChannelSelector read_selector; + switch(key) { + /*DEAL WITH SETTING ATTRIBUTES HERE*/ + case SP_ATTR_XCHANNELSELECTOR: + read_selector = sp_feDisplacementMap_readChannelSelector(value); + if (read_selector != feDisplacementMap->xChannelSelector){ + feDisplacementMap->xChannelSelector = read_selector; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_YCHANNELSELECTOR: + read_selector = sp_feDisplacementMap_readChannelSelector(value); + if (read_selector != feDisplacementMap->yChannelSelector){ + feDisplacementMap->yChannelSelector = read_selector; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_SCALE: + read_num = helperfns_read_number(value); + if (read_num != feDisplacementMap->scale) { + feDisplacementMap->scale = read_num; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_IN2: + input = sp_filter_primitive_read_in(feDisplacementMap, value); + if (input != feDisplacementMap->in2) { + feDisplacementMap->in2 = input; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + default: + if (((SPObjectClass *) feDisplacementMap_parent_class)->set) + ((SPObjectClass *) feDisplacementMap_parent_class)->set(object, key, value); + break; + } + +} + +/** + * Receives update notifications. + */ +static void +sp_feDisplacementMap_update(SPObject *object, SPCtx *ctx, guint flags) +{ + if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | + SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { + + /* do something to trigger redisplay, updates? */ + + } + + if (((SPObjectClass *) feDisplacementMap_parent_class)->update) { + ((SPObjectClass *) feDisplacementMap_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_feDisplacementMap_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + // Inkscape-only object, not copied during an "plain SVG" dump: + if (flags & SP_OBJECT_WRITE_EXT) { + if (repr) { + // is this sane? + //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); + } else { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + } + + if (((SPObjectClass *) feDisplacementMap_parent_class)->write) { + ((SPObjectClass *) feDisplacementMap_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +static void sp_feDisplacementMap_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { + g_assert(primitive != NULL); + g_assert(filter != NULL); + + SPFeDisplacementMap *sp_displacement_map = SP_FEDISPLACEMENTMAP(primitive); + + int primitive_n = filter->add_primitive(NR::NR_FILTER_DISPLACEMENTMAP); + NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); + NR::FilterDisplacementMap *nr_displacement_map = dynamic_cast(nr_primitive); + g_assert(nr_displacement_map != NULL); + + sp_filter_primitive_renderer_common(primitive, nr_primitive); + + nr_displacement_map->set_input(1, sp_displacement_map->in2); + nr_displacement_map->set_scale(sp_displacement_map->scale); + nr_displacement_map->set_channel_selector(0, sp_displacement_map->xChannelSelector); + nr_displacement_map->set_channel_selector(1, sp_displacement_map->yChannelSelector); +} + + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/displacementmap.h b/src/filters/displacementmap.h new file mode 100644 index 000000000..6a8ac9cd9 --- /dev/null +++ b/src/filters/displacementmap.h @@ -0,0 +1,56 @@ +#ifndef SP_FEDISPLACEMENTMAP_H_SEEN +#define SP_FEDISPLACEMENTMAP_H_SEEN + +/** \file + * SVG implementation, see DisplacementMap.cpp. + */ +/* + * Authors: + * Hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-filter.h" +#include "displacementmap-fns.h" + +enum FilterDisplacementMapChannelSelector { + DISPLACEMENTMAP_CHANNEL_RED, + DISPLACEMENTMAP_CHANNEL_GREEN, + DISPLACEMENTMAP_CHANNEL_BLUE, + DISPLACEMENTMAP_CHANNEL_ALPHA, + DISPLACEMENTMAP_CHANNEL_ENDTYPE +}; + +/* FeDisplacementMap base class */ +class SPFeDisplacementMapClass; + +struct SPFeDisplacementMap : public SPFilterPrimitive { + /** DISPLACEMENTMAP ATTRIBUTES HERE */ + int in2; + double scale; + FilterDisplacementMapChannelSelector xChannelSelector; + FilterDisplacementMapChannelSelector yChannelSelector; +}; + +struct SPFeDisplacementMapClass { + SPFilterPrimitiveClass parent_class; +}; + +GType sp_feDisplacementMap_get_type(); + + +#endif /* !SP_FEDISPLACEMENTMAP_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/distantlight.cpp b/src/filters/distantlight.cpp new file mode 100644 index 000000000..41584c4a4 --- /dev/null +++ b/src/filters/distantlight.cpp @@ -0,0 +1,234 @@ +#define __SP_FEDISTANTLIGHT_CPP__ + +/** \file + * SVG implementation. + */ +/* + * Authors: + * Hugo Rodrigues + * Niko Kiirala + * Jean-Rene Reinhard + * + * Copyright (C) 2006,2007 Authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#include "attributes.h" +#include "document.h" +#include "distantlight.h" +#include "diffuselighting-fns.h" +#include "specularlighting-fns.h" +#include "xml/repr.h" + +#define SP_MACROS_SILENT +#include "macros.h" + +/* FeDistantLight class */ + +static void sp_fedistantlight_class_init(SPFeDistantLightClass *klass); +static void sp_fedistantlight_init(SPFeDistantLight *fedistantlight); + +static void sp_fedistantlight_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_fedistantlight_release(SPObject *object); +static void sp_fedistantlight_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_fedistantlight_update(SPObject *object, SPCtx *ctx, guint flags); +static Inkscape::XML::Node *sp_fedistantlight_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); + +static SPObjectClass *feDistantLight_parent_class; + +GType +sp_fedistantlight_get_type() +{ + static GType fedistantlight_type = 0; + + if (!fedistantlight_type) { + GTypeInfo fedistantlight_info = { + sizeof(SPFeDistantLightClass), + NULL, NULL, + (GClassInitFunc) sp_fedistantlight_class_init, + NULL, NULL, + sizeof(SPFeDistantLight), + 16, + (GInstanceInitFunc) sp_fedistantlight_init, + NULL, /* value_table */ + }; + fedistantlight_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeDistantLight", &fedistantlight_info, (GTypeFlags)0); + } + return fedistantlight_type; +} + +static void +sp_fedistantlight_class_init(SPFeDistantLightClass *klass) +{ + + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + + feDistantLight_parent_class = (SPObjectClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_fedistantlight_build; + sp_object_class->release = sp_fedistantlight_release; + sp_object_class->write = sp_fedistantlight_write; + sp_object_class->set = sp_fedistantlight_set; + sp_object_class->update = sp_fedistantlight_update; +} + +static void +sp_fedistantlight_init(SPFeDistantLight *fedistantlight) +{ + fedistantlight->azimuth = 0; + fedistantlight->elevation = 0; + fedistantlight->azimuth_set = FALSE; + fedistantlight->elevation_set = FALSE; +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPDistantLight variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_fedistantlight_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) feDistantLight_parent_class)->build) { + ((SPObjectClass *) feDistantLight_parent_class)->build(object, document, repr); + } + + //Read values of key attributes from XML nodes into object. + sp_object_read_attr(object, "azimuth"); + sp_object_read_attr(object, "elevation"); + +//is this necessary? + sp_document_add_resource(document, "fedistantlight", object); +} + +/** + * Drops any allocated memory. + */ +static void +sp_fedistantlight_release(SPObject *object) +{ + //SPFeDistantLight *fedistantlight = SP_FEDISTANTLIGHT(object); + + if (SP_OBJECT_DOCUMENT(object)) { + /* Unregister ourselves */ + sp_document_remove_resource(SP_OBJECT_DOCUMENT(object), "fedistantlight", SP_OBJECT(object)); + } + +//TODO: release resources here +} + +/** + * Sets a specific value in the SPFeDistantLight. + */ +static void +sp_fedistantlight_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeDistantLight *fedistantlight = SP_FEDISTANTLIGHT(object); + gchar *end_ptr; + switch (key) { + case SP_ATTR_AZIMUTH: + end_ptr =NULL; + if (value) { + fedistantlight->azimuth = g_ascii_strtod(value, &end_ptr); + if (end_ptr) { + fedistantlight->azimuth_set = TRUE; + } + } + if (!value || !end_ptr) { + fedistantlight->azimuth_set = FALSE; + fedistantlight->azimuth = 0; + } + if (object->parent && + (SP_IS_FEDIFFUSELIGHTING(object->parent) || + SP_IS_FESPECULARLIGHTING(object->parent))) { + object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_ELEVATION: + end_ptr =NULL; + if (value) { + fedistantlight->elevation = g_ascii_strtod(value, &end_ptr); + if (end_ptr) { + fedistantlight->elevation_set = TRUE; + } + } + if (!value || !end_ptr) { + fedistantlight->elevation_set = FALSE; + fedistantlight->elevation = 0; + } + if (object->parent && + (SP_IS_FEDIFFUSELIGHTING(object->parent) || + SP_IS_FESPECULARLIGHTING(object->parent))) { + object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + default: + // See if any parents need this value. + if (((SPObjectClass *) feDistantLight_parent_class)->set) { + ((SPObjectClass *) feDistantLight_parent_class)->set(object, key, value); + } + break; + } +} + +/** + * * Receives update notifications. + * */ +static void +sp_fedistantlight_update(SPObject *object, SPCtx *ctx, guint flags) +{ + SPFeDistantLight *feDistantLight = SP_FEDISTANTLIGHT(object); + (void)feDistantLight; + + if (flags & SP_OBJECT_MODIFIED_FLAG) { + /* do something to trigger redisplay, updates? */ + sp_object_read_attr(object, "azimuth"); + sp_object_read_attr(object, "elevation"); + } + + if (((SPObjectClass *) feDistantLight_parent_class)->update) { + ((SPObjectClass *) feDistantLight_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_fedistantlight_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + SPFeDistantLight *fedistantlight = SP_FEDISTANTLIGHT(object); + + if (!repr) { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + + if (fedistantlight->azimuth_set) + sp_repr_set_css_double(repr, "azimuth", fedistantlight->azimuth); + if (fedistantlight->elevation_set) + sp_repr_set_css_double(repr, "elevation", fedistantlight->elevation); + + if (((SPObjectClass *) feDistantLight_parent_class)->write) { + ((SPObjectClass *) feDistantLight_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/distantlight.h b/src/filters/distantlight.h new file mode 100644 index 000000000..21edbc56c --- /dev/null +++ b/src/filters/distantlight.h @@ -0,0 +1,59 @@ +#ifndef SP_FEDISTANTLIGHT_H_SEEN +#define SP_FEDISTANTLIGHT_H_SEEN + +/** \file + * SVG implementation, see sp-filter.cpp. + */ +/* + * Authors: + * Hugo Rodrigues + * Niko Kiirala + * Jean-Rene Reinhard + * + * Copyright (C) 2006,2007 Authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-object.h" + +#define SP_TYPE_FEDISTANTLIGHT (sp_fedistantlight_get_type()) +#define SP_FEDISTANTLIGHT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEDISTANTLIGHT, SPFeDistantLight)) +#define SP_FEDISTANTLIGHT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEDISTANTLIGHT, SPFeDistantLightClass)) +#define SP_IS_FEDISTANTLIGHT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEDISTANTLIGHT)) +#define SP_IS_FEDISTANTLIGHT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEDISTANTLIGHT)) + +/* Distant light class */ + + +class SPFeDistantLight; +class SPFeDistantLightClass; + +struct SPFeDistantLight : public SPObject { + + /** azimuth attribute */ + gfloat azimuth; + guint azimuth_set : 1; + /** elevation attribute */ + gfloat elevation; + guint elevation_set : 1; +}; + +struct SPFeDistantLightClass { + SPObjectClass parent_class; +}; + +GType +sp_fedistantlight_get_type(); +#endif /* !SP_FEDISTANTLIGHT_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/flood-fns.h b/src/filters/flood-fns.h new file mode 100644 index 000000000..8cc507274 --- /dev/null +++ b/src/filters/flood-fns.h @@ -0,0 +1,38 @@ +#ifndef SP_FEFLOOD_FNS_H +#define SP_FEFLOOD_FNS_H + +/** \file + * Macros and fn declarations related to gaussian blur filter. + */ + +#include +#include + +namespace Inkscape { +namespace XML { +class Node; +} +} + +class SPFeFlood; + +#define SP_TYPE_FEFLOOD (sp_feFlood_get_type()) +#define SP_FEFLOOD(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEFLOOD, SPFeFlood)) +#define SP_FEFLOOD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEFLOOD, SPFeFloodClass)) +#define SP_IS_FEFLOOD(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEFLOOD)) +#define SP_IS_FEFLOOD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEFLOOD)) + +GType sp_feFlood_get_type(); + +#endif /* !SP_FEFLOOD_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/flood.cpp b/src/filters/flood.cpp new file mode 100644 index 000000000..31aa9559a --- /dev/null +++ b/src/filters/flood.cpp @@ -0,0 +1,227 @@ +#define __SP_FEFLOOD_CPP__ + +/** \file + * SVG implementation. + * + */ +/* + * Authors: + * hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "attributes.h" +#include "svg/svg.h" +#include "flood.h" +#include "xml/repr.h" +#include "helper-fns.h" +#include "svg/svg-color.h" + +/* FeFlood base class */ + +static void sp_feFlood_class_init(SPFeFloodClass *klass); +static void sp_feFlood_init(SPFeFlood *feFlood); + +static void sp_feFlood_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_feFlood_release(SPObject *object); +static void sp_feFlood_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_feFlood_update(SPObject *object, SPCtx *ctx, guint flags); +static Inkscape::XML::Node *sp_feFlood_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +static void sp_feFlood_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); + +static SPFilterPrimitiveClass *feFlood_parent_class; + +GType +sp_feFlood_get_type() +{ + static GType feFlood_type = 0; + + if (!feFlood_type) { + GTypeInfo feFlood_info = { + sizeof(SPFeFloodClass), + NULL, NULL, + (GClassInitFunc) sp_feFlood_class_init, + NULL, NULL, + sizeof(SPFeFlood), + 16, + (GInstanceInitFunc) sp_feFlood_init, + NULL, /* value_table */ + }; + feFlood_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeFlood", &feFlood_info, (GTypeFlags)0); + } + return feFlood_type; +} + +static void +sp_feFlood_class_init(SPFeFloodClass *klass) +{ + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; + + feFlood_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_feFlood_build; + sp_object_class->release = sp_feFlood_release; + sp_object_class->write = sp_feFlood_write; + sp_object_class->set = sp_feFlood_set; + sp_object_class->update = sp_feFlood_update; + sp_primitive_class->build_renderer = sp_feFlood_build_renderer; +} + +static void +sp_feFlood_init(SPFeFlood *feFlood) +{ + feFlood->opacity = 1; +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPFeFlood variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_feFlood_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) feFlood_parent_class)->build) { + ((SPObjectClass *) feFlood_parent_class)->build(object, document, repr); + } + + /*LOAD ATTRIBUTES FROM REPR HERE*/ + sp_object_read_attr(object, "flood-opacity"); + sp_object_read_attr(object, "flood-color"); +} + +/** + * Drops any allocated memory. + */ +static void +sp_feFlood_release(SPObject *object) +{ + if (((SPObjectClass *) feFlood_parent_class)->release) + ((SPObjectClass *) feFlood_parent_class)->release(object); +} + +/** + * Sets a specific value in the SPFeFlood. + */ +static void +sp_feFlood_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeFlood *feFlood = SP_FEFLOOD(object); + (void)feFlood; + gchar const *cend_ptr = NULL; + gchar *end_ptr = NULL; + guint32 read_color; + double read_num; + + switch(key) { + /*DEAL WITH SETTING ATTRIBUTES HERE*/ + case SP_PROP_FLOOD_COLOR: + cend_ptr = NULL; + read_color = sp_svg_read_color(value, &cend_ptr, 0xffffffff); + if (cend_ptr && read_color != feFlood->color){ + feFlood->color = read_color; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_PROP_FLOOD_OPACITY: + if (value) { + read_num = g_ascii_strtod(value, &end_ptr); + if (*end_ptr) { + g_warning("Unable to convert \"%s\" to number", value); + read_num = 1; + } + } + else { + read_num = 1; + } + if (read_num != feFlood->opacity){ + feFlood->opacity = read_num; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + default: + if (((SPObjectClass *) feFlood_parent_class)->set) + ((SPObjectClass *) feFlood_parent_class)->set(object, key, value); + break; + } + +} + +/** + * Receives update notifications. + */ +static void +sp_feFlood_update(SPObject *object, SPCtx *ctx, guint flags) +{ + if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | + SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { + + /* do something to trigger redisplay, updates? */ + + } + + if (((SPObjectClass *) feFlood_parent_class)->update) { + ((SPObjectClass *) feFlood_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_feFlood_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + // Inkscape-only object, not copied during an "plain SVG" dump: + if (flags & SP_OBJECT_WRITE_EXT) { + if (repr) { + // is this sane? + //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); + } else { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + } + + if (((SPObjectClass *) feFlood_parent_class)->write) { + ((SPObjectClass *) feFlood_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +static void sp_feFlood_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { + g_assert(primitive != NULL); + g_assert(filter != NULL); + + SPFeFlood *sp_flood = SP_FEFLOOD(primitive); + (void)sp_flood; + + int primitive_n = filter->add_primitive(NR::NR_FILTER_FLOOD); + NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); + NR::FilterFlood *nr_flood = dynamic_cast(nr_primitive); + g_assert(nr_flood != NULL); + + sp_filter_primitive_renderer_common(primitive, nr_primitive); + + nr_flood->set_opacity(sp_flood->opacity); + nr_flood->set_color(sp_flood->color); +} + + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/flood.h b/src/filters/flood.h new file mode 100644 index 000000000..046c0e868 --- /dev/null +++ b/src/filters/flood.h @@ -0,0 +1,49 @@ +#ifndef SP_FEFLOOD_H_SEEN +#define SP_FEFLOOD_H_SEEN + +/** \file + * SVG implementation, see Flood.cpp. + */ +/* + * Authors: + * Hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-filter.h" +#include "flood-fns.h" + +#include "display/nr-filter.h" +#include "display/nr-filter-flood.h" + +/* FeFlood base class */ +class SPFeFloodClass; + +struct SPFeFlood : public SPFilterPrimitive { + /** FLOOD ATTRIBUTES HERE */ + guint32 color; + double opacity; +}; + +struct SPFeFloodClass { + SPFilterPrimitiveClass parent_class; +}; + +GType sp_feFlood_get_type(); + + +#endif /* !SP_FEFLOOD_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/image-fns.h b/src/filters/image-fns.h new file mode 100644 index 000000000..0a8b453fe --- /dev/null +++ b/src/filters/image-fns.h @@ -0,0 +1,38 @@ +#ifndef SP_FEIMAGE_FNS_H +#define SP_FEIMAGE_FNS_H + +/** \file + * Macros and fn declarations related to gaussian blur filter. + */ + +#include +#include + +namespace Inkscape { +namespace XML { +class Node; +} +} + +class SPFeImage; + +#define SP_TYPE_FEIMAGE (sp_feImage_get_type()) +#define SP_FEIMAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEIMAGE, SPFeImage)) +#define SP_FEIMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEIMAGE, SPFeImageClass)) +#define SP_IS_FEIMAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEIMAGE)) +#define SP_IS_FEIMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEIMAGE)) + +GType sp_feImage_get_type(); + +#endif /* !SP_FEIMAGE_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/image.cpp b/src/filters/image.cpp new file mode 100644 index 000000000..d132d361c --- /dev/null +++ b/src/filters/image.cpp @@ -0,0 +1,264 @@ +#define __SP_FEIMAGE_CPP__ + +/** \file + * SVG implementation. + * + */ +/* + * Authors: + * Felipe Corrêa da Silva Sanches + * hugo Rodrigues + * + * Copyright (C) 2007 Felipe Sanches + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif +#include "uri.h" +#include "uri-references.h" +#include "attributes.h" +#include "svg/svg.h" +#include "image.h" +#include "xml/repr.h" +#include + +#include "display/nr-filter.h" +#include "display/nr-filter-image.h" + +/* FeImage base class */ + +static void sp_feImage_class_init(SPFeImageClass *klass); +static void sp_feImage_init(SPFeImage *feImage); + +static void sp_feImage_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_feImage_release(SPObject *object); +static void sp_feImage_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_feImage_update(SPObject *object, SPCtx *ctx, guint flags); +static Inkscape::XML::Node *sp_feImage_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +static void sp_feImage_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); + +static SPFilterPrimitiveClass *feImage_parent_class; + +GType +sp_feImage_get_type() +{ + static GType feImage_type = 0; + + if (!feImage_type) { + GTypeInfo feImage_info = { + sizeof(SPFeImageClass), + NULL, NULL, + (GClassInitFunc) sp_feImage_class_init, + NULL, NULL, + sizeof(SPFeImage), + 16, + (GInstanceInitFunc) sp_feImage_init, + NULL, /* value_table */ + }; + feImage_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeImage", &feImage_info, (GTypeFlags)0); + } + return feImage_type; +} + +static void +sp_feImage_class_init(SPFeImageClass *klass) +{ + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + SPFilterPrimitiveClass * sp_primitive_class = (SPFilterPrimitiveClass *)klass; + + feImage_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_feImage_build; + sp_object_class->release = sp_feImage_release; + sp_object_class->write = sp_feImage_write; + sp_object_class->set = sp_feImage_set; + sp_object_class->update = sp_feImage_update; + + sp_primitive_class->build_renderer = sp_feImage_build_renderer; +} + +static void +sp_feImage_init(SPFeImage */*feImage*/) +{ +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPFeImage variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_feImage_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + // Save document reference so we can load images with relative paths. + SPFeImage *feImage = SP_FEIMAGE(object); + feImage->document = document; + + if (((SPObjectClass *) feImage_parent_class)->build) { + ((SPObjectClass *) feImage_parent_class)->build(object, document, repr); + } + + /*LOAD ATTRIBUTES FROM REPR HERE*/ + + sp_object_read_attr(object, "x"); + sp_object_read_attr(object, "y"); + sp_object_read_attr(object, "width"); + sp_object_read_attr(object, "height"); + sp_object_read_attr(object, "xlink:href"); + +} + +/** + * Drops any allocated memory. + */ +static void +sp_feImage_release(SPObject *object) +{ + SPFeImage *feImage = SP_FEIMAGE(object); + feImage->_modified_connection.disconnect(); + if (feImage->SVGElemRef) delete feImage->SVGElemRef; + + if (((SPObjectClass *) feImage_parent_class)->release) + ((SPObjectClass *) feImage_parent_class)->release(object); +} + +static void +sp_feImage_elem_modified(SPObject* /*href*/, guint /*flags*/, SPObject* obj) +{ + obj->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); +} + +/** + * Sets a specific value in the SPFeImage. + */ +static void +sp_feImage_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeImage *feImage = SP_FEIMAGE(object); + (void)feImage; + Inkscape::URI* SVGElem_uri; + switch(key) { + /*DEAL WITH SETTING ATTRIBUTES HERE*/ + case SP_ATTR_XLINK_HREF: + if (feImage->href) g_free(feImage->href); + feImage->href = (value) ? g_strdup (value) : NULL; + if (!feImage->href) return; + try{ + SVGElem_uri = new Inkscape::URI(feImage->href); + feImage->SVGElemRef = new Inkscape::URIReference(feImage->document); + feImage->from_element = true; + feImage->SVGElemRef->attach(*SVGElem_uri); + feImage->SVGElem = SP_ITEM(feImage->SVGElemRef->getObject()); + + g_free(SVGElem_uri); + feImage->_modified_connection = ((SPObject*) feImage->SVGElem)->connectModified(sigc::bind(sigc::ptr_fun(&sp_feImage_elem_modified), object)); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + } + catch(const Inkscape::UnsupportedURIException & e) + { + feImage->from_element = false; + g_warning("caught Inkscape::UnsupportedURIException in sp_feImage_set"); + break; + } + + + case SP_ATTR_X: + feImage->x.readOrUnset(value); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + case SP_ATTR_Y: + feImage->y.readOrUnset(value); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + case SP_ATTR_WIDTH: + feImage->width.readOrUnset(value); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + case SP_ATTR_HEIGHT: + feImage->height.readOrUnset(value); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + default: + if (((SPObjectClass *) feImage_parent_class)->set) + ((SPObjectClass *) feImage_parent_class)->set(object, key, value); + break; + } + +} + +/** + * Receives update notifications. + */ +static void +sp_feImage_update(SPObject *object, SPCtx *ctx, guint flags) +{ + + if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | + SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { + + /* do something to trigger redisplay, updates? */ + } + + if (((SPObjectClass *) feImage_parent_class)->update) { + ((SPObjectClass *) feImage_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_feImage_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + // Inkscape-only object, not copied during an "plain SVG" dump: + if (flags & SP_OBJECT_WRITE_EXT) { + if (repr) { + // is this sane? + //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); + } else { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + } + + if (((SPObjectClass *) feImage_parent_class)->write) { + ((SPObjectClass *) feImage_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +static void sp_feImage_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { + g_assert(primitive != NULL); + g_assert(filter != NULL); + + SPFeImage *sp_image = SP_FEIMAGE(primitive); + + int primitive_n = filter->add_primitive(NR::NR_FILTER_IMAGE); + NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); + NR::FilterImage *nr_image = dynamic_cast(nr_primitive); + g_assert(nr_image != NULL); + + sp_filter_primitive_renderer_common(primitive, nr_primitive); + + nr_image->from_element = sp_image->from_element; + nr_image->SVGElem = sp_image->SVGElem; + nr_image->set_region(sp_image->x, sp_image->y, sp_image->width, sp_image->height); + nr_image->set_href(sp_image->href); + nr_image->set_document(sp_image->document); +} + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/image.h b/src/filters/image.h new file mode 100644 index 000000000..8952aee6c --- /dev/null +++ b/src/filters/image.h @@ -0,0 +1,55 @@ +#ifndef SP_FEIMAGE_H_SEEN +#define SP_FEIMAGE_H_SEEN + +/** \file + * SVG implementation, see Image.cpp. + */ +/* + * Authors: + * Felipe Corrêa da Silva Sanches + * Hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-filter.h" +#include "image-fns.h" +#include "svg/svg-length.h" +#include "sp-item.h" +#include "uri-references.h" + +/* FeImage base class */ +class SPFeImageClass; + +struct SPFeImage : public SPFilterPrimitive { + /** IMAGE ATTRIBUTES HERE */ + gchar *href; + SVGLength x, y, height, width; + SPDocument *document; + bool from_element; + SPItem* SVGElem; + Inkscape::URIReference* SVGElemRef; + sigc::connection _modified_connection; +}; + +struct SPFeImageClass { + SPFilterPrimitiveClass parent_class; +}; + +GType sp_feImage_get_type(); + + +#endif /* !SP_FEIMAGE_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/makefile.in b/src/filters/makefile.in new file mode 100644 index 000000000..5aa76ce1b --- /dev/null +++ b/src/filters/makefile.in @@ -0,0 +1,17 @@ +# Convenience stub makefile to call the real Makefile. + +@SET_MAKE@ + +OBJEXT = @OBJEXT@ + +# Explicit so that it's the default rule. +all: + cd .. && $(MAKE) filters/all + +clean %.a %.$(OBJEXT): + cd .. && $(MAKE) filters/$@ + +.PHONY: all clean + +.SUFFIXES: +.SUFFIXES: .a .$(OBJEXT) diff --git a/src/filters/merge-fns.h b/src/filters/merge-fns.h new file mode 100644 index 000000000..24bda1ae2 --- /dev/null +++ b/src/filters/merge-fns.h @@ -0,0 +1,38 @@ +#ifndef SP_FEMERGE_FNS_H +#define SP_FEMERGE_FNS_H + +/** \file + * Macros and fn declarations related to gaussian blur filter. + */ + +#include +#include + +namespace Inkscape { +namespace XML { +class Node; +} +} + +class SPFeMerge; + +#define SP_TYPE_FEMERGE (sp_feMerge_get_type()) +#define SP_FEMERGE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEMERGE, SPFeMerge)) +#define SP_FEMERGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEMERGE, SPFeMergeClass)) +#define SP_IS_FEMERGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEMERGE)) +#define SP_IS_FEMERGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEMERGE)) + +GType sp_feMerge_get_type(); + +#endif /* !SP_FEMERGE_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/merge.cpp b/src/filters/merge.cpp new file mode 100644 index 000000000..079d1b19c --- /dev/null +++ b/src/filters/merge.cpp @@ -0,0 +1,203 @@ +#define __SP_FEMERGE_CPP__ + +/** \file + * SVG implementation. + * + */ +/* + * Authors: + * hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "attributes.h" +#include "svg/svg.h" +#include "xml/repr.h" + +#include "merge.h" +#include "mergenode.h" +#include "display/nr-filter-merge.h" + +/* FeMerge base class */ + +static void sp_feMerge_class_init(SPFeMergeClass *klass); +static void sp_feMerge_init(SPFeMerge *feMerge); + +static void sp_feMerge_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_feMerge_release(SPObject *object); +static void sp_feMerge_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_feMerge_update(SPObject *object, SPCtx *ctx, guint flags); +static Inkscape::XML::Node *sp_feMerge_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +static void sp_feMerge_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); + +static SPFilterPrimitiveClass *feMerge_parent_class; + +GType +sp_feMerge_get_type() +{ + static GType feMerge_type = 0; + + if (!feMerge_type) { + GTypeInfo feMerge_info = { + sizeof(SPFeMergeClass), + NULL, NULL, + (GClassInitFunc) sp_feMerge_class_init, + NULL, NULL, + sizeof(SPFeMerge), + 16, + (GInstanceInitFunc) sp_feMerge_init, + NULL, /* value_table */ + }; + feMerge_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeMerge", &feMerge_info, (GTypeFlags)0); + } + return feMerge_type; +} + +static void +sp_feMerge_class_init(SPFeMergeClass *klass) +{ + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; + + feMerge_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_feMerge_build; + sp_object_class->release = sp_feMerge_release; + sp_object_class->write = sp_feMerge_write; + sp_object_class->set = sp_feMerge_set; + sp_object_class->update = sp_feMerge_update; + + sp_primitive_class->build_renderer = sp_feMerge_build_renderer; +} + +static void +sp_feMerge_init(SPFeMerge */*feMerge*/) +{ +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPFeMerge variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_feMerge_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) feMerge_parent_class)->build) { + ((SPObjectClass *) feMerge_parent_class)->build(object, document, repr); + } + + /*LOAD ATTRIBUTES FROM REPR HERE*/ +} + +/** + * Drops any allocated memory. + */ +static void +sp_feMerge_release(SPObject *object) +{ + if (((SPObjectClass *) feMerge_parent_class)->release) + ((SPObjectClass *) feMerge_parent_class)->release(object); +} + +/** + * Sets a specific value in the SPFeMerge. + */ +static void +sp_feMerge_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeMerge *feMerge = SP_FEMERGE(object); + (void)feMerge; + + switch(key) { + /*DEAL WITH SETTING ATTRIBUTES HERE*/ + default: + if (((SPObjectClass *) feMerge_parent_class)->set) + ((SPObjectClass *) feMerge_parent_class)->set(object, key, value); + break; + } + +} + +/** + * Receives update notifications. + */ +static void +sp_feMerge_update(SPObject *object, SPCtx *ctx, guint flags) +{ + if (flags & SP_OBJECT_MODIFIED_FLAG) { + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + + if (((SPObjectClass *) feMerge_parent_class)->update) { + ((SPObjectClass *) feMerge_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_feMerge_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + // Inkscape-only object, not copied during an "plain SVG" dump: + if (flags & SP_OBJECT_WRITE_EXT) { + if (repr) { + // is this sane? + //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); + } else { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + } + + if (((SPObjectClass *) feMerge_parent_class)->write) { + ((SPObjectClass *) feMerge_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +static void sp_feMerge_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { + g_assert(primitive != NULL); + g_assert(filter != NULL); + + SPFeMerge *sp_merge = SP_FEMERGE(primitive); + (void)sp_merge; + + int primitive_n = filter->add_primitive(NR::NR_FILTER_MERGE); + NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); + NR::FilterMerge *nr_merge = dynamic_cast(nr_primitive); + g_assert(nr_merge != NULL); + + sp_filter_primitive_renderer_common(primitive, nr_primitive); + + SPObject *input = primitive->children; + int in_nr = 0; + while (input) { + if (SP_IS_FEMERGENODE(input)) { + SPFeMergeNode *node = SP_FEMERGENODE(input); + nr_merge->set_input(in_nr, node->input); + in_nr++; + } + input = input->next; + } +} + + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/merge.h b/src/filters/merge.h new file mode 100644 index 000000000..5d28faba9 --- /dev/null +++ b/src/filters/merge.h @@ -0,0 +1,44 @@ +#ifndef SP_FEMERGE_H_SEEN +#define SP_FEMERGE_H_SEEN + +/** \file + * SVG implementation, see Merge.cpp. + */ +/* + * Authors: + * Hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-filter.h" +#include "merge-fns.h" + +/* FeMerge base class */ +class SPFeMergeClass; + +struct SPFeMerge : public SPFilterPrimitive { + +}; + +struct SPFeMergeClass { + SPFilterPrimitiveClass parent_class; +}; + +GType sp_feMerge_get_type(); + + +#endif /* !SP_FEMERGE_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/mergenode.cpp b/src/filters/mergenode.cpp new file mode 100644 index 000000000..1f056a25f --- /dev/null +++ b/src/filters/mergenode.cpp @@ -0,0 +1,177 @@ +#define __SP_FEMERGENODE_CPP__ + +/** \file + * feMergeNode implementation. A feMergeNode contains the name of one + * input image for feMerge. + */ +/* + * Authors: + * Kees Cook + * Niko Kiirala + * + * Copyright (C) 2004,2007 authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "attributes.h" +#include "xml/repr.h" +#include "mergenode.h" +#include "merge.h" + +static void sp_feMergeNode_class_init(SPFeMergeNodeClass *klass); +static void sp_feMergeNode_init(SPFeMergeNode *skeleton); + +static void sp_feMergeNode_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_feMergeNode_release(SPObject *object); +static void sp_feMergeNode_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_feMergeNode_update(SPObject *object, SPCtx *ctx, guint flags); +static Inkscape::XML::Node *sp_feMergeNode_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); + +static SPObjectClass *feMergeNode_parent_class; + +GType +sp_feMergeNode_get_type() +{ + static GType feMergeNode_type = 0; + + if (!feMergeNode_type) { + GTypeInfo feMergeNode_info = { + sizeof(SPFeMergeNodeClass), + NULL, NULL, + (GClassInitFunc) sp_feMergeNode_class_init, + NULL, NULL, + sizeof(SPFeMergeNode), + 16, + (GInstanceInitFunc) sp_feMergeNode_init, + NULL, /* value_table */ + }; + feMergeNode_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeMergeNode", &feMergeNode_info, (GTypeFlags)0); + } + return feMergeNode_type; +} + +static void +sp_feMergeNode_class_init(SPFeMergeNodeClass *klass) +{ + //GObjectClass *gobject_class = (GObjectClass *)klass; + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + + feMergeNode_parent_class = (SPObjectClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_feMergeNode_build; + sp_object_class->release = sp_feMergeNode_release; + sp_object_class->write = sp_feMergeNode_write; + sp_object_class->set = sp_feMergeNode_set; + sp_object_class->update = sp_feMergeNode_update; +} + +static void +sp_feMergeNode_init(SPFeMergeNode *feMergeNode) +{ + feMergeNode->input = NR::NR_FILTER_SLOT_NOT_SET; +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPFeMergeNode variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_feMergeNode_build(SPObject *object, SPDocument */*document*/, Inkscape::XML::Node */*repr*/) +{ + sp_object_read_attr(object, "in"); +} + +/** + * Drops any allocated memory. + */ +static void +sp_feMergeNode_release(SPObject *object) +{ + /* deal with our children and our selves here */ + + if (((SPObjectClass *) feMergeNode_parent_class)->release) + ((SPObjectClass *) feMergeNode_parent_class)->release(object); +} + +/** + * Sets a specific value in the SPFeMergeNode. + */ +static void +sp_feMergeNode_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeMergeNode *feMergeNode = SP_FEMERGENODE(object); + SPFeMerge *parent = SP_FEMERGE(object->parent); + + if (key == SP_ATTR_IN) { + int input = sp_filter_primitive_read_in(parent, value); + if (input != feMergeNode->input) { + feMergeNode->input = input; + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + } + + /* See if any parents need this value. */ + if (((SPObjectClass *) feMergeNode_parent_class)->set) { + ((SPObjectClass *) feMergeNode_parent_class)->set(object, key, value); + } +} + +/** + * Receives update notifications. + */ +static void +sp_feMergeNode_update(SPObject *object, SPCtx *ctx, guint flags) +{ + //SPFeMergeNode *feMergeNode = SP_FEMERGENODE(object); + + if (flags & SP_OBJECT_MODIFIED_FLAG) { + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + + if (((SPObjectClass *) feMergeNode_parent_class)->update) { + ((SPObjectClass *) feMergeNode_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_feMergeNode_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + //SPFeMergeNode *feMergeNode = SP_FEMERGENODE(object); + + // Inkscape-only object, not copied during an "plain SVG" dump: + if (flags & SP_OBJECT_WRITE_EXT) { + if (repr) { + // is this sane? + //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); + } else { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + } + + if (((SPObjectClass *) feMergeNode_parent_class)->write) { + ((SPObjectClass *) feMergeNode_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/mergenode.h b/src/filters/mergenode.h new file mode 100644 index 000000000..8ec00bdcd --- /dev/null +++ b/src/filters/mergenode.h @@ -0,0 +1,49 @@ +#ifndef SP_FEMERGENODE_H_SEEN +#define SP_FEMERGENODE_H_SEEN + +/** \file + * feMergeNode implementation. A feMergeNode stores information about one + * input image for feMerge filter primitive. + */ +/* + * Authors: + * Kees Cook + * Niko Kiirala + * + * Copyright (C) 2004,2007 authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-object.h" + +#define SP_TYPE_FEMERGENODE (sp_feMergeNode_get_type()) +#define SP_FEMERGENODE(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_FEMERGENODE, SPFeMergeNode)) +#define SP_IS_FEMERGENODE(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), SP_TYPE_FEMERGENODE)) + +class SPFeMergeNode; +class SPFeMergeNodeClass; + +struct SPFeMergeNode : public SPObject { + int input; +}; + +struct SPFeMergeNodeClass { + SPObjectClass parent_class; +}; + +GType sp_feMergeNode_get_type(); + + +#endif /* !SP_FEMERGENODE_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/morphology-fns.h b/src/filters/morphology-fns.h new file mode 100644 index 000000000..a0550405d --- /dev/null +++ b/src/filters/morphology-fns.h @@ -0,0 +1,38 @@ +#ifndef SP_FEMORPHOLOGY_FNS_H +#define SP_FEMORPHOLOGY_FNS_H + +/** \file + * Macros and fn declarations related to gaussian blur filter. + */ + +#include +#include + +namespace Inkscape { +namespace XML { +class Node; +} +} + +class SPFeMorphology; + +#define SP_TYPE_FEMORPHOLOGY (sp_feMorphology_get_type()) +#define SP_FEMORPHOLOGY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEMORPHOLOGY, SPFeMorphology)) +#define SP_FEMORPHOLOGY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEMORPHOLOGY, SPFeMorphologyClass)) +#define SP_IS_FEMORPHOLOGY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEMORPHOLOGY)) +#define SP_IS_FEMORPHOLOGY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEMORPHOLOGY)) + +GType sp_feMorphology_get_type(); + +#endif /* !SP_FEMORPHOLOGY_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/morphology.cpp b/src/filters/morphology.cpp new file mode 100644 index 000000000..927616091 --- /dev/null +++ b/src/filters/morphology.cpp @@ -0,0 +1,229 @@ +#define __SP_FEMORPHOLOGY_CPP__ + +/** \file + * SVG implementation. + * + */ +/* + * Authors: + * Felipe Sanches + * Hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#include "attributes.h" +#include "svg/svg.h" +#include "morphology.h" +#include "xml/repr.h" +#include "display/nr-filter-morphology.h" + +/* FeMorphology base class */ + +static void sp_feMorphology_class_init(SPFeMorphologyClass *klass); +static void sp_feMorphology_init(SPFeMorphology *feMorphology); + +static void sp_feMorphology_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_feMorphology_release(SPObject *object); +static void sp_feMorphology_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_feMorphology_update(SPObject *object, SPCtx *ctx, guint flags); +static Inkscape::XML::Node *sp_feMorphology_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +static void sp_feMorphology_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); + +static SPFilterPrimitiveClass *feMorphology_parent_class; + +GType +sp_feMorphology_get_type() +{ + static GType feMorphology_type = 0; + + if (!feMorphology_type) { + GTypeInfo feMorphology_info = { + sizeof(SPFeMorphologyClass), + NULL, NULL, + (GClassInitFunc) sp_feMorphology_class_init, + NULL, NULL, + sizeof(SPFeMorphology), + 16, + (GInstanceInitFunc) sp_feMorphology_init, + NULL, /* value_table */ + }; + feMorphology_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeMorphology", &feMorphology_info, (GTypeFlags)0); + } + return feMorphology_type; +} + +static void +sp_feMorphology_class_init(SPFeMorphologyClass *klass) +{ + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; + + feMorphology_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_feMorphology_build; + sp_object_class->release = sp_feMorphology_release; + sp_object_class->write = sp_feMorphology_write; + sp_object_class->set = sp_feMorphology_set; + sp_object_class->update = sp_feMorphology_update; + sp_primitive_class->build_renderer = sp_feMorphology_build_renderer; +} + +static void +sp_feMorphology_init(SPFeMorphology *feMorphology) +{ + //Setting default values: + feMorphology->radius.set("0"); +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPFeMorphology variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_feMorphology_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) feMorphology_parent_class)->build) { + ((SPObjectClass *) feMorphology_parent_class)->build(object, document, repr); + } + + /*LOAD ATTRIBUTES FROM REPR HERE*/ + sp_object_read_attr(object, "operator"); + sp_object_read_attr(object, "radius"); +} + +/** + * Drops any allocated memory. + */ +static void +sp_feMorphology_release(SPObject *object) +{ + if (((SPObjectClass *) feMorphology_parent_class)->release) + ((SPObjectClass *) feMorphology_parent_class)->release(object); +} + +static NR::FilterMorphologyOperator sp_feMorphology_read_operator(gchar const *value){ + if (!value) return NR::MORPHOLOGY_OPERATOR_ERODE; //erode is default + switch(value[0]){ + case 'e': + if (strncmp(value, "erode", 5) == 0) return NR::MORPHOLOGY_OPERATOR_ERODE; + break; + case 'd': + if (strncmp(value, "dilate", 6) == 0) return NR::MORPHOLOGY_OPERATOR_DILATE; + break; + } + return NR::MORPHOLOGY_OPERATOR_ERODE; //erode is default +} + +/** + * Sets a specific value in the SPFeMorphology. + */ +static void +sp_feMorphology_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeMorphology *feMorphology = SP_FEMORPHOLOGY(object); + (void)feMorphology; + + NR::FilterMorphologyOperator read_operator; + switch(key) { + /*DEAL WITH SETTING ATTRIBUTES HERE*/ + case SP_ATTR_OPERATOR: + read_operator = sp_feMorphology_read_operator(value); + if (read_operator != feMorphology->Operator){ + feMorphology->Operator = read_operator; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_RADIUS: + feMorphology->radius.set(value); + //From SVG spec: If is not provided, it defaults to . + if (feMorphology->radius.optNumIsSet() == false) + feMorphology->radius.setOptNumber(feMorphology->radius.getNumber()); + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + default: + if (((SPObjectClass *) feMorphology_parent_class)->set) + ((SPObjectClass *) feMorphology_parent_class)->set(object, key, value); + break; + } + +} + +/** + * Receives update notifications. + */ +static void +sp_feMorphology_update(SPObject *object, SPCtx *ctx, guint flags) +{ + if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | + SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { + + /* do something to trigger redisplay, updates? */ + + } + + if (((SPObjectClass *) feMorphology_parent_class)->update) { + ((SPObjectClass *) feMorphology_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_feMorphology_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + // Inkscape-only object, not copied during an "plain SVG" dump: + if (flags & SP_OBJECT_WRITE_EXT) { + if (repr) { + // is this sane? + //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); + } else { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + } + + if (((SPObjectClass *) feMorphology_parent_class)->write) { + ((SPObjectClass *) feMorphology_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +static void sp_feMorphology_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { + g_assert(primitive != NULL); + g_assert(filter != NULL); + + SPFeMorphology *sp_morphology = SP_FEMORPHOLOGY(primitive); + + int primitive_n = filter->add_primitive(NR::NR_FILTER_MORPHOLOGY); + NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); + NR::FilterMorphology *nr_morphology = dynamic_cast(nr_primitive); + g_assert(nr_morphology != NULL); + + sp_filter_primitive_renderer_common(primitive, nr_primitive); + + nr_morphology->set_operator(sp_morphology->Operator); + nr_morphology->set_xradius( sp_morphology->radius.getNumber() ); + nr_morphology->set_yradius( sp_morphology->radius.getOptNumber() ); +} + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/morphology.h b/src/filters/morphology.h new file mode 100644 index 000000000..8e807d73a --- /dev/null +++ b/src/filters/morphology.h @@ -0,0 +1,50 @@ +#ifndef SP_FEMORPHOLOGY_H_SEEN +#define SP_FEMORPHOLOGY_H_SEEN + +/** \file + * SVG implementation, see Morphology.cpp. + */ +/* + * Authors: + * Hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-filter.h" +#include "morphology-fns.h" +#include "number-opt-number.h" +#include "display/nr-filter.h" +#include "display/nr-filter-morphology.h" + + +/* FeMorphology base class */ +class SPFeMorphologyClass; + +struct SPFeMorphology : public SPFilterPrimitive { + /** MORPHOLOGY ATTRIBUTES HERE */ + NR::FilterMorphologyOperator Operator; + NumberOptNumber radius; +}; + +struct SPFeMorphologyClass { + SPFilterPrimitiveClass parent_class; +}; + +GType sp_feMorphology_get_type(); + + +#endif /* !SP_FEMORPHOLOGY_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/offset-fns.h b/src/filters/offset-fns.h new file mode 100644 index 000000000..38561c188 --- /dev/null +++ b/src/filters/offset-fns.h @@ -0,0 +1,38 @@ +#ifndef SP_FEOFFSET_FNS_H +#define SP_FEOFFSET_FNS_H + +/** \file + * Macros and fn declarations related to gaussian blur filter. + */ + +#include +#include + +namespace Inkscape { +namespace XML { +class Node; +} +} + +class SPFeOffset; + +#define SP_TYPE_FEOFFSET (sp_feOffset_get_type()) +#define SP_FEOFFSET(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEOFFSET, SPFeOffset)) +#define SP_FEOFFSET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEOFFSET, SPFeOffsetClass)) +#define SP_IS_FEOFFSET(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEOFFSET)) +#define SP_IS_FEOFFSET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEOFFSET)) + +GType sp_feOffset_get_type(); + +#endif /* !SP_FEOFFSET_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/offset.cpp b/src/filters/offset.cpp new file mode 100644 index 000000000..084863612 --- /dev/null +++ b/src/filters/offset.cpp @@ -0,0 +1,214 @@ +#define __SP_FEOFFSET_CPP__ + +/** \file + * SVG implementation. + * + */ +/* + * Authors: + * hugo Rodrigues + * Niko Kiirala + * + * Copyright (C) 2006,2007 authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "attributes.h" +#include "svg/svg.h" +#include "offset.h" +#include "helper-fns.h" +#include "xml/repr.h" +#include "display/nr-filter-offset.h" + +/* FeOffset base class */ + +static void sp_feOffset_class_init(SPFeOffsetClass *klass); +static void sp_feOffset_init(SPFeOffset *feOffset); + +static void sp_feOffset_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_feOffset_release(SPObject *object); +static void sp_feOffset_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_feOffset_update(SPObject *object, SPCtx *ctx, guint flags); +static Inkscape::XML::Node *sp_feOffset_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +static void sp_feOffset_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); + +static SPFilterPrimitiveClass *feOffset_parent_class; + +GType +sp_feOffset_get_type() +{ + static GType feOffset_type = 0; + + if (!feOffset_type) { + GTypeInfo feOffset_info = { + sizeof(SPFeOffsetClass), + NULL, NULL, + (GClassInitFunc) sp_feOffset_class_init, + NULL, NULL, + sizeof(SPFeOffset), + 16, + (GInstanceInitFunc) sp_feOffset_init, + NULL, /* value_table */ + }; + feOffset_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeOffset", &feOffset_info, (GTypeFlags)0); + } + return feOffset_type; +} + +static void +sp_feOffset_class_init(SPFeOffsetClass *klass) +{ + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; + + feOffset_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_feOffset_build; + sp_object_class->release = sp_feOffset_release; + sp_object_class->write = sp_feOffset_write; + sp_object_class->set = sp_feOffset_set; + sp_object_class->update = sp_feOffset_update; + + sp_primitive_class->build_renderer = sp_feOffset_build_renderer; +} + +static void +sp_feOffset_init(SPFeOffset *feOffset) +{ + feOffset->dx = 0; + feOffset->dy = 0; +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPFeOffset variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_feOffset_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) feOffset_parent_class)->build) { + ((SPObjectClass *) feOffset_parent_class)->build(object, document, repr); + } + + sp_object_read_attr(object, "dx"); + sp_object_read_attr(object, "dy"); +} + +/** + * Drops any allocated memory. + */ +static void +sp_feOffset_release(SPObject *object) +{ + if (((SPObjectClass *) feOffset_parent_class)->release) + ((SPObjectClass *) feOffset_parent_class)->release(object); +} + +/** + * Sets a specific value in the SPFeOffset. + */ +static void +sp_feOffset_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeOffset *feOffset = SP_FEOFFSET(object); + + double read_num; + switch(key) { + case SP_ATTR_DX: + read_num = helperfns_read_number(value); + if (read_num != feOffset->dx) { + feOffset->dx = read_num; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_DY: + read_num = helperfns_read_number(value); + if (read_num != feOffset->dy) { + feOffset->dy = read_num; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + + /*DEAL WITH SETTING ATTRIBUTES HERE*/ + default: + if (((SPObjectClass *) feOffset_parent_class)->set) + ((SPObjectClass *) feOffset_parent_class)->set(object, key, value); + break; + } + +} + +/** + * Receives update notifications. + */ +static void +sp_feOffset_update(SPObject *object, SPCtx *ctx, guint flags) +{ + if (flags & SP_OBJECT_MODIFIED_FLAG) { + sp_object_read_attr(object, "dx"); + sp_object_read_attr(object, "dy"); + } + + if (((SPObjectClass *) feOffset_parent_class)->update) { + ((SPObjectClass *) feOffset_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_feOffset_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + // Inkscape-only object, not copied during an "plain SVG" dump: + if (flags & SP_OBJECT_WRITE_EXT) { + if (repr) { + // is this sane? + // Not. Causes coredumps. + // repr->mergeFrom(SP_OBJECT_REPR(object), "id"); + } else { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + } + + if (((SPObjectClass *) feOffset_parent_class)->write) { + ((SPObjectClass *) feOffset_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +static void sp_feOffset_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { + g_assert(primitive != NULL); + g_assert(filter != NULL); + + SPFeOffset *sp_offset = SP_FEOFFSET(primitive); + + int primitive_n = filter->add_primitive(NR::NR_FILTER_OFFSET); + NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); + NR::FilterOffset *nr_offset = dynamic_cast(nr_primitive); + g_assert(nr_offset != NULL); + + sp_filter_primitive_renderer_common(primitive, nr_primitive); + + nr_offset->set_dx(sp_offset->dx); + nr_offset->set_dy(sp_offset->dy); +} + + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/offset.h b/src/filters/offset.h new file mode 100644 index 000000000..72d852514 --- /dev/null +++ b/src/filters/offset.h @@ -0,0 +1,45 @@ +#ifndef SP_FEOFFSET_H_SEEN +#define SP_FEOFFSET_H_SEEN + +/** \file + * SVG implementation, see Offset.cpp. + */ +/* + * Authors: + * Hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-filter.h" +#include "offset-fns.h" + +/* FeOffset base class */ +class SPFeOffsetClass; + +struct SPFeOffset : public SPFilterPrimitive { + /** OFFSET ATTRIBUTES HERE */ + double dx, dy; +}; + +struct SPFeOffsetClass { + SPFilterPrimitiveClass parent_class; +}; + +GType sp_feOffset_get_type(); + + +#endif /* !SP_FEOFFSET_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/pointlight.cpp b/src/filters/pointlight.cpp new file mode 100644 index 000000000..ce58cf13e --- /dev/null +++ b/src/filters/pointlight.cpp @@ -0,0 +1,259 @@ +#define __SP_FEPOINTLIGHT_CPP__ + +/** \file + * SVG implementation. + */ +/* + * Authors: + * Hugo Rodrigues + * Niko Kiirala + * Jean-Rene Reinhard + * + * Copyright (C) 2006,2007 Authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#include "attributes.h" +#include "document.h" +#include "pointlight.h" +#include "diffuselighting-fns.h" +#include "specularlighting-fns.h" +#include "xml/repr.h" + +#define SP_MACROS_SILENT +#include "macros.h" + +/* FePointLight class */ + +static void sp_fepointlight_class_init(SPFePointLightClass *klass); +static void sp_fepointlight_init(SPFePointLight *fepointlight); + +static void sp_fepointlight_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_fepointlight_release(SPObject *object); +static void sp_fepointlight_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_fepointlight_update(SPObject *object, SPCtx *ctx, guint flags); +static Inkscape::XML::Node *sp_fepointlight_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); + +static SPObjectClass *fePointLight_parent_class; + +GType +sp_fepointlight_get_type() +{ + static GType fepointlight_type = 0; + + if (!fepointlight_type) { + GTypeInfo fepointlight_info = { + sizeof(SPFePointLightClass), + NULL, NULL, + (GClassInitFunc) sp_fepointlight_class_init, + NULL, NULL, + sizeof(SPFePointLight), + 16, + (GInstanceInitFunc) sp_fepointlight_init, + NULL, /* value_table */ + }; + fepointlight_type = g_type_register_static(SP_TYPE_OBJECT, "SPFePointLight", &fepointlight_info, (GTypeFlags)0); + } + return fepointlight_type; +} + +static void +sp_fepointlight_class_init(SPFePointLightClass *klass) +{ + + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + + fePointLight_parent_class = (SPObjectClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_fepointlight_build; + sp_object_class->release = sp_fepointlight_release; + sp_object_class->write = sp_fepointlight_write; + sp_object_class->set = sp_fepointlight_set; + sp_object_class->update = sp_fepointlight_update; +} + +static void +sp_fepointlight_init(SPFePointLight *fepointlight) +{ + fepointlight->x = 0; + fepointlight->y = 0; + fepointlight->z = 0; + + fepointlight->x_set = FALSE; + fepointlight->y_set = FALSE; + fepointlight->z_set = FALSE; +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPPointLight variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_fepointlight_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) fePointLight_parent_class)->build) { + ((SPObjectClass *) fePointLight_parent_class)->build(object, document, repr); + } + + //Read values of key attributes from XML nodes into object. + sp_object_read_attr(object, "x"); + sp_object_read_attr(object, "y"); + sp_object_read_attr(object, "z"); + +//is this necessary? + sp_document_add_resource(document, "fepointlight", object); +} + +/** + * Drops any allocated memory. + */ +static void +sp_fepointlight_release(SPObject *object) +{ + //SPFePointLight *fepointlight = SP_FEPOINTLIGHT(object); + + if (SP_OBJECT_DOCUMENT(object)) { + /* Unregister ourselves */ + sp_document_remove_resource(SP_OBJECT_DOCUMENT(object), "fepointlight", SP_OBJECT(object)); + } + +//TODO: release resources here +} + +/** + * Sets a specific value in the SPFePointLight. + */ +static void +sp_fepointlight_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFePointLight *fepointlight = SP_FEPOINTLIGHT(object); + gchar *end_ptr; + switch (key) { + case SP_ATTR_X: + end_ptr = NULL; + if (value) { + fepointlight->x = g_ascii_strtod(value, &end_ptr); + if (end_ptr) { + fepointlight->x_set = TRUE; + } + } + if (!value || !end_ptr) { + fepointlight->x = 0; + fepointlight->x_set = FALSE; + } + if (object->parent && + (SP_IS_FEDIFFUSELIGHTING(object->parent) || + SP_IS_FESPECULARLIGHTING(object->parent))) { + object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_Y: + end_ptr = NULL; + if (value) { + fepointlight->y = g_ascii_strtod(value, &end_ptr); + if (end_ptr) { + fepointlight->y_set = TRUE; + } + } + if (!value || !end_ptr) { + fepointlight->y = 0; + fepointlight->y_set = FALSE; + } + if (object->parent && + (SP_IS_FEDIFFUSELIGHTING(object->parent) || + SP_IS_FESPECULARLIGHTING(object->parent))) { + object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_Z: + end_ptr = NULL; + if (value) { + fepointlight->z = g_ascii_strtod(value, &end_ptr); + if (end_ptr) { + fepointlight->z_set = TRUE; + } + } + if (!value || !end_ptr) { + fepointlight->z = 0; + fepointlight->z_set = FALSE; + } + if (object->parent && + (SP_IS_FEDIFFUSELIGHTING(object->parent) || + SP_IS_FESPECULARLIGHTING(object->parent))) { + object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + default: + // See if any parents need this value. + if (((SPObjectClass *) fePointLight_parent_class)->set) { + ((SPObjectClass *) fePointLight_parent_class)->set(object, key, value); + } + break; + } +} + +/** + * * Receives update notifications. + * */ +static void +sp_fepointlight_update(SPObject *object, SPCtx *ctx, guint flags) +{ + SPFePointLight *fePointLight = SP_FEPOINTLIGHT(object); + (void)fePointLight; + + if (flags & SP_OBJECT_MODIFIED_FLAG) { + /* do something to trigger redisplay, updates? */ + sp_object_read_attr(object, "x"); + sp_object_read_attr(object, "y"); + sp_object_read_attr(object, "z"); + } + + if (((SPObjectClass *) fePointLight_parent_class)->update) { + ((SPObjectClass *) fePointLight_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_fepointlight_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + SPFePointLight *fepointlight = SP_FEPOINTLIGHT(object); + + if (!repr) { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + + if (fepointlight->x_set) + sp_repr_set_css_double(repr, "x", fepointlight->x); + if (fepointlight->y_set) + sp_repr_set_css_double(repr, "y", fepointlight->y); + if (fepointlight->z_set) + sp_repr_set_css_double(repr, "z", fepointlight->z); + + if (((SPObjectClass *) fePointLight_parent_class)->write) { + ((SPObjectClass *) fePointLight_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/pointlight.h b/src/filters/pointlight.h new file mode 100644 index 000000000..915d726af --- /dev/null +++ b/src/filters/pointlight.h @@ -0,0 +1,64 @@ +#ifndef SP_FEPOINTLIGHT_H_SEEN +#define SP_FEPOINTLIGHT_H_SEEN + +/** \file + * SVG implementation, see sp-filter.cpp. + */ +/* + * Authors: + * Hugo Rodrigues + * Niko Kiirala + * Jean-Rene Reinhard + * + * Copyright (C) 2006,2007 Authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-object.h" + +#define SP_TYPE_FEPOINTLIGHT (sp_fepointlight_get_type()) +#define SP_FEPOINTLIGHT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEPOINTLIGHT, SPFePointLight)) +#define SP_FEPOINTLIGHT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEPOINTLIGHT, SPFePointLightClass)) +#define SP_IS_FEPOINTLIGHT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEPOINTLIGHT)) +#define SP_IS_FEPOINTLIGHT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEPOINTLIGHT)) + +/* Distant light class */ + + +class SPFePointLight; +class SPFePointLightClass; + +struct SPFePointLight : public SPObject { + + /** x coordinate of the light source */ + gfloat x; + guint x_set : 1; + /** y coordinate of the light source */ + gfloat y; + guint y_set : 1; + /** z coordinate of the light source */ + gfloat z; + guint z_set : 1; + + //other fields +}; + +struct SPFePointLightClass { + SPObjectClass parent_class; +}; + +GType +sp_fepointlight_get_type(); +#endif /* !SP_FEPOINTLIGHT_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/specularlighting-fns.h b/src/filters/specularlighting-fns.h new file mode 100644 index 000000000..bd48ba684 --- /dev/null +++ b/src/filters/specularlighting-fns.h @@ -0,0 +1,38 @@ +#ifndef SP_FESPECULARLIGHTING_FNS_H +#define SP_FESPECULARLIGHTING_FNS_H + +/** \file + * Macros and fn declarations related to gaussian blur filter. + */ + +#include +#include + +namespace Inkscape { +namespace XML { +class Node; +} +} + +class SPFeSpecularLighting; + +#define SP_TYPE_FESPECULARLIGHTING (sp_feSpecularLighting_get_type()) +#define SP_FESPECULARLIGHTING(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FESPECULARLIGHTING, SPFeSpecularLighting)) +#define SP_FESPECULARLIGHTING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FESPECULARLIGHTING, SPFeSpecularLightingClass)) +#define SP_IS_FESPECULARLIGHTING(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FESPECULARLIGHTING)) +#define SP_IS_FESPECULARLIGHTING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FESPECULARLIGHTING)) + +GType sp_feSpecularLighting_get_type(); + +#endif /* !SP_FESPECULARLIGHTING_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/specularlighting.cpp b/src/filters/specularlighting.cpp new file mode 100644 index 000000000..baf9bb7c2 --- /dev/null +++ b/src/filters/specularlighting.cpp @@ -0,0 +1,409 @@ +#define __SP_FESPECULARLIGHTING_CPP__ + +/** \file + * SVG implementation. + * + */ +/* + * Authors: + * hugo Rodrigues + * Jean-Rene Reinhard + * + * Copyright (C) 2006 Hugo Rodrigues + * 2007 authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "attributes.h" +#include "svg/svg.h" +#include "sp-object.h" +#include "svg/svg-color.h" +#include "specularlighting.h" +#include "xml/repr.h" +#include "display/nr-filter-specularlighting.h" + +/* FeSpecularLighting base class */ + +static void sp_feSpecularLighting_class_init(SPFeSpecularLightingClass *klass); +static void sp_feSpecularLighting_init(SPFeSpecularLighting *feSpecularLighting); + +static void sp_feSpecularLighting_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_feSpecularLighting_release(SPObject *object); +static void sp_feSpecularLighting_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_feSpecularLighting_update(SPObject *object, SPCtx *ctx, guint flags); +//we assume that svg:feSpecularLighting can have any number of children +//only the first one is considered as the light source of the filter +//TODO is that right? +//if not modify child_added and remove_child to raise errors +static void sp_feSpecularLighting_child_added(SPObject *object, + Inkscape::XML::Node *child, + Inkscape::XML::Node *ref); +static void sp_feSpecularLighting_remove_child(SPObject *object, Inkscape::XML::Node *child); +static void sp_feSpecularLighting_order_changed(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref); +static Inkscape::XML::Node *sp_feSpecularLighting_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +static void sp_feSpecularLighting_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); +static void sp_feSpecularLighting_children_modified(SPFeSpecularLighting *sp_specularlighting); + +static SPFilterPrimitiveClass *feSpecularLighting_parent_class; + +GType +sp_feSpecularLighting_get_type() +{ + static GType feSpecularLighting_type = 0; + + if (!feSpecularLighting_type) { + GTypeInfo feSpecularLighting_info = { + sizeof(SPFeSpecularLightingClass), + NULL, NULL, + (GClassInitFunc) sp_feSpecularLighting_class_init, + NULL, NULL, + sizeof(SPFeSpecularLighting), + 16, + (GInstanceInitFunc) sp_feSpecularLighting_init, + NULL, /* value_table */ + }; + feSpecularLighting_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeSpecularLighting", &feSpecularLighting_info, (GTypeFlags)0); + } + return feSpecularLighting_type; +} + +static void +sp_feSpecularLighting_class_init(SPFeSpecularLightingClass *klass) +{ + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; + feSpecularLighting_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_feSpecularLighting_build; + sp_object_class->release = sp_feSpecularLighting_release; + sp_object_class->write = sp_feSpecularLighting_write; + sp_object_class->set = sp_feSpecularLighting_set; + sp_object_class->update = sp_feSpecularLighting_update; + sp_object_class->child_added = sp_feSpecularLighting_child_added; + sp_object_class->remove_child = sp_feSpecularLighting_remove_child; + sp_object_class->order_changed = sp_feSpecularLighting_order_changed; + + sp_primitive_class->build_renderer = sp_feSpecularLighting_build_renderer; +} + +static void +sp_feSpecularLighting_init(SPFeSpecularLighting *feSpecularLighting) +{ + feSpecularLighting->surfaceScale = 1; + feSpecularLighting->specularConstant = 1; + feSpecularLighting->specularExponent = 1; + feSpecularLighting->lighting_color = 0xffffffff; + //TODO kernelUnit + feSpecularLighting->renderer = NULL; + + feSpecularLighting->surfaceScale_set = FALSE; + feSpecularLighting->specularConstant_set = FALSE; + feSpecularLighting->specularExponent_set = FALSE; + feSpecularLighting->lighting_color_set = FALSE; +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPFeSpecularLighting variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_feSpecularLighting_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) feSpecularLighting_parent_class)->build) { + ((SPObjectClass *) feSpecularLighting_parent_class)->build(object, document, repr); + } + + /*LOAD ATTRIBUTES FROM REPR HERE*/ + sp_object_read_attr(object, "surfaceScale"); + sp_object_read_attr(object, "specularConstant"); + sp_object_read_attr(object, "specularExponent"); + sp_object_read_attr(object, "kernelUnitLength"); + sp_object_read_attr(object, "lighting-color"); + +} + +/** + * Drops any allocated memory. + */ +static void +sp_feSpecularLighting_release(SPObject *object) +{ + if (((SPObjectClass *) feSpecularLighting_parent_class)->release) + ((SPObjectClass *) feSpecularLighting_parent_class)->release(object); +} + +/** + * Sets a specific value in the SPFeSpecularLighting. + */ +static void +sp_feSpecularLighting_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeSpecularLighting *feSpecularLighting = SP_FESPECULARLIGHTING(object); + gchar const *cend_ptr = NULL; + gchar *end_ptr = NULL; + switch(key) { + /*DEAL WITH SETTING ATTRIBUTES HERE*/ +//TODO test forbidden values + case SP_ATTR_SURFACESCALE: + end_ptr = NULL; + if (value) { + feSpecularLighting->surfaceScale = g_ascii_strtod(value, &end_ptr); + if (end_ptr) { + feSpecularLighting->surfaceScale_set = TRUE; + } else { + g_warning("feSpecularLighting: surfaceScale should be a number ... defaulting to 1"); + } + + } + //if the attribute is not set or has an unreadable value + if (!value || !end_ptr) { + feSpecularLighting->surfaceScale = 1; + feSpecularLighting->surfaceScale_set = FALSE; + } + if (feSpecularLighting->renderer) { + feSpecularLighting->renderer->surfaceScale = feSpecularLighting->surfaceScale; + } + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + case SP_ATTR_SPECULARCONSTANT: + end_ptr = NULL; + if (value) { + feSpecularLighting->specularConstant = g_ascii_strtod(value, &end_ptr); + if (end_ptr && feSpecularLighting->specularConstant >= 0) { + feSpecularLighting->specularConstant_set = TRUE; + } else { + end_ptr = NULL; + g_warning("feSpecularLighting: specularConstant should be a positive number ... defaulting to 1"); + } + } + if (!value || !end_ptr) { + feSpecularLighting->specularConstant = 1; + feSpecularLighting->specularConstant_set = FALSE; + } + if (feSpecularLighting->renderer) { + feSpecularLighting->renderer->specularConstant = feSpecularLighting->specularConstant; + } + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + case SP_ATTR_SPECULAREXPONENT: + end_ptr = NULL; + if (value) { + feSpecularLighting->specularExponent = g_ascii_strtod(value, &end_ptr); + if (feSpecularLighting->specularExponent >= 1 && feSpecularLighting->specularExponent <= 128) { + feSpecularLighting->specularExponent_set = TRUE; + } else { + end_ptr = NULL; + g_warning("feSpecularLighting: specularExponent should be a number in range [1, 128] ... defaulting to 1"); + } + } + if (!value || !end_ptr) { + feSpecularLighting->specularExponent = 1; + feSpecularLighting->specularExponent_set = FALSE; + } + if (feSpecularLighting->renderer) { + feSpecularLighting->renderer->specularExponent = feSpecularLighting->specularExponent; + } + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + case SP_ATTR_KERNELUNITLENGTH: + //TODO kernelUnit + //feSpecularLighting->kernelUnitLength.set(value); + /*TODOif (feSpecularLighting->renderer) { + feSpecularLighting->renderer->surfaceScale = feSpecularLighting->renderer; + } + */ + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + case SP_PROP_LIGHTING_COLOR: + cend_ptr = NULL; + feSpecularLighting->lighting_color = sp_svg_read_color(value, &cend_ptr, 0xffffffff); + //if a value was read + if (cend_ptr) { + feSpecularLighting->lighting_color_set = TRUE; + } else { + //lighting_color already contains the default value + feSpecularLighting->lighting_color_set = FALSE; + } + if (feSpecularLighting->renderer) { + feSpecularLighting->renderer->lighting_color = feSpecularLighting->lighting_color; + } + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + default: + if (((SPObjectClass *) feSpecularLighting_parent_class)->set) + ((SPObjectClass *) feSpecularLighting_parent_class)->set(object, key, value); + break; + } + +} + +/** + * Receives update notifications. + */ +static void +sp_feSpecularLighting_update(SPObject *object, SPCtx *ctx, guint flags) +{ + if (flags & (SP_OBJECT_MODIFIED_FLAG)) { + sp_object_read_attr(object, "surfaceScale"); + sp_object_read_attr(object, "specularConstant"); + sp_object_read_attr(object, "specularExponent"); + sp_object_read_attr(object, "kernelUnitLength"); + sp_object_read_attr(object, "lighting-color"); + } + + if (((SPObjectClass *) feSpecularLighting_parent_class)->update) { + ((SPObjectClass *) feSpecularLighting_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_feSpecularLighting_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + SPFeSpecularLighting *fespecularlighting = SP_FESPECULARLIGHTING(object); + + // Inkscape-only object, not copied during an "plain SVG" dump: + if (flags & SP_OBJECT_WRITE_EXT) { + if (repr) { + // is this sane? + //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); + } else { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + } + if (fespecularlighting->surfaceScale_set) + sp_repr_set_css_double(repr, "surfaceScale", fespecularlighting->surfaceScale); + if (fespecularlighting->specularConstant_set) + sp_repr_set_css_double(repr, "specularConstant", fespecularlighting->specularConstant); + if (fespecularlighting->specularExponent_set) + sp_repr_set_css_double(repr, "specularExponent", fespecularlighting->specularExponent); + /*TODO kernelUnits */ + if (fespecularlighting->lighting_color_set) { + gchar c[64]; + sp_svg_write_color(c, sizeof(c), fespecularlighting->lighting_color); + repr->setAttribute("lighting-color", c); + } + if (((SPObjectClass *) feSpecularLighting_parent_class)->write) { + ((SPObjectClass *) feSpecularLighting_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +/** + * Callback for child_added event. + */ +static void +sp_feSpecularLighting_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref) +{ + SPFeSpecularLighting *f = SP_FESPECULARLIGHTING(object); + + if (((SPObjectClass *) feSpecularLighting_parent_class)->child_added) + (* ((SPObjectClass *) feSpecularLighting_parent_class)->child_added)(object, child, ref); + + sp_feSpecularLighting_children_modified(f); + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); +} + + +/** + * Callback for remove_child event. + */ +static void +sp_feSpecularLighting_remove_child(SPObject *object, Inkscape::XML::Node *child) +{ + SPFeSpecularLighting *f = SP_FESPECULARLIGHTING(object); + + if (((SPObjectClass *) feSpecularLighting_parent_class)->remove_child) + (* ((SPObjectClass *) feSpecularLighting_parent_class)->remove_child)(object, child); + + sp_feSpecularLighting_children_modified(f); + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); +} + +static void +sp_feSpecularLighting_order_changed (SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref) +{ + SPFeSpecularLighting *f = SP_FESPECULARLIGHTING(object); + if (((SPObjectClass *) (feSpecularLighting_parent_class))->order_changed) + (* ((SPObjectClass *) (feSpecularLighting_parent_class))->order_changed) (object, child, old_ref, new_ref); + + sp_feSpecularLighting_children_modified(f); + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); +} + +static void sp_feSpecularLighting_children_modified(SPFeSpecularLighting *sp_specularlighting) +{ + if (sp_specularlighting->renderer) { + sp_specularlighting->renderer->light_type = NR::NO_LIGHT; + if (SP_IS_FEDISTANTLIGHT(sp_specularlighting->children)) { + sp_specularlighting->renderer->light_type = NR::DISTANT_LIGHT; + sp_specularlighting->renderer->light.distant = SP_FEDISTANTLIGHT(sp_specularlighting->children); + } + if (SP_IS_FEPOINTLIGHT(sp_specularlighting->children)) { + sp_specularlighting->renderer->light_type = NR::POINT_LIGHT; + sp_specularlighting->renderer->light.point = SP_FEPOINTLIGHT(sp_specularlighting->children); + } + if (SP_IS_FESPOTLIGHT(sp_specularlighting->children)) { + sp_specularlighting->renderer->light_type = NR::SPOT_LIGHT; + sp_specularlighting->renderer->light.spot = SP_FESPOTLIGHT(sp_specularlighting->children); + } + } +} + +static void sp_feSpecularLighting_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { + g_assert(primitive != NULL); + g_assert(filter != NULL); + + SPFeSpecularLighting *sp_specularlighting = SP_FESPECULARLIGHTING(primitive); + + int primitive_n = filter->add_primitive(NR::NR_FILTER_SPECULARLIGHTING); + NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); + NR::FilterSpecularLighting *nr_specularlighting = dynamic_cast(nr_primitive); + g_assert(nr_specularlighting != NULL); + + sp_specularlighting->renderer = nr_specularlighting; + sp_filter_primitive_renderer_common(primitive, nr_primitive); + + nr_specularlighting->specularConstant = sp_specularlighting->specularConstant; + nr_specularlighting->specularExponent = sp_specularlighting->specularExponent; + nr_specularlighting->surfaceScale = sp_specularlighting->surfaceScale; + nr_specularlighting->lighting_color = sp_specularlighting->lighting_color; + //We assume there is at most one child + nr_specularlighting->light_type = NR::NO_LIGHT; + if (SP_IS_FEDISTANTLIGHT(primitive->children)) { + nr_specularlighting->light_type = NR::DISTANT_LIGHT; + nr_specularlighting->light.distant = SP_FEDISTANTLIGHT(primitive->children); + } + if (SP_IS_FEPOINTLIGHT(primitive->children)) { + nr_specularlighting->light_type = NR::POINT_LIGHT; + nr_specularlighting->light.point = SP_FEPOINTLIGHT(primitive->children); + } + if (SP_IS_FESPOTLIGHT(primitive->children)) { + nr_specularlighting->light_type = NR::SPOT_LIGHT; + nr_specularlighting->light.spot = SP_FESPOTLIGHT(primitive->children); + } + + //nr_offset->set_dx(sp_offset->dx); + //nr_offset->set_dy(sp_offset->dy); +} + + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/specularlighting.h b/src/filters/specularlighting.h new file mode 100644 index 000000000..c2a55df51 --- /dev/null +++ b/src/filters/specularlighting.h @@ -0,0 +1,66 @@ +#ifndef SP_FESPECULARLIGHTING_H_SEEN +#define SP_FESPECULARLIGHTING_H_SEEN + +/** \file + * SVG implementation, see SpecularLighting.cpp. + */ +/* + * Authors: + * Hugo Rodrigues + * Jean-Rene Reinhard + * + * Copyright (C) 2006 Hugo Rodrigues + * 2007 authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-filter.h" +#include "specularlighting-fns.h" + +namespace NR { +class FilterSpecularLighting; +} + +/* FeSpecularLighting base class */ +class SPFeSpecularLightingClass; + +struct SPFeSpecularLighting : public SPFilterPrimitive { + /** SPECULARLIGHTING ATTRIBUTES HERE */ + /** surfaceScale attribute */ + gfloat surfaceScale; + guint surfaceScale_set : 1; + /** specularConstant attribute */ + gfloat specularConstant; + guint specularConstant_set : 1; + /** specularConstant attribute */ + gfloat specularExponent; + guint specularExponent_set : 1; + /** kernelUnitLenght attribute */ + NumberOptNumber kernelUnitLength; + /** lighting-color property */ + guint32 lighting_color; + guint lighting_color_set : 1; + + NR::FilterSpecularLighting *renderer; +}; + +struct SPFeSpecularLightingClass { + SPFilterPrimitiveClass parent_class; +}; + +GType sp_feSpecularLighting_get_type(); + + +#endif /* !SP_FESPECULARLIGHTING_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/spotlight.cpp b/src/filters/spotlight.cpp new file mode 100644 index 000000000..3b518f0b4 --- /dev/null +++ b/src/filters/spotlight.cpp @@ -0,0 +1,372 @@ +#define __SP_FESPOTLIGHT_CPP__ + +/** \file + * SVG implementation. + */ +/* + * Authors: + * Hugo Rodrigues + * Niko Kiirala + * Jean-Rene Reinhard + * + * Copyright (C) 2006,2007 Authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#include "attributes.h" +#include "document.h" +#include "spotlight.h" +#include "diffuselighting-fns.h" +#include "specularlighting-fns.h" +#include "xml/repr.h" + +#define SP_MACROS_SILENT +#include "macros.h" + +/* FeSpotLight class */ + +static void sp_fespotlight_class_init(SPFeSpotLightClass *klass); +static void sp_fespotlight_init(SPFeSpotLight *fespotlight); + +static void sp_fespotlight_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_fespotlight_release(SPObject *object); +static void sp_fespotlight_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_fespotlight_update(SPObject *object, SPCtx *ctx, guint flags); +static Inkscape::XML::Node *sp_fespotlight_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); + +static SPObjectClass *feSpotLight_parent_class; + +GType +sp_fespotlight_get_type() +{ + static GType fespotlight_type = 0; + + if (!fespotlight_type) { + GTypeInfo fespotlight_info = { + sizeof(SPFeSpotLightClass), + NULL, NULL, + (GClassInitFunc) sp_fespotlight_class_init, + NULL, NULL, + sizeof(SPFeSpotLight), + 16, + (GInstanceInitFunc) sp_fespotlight_init, + NULL, /* value_table */ + }; + fespotlight_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeSpotLight", &fespotlight_info, (GTypeFlags)0); + } + return fespotlight_type; +} + +static void +sp_fespotlight_class_init(SPFeSpotLightClass *klass) +{ + + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + + feSpotLight_parent_class = (SPObjectClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_fespotlight_build; + sp_object_class->release = sp_fespotlight_release; + sp_object_class->write = sp_fespotlight_write; + sp_object_class->set = sp_fespotlight_set; + sp_object_class->update = sp_fespotlight_update; +} + +static void +sp_fespotlight_init(SPFeSpotLight *fespotlight) +{ + fespotlight->x = 0; + fespotlight->y = 0; + fespotlight->z = 0; + fespotlight->pointsAtX = 0; + fespotlight->pointsAtY = 0; + fespotlight->pointsAtZ = 0; + fespotlight->specularExponent = 1; + fespotlight->limitingConeAngle = 90; + + fespotlight->x_set = FALSE; + fespotlight->y_set = FALSE; + fespotlight->z_set = FALSE; + fespotlight->pointsAtX_set = FALSE; + fespotlight->pointsAtY_set = FALSE; + fespotlight->pointsAtZ_set = FALSE; + fespotlight->specularExponent_set = FALSE; + fespotlight->limitingConeAngle_set = FALSE; +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPPointLight variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_fespotlight_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) feSpotLight_parent_class)->build) { + ((SPObjectClass *) feSpotLight_parent_class)->build(object, document, repr); + } + + //Read values of key attributes from XML nodes into object. + sp_object_read_attr(object, "x"); + sp_object_read_attr(object, "y"); + sp_object_read_attr(object, "z"); + sp_object_read_attr(object, "pointsAtX"); + sp_object_read_attr(object, "pointsAtY"); + sp_object_read_attr(object, "pointsAtZ"); + sp_object_read_attr(object, "specularExponent"); + sp_object_read_attr(object, "limitingConeAngle"); + +//is this necessary? + sp_document_add_resource(document, "fespotlight", object); +} + +/** + * Drops any allocated memory. + */ +static void +sp_fespotlight_release(SPObject *object) +{ + //SPFeSpotLight *fespotlight = SP_FESPOTLIGHT(object); + + if (SP_OBJECT_DOCUMENT(object)) { + /* Unregister ourselves */ + sp_document_remove_resource(SP_OBJECT_DOCUMENT(object), "fespotlight", SP_OBJECT(object)); + } + +//TODO: release resources here +} + +/** + * Sets a specific value in the SPFeSpotLight. + */ +static void +sp_fespotlight_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeSpotLight *fespotlight = SP_FESPOTLIGHT(object); + gchar *end_ptr; + + switch (key) { + case SP_ATTR_X: + end_ptr = NULL; + if (value) { + fespotlight->x = g_ascii_strtod(value, &end_ptr); + if (end_ptr) + fespotlight->x_set = TRUE; + } + if(!value || !end_ptr) { + fespotlight->x = 0; + fespotlight->x_set = FALSE; + } + if (object->parent && + (SP_IS_FEDIFFUSELIGHTING(object->parent) || + SP_IS_FESPECULARLIGHTING(object->parent))) { + object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_Y: + end_ptr = NULL; + if (value) { + fespotlight->y = g_ascii_strtod(value, &end_ptr); + if (end_ptr) + fespotlight->y_set = TRUE; + } + if(!value || !end_ptr) { + fespotlight->y = 0; + fespotlight->y_set = FALSE; + } + if (object->parent && + (SP_IS_FEDIFFUSELIGHTING(object->parent) || + SP_IS_FESPECULARLIGHTING(object->parent))) { + object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_Z: + end_ptr = NULL; + if (value) { + fespotlight->z = g_ascii_strtod(value, &end_ptr); + if (end_ptr) + fespotlight->z_set = TRUE; + } + if(!value || !end_ptr) { + fespotlight->z = 0; + fespotlight->z_set = FALSE; + } + if (object->parent && + (SP_IS_FEDIFFUSELIGHTING(object->parent) || + SP_IS_FESPECULARLIGHTING(object->parent))) { + object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_POINTSATX: + end_ptr = NULL; + if (value) { + fespotlight->pointsAtX = g_ascii_strtod(value, &end_ptr); + if (end_ptr) + fespotlight->pointsAtX_set = TRUE; + } + if(!value || !end_ptr) { + fespotlight->pointsAtX = 0; + fespotlight->pointsAtX_set = FALSE; + } + if (object->parent && + (SP_IS_FEDIFFUSELIGHTING(object->parent) || + SP_IS_FESPECULARLIGHTING(object->parent))) { + object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_POINTSATY: + end_ptr = NULL; + if (value) { + fespotlight->pointsAtY = g_ascii_strtod(value, &end_ptr); + if (end_ptr) + fespotlight->pointsAtY_set = TRUE; + } + if(!value || !end_ptr) { + fespotlight->pointsAtY = 0; + fespotlight->pointsAtY_set = FALSE; + } + if (object->parent && + (SP_IS_FEDIFFUSELIGHTING(object->parent) || + SP_IS_FESPECULARLIGHTING(object->parent))) { + object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_POINTSATZ: + end_ptr = NULL; + if (value) { + fespotlight->pointsAtZ = g_ascii_strtod(value, &end_ptr); + if (end_ptr) + fespotlight->pointsAtZ_set = TRUE; + } + if(!value || !end_ptr) { + fespotlight->pointsAtZ = 0; + fespotlight->pointsAtZ_set = FALSE; + } + if (object->parent && + (SP_IS_FEDIFFUSELIGHTING(object->parent) || + SP_IS_FESPECULARLIGHTING(object->parent))) { + object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_SPECULAREXPONENT: + end_ptr = NULL; + if (value) { + fespotlight->specularExponent = g_ascii_strtod(value, &end_ptr); + if (end_ptr) + fespotlight->specularExponent_set = TRUE; + } + if(!value || !end_ptr) { + fespotlight->specularExponent = 1; + fespotlight->specularExponent_set = FALSE; + } + if (object->parent && + (SP_IS_FEDIFFUSELIGHTING(object->parent) || + SP_IS_FESPECULARLIGHTING(object->parent))) { + object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_LIMITINGCONEANGLE: + end_ptr = NULL; + if (value) { + fespotlight->limitingConeAngle = g_ascii_strtod(value, &end_ptr); + if (end_ptr) + fespotlight->limitingConeAngle_set = TRUE; + } + if(!value || !end_ptr) { + fespotlight->limitingConeAngle = 90; + fespotlight->limitingConeAngle_set = FALSE; + } + if (object->parent && + (SP_IS_FEDIFFUSELIGHTING(object->parent) || + SP_IS_FESPECULARLIGHTING(object->parent))) { + object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + default: + // See if any parents need this value. + if (((SPObjectClass *) feSpotLight_parent_class)->set) { + ((SPObjectClass *) feSpotLight_parent_class)->set(object, key, value); + } + break; + } +} + +/** + * * Receives update notifications. + * */ +static void +sp_fespotlight_update(SPObject *object, SPCtx *ctx, guint flags) +{ + SPFeSpotLight *feSpotLight = SP_FESPOTLIGHT(object); + (void)feSpotLight; + + if (flags & SP_OBJECT_MODIFIED_FLAG) { + /* do something to trigger redisplay, updates? */ + sp_object_read_attr(object, "x"); + sp_object_read_attr(object, "y"); + sp_object_read_attr(object, "z"); + sp_object_read_attr(object, "pointsAtX"); + sp_object_read_attr(object, "pointsAtY"); + sp_object_read_attr(object, "pointsAtZ"); + sp_object_read_attr(object, "specularExponent"); + sp_object_read_attr(object, "limitingConeAngle"); + } + + if (((SPObjectClass *) feSpotLight_parent_class)->update) { + ((SPObjectClass *) feSpotLight_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_fespotlight_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + SPFeSpotLight *fespotlight = SP_FESPOTLIGHT(object); + + if (!repr) { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + + if (fespotlight->x_set) + sp_repr_set_css_double(repr, "x", fespotlight->x); + if (fespotlight->y_set) + sp_repr_set_css_double(repr, "y", fespotlight->y); + if (fespotlight->z_set) + sp_repr_set_css_double(repr, "z", fespotlight->z); + if (fespotlight->pointsAtX_set) + sp_repr_set_css_double(repr, "pointsAtX", fespotlight->pointsAtX); + if (fespotlight->pointsAtY_set) + sp_repr_set_css_double(repr, "pointsAtY", fespotlight->pointsAtY); + if (fespotlight->pointsAtZ_set) + sp_repr_set_css_double(repr, "pointsAtZ", fespotlight->pointsAtZ); + if (fespotlight->specularExponent_set) + sp_repr_set_css_double(repr, "specularExponent", fespotlight->specularExponent); + if (fespotlight->limitingConeAngle_set) + sp_repr_set_css_double(repr, "limitingConeAngle", fespotlight->limitingConeAngle); + + if (((SPObjectClass *) feSpotLight_parent_class)->write) { + ((SPObjectClass *) feSpotLight_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/spotlight.h b/src/filters/spotlight.h new file mode 100644 index 000000000..d48cf6daa --- /dev/null +++ b/src/filters/spotlight.h @@ -0,0 +1,78 @@ +#ifndef SP_FESPOTLIGHT_H_SEEN +#define SP_FESPOTLIGHT_H_SEEN + +/** \file + * SVG implementation, see sp-filter.cpp. + */ +/* + * Authors: + * Hugo Rodrigues + * Niko Kiirala + * Jean-Rene Reinhard + * + * Copyright (C) 2006,2007 Authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-object.h" + +#define SP_TYPE_FESPOTLIGHT (sp_fespotlight_get_type()) +#define SP_FESPOTLIGHT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FESPOTLIGHT, SPFeSpotLight)) +#define SP_FESPOTLIGHT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FESPOTLIGHT, SPFeSpotLightClass)) +#define SP_IS_FESPOTLIGHT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FESPOTLIGHT)) +#define SP_IS_FESPOTLIGHT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FESPOTLIGHT)) + +/* Distant light class */ + + +class SPFeSpotLight; +class SPFeSpotLightClass; + +struct SPFeSpotLight : public SPObject { + + /** x coordinate of the light source */ + gfloat x; + guint x_set : 1; + /** y coordinate of the light source */ + gfloat y; + guint y_set : 1; + /** z coordinate of the light source */ + gfloat z; + guint z_set : 1; + /** x coordinate of the point the source is pointing at */ + gfloat pointsAtX; + guint pointsAtX_set : 1; + /** y coordinate of the point the source is pointing at */ + gfloat pointsAtY; + guint pointsAtY_set : 1; + /** z coordinate of the point the source is pointing at */ + gfloat pointsAtZ; + guint pointsAtZ_set : 1; + /** specular exponent (focus of the light) */ + gfloat specularExponent; + guint specularExponent_set : 1; + /** limiting cone angle */ + gfloat limitingConeAngle; + guint limitingConeAngle_set : 1; + //other fields +}; + +struct SPFeSpotLightClass { + SPObjectClass parent_class; +}; + +GType +sp_fespotlight_get_type(); +#endif /* !SP_FESPOTLIGHT_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/tile-fns.h b/src/filters/tile-fns.h new file mode 100644 index 000000000..b7c4c5f27 --- /dev/null +++ b/src/filters/tile-fns.h @@ -0,0 +1,38 @@ +#ifndef SP_FETILE_FNS_H +#define SP_FETILE_FNS_H + +/** \file + * Macros and fn declarations related to gaussian blur filter. + */ + +#include +#include + +namespace Inkscape { +namespace XML { +class Node; +} +} + +class SPFeTile; + +#define SP_TYPE_FETILE (sp_feTile_get_type()) +#define SP_FETILE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FETILE, SPFeTile)) +#define SP_FETILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FETILE, SPFeTileClass)) +#define SP_IS_FETILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FETILE)) +#define SP_IS_FETILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FETILE)) + +GType sp_feTile_get_type(); + +#endif /* !SP_FETILE_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/tile.cpp b/src/filters/tile.cpp new file mode 100644 index 000000000..ab4f9a27a --- /dev/null +++ b/src/filters/tile.cpp @@ -0,0 +1,191 @@ +#define __SP_FETILE_CPP__ + +/** \file + * SVG implementation. + * + */ +/* + * Authors: + * hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "attributes.h" +#include "svg/svg.h" +#include "tile.h" +#include "xml/repr.h" + + +/* FeTile base class */ + +static void sp_feTile_class_init(SPFeTileClass *klass); +static void sp_feTile_init(SPFeTile *feTile); + +static void sp_feTile_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_feTile_release(SPObject *object); +static void sp_feTile_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_feTile_update(SPObject *object, SPCtx *ctx, guint flags); +static Inkscape::XML::Node *sp_feTile_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +static void sp_feTile_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); + +static SPFilterPrimitiveClass *feTile_parent_class; + +GType +sp_feTile_get_type() +{ + static GType feTile_type = 0; + + if (!feTile_type) { + GTypeInfo feTile_info = { + sizeof(SPFeTileClass), + NULL, NULL, + (GClassInitFunc) sp_feTile_class_init, + NULL, NULL, + sizeof(SPFeTile), + 16, + (GInstanceInitFunc) sp_feTile_init, + NULL, /* value_table */ + }; + feTile_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeTile", &feTile_info, (GTypeFlags)0); + } + return feTile_type; +} + +static void +sp_feTile_class_init(SPFeTileClass *klass) +{ + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; + + feTile_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_feTile_build; + sp_object_class->release = sp_feTile_release; + sp_object_class->write = sp_feTile_write; + sp_object_class->set = sp_feTile_set; + sp_object_class->update = sp_feTile_update; + sp_primitive_class->build_renderer = sp_feTile_build_renderer; +} + +static void +sp_feTile_init(SPFeTile */*feTile*/) +{ +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPFeTile variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_feTile_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) feTile_parent_class)->build) { + ((SPObjectClass *) feTile_parent_class)->build(object, document, repr); + } + + /*LOAD ATTRIBUTES FROM REPR HERE*/ +} + +/** + * Drops any allocated memory. + */ +static void +sp_feTile_release(SPObject *object) +{ + if (((SPObjectClass *) feTile_parent_class)->release) + ((SPObjectClass *) feTile_parent_class)->release(object); +} + +/** + * Sets a specific value in the SPFeTile. + */ +static void +sp_feTile_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeTile *feTile = SP_FETILE(object); + (void)feTile; + + switch(key) { + /*DEAL WITH SETTING ATTRIBUTES HERE*/ + default: + if (((SPObjectClass *) feTile_parent_class)->set) + ((SPObjectClass *) feTile_parent_class)->set(object, key, value); + break; + } + +} + +/** + * Receives update notifications. + */ +static void +sp_feTile_update(SPObject *object, SPCtx *ctx, guint flags) +{ + if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | + SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { + + /* do something to trigger redisplay, updates? */ + + } + + if (((SPObjectClass *) feTile_parent_class)->update) { + ((SPObjectClass *) feTile_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_feTile_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + // Inkscape-only object, not copied during an "plain SVG" dump: + if (flags & SP_OBJECT_WRITE_EXT) { + if (repr) { + // is this sane? + //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); + } else { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + } + + if (((SPObjectClass *) feTile_parent_class)->write) { + ((SPObjectClass *) feTile_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +static void sp_feTile_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { + g_assert(primitive != NULL); + g_assert(filter != NULL); + + SPFeTile *sp_tile = SP_FETILE(primitive); + (void)sp_tile; + + int primitive_n = filter->add_primitive(NR::NR_FILTER_TILE); + NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); + NR::FilterTile *nr_tile = dynamic_cast(nr_primitive); + g_assert(nr_tile != NULL); + + sp_filter_primitive_renderer_common(primitive, nr_primitive); +} + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/tile.h b/src/filters/tile.h new file mode 100644 index 000000000..9e12ca7ee --- /dev/null +++ b/src/filters/tile.h @@ -0,0 +1,48 @@ +#ifndef SP_FETILE_H_SEEN +#define SP_FETILE_H_SEEN + +/** \file + * SVG implementation, see Tile.cpp. + */ +/* + * Authors: + * Hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-filter.h" +#include "tile-fns.h" + +#include "display/nr-filter.h" +#include "display/nr-filter-tile.h" + +/* FeTile base class */ +class SPFeTileClass; + +struct SPFeTile : public SPFilterPrimitive { + /** TILE ATTRIBUTES HERE */ + +}; + +struct SPFeTileClass { + SPFilterPrimitiveClass parent_class; +}; + +GType sp_feTile_get_type(); + + +#endif /* !SP_FETILE_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/turbulence-fns.h b/src/filters/turbulence-fns.h new file mode 100644 index 000000000..43b4450a5 --- /dev/null +++ b/src/filters/turbulence-fns.h @@ -0,0 +1,38 @@ +#ifndef SP_FETURBULENCE_FNS_H +#define SP_FETURBULENCE_FNS_H + +/** \file + * Macros and fn declarations related to gaussian blur filter. + */ + +#include +#include + +namespace Inkscape { +namespace XML { +class Node; +} +} + +class SPFeTurbulence; + +#define SP_TYPE_FETURBULENCE (sp_feTurbulence_get_type()) +#define SP_FETURBULENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FETURBULENCE, SPFeTurbulence)) +#define SP_FETURBULENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FETURBULENCE, SPFeTurbulenceClass)) +#define SP_IS_FETURBULENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FETURBULENCE)) +#define SP_IS_FETURBULENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FETURBULENCE)) + +GType sp_feTurbulence_get_type(); + +#endif /* !SP_FETURBULENCE_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/turbulence.cpp b/src/filters/turbulence.cpp new file mode 100644 index 000000000..1d7a1c840 --- /dev/null +++ b/src/filters/turbulence.cpp @@ -0,0 +1,283 @@ +#define __SP_FETURBULENCE_CPP__ + +/** \file + * SVG implementation. + * + */ +/* + * Authors: + * Felipe Corrêa da Silva Sanches + * hugo Rodrigues + * + * Copyright (C) 2007 Felipe Sanches + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "attributes.h" +#include "svg/svg.h" +#include "turbulence.h" +#include "helper-fns.h" +#include "xml/repr.h" +#include + +#include "display/nr-filter.h" +#include "display/nr-filter-turbulence.h" + +/* FeTurbulence base class */ + +static void sp_feTurbulence_class_init(SPFeTurbulenceClass *klass); +static void sp_feTurbulence_init(SPFeTurbulence *feTurbulence); + +static void sp_feTurbulence_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +static void sp_feTurbulence_release(SPObject *object); +static void sp_feTurbulence_set(SPObject *object, unsigned int key, gchar const *value); +static void sp_feTurbulence_update(SPObject *object, SPCtx *ctx, guint flags); +static Inkscape::XML::Node *sp_feTurbulence_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +static void sp_feTurbulence_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); + +static SPFilterPrimitiveClass *feTurbulence_parent_class; + +GType +sp_feTurbulence_get_type() +{ + static GType feTurbulence_type = 0; + + if (!feTurbulence_type) { + GTypeInfo feTurbulence_info = { + sizeof(SPFeTurbulenceClass), + NULL, NULL, + (GClassInitFunc) sp_feTurbulence_class_init, + NULL, NULL, + sizeof(SPFeTurbulence), + 16, + (GInstanceInitFunc) sp_feTurbulence_init, + NULL, /* value_table */ + }; + feTurbulence_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeTurbulence", &feTurbulence_info, (GTypeFlags)0); + } + return feTurbulence_type; +} + +static void +sp_feTurbulence_class_init(SPFeTurbulenceClass *klass) +{ + SPObjectClass *sp_object_class = (SPObjectClass *)klass; + SPFilterPrimitiveClass * sp_primitive_class = (SPFilterPrimitiveClass *)klass; + + feTurbulence_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); + + sp_object_class->build = sp_feTurbulence_build; + sp_object_class->release = sp_feTurbulence_release; + sp_object_class->write = sp_feTurbulence_write; + sp_object_class->set = sp_feTurbulence_set; + sp_object_class->update = sp_feTurbulence_update; + + sp_primitive_class->build_renderer = sp_feTurbulence_build_renderer; +} + +static void +sp_feTurbulence_init(SPFeTurbulence *feTurbulence) +{ + feTurbulence->updated=false; +} + +/** + * Reads the Inkscape::XML::Node, and initializes SPFeTurbulence variables. For this to get called, + * our name must be associated with a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. + */ +static void +sp_feTurbulence_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +{ + if (((SPObjectClass *) feTurbulence_parent_class)->build) { + ((SPObjectClass *) feTurbulence_parent_class)->build(object, document, repr); + } + + /*LOAD ATTRIBUTES FROM REPR HERE*/ + sp_object_read_attr(object, "baseFrequency"); + sp_object_read_attr(object, "numOctaves"); + sp_object_read_attr(object, "seed"); + sp_object_read_attr(object, "stitchTiles"); + sp_object_read_attr(object, "type"); +} + +/** + * Drops any allocated memory. + */ +static void +sp_feTurbulence_release(SPObject *object) +{ + if (((SPObjectClass *) feTurbulence_parent_class)->release) + ((SPObjectClass *) feTurbulence_parent_class)->release(object); +} + +static bool sp_feTurbulence_read_stitchTiles(gchar const *value){ + if (!value) return false; // 'noStitch' is default + switch(value[0]){ + case 's': + if (strncmp(value, "stitch", 6) == 0) return true; + break; + case 'n': + if (strncmp(value, "noStitch", 8) == 0) return false; + break; + } + return false; // 'noStitch' is default +} + +static NR::FilterTurbulenceType sp_feTurbulence_read_type(gchar const *value){ + if (!value) return NR::TURBULENCE_TURBULENCE; // 'turbulence' is default + switch(value[0]){ + case 'f': + if (strncmp(value, "fractalNoise", 12) == 0) return NR::TURBULENCE_FRACTALNOISE; + break; + case 't': + if (strncmp(value, "turbulence", 10) == 0) return NR::TURBULENCE_TURBULENCE; + break; + } + return NR::TURBULENCE_TURBULENCE; // 'turbulence' is default +} + +/** + * Sets a specific value in the SPFeTurbulence. + */ +static void +sp_feTurbulence_set(SPObject *object, unsigned int key, gchar const *value) +{ + SPFeTurbulence *feTurbulence = SP_FETURBULENCE(object); + (void)feTurbulence; + + int read_int; + double read_num; + bool read_bool; + NR::FilterTurbulenceType read_type; + + switch(key) { + /*DEAL WITH SETTING ATTRIBUTES HERE*/ + + case SP_ATTR_BASEFREQUENCY: + feTurbulence->baseFrequency.set(value); + //From SVG spec: If two s are provided, the first number represents a base frequency in the X direction and the second value represents a base frequency in the Y direction. If one number is provided, then that value is used for both X and Y. + if (feTurbulence->baseFrequency.optNumIsSet() == false) + feTurbulence->baseFrequency.setOptNumber(feTurbulence->baseFrequency.getNumber()); + feTurbulence->updated = false; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + case SP_ATTR_NUMOCTAVES: + read_int = (int) helperfns_read_number(value); + if (read_int != feTurbulence->numOctaves){ + feTurbulence->numOctaves = read_int; + feTurbulence->updated = false; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_SEED: + read_num = helperfns_read_number(value); + if (read_num != feTurbulence->seed){ + feTurbulence->seed = read_num; + feTurbulence->updated = false; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_STITCHTILES: + read_bool = sp_feTurbulence_read_stitchTiles(value); + if (read_bool != feTurbulence->stitchTiles){ + feTurbulence->stitchTiles = read_bool; + feTurbulence->updated = false; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + case SP_ATTR_TYPE: + read_type = sp_feTurbulence_read_type(value); + if (read_type != feTurbulence->type){ + feTurbulence->type = read_type; + feTurbulence->updated = false; + object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + } + break; + default: + if (((SPObjectClass *) feTurbulence_parent_class)->set) + ((SPObjectClass *) feTurbulence_parent_class)->set(object, key, value); + break; + } + +} + +/** + * Receives update notifications. + */ +static void +sp_feTurbulence_update(SPObject *object, SPCtx *ctx, guint flags) +{ + if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | + SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { + + /* do something to trigger redisplay, updates? */ + + } + + if (((SPObjectClass *) feTurbulence_parent_class)->update) { + ((SPObjectClass *) feTurbulence_parent_class)->update(object, ctx, flags); + } +} + +/** + * Writes its settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node * +sp_feTurbulence_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + // Inkscape-only object, not copied during an "plain SVG" dump: + if (flags & SP_OBJECT_WRITE_EXT) { + if (repr) { + // is this sane? + //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); + } else { + repr = SP_OBJECT_REPR(object)->duplicate(doc); + } + } + + if (((SPObjectClass *) feTurbulence_parent_class)->write) { + ((SPObjectClass *) feTurbulence_parent_class)->write(object, doc, repr, flags); + } + + return repr; +} + +static void sp_feTurbulence_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { + g_assert(primitive != NULL); + g_assert(filter != NULL); + + SPFeTurbulence *sp_turbulence = SP_FETURBULENCE(primitive); + + int primitive_n = filter->add_primitive(NR::NR_FILTER_TURBULENCE); + NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); + NR::FilterTurbulence *nr_turbulence = dynamic_cast(nr_primitive); + g_assert(nr_turbulence != NULL); + + sp_filter_primitive_renderer_common(primitive, nr_primitive); + + nr_turbulence->set_baseFrequency(0, sp_turbulence->baseFrequency.getNumber()); + nr_turbulence->set_baseFrequency(1, sp_turbulence->baseFrequency.getOptNumber()); + nr_turbulence->set_numOctaves(sp_turbulence->numOctaves); + nr_turbulence->set_seed(sp_turbulence->seed); + nr_turbulence->set_stitchTiles(sp_turbulence->stitchTiles); + nr_turbulence->set_type(sp_turbulence->type); + nr_turbulence->set_updated(sp_turbulence->updated); +} + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/filters/turbulence.h b/src/filters/turbulence.h new file mode 100644 index 000000000..3601a7cdc --- /dev/null +++ b/src/filters/turbulence.h @@ -0,0 +1,54 @@ +#ifndef SP_FETURBULENCE_H_SEEN +#define SP_FETURBULENCE_H_SEEN + +/** \file + * SVG implementation, see Turbulence.cpp. + */ +/* + * Authors: + * Felipe Corrêa da Silva Sanches + * Hugo Rodrigues + * + * Copyright (C) 2006 Hugo Rodrigues + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-filter.h" +#include "turbulence-fns.h" +#include "number-opt-number.h" +#include "display/nr-filter-turbulence.h" + +/* FeTurbulence base class */ +class SPFeTurbulenceClass; + +struct SPFeTurbulence : public SPFilterPrimitive { + /** TURBULENCE ATTRIBUTES HERE */ + NumberOptNumber baseFrequency; + int numOctaves; + double seed; + bool stitchTiles; + NR::FilterTurbulenceType type; + SVGLength x, y, height, width; + bool updated; +}; + +struct SPFeTurbulenceClass { + SPFilterPrimitiveClass parent_class; +}; + +GType sp_feTurbulence_get_type(); + + +#endif /* !SP_FETURBULENCE_H_SEEN */ + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/flood-context.cpp b/src/flood-context.cpp index 992791976..a45ec5dfe 100644 --- a/src/flood-context.cpp +++ b/src/flood-context.cpp @@ -807,7 +807,7 @@ static void sp_flood_do_flood_fill(SPEventContext *event_context, GdkEvent *even sp_document_ensure_up_to_date (document); SPItem *document_root = SP_ITEM(SP_DOCUMENT_ROOT(document)); - boost::optional bbox = document_root->getBounds(Geom::identity()); + Geom::OptRect bbox = document_root->getBounds(Geom::identity()); if (!bbox) { desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Area is not bounded, cannot fill.")); diff --git a/src/gradient-chemistry.cpp b/src/gradient-chemistry.cpp index 0fa24ccad..4abd7483f 100644 --- a/src/gradient-chemistry.cpp +++ b/src/gradient-chemistry.cpp @@ -285,9 +285,9 @@ sp_gradient_reset_to_userspace (SPGradient *gr, SPItem *item) // calculate the bbox of the item sp_document_ensure_up_to_date(SP_OBJECT_DOCUMENT(item)); - boost::optional bbox = item->getBounds(Geom::identity()); // we need "true" bbox without item_i2d_affine + Geom::OptRect bbox = item->getBounds(Geom::identity()); // we need "true" bbox without item_i2d_affine - if ( !bbox || bbox->isEmpty() ) + if (!bbox) return gr; Geom::Coord const width = bbox->dimensions()[Geom::X]; @@ -346,8 +346,8 @@ sp_gradient_convert_to_userspace(SPGradient *gr, SPItem *item, gchar const *prop // calculate the bbox of the item sp_document_ensure_up_to_date(SP_OBJECT_DOCUMENT(item)); Geom::Matrix bbox2user; - boost::optional bbox = item->getBounds(Geom::identity()); // we need "true" bbox without item_i2d_affine - if ( bbox && !bbox->isEmpty() ) { + Geom::OptRect bbox = item->getBounds(Geom::identity()); // we need "true" bbox without item_i2d_affine + if ( bbox ) { bbox2user = Geom::Matrix(bbox->dimensions()[Geom::X], 0, 0, bbox->dimensions()[Geom::Y], bbox->min()[Geom::X], bbox->min()[Geom::Y]); @@ -1098,7 +1098,7 @@ sp_item_gradient_get_coords (SPItem *item, guint point_type, guint point_i, bool if (SP_GRADIENT(gradient)->units == SP_GRADIENT_UNITS_OBJECTBOUNDINGBOX) { sp_document_ensure_up_to_date(SP_OBJECT_DOCUMENT(item)); - boost::optional bbox = item->getBounds(Geom::identity()); // we need "true" bbox without item_i2d_affine + Geom::OptRect bbox = item->getBounds(Geom::identity()); // we need "true" bbox without item_i2d_affine if (bbox) { p *= Geom::Matrix(bbox->dimensions()[Geom::X], 0, 0, bbox->dimensions()[Geom::Y], diff --git a/src/gradient-context.cpp b/src/gradient-context.cpp index 3741bc499..b4f52a7c9 100644 --- a/src/gradient-context.cpp +++ b/src/gradient-context.cpp @@ -57,7 +57,7 @@ static void sp_gradient_context_setup(SPEventContext *ec); static gint sp_gradient_context_root_handler(SPEventContext *event_context, GdkEvent *event); -static void sp_gradient_drag(SPGradientContext &rc, NR::Point const pt, guint state, guint32 etime); +static void sp_gradient_drag(SPGradientContext &rc, Geom::Point const pt, guint state, guint32 etime); static SPEventContextClass *parent_class; @@ -241,7 +241,7 @@ sp_gradient_context_select_prev (SPEventContext *event_context) } static bool -sp_gradient_context_is_over_line (SPGradientContext *rc, SPItem *item, NR::Point event_p) +sp_gradient_context_is_over_line (SPGradientContext *rc, SPItem *item, Geom::Point event_p) { SPDesktop *desktop = SP_EVENT_CONTEXT (rc)->desktop; @@ -260,10 +260,10 @@ sp_gradient_context_is_over_line (SPGradientContext *rc, SPItem *item, NR::Point return close; } -std::vector +std::vector sp_gradient_context_get_stop_intervals (GrDrag *drag, GSList **these_stops, GSList **next_stops) { - std::vector coords; + std::vector coords; // for all selected draggers for (GList *i = drag->selected; i != NULL; i = i->next) { @@ -349,7 +349,7 @@ sp_gradient_context_add_stops_between_selected_stops (SPGradientContext *rc) GSList *these_stops = NULL; GSList *next_stops = NULL; - std::vector coords = sp_gradient_context_get_stop_intervals (drag, &these_stops, &next_stops); + std::vector coords = sp_gradient_context_get_stop_intervals (drag, &these_stops, &next_stops); if (g_slist_length(these_stops) == 0 && drag->numSelected() == 1) { // if a single stop is selected, add between that stop and the next one @@ -406,7 +406,7 @@ sp_gradient_simplify(SPGradientContext *rc, double tolerance) GSList *these_stops = NULL; GSList *next_stops = NULL; - std::vector coords = sp_gradient_context_get_stop_intervals (drag, &these_stops, &next_stops); + std::vector coords = sp_gradient_context_get_stop_intervals (drag, &these_stops, &next_stops); GSList *todel = NULL; @@ -464,7 +464,7 @@ sp_gradient_simplify(SPGradientContext *rc, double tolerance) static void -sp_gradient_context_add_stop_near_point (SPGradientContext *rc, SPItem *item, NR::Point mouse_p, guint32 /*etime*/) +sp_gradient_context_add_stop_near_point (SPGradientContext *rc, SPItem *item, Geom::Point mouse_p, guint32 /*etime*/) { // item is the selected item. mouse_p the location in doc coordinates of where to add the stop @@ -508,7 +508,7 @@ sp_gradient_context_root_handler(SPEventContext *event_context, GdkEvent *event) if (drag->lines) { for (GSList *l = drag->lines; (l != NULL) && (!over_line); l = l->next) { line = (SPCtrlLine*) l->data; - over_line |= sp_gradient_context_is_over_line (rc, (SPItem*) line, NR::Point(event->motion.x, event->motion.y)); + over_line |= sp_gradient_context_is_over_line (rc, (SPItem*) line, Geom::Point(event->motion.x, event->motion.y)); } } if (over_line) { @@ -535,11 +535,11 @@ sp_gradient_context_root_handler(SPEventContext *event_context, GdkEvent *event) break; case GDK_BUTTON_PRESS: if ( event->button.button == 1 && !event_context->space_panning ) { - NR::Point button_w(event->button.x, event->button.y); + Geom::Point button_w(event->button.x, event->button.y); // save drag origin - event_context->xp = (gint) button_w[NR::X]; - event_context->yp = (gint) button_w[NR::Y]; + event_context->xp = (gint) button_w[Geom::X]; + event_context->yp = (gint) button_w[Geom::Y]; event_context->within_tolerance = true; dragging = true; @@ -577,9 +577,9 @@ sp_gradient_context_root_handler(SPEventContext *event_context, GdkEvent *event) // motion notify coordinates as given (no snapping back to origin) event_context->within_tolerance = false; - NR::Point const motion_w(event->motion.x, + Geom::Point const motion_w(event->motion.x, event->motion.y); - NR::Point const motion_dt = event_context->desktop->w2d(motion_w); + Geom::Point const motion_dt = event_context->desktop->w2d(motion_w); if (Inkscape::Rubberband::get(desktop)->is_started()) { Inkscape::Rubberband::get(desktop)->move(motion_dt); @@ -594,7 +594,7 @@ sp_gradient_context_root_handler(SPEventContext *event_context, GdkEvent *event) bool over_line = false; if (drag->lines) { for (GSList *l = drag->lines; l != NULL; l = l->next) { - over_line |= sp_gradient_context_is_over_line (rc, (SPItem*) l->data, NR::Point(event->motion.x, event->motion.y)); + over_line |= sp_gradient_context_is_over_line (rc, (SPItem*) l->data, Geom::Point(event->motion.x, event->motion.y)); } } @@ -618,7 +618,7 @@ sp_gradient_context_root_handler(SPEventContext *event_context, GdkEvent *event) if (drag->lines) { for (GSList *l = drag->lines; (l != NULL) && (!over_line); l = l->next) { line = (SPCtrlLine*) l->data; - over_line = sp_gradient_context_is_over_line (rc, (SPItem*) line, NR::Point(event->motion.x, event->motion.y)); + over_line = sp_gradient_context_is_over_line (rc, (SPItem*) line, Geom::Point(event->motion.x, event->motion.y)); if (over_line) break; } @@ -643,7 +643,7 @@ sp_gradient_context_root_handler(SPEventContext *event_context, GdkEvent *event) if (r->is_started() && !event_context->within_tolerance) { // this was a rubberband drag if (r->getMode() == RUBBERBAND_MODE_RECT) { - boost::optional const b = r->getRectangle(); + Geom::OptRect const b = r->getRectangle(); drag->selectRect(*b); } } @@ -855,7 +855,7 @@ sp_gradient_context_root_handler(SPEventContext *event_context, GdkEvent *event) return ret; } -static void sp_gradient_drag(SPGradientContext &rc, NR::Point const pt, guint /*state*/, guint32 etime) +static void sp_gradient_drag(SPGradientContext &rc, Geom::Point const pt, guint /*state*/, guint32 etime) { SPDesktop *desktop = SP_EVENT_CONTEXT(&rc)->desktop; Inkscape::Selection *selection = sp_desktop_selection(desktop); diff --git a/src/gradient-drag.cpp b/src/gradient-drag.cpp index b507ab72b..1394cd758 100644 --- a/src/gradient-drag.cpp +++ b/src/gradient-drag.cpp @@ -283,7 +283,7 @@ guint32 GrDrag::getColor() } SPStop * -GrDrag::addStopNearPoint (SPItem *item, NR::Point mouse_p, double tolerance) +GrDrag::addStopNearPoint (SPItem *item, Geom::Point mouse_p, double tolerance) { gfloat offset; // type of SPStop.offset = gfloat SPGradient *gradient; @@ -294,10 +294,10 @@ GrDrag::addStopNearPoint (SPItem *item, NR::Point mouse_p, double tolerance) do { gradient = sp_item_gradient (item, fill_or_stroke); if (SP_IS_LINEARGRADIENT(gradient)) { - NR::Point begin = sp_item_gradient_get_coords(item, POINT_LG_BEGIN, 0, fill_or_stroke); - NR::Point end = sp_item_gradient_get_coords(item, POINT_LG_END, 0, fill_or_stroke); + Geom::Point begin = sp_item_gradient_get_coords(item, POINT_LG_BEGIN, 0, fill_or_stroke); + Geom::Point end = sp_item_gradient_get_coords(item, POINT_LG_END, 0, fill_or_stroke); - NR::Point nearest = snap_vector_midpoint (mouse_p, begin, end, 0); + Geom::Point nearest = snap_vector_midpoint (mouse_p, begin, end, 0); double dist_screen = NR::L2 (mouse_p - nearest); if ( dist_screen < tolerance ) { // add the knot @@ -306,9 +306,9 @@ GrDrag::addStopNearPoint (SPItem *item, NR::Point mouse_p, double tolerance) break; // break out of the while loop: add only one knot } } else if (SP_IS_RADIALGRADIENT(gradient)) { - NR::Point begin = sp_item_gradient_get_coords(item, POINT_RG_CENTER, 0, fill_or_stroke); - NR::Point end = sp_item_gradient_get_coords(item, POINT_RG_R1, 0, fill_or_stroke); - NR::Point nearest = snap_vector_midpoint (mouse_p, begin, end, 0); + Geom::Point begin = sp_item_gradient_get_coords(item, POINT_RG_CENTER, 0, fill_or_stroke); + Geom::Point end = sp_item_gradient_get_coords(item, POINT_RG_R1, 0, fill_or_stroke); + Geom::Point nearest = snap_vector_midpoint (mouse_p, begin, end, 0); double dist_screen = NR::L2 (mouse_p - nearest); if ( dist_screen < tolerance ) { offset = get_offset_between_points(nearest, begin, end); @@ -358,7 +358,7 @@ GrDrag::addStopNearPoint (SPItem *item, NR::Point mouse_p, double tolerance) bool -GrDrag::dropColor(SPItem */*item*/, gchar *c, NR::Point p) +GrDrag::dropColor(SPItem */*item*/, gchar *c, Geom::Point p) { // first, see if we can drop onto one of the existing draggers for (GList *i = draggers; i != NULL; i = i->next) { // for all draggables of dragger @@ -384,7 +384,7 @@ GrDrag::dropColor(SPItem */*item*/, gchar *c, NR::Point p) if (lines) { for (GSList *l = lines; (l != NULL) && (!over_line); l = l->next) { line = (SPCtrlLine*) l->data; - NR::Point nearest = snap_vector_midpoint (p, line->s, line->e, 0); + Geom::Point nearest = snap_vector_midpoint (p, line->s, line->e, 0); double dist_screen = NR::L2 (p - nearest) * desktop->current_zoom(); if (line->item && dist_screen < 5) { SPStop *stop = addStopNearPoint (line->item, p, 5/desktop->current_zoom()); @@ -517,13 +517,29 @@ GrDraggable::getServer () return server; } +static +boost::optional +get_snap_vector (Geom::Point p, Geom::Point o, double snap, double initial) +{ + double r = L2 (p - o); + if (r < 1e-3) { + return boost::optional(); + } + + double angle = atan2 (p - o); + // snap angle to snaps increments, starting from initial: + double a_snapped = initial + floor((angle - initial)/snap + 0.5) * snap; + // calculate the new position and subtract p to get the vector: + return (o + r * Geom::Point(cos(a_snapped), sin(a_snapped)) - p); +} + static void -gr_knot_moved_handler(SPKnot *knot, NR::Point const *ppointer, guint state, gpointer data) +gr_knot_moved_handler(SPKnot *knot, Geom::Point const &ppointer, guint state, gpointer data) { GrDragger *dragger = (GrDragger *) data; GrDrag *drag = dragger->parent; - NR::Point p = *ppointer; + Geom::Point p = ppointer; // FIXME: take from prefs double snap_dist = SNAP_DIST / dragger->parent->desktop->current_zoom(); @@ -591,18 +607,18 @@ gr_knot_moved_handler(SPKnot *knot, NR::Point const *ppointer, guint state, gpoi double dist = NR_HUGE; // No snapping so far, let's see if we need to snap to any of the levels for (guint i = 0; i < dragger->parent->hor_levels.size(); i++) { - dist = fabs(p[NR::Y] - dragger->parent->hor_levels[i]); + dist = fabs(p[Geom::Y] - dragger->parent->hor_levels[i]); if (dist < snap_dist) { - p[NR::Y] = dragger->parent->hor_levels[i]; + p[Geom::Y] = dragger->parent->hor_levels[i]; s = Inkscape::SnappedPoint(p, Inkscape::SNAPTARGET_GRADIENT, dist, snap_dist, false, false); was_snapped = true; sp_knot_moveto (knot, p); } } for (guint i = 0; i < dragger->parent->vert_levels.size(); i++) { - dist = fabs(p[NR::X] - dragger->parent->vert_levels[i]); + dist = fabs(p[Geom::X] - dragger->parent->vert_levels[i]); if (dist < snap_dist) { - p[NR::X] = dragger->parent->vert_levels[i]; + p[Geom::X] = dragger->parent->vert_levels[i]; s = Inkscape::SnappedPoint(p, Inkscape::SNAPTARGET_GRADIENT, dist, snap_dist, false, false); was_snapped = true; sp_knot_moveto (knot, p); @@ -625,7 +641,7 @@ gr_knot_moved_handler(SPKnot *knot, NR::Point const *ppointer, guint state, gpoi for (GSList const* i = dragger->draggables; i != NULL; i = i->next) { GrDraggable *draggable = (GrDraggable *) i->data; - NR::Point *dr_snap = NULL; + Geom::Point dr_snap(Geom::infinity(), Geom::infinity()); if (draggable->point_type == POINT_LG_BEGIN || draggable->point_type == POINT_LG_END) { for (GList *di = dragger->parent->draggers; di != NULL; di = di->next) { @@ -638,11 +654,11 @@ gr_knot_moved_handler(SPKnot *knot, NR::Point const *ppointer, guint state, gpoi // found the other end of the linear gradient; if (state & GDK_SHIFT_MASK) { // moving linear around center - NR::Point center = NR::Point (0.5*(d_new->point + dragger->point)); - dr_snap = ¢er; + Geom::Point center = Geom::Point (0.5*(d_new->point + dragger->point)); + dr_snap = center; } else { // moving linear around the other end - dr_snap = &d_new->point; + dr_snap = d_new->point; } } } @@ -655,37 +671,37 @@ gr_knot_moved_handler(SPKnot *knot, NR::Point const *ppointer, guint state, gpoi POINT_RG_CENTER, draggable->fill_or_stroke)) { // found the center of the radial gradient; - dr_snap = &(d_new->point); + dr_snap = d_new->point; } } } else if (draggable->point_type == POINT_RG_CENTER) { // radial center snaps to hor/vert relative to its original position - dr_snap = &(dragger->point_original); + dr_snap = dragger->point_original; } - NR::Point *snap_vector = NULL; - if (dr_snap) { + boost::optional snap_vector; + if (dr_snap.isFinite()) { if (state & GDK_MOD1_MASK) { // with Alt, snap to the original angle and its perpendiculars - snap_vector = get_snap_vector (p, *dr_snap, M_PI/2, NR::atan2 (dragger->point_original - *dr_snap)); + snap_vector = get_snap_vector (p, dr_snap, M_PI/2, NR::atan2 (dragger->point_original - dr_snap)); } else { // with Ctrl, snap to M_PI/snaps - snap_vector = get_snap_vector (p, *dr_snap, M_PI/snaps, 0); + snap_vector = get_snap_vector (p, dr_snap, M_PI/snaps, 0); } } if (snap_vector) { - snap_vectors = g_slist_prepend (snap_vectors, snap_vector); + snap_vectors = g_slist_prepend (snap_vectors, &(*snap_vector)); } } // Move by the smallest of snap vectors: - NR::Point move(9999, 9999); + Geom::Point move(9999, 9999); for (GSList const *i = snap_vectors; i != NULL; i = i->next) { - NR::Point *snap_vector = (NR::Point *) i->data; + Geom::Point *snap_vector = (Geom::Point *) i->data; if (NR::L2(*snap_vector) < NR::L2(move)) move = *snap_vector; } - if (move[NR::X] < 9999) { + if (move[Geom::X] < 9999) { p += move; sp_knot_moveto (knot, p); } @@ -697,8 +713,8 @@ gr_knot_moved_handler(SPKnot *knot, NR::Point const *ppointer, guint state, gpoi bool scale_radial = (state & GDK_CONTROL_MASK) && (state & GDK_SHIFT_MASK); if (drag->keep_selection) { - NR::Point diff = p - dragger->point; - drag->selected_move_nowrite (diff[NR::X], diff[NR::Y], scale_radial); + Geom::Point diff = p - dragger->point; + drag->selected_move_nowrite (diff[Geom::X], diff[Geom::Y], scale_radial); } else { dragger->point = p; dragger->fireDraggables (false, scale_radial); @@ -709,7 +725,7 @@ gr_knot_moved_handler(SPKnot *knot, NR::Point const *ppointer, guint state, gpoi static void -gr_midpoint_limits(GrDragger *dragger, SPObject *server, NR::Point *begin, NR::Point *end, NR::Point *low_lim, NR::Point *high_lim, GSList **moving) +gr_midpoint_limits(GrDragger *dragger, SPObject *server, Geom::Point *begin, Geom::Point *end, Geom::Point *low_lim, Geom::Point *high_lim, GSList **moving) { GrDrag *drag = dragger->parent; @@ -797,7 +813,7 @@ gr_midpoint_limits(GrDragger *dragger, SPObject *server, NR::Point *begin, NR::P Called when a midpoint knot is dragged. */ static void -gr_knot_moved_midpoint_handler(SPKnot */*knot*/, NR::Point const *ppointer, guint state, gpointer data) +gr_knot_moved_midpoint_handler(SPKnot */*knot*/, Geom::Point const &ppointer, guint state, gpointer data) { GrDragger *dragger = (GrDragger *) data; GrDrag *drag = dragger->parent; @@ -807,9 +823,9 @@ gr_knot_moved_midpoint_handler(SPKnot */*knot*/, NR::Point const *ppointer, guin // FIXME: take from prefs double snap_fraction = 0.1; - NR::Point p = *ppointer; - NR::Point begin(0,0), end(0,0); - NR::Point low_lim(0,0), high_lim(0,0); + Geom::Point p = ppointer; + Geom::Point begin(0,0), end(0,0); + Geom::Point low_lim(0,0), high_lim(0,0); SPObject *server = draggable->getServer(); @@ -821,12 +837,12 @@ gr_knot_moved_midpoint_handler(SPKnot */*knot*/, NR::Point const *ppointer, guin } else { p = snap_vector_midpoint (p, low_lim, high_lim, 0); } - NR::Point displacement = p - dragger->point; + Geom::Point displacement = p - dragger->point; for (GSList const* i = moving; i != NULL; i = i->next) { GrDragger *drg = (GrDragger*) i->data; SPKnot *drgknot = drg->knot; - NR::Point this_move = displacement; + Geom::Point this_move = displacement; if (state & GDK_MOD1_MASK) { // FIXME: unify all these profiles (here, in nodepath, in tweak) in one place double alpha = 1.0; @@ -1271,15 +1287,14 @@ GrDragger::updateDependencies (bool write_repr) -GrDragger::GrDragger (GrDrag *parent, NR::Point p, GrDraggable *draggable) +GrDragger::GrDragger (GrDrag *parent, Geom::Point p, GrDraggable *draggable) + : point(p), + point_original(p) { this->draggables = NULL; this->parent = parent; - this->point = p; - this->point_original = p; - // create the knot this->knot = sp_knot_new (parent->desktop, NULL); this->knot->setMode(SP_KNOT_MODE_XOR); @@ -1432,7 +1447,7 @@ GrDrag::selectAll() \brief Select all stops/draggers that match the coords */ void -GrDrag::selectByCoords(std::vector coords) +GrDrag::selectByCoords(std::vector coords) { for (GList *l = this->draggers; l != NULL; l = l->next) { GrDragger *d = ((GrDragger *) l->data); @@ -1524,7 +1539,7 @@ GrDrag::setDeselected (GrDragger *dragger) Create a line from p1 to p2 and add it to the lines list */ void -GrDrag::addLine (SPItem *item, NR::Point p1, NR::Point p2, guint32 rgba) +GrDrag::addLine (SPItem *item, Geom::Point p1, Geom::Point p2, guint32 rgba) { SPCanvasItem *line = sp_canvas_item_new(sp_desktop_controls(this->desktop), SP_TYPE_CTRLLINE, NULL); @@ -1544,7 +1559,7 @@ new dragger and add it to draggers list void GrDrag::addDragger (GrDraggable *draggable) { - NR::Point p = sp_item_gradient_get_coords (draggable->item, draggable->point_type, draggable->point_i, draggable->fill_or_stroke); + Geom::Point p = sp_item_gradient_get_coords (draggable->item, draggable->point_type, draggable->point_i, draggable->fill_or_stroke); for (GList *i = this->draggers; i != NULL; i = i->next) { GrDragger *dragger = (GrDragger *) i->data; @@ -1694,7 +1709,7 @@ GrDrag::updateLines () if (SP_IS_LINEARGRADIENT (server)) { this->addLine (item, sp_item_gradient_get_coords (item, POINT_LG_BEGIN, 0, true), sp_item_gradient_get_coords (item, POINT_LG_END, 0, true), GR_LINE_COLOR_FILL); } else if (SP_IS_RADIALGRADIENT (server)) { - NR::Point center = sp_item_gradient_get_coords (item, POINT_RG_CENTER, 0, true); + Geom::Point center = sp_item_gradient_get_coords (item, POINT_RG_CENTER, 0, true); this->addLine (item, center, sp_item_gradient_get_coords (item, POINT_RG_R1, 0, true), GR_LINE_COLOR_FILL); this->addLine (item, center, sp_item_gradient_get_coords (item, POINT_RG_R2, 0, true), GR_LINE_COLOR_FILL); } @@ -1705,7 +1720,7 @@ GrDrag::updateLines () if (SP_IS_LINEARGRADIENT (server)) { this->addLine (item, sp_item_gradient_get_coords (item, POINT_LG_BEGIN, 0, false), sp_item_gradient_get_coords (item, POINT_LG_END, 0, false), GR_LINE_COLOR_STROKE); } else if (SP_IS_RADIALGRADIENT (server)) { - NR::Point center = sp_item_gradient_get_coords (item, POINT_RG_CENTER, 0, false); + Geom::Point center = sp_item_gradient_get_coords (item, POINT_RG_CENTER, 0, false); this->addLine (item, center, sp_item_gradient_get_coords (item, POINT_RG_R1, 0, false), GR_LINE_COLOR_STROKE); this->addLine (item, center, sp_item_gradient_get_coords (item, POINT_RG_R2, 0, false), GR_LINE_COLOR_STROKE); } @@ -1726,7 +1741,7 @@ GrDrag::updateLevels () for (GSList const* i = this->selection->itemList(); i != NULL; i = i->next) { SPItem *item = SP_ITEM(i->data); - boost::optional rect = sp_item_bbox_desktop (item); + Geom::OptRect rect = sp_item_bbox_desktop (item); if (rect) { // Remember the edges of the bbox and the center axis hor_levels.push_back(rect->min()[Geom::Y]); @@ -1793,7 +1808,7 @@ GrDrag::selected_move (double x, double y, bool write_repr, bool scale_radial) } did = true; - d->point += NR::Point (x, y); + d->point += Geom::Point (x, y); d->point_original = d->point; sp_knot_moveto (d->knot, d->point); @@ -1816,16 +1831,16 @@ GrDrag::selected_move (double x, double y, bool write_repr, bool scale_radial) // a midpoint dragger can (logically) only contain one GrDraggable GrDraggable *draggable = (GrDraggable *) dragger->draggables->data; - NR::Point begin(0,0), end(0,0); - NR::Point low_lim(0,0), high_lim(0,0); + Geom::Point begin(0,0), end(0,0); + Geom::Point low_lim(0,0), high_lim(0,0); SPObject *server = draggable->getServer(); GSList *moving = NULL; gr_midpoint_limits(dragger, server, &begin, &end, &low_lim, &high_lim, &moving); - NR::Point p(x, y); + Geom::Point p(x, y); p = snap_vector_midpoint (dragger->point + p, low_lim, high_lim, 0); - NR::Point displacement = p - dragger->point; + Geom::Point displacement = p - dragger->point; for (GSList const* i = moving; i != NULL; i = i->next) { GrDragger *drg = (GrDragger*) i->data; @@ -2003,13 +2018,13 @@ GrDrag::deleteSelected (bool just_one) SP_OBJECT_REPR(stopinfo->vector)->removeChild(SP_OBJECT_REPR(stopinfo->spstop)); SPLinearGradient *lg = SP_LINEARGRADIENT(stopinfo->gradient); - NR::Point oldbegin = NR::Point (lg->x1.computed, lg->y1.computed); - NR::Point end = NR::Point (lg->x2.computed, lg->y2.computed); + Geom::Point oldbegin = Geom::Point (lg->x1.computed, lg->y1.computed); + Geom::Point end = Geom::Point (lg->x2.computed, lg->y2.computed); SPStop *stop = sp_first_stop(stopinfo->vector); gdouble offset = stop->offset; - NR::Point newbegin = oldbegin + offset * (end - oldbegin); - lg->x1.computed = newbegin[NR::X]; - lg->y1.computed = newbegin[NR::Y]; + Geom::Point newbegin = oldbegin + offset * (end - oldbegin); + lg->x1.computed = newbegin[Geom::X]; + lg->y1.computed = newbegin[Geom::Y]; Inkscape::XML::Node *repr = SP_OBJECT_REPR(stopinfo->gradient); sp_repr_set_svg_double(repr, "x1", lg->x1.computed); @@ -2032,13 +2047,13 @@ GrDrag::deleteSelected (bool just_one) SP_OBJECT_REPR(stopinfo->vector)->removeChild(SP_OBJECT_REPR(stopinfo->spstop)); SPLinearGradient *lg = SP_LINEARGRADIENT(stopinfo->gradient); - NR::Point begin = NR::Point (lg->x1.computed, lg->y1.computed); - NR::Point oldend = NR::Point (lg->x2.computed, lg->y2.computed); + Geom::Point begin = Geom::Point (lg->x1.computed, lg->y1.computed); + Geom::Point oldend = Geom::Point (lg->x2.computed, lg->y2.computed); SPStop *laststop = sp_last_stop(stopinfo->vector); gdouble offset = laststop->offset; - NR::Point newend = begin + offset * (oldend - begin); - lg->x2.computed = newend[NR::X]; - lg->y2.computed = newend[NR::Y]; + Geom::Point newend = begin + offset * (oldend - begin); + lg->x2.computed = newend[Geom::X]; + lg->y2.computed = newend[Geom::Y]; Inkscape::XML::Node *repr = SP_OBJECT_REPR(stopinfo->gradient); sp_repr_set_svg_double(repr, "x2", lg->x2.computed); diff --git a/src/gradient-drag.h b/src/gradient-drag.h index acc2dd48f..974bba4de 100644 --- a/src/gradient-drag.h +++ b/src/gradient-drag.h @@ -20,6 +20,7 @@ #include #include +#include <2geom/point.h> #include struct SPItem; @@ -31,20 +32,20 @@ which has the gradient, whether it's fill or stroke, the point type (from the GrPointType enum), and the point number (needed if more than 2 stops are present). */ struct GrDraggable { - GrDraggable(SPItem *item, guint point_type, guint point_i, bool fill_or_stroke); + GrDraggable(SPItem *item, guint point_type, guint point_i, bool fill_or_stroke); virtual ~GrDraggable(); - SPItem *item; - gint point_type; - gint point_i; // the stop number of this point ( = 0 POINT_LG_BEGIN and POINT_RG_CENTER) - bool fill_or_stroke; + SPItem *item; + gint point_type; + gint point_i; // the stop number of this point ( = 0 POINT_LG_BEGIN and POINT_RG_CENTER) + bool fill_or_stroke; - SPObject *getServer(); + SPObject *getServer(); - bool mayMerge (GrDraggable *da2); + bool mayMerge (GrDraggable *da2); inline int equals (GrDraggable *other) { - return ((item == other->item) && (point_type == other->point_type) && (point_i == other->point_i) && (fill_or_stroke == other->fill_or_stroke)); + return ((item == other->item) && (point_type == other->point_type) && (point_i == other->point_i) && (fill_or_stroke == other->fill_or_stroke)); } }; @@ -56,45 +57,45 @@ be moved when the knot moves. Normally there's one draggable in the list, but th be more when draggers are snapped together. */ struct GrDragger { - GrDragger (GrDrag *parent, NR::Point p, GrDraggable *draggable); + GrDragger (GrDrag *parent, Geom::Point p, GrDraggable *draggable); virtual ~GrDragger(); - GrDrag *parent; + GrDrag *parent; - SPKnot *knot; + SPKnot *knot; - // position of the knot, desktop coords - NR::Point point; - // position of the knot before it began to drag; updated when released - NR::Point point_original; + // position of the knot, desktop coords + Geom::Point point; + // position of the knot before it began to drag; updated when released + Geom::Point point_original; - /** Connection to \a knot's "moved" signal, for blocking it (unused?). */ - guint handler_id; + /** Connection to \a knot's "moved" signal, for blocking it (unused?). */ + guint handler_id; - GSList *draggables; + GSList *draggables; - void addDraggable(GrDraggable *draggable); + void addDraggable(GrDraggable *draggable); - void updateKnotShape(); - void updateTip(); - - void select(); - void deselect(); - bool isSelected(); + void updateKnotShape(); + void updateTip(); + + void select(); + void deselect(); + bool isSelected(); - void moveThisToDraggable (SPItem *item, gint point_type, gint point_i, bool fill_or_stroke, bool write_repr); - void moveOtherToDraggable (SPItem *item, gint point_type, gint point_i, bool fill_or_stroke, bool write_repr); + void moveThisToDraggable (SPItem *item, gint point_type, gint point_i, bool fill_or_stroke, bool write_repr); + void moveOtherToDraggable (SPItem *item, gint point_type, gint point_i, bool fill_or_stroke, bool write_repr); void updateMidstopDependencies (GrDraggable *draggable, bool write_repr); void updateDependencies (bool write_repr); - bool mayMerge (GrDragger *other); - bool mayMerge (GrDraggable *da2); + bool mayMerge (GrDragger *other); + bool mayMerge (GrDraggable *da2); bool isA (gint point_type); bool isA (SPItem *item, gint point_type, bool fill_or_stroke); bool isA (SPItem *item, gint point_type, gint point_i, bool fill_or_stroke); - void fireDraggables (bool write_repr, bool scale_radial = false, bool merging_focus = false); + void fireDraggables (bool write_repr, bool scale_radial = false, bool merging_focus = false); }; /** @@ -107,26 +108,26 @@ public: // FIXME: make more of this private! GrDrag(SPDesktop *desktop); virtual ~GrDrag(); - bool isNonEmpty() {return (draggers != NULL);} - bool hasSelection() {return (selected != NULL);} - guint numSelected() {return (selected? g_list_length(selected) : 0);} - guint numDraggers() {return (draggers? g_list_length(draggers) : 0);} - guint singleSelectedDraggerNumDraggables() {return (selected? g_slist_length(((GrDragger *) selected->data)->draggables) : 0);} - guint singleSelectedDraggerSingleDraggableType() {return (selected? ((GrDraggable *) ((GrDragger *) selected->data)->draggables->data)->point_type : 0);} + bool isNonEmpty() {return (draggers != NULL);} + bool hasSelection() {return (selected != NULL);} + guint numSelected() {return (selected? g_list_length(selected) : 0);} + guint numDraggers() {return (draggers? g_list_length(draggers) : 0);} + guint singleSelectedDraggerNumDraggables() {return (selected? g_slist_length(((GrDragger *) selected->data)->draggables) : 0);} + guint singleSelectedDraggerSingleDraggableType() {return (selected? ((GrDraggable *) ((GrDragger *) selected->data)->draggables->data)->point_type : 0);} // especially the selection must be private, fix gradient-context to remove direct access to it GList *selected; // list of GrDragger* void setSelected (GrDragger *dragger, bool add_to_selection = false, bool override = true); void setDeselected (GrDragger *dragger); void deselectAll(); - void selectAll(); - void selectByCoords(std::vector coords); + void selectAll(); + void selectByCoords(std::vector coords); void selectRect(Geom::Rect const &r); - bool dropColor(SPItem *item, gchar *c, NR::Point p); + bool dropColor(SPItem *item, gchar *c, Geom::Point p); + + SPStop *addStopNearPoint (SPItem *item, Geom::Point mouse_p, double tolerance); - SPStop *addStopNearPoint (SPItem *item, NR::Point mouse_p, double tolerance); - void deleteSelected (bool just_one = false); guint32 getColor(); @@ -165,7 +166,7 @@ public: // FIXME: make more of this private! private: void deselect_all(); - void addLine (SPItem *item, NR::Point p1, NR::Point p2, guint32 rgba); + void addLine (SPItem *item, Geom::Point p1, Geom::Point p2, guint32 rgba); void addDragger (GrDraggable *draggable); diff --git a/src/graphlayout/graphlayout.cpp b/src/graphlayout/graphlayout.cpp index 87ec60695..12bca8891 100644 --- a/src/graphlayout/graphlayout.cpp +++ b/src/graphlayout/graphlayout.cpp @@ -125,7 +125,7 @@ void graphlayout(GSList const *const items) { ++i) { SPItem *u=*i; - boost::optional const item_box(sp_item_bbox_desktop(u)); + Geom::OptRect const item_box(sp_item_bbox_desktop(u)); if(item_box) { Geom::Point ll(item_box->min()); Geom::Point ur(item_box->max()); @@ -227,7 +227,7 @@ void graphlayout(GSList const *const items) { map::iterator i=nodelookup.find(u->id); if(i!=nodelookup.end()) { Rectangle* r=rs[i->second]; - boost::optional item_box(sp_item_bbox_desktop(u)); + Geom::OptRect item_box(sp_item_bbox_desktop(u)); if(item_box) { Geom::Point const curr(item_box->midpoint()); Geom::Point const dest(r->getCentreX(),r->getCentreY()); diff --git a/src/helper/Makefile_insert b/src/helper/Makefile_insert index 4d1ed6630..195ca2632 100644 --- a/src/helper/Makefile_insert +++ b/src/helper/Makefile_insert @@ -40,17 +40,21 @@ helper_libspchelp_a_SOURCES = \ helper/stock-items.cpp \ helper/stock-items.h - -# TODO: Check that the generated sp-marshal.h is the same as before. +# cmp exits with status 0 when there are no differences. if executes the commands +# after "then" when the exit status of the if command is 0 (this is crazy). helper/sp-marshal.h: helper/sp-marshal.list - glib-genmarshal --prefix=sp_marshal --header $(srcdir)/helper/sp-marshal.list > helper/tmp.$$$$ \ - && mv helper/tmp.$$$$ helper/sp-marshal.h + glib-genmarshal --prefix=sp_marshal --header $(srcdir)/helper/sp-marshal.list > helper/tmp.sp-marshal.h + if cmp -s helper/sp-marshal.h helper/tmp.sp-marshal.h; \ + then rm helper/tmp.sp-marshal.h; \ + else mv helper/tmp.sp-marshal.h helper/sp-marshal.h; fi helper/sp-marshal.cpp: helper/sp-marshal.list helper/sp-marshal.h ( echo '#include "helper/sp-marshal.h"' && \ glib-genmarshal --prefix=sp_marshal --body $(srcdir)/helper/sp-marshal.list ) \ - > helper/tmp.$$$$ \ - && mv helper/tmp.$$$$ helper/sp-marshal.cpp + > helper/tmp.sp-marshal.cpp; \ + if cmp -s helper/sp-marshal.cpp helper/tmp.sp-marshal.cpp; \ + then rm helper/tmp.sp-marshal.cpp; \ + else mv helper/tmp.sp-marshal.cpp helper/sp-marshal.cpp; fi helper/sp-marshal.cpp helper/sp-marshal.h: Makefile diff --git a/src/helper/geom.cpp b/src/helper/geom.cpp index 84f967860..c79cd829a 100644 --- a/src/helper/geom.cpp +++ b/src/helper/geom.cpp @@ -149,23 +149,21 @@ cubic_bbox (Geom::Coord x000, Geom::Coord y000, Geom::Coord x001, Geom::Coord y0 } } -Geom::Rect +Geom::OptRect bounds_fast_transformed(Geom::PathVector const & pv, Geom::Matrix const & t) { return bounds_exact_transformed(pv, t); //use this as it is faster for now! :) // return Geom::bounds_fast(pv * t); } -Geom::Rect +Geom::OptRect bounds_exact_transformed(Geom::PathVector const & pv, Geom::Matrix const & t) { - Geom::Rect bbox; - if (pv.empty()) - return bbox; + return Geom::OptRect(); Geom::Point initial = pv.front().initialPoint() * t; - bbox = Geom::Rect(initial, initial); // obtain well defined bbox as starting point to unionWith + Geom::Rect bbox(initial, initial); // obtain well defined bbox as starting point to unionWith for (Geom::PathVector::const_iterator it = pv.begin(); it != pv.end(); ++it) { bbox.expandTo(it->initialPoint() * t); @@ -494,6 +492,19 @@ pathv_to_linear_and_cubic_beziers( Geom::PathVector const &pathv ) return output; } + +/** + * rounds all corners of the rectangle 'outwards', i.e. x0 and y0 are floored, x1 and y1 are ceiled. + */ +void round_rectangle_outwards(Geom::Rect & rect) { + Geom::Interval ints[2]; + for (int i=0; i < 2; i++) { + ints[i] = Geom::Interval(std::floor(rect[i][0]), std::ceil(rect[i][1])); + } + rect = Geom::Rect(ints[0], ints[1]); +} + + namespace Geom { bool transform_equalp(Geom::Matrix const &m0, Geom::Matrix const &m1, Geom::Coord const epsilon) { diff --git a/src/helper/geom.h b/src/helper/geom.h index 4cda22a1c..adf167392 100644 --- a/src/helper/geom.h +++ b/src/helper/geom.h @@ -16,8 +16,8 @@ #include #include -Geom::Rect bounds_fast_transformed(Geom::PathVector const & pv, Geom::Matrix const & t); -Geom::Rect bounds_exact_transformed(Geom::PathVector const & pv, Geom::Matrix const & t); +Geom::OptRect bounds_fast_transformed(Geom::PathVector const & pv, Geom::Matrix const & t); +Geom::OptRect bounds_exact_transformed(Geom::PathVector const & pv, Geom::Matrix const & t); void pathv_matrix_point_bbox_wind_distance ( Geom::PathVector const & pathv, Geom::Matrix const &m, Geom::Point const &pt, Geom::Rect *bbox, int *wind, Geom::Coord *dist, @@ -25,6 +25,8 @@ void pathv_matrix_point_bbox_wind_distance ( Geom::PathVector const & pathv, Geo Geom::PathVector pathv_to_linear_and_cubic_beziers( Geom::PathVector const &pathv ); +void round_rectangle_outwards(Geom::Rect & rect); + /* The following predefined objects are for reference and comparison. They are defined in helper/geom.cpp diff --git a/src/helper/png-write.cpp b/src/helper/png-write.cpp index 89ab32f55..eb60169c4 100644 --- a/src/helper/png-write.cpp +++ b/src/helper/png-write.cpp @@ -19,6 +19,7 @@ #include #include #include +#include <2geom/rect.h> #include #include #include "png-write.h" @@ -386,9 +387,20 @@ hide_other_items_recursively(SPObject *o, GSList *list, unsigned dkey) * * \return true if succeeded (or if no action was taken), false if an error occurred. */ +bool sp_export_png_file (SPDocument *doc, gchar const *filename, + double x0, double y0, double x1, double y1, + unsigned long int width, unsigned long int height, double xdpi, double ydpi, + unsigned long bgcolor, + unsigned int (*status) (float, void *), + void *data, bool force_overwrite, + GSList *items_only) +{ + return sp_export_png_file(doc, filename, Geom::Rect(Geom::Point(x0,y0),Geom::Point(x1,y1)), + width, height, xdpi, ydpi, bgcolor, status, data, force_overwrite, items_only); +} bool sp_export_png_file(SPDocument *doc, gchar const *filename, - double x0, double y0, double x1, double y1, + Geom::Rect const &area, unsigned long width, unsigned long height, double xdpi, double ydpi, unsigned long bgcolor, unsigned (*status)(float, void *), @@ -399,8 +411,22 @@ sp_export_png_file(SPDocument *doc, gchar const *filename, g_return_val_if_fail(filename != NULL, false); g_return_val_if_fail(width >= 1, false); g_return_val_if_fail(height >= 1, false); + g_return_val_if_fail(!area.hasZeroArea(), false); + + //Make relative paths absolute, if possible: + gchar *path = 0; + if (!g_path_is_absolute(filename) && doc->uri) { + gchar *dirname = g_path_get_dirname(doc->uri); + if (dirname) { + path = g_build_filename(dirname, filename, NULL); + g_free(dirname); + } + } + if (!path) { + path = g_strdup(filename); + } - if (!force_overwrite && !sp_ui_overwrite_file(filename)) { + if (!force_overwrite && !sp_ui_overwrite_file(path)) { /* Remark: We return true so as not to invoke an error dialog in case export is cancelled by the user; currently this is safe because the callers only act when false is returned. If this changes in the future we need better distinction of return types (e.g., use int) @@ -417,14 +443,10 @@ sp_export_png_file(SPDocument *doc, gchar const *filename, sp_document_ensure_up_to_date(doc); - /* Go to document coordinates */ - { - gdouble const t = y0; - y0 = sp_document_height(doc) - y1; - y1 = sp_document_height(doc) - t; - } + /* Calculate translation by transforming to document coordinates (flipping Y)*/ + Geom::Point translation = Geom::Point(-area[Geom::X][0], area[Geom::Y][1] - sp_document_height(doc)); - /* + /* This calculation is only valid when assumed that (x0,y0)= area.corner(0) and (x1,y1) = area.corner(2) * 1) a[0] * x0 + a[2] * y1 + a[4] = 0.0 * 2) a[1] * x0 + a[3] * y1 + a[5] = 0.0 * 3) a[0] * x1 + a[2] * y1 + a[4] = width @@ -440,9 +462,9 @@ sp_export_png_file(SPDocument *doc, gchar const *filename, * (2) a[5] = -a[3] * y1 */ - Geom::Matrix const affine(Geom::Translate(-x0, -y0) - * Geom::Scale(width / (x1 - x0), - height / (y1 - y0))); + Geom::Matrix const affine(Geom::Translate(translation) + * Geom::Scale(width / area.width(), + height / area.height())); //SP_PRINT_MATRIX("SVG2PNG", &affine); @@ -475,12 +497,12 @@ sp_export_png_file(SPDocument *doc, gchar const *filename, if ((width < 256) || ((width * height) < 32768)) { ebp.px = nr_pixelstore_64K_new(FALSE, 0); ebp.sheight = 65536 / (4 * width); - write_status = sp_png_write_rgba_striped(doc, filename, width, height, xdpi, ydpi, sp_export_get_rows, &ebp); + write_status = sp_png_write_rgba_striped(doc, path, width, height, xdpi, ydpi, sp_export_get_rows, &ebp); nr_pixelstore_64K_free(ebp.px); } else { ebp.px = g_new(guchar, 4 * 64 * width); ebp.sheight = 64; - write_status = sp_png_write_rgba_striped(doc, filename, width, height, xdpi, ydpi, sp_export_get_rows, &ebp); + write_status = sp_png_write_rgba_striped(doc, path, width, height, xdpi, ydpi, sp_export_get_rows, &ebp); g_free(ebp.px); } @@ -494,6 +516,8 @@ sp_export_png_file(SPDocument *doc, gchar const *filename, prefs->setInt("/options/blurquality/value", saved_quality); prefs->setInt("/options/filterquality/value", saved_filter_quality); + g_free(path); + return write_status; } diff --git a/src/helper/png-write.h b/src/helper/png-write.h index 1217ba276..83321aa4e 100644 --- a/src/helper/png-write.h +++ b/src/helper/png-write.h @@ -13,6 +13,7 @@ */ #include +#include <2geom/forward.h> struct SPDocument; bool sp_export_png_file (SPDocument *doc, gchar const *filename, @@ -20,5 +21,10 @@ bool sp_export_png_file (SPDocument *doc, gchar const *filename, unsigned long int width, unsigned long int height, double xdpi, double ydpi, unsigned long bgcolor, unsigned int (*status) (float, void *), void *data, bool force_overwrite = false, GSList *items_only = NULL); +bool sp_export_png_file (SPDocument *doc, gchar const *filename, + Geom::Rect const &area, + unsigned long int width, unsigned long int height, double xdpi, double ydpi, + unsigned long bgcolor, + unsigned int (*status) (float, void *), void *data, bool force_overwrite = false, GSList *items_only = NULL); #endif diff --git a/src/helper/recthull.h b/src/helper/recthull.h index 59649cfb6..a9cad4466 100644 --- a/src/helper/recthull.h +++ b/src/helper/recthull.h @@ -46,12 +46,12 @@ public: } } - boost::optional const &bounds() const { + OptRect const &bounds() const { return _bounds; } private: - boost::optional _bounds; + OptRect _bounds; }; } /* namespace Geom */ diff --git a/src/inkscape.cpp b/src/inkscape.cpp index 51f740fb4..49b92394e 100644 --- a/src/inkscape.cpp +++ b/src/inkscape.cpp @@ -1,9 +1,7 @@ -#define __INKSCAPE_C__ - -/* - * Interface to main application - * - * Authors: +/** @file + * @brief Legacy interface to main application + */ +/* Authors: * Lauris Kaplinski * bulia byak * @@ -37,38 +35,33 @@ using Inkscape::Extension::Internal::PrintWin32; # include #endif -#include - -#include -#include -#include +#include #include - +#include #include +#include +#include +#include #include -#include -#include "helper/sp-marshal.h" -#include "dialogs/debugdialog.h" -#include "dialogs/input.h" #include "application/application.h" #include "application/editor.h" - - -#include "document.h" #include "desktop.h" #include "desktop-handles.h" -#include "selection.h" +#include "dialogs/input.h" +#include "document.h" #include "event-context.h" -#include "inkscape-private.h" -#include "xml/repr.h" -#include "preferences.h" -#include "io/sys.h" -#include "message-stack.h" - -#include "extension/init.h" #include "extension/db.h" +#include "extension/init.h" #include "extension/output.h" #include "extension/system.h" +#include "helper/sp-marshal.h" +#include "inkscape-private.h" +#include "io/sys.h" +#include "message-stack.h" +#include "preferences.h" +#include "selection.h" +#include "ui/dialog/debug.h" +#include "xml/repr.h" static Inkscape::Application *inkscape = NULL; @@ -774,7 +767,7 @@ inkscape_application_init (const gchar *argv0, gboolean use_gui) if (use_gui == TRUE && prefs->getBool("/dialogs/debug/redirect", DEFAULT_LOG_REDIRECT)) { - Inkscape::UI::Dialogs::DebugDialog::getInstance()->captureLogMessages(); + Inkscape::UI::Dialog::DebugDialog::getInstance()->captureLogMessages(); } /* Check for global remapping of Alt key */ diff --git a/src/interface.cpp b/src/interface.cpp index 8a3182103..fbdb8a5f6 100644 --- a/src/interface.cpp +++ b/src/interface.cpp @@ -20,6 +20,7 @@ #endif #include +#include #include "inkscape-private.h" #include "extension/effect.h" #include "widgets/icon.h" @@ -926,7 +927,7 @@ sp_ui_build_dyn_menus(Inkscape::XML::Node *menus, GtkWidget *menu, Inkscape::UI: // add filter to only open files added by Inkscape GtkRecentFilter *inkscape_only_filter = gtk_recent_filter_new(); - gtk_recent_filter_add_application(inkscape_only_filter, "inkscape"); + gtk_recent_filter_add_application(inkscape_only_filter, g_get_prgname()); gtk_recent_chooser_add_filter(GTK_RECENT_CHOOSER(recent_menu), inkscape_only_filter); GtkWidget *recent_item = gtk_menu_item_new_with_mnemonic(_("Open _Recent")); @@ -1261,7 +1262,7 @@ sp_ui_drag_data_received(GtkWidget *widget, bool const saved_pref = prefs->getBool("/options/transform/pattern", true); prefs->setBool("/options/transform/pattern", true); sp_document_ensure_up_to_date(sp_desktop_document(desktop)); - boost::optional sel_bbox = selection->bounds(); + Geom::OptRect sel_bbox = selection->bounds(); if (sel_bbox) { Geom::Point m( desktop->point() - sel_bbox->midpoint() ); sp_selection_move_relative(selection, m); diff --git a/src/libnr/nr-convert2geom.h b/src/libnr/nr-convert2geom.h index 7b501cddc..b7cbd7ee8 100644 --- a/src/libnr/nr-convert2geom.h +++ b/src/libnr/nr-convert2geom.h @@ -45,8 +45,8 @@ inline NR::Rect from_2geom(Geom::Rect const & rect2geom) { NR::Rect rect(rect2geom.min(), rect2geom.max()); return rect; } -inline boost::optional to_2geom(boost::optional const & rect) { - boost::optional rect2geom; +inline Geom::OptRect to_2geom(boost::optional const & rect) { + Geom::OptRect rect2geom; if (!rect) { return rect2geom; } diff --git a/src/libnr/nr-rect.cpp b/src/libnr/nr-rect.cpp index 620782996..1e1f36104 100644 --- a/src/libnr/nr-rect.cpp +++ b/src/libnr/nr-rect.cpp @@ -28,7 +28,7 @@ NRRect::NRRect(boost::optional const &rect) { } } -NRRect::NRRect(boost::optional const &rect) { +NRRect::NRRect(Geom::OptRect const &rect) { if (rect) { x0 = rect->min()[Geom::X]; y0 = rect->min()[Geom::Y]; @@ -47,9 +47,9 @@ boost::optional NRRect::upgrade() const { } } -boost::optional NRRect::upgrade_2geom() const { +Geom::OptRect NRRect::upgrade_2geom() const { if (nr_rect_d_test_empty_ptr(this)) { - return boost::optional(); + return Geom::OptRect(); } else { return Geom::Rect(Geom::Point(x0, y0), Geom::Point(x1, y1)); } diff --git a/src/libnr/nr-rect.h b/src/libnr/nr-rect.h index 83f780efd..c074b0034 100644 --- a/src/libnr/nr-rect.h +++ b/src/libnr/nr-rect.h @@ -244,9 +244,9 @@ struct NRRect { explicit NRRect(boost::optional const &rect); operator boost::optional() const { return upgrade(); } boost::optional upgrade() const; - explicit NRRect(boost::optional const &rect); - operator boost::optional() const { return upgrade_2geom(); } - boost::optional upgrade_2geom() const; + explicit NRRect(Geom::OptRect const &rect); + operator Geom::OptRect() const { return upgrade_2geom(); } + Geom::OptRect upgrade_2geom() const; NR::Coord x0, y0, x1, y1; }; diff --git a/src/libnrtype/FontInstance.cpp b/src/libnrtype/FontInstance.cpp index d7d45b1e3..e1413b46e 100644 --- a/src/libnrtype/FontInstance.cpp +++ b/src/libnrtype/FontInstance.cpp @@ -615,7 +615,7 @@ bool font_instance::FontSlope(double &run, double &rise) return true; } -boost::optional font_instance::BBox(int glyph_id) +Geom::OptRect font_instance::BBox(int glyph_id) { int no=-1; if ( id_to_no.find(glyph_id) == id_to_no.end() ) { @@ -629,7 +629,7 @@ boost::optional font_instance::BBox(int glyph_id) no=id_to_no[glyph_id]; } if ( no < 0 ) { - return boost::optional(); + return Geom::OptRect(); } else { Geom::Point rmin(glyphs[no].bbox[0],glyphs[no].bbox[1]); Geom::Point rmax(glyphs[no].bbox[2],glyphs[no].bbox[3]); diff --git a/src/libnrtype/Layout-TNG-Compute.cpp b/src/libnrtype/Layout-TNG-Compute.cpp index 57be6033a..2e65c2b24 100644 --- a/src/libnrtype/Layout-TNG-Compute.cpp +++ b/src/libnrtype/Layout-TNG-Compute.cpp @@ -615,7 +615,6 @@ class Layout::Calculator iter_source_text++; char_index_in_unbroken_span++; char_byte = iter_source_text.base() - unbroken_span.input_stream_first_character.base(); - glyph_rotate = 0.0; } advance_width *= direction_sign; @@ -1014,6 +1013,7 @@ unsigned Layout::Calculator::_buildSpansForPara(ParagraphInfo *para) const if (text_source->dy.size() > char_index_in_source) new_span.dx = text_source->dy[char_index_in_source]; } if (text_source->rotate.size() > char_index_in_source) new_span.rotate = text_source->rotate[char_index_in_source]; + else if (char_index_in_source == 0) new_span.rotate = 0.f; if (input_index == 0 && para->unbroken_spans.empty() && !new_span.y._set && _flow._input_wrap_shapes.empty()) { // if we don't set an explicit y some of the automatic wrapping code takes over and moves the text vertically // so that the top of the letters is at zero, not the baseline diff --git a/src/libnrtype/Layout-TNG-Input.cpp b/src/libnrtype/Layout-TNG-Input.cpp index a5ae1cd81..2ee0051a4 100644 --- a/src/libnrtype/Layout-TNG-Input.cpp +++ b/src/libnrtype/Layout-TNG-Input.cpp @@ -54,6 +54,14 @@ void Layout::appendText(Glib::ustring const &text, SPStyle *style, void *source_ _copyInputVector(optional_attributes->dx, optional_attributes_offset, &new_source->dx, new_source->text_length); _copyInputVector(optional_attributes->dy, optional_attributes_offset, &new_source->dy, new_source->text_length); _copyInputVector(optional_attributes->rotate, optional_attributes_offset, &new_source->rotate, new_source->text_length); + if (!optional_attributes->rotate.empty() && optional_attributes_offset >= optional_attributes->rotate.size()) { + SVGLength last_rotate; + last_rotate = 0.f; + for (std::vector::const_iterator it = optional_attributes->rotate.begin() ; it != optional_attributes->rotate.end() ; ++it) + if (it->_set) + last_rotate = *it; + new_source->rotate.resize(1, last_rotate); + } } _input_stream.push_back(new_source); diff --git a/src/libnrtype/Layout-TNG-OutIter.cpp b/src/libnrtype/Layout-TNG-OutIter.cpp index abe282005..bbd4aa6fd 100644 --- a/src/libnrtype/Layout-TNG-OutIter.cpp +++ b/src/libnrtype/Layout-TNG-OutIter.cpp @@ -200,7 +200,7 @@ Layout::iterator Layout::sourceToIterator(void *source_cookie) const return sourceToIterator(source_cookie, Glib::ustring::const_iterator(std::string::const_iterator(NULL))); } -boost::optional Layout::glyphBoundingBox(iterator const &it, double *rotation) const +Geom::OptRect Layout::glyphBoundingBox(iterator const &it, double *rotation) const { if (rotation) *rotation = _glyphs[it._glyph_index].rotation; return _glyphs[it._glyph_index].span(this).font->BBox(_glyphs[it._glyph_index].glyph); diff --git a/src/libnrtype/Layout-TNG-Output.cpp b/src/libnrtype/Layout-TNG-Output.cpp index a93993c56..49967cd59 100644 --- a/src/libnrtype/Layout-TNG-Output.cpp +++ b/src/libnrtype/Layout-TNG-Output.cpp @@ -117,7 +117,7 @@ void Layout::getBoundingBox(NRRect *bounding_box, Geom::Matrix const &transform, Geom::Matrix total_transform = glyph_matrix; total_transform *= transform; if(_glyphs[glyph_index].span(this).font) { - boost::optional glyph_rect = _glyphs[glyph_index].span(this).font->BBox(_glyphs[glyph_index].glyph); + Geom::OptRect glyph_rect = _glyphs[glyph_index].span(this).font->BBox(_glyphs[glyph_index].glyph); if (glyph_rect) { Geom::Point bmi = glyph_rect->min(), bma = glyph_rect->max(); Geom::Point tlp(bmi[0],bmi[1]), trp(bma[0],bmi[1]), blp(bmi[0],bma[1]), brp(bma[0],bma[1]); diff --git a/src/libnrtype/Layout-TNG.h b/src/libnrtype/Layout-TNG.h index 3d0c57288..19680b140 100644 --- a/src/libnrtype/Layout-TNG.h +++ b/src/libnrtype/Layout-TNG.h @@ -449,7 +449,7 @@ public: /** Returns the bounding box of the given glyph, and its rotation. The centre of rotation is the horizontal centre of the box at the text baseline. */ - boost::optional glyphBoundingBox(iterator const &it, double *rotation) const; + Geom::OptRect glyphBoundingBox(iterator const &it, double *rotation) const; /** Returns the zero-based line number of the character pointed to by \a it. */ diff --git a/src/libnrtype/RasterFont.cpp b/src/libnrtype/RasterFont.cpp index 3fbbe62d7..14f6c7afa 100644 --- a/src/libnrtype/RasterFont.cpp +++ b/src/libnrtype/RasterFont.cpp @@ -107,7 +107,7 @@ void raster_font::BBox(int glyph_id,NRRect *area) { area->x0=area->y0=area->x1=area->y1=0; if ( daddy == NULL ) return; - boost::optional res=daddy->BBox(glyph_id); + Geom::OptRect res=daddy->BBox(glyph_id); if (res) { Geom::Point bmi=res->min(),bma=res->max(); Geom::Point tlp(bmi[0],bmi[1]),trp(bma[0],bmi[1]),blp(bmi[0],bma[1]),brp(bma[0],bma[1]); diff --git a/src/libnrtype/font-instance.h b/src/libnrtype/font-instance.h index 2c8340e8a..4209a20af 100644 --- a/src/libnrtype/font-instance.h +++ b/src/libnrtype/font-instance.h @@ -78,7 +78,7 @@ public: bool FontMetrics(double &ascent, double &descent, double &leading); bool FontSlope(double &run, double &rise); // for generating slanted cursors for oblique fonts - boost::optional BBox(int glyph_id); + Geom::OptRect BBox(int glyph_id); // creates a rasterfont for the given style raster_font* RasterFont(Geom::Matrix const &trs, double stroke_width, diff --git a/src/line-snapper.cpp b/src/line-snapper.cpp index 140157fe3..f2d2f2ff6 100644 --- a/src/line-snapper.cpp +++ b/src/line-snapper.cpp @@ -27,7 +27,7 @@ void Inkscape::LineSnapper::freeSnap(SnappedConstraints &sc, Inkscape::SnapPreferences::PointType const &t, Geom::Point const &p, bool const &/*f*/, - boost::optional const &/*bbox_to_snap*/, + Geom::OptRect const &/*bbox_to_snap*/, std::vector const */*it*/, std::vector */*unselected_nodes*/) const { @@ -61,7 +61,7 @@ void Inkscape::LineSnapper::constrainedSnap(SnappedConstraints &sc, Inkscape::SnapPreferences::PointType const &t, Geom::Point const &p, bool const &/*f*/, - boost::optional const &/*bbox_to_snap*/, + Geom::OptRect const &/*bbox_to_snap*/, ConstraintLine const &c, std::vector const */*it*/) const diff --git a/src/line-snapper.h b/src/line-snapper.h index 593e8bd73..529db1caa 100644 --- a/src/line-snapper.h +++ b/src/line-snapper.h @@ -28,7 +28,7 @@ public: Inkscape::SnapPreferences::PointType const &t, Geom::Point const &p, bool const &first_point, - boost::optional const &bbox_to_snap, + Geom::OptRect const &bbox_to_snap, std::vector const *it, std::vector *unselected_nodes) const; @@ -36,7 +36,7 @@ public: Inkscape::SnapPreferences::PointType const &t, Geom::Point const &p, bool const &first_point, - boost::optional const &bbox_to_snap, + Geom::OptRect const &bbox_to_snap, ConstraintLine const &c, std::vector const *it) const; diff --git a/src/live_effects/CMakeLists.txt b/src/live_effects/CMakeLists.txt index 98875a5a2..89b7b9e3a 100644 --- a/src/live_effects/CMakeLists.txt +++ b/src/live_effects/CMakeLists.txt @@ -11,6 +11,7 @@ lpe-gears.cpp lpegroupbbox.cpp lpe-interpolate.cpp lpe-knot.cpp +lpe-hatches.cpp lpe-lattice.cpp lpe-mirror_symmetry.cpp lpeobject.cpp diff --git a/src/live_effects/Makefile_insert b/src/live_effects/Makefile_insert index 3b136d204..1bb001778 100644 --- a/src/live_effects/Makefile_insert +++ b/src/live_effects/Makefile_insert @@ -8,6 +8,7 @@ live_effects/clean: live_effects_liblive_effects_a_SOURCES = \ live_effects/effect.cpp \ live_effects/effect.h \ + live_effects/effect-enum.h \ live_effects/lpeobject.cpp \ live_effects/lpeobject.h \ live_effects/lpegroupbbox.cpp \ @@ -26,6 +27,8 @@ live_effects_liblive_effects_a_SOURCES = \ live_effects/lpe-knot.h \ live_effects/lpe-vonkoch.cpp \ live_effects/lpe-vonkoch.h \ + live_effects/lpe-hatches.cpp \ + live_effects/lpe-hatches.h \ live_effects/lpe-curvestitch.cpp \ live_effects/lpe-curvestitch.h \ live_effects/lpe-constructgrid.cpp \ diff --git a/src/live_effects/effect-enum.h b/src/live_effects/effect-enum.h new file mode 100644 index 000000000..1e82954f8 --- /dev/null +++ b/src/live_effects/effect-enum.h @@ -0,0 +1,72 @@ +#ifndef INKSCAPE_LIVEPATHEFFECT_ENUM_H +#define INKSCAPE_LIVEPATHEFFECT_ENUM_H + +/* + * Inkscape::LivePathEffect::EffectType + * +* Copyright (C) Johan Engelen 2008 + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "util/enums.h" + +#define LPE_ENABLE_TEST_EFFECTS + +namespace Inkscape { +namespace LivePathEffect { + +enum EffectType { + BEND_PATH = 0, + PATTERN_ALONG_PATH, + FREEHAND_SHAPE, + SKETCH, + HATCHES, + VONKOCH, + KNOT, +#ifdef LPE_ENABLE_TEST_EFFECTS + DOEFFECTSTACK_TEST, +#endif + GEARS, + CURVE_STITCH, + CIRCLE_WITH_RADIUS, + PERSPECTIVE_PATH, + SPIRO, + LATTICE, + ENVELOPE, + CONSTRUCT_GRID, + PERP_BISECTOR, + TANGENT_TO_CURVE, + MIRROR_SYMMETRY, + CIRCLE_3PTS, + ANGLE_BISECTOR, + PARALLEL, + COPY_ROTATE, + OFFSET, + RULER, + BOOLOPS, + INTERPOLATE, + TEXT_LABEL, + PATH_LENGTH, + LINE_SEGMENT, + INVALID_LPE // This must be last +}; + +extern const Util::EnumData LPETypeData[]; /// defined in effect.cpp +extern const Util::EnumDataConverter LPETypeConverter; /// defined in effect.cpp + +} //namespace LivePathEffect +} //namespace Inkscape + +#endif + +/* + 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 : diff --git a/src/live_effects/effect.cpp b/src/live_effects/effect.cpp index a04100cd3..bb5f0c554 100644 --- a/src/live_effects/effect.cpp +++ b/src/live_effects/effect.cpp @@ -42,6 +42,7 @@ #include "live_effects/lpe-sketch.h" #include "live_effects/lpe-vonkoch.h" #include "live_effects/lpe-knot.h" +#include "live_effects/lpe-hatches.h" #include "live_effects/lpe-test-doEffect-stack.h" #include "live_effects/lpe-gears.h" #include "live_effects/lpe-curvestitch.h" @@ -99,6 +100,7 @@ const Util::EnumData LPETypeData[] = { {COPY_ROTATE, N_("Rotate copies"), "copy_rotate"}, {RULER, N_("Ruler"), "ruler"}, {SKETCH, N_("Sketch"), "sketch"}, + {HATCHES, N_("Hatches"), "hatches"}, {SPIRO, N_("Spiro spline"), "spiro"}, {CURVE_STITCH, N_("Stitch Sub-Paths"), "curvestitching"}, {TANGENT_TO_CURVE, N_("Tangent to curve"), "tangent_to_curve"}, @@ -137,6 +139,9 @@ Effect::New(EffectType lpenr, LivePathEffectObject *lpeobj) case SKETCH: neweffect = static_cast ( new LPESketch(lpeobj) ); break; + case HATCHES: + neweffect = static_cast ( new LPEHatches(lpeobj) ); + break; case VONKOCH: neweffect = static_cast ( new LPEVonKoch(lpeobj) ); break; @@ -663,10 +668,9 @@ Effect::providesKnotholder() if (kh_entity_vector.size() > 0) return true; - // otherwise: are there any PointParams? + // otherwise: are there any parameters that have knotholderentities? for (std::vector::iterator p = param_vector.begin(); p != param_vector.end(); ++p) { -// if ( Inkscape::LivePathEffect::PointParam *pointparam = dynamic_cast(*p) ) { - if (dynamic_cast(*p)) { + if ((*p)->providesKnotHolderEntities()) { return true; } } diff --git a/src/live_effects/effect.h b/src/live_effects/effect.h index 8dd1354e2..ae42e358c 100644 --- a/src/live_effects/effect.h +++ b/src/live_effects/effect.h @@ -16,15 +16,13 @@ #include <2geom/path.h> #include <2geom/forward.h> #include "ui/widget/registry.h" -#include "util/enums.h" #include "sp-lpe-item.h" #include "knotholder.h" #include "parameter/bool.h" +#include "effect-enum.h" #define LPE_CONVERSION_TOLERANCE 0.01 // FIXME: find good solution for this. -#define LPE_ENABLE_TEST_EFFECTS - struct SPDocument; struct SPDesktop; struct SPItem; @@ -49,44 +47,6 @@ namespace NodePath { namespace LivePathEffect { -enum EffectType { - BEND_PATH = 0, - PATTERN_ALONG_PATH, - FREEHAND_SHAPE, - SKETCH, - VONKOCH, - KNOT, -#ifdef LPE_ENABLE_TEST_EFFECTS - DOEFFECTSTACK_TEST, -#endif - GEARS, - CURVE_STITCH, - CIRCLE_WITH_RADIUS, - PERSPECTIVE_PATH, - SPIRO, - LATTICE, - ENVELOPE, - CONSTRUCT_GRID, - PERP_BISECTOR, - TANGENT_TO_CURVE, - MIRROR_SYMMETRY, - CIRCLE_3PTS, - ANGLE_BISECTOR, - PARALLEL, - COPY_ROTATE, - OFFSET, - RULER, - BOOLOPS, - INTERPOLATE, - TEXT_LABEL, - PATH_LENGTH, - LINE_SEGMENT, - INVALID_LPE // This must be last -}; - -extern const Util::EnumData LPETypeData[]; -extern const Util::EnumDataConverter LPETypeConverter; - enum LPEPathFlashType { SUPPRESS_FLASH, // PERMANENT_FLASH, diff --git a/src/live_effects/lpe-circle_with_radius.cpp b/src/live_effects/lpe-circle_with_radius.cpp index 8b169af3c..574a9c004 100644 --- a/src/live_effects/lpe-circle_with_radius.cpp +++ b/src/live_effects/lpe-circle_with_radius.cpp @@ -1,20 +1,11 @@ -#define INKSCAPE_LPE_CIRCLE_WITH_RADIUS_CPP -/** \file - * LPE implementation, used as an example for a base starting class - * when implementing new LivePathEffects. - * - * In vi, three global search-and-replaces will let you rename everything - * in this and the .h file: - * - * :%s/CIRCLE_WITH_RADIUS/YOURNAME/g - * :%s/CircleWithRadius/Yourname/g - * :%s/circle_with_radius/yourname/g +/** @file + * @brief LPE effect that draws a circle based on two points and a radius + * - implementation */ -/* - * Authors: - * Johan Engelen -* -* Copyright (C) Johan Engelen 2007 +/* Authors: + * Johan Engelen + * + * Copyright (C) 2007 Authors * * Released under GNU GPL, read the file 'COPYING' for more information */ @@ -106,4 +97,4 @@ LPECircleWithRadius::doEffect_pwd2 (Geom::Piecewise > & p fill-column:99 End: */ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/live_effects/lpe-circle_with_radius.h b/src/live_effects/lpe-circle_with_radius.h index 19330eb33..2b9494875 100644 --- a/src/live_effects/lpe-circle_with_radius.h +++ b/src/live_effects/lpe-circle_with_radius.h @@ -1,19 +1,17 @@ -#ifndef INKSCAPE_LPE_CIRCLE_WITH_RADIUS_H -#define INKSCAPE_LPE_CIRCLE_WITH_RADIUS_H - -/** \file - * LPE implementation, see lpe-circle_with_radius.cpp. +/** @file + * @brief LPE effect that draws a circle based on two points and a radius */ - -/* - * Authors: - * Johan Engelen -* -* Copyright (C) Johan Engelen 2007 +/* Authors: + * Johan Engelen + * + * Copyright (C) 2007 Authors * * Released under GNU GPL, read the file 'COPYING' for more information */ +#ifndef INKSCAPE_LPE_CIRCLE_WITH_RADIUS_H +#define INKSCAPE_LPE_CIRCLE_WITH_RADIUS_H + #include "live_effects/effect.h" #include "live_effects/parameter/parameter.h" #include "live_effects/parameter/path.h" @@ -43,3 +41,14 @@ private: } //namespace Inkscape #endif + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/live_effects/lpe-curvestitch.cpp b/src/live_effects/lpe-curvestitch.cpp index 4404620be..2716e45d7 100644 --- a/src/live_effects/lpe-curvestitch.cpp +++ b/src/live_effects/lpe-curvestitch.cpp @@ -79,10 +79,13 @@ LPECurveStitch::doEffect_path (std::vector const & path_in) endpoint_spacing_variation.resetRandomizer(); D2 > stroke = make_cuts_independent(strokepath.get_pwd2()); - Interval bndsStroke = bounds_exact(stroke[0]); - gdouble scaling = bndsStroke.max() - bndsStroke.min(); - Interval bndsStrokeY = bounds_exact(stroke[1]); - Point stroke_origin(bndsStroke.min(), (bndsStrokeY.max()+bndsStrokeY.min())/2); + OptInterval bndsStroke = bounds_exact(stroke[0]); + OptInterval bndsStrokeY = bounds_exact(stroke[1]); + if (!bndsStroke && !bndsStrokeY) { + return path_in; + } + gdouble scaling = bndsStroke->max() - bndsStroke->min(); + Point stroke_origin(bndsStroke->min(), (bndsStrokeY->max()+bndsStrokeY->min())/2); std::vector path_out; @@ -163,18 +166,22 @@ LPECurveStitch::resetDefaults(SPItem * item) pwd2.concat( temppath[i].toPwSb() ); } D2 > d2pw = make_cuts_independent(pwd2); - Interval bndsX = bounds_exact(d2pw[0]); - Interval bndsY = bounds_exact(d2pw[1]); - Point start(bndsX.min(), (bndsY.max()+bndsY.min())/2); - Point end(bndsX.max(), (bndsY.max()+bndsY.min())/2); - - if ( !Geom::are_near(start,end) ) { - Geom::Path path; - path.start( start ); - path.appendNew( end ); - strokepath.set_new_value( path.toPwSb(), true ); + OptInterval bndsX = bounds_exact(d2pw[0]); + OptInterval bndsY = bounds_exact(d2pw[1]); + if (bndsX && bndsY) { + Point start(bndsX->min(), (bndsY->max()+bndsY->min())/2); + Point end(bndsX->max(), (bndsY->max()+bndsY->min())/2); + if ( !Geom::are_near(start,end) ) { + Geom::Path path; + path.start( start ); + path.appendNew( end ); + strokepath.set_new_value( path.toPwSb(), true ); + } else { + // bounding box is too small to make decent path. set to default default. :-) + strokepath.param_set_and_write_default(); + } } else { - // bounding box is too small to make decent path. set to default default. :-) + // bounding box is non-existent. set to default default. :-) strokepath.param_set_and_write_default(); } } diff --git a/src/live_effects/lpe-hatches.cpp b/src/live_effects/lpe-hatches.cpp new file mode 100644 index 000000000..2205d91f3 --- /dev/null +++ b/src/live_effects/lpe-hatches.cpp @@ -0,0 +1,593 @@ +#define INKSCAPE_LPE_HATCHES_CPP +/** \file + * LPE Curve Stitching implementation, used as an example for a base starting class + * when implementing new LivePathEffects. + * + */ +/* + * Authors: + * JF Barraud. +* +* Copyright (C) Johan Engelen 2007 + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "live_effects/lpe-hatches.h" + +#include "sp-item.h" +#include "sp-path.h" +#include "svg/svg.h" +#include "xml/repr.h" + +#include <2geom/path.h> +#include <2geom/piecewise.h> +#include <2geom/sbasis.h> +#include <2geom/sbasis-math.h> +#include <2geom/sbasis-geometric.h> +#include <2geom/bezier-to-sbasis.h> +#include <2geom/sbasis-to-bezier.h> +#include <2geom/d2.h> +#include <2geom/matrix.h> + +#include "ui/widget/scalar.h" +#include "libnr/nr-values.h" + +namespace Inkscape { +namespace LivePathEffect { + +using namespace Geom; + +//------------------------------------------------ +// Some goodies to navigate through curve's levels. +//------------------------------------------------ +struct LevelCrossing{ + Point pt; + double t; + bool sign; + bool used; + std::pair next_on_curve; + std::pair prev_on_curve; +}; +struct LevelCrossingOrder { + bool operator()(LevelCrossing a, LevelCrossing b) { + return a.pt[Y] < b.pt[Y]; + } +}; +struct LevelCrossingInfo{ + double t; + unsigned level; + unsigned idx; +}; +struct LevelCrossingInfoOrder { + bool operator()(LevelCrossingInfo a, LevelCrossingInfo b) { + return a.t < b.t; + } +}; + +typedef std::vector LevelCrossings; + +std::vector +discontinuities(Piecewise > const &f){ + std::vector result; + if (f.size()==0) return result; + result.push_back(f.cuts[0]); + Point prev_pt = f.segs[0].at1(); + //double old_t = f.cuts[0]; + for(unsigned i=1; i{ +public: + LevelsCrossings():std::vector(){}; + LevelsCrossings(std::vector > const ×, + Piecewise > const &f, + Piecewise const &dx){ + + for (unsigned i=0; i0 ); + lc.used = false; + lcs.push_back(lc); + } + std::sort(lcs.begin(), lcs.end(), LevelCrossingOrder()); + push_back(lcs); + } + //Now create time ordering. + std::vectortemp; + for (unsigned i=0; i jumps = discontinuities(f); + unsigned jump_idx = 0; + unsigned first_in_comp = 0; + for (unsigned i=0; i jumps[jump_idx+1]){ + std::pairnext_data(temp[first_in_comp].level,temp[first_in_comp].idx); + (*this)[lvl][idx].next_on_curve = next_data; + first_in_comp = i+1; + jump_idx += 1; + }else{ + std::pair next_data(temp[i+1].level,temp[i+1].idx); + (*this)[lvl][idx].next_on_curve = next_data; + } + } + + for (unsigned i=0; i next = (*this)[i][j].next_on_curve; + (*this)[next.first][next.second].prev_on_curve = std::pair(i,j); + } + } +#if 0 + std::cout<<"\n"; + for (unsigned i=0; i "; + } + std::cout<<"\n"; + for (unsigned i=0; i= (*this)[level].size()-1 || (*this)[level][idx+1].used ) { + level = size(); + return; + } + idx += 1; + }else{ + if ( idx <= 0 || (*this)[level][idx-1].used ) { + level = size(); + return; + } + idx -= 1; + } + direction += 1; + return; + } + double t = (*this)[level][idx].t; + double sign = ((*this)[level][idx].sign ? 1 : -1); + double next_t = t; + //level += 1; + direction = (direction + 1)%4; + if (level == size()){ + return; + } + + std::pair next; + if ( sign > 0 ){ + next = (*this)[level][idx].next_on_curve; + }else{ + next = (*this)[level][idx].prev_on_curve; + } + + if ( level+1 != next.first || (*this)[next.first][next.second].used ) { + level = size(); + return; + } + level = next.first; + idx = next.second; + +/********************* + //look for next time on the same level + for (unsigned j=0; j<(*this)[level].size(); j++){ + double tj = (*this)[level][j].t; + if ( sign*(tj-t) > 0 ){ + if( next_t == t || sign*(tj-next_t)<0 ){ + next_t = tj; + idx = j; + } + } + } + if ( next_t == t ){//not found? look at max/min time in this component, as time is "periodic". + for (unsigned j=0; j<(*this)[level].size(); j++){ + double tj = (*this)[level][j].t; + if ( -sign*(tj-next_t) > 0 ){ + next_t = tj; + idx = j; + } + } + } + if ( next_t == t ){//still not found? houch! this should not happen. + level = size(); + return; + } + if ( (*this)[level][idx].used ) { + level = size(); + return; + } +*************************/ + return; + } +}; + +//------------------------------------------------------- +// Bend a path... +//------------------------------------------------------- + +Piecewise > bend(Piecewise > const &f, Piecewise bending){ + D2 > ff = make_cuts_independent(f); + ff[X] += compose(bending, ff[Y]); + return sectionize(ff); +} + +//-------------------------------------------------------- +// The Hatches lpe. +//-------------------------------------------------------- +LPEHatches::LPEHatches(LivePathEffectObject *lpeobject) : + Effect(lpeobject), + dist_rdm(_("Dist randomness"), _("Variation of dist between hatches, in %."), "dist_rdm", &wr, this, 75), + growth(_("Growth"), _("Growth of distance between hatches."), "growth", &wr, this, 0.), + scale_tf(_("Start smothness (front side)"), _("MISSING DESCRIPTION"), "scale_tf", &wr, this, 1.), + scale_tb(_("Start smothness (back side)"), _("MISSING DESCRIPTION"), "scale_tb", &wr, this, 1.), + scale_bf(_("End smothness (front side)"), _("MISSING DESCRIPTION"), "scale_bf", &wr, this, 1.), + scale_bb(_("End smothness (back side)"), _("MISSING DESCRIPTION"), "scale_bb", &wr, this, 1.), + top_edge_variation(_("Start edge variance"), _("The amount of random jitter to move the hatches start"), "top_edge_variation", &wr, this, 0), + bot_edge_variation(_("End edge variance"), _("The amount of random jitter to move the hatches end"), "bot_edge_variation", &wr, this, 0), + top_tgt_variation(_("Start tangential variance"), _("The amount of random jitter to move the hatches start along the boundary"), "top_tgt_variation", &wr, this, 0), + bot_tgt_variation(_("End tangential variance"), _("The amount of random jitter to move the hatches end along the boundary"), "bot_tgt_variation", &wr, this, 0), + top_smth_variation(_("Start smoothness variance"), _("Randomness of the smoothness of the U turn at hatches start"), "top_smth_variation", &wr, this, 0), + bot_smth_variation(_("End spacing variance"), _("Randomness of the smoothness of the U turn at hatches end"), "bot_smth_variation", &wr, this, 0), + fat_output(_("Generate thick/thin path"), _("Simulate a stroke of varrying width"), "fat_output", &wr, this, true), + do_bend(_("Bend hatches"), _("Add a global bend to the hatches (slower)"), "do_bend", &wr, this, true), + stroke_width_top(_("Stroke width (start side)"), _("Width at hatches 'start'"), "stroke_width_top", &wr, this, 1.), + stroke_width_bot(_("Stroke width (end side)"), _("Width at hatches 'end'"), "stroke_width_bot", &wr, this, 1.), + front_thickness(_("Front thickness (%)"), _("MISSING DESCRIPTION"), "front_thickness", &wr, this, 1.), + back_thickness(_("Back thickness (%)"), _("MISSING DESCRIPTION"), "back_thickness", &wr, this, .25), + bender(_("Global bending"), _("Relative position to ref point defines global bending direction and amount"), "bender", &wr, this, NULL, Geom::Point(-5,0)), + direction(_("Hatches width and dir"), _("Defines hatches frequency and direction"), "direction", &wr, this, Geom::Point(50,0)) +{ + registerParameter( dynamic_cast(&direction) ); + registerParameter( dynamic_cast(&do_bend) ); + registerParameter( dynamic_cast(&bender) ); + registerParameter( dynamic_cast(&dist_rdm) ); + registerParameter( dynamic_cast(&growth) ); + registerParameter( dynamic_cast(&top_edge_variation) ); + registerParameter( dynamic_cast(&bot_edge_variation) ); + registerParameter( dynamic_cast(&top_tgt_variation) ); + registerParameter( dynamic_cast(&bot_tgt_variation) ); + registerParameter( dynamic_cast(&scale_tf) ); + registerParameter( dynamic_cast(&scale_tb) ); + registerParameter( dynamic_cast(&scale_bf) ); + registerParameter( dynamic_cast(&scale_bb) ); + registerParameter( dynamic_cast(&top_smth_variation) ); + registerParameter( dynamic_cast(&bot_smth_variation) ); + registerParameter( dynamic_cast(&fat_output) ); + registerParameter( dynamic_cast(&stroke_width_top) ); + registerParameter( dynamic_cast(&stroke_width_bot) ); + registerParameter( dynamic_cast(&front_thickness) ); + registerParameter( dynamic_cast(&back_thickness) ); + + //hatch_dist.param_set_range(0.1, NR_HUGE); + growth.param_set_range(-0.95, NR_HUGE); + dist_rdm.param_set_range(0, 99.); + stroke_width_top.param_set_range(0, NR_HUGE); + stroke_width_bot.param_set_range(0, NR_HUGE); + front_thickness.param_set_range(0, NR_HUGE); + back_thickness.param_set_range(0, NR_HUGE); + + concatenate_before_pwd2 = true; + show_orig_path = true; +} + +LPEHatches::~LPEHatches() +{ + +} + +Geom::Piecewise > +LPEHatches::doEffect_pwd2 (Geom::Piecewise > const & pwd2_in){ + + Piecewise > result; + + Piecewise > transformed_pwd2_in = pwd2_in; + Piecewise tilter;//used to bend the hatches + Matrix bend_mat;//used to bend the hatches + + if (do_bend.get_value()){ + Point bend_dir = -rot90(unit_vector(direction.getOrigin() - bender)); + double bend_amount = L2(direction.getOrigin() - bender); + bend_mat = Matrix(-bend_dir[Y], bend_dir[X], bend_dir[X], bend_dir[Y],0,0); + transformed_pwd2_in = pwd2_in * bend_mat; + tilter = Piecewise(shift(Linear(bend_amount),1)); + OptRect bbox = bounds_exact( transformed_pwd2_in ); + if (not(bbox)) return pwd2_in; + tilter.setDomain((*bbox)[Y]); + transformed_pwd2_in = bend(transformed_pwd2_in, tilter); + transformed_pwd2_in = transformed_pwd2_in * bend_mat.inverse(); + } + hatch_dist = Geom::L2(direction.getVector())/5; + Point hatches_dir = rot90(unit_vector(direction.getVector())); + Matrix mat(-hatches_dir[Y], hatches_dir[X], hatches_dir[X], hatches_dir[Y],0,0); + transformed_pwd2_in = transformed_pwd2_in * mat; + + std::vector > snakePoints; + snakePoints = linearSnake(transformed_pwd2_in); + if ( snakePoints.size() > 0 ){ + Piecewise >smthSnake = smoothSnake(snakePoints); + smthSnake = smthSnake*mat.inverse(); + if (do_bend.get_value()){ + smthSnake = smthSnake*bend_mat; + smthSnake = bend(smthSnake, -tilter); + smthSnake = smthSnake*bend_mat.inverse(); + } + return (smthSnake); + } + return pwd2_in; +} + +//------------------------------------------------ +// Generate the levels with random, growth... +//------------------------------------------------ +std::vector +LPEHatches::generateLevels(Interval const &domain){ + std::vector result; + double x = domain.min() + double(hatch_dist)/2.; + double step = double(hatch_dist); + double scale = 1+(hatch_dist*growth/domain.extent()); + while (x < domain.max()){ + result.push_back(x); + double rdm = 1; + if (dist_rdm.get_value() != 0) + rdm = 1.+ double((2*dist_rdm - dist_rdm.get_value()))/100.; + x+= step*rdm; + step*=scale;//(1.+double(growth)); + } + return result; +} + + +//------------------------------------------------------- +// Walk through the intersections to create linear hatches +//------------------------------------------------------- +std::vector > +LPEHatches::linearSnake(Piecewise > const &f){ + + std::vector > result; + + Piecewise x = make_cuts_independent(f)[X]; + //Rque: derivative is computed twice in the 2 lines below!! + Piecewise dx = derivative(x); + OptInterval range = bounds_exact(x); + + if (not range) return result; + std::vector levels = generateLevels(*range); + std::vector > times; + times = multi_roots(x,levels); + +//TODO: fix multi_roots!!!***************************************** +//remove doubles :-( + std::vector > cleaned_times(levels.size(),std::vector()); + for (unsigned i=0; i0 ){ + double last_t = times[i][0]-1;//ugly hack!! + for (unsigned j=0; j0.000001){ + last_t = times[i][j]; + cleaned_times[i].push_back(last_t); + } + } + } + } + times = cleaned_times; +// for (unsigned i=0; i result_component; + while ( i < lscs.size() ){ + int dir = 0; + while ( i < lscs.size() ){ + result_component.push_back(lscs[i][j].pt); + lscs[i][j].used = true; + lscs.step(i,j, dir); + } + result.push_back(result_component); + result_component = std::vector(); + lscs.findFirstUnused(i,j); + } + return result; +} + +//------------------------------------------------------- +// Smooth the linear hatches according to params... +//------------------------------------------------------- +Piecewise > +LPEHatches::smoothSnake(std::vector > const &linearSnake){ + + Piecewise > result; + for (unsigned comp=0; comp=2){ + bool is_top = true;//Inversion here; due to downward y? + Point last_pt = linearSnake[comp][0]; + Point last_top = linearSnake[comp][0]; + Point last_bot = linearSnake[comp][0]; + Point last_hdle = linearSnake[comp][0]; + Point last_top_hdle = linearSnake[comp][0]; + Point last_bot_hdle = linearSnake[comp][0]; + Geom::Path res_comp(last_pt); + Geom::Path res_comp_top(last_pt); + Geom::Path res_comp_bot(last_pt); + unsigned i=1; + while( i+1 inside[X]) inside_hdle_in = inside; + //if (inside_hdle_out[X] < inside[X]) inside_hdle_out = inside; + + if (is_top){ + res_comp_top.appendNew(last_top_hdle,new_hdle_in,new_pt); + res_comp_bot.appendNew(last_bot_hdle,inside_hdle_in,inside); + last_top_hdle = new_hdle_out; + last_bot_hdle = inside_hdle_out; + }else{ + res_comp_top.appendNew(last_top_hdle,inside_hdle_in,inside); + res_comp_bot.appendNew(last_bot_hdle,new_hdle_in,new_pt); + last_top_hdle = inside_hdle_out; + last_bot_hdle = new_hdle_out; + } + }else{ + res_comp.appendNew(last_hdle,new_hdle_in,new_pt); + } + + last_hdle = new_hdle_out; + i+=2; + is_top = !is_top; + } + if ( i(last_top_hdle,linearSnake[comp][i],linearSnake[comp][i]); + res_comp_bot.appendNew(last_bot_hdle,linearSnake[comp][i],linearSnake[comp][i]); + }else{ + res_comp.appendNew(last_hdle,linearSnake[comp][i],linearSnake[comp][i]); + } + if ( fat_output.get_value() ){ + res_comp = res_comp_bot; + res_comp.append(res_comp_top.reverse(),Geom::Path::STITCH_DISCONTINUOUS); + } + result.concat(res_comp.toPwSb()); + } + } + return result; +} + +void +LPEHatches::doBeforeEffect (SPLPEItem */*lpeitem*/) +{ + using namespace Geom; + top_edge_variation.resetRandomizer(); + bot_edge_variation.resetRandomizer(); + top_tgt_variation.resetRandomizer(); + bot_tgt_variation.resetRandomizer(); + top_smth_variation.resetRandomizer(); + bot_smth_variation.resetRandomizer(); + dist_rdm.resetRandomizer(); + + //original_bbox(lpeitem); +} + + +void +LPEHatches::resetDefaults(SPItem * item) +{ + Geom::OptRect bbox = item->getBounds(Geom::identity(), SPItem::GEOMETRIC_BBOX); + Geom::Point origin(0.,0.); + Geom::Point vector(50.,0.); + if (bbox) { + origin = bbox->midpoint(); + vector = Geom::Point((*bbox)[X].extent()/4, 0.); + top_edge_variation.param_set_value( (*bbox)[Y].extent()/10, 0 ); + bot_edge_variation.param_set_value( (*bbox)[Y].extent()/10, 0 ); + } + direction.set_and_write_new_values(origin, vector); + bender.param_set_and_write_new_value( origin + Geom::Point(5,0) ); + hatch_dist = Geom::L2(vector)/5; +} + + +} //namespace LivePathEffect +} /* 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 : diff --git a/src/live_effects/lpe-hatches.h b/src/live_effects/lpe-hatches.h new file mode 100644 index 000000000..029847186 --- /dev/null +++ b/src/live_effects/lpe-hatches.h @@ -0,0 +1,77 @@ +#ifndef INKSCAPE_LPE_HATCHES_H +#define INKSCAPE_LPE_HATCHES_H + +/** \file + * Implementation of the curve stitch effect, see lpe-hatches.cpp + */ + +/* + * Authors: + * JFBarraud + * + * Copyright (C) JF Barraud 2008. + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "live_effects/effect.h" +#include "live_effects/parameter/point.h" +#include "live_effects/parameter/parameter.h" +#include "live_effects/parameter/bool.h" +#include "live_effects/parameter/random.h" +#include "live_effects/parameter/vector.h" + +namespace Inkscape { +namespace LivePathEffect { + +class LPEHatches : public Effect { +public: + LPEHatches(LivePathEffectObject *lpeobject); + virtual ~LPEHatches(); + + virtual Geom::Piecewise > + doEffect_pwd2 (Geom::Piecewise > const & pwd2_in); + + virtual void resetDefaults(SPItem * item); + + virtual void doBeforeEffect(SPLPEItem * item); + + std::vector + generateLevels(Geom::Interval const &domain); + + std::vector > + linearSnake(Geom::Piecewise > const &f); + + Geom::Piecewise > + smoothSnake(std::vector > const &linearSnake); + +private: + double hatch_dist; + RandomParam dist_rdm; + ScalarParam growth; + //topfront,topback,bottomfront,bottomback handle scales. + ScalarParam scale_tf, scale_tb, scale_bf, scale_bb; + + RandomParam top_edge_variation; + RandomParam bot_edge_variation; + RandomParam top_tgt_variation; + RandomParam bot_tgt_variation; + RandomParam top_smth_variation; + RandomParam bot_smth_variation; + + BoolParam fat_output, do_bend; + ScalarParam stroke_width_top; + ScalarParam stroke_width_bot; + ScalarParam front_thickness, back_thickness; + + PointParam bender; + VectorParam direction; + + LPEHatches(const LPEHatches&); + LPEHatches& operator=(const LPEHatches&); +}; + +} //namespace LivePathEffect +} //namespace Inkscape + +#endif diff --git a/src/live_effects/lpe-interpolate.cpp b/src/live_effects/lpe-interpolate.cpp index a4c722acc..b2f1547a9 100644 --- a/src/live_effects/lpe-interpolate.cpp +++ b/src/live_effects/lpe-interpolate.cpp @@ -61,8 +61,12 @@ LPEInterpolate::doEffect_path (Geom::PathVector const & path_in) Geom::Piecewise > pwd2_B = path_in[1].toPwSb(); // Transform both paths to (0,0) midpoint, so they can easily be positioned along interpolate_path - pwd2_A -= Geom::bounds_exact(pwd2_A).midpoint(); - pwd2_B -= Geom::bounds_exact(pwd2_B).midpoint(); + if (Geom::OptRect bounds = Geom::bounds_exact(pwd2_A)) { + pwd2_A -= bounds->midpoint(); + } + if (Geom::OptRect bounds = Geom::bounds_exact(pwd2_B)) { + pwd2_B -= bounds->midpoint(); + } // Make sure both paths have the same number of segments and cuts at the same locations pwd2_B.setDomain(pwd2_A.domain()); @@ -99,14 +103,18 @@ LPEInterpolate::resetDefaults(SPItem * item) if ( (pathv.size() < 2) ) return; - Geom::Rect bounds_A = pathv[0].boundsExact(); - Geom::Rect bounds_B = pathv[1].boundsExact(); - - Geom::PathVector traj_pathv; - traj_pathv.push_back( Geom::Path() ); - traj_pathv[0].start( bounds_A.midpoint() ); - traj_pathv[0].appendNew( bounds_B.midpoint() ); - trajectory_path.set_new_value( traj_pathv, true ); + Geom::OptRect bounds_A = pathv[0].boundsExact(); + Geom::OptRect bounds_B = pathv[1].boundsExact(); + + if (bounds_A && bounds_B) { + Geom::PathVector traj_pathv; + traj_pathv.push_back( Geom::Path() ); + traj_pathv[0].start( bounds_A->midpoint() ); + traj_pathv[0].appendNew( bounds_B->midpoint() ); + trajectory_path.set_new_value( traj_pathv, true ); + } else { + trajectory_path.param_set_and_write_default(); + } } } //namespace LivePathEffect diff --git a/src/live_effects/lpe-knot.cpp b/src/live_effects/lpe-knot.cpp index 0ff1beccf..df18f8767 100644 --- a/src/live_effects/lpe-knot.cpp +++ b/src/live_effects/lpe-knot.cpp @@ -1,12 +1,10 @@ -#define INKSCAPE_LPE_KNOT_CPP -/** \file - * LPE implementation +/** @file + * @brief LPE knot effect implementation */ -/* - * Authors: - * JF Barraud -* -* Copyright (C) JF Barraud 2007 +/* Authors: + * Jean-Francois Barraud + * + * Copyright (C) 2007 Authors * * Released under GNU GPL, read the file 'COPYING' for more information */ @@ -107,8 +105,9 @@ findShadowedTime(Geom::Path const &patha, return Interval(tmin,tmax); } +// TODO: Fix all this in 2geom!!!! //--------------------------------------------------------------------------- -// a 2Geom work around. +// some 2Geom work around. //--------------------------------------------------------------------------- //Cubic Bezier curves might self intersect; the 2geom code used to miss them. @@ -133,29 +132,36 @@ split_at_horiz_vert_tgt (std::vector const & path_in){ return ret; } - -//--------------------------------------------------------------------------- -//LPEKnot specific Crossing Data manipulation. -//--------------------------------------------------------------------------- - -//TODO: Fix this in 2Geom: I think CrossingSets should not contain duplicates. +//TODO: Fix this in 2Geom; I think CrossingSets should not contain duplicates. Geom::CrossingSet crossingSet_remove_double(Geom::CrossingSet const &input){ Geom::CrossingSet result(input.size()); //Yeah, I know, there is a "unique" algorithm for that... + //Note: I'm not sure the duplicates are always consecutive!! (can be first and last, I think) + //Note: I also found crossings c with c.a==c.b and c.ta==c.tb . Is it normal? + //Note: I also found crossings c with c.ta or c.tb not in path[a] or path[b] domain. This is definitely not normal. Geom::Crossing last; for( unsigned i=0; i const &path) : std::vector() { using namespace Geom; -// g_print("JF>\nCrossing set content:\n"); + //g_print("DBG>\nCrossing set content:\n"); for( unsigned i=0; i (%u,%u) at times (%f,%f) ----->",c.a,c.b,c.ta,c.tb); + //g_print("DBG> [%u,%u]:(%u,%u) at times (%f,%f) ----->",i,n,c.a,c.b,c.ta,c.tb); unsigned j = c.getOther(i); - if (i 1)g_print("oops! -->"); + if (ti > 1) ti=1; + if (ti < 0) ti=0; + cp.pt = path[i].pointAt(c.getTime(i)); cp.i = i; cp.j = j; @@ -189,7 +201,7 @@ CrossingPoints::CrossingPoints(Geom::CrossingSet const &input, std::vector const &input) : std::vector() @@ -386,19 +411,8 @@ LPEKnot::doEffect_path (std::vector const &input_path) CrossingSet crossingTable = crossings_among(path_in); - for(unsigned i=0;iavant: %u,%u,%f,%f\n",crossingTable[i][j].a, crossingTable[i][j].b, crossingTable[i][j].ta, crossingTable[i][j].tb); - } - } crossingTable = crossingSet_remove_double(crossingTable); - for(unsigned i=0;iapres: %u,%u,%f,%f\n",crossingTable[i][j].a, crossingTable[i][j].b, crossingTable[i][j].ta, crossingTable[i][j].tb); - } - } - crossing_points = LPEKnotNS::CrossingPoints(crossingTable, path_in); crossing_points.inherit_signs(old_crdata); crossing_points_vector.param_set_and_write_new_value(crossing_points.to_vector()); @@ -522,8 +536,8 @@ KnotHolderEntityCrossingSwitcher::knot_click(guint state) /* ######################## */ -} //namespace LivePathEffect (setq default-directory "c:/Documents And Settings/jf/Mes Documents/InkscapeSVN") -} /* namespace Inkscape */ +} // namespace LivePathEffect +} // namespace Inkscape /* Local Variables: @@ -534,4 +548,4 @@ KnotHolderEntityCrossingSwitcher::knot_click(guint state) fill-column:99 End: */ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/live_effects/lpe-knot.h b/src/live_effects/lpe-knot.h index 4c98ccd55..cbd33466d 100644 --- a/src/live_effects/lpe-knot.h +++ b/src/live_effects/lpe-knot.h @@ -1,22 +1,21 @@ -#ifndef INKSCAPE_LPE_KNOT_H -#define INKSCAPE_LPE_KNOT_H - /** \file - * LPE implementation, see lpe-knot.cpp. + * LPE knot effect implementation, see lpe-knot.cpp. */ - -/* - * Authors: - * JFB, but derived from Johan Engelen! -* -* Copyright (C) Johan Engelen 2007 +/* Authors: + * Jean-Francois Barraud + * Johan Engelen + * + * Copyright (C) Johan Engelen 2007 * * Released under GNU GPL, read the file 'COPYING' for more information */ +#ifndef INKSCAPE_LPE_KNOT_H +#define INKSCAPE_LPE_KNOT_H + #include "live_effects/effect.h" #include "live_effects/parameter/parameter.h" -#include "live_effects/parameter/vector.h" +#include "live_effects/parameter/array.h" #include "live_effects/parameter/path.h" #include "2geom/crossing.h" @@ -70,7 +69,7 @@ private: // add the parameters for your effect here: ScalarParam interruption_width; ScalarParam switcher_size; - VectorParam crossing_points_vector; + ArrayParam crossing_points_vector; LPEKnotNS::CrossingPoints crossing_points; diff --git a/src/live_effects/lpe-patternalongpath.cpp b/src/live_effects/lpe-patternalongpath.cpp index 0e5011e51..954a01029 100644 --- a/src/live_effects/lpe-patternalongpath.cpp +++ b/src/live_effects/lpe-patternalongpath.cpp @@ -66,7 +66,8 @@ LPEPatternAlongPath::LPEPatternAlongPath(LivePathEffectObject *lpeobject) : normal_offset(_("Normal offset"), "", "normal_offset", &wr, this, 0), tang_offset(_("Tangential offset"), "", "tang_offset", &wr, this, 0), prop_units(_("Offsets in unit of pattern size"), _("Spacing, tangential and normal offset are expressed as a ratio of width/height"), "prop_units", &wr, this, false), - vertical_pattern(_("Pattern is vertical"), _("Rotate pattern 90 deg before applying"), "vertical_pattern", &wr, this, false) + vertical_pattern(_("Pattern is vertical"), _("Rotate pattern 90 deg before applying"), "vertical_pattern", &wr, this, false), + fuse_tolerance(_("Fuse nearby ends"), "Fuse ends closer than this number. 0 means don't fuse.", "fuse_tolerance", &wr, this, 0) { registerParameter( dynamic_cast(&pattern) ); registerParameter( dynamic_cast(©type) ); @@ -77,6 +78,7 @@ LPEPatternAlongPath::LPEPatternAlongPath(LivePathEffectObject *lpeobject) : registerParameter( dynamic_cast(&tang_offset) ); registerParameter( dynamic_cast(&prop_units) ); registerParameter( dynamic_cast(&vertical_pattern) ); + registerParameter( dynamic_cast(&fuse_tolerance) ); prop_scale.param_set_digits(3); prop_scale.param_set_increments(0.01, 0.10); @@ -94,105 +96,122 @@ LPEPatternAlongPath::doEffect_pwd2 (Geom::Piecewise > con /* Much credit should go to jfb and mgsloan of lib2geom development for the code below! */ Piecewise > output; + std::vector > > pre_output; PAPCopyType type = copytype.get_value(); D2 > patternd2 = make_cuts_independent(pattern.get_pwd2()); Piecewise x0 = vertical_pattern.get_value() ? Piecewise(patternd2[1]) : Piecewise(patternd2[0]); Piecewise y0 = vertical_pattern.get_value() ? Piecewise(patternd2[0]) : Piecewise(patternd2[1]); - Interval pattBndsX = bounds_exact(x0); - x0 -= pattBndsX.min(); - Interval pattBndsY = bounds_exact(y0); - y0 -= pattBndsY.middle(); - - double xspace = spacing; - double noffset = normal_offset; - double toffset = tang_offset; - if (prop_units.get_value()){ - xspace *= pattBndsX.extent(); - noffset *= pattBndsY.extent(); - toffset *= pattBndsX.extent(); - } + OptInterval pattBndsX = bounds_exact(x0); + OptInterval pattBndsY = bounds_exact(y0); + if (pattBndsX && pattBndsY) { + x0 -= pattBndsX->min(); + y0 -= pattBndsY->middle(); + + double xspace = spacing; + double noffset = normal_offset; + double toffset = tang_offset; + if (prop_units.get_value() && pattBndsY){ + xspace *= pattBndsX->extent(); + noffset *= pattBndsY->extent(); + toffset *= pattBndsX->extent(); + } - //Prevent more than 90% overlap... - if (xspace < -pattBndsX.extent()*.9) { - xspace = -pattBndsX.extent()*.9; - } - //TODO: dynamical update of parameter ranges? - //if (prop_units.get_value()){ - // spacing.param_set_range(-.9, NR_HUGE); - // }else{ - // spacing.param_set_range(-pattBndsX.extent()*.9, NR_HUGE); - // } - - y0+=noffset; - - std::vector > > paths_in; - paths_in = split_at_discontinuities(pwd2_in); - - for (unsigned idx = 0; idx < paths_in.size(); idx++){ - Geom::Piecewise > path_i = paths_in[idx]; - Piecewise x = x0; - Piecewise y = y0; - Piecewise > uskeleton = arc_length_parametrization(path_i,2,.1); - uskeleton = remove_short_cuts(uskeleton,.01); - Piecewise > n = rot90(derivative(uskeleton)); - n = force_continuity(remove_short_cuts(n,.1)); - - int nbCopies = 0; - double scaling = 1; - switch(type) { - case PAPCT_REPEATED: - nbCopies = static_cast(floor((uskeleton.domain().extent() - toffset + xspace)/(pattBndsX.extent()+xspace))); - pattBndsX = Interval(pattBndsX.min(),pattBndsX.max()+xspace); - break; - - case PAPCT_SINGLE: - nbCopies = (toffset + pattBndsX.extent() < uskeleton.domain().extent()) ? 1 : 0; - break; - - case PAPCT_SINGLE_STRETCHED: - nbCopies = 1; - scaling = (uskeleton.domain().extent() - toffset)/pattBndsX.extent(); - break; - - case PAPCT_REPEATED_STRETCHED: - // if uskeleton is closed: - if(path_i.segs.front().at0() == path_i.segs.back().at1()){ - nbCopies = static_cast(std::floor((uskeleton.domain().extent() - toffset)/(pattBndsX.extent()+xspace))); - pattBndsX = Interval(pattBndsX.min(),pattBndsX.max()+xspace); - scaling = (uskeleton.domain().extent() - toffset)/(((double)nbCopies)*pattBndsX.extent()); - // if not closed: no space at the end + //Prevent more than 90% overlap... + if (xspace < -pattBndsX->extent()*.9) { + xspace = -pattBndsX->extent()*.9; + } + //TODO: dynamical update of parameter ranges? + //if (prop_units.get_value()){ + // spacing.param_set_range(-.9, NR_HUGE); + // }else{ + // spacing.param_set_range(-pattBndsX.extent()*.9, NR_HUGE); + // } + + y0+=noffset; + + std::vector > > paths_in; + paths_in = split_at_discontinuities(pwd2_in); + + for (unsigned idx = 0; idx < paths_in.size(); idx++){ + Geom::Piecewise > path_i = paths_in[idx]; + Piecewise x = x0; + Piecewise y = y0; + Piecewise > uskeleton = arc_length_parametrization(path_i,2,.1); + uskeleton = remove_short_cuts(uskeleton,.01); + Piecewise > n = rot90(derivative(uskeleton)); + n = force_continuity(remove_short_cuts(n,.1)); + + int nbCopies = 0; + double scaling = 1; + switch(type) { + case PAPCT_REPEATED: + nbCopies = static_cast(floor((uskeleton.domain().extent() - toffset + xspace)/(pattBndsX->extent()+xspace))); + pattBndsX = Interval(pattBndsX->min(),pattBndsX->max()+xspace); + break; + + case PAPCT_SINGLE: + nbCopies = (toffset + pattBndsX->extent() < uskeleton.domain().extent()) ? 1 : 0; + break; + + case PAPCT_SINGLE_STRETCHED: + nbCopies = 1; + scaling = (uskeleton.domain().extent() - toffset)/pattBndsX->extent(); + break; + + case PAPCT_REPEATED_STRETCHED: + // if uskeleton is closed: + if(path_i.segs.front().at0() == path_i.segs.back().at1()){ + nbCopies = static_cast(std::floor((uskeleton.domain().extent() - toffset)/(pattBndsX->extent()+xspace))); + pattBndsX = Interval(pattBndsX->min(),pattBndsX->max()+xspace); + scaling = (uskeleton.domain().extent() - toffset)/(((double)nbCopies)*pattBndsX->extent()); + // if not closed: no space at the end + }else{ + nbCopies = static_cast(std::floor((uskeleton.domain().extent() - toffset + xspace)/(pattBndsX->extent()+xspace))); + pattBndsX = Interval(pattBndsX->min(),pattBndsX->max()+xspace); + scaling = (uskeleton.domain().extent() - toffset)/(((double)nbCopies)*pattBndsX->extent() - xspace); + } + break; + + default: + return pwd2_in; + }; + + double pattWidth = pattBndsX->extent() * scaling; + + if (scaling != 1.0) { + x*=scaling; + } + if ( scale_y_rel.get_value() ) { + y*=(scaling*prop_scale); + } else { + if (prop_scale != 1.0) y *= prop_scale; + } + x += toffset; + + double offs = 0; + for (int i=0; i 0){ + Geom::Piecewise > output_piece = compose(uskeleton,x+offs)+y*compose(n,x+offs); + std::vector > > splited_output_piece = split_at_discontinuities(output_piece); + pre_output.insert(pre_output.end(), splited_output_piece.begin(), splited_output_piece.end() ); }else{ - nbCopies = static_cast(std::floor((uskeleton.domain().extent() - toffset + xspace)/(pattBndsX.extent()+xspace))); - pattBndsX = Interval(pattBndsX.min(),pattBndsX.max()+xspace); - scaling = (uskeleton.domain().extent() - toffset)/(((double)nbCopies)*pattBndsX.extent() - xspace); + output.concat(compose(uskeleton,x+offs)+y*compose(n,x+offs)); } - break; - - default: - return pwd2_in; - }; - - double pattWidth = pattBndsX.extent() * scaling; - - if (scaling != 1.0) { - x*=scaling; - } - if ( scale_y_rel.get_value() ) { - y*=(scaling*prop_scale); - } else { - if (prop_scale != 1.0) y *= prop_scale; + offs+=pattWidth; + } } - x += toffset; - - double offs = 0; - for (int i=0; i 0){ + pre_output = fuse_nearby_ends(pre_output, fuse_tolerance); + for (unsigned i=0; i implementation, used as an example for a base starting class - * when implementing new LivePathEffects. - * - * In vi, three global search-and-replaces will let you rename everything - * in this and the .h file: - * - * :%s/PERSPECTIVE_PATH/YOURNAME/g - * :%s/PerspectivePath/Yourname/g - * :%s/perspective_path/yourname/g +/** @file + * @brief LPE perspective path effect implementation. */ -/* - * Authors: - * Johan Engelen - * Maximilian Albert +/* Authors: + * Maximilian Albert + * Johan Engelen * - * Copyright (C) Johan Engelen 2007 - * Copyright (C) Maximilian Albert 2008 + * Copyright (C) 2007-2008 Authors * * Released under GNU GPL, read the file 'COPYING' for more information */ @@ -198,4 +187,4 @@ KnotHolderEntityOffset::knot_get() fill-column:99 End: */ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/live_effects/lpe-perspective_path.h b/src/live_effects/lpe-perspective_path.h index 62589e875..23731f9f7 100644 --- a/src/live_effects/lpe-perspective_path.h +++ b/src/live_effects/lpe-perspective_path.h @@ -1,19 +1,18 @@ -#ifndef INKSCAPE_LPE_PERSPECTIVE_PATH_H -#define INKSCAPE_LPE_PERSPECTIVE_PATH_H - -/** \file - * LPE implementation, see lpe-perspective_path.cpp. +/** @file + * @brief LPE perspective path effect implementation */ - -/* - * Authors: - * Johan Engelen -* -* Copyright (C) Johan Engelen 2007 +/* Authors: + * Maximilian Albert + * Johan Engelen + * + * Copyright (C) 2007 Authors * * Released under GNU GPL, read the file 'COPYING' for more information */ +#ifndef INKSCAPE_LPE_PERSPECTIVE_PATH_H +#define INKSCAPE_LPE_PERSPECTIVE_PATH_H + #include "live_effects/effect.h" #include "live_effects/parameter/parameter.h" #include "live_effects/parameter/bool.h" @@ -65,3 +64,14 @@ private: } //namespace Inkscape #endif + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/live_effects/lpe-skeleton.cpp b/src/live_effects/lpe-skeleton.cpp index c2ab7be51..fdee68b88 100644 --- a/src/live_effects/lpe-skeleton.cpp +++ b/src/live_effects/lpe-skeleton.cpp @@ -1,7 +1,7 @@ #define INKSCAPE_LPE_SKELETON_CPP /** \file - * LPE implementation, used as an example for a base starting class - * when implementing new LivePathEffects. + * @brief Minimal dummy LPE effect implementation, used as an example for a base + * starting class when implementing new LivePathEffects. * * In vi, three global search-and-replaces will let you rename everything * in this and the .h file: @@ -10,11 +10,10 @@ * :%s/Skeleton/Yourname/g * :%s/skeleton/yourname/g */ -/* - * Authors: - * Johan Engelen +/* Authors: + * Johan Engelen * - * Copyright (C) Johan Engelen 2007 + * Copyright (C) 2007 Authors * * Released under GNU GPL, read the file 'COPYING' for more information */ @@ -84,7 +83,7 @@ LPESkeleton::doEffect_pwd2 (Geom::Piecewise > const & pwd * Define the classes for your knotholder handles here */ -/** +/* namespace Skeleton { class KnotHolderEntityMyHandle : public LPEKnotHolderEntity @@ -97,7 +96,7 @@ public: }; } // namespace Skeleton -**/ +*/ /* ######################## */ @@ -113,4 +112,4 @@ public: fill-column:99 End: */ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/live_effects/lpe-skeleton.h b/src/live_effects/lpe-skeleton.h index d961ad954..fd9dc0aba 100644 --- a/src/live_effects/lpe-skeleton.h +++ b/src/live_effects/lpe-skeleton.h @@ -1,19 +1,17 @@ -#ifndef INKSCAPE_LPE_SKELETON_H -#define INKSCAPE_LPE_SKELETON_H - -/** \file - * LPE implementation, see lpe-skeleton.cpp. +/** @file + * @brief Minimal LPE effect, see lpe-skeleton.cpp. */ - -/* - * Authors: - * Johan Engelen +/* Authors: + * Johan Engelen * - * Copyright (C) Johan Engelen 2007 + * Copyright (C) 2007 Authors * * Released under GNU GPL, read the file 'COPYING' for more information */ +#ifndef INKSCAPE_LPE_SKELETON_H +#define INKSCAPE_LPE_SKELETON_H + #include "live_effects/effect.h" #include "live_effects/parameter/parameter.h" @@ -65,4 +63,4 @@ private: fill-column:99 End: */ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/live_effects/lpe-sketch.cpp b/src/live_effects/lpe-sketch.cpp index 38957a658..1fe4ba525 100644 --- a/src/live_effects/lpe-sketch.cpp +++ b/src/live_effects/lpe-sketch.cpp @@ -1,12 +1,11 @@ -#define INKSCAPE_LPE_SKETCH_CPP -/** \file - * LPE implementation +/** @file + * @brief LPE sketch effect implementation */ -/* - * Authors: - * Johan Engelen -* -* Copyright (C) Johan Engelen 2007 +/* Authors: + * Jean-Francois Barraud + * Johan Engelen + * + * Copyright (C) 2007 Authors * * Released under GNU GPL, read the file 'COPYING' for more information */ @@ -189,7 +188,7 @@ LPESketch::doEffect_pwd2 (Geom::Piecewise > const & pwd2_ //----- Approximated Strokes. std::vector > > pieces_in = split_at_discontinuities (pwd2_in); - + //work separately on each component. for (unsigned pieceidx = 0; pieceidx < pieces_in.size(); pieceidx++){ @@ -247,10 +246,11 @@ LPESketch::doEffect_pwd2 (Geom::Piecewise > const & pwd2_ t1 = times[0]; //pick a rdm perturbation, and collect the perturbed piece into output. - Piecewise > pwperturb = computePerturbation(s0,s1); + Piecewise > pwperturb = computePerturbation(s0-0.01,s1+0.01); pwperturb = compose(pwperturb,portion(piecelength,t0,t1)); + output.concat(portion(piece,t0,t1)+pwperturb); - + //step points: s0 = s1 - overlap. //TODO: make sure this has to end? s0 = s1 - strokeoverlap*(1-strokeoverlap_rdm)*(s1-s0); @@ -258,7 +258,6 @@ LPESketch::doEffect_pwd2 (Geom::Piecewise > const & pwd2_ } } - //----- Construction lines. //TODO: choose places according to curvature?. @@ -268,7 +267,9 @@ LPESketch::doEffect_pwd2 (Geom::Piecewise > const & pwd2_ Piecewise > m = pwd2_in; Piecewise > v = derivative(pwd2_in); Piecewise > a = derivative(v); + for (unsigned i=0; i times; @@ -290,6 +291,7 @@ LPESketch::doEffect_pwd2 (Geom::Piecewise > const & pwd2_ } output.concat(Piecewise >(tgt)); } + return output; } @@ -319,4 +321,4 @@ LPESketch::doBeforeEffect (SPLPEItem *lpeitem) fill-column:99 End: */ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/live_effects/lpe-sketch.h b/src/live_effects/lpe-sketch.h index bca4e2447..4237c2b67 100644 --- a/src/live_effects/lpe-sketch.h +++ b/src/live_effects/lpe-sketch.h @@ -1,19 +1,18 @@ -#ifndef INKSCAPE_LPE_SKETCH_H -#define INKSCAPE_LPE_SKETCH_H - /** \file - * LPE implementation, see lpe-sketch.cpp. + * @brief LPE sketch effect implementation, see lpe-sketch.cpp. */ - -/* - * Authors: - * JFB, but derived from Johan Engelen! -* -* Copyright (C) Johan Engelen 2007 +/* Authors: + * Jean-Francois Barraud + * Johan Engelen + * + * Copyright (C) 2007 Authors * * Released under GNU GPL, read the file 'COPYING' for more information */ +#ifndef INKSCAPE_LPE_SKETCH_H +#define INKSCAPE_LPE_SKETCH_H + #include "live_effects/effect.h" #include "live_effects/parameter/parameter.h" #include "live_effects/parameter/random.h" @@ -59,3 +58,14 @@ private: } //namespace Inkscape #endif + +/* + 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:encoding=utf-8:textwidth=99 : diff --git a/src/live_effects/lpegroupbbox.cpp b/src/live_effects/lpegroupbbox.cpp index 3b1ece2ad..3820b5ba7 100644 --- a/src/live_effects/lpegroupbbox.cpp +++ b/src/live_effects/lpegroupbbox.cpp @@ -37,7 +37,7 @@ GroupBBoxEffect::original_bbox(SPLPEItem *lpeitem, bool absolute) transform = Geom::identity(); } - boost::optional bbox = item->getBounds(transform, SPItem::GEOMETRIC_BBOX); + Geom::OptRect bbox = item->getBounds(transform, SPItem::GEOMETRIC_BBOX); if (bbox) { boundingbox_X = (*bbox)[Geom::X]; boundingbox_Y = (*bbox)[Geom::Y]; diff --git a/src/live_effects/parameter/CMakeLists.txt b/src/live_effects/parameter/CMakeLists.txt index d7775f44d..f93d8910a 100644 --- a/src/live_effects/parameter/CMakeLists.txt +++ b/src/live_effects/parameter/CMakeLists.txt @@ -1,4 +1,5 @@ SET(live_effects_parameter_SRC +array.cpp bool.cpp parameter.cpp path.cpp diff --git a/src/live_effects/parameter/Makefile_insert b/src/live_effects/parameter/Makefile_insert index 869f4a7f4..3832e24cb 100644 --- a/src/live_effects/parameter/Makefile_insert +++ b/src/live_effects/parameter/Makefile_insert @@ -8,14 +8,14 @@ live_effects/parameter/clean: live_effects_parameter_liblpeparam_a_SOURCES = \ live_effects/parameter/parameter.cpp \ live_effects/parameter/parameter.h \ + live_effects/parameter/array.cpp \ + live_effects/parameter/array.h \ live_effects/parameter/bool.cpp \ live_effects/parameter/bool.h \ live_effects/parameter/random.cpp \ live_effects/parameter/random.h \ live_effects/parameter/point.cpp \ live_effects/parameter/point.h \ - live_effects/parameter/pointparam-knotholder.cpp \ - live_effects/parameter/pointparam-knotholder.h \ live_effects/parameter/enum.h \ live_effects/parameter/path-reference.cpp \ live_effects/parameter/path-reference.h \ diff --git a/src/live_effects/parameter/array.cpp b/src/live_effects/parameter/array.cpp new file mode 100644 index 000000000..c576bedd5 --- /dev/null +++ b/src/live_effects/parameter/array.cpp @@ -0,0 +1,51 @@ +#define INKSCAPE_LIVEPATHEFFECT_PARAMETER_ARRAY_CPP + +/* + * Copyright (C) Johan Engelen 2008 + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "live_effects/parameter/array.h" + +#include "svg/svg.h" +#include "svg/stringstream.h" + +#include <2geom/coord.h> + +namespace Inkscape { + +namespace LivePathEffect { + +template <> +double +ArrayParam::readsvg(const gchar * str) +{ + double newx = Geom::infinity(); + sp_svg_number_read_d(str, &newx); + return newx; +} + +template <> +float +ArrayParam::readsvg(const gchar * str) +{ + float newx = Geom::infinity(); + sp_svg_number_read_f(str, &newx); + return newx; +} + +} /* namespace LivePathEffect */ + +} /* 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 : diff --git a/src/live_effects/parameter/array.h b/src/live_effects/parameter/array.h new file mode 100644 index 000000000..4da329c4d --- /dev/null +++ b/src/live_effects/parameter/array.h @@ -0,0 +1,123 @@ +#ifndef INKSCAPE_LIVEPATHEFFECT_PARAMETER_ARRAY_H +#define INKSCAPE_LIVEPATHEFFECT_PARAMETER_ARRAY_H + +/* + * Inkscape::LivePathEffectParameters + * +* Copyright (C) Johan Engelen 2008 + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include + +#include + +#include + +#include "live_effects/parameter/parameter.h" + +#include "svg/svg.h" +#include "svg/stringstream.h" + +namespace Inkscape { + +namespace LivePathEffect { + +template +class ArrayParam : public Parameter { +public: + ArrayParam( const Glib::ustring& label, + const Glib::ustring& tip, + const Glib::ustring& key, + Inkscape::UI::Widget::Registry* wr, + Effect* effect, + size_t n = 0 ) + : Parameter(label, tip, key, wr, effect), _vector(n) + { + + } + + virtual ~ArrayParam() { + + }; + + std::vector const & data() const { + return _vector; + } + + virtual Gtk::Widget * param_newWidget(Gtk::Tooltips * /*tooltips*/) { + return NULL; + } + + virtual bool param_readSVGValue(const gchar * strvalue) { + _vector.clear(); + gchar ** strarray = g_strsplit(strvalue, "|", 0); + gchar ** iter = strarray; + while (*iter != NULL) { + _vector.push_back( readsvg(*iter) ); + iter++; + } + g_strfreev (strarray); + return true; + } + + virtual gchar * param_getSVGValue() const { + Inkscape::SVGOStringStream os; + writesvg(os, _vector); + gchar * str = g_strdup(os.str().c_str()); + return str; + } + + void param_setValue(std::vector const &new_vector) { + _vector = new_vector; + } + + void param_set_default() { + param_setValue( std::vector() ); + } + + void param_set_and_write_new_value(std::vector const &new_vector) { + Inkscape::SVGOStringStream os; + writesvg(os, new_vector); + gchar * str = g_strdup(os.str().c_str()); + param_write_to_repr(str); + g_free(str); + } + +private: + ArrayParam(const ArrayParam&); + ArrayParam& operator=(const ArrayParam&); + + std::vector _vector; + + void writesvg(SVGOStringStream &str, std::vector const &vector) const { + for (unsigned int i = 0; i < vector.size(); ++i) { + if (i != 0) { + // separate items with pipe symbol + str << " | "; + } + str << vector[i]; + } + } + + StorageType readsvg(const gchar * str); +}; + + +} //namespace LivePathEffect + +} //namespace Inkscape + +#endif + +/* + 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 : diff --git a/src/live_effects/parameter/parameter.h b/src/live_effects/parameter/parameter.h index aac3dfa69..71bd5673d 100644 --- a/src/live_effects/parameter/parameter.h +++ b/src/live_effects/parameter/parameter.h @@ -60,7 +60,8 @@ public: virtual Glib::ustring * param_getTooltip() { return ¶m_tooltip; }; // overload these for your particular parameter to make it provide knotholder handles or canvas helperpaths - virtual void addKnotHolderEntities(KnotHolder */*knotholder*/, SPDesktop */*desktop*/, SPItem */*item*/) {} + virtual bool providesKnotHolderEntities() { return false; } + virtual void addKnotHolderEntities(KnotHolder */*knotholder*/, SPDesktop */*desktop*/, SPItem */*item*/) {}; virtual void addCanvasIndicators(SPLPEItem */*lpeitem*/, std::vector &/*hp_vec*/) {}; virtual void param_editOncanvas(SPItem * /*item*/, SPDesktop * /*dt*/) {}; diff --git a/src/live_effects/parameter/point.cpp b/src/live_effects/parameter/point.cpp index 5d541eff8..057cc424b 100644 --- a/src/live_effects/parameter/point.cpp +++ b/src/live_effects/parameter/point.cpp @@ -7,7 +7,6 @@ */ #include "live_effects/parameter/point.h" -#include "live_effects/parameter/pointparam-knotholder.h" #include "live_effects/effect.h" #include "svg/svg.h" #include "svg/stringstream.h" diff --git a/src/live_effects/parameter/point.h b/src/live_effects/parameter/point.h index ca440c1fc..ec61fcd88 100644 --- a/src/live_effects/parameter/point.h +++ b/src/live_effects/parameter/point.h @@ -49,14 +49,13 @@ public: void set_oncanvas_looks(SPKnotShapeType shape, SPKnotModeType mode, guint32 color); + virtual bool providesKnotHolderEntities() { return true; } virtual void addKnotHolderEntities(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item); private: PointParam(const PointParam&); PointParam& operator=(const PointParam&); - void on_button_click(); - Geom::Point defvalue; SPKnotShapeType knot_shape; diff --git a/src/live_effects/parameter/pointparam-knotholder.cpp b/src/live_effects/parameter/pointparam-knotholder.cpp deleted file mode 100644 index b814f597d..000000000 --- a/src/live_effects/parameter/pointparam-knotholder.cpp +++ /dev/null @@ -1,148 +0,0 @@ -#define INKSCAPE_LPE_POINTPARAM_KNOTHOLDER_C - -/* - * Container for PointParamKnotHolder visual handles - * - * Authors: - * Johan Engelen - * - * Copyright (C) 2008 authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "live_effects/parameter/pointparam-knotholder.h" -#include "live_effects/lpeobject.h" -#include "document.h" -#include "sp-shape.h" -#include "knot.h" -#include "knotholder.h" - -#include -#include <2geom/point.h> -#include <2geom/matrix.h> -#include "svg/stringstream.h" -#include "xml/repr.h" - -class SPDesktop; - -namespace Inkscape { - -static void pointparam_knot_clicked_handler (SPKnot *knot, guint state, PointParamKnotHolder *kh); -static void pointparam_knot_moved_handler(SPKnot *knot, Geom::Point const *p, guint state, PointParamKnotHolder *kh); -static void pointparam_knot_ungrabbed_handler (SPKnot *knot, unsigned int state, PointParamKnotHolder *kh); - -PointParamKnotHolder::PointParamKnotHolder(SPDesktop *desktop, SPObject *lpeobject, const gchar * key, SPItem *item) -{ - if (!desktop || !item || !SP_IS_ITEM(item)) { - g_print ("Error! Throw an exception, please!\n"); - } - - this->desktop = desktop; - this->item = item; - this->lpeobject = LIVEPATHEFFECT(lpeobject); - g_object_ref(G_OBJECT(item)); - g_object_ref(G_OBJECT(lpeobject)); - - this->released = NULL; - - this->repr = lpeobject->repr; - this->repr_key = key; - - this->local_change = FALSE; -} - -PointParamKnotHolder::~PointParamKnotHolder() -{ - g_object_unref(G_OBJECT(this->item)); - g_object_unref(G_OBJECT(this->lpeobject)); -} - -class KnotHolderEntityPointParam : public LPEKnotHolderEntity { -public: - virtual Geom::Point knot_get(); - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state); -}; - -Geom::Point -KnotHolderEntityPointParam::knot_get() { - return Geom::Point(0,0); -} - -void -KnotHolderEntityPointParam::knot_set(Geom::Point const &/*p*/, Geom::Point const &/*origin*/, guint /*state*/) { -} - -void -PointParamKnotHolder::add_knot ( - Geom::Point & p, -// TODO: check if knot_click being ignored is bad: - PointParamKnotHolderClickedFunc /*knot_click*/, - SPKnotShapeType shape, - SPKnotModeType mode, - guint32 color, - const gchar *tip ) -{ - /* create new SPKnotHolderEntry */ - KnotHolderEntity *e = new KnotHolderEntityPointParam(); - e->create(this->desktop, this->item, this, tip, shape, mode, color); - - entity.push_back(e); - - // Move to current point. - Geom::Point dp = p * sp_item_i2d_affine(item); - sp_knot_set_position(e->knot, dp, SP_KNOT_STATE_NORMAL); - - e->handler_id = g_signal_connect(e->knot, "moved", G_CALLBACK(pointparam_knot_moved_handler), this); - e->_click_handler_id = g_signal_connect(e->knot, "clicked", G_CALLBACK(pointparam_knot_clicked_handler), this); - e->_ungrab_handler_id = g_signal_connect(e->knot, "ungrabbed", G_CALLBACK(pointparam_knot_ungrabbed_handler), this); - - sp_knot_show(e->knot); -} - -static void pointparam_knot_clicked_handler(SPKnot */*knot*/, guint /*state*/, PointParamKnotHolder */*kh*/) -{ - -} - -/** - * \param p In desktop coordinates. - * This function does not write to XML, but tries to write directly to the PointParam to quickly live update the effect - */ -static void pointparam_knot_moved_handler(SPKnot */*knot*/, Geom::Point const *p, guint /*state*/, PointParamKnotHolder *kh) -{ - Geom::Matrix const i2d(sp_item_i2d_affine(kh->getItem())); - Geom::Point pos = (*p) * i2d.inverse(); - - Inkscape::SVGOStringStream os; - os << pos; - - // note: get_lpe() will always return a valid pointer? - kh->lpeobject->get_lpe()->setParameter(kh->repr_key, os.str().c_str()); -} - -static void pointparam_knot_ungrabbed_handler(SPKnot *knot, unsigned int /*state*/, PointParamKnotHolder *kh) -{ - Geom::Matrix const i2d(sp_item_i2d_affine(kh->getItem())); - Geom::Point pos = sp_knot_position(knot) * i2d.inverse(); - - Inkscape::SVGOStringStream os; - os << pos; - - kh->repr->setAttribute(kh->repr_key , os.str().c_str()); - - sp_document_done(SP_OBJECT_DOCUMENT (kh->lpeobject), SP_VERB_CONTEXT_LPE, _("Change LPE point parameter")); -} - -} // 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:encoding=utf-8:textwidth=99 : diff --git a/src/live_effects/parameter/pointparam-knotholder.h b/src/live_effects/parameter/pointparam-knotholder.h deleted file mode 100644 index f6dfdead5..000000000 --- a/src/live_effects/parameter/pointparam-knotholder.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef INKSCAPE_LPE_POINTPARAM_KNOTHOLDER_H -#define INKSCAPE_LPE_POINTPARAM_KNOTHOLDER_H - -/* - * PointParamKnotHolder - Hold SPKnot list and manage signals for LPE PointParam - * - * Author: - * Johan Engelen - * - * Copyright (C) 2008 Johan Engelen - * - * Released under GNU GPL - * - */ - -#include "knotholder.h" -#include -#include "knot-enums.h" -#include "forward.h" -#include "libnr/nr-forward.h" -#include <2geom/point.h> -#include "live_effects/lpeobject.h" - -namespace Inkscape { -namespace XML { -class Node; -} - - - -typedef void (* PointParamKnotHolderSetFunc) (SPItem *item, Geom::Point const &p, Geom::Point const &origin, guint state); -typedef Geom::Point (* PointParamKnotHolderGetFunc) (SPItem *item); -typedef void (* PointParamKnotHolderClickedFunc) (SPItem *item, guint state); - -class PointParamKnotHolder : public KnotHolder { -public: - PointParamKnotHolder(SPDesktop *desktop, SPObject *lpeobject, const gchar * key, SPItem *item); - ~PointParamKnotHolder(); - - LivePathEffectObject * lpeobject; - Inkscape::XML::Node * repr; - const gchar * repr_key; - - void add_knot ( Geom::Point & p, - PointParamKnotHolderClickedFunc knot_click, - SPKnotShapeType shape, - SPKnotModeType mode, - guint32 color, - const gchar *tip ); -}; - -} // namespace Inkscape - - -#endif /* INKSCAPE_LPE_POINTPARAM_KNOTHOLDER_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:encoding=utf-8:textwidth=99 : diff --git a/src/live_effects/parameter/vector.cpp b/src/live_effects/parameter/vector.cpp index 90d9ebff9..9a68334fd 100644 --- a/src/live_effects/parameter/vector.cpp +++ b/src/live_effects/parameter/vector.cpp @@ -7,32 +7,190 @@ */ #include "live_effects/parameter/vector.h" - +#include "sp-lpe-item.h" +#include "knotholder.h" #include "svg/svg.h" #include "svg/stringstream.h" +#include -#include <2geom/coord.h> +// needed for on-canvas editting: +class SPDesktop; namespace Inkscape { namespace LivePathEffect { -template <> -double -VectorParam::readsvg(const gchar * str) +VectorParam::VectorParam( const Glib::ustring& label, const Glib::ustring& tip, + const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr, + Effect* effect, Geom::Point default_vector) + : Parameter(label, tip, key, wr, effect), + defvalue(default_vector), + origin(0.,0.), + vector(default_vector) +{ + vec_knot_shape = SP_KNOT_SHAPE_DIAMOND; + vec_knot_mode = SP_KNOT_MODE_XOR; + vec_knot_color = 0xffffb500; + ori_knot_shape = SP_KNOT_SHAPE_CIRCLE; + ori_knot_mode = SP_KNOT_MODE_XOR; + ori_knot_color = 0xffffb500; +} + +VectorParam::~VectorParam() +{ + +} + +void +VectorParam::param_set_default() +{ + setOrigin(Geom::Point(0.,0.)); + setVector(defvalue); +} + +bool +VectorParam::param_readSVGValue(const gchar * strvalue) +{ + gchar ** strarray = g_strsplit(strvalue, ",", 4); + double val[4]; + unsigned int i = 0; + while (strarray[i] && i < 4) { + if (sp_svg_number_read_d(strarray[i], &val[i]) != 0) { + i++; + } else { + break; + } + } + g_strfreev (strarray); + if (i == 4) { + setOrigin( Geom::Point(val[0], val[1]) ); + setVector( Geom::Point(val[2], val[3]) ); + return true; + } + return false; +} + +gchar * +VectorParam::param_getSVGValue() const +{ + Inkscape::SVGOStringStream os; + os << origin << " , " << vector; + gchar * str = g_strdup(os.str().c_str()); + return str; +} + +Gtk::Widget * +VectorParam::param_newWidget(Gtk::Tooltips * /*tooltips*/) +{ +/* + Inkscape::UI::Widget::RegisteredTransformedPoint * pointwdg = Gtk::manage( + new Inkscape::UI::Widget::RegisteredTransformedPoint( param_label, + param_tooltip, + param_key, + *param_wr, + param_effect->getRepr(), + param_effect->getSPDoc() ) ); + // TODO: fix to get correct desktop (don't use SP_ACTIVE_DESKTOP) + SPDesktop *desktop = SP_ACTIVE_DESKTOP; + Geom::Matrix transf = desktop->doc2dt(); + pointwdg->setTransform(transf); + pointwdg->setValue( *this ); + pointwdg->clearProgrammatically(); + pointwdg->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change point parameter")); + + Gtk::HBox * hbox = Gtk::manage( new Gtk::HBox() ); + static_cast(hbox)->pack_start(*pointwdg, true, true); + static_cast(hbox)->show_all_children(); + + return dynamic_cast (hbox); + */ return NULL; +} + +void +VectorParam::set_and_write_new_values(Geom::Point const &new_origin, Geom::Point const &new_vector) +{ + setValues(new_origin, new_vector); + gchar * str = param_getSVGValue(); + param_write_to_repr(str); + g_free(str); +} + +void +VectorParam::param_transform_multiply(Geom::Matrix const& postmul, bool /*set*/) +{ + set_and_write_new_values( origin * postmul, vector * postmul ); +} + + +void +VectorParam::set_vector_oncanvas_looks(SPKnotShapeType shape, SPKnotModeType mode, guint32 color) { - double newx = Geom::infinity(); - sp_svg_number_read_d(str, &newx); - return newx; + vec_knot_shape = shape; + vec_knot_mode = mode; + vec_knot_color = color; } -template <> -float -VectorParam::readsvg(const gchar * str) +void +VectorParam::set_origin_oncanvas_looks(SPKnotShapeType shape, SPKnotModeType mode, guint32 color) { - float newx = Geom::infinity(); - sp_svg_number_read_f(str, &newx); - return newx; + ori_knot_shape = shape; + ori_knot_mode = mode; + ori_knot_color = color; +} + +class VectorParamKnotHolderEntity_Origin : public LPEKnotHolderEntity { +public: + VectorParamKnotHolderEntity_Origin(VectorParam *p) : param(p) { } + virtual ~VectorParamKnotHolderEntity_Origin() {} + + virtual void knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint /*state*/) { + Geom::Point const s = snap_knot_position(p); + param->setOrigin(s); + sp_lpe_item_update_patheffect(SP_LPE_ITEM(item), false, false); + }; + virtual Geom::Point knot_get(){ + return param->origin; + }; + virtual void knot_click(guint /*state*/){ + g_print ("This is the origin handle associated to parameter '%s'\n", param->param_key.c_str()); + }; + +private: + VectorParam *param; +}; + +class VectorParamKnotHolderEntity_Vector : public LPEKnotHolderEntity { +public: + VectorParamKnotHolderEntity_Vector(VectorParam *p) : param(p) { } + virtual ~VectorParamKnotHolderEntity_Vector() {} + + virtual void knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint state) { + Geom::Point const s = p - param->origin; + /// @todo implement angle snapping when holding CTRL + param->setVector(s); + sp_lpe_item_update_patheffect(SP_LPE_ITEM(item), false, false); + }; + virtual Geom::Point knot_get(){ + return param->origin + param->vector; + }; + virtual void knot_click(guint /*state*/){ + g_print ("This is the vector handle associated to parameter '%s'\n", param->param_key.c_str()); + }; + +private: + VectorParam *param; +}; + +void +VectorParam::addKnotHolderEntities(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item) +{ + VectorParamKnotHolderEntity_Origin *origin_e = new VectorParamKnotHolderEntity_Origin(this); + origin_e->create(desktop, item, knotholder, handleTip(), ori_knot_shape, ori_knot_mode, ori_knot_color); + knotholder->add(origin_e); + + VectorParamKnotHolderEntity_Vector *vector_e = new VectorParamKnotHolderEntity_Vector(this); + vector_e->create(desktop, item, knotholder, handleTip(), vec_knot_shape, vec_knot_mode, vec_knot_color); + knotholder->add(vector_e); } } /* namespace LivePathEffect */ diff --git a/src/live_effects/parameter/vector.h b/src/live_effects/parameter/vector.h index 0b65fea14..a4c29d317 100644 --- a/src/live_effects/parameter/vector.h +++ b/src/live_effects/parameter/vector.h @@ -4,27 +4,25 @@ /* * Inkscape::LivePathEffectParameters * -* Copyright (C) Johan Engelen 2008 + * Copyright (C) Johan Engelen 2008 * * Released under GNU GPL, read the file 'COPYING' for more information */ -#include - #include +#include <2geom/point.h> #include #include "live_effects/parameter/parameter.h" -#include "svg/svg.h" -#include "svg/stringstream.h" +#include "knot-holder-entity.h" namespace Inkscape { namespace LivePathEffect { -template + class VectorParam : public Parameter { public: VectorParam( const Glib::ustring& label, @@ -32,76 +30,51 @@ public: const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr, Effect* effect, - size_t n = 0 ) - : Parameter(label, tip, key, wr, effect), _vector(n) - { - - } - - virtual ~VectorParam() { - - }; - - std::vector const & data() const { - return _vector; - } - - virtual Gtk::Widget * param_newWidget(Gtk::Tooltips * /*tooltips*/) { - return NULL; - } - - virtual bool param_readSVGValue(const gchar * strvalue) { - _vector.clear(); - gchar ** strarray = g_strsplit(strvalue, "|", 0); - gchar ** iter = strarray; - while (*iter != NULL) { - _vector.push_back( readsvg(*iter) ); - iter++; - } - g_strfreev (strarray); - return true; - } - - virtual gchar * param_getSVGValue() const { - Inkscape::SVGOStringStream os; - writesvg(os, _vector); - gchar * str = g_strdup(os.str().c_str()); - return str; - } - - void param_setValue(std::vector const &new_vector) { - _vector = new_vector; - } - - void param_set_default() { - param_setValue( std::vector() ); - } - - void param_set_and_write_new_value(std::vector const &new_vector) { - Inkscape::SVGOStringStream os; - writesvg(os, new_vector); - gchar * str = g_strdup(os.str().c_str()); - param_write_to_repr(str); - g_free(str); - } + Geom::Point default_vector = Geom::Point(1,0) ); + virtual ~VectorParam(); + + virtual Gtk::Widget * param_newWidget(Gtk::Tooltips * tooltips); + inline const gchar *handleTip() const { return param_tooltip.c_str(); } + + virtual bool param_readSVGValue(const gchar * strvalue); + virtual gchar * param_getSVGValue() const; + + Geom::Point getVector() const { return vector; }; + Geom::Point getOrigin() const { return origin; }; + void setValues(Geom::Point const &new_origin, Geom::Point const &new_vector) { setVector(new_vector); setOrigin(new_origin); }; + void setVector(Geom::Point const &new_vector) { vector = new_vector; }; + void setOrigin(Geom::Point const &new_origin) { origin = new_origin; }; + virtual void param_set_default(); + + void set_and_write_new_values(Geom::Point const &new_origin, Geom::Point const &new_vector); + + virtual void param_transform_multiply(Geom::Matrix const &postmul, bool set); + + void set_vector_oncanvas_looks(SPKnotShapeType shape, SPKnotModeType mode, guint32 color); + void set_origin_oncanvas_looks(SPKnotShapeType shape, SPKnotModeType mode, guint32 color); + + virtual bool providesKnotHolderEntities() { return true; } + virtual void addKnotHolderEntities(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item); private: VectorParam(const VectorParam&); VectorParam& operator=(const VectorParam&); - std::vector _vector; + Geom::Point defvalue; - void writesvg(SVGOStringStream &str, std::vector const &vector) const { - for (unsigned int i = 0; i < vector.size(); ++i) { - if (i != 0) { - // separate items with pipe symbol - str << " | "; - } - str << vector[i]; - } - } + Geom::Point origin; + Geom::Point vector; - StorageType readsvg(const gchar * str); + /// The looks of the vector and origin knots oncanvas + SPKnotShapeType vec_knot_shape; + SPKnotModeType vec_knot_mode; + guint32 vec_knot_color; + SPKnotShapeType ori_knot_shape; + SPKnotModeType ori_knot_mode; + guint32 ori_knot_color; + + friend class VectorParamKnotHolderEntity_Origin; + friend class VectorParamKnotHolderEntity_Vector; }; @@ -110,14 +83,3 @@ private: } //namespace Inkscape #endif - -/* - 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 : diff --git a/src/lpe-tool-context.cpp b/src/lpe-tool-context.cpp index 8439f7086..5c6575cca 100644 --- a/src/lpe-tool-context.cpp +++ b/src/lpe-tool-context.cpp @@ -203,9 +203,10 @@ sp_lpetool_context_selection_changed(Inkscape::Selection *selection, gpointer da static void sp_lpetool_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *val) { - // FIXME: how to set this correcly? the value from preferences-skeleton.h doesn't seem to get - // read (it wants to set drag = 1) - // lpetool_parent_class->set(ec, key, "drag"); + if (val->getEntryName() == "mode") { + Inkscape::Preferences::get()->setString("/tools/geometric/mode", "drag"); + SP_PEN_CONTEXT(ec)->mode = SP_PEN_CONTEXT_MODE_DRAG; + } /* //pass on up to parent class to handle common attributes. diff --git a/src/main.cpp b/src/main.cpp index 5e1e6f64b..af896d7d6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -82,6 +82,7 @@ #include "debug/log-display-config.h" #include "helper/png-write.h" +#include "helper/geom.h" #include #include @@ -1056,7 +1057,7 @@ do_query_dimension (SPDocument *doc, bool extent, NR::Dim2 const axis, const gch SPItem *item = ((SPItem *) o); // "true" SVG bbox for scripting - boost::optional area = item->getBounds(sp_item_i2doc_affine(item)); + Geom::OptRect area = item->getBounds(sp_item_i2doc_affine(item)); if (area) { Inkscape::SVGOStringStream os; if (extent) { @@ -1089,7 +1090,7 @@ do_query_all_recurse (SPObject *o) { SPItem *item = ((SPItem *) o); if (o->id && SP_IS_ITEM(item)) { - boost::optional area = item->getBounds(sp_item_i2doc_affine(item)); + Geom::OptRect area = item->getBounds(sp_item_i2doc_affine(item)); if (area) { Inkscape::SVGOStringStream os; os << o->id; @@ -1121,7 +1122,7 @@ sp_do_export_png(SPDocument *doc) GSList *items = NULL; - NRRect area; + Geom::Rect area; if (sp_export_id || sp_export_area_drawing) { SPObject *o = NULL; @@ -1181,10 +1182,10 @@ sp_do_export_png(SPDocument *doc) // write object bbox to area sp_document_ensure_up_to_date (doc); - boost::optional areaMaybe; + Geom::OptRect areaMaybe; sp_item_invoke_bbox((SPItem *) o_area, areaMaybe, sp_item_i2r_affine((SPItem *) o_area), TRUE); if (areaMaybe) { - area = NRRect(areaMaybe); + area = *areaMaybe; } else { g_warning("Unable to determine a valid bounding box. Nothing exported."); return; @@ -1197,21 +1198,17 @@ sp_do_export_png(SPDocument *doc) if (sp_export_area) { /* Try to parse area (given in SVG pixels) */ - if (!sscanf(sp_export_area, "%lg:%lg:%lg:%lg", &area.x0, &area.y0, &area.x1, &area.y1) == 4) { + gdouble x0,y0,x1,y1; + if (!sscanf(sp_export_area, "%lg:%lg:%lg:%lg", &x0, &y0, &x1, &y1) == 4) { g_warning("Cannot parse export area '%s'; use 'x0:y0:x1:y1'. Nothing exported.", sp_export_area); return; } - if ((area.x0 >= area.x1) || (area.y0 >= area.y1)) { - g_warning("Export area '%s' has negative width or height. Nothing exported.", sp_export_area); - return; - } + area = Geom::Rect(Geom::Interval(x0,x1), Geom::Interval(y0,y1)); } else if (sp_export_area_canvas || !(sp_export_id || sp_export_area_drawing)) { /* Export the whole canvas */ sp_document_ensure_up_to_date (doc); - area.x0 = SP_ROOT(doc->root)->x.computed; - area.y0 = SP_ROOT(doc->root)->y.computed; - area.x1 = area.x0 + sp_document_width (doc); - area.y1 = area.y0 + sp_document_height (doc); + Geom::Point origin (SP_ROOT(doc->root)->x.computed, SP_ROOT(doc->root)->y.computed); + area = Geom::Rect(origin, origin + sp_document_dimensions(doc)); } // set filename and dpi from options, if not yet set from the hints @@ -1233,10 +1230,7 @@ sp_do_export_png(SPDocument *doc) } if (sp_export_area_snap) { - area.x0 = std::floor (area.x0); - area.y0 = std::floor (area.y0); - area.x1 = std::ceil (area.x1); - area.y1 = std::ceil (area.y1); + round_rectangle_outwards(area); } // default dpi @@ -1254,7 +1248,7 @@ sp_do_export_png(SPDocument *doc) g_warning("Export width %lu out of range (1 - %lu). Nothing exported.", width, (unsigned long int)PNG_UINT_31_MAX); return; } - dpi = (gdouble) width * PX_PER_IN / (area.x1 - area.x0); + dpi = (gdouble) width * PX_PER_IN / area.width(); } if (sp_export_height) { @@ -1264,15 +1258,15 @@ sp_do_export_png(SPDocument *doc) g_warning("Export height %lu out of range (1 - %lu). Nothing exported.", height, (unsigned long int)PNG_UINT_31_MAX); return; } - dpi = (gdouble) height * PX_PER_IN / (area.y1 - area.y0); + dpi = (gdouble) height * PX_PER_IN / area.height(); } if (!sp_export_width) { - width = (unsigned long int) ((area.x1 - area.x0) * dpi / PX_PER_IN + 0.5); + width = (unsigned long int) (area.width() * dpi / PX_PER_IN + 0.5); } if (!sp_export_height) { - height = (unsigned long int) ((area.y1 - area.y0) * dpi / PX_PER_IN + 0.5); + height = (unsigned long int) (area.height() * dpi / PX_PER_IN + 0.5); } guint32 bgcolor = 0x00000000; @@ -1307,12 +1301,12 @@ sp_do_export_png(SPDocument *doc) g_print("Background RRGGBBAA: %08x\n", bgcolor); - g_print("Area %g:%g:%g:%g exported to %lu x %lu pixels (%g dpi)\n", area.x0, area.y0, area.x1, area.y1, width, height, dpi); + g_print("Area %g:%g:%g:%g exported to %lu x %lu pixels (%g dpi)\n", area[Geom::X][0], area[Geom::Y][0], area[Geom::X][1], area[Geom::Y][1], width, height, dpi); g_print("Bitmap saved as: %s\n", filename); if ((width >= 1) && (height >= 1) && (width <= PNG_UINT_31_MAX) && (height <= PNG_UINT_31_MAX)) { - sp_export_png_file(doc, filename, area.x0, area.y0, area.x1, area.y1, width, height, dpi, dpi, bgcolor, NULL, NULL, true, sp_export_id_only ? items : NULL); + sp_export_png_file(doc, filename, area, width, height, dpi, dpi, bgcolor, NULL, NULL, true, sp_export_id_only ? items : NULL); } else { g_warning("Calculated bitmap dimensions %lu %lu are out of range (1 - %lu). Nothing exported.", width, height, (unsigned long int)PNG_UINT_31_MAX); } diff --git a/src/node-context.cpp b/src/node-context.cpp index 9ff7257ce..c6c639631 100644 --- a/src/node-context.cpp +++ b/src/node-context.cpp @@ -444,7 +444,7 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) if (event->type == GDK_BUTTON_RELEASE) { event_context->xp = event_context->yp = 0; if (event->button.button == 1) { - boost::optional b = Inkscape::Rubberband::get(desktop)->getRectangle(); + Geom::OptRect b = Inkscape::Rubberband::get(desktop)->getRectangle(); if (nc->shape_editor->hits_curve() && !event_context->within_tolerance) { //drag curve nc->shape_editor->finish_drag(); @@ -634,7 +634,7 @@ sp_node_context_root_handler(SPEventContext *event_context, GdkEvent *event) break; case GDK_Escape: { - boost::optional const b = Inkscape::Rubberband::get(desktop)->getRectangle(); + Geom::OptRect const b = Inkscape::Rubberband::get(desktop)->getRectangle(); if (b) { Inkscape::Rubberband::get(desktop)->stop(); nc->current_state = SP_NODE_CONTEXT_INACTIVE; diff --git a/src/nodepath.cpp b/src/nodepath.cpp index 3481f6ed2..34c850d08 100644 --- a/src/nodepath.cpp +++ b/src/nodepath.cpp @@ -126,14 +126,14 @@ static void sp_node_adjust_handles_auto(Inkscape::NodePath::Node *node); static void node_clicked(SPKnot *knot, guint state, gpointer data); static void node_grabbed(SPKnot *knot, guint state, gpointer data); static void node_ungrabbed(SPKnot *knot, guint state, gpointer data); -static gboolean node_request(SPKnot *knot, Geom::Point *p, guint state, gpointer data); +static gboolean node_request(SPKnot *knot, Geom::Point const &p, guint state, gpointer data); /* Handle event callbacks */ static void node_handle_clicked(SPKnot *knot, guint state, gpointer data); static void node_handle_grabbed(SPKnot *knot, guint state, gpointer data); static void node_handle_ungrabbed(SPKnot *knot, guint state, gpointer data); -static gboolean node_handle_request(SPKnot *knot, Geom::Point *p, guint state, gpointer data); -static void node_handle_moved(SPKnot *knot, Geom::Point *p, guint state, gpointer data); +static gboolean node_handle_request(SPKnot *knot, Geom::Point const &p, guint state, gpointer data); +static void node_handle_moved(SPKnot *knot, Geom::Point const &p, guint state, gpointer data); static gboolean node_handle_event(SPKnot *knot, GdkEvent *event, Inkscape::NodePath::Node *n); /* Constructors and destructors */ @@ -181,7 +181,7 @@ canvasitem_from_pathvec(Inkscape::NodePath::Path *np, Geom::PathVector const &pa static void sp_nodepath_create_helperpaths(Inkscape::NodePath::Path *np) { - //std::map >* helper_path_vec; + //std::map > helper_path_vec; if (!SP_IS_LPE_ITEM(np->item)) { g_print ("Only LPEItems can have helperpaths!\n"); return; @@ -196,7 +196,7 @@ sp_nodepath_create_helperpaths(Inkscape::NodePath::Path *np) { // create new canvas items from the effect's helper paths std::vector hpaths = lpe->getHelperPaths(lpeitem); for (std::vector::iterator j = hpaths.begin(); j != hpaths.end(); ++j) { - (*np->helper_path_vec)[lpe].push_back(canvasitem_from_pathvec(np, *j, true)); + np->helper_path_vec[lpe].push_back(canvasitem_from_pathvec(np, *j, true)); } } } @@ -204,7 +204,7 @@ sp_nodepath_create_helperpaths(Inkscape::NodePath::Path *np) { void sp_nodepath_update_helperpaths(Inkscape::NodePath::Path *np) { - //std::map >* helper_path_vec; + //std::map > helper_path_vec; if (!SP_IS_LPE_ITEM(np->item)) { g_print ("Only LPEItems can have helperpaths!\n"); return; @@ -223,7 +223,7 @@ sp_nodepath_update_helperpaths(Inkscape::NodePath::Path *np) { for (unsigned int j = 0; j < hpaths.size(); ++j) { SPCurve *curve = new SPCurve(hpaths[j]); curve->transform(np->i2d); - sp_canvas_bpath_set_bpath(SP_CANVAS_BPATH(((*np->helper_path_vec)[lpe])[j]), curve); + sp_canvas_bpath_set_bpath(SP_CANVAS_BPATH((np->helper_path_vec[lpe])[j]), curve); curve = curve->unref(); } } @@ -232,18 +232,21 @@ sp_nodepath_update_helperpaths(Inkscape::NodePath::Path *np) { static void sp_nodepath_destroy_helperpaths(Inkscape::NodePath::Path *np) { - for (HelperPathList::iterator i = np->helper_path_vec->begin(); i != np->helper_path_vec->end(); ++i) { + for (HelperPathList::iterator i = np->helper_path_vec.begin(); i != np->helper_path_vec.end(); ++i) { for (std::vector::iterator j = (*i).second.begin(); j != (*i).second.end(); ++j) { GtkObject *temp = *j; *j = NULL; gtk_object_destroy(temp); } } + np->helper_path_vec.clear(); } /** * \brief Creates new nodepath from item + * + * \todo create proper constructor for nodepath::path, this method returns null a constructor cannot so this cannot be simply converted to constructor. */ Inkscape::NodePath::Path *sp_nodepath_new(SPDesktop *desktop, SPObject *object, bool show_handles, const char * repr_key_in, SPItem *item) { @@ -278,7 +281,7 @@ Inkscape::NodePath::Path *sp_nodepath_new(SPDesktop *desktop, SPObject *object, } //Create new nodepath - Inkscape::NodePath::Path *np = g_new(Inkscape::NodePath::Path, 1); + Inkscape::NodePath::Path *np = new Inkscape::NodePath::Path(); if (!np) { curve->unref(); return NULL; @@ -295,7 +298,6 @@ Inkscape::NodePath::Path *sp_nodepath_new(SPDesktop *desktop, SPObject *object, np->local_change = 0; np->show_handles = show_handles; np->helper_path = NULL; - np->helper_path_vec = new HelperPathList; np->helperpath_rgba = prefs->getInt("/tools/nodes/highlight_color", 0xff0000ff); np->helperpath_width = 1.0; np->curve = curve->copy(); @@ -328,7 +330,7 @@ Inkscape::NodePath::Path *sp_nodepath_new(SPDesktop *desktop, SPObject *object, Inkscape::LivePathEffect::Effect * lpe = LIVEPATHEFFECT(object)->get_lpe(); if (!lpe) { g_error("sp_nodepath_new: lpeobject without real lpe passed as argument!"); - sp_nodepath_destroy(np); + delete np; } Inkscape::LivePathEffect::Parameter *lpeparam = lpe->getParameter(repr_key_in); if (lpeparam) { @@ -383,48 +385,39 @@ Inkscape::NodePath::Path *sp_nodepath_new(SPDesktop *desktop, SPObject *object, /** * Destroys nodepath's subpaths, then itself, also tell parent ShapeEditor about it. */ -void sp_nodepath_destroy(Inkscape::NodePath::Path *np) { - - if (!np) { //soft fail, like delete - return; - } - - while (np->subpaths) { - sp_nodepath_subpath_destroy((Inkscape::NodePath::SubPath *) np->subpaths->data); +Inkscape::NodePath::Path::~Path() { + while (this->subpaths) { + sp_nodepath_subpath_destroy((Inkscape::NodePath::SubPath *) this->subpaths->data); } //Inform the ShapeEditor that made me, if any, that I am gone. - if (np->shape_editor) - np->shape_editor->nodepath_destroyed(); + if (this->shape_editor) + this->shape_editor->nodepath_destroyed(); - g_assert(!np->selected); + g_assert(!this->selected); - if (np->helper_path) { - GtkObject *temp = np->helper_path; - np->helper_path = NULL; + if (this->helper_path) { + GtkObject *temp = this->helper_path; + this->helper_path = NULL; gtk_object_destroy(temp); } - if (np->curve) { - np->curve->unref(); - np->curve = NULL; + if (this->curve) { + this->curve->unref(); + this->curve = NULL; } - if (np->repr_key) { - g_free(np->repr_key); - np->repr_key = NULL; + if (this->repr_key) { + g_free(this->repr_key); + this->repr_key = NULL; } - if (np->repr_nodetypes_key) { - g_free(np->repr_nodetypes_key); - np->repr_nodetypes_key = NULL; + if (this->repr_nodetypes_key) { + g_free(this->repr_nodetypes_key); + this->repr_nodetypes_key = NULL; } - sp_nodepath_destroy_helperpaths(np); - delete np->helper_path_vec; - np->helper_path_vec = NULL; - - np->desktop = NULL; + sp_nodepath_destroy_helperpaths(this); - g_free(np); + this->desktop = NULL; } /** @@ -771,6 +764,9 @@ static SPCurve *create_curve(Inkscape::NodePath::Path *np) Inkscape::NodePath::Node *n = sp->first->n.other; while (n) { Geom::Point const end_pt = n->pos * np->d2i; + if (!IS_FINITE(n->pos[0]) || !IS_FINITE(n->pos[1])){ + g_message("niet finite"); + } switch (n->code) { case NR_LINETO: curve->lineto(end_pt); @@ -2067,6 +2063,9 @@ sp_nodepath_add_node_near_point(Inkscape::NodePath::Path *nodepath, Geom::Point //find segment to split Inkscape::NodePath::Node *e = sp_nodepath_get_node_by_index(nodepath, segment_index); + if (!e) { + return; + } //don't know why but t seems to flip for lines if (sp_node_path_code_from_side(e, sp_node_get_side(e, -1)) == NR_LINETO) { @@ -3609,7 +3608,7 @@ static double point_line_distance(Geom::Point *p, double a) * \todo fixme: This goes to "moved" event? (lauris) */ static gboolean -node_request(SPKnot */*knot*/, Geom::Point *p, guint state, gpointer data) +node_request(SPKnot */*knot*/, Geom::Point const &p, guint state, gpointer data) { double yn, xn, yp, xp; double an, ap, na, pa; @@ -3627,12 +3626,12 @@ node_request(SPKnot */*knot*/, Geom::Point *p, guint state, gpointer data) ( ((state & GDK_SHIFT_MASK) && ((n->n.other && n->n.pos == n->pos) || (n->p.other && n->p.pos == n->pos))) || n->dragging_out ) ) { - Geom::Point mouse = (*p); + Geom::Point mouse = p; if (!n->dragging_out) { // This is the first drag-out event; find out which handle to drag out - double appr_n = (n->n.other ? Geom::L2(n->n.other->pos - n->pos) - Geom::L2(n->n.other->pos - (*p)) : -HUGE_VAL); - double appr_p = (n->p.other ? Geom::L2(n->p.other->pos - n->pos) - Geom::L2(n->p.other->pos - (*p)) : -HUGE_VAL); + double appr_n = (n->n.other ? Geom::L2(n->n.other->pos - n->pos) - Geom::L2(n->n.other->pos - p) : -HUGE_VAL); + double appr_p = (n->p.other ? Geom::L2(n->p.other->pos - n->pos) - Geom::L2(n->p.other->pos - p) : -HUGE_VAL); if (appr_p == -HUGE_VAL && appr_n == -HUGE_VAL) // orphan node? return FALSE; @@ -3656,8 +3655,8 @@ node_request(SPKnot */*knot*/, Geom::Point *p, guint state, gpointer data) opposite = &n->p; n->n.other->code = NR_CURVETO; } else { // find out to which handle of the adjacent node we're closer; note that n->n.other == n->p.other - double appr_other_n = (n->n.other ? Geom::L2(n->n.other->n.pos - n->pos) - Geom::L2(n->n.other->n.pos - (*p)) : -HUGE_VAL); - double appr_other_p = (n->n.other ? Geom::L2(n->n.other->p.pos - n->pos) - Geom::L2(n->n.other->p.pos - (*p)) : -HUGE_VAL); + double appr_other_n = (n->n.other ? Geom::L2(n->n.other->n.pos - n->pos) - Geom::L2(n->n.other->n.pos - p) : -HUGE_VAL); + double appr_other_p = (n->n.other ? Geom::L2(n->n.other->p.pos - n->pos) - Geom::L2(n->n.other->p.pos - p) : -HUGE_VAL); if (appr_other_p > appr_other_n) { // closer to other's p handle n->dragging_out = &n->n; opposite = &n->p; @@ -3681,7 +3680,7 @@ node_request(SPKnot */*knot*/, Geom::Point *p, guint state, gpointer data) } // pass this on to the handle-moved callback - node_handle_moved(n->dragging_out->knot, &mouse, state, (gpointer) n); + node_handle_moved(n->dragging_out->knot, mouse, state, (gpointer) n); sp_node_update_handles(n); return TRUE; } @@ -3744,7 +3743,7 @@ node_request(SPKnot */*knot*/, Geom::Point *p, guint state, gpointer data) if (ap == 0) pa = HUGE_VAL; else pa = -1/ap; // mouse point relative to the node's original pos - pr = (*p) - n->origin; + pr = p - n->origin; // distances to the four lines (two handles and two perpendiculars) d_an = point_line_distance(&pr, an); @@ -3771,16 +3770,16 @@ node_request(SPKnot */*knot*/, Geom::Point *p, guint state, gpointer data) } else { // constraining to hor/vert - if (fabs((*p)[Geom::X] - n->origin[Geom::X]) > fabs((*p)[Geom::Y] - n->origin[Geom::Y])) { // snap to hor + if (fabs(p[Geom::X] - n->origin[Geom::X]) > fabs(p[Geom::Y] - n->origin[Geom::Y])) { // snap to hor sp_nodepath_selected_nodes_move(n->subpath->nodepath, - (*p)[Geom::X] - n->pos[Geom::X], + p[Geom::X] - n->pos[Geom::X], n->origin[Geom::Y] - n->pos[Geom::Y], true, true, Inkscape::Snapper::ConstraintLine(component_vectors[Geom::X])); } else { // snap to vert sp_nodepath_selected_nodes_move(n->subpath->nodepath, n->origin[Geom::X] - n->pos[Geom::X], - (*p)[Geom::Y] - n->pos[Geom::Y], + p[Geom::Y] - n->pos[Geom::Y], true, true, Inkscape::Snapper::ConstraintLine(component_vectors[Geom::Y])); } @@ -3788,17 +3787,17 @@ node_request(SPKnot */*knot*/, Geom::Point *p, guint state, gpointer data) } else { // move freely if (n->is_dragging) { if (state & GDK_MOD1_MASK) { // sculpt - sp_nodepath_selected_nodes_sculpt(n->subpath->nodepath, n, (*p) - n->origin); + sp_nodepath_selected_nodes_sculpt(n->subpath->nodepath, n, p - n->origin); } else { sp_nodepath_selected_nodes_move(n->subpath->nodepath, - (*p)[Geom::X] - n->pos[Geom::X], - (*p)[Geom::Y] - n->pos[Geom::Y], + p[Geom::X] - n->pos[Geom::X], + p[Geom::Y] - n->pos[Geom::Y], (state & GDK_SHIFT_MASK) == 0); } } } - n->subpath->nodepath->desktop->scroll_to_point(*p); + n->subpath->nodepath->desktop->scroll_to_point(p); return TRUE; } @@ -3879,7 +3878,7 @@ static void node_handle_ungrabbed(SPKnot *knot, guint state, gpointer data) /** * Node handle "request" signal callback. */ -static gboolean node_handle_request(SPKnot *knot, Geom::Point *p, guint state, gpointer data) +static gboolean node_handle_request(SPKnot *knot, Geom::Point const &p, guint state, gpointer data) { Inkscape::NodePath::Node *n = (Inkscape::NodePath::Node *) data; @@ -3907,40 +3906,37 @@ static gboolean node_handle_request(SPKnot *knot, Geom::Point *p, guint state, g if ((state & GDK_SHIFT_MASK) != 0) { // We will not try to snap when the shift-key is pressed // so remove the old snap indicator and don't wait for it to time-out - desktop->snapindicator->remove_snappoint(); + desktop->snapindicator->remove_snappoint(); } Inkscape::NodePath::Node *othernode = opposite->other; if (othernode) { if ((n->type != Inkscape::NodePath::NODE_CUSP) && sp_node_side_is_line(n, opposite)) { /* We are smooth node adjacent with line */ - Geom::Point const delta = *p - n->pos; + Geom::Point const delta = p - n->pos; Geom::Coord const len = Geom::L2(delta); Inkscape::NodePath::Node *othernode = opposite->other; Geom::Point const ndelta = n->pos - othernode->pos; Geom::Coord const linelen = Geom::L2(ndelta); + Geom::Point ptemp = p; if (len > NR_EPSILON && linelen > NR_EPSILON) { Geom::Coord const scal = dot(delta, ndelta) / linelen; - (*p) = n->pos + (scal / linelen) * ndelta; + ptemp = n->pos + (scal / linelen) * ndelta; } if ((state & GDK_SHIFT_MASK) == 0) { - s = m.constrainedSnap(Inkscape::SnapPreferences::SNAPPOINT_NODE, to_2geom(*p), Inkscape::Snapper::ConstraintLine(*p, ndelta)); + s = m.constrainedSnap(Inkscape::SnapPreferences::SNAPPOINT_NODE, ptemp, Inkscape::Snapper::ConstraintLine(ptemp, ndelta)); } } else { - if ((state & GDK_SHIFT_MASK) == 0) { - s = m.freeSnap(Inkscape::SnapPreferences::SNAPPOINT_NODE, to_2geom(*p)); - } + if ((state & GDK_SHIFT_MASK) == 0) { + s = m.freeSnap(Inkscape::SnapPreferences::SNAPPOINT_NODE, p); + } } } else { - if ((state & GDK_SHIFT_MASK) == 0) { - s = m.freeSnap(Inkscape::SnapPreferences::SNAPPOINT_NODE, to_2geom(*p)); - } + if ((state & GDK_SHIFT_MASK) == 0) { + s = m.freeSnap(Inkscape::SnapPreferences::SNAPPOINT_NODE, p); + } } - Geom::Point pt2g = *p; - s.getPoint(pt2g); - *p = pt2g; - sp_node_adjust_handle(n, -which); return FALSE; @@ -3949,7 +3945,7 @@ static gboolean node_handle_request(SPKnot *knot, Geom::Point *p, guint state, g /** * Node handle moved callback. */ -static void node_handle_moved(SPKnot *knot, Geom::Point *p, guint state, gpointer data) +static void node_handle_moved(SPKnot *knot, Geom::Point const &p, guint state, gpointer data) { Inkscape::NodePath::Node *n = (Inkscape::NodePath::Node *) data; Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -3971,7 +3967,7 @@ static void node_handle_moved(SPKnot *knot, Geom::Point *p, guint state, gpointe // calculate radial coordinates of the grabbed handle, its other handle, and the mouse point Radial rme(me->pos - n->pos); Radial rother(other->pos - n->pos); - Radial rnew(*p - n->pos); + Radial rnew(p - n->pos); if (state & GDK_CONTROL_MASK && rnew.a != HUGE_VAL) { int const snaps = prefs->getInt("/options/rotationsnapsperpi/value", 12); @@ -4362,8 +4358,18 @@ void sp_nodepath_selected_nodes_scale(Inkscape::NodePath::Path *nodepath, gdoubl box.expandTo (n->pos); // contain all selected nodes } + if ( Geom::are_near(box.maxExtent(), 0) ) { + SPEventContext *ec = nodepath->desktop->event_context; + if (!ec) return; + Inkscape::MessageContext *mc = get_message_context(ec); + if (!mc) return; + mc->setF(Inkscape::WARNING_MESSAGE, + _("Cannot scale nodes when all are at the same location.")); + return; + } double scale = (box.maxExtent() + grow)/box.maxExtent(); + Geom::Point scale_center; if (Inkscape::NodePath::Path::active_node == NULL) scale_center = box.midpoint(); @@ -4371,9 +4377,9 @@ void sp_nodepath_selected_nodes_scale(Inkscape::NodePath::Path *nodepath, gdoubl scale_center = Inkscape::NodePath::Path::active_node->pos; Geom::Matrix t = - Geom::Matrix (Geom::Translate(-scale_center)) * - Geom::Matrix (Geom::Scale(scale, scale)) * - Geom::Matrix (Geom::Translate(scale_center)); + Geom::Translate(-scale_center) * + Geom::Scale(scale, scale) * + Geom::Translate(scale_center); for (GList *l = nodepath->selected; l != NULL; l = l->next) { Inkscape::NodePath::Node *n = (Inkscape::NodePath::Node *) l->data; diff --git a/src/nodepath.h b/src/nodepath.h index 4d05b9f01..262b93d04 100644 --- a/src/nodepath.h +++ b/src/nodepath.h @@ -51,25 +51,25 @@ typedef std::map class Radial{ public: /** Radius */ - double r; + double r; /** Amplitude */ - double a; - Radial() {} - // Radial(Geom::Point const &p); // Convert a point to radial coordinates - Radial(Radial &p) : r(p.r),a(p.a) {} - // operator Geom::Point() const; + double a; + Radial() {} + // Radial(Geom::Point const &p); // Convert a point to radial coordinates + Radial(Radial &p) : r(p.r),a(p.a) {} + // operator Geom::Point() const; /** * Construct Radial from Geom::Point. */ Radial(Geom::Point const &p) { - r = Geom::L2(p); - if (r > 0) { - a = Geom::atan2 (p); - } else { - a = HUGE_VAL; //undefined - } + r = Geom::L2(p); + if (r > 0) { + a = Geom::atan2 (p); + } else { + a = HUGE_VAL; //undefined + } } /** @@ -77,11 +77,11 @@ Radial(Geom::Point const &p) */ operator Geom::Point() const { - if (a == HUGE_VAL) { - return Geom::Point(0,0); - } else { - return r*Geom::Point(cos(a), sin(a)); - } + if (a == HUGE_VAL) { + return Geom::Point(0,0); + } else { + return r*Geom::Point(cos(a), sin(a)); + } } }; @@ -118,15 +118,15 @@ class Node; class SubPath { public: /** The parent of this subpath */ - Path * nodepath; + Path * nodepath; /** Is this path closed (no endpoints) or not?*/ - gboolean closed; + gboolean closed; /** The nodes in this subpath. */ - GList * nodes; + GList * nodes; /** The first node of the subpath (does not imply open/closed)*/ - Node * first; + Node * first; /** The last node of the subpath */ - Node * last; + Node * last; }; @@ -140,15 +140,15 @@ class SubPath { */ typedef enum { /** A normal node */ - NODE_NONE, + NODE_NONE, /** This node non-continuously joins two segments.*/ - NODE_CUSP, + NODE_CUSP, /** This node continuously joins two segments. */ - NODE_SMOOTH, + NODE_SMOOTH, /** This node has automatic handles. */ - NODE_AUTO, + NODE_AUTO, /** This node is symmetric. */ - NODE_SYMM + NODE_SYMM } NodeType; @@ -160,19 +160,19 @@ typedef enum { class NodeSide{ public: /** Pointer to the next node, */ - Node * other; + Node * other; /** Position */ - Geom::Point pos; + Geom::Point pos; /** Origin (while dragging) in radial notation */ - Radial origin_radial; + Radial origin_radial; /** Origin (while dragging) in x/y notation */ - Geom::Point origin; + Geom::Point origin; /** Knots are Inkscape's way of providing draggable points. This * Knot is the point on the curve representing the control point in a * bezier curve.*/ - SPKnot * knot; + SPKnot * knot; /** What kind of rendering? */ - SPCanvasItem * line; + SPCanvasItem * line; }; /** @@ -181,28 +181,28 @@ class NodeSide{ class Node { public: /** The parent subpath of this node */ - SubPath * subpath; + SubPath * subpath; /** Type is selected from NodeType.*/ - guint type : 4; + guint type : 4; /** Code refers to which ArtCode is used to represent the segment * (which segment?).*/ - guint code : 4; + guint code : 4; /** Boolean. Am I currently selected or not? */ - guint selected : 1; + guint selected : 1; /** */ - Geom::Point pos; + Geom::Point pos; /** */ - Geom::Point origin; + Geom::Point origin; /** Knots are Inkscape's way of providing draggable points. This * Knot is the point on the curve representing the endpoint.*/ - SPKnot * knot; + SPKnot * knot; /** The NodeSide in the 'next' direction */ - NodeSide n; + NodeSide n; /** The NodeSide in the 'previous' direction */ - NodeSide p; + NodeSide p; - /** The pointer to the nodeside which we are dragging out with Shift */ - NodeSide *dragging_out; + /** The pointer to the nodeside which we are dragging out with Shift */ + NodeSide *dragging_out; /** Boolean. Am I being dragged? */ guint is_dragging : 1; @@ -221,30 +221,37 @@ class Node { */ class Path { public: + /** Constructor should private, people should create new nodepaths using sp_nodepath_new + * But for some reason I cannot make sp_nodepath_new a friend :-( + */ + Path() {}; + /** Destructor */ + ~Path(); + /** Pointer to the current desktop, for reporting purposes */ - SPDesktop * desktop; + SPDesktop * desktop; /** The parent path of this nodepath */ - SPObject * object; + SPObject * object; /** The parent livepatheffect of this nodepath, if applicable */ SPItem * item; /** The context which created this nodepath. Important if this nodepath is deleted */ - ShapeEditor *shape_editor; + ShapeEditor *shape_editor; /** The subpaths which comprise this NodePath */ - GList * subpaths; + GList * subpaths; /** A list of nodes which are currently selected */ - GList * selected; + GList * selected; /** Transforms (userspace <---> virtual space? someone please describe ) - njh: I'd be guessing that these are item <-> desktop transforms.*/ - Geom::Matrix i2d, d2i; + njh: I'd be guessing that these are item <-> desktop transforms.*/ + Geom::Matrix i2d, d2i; /** The DOM node which describes this NodePath */ Inkscape::XML::Node *repr; gchar *repr_key; gchar *repr_nodetypes_key; - //STL compliant method to get the selected nodes - void selection(std::list &l); + //STL compliant method to get the selected nodes + void selection(std::list &l); - guint numSelected() {return (selected? g_list_length(selected) : 0);} - Geom::Point& singleSelectedCoords() {return (((Node *) selected->data)->pos);} + guint numSelected() {return (selected? g_list_length(selected) : 0);} + Geom::Point& singleSelectedCoords() {return (((Node *) selected->data)->pos);} /// draw a "sketch" of the path by using these variables SPCanvasItem *helper_path; @@ -254,21 +261,21 @@ class Path { gdouble helperpath_width; // the helperpaths provided by all LPEs (and their paramaters) of the current item - HelperPathList* helper_path_vec; + HelperPathList helper_path_vec; /// true if we changed repr, to tell this change from an external one such as from undo, simplify, or another desktop - unsigned int local_change; + unsigned int local_change; - /// true if we're showing selected nodes' handles - bool show_handles; + /// true if we're showing selected nodes' handles + bool show_handles; /// true if the path cannot contain curves, just straight lines bool straight_path; - /// active_node points to the node that is currently mouseovered (= NULL if - /// there isn't any); we also consider the node mouseovered if it is covered - /// by one of its handles and the latter is mouseovered - static Node *active_node; + /// active_node points to the node that is currently mouseovered (= NULL if + /// there isn't any); we also consider the node mouseovered if it is covered + /// by one of its handles and the latter is mouseovered + static Node *active_node; }; } // namespace NodePath @@ -282,7 +289,6 @@ enum { // Do function documentation in nodepath.cpp Inkscape::NodePath::Path * sp_nodepath_new (SPDesktop * desktop, SPObject *object, bool show_handles, const char * repr_key = NULL, SPItem *item = NULL); -void sp_nodepath_destroy (Inkscape::NodePath::Path * nodepath); void sp_nodepath_deselect (Inkscape::NodePath::Path *nodepath); void sp_nodepath_select_all (Inkscape::NodePath::Path *nodepath, bool invert); void sp_nodepath_select_all_from_subpath(Inkscape::NodePath::Path *nodepath, bool invert); diff --git a/src/object-snapper.cpp b/src/object-snapper.cpp index 0458add78..1fd566c82 100644 --- a/src/object-snapper.cpp +++ b/src/object-snapper.cpp @@ -138,7 +138,7 @@ void Inkscape::ObjectSnapper::_findCandidates(SPObject* parent, if (SP_IS_GROUP(o)) { _findCandidates(o, it, false, bbox_to_snap, snap_dim, false, Geom::identity()); } else { - boost::optional bbox_of_item = Geom::Rect(); + Geom::OptRect bbox_of_item = Geom::Rect(); if (clip_or_mask) { // Oh oh, this will get ugly. We cannot use sp_item_i2d_affine directly because we need to // insert an additional transformation in document coordinates (code copied from sp_item_i2d_affine) @@ -215,7 +215,7 @@ void Inkscape::ObjectSnapper::_collectNodes(Inkscape::SnapPreferences::PointType // Discard the bbox of a clipped path / mask, because we don't want to snap to both the bbox // of the item AND the bbox of the clipping path at the same time if (!(*i).clip_or_mask) { - boost::optional b = sp_item_bbox_desktop(root_item, bbox_type); + Geom::OptRect b = sp_item_bbox_desktop(root_item, bbox_type); if (b) { for ( unsigned k = 0 ; k < 4 ; k++ ) { _points_to_snap_to->push_back(b->corner(k)); @@ -378,11 +378,12 @@ void Inkscape::ObjectSnapper::_collectPaths(Inkscape::SnapPreferences::PointType // Discard the bbox of a clipped path / mask, because we don't want to snap to both the bbox // of the item AND the bbox of the clipping path at the same time if (!(*i).clip_or_mask) { - NRRect rect; - sp_item_invoke_bbox(root_item, &rect, i2doc, TRUE, bbox_type); - Geom::Rect const rect2 = to_2geom(*rect.upgrade()); - Geom::PathVector *path = _getPathvFromRect(rect2); - _paths_to_snap_to->push_back(path); + Geom::OptRect rect; + sp_item_invoke_bbox(root_item, rect, i2doc, TRUE, bbox_type); + if (rect) { + Geom::PathVector *path = _getPathvFromRect(*rect); + _paths_to_snap_to->push_back(path); + } } } } @@ -406,8 +407,9 @@ void Inkscape::ObjectSnapper::_snapPaths(SnappedConstraints &sc, bool const node_tool_active = _snap_to_itempath && selected_path != NULL; if (first_point) { - /* While editing a path in the node tool, findCandidates must ignore that path because - * of the node snapping requirements (i.e. only unselected nodes must be snapable). + /* findCandidates() is used for snapping to both paths and nodes. It ignores the path that is + * currently being edited, because that path requires special care: when snapping to nodes + * only the unselected nodes of that path should be considered, and these will be passed on separately. * This path must not be ignored however when snapping to the paths, so we add it here * manually when applicable. * @@ -452,8 +454,15 @@ void Inkscape::ObjectSnapper::_snapPaths(SnappedConstraints &sc, g_assert(unselected_nodes != NULL); Geom::Point start_pt = _snapmanager->getDesktop()->doc2dt(curve->pointAt(0)); Geom::Point end_pt = _snapmanager->getDesktop()->doc2dt(curve->pointAt(1)); - c1 = isUnselectedNode(start_pt, unselected_nodes); - c2 = isUnselectedNode(end_pt, unselected_nodes); + c1 = isUnselectedNode(start_pt, unselected_nodes); + c2 = isUnselectedNode(end_pt, unselected_nodes); + /* Unfortunately, this might yield false positives for coincident nodes. Inkscape might therefore mistakenly + * snap to path segments that are not stationary. There are at least two possible ways to overcome this: + * - Linking the individual nodes of the SPPath we have here, to the nodes of the NodePath::SubPath class as being + * used in sp_nodepath_selected_nodes_move. This class has a member variable called "selected". For this the nodes + * should be in the exact same order for both classes, so we can index them + * - Replacing the SPPath being used here by the the NodePath::SubPath class; but how? + */ } Geom::Point const sp_dt = _snapmanager->getDesktop()->doc2dt(sp_doc); @@ -550,7 +559,7 @@ void Inkscape::ObjectSnapper::freeSnap(SnappedConstraints &sc, Inkscape::SnapPreferences::PointType const &t, Geom::Point const &p, bool const &first_point, - boost::optional const &bbox_to_snap, + Geom::OptRect const &bbox_to_snap, std::vector const *it, std::vector *unselected_nodes) const { @@ -593,7 +602,7 @@ void Inkscape::ObjectSnapper::constrainedSnap( SnappedConstraints &sc, Inkscape::SnapPreferences::PointType const &t, Geom::Point const &p, bool const &first_point, - boost::optional const &bbox_to_snap, + Geom::OptRect const &bbox_to_snap, ConstraintLine const &c, std::vector const *it) const { diff --git a/src/object-snapper.h b/src/object-snapper.h index 01ef8cf50..f235ae566 100644 --- a/src/object-snapper.h +++ b/src/object-snapper.h @@ -77,7 +77,7 @@ public: Inkscape::SnapPreferences::PointType const &t, Geom::Point const &p, bool const &first_point, - boost::optional const &bbox_to_snap, + Geom::OptRect const &bbox_to_snap, std::vector const *it, std::vector *unselected_nodes) const; @@ -85,7 +85,7 @@ public: Inkscape::SnapPreferences::PointType const &t, Geom::Point const &p, bool const &first_point, - boost::optional const &bbox_to_snap, + Geom::OptRect const &bbox_to_snap, ConstraintLine const &c, std::vector const *it) const; diff --git a/src/pencil-context.cpp b/src/pencil-context.cpp index acc10389c..69d9a5e23 100644 --- a/src/pencil-context.cpp +++ b/src/pencil-context.cpp @@ -58,7 +58,7 @@ static void spdc_set_endpoint(SPPencilContext *pc, Geom::Point const p); static void spdc_finish_endpoint(SPPencilContext *pc); static void spdc_add_freehand_point(SPPencilContext *pc, Geom::Point p, guint state); static void fit_and_split(SPPencilContext *pc); - +static void interpolate(SPPencilContext *pc); static SPDrawContextClass *pencil_parent_class; static Geom::Point pencil_drag_origin_w(0, 0); @@ -263,9 +263,9 @@ pencil_handle_button_press(SPPencilContext *const pc, GdkEventButton const &beve Inkscape::SnappedPoint const s = m.freeSnap(Inkscape::SnapPreferences::SNAPPOINT_NODE, p); if (s.getSnapped()) { s.getPoint(p); - pc->pencil_has_snapped_before = true; + pc->prev_snap_was_succesful = true; } else { - pc->pencil_has_snapped_before = false; + pc->prev_snap_was_succesful = false; } } else if (selection->singleItem() && SP_IS_PATH(selection->singleItem())) { desktop->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("Appending to selected path")); @@ -362,11 +362,13 @@ pencil_handle_motion_notify(SPPencilContext *const pc, GdkEventMotion const &mev Inkscape::SnappedPoint const s = m.freeSnap(Inkscape::SnapPreferences::SNAPPOINT_NODE, p); if (s.getSnapped()) { s.getPoint(p); - pc->pencil_has_snapped_before = true; + pc->prev_snap_was_succesful = true; + } else { + pc->prev_snap_was_succesful = false; } } if ( pc->npoints != 0) { // buttonpress may have happened before we entered draw context! - if (!(pc->pencil_has_snapped_before && m.snapprefs.getSnapPostponedGlobally())) { + if (!(pc->prev_snap_was_succesful && m.snapprefs.getSnapPostponedGlobally())) { // When snapping is enabled but temporarily on hold because the mouse is moving // fast, then we don't want to add nodes off-grid spdc_add_freehand_point(pc, from_2geom(p), mevent.state); @@ -450,6 +452,7 @@ pencil_handle_button_release(SPPencilContext *const pc, GdkEventButton const &re dt->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("Finishing freehand")); + interpolate(pc); spdc_concat_colors_and_flush(pc, FALSE); pc->sa = NULL; pc->ea = NULL; @@ -624,6 +627,7 @@ spdc_finish_endpoint(SPPencilContext *const pc) } } + static void spdc_add_freehand_point(SPPencilContext *pc, Geom::Point p, guint /*state*/) { @@ -633,6 +637,7 @@ spdc_add_freehand_point(SPPencilContext *pc, Geom::Point p, guint /*state*/) if ( ( p != pc->p[ pc->npoints - 1 ] ) && in_svg_plane(p) ) { + pc->ps.push_back(p); pc->p[pc->npoints++] = p; fit_and_split(pc); } @@ -644,22 +649,95 @@ square(double const x) return x * x; } +static void +interpolate(SPPencilContext *pc) +{ + + g_assert( pc->ps.size() > 1 ); + + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + double const tol = prefs->getDoubleLimited("/tools/freehand/pencil/tolerance", 10.0, 1.0, 100.0) * 0.4; + double const tolerance_sq = 0.02 * square( pc->desktop->w2d().descrim() * + tol) * exp(0.2*tol - 2); + + g_assert(is_zero(pc->req_tangent) + || is_unit_vector(pc->req_tangent)); + Geom::Point const tHatEnd(0, 0); + + guint n_points = pc->ps.size(); + pc->green_curve->reset(); + pc->red_curve->reset(); + + Geom::Point * b = g_new(Geom::Point, 4*n_points); + Geom::Point * points = g_new(Geom::Point, 4*n_points); + for (int i = 0; i < pc->ps.size(); i++) { + points[i] = pc->ps[i]; + } + + // worst case gives us a segment per point + int max_segs = 4*n_points; + + int const n_segs = sp_bezier_fit_cubic_r(b, points, n_points, + tolerance_sq, max_segs); + + if ( n_segs > 0) + { + /* Fit and draw and reset state */ + pc->red_curve->reset(); + pc->red_curve->moveto(b[0]); + for (int c = 0; c < n_segs; c++) { + pc->red_curve->curveto(b[4*c+1], b[4*c+2], b[4*c+3]); + } + sp_canvas_bpath_set_bpath(SP_CANVAS_BPATH(pc->red_bpath), pc->red_curve); + pc->red_curve_is_valid = true; + + /* Fit and draw and copy last point */ + g_assert(!pc->red_curve->is_empty()); + + /* Set up direction of next curve. */ + { + Geom::CubicBezier const * last_seg = dynamic_cast(pc->red_curve->last_segment()); + g_assert( last_seg ); // Relevance: validity of (*last_seg)[2] + pc->p[0] = last_seg->finalPoint(); + pc->npoints = 1; + Geom::Point const req_vec( pc->p[0] - (*last_seg)[2] ); + pc->req_tangent = ( ( Geom::is_zero(req_vec) || !in_svg_plane(req_vec) ) + ? Geom::Point(0, 0) + : Geom::unit_vector(req_vec) ); + } + + pc->green_curve->append_continuous(pc->red_curve, 0.0625); + SPCurve *curve = pc->red_curve->copy(); + + /// \todo fixme: + SPCanvasItem *cshape = sp_canvas_bpath_new(sp_desktop_sketch(pc->desktop), curve); + curve->unref(); + sp_canvas_bpath_set_stroke(SP_CANVAS_BPATH(cshape), pc->green_color, 1.0, SP_STROKE_LINEJOIN_MITER, SP_STROKE_LINECAP_BUTT); + + pc->green_bpaths = g_slist_prepend(pc->green_bpaths, cshape); + + pc->red_curve_is_valid = false; + } + g_free(b); + g_free(points); + pc->ps.clear(); +} + + static void fit_and_split(SPPencilContext *pc) { g_assert( pc->npoints > 1 ); - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - double const tol = prefs->getDoubleLimited("/tools/freehand/pencil/tolerance", 10.0, 1.0, 100.0); - double const tolerance_sq = 0.02 * square( pc->desktop->w2d().descrim() * tol) - * exp(0.2*tol - 2); + double const tolerance_sq = 0; Geom::Point b[4]; g_assert(is_zero(pc->req_tangent) || is_unit_vector(pc->req_tangent)); Geom::Point const tHatEnd(0, 0); int const n_segs = sp_bezier_fit_cubic_full(b, NULL, pc->p, pc->npoints, - pc->req_tangent, tHatEnd, tolerance_sq, 1); + pc->req_tangent, tHatEnd, + tolerance_sq, 1); if ( n_segs > 0 && unsigned(pc->npoints) < G_N_ELEMENTS(pc->p) ) { diff --git a/src/pencil-context.h b/src/pencil-context.h index 467241b17..0845c82ba 100644 --- a/src/pencil-context.h +++ b/src/pencil-context.h @@ -30,7 +30,9 @@ struct SPPencilContext : public SPDrawContext { Geom::Point req_tangent; bool is_drawing; - bool pencil_has_snapped_before; + bool prev_snap_was_succesful; + + std::vector ps; }; /// The SPPencilContext vtable (empty). diff --git a/src/preferences-skeleton.h b/src/preferences-skeleton.h index c6b547a9e..0b8601748 100644 --- a/src/preferences-skeleton.h +++ b/src/preferences-skeleton.h @@ -248,6 +248,8 @@ static char const preferences_skeleton[] = " \n" " \n" " \n" +" \n" +" \n" " \n" " \n" " \n" diff --git a/src/removeoverlap/removeoverlap.cpp b/src/removeoverlap/removeoverlap.cpp index 60bb0e4f9..084f95dfe 100644 --- a/src/removeoverlap/removeoverlap.cpp +++ b/src/removeoverlap/removeoverlap.cpp @@ -48,7 +48,7 @@ void removeoverlap(GSList const *const items, double const xGap, double const yG ++it) { using Geom::X; using Geom::Y; - boost::optional item_box(sp_item_bbox_desktop(*it)); + Geom::OptRect item_box(sp_item_bbox_desktop(*it)); if (item_box) { Geom::Point min(item_box->min() - .5*gap); Geom::Point max(item_box->max() + .5*gap); diff --git a/src/rubberband.cpp b/src/rubberband.cpp index 7c43da9ea..76743cf8b 100644 --- a/src/rubberband.cpp +++ b/src/rubberband.cpp @@ -124,10 +124,10 @@ void Inkscape::Rubberband::setMode(int mode) _mode = mode; } -boost::optional Inkscape::Rubberband::getRectangle() const +Geom::OptRect Inkscape::Rubberband::getRectangle() const { if (!_started) { - return boost::optional(); + return Geom::OptRect(); } return Geom::Rect(_start, _end); diff --git a/src/rubberband.h b/src/rubberband.h index 6da1ddd8d..1f4b7d2ea 100644 --- a/src/rubberband.h +++ b/src/rubberband.h @@ -40,7 +40,7 @@ public: void start(SPDesktop *desktop, Geom::Point const &p); void move(Geom::Point const &p); - boost::optional getRectangle() const; + Geom::OptRect getRectangle() const; void stop(); bool is_started(); diff --git a/src/selcue.cpp b/src/selcue.cpp index 241802a87..03205d849 100644 --- a/src/selcue.cpp +++ b/src/selcue.cpp @@ -85,7 +85,7 @@ void Inkscape::SelCue::_updateItemBboxes() for (GSList const *l = _selection->itemList(); l != NULL; l = l->next) { SPItem *item = (SPItem *) l->data; - boost::optional const b = sp_item_bbox_desktop(item, bbox_type); + Geom::OptRect const b = sp_item_bbox_desktop(item, bbox_type); SPCanvasItem* box = NULL; diff --git a/src/select-context.cpp b/src/select-context.cpp index b726243f9..11c9cc4e9 100644 --- a/src/select-context.cpp +++ b/src/select-context.cpp @@ -599,7 +599,7 @@ sp_select_context_root_handler(SPEventContext *event_context, GdkEvent *event) // this was a rubberband drag GSList *items = NULL; if (r->getMode() == RUBBERBAND_MODE_RECT) { - boost::optional const b = r->getRectangle(); + Geom::OptRect const b = r->getRectangle(); items = sp_document_items_in_box(sp_desktop_document(desktop), desktop->dkey, *b); } else if (r->getMode() == RUBBERBAND_MODE_TOUCHPATH) { items = sp_document_items_at_points(sp_desktop_document(desktop), desktop->dkey, r->getPoints()); diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index 86bf64f01..bd59c0aa4 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -614,12 +614,12 @@ sp_item_list_common_parent_group(GSList const *items) } /** Finds out the minimum common bbox of the selected items. */ -static boost::optional +static Geom::OptRect enclose_items(GSList const *items) { g_assert(items != NULL); - boost::optional r; + Geom::OptRect r; for (GSList const *i = items; i; i = i->next) { r = Geom::unify(r, sp_item_bbox_desktop((SPItem *) i->data)); } @@ -667,7 +667,7 @@ sp_selection_raise(SPDesktop *desktop) rev = g_slist_sort(rev, (GCompareFunc) sp_item_repr_compare_position); // Determine the common bbox of the selected items. - boost::optional selected = enclose_items(items); + Geom::OptRect selected = enclose_items(items); // Iterate over all objects in the selection (starting from top). if (selected) { @@ -677,7 +677,7 @@ sp_selection_raise(SPDesktop *desktop) for (SPObject *newref = child->next; newref; newref = newref->next) { // if the sibling is an item AND overlaps our selection, if (SP_IS_ITEM(newref)) { - boost::optional newref_bbox = sp_item_bbox_desktop(SP_ITEM(newref)); + Geom::OptRect newref_bbox = sp_item_bbox_desktop(SP_ITEM(newref)); if ( newref_bbox && selected->intersects(*newref_bbox) ) { // AND if it's not one of our selected objects, if (!g_slist_find((GSList *) items, newref)) { @@ -757,7 +757,7 @@ sp_selection_lower(SPDesktop *desktop) Inkscape::XML::Node *grepr = SP_OBJECT_REPR(group); // Determine the common bbox of the selected items. - boost::optional selected = enclose_items(items); + Geom::OptRect selected = enclose_items(items); /* Construct direct-ordered list of selected children. */ GSList *rev = g_slist_copy((GSList *) items); @@ -772,7 +772,7 @@ sp_selection_lower(SPDesktop *desktop) for (SPObject *newref = prev_sibling(child); newref; newref = prev_sibling(newref)) { // if the sibling is an item AND overlaps our selection, if (SP_IS_ITEM(newref)) { - boost::optional ref_bbox = sp_item_bbox_desktop(SP_ITEM(newref)); + Geom::OptRect ref_bbox = sp_item_bbox_desktop(SP_ITEM(newref)); if ( ref_bbox && selected->intersects(*ref_bbox) ) { // AND if it's not one of our selected objects, if (!g_slist_find((GSList *) items, newref)) { @@ -1285,8 +1285,8 @@ sp_selection_scale_absolute(Inkscape::Selection *selection, if (selection->isEmpty()) return; - boost::optional const bbox(selection->bounds()); - if ( !bbox || bbox->isEmpty() ) { + Geom::OptRect const bbox(selection->bounds()); + if ( !bbox ) { return; } @@ -1307,9 +1307,9 @@ void sp_selection_scale_relative(Inkscape::Selection *selection, Geom::Point con if (selection->isEmpty()) return; - boost::optional const bbox(selection->bounds()); + Geom::OptRect const bbox(selection->bounds()); - if ( !bbox || bbox->isEmpty() ) { + if ( !bbox ) { return; } @@ -1425,7 +1425,7 @@ sp_selection_rotate_screen(Inkscape::Selection *selection, gdouble angle) if (selection->isEmpty()) return; - boost::optional const bbox(selection->bounds()); + Geom::OptRect const bbox(selection->bounds()); boost::optional center = selection->center(); if ( !bbox || !center ) { @@ -1454,7 +1454,7 @@ sp_selection_scale(Inkscape::Selection *selection, gdouble grow) if (selection->isEmpty()) return; - boost::optional const bbox(selection->bounds()); + Geom::OptRect const bbox(selection->bounds()); if (!bbox) { return; } @@ -1491,7 +1491,7 @@ sp_selection_scale_times(Inkscape::Selection *selection, gdouble times) if (selection->isEmpty()) return; - boost::optional sel_bbox = selection->bounds(); + Geom::OptRect sel_bbox = selection->bounds(); if (!sel_bbox) { return; @@ -1815,7 +1815,7 @@ SPItem *next_item(SPDesktop *desktop, GSList *path, SPObject *root, void scroll_to_show_item(SPDesktop *desktop, SPItem *item) { Geom::Rect dbox = desktop->get_display_area(); - boost::optional sbox = sp_item_bbox_desktop(item); + Geom::OptRect sbox = sp_item_bbox_desktop(item); if ( sbox && dbox.contains(*sbox) == false ) { Geom::Point const s_dt = sbox->midpoint(); @@ -2046,8 +2046,8 @@ sp_select_clone_original(SPDesktop *desktop) Inkscape::Preferences *prefs = Inkscape::Preferences::get(); bool highlight = prefs->getBool("/options/highlightoriginal/value"); if (highlight) { - boost::optional a = item->getBounds(sp_item_i2d_affine(item)); - boost::optional b = original->getBounds(sp_item_i2d_affine(original)); + Geom::OptRect a = item->getBounds(sp_item_i2d_affine(item)); + Geom::OptRect b = original->getBounds(sp_item_i2d_affine(original)); if ( a && b ) { // draw a flashing line between the objects SPCurve *curve = new SPCurve(); @@ -2088,9 +2088,9 @@ void sp_selection_to_marker(SPDesktop *desktop, bool apply) } sp_document_ensure_up_to_date(doc); - boost::optional r = selection->bounds(); + Geom::OptRect r = selection->bounds(); boost::optional c = selection->center(); - if ( !r || !c || r->isEmpty() ) { + if ( !r || !c ) { return; } @@ -2212,8 +2212,8 @@ sp_selection_tile(SPDesktop *desktop, bool apply) } sp_document_ensure_up_to_date(doc); - boost::optional r = selection->bounds(); - if ( !r || r->isEmpty() ) { + Geom::OptRect r = selection->bounds(); + if ( !r ) { return; } @@ -2871,8 +2871,8 @@ fit_canvas_to_selection(SPDesktop *desktop) desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select object(s) to fit canvas to.")); return false; } - boost::optional const bbox(desktop->selection->bounds()); - if (bbox && !bbox->isEmpty()) { + Geom::OptRect const bbox(desktop->selection->bounds()); + if (bbox) { doc->fitToRect(*bbox); return true; } else { @@ -2899,8 +2899,8 @@ fit_canvas_to_drawing(SPDocument *doc) sp_document_ensure_up_to_date(doc); SPItem const *const root = SP_ITEM(doc->root); - boost::optional const bbox(root->getBounds(sp_item_i2r_affine(root))); - if (bbox && !bbox->isEmpty()) { + Geom::OptRect const bbox(root->getBounds(sp_item_i2r_affine(root))); + if (bbox) { doc->fitToRect(*bbox); return true; } else { diff --git a/src/selection.cpp b/src/selection.cpp index 4ed6c0842..ea1c0053f 100644 --- a/src/selection.cpp +++ b/src/selection.cpp @@ -383,11 +383,11 @@ NRRect *Selection::bounds(NRRect *bbox, SPItem::BBoxType type) const return bbox; } -boost::optional Selection::bounds(SPItem::BBoxType type) const +Geom::OptRect Selection::bounds(SPItem::BBoxType type) const { GSList const *items = const_cast(this)->itemList(); - boost::optional bbox; + Geom::OptRect bbox; for ( GSList const *i = items ; i != NULL ; i = i->next ) { bbox = unify(bbox, sp_item_bbox_desktop(SP_ITEM(i->data), type)); } @@ -415,7 +415,7 @@ NRRect *Selection::boundsInDocument(NRRect *bbox, SPItem::BBoxType type) const { return bbox; } -boost::optional Selection::boundsInDocument(SPItem::BBoxType type) const { +Geom::OptRect Selection::boundsInDocument(SPItem::BBoxType type) const { NRRect r; return to_2geom(boundsInDocument(&r, type)->upgrade()); } @@ -430,7 +430,7 @@ boost::optional Selection::center() const { return first->getCenter(); } } - boost::optional bbox = bounds(); + Geom::OptRect bbox = bounds(); if (bbox) { return bounds()->midpoint(); } else { @@ -479,7 +479,7 @@ std::vector Selection::getSnapPointsConvexHull(SnapPreferences cons cvh.add(*i); } - boost::optional rHull = cvh.bounds(); + Geom::OptRect rHull = cvh.bounds(); if (rHull) { for ( unsigned i = 0 ; i < 4 ; ++i ) { pHull.push_back(rHull->corner(i)); diff --git a/src/selection.h b/src/selection.h index 88e8ae90d..f3ab8e1c1 100644 --- a/src/selection.h +++ b/src/selection.h @@ -243,7 +243,7 @@ public: /** @brief Returns the bounding rectangle of the selection */ NRRect *bounds(NRRect *dest, SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX) const; /** @brief Returns the bounding rectangle of the selection */ - boost::optional bounds(SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX) const; + Geom::OptRect bounds(SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX) const; /** * @brief Returns the bounding rectangle of the selection @@ -257,7 +257,7 @@ public: * * \todo how is this different from bounds()? */ - boost::optional boundsInDocument(SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX) const; + Geom::OptRect boundsInDocument(SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX) const; /** * @brief Returns the rotation/skew center of the selection diff --git a/src/seltrans.h b/src/seltrans.h index 64ced3dc5..9fafb5a76 100644 --- a/src/seltrans.h +++ b/src/seltrans.h @@ -131,9 +131,9 @@ private: SPItem::BBoxType _snap_bbox_type; - boost::optional _bbox; - boost::optional _approximate_bbox; - boost::optional _geometric_bbox; + Geom::OptRect _bbox; + Geom::OptRect _approximate_bbox; + Geom::OptRect _geometric_bbox; gdouble _strokewidth; Geom::Matrix _current_relative_affine; diff --git a/src/shape-editor.cpp b/src/shape-editor.cpp index 04f40929b..d7cafaed2 100644 --- a/src/shape-editor.cpp +++ b/src/shape-editor.cpp @@ -22,7 +22,7 @@ #include "desktop.h" #include "desktop-handles.h" #include "knotholder.h" -#include "live_effects/parameter/pointparam-knotholder.h" +#include "live_effects/parameter/point.h" #include "nodepath.h" #include "xml/node-event-vector.h" #include "preferences.h" @@ -75,7 +75,7 @@ void ShapeEditor::unset_item(SubType type, bool keep_knotholder) { } this->grab_node = -1; - sp_nodepath_destroy(this->nodepath); + delete this->nodepath; this->nodepath = NULL; } break; diff --git a/src/snap.cpp b/src/snap.cpp index e0c83ad36..ebce87c98 100644 --- a/src/snap.cpp +++ b/src/snap.cpp @@ -120,7 +120,7 @@ bool SnapManager::someSnapperMightSnap() const void SnapManager::freeSnapReturnByRef(Inkscape::SnapPreferences::PointType point_type, Geom::Point &p, bool first_point, - boost::optional const &bbox_to_snap) const + Geom::OptRect const &bbox_to_snap) const { Inkscape::SnappedPoint const s = freeSnap(point_type, p, first_point, bbox_to_snap); s.getPoint(p); @@ -140,7 +140,7 @@ void SnapManager::freeSnapReturnByRef(Inkscape::SnapPreferences::PointType point Inkscape::SnappedPoint SnapManager::freeSnap(Inkscape::SnapPreferences::PointType point_type, Geom::Point const &p, bool first_point, - boost::optional const &bbox_to_snap) const + Geom::OptRect const &bbox_to_snap) const { if (!someSnapperMightSnap()) { return Inkscape::SnappedPoint(p, Inkscape::SNAPTARGET_UNDEFINED, NR_HUGE, 0, false, false); @@ -206,7 +206,7 @@ Geom::Point SnapManager::multipleOfGridPitch(Geom::Point const &t) const Geom::Point const t_offset = from_2geom(t) + grid->origin; SnappedConstraints sc; // Only the first three parameters are being used for grid snappers - snapper->freeSnap(sc, Inkscape::SnapPreferences::SNAPPOINT_NODE, t_offset, TRUE, boost::optional(), NULL, NULL); + snapper->freeSnap(sc, Inkscape::SnapPreferences::SNAPPOINT_NODE, t_offset, TRUE, Geom::OptRect(), NULL, NULL); // Find the best snap for this grid, including intersections of the grid-lines Inkscape::SnappedPoint s = findBestSnap(t_offset, sc, false); if (s.getSnapped() && (s.getDistance() < nearest_distance)) { @@ -240,7 +240,7 @@ void SnapManager::constrainedSnapReturnByRef(Inkscape::SnapPreferences::PointTyp Geom::Point &p, Inkscape::Snapper::ConstraintLine const &constraint, bool first_point, - boost::optional const &bbox_to_snap) const + Geom::OptRect const &bbox_to_snap) const { Inkscape::SnappedPoint const s = constrainedSnap(point_type, p, constraint, first_point, bbox_to_snap); s.getPoint(p); @@ -262,7 +262,7 @@ Inkscape::SnappedPoint SnapManager::constrainedSnap(Inkscape::SnapPreferences::P Geom::Point const &p, Inkscape::Snapper::ConstraintLine const &constraint, bool first_point, - boost::optional const &bbox_to_snap) const + Geom::OptRect const &bbox_to_snap) const { if (!someSnapperMightSnap()) { return Inkscape::SnappedPoint(p, Inkscape::SNAPTARGET_UNDEFINED, NR_HUGE, 0, false, false); @@ -598,7 +598,7 @@ Inkscape::SnappedPoint SnapManager::freeSnapTranslation(Inkscape::SnapPreference Geom::Point const &pointer, Geom::Point const &tr) const { - return _snapTransformed(point_type, p, pointer, false, Geom::Point(), TRANSLATION, tr, Geom::Point(), Geom::X, false); + return _snapTransformed(point_type, p, pointer, false, Geom::Point(0,0), TRANSLATION, tr, Geom::Point(0,0), Geom::X, false); } @@ -620,7 +620,7 @@ Inkscape::SnappedPoint SnapManager::constrainedSnapTranslation(Inkscape::SnapPre Inkscape::Snapper::ConstraintLine const &constraint, Geom::Point const &tr) const { - return _snapTransformed(point_type, p, pointer, true, constraint, TRANSLATION, tr, Geom::Point(), Geom::X, false); + return _snapTransformed(point_type, p, pointer, true, constraint, TRANSLATION, tr, Geom::Point(0,0), Geom::X, false); } @@ -641,7 +641,7 @@ Inkscape::SnappedPoint SnapManager::freeSnapScale(Inkscape::SnapPreferences::Poi Geom::Scale const &s, Geom::Point const &o) const { - return _snapTransformed(point_type, p, pointer, false, Geom::Point(), SCALE, Geom::Point(s[Geom::X], s[Geom::Y]), o, Geom::X, false); + return _snapTransformed(point_type, p, pointer, false, Geom::Point(0,0), SCALE, Geom::Point(s[Geom::X], s[Geom::Y]), o, Geom::X, false); } @@ -664,7 +664,7 @@ Inkscape::SnappedPoint SnapManager::constrainedSnapScale(Inkscape::SnapPreferenc Geom::Point const &o) const { // When constrained scaling, only uniform scaling is supported. - return _snapTransformed(point_type, p, pointer, true, Geom::Point(), SCALE, Geom::Point(s[Geom::X], s[Geom::Y]), o, Geom::X, true); + return _snapTransformed(point_type, p, pointer, true, Geom::Point(0,0), SCALE, Geom::Point(s[Geom::X], s[Geom::Y]), o, Geom::X, true); } @@ -689,7 +689,7 @@ Inkscape::SnappedPoint SnapManager::constrainedSnapStretch(Inkscape::SnapPrefere Geom::Dim2 d, bool u) const { - return _snapTransformed(point_type, p, pointer, true, Geom::Point(), STRETCH, Geom::Point(s, s), o, d, u); + return _snapTransformed(point_type, p, pointer, true, Geom::Point(0,0), STRETCH, Geom::Point(s, s), o, d, u); } diff --git a/src/snap.h b/src/snap.h index 15b4bd095..05af0d202 100644 --- a/src/snap.h +++ b/src/snap.h @@ -56,12 +56,12 @@ public: void freeSnapReturnByRef(Inkscape::SnapPreferences::PointType point_type, Geom::Point &p, bool first_point = true, - boost::optional const &bbox_to_snap = boost::optional()) const; + Geom::OptRect const &bbox_to_snap = Geom::OptRect()) const; Inkscape::SnappedPoint freeSnap(Inkscape::SnapPreferences::PointType point_type, Geom::Point const &p, bool first_point = true, - boost::optional const &bbox_to_snap = boost::optional() ) const; + Geom::OptRect const &bbox_to_snap = Geom::OptRect() ) const; Geom::Point multipleOfGridPitch(Geom::Point const &t) const; @@ -71,13 +71,13 @@ public: Geom::Point &p, Inkscape::Snapper::ConstraintLine const &constraint, bool first_point = true, - boost::optional const &bbox_to_snap = boost::optional()) const; + Geom::OptRect const &bbox_to_snap = Geom::OptRect()) const; Inkscape::SnappedPoint constrainedSnap(Inkscape::SnapPreferences::PointType point_type, Geom::Point const &p, Inkscape::Snapper::ConstraintLine const &constraint, bool first_point = true, - boost::optional const &bbox_to_snap = boost::optional()) const; + Geom::OptRect const &bbox_to_snap = Geom::OptRect()) const; void guideSnap(Geom::Point &p, Geom::Point const &guide_normal) const; diff --git a/src/snapper.h b/src/snapper.h index 7ad548ab4..0c405fd2b 100644 --- a/src/snapper.h +++ b/src/snapper.h @@ -62,7 +62,7 @@ public: SnapPreferences::PointType const &/*t*/, Geom::Point const &/*p*/, bool const &/*first_point*/, - boost::optional const &/*bbox_to_snap*/, + Geom::OptRect const &/*bbox_to_snap*/, std::vector const */*it*/, std::vector */*unselected_nodes*/) const {}; @@ -100,7 +100,7 @@ public: SnapPreferences::PointType const &/*t*/, Geom::Point const &/*p*/, bool const &/*first_point*/, - boost::optional const &/*bbox_to_snap*/, + Geom::OptRect const &/*bbox_to_snap*/, ConstraintLine const &/*c*/, std::vector const */*it*/) const {}; diff --git a/src/sp-conn-end-pair.cpp b/src/sp-conn-end-pair.cpp index 14305c8a9..fbc4a93ca 100644 --- a/src/sp-conn-end-pair.cpp +++ b/src/sp-conn-end-pair.cpp @@ -167,7 +167,7 @@ SPConnEndPair::getEndpoints(NR::Point endPts[]) const { for (unsigned h = 0; h < 2; ++h) { if ( h2attItem[h] ) { - boost::optional bbox = h2attItem[h]->getBounds(sp_item_i2doc_affine(h2attItem[h])); + Geom::OptRect bbox = h2attItem[h]->getBounds(sp_item_i2doc_affine(h2attItem[h])); if (bbox) { endPts[h] = bbox->midpoint(); } else { diff --git a/src/sp-conn-end.cpp b/src/sp-conn-end.cpp index c94e75f71..5776388c3 100644 --- a/src/sp-conn-end.cpp +++ b/src/sp-conn-end.cpp @@ -72,7 +72,7 @@ sp_conn_end_move_compensate(Geom::Matrix const */*mp*/, SPItem */*moved_item*/, *(path->curve->penultimate_point()) }; for (unsigned h = 0; h < 2; ++h) { - boost::optional bbox = h2attItem[h]->getBounds(Geom::identity()); + Geom::OptRect bbox = h2attItem[h]->getBounds(Geom::identity()); if (!bbox) { if (updatePathRepr) { path->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); @@ -115,7 +115,7 @@ sp_conn_end_move_compensate(Geom::Matrix const */*mp*/, SPItem */*moved_item*/, Geom::Rect otherpt_rect = Geom::Rect(other_endpt, other_endpt); Geom::Rect h2bbox_icoordsys[2] = { otherpt_rect, otherpt_rect }; - boost::optional bbox = h2attItem[ind]->getBounds(NR::identity()); + Geom::OptRect bbox = h2attItem[ind]->getBounds(NR::identity()); if (!bbox) { if (updatePathRepr) { path->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); diff --git a/src/sp-ellipse.cpp b/src/sp-ellipse.cpp index e1284f61e..b6f510201 100644 --- a/src/sp-ellipse.cpp +++ b/src/sp-ellipse.cpp @@ -243,8 +243,17 @@ static void sp_genericellipse_set_shape(SPShape *shape) Geom::Matrix aff = Geom::Scale(rx, ry) * Geom::Translate(ellipse->cx.computed, ellipse->cy.computed); curve->transform(aff); - sp_lpe_item_perform_path_effect(SP_LPE_ITEM (ellipse), curve); - sp_shape_set_curve_insync((SPShape *) ellipse, curve, TRUE); + /* Reset the shape'scurve to the "original_curve" + * This is very important for LPEs to work properly! (the bbox might be recalculated depending on the curve in shape)*/ + sp_shape_set_curve_insync (shape, curve, TRUE); + if (sp_lpe_item_has_path_effect(SP_LPE_ITEM(shape)) && sp_lpe_item_path_effects_enabled(SP_LPE_ITEM(shape))) { + SPCurve *c_lpe = curve->copy(); + bool success = sp_lpe_item_perform_path_effect(SP_LPE_ITEM (shape), c_lpe); + if (success) { + sp_shape_set_curve_insync (shape, c_lpe, TRUE); + } + c_lpe->unref(); + } curve->unref(); } diff --git a/src/sp-feblend-fns.h b/src/sp-feblend-fns.h deleted file mode 100644 index f08ed9dd1..000000000 --- a/src/sp-feblend-fns.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef SP_FEBLEND_FNS_H -#define SP_FEBLEND_FNS_H - -/** \file - * Macros and fn declarations related to gaussian blur filter. - */ - -#include -#include - -namespace Inkscape { -namespace XML { -class Node; -} -} - -class SPFeBlend; - -#define SP_TYPE_FEBLEND (sp_feBlend_get_type()) -#define SP_FEBLEND(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEBLEND, SPFeBlend)) -#define SP_FEBLEND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEBLEND, SPFeBlendClass)) -#define SP_IS_FEBLEND(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEBLEND)) -#define SP_IS_FEBLEND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEBLEND)) - -GType sp_feBlend_get_type(); - -#endif /* !SP_FEBLEND_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-feblend.cpp b/src/sp-feblend.cpp deleted file mode 100644 index 0522a38e3..000000000 --- a/src/sp-feblend.cpp +++ /dev/null @@ -1,249 +0,0 @@ -#define __SP_FEBLEND_CPP__ - -/** \file - * SVG implementation. - * - */ -/* - * Authors: - * Hugo Rodrigues - * Niko Kiirala - * - * Copyright (C) 2006,2007 authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include - -#include "attributes.h" -#include "svg/svg.h" -#include "sp-feblend.h" -#include "xml/repr.h" - -#include "display/nr-filter.h" -#include "display/nr-filter-primitive.h" -#include "display/nr-filter-blend.h" -#include "display/nr-filter-types.h" - -/* FeBlend base class */ - -static void sp_feBlend_class_init(SPFeBlendClass *klass); -static void sp_feBlend_init(SPFeBlend *feBlend); - -static void sp_feBlend_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_feBlend_release(SPObject *object); -static void sp_feBlend_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_feBlend_update(SPObject *object, SPCtx *ctx, guint flags); -static Inkscape::XML::Node *sp_feBlend_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static void sp_feBlend_build_renderer(SPFilterPrimitive *sp_prim, NR::Filter *filter); - -static SPFilterPrimitiveClass *feBlend_parent_class; - -GType -sp_feBlend_get_type() -{ - static GType feBlend_type = 0; - - if (!feBlend_type) { - GTypeInfo feBlend_info = { - sizeof(SPFeBlendClass), - NULL, NULL, - (GClassInitFunc) sp_feBlend_class_init, - NULL, NULL, - sizeof(SPFeBlend), - 16, - (GInstanceInitFunc) sp_feBlend_init, - NULL, /* value_table */ - }; - feBlend_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeBlend", &feBlend_info, (GTypeFlags)0); - } - return feBlend_type; -} - -static void -sp_feBlend_class_init(SPFeBlendClass *klass) -{ - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; - - feBlend_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_feBlend_build; - sp_object_class->release = sp_feBlend_release; - sp_object_class->write = sp_feBlend_write; - sp_object_class->set = sp_feBlend_set; - sp_object_class->update = sp_feBlend_update; - - sp_primitive_class->build_renderer = sp_feBlend_build_renderer; -} - -static void -sp_feBlend_init(SPFeBlend *feBlend) -{ - feBlend->in2 = NR::NR_FILTER_SLOT_NOT_SET; -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPFeBlend variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_feBlend_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) feBlend_parent_class)->build) { - ((SPObjectClass *) feBlend_parent_class)->build(object, document, repr); - } - - /*LOAD ATTRIBUTES FROM REPR HERE*/ - sp_object_read_attr(object, "mode"); - sp_object_read_attr(object, "in2"); -} - -/** - * Drops any allocated memory. - */ -static void -sp_feBlend_release(SPObject *object) -{ - if (((SPObjectClass *) feBlend_parent_class)->release) - ((SPObjectClass *) feBlend_parent_class)->release(object); -} - -static NR::FilterBlendMode sp_feBlend_readmode(gchar const *value) -{ - if (!value) return NR::BLEND_NORMAL; - switch (value[0]) { - case 'n': - if (strncmp(value, "normal", 6) == 0) - return NR::BLEND_NORMAL; - break; - case 'm': - if (strncmp(value, "multiply", 8) == 0) - return NR::BLEND_MULTIPLY; - break; - case 's': - if (strncmp(value, "screen", 6) == 0) - return NR::BLEND_SCREEN; - break; - case 'd': - if (strncmp(value, "darken", 6) == 0) - return NR::BLEND_DARKEN; - break; - case 'l': - if (strncmp(value, "lighten", 7) == 0) - return NR::BLEND_LIGHTEN; - break; - default: - // do nothing by default - break; - } - return NR::BLEND_NORMAL; -} - -/** - * Sets a specific value in the SPFeBlend. - */ -static void -sp_feBlend_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeBlend *feBlend = SP_FEBLEND(object); - (void)feBlend; - - NR::FilterBlendMode mode; - int input; - switch(key) { - /*DEAL WITH SETTING ATTRIBUTES HERE*/ - case SP_ATTR_MODE: - mode = sp_feBlend_readmode(value); - if (mode != feBlend->blend_mode) { - feBlend->blend_mode = mode; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_IN2: - input = sp_filter_primitive_read_in(feBlend, value); - if (input != feBlend->in2) { - feBlend->in2 = input; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - default: - if (((SPObjectClass *) feBlend_parent_class)->set) - ((SPObjectClass *) feBlend_parent_class)->set(object, key, value); - break; - } - -} - -/** - * Receives update notifications. - */ -static void -sp_feBlend_update(SPObject *object, SPCtx *ctx, guint flags) -{ - if (flags & SP_OBJECT_MODIFIED_FLAG) { - sp_object_read_attr(object, "mode"); - sp_object_read_attr(object, "in2"); - } - - if (((SPObjectClass *) feBlend_parent_class)->update) { - ((SPObjectClass *) feBlend_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_feBlend_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - // Inkscape-only object, not copied during an "plain SVG" dump: - if (flags & SP_OBJECT_WRITE_EXT) { - if (repr) { - // is this sane? - // repr->mergeFrom(SP_OBJECT_REPR(object), "id"); - } else { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - } - - if (((SPObjectClass *) feBlend_parent_class)->write) { - ((SPObjectClass *) feBlend_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -static void sp_feBlend_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { - g_assert(primitive != NULL); - g_assert(filter != NULL); - - SPFeBlend *sp_blend = SP_FEBLEND(primitive); - - int primitive_n = filter->add_primitive(NR::NR_FILTER_BLEND); - NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); - NR::FilterBlend *nr_blend = dynamic_cast(nr_primitive); - g_assert(nr_blend != NULL); - - sp_filter_primitive_renderer_common(primitive, nr_primitive); - - nr_blend->set_mode(sp_blend->blend_mode); - nr_blend->set_input(1, sp_blend->in2); -} - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-feblend.h b/src/sp-feblend.h deleted file mode 100644 index f6f71b892..000000000 --- a/src/sp-feblend.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef SP_FEBLEND_H_SEEN -#define SP_FEBLEND_H_SEEN - -/** \file - * SVG implementation, see sp-feBlend.cpp. - */ -/* - * Authors: - * Hugo Rodrigues - * Niko Kiirala - * - * Copyright (C) 2006,2007 authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-filter.h" -#include "sp-feblend-fns.h" - -#include "display/nr-filter-blend.h" - -/* FeBlend base class */ -class SPFeBlendClass; - -struct SPFeBlend : public SPFilterPrimitive { - /** BLEND ATTRIBUTES HERE */ - NR::FilterBlendMode blend_mode; - int in2; -}; - -struct SPFeBlendClass { - SPFilterPrimitiveClass parent_class; -}; - -GType sp_feBlend_get_type(); - - -#endif /* !SP_FEBLEND_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fecolormatrix-fns.h b/src/sp-fecolormatrix-fns.h deleted file mode 100644 index 3a4a8d35c..000000000 --- a/src/sp-fecolormatrix-fns.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef SP_FECOLORMATRIX_FNS_H -#define SP_FECOLORMATRIX_FNS_H - -/** \file - * Macros and fn declarations related to gaussian blur filter. - */ - -#include -#include - -namespace Inkscape { -namespace XML { -class Node; -} -} - -class SPFeColorMatrix; - -#define SP_TYPE_FECOLORMATRIX (sp_feColorMatrix_get_type()) -#define SP_FECOLORMATRIX(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FECOLORMATRIX, SPFeColorMatrix)) -#define SP_FECOLORMATRIX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FECOLORMATRIX, SPFeColorMatrixClass)) -#define SP_IS_FECOLORMATRIX(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FECOLORMATRIX)) -#define SP_IS_FECOLORMATRIX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FECOLORMATRIX)) - -GType sp_feColorMatrix_get_type(); - -#endif /* !SP_FECOLORMATRIX_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fecolormatrix.cpp b/src/sp-fecolormatrix.cpp deleted file mode 100644 index 181b7cd03..000000000 --- a/src/sp-fecolormatrix.cpp +++ /dev/null @@ -1,234 +0,0 @@ -#define __SP_FECOLORMATRIX_CPP__ - -/** \file - * SVG implementation. - * - */ -/* - * Authors: - * Felipe Sanches - * hugo Rodrigues - * - * Copyright (C) 2007 Felipe C. da S. Sanches - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include - -#include "attributes.h" -#include "svg/svg.h" -#include "sp-fecolormatrix.h" -#include "xml/repr.h" -#include "helper-fns.h" - -#include "display/nr-filter-colormatrix.h" - -/* FeColorMatrix base class */ - -static void sp_feColorMatrix_class_init(SPFeColorMatrixClass *klass); -static void sp_feColorMatrix_init(SPFeColorMatrix *feColorMatrix); - -static void sp_feColorMatrix_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_feColorMatrix_release(SPObject *object); -static void sp_feColorMatrix_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_feColorMatrix_update(SPObject *object, SPCtx *ctx, guint flags); -static Inkscape::XML::Node *sp_feColorMatrix_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static void sp_feColorMatrix_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); - -static SPFilterPrimitiveClass *feColorMatrix_parent_class; - -GType -sp_feColorMatrix_get_type() -{ - static GType feColorMatrix_type = 0; - - if (!feColorMatrix_type) { - GTypeInfo feColorMatrix_info = { - sizeof(SPFeColorMatrixClass), - NULL, NULL, - (GClassInitFunc) sp_feColorMatrix_class_init, - NULL, NULL, - sizeof(SPFeColorMatrix), - 16, - (GInstanceInitFunc) sp_feColorMatrix_init, - NULL, /* value_table */ - }; - feColorMatrix_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeColorMatrix", &feColorMatrix_info, (GTypeFlags)0); - } - return feColorMatrix_type; -} - -static void -sp_feColorMatrix_class_init(SPFeColorMatrixClass *klass) -{ - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; - - feColorMatrix_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_feColorMatrix_build; - sp_object_class->release = sp_feColorMatrix_release; - sp_object_class->write = sp_feColorMatrix_write; - sp_object_class->set = sp_feColorMatrix_set; - sp_object_class->update = sp_feColorMatrix_update; - sp_primitive_class->build_renderer = sp_feColorMatrix_build_renderer; -} - -static void -sp_feColorMatrix_init(SPFeColorMatrix */*feColorMatrix*/) -{ -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPFeColorMatrix variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_feColorMatrix_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) feColorMatrix_parent_class)->build) { - ((SPObjectClass *) feColorMatrix_parent_class)->build(object, document, repr); - } - - /*LOAD ATTRIBUTES FROM REPR HERE*/ - sp_object_read_attr(object, "type"); - sp_object_read_attr(object, "values"); -} - -/** - * Drops any allocated memory. - */ -static void -sp_feColorMatrix_release(SPObject *object) -{ - if (((SPObjectClass *) feColorMatrix_parent_class)->release) - ((SPObjectClass *) feColorMatrix_parent_class)->release(object); -} - -static NR::FilterColorMatrixType sp_feColorMatrix_read_type(gchar const *value){ - if (!value) return NR::COLORMATRIX_MATRIX; //matrix is default - switch(value[0]){ - case 'm': - if (strcmp(value, "matrix") == 0) return NR::COLORMATRIX_MATRIX; - break; - case 's': - if (strcmp(value, "saturate") == 0) return NR::COLORMATRIX_SATURATE; - break; - case 'h': - if (strcmp(value, "hueRotate") == 0) return NR::COLORMATRIX_HUEROTATE; - break; - case 'l': - if (strcmp(value, "luminanceToAlpha") == 0) return NR::COLORMATRIX_LUMINANCETOALPHA; - break; - } - return NR::COLORMATRIX_MATRIX; //matrix is default -} - -/** - * Sets a specific value in the SPFeColorMatrix. - */ -static void -sp_feColorMatrix_set(SPObject *object, unsigned int key, gchar const *str) -{ - SPFeColorMatrix *feColorMatrix = SP_FECOLORMATRIX(object); - (void)feColorMatrix; - - NR::FilterColorMatrixType read_type; - /*DEAL WITH SETTING ATTRIBUTES HERE*/ - switch(key) { - case SP_ATTR_TYPE: - read_type = sp_feColorMatrix_read_type(str); - if (feColorMatrix->type != read_type){ - feColorMatrix->type = read_type; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_VALUES: - if (str){ - feColorMatrix->values = helperfns_read_vector(str, 20); - feColorMatrix->value = helperfns_read_number(str, HELPERFNS_NO_WARNING); - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - default: - if (((SPObjectClass *) feColorMatrix_parent_class)->set) - ((SPObjectClass *) feColorMatrix_parent_class)->set(object, key, str); - break; - } -} - -/** - * Receives update notifications. - */ -static void -sp_feColorMatrix_update(SPObject *object, SPCtx *ctx, guint flags) -{ - if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | - SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { - - /* do something to trigger redisplay, updates? */ - - } - - if (((SPObjectClass *) feColorMatrix_parent_class)->update) { - ((SPObjectClass *) feColorMatrix_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_feColorMatrix_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - // Inkscape-only object, not copied during an "plain SVG" dump: - if (flags & SP_OBJECT_WRITE_EXT) { - if (repr) { - // is this sane? - //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); - } else { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - } - - if (((SPObjectClass *) feColorMatrix_parent_class)->write) { - ((SPObjectClass *) feColorMatrix_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -static void sp_feColorMatrix_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { - g_assert(primitive != NULL); - g_assert(filter != NULL); - - SPFeColorMatrix *sp_colormatrix = SP_FECOLORMATRIX(primitive); - - int primitive_n = filter->add_primitive(NR::NR_FILTER_COLORMATRIX); - NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); - NR::FilterColorMatrix *nr_colormatrix = dynamic_cast(nr_primitive); - g_assert(nr_colormatrix != NULL); - - sp_filter_primitive_renderer_common(primitive, nr_primitive); - nr_colormatrix->set_type(sp_colormatrix->type); - nr_colormatrix->set_value(sp_colormatrix->value); - nr_colormatrix->set_values(sp_colormatrix->values); -} - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fecolormatrix.h b/src/sp-fecolormatrix.h deleted file mode 100644 index e091a0725..000000000 --- a/src/sp-fecolormatrix.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef SP_FECOLORMATRIX_H_SEEN -#define SP_FECOLORMATRIX_H_SEEN - -/** \file - * SVG implementation, see sp-feColorMatrix.cpp. - */ -/* - * Authors: - * Hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-filter.h" -#include "sp-fecolormatrix-fns.h" -#include "display/nr-filter-colormatrix.h" -#include - -/* FeColorMatrix base class */ -class SPFeColorMatrixClass; - -struct SPFeColorMatrix : public SPFilterPrimitive { - /** COLORMATRIX ATTRIBUTES HERE */ - NR::FilterColorMatrixType type; - gdouble value; - std::vector values; -}; - -struct SPFeColorMatrixClass { - SPFilterPrimitiveClass parent_class; -}; - -GType sp_feColorMatrix_get_type(); - - -#endif /* !SP_FECOLORMATRIX_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fecomponenttransfer-fns.h b/src/sp-fecomponenttransfer-fns.h deleted file mode 100644 index 49983770a..000000000 --- a/src/sp-fecomponenttransfer-fns.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef SP_FECOMPONENTTRANSFER_FNS_H -#define SP_FECOMPONENTTRANSFER_FNS_H - -/** \file - * Macros and fn declarations related to gaussian blur filter. - */ - -#include -#include - -namespace Inkscape { -namespace XML { -class Node; -} -} - -class SPFeComponentTransfer; - -#define SP_TYPE_FECOMPONENTTRANSFER (sp_feComponentTransfer_get_type()) -#define SP_FECOMPONENTTRANSFER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FECOMPONENTTRANSFER, SPFeComponentTransfer)) -#define SP_FECOMPONENTTRANSFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FECOMPONENTTRANSFER, SPFeComponentTransferClass)) -#define SP_IS_FECOMPONENTTRANSFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FECOMPONENTTRANSFER)) -#define SP_IS_FECOMPONENTTRANSFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FECOMPONENTTRANSFER)) - -GType sp_feComponentTransfer_get_type(); - -#endif /* !SP_FECOMPONENTTRANSFER_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fecomponenttransfer-funcnode.cpp b/src/sp-fecomponenttransfer-funcnode.cpp deleted file mode 100644 index 91194a31a..000000000 --- a/src/sp-fecomponenttransfer-funcnode.cpp +++ /dev/null @@ -1,345 +0,0 @@ -#define __SP_FEFUNCNODE_CPP__ - -/** \file - * SVG , , and implementations. - */ -/* - * Authors: - * Hugo Rodrigues - * Niko Kiirala - * Felipe Corrêa da Silva Sanches - * - * Copyright (C) 2006, 2007, 2008 Authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include - -#include "attributes.h" -#include "document.h" -#include "sp-fecomponenttransfer.h" -#include "sp-fecomponenttransfer-funcnode.h" -#include "display/nr-filter-component-transfer.h" -#include "xml/repr.h" -#include "helper-fns.h" - -#define SP_MACROS_SILENT -#include "macros.h" - -/* FeFuncNode class */ - -static void sp_fefuncnode_class_init(SPFeFuncNodeClass *klass); -static void sp_fefuncnode_init(SPFeFuncNode *fefuncnode); - -static void sp_fefuncnode_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_fefuncnode_release(SPObject *object); -static void sp_fefuncnode_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_fefuncnode_update(SPObject *object, SPCtx *ctx, guint flags); -static Inkscape::XML::Node *sp_fefuncnode_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); - -static SPObjectClass *feFuncNode_parent_class; - -GType -sp_fefuncR_get_type() -{ - static GType fefuncnode_type = 0; - - if (!fefuncnode_type) { - GTypeInfo fefuncnode_info = { - sizeof(SPFeFuncNodeClass), - NULL, NULL, - (GClassInitFunc) sp_fefuncnode_class_init, - NULL, NULL, - sizeof(SPFeFuncNode), - 16, - (GInstanceInitFunc) sp_fefuncnode_init, - NULL, /* value_table */ - }; - fefuncnode_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeFuncR", &fefuncnode_info, (GTypeFlags)0); - } - return fefuncnode_type; -} - -GType -sp_fefuncG_get_type() -{ - static GType fefuncnode_type = 0; - - if (!fefuncnode_type) { - GTypeInfo fefuncnode_info = { - sizeof(SPFeFuncNodeClass), - NULL, NULL, - (GClassInitFunc) sp_fefuncnode_class_init, - NULL, NULL, - sizeof(SPFeFuncNode), - 16, - (GInstanceInitFunc) sp_fefuncnode_init, - NULL, /* value_table */ - }; - fefuncnode_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeFuncG", &fefuncnode_info, (GTypeFlags)0); - } - return fefuncnode_type; -} - -GType -sp_fefuncB_get_type() -{ - static GType fefuncnode_type = 0; - - if (!fefuncnode_type) { - GTypeInfo fefuncnode_info = { - sizeof(SPFeFuncNodeClass), - NULL, NULL, - (GClassInitFunc) sp_fefuncnode_class_init, - NULL, NULL, - sizeof(SPFeFuncNode), - 16, - (GInstanceInitFunc) sp_fefuncnode_init, - NULL, /* value_table */ - }; - fefuncnode_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeFuncB", &fefuncnode_info, (GTypeFlags)0); - } - return fefuncnode_type; -} - -GType -sp_fefuncA_get_type() -{ - static GType fefuncnode_type = 0; - - if (!fefuncnode_type) { - GTypeInfo fefuncnode_info = { - sizeof(SPFeFuncNodeClass), - NULL, NULL, - (GClassInitFunc) sp_fefuncnode_class_init, - NULL, NULL, - sizeof(SPFeFuncNode), - 16, - (GInstanceInitFunc) sp_fefuncnode_init, - NULL, /* value_table */ - }; - fefuncnode_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeFuncA", &fefuncnode_info, (GTypeFlags)0); - } - return fefuncnode_type; -} - -static void -sp_fefuncnode_class_init(SPFeFuncNodeClass *klass) -{ - - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - - feFuncNode_parent_class = (SPObjectClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_fefuncnode_build; - sp_object_class->release = sp_fefuncnode_release; - sp_object_class->write = sp_fefuncnode_write; - sp_object_class->set = sp_fefuncnode_set; - sp_object_class->update = sp_fefuncnode_update; -} - -static void -sp_fefuncnode_init(SPFeFuncNode *fefuncnode) -{ - fefuncnode->type = NR::COMPONENTTRANSFER_TYPE_IDENTITY; - //fefuncnode->tableValues = NULL; - fefuncnode->slope = 1; - fefuncnode->intercept = 0; - fefuncnode->amplitude = 1; - fefuncnode->exponent = 1; - fefuncnode->offset = 0; -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPDistantLight variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_fefuncnode_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) feFuncNode_parent_class)->build) { - ((SPObjectClass *) feFuncNode_parent_class)->build(object, document, repr); - } - - //Read values of key attributes from XML nodes into object. - sp_object_read_attr(object, "type"); - sp_object_read_attr(object, "tableValues"); - sp_object_read_attr(object, "slope"); - sp_object_read_attr(object, "intercept"); - sp_object_read_attr(object, "amplitude"); - sp_object_read_attr(object, "exponent"); - sp_object_read_attr(object, "offset"); - - -//is this necessary? - sp_document_add_resource(document, "fefuncnode", object); //maybe feFuncR, fefuncG, feFuncB and fefuncA ? -} - -/** - * Drops any allocated memory. - */ -static void -sp_fefuncnode_release(SPObject *object) -{ - //SPFeFuncNode *fefuncnode = SP_FEFUNCNODE(object); - - if (SP_OBJECT_DOCUMENT(object)) { - /* Unregister ourselves */ - sp_document_remove_resource(SP_OBJECT_DOCUMENT(object), "fefuncnode", SP_OBJECT(object)); - } - -//TODO: release resources here -} - -static NR::FilterComponentTransferType sp_feComponenttransfer_read_type(gchar const *value){ - if (!value) return NR::COMPONENTTRANSFER_TYPE_ERROR; //type attribute is REQUIRED. - switch(value[0]){ - case 'i': - if (strncmp(value, "identity", 8) == 0) return NR::COMPONENTTRANSFER_TYPE_IDENTITY; - break; - case 't': - if (strncmp(value, "table", 5) == 0) return NR::COMPONENTTRANSFER_TYPE_TABLE; - break; - case 'd': - if (strncmp(value, "discrete", 8) == 0) return NR::COMPONENTTRANSFER_TYPE_DISCRETE; - break; - case 'l': - if (strncmp(value, "linear", 6) == 0) return NR::COMPONENTTRANSFER_TYPE_LINEAR; - break; - case 'g': - if (strncmp(value, "gamma", 5) == 0) return NR::COMPONENTTRANSFER_TYPE_GAMMA; - break; - } - return NR::COMPONENTTRANSFER_TYPE_ERROR; //type attribute is REQUIRED. -} - -/** - * Sets a specific value in the SPFeFuncNode. - */ -static void -sp_fefuncnode_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeFuncNode *feFuncNode = SP_FEFUNCNODE(object); - NR::FilterComponentTransferType type; - double read_num; - switch(key) { - case SP_ATTR_TYPE: - type = sp_feComponenttransfer_read_type(value); - if(type != feFuncNode->type) { - feFuncNode->type = type; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_TABLEVALUES: - if (value){ - feFuncNode->tableValues = helperfns_read_vector(value); - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_SLOPE: - read_num = helperfns_read_number(value); - if (read_num != feFuncNode->slope) { - feFuncNode->slope = read_num; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_INTERCEPT: - read_num = helperfns_read_number(value); - if (read_num != feFuncNode->intercept) { - feFuncNode->intercept = read_num; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_AMPLITUDE: - read_num = helperfns_read_number(value); - if (read_num != feFuncNode->amplitude) { - feFuncNode->amplitude = read_num; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_EXPONENT: - read_num = helperfns_read_number(value); - if (read_num != feFuncNode->exponent) { - feFuncNode->exponent = read_num; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_OFFSET: - read_num = helperfns_read_number(value); - if (read_num != feFuncNode->offset) { - feFuncNode->offset = read_num; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - default: - if (((SPObjectClass *) feFuncNode_parent_class)->set) - ((SPObjectClass *) feFuncNode_parent_class)->set(object, key, value); - break; - } -} - -/** - * * Receives update notifications. - * */ -static void -sp_fefuncnode_update(SPObject *object, SPCtx *ctx, guint flags) -{ - SPFeFuncNode *feFuncNode = SP_FEFUNCNODE(object); - (void)feFuncNode; - - if (flags & SP_OBJECT_MODIFIED_FLAG) { - /* do something to trigger redisplay, updates? */ - //TODO - //sp_object_read_attr(object, "azimuth"); - //sp_object_read_attr(object, "elevation"); - } - - if (((SPObjectClass *) feFuncNode_parent_class)->update) { - ((SPObjectClass *) feFuncNode_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_fefuncnode_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - SPFeFuncNode *fefuncnode = SP_FEFUNCNODE(object); - - if (!repr) { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - - (void)fefuncnode; - /* -TODO: I'm not sure what to do here... - - if (fefuncnode->azimuth_set) - sp_repr_set_css_double(repr, "azimuth", fefuncnode->azimuth); - if (fefuncnode->elevation_set) - sp_repr_set_css_double(repr, "elevation", fefuncnode->elevation);*/ - - if (((SPObjectClass *) feFuncNode_parent_class)->write) { - ((SPObjectClass *) feFuncNode_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fecomponenttransfer-funcnode.h b/src/sp-fecomponenttransfer-funcnode.h deleted file mode 100644 index 2f0b2fc28..000000000 --- a/src/sp-fecomponenttransfer-funcnode.h +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef SP_FECOMPONENTTRANSFER_FUNCNODE_H_SEEN -#define SP_FECOMPONENTTRANSFER_FUNCNODE_H_SEEN - -/** \file - * SVG implementation, see sp-filter.cpp. - */ -/* - * Authors: - * Hugo Rodrigues - * Niko Kiirala - * Felipe Corrêa da Silva Sanches - * - * Copyright (C) 2006,2007 Authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-object.h" -#include "display/nr-filter-component-transfer.h" - -#define SP_TYPE_FEFUNCR (sp_fefuncR_get_type()) -#define SP_TYPE_FEFUNCG (sp_fefuncG_get_type()) -#define SP_TYPE_FEFUNCB (sp_fefuncB_get_type()) -#define SP_TYPE_FEFUNCA (sp_fefuncA_get_type()) - -#define SP_IS_FEFUNCR(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEFUNCR)) -#define SP_IS_FEFUNCG(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEFUNCG)) -#define SP_IS_FEFUNCB(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEFUNCB)) -#define SP_IS_FEFUNCA(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEFUNCA)) - -#define SP_FEFUNCNODE(obj) (SP_IS_FEFUNCR(obj) ? G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEFUNCR, SPFeFuncNode) : (SP_IS_FEFUNCG(obj) ? G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEFUNCG, SPFeFuncNode) : (SP_IS_FEFUNCB(obj) ? G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEFUNCB, SPFeFuncNode):(SP_IS_FEFUNCA(obj) ? G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEFUNCA, SPFeFuncNode): NULL)))) - -#define SP_FEFUNCNODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEFUNCNODE, SPFeFuncNodeClass)) - -#define SP_IS_FEFUNCNODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEFUNCNODE)) - -/* Component Transfer funcNode class */ - -class SPFeFuncNode; -class SPFeFuncNodeClass; - -struct SPFeFuncNode : public SPObject { - NR::FilterComponentTransferType type; - std::vector tableValues; - double slope; - double intercept; - double amplitude; - double exponent; - double offset; -}; - -struct SPFeFuncNodeClass { - SPObjectClass parent_class; -}; - -GType sp_fefuncR_get_type(); -GType sp_fefuncG_get_type(); -GType sp_fefuncB_get_type(); -GType sp_fefuncA_get_type(); - -#endif /* !SP_FECOMPONENTTRANSFER_FUNCNODE_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fecomponenttransfer.cpp b/src/sp-fecomponenttransfer.cpp deleted file mode 100644 index e11f5ab3f..000000000 --- a/src/sp-fecomponenttransfer.cpp +++ /dev/null @@ -1,257 +0,0 @@ -#define __SP_FECOMPONENTTRANSFER_CPP__ - -/** \file - * SVG implementation. - * - */ -/* - * Authors: - * hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include - -#include "document.h" -#include "attributes.h" -#include "svg/svg.h" -#include "sp-fecomponenttransfer.h" -#include "sp-fecomponenttransfer-funcnode.h" -#include "xml/repr.h" -//#include "display/nr-filter-component-transfer.h" - -/* FeComponentTransfer base class */ - -static void sp_feComponentTransfer_class_init(SPFeComponentTransferClass *klass); -static void sp_feComponentTransfer_init(SPFeComponentTransfer *feComponentTransfer); - -static void sp_feComponentTransfer_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_feComponentTransfer_release(SPObject *object); -static void sp_feComponentTransfer_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_feComponentTransfer_update(SPObject *object, SPCtx *ctx, guint flags); -static void sp_feComponentTransfer_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); -static void sp_feComponentTransfer_remove_child(SPObject *object, Inkscape::XML::Node *child); -static void sp_feComponentTransfer_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref); -static Inkscape::XML::Node *sp_feComponentTransfer_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static SPFilterPrimitiveClass *feComponentTransfer_parent_class; - -GType -sp_feComponentTransfer_get_type() -{ - static GType feComponentTransfer_type = 0; - - if (!feComponentTransfer_type) { - GTypeInfo feComponentTransfer_info = { - sizeof(SPFeComponentTransferClass), - NULL, NULL, - (GClassInitFunc) sp_feComponentTransfer_class_init, - NULL, NULL, - sizeof(SPFeComponentTransfer), - 16, - (GInstanceInitFunc) sp_feComponentTransfer_init, - NULL, /* value_table */ - }; - feComponentTransfer_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeComponentTransfer", &feComponentTransfer_info, (GTypeFlags)0); - } - return feComponentTransfer_type; -} - -static void -sp_feComponentTransfer_class_init(SPFeComponentTransferClass *klass) -{ - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; - feComponentTransfer_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_feComponentTransfer_build; - sp_object_class->release = sp_feComponentTransfer_release; - sp_object_class->write = sp_feComponentTransfer_write; - sp_object_class->set = sp_feComponentTransfer_set; - sp_object_class->update = sp_feComponentTransfer_update; - sp_object_class->child_added = sp_feComponentTransfer_child_added; - sp_object_class->remove_child = sp_feComponentTransfer_remove_child; - - sp_primitive_class->build_renderer = sp_feComponentTransfer_build_renderer; -} - -static void -sp_feComponentTransfer_init(SPFeComponentTransfer */*feComponentTransfer*/) -{} - -/** - * Reads the Inkscape::XML::Node, and initializes SPFeComponentTransfer variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_feComponentTransfer_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) feComponentTransfer_parent_class)->build) { - ((SPObjectClass *) feComponentTransfer_parent_class)->build(object, document, repr); - } - - /*LOAD ATTRIBUTES FROM REPR HERE*/ - - //do we need this? - sp_document_add_resource(document, "feComponentTransfer", object); -} - -static void sp_feComponentTransfer_children_modified(SPFeComponentTransfer *sp_componenttransfer) -{ - if (sp_componenttransfer->renderer) { - SPObject* node = sp_componenttransfer->children; - for(;node;node=node->next){ - int i=4; - if (SP_IS_FEFUNCR(node)) i=0; - if (SP_IS_FEFUNCG(node)) i=1; - if (SP_IS_FEFUNCB(node)) i=2; - if (SP_IS_FEFUNCA(node)) i=3; - if (i==4) break; - sp_componenttransfer->renderer->type[i] = ((SPFeFuncNode *) node)->type; - sp_componenttransfer->renderer->tableValues[i] = ((SPFeFuncNode *) node)->tableValues; - sp_componenttransfer->renderer->slope[i] = ((SPFeFuncNode *) node)->slope; - sp_componenttransfer->renderer->intercept[i] = ((SPFeFuncNode *) node)->intercept; - sp_componenttransfer->renderer->amplitude[i] = ((SPFeFuncNode *) node)->amplitude; - sp_componenttransfer->renderer->exponent[i] = ((SPFeFuncNode *) node)->exponent; - sp_componenttransfer->renderer->offset[i] = ((SPFeFuncNode *) node)->offset; - } - } -} - -/** - * Callback for child_added event. - */ -static void -sp_feComponentTransfer_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref) -{ - g_warning("child_added"); - SPFeComponentTransfer *f = SP_FECOMPONENTTRANSFER(object); - - if (((SPObjectClass *) feComponentTransfer_parent_class)->child_added) - (* ((SPObjectClass *) feComponentTransfer_parent_class)->child_added)(object, child, ref); - - sp_feComponentTransfer_children_modified(f); - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); -} - - -/** - * Callback for remove_child event. - */ -static void -sp_feComponentTransfer_remove_child(SPObject *object, Inkscape::XML::Node *child) -{ - SPFeComponentTransfer *f = SP_FECOMPONENTTRANSFER(object); - - if (((SPObjectClass *) feComponentTransfer_parent_class)->remove_child) - (* ((SPObjectClass *) feComponentTransfer_parent_class)->remove_child)(object, child); - - sp_feComponentTransfer_children_modified(f); - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); -} - -/** - * Drops any allocated memory. - */ -static void -sp_feComponentTransfer_release(SPObject *object) -{ - if (((SPObjectClass *) feComponentTransfer_parent_class)->release) - ((SPObjectClass *) feComponentTransfer_parent_class)->release(object); -} - -/** - * Sets a specific value in the SPFeComponentTransfer. - */ -static void -sp_feComponentTransfer_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeComponentTransfer *feComponentTransfer = SP_FECOMPONENTTRANSFER(object); - (void)feComponentTransfer; - - switch(key) { - /*DEAL WITH SETTING ATTRIBUTES HERE*/ - default: - if (((SPObjectClass *) feComponentTransfer_parent_class)->set) - ((SPObjectClass *) feComponentTransfer_parent_class)->set(object, key, value); - break; - } - -} - -/** - * Receives update notifications. - */ -static void -sp_feComponentTransfer_update(SPObject *object, SPCtx *ctx, guint flags) -{ - if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | - SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { - - /* do something to trigger redisplay, updates? */ - - } - - if (((SPObjectClass *) feComponentTransfer_parent_class)->update) { - ((SPObjectClass *) feComponentTransfer_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_feComponentTransfer_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - // Inkscape-only object, not copied during an "plain SVG" dump: - if (flags & SP_OBJECT_WRITE_EXT) { - if (repr) { - // is this sane? - //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); - } else { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - } - - if (((SPObjectClass *) feComponentTransfer_parent_class)->write) { - ((SPObjectClass *) feComponentTransfer_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -static void sp_feComponentTransfer_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { - g_assert(primitive != NULL); - g_assert(filter != NULL); - - SPFeComponentTransfer *sp_componenttransfer = SP_FECOMPONENTTRANSFER(primitive); - - int primitive_n = filter->add_primitive(NR::NR_FILTER_COMPONENTTRANSFER); - NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); - NR::FilterComponentTransfer *nr_componenttransfer = dynamic_cast(nr_primitive); - g_assert(nr_componenttransfer != NULL); - - sp_componenttransfer->renderer = nr_componenttransfer; - sp_filter_primitive_renderer_common(primitive, nr_primitive); - - - sp_feComponentTransfer_children_modified(sp_componenttransfer); //do we need it?! -} - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fecomponenttransfer.h b/src/sp-fecomponenttransfer.h deleted file mode 100644 index f32512c7a..000000000 --- a/src/sp-fecomponenttransfer.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef SP_FECOMPONENTTRANSFER_H_SEEN -#define SP_FECOMPONENTTRANSFER_H_SEEN - -/** \file - * SVG implementation, see sp-feComponentTransfer.cpp. - */ -/* - * Authors: - * Hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-filter.h" -#include "sp-fecomponenttransfer-fns.h" -#include "display/nr-filter-component-transfer.h" -#include - -/* FeComponentTransfer base class */ -class SPFeComponentTransferClass; - -struct SPFeComponentTransfer : public SPFilterPrimitive { - /** COMPONENTTRANSFER ATTRIBUTES HERE */ - - NR::FilterComponentTransfer *renderer; -}; - -struct SPFeComponentTransferClass { - SPFilterPrimitiveClass parent_class; -}; - -GType sp_feComponentTransfer_get_type(); - - -#endif /* !SP_FECOMPONENTTRANSFER_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fecomposite-fns.h b/src/sp-fecomposite-fns.h deleted file mode 100644 index c79cb17bb..000000000 --- a/src/sp-fecomposite-fns.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef SP_FECOMPOSITE_FNS_H -#define SP_FECOMPOSITE_FNS_H - -/** \file - * Macros and fn declarations related to gaussian blur filter. - */ - -#include -#include - -namespace Inkscape { -namespace XML { -class Node; -} -} - -class SPFeComposite; - -#define SP_TYPE_FECOMPOSITE (sp_feComposite_get_type()) -#define SP_FECOMPOSITE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FECOMPOSITE, SPFeComposite)) -#define SP_FECOMPOSITE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FECOMPOSITE, SPFeCompositeClass)) -#define SP_IS_FECOMPOSITE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FECOMPOSITE)) -#define SP_IS_FECOMPOSITE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FECOMPOSITE)) - -GType sp_feComposite_get_type(); - -#endif /* !SP_FECOMPOSITE_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fecomposite.cpp b/src/sp-fecomposite.cpp deleted file mode 100644 index 11d101bd6..000000000 --- a/src/sp-fecomposite.cpp +++ /dev/null @@ -1,283 +0,0 @@ -#define __SP_FECOMPOSITE_CPP__ - -/** \file - * SVG implementation. - * - */ -/* - * Authors: - * hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "attributes.h" -#include "svg/svg.h" -#include "sp-fecomposite.h" -#include "helper-fns.h" -#include "xml/repr.h" -#include "display/nr-filter-composite.h" - -/* FeComposite base class */ - -static void sp_feComposite_class_init(SPFeCompositeClass *klass); -static void sp_feComposite_init(SPFeComposite *feComposite); - -static void sp_feComposite_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_feComposite_release(SPObject *object); -static void sp_feComposite_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_feComposite_update(SPObject *object, SPCtx *ctx, guint flags); -static Inkscape::XML::Node *sp_feComposite_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static void sp_feComposite_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); - -static SPFilterPrimitiveClass *feComposite_parent_class; - -GType -sp_feComposite_get_type() -{ - static GType feComposite_type = 0; - - if (!feComposite_type) { - GTypeInfo feComposite_info = { - sizeof(SPFeCompositeClass), - NULL, NULL, - (GClassInitFunc) sp_feComposite_class_init, - NULL, NULL, - sizeof(SPFeComposite), - 16, - (GInstanceInitFunc) sp_feComposite_init, - NULL, /* value_table */ - }; - feComposite_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeComposite", &feComposite_info, (GTypeFlags)0); - } - return feComposite_type; -} - -static void -sp_feComposite_class_init(SPFeCompositeClass *klass) -{ - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; - - feComposite_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_feComposite_build; - sp_object_class->release = sp_feComposite_release; - sp_object_class->write = sp_feComposite_write; - sp_object_class->set = sp_feComposite_set; - sp_object_class->update = sp_feComposite_update; - - sp_primitive_class->build_renderer = sp_feComposite_build_renderer; -} - -static void -sp_feComposite_init(SPFeComposite *feComposite) -{ - feComposite->composite_operator = COMPOSITE_DEFAULT; - feComposite->k1 = 0; - feComposite->k2 = 0; - feComposite->k3 = 0; - feComposite->k4 = 0; - feComposite->in2 = NR::NR_FILTER_SLOT_NOT_SET; -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPFeComposite variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_feComposite_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) feComposite_parent_class)->build) { - ((SPObjectClass *) feComposite_parent_class)->build(object, document, repr); - } - - SPFeComposite *composite = SP_FECOMPOSITE(object); - - sp_object_read_attr(object, "operator"); - if (composite->composite_operator == COMPOSITE_ARITHMETIC) { - sp_object_read_attr(object, "k1"); - sp_object_read_attr(object, "k2"); - sp_object_read_attr(object, "k3"); - sp_object_read_attr(object, "k4"); - } - sp_object_read_attr(object, "in2"); -} - -/** - * Drops any allocated memory. - */ -static void -sp_feComposite_release(SPObject *object) -{ - if (((SPObjectClass *) feComposite_parent_class)->release) - ((SPObjectClass *) feComposite_parent_class)->release(object); -} - -static FeCompositeOperator -sp_feComposite_read_operator(gchar const *value) { - if (!value) return COMPOSITE_DEFAULT; - - if (strcmp(value, "over") == 0) return COMPOSITE_OVER; - else if (strcmp(value, "in") == 0) return COMPOSITE_IN; - else if (strcmp(value, "out") == 0) return COMPOSITE_OUT; - else if (strcmp(value, "atop") == 0) return COMPOSITE_ATOP; - else if (strcmp(value, "xor") == 0) return COMPOSITE_XOR; - else if (strcmp(value, "arithmetic") == 0) return COMPOSITE_ARITHMETIC; - return COMPOSITE_DEFAULT; -} - -/** - * Sets a specific value in the SPFeComposite. - */ -static void -sp_feComposite_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeComposite *feComposite = SP_FECOMPOSITE(object); - (void)feComposite; - - int input; - FeCompositeOperator op; - double k_n; - switch(key) { - /*DEAL WITH SETTING ATTRIBUTES HERE*/ - case SP_ATTR_OPERATOR: - op = sp_feComposite_read_operator(value); - if (op != feComposite->composite_operator) { - feComposite->composite_operator = op; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - - case SP_ATTR_K1: - k_n = helperfns_read_number(value); - if (k_n != feComposite->k1) { - feComposite->k1 = k_n; - if (feComposite->composite_operator == COMPOSITE_ARITHMETIC) - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - - case SP_ATTR_K2: - k_n = helperfns_read_number(value); - if (k_n != feComposite->k2) { - feComposite->k2 = k_n; - if (feComposite->composite_operator == COMPOSITE_ARITHMETIC) - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - - case SP_ATTR_K3: - k_n = helperfns_read_number(value); - if (k_n != feComposite->k3) { - feComposite->k3 = k_n; - if (feComposite->composite_operator == COMPOSITE_ARITHMETIC) - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - - case SP_ATTR_K4: - k_n = helperfns_read_number(value); - if (k_n != feComposite->k4) { - feComposite->k4 = k_n; - if (feComposite->composite_operator == COMPOSITE_ARITHMETIC) - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - - case SP_ATTR_IN2: - input = sp_filter_primitive_read_in(feComposite, value); - if (input != feComposite->in2) { - feComposite->in2 = input; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - - default: - if (((SPObjectClass *) feComposite_parent_class)->set) - ((SPObjectClass *) feComposite_parent_class)->set(object, key, value); - break; - } - -} - -/** - * Receives update notifications. - */ -static void -sp_feComposite_update(SPObject *object, SPCtx *ctx, guint flags) -{ - if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | - SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { - - /* do something to trigger redisplay, updates? */ - - } - - if (((SPObjectClass *) feComposite_parent_class)->update) { - ((SPObjectClass *) feComposite_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_feComposite_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - // Inkscape-only object, not copied during an "plain SVG" dump: - if (flags & SP_OBJECT_WRITE_EXT) { - if (repr) { - // is this sane? - //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); - } else { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - } - - if (((SPObjectClass *) feComposite_parent_class)->write) { - ((SPObjectClass *) feComposite_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -static void sp_feComposite_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { - g_assert(primitive != NULL); - g_assert(filter != NULL); - - SPFeComposite *sp_composite = SP_FECOMPOSITE(primitive); - - int primitive_n = filter->add_primitive(NR::NR_FILTER_COMPOSITE); - NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); - NR::FilterComposite *nr_composite = dynamic_cast(nr_primitive); - g_assert(nr_composite != NULL); - - sp_filter_primitive_renderer_common(primitive, nr_primitive); - - nr_composite->set_operator(sp_composite->composite_operator); - nr_composite->set_input(1, sp_composite->in2); - if (sp_composite->composite_operator == COMPOSITE_ARITHMETIC) { - nr_composite->set_arithmetic(sp_composite->k1, sp_composite->k2, - sp_composite->k3, sp_composite->k4); - } -} - - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fecomposite.h b/src/sp-fecomposite.h deleted file mode 100644 index 280eae145..000000000 --- a/src/sp-fecomposite.h +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef SP_FECOMPOSITE_H_SEEN -#define SP_FECOMPOSITE_H_SEEN - -/** \file - * SVG implementation, see sp-feComposite.cpp. - */ -/* - * Authors: - * Hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-filter.h" -#include "sp-fecomposite-fns.h" - -enum FeCompositeOperator { - // Default value is 'over', but let's distinquish specifying the - // default and implicitely using the default - COMPOSITE_DEFAULT, - COMPOSITE_OVER, - COMPOSITE_IN, - COMPOSITE_OUT, - COMPOSITE_ATOP, - COMPOSITE_XOR, - COMPOSITE_ARITHMETIC, - COMPOSITE_ENDOPERATOR -}; - -/* FeComposite base class */ -class SPFeCompositeClass; - -struct SPFeComposite : public SPFilterPrimitive { - FeCompositeOperator composite_operator; - double k1, k2, k3, k4; - int in2; -}; - -struct SPFeCompositeClass { - SPFilterPrimitiveClass parent_class; -}; - -GType sp_feComposite_get_type(); - - -#endif /* !SP_FECOMPOSITE_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-feconvolvematrix-fns.h b/src/sp-feconvolvematrix-fns.h deleted file mode 100644 index 76baf7f41..000000000 --- a/src/sp-feconvolvematrix-fns.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef SP_FECONVOLVEMATRIX_FNS_H -#define SP_FECONVOLVEMATRIX_FNS_H - -/** \file - * Macros and fn declarations related to gaussian blur filter. - */ - -#include -#include - -namespace Inkscape { -namespace XML { -class Node; -} -} - -class SPFeConvolveMatrix; - -#define SP_TYPE_FECONVOLVEMATRIX (sp_feConvolveMatrix_get_type()) -#define SP_FECONVOLVEMATRIX(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FECONVOLVEMATRIX, SPFeConvolveMatrix)) -#define SP_FECONVOLVEMATRIX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FECONVOLVEMATRIX, SPFeConvolveMatrixClass)) -#define SP_IS_FECONVOLVEMATRIX(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FECONVOLVEMATRIX)) -#define SP_IS_FECONVOLVEMATRIX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FECONVOLVEMATRIX)) - -GType sp_feConvolveMatrix_get_type(); - -#endif /* !SP_FECONVOLVEMATRIX_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-feconvolvematrix.cpp b/src/sp-feconvolvematrix.cpp deleted file mode 100644 index 816c793e1..000000000 --- a/src/sp-feconvolvematrix.cpp +++ /dev/null @@ -1,338 +0,0 @@ -#define __SP_FECONVOLVEMATRIX_CPP__ - -/** \file - * SVG implementation. - * - */ -/* - * Authors: - * Felipe Corrêa da Silva Sanches - * hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include - -#include -#include "attributes.h" -#include "svg/svg.h" -#include "sp-feconvolvematrix.h" -#include "helper-fns.h" -#include "xml/repr.h" -#include "display/nr-filter-convolve-matrix.h" -#include - -/* FeConvolveMatrix base class */ - -static void sp_feConvolveMatrix_class_init(SPFeConvolveMatrixClass *klass); -static void sp_feConvolveMatrix_init(SPFeConvolveMatrix *feConvolveMatrix); - -static void sp_feConvolveMatrix_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_feConvolveMatrix_release(SPObject *object); -static void sp_feConvolveMatrix_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_feConvolveMatrix_update(SPObject *object, SPCtx *ctx, guint flags); -static Inkscape::XML::Node *sp_feConvolveMatrix_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static void sp_feConvolveMatrix_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); - -static SPFilterPrimitiveClass *feConvolveMatrix_parent_class; - -GType -sp_feConvolveMatrix_get_type() -{ - static GType feConvolveMatrix_type = 0; - - if (!feConvolveMatrix_type) { - GTypeInfo feConvolveMatrix_info = { - sizeof(SPFeConvolveMatrixClass), - NULL, NULL, - (GClassInitFunc) sp_feConvolveMatrix_class_init, - NULL, NULL, - sizeof(SPFeConvolveMatrix), - 16, - (GInstanceInitFunc) sp_feConvolveMatrix_init, - NULL, /* value_table */ - }; - feConvolveMatrix_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeConvolveMatrix", &feConvolveMatrix_info, (GTypeFlags)0); - } - return feConvolveMatrix_type; -} - -static void -sp_feConvolveMatrix_class_init(SPFeConvolveMatrixClass *klass) -{ - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; - - feConvolveMatrix_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_feConvolveMatrix_build; - sp_object_class->release = sp_feConvolveMatrix_release; - sp_object_class->write = sp_feConvolveMatrix_write; - sp_object_class->set = sp_feConvolveMatrix_set; - sp_object_class->update = sp_feConvolveMatrix_update; - - sp_primitive_class->build_renderer = sp_feConvolveMatrix_build_renderer; -} - -static void -sp_feConvolveMatrix_init(SPFeConvolveMatrix *feConvolveMatrix) -{ - //Setting default values: - feConvolveMatrix->order.set("3 3"); - feConvolveMatrix->targetX = 1; - feConvolveMatrix->targetY = 1; - feConvolveMatrix->edgeMode = NR::CONVOLVEMATRIX_EDGEMODE_DUPLICATE; - feConvolveMatrix->preserveAlpha = false; - - //some helper variables: - feConvolveMatrix->targetXIsSet = false; - feConvolveMatrix->targetYIsSet = false; - feConvolveMatrix->kernelMatrixIsSet = false; -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPFeConvolveMatrix variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_feConvolveMatrix_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) feConvolveMatrix_parent_class)->build) { - ((SPObjectClass *) feConvolveMatrix_parent_class)->build(object, document, repr); - } - - /*LOAD ATTRIBUTES FROM REPR HERE*/ - sp_object_read_attr(object, "order"); - sp_object_read_attr(object, "kernelMatrix"); - sp_object_read_attr(object, "divisor"); - sp_object_read_attr(object, "bias"); - sp_object_read_attr(object, "targetX"); - sp_object_read_attr(object, "targetY"); - sp_object_read_attr(object, "edgeMode"); - sp_object_read_attr(object, "kernelUnitLength"); - sp_object_read_attr(object, "preserveAlpha"); -} - -/** - * Drops any allocated memory. - */ -static void -sp_feConvolveMatrix_release(SPObject *object) -{ - if (((SPObjectClass *) feConvolveMatrix_parent_class)->release) - ((SPObjectClass *) feConvolveMatrix_parent_class)->release(object); -} - -static NR::FilterConvolveMatrixEdgeMode sp_feConvolveMatrix_read_edgeMode(gchar const *value){ - if (!value) return NR::CONVOLVEMATRIX_EDGEMODE_DUPLICATE; //duplicate is default - switch(value[0]){ - case 'd': - if (strncmp(value, "duplicate", 9) == 0) return NR::CONVOLVEMATRIX_EDGEMODE_DUPLICATE; - break; - case 'w': - if (strncmp(value, "wrap", 4) == 0) return NR::CONVOLVEMATRIX_EDGEMODE_WRAP; - break; - case 'n': - if (strncmp(value, "none", 4) == 0) return NR::CONVOLVEMATRIX_EDGEMODE_NONE; - break; - } - return NR::CONVOLVEMATRIX_EDGEMODE_DUPLICATE; //duplicate is default -} - -/** - * Sets a specific value in the SPFeConvolveMatrix. - */ -static void -sp_feConvolveMatrix_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeConvolveMatrix *feConvolveMatrix = SP_FECONVOLVEMATRIX(object); - (void)feConvolveMatrix; - double read_num; - int read_int; - bool read_bool; - NR::FilterConvolveMatrixEdgeMode read_mode; - - switch(key) { - /*DEAL WITH SETTING ATTRIBUTES HERE*/ - case SP_ATTR_ORDER: - feConvolveMatrix->order.set(value); - //From SVG spec: If is not provided, it defaults to . - if (feConvolveMatrix->order.optNumIsSet() == false) - feConvolveMatrix->order.setOptNumber(feConvolveMatrix->order.getNumber()); - if (feConvolveMatrix->targetXIsSet == false) feConvolveMatrix->targetX = (int) floor(feConvolveMatrix->order.getNumber()/2); - if (feConvolveMatrix->targetYIsSet == false) feConvolveMatrix->targetY = (int) floor(feConvolveMatrix->order.getOptNumber()/2); - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - case SP_ATTR_KERNELMATRIX: - if (value){ - feConvolveMatrix->kernelMatrixIsSet = true; - feConvolveMatrix->kernelMatrix = helperfns_read_vector(value, (int) (feConvolveMatrix->order.getNumber() * feConvolveMatrix->order.getOptNumber())); - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } else { - g_warning("For feConvolveMatrix you MUST pass a kernelMatrix parameter!"); - } - break; - case SP_ATTR_DIVISOR: - if (!value){ - read_num = 1; - } else { - read_num = helperfns_read_number(value); - if (read_num == 0) { - if (feConvolveMatrix->kernelMatrixIsSet){ - g_warning("You shouldn't pass a divisor value equal to 0! Assuming the sum of all values in kernelMatrix as the default value."); - for (unsigned int i = 0; i< feConvolveMatrix->kernelMatrix.size(); i++) - read_num += feConvolveMatrix->kernelMatrix[i]; - } else { - g_warning("You shouldn't pass a divisor value equal to 0! Assuming 1 as the default value."); - read_num = 1; - } - } - } - if (read_num != feConvolveMatrix->divisor){ - feConvolveMatrix->divisor = read_num; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_BIAS: - read_num = 0; - if (value) read_num = helperfns_read_number(value); - if (read_num != feConvolveMatrix->bias){ - feConvolveMatrix->bias = read_num; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_TARGETX: - read_int = (int) helperfns_read_number(value); - if (read_int < 0 || read_int > feConvolveMatrix->order.getNumber()){ - g_warning("targetX must be a value between 0 and orderX! Assuming orderX as default value."); - read_int = (int) feConvolveMatrix->order.getNumber(); - } - feConvolveMatrix->targetXIsSet = true; - if (read_int != feConvolveMatrix->targetX){ - feConvolveMatrix->targetX = read_int; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_TARGETY: - read_int = (int) helperfns_read_number(value); - if (read_int < 0 || read_int > feConvolveMatrix->order.getOptNumber()){ - g_warning("targetY must be a value between 0 and orderY! Assuming orderY as default value."); - read_int = (int) feConvolveMatrix->order.getOptNumber(); - } - feConvolveMatrix->targetYIsSet = true; - if (read_int != feConvolveMatrix->targetY){ - feConvolveMatrix->targetY = read_int; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_EDGEMODE: - read_mode = sp_feConvolveMatrix_read_edgeMode(value); - if (read_mode != feConvolveMatrix->edgeMode){ - feConvolveMatrix->edgeMode = read_mode; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_KERNELUNITLENGTH: - feConvolveMatrix->kernelUnitLength.set(value); - //From SVG spec: If the value is not specified, it defaults to the same value as . - if (feConvolveMatrix->kernelUnitLength.optNumIsSet() == false) - feConvolveMatrix->kernelUnitLength.setOptNumber(feConvolveMatrix->kernelUnitLength.getNumber()); - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - case SP_ATTR_PRESERVEALPHA: - read_bool = helperfns_read_bool(value, false); - if (read_bool != feConvolveMatrix->preserveAlpha){ - feConvolveMatrix->preserveAlpha = read_bool; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - default: - if (((SPObjectClass *) feConvolveMatrix_parent_class)->set) - ((SPObjectClass *) feConvolveMatrix_parent_class)->set(object, key, value); - break; - } - -} - -/** - * Receives update notifications. - */ -static void -sp_feConvolveMatrix_update(SPObject *object, SPCtx *ctx, guint flags) -{ - if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | - SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { - - /* do something to trigger redisplay, updates? */ - - } - - if (((SPObjectClass *) feConvolveMatrix_parent_class)->update) { - ((SPObjectClass *) feConvolveMatrix_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_feConvolveMatrix_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - // Inkscape-only object, not copied during an "plain SVG" dump: - if (flags & SP_OBJECT_WRITE_EXT) { - if (repr) { - // is this sane? - //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); - } else { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - } - - if (((SPObjectClass *) feConvolveMatrix_parent_class)->write) { - ((SPObjectClass *) feConvolveMatrix_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -static void sp_feConvolveMatrix_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { - g_assert(primitive != NULL); - g_assert(filter != NULL); - - SPFeConvolveMatrix *sp_convolve = SP_FECONVOLVEMATRIX(primitive); - - int primitive_n = filter->add_primitive(NR::NR_FILTER_CONVOLVEMATRIX); - NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); - NR::FilterConvolveMatrix *nr_convolve = dynamic_cast(nr_primitive); - g_assert(nr_convolve != NULL); - - sp_filter_primitive_renderer_common(primitive, nr_primitive); - - nr_convolve->set_targetX(sp_convolve->targetX); - nr_convolve->set_targetY(sp_convolve->targetY); - nr_convolve->set_orderX( (int)sp_convolve->order.getNumber() ); - nr_convolve->set_orderY( (int)sp_convolve->order.getOptNumber() ); - nr_convolve->set_kernelMatrix(sp_convolve->kernelMatrix); - nr_convolve->set_divisor(sp_convolve->divisor); - nr_convolve->set_bias(sp_convolve->bias); - nr_convolve->set_preserveAlpha(sp_convolve->preserveAlpha); - -} -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-feconvolvematrix.h b/src/sp-feconvolvematrix.h deleted file mode 100644 index 2cdeee2e8..000000000 --- a/src/sp-feconvolvematrix.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef SP_FECONVOLVEMATRIX_H_SEEN -#define SP_FECONVOLVEMATRIX_H_SEEN - -/** \file - * SVG implementation, see sp-feConvolveMatrix.cpp. - */ -/* - * Authors: - * Felipe Corrêa da Silva Sanches - * Hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-filter.h" -#include "sp-feconvolvematrix-fns.h" -#include "number-opt-number.h" -#include "display/nr-filter-convolve-matrix.h" -#include - -/* FeConvolveMatrix base class */ -class SPFeConvolveMatrixClass; - -struct SPFeConvolveMatrix : public SPFilterPrimitive { - /* CONVOLVEMATRIX ATTRIBUTES */ - NumberOptNumber order; - std::vector kernelMatrix; - double divisor, bias; - int targetX, targetY; - NR::FilterConvolveMatrixEdgeMode edgeMode; - NumberOptNumber kernelUnitLength; - bool preserveAlpha; - //some helper variables: - bool targetXIsSet; - bool targetYIsSet; - bool divisorIsSet; - bool kernelMatrixIsSet; -}; - -struct SPFeConvolveMatrixClass { - SPFilterPrimitiveClass parent_class; -}; - -GType sp_feConvolveMatrix_get_type(); - - -#endif /* !SP_FECONVOLVEMATRIX_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fediffuselighting-fns.h b/src/sp-fediffuselighting-fns.h deleted file mode 100644 index b91ed80f6..000000000 --- a/src/sp-fediffuselighting-fns.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef SP_FEDIFFUSELIGHTING_FNS_H -#define SP_FEDIFFUSELIGHTING_FNS_H - -/** \file - * Macros and fn declarations related to gaussian blur filter. - */ - -#include -#include - -namespace Inkscape { -namespace XML { -class Node; -} -} - -class SPFeDiffuseLighting; - -#define SP_TYPE_FEDIFFUSELIGHTING (sp_feDiffuseLighting_get_type()) -#define SP_FEDIFFUSELIGHTING(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEDIFFUSELIGHTING, SPFeDiffuseLighting)) -#define SP_FEDIFFUSELIGHTING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEDIFFUSELIGHTING, SPFeDiffuseLightingClass)) -#define SP_IS_FEDIFFUSELIGHTING(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEDIFFUSELIGHTING)) -#define SP_IS_FEDIFFUSELIGHTING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEDIFFUSELIGHTING)) - -GType sp_feDiffuseLighting_get_type(); - -#endif /* !SP_FEDIFFUSELIGHTING_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fediffuselighting.cpp b/src/sp-fediffuselighting.cpp deleted file mode 100644 index 96dee569b..000000000 --- a/src/sp-fediffuselighting.cpp +++ /dev/null @@ -1,386 +0,0 @@ -#define __SP_FEDIFFUSELIGHTING_CPP__ - -/** \file - * SVG implementation. - * - */ -/* - * Authors: - * hugo Rodrigues - * Jean-Rene Reinhard - * - * Copyright (C) 2006 Hugo Rodrigues - * 2007 authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "attributes.h" -#include "svg/svg.h" -#include "sp-object.h" -#include "svg/svg-color.h" -#include "sp-fediffuselighting.h" -#include "xml/repr.h" -#include "display/nr-filter-diffuselighting.h" - -/* FeDiffuseLighting base class */ - -static void sp_feDiffuseLighting_class_init(SPFeDiffuseLightingClass *klass); -static void sp_feDiffuseLighting_init(SPFeDiffuseLighting *feDiffuseLighting); - -static void sp_feDiffuseLighting_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_feDiffuseLighting_release(SPObject *object); -static void sp_feDiffuseLighting_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_feDiffuseLighting_update(SPObject *object, SPCtx *ctx, guint flags); -//we assume that svg:feDiffuseLighting can have any number of children -//only the first one is considered as the light source of the filter -//TODO is that right? -//if not modify child_added and remove_child to raise errors -static void sp_feDiffuseLighting_child_added(SPObject *object, - Inkscape::XML::Node *child, - Inkscape::XML::Node *ref); -static void sp_feDiffuseLighting_remove_child(SPObject *object, Inkscape::XML::Node *child); -static void sp_feDiffuseLighting_order_changed(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref); -static Inkscape::XML::Node *sp_feDiffuseLighting_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static void sp_feDiffuseLighting_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); -static void sp_feDiffuseLighting_children_modified(SPFeDiffuseLighting *sp_diffuselighting); - -static SPFilterPrimitiveClass *feDiffuseLighting_parent_class; - -GType -sp_feDiffuseLighting_get_type() -{ - static GType feDiffuseLighting_type = 0; - - if (!feDiffuseLighting_type) { - GTypeInfo feDiffuseLighting_info = { - sizeof(SPFeDiffuseLightingClass), - NULL, NULL, - (GClassInitFunc) sp_feDiffuseLighting_class_init, - NULL, NULL, - sizeof(SPFeDiffuseLighting), - 16, - (GInstanceInitFunc) sp_feDiffuseLighting_init, - NULL, /* value_table */ - }; - feDiffuseLighting_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeDiffuseLighting", &feDiffuseLighting_info, (GTypeFlags)0); - } - return feDiffuseLighting_type; -} - -static void -sp_feDiffuseLighting_class_init(SPFeDiffuseLightingClass *klass) -{ - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; - feDiffuseLighting_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_feDiffuseLighting_build; - sp_object_class->release = sp_feDiffuseLighting_release; - sp_object_class->write = sp_feDiffuseLighting_write; - sp_object_class->set = sp_feDiffuseLighting_set; - sp_object_class->update = sp_feDiffuseLighting_update; - sp_object_class->child_added = sp_feDiffuseLighting_child_added; - sp_object_class->remove_child = sp_feDiffuseLighting_remove_child; - sp_object_class->order_changed = sp_feDiffuseLighting_order_changed; - - sp_primitive_class->build_renderer = sp_feDiffuseLighting_build_renderer; -} - -static void -sp_feDiffuseLighting_init(SPFeDiffuseLighting *feDiffuseLighting) -{ - feDiffuseLighting->surfaceScale = 1; - feDiffuseLighting->diffuseConstant = 1; - feDiffuseLighting->lighting_color = 0xffffffff; - //TODO kernelUnit - feDiffuseLighting->renderer = NULL; - - feDiffuseLighting->surfaceScale_set = FALSE; - feDiffuseLighting->diffuseConstant_set = FALSE; - feDiffuseLighting->lighting_color_set = FALSE; -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPFeDiffuseLighting variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_feDiffuseLighting_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) feDiffuseLighting_parent_class)->build) { - ((SPObjectClass *) feDiffuseLighting_parent_class)->build(object, document, repr); - } - - /*LOAD ATTRIBUTES FROM REPR HERE*/ - sp_object_read_attr(object, "surfaceScale"); - sp_object_read_attr(object, "diffuseConstant"); - sp_object_read_attr(object, "kernelUnitLength"); - sp_object_read_attr(object, "lighting-color"); - -} - -/** - * Drops any allocated memory. - */ -static void -sp_feDiffuseLighting_release(SPObject *object) -{ - if (((SPObjectClass *) feDiffuseLighting_parent_class)->release) - ((SPObjectClass *) feDiffuseLighting_parent_class)->release(object); -} - -/** - * Sets a specific value in the SPFeDiffuseLighting. - */ -static void -sp_feDiffuseLighting_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeDiffuseLighting *feDiffuseLighting = SP_FEDIFFUSELIGHTING(object); - gchar const *cend_ptr = NULL; - gchar *end_ptr = NULL; - - switch(key) { - /*DEAL WITH SETTING ATTRIBUTES HERE*/ -//TODO test forbidden values - case SP_ATTR_SURFACESCALE: - end_ptr = NULL; - if (value) { - feDiffuseLighting->surfaceScale = g_ascii_strtod(value, &end_ptr); - if (end_ptr) { - feDiffuseLighting->surfaceScale_set = TRUE; - } - } - if (!value || !end_ptr) { - feDiffuseLighting->surfaceScale = 1; - feDiffuseLighting->surfaceScale_set = FALSE; - } - if (feDiffuseLighting->renderer) { - feDiffuseLighting->renderer->surfaceScale = feDiffuseLighting->surfaceScale; - } - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - case SP_ATTR_DIFFUSECONSTANT: - end_ptr = NULL; - if (value) { - feDiffuseLighting->diffuseConstant = g_ascii_strtod(value, &end_ptr); - if (end_ptr && feDiffuseLighting->diffuseConstant >= 0) { - feDiffuseLighting->diffuseConstant_set = TRUE; - } else { - end_ptr = NULL; - g_warning("feDiffuseLighting: diffuseConstant should be a positive number ... defaulting to 1"); - } - } - if (!value || !end_ptr) { - feDiffuseLighting->diffuseConstant = 1; - feDiffuseLighting->diffuseConstant_set = FALSE; - } - if (feDiffuseLighting->renderer) { - feDiffuseLighting->renderer->diffuseConstant = feDiffuseLighting->diffuseConstant; - } - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - case SP_ATTR_KERNELUNITLENGTH: - //TODO kernelUnit - //feDiffuseLighting->kernelUnitLength.set(value); - /*TODOif (feDiffuseLighting->renderer) { - feDiffuseLighting->renderer->surfaceScale = feDiffuseLighting->renderer; - } - */ - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - case SP_PROP_LIGHTING_COLOR: - cend_ptr = NULL; - feDiffuseLighting->lighting_color = sp_svg_read_color(value, &cend_ptr, 0xffffffff); - //if a value was read - if (cend_ptr) { - feDiffuseLighting->lighting_color_set = TRUE; - } else { - //lighting_color already contains the default value - feDiffuseLighting->lighting_color_set = FALSE; - } - if (feDiffuseLighting->renderer) { - feDiffuseLighting->renderer->lighting_color = feDiffuseLighting->lighting_color; - } - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - default: - if (((SPObjectClass *) feDiffuseLighting_parent_class)->set) - ((SPObjectClass *) feDiffuseLighting_parent_class)->set(object, key, value); - break; - } - -} - -/** - * Receives update notifications. - */ -static void -sp_feDiffuseLighting_update(SPObject *object, SPCtx *ctx, guint flags) -{ - if (flags & (SP_OBJECT_MODIFIED_FLAG)) { - sp_object_read_attr(object, "surfaceScale"); - sp_object_read_attr(object, "diffuseConstant"); - sp_object_read_attr(object, "kernelUnit"); - sp_object_read_attr(object, "lighting-color"); - } - - if (((SPObjectClass *) feDiffuseLighting_parent_class)->update) { - ((SPObjectClass *) feDiffuseLighting_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_feDiffuseLighting_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - SPFeDiffuseLighting *fediffuselighting = SP_FEDIFFUSELIGHTING(object); - - // Inkscape-only object, not copied during an "plain SVG" dump: - if (flags & SP_OBJECT_WRITE_EXT) { - if (repr) { - // is this sane? - //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); - } else { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - } - - if (fediffuselighting->surfaceScale_set) - sp_repr_set_css_double(repr, "surfaceScale", fediffuselighting->surfaceScale); - else - repr->setAttribute("surfaceScale", NULL); - if (fediffuselighting->diffuseConstant_set) - sp_repr_set_css_double(repr, "diffuseConstant", fediffuselighting->diffuseConstant); - else - repr->setAttribute("diffuseConstant", NULL); - /*TODO kernelUnits */ - if (fediffuselighting->lighting_color_set) { - gchar c[64]; - sp_svg_write_color(c, sizeof(c), fediffuselighting->lighting_color); - repr->setAttribute("lighting-color", c); - } else - repr->setAttribute("lighting-color", NULL); - - if (((SPObjectClass *) feDiffuseLighting_parent_class)->write) { - ((SPObjectClass *) feDiffuseLighting_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -/** - * Callback for child_added event. - */ -static void -sp_feDiffuseLighting_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref) -{ - SPFeDiffuseLighting *f = SP_FEDIFFUSELIGHTING(object); - - if (((SPObjectClass *) feDiffuseLighting_parent_class)->child_added) - (* ((SPObjectClass *) feDiffuseLighting_parent_class)->child_added)(object, child, ref); - - sp_feDiffuseLighting_children_modified(f); - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); -} - - -/** - * Callback for remove_child event. - */ -static void -sp_feDiffuseLighting_remove_child(SPObject *object, Inkscape::XML::Node *child) -{ - SPFeDiffuseLighting *f = SP_FEDIFFUSELIGHTING(object); - - if (((SPObjectClass *) feDiffuseLighting_parent_class)->remove_child) - (* ((SPObjectClass *) feDiffuseLighting_parent_class)->remove_child)(object, child); - - sp_feDiffuseLighting_children_modified(f); - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); -} - -static void -sp_feDiffuseLighting_order_changed (SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref) -{ - SPFeDiffuseLighting *f = SP_FEDIFFUSELIGHTING(object); - if (((SPObjectClass *) (feDiffuseLighting_parent_class))->order_changed) - (* ((SPObjectClass *) (feDiffuseLighting_parent_class))->order_changed) (object, child, old_ref, new_ref); - - sp_feDiffuseLighting_children_modified(f); - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); -} - -static void sp_feDiffuseLighting_children_modified(SPFeDiffuseLighting *sp_diffuselighting) -{ - if (sp_diffuselighting->renderer) { - sp_diffuselighting->renderer->light_type = NR::NO_LIGHT; - if (SP_IS_FEDISTANTLIGHT(sp_diffuselighting->children)) { - sp_diffuselighting->renderer->light_type = NR::DISTANT_LIGHT; - sp_diffuselighting->renderer->light.distant = SP_FEDISTANTLIGHT(sp_diffuselighting->children); - } - if (SP_IS_FEPOINTLIGHT(sp_diffuselighting->children)) { - sp_diffuselighting->renderer->light_type = NR::POINT_LIGHT; - sp_diffuselighting->renderer->light.point = SP_FEPOINTLIGHT(sp_diffuselighting->children); - } - if (SP_IS_FESPOTLIGHT(sp_diffuselighting->children)) { - sp_diffuselighting->renderer->light_type = NR::SPOT_LIGHT; - sp_diffuselighting->renderer->light.spot = SP_FESPOTLIGHT(sp_diffuselighting->children); - } - } -} - -static void sp_feDiffuseLighting_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { - g_assert(primitive != NULL); - g_assert(filter != NULL); - - SPFeDiffuseLighting *sp_diffuselighting = SP_FEDIFFUSELIGHTING(primitive); - - int primitive_n = filter->add_primitive(NR::NR_FILTER_DIFFUSELIGHTING); - NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); - NR::FilterDiffuseLighting *nr_diffuselighting = dynamic_cast(nr_primitive); - g_assert(nr_diffuselighting != NULL); - - sp_diffuselighting->renderer = nr_diffuselighting; - sp_filter_primitive_renderer_common(primitive, nr_primitive); - - nr_diffuselighting->diffuseConstant = sp_diffuselighting->diffuseConstant; - nr_diffuselighting->surfaceScale = sp_diffuselighting->surfaceScale; - nr_diffuselighting->lighting_color = sp_diffuselighting->lighting_color; - //We assume there is at most one child - nr_diffuselighting->light_type = NR::NO_LIGHT; - if (SP_IS_FEDISTANTLIGHT(primitive->children)) { - nr_diffuselighting->light_type = NR::DISTANT_LIGHT; - nr_diffuselighting->light.distant = SP_FEDISTANTLIGHT(primitive->children); - } - if (SP_IS_FEPOINTLIGHT(primitive->children)) { - nr_diffuselighting->light_type = NR::POINT_LIGHT; - nr_diffuselighting->light.point = SP_FEPOINTLIGHT(primitive->children); - } - if (SP_IS_FESPOTLIGHT(primitive->children)) { - nr_diffuselighting->light_type = NR::SPOT_LIGHT; - nr_diffuselighting->light.spot = SP_FESPOTLIGHT(primitive->children); - } - - //nr_offset->set_dx(sp_offset->dx); - //nr_offset->set_dy(sp_offset->dy); -} - - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fediffuselighting.h b/src/sp-fediffuselighting.h deleted file mode 100644 index 7d5bca8a3..000000000 --- a/src/sp-fediffuselighting.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef SP_FEDIFFUSELIGHTING_H_SEEN -#define SP_FEDIFFUSELIGHTING_H_SEEN - -/** \file - * SVG implementation, see sp-feDiffuseLighting.cpp. - */ -/* - * Authors: - * Hugo Rodrigues - * Jean-Rene Reinhard - * - * Copyright (C) 2006 Hugo Rodrigues - * 2007 authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-filter.h" -#include "sp-fediffuselighting-fns.h" - -namespace NR { -class FilterDiffuseLighting; -} - -/* FeDiffuseLighting base class */ -class SPFeDiffuseLightingClass; - -struct SPFeDiffuseLighting : public SPFilterPrimitive { - /** DIFFUSELIGHTING ATTRIBUTES HERE */ - /** surfaceScale attribute */ - gfloat surfaceScale; - guint surfaceScale_set : 1; - /** diffuseConstant attribute */ - gfloat diffuseConstant; - guint diffuseConstant_set : 1; - /** kernelUnitLength attribute */ - NumberOptNumber kernelUnitLength; - /** lighting-color property */ - guint32 lighting_color; - guint lighting_color_set : 1; - /** pointer to the associated renderer */ - NR::FilterDiffuseLighting *renderer; -}; - -struct SPFeDiffuseLightingClass { - SPFilterPrimitiveClass parent_class; -}; - -GType sp_feDiffuseLighting_get_type(); - - -#endif /* !SP_FEDIFFUSELIGHTING_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fedisplacementmap-fns.h b/src/sp-fedisplacementmap-fns.h deleted file mode 100644 index 6d92c6b78..000000000 --- a/src/sp-fedisplacementmap-fns.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef SP_FEDISPLACEMENTMAP_FNS_H -#define SP_FEDISPLACEMENTMAP_FNS_H - -/** \file - * Macros and fn declarations related to gaussian blur filter. - */ - -#include -#include - -namespace Inkscape { -namespace XML { -class Node; -} -} - -class SPFeDisplacementMap; - -#define SP_TYPE_FEDISPLACEMENTMAP (sp_feDisplacementMap_get_type()) -#define SP_FEDISPLACEMENTMAP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEDISPLACEMENTMAP, SPFeDisplacementMap)) -#define SP_FEDISPLACEMENTMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEDISPLACEMENTMAP, SPFeDisplacementMapClass)) -#define SP_IS_FEDISPLACEMENTMAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEDISPLACEMENTMAP)) -#define SP_IS_FEDISPLACEMENTMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEDISPLACEMENTMAP)) - -GType sp_feDisplacementMap_get_type(); - -#endif /* !SP_FEDISPLACEMENTMAP_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fedisplacementmap.cpp b/src/sp-fedisplacementmap.cpp deleted file mode 100644 index a30dd2f9b..000000000 --- a/src/sp-fedisplacementmap.cpp +++ /dev/null @@ -1,259 +0,0 @@ -#define __SP_FEDISPLACEMENTMAP_CPP__ - -/** \file - * SVG implementation. - * - */ -/* - * Authors: - * hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "attributes.h" -#include "svg/svg.h" -#include "sp-fedisplacementmap.h" -#include "xml/repr.h" -#include "display/nr-filter-displacement-map.h" -#include "helper-fns.h" - -/* FeDisplacementMap base class */ - -static void sp_feDisplacementMap_class_init(SPFeDisplacementMapClass *klass); -static void sp_feDisplacementMap_init(SPFeDisplacementMap *feDisplacementMap); - -static void sp_feDisplacementMap_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_feDisplacementMap_release(SPObject *object); -static void sp_feDisplacementMap_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_feDisplacementMap_update(SPObject *object, SPCtx *ctx, guint flags); -static void sp_feDisplacementMap_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); -static Inkscape::XML::Node *sp_feDisplacementMap_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); - -static SPFilterPrimitiveClass *feDisplacementMap_parent_class; - -GType -sp_feDisplacementMap_get_type() -{ - static GType feDisplacementMap_type = 0; - - if (!feDisplacementMap_type) { - GTypeInfo feDisplacementMap_info = { - sizeof(SPFeDisplacementMapClass), - NULL, NULL, - (GClassInitFunc) sp_feDisplacementMap_class_init, - NULL, NULL, - sizeof(SPFeDisplacementMap), - 16, - (GInstanceInitFunc) sp_feDisplacementMap_init, - NULL, /* value_table */ - }; - feDisplacementMap_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeDisplacementMap", &feDisplacementMap_info, (GTypeFlags)0); - } - return feDisplacementMap_type; -} - -static void -sp_feDisplacementMap_class_init(SPFeDisplacementMapClass *klass) -{ - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; - - feDisplacementMap_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_feDisplacementMap_build; - sp_object_class->release = sp_feDisplacementMap_release; - sp_object_class->write = sp_feDisplacementMap_write; - sp_object_class->set = sp_feDisplacementMap_set; - sp_object_class->update = sp_feDisplacementMap_update; - sp_primitive_class->build_renderer = sp_feDisplacementMap_build_renderer; -} - -static void -sp_feDisplacementMap_init(SPFeDisplacementMap *feDisplacementMap) -{ - feDisplacementMap->scale=0; - feDisplacementMap->xChannelSelector = DISPLACEMENTMAP_CHANNEL_ALPHA; - feDisplacementMap->yChannelSelector = DISPLACEMENTMAP_CHANNEL_ALPHA; - feDisplacementMap->in2 = NR::NR_FILTER_SLOT_NOT_SET; -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPFeDisplacementMap variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_feDisplacementMap_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) feDisplacementMap_parent_class)->build) { - ((SPObjectClass *) feDisplacementMap_parent_class)->build(object, document, repr); - } - - /*LOAD ATTRIBUTES FROM REPR HERE*/ - sp_object_read_attr(object, "scale"); - sp_object_read_attr(object, "in2"); - sp_object_read_attr(object, "xChannelSelector"); - sp_object_read_attr(object, "yChannelSelector"); -} - -/** - * Drops any allocated memory. - */ -static void -sp_feDisplacementMap_release(SPObject *object) -{ - if (((SPObjectClass *) feDisplacementMap_parent_class)->release) - ((SPObjectClass *) feDisplacementMap_parent_class)->release(object); -} - -static FilterDisplacementMapChannelSelector sp_feDisplacementMap_readChannelSelector(gchar const *value) -{ - if (!value) return DISPLACEMENTMAP_CHANNEL_ALPHA; - switch (value[0]) { - case 'R': - return DISPLACEMENTMAP_CHANNEL_RED; - break; - case 'G': - return DISPLACEMENTMAP_CHANNEL_GREEN; - break; - case 'B': - return DISPLACEMENTMAP_CHANNEL_BLUE; - break; - case 'A': - return DISPLACEMENTMAP_CHANNEL_ALPHA; - break; - default: - // error - g_warning("Invalid attribute for Channel Selector. Valid modes are 'R', 'G', 'B' or 'A'"); - break; - } - return DISPLACEMENTMAP_CHANNEL_ALPHA; //default is Alpha Channel -} - -/** - * Sets a specific value in the SPFeDisplacementMap. - */ -static void -sp_feDisplacementMap_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeDisplacementMap *feDisplacementMap = SP_FEDISPLACEMENTMAP(object); - (void)feDisplacementMap; - int input; - double read_num; - FilterDisplacementMapChannelSelector read_selector; - switch(key) { - /*DEAL WITH SETTING ATTRIBUTES HERE*/ - case SP_ATTR_XCHANNELSELECTOR: - read_selector = sp_feDisplacementMap_readChannelSelector(value); - if (read_selector != feDisplacementMap->xChannelSelector){ - feDisplacementMap->xChannelSelector = read_selector; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_YCHANNELSELECTOR: - read_selector = sp_feDisplacementMap_readChannelSelector(value); - if (read_selector != feDisplacementMap->yChannelSelector){ - feDisplacementMap->yChannelSelector = read_selector; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_SCALE: - read_num = helperfns_read_number(value); - if (read_num != feDisplacementMap->scale) { - feDisplacementMap->scale = read_num; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_IN2: - input = sp_filter_primitive_read_in(feDisplacementMap, value); - if (input != feDisplacementMap->in2) { - feDisplacementMap->in2 = input; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - default: - if (((SPObjectClass *) feDisplacementMap_parent_class)->set) - ((SPObjectClass *) feDisplacementMap_parent_class)->set(object, key, value); - break; - } - -} - -/** - * Receives update notifications. - */ -static void -sp_feDisplacementMap_update(SPObject *object, SPCtx *ctx, guint flags) -{ - if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | - SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { - - /* do something to trigger redisplay, updates? */ - - } - - if (((SPObjectClass *) feDisplacementMap_parent_class)->update) { - ((SPObjectClass *) feDisplacementMap_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_feDisplacementMap_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - // Inkscape-only object, not copied during an "plain SVG" dump: - if (flags & SP_OBJECT_WRITE_EXT) { - if (repr) { - // is this sane? - //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); - } else { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - } - - if (((SPObjectClass *) feDisplacementMap_parent_class)->write) { - ((SPObjectClass *) feDisplacementMap_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -static void sp_feDisplacementMap_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { - g_assert(primitive != NULL); - g_assert(filter != NULL); - - SPFeDisplacementMap *sp_displacement_map = SP_FEDISPLACEMENTMAP(primitive); - - int primitive_n = filter->add_primitive(NR::NR_FILTER_DISPLACEMENTMAP); - NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); - NR::FilterDisplacementMap *nr_displacement_map = dynamic_cast(nr_primitive); - g_assert(nr_displacement_map != NULL); - - sp_filter_primitive_renderer_common(primitive, nr_primitive); - - nr_displacement_map->set_input(1, sp_displacement_map->in2); - nr_displacement_map->set_scale(sp_displacement_map->scale); - nr_displacement_map->set_channel_selector(0, sp_displacement_map->xChannelSelector); - nr_displacement_map->set_channel_selector(1, sp_displacement_map->yChannelSelector); -} - - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fedisplacementmap.h b/src/sp-fedisplacementmap.h deleted file mode 100644 index 914f770b5..000000000 --- a/src/sp-fedisplacementmap.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef SP_FEDISPLACEMENTMAP_H_SEEN -#define SP_FEDISPLACEMENTMAP_H_SEEN - -/** \file - * SVG implementation, see sp-feDisplacementMap.cpp. - */ -/* - * Authors: - * Hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-filter.h" -#include "sp-fedisplacementmap-fns.h" - -enum FilterDisplacementMapChannelSelector { - DISPLACEMENTMAP_CHANNEL_RED, - DISPLACEMENTMAP_CHANNEL_GREEN, - DISPLACEMENTMAP_CHANNEL_BLUE, - DISPLACEMENTMAP_CHANNEL_ALPHA, - DISPLACEMENTMAP_CHANNEL_ENDTYPE -}; - -/* FeDisplacementMap base class */ -class SPFeDisplacementMapClass; - -struct SPFeDisplacementMap : public SPFilterPrimitive { - /** DISPLACEMENTMAP ATTRIBUTES HERE */ - int in2; - double scale; - FilterDisplacementMapChannelSelector xChannelSelector; - FilterDisplacementMapChannelSelector yChannelSelector; -}; - -struct SPFeDisplacementMapClass { - SPFilterPrimitiveClass parent_class; -}; - -GType sp_feDisplacementMap_get_type(); - - -#endif /* !SP_FEDISPLACEMENTMAP_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fedistantlight.cpp b/src/sp-fedistantlight.cpp deleted file mode 100644 index 3ac3a5016..000000000 --- a/src/sp-fedistantlight.cpp +++ /dev/null @@ -1,234 +0,0 @@ -#define __SP_FEDISTANTLIGHT_CPP__ - -/** \file - * SVG implementation. - */ -/* - * Authors: - * Hugo Rodrigues - * Niko Kiirala - * Jean-Rene Reinhard - * - * Copyright (C) 2006,2007 Authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include - -#include "attributes.h" -#include "document.h" -#include "sp-fedistantlight.h" -#include "sp-fediffuselighting-fns.h" -#include "sp-fespecularlighting-fns.h" -#include "xml/repr.h" - -#define SP_MACROS_SILENT -#include "macros.h" - -/* FeDistantLight class */ - -static void sp_fedistantlight_class_init(SPFeDistantLightClass *klass); -static void sp_fedistantlight_init(SPFeDistantLight *fedistantlight); - -static void sp_fedistantlight_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_fedistantlight_release(SPObject *object); -static void sp_fedistantlight_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_fedistantlight_update(SPObject *object, SPCtx *ctx, guint flags); -static Inkscape::XML::Node *sp_fedistantlight_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); - -static SPObjectClass *feDistantLight_parent_class; - -GType -sp_fedistantlight_get_type() -{ - static GType fedistantlight_type = 0; - - if (!fedistantlight_type) { - GTypeInfo fedistantlight_info = { - sizeof(SPFeDistantLightClass), - NULL, NULL, - (GClassInitFunc) sp_fedistantlight_class_init, - NULL, NULL, - sizeof(SPFeDistantLight), - 16, - (GInstanceInitFunc) sp_fedistantlight_init, - NULL, /* value_table */ - }; - fedistantlight_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeDistantLight", &fedistantlight_info, (GTypeFlags)0); - } - return fedistantlight_type; -} - -static void -sp_fedistantlight_class_init(SPFeDistantLightClass *klass) -{ - - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - - feDistantLight_parent_class = (SPObjectClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_fedistantlight_build; - sp_object_class->release = sp_fedistantlight_release; - sp_object_class->write = sp_fedistantlight_write; - sp_object_class->set = sp_fedistantlight_set; - sp_object_class->update = sp_fedistantlight_update; -} - -static void -sp_fedistantlight_init(SPFeDistantLight *fedistantlight) -{ - fedistantlight->azimuth = 0; - fedistantlight->elevation = 0; - fedistantlight->azimuth_set = FALSE; - fedistantlight->elevation_set = FALSE; -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPDistantLight variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_fedistantlight_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) feDistantLight_parent_class)->build) { - ((SPObjectClass *) feDistantLight_parent_class)->build(object, document, repr); - } - - //Read values of key attributes from XML nodes into object. - sp_object_read_attr(object, "azimuth"); - sp_object_read_attr(object, "elevation"); - -//is this necessary? - sp_document_add_resource(document, "fedistantlight", object); -} - -/** - * Drops any allocated memory. - */ -static void -sp_fedistantlight_release(SPObject *object) -{ - //SPFeDistantLight *fedistantlight = SP_FEDISTANTLIGHT(object); - - if (SP_OBJECT_DOCUMENT(object)) { - /* Unregister ourselves */ - sp_document_remove_resource(SP_OBJECT_DOCUMENT(object), "fedistantlight", SP_OBJECT(object)); - } - -//TODO: release resources here -} - -/** - * Sets a specific value in the SPFeDistantLight. - */ -static void -sp_fedistantlight_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeDistantLight *fedistantlight = SP_FEDISTANTLIGHT(object); - gchar *end_ptr; - switch (key) { - case SP_ATTR_AZIMUTH: - end_ptr =NULL; - if (value) { - fedistantlight->azimuth = g_ascii_strtod(value, &end_ptr); - if (end_ptr) { - fedistantlight->azimuth_set = TRUE; - } - } - if (!value || !end_ptr) { - fedistantlight->azimuth_set = FALSE; - fedistantlight->azimuth = 0; - } - if (object->parent && - (SP_IS_FEDIFFUSELIGHTING(object->parent) || - SP_IS_FESPECULARLIGHTING(object->parent))) { - object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_ELEVATION: - end_ptr =NULL; - if (value) { - fedistantlight->elevation = g_ascii_strtod(value, &end_ptr); - if (end_ptr) { - fedistantlight->elevation_set = TRUE; - } - } - if (!value || !end_ptr) { - fedistantlight->elevation_set = FALSE; - fedistantlight->elevation = 0; - } - if (object->parent && - (SP_IS_FEDIFFUSELIGHTING(object->parent) || - SP_IS_FESPECULARLIGHTING(object->parent))) { - object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - default: - // See if any parents need this value. - if (((SPObjectClass *) feDistantLight_parent_class)->set) { - ((SPObjectClass *) feDistantLight_parent_class)->set(object, key, value); - } - break; - } -} - -/** - * * Receives update notifications. - * */ -static void -sp_fedistantlight_update(SPObject *object, SPCtx *ctx, guint flags) -{ - SPFeDistantLight *feDistantLight = SP_FEDISTANTLIGHT(object); - (void)feDistantLight; - - if (flags & SP_OBJECT_MODIFIED_FLAG) { - /* do something to trigger redisplay, updates? */ - sp_object_read_attr(object, "azimuth"); - sp_object_read_attr(object, "elevation"); - } - - if (((SPObjectClass *) feDistantLight_parent_class)->update) { - ((SPObjectClass *) feDistantLight_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_fedistantlight_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - SPFeDistantLight *fedistantlight = SP_FEDISTANTLIGHT(object); - - if (!repr) { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - - if (fedistantlight->azimuth_set) - sp_repr_set_css_double(repr, "azimuth", fedistantlight->azimuth); - if (fedistantlight->elevation_set) - sp_repr_set_css_double(repr, "elevation", fedistantlight->elevation); - - if (((SPObjectClass *) feDistantLight_parent_class)->write) { - ((SPObjectClass *) feDistantLight_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fedistantlight.h b/src/sp-fedistantlight.h deleted file mode 100644 index 21edbc56c..000000000 --- a/src/sp-fedistantlight.h +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef SP_FEDISTANTLIGHT_H_SEEN -#define SP_FEDISTANTLIGHT_H_SEEN - -/** \file - * SVG implementation, see sp-filter.cpp. - */ -/* - * Authors: - * Hugo Rodrigues - * Niko Kiirala - * Jean-Rene Reinhard - * - * Copyright (C) 2006,2007 Authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-object.h" - -#define SP_TYPE_FEDISTANTLIGHT (sp_fedistantlight_get_type()) -#define SP_FEDISTANTLIGHT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEDISTANTLIGHT, SPFeDistantLight)) -#define SP_FEDISTANTLIGHT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEDISTANTLIGHT, SPFeDistantLightClass)) -#define SP_IS_FEDISTANTLIGHT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEDISTANTLIGHT)) -#define SP_IS_FEDISTANTLIGHT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEDISTANTLIGHT)) - -/* Distant light class */ - - -class SPFeDistantLight; -class SPFeDistantLightClass; - -struct SPFeDistantLight : public SPObject { - - /** azimuth attribute */ - gfloat azimuth; - guint azimuth_set : 1; - /** elevation attribute */ - gfloat elevation; - guint elevation_set : 1; -}; - -struct SPFeDistantLightClass { - SPObjectClass parent_class; -}; - -GType -sp_fedistantlight_get_type(); -#endif /* !SP_FEDISTANTLIGHT_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-feflood-fns.h b/src/sp-feflood-fns.h deleted file mode 100644 index 8cc507274..000000000 --- a/src/sp-feflood-fns.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef SP_FEFLOOD_FNS_H -#define SP_FEFLOOD_FNS_H - -/** \file - * Macros and fn declarations related to gaussian blur filter. - */ - -#include -#include - -namespace Inkscape { -namespace XML { -class Node; -} -} - -class SPFeFlood; - -#define SP_TYPE_FEFLOOD (sp_feFlood_get_type()) -#define SP_FEFLOOD(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEFLOOD, SPFeFlood)) -#define SP_FEFLOOD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEFLOOD, SPFeFloodClass)) -#define SP_IS_FEFLOOD(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEFLOOD)) -#define SP_IS_FEFLOOD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEFLOOD)) - -GType sp_feFlood_get_type(); - -#endif /* !SP_FEFLOOD_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-feflood.cpp b/src/sp-feflood.cpp deleted file mode 100644 index 14488b7fb..000000000 --- a/src/sp-feflood.cpp +++ /dev/null @@ -1,227 +0,0 @@ -#define __SP_FEFLOOD_CPP__ - -/** \file - * SVG implementation. - * - */ -/* - * Authors: - * hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "attributes.h" -#include "svg/svg.h" -#include "sp-feflood.h" -#include "xml/repr.h" -#include "helper-fns.h" -#include "svg/svg-color.h" - -/* FeFlood base class */ - -static void sp_feFlood_class_init(SPFeFloodClass *klass); -static void sp_feFlood_init(SPFeFlood *feFlood); - -static void sp_feFlood_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_feFlood_release(SPObject *object); -static void sp_feFlood_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_feFlood_update(SPObject *object, SPCtx *ctx, guint flags); -static Inkscape::XML::Node *sp_feFlood_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static void sp_feFlood_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); - -static SPFilterPrimitiveClass *feFlood_parent_class; - -GType -sp_feFlood_get_type() -{ - static GType feFlood_type = 0; - - if (!feFlood_type) { - GTypeInfo feFlood_info = { - sizeof(SPFeFloodClass), - NULL, NULL, - (GClassInitFunc) sp_feFlood_class_init, - NULL, NULL, - sizeof(SPFeFlood), - 16, - (GInstanceInitFunc) sp_feFlood_init, - NULL, /* value_table */ - }; - feFlood_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeFlood", &feFlood_info, (GTypeFlags)0); - } - return feFlood_type; -} - -static void -sp_feFlood_class_init(SPFeFloodClass *klass) -{ - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; - - feFlood_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_feFlood_build; - sp_object_class->release = sp_feFlood_release; - sp_object_class->write = sp_feFlood_write; - sp_object_class->set = sp_feFlood_set; - sp_object_class->update = sp_feFlood_update; - sp_primitive_class->build_renderer = sp_feFlood_build_renderer; -} - -static void -sp_feFlood_init(SPFeFlood *feFlood) -{ - feFlood->opacity = 1; -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPFeFlood variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_feFlood_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) feFlood_parent_class)->build) { - ((SPObjectClass *) feFlood_parent_class)->build(object, document, repr); - } - - /*LOAD ATTRIBUTES FROM REPR HERE*/ - sp_object_read_attr(object, "flood-opacity"); - sp_object_read_attr(object, "flood-color"); -} - -/** - * Drops any allocated memory. - */ -static void -sp_feFlood_release(SPObject *object) -{ - if (((SPObjectClass *) feFlood_parent_class)->release) - ((SPObjectClass *) feFlood_parent_class)->release(object); -} - -/** - * Sets a specific value in the SPFeFlood. - */ -static void -sp_feFlood_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeFlood *feFlood = SP_FEFLOOD(object); - (void)feFlood; - gchar const *cend_ptr = NULL; - gchar *end_ptr = NULL; - guint32 read_color; - double read_num; - - switch(key) { - /*DEAL WITH SETTING ATTRIBUTES HERE*/ - case SP_PROP_FLOOD_COLOR: - cend_ptr = NULL; - read_color = sp_svg_read_color(value, &cend_ptr, 0xffffffff); - if (cend_ptr && read_color != feFlood->color){ - feFlood->color = read_color; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_PROP_FLOOD_OPACITY: - if (value) { - read_num = g_ascii_strtod(value, &end_ptr); - if (*end_ptr) { - g_warning("Unable to convert \"%s\" to number", value); - read_num = 1; - } - } - else { - read_num = 1; - } - if (read_num != feFlood->opacity){ - feFlood->opacity = read_num; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - default: - if (((SPObjectClass *) feFlood_parent_class)->set) - ((SPObjectClass *) feFlood_parent_class)->set(object, key, value); - break; - } - -} - -/** - * Receives update notifications. - */ -static void -sp_feFlood_update(SPObject *object, SPCtx *ctx, guint flags) -{ - if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | - SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { - - /* do something to trigger redisplay, updates? */ - - } - - if (((SPObjectClass *) feFlood_parent_class)->update) { - ((SPObjectClass *) feFlood_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_feFlood_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - // Inkscape-only object, not copied during an "plain SVG" dump: - if (flags & SP_OBJECT_WRITE_EXT) { - if (repr) { - // is this sane? - //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); - } else { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - } - - if (((SPObjectClass *) feFlood_parent_class)->write) { - ((SPObjectClass *) feFlood_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -static void sp_feFlood_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { - g_assert(primitive != NULL); - g_assert(filter != NULL); - - SPFeFlood *sp_flood = SP_FEFLOOD(primitive); - (void)sp_flood; - - int primitive_n = filter->add_primitive(NR::NR_FILTER_FLOOD); - NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); - NR::FilterFlood *nr_flood = dynamic_cast(nr_primitive); - g_assert(nr_flood != NULL); - - sp_filter_primitive_renderer_common(primitive, nr_primitive); - - nr_flood->set_opacity(sp_flood->opacity); - nr_flood->set_color(sp_flood->color); -} - - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-feflood.h b/src/sp-feflood.h deleted file mode 100644 index 4d1702258..000000000 --- a/src/sp-feflood.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef SP_FEFLOOD_H_SEEN -#define SP_FEFLOOD_H_SEEN - -/** \file - * SVG implementation, see sp-feFlood.cpp. - */ -/* - * Authors: - * Hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-filter.h" -#include "sp-feflood-fns.h" - -#include "display/nr-filter.h" -#include "display/nr-filter-flood.h" - -/* FeFlood base class */ -class SPFeFloodClass; - -struct SPFeFlood : public SPFilterPrimitive { - /** FLOOD ATTRIBUTES HERE */ - guint32 color; - double opacity; -}; - -struct SPFeFloodClass { - SPFilterPrimitiveClass parent_class; -}; - -GType sp_feFlood_get_type(); - - -#endif /* !SP_FEFLOOD_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-feimage-fns.h b/src/sp-feimage-fns.h deleted file mode 100644 index 0a8b453fe..000000000 --- a/src/sp-feimage-fns.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef SP_FEIMAGE_FNS_H -#define SP_FEIMAGE_FNS_H - -/** \file - * Macros and fn declarations related to gaussian blur filter. - */ - -#include -#include - -namespace Inkscape { -namespace XML { -class Node; -} -} - -class SPFeImage; - -#define SP_TYPE_FEIMAGE (sp_feImage_get_type()) -#define SP_FEIMAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEIMAGE, SPFeImage)) -#define SP_FEIMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEIMAGE, SPFeImageClass)) -#define SP_IS_FEIMAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEIMAGE)) -#define SP_IS_FEIMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEIMAGE)) - -GType sp_feImage_get_type(); - -#endif /* !SP_FEIMAGE_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-feimage.cpp b/src/sp-feimage.cpp deleted file mode 100644 index 117e9ffca..000000000 --- a/src/sp-feimage.cpp +++ /dev/null @@ -1,264 +0,0 @@ -#define __SP_FEIMAGE_CPP__ - -/** \file - * SVG implementation. - * - */ -/* - * Authors: - * Felipe Corrêa da Silva Sanches - * hugo Rodrigues - * - * Copyright (C) 2007 Felipe Sanches - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif -#include "uri.h" -#include "uri-references.h" -#include "attributes.h" -#include "svg/svg.h" -#include "sp-feimage.h" -#include "xml/repr.h" -#include - -#include "display/nr-filter.h" -#include "display/nr-filter-image.h" - -/* FeImage base class */ - -static void sp_feImage_class_init(SPFeImageClass *klass); -static void sp_feImage_init(SPFeImage *feImage); - -static void sp_feImage_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_feImage_release(SPObject *object); -static void sp_feImage_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_feImage_update(SPObject *object, SPCtx *ctx, guint flags); -static Inkscape::XML::Node *sp_feImage_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static void sp_feImage_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); - -static SPFilterPrimitiveClass *feImage_parent_class; - -GType -sp_feImage_get_type() -{ - static GType feImage_type = 0; - - if (!feImage_type) { - GTypeInfo feImage_info = { - sizeof(SPFeImageClass), - NULL, NULL, - (GClassInitFunc) sp_feImage_class_init, - NULL, NULL, - sizeof(SPFeImage), - 16, - (GInstanceInitFunc) sp_feImage_init, - NULL, /* value_table */ - }; - feImage_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeImage", &feImage_info, (GTypeFlags)0); - } - return feImage_type; -} - -static void -sp_feImage_class_init(SPFeImageClass *klass) -{ - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - SPFilterPrimitiveClass * sp_primitive_class = (SPFilterPrimitiveClass *)klass; - - feImage_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_feImage_build; - sp_object_class->release = sp_feImage_release; - sp_object_class->write = sp_feImage_write; - sp_object_class->set = sp_feImage_set; - sp_object_class->update = sp_feImage_update; - - sp_primitive_class->build_renderer = sp_feImage_build_renderer; -} - -static void -sp_feImage_init(SPFeImage */*feImage*/) -{ -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPFeImage variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_feImage_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - // Save document reference so we can load images with relative paths. - SPFeImage *feImage = SP_FEIMAGE(object); - feImage->document = document; - - if (((SPObjectClass *) feImage_parent_class)->build) { - ((SPObjectClass *) feImage_parent_class)->build(object, document, repr); - } - - /*LOAD ATTRIBUTES FROM REPR HERE*/ - - sp_object_read_attr(object, "x"); - sp_object_read_attr(object, "y"); - sp_object_read_attr(object, "width"); - sp_object_read_attr(object, "height"); - sp_object_read_attr(object, "xlink:href"); - -} - -/** - * Drops any allocated memory. - */ -static void -sp_feImage_release(SPObject *object) -{ - SPFeImage *feImage = SP_FEIMAGE(object); - feImage->_modified_connection.disconnect(); - if (feImage->SVGElemRef) delete feImage->SVGElemRef; - - if (((SPObjectClass *) feImage_parent_class)->release) - ((SPObjectClass *) feImage_parent_class)->release(object); -} - -static void -sp_feImage_elem_modified(SPObject* /*href*/, guint /*flags*/, SPObject* obj) -{ - obj->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); -} - -/** - * Sets a specific value in the SPFeImage. - */ -static void -sp_feImage_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeImage *feImage = SP_FEIMAGE(object); - (void)feImage; - Inkscape::URI* SVGElem_uri; - switch(key) { - /*DEAL WITH SETTING ATTRIBUTES HERE*/ - case SP_ATTR_XLINK_HREF: - if (feImage->href) g_free(feImage->href); - feImage->href = (value) ? g_strdup (value) : NULL; - if (!feImage->href) return; - try{ - SVGElem_uri = new Inkscape::URI(feImage->href); - feImage->SVGElemRef = new Inkscape::URIReference(feImage->document); - feImage->from_element = true; - feImage->SVGElemRef->attach(*SVGElem_uri); - feImage->SVGElem = SP_ITEM(feImage->SVGElemRef->getObject()); - - g_free(SVGElem_uri); - feImage->_modified_connection = ((SPObject*) feImage->SVGElem)->connectModified(sigc::bind(sigc::ptr_fun(&sp_feImage_elem_modified), object)); - object->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - } - catch(const Inkscape::UnsupportedURIException & e) - { - feImage->from_element = false; - g_warning("caught Inkscape::UnsupportedURIException in sp_feImage_set"); - break; - } - - - case SP_ATTR_X: - feImage->x.readOrUnset(value); - object->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - case SP_ATTR_Y: - feImage->y.readOrUnset(value); - object->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - case SP_ATTR_WIDTH: - feImage->width.readOrUnset(value); - object->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - case SP_ATTR_HEIGHT: - feImage->height.readOrUnset(value); - object->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - default: - if (((SPObjectClass *) feImage_parent_class)->set) - ((SPObjectClass *) feImage_parent_class)->set(object, key, value); - break; - } - -} - -/** - * Receives update notifications. - */ -static void -sp_feImage_update(SPObject *object, SPCtx *ctx, guint flags) -{ - - if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | - SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { - - /* do something to trigger redisplay, updates? */ - } - - if (((SPObjectClass *) feImage_parent_class)->update) { - ((SPObjectClass *) feImage_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_feImage_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - // Inkscape-only object, not copied during an "plain SVG" dump: - if (flags & SP_OBJECT_WRITE_EXT) { - if (repr) { - // is this sane? - //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); - } else { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - } - - if (((SPObjectClass *) feImage_parent_class)->write) { - ((SPObjectClass *) feImage_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -static void sp_feImage_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { - g_assert(primitive != NULL); - g_assert(filter != NULL); - - SPFeImage *sp_image = SP_FEIMAGE(primitive); - - int primitive_n = filter->add_primitive(NR::NR_FILTER_IMAGE); - NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); - NR::FilterImage *nr_image = dynamic_cast(nr_primitive); - g_assert(nr_image != NULL); - - sp_filter_primitive_renderer_common(primitive, nr_primitive); - - nr_image->from_element = sp_image->from_element; - nr_image->SVGElem = sp_image->SVGElem; - nr_image->set_region(sp_image->x, sp_image->y, sp_image->width, sp_image->height); - nr_image->set_href(sp_image->href); - nr_image->set_document(sp_image->document); -} - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-feimage.h b/src/sp-feimage.h deleted file mode 100644 index dc432a672..000000000 --- a/src/sp-feimage.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef SP_FEIMAGE_H_SEEN -#define SP_FEIMAGE_H_SEEN - -/** \file - * SVG implementation, see sp-feImage.cpp. - */ -/* - * Authors: - * Felipe Corrêa da Silva Sanches - * Hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-filter.h" -#include "sp-feimage-fns.h" -#include "svg/svg-length.h" -#include "sp-item.h" -#include "uri-references.h" - -/* FeImage base class */ -class SPFeImageClass; - -struct SPFeImage : public SPFilterPrimitive { - /** IMAGE ATTRIBUTES HERE */ - gchar *href; - SVGLength x, y, height, width; - SPDocument *document; - bool from_element; - SPItem* SVGElem; - Inkscape::URIReference* SVGElemRef; - sigc::connection _modified_connection; -}; - -struct SPFeImageClass { - SPFilterPrimitiveClass parent_class; -}; - -GType sp_feImage_get_type(); - - -#endif /* !SP_FEIMAGE_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-femerge-fns.h b/src/sp-femerge-fns.h deleted file mode 100644 index 24bda1ae2..000000000 --- a/src/sp-femerge-fns.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef SP_FEMERGE_FNS_H -#define SP_FEMERGE_FNS_H - -/** \file - * Macros and fn declarations related to gaussian blur filter. - */ - -#include -#include - -namespace Inkscape { -namespace XML { -class Node; -} -} - -class SPFeMerge; - -#define SP_TYPE_FEMERGE (sp_feMerge_get_type()) -#define SP_FEMERGE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEMERGE, SPFeMerge)) -#define SP_FEMERGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEMERGE, SPFeMergeClass)) -#define SP_IS_FEMERGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEMERGE)) -#define SP_IS_FEMERGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEMERGE)) - -GType sp_feMerge_get_type(); - -#endif /* !SP_FEMERGE_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-femerge.cpp b/src/sp-femerge.cpp deleted file mode 100644 index 9e45d44ab..000000000 --- a/src/sp-femerge.cpp +++ /dev/null @@ -1,203 +0,0 @@ -#define __SP_FEMERGE_CPP__ - -/** \file - * SVG implementation. - * - */ -/* - * Authors: - * hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "attributes.h" -#include "svg/svg.h" -#include "xml/repr.h" - -#include "sp-femerge.h" -#include "sp-femergenode.h" -#include "display/nr-filter-merge.h" - -/* FeMerge base class */ - -static void sp_feMerge_class_init(SPFeMergeClass *klass); -static void sp_feMerge_init(SPFeMerge *feMerge); - -static void sp_feMerge_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_feMerge_release(SPObject *object); -static void sp_feMerge_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_feMerge_update(SPObject *object, SPCtx *ctx, guint flags); -static Inkscape::XML::Node *sp_feMerge_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static void sp_feMerge_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); - -static SPFilterPrimitiveClass *feMerge_parent_class; - -GType -sp_feMerge_get_type() -{ - static GType feMerge_type = 0; - - if (!feMerge_type) { - GTypeInfo feMerge_info = { - sizeof(SPFeMergeClass), - NULL, NULL, - (GClassInitFunc) sp_feMerge_class_init, - NULL, NULL, - sizeof(SPFeMerge), - 16, - (GInstanceInitFunc) sp_feMerge_init, - NULL, /* value_table */ - }; - feMerge_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeMerge", &feMerge_info, (GTypeFlags)0); - } - return feMerge_type; -} - -static void -sp_feMerge_class_init(SPFeMergeClass *klass) -{ - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; - - feMerge_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_feMerge_build; - sp_object_class->release = sp_feMerge_release; - sp_object_class->write = sp_feMerge_write; - sp_object_class->set = sp_feMerge_set; - sp_object_class->update = sp_feMerge_update; - - sp_primitive_class->build_renderer = sp_feMerge_build_renderer; -} - -static void -sp_feMerge_init(SPFeMerge */*feMerge*/) -{ -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPFeMerge variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_feMerge_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) feMerge_parent_class)->build) { - ((SPObjectClass *) feMerge_parent_class)->build(object, document, repr); - } - - /*LOAD ATTRIBUTES FROM REPR HERE*/ -} - -/** - * Drops any allocated memory. - */ -static void -sp_feMerge_release(SPObject *object) -{ - if (((SPObjectClass *) feMerge_parent_class)->release) - ((SPObjectClass *) feMerge_parent_class)->release(object); -} - -/** - * Sets a specific value in the SPFeMerge. - */ -static void -sp_feMerge_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeMerge *feMerge = SP_FEMERGE(object); - (void)feMerge; - - switch(key) { - /*DEAL WITH SETTING ATTRIBUTES HERE*/ - default: - if (((SPObjectClass *) feMerge_parent_class)->set) - ((SPObjectClass *) feMerge_parent_class)->set(object, key, value); - break; - } - -} - -/** - * Receives update notifications. - */ -static void -sp_feMerge_update(SPObject *object, SPCtx *ctx, guint flags) -{ - if (flags & SP_OBJECT_MODIFIED_FLAG) { - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - - if (((SPObjectClass *) feMerge_parent_class)->update) { - ((SPObjectClass *) feMerge_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_feMerge_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - // Inkscape-only object, not copied during an "plain SVG" dump: - if (flags & SP_OBJECT_WRITE_EXT) { - if (repr) { - // is this sane? - //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); - } else { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - } - - if (((SPObjectClass *) feMerge_parent_class)->write) { - ((SPObjectClass *) feMerge_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -static void sp_feMerge_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { - g_assert(primitive != NULL); - g_assert(filter != NULL); - - SPFeMerge *sp_merge = SP_FEMERGE(primitive); - (void)sp_merge; - - int primitive_n = filter->add_primitive(NR::NR_FILTER_MERGE); - NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); - NR::FilterMerge *nr_merge = dynamic_cast(nr_primitive); - g_assert(nr_merge != NULL); - - sp_filter_primitive_renderer_common(primitive, nr_primitive); - - SPObject *input = primitive->children; - int in_nr = 0; - while (input) { - if (SP_IS_FEMERGENODE(input)) { - SPFeMergeNode *node = SP_FEMERGENODE(input); - nr_merge->set_input(in_nr, node->input); - in_nr++; - } - input = input->next; - } -} - - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-femerge.h b/src/sp-femerge.h deleted file mode 100644 index f83697fca..000000000 --- a/src/sp-femerge.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef SP_FEMERGE_H_SEEN -#define SP_FEMERGE_H_SEEN - -/** \file - * SVG implementation, see sp-feMerge.cpp. - */ -/* - * Authors: - * Hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-filter.h" -#include "sp-femerge-fns.h" - -/* FeMerge base class */ -class SPFeMergeClass; - -struct SPFeMerge : public SPFilterPrimitive { - -}; - -struct SPFeMergeClass { - SPFilterPrimitiveClass parent_class; -}; - -GType sp_feMerge_get_type(); - - -#endif /* !SP_FEMERGE_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-femergenode.cpp b/src/sp-femergenode.cpp deleted file mode 100644 index 153a61988..000000000 --- a/src/sp-femergenode.cpp +++ /dev/null @@ -1,177 +0,0 @@ -#define __SP_FEMERGENODE_CPP__ - -/** \file - * feMergeNode implementation. A feMergeNode contains the name of one - * input image for feMerge. - */ -/* - * Authors: - * Kees Cook - * Niko Kiirala - * - * Copyright (C) 2004,2007 authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "attributes.h" -#include "xml/repr.h" -#include "sp-femergenode.h" -#include "sp-femerge.h" - -static void sp_feMergeNode_class_init(SPFeMergeNodeClass *klass); -static void sp_feMergeNode_init(SPFeMergeNode *skeleton); - -static void sp_feMergeNode_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_feMergeNode_release(SPObject *object); -static void sp_feMergeNode_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_feMergeNode_update(SPObject *object, SPCtx *ctx, guint flags); -static Inkscape::XML::Node *sp_feMergeNode_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); - -static SPObjectClass *feMergeNode_parent_class; - -GType -sp_feMergeNode_get_type() -{ - static GType feMergeNode_type = 0; - - if (!feMergeNode_type) { - GTypeInfo feMergeNode_info = { - sizeof(SPFeMergeNodeClass), - NULL, NULL, - (GClassInitFunc) sp_feMergeNode_class_init, - NULL, NULL, - sizeof(SPFeMergeNode), - 16, - (GInstanceInitFunc) sp_feMergeNode_init, - NULL, /* value_table */ - }; - feMergeNode_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeMergeNode", &feMergeNode_info, (GTypeFlags)0); - } - return feMergeNode_type; -} - -static void -sp_feMergeNode_class_init(SPFeMergeNodeClass *klass) -{ - //GObjectClass *gobject_class = (GObjectClass *)klass; - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - - feMergeNode_parent_class = (SPObjectClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_feMergeNode_build; - sp_object_class->release = sp_feMergeNode_release; - sp_object_class->write = sp_feMergeNode_write; - sp_object_class->set = sp_feMergeNode_set; - sp_object_class->update = sp_feMergeNode_update; -} - -static void -sp_feMergeNode_init(SPFeMergeNode *feMergeNode) -{ - feMergeNode->input = NR::NR_FILTER_SLOT_NOT_SET; -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPFeMergeNode variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_feMergeNode_build(SPObject *object, SPDocument */*document*/, Inkscape::XML::Node */*repr*/) -{ - sp_object_read_attr(object, "in"); -} - -/** - * Drops any allocated memory. - */ -static void -sp_feMergeNode_release(SPObject *object) -{ - /* deal with our children and our selves here */ - - if (((SPObjectClass *) feMergeNode_parent_class)->release) - ((SPObjectClass *) feMergeNode_parent_class)->release(object); -} - -/** - * Sets a specific value in the SPFeMergeNode. - */ -static void -sp_feMergeNode_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeMergeNode *feMergeNode = SP_FEMERGENODE(object); - SPFeMerge *parent = SP_FEMERGE(object->parent); - - if (key == SP_ATTR_IN) { - int input = sp_filter_primitive_read_in(parent, value); - if (input != feMergeNode->input) { - feMergeNode->input = input; - object->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - } - - /* See if any parents need this value. */ - if (((SPObjectClass *) feMergeNode_parent_class)->set) { - ((SPObjectClass *) feMergeNode_parent_class)->set(object, key, value); - } -} - -/** - * Receives update notifications. - */ -static void -sp_feMergeNode_update(SPObject *object, SPCtx *ctx, guint flags) -{ - //SPFeMergeNode *feMergeNode = SP_FEMERGENODE(object); - - if (flags & SP_OBJECT_MODIFIED_FLAG) { - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - - if (((SPObjectClass *) feMergeNode_parent_class)->update) { - ((SPObjectClass *) feMergeNode_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_feMergeNode_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - //SPFeMergeNode *feMergeNode = SP_FEMERGENODE(object); - - // Inkscape-only object, not copied during an "plain SVG" dump: - if (flags & SP_OBJECT_WRITE_EXT) { - if (repr) { - // is this sane? - //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); - } else { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - } - - if (((SPObjectClass *) feMergeNode_parent_class)->write) { - ((SPObjectClass *) feMergeNode_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-femergenode.h b/src/sp-femergenode.h deleted file mode 100644 index 8ec00bdcd..000000000 --- a/src/sp-femergenode.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef SP_FEMERGENODE_H_SEEN -#define SP_FEMERGENODE_H_SEEN - -/** \file - * feMergeNode implementation. A feMergeNode stores information about one - * input image for feMerge filter primitive. - */ -/* - * Authors: - * Kees Cook - * Niko Kiirala - * - * Copyright (C) 2004,2007 authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-object.h" - -#define SP_TYPE_FEMERGENODE (sp_feMergeNode_get_type()) -#define SP_FEMERGENODE(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_FEMERGENODE, SPFeMergeNode)) -#define SP_IS_FEMERGENODE(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), SP_TYPE_FEMERGENODE)) - -class SPFeMergeNode; -class SPFeMergeNodeClass; - -struct SPFeMergeNode : public SPObject { - int input; -}; - -struct SPFeMergeNodeClass { - SPObjectClass parent_class; -}; - -GType sp_feMergeNode_get_type(); - - -#endif /* !SP_FEMERGENODE_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-femorphology-fns.h b/src/sp-femorphology-fns.h deleted file mode 100644 index a0550405d..000000000 --- a/src/sp-femorphology-fns.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef SP_FEMORPHOLOGY_FNS_H -#define SP_FEMORPHOLOGY_FNS_H - -/** \file - * Macros and fn declarations related to gaussian blur filter. - */ - -#include -#include - -namespace Inkscape { -namespace XML { -class Node; -} -} - -class SPFeMorphology; - -#define SP_TYPE_FEMORPHOLOGY (sp_feMorphology_get_type()) -#define SP_FEMORPHOLOGY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEMORPHOLOGY, SPFeMorphology)) -#define SP_FEMORPHOLOGY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEMORPHOLOGY, SPFeMorphologyClass)) -#define SP_IS_FEMORPHOLOGY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEMORPHOLOGY)) -#define SP_IS_FEMORPHOLOGY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEMORPHOLOGY)) - -GType sp_feMorphology_get_type(); - -#endif /* !SP_FEMORPHOLOGY_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-femorphology.cpp b/src/sp-femorphology.cpp deleted file mode 100644 index 01290391f..000000000 --- a/src/sp-femorphology.cpp +++ /dev/null @@ -1,229 +0,0 @@ -#define __SP_FEMORPHOLOGY_CPP__ - -/** \file - * SVG implementation. - * - */ -/* - * Authors: - * Felipe Sanches - * Hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include - -#include "attributes.h" -#include "svg/svg.h" -#include "sp-femorphology.h" -#include "xml/repr.h" -#include "display/nr-filter-morphology.h" - -/* FeMorphology base class */ - -static void sp_feMorphology_class_init(SPFeMorphologyClass *klass); -static void sp_feMorphology_init(SPFeMorphology *feMorphology); - -static void sp_feMorphology_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_feMorphology_release(SPObject *object); -static void sp_feMorphology_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_feMorphology_update(SPObject *object, SPCtx *ctx, guint flags); -static Inkscape::XML::Node *sp_feMorphology_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static void sp_feMorphology_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); - -static SPFilterPrimitiveClass *feMorphology_parent_class; - -GType -sp_feMorphology_get_type() -{ - static GType feMorphology_type = 0; - - if (!feMorphology_type) { - GTypeInfo feMorphology_info = { - sizeof(SPFeMorphologyClass), - NULL, NULL, - (GClassInitFunc) sp_feMorphology_class_init, - NULL, NULL, - sizeof(SPFeMorphology), - 16, - (GInstanceInitFunc) sp_feMorphology_init, - NULL, /* value_table */ - }; - feMorphology_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeMorphology", &feMorphology_info, (GTypeFlags)0); - } - return feMorphology_type; -} - -static void -sp_feMorphology_class_init(SPFeMorphologyClass *klass) -{ - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; - - feMorphology_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_feMorphology_build; - sp_object_class->release = sp_feMorphology_release; - sp_object_class->write = sp_feMorphology_write; - sp_object_class->set = sp_feMorphology_set; - sp_object_class->update = sp_feMorphology_update; - sp_primitive_class->build_renderer = sp_feMorphology_build_renderer; -} - -static void -sp_feMorphology_init(SPFeMorphology *feMorphology) -{ - //Setting default values: - feMorphology->radius.set("0"); -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPFeMorphology variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_feMorphology_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) feMorphology_parent_class)->build) { - ((SPObjectClass *) feMorphology_parent_class)->build(object, document, repr); - } - - /*LOAD ATTRIBUTES FROM REPR HERE*/ - sp_object_read_attr(object, "operator"); - sp_object_read_attr(object, "radius"); -} - -/** - * Drops any allocated memory. - */ -static void -sp_feMorphology_release(SPObject *object) -{ - if (((SPObjectClass *) feMorphology_parent_class)->release) - ((SPObjectClass *) feMorphology_parent_class)->release(object); -} - -static NR::FilterMorphologyOperator sp_feMorphology_read_operator(gchar const *value){ - if (!value) return NR::MORPHOLOGY_OPERATOR_ERODE; //erode is default - switch(value[0]){ - case 'e': - if (strncmp(value, "erode", 5) == 0) return NR::MORPHOLOGY_OPERATOR_ERODE; - break; - case 'd': - if (strncmp(value, "dilate", 6) == 0) return NR::MORPHOLOGY_OPERATOR_DILATE; - break; - } - return NR::MORPHOLOGY_OPERATOR_ERODE; //erode is default -} - -/** - * Sets a specific value in the SPFeMorphology. - */ -static void -sp_feMorphology_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeMorphology *feMorphology = SP_FEMORPHOLOGY(object); - (void)feMorphology; - - NR::FilterMorphologyOperator read_operator; - switch(key) { - /*DEAL WITH SETTING ATTRIBUTES HERE*/ - case SP_ATTR_OPERATOR: - read_operator = sp_feMorphology_read_operator(value); - if (read_operator != feMorphology->Operator){ - feMorphology->Operator = read_operator; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_RADIUS: - feMorphology->radius.set(value); - //From SVG spec: If is not provided, it defaults to . - if (feMorphology->radius.optNumIsSet() == false) - feMorphology->radius.setOptNumber(feMorphology->radius.getNumber()); - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - default: - if (((SPObjectClass *) feMorphology_parent_class)->set) - ((SPObjectClass *) feMorphology_parent_class)->set(object, key, value); - break; - } - -} - -/** - * Receives update notifications. - */ -static void -sp_feMorphology_update(SPObject *object, SPCtx *ctx, guint flags) -{ - if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | - SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { - - /* do something to trigger redisplay, updates? */ - - } - - if (((SPObjectClass *) feMorphology_parent_class)->update) { - ((SPObjectClass *) feMorphology_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_feMorphology_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - // Inkscape-only object, not copied during an "plain SVG" dump: - if (flags & SP_OBJECT_WRITE_EXT) { - if (repr) { - // is this sane? - //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); - } else { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - } - - if (((SPObjectClass *) feMorphology_parent_class)->write) { - ((SPObjectClass *) feMorphology_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -static void sp_feMorphology_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { - g_assert(primitive != NULL); - g_assert(filter != NULL); - - SPFeMorphology *sp_morphology = SP_FEMORPHOLOGY(primitive); - - int primitive_n = filter->add_primitive(NR::NR_FILTER_MORPHOLOGY); - NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); - NR::FilterMorphology *nr_morphology = dynamic_cast(nr_primitive); - g_assert(nr_morphology != NULL); - - sp_filter_primitive_renderer_common(primitive, nr_primitive); - - nr_morphology->set_operator(sp_morphology->Operator); - nr_morphology->set_xradius( sp_morphology->radius.getNumber() ); - nr_morphology->set_yradius( sp_morphology->radius.getOptNumber() ); -} - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-femorphology.h b/src/sp-femorphology.h deleted file mode 100644 index 1229c90d1..000000000 --- a/src/sp-femorphology.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef SP_FEMORPHOLOGY_H_SEEN -#define SP_FEMORPHOLOGY_H_SEEN - -/** \file - * SVG implementation, see sp-feMorphology.cpp. - */ -/* - * Authors: - * Hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-filter.h" -#include "sp-femorphology-fns.h" -#include "number-opt-number.h" -#include "display/nr-filter.h" -#include "display/nr-filter-morphology.h" - - -/* FeMorphology base class */ -class SPFeMorphologyClass; - -struct SPFeMorphology : public SPFilterPrimitive { - /** MORPHOLOGY ATTRIBUTES HERE */ - NR::FilterMorphologyOperator Operator; - NumberOptNumber radius; -}; - -struct SPFeMorphologyClass { - SPFilterPrimitiveClass parent_class; -}; - -GType sp_feMorphology_get_type(); - - -#endif /* !SP_FEMORPHOLOGY_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-feoffset-fns.h b/src/sp-feoffset-fns.h deleted file mode 100644 index 38561c188..000000000 --- a/src/sp-feoffset-fns.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef SP_FEOFFSET_FNS_H -#define SP_FEOFFSET_FNS_H - -/** \file - * Macros and fn declarations related to gaussian blur filter. - */ - -#include -#include - -namespace Inkscape { -namespace XML { -class Node; -} -} - -class SPFeOffset; - -#define SP_TYPE_FEOFFSET (sp_feOffset_get_type()) -#define SP_FEOFFSET(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEOFFSET, SPFeOffset)) -#define SP_FEOFFSET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEOFFSET, SPFeOffsetClass)) -#define SP_IS_FEOFFSET(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEOFFSET)) -#define SP_IS_FEOFFSET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEOFFSET)) - -GType sp_feOffset_get_type(); - -#endif /* !SP_FEOFFSET_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-feoffset.cpp b/src/sp-feoffset.cpp deleted file mode 100644 index 228424c70..000000000 --- a/src/sp-feoffset.cpp +++ /dev/null @@ -1,214 +0,0 @@ -#define __SP_FEOFFSET_CPP__ - -/** \file - * SVG implementation. - * - */ -/* - * Authors: - * hugo Rodrigues - * Niko Kiirala - * - * Copyright (C) 2006,2007 authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "attributes.h" -#include "svg/svg.h" -#include "sp-feoffset.h" -#include "helper-fns.h" -#include "xml/repr.h" -#include "display/nr-filter-offset.h" - -/* FeOffset base class */ - -static void sp_feOffset_class_init(SPFeOffsetClass *klass); -static void sp_feOffset_init(SPFeOffset *feOffset); - -static void sp_feOffset_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_feOffset_release(SPObject *object); -static void sp_feOffset_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_feOffset_update(SPObject *object, SPCtx *ctx, guint flags); -static Inkscape::XML::Node *sp_feOffset_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static void sp_feOffset_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); - -static SPFilterPrimitiveClass *feOffset_parent_class; - -GType -sp_feOffset_get_type() -{ - static GType feOffset_type = 0; - - if (!feOffset_type) { - GTypeInfo feOffset_info = { - sizeof(SPFeOffsetClass), - NULL, NULL, - (GClassInitFunc) sp_feOffset_class_init, - NULL, NULL, - sizeof(SPFeOffset), - 16, - (GInstanceInitFunc) sp_feOffset_init, - NULL, /* value_table */ - }; - feOffset_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeOffset", &feOffset_info, (GTypeFlags)0); - } - return feOffset_type; -} - -static void -sp_feOffset_class_init(SPFeOffsetClass *klass) -{ - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; - - feOffset_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_feOffset_build; - sp_object_class->release = sp_feOffset_release; - sp_object_class->write = sp_feOffset_write; - sp_object_class->set = sp_feOffset_set; - sp_object_class->update = sp_feOffset_update; - - sp_primitive_class->build_renderer = sp_feOffset_build_renderer; -} - -static void -sp_feOffset_init(SPFeOffset *feOffset) -{ - feOffset->dx = 0; - feOffset->dy = 0; -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPFeOffset variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_feOffset_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) feOffset_parent_class)->build) { - ((SPObjectClass *) feOffset_parent_class)->build(object, document, repr); - } - - sp_object_read_attr(object, "dx"); - sp_object_read_attr(object, "dy"); -} - -/** - * Drops any allocated memory. - */ -static void -sp_feOffset_release(SPObject *object) -{ - if (((SPObjectClass *) feOffset_parent_class)->release) - ((SPObjectClass *) feOffset_parent_class)->release(object); -} - -/** - * Sets a specific value in the SPFeOffset. - */ -static void -sp_feOffset_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeOffset *feOffset = SP_FEOFFSET(object); - - double read_num; - switch(key) { - case SP_ATTR_DX: - read_num = helperfns_read_number(value); - if (read_num != feOffset->dx) { - feOffset->dx = read_num; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_DY: - read_num = helperfns_read_number(value); - if (read_num != feOffset->dy) { - feOffset->dy = read_num; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - - /*DEAL WITH SETTING ATTRIBUTES HERE*/ - default: - if (((SPObjectClass *) feOffset_parent_class)->set) - ((SPObjectClass *) feOffset_parent_class)->set(object, key, value); - break; - } - -} - -/** - * Receives update notifications. - */ -static void -sp_feOffset_update(SPObject *object, SPCtx *ctx, guint flags) -{ - if (flags & SP_OBJECT_MODIFIED_FLAG) { - sp_object_read_attr(object, "dx"); - sp_object_read_attr(object, "dy"); - } - - if (((SPObjectClass *) feOffset_parent_class)->update) { - ((SPObjectClass *) feOffset_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_feOffset_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - // Inkscape-only object, not copied during an "plain SVG" dump: - if (flags & SP_OBJECT_WRITE_EXT) { - if (repr) { - // is this sane? - // Not. Causes coredumps. - // repr->mergeFrom(SP_OBJECT_REPR(object), "id"); - } else { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - } - - if (((SPObjectClass *) feOffset_parent_class)->write) { - ((SPObjectClass *) feOffset_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -static void sp_feOffset_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { - g_assert(primitive != NULL); - g_assert(filter != NULL); - - SPFeOffset *sp_offset = SP_FEOFFSET(primitive); - - int primitive_n = filter->add_primitive(NR::NR_FILTER_OFFSET); - NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); - NR::FilterOffset *nr_offset = dynamic_cast(nr_primitive); - g_assert(nr_offset != NULL); - - sp_filter_primitive_renderer_common(primitive, nr_primitive); - - nr_offset->set_dx(sp_offset->dx); - nr_offset->set_dy(sp_offset->dy); -} - - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-feoffset.h b/src/sp-feoffset.h deleted file mode 100644 index 042711495..000000000 --- a/src/sp-feoffset.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef SP_FEOFFSET_H_SEEN -#define SP_FEOFFSET_H_SEEN - -/** \file - * SVG implementation, see sp-feOffset.cpp. - */ -/* - * Authors: - * Hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-filter.h" -#include "sp-feoffset-fns.h" - -/* FeOffset base class */ -class SPFeOffsetClass; - -struct SPFeOffset : public SPFilterPrimitive { - /** OFFSET ATTRIBUTES HERE */ - double dx, dy; -}; - -struct SPFeOffsetClass { - SPFilterPrimitiveClass parent_class; -}; - -GType sp_feOffset_get_type(); - - -#endif /* !SP_FEOFFSET_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fepointlight.cpp b/src/sp-fepointlight.cpp deleted file mode 100644 index 5317b96fc..000000000 --- a/src/sp-fepointlight.cpp +++ /dev/null @@ -1,259 +0,0 @@ -#define __SP_FEPOINTLIGHT_CPP__ - -/** \file - * SVG implementation. - */ -/* - * Authors: - * Hugo Rodrigues - * Niko Kiirala - * Jean-Rene Reinhard - * - * Copyright (C) 2006,2007 Authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include - -#include "attributes.h" -#include "document.h" -#include "sp-fepointlight.h" -#include "sp-fediffuselighting-fns.h" -#include "sp-fespecularlighting-fns.h" -#include "xml/repr.h" - -#define SP_MACROS_SILENT -#include "macros.h" - -/* FePointLight class */ - -static void sp_fepointlight_class_init(SPFePointLightClass *klass); -static void sp_fepointlight_init(SPFePointLight *fepointlight); - -static void sp_fepointlight_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_fepointlight_release(SPObject *object); -static void sp_fepointlight_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_fepointlight_update(SPObject *object, SPCtx *ctx, guint flags); -static Inkscape::XML::Node *sp_fepointlight_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); - -static SPObjectClass *fePointLight_parent_class; - -GType -sp_fepointlight_get_type() -{ - static GType fepointlight_type = 0; - - if (!fepointlight_type) { - GTypeInfo fepointlight_info = { - sizeof(SPFePointLightClass), - NULL, NULL, - (GClassInitFunc) sp_fepointlight_class_init, - NULL, NULL, - sizeof(SPFePointLight), - 16, - (GInstanceInitFunc) sp_fepointlight_init, - NULL, /* value_table */ - }; - fepointlight_type = g_type_register_static(SP_TYPE_OBJECT, "SPFePointLight", &fepointlight_info, (GTypeFlags)0); - } - return fepointlight_type; -} - -static void -sp_fepointlight_class_init(SPFePointLightClass *klass) -{ - - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - - fePointLight_parent_class = (SPObjectClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_fepointlight_build; - sp_object_class->release = sp_fepointlight_release; - sp_object_class->write = sp_fepointlight_write; - sp_object_class->set = sp_fepointlight_set; - sp_object_class->update = sp_fepointlight_update; -} - -static void -sp_fepointlight_init(SPFePointLight *fepointlight) -{ - fepointlight->x = 0; - fepointlight->y = 0; - fepointlight->z = 0; - - fepointlight->x_set = FALSE; - fepointlight->y_set = FALSE; - fepointlight->z_set = FALSE; -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPPointLight variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_fepointlight_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) fePointLight_parent_class)->build) { - ((SPObjectClass *) fePointLight_parent_class)->build(object, document, repr); - } - - //Read values of key attributes from XML nodes into object. - sp_object_read_attr(object, "x"); - sp_object_read_attr(object, "y"); - sp_object_read_attr(object, "z"); - -//is this necessary? - sp_document_add_resource(document, "fepointlight", object); -} - -/** - * Drops any allocated memory. - */ -static void -sp_fepointlight_release(SPObject *object) -{ - //SPFePointLight *fepointlight = SP_FEPOINTLIGHT(object); - - if (SP_OBJECT_DOCUMENT(object)) { - /* Unregister ourselves */ - sp_document_remove_resource(SP_OBJECT_DOCUMENT(object), "fepointlight", SP_OBJECT(object)); - } - -//TODO: release resources here -} - -/** - * Sets a specific value in the SPFePointLight. - */ -static void -sp_fepointlight_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFePointLight *fepointlight = SP_FEPOINTLIGHT(object); - gchar *end_ptr; - switch (key) { - case SP_ATTR_X: - end_ptr = NULL; - if (value) { - fepointlight->x = g_ascii_strtod(value, &end_ptr); - if (end_ptr) { - fepointlight->x_set = TRUE; - } - } - if (!value || !end_ptr) { - fepointlight->x = 0; - fepointlight->x_set = FALSE; - } - if (object->parent && - (SP_IS_FEDIFFUSELIGHTING(object->parent) || - SP_IS_FESPECULARLIGHTING(object->parent))) { - object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_Y: - end_ptr = NULL; - if (value) { - fepointlight->y = g_ascii_strtod(value, &end_ptr); - if (end_ptr) { - fepointlight->y_set = TRUE; - } - } - if (!value || !end_ptr) { - fepointlight->y = 0; - fepointlight->y_set = FALSE; - } - if (object->parent && - (SP_IS_FEDIFFUSELIGHTING(object->parent) || - SP_IS_FESPECULARLIGHTING(object->parent))) { - object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_Z: - end_ptr = NULL; - if (value) { - fepointlight->z = g_ascii_strtod(value, &end_ptr); - if (end_ptr) { - fepointlight->z_set = TRUE; - } - } - if (!value || !end_ptr) { - fepointlight->z = 0; - fepointlight->z_set = FALSE; - } - if (object->parent && - (SP_IS_FEDIFFUSELIGHTING(object->parent) || - SP_IS_FESPECULARLIGHTING(object->parent))) { - object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - default: - // See if any parents need this value. - if (((SPObjectClass *) fePointLight_parent_class)->set) { - ((SPObjectClass *) fePointLight_parent_class)->set(object, key, value); - } - break; - } -} - -/** - * * Receives update notifications. - * */ -static void -sp_fepointlight_update(SPObject *object, SPCtx *ctx, guint flags) -{ - SPFePointLight *fePointLight = SP_FEPOINTLIGHT(object); - (void)fePointLight; - - if (flags & SP_OBJECT_MODIFIED_FLAG) { - /* do something to trigger redisplay, updates? */ - sp_object_read_attr(object, "x"); - sp_object_read_attr(object, "y"); - sp_object_read_attr(object, "z"); - } - - if (((SPObjectClass *) fePointLight_parent_class)->update) { - ((SPObjectClass *) fePointLight_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_fepointlight_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - SPFePointLight *fepointlight = SP_FEPOINTLIGHT(object); - - if (!repr) { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - - if (fepointlight->x_set) - sp_repr_set_css_double(repr, "x", fepointlight->x); - if (fepointlight->y_set) - sp_repr_set_css_double(repr, "y", fepointlight->y); - if (fepointlight->z_set) - sp_repr_set_css_double(repr, "z", fepointlight->z); - - if (((SPObjectClass *) fePointLight_parent_class)->write) { - ((SPObjectClass *) fePointLight_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fepointlight.h b/src/sp-fepointlight.h deleted file mode 100644 index 915d726af..000000000 --- a/src/sp-fepointlight.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef SP_FEPOINTLIGHT_H_SEEN -#define SP_FEPOINTLIGHT_H_SEEN - -/** \file - * SVG implementation, see sp-filter.cpp. - */ -/* - * Authors: - * Hugo Rodrigues - * Niko Kiirala - * Jean-Rene Reinhard - * - * Copyright (C) 2006,2007 Authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-object.h" - -#define SP_TYPE_FEPOINTLIGHT (sp_fepointlight_get_type()) -#define SP_FEPOINTLIGHT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEPOINTLIGHT, SPFePointLight)) -#define SP_FEPOINTLIGHT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEPOINTLIGHT, SPFePointLightClass)) -#define SP_IS_FEPOINTLIGHT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEPOINTLIGHT)) -#define SP_IS_FEPOINTLIGHT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEPOINTLIGHT)) - -/* Distant light class */ - - -class SPFePointLight; -class SPFePointLightClass; - -struct SPFePointLight : public SPObject { - - /** x coordinate of the light source */ - gfloat x; - guint x_set : 1; - /** y coordinate of the light source */ - gfloat y; - guint y_set : 1; - /** z coordinate of the light source */ - gfloat z; - guint z_set : 1; - - //other fields -}; - -struct SPFePointLightClass { - SPObjectClass parent_class; -}; - -GType -sp_fepointlight_get_type(); -#endif /* !SP_FEPOINTLIGHT_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fespecularlighting-fns.h b/src/sp-fespecularlighting-fns.h deleted file mode 100644 index bd48ba684..000000000 --- a/src/sp-fespecularlighting-fns.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef SP_FESPECULARLIGHTING_FNS_H -#define SP_FESPECULARLIGHTING_FNS_H - -/** \file - * Macros and fn declarations related to gaussian blur filter. - */ - -#include -#include - -namespace Inkscape { -namespace XML { -class Node; -} -} - -class SPFeSpecularLighting; - -#define SP_TYPE_FESPECULARLIGHTING (sp_feSpecularLighting_get_type()) -#define SP_FESPECULARLIGHTING(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FESPECULARLIGHTING, SPFeSpecularLighting)) -#define SP_FESPECULARLIGHTING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FESPECULARLIGHTING, SPFeSpecularLightingClass)) -#define SP_IS_FESPECULARLIGHTING(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FESPECULARLIGHTING)) -#define SP_IS_FESPECULARLIGHTING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FESPECULARLIGHTING)) - -GType sp_feSpecularLighting_get_type(); - -#endif /* !SP_FESPECULARLIGHTING_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fespecularlighting.cpp b/src/sp-fespecularlighting.cpp deleted file mode 100644 index c4e2902d6..000000000 --- a/src/sp-fespecularlighting.cpp +++ /dev/null @@ -1,409 +0,0 @@ -#define __SP_FESPECULARLIGHTING_CPP__ - -/** \file - * SVG implementation. - * - */ -/* - * Authors: - * hugo Rodrigues - * Jean-Rene Reinhard - * - * Copyright (C) 2006 Hugo Rodrigues - * 2007 authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "attributes.h" -#include "svg/svg.h" -#include "sp-object.h" -#include "svg/svg-color.h" -#include "sp-fespecularlighting.h" -#include "xml/repr.h" -#include "display/nr-filter-specularlighting.h" - -/* FeSpecularLighting base class */ - -static void sp_feSpecularLighting_class_init(SPFeSpecularLightingClass *klass); -static void sp_feSpecularLighting_init(SPFeSpecularLighting *feSpecularLighting); - -static void sp_feSpecularLighting_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_feSpecularLighting_release(SPObject *object); -static void sp_feSpecularLighting_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_feSpecularLighting_update(SPObject *object, SPCtx *ctx, guint flags); -//we assume that svg:feSpecularLighting can have any number of children -//only the first one is considered as the light source of the filter -//TODO is that right? -//if not modify child_added and remove_child to raise errors -static void sp_feSpecularLighting_child_added(SPObject *object, - Inkscape::XML::Node *child, - Inkscape::XML::Node *ref); -static void sp_feSpecularLighting_remove_child(SPObject *object, Inkscape::XML::Node *child); -static void sp_feSpecularLighting_order_changed(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref); -static Inkscape::XML::Node *sp_feSpecularLighting_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static void sp_feSpecularLighting_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); -static void sp_feSpecularLighting_children_modified(SPFeSpecularLighting *sp_specularlighting); - -static SPFilterPrimitiveClass *feSpecularLighting_parent_class; - -GType -sp_feSpecularLighting_get_type() -{ - static GType feSpecularLighting_type = 0; - - if (!feSpecularLighting_type) { - GTypeInfo feSpecularLighting_info = { - sizeof(SPFeSpecularLightingClass), - NULL, NULL, - (GClassInitFunc) sp_feSpecularLighting_class_init, - NULL, NULL, - sizeof(SPFeSpecularLighting), - 16, - (GInstanceInitFunc) sp_feSpecularLighting_init, - NULL, /* value_table */ - }; - feSpecularLighting_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeSpecularLighting", &feSpecularLighting_info, (GTypeFlags)0); - } - return feSpecularLighting_type; -} - -static void -sp_feSpecularLighting_class_init(SPFeSpecularLightingClass *klass) -{ - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; - feSpecularLighting_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_feSpecularLighting_build; - sp_object_class->release = sp_feSpecularLighting_release; - sp_object_class->write = sp_feSpecularLighting_write; - sp_object_class->set = sp_feSpecularLighting_set; - sp_object_class->update = sp_feSpecularLighting_update; - sp_object_class->child_added = sp_feSpecularLighting_child_added; - sp_object_class->remove_child = sp_feSpecularLighting_remove_child; - sp_object_class->order_changed = sp_feSpecularLighting_order_changed; - - sp_primitive_class->build_renderer = sp_feSpecularLighting_build_renderer; -} - -static void -sp_feSpecularLighting_init(SPFeSpecularLighting *feSpecularLighting) -{ - feSpecularLighting->surfaceScale = 1; - feSpecularLighting->specularConstant = 1; - feSpecularLighting->specularExponent = 1; - feSpecularLighting->lighting_color = 0xffffffff; - //TODO kernelUnit - feSpecularLighting->renderer = NULL; - - feSpecularLighting->surfaceScale_set = FALSE; - feSpecularLighting->specularConstant_set = FALSE; - feSpecularLighting->specularExponent_set = FALSE; - feSpecularLighting->lighting_color_set = FALSE; -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPFeSpecularLighting variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_feSpecularLighting_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) feSpecularLighting_parent_class)->build) { - ((SPObjectClass *) feSpecularLighting_parent_class)->build(object, document, repr); - } - - /*LOAD ATTRIBUTES FROM REPR HERE*/ - sp_object_read_attr(object, "surfaceScale"); - sp_object_read_attr(object, "specularConstant"); - sp_object_read_attr(object, "specularExponent"); - sp_object_read_attr(object, "kernelUnitLength"); - sp_object_read_attr(object, "lighting-color"); - -} - -/** - * Drops any allocated memory. - */ -static void -sp_feSpecularLighting_release(SPObject *object) -{ - if (((SPObjectClass *) feSpecularLighting_parent_class)->release) - ((SPObjectClass *) feSpecularLighting_parent_class)->release(object); -} - -/** - * Sets a specific value in the SPFeSpecularLighting. - */ -static void -sp_feSpecularLighting_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeSpecularLighting *feSpecularLighting = SP_FESPECULARLIGHTING(object); - gchar const *cend_ptr = NULL; - gchar *end_ptr = NULL; - switch(key) { - /*DEAL WITH SETTING ATTRIBUTES HERE*/ -//TODO test forbidden values - case SP_ATTR_SURFACESCALE: - end_ptr = NULL; - if (value) { - feSpecularLighting->surfaceScale = g_ascii_strtod(value, &end_ptr); - if (end_ptr) { - feSpecularLighting->surfaceScale_set = TRUE; - } else { - g_warning("feSpecularLighting: surfaceScale should be a number ... defaulting to 1"); - } - - } - //if the attribute is not set or has an unreadable value - if (!value || !end_ptr) { - feSpecularLighting->surfaceScale = 1; - feSpecularLighting->surfaceScale_set = FALSE; - } - if (feSpecularLighting->renderer) { - feSpecularLighting->renderer->surfaceScale = feSpecularLighting->surfaceScale; - } - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - case SP_ATTR_SPECULARCONSTANT: - end_ptr = NULL; - if (value) { - feSpecularLighting->specularConstant = g_ascii_strtod(value, &end_ptr); - if (end_ptr && feSpecularLighting->specularConstant >= 0) { - feSpecularLighting->specularConstant_set = TRUE; - } else { - end_ptr = NULL; - g_warning("feSpecularLighting: specularConstant should be a positive number ... defaulting to 1"); - } - } - if (!value || !end_ptr) { - feSpecularLighting->specularConstant = 1; - feSpecularLighting->specularConstant_set = FALSE; - } - if (feSpecularLighting->renderer) { - feSpecularLighting->renderer->specularConstant = feSpecularLighting->specularConstant; - } - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - case SP_ATTR_SPECULAREXPONENT: - end_ptr = NULL; - if (value) { - feSpecularLighting->specularExponent = g_ascii_strtod(value, &end_ptr); - if (feSpecularLighting->specularExponent >= 1 && feSpecularLighting->specularExponent <= 128) { - feSpecularLighting->specularExponent_set = TRUE; - } else { - end_ptr = NULL; - g_warning("feSpecularLighting: specularExponent should be a number in range [1, 128] ... defaulting to 1"); - } - } - if (!value || !end_ptr) { - feSpecularLighting->specularExponent = 1; - feSpecularLighting->specularExponent_set = FALSE; - } - if (feSpecularLighting->renderer) { - feSpecularLighting->renderer->specularExponent = feSpecularLighting->specularExponent; - } - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - case SP_ATTR_KERNELUNITLENGTH: - //TODO kernelUnit - //feSpecularLighting->kernelUnitLength.set(value); - /*TODOif (feSpecularLighting->renderer) { - feSpecularLighting->renderer->surfaceScale = feSpecularLighting->renderer; - } - */ - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - case SP_PROP_LIGHTING_COLOR: - cend_ptr = NULL; - feSpecularLighting->lighting_color = sp_svg_read_color(value, &cend_ptr, 0xffffffff); - //if a value was read - if (cend_ptr) { - feSpecularLighting->lighting_color_set = TRUE; - } else { - //lighting_color already contains the default value - feSpecularLighting->lighting_color_set = FALSE; - } - if (feSpecularLighting->renderer) { - feSpecularLighting->renderer->lighting_color = feSpecularLighting->lighting_color; - } - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - default: - if (((SPObjectClass *) feSpecularLighting_parent_class)->set) - ((SPObjectClass *) feSpecularLighting_parent_class)->set(object, key, value); - break; - } - -} - -/** - * Receives update notifications. - */ -static void -sp_feSpecularLighting_update(SPObject *object, SPCtx *ctx, guint flags) -{ - if (flags & (SP_OBJECT_MODIFIED_FLAG)) { - sp_object_read_attr(object, "surfaceScale"); - sp_object_read_attr(object, "specularConstant"); - sp_object_read_attr(object, "specularExponent"); - sp_object_read_attr(object, "kernelUnitLength"); - sp_object_read_attr(object, "lighting-color"); - } - - if (((SPObjectClass *) feSpecularLighting_parent_class)->update) { - ((SPObjectClass *) feSpecularLighting_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_feSpecularLighting_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - SPFeSpecularLighting *fespecularlighting = SP_FESPECULARLIGHTING(object); - - // Inkscape-only object, not copied during an "plain SVG" dump: - if (flags & SP_OBJECT_WRITE_EXT) { - if (repr) { - // is this sane? - //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); - } else { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - } - if (fespecularlighting->surfaceScale_set) - sp_repr_set_css_double(repr, "surfaceScale", fespecularlighting->surfaceScale); - if (fespecularlighting->specularConstant_set) - sp_repr_set_css_double(repr, "specularConstant", fespecularlighting->specularConstant); - if (fespecularlighting->specularExponent_set) - sp_repr_set_css_double(repr, "specularExponent", fespecularlighting->specularExponent); - /*TODO kernelUnits */ - if (fespecularlighting->lighting_color_set) { - gchar c[64]; - sp_svg_write_color(c, sizeof(c), fespecularlighting->lighting_color); - repr->setAttribute("lighting-color", c); - } - if (((SPObjectClass *) feSpecularLighting_parent_class)->write) { - ((SPObjectClass *) feSpecularLighting_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -/** - * Callback for child_added event. - */ -static void -sp_feSpecularLighting_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref) -{ - SPFeSpecularLighting *f = SP_FESPECULARLIGHTING(object); - - if (((SPObjectClass *) feSpecularLighting_parent_class)->child_added) - (* ((SPObjectClass *) feSpecularLighting_parent_class)->child_added)(object, child, ref); - - sp_feSpecularLighting_children_modified(f); - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); -} - - -/** - * Callback for remove_child event. - */ -static void -sp_feSpecularLighting_remove_child(SPObject *object, Inkscape::XML::Node *child) -{ - SPFeSpecularLighting *f = SP_FESPECULARLIGHTING(object); - - if (((SPObjectClass *) feSpecularLighting_parent_class)->remove_child) - (* ((SPObjectClass *) feSpecularLighting_parent_class)->remove_child)(object, child); - - sp_feSpecularLighting_children_modified(f); - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); -} - -static void -sp_feSpecularLighting_order_changed (SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref) -{ - SPFeSpecularLighting *f = SP_FESPECULARLIGHTING(object); - if (((SPObjectClass *) (feSpecularLighting_parent_class))->order_changed) - (* ((SPObjectClass *) (feSpecularLighting_parent_class))->order_changed) (object, child, old_ref, new_ref); - - sp_feSpecularLighting_children_modified(f); - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); -} - -static void sp_feSpecularLighting_children_modified(SPFeSpecularLighting *sp_specularlighting) -{ - if (sp_specularlighting->renderer) { - sp_specularlighting->renderer->light_type = NR::NO_LIGHT; - if (SP_IS_FEDISTANTLIGHT(sp_specularlighting->children)) { - sp_specularlighting->renderer->light_type = NR::DISTANT_LIGHT; - sp_specularlighting->renderer->light.distant = SP_FEDISTANTLIGHT(sp_specularlighting->children); - } - if (SP_IS_FEPOINTLIGHT(sp_specularlighting->children)) { - sp_specularlighting->renderer->light_type = NR::POINT_LIGHT; - sp_specularlighting->renderer->light.point = SP_FEPOINTLIGHT(sp_specularlighting->children); - } - if (SP_IS_FESPOTLIGHT(sp_specularlighting->children)) { - sp_specularlighting->renderer->light_type = NR::SPOT_LIGHT; - sp_specularlighting->renderer->light.spot = SP_FESPOTLIGHT(sp_specularlighting->children); - } - } -} - -static void sp_feSpecularLighting_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { - g_assert(primitive != NULL); - g_assert(filter != NULL); - - SPFeSpecularLighting *sp_specularlighting = SP_FESPECULARLIGHTING(primitive); - - int primitive_n = filter->add_primitive(NR::NR_FILTER_SPECULARLIGHTING); - NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); - NR::FilterSpecularLighting *nr_specularlighting = dynamic_cast(nr_primitive); - g_assert(nr_specularlighting != NULL); - - sp_specularlighting->renderer = nr_specularlighting; - sp_filter_primitive_renderer_common(primitive, nr_primitive); - - nr_specularlighting->specularConstant = sp_specularlighting->specularConstant; - nr_specularlighting->specularExponent = sp_specularlighting->specularExponent; - nr_specularlighting->surfaceScale = sp_specularlighting->surfaceScale; - nr_specularlighting->lighting_color = sp_specularlighting->lighting_color; - //We assume there is at most one child - nr_specularlighting->light_type = NR::NO_LIGHT; - if (SP_IS_FEDISTANTLIGHT(primitive->children)) { - nr_specularlighting->light_type = NR::DISTANT_LIGHT; - nr_specularlighting->light.distant = SP_FEDISTANTLIGHT(primitive->children); - } - if (SP_IS_FEPOINTLIGHT(primitive->children)) { - nr_specularlighting->light_type = NR::POINT_LIGHT; - nr_specularlighting->light.point = SP_FEPOINTLIGHT(primitive->children); - } - if (SP_IS_FESPOTLIGHT(primitive->children)) { - nr_specularlighting->light_type = NR::SPOT_LIGHT; - nr_specularlighting->light.spot = SP_FESPOTLIGHT(primitive->children); - } - - //nr_offset->set_dx(sp_offset->dx); - //nr_offset->set_dy(sp_offset->dy); -} - - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fespecularlighting.h b/src/sp-fespecularlighting.h deleted file mode 100644 index 5d2194c2f..000000000 --- a/src/sp-fespecularlighting.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef SP_FESPECULARLIGHTING_H_SEEN -#define SP_FESPECULARLIGHTING_H_SEEN - -/** \file - * SVG implementation, see sp-feSpecularLighting.cpp. - */ -/* - * Authors: - * Hugo Rodrigues - * Jean-Rene Reinhard - * - * Copyright (C) 2006 Hugo Rodrigues - * 2007 authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-filter.h" -#include "sp-fespecularlighting-fns.h" - -namespace NR { -class FilterSpecularLighting; -} - -/* FeSpecularLighting base class */ -class SPFeSpecularLightingClass; - -struct SPFeSpecularLighting : public SPFilterPrimitive { - /** SPECULARLIGHTING ATTRIBUTES HERE */ - /** surfaceScale attribute */ - gfloat surfaceScale; - guint surfaceScale_set : 1; - /** specularConstant attribute */ - gfloat specularConstant; - guint specularConstant_set : 1; - /** specularConstant attribute */ - gfloat specularExponent; - guint specularExponent_set : 1; - /** kernelUnitLenght attribute */ - NumberOptNumber kernelUnitLength; - /** lighting-color property */ - guint32 lighting_color; - guint lighting_color_set : 1; - - NR::FilterSpecularLighting *renderer; -}; - -struct SPFeSpecularLightingClass { - SPFilterPrimitiveClass parent_class; -}; - -GType sp_feSpecularLighting_get_type(); - - -#endif /* !SP_FESPECULARLIGHTING_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fespotlight.cpp b/src/sp-fespotlight.cpp deleted file mode 100644 index b66912468..000000000 --- a/src/sp-fespotlight.cpp +++ /dev/null @@ -1,372 +0,0 @@ -#define __SP_FESPOTLIGHT_CPP__ - -/** \file - * SVG implementation. - */ -/* - * Authors: - * Hugo Rodrigues - * Niko Kiirala - * Jean-Rene Reinhard - * - * Copyright (C) 2006,2007 Authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include - -#include "attributes.h" -#include "document.h" -#include "sp-fespotlight.h" -#include "sp-fediffuselighting-fns.h" -#include "sp-fespecularlighting-fns.h" -#include "xml/repr.h" - -#define SP_MACROS_SILENT -#include "macros.h" - -/* FeSpotLight class */ - -static void sp_fespotlight_class_init(SPFeSpotLightClass *klass); -static void sp_fespotlight_init(SPFeSpotLight *fespotlight); - -static void sp_fespotlight_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_fespotlight_release(SPObject *object); -static void sp_fespotlight_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_fespotlight_update(SPObject *object, SPCtx *ctx, guint flags); -static Inkscape::XML::Node *sp_fespotlight_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); - -static SPObjectClass *feSpotLight_parent_class; - -GType -sp_fespotlight_get_type() -{ - static GType fespotlight_type = 0; - - if (!fespotlight_type) { - GTypeInfo fespotlight_info = { - sizeof(SPFeSpotLightClass), - NULL, NULL, - (GClassInitFunc) sp_fespotlight_class_init, - NULL, NULL, - sizeof(SPFeSpotLight), - 16, - (GInstanceInitFunc) sp_fespotlight_init, - NULL, /* value_table */ - }; - fespotlight_type = g_type_register_static(SP_TYPE_OBJECT, "SPFeSpotLight", &fespotlight_info, (GTypeFlags)0); - } - return fespotlight_type; -} - -static void -sp_fespotlight_class_init(SPFeSpotLightClass *klass) -{ - - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - - feSpotLight_parent_class = (SPObjectClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_fespotlight_build; - sp_object_class->release = sp_fespotlight_release; - sp_object_class->write = sp_fespotlight_write; - sp_object_class->set = sp_fespotlight_set; - sp_object_class->update = sp_fespotlight_update; -} - -static void -sp_fespotlight_init(SPFeSpotLight *fespotlight) -{ - fespotlight->x = 0; - fespotlight->y = 0; - fespotlight->z = 0; - fespotlight->pointsAtX = 0; - fespotlight->pointsAtY = 0; - fespotlight->pointsAtZ = 0; - fespotlight->specularExponent = 1; - fespotlight->limitingConeAngle = 90; - - fespotlight->x_set = FALSE; - fespotlight->y_set = FALSE; - fespotlight->z_set = FALSE; - fespotlight->pointsAtX_set = FALSE; - fespotlight->pointsAtY_set = FALSE; - fespotlight->pointsAtZ_set = FALSE; - fespotlight->specularExponent_set = FALSE; - fespotlight->limitingConeAngle_set = FALSE; -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPPointLight variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_fespotlight_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) feSpotLight_parent_class)->build) { - ((SPObjectClass *) feSpotLight_parent_class)->build(object, document, repr); - } - - //Read values of key attributes from XML nodes into object. - sp_object_read_attr(object, "x"); - sp_object_read_attr(object, "y"); - sp_object_read_attr(object, "z"); - sp_object_read_attr(object, "pointsAtX"); - sp_object_read_attr(object, "pointsAtY"); - sp_object_read_attr(object, "pointsAtZ"); - sp_object_read_attr(object, "specularExponent"); - sp_object_read_attr(object, "limitingConeAngle"); - -//is this necessary? - sp_document_add_resource(document, "fespotlight", object); -} - -/** - * Drops any allocated memory. - */ -static void -sp_fespotlight_release(SPObject *object) -{ - //SPFeSpotLight *fespotlight = SP_FESPOTLIGHT(object); - - if (SP_OBJECT_DOCUMENT(object)) { - /* Unregister ourselves */ - sp_document_remove_resource(SP_OBJECT_DOCUMENT(object), "fespotlight", SP_OBJECT(object)); - } - -//TODO: release resources here -} - -/** - * Sets a specific value in the SPFeSpotLight. - */ -static void -sp_fespotlight_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeSpotLight *fespotlight = SP_FESPOTLIGHT(object); - gchar *end_ptr; - - switch (key) { - case SP_ATTR_X: - end_ptr = NULL; - if (value) { - fespotlight->x = g_ascii_strtod(value, &end_ptr); - if (end_ptr) - fespotlight->x_set = TRUE; - } - if(!value || !end_ptr) { - fespotlight->x = 0; - fespotlight->x_set = FALSE; - } - if (object->parent && - (SP_IS_FEDIFFUSELIGHTING(object->parent) || - SP_IS_FESPECULARLIGHTING(object->parent))) { - object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_Y: - end_ptr = NULL; - if (value) { - fespotlight->y = g_ascii_strtod(value, &end_ptr); - if (end_ptr) - fespotlight->y_set = TRUE; - } - if(!value || !end_ptr) { - fespotlight->y = 0; - fespotlight->y_set = FALSE; - } - if (object->parent && - (SP_IS_FEDIFFUSELIGHTING(object->parent) || - SP_IS_FESPECULARLIGHTING(object->parent))) { - object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_Z: - end_ptr = NULL; - if (value) { - fespotlight->z = g_ascii_strtod(value, &end_ptr); - if (end_ptr) - fespotlight->z_set = TRUE; - } - if(!value || !end_ptr) { - fespotlight->z = 0; - fespotlight->z_set = FALSE; - } - if (object->parent && - (SP_IS_FEDIFFUSELIGHTING(object->parent) || - SP_IS_FESPECULARLIGHTING(object->parent))) { - object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_POINTSATX: - end_ptr = NULL; - if (value) { - fespotlight->pointsAtX = g_ascii_strtod(value, &end_ptr); - if (end_ptr) - fespotlight->pointsAtX_set = TRUE; - } - if(!value || !end_ptr) { - fespotlight->pointsAtX = 0; - fespotlight->pointsAtX_set = FALSE; - } - if (object->parent && - (SP_IS_FEDIFFUSELIGHTING(object->parent) || - SP_IS_FESPECULARLIGHTING(object->parent))) { - object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_POINTSATY: - end_ptr = NULL; - if (value) { - fespotlight->pointsAtY = g_ascii_strtod(value, &end_ptr); - if (end_ptr) - fespotlight->pointsAtY_set = TRUE; - } - if(!value || !end_ptr) { - fespotlight->pointsAtY = 0; - fespotlight->pointsAtY_set = FALSE; - } - if (object->parent && - (SP_IS_FEDIFFUSELIGHTING(object->parent) || - SP_IS_FESPECULARLIGHTING(object->parent))) { - object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_POINTSATZ: - end_ptr = NULL; - if (value) { - fespotlight->pointsAtZ = g_ascii_strtod(value, &end_ptr); - if (end_ptr) - fespotlight->pointsAtZ_set = TRUE; - } - if(!value || !end_ptr) { - fespotlight->pointsAtZ = 0; - fespotlight->pointsAtZ_set = FALSE; - } - if (object->parent && - (SP_IS_FEDIFFUSELIGHTING(object->parent) || - SP_IS_FESPECULARLIGHTING(object->parent))) { - object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_SPECULAREXPONENT: - end_ptr = NULL; - if (value) { - fespotlight->specularExponent = g_ascii_strtod(value, &end_ptr); - if (end_ptr) - fespotlight->specularExponent_set = TRUE; - } - if(!value || !end_ptr) { - fespotlight->specularExponent = 1; - fespotlight->specularExponent_set = FALSE; - } - if (object->parent && - (SP_IS_FEDIFFUSELIGHTING(object->parent) || - SP_IS_FESPECULARLIGHTING(object->parent))) { - object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_LIMITINGCONEANGLE: - end_ptr = NULL; - if (value) { - fespotlight->limitingConeAngle = g_ascii_strtod(value, &end_ptr); - if (end_ptr) - fespotlight->limitingConeAngle_set = TRUE; - } - if(!value || !end_ptr) { - fespotlight->limitingConeAngle = 90; - fespotlight->limitingConeAngle_set = FALSE; - } - if (object->parent && - (SP_IS_FEDIFFUSELIGHTING(object->parent) || - SP_IS_FESPECULARLIGHTING(object->parent))) { - object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - default: - // See if any parents need this value. - if (((SPObjectClass *) feSpotLight_parent_class)->set) { - ((SPObjectClass *) feSpotLight_parent_class)->set(object, key, value); - } - break; - } -} - -/** - * * Receives update notifications. - * */ -static void -sp_fespotlight_update(SPObject *object, SPCtx *ctx, guint flags) -{ - SPFeSpotLight *feSpotLight = SP_FESPOTLIGHT(object); - (void)feSpotLight; - - if (flags & SP_OBJECT_MODIFIED_FLAG) { - /* do something to trigger redisplay, updates? */ - sp_object_read_attr(object, "x"); - sp_object_read_attr(object, "y"); - sp_object_read_attr(object, "z"); - sp_object_read_attr(object, "pointsAtX"); - sp_object_read_attr(object, "pointsAtY"); - sp_object_read_attr(object, "pointsAtZ"); - sp_object_read_attr(object, "specularExponent"); - sp_object_read_attr(object, "limitingConeAngle"); - } - - if (((SPObjectClass *) feSpotLight_parent_class)->update) { - ((SPObjectClass *) feSpotLight_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_fespotlight_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - SPFeSpotLight *fespotlight = SP_FESPOTLIGHT(object); - - if (!repr) { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - - if (fespotlight->x_set) - sp_repr_set_css_double(repr, "x", fespotlight->x); - if (fespotlight->y_set) - sp_repr_set_css_double(repr, "y", fespotlight->y); - if (fespotlight->z_set) - sp_repr_set_css_double(repr, "z", fespotlight->z); - if (fespotlight->pointsAtX_set) - sp_repr_set_css_double(repr, "pointsAtX", fespotlight->pointsAtX); - if (fespotlight->pointsAtY_set) - sp_repr_set_css_double(repr, "pointsAtY", fespotlight->pointsAtY); - if (fespotlight->pointsAtZ_set) - sp_repr_set_css_double(repr, "pointsAtZ", fespotlight->pointsAtZ); - if (fespotlight->specularExponent_set) - sp_repr_set_css_double(repr, "specularExponent", fespotlight->specularExponent); - if (fespotlight->limitingConeAngle_set) - sp_repr_set_css_double(repr, "limitingConeAngle", fespotlight->limitingConeAngle); - - if (((SPObjectClass *) feSpotLight_parent_class)->write) { - ((SPObjectClass *) feSpotLight_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fespotlight.h b/src/sp-fespotlight.h deleted file mode 100644 index d48cf6daa..000000000 --- a/src/sp-fespotlight.h +++ /dev/null @@ -1,78 +0,0 @@ -#ifndef SP_FESPOTLIGHT_H_SEEN -#define SP_FESPOTLIGHT_H_SEEN - -/** \file - * SVG implementation, see sp-filter.cpp. - */ -/* - * Authors: - * Hugo Rodrigues - * Niko Kiirala - * Jean-Rene Reinhard - * - * Copyright (C) 2006,2007 Authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-object.h" - -#define SP_TYPE_FESPOTLIGHT (sp_fespotlight_get_type()) -#define SP_FESPOTLIGHT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FESPOTLIGHT, SPFeSpotLight)) -#define SP_FESPOTLIGHT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FESPOTLIGHT, SPFeSpotLightClass)) -#define SP_IS_FESPOTLIGHT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FESPOTLIGHT)) -#define SP_IS_FESPOTLIGHT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FESPOTLIGHT)) - -/* Distant light class */ - - -class SPFeSpotLight; -class SPFeSpotLightClass; - -struct SPFeSpotLight : public SPObject { - - /** x coordinate of the light source */ - gfloat x; - guint x_set : 1; - /** y coordinate of the light source */ - gfloat y; - guint y_set : 1; - /** z coordinate of the light source */ - gfloat z; - guint z_set : 1; - /** x coordinate of the point the source is pointing at */ - gfloat pointsAtX; - guint pointsAtX_set : 1; - /** y coordinate of the point the source is pointing at */ - gfloat pointsAtY; - guint pointsAtY_set : 1; - /** z coordinate of the point the source is pointing at */ - gfloat pointsAtZ; - guint pointsAtZ_set : 1; - /** specular exponent (focus of the light) */ - gfloat specularExponent; - guint specularExponent_set : 1; - /** limiting cone angle */ - gfloat limitingConeAngle; - guint limitingConeAngle_set : 1; - //other fields -}; - -struct SPFeSpotLightClass { - SPObjectClass parent_class; -}; - -GType -sp_fespotlight_get_type(); -#endif /* !SP_FESPOTLIGHT_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fetile-fns.h b/src/sp-fetile-fns.h deleted file mode 100644 index b7c4c5f27..000000000 --- a/src/sp-fetile-fns.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef SP_FETILE_FNS_H -#define SP_FETILE_FNS_H - -/** \file - * Macros and fn declarations related to gaussian blur filter. - */ - -#include -#include - -namespace Inkscape { -namespace XML { -class Node; -} -} - -class SPFeTile; - -#define SP_TYPE_FETILE (sp_feTile_get_type()) -#define SP_FETILE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FETILE, SPFeTile)) -#define SP_FETILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FETILE, SPFeTileClass)) -#define SP_IS_FETILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FETILE)) -#define SP_IS_FETILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FETILE)) - -GType sp_feTile_get_type(); - -#endif /* !SP_FETILE_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fetile.cpp b/src/sp-fetile.cpp deleted file mode 100644 index 598ccdb84..000000000 --- a/src/sp-fetile.cpp +++ /dev/null @@ -1,191 +0,0 @@ -#define __SP_FETILE_CPP__ - -/** \file - * SVG implementation. - * - */ -/* - * Authors: - * hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "attributes.h" -#include "svg/svg.h" -#include "sp-fetile.h" -#include "xml/repr.h" - - -/* FeTile base class */ - -static void sp_feTile_class_init(SPFeTileClass *klass); -static void sp_feTile_init(SPFeTile *feTile); - -static void sp_feTile_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_feTile_release(SPObject *object); -static void sp_feTile_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_feTile_update(SPObject *object, SPCtx *ctx, guint flags); -static Inkscape::XML::Node *sp_feTile_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static void sp_feTile_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); - -static SPFilterPrimitiveClass *feTile_parent_class; - -GType -sp_feTile_get_type() -{ - static GType feTile_type = 0; - - if (!feTile_type) { - GTypeInfo feTile_info = { - sizeof(SPFeTileClass), - NULL, NULL, - (GClassInitFunc) sp_feTile_class_init, - NULL, NULL, - sizeof(SPFeTile), - 16, - (GInstanceInitFunc) sp_feTile_init, - NULL, /* value_table */ - }; - feTile_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeTile", &feTile_info, (GTypeFlags)0); - } - return feTile_type; -} - -static void -sp_feTile_class_init(SPFeTileClass *klass) -{ - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass; - - feTile_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_feTile_build; - sp_object_class->release = sp_feTile_release; - sp_object_class->write = sp_feTile_write; - sp_object_class->set = sp_feTile_set; - sp_object_class->update = sp_feTile_update; - sp_primitive_class->build_renderer = sp_feTile_build_renderer; -} - -static void -sp_feTile_init(SPFeTile */*feTile*/) -{ -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPFeTile variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_feTile_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) feTile_parent_class)->build) { - ((SPObjectClass *) feTile_parent_class)->build(object, document, repr); - } - - /*LOAD ATTRIBUTES FROM REPR HERE*/ -} - -/** - * Drops any allocated memory. - */ -static void -sp_feTile_release(SPObject *object) -{ - if (((SPObjectClass *) feTile_parent_class)->release) - ((SPObjectClass *) feTile_parent_class)->release(object); -} - -/** - * Sets a specific value in the SPFeTile. - */ -static void -sp_feTile_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeTile *feTile = SP_FETILE(object); - (void)feTile; - - switch(key) { - /*DEAL WITH SETTING ATTRIBUTES HERE*/ - default: - if (((SPObjectClass *) feTile_parent_class)->set) - ((SPObjectClass *) feTile_parent_class)->set(object, key, value); - break; - } - -} - -/** - * Receives update notifications. - */ -static void -sp_feTile_update(SPObject *object, SPCtx *ctx, guint flags) -{ - if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | - SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { - - /* do something to trigger redisplay, updates? */ - - } - - if (((SPObjectClass *) feTile_parent_class)->update) { - ((SPObjectClass *) feTile_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_feTile_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - // Inkscape-only object, not copied during an "plain SVG" dump: - if (flags & SP_OBJECT_WRITE_EXT) { - if (repr) { - // is this sane? - //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); - } else { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - } - - if (((SPObjectClass *) feTile_parent_class)->write) { - ((SPObjectClass *) feTile_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -static void sp_feTile_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { - g_assert(primitive != NULL); - g_assert(filter != NULL); - - SPFeTile *sp_tile = SP_FETILE(primitive); - (void)sp_tile; - - int primitive_n = filter->add_primitive(NR::NR_FILTER_TILE); - NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); - NR::FilterTile *nr_tile = dynamic_cast(nr_primitive); - g_assert(nr_tile != NULL); - - sp_filter_primitive_renderer_common(primitive, nr_primitive); -} - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-fetile.h b/src/sp-fetile.h deleted file mode 100644 index efcccf11d..000000000 --- a/src/sp-fetile.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef SP_FETILE_H_SEEN -#define SP_FETILE_H_SEEN - -/** \file - * SVG implementation, see sp-feTile.cpp. - */ -/* - * Authors: - * Hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-filter.h" -#include "sp-fetile-fns.h" - -#include "display/nr-filter.h" -#include "display/nr-filter-tile.h" - -/* FeTile base class */ -class SPFeTileClass; - -struct SPFeTile : public SPFilterPrimitive { - /** TILE ATTRIBUTES HERE */ - -}; - -struct SPFeTileClass { - SPFilterPrimitiveClass parent_class; -}; - -GType sp_feTile_get_type(); - - -#endif /* !SP_FETILE_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-feturbulence-fns.h b/src/sp-feturbulence-fns.h deleted file mode 100644 index 43b4450a5..000000000 --- a/src/sp-feturbulence-fns.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef SP_FETURBULENCE_FNS_H -#define SP_FETURBULENCE_FNS_H - -/** \file - * Macros and fn declarations related to gaussian blur filter. - */ - -#include -#include - -namespace Inkscape { -namespace XML { -class Node; -} -} - -class SPFeTurbulence; - -#define SP_TYPE_FETURBULENCE (sp_feTurbulence_get_type()) -#define SP_FETURBULENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FETURBULENCE, SPFeTurbulence)) -#define SP_FETURBULENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FETURBULENCE, SPFeTurbulenceClass)) -#define SP_IS_FETURBULENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FETURBULENCE)) -#define SP_IS_FETURBULENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FETURBULENCE)) - -GType sp_feTurbulence_get_type(); - -#endif /* !SP_FETURBULENCE_FNS_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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-feturbulence.cpp b/src/sp-feturbulence.cpp deleted file mode 100644 index fcaf6c56f..000000000 --- a/src/sp-feturbulence.cpp +++ /dev/null @@ -1,283 +0,0 @@ -#define __SP_FETURBULENCE_CPP__ - -/** \file - * SVG implementation. - * - */ -/* - * Authors: - * Felipe Corrêa da Silva Sanches - * hugo Rodrigues - * - * Copyright (C) 2007 Felipe Sanches - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "attributes.h" -#include "svg/svg.h" -#include "sp-feturbulence.h" -#include "helper-fns.h" -#include "xml/repr.h" -#include - -#include "display/nr-filter.h" -#include "display/nr-filter-turbulence.h" - -/* FeTurbulence base class */ - -static void sp_feTurbulence_class_init(SPFeTurbulenceClass *klass); -static void sp_feTurbulence_init(SPFeTurbulence *feTurbulence); - -static void sp_feTurbulence_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_feTurbulence_release(SPObject *object); -static void sp_feTurbulence_set(SPObject *object, unsigned int key, gchar const *value); -static void sp_feTurbulence_update(SPObject *object, SPCtx *ctx, guint flags); -static Inkscape::XML::Node *sp_feTurbulence_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static void sp_feTurbulence_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter); - -static SPFilterPrimitiveClass *feTurbulence_parent_class; - -GType -sp_feTurbulence_get_type() -{ - static GType feTurbulence_type = 0; - - if (!feTurbulence_type) { - GTypeInfo feTurbulence_info = { - sizeof(SPFeTurbulenceClass), - NULL, NULL, - (GClassInitFunc) sp_feTurbulence_class_init, - NULL, NULL, - sizeof(SPFeTurbulence), - 16, - (GInstanceInitFunc) sp_feTurbulence_init, - NULL, /* value_table */ - }; - feTurbulence_type = g_type_register_static(SP_TYPE_FILTER_PRIMITIVE, "SPFeTurbulence", &feTurbulence_info, (GTypeFlags)0); - } - return feTurbulence_type; -} - -static void -sp_feTurbulence_class_init(SPFeTurbulenceClass *klass) -{ - SPObjectClass *sp_object_class = (SPObjectClass *)klass; - SPFilterPrimitiveClass * sp_primitive_class = (SPFilterPrimitiveClass *)klass; - - feTurbulence_parent_class = (SPFilterPrimitiveClass*)g_type_class_peek_parent(klass); - - sp_object_class->build = sp_feTurbulence_build; - sp_object_class->release = sp_feTurbulence_release; - sp_object_class->write = sp_feTurbulence_write; - sp_object_class->set = sp_feTurbulence_set; - sp_object_class->update = sp_feTurbulence_update; - - sp_primitive_class->build_renderer = sp_feTurbulence_build_renderer; -} - -static void -sp_feTurbulence_init(SPFeTurbulence *feTurbulence) -{ - feTurbulence->updated=false; -} - -/** - * Reads the Inkscape::XML::Node, and initializes SPFeTurbulence variables. For this to get called, - * our name must be associated with a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void -sp_feTurbulence_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) feTurbulence_parent_class)->build) { - ((SPObjectClass *) feTurbulence_parent_class)->build(object, document, repr); - } - - /*LOAD ATTRIBUTES FROM REPR HERE*/ - sp_object_read_attr(object, "baseFrequency"); - sp_object_read_attr(object, "numOctaves"); - sp_object_read_attr(object, "seed"); - sp_object_read_attr(object, "stitchTiles"); - sp_object_read_attr(object, "type"); -} - -/** - * Drops any allocated memory. - */ -static void -sp_feTurbulence_release(SPObject *object) -{ - if (((SPObjectClass *) feTurbulence_parent_class)->release) - ((SPObjectClass *) feTurbulence_parent_class)->release(object); -} - -static bool sp_feTurbulence_read_stitchTiles(gchar const *value){ - if (!value) return false; // 'noStitch' is default - switch(value[0]){ - case 's': - if (strncmp(value, "stitch", 6) == 0) return true; - break; - case 'n': - if (strncmp(value, "noStitch", 8) == 0) return false; - break; - } - return false; // 'noStitch' is default -} - -static NR::FilterTurbulenceType sp_feTurbulence_read_type(gchar const *value){ - if (!value) return NR::TURBULENCE_TURBULENCE; // 'turbulence' is default - switch(value[0]){ - case 'f': - if (strncmp(value, "fractalNoise", 12) == 0) return NR::TURBULENCE_FRACTALNOISE; - break; - case 't': - if (strncmp(value, "turbulence", 10) == 0) return NR::TURBULENCE_TURBULENCE; - break; - } - return NR::TURBULENCE_TURBULENCE; // 'turbulence' is default -} - -/** - * Sets a specific value in the SPFeTurbulence. - */ -static void -sp_feTurbulence_set(SPObject *object, unsigned int key, gchar const *value) -{ - SPFeTurbulence *feTurbulence = SP_FETURBULENCE(object); - (void)feTurbulence; - - int read_int; - double read_num; - bool read_bool; - NR::FilterTurbulenceType read_type; - - switch(key) { - /*DEAL WITH SETTING ATTRIBUTES HERE*/ - - case SP_ATTR_BASEFREQUENCY: - feTurbulence->baseFrequency.set(value); - //From SVG spec: If two s are provided, the first number represents a base frequency in the X direction and the second value represents a base frequency in the Y direction. If one number is provided, then that value is used for both X and Y. - if (feTurbulence->baseFrequency.optNumIsSet() == false) - feTurbulence->baseFrequency.setOptNumber(feTurbulence->baseFrequency.getNumber()); - feTurbulence->updated = false; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; - case SP_ATTR_NUMOCTAVES: - read_int = (int) helperfns_read_number(value); - if (read_int != feTurbulence->numOctaves){ - feTurbulence->numOctaves = read_int; - feTurbulence->updated = false; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_SEED: - read_num = helperfns_read_number(value); - if (read_num != feTurbulence->seed){ - feTurbulence->seed = read_num; - feTurbulence->updated = false; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_STITCHTILES: - read_bool = sp_feTurbulence_read_stitchTiles(value); - if (read_bool != feTurbulence->stitchTiles){ - feTurbulence->stitchTiles = read_bool; - feTurbulence->updated = false; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - case SP_ATTR_TYPE: - read_type = sp_feTurbulence_read_type(value); - if (read_type != feTurbulence->type){ - feTurbulence->type = read_type; - feTurbulence->updated = false; - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); - } - break; - default: - if (((SPObjectClass *) feTurbulence_parent_class)->set) - ((SPObjectClass *) feTurbulence_parent_class)->set(object, key, value); - break; - } - -} - -/** - * Receives update notifications. - */ -static void -sp_feTurbulence_update(SPObject *object, SPCtx *ctx, guint flags) -{ - if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | - SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { - - /* do something to trigger redisplay, updates? */ - - } - - if (((SPObjectClass *) feTurbulence_parent_class)->update) { - ((SPObjectClass *) feTurbulence_parent_class)->update(object, ctx, flags); - } -} - -/** - * Writes its settings to an incoming repr object, if any. - */ -static Inkscape::XML::Node * -sp_feTurbulence_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) -{ - // Inkscape-only object, not copied during an "plain SVG" dump: - if (flags & SP_OBJECT_WRITE_EXT) { - if (repr) { - // is this sane? - //repr->mergeFrom(SP_OBJECT_REPR(object), "id"); - } else { - repr = SP_OBJECT_REPR(object)->duplicate(doc); - } - } - - if (((SPObjectClass *) feTurbulence_parent_class)->write) { - ((SPObjectClass *) feTurbulence_parent_class)->write(object, doc, repr, flags); - } - - return repr; -} - -static void sp_feTurbulence_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) { - g_assert(primitive != NULL); - g_assert(filter != NULL); - - SPFeTurbulence *sp_turbulence = SP_FETURBULENCE(primitive); - - int primitive_n = filter->add_primitive(NR::NR_FILTER_TURBULENCE); - NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); - NR::FilterTurbulence *nr_turbulence = dynamic_cast(nr_primitive); - g_assert(nr_turbulence != NULL); - - sp_filter_primitive_renderer_common(primitive, nr_primitive); - - nr_turbulence->set_baseFrequency(0, sp_turbulence->baseFrequency.getNumber()); - nr_turbulence->set_baseFrequency(1, sp_turbulence->baseFrequency.getOptNumber()); - nr_turbulence->set_numOctaves(sp_turbulence->numOctaves); - nr_turbulence->set_seed(sp_turbulence->seed); - nr_turbulence->set_stitchTiles(sp_turbulence->stitchTiles); - nr_turbulence->set_type(sp_turbulence->type); - nr_turbulence->set_updated(sp_turbulence->updated); -} - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-feturbulence.h b/src/sp-feturbulence.h deleted file mode 100644 index 6ae993d27..000000000 --- a/src/sp-feturbulence.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef SP_FETURBULENCE_H_SEEN -#define SP_FETURBULENCE_H_SEEN - -/** \file - * SVG implementation, see sp-feTurbulence.cpp. - */ -/* - * Authors: - * Felipe Corrêa da Silva Sanches - * Hugo Rodrigues - * - * Copyright (C) 2006 Hugo Rodrigues - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "sp-filter.h" -#include "sp-feturbulence-fns.h" -#include "number-opt-number.h" -#include "display/nr-filter-turbulence.h" - -/* FeTurbulence base class */ -class SPFeTurbulenceClass; - -struct SPFeTurbulence : public SPFilterPrimitive { - /** TURBULENCE ATTRIBUTES HERE */ - NumberOptNumber baseFrequency; - int numOctaves; - double seed; - bool stitchTiles; - NR::FilterTurbulenceType type; - SVGLength x, y, height, width; - bool updated; -}; - -struct SPFeTurbulenceClass { - SPFilterPrimitiveClass parent_class; -}; - -GType sp_feTurbulence_get_type(); - - -#endif /* !SP_FETURBULENCE_H_SEEN */ - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index 83c13ca05..e0f9b3472 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -352,7 +352,7 @@ sp_flowtext_print(SPItem *item, SPPrintContext *ctx) NRRect pbox; sp_item_invoke_bbox(item, &pbox, Geom::identity(), TRUE); NRRect bbox; - boost::optional bbox_maybe = sp_item_bbox_desktop(item); + Geom::OptRect bbox_maybe = sp_item_bbox_desktop(item); if (!bbox_maybe) { return; } @@ -577,6 +577,10 @@ SPFlowtext::getAsText() sp_repr_set_svg_double(span_tspan, "x", anchor_point[Geom::X]); // FIXME: this will pick up the wrong end of counter-directional runs if (set_y) sp_repr_set_svg_double(span_tspan, "y", anchor_point[Geom::Y]); + if (line_tspan->childCount() == 0) { + sp_repr_set_svg_double(line_tspan, "x", anchor_point[Geom::X]); // FIXME: this will pick up the wrong end of counter-directional runs + sp_repr_set_svg_double(line_tspan, "y", anchor_point[Geom::Y]); + } SPObject *source_obj = 0; void *rawptr = 0; diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp index d0338f369..2b42a855b 100644 --- a/src/sp-item-group.cpp +++ b/src/sp-item-group.cpp @@ -701,7 +701,7 @@ void CGroup::onModified(guint flags) { void CGroup::calculateBBox(NRRect *bbox, Geom::Matrix const &transform, unsigned const flags) { - boost::optional dummy_bbox; + Geom::OptRect dummy_bbox; GSList *l = _group->childList(false, SPObject::ActionBBox); while (l) { @@ -836,7 +836,7 @@ sp_group_update_patheffect (SPLPEItem *lpeitem, bool write) for (PathEffectList::iterator it = lpeitem->path_effect_list->begin(); it != lpeitem->path_effect_list->end(); it++) { LivePathEffectObject *lpeobj = (*it)->lpeobject; - if (lpeobj->get_lpe()) { + if (lpeobj && lpeobj->get_lpe()) { lpeobj->get_lpe()->doBeforeEffect(lpeitem); } } diff --git a/src/sp-item-transform.cpp b/src/sp-item-transform.cpp index 3b0b1e054..90f84ae0a 100644 --- a/src/sp-item-transform.cpp +++ b/src/sp-item-transform.cpp @@ -38,7 +38,7 @@ sp_item_rotate_rel(SPItem *item, Geom::Rotate const &rotation) void sp_item_scale_rel (SPItem *item, Geom::Scale const &scale) { - boost::optional bbox = sp_item_bbox_desktop(item); + Geom::OptRect bbox = sp_item_bbox_desktop(item); if (bbox) { Geom::Translate const s(bbox->midpoint()); // use getCenter? sp_item_set_i2d_affine(item, sp_item_i2d_affine(item) * s.inverse() * scale * s); @@ -95,7 +95,7 @@ get_scale_transform_with_stroke (Geom::Rect const &bbox_param, gdouble strokewid gdouble h1 = y1 - y0; gdouble r0 = strokewidth; - if (bbox.isEmpty()) { + if (bbox.hasZeroArea()) { Geom::Matrix move = Geom::Translate(x0 - bbox.min()[Geom::X], y0 - bbox.min()[Geom::Y]); return (move); // cannot scale from empty boxes at all, so only translate } @@ -158,7 +158,7 @@ get_scale_transform_with_stroke (Geom::Rect const &bbox_param, gdouble strokewid } Geom::Rect -get_visual_bbox (boost::optional const &initial_geom_bbox, Geom::Matrix const &abs_affine, gdouble const initial_strokewidth, bool const transform_stroke) +get_visual_bbox (Geom::OptRect const &initial_geom_bbox, Geom::Matrix const &abs_affine, gdouble const initial_strokewidth, bool const transform_stroke) { g_assert(initial_geom_bbox); diff --git a/src/sp-item-transform.h b/src/sp-item-transform.h index 884732abe..40bf0fa4e 100644 --- a/src/sp-item-transform.h +++ b/src/sp-item-transform.h @@ -10,7 +10,7 @@ void sp_item_skew_rel (SPItem *item, double skewX, double skewY); void sp_item_move_rel(SPItem *item, Geom::Translate const &tr); Geom::Matrix get_scale_transform_with_stroke (Geom::Rect const &bbox, gdouble strokewidth, bool transform_stroke, gdouble x0, gdouble y0, gdouble x1, gdouble y1); -Geom::Rect get_visual_bbox (boost::optional const &initial_geom_bbox, Geom::Matrix const &abs_affine, gdouble const initial_strokewidth, bool const transform_stroke); +Geom::Rect get_visual_bbox (Geom::OptRect const &initial_geom_bbox, Geom::Matrix const &abs_affine, gdouble const initial_strokewidth, bool const transform_stroke); #endif /* !SP_ITEM_TRANSFORM_H */ diff --git a/src/sp-item.cpp b/src/sp-item.cpp index 99f543328..8868b7875 100644 --- a/src/sp-item.cpp +++ b/src/sp-item.cpp @@ -291,7 +291,7 @@ SPItem::setExplicitlyHidden(bool const val) { */ void SPItem::setCenter(Geom::Point object_centre) { - boost::optional bbox = getBounds(sp_item_i2d_affine(this)); + Geom::OptRect bbox = getBounds(sp_item_i2d_affine(this)); if (bbox) { transform_center_x = object_centre[Geom::X] - bbox->midpoint()[Geom::X]; if (fabs(transform_center_x) < 1e-5) // rounding error @@ -313,7 +313,7 @@ bool SPItem::isCenterSet() { } Geom::Point SPItem::getCenter() const { - boost::optional bbox = getBounds(sp_item_i2d_affine(this)); + Geom::OptRect bbox = getBounds(sp_item_i2d_affine(this)); if (bbox) { return to_2geom(bbox->midpoint()) + Geom::Point (this->transform_center_x, this->transform_center_y); } else { @@ -642,14 +642,13 @@ sp_item_update(SPObject *object, SPCtx *ctx, guint flags) /* Update bounding box data used by filters */ if (item->style->filter.set && item->display) { - NRRect item_bbox; - sp_item_invoke_bbox(item, &item_bbox, Geom::identity(), TRUE, SPItem::GEOMETRIC_BBOX); - boost::optional i_bbox = item_bbox; + Geom::OptRect item_bbox; + sp_item_invoke_bbox(item, item_bbox, Geom::identity(), TRUE, SPItem::GEOMETRIC_BBOX); SPItemView *itemview = item->display; do { if (itemview->arenaitem) - nr_arena_item_set_item_bbox(itemview->arenaitem, i_bbox); + nr_arena_item_set_item_bbox(itemview->arenaitem, item_bbox); } while ( (itemview = itemview->next) ); } @@ -725,22 +724,22 @@ sp_item_write(SPObject *const object, Inkscape::XML::Document *xml_doc, Inkscape * \return There is no guarantee that the return value will contain a rectangle. If this item does not have a boundingbox, it might well be empty. */ -boost::optional SPItem::getBounds(Geom::Matrix const &transform, +Geom::OptRect SPItem::getBounds(Geom::Matrix const &transform, SPItem::BBoxType type, unsigned int /*dkey*/) const { - boost::optional r; + Geom::OptRect r; sp_item_invoke_bbox_full(this, r, transform, type, TRUE); return r; } void -sp_item_invoke_bbox(SPItem const *item, boost::optional &bbox, Geom::Matrix const &transform, unsigned const clear, SPItem::BBoxType type) +sp_item_invoke_bbox(SPItem const *item, Geom::OptRect &bbox, Geom::Matrix const &transform, unsigned const clear, SPItem::BBoxType type) { sp_item_invoke_bbox_full(item, bbox, transform, type, clear); } -// DEPRECATED to phase out the use of NRRect in favor of boost::optional +// DEPRECATED to phase out the use of NRRect in favor of Geom::OptRect void sp_item_invoke_bbox(SPItem const *item, NRRect *bbox, Geom::Matrix const &transform, unsigned const clear, SPItem::BBoxType type) { @@ -755,13 +754,13 @@ sp_item_invoke_bbox(SPItem const *item, NRRect *bbox, Geom::Matrix const &transf * function returns. If this item does not have a boundingbox, this might well be empty. */ void -sp_item_invoke_bbox_full(SPItem const *item, boost::optional &bbox, Geom::Matrix const &transform, unsigned const flags, unsigned const clear) +sp_item_invoke_bbox_full(SPItem const *item, Geom::OptRect &bbox, Geom::Matrix const &transform, unsigned const flags, unsigned const clear) { g_assert(item != NULL); g_assert(SP_IS_ITEM(item)); if (clear) { - bbox = boost::optional(); + bbox = Geom::OptRect(); } // TODO: replace NRRect by Geom::Rect, for all SPItemClasses, and for SP_CLIPPATH @@ -844,20 +843,20 @@ sp_item_invoke_bbox_full(SPItem const *item, boost::optional &bbox, // or it has explicitely been set to be like this (e.g. in sp_shape_bbox) // When x0 > x1 or y0 > y1, the bbox is considered to be "nothing", although it has not been - // explicitely defined this way for NRRects (as opposed to boost::optional) + // explicitely defined this way for NRRects (as opposed to Geom::OptRect) // So union bbox with nothing = do nothing, just return return; } - // Do not use temp_bbox.upgrade() here, because it uses a test that returns an empty boost::optional() + // Do not use temp_bbox.upgrade() here, because it uses a test that returns an empty Geom::OptRect() // for any rectangle with zero area. The geometrical bbox of for example a vertical line - // would therefore be translated into empty boost::optional() (see bug https://bugs.launchpad.net/inkscape/+bug/168684) - boost::optional temp_bbox_new = Geom::Rect(Geom::Point(temp_bbox.x0, temp_bbox.y0), Geom::Point(temp_bbox.x1, temp_bbox.y1)); + // would therefore be translated into empty Geom::OptRect() (see bug https://bugs.launchpad.net/inkscape/+bug/168684) + Geom::OptRect temp_bbox_new = Geom::Rect(Geom::Point(temp_bbox.x0, temp_bbox.y0), Geom::Point(temp_bbox.x1, temp_bbox.y1)); bbox = Geom::unify(bbox, temp_bbox_new); } -// DEPRECATED to phase out the use of NRRect in favor of boost::optional +// DEPRECATED to phase out the use of NRRect in favor of Geom::OptRect /** Calls \a item's subclass' bounding box method; clips it by the bbox of clippath, if any; and * unions the resulting bbox with \a bbox. If \a clear is true, empties \a bbox first. Passes the * transform and the flags to the actual bbox methods. Note that many of subclasses (e.g. groups, @@ -931,9 +930,9 @@ sp_item_bbox_desktop(SPItem *item, NRRect *bbox, SPItem::BBoxType type) sp_item_invoke_bbox(item, bbox, sp_item_i2d_affine(item), TRUE, type); } -boost::optional sp_item_bbox_desktop(SPItem *item, SPItem::BBoxType type) +Geom::OptRect sp_item_bbox_desktop(SPItem *item, SPItem::BBoxType type) { - boost::optional rect = boost::optional(); + Geom::OptRect rect = Geom::OptRect(); sp_item_invoke_bbox(item, rect, sp_item_i2d_affine(item), TRUE, type); return rect; } @@ -945,7 +944,7 @@ static void sp_item_private_snappoints(SPItem const *item, SnapPointsIter p, Ink * We don't know what shape we could be dealing with here, so we'll just * return the corners of the bounding box */ - boost::optional bbox = item->getBounds(sp_item_i2d_affine(item)); + Geom::OptRect bbox = item->getBounds(sp_item_i2d_affine(item)); if (bbox) { Geom::Point p1, p2; @@ -1134,10 +1133,9 @@ sp_item_invoke_show(SPItem *item, NRArena *arena, unsigned key, unsigned flags) SP_OBJECT(mask)->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); } NR_ARENA_ITEM_SET_DATA(ai, item); - NRRect item_bbox; - sp_item_invoke_bbox(item, &item_bbox, Geom::identity(), TRUE, SPItem::GEOMETRIC_BBOX); - boost::optional i_bbox = item_bbox; - nr_arena_item_set_item_bbox(ai, i_bbox); + Geom::OptRect item_bbox; + sp_item_invoke_bbox(item, item_bbox, Geom::identity(), TRUE, SPItem::GEOMETRIC_BBOX); + nr_arena_item_set_item_bbox(ai, item_bbox); } return ai; @@ -1740,7 +1738,7 @@ sp_item_convert_to_guides(SPItem *item) { SPItem::BBoxType bbox_type = (prefs_bbox ==0)? SPItem::APPROXIMATE_BBOX : SPItem::GEOMETRIC_BBOX; - boost::optional bbox = sp_item_bbox_desktop(item, bbox_type); + Geom::OptRect bbox = sp_item_bbox_desktop(item, bbox_type); if (!bbox) { g_warning ("Cannot determine item's bounding box during conversion to guides.\n"); return; diff --git a/src/sp-item.h b/src/sp-item.h index cd0a376bb..1cc05eb25 100644 --- a/src/sp-item.h +++ b/src/sp-item.h @@ -155,7 +155,7 @@ struct SPItem : public SPObject { void raiseToTop(); void lowerToBottom(); - boost::optional getBounds(Geom::Matrix const &transform, BBoxType type=APPROXIMATE_BBOX, unsigned int dkey=0) const; + Geom::OptRect getBounds(Geom::Matrix const &transform, BBoxType type=APPROXIMATE_BBOX, unsigned int dkey=0) const; sigc::connection _clip_ref_connection; sigc::connection _mask_ref_connection; @@ -214,9 +214,9 @@ struct SPItemClass { /* Methods */ -void sp_item_invoke_bbox(SPItem const *item, boost::optional &bbox, Geom::Matrix const &transform, unsigned const clear, SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX); +void sp_item_invoke_bbox(SPItem const *item, Geom::OptRect &bbox, Geom::Matrix const &transform, unsigned const clear, SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX); void sp_item_invoke_bbox(SPItem const *item, NRRect *bbox, Geom::Matrix const &transform, unsigned const clear, SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX) __attribute__ ((deprecated)); -void sp_item_invoke_bbox_full(SPItem const *item, boost::optional &bbox, Geom::Matrix const &transform, unsigned const flags, unsigned const clear); +void sp_item_invoke_bbox_full(SPItem const *item, Geom::OptRect &bbox, Geom::Matrix const &transform, unsigned const flags, unsigned const clear); void sp_item_invoke_bbox_full(SPItem const *item, NRRect *bbox, Geom::Matrix const &transform, unsigned const flags, unsigned const clear) __attribute__ ((deprecated)); unsigned sp_item_pos_in_parent(SPItem *item); @@ -252,7 +252,7 @@ gint sp_item_event (SPItem *item, SPEvent *event); NRArenaItem *sp_item_get_arenaitem(SPItem *item, unsigned int key); void sp_item_bbox_desktop(SPItem *item, NRRect *bbox, SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX) __attribute__ ((deprecated)); -boost::optional sp_item_bbox_desktop(SPItem *item, SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX); +Geom::OptRect sp_item_bbox_desktop(SPItem *item, SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX); Geom::Matrix i2anc_affine(SPObject const *item, SPObject const *ancestor); Geom::Matrix i2i_affine(SPObject const *src, SPObject const *dest); diff --git a/src/sp-lpe-item.cpp b/src/sp-lpe-item.cpp index 0fe02e01d..1939b2ec0 100644 --- a/src/sp-lpe-item.cpp +++ b/src/sp-lpe-item.cpp @@ -209,19 +209,17 @@ sp_lpe_item_set(SPObject *object, unsigned int key, gchar const *value) try { path_effect_ref->link(href.c_str()); } catch (Inkscape::BadURIException e) { - g_warning("BadURIException: %s", e.what()); + g_warning("BadURIException when trying to find LPE: %s", e.what()); path_effect_ref->unlink(); delete path_effect_ref; path_effect_ref = NULL; } - if (path_effect_ref && path_effect_ref->lpeobject && path_effect_ref->lpeobject->get_lpe()) { - lpeitem->path_effect_list->push_back(path_effect_ref); - } else { - // something has gone wrong in finding the right patheffect. For example when the specified LPE name does not exist. - path_effect_ref->unlink(); - delete path_effect_ref; - path_effect_ref = NULL; + lpeitem->path_effect_list->push_back(path_effect_ref); + if ( !(path_effect_ref->lpeobject && path_effect_ref->lpeobject->get_lpe()) ) { + // something has gone wrong in finding the right patheffect. + g_warning("Unknown LPE type specified, LPE stack effectively disabled"); + // keep the effect in the lpestack, so the whole stack is effectively disabled but maintained } } } @@ -300,9 +298,12 @@ sp_lpe_item_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape:: return repr; } -void sp_lpe_item_perform_path_effect(SPLPEItem *lpeitem, SPCurve *curve) { - if (!lpeitem) return; - if (!curve) return; +/** + * returns true when LPE was successful. + */ +bool sp_lpe_item_perform_path_effect(SPLPEItem *lpeitem, SPCurve *curve) { + if (!lpeitem) return false; + if (!curve) return false; if (sp_lpe_item_has_path_effect(lpeitem) && sp_lpe_item_path_effects_enabled(lpeitem)) { for (PathEffectList::iterator it = lpeitem->path_effect_list->begin(); it != lpeitem->path_effect_list->end(); ++it) @@ -313,22 +314,22 @@ void sp_lpe_item_perform_path_effect(SPLPEItem *lpeitem, SPCurve *curve) { * For example, this happens when copy pasting an object with LPE applied. Probably because the object is pasted while the effect is not yet pasted to defs, and cannot be found. */ g_warning("sp_lpe_item_perform_path_effect - NULL lpeobj in list!"); - return; + return false; } Inkscape::LivePathEffect::Effect *lpe = lpeobj->get_lpe(); if (!lpe) { /** \todo Investigate the cause of this. * Not sure, but I think this can happen when an unknown effect type is specified... */ - g_warning("sp_lpe_item_perform_path_effect - lpeobj without lpe!"); - return; + g_warning("sp_lpe_item_perform_path_effect - lpeobj with invalid lpe in the stack!"); + return false; } if (lpe->isVisible()) { if (lpe->acceptsNumClicks() > 0 && !lpe->isReady()) { // if the effect expects mouse input before being applied and the input is not finished // yet, we don't alter the path - return; + return false; } // Groups have their doBeforeEffect called elsewhere @@ -345,10 +346,13 @@ void sp_lpe_item_perform_path_effect(SPLPEItem *lpeitem, SPCurve *curve) { SP_ACTIVE_DESKTOP->messageStack()->flash( Inkscape::WARNING_MESSAGE, _("An exception occurred during execution of the Path Effect.") ); } + return false; } } } } + + return true; } /** diff --git a/src/sp-lpe-item.h b/src/sp-lpe-item.h index c5dc4048b..e9561c2c2 100644 --- a/src/sp-lpe-item.h +++ b/src/sp-lpe-item.h @@ -54,7 +54,7 @@ struct SPLPEItemClass { GType sp_lpe_item_get_type(); void sp_lpe_item_update_patheffect (SPLPEItem *lpeitem, bool wholetree, bool write); -void sp_lpe_item_perform_path_effect(SPLPEItem *lpeitem, SPCurve *curve); +bool sp_lpe_item_perform_path_effect(SPLPEItem *lpeitem, SPCurve *curve); void sp_lpe_item_add_path_effect(SPLPEItem *lpeitem, gchar *value, bool reset); void sp_lpe_item_add_path_effect(SPLPEItem *lpeitem, LivePathEffectObject * new_lpeobj); void sp_lpe_item_replace_path_effect(SPLPEItem *lpeitem, LivePathEffectObject * old_lpeobj, diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp index a73c178c7..2b7c8bbc4 100644 --- a/src/sp-namedview.cpp +++ b/src/sp-namedview.cpp @@ -34,8 +34,6 @@ #include "desktop.h" #include "conn-avoid-ref.h" // for defaultConnSpacing. - -#define DEFAULTTOLERANCE 0.4 #define DEFAULTGRIDCOLOR 0x3f3fff25 #define DEFAULTGRIDEMPCOLOR 0x3f3fff60 #define DEFAULTGRIDEMPSPACING 5 @@ -113,8 +111,7 @@ static void sp_namedview_init(SPNamedView *nv) nv->guides = NULL; nv->viewcount = 0; nv->grids = NULL; - nv->snapindicator = false; - + nv->default_layer_id = 0; nv->connector_spacing = defaultConnSpacing; @@ -246,7 +243,6 @@ static void sp_namedview_build(SPObject *object, SPDocument *document, Inkscape: sp_object_read_attr(object, "inkscape:window-x"); sp_object_read_attr(object, "inkscape:window-y"); sp_object_read_attr(object, "inkscape:snap-global"); - sp_object_read_attr(object, "inkscape:snap-indicator"); sp_object_read_attr(object, "inkscape:snap-bbox"); sp_object_read_attr(object, "inkscape:snap-nodes"); sp_object_read_attr(object, "inkscape:snap-guide"); @@ -327,7 +323,7 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va break; case SP_ATTR_GRIDTOLERANCE: nv->gridtoleranceunit = &px; - nv->gridtolerance = DEFAULTTOLERANCE; + nv->gridtolerance = 10000; if (value) { sp_nv_read_length(value, SP_UNIT_ABSOLUTE | SP_UNIT_DEVICE, &nv->gridtolerance, &nv->gridtoleranceunit); } @@ -335,7 +331,7 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va break; case SP_ATTR_GUIDETOLERANCE: nv->guidetoleranceunit = &px; - nv->guidetolerance = DEFAULTTOLERANCE; + nv->guidetolerance = 20; if (value) { sp_nv_read_length(value, SP_UNIT_ABSOLUTE | SP_UNIT_DEVICE, &nv->guidetolerance, &nv->guidetoleranceunit); } @@ -343,7 +339,7 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va break; case SP_ATTR_OBJECTTOLERANCE: nv->objecttoleranceunit = &px; - nv->objecttolerance = DEFAULTTOLERANCE; + nv->objecttolerance = 20; if (value) { sp_nv_read_length(value, SP_UNIT_ABSOLUTE | SP_UNIT_DEVICE, &nv->objecttolerance, &nv->objecttoleranceunit); } @@ -458,10 +454,6 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va nv->snap_manager.snapprefs.setSnapEnabledGlobally(value ? sp_str_to_bool(value) : TRUE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; - case SP_ATTR_INKSCAPE_SNAP_INDICATOR: - nv->snapindicator = (value) ? sp_str_to_bool (value) : TRUE; - object->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; case SP_ATTR_INKSCAPE_SNAP_BBOX: nv->snap_manager.snapprefs.setSnapModeBBox(value ? sp_str_to_bool(value) : FALSE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); diff --git a/src/sp-namedview.h b/src/sp-namedview.h index 3ed02bf59..5a9c2971f 100644 --- a/src/sp-namedview.h +++ b/src/sp-namedview.h @@ -51,8 +51,7 @@ struct SPNamedView : public SPObjectGroup { SnapManager snap_manager; GSList * grids; bool grids_visible; - bool snapindicator; - + SPUnit const *doc_units; SPUnit const *gridtoleranceunit; diff --git a/src/sp-object-repr.cpp b/src/sp-object-repr.cpp index f45ed1283..4c3d5196e 100644 --- a/src/sp-object-repr.cpp +++ b/src/sp-object-repr.cpp @@ -60,26 +60,26 @@ #include "xml/repr.h" #include "sp-filter.h" #include "sp-gaussian-blur.h" -#include "sp-feblend.h" -#include "sp-fecolormatrix.h" -#include "sp-fecomponenttransfer.h" -#include "sp-fecomponenttransfer-funcnode.h" -#include "sp-fecomposite.h" -#include "sp-feconvolvematrix.h" -#include "sp-fediffuselighting.h" -#include "sp-fedistantlight.h" -#include "sp-fedisplacementmap.h" -#include "sp-feflood.h" -#include "sp-feimage.h" -#include "sp-femerge.h" -#include "sp-femorphology.h" -#include "sp-feoffset.h" -#include "sp-fepointlight.h" -#include "sp-fespecularlighting.h" -#include "sp-fespotlight.h" -#include "sp-fetile.h" -#include "sp-feturbulence.h" -#include "sp-femergenode.h" +#include "filters/blend.h" +#include "filters/colormatrix.h" +#include "filters/componenttransfer.h" +#include "filters/componenttransfer-funcnode.h" +#include "filters/composite.h" +#include "filters/convolvematrix.h" +#include "filters/diffuselighting.h" +#include "filters/distantlight.h" +#include "filters/displacementmap.h" +#include "filters/flood.h" +#include "filters/image.h" +#include "filters/merge.h" +#include "filters/morphology.h" +#include "filters/offset.h" +#include "filters/pointlight.h" +#include "filters/specularlighting.h" +#include "filters/spotlight.h" +#include "filters/tile.h" +#include "filters/turbulence.h" +#include "filters/mergenode.h" #include "live_effects/lpeobject.h" #include "sp-title.h" #include "sp-desc.h" diff --git a/src/sp-offset.cpp b/src/sp-offset.cpp index c91b0ad0d..faa2cf457 100644 --- a/src/sp-offset.cpp +++ b/src/sp-offset.cpp @@ -510,8 +510,8 @@ sp_offset_set_shape(SPShape *shape) theRes->ConvertToForme (orig, 1, originaux); SPItem *item = shape; - boost::optional bbox = sp_item_bbox_desktop (item); - if ( bbox && !bbox->isEmpty() ) { + Geom::OptRect bbox = sp_item_bbox_desktop (item); + if ( bbox ) { gdouble size = L2(bbox->dimensions()); gdouble const exp = NR::expansion(item->transform); if (exp != 0) diff --git a/src/sp-path.cpp b/src/sp-path.cpp index 404612be3..51c3746c8 100644 --- a/src/sp-path.cpp +++ b/src/sp-path.cpp @@ -388,19 +388,17 @@ sp_path_update_patheffect(SPLPEItem *lpeitem, bool write) { SPShape * const shape = (SPShape *) lpeitem; SPPath * const path = (SPPath *) lpeitem; + Inkscape::XML::Node *repr = SP_OBJECT_REPR(shape); if (path->original_curve) { - // if a path does not have an lpeitem applied, then reset the curve to the original_curve. - // This is very important for LPEs on groups to work properly! SPCurve *curve = path->original_curve->copy(); + /* if a path does not have an lpeitem applied, then reset the curve to the original_curve. + * This is very important for LPEs to work properly! (the bbox might be recalculated depending on the curve in shape)*/ sp_shape_set_curve_insync(shape, curve, TRUE); - sp_lpe_item_perform_path_effect(SP_LPE_ITEM(shape), curve); - SP_OBJECT(shape)->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); // this might be optimized in future for the case when this path is in a group with lpe applied (and will therefore have its curve change again when the group LPE is applied) - curve->unref(); - if (write) { + bool success = sp_lpe_item_perform_path_effect(SP_LPE_ITEM(shape), curve); + if (success && write) { // could also do SP_OBJECT(shape)->updateRepr(); but only the d attribute needs updating. - Inkscape::XML::Node *repr = SP_OBJECT_REPR(shape); if ( shape->curve != NULL ) { gchar *str = sp_svg_write_path(shape->curve->get_pathvector()); repr->setAttribute("d", str); @@ -408,7 +406,19 @@ sp_path_update_patheffect(SPLPEItem *lpeitem, bool write) } else { repr->setAttribute("d", NULL); } + } else { + // LPE was unsuccesfull. Read the old 'd'-attribute. + if (gchar const * value = repr->attribute("d")) { + Geom::PathVector pv = sp_svg_read_pathv(value); + SPCurve *oldcurve = new SPCurve(pv); + if (oldcurve) { + sp_shape_set_curve(shape, oldcurve, TRUE); + oldcurve->unref(); + } + } } + SP_OBJECT(shape)->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + curve->unref(); } } diff --git a/src/sp-pattern.cpp b/src/sp-pattern.cpp index 96ff50cda..711f2c408 100644 --- a/src/sp-pattern.cpp +++ b/src/sp-pattern.cpp @@ -226,7 +226,7 @@ sp_pattern_set (SPObject *object, unsigned int key, const gchar *value) object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_PATTERNTRANSFORM: { - NR::Matrix t; + Geom::Matrix t; if (value && sp_svg_transform_read (value, &t)) { pat->patternTransform = t; pat->patternTransform_set = TRUE; diff --git a/src/sp-shape.cpp b/src/sp-shape.cpp index 2a23b1115..d3f357e76 100644 --- a/src/sp-shape.cpp +++ b/src/sp-shape.cpp @@ -276,7 +276,7 @@ sp_shape_update (SPObject *object, SPCtx *ctx, unsigned int flags) if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_PARENT_MODIFIED_FLAG)) { /* This is suboptimal, because changing parent style schedules recalculation */ /* But on the other hand - how can we know that parent does not tie style and transform */ - boost::optional paintbox = SP_ITEM(object)->getBounds(Geom::identity(), SPItem::GEOMETRIC_BBOX); + Geom::OptRect paintbox = SP_ITEM(object)->getBounds(Geom::identity(), SPItem::GEOMETRIC_BBOX); for (SPItemView *v = SP_ITEM (shape)->display; v != NULL; v = v->next) { NRArenaShape * const s = NR_ARENA_SHAPE(v->arenaitem); if (flags & SP_OBJECT_MODIFIED_FLAG) { @@ -484,69 +484,40 @@ static void sp_shape_bbox(SPItem const *item, NRRect *bbox, Geom::Matrix const & { SPShape const *shape = SP_SHAPE (item); if (shape->curve) { - - NRRect cbbox; - - Geom::Rect geombbox = bounds_exact_transformed(shape->curve->get_pathvector(), transform); - cbbox.x0 = geombbox[0][0]; - cbbox.y0 = geombbox[1][0]; - cbbox.x1 = geombbox[0][1]; - cbbox.y1 = geombbox[1][1]; - - if ((SPItem::BBoxType) flags != SPItem::GEOMETRIC_BBOX) { - - SPStyle* style=SP_OBJECT_STYLE (item); - if (!style->stroke.isNone()) { - double const scale = transform.descrim(); - if ( fabs(style->stroke_width.computed * scale) > 0.01 ) { // sinon c'est 0=oon veut pas de bord - double const width = MAX(0.125, style->stroke_width.computed * scale); - if ( fabs(cbbox.x1-cbbox.x0) > -0.00001 && fabs(cbbox.y1-cbbox.y0) > -0.00001 ) { - cbbox.x0-=0.5*width; - cbbox.x1+=0.5*width; - cbbox.y0-=0.5*width; - cbbox.y1+=0.5*width; - } - } - } - - // Union with bboxes of the markers, if any - if (sp_shape_has_markers (shape)) { - /* TODO: make code prettier: lots of variables can be taken out of the loop! */ - Geom::PathVector const & pathv = shape->curve->get_pathvector(); - for(Geom::PathVector::const_iterator path_it = pathv.begin(); path_it != pathv.end(); ++path_it) { - if ( shape->marker[SP_MARKER_LOC_START] ) { - SPMarker* marker = SP_MARKER (shape->marker[SP_MARKER_LOC_START]); - SPItem* marker_item = sp_item_first_item_child (SP_OBJECT (shape->marker[SP_MARKER_LOC_START])); - - Geom::Matrix tr(sp_shape_marker_get_transform_at_start(path_it->front())); - - if (marker->markerUnits == SP_MARKER_UNITS_STROKEWIDTH) { - tr = Geom::Scale(style->stroke_width.computed) * tr; + Geom::OptRect geombbox = bounds_exact_transformed(shape->curve->get_pathvector(), transform); + if (geombbox) { + NRRect cbbox; + cbbox.x0 = (*geombbox)[0][0]; + cbbox.y0 = (*geombbox)[1][0]; + cbbox.x1 = (*geombbox)[0][1]; + cbbox.y1 = (*geombbox)[1][1]; + + if ((SPItem::BBoxType) flags != SPItem::GEOMETRIC_BBOX) { + + SPStyle* style=SP_OBJECT_STYLE (item); + if (!style->stroke.isNone()) { + double const scale = transform.descrim(); + if ( fabs(style->stroke_width.computed * scale) > 0.01 ) { // sinon c'est 0=oon veut pas de bord + double const width = MAX(0.125, style->stroke_width.computed * scale); + if ( fabs(cbbox.x1-cbbox.x0) > -0.00001 && fabs(cbbox.y1-cbbox.y0) > -0.00001 ) { + cbbox.x0-=0.5*width; + cbbox.x1+=0.5*width; + cbbox.y0-=0.5*width; + cbbox.y1+=0.5*width; } - - // total marker transform - tr = marker_item->transform * marker->c2p * tr * transform; - - // get bbox of the marker with that transform - NRRect marker_bbox; - sp_item_invoke_bbox (marker_item, &marker_bbox, from_2geom(tr), true); - // union it with the shape bbox - nr_rect_d_union (&cbbox, &cbbox, &marker_bbox); } + } - if ( shape->marker[SP_MARKER_LOC_MID] && (path_it->size_default() > 1) ) { - Geom::Path::const_iterator curve_it1 = path_it->begin(); // incoming curve - Geom::Path::const_iterator curve_it2 = ++(path_it->begin()); // outgoing curve - while (curve_it2 != path_it->end_default()) - { - /* Put marker between curve_it1 and curve_it2. - * Loop to end_default (so including closing segment), because when a path is closed, - * there should be a midpoint marker between last segment and closing straight line segment */ - - SPMarker* marker = SP_MARKER (shape->marker[SP_MARKER_LOC_MID]); - SPItem* marker_item = sp_item_first_item_child (SP_OBJECT (shape->marker[SP_MARKER_LOC_MID])); + // Union with bboxes of the markers, if any + if (sp_shape_has_markers (shape)) { + /* TODO: make code prettier: lots of variables can be taken out of the loop! */ + Geom::PathVector const & pathv = shape->curve->get_pathvector(); + for(Geom::PathVector::const_iterator path_it = pathv.begin(); path_it != pathv.end(); ++path_it) { + if ( shape->marker[SP_MARKER_LOC_START] ) { + SPMarker* marker = SP_MARKER (shape->marker[SP_MARKER_LOC_START]); + SPItem* marker_item = sp_item_first_item_child (SP_OBJECT (shape->marker[SP_MARKER_LOC_START])); - Geom::Matrix tr(sp_shape_marker_get_transform(*curve_it1, *curve_it2)); + Geom::Matrix tr(sp_shape_marker_get_transform_at_start(path_it->front())); if (marker->markerUnits == SP_MARKER_UNITS_STROKEWIDTH) { tr = Geom::Scale(style->stroke_width.computed) * tr; @@ -560,45 +531,74 @@ static void sp_shape_bbox(SPItem const *item, NRRect *bbox, Geom::Matrix const & sp_item_invoke_bbox (marker_item, &marker_bbox, from_2geom(tr), true); // union it with the shape bbox nr_rect_d_union (&cbbox, &cbbox, &marker_bbox); - - ++curve_it1; - ++curve_it2; } - } - if ( shape->marker[SP_MARKER_LOC_END] ) { - SPMarker* marker = SP_MARKER (shape->marker[SP_MARKER_LOC_END]); - SPItem* marker_item = sp_item_first_item_child (SP_OBJECT (shape->marker[SP_MARKER_LOC_END])); + if ( shape->marker[SP_MARKER_LOC_MID] && (path_it->size_default() > 1) ) { + Geom::Path::const_iterator curve_it1 = path_it->begin(); // incoming curve + Geom::Path::const_iterator curve_it2 = ++(path_it->begin()); // outgoing curve + while (curve_it2 != path_it->end_default()) + { + /* Put marker between curve_it1 and curve_it2. + * Loop to end_default (so including closing segment), because when a path is closed, + * there should be a midpoint marker between last segment and closing straight line segment */ - /* Get reference to last curve in the path. - * For moveto-only path, this returns the "closing line segment". */ - unsigned int index = path_it->size_default(); - if (index > 0) { - index--; - } - Geom::Curve const &lastcurve = (*path_it)[index]; + SPMarker* marker = SP_MARKER (shape->marker[SP_MARKER_LOC_MID]); + SPItem* marker_item = sp_item_first_item_child (SP_OBJECT (shape->marker[SP_MARKER_LOC_MID])); + + Geom::Matrix tr(sp_shape_marker_get_transform(*curve_it1, *curve_it2)); + + if (marker->markerUnits == SP_MARKER_UNITS_STROKEWIDTH) { + tr = Geom::Scale(style->stroke_width.computed) * tr; + } - Geom::Matrix tr = sp_shape_marker_get_transform_at_end(lastcurve); + // total marker transform + tr = marker_item->transform * marker->c2p * tr * transform; - if (marker->markerUnits == SP_MARKER_UNITS_STROKEWIDTH) { - tr = Geom::Scale(style->stroke_width.computed) * tr; + // get bbox of the marker with that transform + NRRect marker_bbox; + sp_item_invoke_bbox (marker_item, &marker_bbox, from_2geom(tr), true); + // union it with the shape bbox + nr_rect_d_union (&cbbox, &cbbox, &marker_bbox); + + ++curve_it1; + ++curve_it2; + } } - // total marker transform - tr = marker_item->transform * marker->c2p * tr * transform; + if ( shape->marker[SP_MARKER_LOC_END] ) { + SPMarker* marker = SP_MARKER (shape->marker[SP_MARKER_LOC_END]); + SPItem* marker_item = sp_item_first_item_child (SP_OBJECT (shape->marker[SP_MARKER_LOC_END])); + + /* Get reference to last curve in the path. + * For moveto-only path, this returns the "closing line segment". */ + unsigned int index = path_it->size_default(); + if (index > 0) { + index--; + } + Geom::Curve const &lastcurve = (*path_it)[index]; + + Geom::Matrix tr = sp_shape_marker_get_transform_at_end(lastcurve); - // get bbox of the marker with that transform - NRRect marker_bbox; - sp_item_invoke_bbox (marker_item, &marker_bbox, tr, true); - // union it with the shape bbox - nr_rect_d_union (&cbbox, &cbbox, &marker_bbox); + if (marker->markerUnits == SP_MARKER_UNITS_STROKEWIDTH) { + tr = Geom::Scale(style->stroke_width.computed) * tr; + } + + // total marker transform + tr = marker_item->transform * marker->c2p * tr * transform; + + // get bbox of the marker with that transform + NRRect marker_bbox; + sp_item_invoke_bbox (marker_item, &marker_bbox, tr, true); + // union it with the shape bbox + nr_rect_d_union (&cbbox, &cbbox, &marker_bbox); + } } } } - } - // copy our bbox to the variable we're given - *bbox = cbbox; + // copy our bbox to the variable we're given + *bbox = cbbox; + } } } @@ -744,7 +744,7 @@ sp_shape_show (SPItem *item, NRArena *arena, unsigned int /*key*/, unsigned int NRArenaShape * const s = NR_ARENA_SHAPE(arenaitem); nr_arena_shape_set_style(s, object->style); nr_arena_shape_set_path(s, shape->curve, false); - boost::optional paintbox = item->getBounds(Geom::identity()); + Geom::OptRect paintbox = item->getBounds(Geom::identity()); if (paintbox) { s->setPaintBox(*paintbox); } diff --git a/src/sp-spiral.cpp b/src/sp-spiral.cpp index 9a3708d4b..23233d04e 100644 --- a/src/sp-spiral.cpp +++ b/src/sp-spiral.cpp @@ -455,8 +455,17 @@ sp_spiral_set_shape (SPShape *shape) sp_spiral_fit_and_draw (spiral, c, (1.0 - t)/(SAMPLE_SIZE - 1.0), darray, hat1, hat2, &t); - sp_lpe_item_perform_path_effect(SP_LPE_ITEM (spiral), c); - sp_shape_set_curve_insync ((SPShape *) spiral, c, TRUE); + /* Reset the shape'scurve to the "original_curve" + * This is very important for LPEs to work properly! (the bbox might be recalculated depending on the curve in shape)*/ + sp_shape_set_curve_insync (shape, c, TRUE); + if (sp_lpe_item_has_path_effect(SP_LPE_ITEM(shape)) && sp_lpe_item_path_effects_enabled(SP_LPE_ITEM(shape))) { + SPCurve *c_lpe = c->copy(); + bool success = sp_lpe_item_perform_path_effect(SP_LPE_ITEM (shape), c_lpe); + if (success) { + sp_shape_set_curve_insync (shape, c_lpe, TRUE); + } + c_lpe->unref(); + } c->unref(); } diff --git a/src/sp-star.cpp b/src/sp-star.cpp index f5649e19f..79bdc4650 100644 --- a/src/sp-star.cpp +++ b/src/sp-star.cpp @@ -491,8 +491,18 @@ sp_star_set_shape (SPShape *shape) } c->closepath(); - sp_lpe_item_perform_path_effect(SP_LPE_ITEM (star), c); - sp_shape_set_curve_insync (SP_SHAPE (star), c, TRUE); + + /* Reset the shape'scurve to the "original_curve" + * This is very important for LPEs to work properly! (the bbox might be recalculated depending on the curve in shape)*/ + sp_shape_set_curve_insync (shape, c, TRUE); + if (sp_lpe_item_has_path_effect(SP_LPE_ITEM(shape)) && sp_lpe_item_path_effects_enabled(SP_LPE_ITEM(shape))) { + SPCurve *c_lpe = c->copy(); + bool success = sp_lpe_item_perform_path_effect(SP_LPE_ITEM (shape), c_lpe); + if (success) { + sp_shape_set_curve_insync (shape, c_lpe, TRUE); + } + c_lpe->unref(); + } c->unref(); } diff --git a/src/splivarot.cpp b/src/splivarot.cpp index a3a4ce59f..eb01e625a 100644 --- a/src/splivarot.cpp +++ b/src/splivarot.cpp @@ -1648,7 +1648,7 @@ sp_selected_path_simplify_items(SPDesktop *desktop, bool didSomething = false; - boost::optional selectionBbox = selection->bounds(); + Geom::OptRect selectionBbox = selection->bounds(); if (!selectionBbox) { return false; } @@ -1669,7 +1669,7 @@ sp_selected_path_simplify_items(SPDesktop *desktop, continue; if (simplifyIndividualPaths) { - boost::optional itemBbox = item->getBounds(sp_item_i2d_affine(item)); + Geom::OptRect itemBbox = item->getBounds(sp_item_i2d_affine(item)); if (itemBbox) { simplifySize = L2(itemBbox->dimensions()); } else { diff --git a/src/streams-gzip.cpp b/src/streams-gzip.cpp deleted file mode 100644 index c77e7162b..000000000 --- a/src/streams-gzip.cpp +++ /dev/null @@ -1,153 +0,0 @@ -/* - * IO layer : gzip streambuf and streams - * - * Authors: - * Johan Ceuppens - * - * Copyright (C) 2004 Johan Ceuppens - * - * Released under GNU LGPL, read the file 'COPYING.LIB' for more information - */ - -#include -#include -#include - -#include "streams-gzip.h" - -namespace Inkscape { - -//With some inpsiration and code from libgsf, fastjar, libpng and RFC 1952 - -static int const GZIP_IS_ASCII = 0x01; //file contains text -static int const GZIP_HEADER_CRC = 0x02; //there is a CRC in the header -static int const GZIP_EXTRA_FIELD = 0x04; //there is an 'extra' field -static int const GZIP_ORIGINAL_NAME = 0x08; //the original is stored -static int const GZIP_HAS_COMMENT = 0x10; //There is a comment in the header -static unsigned int const GZIP_HEADER_FLAGS = (GZIP_IS_ASCII - |GZIP_HEADER_CRC - |GZIP_EXTRA_FIELD - |GZIP_ORIGINAL_NAME - |GZIP_HAS_COMMENT); - -/** - * GZipBuffer - */ - -void GZipBuffer::consume_header() throw(GZipHeaderException) -{ - unsigned int flags; - guint8 data[4]; - - try { - _urihandle->read(data, 4); - check_signature(data); - check_flags(data); - flags = data[3]; - _urihandle->read(data, 4); - //get_modification_time() - _urihandle->read(data, 1); - //check_extra_flags(); - _urihandle->read(data, 1); - //check_OS(); - - if (flags & GZIP_EXTRA_FIELD) { - get_extrafield(); - } - if (flags & GZIP_ORIGINAL_NAME) { - get_filename(); - } - if (flags & GZIP_HAS_COMMENT) { - get_comment(); - } - if (flags & GZIP_HEADER_CRC) { - get_crc(); - } - } - catch(std::exception& e) { - throw GZipHeaderException(); - } -} - -void GZipBuffer::check_signature(guint8 *data) throw(GZipHeaderException) -{ - guint8 const signature[2] = {0x1f, 0x8b}; - if (memcmp(data, signature, sizeof(signature)) != 0) - throw GZipHeaderException(); -} - -void GZipBuffer::check_flags(guint8 *data) throw(GZipHeaderException) -{ - unsigned int flags = data[3]; - if (data[2] != Z_DEFLATED || (flags & ~GZIP_HEADER_FLAGS) != 0) - throw GZipHeaderException(); -} - -gchar *GZipBuffer::get_filename() -{ -#ifdef DEBUG_STREAMS - std::cout<<"Filename is "; -#endif - return read_string(); -} - -gchar *GZipBuffer::get_comment() -{ -#ifdef DEBUG_STREAMS - std::cout<<"Comment is "<read(&buf, 2); - return buf; -} - -void GZipBuffer::get_extrafield() -{ - guint8 length_data[2]; - _urihandle->read(length_data, 2); - unsigned int const length = length_data[0] | (length_data[1] << 8); - guint8 *data = new guint8[length]; - _urihandle->read(data, length); -} - -gchar *GZipBuffer::read_string() throw(GZipHeaderException) -{ - GByteArray *gba = g_byte_array_new(); - try { - guint8 byte[1]; - do { - _urihandle->read(byte, 1); - g_byte_array_append(gba, byte, sizeof(byte)); -#ifdef DEBUG_STREAMS - std::cout <<(char)*byte; -#endif - } while (*byte != 0); - } catch (std::exception& e) { - g_byte_array_free(gba, TRUE); - throw GZipHeaderException(); - } -#ifdef DEBUG_STREAMS - std::cout<data; - g_byte_array_free(gba, FALSE); - return ret; -} - -} // 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:encoding=utf-8:textwidth=99 : diff --git a/src/streams-gzip.h b/src/streams-gzip.h deleted file mode 100644 index ace1b884d..000000000 --- a/src/streams-gzip.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * IO layer : gzip streambuf and streams - * - * Authors: - * Johan Ceuppens - * - * Copyright (C) 2004 Johan Ceuppens - * - * Released under GNU LGPL, read the file 'COPYING.LIB' for more information - */ - -#ifndef __STREAMS_GZIP_H_ -#define __STREAMS_GZIP_H_ - -#include "streams-zlib.h" - -namespace Inkscape { - -class GZipHeaderException : public ZlibBufferException -{ -public: - const char *what() const throw() { return "Invalid gzip file"; } -}; - -/** - * GZipBuffer - */ - -class GZipBuffer : public ZlibBuffer -{ -public: - - GZipBuffer(URIHandle& urih) //throws GZipHeaderException - : ZlibBuffer(urih) - { consume_header(); } - ~GZipBuffer() {} - -private: - - void consume_header() throw(GZipHeaderException); - void check_signature(guint8 *data) throw(GZipHeaderException); - void check_flags(guint8 *data) throw(GZipHeaderException); - gchar *get_filename(); - gchar *get_comment(); - guint16 get_crc(); - void get_extrafield(); - gchar *read_string() throw(GZipHeaderException); - - GZipBuffer& operator=(GZipBuffer const& rhs); - GZipBuffer(GZipBuffer const& rhs); - -}; - -} // namespace Inkscape -#endif // header guard - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/streams-handles.cpp b/src/streams-handles.cpp deleted file mode 100644 index 9c6e861f8..000000000 --- a/src/streams-handles.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/* - * IO layer : handles for URIs - * - * Authors: - * Johan Ceuppens - * - * Copyright (C) 2004 Johan Ceuppens - * - * Released under GNU LGPL, read the file 'COPYING.LIB' for more information - */ - -#include "streams-handles.h" -#include "uri.h" - -#include - -namespace Inkscape { - -/** - * FileHandle - */ - -int FileHandle::open(URI const& uri, char const* mode) -{ - if (sys_open(uri, mode) == 0) - return 0; - else - return 1; -} - -FILE *FileHandle::sys_open(URI const& uri, char const* mode) -{ - gchar *filename = uri.toNativeFilename(); - - if ((fp = std::fopen(filename, mode)) == 0) { - error("fopen"); - } -#ifdef DEBUG_STREAMS - std::cout<<"file opened fp="< - * - * Copyright (C) 2004 Johan Ceuppens - * - * Released under GNU LGPL, read the file 'COPYING.LIB' for more information - */ - -#ifndef __STREAM_HANDLES_H_ -#define __STREAM_HANDLES_H_ - -#include -#include - -#include "forward.h" - -namespace Inkscape { - -/** - * URIHandle (Abstract class) - */ - -class URIHandle -{ -public: - virtual ~URIHandle() {} - virtual int read (void *buf, int buflen) = 0; - virtual int write (void const *buf, int buflen) = 0; - virtual void close() = 0; - -protected: - - virtual int sys_read (void *buf, int buflen) = 0; - virtual int sys_write (void const *buf, int buflen) = 0; - virtual void sys_close() = 0; - virtual void error(char const *errstr) = 0; - -}; - -/** - * FileHandle - */ - -class IOException : public std::exception {}; - -class ReadException : public IOException -{ -public: - const char *what() const throw() { return "error read"; } -}; - -class WriteException : public IOException -{ -public: - const char *what() const throw() { return "error write"; } -}; - -class FileHandle : public URIHandle -{ -public: - FileHandle() : fp(0) {} - virtual ~FileHandle() { if (fp) sys_close(); }; - virtual int open(URI const& uri, char const* mode); - virtual void close(); - virtual int read (void *buf, int buflen); - virtual int write (void const *buf, int buflen); - virtual int seek (long offset, int whence); -protected: - - virtual FILE *sys_open(URI const& uri, char const* mode); - virtual void sys_close(); - virtual int sys_read(void *buf, int buflen) throw(ReadException); - virtual int sys_write(void const *buf, int buflen) throw(WriteException); - virtual int sys_seek(long offset, int whence); - virtual void error(char const *errstr); - FILE *get_fp() { return fp; } - -private: - FILE *fp; -}; - -/* - class SocketHandle : public URIHandle - { - // ... - }; -*/ -} -#endif - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/streams-jar.cpp b/src/streams-jar.cpp deleted file mode 100644 index e597822e9..000000000 --- a/src/streams-jar.cpp +++ /dev/null @@ -1,135 +0,0 @@ -#include -#include "streams-jar.h" - -namespace Inkscape { - -const int LOC_EXTRA = 6; // extra bytes -const int LOC_COMP = 8; // compression method -const int LOC_CSIZE = 18; // compressed size -const int LOC_FNLEN = 26; // filename length -const int LOC_EFLEN = 28; // extra-field length - -void JarBuffer::consume_header() throw(JarHeaderException) -{ - try { - guint8 data[30]; - _urihandle->read(data, 4); - check_signature(data); - _urihandle->read(data+4, 26); - compressed_size = compressed_left = unpack_4bytes(data, LOC_CSIZE); - eflen = unpack_2bytes(data, LOC_EFLEN); - flags = unpack_2bytes(data, LOC_EXTRA); - method = unpack_2bytes(data, LOC_COMP); - -#ifdef DEBUG_STREAMS - std::printf("Compressed size is %u\n", compressed_size); - std::printf("Extra field length is %hu\n", eflen); - std::printf("Flags are %#hx\n", flags); - std::printf("Compression method is %#hx\n", method); -#endif - } - catch (std::exception& e) { - throw JarHeaderException(); - } -} - -void JarBuffer::check_signature(guint8 *data) throw(JarHeaderException) -{ - guint32 signature = unpack_4bytes(data, 0); - -#ifdef DEBUG_STREAMS - std::printf("signature is %x\n", signature); -#endif - - if (signature == 0x08074b50) { - _urihandle->read(data, 12); - } else if (signature != 0x02014b50 && signature != 0x04034b50) { - throw JarHeaderException(); - } -} - -void JarBuffer::reset()//resets zlib and buffer (also skips archived directories) -{ - bool do_reset = false; - while (compressed_left == 0) { - consume_header(); - do_reset = true; - } - - if (do_reset) { - reset_inflation(); - setg(eback(), eback(), eback()); - } -} - -int JarBuffer::consume_and_inflate() -{ - int nbytes; - - reset(); - - nbytes = compressed_left > BUFSIZE_STREAM ? BUFSIZE_STREAM - : compressed_left; - - if (is_compressed()) - return consume_compressed(nbytes); - else - return consume_uncompressed(nbytes); -} - -int JarBuffer::consume_compressed(int nbytes) -{ - int ret=do_consume_and_inflate(nbytes); - - if ( ret == EOF && eflen > 0 ) { - std::vector efbuf(eflen); - _urihandle->read(&efbuf[0], eflen); - return 1; - } - - return ret; -} - -int JarBuffer::consume_uncompressed(int nbytes) -{ - std::vector data(nbytes); - int consumed=consume(&data[0], nbytes); - if ( consumed != EOF ) { - copy_to_get(&data[0], consumed); - compressed_left -= consumed; - } - return consumed; -} - -GByteArray *JarBuffer::inflate(guint8 *data, const int nbytes) -{ - GByteArray *gba = do_inflate(data, nbytes); - compressed_left -= nbytes; - return gba; -} - -guint32 JarBuffer::unpack_4bytes(guint8 *data, const int offset) -{ - return ((guint32)data[offset] - + (((guint32)data[offset + 1]) << 8) - + (((guint32)data[offset + 2]) << 16) - + (((guint32)data[offset + 3]) << 24)); -} - -guint16 JarBuffer::unpack_2bytes(guint8 *data, int offset) -{ - return ((guint16)data[offset] + (((guint16)data[offset + 1]) << 8)); -} - -} // 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:encoding=utf-8:textwidth=99 : diff --git a/src/streams-jar.h b/src/streams-jar.h deleted file mode 100644 index cba69096e..000000000 --- a/src/streams-jar.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef __STREAMS_JAR_H_ -#define __STREAMS_JAR_H_ - -#include "streams-zlib.h" - -namespace Inkscape { - -//#define DEBUG_STREAMS 1; - -class JarHeaderException -{ -public: - const char *what() const throw() { return "Invalid file header in jar"; } -}; - -/** - * JarBuffer - */ - -class JarBuffer : public ZlibBuffer -{ -public: - - JarBuffer(URIHandle& urih) //throws JarHeaderException - : ZlibBuffer(urih), compressed_size(0), compressed_left(0), method(0), - flags(0) - { consume_header(); } - virtual ~JarBuffer() {} - -protected: - - virtual void consume_header() throw(JarHeaderException); - virtual void check_signature(guint8 *data) throw(JarHeaderException); - virtual unsigned int get_compressed_size() const { return compressed_size; } - virtual unsigned int get_compressed_left() const { return compressed_left; } - virtual GByteArray *inflate(guint8 *data, int nbytes); - virtual int consume_and_inflate(); - virtual void reset(); - virtual bool is_compressed() const { return (method == 8 || flags & 0x0008);} - virtual int consume_compressed(int nbytes); - virtual int consume_uncompressed(int nbytes); - guint32 unpack_4bytes(guint8 *data, const int offset); - guint16 unpack_2bytes(guint8 *data, const int offset); - -private: - - JarBuffer& operator=(JarBuffer const& rhs); - JarBuffer(JarBuffer const& rhs); - - guint32 compressed_size; - guint32 compressed_left; - guint16 method; - guint16 flags; - guint16 eflen; -}; - -} // namespace Inkscape -#endif // header guard - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/streams-zlib.cpp b/src/streams-zlib.cpp deleted file mode 100644 index 2d5fae01e..000000000 --- a/src/streams-zlib.cpp +++ /dev/null @@ -1,230 +0,0 @@ -/* - * IO layer : zlib streambuf - * - * Authors: - * Johan Ceuppens - * - * Copyright (C) 2004 Johan Ceuppens - * - * Released under GNU LGPL, read the file 'COPYING.LIB' for more information - */ - -#include -#include -#include -#include -#include "streams-zlib.h" - -namespace Inkscape { - -/** - * ZlibBuffer - */ - -ZlibBuffer::ZlibBuffer(URIHandle& urih) - : _urihandle(&urih), _putsize(BUFSIZE_STREAM), _getsize(BUFSIZE_STREAM) -{ - init_inflation(); -} - -int ZlibBuffer::allocate_buffers() -{ - if (!eback()) { - char *buf = new char[_getsize + _putsize]; - setg(buf, buf , buf); - buf += _getsize; - setp(buf, buf + _putsize); - return 1; - } - return 0; -} - -int ZlibBuffer::reallocate_buffers(int new_getsize, int new_putsize) -{ - char *new_buffer = new char[new_getsize + new_putsize]; - - std::memcpy(new_buffer, eback(), _getsize); - std::memcpy(new_buffer, eback() + _getsize, _putsize); - - setg(new_buffer, new_buffer + (gptr() - eback()), - new_buffer + new_getsize); - new_buffer += new_getsize; - setp(new_buffer, new_buffer + new_putsize); - - _getsize = new_getsize; - _putsize = new_putsize; - - return 1; -} - -int ZlibBuffer::underflow() -{ - if (eback() == 0 && allocate_buffers() == 0) - return EOF; - - if (consume_and_inflate() == EOF) - return EOF; - - return *(unsigned char *)gptr(); -} - -int ZlibBuffer::overflow(int c) -{ - if (c == EOF) - return flush_output(); - - if (pbase() == 0 && allocate_buffers() == 0) - return EOF; - - if (pptr() >= epptr() && - flush_output() == EOF) - return EOF; - - putchar(c); - - if (pptr() >= epptr() && - flush_output() == EOF) - return EOF; - - return c; -} - -int ZlibBuffer::consume(guint8 *buf, int nbytes) -{ - return do_consume(buf, nbytes); -} - -int ZlibBuffer::do_consume(guint8 *buf, int nbytes) -{ - nbytes = _urihandle->read(buf, nbytes); - - if (nbytes == EOF) - return EOF; - else if (nbytes == 0) - return EOF; - - return nbytes; -} - -int ZlibBuffer::do_consume_and_inflate(int nbytes) -{ - std::vector buf(nbytes); - - int ret=consume(&buf[0], nbytes); - - if ( ret != EOF ) { - ret = 1; - GByteArray *gba = inflate(&buf[0], nbytes); - copy_to_get(gba->data, gba->len); - g_byte_array_free(gba, TRUE); - } - - return ret; -} - -int ZlibBuffer::consume_and_inflate() -{ - return do_consume_and_inflate(BUFSIZE_STREAM); -} - -int ZlibBuffer::flush_output() -{ - if (pptr() <= pbase()) - return 0; - int len = pptr() - pbase(); - int nbytes = _urihandle->write(pbase(), len); - setp(pbase(), pbase() + BUFSIZE_STREAM); - if (len == nbytes) - return 0; - else - return EOF; -} - -void ZlibBuffer::init_inflation() throw(ZlibBufferException) -{ - memset(&_zs, 0, sizeof(z_stream)); - - _zs.zalloc = Z_NULL; - _zs.zfree = Z_NULL; - _zs.opaque = Z_NULL; - - if(inflateInit2(&_zs, -15) != Z_OK) { - throw ZlibBufferException(); - } - -} - -void ZlibBuffer::reset_inflation() throw(ZlibBufferException) -{ - if (inflateReset(&_zs) != Z_OK) - throw ZlibBufferException(); -} - -GByteArray *ZlibBuffer::inflate(guint8 *in_buffer, int nbytes) -{ - return do_inflate(in_buffer, nbytes); -} - -GByteArray *ZlibBuffer::do_inflate(guint8 *data, int nbytes) -{ - GByteArray *gba = g_byte_array_new(); - guint8 out_buffer[BUFSIZE_STREAM]; - - _zs.avail_in = 0; - guint32 crc = crc32(0, Z_NULL, 0); - - if (!_zs.avail_in) { - _zs.avail_in = nbytes; - _zs.next_in = (Bytef *)data; - crc = crc32(crc, (Bytef *)data, _zs.avail_in); - } - do { - _zs.next_out = out_buffer; - _zs.avail_out = BUFSIZE_STREAM; - - int ret = ::inflate(&_zs, Z_NO_FLUSH); - if (BUFSIZE_STREAM != _zs.avail_out) { - unsigned int tmp_len = BUFSIZE_STREAM - _zs.avail_out; - g_byte_array_append(gba, out_buffer, tmp_len); - } - - if (ret == Z_STREAM_END) { - break; - } - if (ret != Z_OK) { - std::fprintf(stderr, "decompression error %d\n", ret); - break; - } - } while (_zs.avail_in); - - return gba; -} - -int ZlibBuffer::copy_to_get(guint8 *data, int nbytes) -{ - return do_copy_to_get(data, nbytes); -} - -int ZlibBuffer::do_copy_to_get(guint8 *data, int nbytes) -{ - if (nbytes + gptr() - eback() > _getsize) - reallocate_buffers(nbytes + gptr() - eback() + BUFSIZE_STREAM, - _putsize); - - std::memcpy(gptr(), data, nbytes); - setg(eback(), gptr(), gptr() + nbytes); - return 1; -} - -} // 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:encoding=utf-8:textwidth=99 : diff --git a/src/streams-zlib.h b/src/streams-zlib.h deleted file mode 100644 index 6ab7405d1..000000000 --- a/src/streams-zlib.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * IO layer : zlib streambuf - * - * Authors: - * Johan Ceuppens - * - * Copyright (C) 2004 Johan Ceuppens - * - * Released under GNU LGPL, read the file 'COPYING.LIB' for more information - */ - -#ifndef __STREAMS_ZLIB_H_ -#define __STREAMS_ZLIB_H_ - -#include "streams-handles.h" - -#include -#include -#include -#include - -namespace Inkscape { - -class ZlibBufferException : public std::exception {}; - -// This is the initial buffersize for the stream and -// zipbuffers (the streambuffers expand as needed). -const unsigned int BUFSIZE_STREAM = 4096; - -/** - * ZlibBuffer - */ - -//TODO: unbuffered IO -class ZlibBuffer : public std::streambuf -{ -public: - - ZlibBuffer(URIHandle& urih); - virtual ~ZlibBuffer() {} - -protected: - - virtual int allocate_buffers(); - virtual int reallocate_buffers(int new_getsize, int new_putsize); - virtual int underflow(); - virtual int overflow(int c = EOF); - virtual int flush_output(); - - virtual void init_inflation() throw(ZlibBufferException); - virtual void reset_inflation() throw(ZlibBufferException); - virtual int consume_and_inflate(); - virtual int do_consume_and_inflate(int nbytes); - virtual int consume(guint8 *buf, int nbytes); - virtual int do_consume(guint8 *buf, int nbytes); - virtual GByteArray *inflate(guint8 *in_buffer, int nbytes); - virtual GByteArray *do_inflate(guint8 *in_buffer, int nbytes); - virtual int copy_to_get(guint8 *data, int nbytes); - virtual int do_copy_to_get(guint8 *data, int nbytes); - - URIHandle *_urihandle; - -private: - - ZlibBuffer& operator=(ZlibBuffer const& rhs); - ZlibBuffer(ZlibBuffer const& rhs); - - z_stream _zs; - int _putsize, _getsize;//sizes of in and out buffers - -}; - -class izstream : public std::istream { -public: - - explicit izstream(std::streambuf& sb) : std::istream(&sb) {} - ~izstream() { std::ios::init(0); } - - std::streambuf *rdbuf() { return std::ios::rdbuf(); } - std::streambuf *operator ->() { return rdbuf(); } - -}; - -} - -#endif - -/* - 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:encoding=utf-8:textwidth=99 : diff --git a/src/svg/svg-affine.cpp b/src/svg/svg-affine.cpp index bcc685e8a..1077f7e2f 100644 --- a/src/svg/svg-affine.cpp +++ b/src/svg/svg-affine.cpp @@ -36,18 +36,6 @@ bool sp_svg_transform_read(gchar const *str, Geom::Matrix *transform) -{ - NR::Matrix mat; - if (sp_svg_transform_read(str, &mat)) { - *transform = mat; - return true; - } else { - return false; - } -} - -bool -sp_svg_transform_read(gchar const *str, NR::Matrix *transform) { int idx; char keyword[32]; @@ -57,7 +45,7 @@ sp_svg_transform_read(gchar const *str, NR::Matrix *transform) if (str == NULL) return false; - NR::Matrix a(NR::identity()); + Geom::Matrix a(Geom::identity()); idx = 0; while (str[idx]) { @@ -117,7 +105,7 @@ sp_svg_transform_read(gchar const *str, NR::Matrix *transform) /* ok, have parsed keyword and args, now modify the transform */ if (!strcmp (keyword, "matrix")) { if (n_args != 6) return false; - a = (*NR_MATRIX_D_FROM_DOUBLE(args)) * a; + a = (*((Geom::Matrix *) &(args)[0])) * a; } else if (!strcmp (keyword, "translate")) { if (n_args == 1) { args[1] = 0; @@ -147,13 +135,13 @@ sp_svg_transform_read(gchar const *str, NR::Matrix *transform) } } else if (!strcmp (keyword, "skewX")) { if (n_args != 1) return false; - a = ( NR::Matrix(1, 0, + a = ( Geom::Matrix(1, 0, tan(args[0] * M_PI / 180.0), 1, 0, 0) * a ); } else if (!strcmp (keyword, "skewY")) { if (n_args != 1) return false; - a = ( NR::Matrix(1, tan(args[0] * M_PI / 180.0), + a = ( Geom::Matrix(1, tan(args[0] * M_PI / 180.0), 0, 1, 0, 0) * a ); @@ -263,17 +251,4 @@ gchar * sp_svg_transform_write(Geom::Matrix const *transform) { return sp_svg_transform_write(*transform); -} - -gchar * -sp_svg_transform_write(NR::Matrix const &transform) -{ - return sp_svg_transform_write((Geom::Matrix)transform); -} - -gchar * -sp_svg_transform_write(NR::Matrix const *transform) -{ - return sp_svg_transform_write(*transform); -} - +} \ No newline at end of file diff --git a/src/svg/svg.h b/src/svg/svg.h index 0e9939bec..0eab21226 100644 --- a/src/svg/svg.h +++ b/src/svg/svg.h @@ -55,12 +55,9 @@ unsigned int sp_svg_length_read_ldd (const gchar *str, SVGLength::Unit *unit, do std::string sp_svg_length_write_with_units(SVGLength const &length); bool sp_svg_transform_read(gchar const *str, Geom::Matrix *transform); -bool sp_svg_transform_read(gchar const *str, NR::Matrix *transform); gchar *sp_svg_transform_write(Geom::Matrix const &transform); gchar *sp_svg_transform_write(Geom::Matrix const *transform); -gchar *sp_svg_transform_write(NR::Matrix const &transform); -gchar *sp_svg_transform_write(NR::Matrix const *transform); double sp_svg_read_percentage (const char * str, double def); diff --git a/src/text-context.cpp b/src/text-context.cpp index e277ff584..1dd5e4e82 100644 --- a/src/text-context.cpp +++ b/src/text-context.cpp @@ -446,7 +446,7 @@ sp_text_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEve item_ungrouped = desktop->item_at_point(Geom::Point(event->button.x, event->button.y), TRUE); if (SP_IS_TEXT(item_ungrouped) || SP_IS_FLOWTEXT(item_ungrouped)) { sp_canvas_item_show(tc->indicator); - boost::optional ibbox = sp_item_bbox_desktop(item_ungrouped); + Geom::OptRect ibbox = sp_item_bbox_desktop(item_ungrouped); if (ibbox) { SP_CTRLRECT(tc->indicator)->setRectangle(*ibbox); } @@ -1609,7 +1609,7 @@ sp_text_context_update_cursor(SPTextContext *tc, bool scroll_to_see) SPItem *frame = SP_FLOWTEXT(tc->text)->get_frame (NULL); // first frame only if (frame) { sp_canvas_item_show(tc->frame); - boost::optional frame_bbox = sp_item_bbox_desktop(frame); + Geom::OptRect frame_bbox = sp_item_bbox_desktop(frame); if (frame_bbox) { SP_CTRLRECT(tc->frame)->setRectangle(*frame_bbox); } @@ -1668,10 +1668,10 @@ sp_text_context_timeout(SPTextContext *tc) sp_canvas_item_show(tc->cursor); if (tc->phase) { tc->phase = 0; - sp_ctrlline_set_rgba32(SP_CTRLLINE(tc->cursor), 0xffffffff); + sp_ctrlline_set_rgba32(SP_CTRLLINE(tc->cursor), 0x000000ff); } else { tc->phase = 1; - sp_ctrlline_set_rgba32(SP_CTRLLINE(tc->cursor), 0x000000ff); + sp_ctrlline_set_rgba32(SP_CTRLLINE(tc->cursor), 0xffffffff); } } diff --git a/src/tweak-context.cpp b/src/tweak-context.cpp index f8e88b53a..156ce0169 100644 --- a/src/tweak-context.cpp +++ b/src/tweak-context.cpp @@ -432,7 +432,7 @@ sp_tweak_dilate_recursive (Inkscape::Selection *selection, SPItem *item, Geom::P } else { if (mode == TWEAK_MODE_MOVE) { - boost::optional a = item->getBounds(sp_item_i2doc_affine(item)); + Geom::OptRect a = item->getBounds(sp_item_i2doc_affine(item)); if (a) { double x = Geom::L2(a->midpoint() - p)/radius; if (a->contains(p)) x = 0; @@ -445,7 +445,7 @@ sp_tweak_dilate_recursive (Inkscape::Selection *selection, SPItem *item, Geom::P } else if (mode == TWEAK_MODE_MOVE_IN_OUT) { - boost::optional a = item->getBounds(sp_item_i2doc_affine(item)); + Geom::OptRect a = item->getBounds(sp_item_i2doc_affine(item)); if (a) { double x = Geom::L2(a->midpoint() - p)/radius; if (a->contains(p)) x = 0; @@ -459,7 +459,7 @@ sp_tweak_dilate_recursive (Inkscape::Selection *selection, SPItem *item, Geom::P } else if (mode == TWEAK_MODE_MOVE_JITTER) { - boost::optional a = item->getBounds(sp_item_i2doc_affine(item)); + Geom::OptRect a = item->getBounds(sp_item_i2doc_affine(item)); if (a) { double dp = g_random_double_range(0, M_PI*2); double dr = g_random_double_range(0, radius); @@ -474,7 +474,7 @@ sp_tweak_dilate_recursive (Inkscape::Selection *selection, SPItem *item, Geom::P } else if (mode == TWEAK_MODE_SCALE) { - boost::optional a = item->getBounds(sp_item_i2doc_affine(item)); + Geom::OptRect a = item->getBounds(sp_item_i2doc_affine(item)); if (a) { double x = Geom::L2(a->midpoint() - p)/radius; if (a->contains(p)) x = 0; @@ -487,7 +487,7 @@ sp_tweak_dilate_recursive (Inkscape::Selection *selection, SPItem *item, Geom::P } else if (mode == TWEAK_MODE_ROTATE) { - boost::optional a = item->getBounds(sp_item_i2doc_affine(item)); + Geom::OptRect a = item->getBounds(sp_item_i2doc_affine(item)); if (a) { double x = Geom::L2(a->midpoint() - p)/radius; if (a->contains(p)) x = 0; @@ -500,7 +500,7 @@ sp_tweak_dilate_recursive (Inkscape::Selection *selection, SPItem *item, Geom::P } else if (mode == TWEAK_MODE_MORELESS) { - boost::optional a = item->getBounds(sp_item_i2doc_affine(item)); + Geom::OptRect a = item->getBounds(sp_item_i2doc_affine(item)); if (a) { double x = Geom::L2(a->midpoint() - p)/radius; if (a->contains(p)) x = 0; @@ -551,7 +551,7 @@ sp_tweak_dilate_recursive (Inkscape::Selection *selection, SPItem *item, Geom::P // skip those paths whose bboxes are entirely out of reach with our radius - boost::optional bbox = item->getBounds(sp_item_i2doc_affine(item)); + Geom::OptRect bbox = item->getBounds(sp_item_i2doc_affine(item)); if (bbox) { bbox->expandBy(radius); if (!bbox->contains(p)) { @@ -925,7 +925,7 @@ sp_tweak_color_recursive (guint mode, SPItem *item, SPItem *item_at_point, if (!style) { return false; } - boost::optional bbox = item->getBounds(sp_item_i2doc_affine(item), + Geom::OptRect bbox = item->getBounds(sp_item_i2doc_affine(item), SPItem::GEOMETRIC_BBOX); if (!bbox) { return false; @@ -955,7 +955,7 @@ sp_tweak_color_recursive (guint mode, SPItem *item, SPItem *item_at_point, if (this_force > 0.002) { if (do_blur) { - boost::optional bbox = item->getBounds(sp_item_i2doc_affine(item), + Geom::OptRect bbox = item->getBounds(sp_item_i2doc_affine(item), SPItem::GEOMETRIC_BBOX); if (!bbox) { return did; diff --git a/src/ui/clipboard.cpp b/src/ui/clipboard.cpp index e76af958f..0dc4a1d5b 100644 --- a/src/ui/clipboard.cpp +++ b/src/ui/clipboard.cpp @@ -407,15 +407,15 @@ bool ClipboardManagerImpl::pasteSize(bool separately, bool apply_x, bool apply_y if (separately) { for (GSList *i = const_cast(selection->itemList()) ; i ; i = i->next) { SPItem *item = SP_ITEM(i->data); - boost::optional obj_size = sp_item_bbox_desktop(item); - if ( !obj_size || obj_size->isEmpty() ) continue; + Geom::OptRect obj_size = sp_item_bbox_desktop(item); + if ( !obj_size ) continue; sp_item_scale_rel(item, _getScale(min, max, *obj_size, apply_x, apply_y)); } } // resize the selection as a whole else { - boost::optional sel_size = selection->bounds(); - if ( sel_size && !sel_size->isEmpty() ) { + Geom::OptRect sel_size = selection->bounds(); + if ( sel_size ) { sp_selection_scale_relative(selection, sel_size->midpoint(), _getScale(min, max, *sel_size, apply_x, apply_y)); } @@ -571,7 +571,7 @@ void ClipboardManagerImpl::_copySelection(Inkscape::Selection *selection) } } - boost::optional size = selection->bounds(); + Geom::OptRect size = selection->bounds(); if (size) { sp_repr_set_point(_clipnode, "min", size->min()); sp_repr_set_point(_clipnode, "max", size->max()); @@ -786,7 +786,7 @@ void ClipboardManagerImpl::_pasteDocument(SPDocument *clipdoc, bool in_place) selection->setReprList(pasted_objects); // Change the selection to the freshly pasted objects sp_document_ensure_up_to_date(target_document); // What does this do? - boost::optional sel_bbox = selection->bounds(); //In desktop coordinates + Geom::OptRect sel_bbox = selection->bounds(); //In desktop coordinates // PS: We could also have used the min/max corners calculated above, instead of selection->bounds() because // we know that after pasting the upper left corner of the selection will be aligend to the corresponding // page corner. Using the boundingbox of the selection is more foolproof though @@ -1083,17 +1083,14 @@ void ClipboardManagerImpl::_onGet(Gtk::SelectionData &sel, guint /*info*/) try { if (out == outlist.end() && target == "image/png") { - NRRect area; gdouble dpi = PX_PER_IN; guint32 bgcolor = 0x00000000; - area.x0 = SP_ROOT(_clipboardSPDoc->root)->x.computed; - area.y0 = SP_ROOT(_clipboardSPDoc->root)->y.computed; - area.x1 = area.x0 + sp_document_width (_clipboardSPDoc); - area.y1 = area.y0 + sp_document_height (_clipboardSPDoc); + Geom::Point origin (SP_ROOT(_clipboardSPDoc->root)->x.computed, SP_ROOT(_clipboardSPDoc->root)->y.computed); + Geom::Rect area = Geom::Rect(origin, origin + sp_document_dimensions(_clipboardSPDoc)); - unsigned long int width = (unsigned long int) ((area.x1 - area.x0) * dpi / PX_PER_IN + 0.5); - unsigned long int height = (unsigned long int) ((area.y1 - area.y0) * dpi / PX_PER_IN + 0.5); + unsigned long int width = (unsigned long int) (area.width() * dpi / PX_PER_IN + 0.5); + unsigned long int height = (unsigned long int) (area.height() * dpi / PX_PER_IN + 0.5); // read from namedview Inkscape::XML::Node *nv = sp_repr_lookup_name (_clipboardSPDoc->rroot, "sodipodi:namedview"); @@ -1102,7 +1099,7 @@ void ClipboardManagerImpl::_onGet(Gtk::SelectionData &sel, guint /*info*/) if (nv && nv->attribute("inkscape:pageopacity")) bgcolor |= SP_COLOR_F_TO_U(sp_repr_get_double_attribute (nv, "inkscape:pageopacity", 1.0)); - sp_export_png_file(_clipboardSPDoc, filename, area.x0, area.y0, area.x1, area.y1, width, height, dpi, dpi, bgcolor, NULL, NULL, true, NULL); + sp_export_png_file(_clipboardSPDoc, filename, area, width, height, dpi, dpi, bgcolor, NULL, NULL, true, NULL); } else { diff --git a/src/ui/dialog/CMakeLists.txt b/src/ui/dialog/CMakeLists.txt index abdfa4dd8..5a0d6a08e 100644 --- a/src/ui/dialog/CMakeLists.txt +++ b/src/ui/dialog/CMakeLists.txt @@ -9,6 +9,7 @@ ENDIF(WIN32) SET(ui_dialog_SRC aboutbox.cpp align-and-distribute.cpp +debug.cpp dialog.cpp dialog-manager.cpp dock-behavior.cpp @@ -33,6 +34,7 @@ print.cpp scriptdialog.cpp #session-player.cpp text-properties.cpp +tile.cpp tracedialog.cpp transformation.cpp tree-editor.cpp diff --git a/src/ui/dialog/Makefile_insert b/src/ui/dialog/Makefile_insert index 638be2832..6c301ef40 100644 --- a/src/ui/dialog/Makefile_insert +++ b/src/ui/dialog/Makefile_insert @@ -6,18 +6,19 @@ ui/dialog/clean: rm -f ui/dialog/libuidialog.a $(ui_libuidialog_a_OBJECTS) ui_dialog_libuidialog_a_SOURCES = \ - ui/dialog/dialog-manager.cpp \ - ui/dialog/dialog-manager.h \ + ui/dialog/aboutbox.cpp \ + ui/dialog/aboutbox.h \ + ui/dialog/align-and-distribute.cpp \ + ui/dialog/align-and-distribute.h \ + ui/dialog/behavior.h \ + ui/dialog/debug.cpp \ + ui/dialog/debug.h \ ui/dialog/dialog.cpp \ ui/dialog/dialog.h \ - ui/dialog/panel-dialog.h \ - ui/dialog/behavior.h \ - ui/dialog/dock-behavior.h \ + ui/dialog/dialog-manager.cpp \ + ui/dialog/dialog-manager.h \ ui/dialog/dock-behavior.cpp \ - ui/dialog/floating-behavior.h \ - ui/dialog/floating-behavior.cpp \ - ui/dialog/align-and-distribute.cpp \ - ui/dialog/align-and-distribute.h \ + ui/dialog/dock-behavior.h \ ui/dialog/document-metadata.cpp \ ui/dialog/document-metadata.h \ ui/dialog/document-properties.cpp \ @@ -28,40 +29,43 @@ ui_dialog_libuidialog_a_SOURCES = \ ui/dialog/filedialog.h \ ui/dialog/filedialogimpl-gtkmm.cpp \ ui/dialog/filedialogimpl-gtkmm.h \ + ui/dialog/filedialogimpl-win32.cpp \ + ui/dialog/filedialogimpl-win32.h \ ui/dialog/fill-and-stroke.cpp \ ui/dialog/fill-and-stroke.h \ - ui/dialog/filter-effects-dialog.h \ ui/dialog/filter-effects-dialog.cpp \ + ui/dialog/filter-effects-dialog.h \ ui/dialog/find.cpp \ ui/dialog/find.h \ + ui/dialog/floating-behavior.cpp \ + ui/dialog/floating-behavior.h \ ui/dialog/inkscape-preferences.cpp \ ui/dialog/inkscape-preferences.h \ - ui/dialog/input.cpp \ - ui/dialog/input.h \ - ui/dialog/livepatheffect-editor.cpp \ - ui/dialog/livepatheffect-editor.h \ + ui/dialog/input.cpp \ + ui/dialog/input.h \ + ui/dialog/livepatheffect-editor.cpp \ + ui/dialog/livepatheffect-editor.h \ ui/dialog/memory.cpp \ ui/dialog/memory.h \ ui/dialog/messages.cpp \ ui/dialog/messages.h \ + ui/dialog/ocaldialogs.cpp \ + ui/dialog/ocaldialogs.h \ + ui/dialog/panel-dialog.h \ ui/dialog/print.cpp \ ui/dialog/print.h \ ui/dialog/scriptdialog.cpp \ ui/dialog/scriptdialog.h \ - ui/dialog/svg-fonts-dialog.cpp \ + ui/dialog/svg-fonts-dialog.cpp \ ui/dialog/svg-fonts-dialog.h \ + ui/dialog/tile.cpp \ + ui/dialog/tile.h \ ui/dialog/tracedialog.cpp \ ui/dialog/tracedialog.h \ ui/dialog/transformation.cpp \ ui/dialog/transformation.h \ ui/dialog/undo-history.cpp \ ui/dialog/undo-history.h \ - $(inkboard_dialogs) \ - ui/dialog/aboutbox.cpp \ - ui/dialog/aboutbox.h \ - ui/dialog/ocaldialogs.cpp \ - ui/dialog/ocaldialogs.h \ - ui/dialog/filedialogimpl-win32.h \ - ui/dialog/filedialogimpl-win32.cpp + $(inkboard_dialogs) ui/dialog/aboutbox.$(OBJEXT): inkscape_version.h diff --git a/src/ui/dialog/align-and-distribute.cpp b/src/ui/dialog/align-and-distribute.cpp index 367a744c7..b509d041f 100644 --- a/src/ui/dialog/align-and-distribute.cpp +++ b/src/ui/dialog/align-and-distribute.cpp @@ -161,7 +161,7 @@ private : selected.erase(master); /*}*/ //Compute the anchor point - boost::optional b = sp_item_bbox_desktop (thing); + Geom::OptRect b = sp_item_bbox_desktop (thing); if (b) { mp = Geom::Point(a.mx0 * b->min()[Geom::X] + a.mx1 * b->max()[Geom::X], a.my0 * b->min()[Geom::Y] + a.my1 * b->max()[Geom::Y]); @@ -178,7 +178,7 @@ private : case AlignAndDistribute::DRAWING: { - boost::optional b = sp_item_bbox_desktop + Geom::OptRect b = sp_item_bbox_desktop ( (SPItem *) sp_document_root (sp_desktop_document (desktop)) ); if (b) { mp = Geom::Point(a.mx0 * b->min()[Geom::X] + a.mx1 * b->max()[Geom::X], @@ -191,7 +191,7 @@ private : case AlignAndDistribute::SELECTION: { - boost::optional b = selection->bounds(); + Geom::OptRect b = selection->bounds(); if (b) { mp = Geom::Point(a.mx0 * b->min()[Geom::X] + a.mx1 * b->max()[Geom::X], a.my0 * b->min()[Geom::Y] + a.my1 * b->max()[Geom::Y]); @@ -216,7 +216,7 @@ private : prefs->setInt("/options/clonecompensation/value", SP_CLONE_COMPENSATION_UNMOVED); bool changed = false; - boost::optional b; + Geom::OptRect b; if (sel_as_group) b = selection->bounds(); @@ -331,7 +331,7 @@ private : it != selected.end(); ++it) { - boost::optional bbox = sp_item_bbox_desktop(*it); + Geom::OptRect bbox = sp_item_bbox_desktop(*it); if (bbox) { sorted.push_back(BBoxSort(*it, *bbox, _orientation, _kBegin, _kEnd)); } @@ -607,7 +607,7 @@ private : //Check 2 or more selected objects if (selected.size() < 2) return; - boost::optional sel_bbox = selection->bounds(); + Geom::OptRect sel_bbox = selection->bounds(); if (!sel_bbox) { return; } @@ -629,7 +629,7 @@ private : ++it) { sp_document_ensure_up_to_date(sp_desktop_document (desktop)); - boost::optional item_box = sp_item_bbox_desktop (*it); + Geom::OptRect item_box = sp_item_bbox_desktop (*it); if (item_box) { // find new center, staying within bbox double x = _dialog.randomize_bbox->min()[Geom::X] + (*item_box)[Geom::X].extent() /2 + @@ -780,7 +780,7 @@ void on_tool_changed(Inkscape::Application */*inkscape*/, SPEventContext */*cont void on_selection_changed(Inkscape::Application */*inkscape*/, Inkscape::Selection */*selection*/, AlignAndDistribute *daad) { - daad->randomize_bbox = boost::optional(); + daad->randomize_bbox = Geom::OptRect(); } ///////////////////////////////////////////////////////// @@ -961,7 +961,7 @@ AlignAndDistribute::AlignAndDistribute() // Connect to the global selection change, to invalidate cached randomize_bbox g_signal_connect (G_OBJECT (INKSCAPE), "change_selection", G_CALLBACK (on_selection_changed), this); - randomize_bbox = boost::optional(); + randomize_bbox = Geom::OptRect(); show_all_children(); @@ -1106,7 +1106,7 @@ std::list::iterator AlignAndDistribute::find_master( std::list::iterator it = list.begin(); it != list.end(); it++) { - boost::optional b = sp_item_bbox_desktop (*it); + Geom::OptRect b = sp_item_bbox_desktop (*it); if (b) { gdouble dim = (*b)[horizontal ? Geom::X : Geom::Y].extent(); if (dim > max) { @@ -1123,7 +1123,7 @@ std::list::iterator AlignAndDistribute::find_master( std::list::iterator it = list.begin(); it != list.end(); it++) { - boost::optional b = sp_item_bbox_desktop (*it); + Geom::OptRect b = sp_item_bbox_desktop (*it); if (b) { gdouble dim = (*b)[horizontal ? Geom::X : Geom::Y].extent(); if (dim < max) { diff --git a/src/ui/dialog/align-and-distribute.h b/src/ui/dialog/align-and-distribute.h index 3d6b5984e..0d41bb221 100644 --- a/src/ui/dialog/align-and-distribute.h +++ b/src/ui/dialog/align-and-distribute.h @@ -65,7 +65,7 @@ public: std::list::iterator find_master(std::list &list, bool horizontal); void setMode(bool nodeEdit); - boost::optional randomize_bbox; + Geom::OptRect randomize_bbox; protected: diff --git a/src/ui/dialog/debug.cpp b/src/ui/dialog/debug.cpp new file mode 100644 index 000000000..b40796627 --- /dev/null +++ b/src/ui/dialog/debug.cpp @@ -0,0 +1,252 @@ +/** @file + * @brief A dialog that displays log messages + */ +/* Authors: + * Bob Jamison + * Other dudes from The Inkscape Organization + * + * Copyright (C) 2004 The Inkscape Organization + * Released under GNU GPL, read the file 'COPYING' for more information + */ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include +#include +#include + +#include "debug.h" + +namespace Inkscape { +namespace UI { +namespace Dialog { + +/** + * @brief A very simple dialog for displaying Inkscape messages - implementation + */ +class DebugDialogImpl : public DebugDialog, public Gtk::Dialog +{ +public: + DebugDialogImpl(); + ~DebugDialogImpl(); + + void show(); + void hide(); + void clear(); + void message(char const *msg); + void captureLogMessages(); + void releaseLogMessages(); + +private: + Gtk::MenuBar menuBar; + Gtk::Menu fileMenu; + Gtk::ScrolledWindow textScroll; + Gtk::TextView messageText; + + //Handler ID's + guint handlerDefault; + guint handlerGlibmm; + guint handlerAtkmm; + guint handlerPangomm; + guint handlerGdkmm; + guint handlerGtkmm; +}; + +void DebugDialogImpl::clear() +{ + Glib::RefPtr buffer = messageText.get_buffer(); + buffer->erase(buffer->begin(), buffer->end()); +} + +DebugDialogImpl::DebugDialogImpl() +{ + set_title(_("Messages")); + set_size_request(300, 400); + + Gtk::VBox *mainVBox = get_vbox(); + + //## Add a menu for clear() + menuBar.items().push_back( Gtk::Menu_Helpers::MenuElem(_("_File"), fileMenu) ); + fileMenu.items().push_back( Gtk::Menu_Helpers::MenuElem(_("_Clear"), + sigc::mem_fun(*this, &DebugDialogImpl::clear) ) ); + fileMenu.items().push_back( Gtk::Menu_Helpers::MenuElem(_("Capture log messages"), + sigc::mem_fun(*this, &DebugDialogImpl::captureLogMessages) ) ); + fileMenu.items().push_back( Gtk::Menu_Helpers::MenuElem(_("Release log messages"), + sigc::mem_fun(*this, &DebugDialogImpl::releaseLogMessages) ) ); + mainVBox->pack_start(menuBar, Gtk::PACK_SHRINK); + + + //### Set up the text widget + messageText.set_editable(false); + textScroll.add(messageText); + textScroll.set_policy(Gtk::POLICY_ALWAYS, Gtk::POLICY_ALWAYS); + mainVBox->pack_start(textScroll); + + show_all_children(); + + message("ready."); + message("enable log display by setting "); + message("dialogs.debug 'redirect' attribute to 1 in preferences.xml"); + + handlerDefault = 0; + handlerGlibmm = 0; + handlerAtkmm = 0; + handlerPangomm = 0; + handlerGdkmm = 0; + handlerGtkmm = 0; +} + + +DebugDialog *DebugDialog::create() +{ + DebugDialog *dialog = new DebugDialogImpl(); + return dialog; +} + +DebugDialogImpl::~DebugDialogImpl() +{ +} + +void DebugDialogImpl::show() +{ + //call super() + Gtk::Dialog::show(); + //sp_transientize((GtkWidget *)gobj()); //Make transient + raise(); + Gtk::Dialog::present(); +} + +void DebugDialogImpl::hide() +{ + // call super + Gtk::Dialog::hide(); +} + +void DebugDialogImpl::message(char const *msg) +{ + Glib::RefPtr buffer = messageText.get_buffer(); + Glib::ustring uMsg = msg; + if (uMsg[uMsg.length()-1] != '\n') + uMsg += '\n'; + buffer->insert (buffer->end(), uMsg); +} + +/* static instance, to reduce dependencies */ +static DebugDialog *debugDialogInstance = NULL; + +DebugDialog *DebugDialog::getInstance() +{ + if (!debugDialogInstance) { + debugDialogInstance = new DebugDialogImpl(); + } + return debugDialogInstance; +} + + + +void DebugDialog::showInstance() +{ + DebugDialog *debugDialog = getInstance(); + debugDialog->show(); +} + + + + +/*##### THIS IS THE IMPORTANT PART ##### */ +void dialogLoggingFunction(const gchar */*log_domain*/, + GLogLevelFlags /*log_level*/, + const gchar *messageText, + gpointer user_data) +{ + DebugDialogImpl *dlg = (DebugDialogImpl *)user_data; + dlg->message(messageText); +} + + +void DebugDialogImpl::captureLogMessages() +{ + /* + This might likely need more code, to capture Gtkmm + and Glibmm warnings, or maybe just simply grab stdout/stderr + */ + GLogLevelFlags flags = (GLogLevelFlags) (G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL | + G_LOG_LEVEL_WARNING | G_LOG_LEVEL_MESSAGE | + G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG); + if ( !handlerDefault ) { + handlerDefault = g_log_set_handler(NULL, flags, + dialogLoggingFunction, (gpointer)this); + } + if ( !handlerGlibmm ) { + handlerGlibmm = g_log_set_handler("glibmm", flags, + dialogLoggingFunction, (gpointer)this); + } + if ( !handlerAtkmm ) { + handlerAtkmm = g_log_set_handler("atkmm", flags, + dialogLoggingFunction, (gpointer)this); + } + if ( !handlerPangomm ) { + handlerPangomm = g_log_set_handler("pangomm", flags, + dialogLoggingFunction, (gpointer)this); + } + if ( !handlerGdkmm ) { + handlerGdkmm = g_log_set_handler("gdkmm", flags, + dialogLoggingFunction, (gpointer)this); + } + if ( !handlerGtkmm ) { + handlerGtkmm = g_log_set_handler("gtkmm", flags, + dialogLoggingFunction, (gpointer)this); + } + message("log capture started"); +} + +void DebugDialogImpl::releaseLogMessages() +{ + if ( handlerDefault ) { + g_log_remove_handler(NULL, handlerDefault); + handlerDefault = 0; + } + if ( handlerGlibmm ) { + g_log_remove_handler("glibmm", handlerGlibmm); + handlerGlibmm = 0; + } + if ( handlerAtkmm ) { + g_log_remove_handler("atkmm", handlerAtkmm); + handlerAtkmm = 0; + } + if ( handlerPangomm ) { + g_log_remove_handler("pangomm", handlerPangomm); + handlerPangomm = 0; + } + if ( handlerGdkmm ) { + g_log_remove_handler("gdkmm", handlerGdkmm); + handlerGdkmm = 0; + } + if ( handlerGtkmm ) { + g_log_remove_handler("gtkmm", handlerGtkmm); + handlerGtkmm = 0; + } + message("log capture discontinued"); +} + + + +} //namespace Dialogs +} //namespace UI +} //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:encoding=utf-8:textwidth=99 : diff --git a/src/ui/dialog/debug.h b/src/ui/dialog/debug.h new file mode 100644 index 000000000..f2ad61dd4 --- /dev/null +++ b/src/ui/dialog/debug.h @@ -0,0 +1,100 @@ +/** @file + * @brief Dialog for displaying Inkscape messages + */ +/* Authors: + * Bob Jamison + * Other dudes from The Inkscape Organization + * + * Copyright (C) 2004 The Inkscape Organization + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifndef SEEN_UI_DIALOGS_DEBUGDIALOG_H +#define SEEN_UI_DIALOGS_DEBUGDIALOG_H + +namespace Inkscape { +namespace UI { +namespace Dialog { + + +/** + * @brief A very simple dialog for displaying Inkscape messages. + * + * Messages sent to g_log(), g_warning(), g_message(), ets, are routed here, + * in order to avoid messing with the startup console. + */ +class DebugDialog +{ +public: + DebugDialog() {}; + /** + * Factory method + */ + static DebugDialog *create(); + + /** + * Destructor + */ + virtual ~DebugDialog() {}; + + + /** + * Show the dialog + */ + virtual void show() = 0; + + /** + * Do not show the dialog + */ + virtual void hide() = 0; + + /** + * @brief Clear all information from the dialog + * + * Also a public method. Remove all text from the dialog + */ + virtual void clear() = 0; + + /** + * Display a message + */ + virtual void message(char const *msg) = 0; + + /** + * Redirect g_log() messages to this widget + */ + virtual void captureLogMessages() = 0; + + /** + * Return g_log() messages to normal handling + */ + virtual void releaseLogMessages() = 0; + + /** + * Factory method. Use this to create a new DebugDialog + */ + static DebugDialog *getInstance(); + + /** + * Show the instance above + */ + static void showInstance(); +}; + +} //namespace Dialogs +} //namespace UI +} //namespace Inkscape + +#endif /* __DEBUGDIALOG_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:encoding=utf-8:textwidth=99 : diff --git a/src/ui/dialog/dialog-manager.cpp b/src/ui/dialog/dialog-manager.cpp index e73200a1f..7a8947adf 100644 --- a/src/ui/dialog/dialog-manager.cpp +++ b/src/ui/dialog/dialog-manager.cpp @@ -1,13 +1,13 @@ -/** - * \brief Object for managing a set of dialogs, including their signals and +/** @file + * @brief Object for managing a set of dialogs, including their signals and * construction/caching/destruction of them. - * - * Authors: + */ +/* Authors: * Bryce W. Harrington * Jon Phillips * Gustav Broberg * - * Copyright (C) 2004--2007 Authors + * Copyright (C) 2004-2007 Authors * * Released under GNU GPL. Read the file 'COPYING' for more information. */ @@ -34,13 +34,13 @@ #ifdef ENABLE_SVG_FONTS #include "ui/dialog/svg-fonts-dialog.h" #endif // ENABLE_SVG_FONTS +#include "ui/dialog/tile.h" #include "ui/dialog/tracedialog.h" #include "ui/dialog/transformation.h" #include "ui/dialog/undo-history.h" #include "ui/dialog/panel-dialog.h" #include "dialogs/layers-panel.h" -#include "dialogs/tiledialog.h" #include "dialogs/iconpreview.h" #include "ui/dialog/floating-behavior.h" diff --git a/src/ui/dialog/document-properties.cpp b/src/ui/dialog/document-properties.cpp index 7c738c503..acf4dbb54 100644 --- a/src/ui/dialog/document-properties.cpp +++ b/src/ui/dialog/document-properties.cpp @@ -26,20 +26,30 @@ #include "ui/widget/scalar-unit.h" #include "xml/node-event-vector.h" +#include "xml/repr.h" #include "helper/units.h" #include "preferences.h" #include "inkscape.h" +#include "io/sys.h" #include "verbs.h" #include "document.h" #include "desktop-handles.h" #include "desktop.h" #include "sp-namedview.h" +#include "sp-object-repr.h" +#include "sp-root.h" #include "widgets/icon.h" #include "document-properties.h" #include "display/canvas-grid.h" +#if ENABLE_LCMS +#include +//#include "color-profile-fns.h" +#include "color-profile.h" +#endif // ENABLE_LCMS + using std::pair; namespace Inkscape { @@ -82,7 +92,7 @@ DocumentProperties::getInstance() DocumentProperties::DocumentProperties() : UI::Widget::Panel ("", "/dialogs/documentoptions", SP_VERB_DIALOG_NAMEDVIEW), _page_page(1, 1, true, true), _page_guides(1, 1), - _page_snap(1, 1), _page_snap_dtls(1, 1), + _page_snap(1, 1), _page_snap_dtls(1, 1), _page_cms(1, 1), //--------------------------------------------------------------- _rcb_canb(_("Show page _border"), _("If set, rectangular page border is shown"), "showborder", _wr, false), _rcb_bord(_("Border on _top of drawing"), _("If set, border is always on top of the drawing"), "borderlayer", _wr, false), @@ -100,7 +110,6 @@ DocumentProperties::DocumentProperties() _rcp_hgui(_("_Highlight color:"), _("Highlighted guideline color"), _("Color of a guideline when it is under mouse"), "guidehicolor", "guidehiopacity", _wr), //--------------------------------------------------------------- _rcbs(_("_Enable snapping"), _("Toggle snapping on or off"), "inkscape:snap-global", _wr), - _rcbsi(_("_Enable snap indicator"), _("After snapping, a symbol is drawn at the point that has snapped"), "inkscape:snap-indicator", _wr), _rcbsnbb(_("_Bounding box corners"), _("Only available in the selector tool: snap bounding box corners to guides, to grids, and to other bounding boxes (but not to nodes or paths)"), "inkscape:snap-bbox", _wr), _rcbsnn(_("_Nodes"), _("Snap nodes (e.g. path nodes, special points in shapes, gradient handles, text base points, transformation origins, etc.) to guides, to grids, to paths and to other nodes"), @@ -135,12 +144,16 @@ DocumentProperties::DocumentProperties() _notebook.append_page(_grids_vbox, _("Grids")); _notebook.append_page(_page_snap, _("Snap")); _notebook.append_page(_page_snap_dtls, _("Snap points")); + _notebook.append_page(_page_cms, _("Color Management")); build_page(); build_guides(); build_gridspage(); build_snap(); build_snap_dtls(); +#if ENABLE_LCMS + build_cms(); +#endif // ENABLE_LCMS _grids_button_new.signal_clicked().connect(sigc::mem_fun(*this, &DocumentProperties::onNewGrid)); _grids_button_remove.signal_clicked().connect(sigc::mem_fun(*this, &DocumentProperties::onRemoveGrid)); @@ -312,8 +325,6 @@ DocumentProperties::build_snap() slaves.clear(); slaves.push_back(&_rcbsnn); slaves.push_back(&_rcbsnbb); - slaves.push_back(&_rcbsi); - _rcbs.setSlaveWidgets(slaves); Gtk::Label *label_g = manage (new Gtk::Label); @@ -331,7 +342,6 @@ DocumentProperties::build_snap() { label_g, 0, 0, &_rcbs, - 0, &_rcbsi, 0, 0, label_w, 0, 0, &_rcbsnn, @@ -375,12 +385,208 @@ DocumentProperties::build_snap_dtls() 0, 0, label_m, 0, 0, &_rcbic, - 0, &_rcbsm + 0, &_rcbsm }; attach_all(_page_snap_dtls.table(), array, G_N_ELEMENTS(array)); } +#if ENABLE_LCMS +static void +lcms_profile_get_name (cmsHPROFILE profile, const gchar **name) +{ + if (profile) + { + *name = cmsTakeProductDesc (profile); + + if (! *name) + *name = cmsTakeProductName (profile); + + if (*name && ! g_utf8_validate (*name, -1, NULL)) + *name = _("(invalid UTF-8 string)"); + } + else + { + *name = _("None"); + } +} + +void +DocumentProperties::populate_available_profiles(){ + + // add "None" +/* Gtk::MenuItem *i = new Gtk::MenuItem(); + i->show(); + + i->set_data("filepath", NULL); + i->set_data("name", _("None")); + + Gtk::HBox *hb = new Gtk::HBox(false, 0); + hb->show(); + + Gtk::Label *l = new Gtk::Label( _("None") ); + l->show(); + l->set_alignment(0.0, 0.5); + + hb->pack_start(*l, true, true, 0); + + hb->show(); + i->add(*hb); + _menu.append(*i); +*/ + std::list sources; + sources.push_back( profile_path("color/icc") ); + //sources.push_back( g_strdup(INKSCAPE_COLORPROFILESDIR) ); + + int index = 1; + + // Use this loop to iterate through a list of possible document locations. + while (!sources.empty()) { + gchar *dirname = sources.front(); + + if ( Inkscape::IO::file_test( dirname, G_FILE_TEST_EXISTS ) + && Inkscape::IO::file_test( dirname, G_FILE_TEST_IS_DIR )) { + GError *err = 0; + GDir *directory = g_dir_open(dirname, 0, &err); + if (!directory) { + gchar *safeDir = Inkscape::IO::sanitizeString(dirname); + g_warning(_("Color profiles directory (%s) is unavailable."), safeDir); + g_free(safeDir); + } else { + gchar *filename = 0; + while ((filename = (gchar *)g_dir_read_name(directory)) != NULL) { + gchar* lower = g_ascii_strdown( filename, -1 ); + gchar* full = g_build_filename(dirname, filename, NULL); + if ( !Inkscape::IO::file_test( full, G_FILE_TEST_IS_DIR ) ) { + cmsHPROFILE hProfile = cmsOpenProfileFromFile(full, "r"); + if (hProfile != NULL){ + const gchar* name; + lcms_profile_get_name(hProfile, &name); + Gtk::MenuItem* mi = new Gtk::MenuItem(); + mi->set_data("filepath", g_strdup(full)); + mi->set_data("name", g_strdup(name)); + Gtk::HBox *hbox = new Gtk::HBox(); + hbox->show(); + Gtk::Label* lbl = manage(new Gtk::Label(name)); + lbl->show(); + hbox->pack_start(*lbl, true, true, 0); + mi->add(*hbox); + mi->show_all(); + _menu.append(*mi); + // g_free((void*)name); + } + cmsCloseProfile(hProfile); + index++; + } + g_free(full); + g_free(lower); + } + g_dir_close(directory); + } + } + + // toss the dirname + g_free(dirname); + sources.pop_front(); + } + _menu.show_all(); +} + +void +DocumentProperties::onEmbedProfile() +{ +//store this profile in the SVG document (create element in the XML) + SPDesktop *desktop = SP_ACTIVE_DESKTOP; + if (!desktop){ + g_warning("No active desktop"); + return; + } + Inkscape::XML::Document *xml_doc = sp_document_repr_doc(desktop->doc()); + Inkscape::XML::Node *cprofRepr = xml_doc->createElement("svg:color-profile"); + cprofRepr->setAttribute("name", (gchar*) _menu.get_active()->get_data("name")); + cprofRepr->setAttribute("xlink:href", (gchar*) _menu.get_active()->get_data("filepath")); + + /* Checks whether there is a defs element. Creates it when needed */ + Inkscape::XML::Node *defsRepr = sp_repr_lookup_name(xml_doc, "svg:defs"); + if (!defsRepr){ + defsRepr = xml_doc->createElement("svg:defs"); + xml_doc->root()->addChild(defsRepr, NULL); + } + + g_assert(SP_ROOT(desktop->doc()->root)->defs); + defsRepr->addChild(cprofRepr, NULL); + + Inkscape::GC::release(defsRepr); + + // inform the document, so we can undo + sp_document_done(desktop->doc(), SP_VERB_EMBED_COLOR_PROFILE, _("Embed Color Profile")); + + populate_embedded_profiles_box(); +} + +void +DocumentProperties::populate_embedded_profiles_box() +{ + _EmbeddedProfilesListStore->clear(); + const GSList *current = sp_document_get_resource_list( SP_ACTIVE_DOCUMENT, "iccprofile" ); + while ( current ) { + SPObject* obj = SP_OBJECT(current->data); + Inkscape::ColorProfile* prof = reinterpret_cast(obj); + Gtk::TreeModel::Row row = *(_EmbeddedProfilesListStore->append()); + row[_EmbeddedProfilesListColumns.nameColumn] = prof->name; +// row[_EmbeddedProfilesListColumns.previewColumn] = "Color Preview"; + current = g_slist_next(current); + } +} + + +void +DocumentProperties::build_cms() +{ + _page_cms.show(); + + Gtk::Label *label_embed= manage (new Gtk::Label); + label_embed->set_markup (_("Embedded Color Profiles:")); + Gtk::Label *label_avail = manage (new Gtk::Label); + label_avail->set_markup (_("Available Color Profiles:")); + + _embed_btn.set_label("Embed Profile"); + + Gtk::Widget *const array[] = + { + label_embed, 0, + &_EmbeddedProfilesListScroller, 0, + label_avail, 0, + &_combo_avail, &_embed_btn, + }; + + attach_all(_page_cms.table(), array, G_N_ELEMENTS(array)); + + populate_available_profiles(); + + _combo_avail.set_menu(_menu); + _combo_avail.set_history(0); + _combo_avail.show_all(); + + //# Set up the Embedded Profiles combo box + _EmbeddedProfilesListStore = Gtk::ListStore::create(_EmbeddedProfilesListColumns); + _EmbeddedProfilesList.set_model(_EmbeddedProfilesListStore); + _EmbeddedProfilesList.append_column(_("Profile Name"), _EmbeddedProfilesListColumns.nameColumn); +// _EmbeddedProfilesList.append_column(_("Color Preview"), _EmbeddedProfilesListColumns.previewColumn); + _EmbeddedProfilesList.set_headers_visible(false); + _EmbeddedProfilesList.set_fixed_height_mode(true); + + populate_embedded_profiles_box(); + + _EmbeddedProfilesListScroller.add(_EmbeddedProfilesList); + _EmbeddedProfilesListScroller.set_shadow_type(Gtk::SHADOW_IN); + _EmbeddedProfilesListScroller.set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_ALWAYS); + _EmbeddedProfilesListScroller.set_size_request(-1, 90); + + _embed_btn.signal_clicked().connect(sigc::mem_fun(*this, &DocumentProperties::onEmbedProfile)); +} +#endif // ENABLE_LCMS + /** * Called for _updating_ the dialog (e.g. when a new grid was manually added in XML) */ @@ -515,8 +721,6 @@ DocumentProperties::update() _rsu_gusn.setValue (nv->guidetolerance); _rcbs.setActive (nv->snap_manager.snapprefs.getSnapEnabledGlobally()); - _rcbsi.setActive (nv->snapindicator); - //-----------------------------------------------------------grids page update_gridspage(); diff --git a/src/ui/dialog/document-properties.h b/src/ui/dialog/document-properties.h index ab70b0d07..ff4739bfb 100644 --- a/src/ui/dialog/document-properties.h +++ b/src/ui/dialog/document-properties.h @@ -50,8 +50,15 @@ protected: void build_snap(); void build_snap_dtls(); void build_gridspage(); +#if ENABLE_LCMS + void build_cms(); +#endif // ENABLE_LCMS void init(); + + void populate_available_profiles(); + void populate_embedded_profiles_box(); virtual void on_response (int); + void onEmbedProfile(); void _handleDocumentReplaced(SPDesktop* desktop, SPDocument *document); void _handleActivateDesktop(Inkscape::Application *application, SPDesktop *desktop); @@ -61,7 +68,7 @@ protected: Gtk::Notebook _notebook; NotebookPage _page_page, _page_guides; - NotebookPage _page_snap, _page_snap_dtls; + NotebookPage _page_snap, _page_snap_dtls, _page_cms; Gtk::VBox _grids_vbox; Registry _wr; @@ -74,13 +81,29 @@ protected: RegisteredCheckButton _rcb_sgui, _rcbsng; RegisteredColorPicker _rcp_gui, _rcp_hgui; //--------------------------------------------------------------- - RegisteredCheckButton _rcbs, _rcbsi, _rcbsnbb, _rcbsnn, _rcbsnop; + RegisteredCheckButton _rcbs, _rcbsnbb, _rcbsnn, _rcbsnop; RegisteredCheckButton _rcbsnon, _rcbsnbbp, _rcbsnbbn, _rcbsnpb; ToleranceSlider _rsu_sno, _rsu_sn, _rsu_gusn; //--------------------------------------------------------------- RegisteredCheckButton _rcbic, _rcbsm; RegisteredCheckButton _rcbsigg, _rcbsils; //--------------------------------------------------------------- + Gtk::Menu _menu; + Gtk::OptionMenu _combo_avail; + Gtk::Button _embed_btn; + class EmbeddedProfilesColumns : public Gtk::TreeModel::ColumnRecord + { + public: + EmbeddedProfilesColumns() + { add(nameColumn); add(previewColumn); } + Gtk::TreeModelColumn nameColumn; + Gtk::TreeModelColumn previewColumn; + }; + EmbeddedProfilesColumns _EmbeddedProfilesListColumns; + Glib::RefPtr _EmbeddedProfilesListStore; + Gtk::TreeView _EmbeddedProfilesList; + Gtk::ScrolledWindow _EmbeddedProfilesListScroller; + //--------------------------------------------------------------- Gtk::Notebook _grids_notebook; Gtk::HBox _grids_hbox_crea; Gtk::Label _grids_label_crea; diff --git a/src/ui/dialog/filedialogimpl-win32.cpp b/src/ui/dialog/filedialogimpl-win32.cpp index b47f2ccc7..d91af244b 100644 --- a/src/ui/dialog/filedialogimpl-win32.cpp +++ b/src/ui/dialog/filedialogimpl-win32.cpp @@ -864,7 +864,7 @@ bool FileOpenDialogImplWin32::set_svg_preview() NRRectL bbox = {0, 0, scaledSvgWidth, scaledSvgHeight}; // write object bbox to area - boost::optional maybeArea(area); + Geom::OptRect maybeArea(area); sp_document_ensure_up_to_date (svgDoc); sp_item_invoke_bbox((SPItem *) svgDoc->root, maybeArea, sp_item_i2r_affine((SPItem *)(svgDoc->root)), TRUE); diff --git a/src/ui/dialog/filter-effects-dialog.cpp b/src/ui/dialog/filter-effects-dialog.cpp index 799bb2a24..08df7fd05 100644 --- a/src/ui/dialog/filter-effects-dialog.cpp +++ b/src/ui/dialog/filter-effects-dialog.cpp @@ -41,18 +41,18 @@ #include "path-prefix.h" #include "preferences.h" #include "selection.h" -#include "sp-feblend.h" -#include "sp-fecolormatrix.h" -#include "sp-fecomponenttransfer.h" -#include "sp-fecomposite.h" -#include "sp-feconvolvematrix.h" -#include "sp-fedisplacementmap.h" -#include "sp-fedistantlight.h" -#include "sp-femerge.h" -#include "sp-femergenode.h" -#include "sp-feoffset.h" -#include "sp-fepointlight.h" -#include "sp-fespotlight.h" +#include "filters/blend.h" +#include "filters/colormatrix.h" +#include "filters/componenttransfer.h" +#include "filters/composite.h" +#include "filters/convolvematrix.h" +#include "filters/displacementmap.h" +#include "filters/distantlight.h" +#include "filters/merge.h" +#include "filters/mergenode.h" +#include "filters/offset.h" +#include "filters/pointlight.h" +#include "filters/spotlight.h" #include "sp-filter-primitive.h" #include "sp-gaussian-blur.h" @@ -84,7 +84,7 @@ int input_count(const SPFilterPrimitive* prim) else if(SP_IS_FEMERGE(prim)) { // Return the number of feMergeNode connections plus an extra int count = 1; - for(const SPObject* o = prim->firstChild(); o; o = o->next, ++count); + for(const SPObject* o = prim->firstChild(); o; o = o->next, ++count){}; return count; } else @@ -1821,7 +1821,7 @@ int FilterEffectsDialog::PrimitiveList::find_index(const Gtk::TreeIter& target) { int i = 0; for(Gtk::TreeIter iter = _model->children().begin(); - iter != target; ++iter, ++i); + iter != target; ++iter, ++i){}; return i; } diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index d06d3a406..a436ce867 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -114,6 +114,7 @@ InkscapePreferences::InkscapePreferences() initPageUI(); initPageMouse(); initPageScrolling(); + initPageSnapping(); initPageSteps(); initPageWindows(); initPageMisc(); @@ -198,6 +199,20 @@ void InkscapePreferences::initPageScrolling() _("When on, mouse wheel zooms without Ctrl and scrolls canvas with Ctrl; when off, it zooms with Ctrl and scrolls without Ctrl.")); } +void InkscapePreferences::initPageSnapping() +{ + + _snap_indicator.init( _("Enable snap indicator"), "/options/snapindicator/value", true); + _page_snapping.add_line( false, "", _snap_indicator, "", + _("After snapping, a symbol is drawn at the point that has snapped")); + + _snap_delay.init("/options/snapdelay/value", 0, 1000, 50, 100, 300, 0); + _page_snapping.add_line( false, _("Delay (in msec):"), _snap_delay, "", + _("Postpone snapping as long as the mouse is moving, and then wait an additional fraction of a second. This additional delay is specified here. When set to zero or to a very small number, snapping will be immediate"), true); + + this->AddPage(_page_snapping, _("Snapping"), PREFS_PAGE_SNAPPING); +} + void InkscapePreferences::initPageSteps() { this->AddPage(_page_steps, _("Steps"), PREFS_PAGE_STEPS); diff --git a/src/ui/dialog/inkscape-preferences.h b/src/ui/dialog/inkscape-preferences.h index 98ecda855..a957ce657 100644 --- a/src/ui/dialog/inkscape-preferences.h +++ b/src/ui/dialog/inkscape-preferences.h @@ -72,6 +72,7 @@ enum { PREFS_PAGE_UI, PREFS_PAGE_MOUSE, PREFS_PAGE_SCROLLING, + PREFS_PAGE_SNAPPING, PREFS_PAGE_STEPS, PREFS_PAGE_WINDOWS, PREFS_PAGE_MISC @@ -110,7 +111,7 @@ protected: Gtk::TreeModel::Path _path_tools; Gtk::TreeModel::Path _path_shapes; - DialogPage _page_mouse, _page_scrolling, _page_steps, _page_tools, _page_windows, + DialogPage _page_mouse, _page_scrolling, _page_snapping, _page_steps, _page_tools, _page_windows, _page_clones, _page_mask, _page_transforms, _page_filters, _page_select, _page_importexport, _page_cms, _page_grids, _page_svgoutput, _page_misc, _page_ui, _page_autosave, _page_bitmaps; @@ -125,6 +126,9 @@ protected: PrefSpinButton _scroll_wheel, _scroll_arrow_px, _scroll_arrow_acc, _scroll_auto_speed, _scroll_auto_thres; PrefCheckButton _scroll_space; PrefCheckButton _wheel_zoom; + + Gtk::HScale *_slider_snapping_delay; + PrefCheckButton _snap_indicator; PrefCombo _steps_rot_snap; PrefCheckButton _steps_compass; @@ -172,6 +176,7 @@ protected: PrefSpinButton _importexport_export, _misc_recent, _misc_simpl; ZoomCorrRulerSlider _ui_zoom_correction; + PrefSlider _snap_delay; PrefSpinButton _misc_latency_skew; PrefCheckButton _misc_comment, _misc_forkvectors, _misc_scripts, _misc_namedicon_delay; PrefCombo _misc_small_toolbar; @@ -255,6 +260,7 @@ protected: void on_pagelist_selection_changed(); void initPageMouse(); void initPageScrolling(); + void initPageSnapping(); void initPageSteps(); void initPageTools(); void initPageWindows(); diff --git a/src/ui/dialog/livepatheffect-editor.cpp b/src/ui/dialog/livepatheffect-editor.cpp index 8a7e0adeb..1c66160dd 100644 --- a/src/ui/dialog/livepatheffect-editor.cpp +++ b/src/ui/dialog/livepatheffect-editor.cpp @@ -27,6 +27,7 @@ #include "path-chemistry.h" #include "live_effects/effect.h" #include "live_effects/lpeobject.h" +#include "live_effects/lpeobject-reference.h" #include "gtkmm/widget.h" #include #include "inkscape.h" diff --git a/src/ui/dialog/livepatheffect-editor.h b/src/ui/dialog/livepatheffect-editor.h index 370bd599a..1152e8bb8 100644 --- a/src/ui/dialog/livepatheffect-editor.h +++ b/src/ui/dialog/livepatheffect-editor.h @@ -19,8 +19,7 @@ #include #include #include "ui/widget/combo-enums.h" -#include "live_effects/effect.h" -#include "live_effects/lpeobject-reference.h" +#include "live_effects/effect-enum.h" #include #include #include @@ -29,9 +28,15 @@ class SPDesktop; +class SPLPEItem; namespace Inkscape { +namespace LivePathEffect { + class Effect; + class LPEObjectReference; +} + namespace UI { namespace Dialog { diff --git a/src/ui/dialog/messages.cpp b/src/ui/dialog/messages.cpp index 958256310..31f9cc51e 100644 --- a/src/ui/dialog/messages.cpp +++ b/src/ui/dialog/messages.cpp @@ -99,8 +99,8 @@ void Messages::message(char *msg) buffer->insert (buffer->end(), uMsg); } - -void dialogLoggingFunction(const gchar */*log_domain*/, +// dialogLoggingCallback is already used in debug.cpp +static void dialogLoggingCallback(const gchar */*log_domain*/, GLogLevelFlags /*log_level*/, const gchar *messageText, gpointer user_data) @@ -123,27 +123,27 @@ void Messages::captureLogMessages() G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG); if ( !handlerDefault ) { handlerDefault = g_log_set_handler(NULL, flags, - dialogLoggingFunction, (gpointer)this); + dialogLoggingCallback, (gpointer)this); } if ( !handlerGlibmm ) { handlerGlibmm = g_log_set_handler("glibmm", flags, - dialogLoggingFunction, (gpointer)this); + dialogLoggingCallback, (gpointer)this); } if ( !handlerAtkmm ) { handlerAtkmm = g_log_set_handler("atkmm", flags, - dialogLoggingFunction, (gpointer)this); + dialogLoggingCallback, (gpointer)this); } if ( !handlerPangomm ) { handlerPangomm = g_log_set_handler("pangomm", flags, - dialogLoggingFunction, (gpointer)this); + dialogLoggingCallback, (gpointer)this); } if ( !handlerGdkmm ) { handlerGdkmm = g_log_set_handler("gdkmm", flags, - dialogLoggingFunction, (gpointer)this); + dialogLoggingCallback, (gpointer)this); } if ( !handlerGtkmm ) { handlerGtkmm = g_log_set_handler("gtkmm", flags, - dialogLoggingFunction, (gpointer)this); + dialogLoggingCallback, (gpointer)this); } message((char*)"log capture started"); } diff --git a/src/ui/dialog/tile.cpp b/src/ui/dialog/tile.cpp new file mode 100644 index 000000000..7f45901c3 --- /dev/null +++ b/src/ui/dialog/tile.cpp @@ -0,0 +1,884 @@ +/* + * A simple dialog for creating grid type arrangements of selected objects + * + * Authors: + * Bob Jamison ( based off trace dialog) + * John Cliff + * Other dudes from The Inkscape Organization + * + * Copyright (C) 2004 Bob Jamison + * Copyright (C) 2004 John Cliff + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ +//#define DEBUG_GRID_ARRANGE 1 + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include //for GTK_RESPONSE* types +#include +#include +#include + +#include "verbs.h" +#include "preferences.h" +#include "inkscape.h" +#include "desktop-handles.h" +#include "selection.h" +#include "document.h" +#include "sp-item.h" +#include "widgets/icon.h" +#include "tile.h" + +/* + * Sort items by their x co-ordinates, taking account of y (keeps rows intact) + * + * <0 *elem1 goes before *elem2 + * 0 *elem1 == *elem2 + * >0 *elem1 goes after *elem2 + */ +int +sp_compare_x_position(SPItem *first, SPItem *second) +{ + using Geom::X; + using Geom::Y; + + Geom::OptRect a = first->getBounds(sp_item_i2doc_affine(first)); + Geom::OptRect b = second->getBounds(sp_item_i2doc_affine(second)); + + if ( !a || !b ) { + // FIXME? + return 0; + } + + double const a_height = a->dimensions()[Y]; + double const b_height = b->dimensions()[Y]; + + bool a_in_b_vert = false; + if ((a->min()[Y] < b->min()[Y] + 0.1) && (a->min()[Y] > b->min()[Y] - b_height)) { + a_in_b_vert = true; + } else if ((b->min()[Y] < a->min()[Y] + 0.1) && (b->min()[Y] > a->min()[Y] - a_height)) { + a_in_b_vert = true; + } else if (b->min()[Y] == a->min()[Y]) { + a_in_b_vert = true; + } else { + a_in_b_vert = false; + } + + if (!a_in_b_vert) { + return -1; + } + if (a_in_b_vert && a->min()[X] > b->min()[X]) { + return 1; + } + if (a_in_b_vert && a->min()[X] < b->min()[X]) { + return -1; + } + return 0; +} + +/* + * Sort items by their y co-ordinates. + */ +int +sp_compare_y_position(SPItem *first, SPItem *second) +{ + Geom::OptRect a = first->getBounds(sp_item_i2doc_affine(first)); + Geom::OptRect b = second->getBounds(sp_item_i2doc_affine(second)); + + if ( !a || !b ) { + // FIXME? + return 0; + } + + if (a->min()[Geom::Y] > b->min()[Geom::Y]) { + return 1; + } + if (a->min()[Geom::Y] < b->min()[Geom::Y]) { + return -1; + } + + return 0; +} + +namespace Inkscape { +namespace UI { +namespace Dialog { + + +//######################################################################### +//## E V E N T S +//######################################################################### + +/* + * + * This arranges the selection in a grid pattern. + * + */ + +void TileDialog::Grid_Arrange () +{ + + int cnt,row_cnt,col_cnt,a,row,col; + double grid_left,grid_top,col_width,row_height,paddingx,paddingy,width, height, new_x, new_y,cx,cy; + double total_col_width,total_row_height; + col_width = 0; + row_height = 0; + total_col_width=0; + total_row_height=0; + + // check for correct numbers in the row- and col-spinners + on_col_spinbutton_changed(); + on_row_spinbutton_changed(); + + // set padding to manual values + paddingx = XPadSpinner.get_value(); + paddingy = YPadSpinner.get_value(); + + std::vector row_heights; + std::vector col_widths; + std::vector row_ys; + std::vector col_xs; + + int NoOfCols = NoOfColsSpinner.get_value_as_int(); + int NoOfRows = NoOfRowsSpinner.get_value_as_int(); + + width = 0; + for (a=0;aitemList(); + cnt=0; + for (; items != NULL; items = items->next) { + SPItem *item = SP_ITEM(items->data); + Geom::OptRect b = item->getBounds(sp_item_i2doc_affine(item)); + if (!b) { + continue; + } + + width = b->dimensions()[Geom::X]; + height = b->dimensions()[Geom::Y]; + + cx = b->midpoint()[Geom::X]; + cy = b->midpoint()[Geom::Y]; + + if (b->min()[Geom::X] < grid_left) { + grid_left = b->min()[Geom::X]; + } + if (b->min()[Geom::Y] < grid_top) { + grid_top = b->min()[Geom::Y]; + } + if (width > col_width) { + col_width = width; + } + if (height > row_height) { + row_height = height; + } + } + + + // require the sorting done before we can calculate row heights etc. + + const GSList *items2 = selection->itemList(); + GSList *rev = g_slist_copy((GSList *) items2); + GSList *sorted = NULL; + rev = g_slist_sort(rev, (GCompareFunc) sp_compare_y_position); + sorted = g_slist_sort(rev, (GCompareFunc) sp_compare_x_position); + + + // Calculate individual Row and Column sizes if necessary + + + cnt=0; + const GSList *sizes = sorted; + for (; sizes != NULL; sizes = sizes->next) { + SPItem *item = SP_ITEM(sizes->data); + Geom::OptRect b = item->getBounds(sp_item_i2doc_affine(item)); + if (b) { + width = b->dimensions()[Geom::X]; + height = b->dimensions()[Geom::Y]; + if (width > col_widths[(cnt % NoOfCols)]) { + col_widths[(cnt % NoOfCols)] = width; + } + if (height > row_heights[(cnt / NoOfCols)]) { + row_heights[(cnt / NoOfCols)] = height; + } + } + + cnt++; + } + + + /// Make sure the top and left of the grid dont move by compensating for align values. + if (RowHeightButton.get_active()){ + grid_top = grid_top - (((row_height - row_heights[0]) / 2)*(VertAlign)); + } + if (ColumnWidthButton.get_active()){ + grid_left = grid_left - (((col_width - col_widths[0]) /2)*(HorizAlign)); + } + + #ifdef DEBUG_GRID_ARRANGE + g_print("\n cx = %f cy= %f gridleft=%f",cx,cy,grid_left); + #endif + + // Calculate total widths and heights, allowing for columns and rows non uniformly sized. + + if (ColumnWidthButton.get_active()){ + total_col_width = col_width * NoOfCols; + col_widths.clear(); + for (a=0;abounds(); + // Fit to bbox, calculate padding between rows accordingly. + if ( sel_bbox && !SpaceManualRadioButton.get_active() ){ +#ifdef DEBUG_GRID_ARRANGE +g_print("\n row = %f col = %f selection x= %f selection y = %f", total_row_height,total_col_width, b.extent(Geom::X), b.extent(Geom::Y)); +#endif + paddingx = (sel_bbox->width() - total_col_width) / (NoOfCols -1); + paddingy = (sel_bbox->height() - total_row_height) / (NoOfRows -1); + } + +/* + Horizontal align - Left = 0 + Centre = 1 + Right = 2 + + Vertical align - Top = 0 + Middle = 1 + Bottom = 2 + + X position is calculated by taking the grids left co-ord, adding the distance to the column, + then adding 1/2 the spacing multiplied by the align variable above, + Y position likewise, takes the top of the grid, adds the y to the current row then adds the padding in to align it. + +*/ + + // Calculate row and column x and y coords required to allow for columns and rows which are non uniformly sized. + + for (a=0;adata); + sorted = sorted->next; + } + + for (; current_row != NULL; current_row = current_row->next) { + SPItem *item=SP_ITEM(current_row->data); + Inkscape::XML::Node *repr = SP_OBJECT_REPR(item); + Geom::OptRect b = item->getBounds(sp_item_i2doc_affine(item)); + Geom::Point min; + if (b) { + width = b->dimensions()[Geom::X]; + height = b->dimensions()[Geom::Y]; + min = b->min(); + } else { + width = height = 0; + min = Geom::Point(0, 0); + } + + row = cnt / NoOfCols; + col = cnt % NoOfCols; + + new_x = grid_left + (((col_widths[col] - width)/2)*HorizAlign) + col_xs[col]; + new_y = grid_top + (((row_heights[row] - height)/2)*VertAlign) + row_ys[row]; + + // signs are inverted between x and y due to y inversion + Geom::Point move = Geom::Point(new_x - min[Geom::X], min[Geom::Y] - new_y); + Geom::Matrix const affine = Geom::Matrix(Geom::Translate(move)); + sp_item_set_i2d_affine(item, sp_item_i2d_affine(item) * affine); + sp_item_write_transform(item, repr, item->transform, NULL); + SP_OBJECT (current_row->data)->updateRepr(); + cnt +=1; + } + g_slist_free (current_row); + } + + sp_document_done (sp_desktop_document (desktop), SP_VERB_SELECTION_GRIDTILE, + _("Arrange in a grid")); + +} + + +//######################################################################### +//## E V E N T S +//######################################################################### + + +void TileDialog::_apply() +{ + Grid_Arrange(); +} + + +/** + * changed value in # of columns spinbox. + */ +void TileDialog::on_row_spinbutton_changed() +{ + // quit if run by the attr_changed listener + if (updating) { + return; + } + + // in turn, prevent listener from responding + updating = true; + SPDesktop *desktop = getDesktop(); + + Inkscape::Selection *selection = sp_desktop_selection (desktop); + + GSList const *items = selection->itemList(); + int selcount = g_slist_length((GSList *)items); + + double PerCol = ceil(selcount / NoOfColsSpinner.get_value()); + NoOfRowsSpinner.set_value(PerCol); + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + prefs->setDouble("/dialogs/gridtiler/NoOfCols", NoOfColsSpinner.get_value()); + updating=false; +} + +/** + * changed value in # of rows spinbox. + */ +void TileDialog::on_col_spinbutton_changed() +{ + // quit if run by the attr_changed listener + if (updating) { + return; + } + + // in turn, prevent listener from responding + updating = true; + SPDesktop *desktop = getDesktop(); + Inkscape::Selection *selection = sp_desktop_selection (desktop); + + GSList const *items = selection->itemList(); + int selcount = g_slist_length((GSList *)items); + + double PerRow = ceil(selcount / NoOfRowsSpinner.get_value()); + NoOfColsSpinner.set_value(PerRow); + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + prefs->setDouble("/dialogs/gridtiler/NoOfCols", PerRow); + + updating=false; +} + +/** + * changed value in x padding spinbox. + */ +void TileDialog::on_xpad_spinbutton_changed() +{ + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + prefs->setDouble("/dialogs/gridtiler/XPad", XPadSpinner.get_value()); + +} + +/** + * changed value in y padding spinbox. + */ +void TileDialog::on_ypad_spinbutton_changed() +{ + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + prefs->setDouble("/dialogs/gridtiler/YPad", YPadSpinner.get_value()); +} + + +/** + * checked/unchecked autosize Rows button. + */ +void TileDialog::on_RowSize_checkbutton_changed() +{ + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + if (RowHeightButton.get_active()) { + prefs->setDouble("/dialogs/gridtiler/AutoRowSize", 20); + } else { + prefs->setDouble("/dialogs/gridtiler/AutoRowSize", -20); + } + RowHeightBox.set_sensitive ( !RowHeightButton.get_active()); +} + +/** + * checked/unchecked autosize Rows button. + */ +void TileDialog::on_ColSize_checkbutton_changed() +{ + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + if (ColumnWidthButton.get_active()) { + prefs->setDouble("/dialogs/gridtiler/AutoColSize", 20); + } else { + prefs->setDouble("/dialogs/gridtiler/AutoColSize", -20); + } + ColumnWidthBox.set_sensitive ( !ColumnWidthButton.get_active()); +} + +/** + * changed value in columns spinbox. + */ +void TileDialog::on_rowSize_spinbutton_changed() +{ + // quit if run by the attr_changed listener + if (updating) { + return; + } + + // in turn, prevent listener from responding + updating = true; + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + prefs->setDouble("/dialogs/gridtiler/RowHeight", RowHeightSpinner.get_value()); + updating=false; + +} + +/** + * changed value in rows spinbox. + */ +void TileDialog::on_colSize_spinbutton_changed() +{ + // quit if run by the attr_changed listener + if (updating) { + return; + } + + // in turn, prevent listener from responding + updating = true; + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + prefs->setDouble("/dialogs/gridtiler/ColWidth", ColumnWidthSpinner.get_value()); + updating=false; + +} + +/** + * changed Radio button in Spacing group. + */ +void TileDialog::Spacing_button_changed() +{ + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + if (SpaceManualRadioButton.get_active()) { + prefs->setDouble("/dialogs/gridtiler/SpacingType", 20); + } else { + prefs->setDouble("/dialogs/gridtiler/SpacingType", -20); + } + + SizesHBox.set_sensitive ( SpaceManualRadioButton.get_active()); +} + +/** + * changed Radio button in Vertical Align group. + */ +void TileDialog::VertAlign_changed() +{ + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + if (VertTopRadioButton.get_active()) { + VertAlign = 0; + prefs->setInt("/dialogs/gridtiler/VertAlign", 0); + } else if (VertCentreRadioButton.get_active()){ + VertAlign = 1; + prefs->setInt("/dialogs/gridtiler/VertAlign", 1); + } else if (VertBotRadioButton.get_active()){ + VertAlign = 2; + prefs->setInt("/dialogs/gridtiler/VertAlign", 2); + } +} + +/** + * changed Radio button in Vertical Align group. + */ +void TileDialog::HorizAlign_changed() +{ + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + if (HorizLeftRadioButton.get_active()) { + HorizAlign = 0; + prefs->setInt("/dialogs/gridtiler/HorizAlign", 0); + } else if (HorizCentreRadioButton.get_active()){ + HorizAlign = 1; + prefs->setInt("/dialogs/gridtiler/HorizAlign", 1); + } else if (HorizRightRadioButton.get_active()){ + HorizAlign = 2; + prefs->setInt("/dialogs/gridtiler/HorizAlign", 2); + } +} + +/** + * Desktop selection changed + */ +void TileDialog::updateSelection() +{ + // quit if run by the attr_changed listener + if (updating) { + return; + } + + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + double col_width = 0; + double row_height = 0; + // in turn, prevent listener from responding + updating = true; + SPDesktop *desktop = getDesktop(); + Inkscape::Selection *selection = sp_desktop_selection (desktop); + const GSList *items = selection->itemList(); + int selcount = g_slist_length((GSList *)items); + + if (NoOfColsSpinner.get_value()>1 && NoOfRowsSpinner.get_value()>1){ + // Update the number of rows assuming number of columns wanted remains same. + double NoOfRows = ceil(selcount / NoOfColsSpinner.get_value()); + NoOfRowsSpinner.set_value(NoOfRows); + + // if the selection has less than the number set for one row, reduce it appropriately + if (selcountsetInt("/dialogs/gridtiler/NoOfCols", NoOfCols); + } + } else { + double PerRow = ceil(sqrt(selcount)); + double PerCol = ceil(sqrt(selcount)); + NoOfRowsSpinner.set_value(PerRow); + NoOfColsSpinner.set_value(PerCol); + prefs->setInt("/dialogs/gridtiler/NoOfCols", static_cast(PerCol)); + + } + + updating=false; + +} + + + +/*########################## +## Experimental +##########################*/ + +static void updateSelectionCallback(Inkscape::Application */*inkscape*/, Inkscape::Selection */*selection*/, TileDialog *dlg) +{ + TileDialog *tledlg = (TileDialog *) dlg; + tledlg->updateSelection(); +} + + +//######################################################################### +//## C O N S T R U C T O R / D E S T R U C T O R +//######################################################################### +/** + * Constructor + */ +TileDialog::TileDialog() + : UI::Widget::Panel("", "/dialogs/gridtiler", SP_VERB_SELECTION_GRIDTILE) +{ + // bool used by spin button callbacks to stop loops where they change each other. + updating = false; + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + + // could not do this in gtkmm - there's no Gtk::SizeGroup public constructor (!) + GtkSizeGroup *_col1 = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + GtkSizeGroup *_col2 = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + GtkSizeGroup *_col3 = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + + { + // Selection Change signal + g_signal_connect ( G_OBJECT (INKSCAPE), "change_selection", G_CALLBACK (updateSelectionCallback), this); + } + + Gtk::Box *contents = _getContents(); + +#define MARGIN 2 + + //##Set up the panel + + SPDesktop *desktop = getDesktop(); + + Inkscape::Selection *selection = sp_desktop_selection (desktop); + int selcount = 1; + if (!selection->isEmpty()) { + GSList const *items = selection->itemList(); + selcount = g_slist_length((GSList *)items); + } + + + /*#### Number of Rows ####*/ + + double PerRow = ceil(sqrt(selcount)); + double PerCol = ceil(sqrt(selcount)); + + #ifdef DEBUG_GRID_ARRANGE + g_print("/n PerRox = %f PerCol = %f selcount = %d",PerRow,PerCol,selcount); + #endif + + NoOfRowsLabel.set_label(_("Rows:")); + NoOfRowsBox.pack_start(NoOfRowsLabel, false, false, MARGIN); + + NoOfRowsSpinner.set_digits(0); + NoOfRowsSpinner.set_increments(1, 5); + NoOfRowsSpinner.set_range(1.0, 100.0); + NoOfRowsSpinner.set_value(PerCol); + NoOfRowsSpinner.signal_changed().connect(sigc::mem_fun(*this, &TileDialog::on_col_spinbutton_changed)); + tips.set_tip(NoOfRowsSpinner, _("Number of rows")); + NoOfRowsBox.pack_start(NoOfRowsSpinner, false, false, MARGIN); + gtk_size_group_add_widget(_col1, (GtkWidget *) NoOfRowsBox.gobj()); + + RowHeightButton.set_label(_("Equal height")); + double AutoRow = prefs->getDouble("/dialogs/gridtiler/AutoRowSize", 15); + if (AutoRow>0) + AutoRowSize=true; + else + AutoRowSize=false; + RowHeightButton.set_active(AutoRowSize); + + NoOfRowsBox.pack_start(RowHeightButton, false, false, MARGIN); + + tips.set_tip(RowHeightButton, _("If not set, each row has the height of the tallest object in it")); + RowHeightButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::on_RowSize_checkbutton_changed)); + + { + /*#### Radio buttons to control vertical alignment ####*/ + + VertAlignLabel.set_label(_("Align:")); + VertAlignHBox.pack_start(VertAlignLabel, false, false, MARGIN); + + VertTopRadioButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::VertAlign_changed)); + VertAlignGroup = VertTopRadioButton.get_group(); + VertAlignVBox.pack_start(VertTopRadioButton, false, false, 0); + + VertCentreRadioButton.set_group(VertAlignGroup); + VertCentreRadioButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::VertAlign_changed)); + VertAlignVBox.pack_start(VertCentreRadioButton, false, false, 0); + + VertBotRadioButton.set_group(VertAlignGroup); + VertBotRadioButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::VertAlign_changed)); + VertAlignVBox.pack_start(VertBotRadioButton, false, false, 0); + + VertAlign = prefs->getInt("/dialogs/gridtiler/VertAlign", 1); + if (VertAlign == 0) { + VertTopRadioButton.set_active(TRUE); + } + else if (VertAlign == 1) { + VertCentreRadioButton.set_active(TRUE); + } + else if (VertAlign == 2){ + VertBotRadioButton.set_active(TRUE); + } + VertAlignHBox.pack_start(VertAlignVBox, false, false, MARGIN); + NoOfRowsBox.pack_start(VertAlignHBox, false, false, MARGIN); + } + + SpinsHBox.pack_start(NoOfRowsBox, false, false, MARGIN); + + + /*#### Label for X ####*/ + padXByYLabel.set_label(" "); + XByYLabelVBox.pack_start(padXByYLabel, false, false, MARGIN); + XByYLabel.set_markup(" × "); + XByYLabelVBox.pack_start(XByYLabel, false, false, MARGIN); + SpinsHBox.pack_start(XByYLabelVBox, false, false, MARGIN); + gtk_size_group_add_widget(_col2, (GtkWidget *) XByYLabelVBox.gobj()); + + /*#### Number of columns ####*/ + + NoOfColsLabel.set_label(_("Columns:")); + NoOfColsBox.pack_start(NoOfColsLabel, false, false, MARGIN); + + NoOfColsSpinner.set_digits(0); + NoOfColsSpinner.set_increments(1, 5); + NoOfColsSpinner.set_range(1.0, 100.0); + NoOfColsSpinner.set_value(PerRow); + NoOfColsSpinner.signal_changed().connect(sigc::mem_fun(*this, &TileDialog::on_row_spinbutton_changed)); + tips.set_tip(NoOfColsSpinner, _("Number of columns")); + NoOfColsBox.pack_start(NoOfColsSpinner, false, false, MARGIN); + gtk_size_group_add_widget(_col3, (GtkWidget *) NoOfColsBox.gobj()); + + ColumnWidthButton.set_label(_("Equal width")); + double AutoCol = prefs->getDouble("/dialogs/gridtiler/AutoColSize", 15); + if (AutoCol>0) + AutoColSize=true; + else + AutoColSize=false; + ColumnWidthButton.set_active(AutoColSize); + NoOfColsBox.pack_start(ColumnWidthButton, false, false, MARGIN); + + tips.set_tip(ColumnWidthButton, _("If not set, each column has the width of the widest object in it")); + ColumnWidthButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::on_ColSize_checkbutton_changed)); + + + { + /*#### Radio buttons to control horizontal alignment ####*/ + + HorizAlignLabel.set_label(_("Align:")); + HorizAlignVBox.pack_start(HorizAlignLabel, false, false, MARGIN); + + HorizAlignHBox.pack_start(*(new Gtk::HBox()), true, true, 0); // centering strut + + HorizLeftRadioButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::HorizAlign_changed)); + HorizAlignGroup = HorizLeftRadioButton.get_group(); + HorizAlignHBox.pack_start(HorizLeftRadioButton, false, false, 0); + + HorizCentreRadioButton.set_group(HorizAlignGroup); + HorizCentreRadioButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::HorizAlign_changed)); + HorizAlignHBox.pack_start(HorizCentreRadioButton, false, false, 0); + + HorizRightRadioButton.set_group(HorizAlignGroup); + HorizRightRadioButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::HorizAlign_changed)); + HorizAlignHBox.pack_start(HorizRightRadioButton, false, false, 0); + + HorizAlignHBox.pack_start(*(new Gtk::HBox()), true, true, 0); // centering strut + + HorizAlign = prefs->getInt("/dialogs/gridtiler/HorizAlign", 1); + if (HorizAlign == 0) { + HorizLeftRadioButton.set_active(TRUE); + } + else if (HorizAlign == 1) { + HorizCentreRadioButton.set_active(TRUE); + } + else if (HorizAlign == 2) { + HorizRightRadioButton.set_active(TRUE); + } + HorizAlignVBox.pack_start(HorizAlignHBox, false, false, MARGIN); + NoOfColsBox.pack_start(HorizAlignVBox, false, false, MARGIN); + } + + SpinsHBox.pack_start(NoOfColsBox, false, false, MARGIN); + + TileBox.pack_start(SpinsHBox, false, false, MARGIN); + + { + /*#### Radio buttons to control spacing manually or to fit selection bbox ####*/ + SpaceByBBoxRadioButton.set_label(_("Fit into selection box")); + SpaceByBBoxRadioButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::Spacing_button_changed)); + SpacingGroup = SpaceByBBoxRadioButton.get_group(); + + SpacingVBox.pack_start(SpaceByBBoxRadioButton, false, false, MARGIN); + + SpaceManualRadioButton.set_label(_("Set spacing:")); + SpaceManualRadioButton.set_group(SpacingGroup); + SpaceManualRadioButton.signal_toggled().connect(sigc::mem_fun(*this, &TileDialog::Spacing_button_changed)); + SpacingVBox.pack_start(SpaceManualRadioButton, false, false, MARGIN); + + TileBox.pack_start(SpacingVBox, false, false, MARGIN); + } + + { + /*#### Y Padding ####*/ + + GtkWidget *i = sp_icon_new (Inkscape::ICON_SIZE_MENU, "clonetiler_per_row"); + YPadBox.pack_start (*(Glib::wrap(i)), false, false, MARGIN); + + YPadSpinner.set_digits(1); + YPadSpinner.set_increments(0.2, 2); + YPadSpinner.set_range(-10000, 10000); + double YPad = prefs->getDouble("/dialogs/gridtiler/YPad", 15); + YPadSpinner.set_value(YPad); + YPadBox.pack_start(YPadSpinner, true, true, MARGIN); + tips.set_tip(YPadSpinner, _("Vertical spacing between rows (px units)")); + YPadSpinner.signal_changed().connect(sigc::mem_fun(*this, &TileDialog::on_ypad_spinbutton_changed)); + gtk_size_group_add_widget(_col1, (GtkWidget *) YPadBox.gobj()); + + SizesHBox.pack_start(YPadBox, false, false, MARGIN); + } + + { + Gtk::HBox *spacer = new Gtk::HBox; + SizesHBox.pack_start(*spacer, false, false, 0); + gtk_size_group_add_widget(_col2, (GtkWidget *) spacer->gobj()); + } + + { + /*#### X padding ####*/ + + GtkWidget *i = sp_icon_new (Inkscape::ICON_SIZE_MENU, "clonetiler_per_column"); + XPadBox.pack_start (*(Glib::wrap(i)), false, false, MARGIN); + + XPadSpinner.set_digits(1); + XPadSpinner.set_increments(0.2, 2); + XPadSpinner.set_range(-10000, 10000); + double XPad = prefs->getDouble("/dialogs/gridtiler/XPad", 15); + XPadSpinner.set_value(XPad); + XPadBox.pack_start(XPadSpinner, true, true, MARGIN); + tips.set_tip(XPadSpinner, _("Horizontal spacing between columns (px units)")); + XPadSpinner.signal_changed().connect(sigc::mem_fun(*this, &TileDialog::on_xpad_spinbutton_changed)); + gtk_size_group_add_widget(_col3, (GtkWidget *) XPadBox.gobj()); + + SizesHBox.pack_start(XPadBox, false, false, MARGIN); + } + + + TileBox.pack_start(SizesHBox, false, false, MARGIN); + + contents->pack_start(TileBox); + + double SpacingType = prefs->getDouble("/dialogs/gridtiler/SpacingType", 15); + if (SpacingType>0) { + ManualSpacing=true; + } else { + ManualSpacing=false; + } + SpaceManualRadioButton.set_active(ManualSpacing); + SpaceByBBoxRadioButton.set_active(!ManualSpacing); + SizesHBox.set_sensitive (ManualSpacing); + + //## The OK button + TileOkButton = addResponseButton(_("Arrange"), GTK_RESPONSE_APPLY); + tips.set_tip((*TileOkButton), _("Arrange selected objects")); + + show_all_children(); +} + +} //namespace Dialog +} //namespace UI +} //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:encoding=utf-8:textwidth=99 :: diff --git a/src/ui/dialog/tile.h b/src/ui/dialog/tile.h new file mode 100644 index 000000000..075b2b33f --- /dev/null +++ b/src/ui/dialog/tile.h @@ -0,0 +1,183 @@ +/** @file + * @brief Dialog for creating grid type arrangements of selected objects + */ +/* Authors: + * Bob Jamison ( based off trace dialog) + * John Cliff + * Other dudes from The Inkscape Organization + * + * Copyright (C) 2004 Bob Jamison + * Copyright (C) 2004 John Cliff + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifndef SEEN_UI_DIALOG_TILE_H +#define SEEN_UI_DIALOG_TILE_H + +#include +#include +#include +#include +#include +#include +#include + +#include "ui/widget/panel.h" + +namespace Inkscape { +namespace UI { +namespace Dialog { + + +/** + * Dialog for tiling an object + */ +class TileDialog : public UI::Widget::Panel { +public: + TileDialog() ; + virtual ~TileDialog() {}; + + /** + * Do the actual work + */ + void Grid_Arrange(); + + /** + * Respond to selection change + */ + void updateSelection(); + + /** + * Callback from Apply + */ + virtual void _apply(); + + // Callbacks from spinbuttons + void on_row_spinbutton_changed(); + void on_col_spinbutton_changed(); + void on_xpad_spinbutton_changed(); + void on_ypad_spinbutton_changed(); + void on_RowSize_checkbutton_changed(); + void on_ColSize_checkbutton_changed(); + void on_rowSize_spinbutton_changed(); + void on_colSize_spinbutton_changed(); + void Spacing_button_changed(); + void VertAlign_changed(); + void HorizAlign_changed(); + + static TileDialog& getInstance() { + static TileDialog instance; + return instance; + } + +private: + TileDialog(TileDialog const &d); // no copy + void operator=(TileDialog const &d); // no assign + + bool userHidden; + bool updating; + + Gtk::Notebook notebook; + Gtk::Tooltips tips; + + Gtk::VBox TileBox; + Gtk::Button *TileOkButton; + Gtk::Button *TileCancelButton; + + // Number selected label + Gtk::Label SelectionContentsLabel; + + + Gtk::HBox AlignHBox; + Gtk::HBox SpinsHBox; + Gtk::HBox SizesHBox; + + // Number per Row + Gtk::VBox NoOfColsBox; + Gtk::Label NoOfColsLabel; + Gtk::SpinButton NoOfColsSpinner; + bool AutoRowSize; + Gtk::CheckButton RowHeightButton; + + Gtk::VBox XByYLabelVBox; + Gtk::Label padXByYLabel; + Gtk::Label XByYLabel; + + // Number per Column + Gtk::VBox NoOfRowsBox; + Gtk::Label NoOfRowsLabel; + Gtk::SpinButton NoOfRowsSpinner; + bool AutoColSize; + Gtk::CheckButton ColumnWidthButton; + + // Vertical align + Gtk::Label VertAlignLabel; + Gtk::HBox VertAlignHBox; + Gtk::VBox VertAlignVBox; + Gtk::RadioButtonGroup VertAlignGroup; + Gtk::RadioButton VertCentreRadioButton; + Gtk::RadioButton VertTopRadioButton; + Gtk::RadioButton VertBotRadioButton; + double VertAlign; + + // Horizontal align + Gtk::Label HorizAlignLabel; + Gtk::VBox HorizAlignVBox; + Gtk::HBox HorizAlignHBox; + Gtk::RadioButtonGroup HorizAlignGroup; + Gtk::RadioButton HorizCentreRadioButton; + Gtk::RadioButton HorizLeftRadioButton; + Gtk::RadioButton HorizRightRadioButton; + double HorizAlign; + + // padding in x + Gtk::VBox XPadBox; + Gtk::Label XPadLabel; + Gtk::SpinButton XPadSpinner; + + // padding in y + Gtk::VBox YPadBox; + Gtk::Label YPadLabel; + Gtk::SpinButton YPadSpinner; + + // BBox or manual spacing + Gtk::VBox SpacingVBox; + Gtk::RadioButtonGroup SpacingGroup; + Gtk::RadioButton SpaceByBBoxRadioButton; + Gtk::RadioButton SpaceManualRadioButton; + bool ManualSpacing; + + + + // Row height + Gtk::VBox RowHeightVBox; + Gtk::HBox RowHeightBox; + Gtk::Label RowHeightLabel; + Gtk::SpinButton RowHeightSpinner; + + // Column width + Gtk::VBox ColumnWidthVBox; + Gtk::HBox ColumnWidthBox; + Gtk::Label ColumnWidthLabel; + Gtk::SpinButton ColumnWidthSpinner; +}; + + +} //namespace Dialog +} //namespace UI +} //namespace Inkscape + + +#endif /* __TILEDIALOG_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:encoding=utf-8:textwidth=99 : diff --git a/src/ui/dialog/transformation.cpp b/src/ui/dialog/transformation.cpp index 899053cc9..a242aaa4c 100644 --- a/src/ui/dialog/transformation.cpp +++ b/src/ui/dialog/transformation.cpp @@ -457,7 +457,7 @@ Transformation::updatePageMove(Inkscape::Selection *selection) { if (selection && !selection->isEmpty()) { if (!_check_move_relative.get_active()) { - boost::optional bbox = selection->bounds(); + Geom::OptRect bbox = selection->bounds(); if (bbox) { double x = bbox->min()[Geom::X]; double y = bbox->min()[Geom::Y]; @@ -478,7 +478,7 @@ void Transformation::updatePageScale(Inkscape::Selection *selection) { if (selection && !selection->isEmpty()) { - boost::optional bbox = selection->bounds(); + Geom::OptRect bbox = selection->bounds(); if (bbox) { double w = bbox->dimensions()[Geom::X]; double h = bbox->dimensions()[Geom::Y]; @@ -508,7 +508,7 @@ void Transformation::updatePageSkew(Inkscape::Selection *selection) { if (selection && !selection->isEmpty()) { - boost::optional bbox = selection->bounds(); + Geom::OptRect bbox = selection->bounds(); if (bbox) { double w = bbox->dimensions()[Geom::X]; double h = bbox->dimensions()[Geom::Y]; @@ -605,7 +605,7 @@ Transformation::applyPageMove(Inkscape::Selection *selection) if (_check_move_relative.get_active()) { sp_selection_move_relative(selection, x, y); } else { - boost::optional bbox = selection->bounds(); + Geom::OptRect bbox = selection->bounds(); if (bbox) { sp_selection_move_relative(selection, x - bbox->min()[Geom::X], y - bbox->min()[Geom::Y]); @@ -626,7 +626,7 @@ Transformation::applyPageMove(Inkscape::Selection *selection) it != selected.end(); ++it) { - boost::optional bbox = sp_item_bbox_desktop(*it); + Geom::OptRect bbox = sp_item_bbox_desktop(*it); if (bbox) { sorted.push_back(BBoxSort(*it, *bbox, Geom::X, x > 0? 1. : 0., x > 0? 0. : 1.)); } @@ -650,7 +650,7 @@ Transformation::applyPageMove(Inkscape::Selection *selection) it != selected.end(); ++it) { - boost::optional bbox = sp_item_bbox_desktop(*it); + Geom::OptRect bbox = sp_item_bbox_desktop(*it); if (bbox) { sorted.push_back(BBoxSort(*it, *bbox, Geom::Y, y > 0? 1. : 0., y > 0? 0. : 1.)); } @@ -669,7 +669,7 @@ Transformation::applyPageMove(Inkscape::Selection *selection) } } } else { - boost::optional bbox = selection->bounds(); + Geom::OptRect bbox = selection->bounds(); if (bbox) { sp_selection_move_relative(selection, x - bbox->min()[Geom::X], y - bbox->min()[Geom::Y]); @@ -694,7 +694,7 @@ Transformation::applyPageScale(Inkscape::Selection *selection) Geom::Scale scale (0,0); // the values are increments! if (_units_scale.isAbsolute()) { - boost::optional bbox(sp_item_bbox_desktop(item)); + Geom::OptRect bbox(sp_item_bbox_desktop(item)); if (bbox) { double new_width = scaleX; if (fabs(new_width) < 1e-6) new_width = 1e-6; // not 0, as this would result in a nasty no-bbox object @@ -712,7 +712,7 @@ Transformation::applyPageScale(Inkscape::Selection *selection) sp_item_scale_rel (item, scale); } } else { - boost::optional bbox(selection->bounds()); + Geom::OptRect bbox(selection->bounds()); if (bbox) { Geom::Point center(bbox->midpoint()); // use rotation center? Geom::Scale scale (0,0); @@ -781,7 +781,7 @@ Transformation::applyPageSkew(Inkscape::Selection *selection) } else { // absolute displacement double skewX = _scalar_skew_horizontal.getValue("px"); double skewY = _scalar_skew_vertical.getValue("px"); - boost::optional bbox(sp_item_bbox_desktop(item)); + Geom::OptRect bbox(sp_item_bbox_desktop(item)); if (bbox) { double width = bbox->dimensions()[Geom::X]; double height = bbox->dimensions()[Geom::Y]; @@ -790,7 +790,7 @@ Transformation::applyPageSkew(Inkscape::Selection *selection) } } } else { // transform whole selection - boost::optional bbox = selection->bounds(); + Geom::OptRect bbox = selection->bounds(); boost::optional center = selection->center(); if ( bbox && center ) { @@ -873,7 +873,7 @@ Transformation::onMoveRelativeToggled() //g_message("onMoveRelativeToggled: %f, %f px\n", x, y); - boost::optional bbox = selection->bounds(); + Geom::OptRect bbox = selection->bounds(); if (bbox) { if (_check_move_relative.get_active()) { @@ -1013,7 +1013,7 @@ Transformation::onClear() _scalar_move_horizontal.setValue(0); _scalar_move_vertical.setValue(0); } else { - boost::optional bbox = selection->bounds(); + Geom::OptRect bbox = selection->bounds(); if (bbox) { _scalar_move_horizontal.setValue(bbox->min()[Geom::X], "px"); _scalar_move_vertical.setValue(bbox->min()[Geom::Y], "px"); diff --git a/src/ui/view/edit-widget.cpp b/src/ui/view/edit-widget.cpp index 5e7713044..dd437aad8 100644 --- a/src/ui/view/edit-widget.cpp +++ b/src/ui/view/edit-widget.cpp @@ -1404,7 +1404,7 @@ EditWidget::updateScrollbars (double scale) Geom::Point(2 * sp_document_width(doc), 2 * sp_document_height(doc)) ); SPObject* root = doc->root; SPItem* item = SP_ITEM(root); - boost::optional deskarea = Geom::unify(darea, sp_item_bbox_desktop(item)); + Geom::OptRect deskarea = Geom::unify(darea, sp_item_bbox_desktop(item)); /* Canvas region we always show unconditionally */ Geom::Rect carea( Geom::Point(deskarea->min()[Geom::X] * scale - 64, deskarea->max()[Geom::Y] * -scale - 64), diff --git a/src/ui/widget/object-composite-settings.cpp b/src/ui/widget/object-composite-settings.cpp index 9e39af75f..3ef4c7328 100644 --- a/src/ui/widget/object-composite-settings.cpp +++ b/src/ui/widget/object-composite-settings.cpp @@ -125,7 +125,7 @@ ObjectCompositeSettings::_blendBlurValueChanged() // FIXME: fix for GTK breakage, see comment in SelectedStyle::on_opacity_changed; here it results in crash 1580903 sp_canvas_force_full_redraw_after_interruptions(sp_desktop_canvas(desktop), 0); - boost::optional bbox = _subject->getBounds(SPItem::GEOMETRIC_BBOX); + Geom::OptRect bbox = _subject->getBounds(SPItem::GEOMETRIC_BBOX); double radius; if (bbox) { double perimeter = bbox->dimensions()[Geom::X] + bbox->dimensions()[Geom::Y]; // fixme: this is only half the perimeter, is that correct? @@ -271,7 +271,7 @@ ObjectCompositeSettings::_subjectChanged() { case QUERY_STYLE_SINGLE: case QUERY_STYLE_MULTIPLE_AVERAGED: case QUERY_STYLE_MULTIPLE_SAME: - boost::optional bbox = _subject->getBounds(SPItem::GEOMETRIC_BBOX); + Geom::OptRect bbox = _subject->getBounds(SPItem::GEOMETRIC_BBOX); if (bbox) { double perimeter = bbox->dimensions()[Geom::X] + bbox->dimensions()[Geom::Y]; // fixme: this is only half the perimeter, is that correct? _fe_cb.set_blur_sensitive(true); diff --git a/src/ui/widget/preferences-widget.cpp b/src/ui/widget/preferences-widget.cpp index 72df1baab..395726511 100644 --- a/src/ui/widget/preferences-widget.cpp +++ b/src/ui/widget/preferences-widget.cpp @@ -461,6 +461,66 @@ ZoomCorrRulerSlider::init(int ruler_width, int ruler_height, double lower, doubl this->pack_start(*table, Gtk::PACK_EXPAND_WIDGET); } +void +PrefSlider::on_slider_value_changed() +{ + if (this->is_visible() || freeze) //only take action if user changed value + { + freeze = true; + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + prefs->setDouble(_prefs_path, _slider.get_value()); + _sb.set_value(_slider.get_value()); + freeze = false; + } +} + +void +PrefSlider::on_spinbutton_value_changed() +{ + if (this->is_visible() || freeze) //only take action if user changed value + { + freeze = true; + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + prefs->setDouble(_prefs_path, _sb.get_value()); + _slider.set_value(_sb.get_value()); + freeze = false; + } +} + +void +PrefSlider::init(Glib::ustring const &prefs_path, + double lower, double upper, double step_increment, double page_increment, double default_value, int digits) +{ + _prefs_path = prefs_path; + + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + double value = prefs->getDoubleLimited(prefs_path, default_value, lower, upper); + + freeze = false; + + _slider.set_range (lower, upper); + _slider.set_increments (step_increment, page_increment); + _slider.set_value (value); + _slider.set_digits(digits); + _slider.signal_value_changed().connect(sigc::mem_fun(*this, &PrefSlider::on_slider_value_changed)); + + _sb.signal_value_changed().connect(sigc::mem_fun(*this, &PrefSlider::on_spinbutton_value_changed)); + _sb.set_range (lower, upper); + _sb.set_increments (step_increment, page_increment); + _sb.set_value (value); + _sb.set_digits(digits); + + Gtk::Table *table = Gtk::manage(new Gtk::Table()); + Gtk::Alignment *alignment1 = Gtk::manage(new Gtk::Alignment(0.5,1,0,0)); + Gtk::Alignment *alignment2 = Gtk::manage(new Gtk::Alignment(0.5,1,0,0)); + alignment1->add(_sb); + + table->attach(_slider, 0, 1, 0, 1); + table->attach(*alignment1, 1, 2, 0, 1, static_cast(0)); + + this->pack_start(*table, Gtk::PACK_EXPAND_WIDGET); +} + void PrefCombo::init(Glib::ustring const &prefs_path, Glib::ustring labels[], int values[], int num_items, int default_value) { diff --git a/src/ui/widget/preferences-widget.h b/src/ui/widget/preferences-widget.h index dbc319c1a..1576184ac 100644 --- a/src/ui/widget/preferences-widget.h +++ b/src/ui/widget/preferences-widget.h @@ -122,6 +122,23 @@ private: bool freeze; // used to block recursive updates of slider and spinbutton }; +class PrefSlider : public Gtk::HBox +{ +public: + void init(Glib::ustring const &prefs_path, + double lower, double upper, double step_increment, double page_increment, double default_value, int digits); + +private: + void on_slider_value_changed(); + void on_spinbutton_value_changed(); + + Glib::ustring _prefs_path; + Gtk::SpinButton _sb; + Gtk::HScale _slider; + bool freeze; // used to block recursive updates of slider and spinbutton +}; + + class PrefCombo : public Gtk::ComboBoxText { public: diff --git a/src/ui/widget/style-subject.cpp b/src/ui/widget/style-subject.cpp index a2e8a2547..a7359242d 100644 --- a/src/ui/widget/style-subject.cpp +++ b/src/ui/widget/style-subject.cpp @@ -65,12 +65,12 @@ StyleSubject::iterator StyleSubject::Selection::begin() { } } -boost::optional StyleSubject::Selection::getBounds(SPItem::BBoxType type) { +Geom::OptRect StyleSubject::Selection::getBounds(SPItem::BBoxType type) { Inkscape::Selection *selection = _getSelection(); if (selection) { return selection->bounds(type); } else { - return boost::optional(); + return Geom::OptRect(); } } @@ -143,12 +143,12 @@ StyleSubject::iterator StyleSubject::CurrentLayer::begin() { return iterator(_getLayerSList()); } -boost::optional StyleSubject::CurrentLayer::getBounds(SPItem::BBoxType type) { +Geom::OptRect StyleSubject::CurrentLayer::getBounds(SPItem::BBoxType type) { SPObject *layer = _getLayer(); if (layer && SP_IS_ITEM(layer)) { return sp_item_bbox_desktop(SP_ITEM(layer), type); } else { - return boost::optional(); + return Geom::OptRect(); } } diff --git a/src/ui/widget/style-subject.h b/src/ui/widget/style-subject.h index 231a88728..6f46efff5 100644 --- a/src/ui/widget/style-subject.h +++ b/src/ui/widget/style-subject.h @@ -44,7 +44,7 @@ public: virtual iterator begin() = 0; virtual iterator end() { return iterator(NULL); } - virtual boost::optional getBounds(SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX) = 0; + virtual Geom::OptRect getBounds(SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX) = 0; virtual int queryStyle(SPStyle *query, int property) = 0; virtual void setCSS(SPCSSAttr *css) = 0; @@ -67,7 +67,7 @@ public: ~Selection(); virtual iterator begin(); - virtual boost::optional getBounds(SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX); + virtual Geom::OptRect getBounds(SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX); virtual int queryStyle(SPStyle *query, int property); virtual void setCSS(SPCSSAttr *css); @@ -88,7 +88,7 @@ public: ~CurrentLayer(); virtual iterator begin(); - virtual boost::optional getBounds(SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX); + virtual Geom::OptRect getBounds(SPItem::BBoxType type = SPItem::APPROXIMATE_BBOX); virtual int queryStyle(SPStyle *query, int property); virtual void setCSS(SPCSSAttr *css); diff --git a/src/verbs.cpp b/src/verbs.cpp index 37961ab15..4ddf58957 100644 --- a/src/verbs.cpp +++ b/src/verbs.cpp @@ -1308,7 +1308,7 @@ ObjectVerb::perform( SPAction *action, void *data, void */*pdata*/ ) if (sel->isEmpty()) return; - boost::optional bbox = sel->bounds(); + Geom::OptRect bbox = sel->bounds(); if (!bbox) { return; } diff --git a/src/verbs.h b/src/verbs.h index 8ae12f422..2bee018c5 100644 --- a/src/verbs.h +++ b/src/verbs.h @@ -19,6 +19,7 @@ #include #include #include +#include "config.h" #include "require-config.h" /* HAVE_GTK_WINDOW_FULLSCREEN */ #include "helper/helper-forward.h" #include "forward.h" @@ -271,7 +272,9 @@ enum { SP_VERB_UNHIDE_ALL, SP_VERB_UNHIDE_ALL_IN_ALL_LAYERS, /* Footer */ - SP_VERB_LAST + SP_VERB_LAST, + /* Color management */ + SP_VERB_EMBED_COLOR_PROFILE, }; gchar *sp_action_get_title (const SPAction *action); diff --git a/src/widgets/Makefile_insert b/src/widgets/Makefile_insert index 33f589247..fdebe8d20 100644 --- a/src/widgets/Makefile_insert +++ b/src/widgets/Makefile_insert @@ -11,18 +11,18 @@ widgets/clean: rm -f widgets/libspwidgets.a $(widgets_libspwidgets_a_OBJECTS) widgets_libspwidgets_a_SOURCES = \ - widgets/button.cpp \ - widgets/button.h \ + widgets/button.cpp \ + widgets/button.h \ widgets/calligraphic-profile-rename.cpp \ widgets/calligraphic-profile-rename.h \ widgets/dash-selector.cpp \ - widgets/dash-selector.h \ + widgets/dash-selector.h \ widgets/dash-selector.cpp \ - widgets/dash-selector.h \ + widgets/dash-selector.h \ widgets/desktop-widget.cpp \ widgets/desktop-widget.h \ widgets/font-selector.cpp \ - widgets/font-selector.h \ + widgets/font-selector.h \ widgets/gradient-toolbar.cpp \ widgets/gradient-toolbar.h \ widgets/gradient-image.cpp \ @@ -31,14 +31,14 @@ widgets_libspwidgets_a_SOURCES = \ widgets/gradient-selector.h \ widgets/gradient-vector.cpp \ widgets/gradient-vector.h \ - widgets/icon.cpp \ - widgets/icon.h \ - widgets/layer-selector.h \ - widgets/layer-selector.cpp \ + widgets/icon.cpp \ + widgets/icon.h \ + widgets/layer-selector.h \ + widgets/layer-selector.cpp \ widgets/paint-selector.cpp \ widgets/paint-selector.h \ - widgets/ruler.cpp \ - widgets/ruler.h \ + widgets/ruler.cpp \ + widgets/ruler.h \ widgets/select-toolbar.cpp \ widgets/select-toolbar.h \ widgets/shrink-wrap-button.cpp \ @@ -61,8 +61,8 @@ widgets_libspwidgets_a_SOURCES = \ widgets/sp-color-wheel-selector.h \ widgets/sp-color-wheel.cpp \ widgets/sp-color-wheel.h \ - widgets/sp-widget.cpp \ - widgets/sp-widget.h\ + widgets/sp-widget.cpp \ + widgets/sp-widget.h \ widgets/sp-xmlview-attr-list.cpp \ widgets/sp-xmlview-attr-list.h \ widgets/sp-xmlview-content.cpp \ @@ -72,9 +72,9 @@ widgets_libspwidgets_a_SOURCES = \ widgets/spinbutton-events.cpp \ widgets/spinbutton-events.h \ widgets/spw-utilities.cpp \ - widgets/spw-utilities.h \ - widgets/toolbox.cpp \ - widgets/toolbox.h \ + widgets/spw-utilities.h \ + widgets/toolbox.cpp \ + widgets/toolbox.h \ widgets/widget-sizes.h widgets/button.$(OBJEXT): helper/sp-marshal.h diff --git a/src/widgets/calligraphic-profile-rename.cpp b/src/widgets/calligraphic-profile-rename.cpp old mode 100755 new mode 100644 index 45ad08aa9..888b327f4 --- a/src/widgets/calligraphic-profile-rename.cpp +++ b/src/widgets/calligraphic-profile-rename.cpp @@ -1,12 +1,14 @@ -/** +/** @file + * @brief Dialog for naming calligraphic profiles * - * \brief Dialog for naming calligraphic profiles - * - * Author: + * @note This file is in the wrong directory because of link order issues - + * it is required by widgets/toolbox.cpp, and libspwidgets.a comes after + * libinkdialogs.a in the current link order. + */ +/* Author: * Aubanel MONNIER * - * Copyright (C) 2007 Aubanel MONNIER - * + * Copyright (C) 2007 Authors * Released under GNU GPL. Read the file 'COPYING' for more information */ @@ -20,80 +22,87 @@ #include "desktop.h" #include "calligraphic-profile-rename.h" - namespace Inkscape { namespace UI { -namespace Dialogs { -CalligraphicProfileDialog::CalligraphicProfileDialog(): _applied(false){ - Gtk::VBox *mainVBox = get_vbox(); - _layout_table.set_spacings(4); - _layout_table.resize (1, 2); - - _profile_name_entry.set_activates_default(true); - - _profile_name_label.set_label(_("Profile name:")); - _profile_name_label.set_alignment(1.0, 0.5); - - _layout_table.attach(_profile_name_label, - 0, 1, 0, 1, Gtk::FILL, Gtk::FILL); - _layout_table.attach(_profile_name_entry, - 1, 2, 0, 1, Gtk::FILL | Gtk::EXPAND, Gtk::FILL); - mainVBox->pack_start(_layout_table, false, false, 4); - // Buttons - _close_button.set_use_stock(true); - _close_button.set_label(Gtk::Stock::CANCEL.id); - _close_button.set_flags(Gtk::CAN_DEFAULT); - - _apply_button.set_use_underline(true); - _apply_button.set_label(_("Save")); - _apply_button.set_flags(Gtk::CAN_DEFAULT); - - _close_button.signal_clicked() - .connect(sigc::mem_fun(*this, &CalligraphicProfileDialog::_close)); - _apply_button.signal_clicked() - .connect(sigc::mem_fun(*this, &CalligraphicProfileDialog::_apply)); - - signal_delete_event().connect( - sigc::bind_return( - sigc::hide(sigc::mem_fun(*this, &CalligraphicProfileDialog::_close)), - true - ) - ); - - add_action_widget(_close_button, Gtk::RESPONSE_CLOSE); - add_action_widget(_apply_button, Gtk::RESPONSE_APPLY); - - _apply_button.grab_default(); - - show_all_children(); +namespace Dialog { + +CalligraphicProfileRename::CalligraphicProfileRename() : + _applied(false) +{ + Gtk::VBox *mainVBox = get_vbox(); + _layout_table.set_spacings(4); + _layout_table.resize (1, 2); + + _profile_name_entry.set_activates_default(true); + + _profile_name_label.set_label(_("Profile name:")); + _profile_name_label.set_alignment(1.0, 0.5); + _layout_table.attach(_profile_name_label, + 0, 1, 0, 1, Gtk::FILL, Gtk::FILL); + _layout_table.attach(_profile_name_entry, + 1, 2, 0, 1, Gtk::FILL | Gtk::EXPAND, Gtk::FILL); + mainVBox->pack_start(_layout_table, false, false, 4); + // Buttons + _close_button.set_use_stock(true); + _close_button.set_label(Gtk::Stock::CANCEL.id); + _close_button.set_flags(Gtk::CAN_DEFAULT); + + _apply_button.set_use_underline(true); + _apply_button.set_label(_("Save")); + _apply_button.set_flags(Gtk::CAN_DEFAULT); + + _close_button.signal_clicked() + .connect(sigc::mem_fun(*this, &CalligraphicProfileRename::_close)); + _apply_button.signal_clicked() + .connect(sigc::mem_fun(*this, &CalligraphicProfileRename::_apply)); + + signal_delete_event().connect( sigc::bind_return( + sigc::hide(sigc::mem_fun(*this, &CalligraphicProfileRename::_close)), true ) ); + + add_action_widget(_close_button, Gtk::RESPONSE_CLOSE); + add_action_widget(_apply_button, Gtk::RESPONSE_APPLY); + + _apply_button.grab_default(); + + show_all_children(); } -void -CalligraphicProfileDialog::_apply() +void CalligraphicProfileRename::_apply() { - _profile_name = _profile_name_entry.get_text(); - _applied = true; - _close(); + _profile_name = _profile_name_entry.get_text(); + _applied = true; + _close(); } -void -CalligraphicProfileDialog::_close() +void CalligraphicProfileRename::_close() { - this->Gtk::Dialog::hide(); - + this->Gtk::Dialog::hide(); } -void CalligraphicProfileDialog::show(SPDesktop *desktop){ - CalligraphicProfileDialog &dial = instance(); - dial._applied=false; - dial.set_modal(true); - desktop->setWindowTransient (dial.gobj()); - dial.property_destroy_with_parent() = true; - // dial.Gtk::Dialog::show(); - //dial.present(); - dial.run(); +void CalligraphicProfileRename::show(SPDesktop *desktop) +{ + CalligraphicProfileRename &dial = instance(); + dial._applied=false; + dial.set_modal(true); + desktop->setWindowTransient (dial.gobj()); + dial.property_destroy_with_parent() = true; + // dial.Gtk::Dialog::show(); + //dial.present(); + dial.run(); } - -}}} +} // namespace Dialog +} // namespace UI +} // 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:encoding=utf-8:textwidth=99 : diff --git a/src/widgets/calligraphic-profile-rename.h b/src/widgets/calligraphic-profile-rename.h old mode 100755 new mode 100644 index f0e455c6c..53ce907ed --- a/src/widgets/calligraphic-profile-rename.h +++ b/src/widgets/calligraphic-profile-rename.h @@ -1,12 +1,10 @@ -/** - * - * \brief Dialog for naming calligraphic profiles - * - * Author: +/** @file + * @brief Dialog for naming calligraphic profiles + */ +/* Author: * Aubanel MONNIER * - * Copyright (C) 2007 Aubanel MONNIER - * + * Copyright (C) 2007 Authors * Released under GNU GPL. Read the file 'COPYING' for more information */ @@ -20,38 +18,58 @@ struct SPDesktop; namespace Inkscape { - namespace UI { - namespace Dialogs { +namespace UI { +namespace Dialog { - class CalligraphicProfileDialog: public Gtk::Dialog { - public: - CalligraphicProfileDialog(); - virtual ~CalligraphicProfileDialog(){} ; - static void show(SPDesktop *desktop); - static bool applied(){return instance()._applied;} - static Glib::ustring getProfileName() { return instance()._profile_name;} - - Glib::ustring getName() const { return "CalligraphicProfileDialog"; } +class CalligraphicProfileRename : public Gtk::Dialog { +public: + CalligraphicProfileRename(); + virtual ~CalligraphicProfileRename() {} + Glib::ustring getName() const { + return "CalligraphicProfileRename"; + } + + static void show(SPDesktop *desktop); + static bool applied() { + return instance()._applied; + } + static Glib::ustring getProfileName() { + return instance()._profile_name; + } - - protected: - void _close(); - void _apply(); +protected: + void _close(); + void _apply(); - Gtk::Label _profile_name_label; - Gtk::Entry _profile_name_entry; - Gtk::Table _layout_table; - Gtk::Button _close_button; - Gtk::Button _apply_button; - Glib::ustring _profile_name; - bool _applied; - private: - static CalligraphicProfileDialog &instance(){static CalligraphicProfileDialog instance; return instance;} - CalligraphicProfileDialog(CalligraphicProfileDialog const &); // no copy - CalligraphicProfileDialog &operator=(CalligraphicProfileDialog const &); // no assign - }; + Gtk::Label _profile_name_label; + Gtk::Entry _profile_name_entry; + Gtk::Table _layout_table; + Gtk::Button _close_button; + Gtk::Button _apply_button; + Glib::ustring _profile_name; + bool _applied; +private: + static CalligraphicProfileRename &instance() { + static CalligraphicProfileRename instance_; + return instance_; } - } -} + CalligraphicProfileRename(CalligraphicProfileRename const &); // no copy + CalligraphicProfileRename &operator=(CalligraphicProfileRename const &); // no assign +}; + +} // namespace Dialog +} // namespace UI +} // namespace Inkscape #endif // INKSCAPE_DIALOG_CALLIGRAPHIC_PROFILE_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:encoding=utf-8:textwidth=99 : diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 3c78eb0bb..1fdf1fceb 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -1700,7 +1700,7 @@ sp_desktop_widget_update_scrollbars (SPDesktopWidget *dtw, double scale) Geom::Point(2 * sp_document_width(doc), 2 * sp_document_height(doc)) ); SPObject* root = doc->root; SPItem* item = SP_ITEM(root); - boost::optional deskarea = Geom::unify(darea, sp_item_bbox_desktop(item)); + Geom::OptRect deskarea = Geom::unify(darea, sp_item_bbox_desktop(item)); /* Canvas region we always show unconditionally */ Geom::Rect carea( Geom::Point(deskarea->min()[Geom::X] * scale - 64, deskarea->max()[Geom::Y] * -scale - 64), diff --git a/src/widgets/font-selector.cpp b/src/widgets/font-selector.cpp index 49a35b5cb..502c34790 100644 --- a/src/widgets/font-selector.cpp +++ b/src/widgets/font-selector.cpp @@ -671,7 +671,7 @@ static gint sp_font_preview_expose(GtkWidget *widget, GdkEventExpose *event) hpos[len] = base_pt[0]; len++; if ( curF ) { - boost::optional nbbox = curF->BBox(str_text->glyph_text[i].gl); + Geom::OptRect nbbox = curF->BBox(str_text->glyph_text[i].gl); if (nbbox) { bbox.x0 = MIN(bbox.x0, base_pt[Geom::X] + theSize * (nbbox->min())[0]); bbox.y0 = MIN(bbox.y0, base_pt[Geom::Y] - theSize * (nbbox->max())[1]); diff --git a/src/widgets/icon.cpp b/src/widgets/icon.cpp index 4c0439da7..5aad614b4 100644 --- a/src/widgets/icon.cpp +++ b/src/widgets/icon.cpp @@ -662,7 +662,7 @@ sp_icon_doc_icon( SPDocument *doc, NRArenaItem *root, if (object && SP_IS_ITEM(object)) { /* Find bbox in document */ Geom::Matrix const i2doc(sp_item_i2doc_affine(SP_ITEM(object))); - boost::optional dbox = SP_ITEM(object)->getBounds(i2doc); + Geom::OptRect dbox = SP_ITEM(object)->getBounds(i2doc); if ( SP_OBJECT_PARENT(object) == NULL ) { @@ -671,7 +671,7 @@ sp_icon_doc_icon( SPDocument *doc, NRArenaItem *root, } /* This is in document coordinates, i.e. pixels */ - if ( dbox && !dbox->isEmpty() ) { + if ( dbox ) { NRGC gc(NULL); /* Update to renderable state */ double sf = 1.0; diff --git a/src/widgets/select-toolbar.cpp b/src/widgets/select-toolbar.cpp index af1883916..e6929fcff 100644 --- a/src/widgets/select-toolbar.cpp +++ b/src/widgets/select-toolbar.cpp @@ -68,8 +68,8 @@ sp_selection_layout_widget_update(SPWidget *spw, Inkscape::Selection *sel) int prefs_bbox = prefs->getInt("/tools/bounding_box", 0); SPItem::BBoxType bbox_type = (prefs_bbox ==0)? SPItem::APPROXIMATE_BBOX : SPItem::GEOMETRIC_BBOX; - boost::optional const bbox(sel->bounds(bbox_type)); - if ( bbox && !bbox->isEmpty() ) { + Geom::OptRect const bbox(sel->bounds(bbox_type)); + if ( bbox ) { UnitTracker *tracker = reinterpret_cast(g_object_get_data(G_OBJECT(spw), "tracker")); SPUnit const &unit = *tracker->getActiveUnit(); @@ -159,9 +159,9 @@ sp_object_layout_any_value_changed(GtkAdjustment *adj, SPWidget *spw) int prefs_bbox = prefs->getInt("/tools/bounding_box"); SPItem::BBoxType bbox_type = (prefs_bbox ==0)? SPItem::APPROXIMATE_BBOX : SPItem::GEOMETRIC_BBOX; - boost::optional bbox = selection->bounds(bbox_type); + Geom::OptRect bbox = selection->bounds(bbox_type); - if ( !bbox || bbox->isEmpty() ) { + if ( !bbox ) { g_object_set_data(G_OBJECT(spw), "update", GINT_TO_POINTER(FALSE)); return; } diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp index b945765db..ca6a72ca2 100644 --- a/src/widgets/toolbox.cpp +++ b/src/widgets/toolbox.cpp @@ -32,85 +32,74 @@ #include #include #include - -#include "widgets/button.h" -#include "widgets/widget-sizes.h" -#include "widgets/spw-utilities.h" -#include "widgets/spinbutton-events.h" -#include "dialogs/text-edit.h" -#include "dialogs/dialog-events.h" - -#include "ui/widget/style-swatch.h" - -#include "verbs.h" -#include "sp-namedview.h" -#include "desktop.h" -#include "desktop-handles.h" -#include "xml/repr.h" -#include "xml/node-event-vector.h" -#include "xml/attribute-record.h" #include -#include "helper/unit-menu.h" -#include "helper/units.h" -#include "live_effects/effect.h" - -#include "inkscape.h" -#include "conn-avoid-ref.h" - -#include "select-toolbar.h" +#include "../box3d-context.h" +#include "../box3d.h" +#include "calligraphic-profile-rename.h" +#include "../conn-avoid-ref.h" +#include "../connection-pool.h" +#include "../connector-context.h" +#include "../desktop.h" +#include "../desktop-handles.h" +#include "../desktop-style.h" +#include "../dialogs/dialog-events.h" +#include "../dialogs/text-edit.h" +#include "../document-private.h" +#include "../ege-adjustment-action.h" +#include "../ege-output-action.h" +#include "../ege-select-one-action.h" +#include "../flood-context.h" #include "gradient-toolbar.h" - -#include "connector-context.h" -#include "node-context.h" -#include "pen-context.h" -#include "lpe-tool-context.h" -#include "live_effects/lpe-line_segment.h" -#include "shape-editor.h" -#include "tweak-context.h" -#include "sp-rect.h" -#include "box3d.h" -#include "box3d-context.h" -#include "sp-star.h" -#include "sp-spiral.h" -#include "sp-ellipse.h" -#include "sp-text.h" -#include "sp-flowtext.h" -#include "sp-clippath.h" -#include "sp-mask.h" -#include "style.h" -#include "tools-switch.h" -#include "selection.h" -#include "selection-chemistry.h" -#include "document-private.h" -#include "desktop-style.h" -#include "../libnrtype/font-lister.h" +#include "../graphlayout/graphlayout.h" +#include "../helper/unit-menu.h" +#include "../helper/units.h" +#include "../helper/unit-tracker.h" +#include "icon.h" +#include "../ink-action.h" +#include "../inkscape.h" +#include "../inkscape-stock.h" +#include "../interface.h" #include "../libnrtype/font-instance.h" -#include "../connection-pool.h" +#include "../libnrtype/font-lister.h" +#include "../live_effects/effect.h" +#include "../live_effects/lpe-angle_bisector.h" +#include "../live_effects/lpe-line_segment.h" +#include "../lpe-tool-context.h" +#include "../mod360.h" +#include "../node-context.h" +#include "../pen-context.h" #include "../preferences.h" -#include "../inkscape-stock.h" -#include "icon.h" -#include "graphlayout/graphlayout.h" -#include "interface.h" -#include "shortcuts.h" - -#include "mod360.h" +#include "../selection-chemistry.h" +#include "../selection.h" +#include "select-toolbar.h" +#include "../shape-editor.h" +#include "../shortcuts.h" +#include "../sp-clippath.h" +#include "../sp-ellipse.h" +#include "../sp-flowtext.h" +#include "../sp-mask.h" +#include "../sp-namedview.h" +#include "../sp-rect.h" +#include "../sp-spiral.h" +#include "../sp-star.h" +#include "../sp-text.h" +#include "../style.h" +#include "../svg/css-ostringstream.h" +#include "../tools-switch.h" +#include "../tweak-context.h" +#include "../ui/widget/style-swatch.h" +#include "../verbs.h" +#include "../widgets/button.h" +#include "../widgets/spinbutton-events.h" +#include "../widgets/spw-utilities.h" +#include "../widgets/widget-sizes.h" +#include "../xml/attribute-record.h" +#include "../xml/node-event-vector.h" +#include "../xml/repr.h" #include "toolbox.h" -#include "flood-context.h" - -#include "ink-action.h" -#include "ege-adjustment-action.h" -#include "ege-output-action.h" -#include "ege-select-one-action.h" -#include "helper/unit-tracker.h" -#include "live_effects/lpe-angle_bisector.h" - -#include "svg/css-ostringstream.h" - -#include "widgets/calligraphic-profile-rename.h" - using Inkscape::UnitTracker; typedef void (*SetupFunction)(GtkWidget *toolbox, SPDesktop *desktop); @@ -4106,6 +4095,7 @@ static void sp_dcc_build_presets_list(GObject *tbl) static void sp_dcc_save_profile (GtkWidget */*widget*/, GObject *tbl) { + using Inkscape::UI::Dialog::CalligraphicProfileRename; Inkscape::Preferences *prefs = Inkscape::Preferences::get(); SPDesktop *desktop = (SPDesktop *) g_object_get_data(tbl, "desktop" ); if (! desktop) return; @@ -4113,13 +4103,13 @@ static void sp_dcc_save_profile (GtkWidget */*widget*/, GObject *tbl) if (g_object_get_data(tbl, "presets_blocked")) return; - Inkscape::UI::Dialogs::CalligraphicProfileDialog::show(desktop); - if ( ! Inkscape::UI::Dialogs::CalligraphicProfileDialog::applied()) { + CalligraphicProfileRename::show(desktop); + if ( !CalligraphicProfileRename::applied()) { // dialog cancelled update_presets_list (tbl); return; } - Glib::ustring profile_name = Inkscape::UI::Dialogs::CalligraphicProfileDialog::getProfileName(); + Glib::ustring profile_name = CalligraphicProfileRename::getProfileName(); if (profile_name.empty()) { // empty name entered @@ -5007,7 +4997,7 @@ lpetool_toggle_set_bbox (GtkToggleAction *act, gpointer data) { SPDesktop *desktop = static_cast(data); Inkscape::Selection *selection = desktop->selection; - boost::optional bbox = selection->bounds(); + Geom::OptRect bbox = selection->bounds(); if (bbox) { Geom::Point A(bbox->min()); diff --git a/src/zoom-context.cpp b/src/zoom-context.cpp index b00845077..2f0185731 100644 --- a/src/zoom-context.cpp +++ b/src/zoom-context.cpp @@ -176,7 +176,7 @@ static gint sp_zoom_context_root_handler(SPEventContext *event_context, GdkEvent Geom::Point const button_w(event->button.x, event->button.y); Geom::Point const button_dt(desktop->w2d(button_w)); if ( event->button.button == 1 && !event_context->space_panning) { - boost::optional const b = Inkscape::Rubberband::get(desktop)->getRectangle(); + Geom::OptRect const b = Inkscape::Rubberband::get(desktop)->getRectangle(); if (b && !within_tolerance) { desktop->set_display_area(*b, 10); } else if (!escaped) {