./PaxHeaders/kseexpr-4.0.4.00000644000000000000000000000003614156104533012501 xustar0030 mtime=1639483739.746127198 kseexpr-4.0.4.0/0000755000000000000240000000000014156104533013344 5ustar00rootroot00000000000000kseexpr-4.0.4.0/.clang-format0000644000000000000240000000337314156102631015722 0ustar00rootroot00000000000000--- # SPDX-FileCopyrightText: 2019 Christoph Cullmann # SPDX-FileCopyrightText: 2019 Gernot Gebhard # # SPDX-License-Identifier: MIT # Style for C++ Language: Cpp # base is WebKit coding style: https://webkit.org/code-style-guidelines/ # below are only things set that diverge from this style! BasedOnStyle: WebKit # enforce C++11 (e.g. for std::vector> Standard: Cpp11 # 4 spaces indent TabWidth: 4 # 3 * 80 wide lines ColumnLimit: 240 # sort includes inside line separated groups SortIncludes: true # break before braces on function, namespace and class definitions. BreakBeforeBraces: Linux # CrlInstruction *a; PointerAlignment: Right # horizontally aligns arguments after an open bracket. AlignAfterOpenBracket: Align # align trailing comments AlignTrailingComments: true # don't move all parameters to new line AllowAllParametersOfDeclarationOnNextLine: false # no single line functions AllowShortFunctionsOnASingleLine: None # always break before you encounter multi line strings AlwaysBreakBeforeMultilineStrings: true # don't move arguments to own lines if they are not all on the same BinPackArguments: false # don't move parameters to own lines if they are not all on the same BinPackParameters: false # don't break binary ops BreakBeforeBinaryOperators: None # format C++11 braced lists like function calls Cpp11BracedListStyle: true # remove empty lines KeepEmptyLinesAtTheStartOfBlocks: false # no namespace indentation to keep indent level low NamespaceIndentation: None # we use template< without space. SpaceAfterTemplateKeyword: false # macros for which the opening brace stays attached. ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH, forever, Q_FOREVER, QBENCHMARK, QBENCHMARK_ONCE ] kseexpr-4.0.4.0/.gitignore0000644000000000000240000000016414156102631015332 0ustar00rootroot00000000000000*~ *# .DS_Store /build /Linux-* /Darwin-* CMakeLists.txt.user .vs .vscode packaging/seexpr-* packaging/kseexpr-* po kseexpr-4.0.4.0/CMakeLists.txt0000644000000000000240000002443514156102631016111 0ustar00rootroot00000000000000# SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. # SPDX-License-Identifier: LicenseRef-Apache-2.0 # SPDX-FileCopyrightText: 2020-2021 L. E. Segovia # SPDX-License-Identifier: GPL-3.0-or-later cmake_minimum_required(VERSION 3.8.0) # option() honors normal variables. Needed for LLVM 10. if (POLICY CMP0077) cmake_policy(SET CMP0077 NEW) endif() # Minimum for SeExpr is 11. LLVM (if used) may need 14. # LLVM with Clang < 8 crashes on compile: https://github.com/andreasfertig/cppinsights/issues/56#issuecomment-408674466 set(CMAKE_CXX_STANDARD 14) ## project name & version project(KSeExpr VERSION "4.0.4.0" DESCRIPTION "An embeddable expression evaluation engine for Krita" ) message(STATUS "Welcome to ${CMAKE_PROJECT_NAME} ${CMAKE_PROJECT_VERSION} !") enable_testing() ## Silence installation messages set(CMAKE_INSTALL_MESSAGE LAZY) # macros include(GNUInstallDirs) include(CMakePackageConfigHelpers) include(GenerateExportHeader) LIST (APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") include(macros) include(CheckCXXSourceCompiles) include(FeatureSummary) # Default installation prefix if (NOT DEFINED FLAVOR) set(FLAVOR "optimize" CACHE STRING "Build flavor") endif() ## Choose build options # Disney specific method of choosing variant if (${FLAVOR} STREQUAL "optimize") set(CMAKE_BUILD_TYPE "Release" CACHE STRING "type of build" FORCE) endif() if (${FLAVOR} STREQUAL "debug") set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "type of build" FORCE) endif() if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) execute_process( COMMAND sh -c "echo `uname -s`-`uname -r | cut -d- -f1`-`uname -m`" OUTPUT_VARIABLE VARIANT_DIRECTORY OUTPUT_STRIP_TRAILING_WHITESPACE) set(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/${VARIANT_DIRECTORY}-${FLAVOR}" CACHE PATH "Installation prefix" FORCE) endif() message(STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}") message(STATUS "CMAKE_INSTALL_LIBDIR = ${CMAKE_INSTALL_LIBDIR}") # Configuration options option(ENABLE_LLVM_BACKEND "Whether to build with LLVM backend" FALSE) add_feature_info(LLVMBackend ENABLE_LLVM_BACKEND "Build the LLVM backend of KSeExpr") option(ENABLE_QT5 "Whether to use Qt5" TRUE) add_feature_info(KSeExprUI ENABLE_QT5 "Build the KSeExprUI widget library") option(BUILD_UTILS "Whether to build the utilities" FALSE) add_feature_info(Utils BUILD_UTILS "Build the utilities") option(BUILD_DEMOS "Whether to build the demos" FALSE) add_feature_info(Demos BUILD_DEMOS "Build the demos") option(BUILD_DOC "Whether to build the documentation" FALSE) add_feature_info(Docs BUILD_DOC "Build the documentation") option(BUILD_TESTS "Whether to build the tests" FALSE) add_feature_info(Tests BUILD_TESTS "Build the tests") option(ENABLE_SLOW_TESTS "Whether to enable slow tests" FALSE) add_feature_info(SlowTests ENABLE_SLOW_TESTS "Enables slow tests") option(USE_PREGENERATED_FILES "Whether to use the bundled pregenerated parser files" FALSE) add_feature_info(PregeneratedFiles USE_PREGENERATED_FILES "Build the language parser using the bundled, pregenerated files") option(ENABLE_PERFORMANCE_STATS "Whether to print performance stats across KSeExpr" FALSE) add_feature_info(PerformanceStats ENABLE_PERFORMANCE_STATS "Print performance stats across KSeExpr") # Package lookup find_package(Doxygen) set_package_properties(Doxygen PROPERTIES TYPE OPTIONAL PURPOSE "Needed to build the documentation") find_package(ECM 5.52.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE OPTIONAL PURPOSE "Enables translations (if bundled) and automatic sanitizer support") find_package(KF5I18n 5.52.0) set_package_properties(KF5I18n PROPERTIES TYPE OPTIONAL PURPOSE "Enables detection of fallback languages in KDE apps") find_package(GTest) set_package_properties(GTest PROPERTIES TYPE OPTIONAL PURPOSE "Needed for building the tests") find_package(PNG) set_package_properties(PNG PROPERTIES TYPE OPTIONAL PURPOSE "Needed to support image file output in demos and tests") find_package(Python3) set_package_properties(Python3 PROPERTIES TYPE OPTIONAL PURPOSE "Needed for running some tests") find_package(BISON) set_package_properties(BISON PROPERTIES TYPE OPTIONAL PURPOSE "Needed to build KSeExpr's language parser from source") find_package(FLEX) set_package_properties(FLEX PROPERTIES TYPE OPTIONAL PURPOSE "Needed to build KSeExpr's language parser from source") find_program(SED_EXE sed) set_package_properties(SED_EXE PROPERTIES TYPE OPTIONAL PURPOSE "Needed to build KSeExpr's language parser from source") if (ECM_FOUND) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH}) if (FLAVOR STREQUAL "debug") message(STATUS "ECM sanitizer support is available.") include(ECMEnableSanitizers) endif() if (IS_DIRECTORY "${CMAKE_SOURCE_DIR}/po") option(BUILD_TRANSLATIONS "Whether to include translations" TRUE) add_feature_info(i18n BUILD_TRANSLATIONS "Build and embed translations") endif () endif () if (ENABLE_LLVM_BACKEND) find_package(LLVM) set_package_properties(LLVM PROPERTIES TYPE OPTIONAL PURPOSE "Needed for building the LLVM-based script backend") if (NOT LLVM_FOUND OR LLVM_VERSION VERSION_LESS 3.8.0) set(ENABLE_LLVM_BACKEND off) message(STATUS "Not building with LLVM, version must be >= 3.8.0") else() set(SEEXPR_ENABLE_LLVM 1) message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${LLVM_DIR}") include(LLVM-Config) include(LLVMConfig) include(HandleLLVMOptions) message(STATUS "LLVM_DEFINITIONS =" ${LLVM_DEFINITIONS}) message(STATUS "LLVM_INCLUDE_DIRS =" ${LLVM_INCLUDE_DIRS}) message(STATUS "LLVM_LIBRARY_DIR =" ${LLVM_LIBRARY_DIR}) message(STATUS "LLVM_PACKAGE_VERSION =" ${LLVM_PACKAGE_VERSION}) # construct library names message(STATUS "Detected processor: ${CMAKE_SYSTEM_PROCESSOR}") if(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*") set(KSeExpr_PLATFORM_CODEGEN_LIBS X86CodeGen X86AsmParser) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*") set(KSeExpr_PLATFORM_CODEGEN_LIBS X86CodeGen X86AsmParser) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*|arm64.*|ARM64.*)") set(KSeExpr_PLATFORM_CODEGEN_LIBS AArch64CodeGen AArch64AsmParser) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm.*|ARM.*)") set(KSeExpr_PLATFORM_CODEGEN_LIBS ARMCodeGen ARMAsmParser) else() message(ERROR "Unknown processor, unable to set LLVM codegen targets") endif() if (LLVM IN_LIST LLVM_AVAILABLE_LIBS) message(STATUS "Shared libLLVM is available, using it.") set(LLVM_LIB LLVM) else() message(STATUS "Shared libLLVM is not available, falling back to static linkage.") llvm_map_components_to_libnames(LLVM_LIB Interpreter MCJIT ObjCARCOpts Passes ${KSeExpr_PLATFORM_CODEGEN_LIBS} ) endif() message(STATUS "LLVM_LIB = ${LLVM_LIB}") endif() endif() ## Setup platform specific helper defines build variants if (WIN32) add_definitions(-DSEEXPR_WIN32) add_definitions(-D_CRT_SECURE_NO_WARNINGS) add_compile_definitions(_USE_MATH_DEFINES) else() add_definitions(-Wall -Wextra -Wno-unused-parameter) set(CMAKE_POSITION_INDEPENDENT_CODE ON) if (APPLE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-date-time") endif() endif() # Set to release if nothing else defined if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE) endif() if (ENABLE_QT5) find_package(Qt5 5.9.0 COMPONENTS Core Gui Widgets REQUIRED) set_package_properties(Qt5 PROPERTIES TYPE REQUIRED PURPOSE "Required if you're building KSeExprUI") message(STATUS "Qt5 Enabled") endif() ## Make modules able to see seexpr library # Setup environment variable to link seexpr set(SEEXPR_LIBRARIES KSeExpr) set(SEEXPR_LLVM_LIBRARIES KSeExprLLVM) set(SEEXPR_EDITOR_LIBRARIES KSeExprUI) # make it so seexpr can be found include_directories(BEFORE ${CMAKE_SOURCE_DIR}/src) if (ENABLE_PERFORMANCE_STATS) add_definitions(-DSEEXPR_PERFORMANCE) endif() ## Traverse subdirectories add_subdirectory(src/KSeExpr) if (ENABLE_QT5) add_subdirectory(src/KSeExprUI) endif() if (BUILD_UTILS) add_subdirectory(src/utils) endif() if (BUILD_DEMOS) add_subdirectory(src/demos) endif() if (BUILD_DOC) add_subdirectory(src/doc) endif() if (BUILD_TESTS) add_subdirectory(src/tests) endif() # cmake packaging -- this is done after adding subdirectories so that # all exported targets are found by export() below. configure_file("cmake/kseexpr.pc.in" "kseexpr.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/kseexpr.pc" COMPONENT devel DESTINATION share/pkgconfig) write_basic_package_version_file("kseexpr-config-version.cmake" VERSION ${${PROJECT_NAME}_VERSION} COMPATIBILITY SameMajorVersion) configure_package_config_file( "cmake/kseexpr-config.cmake" "kseexpr-config.cmake" INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} PATH_VARS CMAKE_INSTALL_PREFIX CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/kseexpr-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/kseexpr-config-version.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} ) install(EXPORT ${PROJECT_NAME}Targets NAMESPACE ${PROJECT_NAME}:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} ) feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) kseexpr-4.0.4.0/LICENSE.txt0000644000000000000240000010451514156102631015172 0ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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 3 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, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . kseexpr-4.0.4.0/LICENSES/0000755000000000000240000000000014156102631014546 5ustar00rootroot00000000000000kseexpr-4.0.4.0/LICENSES/BSD-3-Clause.txt0000644000000000000240000000271014156102631017271 0ustar00rootroot00000000000000Copyright (c) . All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. kseexpr-4.0.4.0/LICENSES/GPL-2.0-only.txt0000644000000000000240000004232714156102631017215 0ustar00rootroot00000000000000GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C)< yyyy> 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. kseexpr-4.0.4.0/LICENSES/GPL-3.0-or-later.txt0000644000000000000240000010324614156102631017760 0ustar00rootroot00000000000000GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright © 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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 3 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, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . kseexpr-4.0.4.0/LICENSES/LicenseRef-Apache-2.0.txt0000644000000000000240000000121014156102631020774 0ustar00rootroot00000000000000SeExpr is the embeddable expression engine. It is: Copyright 2011-2019 Disney Enterprises, Inc. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License and the following modification to it: Section 6 Trademarks. deleted and replaced with: 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor and its affiliates, except as required for reproducing the content of the NOTICE file. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 kseexpr-4.0.4.0/LICENSES/MIT.txt0000644000000000000240000000212414156102631015737 0ustar00rootroot00000000000000MIT License Copyright (c) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. kseexpr-4.0.4.0/README.md0000644000000000000240000000762314156102631014630 0ustar00rootroot00000000000000# KSeExpr - An embeddable expression evaluation engine This repository hosts the fork of [Disney Animation's SeExpr expression library](https://wdas.github.io/SeExpr), that is used in [Krita](https://invent.kde.org/graphics/krita). This fork was created as part of the GSoC 2020 project, [Dynamic Fill Layers in Krita using SeExpr](https://summerofcode.withgoogle.com/archive/2020/projects/6233717216903168/), to enable the provision of fixes and translations needed to embed SeExpr into the Krita painting suite. **WARNING**: This version is not ABI-compatible with projects using upstream SeExpr. Use it at your own discretion. ## Super impatient CMake building and installing guide Prerequisites: * A C++ compiler supporting **at least** the C++14 standard * CMake >= 3.8.0 * Qt >= 5.9 ```bash $ mkdir kseexpr $ cd kseexpr $ git clone https://invent.kde.org/graphics/seexpr.git src $ mkdir build $ cd build $ cmake ../src $ cmake --build . --target install ``` ## The full package If you want optional stuff (not used in Krita): * Ninja * For building the parser, otherwise specify `-DUSE_PREGENERATED_FILES=OFF`: * bison * flex * For LLVM support, otherwise specify `-DENABLE_LLVM_BACKEND=OFF`: * LLVM >= 3.8.0 * For building the documentation, otherwise specify `-DBUILD_DOC=OFF`: * doxygen * For building the tests, otherwise specify `-DBUILD_TESTS=OFF`: * gtest * For building the translations (if you have a release tarball, you can disable it with `-DBUILD_TRANSLATIONS=OFF`): * ECM >= 5.64 Then, on your shell, issue the following commands: ```bash $ mkdir kseexpr $ cd kseexpr $ git clone https://invent.kde.org/graphics/seexpr.git src $ mkdir build $ cd build $ cmake ../src $ cmake --build . --target install ``` You can try the test application asciiGraph which is a simple function grapher... e.g. ```bash ./asciiGraph "x^3-8*x" ``` ## Getting started Examining the demo applications in `src/demos` is a great way to see some usage examples of the library. The basic strategy is to subclass the `Expression` class and implement the methods that describe what extra functions and variables your expression evaluation will need. ## Documentation We (the Krita team) provided a set of tutorials, an adapted Quick Reference, and other docs at [the Krita manual](https://docs.krita.org/en/tutorials/seexpr.html). The original Doxygen-based documentation provided by Disney is at: - - (for older documentation) ## Source code overview ``` cmake/ CMake boilerplate and macros generated/ Pregenerated parser files LICENSES/ SPDX licenses packaging/ Krita packaging scripts po/ (only on release tarballs) Translations supplied by the KDE i18n team src/ build/ CMake helper macros demos/ Demo Applications doc/ Doxygen generation KSeExpr/ Library code KSeExprUI/ User Interface components for editing tests/ Regression Tests utils/ Various example tools ``` ## License KSeExpr is made available subject to the terms of the [GNU General Public License v3.0 or later](LICENSES/GPL-3.0-or-later.txt). It is based on code from SeExpr, which is (C) Disney Enterprises, Inc. and made available under the Apache 2.0 License with section 6 rewrite. Please see the [LICENSE](LICENSES/LicenseRef-Apache-2.0.txt) for more details. The translation loader is a modified version of the one provided by k18n under the [BSD 3-Clause "New" or "Revised" License](LICENSES/BSD-3-Clause.txt). The `crack_atof` function by Tian Bo (in Utils.cpp) is licensed under the [MIT](LICENSES/MIT.txt). The packaging scripts are made available under the [BSD 3-Clause "New" or "Revised" License](LICENSES/BSD-3-Clause.txt). ## Original SeExpr Developers * David Aguilar * Janet Berlin * Brent Burley * Lawrence Chai * Noah Kagan * Jared Reisweber * Andrew Selle * Dan Teece * Tom Thompson Walt Disney Animation Studios kseexpr-4.0.4.0/cmake/0000755000000000000240000000000014156102631014421 5ustar00rootroot00000000000000kseexpr-4.0.4.0/cmake/kseexpr-config.cmake0000644000000000000240000000105214156102631020345 0ustar00rootroot00000000000000# SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. # SPDX-License-Identifier: LicenseRef-Apache-2.0 # SPDX-FileCopyrightText: 2020 L. E. Segovia # SPDX-License-Identifier: GPL-3.0-or-later @PACKAGE_INIT@ set(KSeExpr_VERSION @KSeExpr_VERSION@) set_and_check(KSeExpr_DIR @PACKAGE_CMAKE_INSTALL_PREFIX@) set_and_check(KSeExpr_LIBRARY_DIRS @PACKAGE_CMAKE_INSTALL_LIBDIR@) set_and_check(KSeExpr_INCLUDE_DIRS @PACKAGE_CMAKE_INSTALL_INCLUDEDIR@) include("${CMAKE_CURRENT_LIST_DIR}/KSeExprTargets.cmake") set(KSeExpr_FOUND TRUE) kseexpr-4.0.4.0/cmake/kseexpr.pc.in0000644000000000000240000000076114156102631017037 0ustar00rootroot00000000000000# SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. # SPDX-License-Identifier: LicenseRef-Apache-2.0 # SPDX-FileCopyrightText: 2020 L. E. Segovia # SPDX-License-Identifier: GPL-3.0-or-later # pkg-config file for KSeExpr prefix=@CMAKE_INSTALL_PREFIX@ libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ includedir=${prefix}/include Name: KSeExpr Description: KSeExpr - An embeddable expression evaluation engine Version: @KSeExpr_VERSION@ Cflags: -I${includedir} Libs: -L${libdir} kseexpr-4.0.4.0/cmake/macros.cmake0000644000000000000240000000641614156102631016716 0ustar00rootroot00000000000000# SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. # SPDX-License-Identifier: LicenseRef-Apache-2.0 # SPDX-FileCopyrightText: 2020 L. E. Segovia # SPDX-License-Identifier: GPL-3.0-or-later macro(localize_path SRC DST) file(READ ${SRC} _TMP_FILE ) string(REPLACE "@@PATH@@" "${CMAKE_SOURCE_DIR}" _TMP_FILE_2 "${_TMP_FILE}" ) file(GENERATE OUTPUT ${DST} CONTENT "${_TMP_FILE_2}" ) endmacro() macro(BuildParserScanner TGT FLEX_L_PREFIX BISON_Y_PREFIX PARSER_PREFIX GENERATED_CPPS) if(USE_PREGENERATED_FILES OR NOT BISON_FOUND OR NOT FLEX_FOUND OR (SED_EXE STREQUAL "SED_EXE-NOTFOUND") ) message(STATUS "Using pregenerated parser files for ${TGT}") # don't have flex/bison/sed, use pregenerated versions localize_path( ${CMAKE_SOURCE_DIR}/generated/${TGT}/${FLEX_L_PREFIX}.cpp ${CMAKE_CURRENT_BINARY_DIR}/${FLEX_L_PREFIX}.cpp ) localize_path( ${CMAKE_SOURCE_DIR}/generated/${TGT}/${FLEX_L_PREFIX}In.cpp ${CMAKE_CURRENT_BINARY_DIR}/${FLEX_L_PREFIX}In.cpp ) localize_path( ${CMAKE_SOURCE_DIR}/generated/${TGT}/${BISON_Y_PREFIX}.cpp ${CMAKE_CURRENT_BINARY_DIR}/${BISON_Y_PREFIX}.cpp ) localize_path( ${CMAKE_SOURCE_DIR}/generated/${TGT}/${BISON_Y_PREFIX}.tab.h ${CMAKE_CURRENT_BINARY_DIR}/${BISON_Y_PREFIX}.tab.h ) set (${GENERATED_CPPS} ${FLEX_L_PREFIX}.cpp ${BISON_Y_PREFIX}.cpp) else () ## build the parser from the flex/yacc sources ADD_CUSTOM_COMMAND( SOURCE "${FLEX_L_PREFIX}.l" COMMAND "flex" ARGS "-o${FLEX_L_PREFIX}In.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/${FLEX_L_PREFIX}.l" OUTPUT ${FLEX_L_PREFIX}In.cpp DEPENDS ${FLEX_L_PREFIX}.l ) ADD_CUSTOM_COMMAND( SOURCE "${FLEX_L_PREFIX}In.cpp" COMMAND "sed" ARGS -e "'s/${PARSER_PREFIX}wrap(n)/${PARSER_PREFIX}wrap()/g'" -e "'s/yy/${PARSER_PREFIX}/g'" -e "'s/YY/${PARSER_PREFIX}YY/g'" ${FLEX_L_PREFIX}In.cpp | tee ${FLEX_L_PREFIX}.cpp ${CMAKE_CURRENT_SOURCE_DIR}/generated/${FLEX_L_PREFIX}.cpp > /dev/null OUTPUT ${FLEX_L_PREFIX}.cpp DEPENDS ${FLEX_L_PREFIX}In.cpp ) ADD_CUSTOM_COMMAND( SOURCE "${BISON_Y_PREFIX}.y" COMMAND "bison" ARGS "--defines" "--verbose" "--fixed-output-files" "-p" "${PARSER_PREFIX}" "${CMAKE_CURRENT_SOURCE_DIR}/${BISON_Y_PREFIX}.y" OUTPUT y.tab.c y.tab.h DEPENDS ${BISON_Y_PREFIX}.y ) ADD_CUSTOM_COMMAND( SOURCE "y.tab.h" COMMAND "sed" ARGS -e "'s/yy/${PARSER_PREFIX}/g'" -e "'s/YY/${PARSER_PREFIX}YY/g'" y.tab.h | tee ${BISON_Y_PREFIX}.tab.h ${CMAKE_CURRENT_SOURCE_DIR}/generated/${BISON_Y_PREFIX}.tab.h > /dev/null OUTPUT ${BISON_Y_PREFIX}.tab.h DEPENDS y.tab.h ) ADD_CUSTOM_COMMAND( SOURCE "y.tab.c" COMMAND "sed" ARGS -e "'s/yy/${PARSER_PREFIX}/g'" -e "'s/YY/${PARSER_PREFIX}YY/g'" y.tab.c | tee ${BISON_Y_PREFIX}.cpp "${CMAKE_CURRENT_SOURCE_DIR}/generated/${BISON_Y_PREFIX}.cpp" > /dev/null OUTPUT ${BISON_Y_PREFIX}.cpp DEPENDS y.tab.c ${BISON_Y_PREFIX}.tab.h ) ## set build files set (${GENERATED_CPPS} ${FLEX_L_PREFIX}.cpp ${BISON_Y_PREFIX}.cpp) message(STATUS "${TGT} parser files: ${${GENERATED_CPPS}}") endif() endmacro() kseexpr-4.0.4.0/generated/0000755000000000000240000000000014156102631015277 5ustar00rootroot00000000000000kseexpr-4.0.4.0/generated/KSeExpr/0000755000000000000240000000000014156102631016620 5ustar00rootroot00000000000000kseexpr-4.0.4.0/generated/KSeExpr/ExprParser.cpp0000644000000000000240000032265314156102631021432 0ustar00rootroot00000000000000/* A Bison parser, made by GNU Bison 3.7.6. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. 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 3 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, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, especially those whose name start with SeExprYY_ or SeExpr_. They are private implementation details that can be changed or removed. */ /* All symbols defined below should begin with SeExpr or SeExprYY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output, and Bison version. */ #define SeExprYYBISON 30706 /* Bison version string. */ #define SeExprYYBISON_VERSION "3.7.6" /* Skeleton name. */ #define SeExprYYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define SeExprYYPURE 0 /* Push parsers. */ #define SeExprYYPUSH 0 /* Pull parsers. */ #define SeExprYYPULL 1 /* Substitute the variable and function names. */ #define SeExprparse SeExprparse #define SeExprlex SeExprlex #define SeExprerror SeExprerror #define SeExprdebug SeExprdebug #define SeExprnerrs SeExprnerrs #define SeExprlval SeExprlval #define SeExprchar SeExprchar #define SeExprlloc SeExprlloc /* First part of user prologue. */ #line 6 "@@PATH@@/src/KSeExpr/ExprParser.y" #ifndef MAKEDEPEND #include #include #include #include #include #endif #include "ExprType.h" #include "ExprNode.h" #include "ExprParser.h" #include "Expression.h" #include /****************** lexer declarations ******************/ // declarations of functions and data in ExprParser.l int SeExprlex(); int SeExprpos(); extern int SeExpr_start; extern char* SeExprtext; struct SeExpr_buffer_state; SeExpr_buffer_state* SeExpr_scan_string(const char *str); void SeExpr_delete_buffer(SeExpr_buffer_state*); /******************* parser declarations *******************/ // forward declaration static void SeExprerror(const char* msg); // local data static const char* ParseStr; // string being parsed static KSeExpr::ErrorCode ParseErrorCode; // error (set from SeExprerror) static std::string ParseErrorId; // string that failed parsing (set from SeExprerror) static KSeExpr::ExprNode* ParseResult; // must set result here since SeExprparse can't return it static const KSeExpr::Expression* Expr;// used for parenting created SeExprOp's /* The list of nodes being built is remembered locally here. Eventually (if there are no syntax errors) ownership of the nodes will belong solely to the parse tree and the parent expression. However, if there is a syntax error, we must loop through this list and free any nodes that were allocated before the error to avoid a memory leak. */ static std::vector ParseNodes; inline KSeExpr::ExprNode* Remember(KSeExpr::ExprNode* n,const int startPos,const int endPos) { ParseNodes.push_back(n); n->setPosition(startPos,endPos); return n; } inline void Forget(KSeExpr::ExprNode* n) { ParseNodes.erase(std::find(ParseNodes.begin(), ParseNodes.end(), n)); } /* These are handy node constructors for 0-3 arguments */ #define NODE(startPos,endPos,name) Remember(new KSeExpr::Expr##name(Expr),startPos,endPos) #define NODE1(startPos,endPos,name,a) Remember(new KSeExpr::Expr##name(Expr,a),startPos,endPos) #define NODE2(startPos,endPos,name,a,b) Remember(new KSeExpr::Expr##name(Expr,a,b),startPos,endPos) #define NODE3(startPos,endPos,name,a,b,c) Remember(new KSeExpr::Expr##name(Expr,a,b,c),startPos,endPos) #define NODE4(startPos,endPos,name,a,b,c,t) Remember(new KSeExpr::Expr##name(Expr,a,b,c,t),startPos,endPos) #line 139 "y.tab.c" # ifndef SeExprYY_CAST # ifdef __cplusplus # define SeExprYY_CAST(Type, Val) static_cast (Val) # define SeExprYY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) # else # define SeExprYY_CAST(Type, Val) ((Type) (Val)) # define SeExprYY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) # endif # endif # ifndef SeExprYY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus # define SeExprYY_NULLPTR nullptr # else # define SeExprYY_NULLPTR 0 # endif # else # define SeExprYY_NULLPTR ((void*)0) # endif # endif /* Use api.header.include to #include this header instead of duplicating it here. */ #ifndef SeExprYY_SEEXPR_Y_TAB_H_INCLUDED # define SeExprYY_SEEXPR_Y_TAB_H_INCLUDED /* Debug traces. */ #ifndef SeExprYYDEBUG # define SeExprYYDEBUG 0 #endif #if SeExprYYDEBUG extern int SeExprdebug; #endif /* Token kinds. */ #ifndef SeExprYYTOKENTYPE # define SeExprYYTOKENTYPE enum SeExprtokentype { SeExprYYEMPTY = -2, SeExprYYEOF = 0, /* "end of file" */ SeExprYYerror = 256, /* error */ SeExprYYUNDEF = 257, /* "invalid token" */ IF = 258, /* IF */ ELSE = 259, /* ELSE */ EXTERN = 260, /* EXTERN */ DEF = 261, /* DEF */ FLOATPOINT = 262, /* FLOATPOINT */ STRING = 263, /* STRING */ NAME = 264, /* NAME */ VAR = 265, /* VAR */ STR = 266, /* STR */ NUMBER = 267, /* NUMBER */ LIFETIME_CONSTANT = 268, /* LIFETIME_CONSTANT */ LIFETIME_UNIFORM = 269, /* LIFETIME_UNIFORM */ LIFETIME_VARYING = 270, /* LIFETIME_VARYING */ LIFETIME_ERROR = 271, /* LIFETIME_ERROR */ AddEq = 272, /* AddEq */ SubEq = 273, /* SubEq */ MultEq = 274, /* MultEq */ DivEq = 275, /* DivEq */ ExpEq = 276, /* ExpEq */ ModEq = 277, /* ModEq */ ARROW = 278, /* ARROW */ OR = 279, /* OR */ AND = 280, /* AND */ EQ = 281, /* EQ */ NE = 282, /* NE */ SEEXPR_LE = 283, /* SEEXPR_LE */ SEEXPR_GE = 284, /* SEEXPR_GE */ UNARY = 285 /* UNARY */ }; typedef enum SeExprtokentype SeExprtoken_kind_t; #endif /* Value type. */ #if ! defined SeExprYYSTYPE && ! defined SeExprYYSTYPE_IS_DECLARED union SeExprYYSTYPE { #line 66 "@@PATH@@/src/KSeExpr/ExprParser.y" KSeExpr::ExprNode* n; /* a node is returned for all non-terminals to build the parse tree from the leaves up. */ double d; // return value for number tokens char* s; /* return value for name tokens. Note: the string is allocated with strdup() in the lexer and must be freed with free() */ struct { KSeExpr::ExprType::Type type; int dim; KSeExpr::ExprType::Lifetime lifetime; } t; // return value for types KSeExpr::ExprType::Lifetime l; // return value for lifetime qualifiers #line 234 "y.tab.c" }; typedef union SeExprYYSTYPE SeExprYYSTYPE; # define SeExprYYSTYPE_IS_TRIVIAL 1 # define SeExprYYSTYPE_IS_DECLARED 1 #endif /* Location type. */ #if ! defined SeExprYYLTYPE && ! defined SeExprYYLTYPE_IS_DECLARED typedef struct SeExprYYLTYPE SeExprYYLTYPE; struct SeExprYYLTYPE { int first_line; int first_column; int last_line; int last_column; }; # define SeExprYYLTYPE_IS_DECLARED 1 # define SeExprYYLTYPE_IS_TRIVIAL 1 #endif extern SeExprYYSTYPE SeExprlval; extern SeExprYYLTYPE SeExprlloc; int SeExprparse (void); #endif /* !SeExprYY_SEEXPR_Y_TAB_H_INCLUDED */ /* Symbol kind. */ enum SeExprsymbol_kind_t { SeExprYYSYMBOL_SeExprYYEMPTY = -2, SeExprYYSYMBOL_SeExprYYEOF = 0, /* "end of file" */ SeExprYYSYMBOL_SeExprYYerror = 1, /* error */ SeExprYYSYMBOL_SeExprYYUNDEF = 2, /* "invalid token" */ SeExprYYSYMBOL_IF = 3, /* IF */ SeExprYYSYMBOL_ELSE = 4, /* ELSE */ SeExprYYSYMBOL_EXTERN = 5, /* EXTERN */ SeExprYYSYMBOL_DEF = 6, /* DEF */ SeExprYYSYMBOL_FLOATPOINT = 7, /* FLOATPOINT */ SeExprYYSYMBOL_STRING = 8, /* STRING */ SeExprYYSYMBOL_NAME = 9, /* NAME */ SeExprYYSYMBOL_VAR = 10, /* VAR */ SeExprYYSYMBOL_STR = 11, /* STR */ SeExprYYSYMBOL_NUMBER = 12, /* NUMBER */ SeExprYYSYMBOL_LIFETIME_CONSTANT = 13, /* LIFETIME_CONSTANT */ SeExprYYSYMBOL_LIFETIME_UNIFORM = 14, /* LIFETIME_UNIFORM */ SeExprYYSYMBOL_LIFETIME_VARYING = 15, /* LIFETIME_VARYING */ SeExprYYSYMBOL_LIFETIME_ERROR = 16, /* LIFETIME_ERROR */ SeExprYYSYMBOL_AddEq = 17, /* AddEq */ SeExprYYSYMBOL_SubEq = 18, /* SubEq */ SeExprYYSYMBOL_MultEq = 19, /* MultEq */ SeExprYYSYMBOL_DivEq = 20, /* DivEq */ SeExprYYSYMBOL_ExpEq = 21, /* ExpEq */ SeExprYYSYMBOL_ModEq = 22, /* ModEq */ SeExprYYSYMBOL_23_ = 23, /* '(' */ SeExprYYSYMBOL_24_ = 24, /* ')' */ SeExprYYSYMBOL_ARROW = 25, /* ARROW */ SeExprYYSYMBOL_26_ = 26, /* ':' */ SeExprYYSYMBOL_27_ = 27, /* '?' */ SeExprYYSYMBOL_OR = 28, /* OR */ SeExprYYSYMBOL_AND = 29, /* AND */ SeExprYYSYMBOL_EQ = 30, /* EQ */ SeExprYYSYMBOL_NE = 31, /* NE */ SeExprYYSYMBOL_32_ = 32, /* '<' */ SeExprYYSYMBOL_33_ = 33, /* '>' */ SeExprYYSYMBOL_SEEXPR_LE = 34, /* SEEXPR_LE */ SeExprYYSYMBOL_SEEXPR_GE = 35, /* SEEXPR_GE */ SeExprYYSYMBOL_36_ = 36, /* '+' */ SeExprYYSYMBOL_37_ = 37, /* '-' */ SeExprYYSYMBOL_38_ = 38, /* '*' */ SeExprYYSYMBOL_39_ = 39, /* '/' */ SeExprYYSYMBOL_40_ = 40, /* '%' */ SeExprYYSYMBOL_UNARY = 41, /* UNARY */ SeExprYYSYMBOL_42_ = 42, /* '!' */ SeExprYYSYMBOL_43_ = 43, /* '~' */ SeExprYYSYMBOL_44_ = 44, /* '^' */ SeExprYYSYMBOL_45_ = 45, /* '[' */ SeExprYYSYMBOL_46_ = 46, /* '{' */ SeExprYYSYMBOL_47_ = 47, /* '}' */ SeExprYYSYMBOL_48_ = 48, /* ']' */ SeExprYYSYMBOL_49_ = 49, /* ',' */ SeExprYYSYMBOL_50_ = 50, /* '=' */ SeExprYYSYMBOL_51_ = 51, /* ';' */ SeExprYYSYMBOL_SeExprYYACCEPT = 52, /* $accept */ SeExprYYSYMBOL_module = 53, /* module */ SeExprYYSYMBOL_declarationList = 54, /* declarationList */ SeExprYYSYMBOL_declaration = 55, /* declaration */ SeExprYYSYMBOL_lifetimeOptional = 56, /* lifetimeOptional */ SeExprYYSYMBOL_typeDeclare = 57, /* typeDeclare */ SeExprYYSYMBOL_typeListOptional = 58, /* typeListOptional */ SeExprYYSYMBOL_typeList = 59, /* typeList */ SeExprYYSYMBOL_formalTypeListOptional = 60, /* formalTypeListOptional */ SeExprYYSYMBOL_formalTypeList = 61, /* formalTypeList */ SeExprYYSYMBOL_block = 62, /* block */ SeExprYYSYMBOL_optassigns = 63, /* optassigns */ SeExprYYSYMBOL_assigns = 64, /* assigns */ SeExprYYSYMBOL_assign = 65, /* assign */ SeExprYYSYMBOL_ifthenelse = 66, /* ifthenelse */ SeExprYYSYMBOL_optelse = 67, /* optelse */ SeExprYYSYMBOL_e = 68, /* e */ SeExprYYSYMBOL_exprlist = 69, /* exprlist */ SeExprYYSYMBOL_optargs = 70, /* optargs */ SeExprYYSYMBOL_args = 71, /* args */ SeExprYYSYMBOL_arg = 72 /* arg */ }; typedef enum SeExprsymbol_kind_t SeExprsymbol_kind_t; #ifdef short # undef short #endif /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure and (if available) are included so that the code can choose integer types of a good width. */ #ifndef __PTRDIFF_MAX__ # include /* INFRINGES ON USER NAME SPACE */ # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define SeExprYY_STDINT_H # endif #endif /* Narrow types that promote to a signed type and that can represent a signed or unsigned integer of at least N bits. In tables they can save space and decrease cache pressure. Promoting to a signed type helps avoid bugs in integer arithmetic. */ #ifdef __INT_LEAST8_MAX__ typedef __INT_LEAST8_TYPE__ SeExprtype_int8; #elif defined SeExprYY_STDINT_H typedef int_least8_t SeExprtype_int8; #else typedef signed char SeExprtype_int8; #endif #ifdef __INT_LEAST16_MAX__ typedef __INT_LEAST16_TYPE__ SeExprtype_int16; #elif defined SeExprYY_STDINT_H typedef int_least16_t SeExprtype_int16; #else typedef short SeExprtype_int16; #endif /* Work around bug in HP-UX 11.23, which defines these macros incorrectly for preprocessor constants. This workaround can likely be removed in 2023, as HPE has promised support for HP-UX 11.23 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of . */ #ifdef __hpux # undef UINT_LEAST8_MAX # undef UINT_LEAST16_MAX # define UINT_LEAST8_MAX 255 # define UINT_LEAST16_MAX 65535 #endif #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ SeExprtype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined SeExprYY_STDINT_H \ && UINT_LEAST8_MAX <= INT_MAX) typedef uint_least8_t SeExprtype_uint8; #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX typedef unsigned char SeExprtype_uint8; #else typedef short SeExprtype_uint8; #endif #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ typedef __UINT_LEAST16_TYPE__ SeExprtype_uint16; #elif (!defined __UINT_LEAST16_MAX__ && defined SeExprYY_STDINT_H \ && UINT_LEAST16_MAX <= INT_MAX) typedef uint_least16_t SeExprtype_uint16; #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX typedef unsigned short SeExprtype_uint16; #else typedef int SeExprtype_uint16; #endif #ifndef SeExprYYPTRDIFF_T # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ # define SeExprYYPTRDIFF_T __PTRDIFF_TYPE__ # define SeExprYYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ # elif defined PTRDIFF_MAX # ifndef ptrdiff_t # include /* INFRINGES ON USER NAME SPACE */ # endif # define SeExprYYPTRDIFF_T ptrdiff_t # define SeExprYYPTRDIFF_MAXIMUM PTRDIFF_MAX # else # define SeExprYYPTRDIFF_T long # define SeExprYYPTRDIFF_MAXIMUM LONG_MAX # endif #endif #ifndef SeExprYYSIZE_T # ifdef __SIZE_TYPE__ # define SeExprYYSIZE_T __SIZE_TYPE__ # elif defined size_t # define SeExprYYSIZE_T size_t # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define SeExprYYSIZE_T size_t # else # define SeExprYYSIZE_T unsigned # endif #endif #define SeExprYYSIZE_MAXIMUM \ SeExprYY_CAST (SeExprYYPTRDIFF_T, \ (SeExprYYPTRDIFF_MAXIMUM < SeExprYY_CAST (SeExprYYSIZE_T, -1) \ ? SeExprYYPTRDIFF_MAXIMUM \ : SeExprYY_CAST (SeExprYYSIZE_T, -1))) #define SeExprYYSIZEOF(X) SeExprYY_CAST (SeExprYYPTRDIFF_T, sizeof (X)) /* Stored state numbers (used for stacks). */ typedef SeExprtype_uint8 SeExpr_state_t; /* State numbers in computations. */ typedef int SeExpr_state_fast_t; #ifndef SeExprYY_ # if defined SeExprYYENABLE_NLS && SeExprYYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define SeExprYY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef SeExprYY_ # define SeExprYY_(Msgid) Msgid # endif #endif #ifndef SeExprYY_ATTRIBUTE_PURE # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) # define SeExprYY_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else # define SeExprYY_ATTRIBUTE_PURE # endif #endif #ifndef SeExprYY_ATTRIBUTE_UNUSED # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) # define SeExprYY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) # else # define SeExprYY_ATTRIBUTE_UNUSED # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define SeExprYY_USE(E) ((void) (E)) #else # define SeExprYY_USE(E) /* empty */ #endif #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about SeExprlval being uninitialized. */ # define SeExprYY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") # define SeExprYY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define SeExprYY_INITIAL_VALUE(Value) Value #endif #ifndef SeExprYY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define SeExprYY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define SeExprYY_IGNORE_MAYBE_UNINITIALIZED_END #endif #ifndef SeExprYY_INITIAL_VALUE # define SeExprYY_INITIAL_VALUE(Value) /* Nothing. */ #endif #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ # define SeExprYY_IGNORE_USELESS_CAST_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") # define SeExprYY_IGNORE_USELESS_CAST_END \ _Pragma ("GCC diagnostic pop") #endif #ifndef SeExprYY_IGNORE_USELESS_CAST_BEGIN # define SeExprYY_IGNORE_USELESS_CAST_BEGIN # define SeExprYY_IGNORE_USELESS_CAST_END #endif #define SeExprYY_ASSERT(E) ((void) (0 && (E))) #if !defined SeExproverflow /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef SeExprYYSTACK_USE_ALLOCA # if SeExprYYSTACK_USE_ALLOCA # ifdef __GNUC__ # define SeExprYYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define SeExprYYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define SeExprYYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef SeExprYYSTACK_ALLOC /* Pacify GCC's 'empty if-body' warning. */ # define SeExprYYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef SeExprYYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define SeExprYYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define SeExprYYSTACK_ALLOC SeExprYYMALLOC # define SeExprYYSTACK_FREE SeExprYYFREE # ifndef SeExprYYSTACK_ALLOC_MAXIMUM # define SeExprYYSTACK_ALLOC_MAXIMUM SeExprYYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined SeExprYYMALLOC || defined malloc) \ && (defined SeExprYYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef SeExprYYMALLOC # define SeExprYYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (SeExprYYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef SeExprYYFREE # define SeExprYYFREE free # if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* !defined SeExproverflow */ #if (! defined SeExproverflow \ && (! defined __cplusplus \ || (defined SeExprYYLTYPE_IS_TRIVIAL && SeExprYYLTYPE_IS_TRIVIAL \ && defined SeExprYYSTYPE_IS_TRIVIAL && SeExprYYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union SeExpralloc { SeExpr_state_t SeExprss_alloc; SeExprYYSTYPE SeExprvs_alloc; SeExprYYLTYPE SeExprls_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define SeExprYYSTACK_GAP_MAXIMUM (SeExprYYSIZEOF (union SeExpralloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define SeExprYYSTACK_BYTES(N) \ ((N) * (SeExprYYSIZEOF (SeExpr_state_t) + SeExprYYSIZEOF (SeExprYYSTYPE) \ + SeExprYYSIZEOF (SeExprYYLTYPE)) \ + 2 * SeExprYYSTACK_GAP_MAXIMUM) # define SeExprYYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables SeExprYYSIZE and SeExprYYSTACKSIZE give the old and new number of elements in the stack, and SeExprYYPTR gives the new location of the stack. Advance SeExprYYPTR to a properly aligned location for the next stack. */ # define SeExprYYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ SeExprYYPTRDIFF_T SeExprnewbytes; \ SeExprYYCOPY (&SeExprptr->Stack_alloc, Stack, SeExprsize); \ Stack = &SeExprptr->Stack_alloc; \ SeExprnewbytes = SeExprstacksize * SeExprYYSIZEOF (*Stack) + SeExprYYSTACK_GAP_MAXIMUM; \ SeExprptr += SeExprnewbytes / SeExprYYSIZEOF (*SeExprptr); \ } \ while (0) #endif #if defined SeExprYYCOPY_NEEDED && SeExprYYCOPY_NEEDED /* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef SeExprYYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define SeExprYYCOPY(Dst, Src, Count) \ __builtin_memcpy (Dst, Src, SeExprYY_CAST (SeExprYYSIZE_T, (Count)) * sizeof (*(Src))) # else # define SeExprYYCOPY(Dst, Src, Count) \ do \ { \ SeExprYYPTRDIFF_T SeExpri; \ for (SeExpri = 0; SeExpri < (Count); SeExpri++) \ (Dst)[SeExpri] = (Src)[SeExpri]; \ } \ while (0) # endif # endif #endif /* !SeExprYYCOPY_NEEDED */ /* SeExprYYFINAL -- State number of the termination state. */ #define SeExprYYFINAL 52 /* SeExprYYLAST -- Last index in SeExprYYTABLE. */ #define SeExprYYLAST 698 /* SeExprYYNTOKENS -- Number of terminals. */ #define SeExprYYNTOKENS 52 /* SeExprYYNNTS -- Number of nonterminals. */ #define SeExprYYNNTS 21 /* SeExprYYNRULES -- Number of rules. */ #define SeExprYYNRULES 84 /* SeExprYYNSTATES -- Number of states. */ #define SeExprYYNSTATES 187 /* SeExprYYMAXUTOK -- Last valid token kind. */ #define SeExprYYMAXUTOK 285 /* SeExprYYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by SeExprlex, with out-of-bounds checking. */ #define SeExprYYTRANSLATE(SeExprYYX) \ (0 <= (SeExprYYX) && (SeExprYYX) <= SeExprYYMAXUTOK \ ? SeExprYY_CAST (SeExprsymbol_kind_t, SeExprtranslate[SeExprYYX]) \ : SeExprYYSYMBOL_SeExprYYUNDEF) /* SeExprYYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by SeExprlex. */ static const SeExprtype_int8 SeExprtranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 42, 2, 2, 2, 40, 2, 2, 23, 24, 38, 36, 49, 37, 2, 39, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 26, 51, 32, 50, 33, 27, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 45, 2, 48, 44, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 46, 2, 47, 43, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 28, 29, 30, 31, 34, 35, 41 }; #if SeExprYYDEBUG /* SeExprYYRLINE[SeExprYYN] -- Source line where rule number SeExprYYN was defined. */ static const SeExprtype_int16 SeExprrline[] = { 0, 121, 121, 123, 128, 129, 135, 143, 151, 161, 162, 163, 164, 165, 169, 172, 177, 183, 184, 188, 192, 199, 200, 204, 209, 218, 219, 224, 225, 229, 230, 234, 235, 236, 239, 242, 245, 248, 251, 254, 255, 258, 261, 264, 267, 270, 276, 281, 282, 283, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 314, 320, 321, 322, 323, 327, 328, 334, 335, 340, 341, 345 }; #endif /** Accessing symbol of state STATE. */ #define SeExprYY_ACCESSING_SYMBOL(State) SeExprYY_CAST (SeExprsymbol_kind_t, SeExprstos[State]) #if SeExprYYDEBUG || 0 /* The user-facing name of the symbol whose (internal) number is SeExprYYSYMBOL. No bounds checking. */ static const char *SeExprsymbol_name (SeExprsymbol_kind_t SeExprsymbol) SeExprYY_ATTRIBUTE_UNUSED; /* SeExprYYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at SeExprYYNTOKENS, nonterminals. */ static const char *const SeExprtname[] = { "\"end of file\"", "error", "\"invalid token\"", "IF", "ELSE", "EXTERN", "DEF", "FLOATPOINT", "STRING", "NAME", "VAR", "STR", "NUMBER", "LIFETIME_CONSTANT", "LIFETIME_UNIFORM", "LIFETIME_VARYING", "LIFETIME_ERROR", "AddEq", "SubEq", "MultEq", "DivEq", "ExpEq", "ModEq", "'('", "')'", "ARROW", "':'", "'?'", "OR", "AND", "EQ", "NE", "'<'", "'>'", "SEEXPR_LE", "SEEXPR_GE", "'+'", "'-'", "'*'", "'/'", "'%'", "UNARY", "'!'", "'~'", "'^'", "'['", "'{'", "'}'", "']'", "','", "'='", "';'", "$accept", "module", "declarationList", "declaration", "lifetimeOptional", "typeDeclare", "typeListOptional", "typeList", "formalTypeListOptional", "formalTypeList", "block", "optassigns", "assigns", "assign", "ifthenelse", "optelse", "e", "exprlist", "optargs", "args", "arg", SeExprYY_NULLPTR }; static const char * SeExprsymbol_name (SeExprsymbol_kind_t SeExprsymbol) { return SeExprtname[SeExprsymbol]; } #endif #ifdef SeExprYYPRINT /* SeExprYYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ static const SeExprtype_int16 SeExprtoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 40, 41, 278, 58, 63, 279, 280, 281, 282, 60, 62, 283, 284, 43, 45, 42, 47, 37, 285, 33, 126, 94, 91, 123, 125, 93, 44, 61, 59 }; #endif #define SeExprYYPACT_NINF (-76) #define SeExprpact_value_is_default(Yyn) \ ((Yyn) == SeExprYYPACT_NINF) #define SeExprYYTABLE_NINF (-1) #define SeExprtable_value_is_error(Yyn) \ 0 /* SeExprYYPACT[STATE-NUM] -- Index in SeExprYYTABLE of the portion describing STATE-NUM. */ static const SeExprtype_int16 SeExprpact[] = { 67, 0, 4, 76, 24, 31, -76, -76, 115, 115, 115, 115, 115, 115, 40, 67, -76, -76, 77, -76, -76, 587, 115, 83, 78, 62, 72, 93, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 85, -76, 523, 61, 61, 61, 61, 587, 68, -76, -76, -76, -76, 587, 102, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 545, -76, -76, -76, -76, 103, -76, -76, 95, 4, 98, 148, 176, 201, 226, 251, 276, 587, 105, 81, -76, 301, 326, 351, 376, 401, 426, 451, 476, -76, -76, 115, 108, 566, 623, 639, 653, 653, 109, 109, 109, 109, -23, -23, 61, 61, 61, 61, 501, 86, 87, 4, 125, 112, 90, 4, -76, -76, -76, -76, -76, -76, -76, 115, -76, -76, -76, -76, -76, -76, -76, -76, 587, 115, 115, -76, 10, 78, -76, 116, 92, -76, 96, 4, 135, -76, 137, 606, 150, 31, 118, 10, -76, -76, 4, 77, 153, 117, -76, 170, -76, 142, -76, 77, 36, -76, -76, 143, 10, -76, -76, 144, -76 }; /* SeExprYYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when SeExprYYTABLE does not specify something else to do. Zero means the default is an error. */ static const SeExprtype_int8 SeExprdefact[] = { 0, 0, 0, 0, 75, 74, 77, 76, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 0, 29, 31, 26, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 75, 74, 0, 62, 63, 64, 65, 78, 0, 1, 5, 2, 30, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, 0, 14, 16, 0, 21, 0, 0, 0, 0, 0, 0, 0, 84, 0, 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, 0, 0, 0, 54, 55, 56, 57, 58, 59, 60, 61, 66, 67, 68, 69, 70, 71, 0, 0, 0, 17, 0, 0, 22, 21, 40, 41, 42, 43, 44, 45, 72, 0, 39, 33, 34, 35, 36, 37, 38, 32, 79, 80, 0, 52, 27, 9, 19, 0, 18, 23, 0, 0, 0, 83, 0, 53, 0, 0, 0, 28, 15, 6, 0, 0, 0, 0, 73, 47, 20, 0, 24, 0, 0, 46, 8, 0, 27, 49, 7, 0, 48 }; /* SeExprYYPGOTO[NTERM-NUM]. */ static const SeExprtype_int16 SeExprpgoto[] = { -76, -76, -76, 179, -14, -2, -76, -76, 66, -76, -13, 14, -75, -15, 19, -76, -4, -76, 51, -76, 65 }; /* SeExprYYDEFGOTO[NTERM-NUM]. */ static const SeExprtype_uint8 SeExprdefgoto[] = { 0, 14, 15, 16, 80, 126, 153, 154, 127, 128, 17, 164, 18, 19, 20, 179, 21, 51, 92, 93, 94 }; /* SeExprYYTABLE[SeExprYYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If SeExprYYTABLE_NINF, syntax error. */ static const SeExprtype_uint8 SeExprtable[] = { 25, 27, 54, 55, 45, 46, 47, 48, 49, 50, 81, 23, 24, 1, 56, 69, 70, 71, 74, 162, 163, 72, 73, 22, 85, 86, 87, 88, 89, 90, 91, 95, 96, 97, 98, 99, 100, 101, 102, 1, 52, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 1, 82, 2, 3, 35, 165, 4, 5, 6, 7, 1, 42, 182, 23, 24, 26, 4, 5, 6, 7, 8, 75, 76, 77, 78, 83, 75, 76, 77, 78, 8, 146, 84, 9, 10, 72, 73, 165, 34, 11, 12, 106, 13, 9, 10, 124, 104, 105, 125, 11, 12, 129, 13, 152, 43, 44, 6, 7, 79, 136, 137, 147, 150, 91, 155, 151, 156, 166, 8, 157, 167, 168, 169, 91, 161, 67, 68, 69, 70, 71, 55, 9, 10, 72, 73, 170, 175, 11, 12, 171, 13, 172, 176, 177, 181, 173, 174, 28, 29, 30, 31, 32, 33, 57, 178, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 180, 184, 186, 72, 73, 53, 158, 185, 183, 160, 130, 35, 57, 159, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 0, 0, 0, 0, 57, 131, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 0, 0, 0, 0, 57, 132, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 0, 0, 0, 0, 57, 133, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 0, 0, 0, 0, 57, 134, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 0, 0, 0, 0, 57, 135, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 0, 0, 0, 0, 57, 138, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 0, 0, 0, 0, 57, 139, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 0, 0, 0, 0, 57, 140, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 0, 0, 0, 0, 57, 141, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 0, 0, 0, 0, 57, 142, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 0, 0, 0, 0, 57, 143, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 0, 0, 0, 0, 57, 144, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 0, 0, 0, 0, 57, 145, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 103, 57, 149, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 123, 57, 0, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 57, 148, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 57, 0, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, 72, 73 }; static const SeExprtype_int16 SeExprcheck[] = { 2, 3, 15, 18, 8, 9, 10, 11, 12, 13, 24, 7, 8, 3, 18, 38, 39, 40, 22, 9, 10, 44, 45, 23, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 3, 0, 17, 18, 19, 20, 21, 22, 23, 17, 18, 19, 20, 21, 22, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 3, 9, 5, 6, 50, 150, 9, 10, 11, 12, 3, 50, 46, 7, 8, 9, 9, 10, 11, 12, 23, 13, 14, 15, 16, 23, 13, 14, 15, 16, 23, 105, 9, 36, 37, 44, 45, 182, 23, 42, 43, 9, 45, 36, 37, 12, 48, 49, 23, 42, 43, 23, 45, 125, 9, 10, 11, 12, 45, 24, 49, 23, 46, 137, 9, 48, 24, 151, 23, 49, 24, 49, 46, 147, 148, 36, 37, 38, 39, 40, 165, 36, 37, 44, 45, 157, 169, 42, 43, 24, 45, 24, 9, 46, 177, 47, 168, 17, 18, 19, 20, 21, 22, 25, 4, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 47, 47, 47, 44, 45, 15, 129, 182, 178, 147, 51, 50, 25, 137, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, -1, -1, -1, -1, 25, 51, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, -1, -1, -1, -1, 25, 51, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, -1, -1, -1, -1, 25, 51, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, -1, -1, -1, -1, 25, 51, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, -1, -1, -1, -1, 25, 51, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, -1, -1, -1, -1, 25, 51, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, -1, -1, -1, -1, 25, 51, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, -1, -1, -1, -1, 25, 51, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, -1, -1, -1, -1, 25, 51, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, -1, -1, -1, -1, 25, 51, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, -1, -1, -1, -1, 25, 51, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, -1, -1, -1, -1, 25, 51, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, -1, -1, -1, -1, 25, 51, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, 24, 25, 48, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, 24, 25, -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, 25, -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 44, 45 }; /* SeExprYYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const SeExprtype_int8 SeExprstos[] = { 0, 3, 5, 6, 9, 10, 11, 12, 23, 36, 37, 42, 43, 45, 53, 54, 55, 62, 64, 65, 66, 68, 23, 7, 8, 57, 9, 57, 17, 18, 19, 20, 21, 22, 23, 50, 17, 18, 19, 20, 21, 22, 50, 9, 10, 68, 68, 68, 68, 68, 68, 69, 0, 55, 62, 65, 68, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 44, 45, 68, 13, 14, 15, 16, 45, 56, 56, 9, 23, 9, 68, 68, 68, 68, 68, 68, 68, 70, 71, 72, 68, 68, 68, 68, 68, 68, 68, 68, 24, 48, 49, 9, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 24, 12, 23, 57, 60, 61, 23, 51, 51, 51, 51, 51, 51, 24, 49, 51, 51, 51, 51, 51, 51, 51, 51, 68, 23, 26, 48, 46, 48, 57, 58, 59, 9, 24, 49, 60, 72, 70, 68, 9, 10, 63, 64, 56, 24, 49, 46, 57, 24, 24, 47, 57, 62, 9, 46, 4, 67, 47, 62, 46, 66, 47, 63, 47 }; /* SeExprYYR1[SeExprYYN] -- Symbol number of symbol that rule SeExprYYN derives. */ static const SeExprtype_int8 SeExprr1[] = { 0, 52, 53, 53, 54, 54, 55, 55, 55, 56, 56, 56, 56, 56, 57, 57, 57, 58, 58, 59, 59, 60, 60, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 66, 67, 67, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 69, 70, 70, 71, 71, 72 }; /* SeExprYYR2[SeExprYYN] -- Number of symbols on the right hand side of rule SeExprYYN. */ static const SeExprtype_int8 SeExprr2[] = { 0, 2, 2, 1, 1, 2, 6, 9, 8, 0, 1, 1, 1, 1, 2, 5, 2, 0, 1, 1, 3, 0, 1, 2, 4, 2, 1, 0, 1, 1, 2, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 0, 4, 2, 3, 3, 4, 5, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 6, 1, 1, 1, 1, 1, 3, 0, 1, 1, 3, 1 }; enum { SeExprYYENOMEM = -2 }; #define SeExprerrok (SeExprerrstatus = 0) #define SeExprclearin (SeExprchar = SeExprYYEMPTY) #define SeExprYYACCEPT goto SeExpracceptlab #define SeExprYYABORT goto SeExprabortlab #define SeExprYYERROR goto SeExprerrorlab #define SeExprYYRECOVERING() (!!SeExprerrstatus) #define SeExprYYBACKUP(Token, Value) \ do \ if (SeExprchar == SeExprYYEMPTY) \ { \ SeExprchar = (Token); \ SeExprlval = (Value); \ SeExprYYPOPSTACK (SeExprlen); \ SeExprstate = *SeExprssp; \ goto SeExprbackup; \ } \ else \ { \ SeExprerror (SeExprYY_("syntax error: cannot back up")); \ SeExprYYERROR; \ } \ while (0) /* Backward compatibility with an undocumented macro. Use SeExprYYerror or SeExprYYUNDEF. */ #define SeExprYYERRCODE SeExprYYUNDEF /* SeExprYYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #ifndef SeExprYYLLOC_DEFAULT # define SeExprYYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (N) \ { \ (Current).first_line = SeExprYYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = SeExprYYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = SeExprYYRHSLOC (Rhs, N).last_line; \ (Current).last_column = SeExprYYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ SeExprYYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ SeExprYYRHSLOC (Rhs, 0).last_column; \ } \ while (0) #endif #define SeExprYYRHSLOC(Rhs, K) ((Rhs)[K]) /* Enable debugging if requested. */ #if SeExprYYDEBUG # ifndef SeExprYYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define SeExprYYFPRINTF fprintf # endif # define SeExprYYDPRINTF(Args) \ do { \ if (SeExprdebug) \ SeExprYYFPRINTF Args; \ } while (0) /* SeExprYY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ # ifndef SeExprYY_LOCATION_PRINT # if defined SeExprYYLTYPE_IS_TRIVIAL && SeExprYYLTYPE_IS_TRIVIAL /* Print *SeExprYYLOCP on SeExprYYO. Private, do not rely on its existence. */ SeExprYY_ATTRIBUTE_UNUSED static int SeExpr_location_print_ (FILE *SeExpro, SeExprYYLTYPE const * const SeExprlocp) { int res = 0; int end_col = 0 != SeExprlocp->last_column ? SeExprlocp->last_column - 1 : 0; if (0 <= SeExprlocp->first_line) { res += SeExprYYFPRINTF (SeExpro, "%d", SeExprlocp->first_line); if (0 <= SeExprlocp->first_column) res += SeExprYYFPRINTF (SeExpro, ".%d", SeExprlocp->first_column); } if (0 <= SeExprlocp->last_line) { if (SeExprlocp->first_line < SeExprlocp->last_line) { res += SeExprYYFPRINTF (SeExpro, "-%d", SeExprlocp->last_line); if (0 <= end_col) res += SeExprYYFPRINTF (SeExpro, ".%d", end_col); } else if (0 <= end_col && SeExprlocp->first_column < end_col) res += SeExprYYFPRINTF (SeExpro, "-%d", end_col); } return res; } # define SeExprYY_LOCATION_PRINT(File, Loc) \ SeExpr_location_print_ (File, &(Loc)) # else # define SeExprYY_LOCATION_PRINT(File, Loc) ((void) 0) # endif # endif /* !defined SeExprYY_LOCATION_PRINT */ # define SeExprYY_SYMBOL_PRINT(Title, Kind, Value, Location) \ do { \ if (SeExprdebug) \ { \ SeExprYYFPRINTF (stderr, "%s ", Title); \ SeExpr_symbol_print (stderr, \ Kind, Value, Location); \ SeExprYYFPRINTF (stderr, "\n"); \ } \ } while (0) /*-----------------------------------. | Print this symbol's value on SeExprYYO. | `-----------------------------------*/ static void SeExpr_symbol_value_print (FILE *SeExpro, SeExprsymbol_kind_t SeExprkind, SeExprYYSTYPE const * const SeExprvaluep, SeExprYYLTYPE const * const SeExprlocationp) { FILE *SeExproutput = SeExpro; SeExprYY_USE (SeExproutput); SeExprYY_USE (SeExprlocationp); if (!SeExprvaluep) return; # ifdef SeExprYYPRINT if (SeExprkind < SeExprYYNTOKENS) SeExprYYPRINT (SeExpro, SeExprtoknum[SeExprkind], *SeExprvaluep); # endif SeExprYY_IGNORE_MAYBE_UNINITIALIZED_BEGIN SeExprYY_USE (SeExprkind); SeExprYY_IGNORE_MAYBE_UNINITIALIZED_END } /*---------------------------. | Print this symbol on SeExprYYO. | `---------------------------*/ static void SeExpr_symbol_print (FILE *SeExpro, SeExprsymbol_kind_t SeExprkind, SeExprYYSTYPE const * const SeExprvaluep, SeExprYYLTYPE const * const SeExprlocationp) { SeExprYYFPRINTF (SeExpro, "%s %s (", SeExprkind < SeExprYYNTOKENS ? "token" : "nterm", SeExprsymbol_name (SeExprkind)); SeExprYY_LOCATION_PRINT (SeExpro, *SeExprlocationp); SeExprYYFPRINTF (SeExpro, ": "); SeExpr_symbol_value_print (SeExpro, SeExprkind, SeExprvaluep, SeExprlocationp); SeExprYYFPRINTF (SeExpro, ")"); } /*------------------------------------------------------------------. | SeExpr_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ static void SeExpr_stack_print (SeExpr_state_t *SeExprbottom, SeExpr_state_t *SeExprtop) { SeExprYYFPRINTF (stderr, "Stack now"); for (; SeExprbottom <= SeExprtop; SeExprbottom++) { int SeExprbot = *SeExprbottom; SeExprYYFPRINTF (stderr, " %d", SeExprbot); } SeExprYYFPRINTF (stderr, "\n"); } # define SeExprYY_STACK_PRINT(Bottom, Top) \ do { \ if (SeExprdebug) \ SeExpr_stack_print ((Bottom), (Top)); \ } while (0) /*------------------------------------------------. | Report that the SeExprYYRULE is going to be reduced. | `------------------------------------------------*/ static void SeExpr_reduce_print (SeExpr_state_t *SeExprssp, SeExprYYSTYPE *SeExprvsp, SeExprYYLTYPE *SeExprlsp, int SeExprrule) { int SeExprlno = SeExprrline[SeExprrule]; int SeExprnrhs = SeExprr2[SeExprrule]; int SeExpri; SeExprYYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", SeExprrule - 1, SeExprlno); /* The symbols being reduced. */ for (SeExpri = 0; SeExpri < SeExprnrhs; SeExpri++) { SeExprYYFPRINTF (stderr, " $%d = ", SeExpri + 1); SeExpr_symbol_print (stderr, SeExprYY_ACCESSING_SYMBOL (+SeExprssp[SeExpri + 1 - SeExprnrhs]), &SeExprvsp[(SeExpri + 1) - (SeExprnrhs)], &(SeExprlsp[(SeExpri + 1) - (SeExprnrhs)])); SeExprYYFPRINTF (stderr, "\n"); } } # define SeExprYY_REDUCE_PRINT(Rule) \ do { \ if (SeExprdebug) \ SeExpr_reduce_print (SeExprssp, SeExprvsp, SeExprlsp, Rule); \ } while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int SeExprdebug; #else /* !SeExprYYDEBUG */ # define SeExprYYDPRINTF(Args) ((void) 0) # define SeExprYY_SYMBOL_PRINT(Title, Kind, Value, Location) # define SeExprYY_STACK_PRINT(Bottom, Top) # define SeExprYY_REDUCE_PRINT(Rule) #endif /* !SeExprYYDEBUG */ /* SeExprYYINITDEPTH -- initial size of the parser's stacks. */ #ifndef SeExprYYINITDEPTH # define SeExprYYINITDEPTH 200 #endif /* SeExprYYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if SeExprYYSTACK_ALLOC_MAXIMUM < SeExprYYSTACK_BYTES (SeExprYYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef SeExprYYMAXDEPTH # define SeExprYYMAXDEPTH 10000 #endif /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void SeExprdestruct (const char *SeExprmsg, SeExprsymbol_kind_t SeExprkind, SeExprYYSTYPE *SeExprvaluep, SeExprYYLTYPE *SeExprlocationp) { SeExprYY_USE (SeExprvaluep); SeExprYY_USE (SeExprlocationp); if (!SeExprmsg) SeExprmsg = "Deleting"; SeExprYY_SYMBOL_PRINT (SeExprmsg, SeExprkind, SeExprvaluep, SeExprlocationp); SeExprYY_IGNORE_MAYBE_UNINITIALIZED_BEGIN SeExprYY_USE (SeExprkind); SeExprYY_IGNORE_MAYBE_UNINITIALIZED_END } /* Lookahead token kind. */ int SeExprchar; /* The semantic value of the lookahead symbol. */ SeExprYYSTYPE SeExprlval; /* Location data for the lookahead symbol. */ SeExprYYLTYPE SeExprlloc # if defined SeExprYYLTYPE_IS_TRIVIAL && SeExprYYLTYPE_IS_TRIVIAL = { 1, 1, 1, 1 } # endif ; /* Number of syntax errors so far. */ int SeExprnerrs; /*----------. | SeExprparse. | `----------*/ int SeExprparse (void) { SeExpr_state_fast_t SeExprstate = 0; /* Number of tokens to shift before error messages enabled. */ int SeExprerrstatus = 0; /* Refer to the stacks through separate pointers, to allow SeExproverflow to reallocate them elsewhere. */ /* Their size. */ SeExprYYPTRDIFF_T SeExprstacksize = SeExprYYINITDEPTH; /* The state stack: array, bottom, top. */ SeExpr_state_t SeExprssa[SeExprYYINITDEPTH]; SeExpr_state_t *SeExprss = SeExprssa; SeExpr_state_t *SeExprssp = SeExprss; /* The semantic value stack: array, bottom, top. */ SeExprYYSTYPE SeExprvsa[SeExprYYINITDEPTH]; SeExprYYSTYPE *SeExprvs = SeExprvsa; SeExprYYSTYPE *SeExprvsp = SeExprvs; /* The location stack: array, bottom, top. */ SeExprYYLTYPE SeExprlsa[SeExprYYINITDEPTH]; SeExprYYLTYPE *SeExprls = SeExprlsa; SeExprYYLTYPE *SeExprlsp = SeExprls; int SeExprn; /* The return value of SeExprparse. */ int SeExprresult; /* Lookahead symbol kind. */ SeExprsymbol_kind_t SeExprtoken = SeExprYYSYMBOL_SeExprYYEMPTY; /* The variables used to return semantic value and location from the action routines. */ SeExprYYSTYPE SeExprval; SeExprYYLTYPE SeExprloc; /* The locations where the error started and ended. */ SeExprYYLTYPE SeExprerror_range[3]; #define SeExprYYPOPSTACK(N) (SeExprvsp -= (N), SeExprssp -= (N), SeExprlsp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int SeExprlen = 0; SeExprYYDPRINTF ((stderr, "Starting parse\n")); SeExprchar = SeExprYYEMPTY; /* Cause a token to be read. */ SeExprlsp[0] = SeExprlloc; goto SeExprsetstate; /*------------------------------------------------------------. | SeExprnewstate -- push a new state, which is found in SeExprstate. | `------------------------------------------------------------*/ SeExprnewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ SeExprssp++; /*--------------------------------------------------------------------. | SeExprsetstate -- set current state (the top of the stack) to SeExprstate. | `--------------------------------------------------------------------*/ SeExprsetstate: SeExprYYDPRINTF ((stderr, "Entering state %d\n", SeExprstate)); SeExprYY_ASSERT (0 <= SeExprstate && SeExprstate < SeExprYYNSTATES); SeExprYY_IGNORE_USELESS_CAST_BEGIN *SeExprssp = SeExprYY_CAST (SeExpr_state_t, SeExprstate); SeExprYY_IGNORE_USELESS_CAST_END SeExprYY_STACK_PRINT (SeExprss, SeExprssp); if (SeExprss + SeExprstacksize - 1 <= SeExprssp) #if !defined SeExproverflow && !defined SeExprYYSTACK_RELOCATE goto SeExprexhaustedlab; #else { /* Get the current used size of the three stacks, in elements. */ SeExprYYPTRDIFF_T SeExprsize = SeExprssp - SeExprss + 1; # if defined SeExproverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ SeExpr_state_t *SeExprss1 = SeExprss; SeExprYYSTYPE *SeExprvs1 = SeExprvs; SeExprYYLTYPE *SeExprls1 = SeExprls; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if SeExproverflow is a macro. */ SeExproverflow (SeExprYY_("memory exhausted"), &SeExprss1, SeExprsize * SeExprYYSIZEOF (*SeExprssp), &SeExprvs1, SeExprsize * SeExprYYSIZEOF (*SeExprvsp), &SeExprls1, SeExprsize * SeExprYYSIZEOF (*SeExprlsp), &SeExprstacksize); SeExprss = SeExprss1; SeExprvs = SeExprvs1; SeExprls = SeExprls1; } # else /* defined SeExprYYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (SeExprYYMAXDEPTH <= SeExprstacksize) goto SeExprexhaustedlab; SeExprstacksize *= 2; if (SeExprYYMAXDEPTH < SeExprstacksize) SeExprstacksize = SeExprYYMAXDEPTH; { SeExpr_state_t *SeExprss1 = SeExprss; union SeExpralloc *SeExprptr = SeExprYY_CAST (union SeExpralloc *, SeExprYYSTACK_ALLOC (SeExprYY_CAST (SeExprYYSIZE_T, SeExprYYSTACK_BYTES (SeExprstacksize)))); if (! SeExprptr) goto SeExprexhaustedlab; SeExprYYSTACK_RELOCATE (SeExprss_alloc, SeExprss); SeExprYYSTACK_RELOCATE (SeExprvs_alloc, SeExprvs); SeExprYYSTACK_RELOCATE (SeExprls_alloc, SeExprls); # undef SeExprYYSTACK_RELOCATE if (SeExprss1 != SeExprssa) SeExprYYSTACK_FREE (SeExprss1); } # endif SeExprssp = SeExprss + SeExprsize - 1; SeExprvsp = SeExprvs + SeExprsize - 1; SeExprlsp = SeExprls + SeExprsize - 1; SeExprYY_IGNORE_USELESS_CAST_BEGIN SeExprYYDPRINTF ((stderr, "Stack size increased to %ld\n", SeExprYY_CAST (long, SeExprstacksize))); SeExprYY_IGNORE_USELESS_CAST_END if (SeExprss + SeExprstacksize - 1 <= SeExprssp) SeExprYYABORT; } #endif /* !defined SeExproverflow && !defined SeExprYYSTACK_RELOCATE */ if (SeExprstate == SeExprYYFINAL) SeExprYYACCEPT; goto SeExprbackup; /*-----------. | SeExprbackup. | `-----------*/ SeExprbackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ SeExprn = SeExprpact[SeExprstate]; if (SeExprpact_value_is_default (SeExprn)) goto SeExprdefault; /* Not known => get a lookahead token if don't already have one. */ /* SeExprYYCHAR is either empty, or end-of-input, or a valid lookahead. */ if (SeExprchar == SeExprYYEMPTY) { SeExprYYDPRINTF ((stderr, "Reading a token\n")); SeExprchar = SeExprlex (); } if (SeExprchar <= SeExprYYEOF) { SeExprchar = SeExprYYEOF; SeExprtoken = SeExprYYSYMBOL_SeExprYYEOF; SeExprYYDPRINTF ((stderr, "Now at end of input.\n")); } else if (SeExprchar == SeExprYYerror) { /* The scanner already issued an error message, process directly to error recovery. But do not keep the error token as lookahead, it is too special and may lead us to an endless loop in error recovery. */ SeExprchar = SeExprYYUNDEF; SeExprtoken = SeExprYYSYMBOL_SeExprYYerror; SeExprerror_range[1] = SeExprlloc; goto SeExprerrlab1; } else { SeExprtoken = SeExprYYTRANSLATE (SeExprchar); SeExprYY_SYMBOL_PRINT ("Next token is", SeExprtoken, &SeExprlval, &SeExprlloc); } /* If the proper action on seeing token SeExprYYTOKEN is to reduce or to detect an error, take that action. */ SeExprn += SeExprtoken; if (SeExprn < 0 || SeExprYYLAST < SeExprn || SeExprcheck[SeExprn] != SeExprtoken) goto SeExprdefault; SeExprn = SeExprtable[SeExprn]; if (SeExprn <= 0) { if (SeExprtable_value_is_error (SeExprn)) goto SeExprerrlab; SeExprn = -SeExprn; goto SeExprreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (SeExprerrstatus) SeExprerrstatus--; /* Shift the lookahead token. */ SeExprYY_SYMBOL_PRINT ("Shifting", SeExprtoken, &SeExprlval, &SeExprlloc); SeExprstate = SeExprn; SeExprYY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++SeExprvsp = SeExprlval; SeExprYY_IGNORE_MAYBE_UNINITIALIZED_END *++SeExprlsp = SeExprlloc; /* Discard the shifted token. */ SeExprchar = SeExprYYEMPTY; goto SeExprnewstate; /*-----------------------------------------------------------. | SeExprdefault -- do the default action for the current state. | `-----------------------------------------------------------*/ SeExprdefault: SeExprn = SeExprdefact[SeExprstate]; if (SeExprn == 0) goto SeExprerrlab; goto SeExprreduce; /*-----------------------------. | SeExprreduce -- do a reduction. | `-----------------------------*/ SeExprreduce: /* SeExprn is the number of a rule to reduce with. */ SeExprlen = SeExprr2[SeExprn]; /* If SeExprYYLEN is nonzero, implement the default value of the action: '$$ = $1'. Otherwise, the following line sets SeExprYYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to SeExprYYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that SeExprYYVAL may be used uninitialized. */ SeExprval = SeExprvsp[1-SeExprlen]; /* Default location. */ SeExprYYLLOC_DEFAULT (SeExprloc, (SeExprlsp - SeExprlen), SeExprlen); SeExprerror_range[1] = SeExprloc; SeExprYY_REDUCE_PRINT (SeExprn); switch (SeExprn) { case 2: /* module: declarationList block */ #line 121 "@@PATH@@/src/KSeExpr/ExprParser.y" { ParseResult = (SeExprvsp[-1].n); ParseResult->setPosition((SeExprloc).first_column, (SeExprloc).last_column); ParseResult->addChild((SeExprvsp[0].n)); } #line 1627 "y.tab.c" break; case 3: /* module: block */ #line 123 "@@PATH@@/src/KSeExpr/ExprParser.y" { ParseResult = NODE((SeExprloc).first_column, (SeExprloc).last_column, ModuleNode); ParseResult->addChild((SeExprvsp[0].n)); } #line 1634 "y.tab.c" break; case 4: /* declarationList: declaration */ #line 128 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE((SeExprloc).first_column, (SeExprloc).last_column, ModuleNode); (SeExprval.n)->addChild((SeExprvsp[0].n)); } #line 1640 "y.tab.c" break; case 5: /* declarationList: declarationList declaration */ #line 130 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = (SeExprvsp[-1].n); (SeExprval.n)->setPosition((SeExprloc).first_column, (SeExprloc).last_column); (SeExprval.n)->addChild((SeExprvsp[0].n)); } #line 1647 "y.tab.c" break; case 6: /* declaration: EXTERN typeDeclare NAME '(' typeListOptional ')' */ #line 136 "@@PATH@@/src/KSeExpr/ExprParser.y" { KSeExpr::ExprType type = KSeExpr::ExprType((SeExprvsp[-4].t).type, (SeExprvsp[-4].t).dim, (SeExprvsp[-4].t).lifetime); KSeExpr::ExprPrototypeNode * prototype = (KSeExpr::ExprPrototypeNode*)NODE2((SeExprloc).first_column, (SeExprloc).last_column, PrototypeNode, (SeExprvsp[-3].s), type); prototype->addArgTypes((SeExprvsp[-1].n)); Forget((SeExprvsp[-1].n)); (SeExprval.n) = prototype; free((SeExprvsp[-3].s)); } #line 1659 "y.tab.c" break; case 7: /* declaration: DEF typeDeclare NAME '(' formalTypeListOptional ')' '{' block '}' */ #line 144 "@@PATH@@/src/KSeExpr/ExprParser.y" { KSeExpr::ExprType type = KSeExpr::ExprType((SeExprvsp[-7].t).type, (SeExprvsp[-7].t).dim, (SeExprvsp[-7].t).lifetime); KSeExpr::ExprPrototypeNode * prototype = (KSeExpr::ExprPrototypeNode*)NODE2((SeExprloc).first_column, (SeExprlsp[-3]).last_column, PrototypeNode, (SeExprvsp[-6].s), type); prototype->addArgs((SeExprvsp[-4].n)); Forget((SeExprvsp[-4].n)); (SeExprval.n) = NODE2((SeExprloc).first_column, (SeExprloc).last_column, LocalFunctionNode, prototype, (SeExprvsp[-1].n)); free((SeExprvsp[-6].s)); } #line 1671 "y.tab.c" break; case 8: /* declaration: DEF NAME '(' formalTypeListOptional ')' '{' block '}' */ #line 152 "@@PATH@@/src/KSeExpr/ExprParser.y" { KSeExpr::ExprPrototypeNode * prototype = (KSeExpr::ExprPrototypeNode*)NODE1((SeExprloc).first_column, (SeExprlsp[-3]).last_column, PrototypeNode, (SeExprvsp[-6].s)); prototype->addArgs((SeExprvsp[-4].n)); Forget((SeExprvsp[-4].n)); (SeExprval.n) = NODE2((SeExprloc).first_column, (SeExprloc).last_column, LocalFunctionNode, prototype, (SeExprvsp[-1].n)); free((SeExprvsp[-6].s)); } #line 1682 "y.tab.c" break; case 9: /* lifetimeOptional: %empty */ #line 161 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.l) = KSeExpr::ExprType::ltVARYING; } #line 1688 "y.tab.c" break; case 10: /* lifetimeOptional: LIFETIME_CONSTANT */ #line 162 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.l) = KSeExpr::ExprType::ltCONSTANT; } #line 1694 "y.tab.c" break; case 11: /* lifetimeOptional: LIFETIME_UNIFORM */ #line 163 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.l) = KSeExpr::ExprType::ltUNIFORM; } #line 1700 "y.tab.c" break; case 12: /* lifetimeOptional: LIFETIME_VARYING */ #line 164 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.l) = KSeExpr::ExprType::ltVARYING; } #line 1706 "y.tab.c" break; case 13: /* lifetimeOptional: LIFETIME_ERROR */ #line 165 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.l) = KSeExpr::ExprType::ltERROR; } #line 1712 "y.tab.c" break; case 14: /* typeDeclare: FLOATPOINT lifetimeOptional */ #line 169 "@@PATH@@/src/KSeExpr/ExprParser.y" {(SeExprval.t).type = KSeExpr::ExprType::tFP; (SeExprval.t).dim = 1; (SeExprval.t).lifetime = (SeExprvsp[0].l); } #line 1720 "y.tab.c" break; case 15: /* typeDeclare: FLOATPOINT '[' NUMBER ']' lifetimeOptional */ #line 173 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.t).type = ((SeExprvsp[-2].d) > 0 ? KSeExpr::ExprType::tFP : KSeExpr::ExprType::tERROR); //TODO: This causes an error but does not report it to user. Change this. (SeExprval.t).dim = ((SeExprvsp[-2].d) > 0 ? (SeExprvsp[-2].d) : 0); (SeExprval.t).lifetime = (SeExprvsp[0].l); } #line 1729 "y.tab.c" break; case 16: /* typeDeclare: STRING lifetimeOptional */ #line 177 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.t).type = KSeExpr::ExprType::tSTRING; (SeExprval.t).dim = 1; (SeExprval.t).lifetime = (SeExprvsp[0].l); } #line 1737 "y.tab.c" break; case 17: /* typeListOptional: %empty */ #line 183 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE((SeExprloc).first_column, (SeExprloc).last_column, Node); } #line 1743 "y.tab.c" break; case 18: /* typeListOptional: typeList */ #line 184 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = (SeExprvsp[0].n); } #line 1749 "y.tab.c" break; case 19: /* typeList: typeDeclare */ #line 188 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE((SeExprloc).first_column, (SeExprloc).last_column, Node); KSeExpr::ExprType type = KSeExpr::ExprType((SeExprvsp[0].t).type, (SeExprvsp[0].t).dim, (SeExprvsp[0].t).lifetime); KSeExpr::ExprNode* varNode = NODE2((SeExprloc).first_column, (SeExprloc).last_column, VarNode, "", type); (SeExprval.n)->addChild(varNode); } #line 1758 "y.tab.c" break; case 20: /* typeList: typeList ',' typeDeclare */ #line 192 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = (SeExprvsp[-2].n); KSeExpr::ExprType type = KSeExpr::ExprType((SeExprvsp[0].t).type, (SeExprvsp[0].t).dim, (SeExprvsp[0].t).lifetime); KSeExpr::ExprNode* varNode = NODE2((SeExprlsp[0]).first_column, (SeExprlsp[0]).last_column, VarNode, "", type); (SeExprval.n)->addChild(varNode); } #line 1767 "y.tab.c" break; case 21: /* formalTypeListOptional: %empty */ #line 199 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE((SeExprloc).first_column, (SeExprloc).last_column, Node); } #line 1773 "y.tab.c" break; case 22: /* formalTypeListOptional: formalTypeList */ #line 200 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = (SeExprvsp[0].n); } #line 1779 "y.tab.c" break; case 23: /* formalTypeList: typeDeclare NAME */ #line 204 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE((SeExprloc).first_column, (SeExprloc).last_column, Node); KSeExpr::ExprType type = KSeExpr::ExprType((SeExprvsp[-1].t).type, (SeExprvsp[-1].t).dim, (SeExprvsp[-1].t).lifetime); KSeExpr::ExprNode* varNode = NODE2((SeExprloc).first_column, (SeExprloc).last_column, VarNode, (SeExprvsp[0].s), type); (SeExprval.n)->addChild(varNode); free((SeExprvsp[0].s)); } #line 1789 "y.tab.c" break; case 24: /* formalTypeList: formalTypeList ',' typeDeclare NAME */ #line 210 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = (SeExprvsp[-3].n); KSeExpr::ExprType type = KSeExpr::ExprType((SeExprvsp[-1].t).type, (SeExprvsp[-1].t).dim, (SeExprvsp[-1].t).lifetime); KSeExpr::ExprNode* varNode = NODE2((SeExprlsp[-1]).first_column, (SeExprlsp[0]).last_column, VarNode, (SeExprvsp[0].s), type); (SeExprval.n)->addChild(varNode); free((SeExprvsp[0].s)); } #line 1799 "y.tab.c" break; case 25: /* block: assigns e */ #line 218 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,BlockNode, (SeExprvsp[-1].n), (SeExprvsp[0].n)); } #line 1805 "y.tab.c" break; case 26: /* block: e */ #line 219 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = (SeExprvsp[0].n); } #line 1811 "y.tab.c" break; case 27: /* optassigns: %empty */ #line 224 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE((SeExprloc).first_column,(SeExprloc).last_column,Node); /* create empty node */; } #line 1817 "y.tab.c" break; case 28: /* optassigns: assigns */ #line 225 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = (SeExprvsp[0].n); } #line 1823 "y.tab.c" break; case 29: /* assigns: assign */ #line 229 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE1((SeExprloc).first_column,(SeExprloc).last_column,Node, (SeExprvsp[0].n)); /* create var list */} #line 1829 "y.tab.c" break; case 30: /* assigns: assigns assign */ #line 230 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = (SeExprvsp[-1].n); (SeExprvsp[-1].n)->addChild((SeExprvsp[0].n)); /* add to list */} #line 1835 "y.tab.c" break; case 31: /* assign: ifthenelse */ #line 234 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = (SeExprvsp[0].n); } #line 1841 "y.tab.c" break; case 32: /* assign: VAR '=' e ';' */ #line 235 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,AssignNode, (SeExprvsp[-3].s), (SeExprvsp[-1].n)); free((SeExprvsp[-3].s)); } #line 1847 "y.tab.c" break; case 33: /* assign: VAR AddEq e ';' */ #line 236 "@@PATH@@/src/KSeExpr/ExprParser.y" {KSeExpr::ExprNode* varNode=NODE1((SeExprlsp[-3]).first_column,(SeExprlsp[-3]).first_column,VarNode, (SeExprvsp[-3].s)); KSeExpr::ExprNode* opNode=NODE3((SeExprlsp[-1]).first_column,(SeExprlsp[-1]).first_column,BinaryOpNode,varNode,(SeExprvsp[-1].n),'+'); (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,AssignNode, (SeExprvsp[-3].s), opNode);free((SeExprvsp[-3].s));} #line 1855 "y.tab.c" break; case 34: /* assign: VAR SubEq e ';' */ #line 239 "@@PATH@@/src/KSeExpr/ExprParser.y" {KSeExpr::ExprNode* varNode=NODE1((SeExprlsp[-3]).first_column,(SeExprlsp[-3]).first_column,VarNode, (SeExprvsp[-3].s)); KSeExpr::ExprNode* opNode=NODE3((SeExprlsp[-1]).first_column,(SeExprlsp[-1]).first_column,BinaryOpNode,varNode,(SeExprvsp[-1].n),'-'); (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,AssignNode, (SeExprvsp[-3].s), opNode);free((SeExprvsp[-3].s));} #line 1863 "y.tab.c" break; case 35: /* assign: VAR MultEq e ';' */ #line 242 "@@PATH@@/src/KSeExpr/ExprParser.y" {KSeExpr::ExprNode* varNode=NODE1((SeExprlsp[-3]).first_column,(SeExprlsp[-3]).first_column,VarNode, (SeExprvsp[-3].s)); KSeExpr::ExprNode* opNode=NODE3((SeExprlsp[-1]).first_column,(SeExprlsp[-1]).first_column,BinaryOpNode,varNode,(SeExprvsp[-1].n),'*'); (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,AssignNode, (SeExprvsp[-3].s), opNode);free((SeExprvsp[-3].s));} #line 1871 "y.tab.c" break; case 36: /* assign: VAR DivEq e ';' */ #line 245 "@@PATH@@/src/KSeExpr/ExprParser.y" {KSeExpr::ExprNode* varNode=NODE1((SeExprlsp[-3]).first_column,(SeExprlsp[-3]).first_column,VarNode, (SeExprvsp[-3].s)); KSeExpr::ExprNode* opNode=NODE3((SeExprlsp[-1]).first_column,(SeExprlsp[-1]).first_column,BinaryOpNode,varNode,(SeExprvsp[-1].n),'/'); (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,AssignNode, (SeExprvsp[-3].s), opNode);free((SeExprvsp[-3].s));} #line 1879 "y.tab.c" break; case 37: /* assign: VAR ExpEq e ';' */ #line 248 "@@PATH@@/src/KSeExpr/ExprParser.y" {KSeExpr::ExprNode* varNode=NODE1((SeExprlsp[-3]).first_column,(SeExprlsp[-3]).first_column,VarNode, (SeExprvsp[-3].s)); KSeExpr::ExprNode* opNode=NODE3((SeExprlsp[-1]).first_column,(SeExprlsp[-1]).first_column,BinaryOpNode,varNode,(SeExprvsp[-1].n),'^'); (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,AssignNode, (SeExprvsp[-3].s), opNode);free((SeExprvsp[-3].s));} #line 1887 "y.tab.c" break; case 38: /* assign: VAR ModEq e ';' */ #line 251 "@@PATH@@/src/KSeExpr/ExprParser.y" {KSeExpr::ExprNode* varNode=NODE1((SeExprlsp[-3]).first_column,(SeExprlsp[-3]).first_column,VarNode, (SeExprvsp[-3].s)); KSeExpr::ExprNode* opNode=NODE3((SeExprlsp[-1]).first_column,(SeExprlsp[-1]).first_column,BinaryOpNode,varNode,(SeExprvsp[-1].n),'%'); (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,AssignNode, (SeExprvsp[-3].s), opNode);free((SeExprvsp[-3].s));} #line 1895 "y.tab.c" break; case 39: /* assign: NAME '=' e ';' */ #line 254 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,AssignNode, (SeExprvsp[-3].s), (SeExprvsp[-1].n)); free((SeExprvsp[-3].s)); } #line 1901 "y.tab.c" break; case 40: /* assign: NAME AddEq e ';' */ #line 255 "@@PATH@@/src/KSeExpr/ExprParser.y" {KSeExpr::ExprNode* varNode=NODE1((SeExprlsp[-3]).first_column,(SeExprlsp[-3]).first_column,VarNode, (SeExprvsp[-3].s)); KSeExpr::ExprNode* opNode=NODE3((SeExprlsp[-1]).first_column,(SeExprlsp[-1]).first_column,BinaryOpNode,varNode,(SeExprvsp[-1].n),'+'); (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,AssignNode, (SeExprvsp[-3].s), opNode);free((SeExprvsp[-3].s));} #line 1909 "y.tab.c" break; case 41: /* assign: NAME SubEq e ';' */ #line 258 "@@PATH@@/src/KSeExpr/ExprParser.y" {KSeExpr::ExprNode* varNode=NODE1((SeExprlsp[-3]).first_column,(SeExprlsp[-3]).first_column,VarNode, (SeExprvsp[-3].s)); KSeExpr::ExprNode* opNode=NODE3((SeExprlsp[-1]).first_column,(SeExprlsp[-1]).first_column,BinaryOpNode,varNode,(SeExprvsp[-1].n),'-'); (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,AssignNode, (SeExprvsp[-3].s), opNode);free((SeExprvsp[-3].s));} #line 1917 "y.tab.c" break; case 42: /* assign: NAME MultEq e ';' */ #line 261 "@@PATH@@/src/KSeExpr/ExprParser.y" {KSeExpr::ExprNode* varNode=NODE1((SeExprlsp[-3]).first_column,(SeExprlsp[-3]).first_column,VarNode, (SeExprvsp[-3].s)); KSeExpr::ExprNode* opNode=NODE3((SeExprlsp[-1]).first_column,(SeExprlsp[-1]).first_column,BinaryOpNode,varNode,(SeExprvsp[-1].n),'*'); (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,AssignNode, (SeExprvsp[-3].s), opNode);free((SeExprvsp[-3].s));} #line 1925 "y.tab.c" break; case 43: /* assign: NAME DivEq e ';' */ #line 264 "@@PATH@@/src/KSeExpr/ExprParser.y" {KSeExpr::ExprNode* varNode=NODE1((SeExprlsp[-3]).first_column,(SeExprlsp[-3]).first_column,VarNode, (SeExprvsp[-3].s)); KSeExpr::ExprNode* opNode=NODE3((SeExprlsp[-1]).first_column,(SeExprlsp[-1]).first_column,BinaryOpNode,varNode,(SeExprvsp[-1].n),'/'); (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,AssignNode, (SeExprvsp[-3].s), opNode);free((SeExprvsp[-3].s));} #line 1933 "y.tab.c" break; case 44: /* assign: NAME ExpEq e ';' */ #line 267 "@@PATH@@/src/KSeExpr/ExprParser.y" {KSeExpr::ExprNode* varNode=NODE1((SeExprlsp[-3]).first_column,(SeExprlsp[-3]).first_column,VarNode, (SeExprvsp[-3].s)); KSeExpr::ExprNode* opNode=NODE3((SeExprlsp[-1]).first_column,(SeExprlsp[-1]).first_column,BinaryOpNode,varNode,(SeExprvsp[-1].n),'^'); (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,AssignNode, (SeExprvsp[-3].s), opNode);free((SeExprvsp[-3].s));} #line 1941 "y.tab.c" break; case 45: /* assign: NAME ModEq e ';' */ #line 270 "@@PATH@@/src/KSeExpr/ExprParser.y" {KSeExpr::ExprNode* varNode=NODE1((SeExprlsp[-3]).first_column,(SeExprlsp[-3]).first_column,VarNode, (SeExprvsp[-3].s)); KSeExpr::ExprNode* opNode=NODE3((SeExprlsp[-1]).first_column,(SeExprlsp[-1]).first_column,BinaryOpNode,varNode,(SeExprvsp[-1].n),'%'); (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,AssignNode, (SeExprvsp[-3].s), opNode);free((SeExprvsp[-3].s));} #line 1949 "y.tab.c" break; case 46: /* ifthenelse: IF '(' e ')' '{' optassigns '}' optelse */ #line 277 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE3((SeExprloc).first_column,(SeExprloc).last_column,IfThenElseNode, (SeExprvsp[-5].n), (SeExprvsp[-2].n), (SeExprvsp[0].n)); } #line 1955 "y.tab.c" break; case 47: /* optelse: %empty */ #line 281 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE((SeExprloc).first_column,(SeExprloc).last_column,Node); /* create empty node */ } #line 1961 "y.tab.c" break; case 48: /* optelse: ELSE '{' optassigns '}' */ #line 282 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = (SeExprvsp[-1].n); } #line 1967 "y.tab.c" break; case 49: /* optelse: ELSE ifthenelse */ #line 283 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = (SeExprvsp[0].n); } #line 1973 "y.tab.c" break; case 50: /* e: '(' e ')' */ #line 288 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = (SeExprvsp[-1].n); } #line 1979 "y.tab.c" break; case 51: /* e: '[' exprlist ']' */ #line 289 "@@PATH@@/src/KSeExpr/ExprParser.y" { KSeExpr::ExprNode* newNode = NODE((SeExprloc).first_column,(SeExprloc).last_column,VecNode); newNode->addChildren((SeExprvsp[-1].n)); Forget((SeExprvsp[-1].n)); (SeExprval.n)=newNode;} #line 1985 "y.tab.c" break; case 52: /* e: e '[' e ']' */ #line 290 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,SubscriptNode, (SeExprvsp[-3].n), (SeExprvsp[-1].n)); } #line 1991 "y.tab.c" break; case 53: /* e: e '?' e ':' e */ #line 291 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE3((SeExprloc).first_column,(SeExprloc).last_column,CondNode, (SeExprvsp[-4].n), (SeExprvsp[-2].n), (SeExprvsp[0].n)); } #line 1997 "y.tab.c" break; case 54: /* e: e OR e */ #line 292 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE3((SeExprloc).first_column,(SeExprloc).last_column,CompareNode, (SeExprvsp[-2].n), (SeExprvsp[0].n), '|'); } #line 2003 "y.tab.c" break; case 55: /* e: e AND e */ #line 293 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE3((SeExprloc).first_column,(SeExprloc).last_column,CompareNode, (SeExprvsp[-2].n), (SeExprvsp[0].n), '&'); } #line 2009 "y.tab.c" break; case 56: /* e: e EQ e */ #line 294 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE3((SeExprloc).first_column,(SeExprloc).last_column,CompareEqNode, (SeExprvsp[-2].n), (SeExprvsp[0].n),'='); } #line 2015 "y.tab.c" break; case 57: /* e: e NE e */ #line 295 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE3((SeExprloc).first_column,(SeExprloc).last_column,CompareEqNode, (SeExprvsp[-2].n), (SeExprvsp[0].n),'!'); } #line 2021 "y.tab.c" break; case 58: /* e: e '<' e */ #line 296 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE3((SeExprloc).first_column,(SeExprloc).last_column,CompareNode, (SeExprvsp[-2].n), (SeExprvsp[0].n),'<'); } #line 2027 "y.tab.c" break; case 59: /* e: e '>' e */ #line 297 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE3((SeExprloc).first_column,(SeExprloc).last_column,CompareNode, (SeExprvsp[-2].n), (SeExprvsp[0].n),'>'); } #line 2033 "y.tab.c" break; case 60: /* e: e SEEXPR_LE e */ #line 298 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE3((SeExprloc).first_column,(SeExprloc).last_column,CompareNode, (SeExprvsp[-2].n), (SeExprvsp[0].n),'l'); } #line 2039 "y.tab.c" break; case 61: /* e: e SEEXPR_GE e */ #line 299 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE3((SeExprloc).first_column,(SeExprloc).last_column,CompareNode, (SeExprvsp[-2].n), (SeExprvsp[0].n),'g'); } #line 2045 "y.tab.c" break; case 62: /* e: '+' e */ #line 300 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = (SeExprvsp[0].n); } #line 2051 "y.tab.c" break; case 63: /* e: '-' e */ #line 301 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,UnaryOpNode, (SeExprvsp[0].n), '-'); } #line 2057 "y.tab.c" break; case 64: /* e: '!' e */ #line 302 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,UnaryOpNode, (SeExprvsp[0].n), '!'); } #line 2063 "y.tab.c" break; case 65: /* e: '~' e */ #line 303 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE2((SeExprloc).first_column,(SeExprloc).last_column,UnaryOpNode, (SeExprvsp[0].n), '~'); } #line 2069 "y.tab.c" break; case 66: /* e: e '+' e */ #line 304 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE3((SeExprloc).first_column,(SeExprloc).last_column,BinaryOpNode, (SeExprvsp[-2].n), (SeExprvsp[0].n), '+'); } #line 2075 "y.tab.c" break; case 67: /* e: e '-' e */ #line 305 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE3((SeExprloc).first_column,(SeExprloc).last_column,BinaryOpNode, (SeExprvsp[-2].n), (SeExprvsp[0].n), '-'); } #line 2081 "y.tab.c" break; case 68: /* e: e '*' e */ #line 306 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE3((SeExprloc).first_column,(SeExprloc).last_column,BinaryOpNode, (SeExprvsp[-2].n), (SeExprvsp[0].n), '*'); } #line 2087 "y.tab.c" break; case 69: /* e: e '/' e */ #line 307 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE3((SeExprloc).first_column,(SeExprloc).last_column,BinaryOpNode, (SeExprvsp[-2].n), (SeExprvsp[0].n), '/'); } #line 2093 "y.tab.c" break; case 70: /* e: e '%' e */ #line 308 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE3((SeExprloc).first_column,(SeExprloc).last_column,BinaryOpNode, (SeExprvsp[-2].n), (SeExprvsp[0].n), '%'); } #line 2099 "y.tab.c" break; case 71: /* e: e '^' e */ #line 309 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE3((SeExprloc).first_column,(SeExprloc).last_column,BinaryOpNode, (SeExprvsp[-2].n), (SeExprvsp[0].n), '^'); } #line 2105 "y.tab.c" break; case 72: /* e: NAME '(' optargs ')' */ #line 310 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE1((SeExprloc).first_column,(SeExprloc).last_column,FuncNode, (SeExprvsp[-3].s)); free((SeExprvsp[-3].s)); // free name string // add args directly and discard arg list node (SeExprval.n)->addChildren((SeExprvsp[-1].n)); Forget((SeExprvsp[-1].n)); } #line 2114 "y.tab.c" break; case 73: /* e: e ARROW NAME '(' optargs ')' */ #line 315 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE1((SeExprloc).first_column,(SeExprloc).last_column,FuncNode, (SeExprvsp[-3].s)); free((SeExprvsp[-3].s)); // free name string (SeExprval.n)->addChild((SeExprvsp[-5].n)); // add args directly and discard arg list node (SeExprval.n)->addChildren((SeExprvsp[-1].n)); Forget((SeExprvsp[-1].n)); } #line 2124 "y.tab.c" break; case 74: /* e: VAR */ #line 320 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE1((SeExprloc).first_column,(SeExprloc).last_column,VarNode, (SeExprvsp[0].s)); free((SeExprvsp[0].s)); /* free name string */ } #line 2130 "y.tab.c" break; case 75: /* e: NAME */ #line 321 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE1((SeExprloc).first_column,(SeExprloc).last_column,VarNode, (SeExprvsp[0].s)); free((SeExprvsp[0].s)); /* free name string */ } #line 2136 "y.tab.c" break; case 76: /* e: NUMBER */ #line 322 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE1((SeExprloc).first_column,(SeExprloc).last_column,NumNode, (SeExprvsp[0].d)); /*printf("line %d",@$.last_column);*/} #line 2142 "y.tab.c" break; case 77: /* e: STR */ #line 323 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE1((SeExprloc).first_column,(SeExprloc).last_column,StrNode, (SeExprvsp[0].s)); free((SeExprvsp[0].s)); /* free string */} #line 2148 "y.tab.c" break; case 78: /* exprlist: e */ #line 327 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE1((SeExprloc).first_column,(SeExprloc).last_column,Node,(SeExprvsp[0].n)); } #line 2154 "y.tab.c" break; case 79: /* exprlist: exprlist ',' e */ #line 328 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = (SeExprvsp[-2].n); (SeExprvsp[-2].n)->addChild((SeExprvsp[0].n)); } #line 2161 "y.tab.c" break; case 80: /* optargs: %empty */ #line 334 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE((SeExprloc).first_column,(SeExprloc).last_column,Node); /* create empty node */} #line 2167 "y.tab.c" break; case 81: /* optargs: args */ #line 335 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = (SeExprvsp[0].n); } #line 2173 "y.tab.c" break; case 82: /* args: arg */ #line 340 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = NODE1((SeExprloc).first_column,(SeExprloc).last_column,Node, (SeExprvsp[0].n)); /* create arg list */} #line 2179 "y.tab.c" break; case 83: /* args: args ',' arg */ #line 341 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = (SeExprvsp[-2].n); (SeExprvsp[-2].n)->addChild((SeExprvsp[0].n)); /* add to list */} #line 2185 "y.tab.c" break; case 84: /* arg: e */ #line 345 "@@PATH@@/src/KSeExpr/ExprParser.y" { (SeExprval.n) = (SeExprvsp[0].n); } #line 2191 "y.tab.c" break; #line 2195 "y.tab.c" default: break; } /* User semantic actions sometimes alter SeExprchar, and that requires that SeExprtoken be updated with the new translation. We take the approach of translating immediately before every use of SeExprtoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes SeExprYYABORT, SeExprYYACCEPT, or SeExprYYERROR immediately after altering SeExprchar or if it invokes SeExprYYBACKUP. In the case of SeExprYYABORT or SeExprYYACCEPT, an incorrect destructor might then be invoked immediately. In the case of SeExprYYERROR or SeExprYYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ SeExprYY_SYMBOL_PRINT ("-> $$ =", SeExprYY_CAST (SeExprsymbol_kind_t, SeExprr1[SeExprn]), &SeExprval, &SeExprloc); SeExprYYPOPSTACK (SeExprlen); SeExprlen = 0; *++SeExprvsp = SeExprval; *++SeExprlsp = SeExprloc; /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ { const int SeExprlhs = SeExprr1[SeExprn] - SeExprYYNTOKENS; const int SeExpri = SeExprpgoto[SeExprlhs] + *SeExprssp; SeExprstate = (0 <= SeExpri && SeExpri <= SeExprYYLAST && SeExprcheck[SeExpri] == *SeExprssp ? SeExprtable[SeExpri] : SeExprdefgoto[SeExprlhs]); } goto SeExprnewstate; /*--------------------------------------. | SeExprerrlab -- here on detecting error. | `--------------------------------------*/ SeExprerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ SeExprtoken = SeExprchar == SeExprYYEMPTY ? SeExprYYSYMBOL_SeExprYYEMPTY : SeExprYYTRANSLATE (SeExprchar); /* If not already recovering from an error, report this error. */ if (!SeExprerrstatus) { ++SeExprnerrs; SeExprerror (SeExprYY_("syntax error")); } SeExprerror_range[1] = SeExprlloc; if (SeExprerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (SeExprchar <= SeExprYYEOF) { /* Return failure if at end of input. */ if (SeExprchar == SeExprYYEOF) SeExprYYABORT; } else { SeExprdestruct ("Error: discarding", SeExprtoken, &SeExprlval, &SeExprlloc); SeExprchar = SeExprYYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto SeExprerrlab1; /*---------------------------------------------------. | SeExprerrorlab -- error raised explicitly by SeExprYYERROR. | `---------------------------------------------------*/ SeExprerrorlab: /* Pacify compilers when the user code never invokes SeExprYYERROR and the label SeExprerrorlab therefore never appears in user code. */ if (0) SeExprYYERROR; /* Do not reclaim the symbols of the rule whose action triggered this SeExprYYERROR. */ SeExprYYPOPSTACK (SeExprlen); SeExprlen = 0; SeExprYY_STACK_PRINT (SeExprss, SeExprssp); SeExprstate = *SeExprssp; goto SeExprerrlab1; /*-------------------------------------------------------------. | SeExprerrlab1 -- common code for both syntax error and SeExprYYERROR. | `-------------------------------------------------------------*/ SeExprerrlab1: SeExprerrstatus = 3; /* Each real token shifted decrements this. */ /* Pop stack until we find a state that shifts the error token. */ for (;;) { SeExprn = SeExprpact[SeExprstate]; if (!SeExprpact_value_is_default (SeExprn)) { SeExprn += SeExprYYSYMBOL_SeExprYYerror; if (0 <= SeExprn && SeExprn <= SeExprYYLAST && SeExprcheck[SeExprn] == SeExprYYSYMBOL_SeExprYYerror) { SeExprn = SeExprtable[SeExprn]; if (0 < SeExprn) break; } } /* Pop the current state because it cannot handle the error token. */ if (SeExprssp == SeExprss) SeExprYYABORT; SeExprerror_range[1] = *SeExprlsp; SeExprdestruct ("Error: popping", SeExprYY_ACCESSING_SYMBOL (SeExprstate), SeExprvsp, SeExprlsp); SeExprYYPOPSTACK (1); SeExprstate = *SeExprssp; SeExprYY_STACK_PRINT (SeExprss, SeExprssp); } SeExprYY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++SeExprvsp = SeExprlval; SeExprYY_IGNORE_MAYBE_UNINITIALIZED_END SeExprerror_range[2] = SeExprlloc; ++SeExprlsp; SeExprYYLLOC_DEFAULT (*SeExprlsp, SeExprerror_range, 2); /* Shift the error token. */ SeExprYY_SYMBOL_PRINT ("Shifting", SeExprYY_ACCESSING_SYMBOL (SeExprn), SeExprvsp, SeExprlsp); SeExprstate = SeExprn; goto SeExprnewstate; /*-------------------------------------. | SeExpracceptlab -- SeExprYYACCEPT comes here. | `-------------------------------------*/ SeExpracceptlab: SeExprresult = 0; goto SeExprreturn; /*-----------------------------------. | SeExprabortlab -- SeExprYYABORT comes here. | `-----------------------------------*/ SeExprabortlab: SeExprresult = 1; goto SeExprreturn; #if !defined SeExproverflow /*-------------------------------------------------. | SeExprexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ SeExprexhaustedlab: SeExprerror (SeExprYY_("memory exhausted")); SeExprresult = 2; goto SeExprreturn; #endif /*-------------------------------------------------------. | SeExprreturn -- parsing is finished, clean up and return. | `-------------------------------------------------------*/ SeExprreturn: if (SeExprchar != SeExprYYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ SeExprtoken = SeExprYYTRANSLATE (SeExprchar); SeExprdestruct ("Cleanup: discarding lookahead", SeExprtoken, &SeExprlval, &SeExprlloc); } /* Do not reclaim the symbols of the rule whose action triggered this SeExprYYABORT or SeExprYYACCEPT. */ SeExprYYPOPSTACK (SeExprlen); SeExprYY_STACK_PRINT (SeExprss, SeExprssp); while (SeExprssp != SeExprss) { SeExprdestruct ("Cleanup: popping", SeExprYY_ACCESSING_SYMBOL (+*SeExprssp), SeExprvsp, SeExprlsp); SeExprYYPOPSTACK (1); } #ifndef SeExproverflow if (SeExprss != SeExprssa) SeExprYYSTACK_FREE (SeExprss); #endif return SeExprresult; } #line 348 "@@PATH@@/src/KSeExpr/ExprParser.y" /* SeExprerror - Report an error. This is called by the parser. (Note: the "msg" param is useless as it is usually just "parse error". so it's ignored.) */ static void SeExprerror(const char* /*msg*/) { // find start of line containing error int pos = SeExprpos(), lineno = 1, start = 0, end = strlen(ParseStr); for (int i = start; i < pos; i++) if (ParseStr[i] == '\n') { start = i + 1; lineno++; } // find end of line containing error for (int i = end; i > pos; i--) if (ParseStr[i] == '\n') { end = i - 1; } ParseErrorCode = SeExprtext[0] ? KSeExpr::ErrorCode::SyntaxError : KSeExpr::ErrorCode::UnexpectedEndOfExpression; ParseErrorId = ""; int s = std::max(start, pos-30); int e = std::min(end, pos+30); if (s != start) ParseErrorId += "..."; ParseErrorId += std::string(ParseStr, s, e-s+1); if (e != end) ParseErrorId += "..."; } /* CallParser - This is our entrypoint from the rest of the expr library. A string is passed in and a parse tree is returned. If the tree is null, an error string is returned. Any flags set during parsing are passed along. */ extern void SeExprLexerResetState(std::vector >& comments); static std::mutex mutex; namespace KSeExpr { bool ExprParse(KSeExpr::ExprNode*& parseTree, KSeExpr::ErrorCode& errorCode, std::vector& errorIds, int& errorStart, int& errorEnd, std::vector >& comments, const KSeExpr::Expression* expr, const char* str, bool) { std::lock_guard locker(mutex); // glue around crippled C interface - ugh! Expr = expr; ParseStr = str; SeExprLexerResetState(comments); SeExpr_buffer_state* buffer = SeExpr_scan_string(str); ParseResult = 0; int resultCode = SeExprparse(); SeExpr_delete_buffer(buffer); if (resultCode == 0) { // success errorCode = ErrorCode::None; errorIds = {}; parseTree = ParseResult; } else { // failure errorCode = ParseErrorCode; errorIds = { ParseErrorId }; errorStart=SeExprlloc.first_column; errorEnd=SeExprlloc.last_column; parseTree = nullptr; // gather list of nodes with no parent std::vector delnodes; std::vector::iterator iter; for (iter = ParseNodes.begin(); iter != ParseNodes.end(); iter++) { if (!(*iter)->parent()) { delnodes.push_back(*iter); } } // now delete them (they will delete their own children) for (iter = delnodes.begin(); iter != delnodes.end(); iter++) { delete *iter; } } ParseNodes.clear(); return parseTree != nullptr; } } kseexpr-4.0.4.0/generated/KSeExpr/ExprParser.tab.h0000644000000000000240000001165614156102631021642 0ustar00rootroot00000000000000/* A Bison parser, made by GNU Bison 3.7.6. */ /* Bison interface for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. 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 3 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, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, especially those whose name start with SeExprYY_ or SeExpr_. They are private implementation details that can be changed or removed. */ #ifndef SeExprYY_SEEXPR_Y_TAB_H_INCLUDED # define SeExprYY_SEEXPR_Y_TAB_H_INCLUDED /* Debug traces. */ #ifndef SeExprYYDEBUG # define SeExprYYDEBUG 0 #endif #if SeExprYYDEBUG extern int SeExprdebug; #endif /* Token kinds. */ #ifndef SeExprYYTOKENTYPE # define SeExprYYTOKENTYPE enum SeExprtokentype { SeExprYYEMPTY = -2, SeExprYYEOF = 0, /* "end of file" */ SeExprYYerror = 256, /* error */ SeExprYYUNDEF = 257, /* "invalid token" */ IF = 258, /* IF */ ELSE = 259, /* ELSE */ EXTERN = 260, /* EXTERN */ DEF = 261, /* DEF */ FLOATPOINT = 262, /* FLOATPOINT */ STRING = 263, /* STRING */ NAME = 264, /* NAME */ VAR = 265, /* VAR */ STR = 266, /* STR */ NUMBER = 267, /* NUMBER */ LIFETIME_CONSTANT = 268, /* LIFETIME_CONSTANT */ LIFETIME_UNIFORM = 269, /* LIFETIME_UNIFORM */ LIFETIME_VARYING = 270, /* LIFETIME_VARYING */ LIFETIME_ERROR = 271, /* LIFETIME_ERROR */ AddEq = 272, /* AddEq */ SubEq = 273, /* SubEq */ MultEq = 274, /* MultEq */ DivEq = 275, /* DivEq */ ExpEq = 276, /* ExpEq */ ModEq = 277, /* ModEq */ ARROW = 278, /* ARROW */ OR = 279, /* OR */ AND = 280, /* AND */ EQ = 281, /* EQ */ NE = 282, /* NE */ SEEXPR_LE = 283, /* SEEXPR_LE */ SEEXPR_GE = 284, /* SEEXPR_GE */ UNARY = 285 /* UNARY */ }; typedef enum SeExprtokentype SeExprtoken_kind_t; #endif /* Value type. */ #if ! defined SeExprYYSTYPE && ! defined SeExprYYSTYPE_IS_DECLARED union SeExprYYSTYPE { #line 66 "@@PATH@@/src/KSeExpr/ExprParser.y" KSeExpr::ExprNode* n; /* a node is returned for all non-terminals to build the parse tree from the leaves up. */ double d; // return value for number tokens char* s; /* return value for name tokens. Note: the string is allocated with strdup() in the lexer and must be freed with free() */ struct { KSeExpr::ExprType::Type type; int dim; KSeExpr::ExprType::Lifetime lifetime; } t; // return value for types KSeExpr::ExprType::Lifetime l; // return value for lifetime qualifiers #line 109 "y.tab.h" }; typedef union SeExprYYSTYPE SeExprYYSTYPE; # define SeExprYYSTYPE_IS_TRIVIAL 1 # define SeExprYYSTYPE_IS_DECLARED 1 #endif /* Location type. */ #if ! defined SeExprYYLTYPE && ! defined SeExprYYLTYPE_IS_DECLARED typedef struct SeExprYYLTYPE SeExprYYLTYPE; struct SeExprYYLTYPE { int first_line; int first_column; int last_line; int last_column; }; # define SeExprYYLTYPE_IS_DECLARED 1 # define SeExprYYLTYPE_IS_TRIVIAL 1 #endif extern SeExprYYSTYPE SeExprlval; extern SeExprYYLTYPE SeExprlloc; int SeExprparse (void); #endif /* !SeExprYY_SEEXPR_Y_TAB_H_INCLUDED */ kseexpr-4.0.4.0/generated/KSeExpr/ExprParserLex.cpp0000644000000000000240000017131714156102631022102 0ustar00rootroot00000000000000#line 1 "ExprParserLexIn.cpp" #line 3 "ExprParserLexIn.cpp" #define SeExprYY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define SeExprYY_FLEX_MAJOR_VERSION 2 #define SeExprYY_FLEX_MINOR_VERSION 6 #define SeExprYY_FLEX_SUBMINOR_VERSION 4 #if SeExprYY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #ifndef SIZE_MAX #define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* begin standard C++ headers. */ /* TODO: this is always defined, so inline it */ #define SeExprconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define SeExprnoreturn __attribute__((__noreturn__)) #else #define SeExprnoreturn #endif /* Returned upon end-of-file. */ #define SeExprYY_NULL 0 /* Promotes a possibly negative, possibly signed char to an * integer in range [0..255] for use as an array index. */ #define SeExprYY_SC_TO_UI(c) ((SeExprYY_CHAR) (c)) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (SeExpr_start) = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The SeExprYYSTATE alias is for lex * compatibility. */ #define SeExprYY_START (((SeExpr_start) - 1) / 2) #define SeExprYYSTATE SeExprYY_START /* Action number for EOF rule of a given start state. */ #define SeExprYY_STATE_EOF(state) (SeExprYY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define SeExprYY_NEW_FILE SeExprrestart( SeExprin ) #define SeExprYY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef SeExprYY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, SeExprYY_BUF_SIZE is 2*SeExprYY_READ_BUF_SIZE in the general case. * Ditto for the __ia64__ case accordingly. */ #define SeExprYY_BUF_SIZE 32768 #else #define SeExprYY_BUF_SIZE 16384 #endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define SeExprYY_STATE_BUF_SIZE ((SeExprYY_BUF_SIZE + 2) * sizeof(SeExpr_state_type)) #ifndef SeExprYY_TYPEDEF_SeExprYY_BUFFER_STATE #define SeExprYY_TYPEDEF_SeExprYY_BUFFER_STATE typedef struct SeExpr_buffer_state *SeExprYY_BUFFER_STATE; #endif #ifndef SeExprYY_TYPEDEF_SeExprYY_SIZE_T #define SeExprYY_TYPEDEF_SeExprYY_SIZE_T typedef size_t SeExpr_size_t; #endif extern int SeExprleng; extern FILE *SeExprin, *SeExprout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define SeExprYY_LESS_LINENO(n) #define SeExprYY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define SeExprless(n) \ do \ { \ /* Undo effects of setting up SeExprtext. */ \ int SeExprless_macro_arg = (n); \ SeExprYY_LESS_LINENO(SeExprless_macro_arg);\ *SeExpr_cp = (SeExpr_hold_char); \ SeExprYY_RESTORE_SeExprYY_MORE_OFFSET \ (SeExpr_c_buf_p) = SeExpr_cp = SeExpr_bp + SeExprless_macro_arg - SeExprYY_MORE_ADJ; \ SeExprYY_DO_BEFORE_ACTION; /* set up SeExprtext again */ \ } \ while ( 0 ) #define unput(c) SeExprunput( c, (SeExprtext_ptr) ) #ifndef SeExprYY_STRUCT_SeExprYY_BUFFER_STATE #define SeExprYY_STRUCT_SeExprYY_BUFFER_STATE struct SeExpr_buffer_state { FILE *SeExpr_input_file; char *SeExpr_ch_buf; /* input buffer */ char *SeExpr_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ int SeExpr_buf_size; /* Number of characters read into SeExpr_ch_buf, not including EOB * characters. */ int SeExpr_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int SeExpr_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int SeExpr_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int SeExpr_at_bol; int SeExpr_bs_lineno; /**< The line count. */ int SeExpr_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int SeExpr_fill_buffer; int SeExpr_buffer_status; #define SeExprYY_BUFFER_NEW 0 #define SeExprYY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as SeExprYY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via SeExprrestart()), so that the user can continue scanning by * just pointing SeExprin at a new input file. */ #define SeExprYY_BUFFER_EOF_PENDING 2 }; #endif /* !SeExprYY_STRUCT_SeExprYY_BUFFER_STATE */ /* Stack of input buffers. */ static size_t SeExpr_buffer_stack_top = 0; /**< index of top of stack. */ static size_t SeExpr_buffer_stack_max = 0; /**< capacity of stack. */ static SeExprYY_BUFFER_STATE * SeExpr_buffer_stack = NULL; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define SeExprYY_CURRENT_BUFFER ( (SeExpr_buffer_stack) \ ? (SeExpr_buffer_stack)[(SeExpr_buffer_stack_top)] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define SeExprYY_CURRENT_BUFFER_LVALUE (SeExpr_buffer_stack)[(SeExpr_buffer_stack_top)] /* SeExpr_hold_char holds the character lost when SeExprtext is formed. */ static char SeExpr_hold_char; static int SeExpr_n_chars; /* number of characters read into SeExpr_ch_buf */ int SeExprleng; /* Points to current character in buffer. */ static char *SeExpr_c_buf_p = NULL; static int SeExpr_init = 0; /* whether we need to initialize */ static int SeExpr_start = 0; /* start state number */ /* Flag which is used to allow SeExprwrap()'s to do buffer switches * instead of setting up a fresh SeExprin. A bit of a hack ... */ static int SeExpr_did_buffer_switch_on_eof; void SeExprrestart ( FILE *input_file ); void SeExpr_switch_to_buffer ( SeExprYY_BUFFER_STATE new_buffer ); SeExprYY_BUFFER_STATE SeExpr_create_buffer ( FILE *file, int size ); void SeExpr_delete_buffer ( SeExprYY_BUFFER_STATE b ); void SeExpr_flush_buffer ( SeExprYY_BUFFER_STATE b ); void SeExprpush_buffer_state ( SeExprYY_BUFFER_STATE new_buffer ); void SeExprpop_buffer_state ( void ); static void SeExprensure_buffer_stack ( void ); static void SeExpr_load_buffer_state ( void ); static void SeExpr_init_buffer ( SeExprYY_BUFFER_STATE b, FILE *file ); #define SeExprYY_FLUSH_BUFFER SeExpr_flush_buffer( SeExprYY_CURRENT_BUFFER ) SeExprYY_BUFFER_STATE SeExpr_scan_buffer ( char *base, SeExpr_size_t size ); SeExprYY_BUFFER_STATE SeExpr_scan_string ( const char *SeExpr_str ); SeExprYY_BUFFER_STATE SeExpr_scan_bytes ( const char *bytes, int len ); void *SeExpralloc ( SeExpr_size_t ); void *SeExprrealloc ( void *, SeExpr_size_t ); void SeExprfree ( void * ); #define SeExpr_new_buffer SeExpr_create_buffer #define SeExpr_set_interactive(is_interactive) \ { \ if ( ! SeExprYY_CURRENT_BUFFER ){ \ SeExprensure_buffer_stack (); \ SeExprYY_CURRENT_BUFFER_LVALUE = \ SeExpr_create_buffer( SeExprin, SeExprYY_BUF_SIZE ); \ } \ SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_is_interactive = is_interactive; \ } #define SeExpr_set_bol(at_bol) \ { \ if ( ! SeExprYY_CURRENT_BUFFER ){\ SeExprensure_buffer_stack (); \ SeExprYY_CURRENT_BUFFER_LVALUE = \ SeExpr_create_buffer( SeExprin, SeExprYY_BUF_SIZE ); \ } \ SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_at_bol = at_bol; \ } #define SeExprYY_AT_BOL() (SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_at_bol) /* Begin user sect3 */ #define SeExprwrap() (/*CONSTCOND*/1) #define SeExprYY_SKIP_SeExprYYWRAP typedef flex_uint8_t SeExprYY_CHAR; FILE *SeExprin = NULL, *SeExprout = NULL; typedef int SeExpr_state_type; extern int SeExprlineno; int SeExprlineno = 1; extern char *SeExprtext; #ifdef SeExprtext_ptr #undef SeExprtext_ptr #endif #define SeExprtext_ptr SeExprtext static SeExpr_state_type SeExpr_get_previous_state ( void ); static SeExpr_state_type SeExpr_try_NUL_trans ( SeExpr_state_type current_state ); static int SeExpr_get_next_buffer ( void ); static void SeExprnoreturn SeExpr_fatal_error ( const char* msg ); /* Done after the current pattern has been matched and before the * corresponding action - sets up SeExprtext. */ #define SeExprYY_DO_BEFORE_ACTION \ (SeExprtext_ptr) = SeExpr_bp; \ SeExprleng = (int) (SeExpr_cp - SeExpr_bp); \ (SeExpr_hold_char) = *SeExpr_cp; \ *SeExpr_cp = '\0'; \ (SeExpr_c_buf_p) = SeExpr_cp; #define SeExprYY_NUM_RULES 42 #define SeExprYY_END_OF_BUFFER 43 /* This struct is not used in this scanner, but its presence is necessary. */ struct SeExpr_trans_info { flex_int32_t SeExpr_verify; flex_int32_t SeExpr_nxt; }; static const flex_int16_t SeExpr_accept[160] = { 0, 0, 0, 43, 41, 39, 39, 41, 41, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 31, 41, 41, 41, 36, 36, 36, 26, 36, 36, 36, 36, 36, 41, 41, 36, 36, 36, 36, 36, 36, 36, 41, 15, 0, 32, 0, 40, 0, 34, 23, 13, 0, 33, 0, 21, 19, 20, 18, 31, 22, 31, 31, 0, 16, 14, 17, 36, 36, 36, 36, 36, 25, 36, 36, 36, 37, 38, 24, 36, 36, 36, 36, 36, 10, 36, 36, 12, 32, 34, 0, 33, 0, 31, 0, 0, 31, 36, 36, 36, 36, 36, 36, 36, 30, 3, 36, 36, 36, 36, 36, 0, 0, 31, 0, 0, 31, 36, 36, 36, 36, 36, 36, 36, 11, 36, 36, 36, 36, 35, 0, 31, 36, 36, 9, 4, 36, 36, 36, 36, 36, 36, 36, 35, 36, 36, 5, 36, 36, 2, 36, 27, 28, 1, 36, 7, 8, 36, 6, 29, 0 } ; static const SeExprYY_CHAR SeExpr_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 5, 6, 7, 8, 9, 10, 1, 1, 11, 12, 1, 13, 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 1, 1, 23, 24, 25, 26, 27, 28, 29, 26, 30, 26, 26, 31, 32, 33, 34, 35, 26, 36, 37, 38, 39, 40, 26, 26, 41, 26, 1, 42, 1, 43, 26, 1, 44, 45, 26, 46, 47, 48, 49, 50, 51, 26, 26, 52, 53, 54, 55, 26, 26, 56, 57, 58, 59, 26, 26, 60, 26, 26, 1, 61, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static const SeExprYY_CHAR SeExpr_meta[62] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 3, 4, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1 } ; static const flex_int16_t SeExpr_base[168] = { 0, 0, 0, 245, 246, 246, 246, 223, 57, 201, 0, 221, 232, 53, 219, 218, 43, 50, 217, 54, 216, 215, 214, 0, 207, 199, 196, 200, 200, 191, 195, 204, 15, 205, 170, 177, 20, 179, 174, 170, 167, 158, 246, 69, 246, 70, 176, 163, 198, 246, 246, 66, 246, 67, 246, 246, 246, 246, 66, 246, 69, 73, 90, 246, 246, 246, 0, 186, 181, 177, 178, 0, 175, 180, 173, 246, 246, 246, 148, 159, 149, 147, 145, 0, 149, 147, 246, 73, 183, 182, 81, 105, 108, 114, 81, 88, 169, 161, 163, 173, 165, 166, 152, 0, 0, 145, 144, 133, 142, 133, 0, 112, 116, 124, 122, 126, 154, 148, 149, 146, 150, 148, 151, 0, 124, 121, 128, 109, 0, 128, 130, 146, 134, 0, 0, 125, 117, 119, 97, 99, 93, 98, 0, 115, 86, 0, 82, 81, 0, 50, 0, 0, 246, 54, 0, 0, 34, 0, 0, 246, 155, 160, 79, 165, 168, 171, 74, 174 } ; static const flex_int16_t SeExpr_def[168] = { 0, 159, 1, 159, 159, 159, 159, 159, 160, 161, 162, 159, 159, 163, 159, 159, 159, 159, 159, 159, 159, 159, 159, 164, 164, 164, 164, 164, 164, 164, 164, 164, 159, 159, 164, 164, 164, 164, 164, 164, 164, 159, 159, 160, 159, 160, 161, 161, 165, 159, 159, 163, 159, 163, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 164, 164, 164, 164, 164, 164, 164, 164, 164, 159, 159, 159, 164, 164, 164, 164, 164, 164, 164, 164, 159, 160, 165, 159, 163, 159, 159, 159, 159, 159, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 166, 159, 159, 159, 159, 159, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 167, 159, 159, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 167, 164, 164, 164, 164, 164, 164, 164, 164, 164, 159, 164, 164, 164, 164, 164, 164, 0, 159, 159, 159, 159, 159, 159, 159, 159 } ; static const flex_int16_t SeExpr_nxt[308] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 4, 4, 20, 21, 22, 23, 24, 25, 23, 26, 27, 23, 23, 23, 23, 23, 23, 28, 23, 29, 23, 30, 31, 23, 32, 33, 23, 34, 35, 36, 23, 37, 23, 38, 39, 23, 23, 23, 23, 40, 23, 23, 23, 41, 44, 52, 56, 57, 58, 58, 60, 75, 61, 61, 80, 76, 44, 87, 52, 90, 44, 128, 81, 62, 58, 58, 48, 92, 92, 60, 158, 61, 61, 52, 157, 91, 156, 53, 93, 95, 95, 45, 62, 62, 94, 94, 95, 95, 95, 95, 53, 53, 155, 45, 45, 91, 154, 45, 93, 111, 111, 153, 62, 112, 112, 53, 92, 92, 114, 114, 112, 112, 115, 115, 112, 112, 152, 113, 129, 129, 115, 115, 130, 130, 115, 115, 130, 130, 130, 130, 151, 150, 149, 148, 147, 146, 145, 113, 43, 144, 43, 43, 43, 46, 143, 46, 46, 46, 51, 141, 51, 51, 51, 66, 140, 66, 88, 88, 88, 142, 139, 142, 138, 137, 136, 135, 134, 133, 132, 131, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 110, 89, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 89, 159, 47, 86, 85, 84, 83, 82, 79, 78, 77, 74, 73, 72, 71, 70, 69, 68, 67, 65, 64, 63, 59, 55, 54, 50, 49, 47, 42, 159, 3, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159 } ; static const flex_int16_t SeExpr_chk[308] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 13, 16, 16, 17, 17, 19, 32, 19, 19, 36, 32, 43, 45, 51, 53, 87, 166, 36, 19, 58, 58, 162, 60, 60, 61, 156, 61, 61, 90, 153, 58, 149, 13, 60, 94, 94, 8, 61, 19, 62, 62, 95, 95, 62, 62, 51, 53, 147, 43, 45, 58, 146, 87, 60, 91, 91, 144, 61, 91, 91, 90, 92, 92, 93, 93, 111, 111, 93, 93, 112, 112, 143, 92, 113, 113, 114, 114, 113, 113, 115, 115, 129, 129, 130, 130, 141, 140, 139, 138, 137, 136, 135, 92, 160, 132, 160, 160, 160, 161, 131, 161, 161, 161, 163, 127, 163, 163, 163, 164, 126, 164, 165, 165, 165, 167, 125, 167, 124, 122, 121, 120, 119, 118, 117, 116, 109, 108, 107, 106, 105, 102, 101, 100, 99, 98, 97, 96, 89, 88, 85, 84, 82, 81, 80, 79, 78, 74, 73, 72, 70, 69, 68, 67, 48, 47, 46, 41, 40, 39, 38, 37, 35, 34, 33, 31, 30, 29, 28, 27, 26, 25, 24, 22, 21, 20, 18, 15, 14, 12, 11, 9, 7, 3, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159 } ; static SeExpr_state_type SeExpr_last_accepting_state; static char *SeExpr_last_accepting_cpos; extern int SeExpr_flex_debug; int SeExpr_flex_debug = 0; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define SeExprmore() SeExprmore_used_but_not_detected #define SeExprYY_MORE_ADJ 0 #define SeExprYY_RESTORE_SeExprYY_MORE_OFFSET char *SeExprtext; #line 1 "@@PATH@@/src/KSeExpr/ExprParserLex.l" /** * SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. * SPDX-License-Identifier: LicenseRef-Apache-2.0 * SPDX-FileCopyrightText: 2020-2021 L. E. Segovia * SPDX-License-Identifier: GPL-3.0-or-later */ /* Don't generate SeExprwrap since everything is in one string */ /* Don't generate unput since it's unused and gcc complains... */ /* Don't generate input since it's unused too -- amyspark */ #define SeExprYY_NO_INPUT 1 /* Don't worry about interactive and using isatty(). Fixes Windows compile. */ #line 18 "@@PATH@@/src/KSeExpr/ExprParserLex.l" #include #include #include #include // If c++11 don't use register designator, lex and yacc need to go... #if __cplusplus > 199711L #define register // Deprecated in C++11. #endif // #if __cplusplus > 199711L #include "ExprParser.h" #include "ExprNode.h" #include "Expression.h" #include "Utils.h" #ifdef SEEXPR_WIN32 # define SeExprYY_NO_UNISTD_H # define SeExprYY_SKIP_SeExprYYWRAP #endif #ifndef MAKEDEPEND # include "ExprParser.tab.h" #endif // TODO: make this thread safe static int columnNumber=0; // really buffer position static int lineNumber=0; // not used std::vector >* comments=0; //! For lexer's internal use only! void SeExprLexerResetState(std::vector >& commentsIn){ comments=&commentsIn; columnNumber=lineNumber=0; } int SeExprpos(); #define SeExprYY_USER_ACTION { \ SeExprlloc.first_line=lineNumber;SeExprlloc.first_column=columnNumber; \ columnNumber+=SeExprleng;\ SeExprlloc.last_column=columnNumber;SeExprlloc.last_line=lineNumber;} #line 619 "ExprParserLexIn.cpp" #line 620 "ExprParserLexIn.cpp" #define INITIAL 0 #ifndef SeExprYY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef SeExprYY_EXTRA_TYPE #define SeExprYY_EXTRA_TYPE void * #endif static int SeExpr_init_globals ( void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int SeExprlex_destroy ( void ); int SeExprget_debug ( void ); void SeExprset_debug ( int debug_flag ); SeExprYY_EXTRA_TYPE SeExprget_extra ( void ); void SeExprset_extra ( SeExprYY_EXTRA_TYPE user_defined ); FILE *SeExprget_in ( void ); void SeExprset_in ( FILE * _in_str ); FILE *SeExprget_out ( void ); void SeExprset_out ( FILE * _out_str ); int SeExprget_leng ( void ); char *SeExprget_text ( void ); int SeExprget_lineno ( void ); void SeExprset_lineno ( int _line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef SeExprYY_SKIP_SeExprYYWRAP #ifdef __cplusplus extern "C" int SeExprwrap ( void ); #else extern int SeExprwrap ( void ); #endif #endif #ifndef SeExprYY_NO_UNPUT #endif #ifndef SeExprtext_ptr static void SeExpr_flex_strncpy ( char *, const char *, int ); #endif #ifdef SeExprYY_NEED_STRLEN static int SeExpr_flex_strlen ( const char * ); #endif #ifndef SeExprYY_NO_INPUT #ifdef __cplusplus static int SeExprinput ( void ); #else static int input ( void ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef SeExprYY_READ_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k */ #define SeExprYY_READ_BUF_SIZE 16384 #else #define SeExprYY_READ_BUF_SIZE 8192 #endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO do { if (fwrite( SeExprtext, (size_t) SeExprleng, 1, SeExprout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or SeExprYY_NULL, * is returned in "result". */ #ifndef SeExprYY_INPUT #define SeExprYY_INPUT(buf,result,max_size) \ if ( SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_is_interactive ) \ { \ int c = '*'; \ int n; \ for ( n = 0; n < max_size && \ (c = getc( SeExprin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( SeExprin ) ) \ SeExprYY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = (int) fread(buf, 1, (SeExpr_size_t) max_size, SeExprin)) == 0 && ferror(SeExprin)) \ { \ if( errno != EINTR) \ { \ SeExprYY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(SeExprin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "SeExprterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef SeExprterminate #define SeExprterminate() return SeExprYY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef SeExprYY_START_STACK_INCR #define SeExprYY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef SeExprYY_FATAL_ERROR #define SeExprYY_FATAL_ERROR(msg) SeExpr_fatal_error( msg ) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef SeExprYY_DECL #define SeExprYY_DECL_IS_OURS 1 extern int SeExprlex (void); #define SeExprYY_DECL int SeExprlex (void) #endif /* !SeExprYY_DECL */ /* Code executed at the beginning of each rule, after SeExprtext and SeExprleng * have been set up. */ #ifndef SeExprYY_USER_ACTION #define SeExprYY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef SeExprYY_BREAK #define SeExprYY_BREAK /*LINTED*/break; #endif #define SeExprYY_RULE_SETUP \ SeExprYY_USER_ACTION /** The main scanner function which does all the work. */ SeExprYY_DECL { SeExpr_state_type SeExpr_current_state; char *SeExpr_cp, *SeExpr_bp; int SeExpr_act; if ( !(SeExpr_init) ) { (SeExpr_init) = 1; #ifdef SeExprYY_USER_INIT SeExprYY_USER_INIT; #endif if ( ! (SeExpr_start) ) (SeExpr_start) = 1; /* first start state */ if ( ! SeExprin ) SeExprin = stdin; if ( ! SeExprout ) SeExprout = stdout; if ( ! SeExprYY_CURRENT_BUFFER ) { SeExprensure_buffer_stack (); SeExprYY_CURRENT_BUFFER_LVALUE = SeExpr_create_buffer( SeExprin, SeExprYY_BUF_SIZE ); } SeExpr_load_buffer_state( ); } { #line 66 "@@PATH@@/src/KSeExpr/ExprParserLex.l" #line 837 "ExprParserLexIn.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { SeExpr_cp = (SeExpr_c_buf_p); /* Support of SeExprtext. */ *SeExpr_cp = (SeExpr_hold_char); /* SeExpr_bp points to the position in SeExpr_ch_buf of the start of * the current run. */ SeExpr_bp = SeExpr_cp; SeExpr_current_state = (SeExpr_start); SeExpr_match: do { SeExprYY_CHAR SeExpr_c = SeExpr_ec[SeExprYY_SC_TO_UI(*SeExpr_cp)] ; if ( SeExpr_accept[SeExpr_current_state] ) { (SeExpr_last_accepting_state) = SeExpr_current_state; (SeExpr_last_accepting_cpos) = SeExpr_cp; } while ( SeExpr_chk[SeExpr_base[SeExpr_current_state] + SeExpr_c] != SeExpr_current_state ) { SeExpr_current_state = (int) SeExpr_def[SeExpr_current_state]; if ( SeExpr_current_state >= 160 ) SeExpr_c = SeExpr_meta[SeExpr_c]; } SeExpr_current_state = SeExpr_nxt[SeExpr_base[SeExpr_current_state] + SeExpr_c]; ++SeExpr_cp; } while ( SeExpr_current_state != 159 ); SeExpr_cp = (SeExpr_last_accepting_cpos); SeExpr_current_state = (SeExpr_last_accepting_state); SeExpr_find_action: SeExpr_act = SeExpr_accept[SeExpr_current_state]; SeExprYY_DO_BEFORE_ACTION; do_action: /* This label is used only to access EOF actions. */ switch ( SeExpr_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of SeExprYY_DO_BEFORE_ACTION */ *SeExpr_cp = (SeExpr_hold_char); SeExpr_cp = (SeExpr_last_accepting_cpos); SeExpr_current_state = (SeExpr_last_accepting_state); goto SeExpr_find_action; case 1: SeExprYY_RULE_SETUP #line 67 "@@PATH@@/src/KSeExpr/ExprParserLex.l" SeExprYY_BREAK case 2: SeExprYY_RULE_SETUP #line 69 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return EXTERN; } SeExprYY_BREAK case 3: SeExprYY_RULE_SETUP #line 70 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return DEF; } SeExprYY_BREAK case 4: SeExprYY_RULE_SETUP #line 71 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return FLOATPOINT; } SeExprYY_BREAK case 5: SeExprYY_RULE_SETUP #line 72 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return STRING; } SeExprYY_BREAK case 6: SeExprYY_RULE_SETUP #line 73 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return LIFETIME_CONSTANT; } SeExprYY_BREAK case 7: SeExprYY_RULE_SETUP #line 74 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return LIFETIME_UNIFORM; } SeExprYY_BREAK case 8: SeExprYY_RULE_SETUP #line 75 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return LIFETIME_VARYING; } SeExprYY_BREAK case 9: SeExprYY_RULE_SETUP #line 76 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return LIFETIME_ERROR; } SeExprYY_BREAK case 10: SeExprYY_RULE_SETUP #line 78 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return IF; } SeExprYY_BREAK case 11: SeExprYY_RULE_SETUP #line 79 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return ELSE; } SeExprYY_BREAK case 12: SeExprYY_RULE_SETUP #line 81 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return OR; } SeExprYY_BREAK case 13: SeExprYY_RULE_SETUP #line 82 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return AND; } SeExprYY_BREAK case 14: SeExprYY_RULE_SETUP #line 83 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return EQ; } SeExprYY_BREAK case 15: SeExprYY_RULE_SETUP #line 84 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return NE; } SeExprYY_BREAK case 16: SeExprYY_RULE_SETUP #line 85 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return SEEXPR_LE; } SeExprYY_BREAK case 17: SeExprYY_RULE_SETUP #line 86 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return SEEXPR_GE; } SeExprYY_BREAK case 18: SeExprYY_RULE_SETUP #line 87 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return ARROW; } SeExprYY_BREAK case 19: SeExprYY_RULE_SETUP #line 88 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return AddEq; } SeExprYY_BREAK case 20: SeExprYY_RULE_SETUP #line 89 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return SubEq; } SeExprYY_BREAK case 21: SeExprYY_RULE_SETUP #line 90 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return MultEq; } SeExprYY_BREAK case 22: SeExprYY_RULE_SETUP #line 91 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return DivEq; } SeExprYY_BREAK case 23: SeExprYY_RULE_SETUP #line 92 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return ModEq; } SeExprYY_BREAK case 24: SeExprYY_RULE_SETUP #line 93 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return ExpEq; } SeExprYY_BREAK case 25: SeExprYY_RULE_SETUP #line 95 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { SeExprlval.d = M_PI; return NUMBER; } SeExprYY_BREAK case 26: SeExprYY_RULE_SETUP #line 96 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { SeExprlval.d = M_E; return NUMBER; } SeExprYY_BREAK case 27: SeExprYY_RULE_SETUP #line 97 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { SeExprlval.d = 0; return NUMBER; } SeExprYY_BREAK case 28: SeExprYY_RULE_SETUP #line 98 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { SeExprlval.d = 1; return NUMBER; } SeExprYY_BREAK case 29: SeExprYY_RULE_SETUP #line 99 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { SeExprlval.d = 2; return NUMBER; } SeExprYY_BREAK case 30: SeExprYY_RULE_SETUP #line 100 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { SeExprlval.d = 3; return NUMBER; } SeExprYY_BREAK case 31: SeExprYY_RULE_SETUP #line 102 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { SeExprlval.d = KSeExpr::Utils::atof(SeExprtext); return NUMBER; } SeExprYY_BREAK case 32: SeExprYY_RULE_SETUP #line 103 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { /* match quoted string, allow embedded quote, \" */ SeExprlval.s = strdup(&SeExprtext[1]); SeExprlval.s[strlen(SeExprlval.s)-1] = '\0'; return STR; } SeExprYY_BREAK case 33: SeExprYY_RULE_SETUP #line 107 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { /* match quoted string, allow embedded quote, \' */ SeExprlval.s = strdup(&SeExprtext[1]); SeExprlval.s[strlen(SeExprlval.s)-1] = '\0'; return STR; } SeExprYY_BREAK case 34: SeExprYY_RULE_SETUP #line 111 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { SeExprlval.s = strdup(&SeExprtext[1]); return VAR; } SeExprYY_BREAK case 35: SeExprYY_RULE_SETUP #line 112 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { SeExprlval.s = strdup(&SeExprtext[1]); return VAR; } SeExprYY_BREAK case 36: SeExprYY_RULE_SETUP #line 113 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { SeExprlval.s = strdup(SeExprtext); return NAME; } SeExprYY_BREAK case 37: SeExprYY_RULE_SETUP #line 115 "@@PATH@@/src/KSeExpr/ExprParserLex.l" /* ignore quoted newline */; SeExprYY_BREAK case 38: SeExprYY_RULE_SETUP #line 116 "@@PATH@@/src/KSeExpr/ExprParserLex.l" /* ignore quoted tab */; SeExprYY_BREAK case 39: /* rule 39 can match eol */ SeExprYY_RULE_SETUP #line 117 "@@PATH@@/src/KSeExpr/ExprParserLex.l" /* ignore whitespace */; SeExprYY_BREAK case 40: SeExprYY_RULE_SETUP #line 118 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { /* match comment */ int startPos=SeExprpos(),endPos=SeExprpos()+strlen(&SeExprtext[1])+1; comments->push_back(std::pair(startPos,endPos));} SeExprYY_BREAK case 41: SeExprYY_RULE_SETUP #line 122 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return SeExprtext[0]; } SeExprYY_BREAK case 42: SeExprYY_RULE_SETUP #line 124 "@@PATH@@/src/KSeExpr/ExprParserLex.l" ECHO; SeExprYY_BREAK #line 1109 "ExprParserLexIn.cpp" case SeExprYY_STATE_EOF(INITIAL): SeExprterminate(); case SeExprYY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int SeExpr_amount_of_matched_text = (int) (SeExpr_cp - (SeExprtext_ptr)) - 1; /* Undo the effects of SeExprYY_DO_BEFORE_ACTION. */ *SeExpr_cp = (SeExpr_hold_char); SeExprYY_RESTORE_SeExprYY_MORE_OFFSET if ( SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_buffer_status == SeExprYY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed SeExprin at a new source and called * SeExprlex(). If so, then we have to assure * consistency between SeExprYY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (SeExpr_n_chars) = SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_n_chars; SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_input_file = SeExprin; SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_buffer_status = SeExprYY_BUFFER_NORMAL; } /* Note that here we test for SeExpr_c_buf_p "<=" to the position * of the first EOB in the buffer, since SeExpr_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( (SeExpr_c_buf_p) <= &SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_ch_buf[(SeExpr_n_chars)] ) { /* This was really a NUL. */ SeExpr_state_type SeExpr_next_state; (SeExpr_c_buf_p) = (SeExprtext_ptr) + SeExpr_amount_of_matched_text; SeExpr_current_state = SeExpr_get_previous_state( ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * SeExpr_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ SeExpr_next_state = SeExpr_try_NUL_trans( SeExpr_current_state ); SeExpr_bp = (SeExprtext_ptr) + SeExprYY_MORE_ADJ; if ( SeExpr_next_state ) { /* Consume the NUL. */ SeExpr_cp = ++(SeExpr_c_buf_p); SeExpr_current_state = SeExpr_next_state; goto SeExpr_match; } else { SeExpr_cp = (SeExpr_last_accepting_cpos); SeExpr_current_state = (SeExpr_last_accepting_state); goto SeExpr_find_action; } } else switch ( SeExpr_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { (SeExpr_did_buffer_switch_on_eof) = 0; if ( SeExprwrap( ) ) { /* Note: because we've taken care in * SeExpr_get_next_buffer() to have set up * SeExprtext, we can now set up * SeExpr_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * SeExprYY_NULL, it'll still work - another * SeExprYY_NULL will get returned. */ (SeExpr_c_buf_p) = (SeExprtext_ptr) + SeExprYY_MORE_ADJ; SeExpr_act = SeExprYY_STATE_EOF(SeExprYY_START); goto do_action; } else { if ( ! (SeExpr_did_buffer_switch_on_eof) ) SeExprYY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: (SeExpr_c_buf_p) = (SeExprtext_ptr) + SeExpr_amount_of_matched_text; SeExpr_current_state = SeExpr_get_previous_state( ); SeExpr_cp = (SeExpr_c_buf_p); SeExpr_bp = (SeExprtext_ptr) + SeExprYY_MORE_ADJ; goto SeExpr_match; case EOB_ACT_LAST_MATCH: (SeExpr_c_buf_p) = &SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_ch_buf[(SeExpr_n_chars)]; SeExpr_current_state = SeExpr_get_previous_state( ); SeExpr_cp = (SeExpr_c_buf_p); SeExpr_bp = (SeExprtext_ptr) + SeExprYY_MORE_ADJ; goto SeExpr_find_action; } break; } default: SeExprYY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of SeExprlex */ /* SeExpr_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int SeExpr_get_next_buffer (void) { char *dest = SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_ch_buf; char *source = (SeExprtext_ptr); int number_to_move, i; int ret_val; if ( (SeExpr_c_buf_p) > &SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_ch_buf[(SeExpr_n_chars) + 1] ) SeExprYY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( (SeExpr_c_buf_p) - (SeExprtext_ptr) - SeExprYY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) ((SeExpr_c_buf_p) - (SeExprtext_ptr) - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_buffer_status == SeExprYY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_n_chars = (SeExpr_n_chars) = 0; else { int num_to_read = SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ SeExprYY_BUFFER_STATE b = SeExprYY_CURRENT_BUFFER_LVALUE; int SeExpr_c_buf_p_offset = (int) ((SeExpr_c_buf_p) - b->SeExpr_ch_buf); if ( b->SeExpr_is_our_buffer ) { int new_size = b->SeExpr_buf_size * 2; if ( new_size <= 0 ) b->SeExpr_buf_size += b->SeExpr_buf_size / 8; else b->SeExpr_buf_size *= 2; b->SeExpr_ch_buf = (char *) /* Include room in for 2 EOB chars. */ SeExprrealloc( (void *) b->SeExpr_ch_buf, (SeExpr_size_t) (b->SeExpr_buf_size + 2) ); } else /* Can't grow it, we don't own it. */ b->SeExpr_ch_buf = NULL; if ( ! b->SeExpr_ch_buf ) SeExprYY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); (SeExpr_c_buf_p) = &b->SeExpr_ch_buf[SeExpr_c_buf_p_offset]; num_to_read = SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_buf_size - number_to_move - 1; } if ( num_to_read > SeExprYY_READ_BUF_SIZE ) num_to_read = SeExprYY_READ_BUF_SIZE; /* Read in more data. */ SeExprYY_INPUT( (&SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_ch_buf[number_to_move]), (SeExpr_n_chars), num_to_read ); SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_n_chars = (SeExpr_n_chars); } if ( (SeExpr_n_chars) == 0 ) { if ( number_to_move == SeExprYY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; SeExprrestart( SeExprin ); } else { ret_val = EOB_ACT_LAST_MATCH; SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_buffer_status = SeExprYY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if (((SeExpr_n_chars) + number_to_move) > SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = (SeExpr_n_chars) + number_to_move + ((SeExpr_n_chars) >> 1); SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_ch_buf = (char *) SeExprrealloc( (void *) SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_ch_buf, (SeExpr_size_t) new_size ); if ( ! SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_ch_buf ) SeExprYY_FATAL_ERROR( "out of dynamic memory in SeExpr_get_next_buffer()" ); /* "- 2" to take care of EOB's */ SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_buf_size = (int) (new_size - 2); } (SeExpr_n_chars) += number_to_move; SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_ch_buf[(SeExpr_n_chars)] = SeExprYY_END_OF_BUFFER_CHAR; SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_ch_buf[(SeExpr_n_chars) + 1] = SeExprYY_END_OF_BUFFER_CHAR; (SeExprtext_ptr) = &SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_ch_buf[0]; return ret_val; } /* SeExpr_get_previous_state - get the state just before the EOB char was reached */ static SeExpr_state_type SeExpr_get_previous_state (void) { SeExpr_state_type SeExpr_current_state; char *SeExpr_cp; SeExpr_current_state = (SeExpr_start); for ( SeExpr_cp = (SeExprtext_ptr) + SeExprYY_MORE_ADJ; SeExpr_cp < (SeExpr_c_buf_p); ++SeExpr_cp ) { SeExprYY_CHAR SeExpr_c = (*SeExpr_cp ? SeExpr_ec[SeExprYY_SC_TO_UI(*SeExpr_cp)] : 1); if ( SeExpr_accept[SeExpr_current_state] ) { (SeExpr_last_accepting_state) = SeExpr_current_state; (SeExpr_last_accepting_cpos) = SeExpr_cp; } while ( SeExpr_chk[SeExpr_base[SeExpr_current_state] + SeExpr_c] != SeExpr_current_state ) { SeExpr_current_state = (int) SeExpr_def[SeExpr_current_state]; if ( SeExpr_current_state >= 160 ) SeExpr_c = SeExpr_meta[SeExpr_c]; } SeExpr_current_state = SeExpr_nxt[SeExpr_base[SeExpr_current_state] + SeExpr_c]; } return SeExpr_current_state; } /* SeExpr_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = SeExpr_try_NUL_trans( current_state ); */ static SeExpr_state_type SeExpr_try_NUL_trans (SeExpr_state_type SeExpr_current_state ) { int SeExpr_is_jam; char *SeExpr_cp = (SeExpr_c_buf_p); SeExprYY_CHAR SeExpr_c = 1; if ( SeExpr_accept[SeExpr_current_state] ) { (SeExpr_last_accepting_state) = SeExpr_current_state; (SeExpr_last_accepting_cpos) = SeExpr_cp; } while ( SeExpr_chk[SeExpr_base[SeExpr_current_state] + SeExpr_c] != SeExpr_current_state ) { SeExpr_current_state = (int) SeExpr_def[SeExpr_current_state]; if ( SeExpr_current_state >= 160 ) SeExpr_c = SeExpr_meta[SeExpr_c]; } SeExpr_current_state = SeExpr_nxt[SeExpr_base[SeExpr_current_state] + SeExpr_c]; SeExpr_is_jam = (SeExpr_current_state == 159); return SeExpr_is_jam ? 0 : SeExpr_current_state; } #ifndef SeExprYY_NO_UNPUT #endif #ifndef SeExprYY_NO_INPUT #ifdef __cplusplus static int SeExprinput (void) #else static int input (void) #endif { int c; *(SeExpr_c_buf_p) = (SeExpr_hold_char); if ( *(SeExpr_c_buf_p) == SeExprYY_END_OF_BUFFER_CHAR ) { /* SeExpr_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( (SeExpr_c_buf_p) < &SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_ch_buf[(SeExpr_n_chars)] ) /* This was really a NUL. */ *(SeExpr_c_buf_p) = '\0'; else { /* need more input */ int offset = (int) ((SeExpr_c_buf_p) - (SeExprtext_ptr)); ++(SeExpr_c_buf_p); switch ( SeExpr_get_next_buffer( ) ) { case EOB_ACT_LAST_MATCH: /* This happens because SeExpr_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ SeExprrestart( SeExprin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( SeExprwrap( ) ) return 0; if ( ! (SeExpr_did_buffer_switch_on_eof) ) SeExprYY_NEW_FILE; #ifdef __cplusplus return SeExprinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: (SeExpr_c_buf_p) = (SeExprtext_ptr) + offset; break; } } } c = *(unsigned char *) (SeExpr_c_buf_p); /* cast for 8-bit char's */ *(SeExpr_c_buf_p) = '\0'; /* preserve SeExprtext */ (SeExpr_hold_char) = *++(SeExpr_c_buf_p); return c; } #endif /* ifndef SeExprYY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * * @note This function does not reset the start condition to @c INITIAL . */ void SeExprrestart (FILE * input_file ) { if ( ! SeExprYY_CURRENT_BUFFER ){ SeExprensure_buffer_stack (); SeExprYY_CURRENT_BUFFER_LVALUE = SeExpr_create_buffer( SeExprin, SeExprYY_BUF_SIZE ); } SeExpr_init_buffer( SeExprYY_CURRENT_BUFFER, input_file ); SeExpr_load_buffer_state( ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ void SeExpr_switch_to_buffer (SeExprYY_BUFFER_STATE new_buffer ) { /* TODO. We should be able to replace this entire function body * with * SeExprpop_buffer_state(); * SeExprpush_buffer_state(new_buffer); */ SeExprensure_buffer_stack (); if ( SeExprYY_CURRENT_BUFFER == new_buffer ) return; if ( SeExprYY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(SeExpr_c_buf_p) = (SeExpr_hold_char); SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_buf_pos = (SeExpr_c_buf_p); SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_n_chars = (SeExpr_n_chars); } SeExprYY_CURRENT_BUFFER_LVALUE = new_buffer; SeExpr_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (SeExprwrap()) processing, but the only time this flag * is looked at is after SeExprwrap() is called, so it's safe * to go ahead and always set it. */ (SeExpr_did_buffer_switch_on_eof) = 1; } static void SeExpr_load_buffer_state (void) { (SeExpr_n_chars) = SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_n_chars; (SeExprtext_ptr) = (SeExpr_c_buf_p) = SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_buf_pos; SeExprin = SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_input_file; (SeExpr_hold_char) = *(SeExpr_c_buf_p); } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c SeExprYY_BUF_SIZE. * * @return the allocated buffer state. */ SeExprYY_BUFFER_STATE SeExpr_create_buffer (FILE * file, int size ) { SeExprYY_BUFFER_STATE b; b = (SeExprYY_BUFFER_STATE) SeExpralloc( sizeof( struct SeExpr_buffer_state ) ); if ( ! b ) SeExprYY_FATAL_ERROR( "out of dynamic memory in SeExpr_create_buffer()" ); b->SeExpr_buf_size = size; /* SeExpr_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->SeExpr_ch_buf = (char *) SeExpralloc( (SeExpr_size_t) (b->SeExpr_buf_size + 2) ); if ( ! b->SeExpr_ch_buf ) SeExprYY_FATAL_ERROR( "out of dynamic memory in SeExpr_create_buffer()" ); b->SeExpr_is_our_buffer = 1; SeExpr_init_buffer( b, file ); return b; } /** Destroy the buffer. * @param b a buffer created with SeExpr_create_buffer() * */ void SeExpr_delete_buffer (SeExprYY_BUFFER_STATE b ) { if ( ! b ) return; if ( b == SeExprYY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ SeExprYY_CURRENT_BUFFER_LVALUE = (SeExprYY_BUFFER_STATE) 0; if ( b->SeExpr_is_our_buffer ) SeExprfree( (void *) b->SeExpr_ch_buf ); SeExprfree( (void *) b ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a SeExprrestart() or at EOF. */ static void SeExpr_init_buffer (SeExprYY_BUFFER_STATE b, FILE * file ) { int oerrno = errno; SeExpr_flush_buffer( b ); b->SeExpr_input_file = file; b->SeExpr_fill_buffer = 1; /* If b is the current buffer, then SeExpr_init_buffer was _probably_ * called from SeExprrestart() or through SeExpr_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != SeExprYY_CURRENT_BUFFER){ b->SeExpr_bs_lineno = 1; b->SeExpr_bs_column = 0; } b->SeExpr_is_interactive = 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, SeExprYY_INPUT will be called. * @param b the buffer state to be flushed, usually @c SeExprYY_CURRENT_BUFFER. * */ void SeExpr_flush_buffer (SeExprYY_BUFFER_STATE b ) { if ( ! b ) return; b->SeExpr_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->SeExpr_ch_buf[0] = SeExprYY_END_OF_BUFFER_CHAR; b->SeExpr_ch_buf[1] = SeExprYY_END_OF_BUFFER_CHAR; b->SeExpr_buf_pos = &b->SeExpr_ch_buf[0]; b->SeExpr_at_bol = 1; b->SeExpr_buffer_status = SeExprYY_BUFFER_NEW; if ( b == SeExprYY_CURRENT_BUFFER ) SeExpr_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * */ void SeExprpush_buffer_state (SeExprYY_BUFFER_STATE new_buffer ) { if (new_buffer == NULL) return; SeExprensure_buffer_stack(); /* This block is copied from SeExpr_switch_to_buffer. */ if ( SeExprYY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(SeExpr_c_buf_p) = (SeExpr_hold_char); SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_buf_pos = (SeExpr_c_buf_p); SeExprYY_CURRENT_BUFFER_LVALUE->SeExpr_n_chars = (SeExpr_n_chars); } /* Only push if top exists. Otherwise, replace top. */ if (SeExprYY_CURRENT_BUFFER) (SeExpr_buffer_stack_top)++; SeExprYY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from SeExpr_switch_to_buffer. */ SeExpr_load_buffer_state( ); (SeExpr_did_buffer_switch_on_eof) = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * */ void SeExprpop_buffer_state (void) { if (!SeExprYY_CURRENT_BUFFER) return; SeExpr_delete_buffer(SeExprYY_CURRENT_BUFFER ); SeExprYY_CURRENT_BUFFER_LVALUE = NULL; if ((SeExpr_buffer_stack_top) > 0) --(SeExpr_buffer_stack_top); if (SeExprYY_CURRENT_BUFFER) { SeExpr_load_buffer_state( ); (SeExpr_did_buffer_switch_on_eof) = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void SeExprensure_buffer_stack (void) { SeExpr_size_t num_to_alloc; if (!(SeExpr_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ (SeExpr_buffer_stack) = (struct SeExpr_buffer_state**)SeExpralloc (num_to_alloc * sizeof(struct SeExpr_buffer_state*) ); if ( ! (SeExpr_buffer_stack) ) SeExprYY_FATAL_ERROR( "out of dynamic memory in SeExprensure_buffer_stack()" ); memset((SeExpr_buffer_stack), 0, num_to_alloc * sizeof(struct SeExpr_buffer_state*)); (SeExpr_buffer_stack_max) = num_to_alloc; (SeExpr_buffer_stack_top) = 0; return; } if ((SeExpr_buffer_stack_top) >= ((SeExpr_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ SeExpr_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = (SeExpr_buffer_stack_max) + grow_size; (SeExpr_buffer_stack) = (struct SeExpr_buffer_state**)SeExprrealloc ((SeExpr_buffer_stack), num_to_alloc * sizeof(struct SeExpr_buffer_state*) ); if ( ! (SeExpr_buffer_stack) ) SeExprYY_FATAL_ERROR( "out of dynamic memory in SeExprensure_buffer_stack()" ); /* zero only the new slots.*/ memset((SeExpr_buffer_stack) + (SeExpr_buffer_stack_max), 0, grow_size * sizeof(struct SeExpr_buffer_state*)); (SeExpr_buffer_stack_max) = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * * @return the newly allocated buffer state object. */ SeExprYY_BUFFER_STATE SeExpr_scan_buffer (char * base, SeExpr_size_t size ) { SeExprYY_BUFFER_STATE b; if ( size < 2 || base[size-2] != SeExprYY_END_OF_BUFFER_CHAR || base[size-1] != SeExprYY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (SeExprYY_BUFFER_STATE) SeExpralloc( sizeof( struct SeExpr_buffer_state ) ); if ( ! b ) SeExprYY_FATAL_ERROR( "out of dynamic memory in SeExpr_scan_buffer()" ); b->SeExpr_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->SeExpr_buf_pos = b->SeExpr_ch_buf = base; b->SeExpr_is_our_buffer = 0; b->SeExpr_input_file = NULL; b->SeExpr_n_chars = b->SeExpr_buf_size; b->SeExpr_is_interactive = 0; b->SeExpr_at_bol = 1; b->SeExpr_fill_buffer = 0; b->SeExpr_buffer_status = SeExprYY_BUFFER_NEW; SeExpr_switch_to_buffer( b ); return b; } /** Setup the input buffer state to scan a string. The next call to SeExprlex() will * scan from a @e copy of @a str. * @param SeExprstr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * SeExpr_scan_bytes() instead. */ SeExprYY_BUFFER_STATE SeExpr_scan_string (const char * SeExprstr ) { return SeExpr_scan_bytes( SeExprstr, (int) strlen(SeExprstr) ); } /** Setup the input buffer state to scan the given bytes. The next call to SeExprlex() will * scan from a @e copy of @a bytes. * @param SeExprbytes the byte buffer to scan * @param _SeExprbytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ SeExprYY_BUFFER_STATE SeExpr_scan_bytes (const char * SeExprbytes, int _SeExprbytes_len ) { SeExprYY_BUFFER_STATE b; char *buf; SeExpr_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (SeExpr_size_t) (_SeExprbytes_len + 2); buf = (char *) SeExpralloc( n ); if ( ! buf ) SeExprYY_FATAL_ERROR( "out of dynamic memory in SeExpr_scan_bytes()" ); for ( i = 0; i < _SeExprbytes_len; ++i ) buf[i] = SeExprbytes[i]; buf[_SeExprbytes_len] = buf[_SeExprbytes_len+1] = SeExprYY_END_OF_BUFFER_CHAR; b = SeExpr_scan_buffer( buf, n ); if ( ! b ) SeExprYY_FATAL_ERROR( "bad buffer in SeExpr_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->SeExpr_is_our_buffer = 1; return b; } #ifndef SeExprYY_EXIT_FAILURE #define SeExprYY_EXIT_FAILURE 2 #endif static void SeExprnoreturn SeExpr_fatal_error (const char* msg ) { fprintf( stderr, "%s\n", msg ); exit( SeExprYY_EXIT_FAILURE ); } /* Redefine SeExprless() so it works in section 3 code. */ #undef SeExprless #define SeExprless(n) \ do \ { \ /* Undo effects of setting up SeExprtext. */ \ int SeExprless_macro_arg = (n); \ SeExprYY_LESS_LINENO(SeExprless_macro_arg);\ SeExprtext[SeExprleng] = (SeExpr_hold_char); \ (SeExpr_c_buf_p) = SeExprtext + SeExprless_macro_arg; \ (SeExpr_hold_char) = *(SeExpr_c_buf_p); \ *(SeExpr_c_buf_p) = '\0'; \ SeExprleng = SeExprless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. * */ int SeExprget_lineno (void) { return SeExprlineno; } /** Get the input stream. * */ FILE *SeExprget_in (void) { return SeExprin; } /** Get the output stream. * */ FILE *SeExprget_out (void) { return SeExprout; } /** Get the length of the current token. * */ int SeExprget_leng (void) { return SeExprleng; } /** Get the current token. * */ char *SeExprget_text (void) { return SeExprtext; } /** Set the current line number. * @param _line_number line number * */ void SeExprset_lineno (int _line_number ) { SeExprlineno = _line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * * @see SeExpr_switch_to_buffer */ void SeExprset_in (FILE * _in_str ) { SeExprin = _in_str ; } void SeExprset_out (FILE * _out_str ) { SeExprout = _out_str ; } int SeExprget_debug (void) { return SeExpr_flex_debug; } void SeExprset_debug (int _bdebug ) { SeExpr_flex_debug = _bdebug ; } static int SeExpr_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. * This function is called from SeExprlex_destroy(), so don't allocate here. */ (SeExpr_buffer_stack) = NULL; (SeExpr_buffer_stack_top) = 0; (SeExpr_buffer_stack_max) = 0; (SeExpr_c_buf_p) = NULL; (SeExpr_init) = 0; (SeExpr_start) = 0; /* Defined in main.c */ #ifdef SeExprYY_STDINIT SeExprin = stdin; SeExprout = stdout; #else SeExprin = NULL; SeExprout = NULL; #endif /* For future reference: Set errno on error, since we are called by * SeExprlex_init() */ return 0; } /* SeExprlex_destroy is for both reentrant and non-reentrant scanners. */ int SeExprlex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(SeExprYY_CURRENT_BUFFER){ SeExpr_delete_buffer( SeExprYY_CURRENT_BUFFER ); SeExprYY_CURRENT_BUFFER_LVALUE = NULL; SeExprpop_buffer_state(); } /* Destroy the stack itself. */ SeExprfree((SeExpr_buffer_stack) ); (SeExpr_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * SeExprlex() is called, initialization will occur. */ SeExpr_init_globals( ); return 0; } /* * Internal utility routines. */ #ifndef SeExprtext_ptr static void SeExpr_flex_strncpy (char* s1, const char * s2, int n ) { int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef SeExprYY_NEED_STRLEN static int SeExpr_flex_strlen (const char * s ) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *SeExpralloc (SeExpr_size_t size ) { return malloc(size); } void *SeExprrealloc (void * ptr, SeExpr_size_t size ) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void SeExprfree (void * ptr ) { free( (char *) ptr ); /* see SeExprrealloc() for (char *) cast */ } #define SeExprYYTABLES_NAME "SeExprtables" #line 124 "@@PATH@@/src/KSeExpr/ExprParserLex.l" /* Gets index of current token (corresponding to SeExprtext). Used for error reporting. */ int SeExprpos() { return SeExpr_c_buf_p - SeExprYY_CURRENT_BUFFER->SeExpr_ch_buf - SeExprleng; } kseexpr-4.0.4.0/generated/KSeExpr/ExprParserLexIn.cpp0000644000000000000240000015724514156102631022375 0ustar00rootroot00000000000000#line 1 "ExprParserLexIn.cpp" #line 3 "ExprParserLexIn.cpp" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 #define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #ifndef SIZE_MAX #define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* begin standard C++ headers. */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an * integer in range [0..255] for use as an array index. */ #define YY_SC_TO_UI(c) ((YY_CHAR) (c)) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart( yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. * Ditto for the __ia64__ case accordingly. */ #define YY_BUF_SIZE 32768 #else #define YY_BUF_SIZE 16384 #endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif extern int yyleng; extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ int yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; static int yy_n_chars; /* number of characters read into yy_ch_buf */ int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = NULL; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ /* Flag which is used to allow yywrap()'s to do buffer switches * instead of setting up a fresh yyin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; void yyrestart ( FILE *input_file ); void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); void yy_delete_buffer ( YY_BUFFER_STATE b ); void yy_flush_buffer ( YY_BUFFER_STATE b ); void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); void yypop_buffer_state ( void ); static void yyensure_buffer_stack ( void ); static void yy_load_buffer_state ( void ); static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); void *yyalloc ( yy_size_t ); void *yyrealloc ( void *, yy_size_t ); void yyfree ( void * ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ #define yywrap() (/*CONSTCOND*/1) #define YY_SKIP_YYWRAP typedef flex_uint8_t YY_CHAR; FILE *yyin = NULL, *yyout = NULL; typedef int yy_state_type; extern int yylineno; int yylineno = 1; extern char *yytext; #ifdef yytext_ptr #undef yytext_ptr #endif #define yytext_ptr yytext static yy_state_type yy_get_previous_state ( void ); static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); static int yy_get_next_buffer ( void ); static void yynoreturn yy_fatal_error ( const char* msg ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; #define YY_NUM_RULES 42 #define YY_END_OF_BUFFER 43 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static const flex_int16_t yy_accept[160] = { 0, 0, 0, 43, 41, 39, 39, 41, 41, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 31, 41, 41, 41, 36, 36, 36, 26, 36, 36, 36, 36, 36, 41, 41, 36, 36, 36, 36, 36, 36, 36, 41, 15, 0, 32, 0, 40, 0, 34, 23, 13, 0, 33, 0, 21, 19, 20, 18, 31, 22, 31, 31, 0, 16, 14, 17, 36, 36, 36, 36, 36, 25, 36, 36, 36, 37, 38, 24, 36, 36, 36, 36, 36, 10, 36, 36, 12, 32, 34, 0, 33, 0, 31, 0, 0, 31, 36, 36, 36, 36, 36, 36, 36, 30, 3, 36, 36, 36, 36, 36, 0, 0, 31, 0, 0, 31, 36, 36, 36, 36, 36, 36, 36, 11, 36, 36, 36, 36, 35, 0, 31, 36, 36, 9, 4, 36, 36, 36, 36, 36, 36, 36, 35, 36, 36, 5, 36, 36, 2, 36, 27, 28, 1, 36, 7, 8, 36, 6, 29, 0 } ; static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 5, 6, 7, 8, 9, 10, 1, 1, 11, 12, 1, 13, 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 1, 1, 23, 24, 25, 26, 27, 28, 29, 26, 30, 26, 26, 31, 32, 33, 34, 35, 26, 36, 37, 38, 39, 40, 26, 26, 41, 26, 1, 42, 1, 43, 26, 1, 44, 45, 26, 46, 47, 48, 49, 50, 51, 26, 26, 52, 53, 54, 55, 26, 26, 56, 57, 58, 59, 26, 26, 60, 26, 26, 1, 61, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static const YY_CHAR yy_meta[62] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 3, 4, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1 } ; static const flex_int16_t yy_base[168] = { 0, 0, 0, 245, 246, 246, 246, 223, 57, 201, 0, 221, 232, 53, 219, 218, 43, 50, 217, 54, 216, 215, 214, 0, 207, 199, 196, 200, 200, 191, 195, 204, 15, 205, 170, 177, 20, 179, 174, 170, 167, 158, 246, 69, 246, 70, 176, 163, 198, 246, 246, 66, 246, 67, 246, 246, 246, 246, 66, 246, 69, 73, 90, 246, 246, 246, 0, 186, 181, 177, 178, 0, 175, 180, 173, 246, 246, 246, 148, 159, 149, 147, 145, 0, 149, 147, 246, 73, 183, 182, 81, 105, 108, 114, 81, 88, 169, 161, 163, 173, 165, 166, 152, 0, 0, 145, 144, 133, 142, 133, 0, 112, 116, 124, 122, 126, 154, 148, 149, 146, 150, 148, 151, 0, 124, 121, 128, 109, 0, 128, 130, 146, 134, 0, 0, 125, 117, 119, 97, 99, 93, 98, 0, 115, 86, 0, 82, 81, 0, 50, 0, 0, 246, 54, 0, 0, 34, 0, 0, 246, 155, 160, 79, 165, 168, 171, 74, 174 } ; static const flex_int16_t yy_def[168] = { 0, 159, 1, 159, 159, 159, 159, 159, 160, 161, 162, 159, 159, 163, 159, 159, 159, 159, 159, 159, 159, 159, 159, 164, 164, 164, 164, 164, 164, 164, 164, 164, 159, 159, 164, 164, 164, 164, 164, 164, 164, 159, 159, 160, 159, 160, 161, 161, 165, 159, 159, 163, 159, 163, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 164, 164, 164, 164, 164, 164, 164, 164, 164, 159, 159, 159, 164, 164, 164, 164, 164, 164, 164, 164, 159, 160, 165, 159, 163, 159, 159, 159, 159, 159, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 166, 159, 159, 159, 159, 159, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 167, 159, 159, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 167, 164, 164, 164, 164, 164, 164, 164, 164, 164, 159, 164, 164, 164, 164, 164, 164, 0, 159, 159, 159, 159, 159, 159, 159, 159 } ; static const flex_int16_t yy_nxt[308] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 4, 4, 20, 21, 22, 23, 24, 25, 23, 26, 27, 23, 23, 23, 23, 23, 23, 28, 23, 29, 23, 30, 31, 23, 32, 33, 23, 34, 35, 36, 23, 37, 23, 38, 39, 23, 23, 23, 23, 40, 23, 23, 23, 41, 44, 52, 56, 57, 58, 58, 60, 75, 61, 61, 80, 76, 44, 87, 52, 90, 44, 128, 81, 62, 58, 58, 48, 92, 92, 60, 158, 61, 61, 52, 157, 91, 156, 53, 93, 95, 95, 45, 62, 62, 94, 94, 95, 95, 95, 95, 53, 53, 155, 45, 45, 91, 154, 45, 93, 111, 111, 153, 62, 112, 112, 53, 92, 92, 114, 114, 112, 112, 115, 115, 112, 112, 152, 113, 129, 129, 115, 115, 130, 130, 115, 115, 130, 130, 130, 130, 151, 150, 149, 148, 147, 146, 145, 113, 43, 144, 43, 43, 43, 46, 143, 46, 46, 46, 51, 141, 51, 51, 51, 66, 140, 66, 88, 88, 88, 142, 139, 142, 138, 137, 136, 135, 134, 133, 132, 131, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 110, 89, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 89, 159, 47, 86, 85, 84, 83, 82, 79, 78, 77, 74, 73, 72, 71, 70, 69, 68, 67, 65, 64, 63, 59, 55, 54, 50, 49, 47, 42, 159, 3, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159 } ; static const flex_int16_t yy_chk[308] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 13, 16, 16, 17, 17, 19, 32, 19, 19, 36, 32, 43, 45, 51, 53, 87, 166, 36, 19, 58, 58, 162, 60, 60, 61, 156, 61, 61, 90, 153, 58, 149, 13, 60, 94, 94, 8, 61, 19, 62, 62, 95, 95, 62, 62, 51, 53, 147, 43, 45, 58, 146, 87, 60, 91, 91, 144, 61, 91, 91, 90, 92, 92, 93, 93, 111, 111, 93, 93, 112, 112, 143, 92, 113, 113, 114, 114, 113, 113, 115, 115, 129, 129, 130, 130, 141, 140, 139, 138, 137, 136, 135, 92, 160, 132, 160, 160, 160, 161, 131, 161, 161, 161, 163, 127, 163, 163, 163, 164, 126, 164, 165, 165, 165, 167, 125, 167, 124, 122, 121, 120, 119, 118, 117, 116, 109, 108, 107, 106, 105, 102, 101, 100, 99, 98, 97, 96, 89, 88, 85, 84, 82, 81, 80, 79, 78, 74, 73, 72, 70, 69, 68, 67, 48, 47, 46, 41, 40, 39, 38, 37, 35, 34, 33, 31, 30, 29, 28, 27, 26, 25, 24, 22, 21, 20, 18, 15, 14, 12, 11, 9, 7, 3, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159 } ; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 0; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; #line 1 "@@PATH@@/src/KSeExpr/ExprParserLex.l" /** * SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. * SPDX-License-Identifier: LicenseRef-Apache-2.0 * SPDX-FileCopyrightText: 2020-2021 L. E. Segovia * SPDX-License-Identifier: GPL-3.0-or-later */ /* Don't generate yywrap since everything is in one string */ /* Don't generate unput since it's unused and gcc complains... */ /* Don't generate input since it's unused too -- amyspark */ #define YY_NO_INPUT 1 /* Don't worry about interactive and using isatty(). Fixes Windows compile. */ #line 18 "@@PATH@@/src/KSeExpr/ExprParserLex.l" #include #include #include #include // If c++11 don't use register designator, lex and yacc need to go... #if __cplusplus > 199711L #define register // Deprecated in C++11. #endif // #if __cplusplus > 199711L #include "ExprParser.h" #include "ExprNode.h" #include "Expression.h" #include "Utils.h" #ifdef SEEXPR_WIN32 # define YY_NO_UNISTD_H # define YY_SKIP_YYWRAP #endif #ifndef MAKEDEPEND # include "ExprParser.tab.h" #endif // TODO: make this thread safe static int columnNumber=0; // really buffer position static int lineNumber=0; // not used std::vector >* comments=0; //! For lexer's internal use only! void SeExprLexerResetState(std::vector >& commentsIn){ comments=&commentsIn; columnNumber=lineNumber=0; } int yypos(); #define YY_USER_ACTION { \ yylloc.first_line=lineNumber;yylloc.first_column=columnNumber; \ columnNumber+=yyleng;\ yylloc.last_column=columnNumber;yylloc.last_line=lineNumber;} #line 619 "ExprParserLexIn.cpp" #line 620 "ExprParserLexIn.cpp" #define INITIAL 0 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif static int yy_init_globals ( void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy ( void ); int yyget_debug ( void ); void yyset_debug ( int debug_flag ); YY_EXTRA_TYPE yyget_extra ( void ); void yyset_extra ( YY_EXTRA_TYPE user_defined ); FILE *yyget_in ( void ); void yyset_in ( FILE * _in_str ); FILE *yyget_out ( void ); void yyset_out ( FILE * _out_str ); int yyget_leng ( void ); char *yyget_text ( void ); int yyget_lineno ( void ); void yyset_lineno ( int _line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap ( void ); #else extern int yywrap ( void ); #endif #endif #ifndef YY_NO_UNPUT #endif #ifndef yytext_ptr static void yy_flex_strncpy ( char *, const char *, int ); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen ( const char * ); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput ( void ); #else static int input ( void ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k */ #define YY_READ_BUF_SIZE 16384 #else #define YY_READ_BUF_SIZE 8192 #endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ int n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (void); #define YY_DECL int yylex (void) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK /*LINTED*/break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { yy_state_type yy_current_state; char *yy_cp, *yy_bp; int yy_act; if ( !(yy_init) ) { (yy_init) = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE ); } yy_load_buffer_state( ); } { #line 66 "@@PATH@@/src/KSeExpr/ExprParserLex.l" #line 837 "ExprParserLexIn.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); /* Support of yytext. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = (yy_start); yy_match: do { YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 160 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } while ( yy_current_state != 159 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); yy_find_action: yy_act = yy_accept[yy_current_state]; YY_DO_BEFORE_ACTION; do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = (yy_hold_char); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); goto yy_find_action; case 1: YY_RULE_SETUP #line 67 "@@PATH@@/src/KSeExpr/ExprParserLex.l" YY_BREAK case 2: YY_RULE_SETUP #line 69 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return EXTERN; } YY_BREAK case 3: YY_RULE_SETUP #line 70 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return DEF; } YY_BREAK case 4: YY_RULE_SETUP #line 71 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return FLOATPOINT; } YY_BREAK case 5: YY_RULE_SETUP #line 72 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return STRING; } YY_BREAK case 6: YY_RULE_SETUP #line 73 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return LIFETIME_CONSTANT; } YY_BREAK case 7: YY_RULE_SETUP #line 74 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return LIFETIME_UNIFORM; } YY_BREAK case 8: YY_RULE_SETUP #line 75 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return LIFETIME_VARYING; } YY_BREAK case 9: YY_RULE_SETUP #line 76 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return LIFETIME_ERROR; } YY_BREAK case 10: YY_RULE_SETUP #line 78 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return IF; } YY_BREAK case 11: YY_RULE_SETUP #line 79 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return ELSE; } YY_BREAK case 12: YY_RULE_SETUP #line 81 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return OR; } YY_BREAK case 13: YY_RULE_SETUP #line 82 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return AND; } YY_BREAK case 14: YY_RULE_SETUP #line 83 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return EQ; } YY_BREAK case 15: YY_RULE_SETUP #line 84 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return NE; } YY_BREAK case 16: YY_RULE_SETUP #line 85 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return SEEXPR_LE; } YY_BREAK case 17: YY_RULE_SETUP #line 86 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return SEEXPR_GE; } YY_BREAK case 18: YY_RULE_SETUP #line 87 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return ARROW; } YY_BREAK case 19: YY_RULE_SETUP #line 88 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return AddEq; } YY_BREAK case 20: YY_RULE_SETUP #line 89 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return SubEq; } YY_BREAK case 21: YY_RULE_SETUP #line 90 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return MultEq; } YY_BREAK case 22: YY_RULE_SETUP #line 91 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return DivEq; } YY_BREAK case 23: YY_RULE_SETUP #line 92 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return ModEq; } YY_BREAK case 24: YY_RULE_SETUP #line 93 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return ExpEq; } YY_BREAK case 25: YY_RULE_SETUP #line 95 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { yylval.d = M_PI; return NUMBER; } YY_BREAK case 26: YY_RULE_SETUP #line 96 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { yylval.d = M_E; return NUMBER; } YY_BREAK case 27: YY_RULE_SETUP #line 97 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { yylval.d = 0; return NUMBER; } YY_BREAK case 28: YY_RULE_SETUP #line 98 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { yylval.d = 1; return NUMBER; } YY_BREAK case 29: YY_RULE_SETUP #line 99 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { yylval.d = 2; return NUMBER; } YY_BREAK case 30: YY_RULE_SETUP #line 100 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { yylval.d = 3; return NUMBER; } YY_BREAK case 31: YY_RULE_SETUP #line 102 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { yylval.d = KSeExpr::Utils::atof(yytext); return NUMBER; } YY_BREAK case 32: YY_RULE_SETUP #line 103 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { /* match quoted string, allow embedded quote, \" */ yylval.s = strdup(&yytext[1]); yylval.s[strlen(yylval.s)-1] = '\0'; return STR; } YY_BREAK case 33: YY_RULE_SETUP #line 107 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { /* match quoted string, allow embedded quote, \' */ yylval.s = strdup(&yytext[1]); yylval.s[strlen(yylval.s)-1] = '\0'; return STR; } YY_BREAK case 34: YY_RULE_SETUP #line 111 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { yylval.s = strdup(&yytext[1]); return VAR; } YY_BREAK case 35: YY_RULE_SETUP #line 112 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { yylval.s = strdup(&yytext[1]); return VAR; } YY_BREAK case 36: YY_RULE_SETUP #line 113 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { yylval.s = strdup(yytext); return NAME; } YY_BREAK case 37: YY_RULE_SETUP #line 115 "@@PATH@@/src/KSeExpr/ExprParserLex.l" /* ignore quoted newline */; YY_BREAK case 38: YY_RULE_SETUP #line 116 "@@PATH@@/src/KSeExpr/ExprParserLex.l" /* ignore quoted tab */; YY_BREAK case 39: /* rule 39 can match eol */ YY_RULE_SETUP #line 117 "@@PATH@@/src/KSeExpr/ExprParserLex.l" /* ignore whitespace */; YY_BREAK case 40: YY_RULE_SETUP #line 118 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { /* match comment */ int startPos=yypos(),endPos=yypos()+strlen(&yytext[1])+1; comments->push_back(std::pair(startPos,endPos));} YY_BREAK case 41: YY_RULE_SETUP #line 122 "@@PATH@@/src/KSeExpr/ExprParserLex.l" { return yytext[0]; } YY_BREAK case 42: YY_RULE_SETUP #line 124 "@@PATH@@/src/KSeExpr/ExprParserLex.l" ECHO; YY_BREAK #line 1109 "ExprParserLexIn.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = (yy_hold_char); YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) { /* This was really a NUL. */ yy_state_type yy_next_state; (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state ); yy_bp = (yytext_ptr) + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++(yy_c_buf_p); yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); goto yy_find_action; } } else switch ( yy_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { (yy_did_buffer_switch_on_eof) = 0; if ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: (yy_c_buf_p) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (void) { char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = (yytext_ptr); int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; else { int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyrealloc( (void *) b->yy_ch_buf, (yy_size_t) (b->yy_buf_size + 2) ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), (yy_n_chars), num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } if ( (yy_n_chars) == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart( yyin ); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); /* "- 2" to take care of EOB's */ YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (void) { yy_state_type yy_current_state; char *yy_cp; yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 160 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { int yy_is_jam; char *yy_cp = (yy_c_buf_p); YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 160 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; yy_is_jam = (yy_current_state == 159); return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) #else static int input (void) #endif { int c; *(yy_c_buf_p) = (yy_hold_char); if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) /* This was really a NUL. */ *(yy_c_buf_p) = '\0'; else { /* need more input */ int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart( yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) return 0; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + offset; break; } } } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ *(yy_c_buf_p) = '\0'; /* preserve yytext */ (yy_hold_char) = *++(yy_c_buf_p); return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file ) { if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE ); } yy_init_buffer( YY_CURRENT_BUFFER, input_file ); yy_load_buffer_state( ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) { /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } static void yy_load_buffer_state (void) { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer( b, file ); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * */ void yy_delete_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree( (void *) b->yy_ch_buf ); yyfree( (void *) b ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) { int oerrno = errno; yy_flush_buffer( b ); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * */ void yy_flush_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) { if (new_buffer == NULL) return; yyensure_buffer_stack(); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * */ void yypop_buffer_state (void) { if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (void) { yy_size_t num_to_alloc; if (!(yy_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; } if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer( b ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (const char * yystr ) { return yy_scan_bytes( yystr, (int) strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); buf = (char *) yyalloc( n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer( buf, n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yynoreturn yy_fatal_error (const char* msg ) { fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. * */ int yyget_lineno (void) { return yylineno; } /** Get the input stream. * */ FILE *yyget_in (void) { return yyin; } /** Get the output stream. * */ FILE *yyget_out (void) { return yyout; } /** Get the length of the current token. * */ int yyget_leng (void) { return yyleng; } /** Get the current token. * */ char *yyget_text (void) { return yytext; } /** Set the current line number. * @param _line_number line number * */ void yyset_lineno (int _line_number ) { yylineno = _line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * * @see yy_switch_to_buffer */ void yyset_in (FILE * _in_str ) { yyin = _in_str ; } void yyset_out (FILE * _out_str ) { yyout = _out_str ; } int yyget_debug (void) { return yy_flex_debug; } void yyset_debug (int _bdebug ) { yy_flex_debug = _bdebug ; } static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ (yy_buffer_stack) = NULL; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; (yy_c_buf_p) = NULL; (yy_init) = 0; (yy_start) = 0; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer( YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } /* Destroy the stack itself. */ yyfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( ); return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, const char * s2, int n ) { int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (const char * s ) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size ) { return malloc(size); } void *yyrealloc (void * ptr, yy_size_t size ) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void yyfree (void * ptr ) { free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 124 "@@PATH@@/src/KSeExpr/ExprParserLex.l" /* Gets index of current token (corresponding to yytext). Used for error reporting. */ int yypos() { return yy_c_buf_p - YY_CURRENT_BUFFER->yy_ch_buf - yyleng; } kseexpr-4.0.4.0/generated/KSeExprUI/0000755000000000000240000000000014156102631017056 5ustar00rootroot00000000000000kseexpr-4.0.4.0/generated/KSeExprUI/ExprSpecParser.cpp0000644000000000000240000026621514156102631022504 0ustar00rootroot00000000000000/* A Bison parser, made by GNU Bison 3.7.6. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. 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 3 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, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, especially those whose name start with ExprSpecYY_ or ExprSpec_. They are private implementation details that can be changed or removed. */ /* All symbols defined below should begin with ExprSpec or ExprSpecYY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output, and Bison version. */ #define ExprSpecYYBISON 30706 /* Bison version string. */ #define ExprSpecYYBISON_VERSION "3.7.6" /* Skeleton name. */ #define ExprSpecYYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define ExprSpecYYPURE 0 /* Push parsers. */ #define ExprSpecYYPUSH 0 /* Pull parsers. */ #define ExprSpecYYPULL 1 /* Substitute the variable and function names. */ #define ExprSpecparse ExprSpecparse #define ExprSpeclex ExprSpeclex #define ExprSpecerror ExprSpecerror #define ExprSpecdebug ExprSpecdebug #define ExprSpecnerrs ExprSpecnerrs #define ExprSpeclval ExprSpeclval #define ExprSpecchar ExprSpecchar #define ExprSpeclloc ExprSpeclloc /* First part of user prologue. */ #line 8 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" #include #include #include #include #include #include #include #include "ExprSpecType.h" #include "Editable.h" #include "Debug.h" /****************** lexer declarations ******************/ #define SPEC_IS_NUMBER(x) \ (dynamic_cast(x) != 0) #define SPEC_IS_VECTOR(x) \ (dynamic_cast(x) != 0) #define SPEC_IS_STR(x) \ (dynamic_cast(x) != 0) // declarations of functions and data in ExprParser.y int ExprSpeclex(); int ExprSpecpos(); extern int ExprSpec_start; extern char* ExprSpectext; struct ExprSpec_buffer_state; ExprSpec_buffer_state* ExprSpec_scan_string(const char *str); void ExprSpec_delete_buffer(ExprSpec_buffer_state*); //##################################### // Keep track of mini parse tree nodes // temporary to the parse... all pointers deleted at end of parse static std::vector specNodes; /// Remember the spec node, so we can delete it later static ExprSpecNode* remember(ExprSpecNode* node) {specNodes.push_back(node);return node;} /// list of strings duplicated by lexer to avoid error mem leak static std::vector tokens; char* specRegisterToken(char* rawString) { char* tok=strdup(rawString); tokens.push_back(tok); return tok; } //###################################################################### // Expose parser API inputs/outputs to yacc as statics // these are pointers to the arguments send into parse API // made static here so the parser can see them in yacc actions static std::vector* editables; static std::vector* variables; static const char* ParseStr; // string being parsed static std::string ParseError; // error (set from ExprSpecerror) static ExprSpecNode* ParseResult; // must set result here since ExprSpecparse can't return it //###################################################################### // Helpers used by actions to register data /// Remember that there is an assignment to this variable (For autocomplete) static void specRegisterVariable(const char* var) { variables->push_back(var); } /// Variable Assignment/String literal should be turned into an editable /// an editable is the data part of a control (it's model essentially) static void specRegisterEditable(const char* var,ExprSpecNode* node) { //dbgSeExpr <<"we have editable var "<(node)){ editables->push_back(new NumberEditable(var,node->startPos,node->endPos,n->v)); }else if(ExprSpecVectorNode* n=dynamic_cast(node)){ editables->push_back(new VectorEditable(var,node->startPos,node->endPos,n->v)); }else if(ExprSpecStringNode* n=dynamic_cast(node)){ editables->push_back(new StringEditable(node->startPos,node->endPos,n->v)); }else if(ExprSpecCCurveNode* n=dynamic_cast(node)){ if(ExprSpecListNode* args=dynamic_cast(n->args)){ if((args->nodes.size())%3==0){ ColorCurveEditable* ccurve=new ColorCurveEditable(var,node->startPos,node->endPos); bool valid=true; for(size_t i=0;inodes.size();i+=3){ ExprSpecScalarNode* xnode=dynamic_cast(args->nodes[i]); ExprSpecVectorNode* ynode=dynamic_cast(args->nodes[i+1]); ExprSpecScalarNode* interpnode=dynamic_cast(args->nodes[i+2]); if (xnode && ynode && interpnode) { if (interpnode->v >= 0 && interpnode->v <= 4) { ccurve->add(xnode->v, ynode->v, interpnode->v); } else { // invalid interpolant type -- Amyspark valid = false; } } else { valid = false; } } if(valid) editables->push_back(ccurve); else delete ccurve; }else{ //dbgSeExpr <<"Curve has wrong # of args"<nodes.size(); } } }else if(ExprSpecCurveNode* n=dynamic_cast(node)){ if(ExprSpecListNode* args=dynamic_cast(n->args)){ if((args->nodes.size())%3==0){ CurveEditable* ccurve=new CurveEditable(var,node->startPos,node->endPos); bool valid=true; for(size_t i=0;inodes.size();i+=3){ ExprSpecScalarNode* xnode=dynamic_cast(args->nodes[i]); ExprSpecScalarNode* ynode=dynamic_cast(args->nodes[i+1]); ExprSpecScalarNode *interpnode = dynamic_cast(args->nodes[i + 2]); if (xnode && ynode && interpnode) { if (interpnode->v >= 0 && interpnode->v <= 4) { ccurve->add(xnode->v, ynode->v, interpnode->v); } else { // invalid interpolant type -- Amyspark valid = false; } } else { valid = false; } } if(valid) editables->push_back(ccurve); else{ delete ccurve; } } } }else if(ExprSpecColorSwatchNode* n=dynamic_cast(node)){ if(ExprSpecListNode* args=dynamic_cast(n->args)){ if(args->nodes.size()>0){ ColorSwatchEditable* swatch=new ColorSwatchEditable(var,node->startPos,node->endPos); bool valid=true; for(size_t i=0;inodes.size();i++){ ExprSpecVectorNode* colornode=dynamic_cast(args->nodes[i]); if(colornode){ swatch->add(colornode->v); }else{ valid=false; } } if(valid) editables->push_back(swatch); else delete swatch; } } }else{ dbgSeExpr <<"SEEXPREDITOR LOGIC ERROR: We didn't recognize the Spec"; } } /******************* parser declarations *******************/ // forward declaration static void ExprSpecerror(const char* msg); #line 252 "y.tab.c" # ifndef ExprSpecYY_CAST # ifdef __cplusplus # define ExprSpecYY_CAST(Type, Val) static_cast (Val) # define ExprSpecYY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) # else # define ExprSpecYY_CAST(Type, Val) ((Type) (Val)) # define ExprSpecYY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) # endif # endif # ifndef ExprSpecYY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus # define ExprSpecYY_NULLPTR nullptr # else # define ExprSpecYY_NULLPTR 0 # endif # else # define ExprSpecYY_NULLPTR ((void*)0) # endif # endif /* Use api.header.include to #include this header instead of duplicating it here. */ #ifndef ExprSpecYY_EXPRSPEC_Y_TAB_H_INCLUDED # define ExprSpecYY_EXPRSPEC_Y_TAB_H_INCLUDED /* Debug traces. */ #ifndef ExprSpecYYDEBUG # define ExprSpecYYDEBUG 0 #endif #if ExprSpecYYDEBUG extern int ExprSpecdebug; #endif /* Token kinds. */ #ifndef ExprSpecYYTOKENTYPE # define ExprSpecYYTOKENTYPE enum ExprSpectokentype { ExprSpecYYEMPTY = -2, ExprSpecYYEOF = 0, /* "end of file" */ ExprSpecYYerror = 256, /* error */ ExprSpecYYUNDEF = 257, /* "invalid token" */ IF = 258, /* IF */ ELSE = 259, /* ELSE */ NAME = 260, /* NAME */ VAR = 261, /* VAR */ STR = 262, /* STR */ NUMBER = 263, /* NUMBER */ AddEq = 264, /* AddEq */ SubEq = 265, /* SubEq */ MultEq = 266, /* MultEq */ DivEq = 267, /* DivEq */ ExpEq = 268, /* ExpEq */ ModEq = 269, /* ModEq */ ARROW = 270, /* ARROW */ OR = 271, /* OR */ AND = 272, /* AND */ EQ = 273, /* EQ */ NE = 274, /* NE */ LE = 275, /* LE */ GE = 276, /* GE */ UNARY = 277 /* UNARY */ }; typedef enum ExprSpectokentype ExprSpectoken_kind_t; #endif /* Value type. */ #if ! defined ExprSpecYYSTYPE && ! defined ExprSpecYYSTYPE_IS_DECLARED union ExprSpecYYSTYPE { #line 181 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" ExprSpecNode* n; double d; // return value for number tokens char* s; /* return value for name tokens. Note: UNLIKE the regular parser, this is not strdup()'dthe string */ #line 330 "y.tab.c" }; typedef union ExprSpecYYSTYPE ExprSpecYYSTYPE; # define ExprSpecYYSTYPE_IS_TRIVIAL 1 # define ExprSpecYYSTYPE_IS_DECLARED 1 #endif /* Location type. */ #if ! defined ExprSpecYYLTYPE && ! defined ExprSpecYYLTYPE_IS_DECLARED typedef struct ExprSpecYYLTYPE ExprSpecYYLTYPE; struct ExprSpecYYLTYPE { int first_line; int first_column; int last_line; int last_column; }; # define ExprSpecYYLTYPE_IS_DECLARED 1 # define ExprSpecYYLTYPE_IS_TRIVIAL 1 #endif extern ExprSpecYYSTYPE ExprSpeclval; extern ExprSpecYYLTYPE ExprSpeclloc; int ExprSpecparse (void); #endif /* !ExprSpecYY_EXPRSPEC_Y_TAB_H_INCLUDED */ /* Symbol kind. */ enum ExprSpecsymbol_kind_t { ExprSpecYYSYMBOL_ExprSpecYYEMPTY = -2, ExprSpecYYSYMBOL_ExprSpecYYEOF = 0, /* "end of file" */ ExprSpecYYSYMBOL_ExprSpecYYerror = 1, /* error */ ExprSpecYYSYMBOL_ExprSpecYYUNDEF = 2, /* "invalid token" */ ExprSpecYYSYMBOL_IF = 3, /* IF */ ExprSpecYYSYMBOL_ELSE = 4, /* ELSE */ ExprSpecYYSYMBOL_NAME = 5, /* NAME */ ExprSpecYYSYMBOL_VAR = 6, /* VAR */ ExprSpecYYSYMBOL_STR = 7, /* STR */ ExprSpecYYSYMBOL_NUMBER = 8, /* NUMBER */ ExprSpecYYSYMBOL_AddEq = 9, /* AddEq */ ExprSpecYYSYMBOL_SubEq = 10, /* SubEq */ ExprSpecYYSYMBOL_MultEq = 11, /* MultEq */ ExprSpecYYSYMBOL_DivEq = 12, /* DivEq */ ExprSpecYYSYMBOL_ExpEq = 13, /* ExpEq */ ExprSpecYYSYMBOL_ModEq = 14, /* ModEq */ ExprSpecYYSYMBOL_15_ = 15, /* '(' */ ExprSpecYYSYMBOL_16_ = 16, /* ')' */ ExprSpecYYSYMBOL_ARROW = 17, /* ARROW */ ExprSpecYYSYMBOL_18_ = 18, /* ':' */ ExprSpecYYSYMBOL_19_ = 19, /* '?' */ ExprSpecYYSYMBOL_OR = 20, /* OR */ ExprSpecYYSYMBOL_AND = 21, /* AND */ ExprSpecYYSYMBOL_EQ = 22, /* EQ */ ExprSpecYYSYMBOL_NE = 23, /* NE */ ExprSpecYYSYMBOL_24_ = 24, /* '<' */ ExprSpecYYSYMBOL_25_ = 25, /* '>' */ ExprSpecYYSYMBOL_LE = 26, /* LE */ ExprSpecYYSYMBOL_GE = 27, /* GE */ ExprSpecYYSYMBOL_28_ = 28, /* '+' */ ExprSpecYYSYMBOL_29_ = 29, /* '-' */ ExprSpecYYSYMBOL_30_ = 30, /* '*' */ ExprSpecYYSYMBOL_31_ = 31, /* '/' */ ExprSpecYYSYMBOL_32_ = 32, /* '%' */ ExprSpecYYSYMBOL_UNARY = 33, /* UNARY */ ExprSpecYYSYMBOL_34_ = 34, /* '!' */ ExprSpecYYSYMBOL_35_ = 35, /* '~' */ ExprSpecYYSYMBOL_36_ = 36, /* '^' */ ExprSpecYYSYMBOL_37_ = 37, /* '[' */ ExprSpecYYSYMBOL_38_ = 38, /* '=' */ ExprSpecYYSYMBOL_39_ = 39, /* ';' */ ExprSpecYYSYMBOL_40_ = 40, /* '{' */ ExprSpecYYSYMBOL_41_ = 41, /* '}' */ ExprSpecYYSYMBOL_42_ = 42, /* ',' */ ExprSpecYYSYMBOL_43_ = 43, /* ']' */ ExprSpecYYSYMBOL_ExprSpecYYACCEPT = 44, /* $accept */ ExprSpecYYSYMBOL_expr = 45, /* expr */ ExprSpecYYSYMBOL_optassigns = 46, /* optassigns */ ExprSpecYYSYMBOL_assigns = 47, /* assigns */ ExprSpecYYSYMBOL_assign = 48, /* assign */ ExprSpecYYSYMBOL_ifthenelse = 49, /* ifthenelse */ ExprSpecYYSYMBOL_optelse = 50, /* optelse */ ExprSpecYYSYMBOL_e = 51, /* e */ ExprSpecYYSYMBOL_optargs = 52, /* optargs */ ExprSpecYYSYMBOL_args = 53, /* args */ ExprSpecYYSYMBOL_arg = 54 /* arg */ }; typedef enum ExprSpecsymbol_kind_t ExprSpecsymbol_kind_t; #ifdef short # undef short #endif /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure and (if available) are included so that the code can choose integer types of a good width. */ #ifndef __PTRDIFF_MAX__ # include /* INFRINGES ON USER NAME SPACE */ # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define ExprSpecYY_STDINT_H # endif #endif /* Narrow types that promote to a signed type and that can represent a signed or unsigned integer of at least N bits. In tables they can save space and decrease cache pressure. Promoting to a signed type helps avoid bugs in integer arithmetic. */ #ifdef __INT_LEAST8_MAX__ typedef __INT_LEAST8_TYPE__ ExprSpectype_int8; #elif defined ExprSpecYY_STDINT_H typedef int_least8_t ExprSpectype_int8; #else typedef signed char ExprSpectype_int8; #endif #ifdef __INT_LEAST16_MAX__ typedef __INT_LEAST16_TYPE__ ExprSpectype_int16; #elif defined ExprSpecYY_STDINT_H typedef int_least16_t ExprSpectype_int16; #else typedef short ExprSpectype_int16; #endif /* Work around bug in HP-UX 11.23, which defines these macros incorrectly for preprocessor constants. This workaround can likely be removed in 2023, as HPE has promised support for HP-UX 11.23 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of . */ #ifdef __hpux # undef UINT_LEAST8_MAX # undef UINT_LEAST16_MAX # define UINT_LEAST8_MAX 255 # define UINT_LEAST16_MAX 65535 #endif #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ ExprSpectype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined ExprSpecYY_STDINT_H \ && UINT_LEAST8_MAX <= INT_MAX) typedef uint_least8_t ExprSpectype_uint8; #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX typedef unsigned char ExprSpectype_uint8; #else typedef short ExprSpectype_uint8; #endif #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ typedef __UINT_LEAST16_TYPE__ ExprSpectype_uint16; #elif (!defined __UINT_LEAST16_MAX__ && defined ExprSpecYY_STDINT_H \ && UINT_LEAST16_MAX <= INT_MAX) typedef uint_least16_t ExprSpectype_uint16; #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX typedef unsigned short ExprSpectype_uint16; #else typedef int ExprSpectype_uint16; #endif #ifndef ExprSpecYYPTRDIFF_T # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ # define ExprSpecYYPTRDIFF_T __PTRDIFF_TYPE__ # define ExprSpecYYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ # elif defined PTRDIFF_MAX # ifndef ptrdiff_t # include /* INFRINGES ON USER NAME SPACE */ # endif # define ExprSpecYYPTRDIFF_T ptrdiff_t # define ExprSpecYYPTRDIFF_MAXIMUM PTRDIFF_MAX # else # define ExprSpecYYPTRDIFF_T long # define ExprSpecYYPTRDIFF_MAXIMUM LONG_MAX # endif #endif #ifndef ExprSpecYYSIZE_T # ifdef __SIZE_TYPE__ # define ExprSpecYYSIZE_T __SIZE_TYPE__ # elif defined size_t # define ExprSpecYYSIZE_T size_t # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define ExprSpecYYSIZE_T size_t # else # define ExprSpecYYSIZE_T unsigned # endif #endif #define ExprSpecYYSIZE_MAXIMUM \ ExprSpecYY_CAST (ExprSpecYYPTRDIFF_T, \ (ExprSpecYYPTRDIFF_MAXIMUM < ExprSpecYY_CAST (ExprSpecYYSIZE_T, -1) \ ? ExprSpecYYPTRDIFF_MAXIMUM \ : ExprSpecYY_CAST (ExprSpecYYSIZE_T, -1))) #define ExprSpecYYSIZEOF(X) ExprSpecYY_CAST (ExprSpecYYPTRDIFF_T, sizeof (X)) /* Stored state numbers (used for stacks). */ typedef ExprSpectype_uint8 ExprSpec_state_t; /* State numbers in computations. */ typedef int ExprSpec_state_fast_t; #ifndef ExprSpecYY_ # if defined ExprSpecYYENABLE_NLS && ExprSpecYYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define ExprSpecYY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef ExprSpecYY_ # define ExprSpecYY_(Msgid) Msgid # endif #endif #ifndef ExprSpecYY_ATTRIBUTE_PURE # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) # define ExprSpecYY_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else # define ExprSpecYY_ATTRIBUTE_PURE # endif #endif #ifndef ExprSpecYY_ATTRIBUTE_UNUSED # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) # define ExprSpecYY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) # else # define ExprSpecYY_ATTRIBUTE_UNUSED # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define ExprSpecYY_USE(E) ((void) (E)) #else # define ExprSpecYY_USE(E) /* empty */ #endif #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about ExprSpeclval being uninitialized. */ # define ExprSpecYY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") # define ExprSpecYY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define ExprSpecYY_INITIAL_VALUE(Value) Value #endif #ifndef ExprSpecYY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define ExprSpecYY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define ExprSpecYY_IGNORE_MAYBE_UNINITIALIZED_END #endif #ifndef ExprSpecYY_INITIAL_VALUE # define ExprSpecYY_INITIAL_VALUE(Value) /* Nothing. */ #endif #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ # define ExprSpecYY_IGNORE_USELESS_CAST_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") # define ExprSpecYY_IGNORE_USELESS_CAST_END \ _Pragma ("GCC diagnostic pop") #endif #ifndef ExprSpecYY_IGNORE_USELESS_CAST_BEGIN # define ExprSpecYY_IGNORE_USELESS_CAST_BEGIN # define ExprSpecYY_IGNORE_USELESS_CAST_END #endif #define ExprSpecYY_ASSERT(E) ((void) (0 && (E))) #if !defined ExprSpecoverflow /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef ExprSpecYYSTACK_USE_ALLOCA # if ExprSpecYYSTACK_USE_ALLOCA # ifdef __GNUC__ # define ExprSpecYYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define ExprSpecYYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define ExprSpecYYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef ExprSpecYYSTACK_ALLOC /* Pacify GCC's 'empty if-body' warning. */ # define ExprSpecYYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef ExprSpecYYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define ExprSpecYYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define ExprSpecYYSTACK_ALLOC ExprSpecYYMALLOC # define ExprSpecYYSTACK_FREE ExprSpecYYFREE # ifndef ExprSpecYYSTACK_ALLOC_MAXIMUM # define ExprSpecYYSTACK_ALLOC_MAXIMUM ExprSpecYYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined ExprSpecYYMALLOC || defined malloc) \ && (defined ExprSpecYYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef ExprSpecYYMALLOC # define ExprSpecYYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (ExprSpecYYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef ExprSpecYYFREE # define ExprSpecYYFREE free # if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* !defined ExprSpecoverflow */ #if (! defined ExprSpecoverflow \ && (! defined __cplusplus \ || (defined ExprSpecYYLTYPE_IS_TRIVIAL && ExprSpecYYLTYPE_IS_TRIVIAL \ && defined ExprSpecYYSTYPE_IS_TRIVIAL && ExprSpecYYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union ExprSpecalloc { ExprSpec_state_t ExprSpecss_alloc; ExprSpecYYSTYPE ExprSpecvs_alloc; ExprSpecYYLTYPE ExprSpecls_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define ExprSpecYYSTACK_GAP_MAXIMUM (ExprSpecYYSIZEOF (union ExprSpecalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define ExprSpecYYSTACK_BYTES(N) \ ((N) * (ExprSpecYYSIZEOF (ExprSpec_state_t) + ExprSpecYYSIZEOF (ExprSpecYYSTYPE) \ + ExprSpecYYSIZEOF (ExprSpecYYLTYPE)) \ + 2 * ExprSpecYYSTACK_GAP_MAXIMUM) # define ExprSpecYYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables ExprSpecYYSIZE and ExprSpecYYSTACKSIZE give the old and new number of elements in the stack, and ExprSpecYYPTR gives the new location of the stack. Advance ExprSpecYYPTR to a properly aligned location for the next stack. */ # define ExprSpecYYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ ExprSpecYYPTRDIFF_T ExprSpecnewbytes; \ ExprSpecYYCOPY (&ExprSpecptr->Stack_alloc, Stack, ExprSpecsize); \ Stack = &ExprSpecptr->Stack_alloc; \ ExprSpecnewbytes = ExprSpecstacksize * ExprSpecYYSIZEOF (*Stack) + ExprSpecYYSTACK_GAP_MAXIMUM; \ ExprSpecptr += ExprSpecnewbytes / ExprSpecYYSIZEOF (*ExprSpecptr); \ } \ while (0) #endif #if defined ExprSpecYYCOPY_NEEDED && ExprSpecYYCOPY_NEEDED /* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef ExprSpecYYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define ExprSpecYYCOPY(Dst, Src, Count) \ __builtin_memcpy (Dst, Src, ExprSpecYY_CAST (ExprSpecYYSIZE_T, (Count)) * sizeof (*(Src))) # else # define ExprSpecYYCOPY(Dst, Src, Count) \ do \ { \ ExprSpecYYPTRDIFF_T ExprSpeci; \ for (ExprSpeci = 0; ExprSpeci < (Count); ExprSpeci++) \ (Dst)[ExprSpeci] = (Src)[ExprSpeci]; \ } \ while (0) # endif # endif #endif /* !ExprSpecYYCOPY_NEEDED */ /* ExprSpecYYFINAL -- State number of the termination state. */ #define ExprSpecYYFINAL 41 /* ExprSpecYYLAST -- Last index in ExprSpecYYTABLE. */ #define ExprSpecYYLAST 680 /* ExprSpecYYNTOKENS -- Number of terminals. */ #define ExprSpecYYNTOKENS 44 /* ExprSpecYYNNTS -- Number of nonterminals. */ #define ExprSpecYYNNTS 11 /* ExprSpecYYNRULES -- Number of rules. */ #define ExprSpecYYNRULES 59 /* ExprSpecYYNSTATES -- Number of states. */ #define ExprSpecYYNSTATES 139 /* ExprSpecYYMAXUTOK -- Last valid token kind. */ #define ExprSpecYYMAXUTOK 277 /* ExprSpecYYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by ExprSpeclex, with out-of-bounds checking. */ #define ExprSpecYYTRANSLATE(ExprSpecYYX) \ (0 <= (ExprSpecYYX) && (ExprSpecYYX) <= ExprSpecYYMAXUTOK \ ? ExprSpecYY_CAST (ExprSpecsymbol_kind_t, ExprSpectranslate[ExprSpecYYX]) \ : ExprSpecYYSYMBOL_ExprSpecYYUNDEF) /* ExprSpecYYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by ExprSpeclex. */ static const ExprSpectype_int8 ExprSpectranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 34, 2, 2, 2, 32, 2, 2, 15, 16, 30, 28, 42, 29, 2, 31, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 18, 39, 24, 38, 25, 19, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 37, 2, 43, 36, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 40, 2, 41, 35, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 21, 22, 23, 26, 27, 33 }; #if ExprSpecYYDEBUG /* ExprSpecYYRLINE[ExprSpecYYN] -- Source line where rule number ExprSpecYYN was defined. */ static const ExprSpectype_int16 ExprSpecrline[] = { 0, 223, 223, 224, 229, 230, 234, 235, 240, 241, 245, 246, 247, 248, 249, 250, 251, 255, 256, 257, 258, 259, 260, 264, 269, 270, 271, 276, 277, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 302, 303, 304, 305, 306, 307, 308, 309, 310, 331, 332, 333, 334, 335, 340, 341, 346, 355, 367 }; #endif /** Accessing symbol of state STATE. */ #define ExprSpecYY_ACCESSING_SYMBOL(State) ExprSpecYY_CAST (ExprSpecsymbol_kind_t, ExprSpecstos[State]) #if ExprSpecYYDEBUG || 0 /* The user-facing name of the symbol whose (internal) number is ExprSpecYYSYMBOL. No bounds checking. */ static const char *ExprSpecsymbol_name (ExprSpecsymbol_kind_t ExprSpecsymbol) ExprSpecYY_ATTRIBUTE_UNUSED; /* ExprSpecYYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at ExprSpecYYNTOKENS, nonterminals. */ static const char *const ExprSpectname[] = { "\"end of file\"", "error", "\"invalid token\"", "IF", "ELSE", "NAME", "VAR", "STR", "NUMBER", "AddEq", "SubEq", "MultEq", "DivEq", "ExpEq", "ModEq", "'('", "')'", "ARROW", "':'", "'?'", "OR", "AND", "EQ", "NE", "'<'", "'>'", "LE", "GE", "'+'", "'-'", "'*'", "'/'", "'%'", "UNARY", "'!'", "'~'", "'^'", "'['", "'='", "';'", "'{'", "'}'", "','", "']'", "$accept", "expr", "optassigns", "assigns", "assign", "ifthenelse", "optelse", "e", "optargs", "args", "arg", ExprSpecYY_NULLPTR }; static const char * ExprSpecsymbol_name (ExprSpecsymbol_kind_t ExprSpecsymbol) { return ExprSpectname[ExprSpecsymbol]; } #endif #ifdef ExprSpecYYPRINT /* ExprSpecYYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ static const ExprSpectype_int16 ExprSpectoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 40, 41, 270, 58, 63, 271, 272, 273, 274, 60, 62, 275, 276, 43, 45, 42, 47, 37, 277, 33, 126, 94, 91, 61, 59, 123, 125, 44, 93 }; #endif #define ExprSpecYYPACT_NINF (-60) #define ExprSpecpact_value_is_default(Yyn) \ ((Yyn) == ExprSpecYYPACT_NINF) #define ExprSpecYYTABLE_NINF (-1) #define ExprSpectable_value_is_error(Yyn) \ 0 /* ExprSpecYYPACT[STATE-NUM] -- Index in ExprSpecYYTABLE of the portion describing STATE-NUM. */ static const ExprSpectype_int16 ExprSpecpact[] = { 58, -10, 91, 24, -60, -60, 62, 62, 62, 62, 62, 62, 16, 58, -60, -60, 577, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 25, -60, 513, -33, -33, -33, -33, 168, -60, -60, 577, 19, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 535, 216, 237, 258, 279, 300, 321, 577, 26, 1, -60, 342, 363, 384, 405, 426, 447, 468, 489, -60, 62, 29, 556, 613, 629, 643, 643, 95, 95, 95, 95, 48, 48, -33, -33, -33, -33, 118, 31, -60, -60, -60, -60, -60, -60, -60, 62, -60, -60, -60, -60, -60, -60, -60, -60, 192, 62, 62, -60, 9, -60, 62, 56, 596, 98, 24, 33, 9, 143, -60, 37, -60, -1, -60, 9, -60, 34, -60 }; /* ExprSpecYYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when ExprSpecYYTABLE does not specify something else to do. Zero means the default is an error. */ static const ExprSpectype_int8 ExprSpecdefact[] = { 0, 0, 52, 51, 54, 53, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 3, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 52, 51, 0, 39, 40, 41, 42, 0, 1, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 56, 57, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 31, 32, 33, 34, 35, 36, 37, 38, 43, 44, 45, 46, 47, 48, 0, 0, 17, 18, 19, 20, 21, 22, 49, 0, 16, 10, 11, 12, 13, 14, 15, 9, 0, 55, 0, 29, 4, 58, 0, 0, 30, 0, 0, 0, 5, 0, 50, 24, 28, 0, 23, 4, 26, 0, 25 }; /* ExprSpecYYPGOTO[NTERM-NUM]. */ static const ExprSpectype_int8 ExprSpecpgoto[] = { -60, -60, -59, 82, -12, -50, -60, 0, -29, -60, -18 }; /* ExprSpecYYDEFGOTO[NTERM-NUM]. */ static const ExprSpectype_uint8 ExprSpecdefgoto[] = { 0, 12, 127, 128, 14, 15, 134, 68, 69, 70, 71 }; /* ExprSpecYYTABLE[ExprSpecYYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If ExprSpecYYTABLE_NINF, syntax error. */ static const ExprSpectype_uint8 ExprSpectable[] = { 16, 42, 1, 59, 60, 17, 35, 36, 37, 38, 39, 40, 1, 43, 125, 126, 41, 61, 62, 63, 64, 65, 66, 67, 82, 72, 73, 74, 75, 76, 77, 78, 79, 26, 27, 28, 29, 30, 31, 135, 24, 133, 106, 107, 117, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 1, 32, 2, 3, 4, 5, 33, 34, 4, 5, 120, 130, 6, 131, 138, 137, 6, 56, 57, 58, 116, 13, 136, 59, 60, 7, 8, 123, 121, 7, 8, 9, 10, 0, 11, 9, 10, 0, 11, 18, 19, 20, 21, 22, 23, 24, 18, 19, 20, 21, 22, 23, 0, 0, 0, 42, 0, 124, 0, 0, 0, 129, 54, 55, 56, 57, 58, 0, 25, 0, 59, 60, 0, 0, 44, 25, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 0, 0, 0, 0, 44, 119, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 0, 0, 0, 0, 44, 132, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 0, 0, 0, 44, 81, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 0, 0, 0, 44, 122, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 44, 100, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 44, 101, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 44, 102, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 44, 103, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 44, 104, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 44, 105, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 44, 108, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 44, 109, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 44, 110, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 44, 111, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 44, 112, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 44, 113, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 44, 114, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 0, 115, 80, 44, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 99, 44, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 44, 118, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 44, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 60 }; static const ExprSpectype_int16 ExprSpeccheck[] = { 0, 13, 3, 36, 37, 15, 6, 7, 8, 9, 10, 11, 3, 13, 5, 6, 0, 17, 18, 19, 20, 21, 22, 23, 5, 25, 26, 27, 28, 29, 30, 31, 32, 9, 10, 11, 12, 13, 14, 40, 15, 4, 16, 42, 15, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 3, 38, 5, 6, 7, 8, 5, 6, 7, 8, 40, 16, 15, 41, 41, 135, 15, 30, 31, 32, 81, 0, 133, 36, 37, 28, 29, 117, 107, 28, 29, 34, 35, -1, 37, 34, 35, -1, 37, 9, 10, 11, 12, 13, 14, 15, 9, 10, 11, 12, 13, 14, -1, -1, -1, 128, -1, 118, -1, -1, -1, 122, 28, 29, 30, 31, 32, -1, 38, -1, 36, 37, -1, -1, 17, 38, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, -1, -1, -1, -1, 17, 43, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, -1, -1, -1, -1, 17, 43, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, -1, -1, -1, 17, 42, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, -1, -1, -1, 17, 42, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 17, 39, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 17, 39, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 17, 39, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 17, 39, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 17, 39, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 17, 39, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 17, 39, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 17, 39, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 17, 39, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 17, 39, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 17, 39, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 17, 39, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 17, 39, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, -1, 39, 16, 17, -1, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 16, 17, -1, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 17, -1, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, 37 }; /* ExprSpecYYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const ExprSpectype_int8 ExprSpecstos[] = { 0, 3, 5, 6, 7, 8, 15, 28, 29, 34, 35, 37, 45, 47, 48, 49, 51, 15, 9, 10, 11, 12, 13, 14, 15, 38, 9, 10, 11, 12, 13, 14, 38, 5, 6, 51, 51, 51, 51, 51, 51, 0, 48, 51, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 36, 37, 51, 51, 51, 51, 51, 51, 51, 51, 52, 53, 54, 51, 51, 51, 51, 51, 51, 51, 51, 16, 42, 5, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 16, 39, 39, 39, 39, 39, 39, 16, 42, 39, 39, 39, 39, 39, 39, 39, 39, 51, 15, 18, 43, 40, 54, 42, 52, 51, 5, 6, 46, 47, 51, 16, 41, 43, 4, 50, 40, 49, 46, 41 }; /* ExprSpecYYR1[ExprSpecYYN] -- Symbol number of symbol that rule ExprSpecYYN derives. */ static const ExprSpectype_int8 ExprSpecr1[] = { 0, 44, 45, 45, 46, 46, 47, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 50, 50, 50, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 52, 52, 53, 53, 54 }; /* ExprSpecYYR2[ExprSpecYYN] -- Number of symbols on the right hand side of rule ExprSpecYYN. */ static const ExprSpectype_int8 ExprSpecr2[] = { 0, 2, 2, 1, 0, 1, 1, 2, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 0, 4, 2, 3, 7, 4, 5, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 6, 1, 1, 1, 1, 0, 1, 1, 3, 1 }; enum { ExprSpecYYENOMEM = -2 }; #define ExprSpecerrok (ExprSpecerrstatus = 0) #define ExprSpecclearin (ExprSpecchar = ExprSpecYYEMPTY) #define ExprSpecYYACCEPT goto ExprSpecacceptlab #define ExprSpecYYABORT goto ExprSpecabortlab #define ExprSpecYYERROR goto ExprSpecerrorlab #define ExprSpecYYRECOVERING() (!!ExprSpecerrstatus) #define ExprSpecYYBACKUP(Token, Value) \ do \ if (ExprSpecchar == ExprSpecYYEMPTY) \ { \ ExprSpecchar = (Token); \ ExprSpeclval = (Value); \ ExprSpecYYPOPSTACK (ExprSpeclen); \ ExprSpecstate = *ExprSpecssp; \ goto ExprSpecbackup; \ } \ else \ { \ ExprSpecerror (ExprSpecYY_("syntax error: cannot back up")); \ ExprSpecYYERROR; \ } \ while (0) /* Backward compatibility with an undocumented macro. Use ExprSpecYYerror or ExprSpecYYUNDEF. */ #define ExprSpecYYERRCODE ExprSpecYYUNDEF /* ExprSpecYYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #ifndef ExprSpecYYLLOC_DEFAULT # define ExprSpecYYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (N) \ { \ (Current).first_line = ExprSpecYYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = ExprSpecYYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = ExprSpecYYRHSLOC (Rhs, N).last_line; \ (Current).last_column = ExprSpecYYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ ExprSpecYYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ ExprSpecYYRHSLOC (Rhs, 0).last_column; \ } \ while (0) #endif #define ExprSpecYYRHSLOC(Rhs, K) ((Rhs)[K]) /* Enable debugging if requested. */ #if ExprSpecYYDEBUG # ifndef ExprSpecYYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define ExprSpecYYFPRINTF fprintf # endif # define ExprSpecYYDPRINTF(Args) \ do { \ if (ExprSpecdebug) \ ExprSpecYYFPRINTF Args; \ } while (0) /* ExprSpecYY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ # ifndef ExprSpecYY_LOCATION_PRINT # if defined ExprSpecYYLTYPE_IS_TRIVIAL && ExprSpecYYLTYPE_IS_TRIVIAL /* Print *ExprSpecYYLOCP on ExprSpecYYO. Private, do not rely on its existence. */ ExprSpecYY_ATTRIBUTE_UNUSED static int ExprSpec_location_print_ (FILE *ExprSpeco, ExprSpecYYLTYPE const * const ExprSpeclocp) { int res = 0; int end_col = 0 != ExprSpeclocp->last_column ? ExprSpeclocp->last_column - 1 : 0; if (0 <= ExprSpeclocp->first_line) { res += ExprSpecYYFPRINTF (ExprSpeco, "%d", ExprSpeclocp->first_line); if (0 <= ExprSpeclocp->first_column) res += ExprSpecYYFPRINTF (ExprSpeco, ".%d", ExprSpeclocp->first_column); } if (0 <= ExprSpeclocp->last_line) { if (ExprSpeclocp->first_line < ExprSpeclocp->last_line) { res += ExprSpecYYFPRINTF (ExprSpeco, "-%d", ExprSpeclocp->last_line); if (0 <= end_col) res += ExprSpecYYFPRINTF (ExprSpeco, ".%d", end_col); } else if (0 <= end_col && ExprSpeclocp->first_column < end_col) res += ExprSpecYYFPRINTF (ExprSpeco, "-%d", end_col); } return res; } # define ExprSpecYY_LOCATION_PRINT(File, Loc) \ ExprSpec_location_print_ (File, &(Loc)) # else # define ExprSpecYY_LOCATION_PRINT(File, Loc) ((void) 0) # endif # endif /* !defined ExprSpecYY_LOCATION_PRINT */ # define ExprSpecYY_SYMBOL_PRINT(Title, Kind, Value, Location) \ do { \ if (ExprSpecdebug) \ { \ ExprSpecYYFPRINTF (stderr, "%s ", Title); \ ExprSpec_symbol_print (stderr, \ Kind, Value, Location); \ ExprSpecYYFPRINTF (stderr, "\n"); \ } \ } while (0) /*-----------------------------------. | Print this symbol's value on ExprSpecYYO. | `-----------------------------------*/ static void ExprSpec_symbol_value_print (FILE *ExprSpeco, ExprSpecsymbol_kind_t ExprSpeckind, ExprSpecYYSTYPE const * const ExprSpecvaluep, ExprSpecYYLTYPE const * const ExprSpeclocationp) { FILE *ExprSpecoutput = ExprSpeco; ExprSpecYY_USE (ExprSpecoutput); ExprSpecYY_USE (ExprSpeclocationp); if (!ExprSpecvaluep) return; # ifdef ExprSpecYYPRINT if (ExprSpeckind < ExprSpecYYNTOKENS) ExprSpecYYPRINT (ExprSpeco, ExprSpectoknum[ExprSpeckind], *ExprSpecvaluep); # endif ExprSpecYY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ExprSpecYY_USE (ExprSpeckind); ExprSpecYY_IGNORE_MAYBE_UNINITIALIZED_END } /*---------------------------. | Print this symbol on ExprSpecYYO. | `---------------------------*/ static void ExprSpec_symbol_print (FILE *ExprSpeco, ExprSpecsymbol_kind_t ExprSpeckind, ExprSpecYYSTYPE const * const ExprSpecvaluep, ExprSpecYYLTYPE const * const ExprSpeclocationp) { ExprSpecYYFPRINTF (ExprSpeco, "%s %s (", ExprSpeckind < ExprSpecYYNTOKENS ? "token" : "nterm", ExprSpecsymbol_name (ExprSpeckind)); ExprSpecYY_LOCATION_PRINT (ExprSpeco, *ExprSpeclocationp); ExprSpecYYFPRINTF (ExprSpeco, ": "); ExprSpec_symbol_value_print (ExprSpeco, ExprSpeckind, ExprSpecvaluep, ExprSpeclocationp); ExprSpecYYFPRINTF (ExprSpeco, ")"); } /*------------------------------------------------------------------. | ExprSpec_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ static void ExprSpec_stack_print (ExprSpec_state_t *ExprSpecbottom, ExprSpec_state_t *ExprSpectop) { ExprSpecYYFPRINTF (stderr, "Stack now"); for (; ExprSpecbottom <= ExprSpectop; ExprSpecbottom++) { int ExprSpecbot = *ExprSpecbottom; ExprSpecYYFPRINTF (stderr, " %d", ExprSpecbot); } ExprSpecYYFPRINTF (stderr, "\n"); } # define ExprSpecYY_STACK_PRINT(Bottom, Top) \ do { \ if (ExprSpecdebug) \ ExprSpec_stack_print ((Bottom), (Top)); \ } while (0) /*------------------------------------------------. | Report that the ExprSpecYYRULE is going to be reduced. | `------------------------------------------------*/ static void ExprSpec_reduce_print (ExprSpec_state_t *ExprSpecssp, ExprSpecYYSTYPE *ExprSpecvsp, ExprSpecYYLTYPE *ExprSpeclsp, int ExprSpecrule) { int ExprSpeclno = ExprSpecrline[ExprSpecrule]; int ExprSpecnrhs = ExprSpecr2[ExprSpecrule]; int ExprSpeci; ExprSpecYYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", ExprSpecrule - 1, ExprSpeclno); /* The symbols being reduced. */ for (ExprSpeci = 0; ExprSpeci < ExprSpecnrhs; ExprSpeci++) { ExprSpecYYFPRINTF (stderr, " $%d = ", ExprSpeci + 1); ExprSpec_symbol_print (stderr, ExprSpecYY_ACCESSING_SYMBOL (+ExprSpecssp[ExprSpeci + 1 - ExprSpecnrhs]), &ExprSpecvsp[(ExprSpeci + 1) - (ExprSpecnrhs)], &(ExprSpeclsp[(ExprSpeci + 1) - (ExprSpecnrhs)])); ExprSpecYYFPRINTF (stderr, "\n"); } } # define ExprSpecYY_REDUCE_PRINT(Rule) \ do { \ if (ExprSpecdebug) \ ExprSpec_reduce_print (ExprSpecssp, ExprSpecvsp, ExprSpeclsp, Rule); \ } while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int ExprSpecdebug; #else /* !ExprSpecYYDEBUG */ # define ExprSpecYYDPRINTF(Args) ((void) 0) # define ExprSpecYY_SYMBOL_PRINT(Title, Kind, Value, Location) # define ExprSpecYY_STACK_PRINT(Bottom, Top) # define ExprSpecYY_REDUCE_PRINT(Rule) #endif /* !ExprSpecYYDEBUG */ /* ExprSpecYYINITDEPTH -- initial size of the parser's stacks. */ #ifndef ExprSpecYYINITDEPTH # define ExprSpecYYINITDEPTH 200 #endif /* ExprSpecYYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if ExprSpecYYSTACK_ALLOC_MAXIMUM < ExprSpecYYSTACK_BYTES (ExprSpecYYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef ExprSpecYYMAXDEPTH # define ExprSpecYYMAXDEPTH 10000 #endif /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void ExprSpecdestruct (const char *ExprSpecmsg, ExprSpecsymbol_kind_t ExprSpeckind, ExprSpecYYSTYPE *ExprSpecvaluep, ExprSpecYYLTYPE *ExprSpeclocationp) { ExprSpecYY_USE (ExprSpecvaluep); ExprSpecYY_USE (ExprSpeclocationp); if (!ExprSpecmsg) ExprSpecmsg = "Deleting"; ExprSpecYY_SYMBOL_PRINT (ExprSpecmsg, ExprSpeckind, ExprSpecvaluep, ExprSpeclocationp); ExprSpecYY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ExprSpecYY_USE (ExprSpeckind); ExprSpecYY_IGNORE_MAYBE_UNINITIALIZED_END } /* Lookahead token kind. */ int ExprSpecchar; /* The semantic value of the lookahead symbol. */ ExprSpecYYSTYPE ExprSpeclval; /* Location data for the lookahead symbol. */ ExprSpecYYLTYPE ExprSpeclloc # if defined ExprSpecYYLTYPE_IS_TRIVIAL && ExprSpecYYLTYPE_IS_TRIVIAL = { 1, 1, 1, 1 } # endif ; /* Number of syntax errors so far. */ int ExprSpecnerrs; /*----------. | ExprSpecparse. | `----------*/ int ExprSpecparse (void) { ExprSpec_state_fast_t ExprSpecstate = 0; /* Number of tokens to shift before error messages enabled. */ int ExprSpecerrstatus = 0; /* Refer to the stacks through separate pointers, to allow ExprSpecoverflow to reallocate them elsewhere. */ /* Their size. */ ExprSpecYYPTRDIFF_T ExprSpecstacksize = ExprSpecYYINITDEPTH; /* The state stack: array, bottom, top. */ ExprSpec_state_t ExprSpecssa[ExprSpecYYINITDEPTH]; ExprSpec_state_t *ExprSpecss = ExprSpecssa; ExprSpec_state_t *ExprSpecssp = ExprSpecss; /* The semantic value stack: array, bottom, top. */ ExprSpecYYSTYPE ExprSpecvsa[ExprSpecYYINITDEPTH]; ExprSpecYYSTYPE *ExprSpecvs = ExprSpecvsa; ExprSpecYYSTYPE *ExprSpecvsp = ExprSpecvs; /* The location stack: array, bottom, top. */ ExprSpecYYLTYPE ExprSpeclsa[ExprSpecYYINITDEPTH]; ExprSpecYYLTYPE *ExprSpecls = ExprSpeclsa; ExprSpecYYLTYPE *ExprSpeclsp = ExprSpecls; int ExprSpecn; /* The return value of ExprSpecparse. */ int ExprSpecresult; /* Lookahead symbol kind. */ ExprSpecsymbol_kind_t ExprSpectoken = ExprSpecYYSYMBOL_ExprSpecYYEMPTY; /* The variables used to return semantic value and location from the action routines. */ ExprSpecYYSTYPE ExprSpecval; ExprSpecYYLTYPE ExprSpecloc; /* The locations where the error started and ended. */ ExprSpecYYLTYPE ExprSpecerror_range[3]; #define ExprSpecYYPOPSTACK(N) (ExprSpecvsp -= (N), ExprSpecssp -= (N), ExprSpeclsp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int ExprSpeclen = 0; ExprSpecYYDPRINTF ((stderr, "Starting parse\n")); ExprSpecchar = ExprSpecYYEMPTY; /* Cause a token to be read. */ ExprSpeclsp[0] = ExprSpeclloc; goto ExprSpecsetstate; /*------------------------------------------------------------. | ExprSpecnewstate -- push a new state, which is found in ExprSpecstate. | `------------------------------------------------------------*/ ExprSpecnewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ ExprSpecssp++; /*--------------------------------------------------------------------. | ExprSpecsetstate -- set current state (the top of the stack) to ExprSpecstate. | `--------------------------------------------------------------------*/ ExprSpecsetstate: ExprSpecYYDPRINTF ((stderr, "Entering state %d\n", ExprSpecstate)); ExprSpecYY_ASSERT (0 <= ExprSpecstate && ExprSpecstate < ExprSpecYYNSTATES); ExprSpecYY_IGNORE_USELESS_CAST_BEGIN *ExprSpecssp = ExprSpecYY_CAST (ExprSpec_state_t, ExprSpecstate); ExprSpecYY_IGNORE_USELESS_CAST_END ExprSpecYY_STACK_PRINT (ExprSpecss, ExprSpecssp); if (ExprSpecss + ExprSpecstacksize - 1 <= ExprSpecssp) #if !defined ExprSpecoverflow && !defined ExprSpecYYSTACK_RELOCATE goto ExprSpecexhaustedlab; #else { /* Get the current used size of the three stacks, in elements. */ ExprSpecYYPTRDIFF_T ExprSpecsize = ExprSpecssp - ExprSpecss + 1; # if defined ExprSpecoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ ExprSpec_state_t *ExprSpecss1 = ExprSpecss; ExprSpecYYSTYPE *ExprSpecvs1 = ExprSpecvs; ExprSpecYYLTYPE *ExprSpecls1 = ExprSpecls; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if ExprSpecoverflow is a macro. */ ExprSpecoverflow (ExprSpecYY_("memory exhausted"), &ExprSpecss1, ExprSpecsize * ExprSpecYYSIZEOF (*ExprSpecssp), &ExprSpecvs1, ExprSpecsize * ExprSpecYYSIZEOF (*ExprSpecvsp), &ExprSpecls1, ExprSpecsize * ExprSpecYYSIZEOF (*ExprSpeclsp), &ExprSpecstacksize); ExprSpecss = ExprSpecss1; ExprSpecvs = ExprSpecvs1; ExprSpecls = ExprSpecls1; } # else /* defined ExprSpecYYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (ExprSpecYYMAXDEPTH <= ExprSpecstacksize) goto ExprSpecexhaustedlab; ExprSpecstacksize *= 2; if (ExprSpecYYMAXDEPTH < ExprSpecstacksize) ExprSpecstacksize = ExprSpecYYMAXDEPTH; { ExprSpec_state_t *ExprSpecss1 = ExprSpecss; union ExprSpecalloc *ExprSpecptr = ExprSpecYY_CAST (union ExprSpecalloc *, ExprSpecYYSTACK_ALLOC (ExprSpecYY_CAST (ExprSpecYYSIZE_T, ExprSpecYYSTACK_BYTES (ExprSpecstacksize)))); if (! ExprSpecptr) goto ExprSpecexhaustedlab; ExprSpecYYSTACK_RELOCATE (ExprSpecss_alloc, ExprSpecss); ExprSpecYYSTACK_RELOCATE (ExprSpecvs_alloc, ExprSpecvs); ExprSpecYYSTACK_RELOCATE (ExprSpecls_alloc, ExprSpecls); # undef ExprSpecYYSTACK_RELOCATE if (ExprSpecss1 != ExprSpecssa) ExprSpecYYSTACK_FREE (ExprSpecss1); } # endif ExprSpecssp = ExprSpecss + ExprSpecsize - 1; ExprSpecvsp = ExprSpecvs + ExprSpecsize - 1; ExprSpeclsp = ExprSpecls + ExprSpecsize - 1; ExprSpecYY_IGNORE_USELESS_CAST_BEGIN ExprSpecYYDPRINTF ((stderr, "Stack size increased to %ld\n", ExprSpecYY_CAST (long, ExprSpecstacksize))); ExprSpecYY_IGNORE_USELESS_CAST_END if (ExprSpecss + ExprSpecstacksize - 1 <= ExprSpecssp) ExprSpecYYABORT; } #endif /* !defined ExprSpecoverflow && !defined ExprSpecYYSTACK_RELOCATE */ if (ExprSpecstate == ExprSpecYYFINAL) ExprSpecYYACCEPT; goto ExprSpecbackup; /*-----------. | ExprSpecbackup. | `-----------*/ ExprSpecbackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ ExprSpecn = ExprSpecpact[ExprSpecstate]; if (ExprSpecpact_value_is_default (ExprSpecn)) goto ExprSpecdefault; /* Not known => get a lookahead token if don't already have one. */ /* ExprSpecYYCHAR is either empty, or end-of-input, or a valid lookahead. */ if (ExprSpecchar == ExprSpecYYEMPTY) { ExprSpecYYDPRINTF ((stderr, "Reading a token\n")); ExprSpecchar = ExprSpeclex (); } if (ExprSpecchar <= ExprSpecYYEOF) { ExprSpecchar = ExprSpecYYEOF; ExprSpectoken = ExprSpecYYSYMBOL_ExprSpecYYEOF; ExprSpecYYDPRINTF ((stderr, "Now at end of input.\n")); } else if (ExprSpecchar == ExprSpecYYerror) { /* The scanner already issued an error message, process directly to error recovery. But do not keep the error token as lookahead, it is too special and may lead us to an endless loop in error recovery. */ ExprSpecchar = ExprSpecYYUNDEF; ExprSpectoken = ExprSpecYYSYMBOL_ExprSpecYYerror; ExprSpecerror_range[1] = ExprSpeclloc; goto ExprSpecerrlab1; } else { ExprSpectoken = ExprSpecYYTRANSLATE (ExprSpecchar); ExprSpecYY_SYMBOL_PRINT ("Next token is", ExprSpectoken, &ExprSpeclval, &ExprSpeclloc); } /* If the proper action on seeing token ExprSpecYYTOKEN is to reduce or to detect an error, take that action. */ ExprSpecn += ExprSpectoken; if (ExprSpecn < 0 || ExprSpecYYLAST < ExprSpecn || ExprSpeccheck[ExprSpecn] != ExprSpectoken) goto ExprSpecdefault; ExprSpecn = ExprSpectable[ExprSpecn]; if (ExprSpecn <= 0) { if (ExprSpectable_value_is_error (ExprSpecn)) goto ExprSpecerrlab; ExprSpecn = -ExprSpecn; goto ExprSpecreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (ExprSpecerrstatus) ExprSpecerrstatus--; /* Shift the lookahead token. */ ExprSpecYY_SYMBOL_PRINT ("Shifting", ExprSpectoken, &ExprSpeclval, &ExprSpeclloc); ExprSpecstate = ExprSpecn; ExprSpecYY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++ExprSpecvsp = ExprSpeclval; ExprSpecYY_IGNORE_MAYBE_UNINITIALIZED_END *++ExprSpeclsp = ExprSpeclloc; /* Discard the shifted token. */ ExprSpecchar = ExprSpecYYEMPTY; goto ExprSpecnewstate; /*-----------------------------------------------------------. | ExprSpecdefault -- do the default action for the current state. | `-----------------------------------------------------------*/ ExprSpecdefault: ExprSpecn = ExprSpecdefact[ExprSpecstate]; if (ExprSpecn == 0) goto ExprSpecerrlab; goto ExprSpecreduce; /*-----------------------------. | ExprSpecreduce -- do a reduction. | `-----------------------------*/ ExprSpecreduce: /* ExprSpecn is the number of a rule to reduce with. */ ExprSpeclen = ExprSpecr2[ExprSpecn]; /* If ExprSpecYYLEN is nonzero, implement the default value of the action: '$$ = $1'. Otherwise, the following line sets ExprSpecYYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to ExprSpecYYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that ExprSpecYYVAL may be used uninitialized. */ ExprSpecval = ExprSpecvsp[1-ExprSpeclen]; /* Default location. */ ExprSpecYYLLOC_DEFAULT (ExprSpecloc, (ExprSpeclsp - ExprSpeclen), ExprSpeclen); ExprSpecerror_range[1] = ExprSpecloc; ExprSpecYY_REDUCE_PRINT (ExprSpecn); switch (ExprSpecn) { case 2: /* expr: assigns e */ #line 223 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { ParseResult = 0; } #line 1669 "y.tab.c" break; case 3: /* expr: e */ #line 224 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { ParseResult = 0; } #line 1675 "y.tab.c" break; case 4: /* optassigns: %empty */ #line 229 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1681 "y.tab.c" break; case 5: /* optassigns: assigns */ #line 230 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1687 "y.tab.c" break; case 6: /* assigns: assign */ #line 234 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1693 "y.tab.c" break; case 7: /* assigns: assigns assign */ #line 235 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1699 "y.tab.c" break; case 8: /* assign: ifthenelse */ #line 240 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1705 "y.tab.c" break; case 9: /* assign: VAR '=' e ';' */ #line 241 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { specRegisterVariable((ExprSpecvsp[-3].s)); specRegisterEditable((ExprSpecvsp[-3].s),(ExprSpecvsp[-1].n)); } #line 1714 "y.tab.c" break; case 10: /* assign: VAR AddEq e ';' */ #line 245 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1720 "y.tab.c" break; case 11: /* assign: VAR SubEq e ';' */ #line 246 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1726 "y.tab.c" break; case 12: /* assign: VAR MultEq e ';' */ #line 247 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1732 "y.tab.c" break; case 13: /* assign: VAR DivEq e ';' */ #line 248 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1738 "y.tab.c" break; case 14: /* assign: VAR ExpEq e ';' */ #line 249 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1744 "y.tab.c" break; case 15: /* assign: VAR ModEq e ';' */ #line 250 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1750 "y.tab.c" break; case 16: /* assign: NAME '=' e ';' */ #line 251 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { specRegisterVariable((ExprSpecvsp[-3].s)); specRegisterEditable((ExprSpecvsp[-3].s),(ExprSpecvsp[-1].n)); } #line 1759 "y.tab.c" break; case 17: /* assign: NAME AddEq e ';' */ #line 255 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1765 "y.tab.c" break; case 18: /* assign: NAME SubEq e ';' */ #line 256 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1771 "y.tab.c" break; case 19: /* assign: NAME MultEq e ';' */ #line 257 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1777 "y.tab.c" break; case 20: /* assign: NAME DivEq e ';' */ #line 258 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1783 "y.tab.c" break; case 21: /* assign: NAME ExpEq e ';' */ #line 259 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1789 "y.tab.c" break; case 22: /* assign: NAME ModEq e ';' */ #line 260 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1795 "y.tab.c" break; case 23: /* ifthenelse: IF '(' e ')' '{' optassigns '}' optelse */ #line 265 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1801 "y.tab.c" break; case 24: /* optelse: %empty */ #line 269 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1807 "y.tab.c" break; case 25: /* optelse: ELSE '{' optassigns '}' */ #line 270 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0;} #line 1813 "y.tab.c" break; case 26: /* optelse: ELSE ifthenelse */ #line 271 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0;} #line 1819 "y.tab.c" break; case 27: /* e: '(' e ')' */ #line 276 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1825 "y.tab.c" break; case 28: /* e: '[' e ',' e ',' e ']' */ #line 277 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { if(SPEC_IS_NUMBER((ExprSpecvsp[-5].n)) && SPEC_IS_NUMBER((ExprSpecvsp[-3].n)) && SPEC_IS_NUMBER((ExprSpecvsp[-1].n))){ (ExprSpecval.n)=remember(new ExprSpecVectorNode((ExprSpecloc).first_column,(ExprSpecloc).last_column,(ExprSpecvsp[-5].n),(ExprSpecvsp[-3].n),(ExprSpecvsp[-1].n))); }else (ExprSpecval.n)=0; } #line 1835 "y.tab.c" break; case 29: /* e: e '[' e ']' */ #line 282 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1841 "y.tab.c" break; case 30: /* e: e '?' e ':' e */ #line 283 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1847 "y.tab.c" break; case 31: /* e: e OR e */ #line 284 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1853 "y.tab.c" break; case 32: /* e: e AND e */ #line 285 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1859 "y.tab.c" break; case 33: /* e: e EQ e */ #line 286 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1865 "y.tab.c" break; case 34: /* e: e NE e */ #line 287 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1871 "y.tab.c" break; case 35: /* e: e '<' e */ #line 288 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1877 "y.tab.c" break; case 36: /* e: e '>' e */ #line 289 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1883 "y.tab.c" break; case 37: /* e: e LE e */ #line 290 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1889 "y.tab.c" break; case 38: /* e: e GE e */ #line 291 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1895 "y.tab.c" break; case 39: /* e: '+' e */ #line 292 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = (ExprSpecvsp[0].n); } #line 1901 "y.tab.c" break; case 40: /* e: '-' e */ #line 293 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { if(SPEC_IS_NUMBER((ExprSpecvsp[0].n))){ ExprSpecScalarNode* node=(ExprSpecScalarNode*)(ExprSpecvsp[0].n); node->v*=-1; node->startPos=(ExprSpecloc).first_column; node->endPos=(ExprSpecloc).last_column; (ExprSpecval.n)=(ExprSpecvsp[0].n); }else (ExprSpecval.n)=0; } #line 1915 "y.tab.c" break; case 41: /* e: '!' e */ #line 302 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1921 "y.tab.c" break; case 42: /* e: '~' e */ #line 303 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1927 "y.tab.c" break; case 43: /* e: e '+' e */ #line 304 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1933 "y.tab.c" break; case 44: /* e: e '-' e */ #line 305 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1939 "y.tab.c" break; case 45: /* e: e '*' e */ #line 306 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1945 "y.tab.c" break; case 46: /* e: e '/' e */ #line 307 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1951 "y.tab.c" break; case 47: /* e: e '%' e */ #line 308 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1957 "y.tab.c" break; case 48: /* e: e '^' e */ #line 309 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 1963 "y.tab.c" break; case 49: /* e: NAME '(' optargs ')' */ #line 310 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { if((ExprSpecvsp[-1].n) && strcmp((ExprSpecvsp[-3].s),"curve")==0){ (ExprSpecval.n)=remember(new ExprSpecCurveNode((ExprSpecvsp[-1].n))); }else if((ExprSpecvsp[-1].n) && strcmp((ExprSpecvsp[-3].s),"ccurve")==0){ (ExprSpecval.n)=remember(new ExprSpecCCurveNode((ExprSpecvsp[-1].n))); }else if((ExprSpecvsp[-1].n) && strcmp((ExprSpecvsp[-3].s),"swatch")==0){ (ExprSpecval.n)=remember(new ExprSpecColorSwatchNode((ExprSpecvsp[-1].n))); }else if((ExprSpecvsp[-1].n)){ // function arguments not parse of curve, ccurve, or animCurve // check if there are any string args that need to be made into controls // but be sure to return 0 as this parseable if(ExprSpecListNode* list=dynamic_cast((ExprSpecvsp[-1].n))){ for(size_t i=0;inodes.size();i++){ if(ExprSpecStringNode* str=dynamic_cast(list->nodes[i])){ specRegisterEditable("",str); } } } (ExprSpecval.n)=0; }else (ExprSpecval.n)=0; } #line 1989 "y.tab.c" break; case 50: /* e: e ARROW NAME '(' optargs ')' */ #line 331 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" {(ExprSpecval.n) = 0; } #line 1995 "y.tab.c" break; case 51: /* e: VAR */ #line 332 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 2001 "y.tab.c" break; case 52: /* e: NAME */ #line 333 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0; } #line 2007 "y.tab.c" break; case 53: /* e: NUMBER */ #line 334 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n)=remember(new ExprSpecScalarNode((ExprSpecloc).first_column,(ExprSpecloc).last_column,(ExprSpecvsp[0].d))); } #line 2013 "y.tab.c" break; case 54: /* e: STR */ #line 335 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = remember(new ExprSpecStringNode((ExprSpecloc).first_column,(ExprSpecloc).last_column,(ExprSpecvsp[0].s))); } #line 2019 "y.tab.c" break; case 55: /* optargs: %empty */ #line 340 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = 0;} #line 2025 "y.tab.c" break; case 56: /* optargs: args */ #line 341 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = (ExprSpecvsp[0].n);} #line 2031 "y.tab.c" break; case 57: /* args: arg */ #line 346 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { // ignore first argument unless it is a string (because we parse strings in weird ways) ExprSpecListNode* list=new ExprSpecListNode((ExprSpecloc).last_column,(ExprSpecloc).last_column); if((ExprSpecvsp[0].n) && SPEC_IS_STR((ExprSpecvsp[0].n))){ list->add((ExprSpecvsp[0].n)); } remember(list); (ExprSpecval.n)=list; } #line 2045 "y.tab.c" break; case 58: /* args: args ',' arg */ #line 355 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { if((ExprSpecvsp[-2].n) && (ExprSpecvsp[0].n) && ((SPEC_IS_NUMBER((ExprSpecvsp[0].n)) || SPEC_IS_VECTOR((ExprSpecvsp[0].n)) || SPEC_IS_STR((ExprSpecvsp[0].n))))){ (ExprSpecval.n)=(ExprSpecvsp[-2].n); dynamic_cast((ExprSpecvsp[-2].n))->add((ExprSpecvsp[0].n)); }else{ (ExprSpecval.n)=0; } } #line 2059 "y.tab.c" break; case 59: /* arg: e */ #line 367 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" { (ExprSpecval.n) = (ExprSpecvsp[0].n);} #line 2065 "y.tab.c" break; #line 2069 "y.tab.c" default: break; } /* User semantic actions sometimes alter ExprSpecchar, and that requires that ExprSpectoken be updated with the new translation. We take the approach of translating immediately before every use of ExprSpectoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes ExprSpecYYABORT, ExprSpecYYACCEPT, or ExprSpecYYERROR immediately after altering ExprSpecchar or if it invokes ExprSpecYYBACKUP. In the case of ExprSpecYYABORT or ExprSpecYYACCEPT, an incorrect destructor might then be invoked immediately. In the case of ExprSpecYYERROR or ExprSpecYYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ ExprSpecYY_SYMBOL_PRINT ("-> $$ =", ExprSpecYY_CAST (ExprSpecsymbol_kind_t, ExprSpecr1[ExprSpecn]), &ExprSpecval, &ExprSpecloc); ExprSpecYYPOPSTACK (ExprSpeclen); ExprSpeclen = 0; *++ExprSpecvsp = ExprSpecval; *++ExprSpeclsp = ExprSpecloc; /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ { const int ExprSpeclhs = ExprSpecr1[ExprSpecn] - ExprSpecYYNTOKENS; const int ExprSpeci = ExprSpecpgoto[ExprSpeclhs] + *ExprSpecssp; ExprSpecstate = (0 <= ExprSpeci && ExprSpeci <= ExprSpecYYLAST && ExprSpeccheck[ExprSpeci] == *ExprSpecssp ? ExprSpectable[ExprSpeci] : ExprSpecdefgoto[ExprSpeclhs]); } goto ExprSpecnewstate; /*--------------------------------------. | ExprSpecerrlab -- here on detecting error. | `--------------------------------------*/ ExprSpecerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ ExprSpectoken = ExprSpecchar == ExprSpecYYEMPTY ? ExprSpecYYSYMBOL_ExprSpecYYEMPTY : ExprSpecYYTRANSLATE (ExprSpecchar); /* If not already recovering from an error, report this error. */ if (!ExprSpecerrstatus) { ++ExprSpecnerrs; ExprSpecerror (ExprSpecYY_("syntax error")); } ExprSpecerror_range[1] = ExprSpeclloc; if (ExprSpecerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (ExprSpecchar <= ExprSpecYYEOF) { /* Return failure if at end of input. */ if (ExprSpecchar == ExprSpecYYEOF) ExprSpecYYABORT; } else { ExprSpecdestruct ("Error: discarding", ExprSpectoken, &ExprSpeclval, &ExprSpeclloc); ExprSpecchar = ExprSpecYYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto ExprSpecerrlab1; /*---------------------------------------------------. | ExprSpecerrorlab -- error raised explicitly by ExprSpecYYERROR. | `---------------------------------------------------*/ ExprSpecerrorlab: /* Pacify compilers when the user code never invokes ExprSpecYYERROR and the label ExprSpecerrorlab therefore never appears in user code. */ if (0) ExprSpecYYERROR; /* Do not reclaim the symbols of the rule whose action triggered this ExprSpecYYERROR. */ ExprSpecYYPOPSTACK (ExprSpeclen); ExprSpeclen = 0; ExprSpecYY_STACK_PRINT (ExprSpecss, ExprSpecssp); ExprSpecstate = *ExprSpecssp; goto ExprSpecerrlab1; /*-------------------------------------------------------------. | ExprSpecerrlab1 -- common code for both syntax error and ExprSpecYYERROR. | `-------------------------------------------------------------*/ ExprSpecerrlab1: ExprSpecerrstatus = 3; /* Each real token shifted decrements this. */ /* Pop stack until we find a state that shifts the error token. */ for (;;) { ExprSpecn = ExprSpecpact[ExprSpecstate]; if (!ExprSpecpact_value_is_default (ExprSpecn)) { ExprSpecn += ExprSpecYYSYMBOL_ExprSpecYYerror; if (0 <= ExprSpecn && ExprSpecn <= ExprSpecYYLAST && ExprSpeccheck[ExprSpecn] == ExprSpecYYSYMBOL_ExprSpecYYerror) { ExprSpecn = ExprSpectable[ExprSpecn]; if (0 < ExprSpecn) break; } } /* Pop the current state because it cannot handle the error token. */ if (ExprSpecssp == ExprSpecss) ExprSpecYYABORT; ExprSpecerror_range[1] = *ExprSpeclsp; ExprSpecdestruct ("Error: popping", ExprSpecYY_ACCESSING_SYMBOL (ExprSpecstate), ExprSpecvsp, ExprSpeclsp); ExprSpecYYPOPSTACK (1); ExprSpecstate = *ExprSpecssp; ExprSpecYY_STACK_PRINT (ExprSpecss, ExprSpecssp); } ExprSpecYY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++ExprSpecvsp = ExprSpeclval; ExprSpecYY_IGNORE_MAYBE_UNINITIALIZED_END ExprSpecerror_range[2] = ExprSpeclloc; ++ExprSpeclsp; ExprSpecYYLLOC_DEFAULT (*ExprSpeclsp, ExprSpecerror_range, 2); /* Shift the error token. */ ExprSpecYY_SYMBOL_PRINT ("Shifting", ExprSpecYY_ACCESSING_SYMBOL (ExprSpecn), ExprSpecvsp, ExprSpeclsp); ExprSpecstate = ExprSpecn; goto ExprSpecnewstate; /*-------------------------------------. | ExprSpecacceptlab -- ExprSpecYYACCEPT comes here. | `-------------------------------------*/ ExprSpecacceptlab: ExprSpecresult = 0; goto ExprSpecreturn; /*-----------------------------------. | ExprSpecabortlab -- ExprSpecYYABORT comes here. | `-----------------------------------*/ ExprSpecabortlab: ExprSpecresult = 1; goto ExprSpecreturn; #if !defined ExprSpecoverflow /*-------------------------------------------------. | ExprSpecexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ ExprSpecexhaustedlab: ExprSpecerror (ExprSpecYY_("memory exhausted")); ExprSpecresult = 2; goto ExprSpecreturn; #endif /*-------------------------------------------------------. | ExprSpecreturn -- parsing is finished, clean up and return. | `-------------------------------------------------------*/ ExprSpecreturn: if (ExprSpecchar != ExprSpecYYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ ExprSpectoken = ExprSpecYYTRANSLATE (ExprSpecchar); ExprSpecdestruct ("Cleanup: discarding lookahead", ExprSpectoken, &ExprSpeclval, &ExprSpeclloc); } /* Do not reclaim the symbols of the rule whose action triggered this ExprSpecYYABORT or ExprSpecYYACCEPT. */ ExprSpecYYPOPSTACK (ExprSpeclen); ExprSpecYY_STACK_PRINT (ExprSpecss, ExprSpecssp); while (ExprSpecssp != ExprSpecss) { ExprSpecdestruct ("Cleanup: popping", ExprSpecYY_ACCESSING_SYMBOL (+*ExprSpecssp), ExprSpecvsp, ExprSpeclsp); ExprSpecYYPOPSTACK (1); } #ifndef ExprSpecoverflow if (ExprSpecss != ExprSpecssa) ExprSpecYYSTACK_FREE (ExprSpecss); #endif return ExprSpecresult; } #line 370 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" /* ExprSpecerror - Report an error. This is called by the parser. (Note: the "msg" param is useless as it is usually just "sparse error". so it's ignored.) */ static void ExprSpecerror(const char* /*msg*/) { // find start of line containing error int pos = ExprSpecpos(), lineno = 1, start = 0, end = strlen(ParseStr); bool multiline = 0; for (int i = start; i < pos; i++) if (ParseStr[i] == '\n') { start = i + 1; lineno++; multiline=1; } // find end of line containing error for (int i = end; i > pos; i--) if (ParseStr[i] == '\n') { end = i - 1; multiline=1; } ParseError = ExprSpectext[0] ? "Syntax error" : "Unexpected end of expression"; if (multiline) { char buff[30]; snprintf(buff, 30, " at line %d", lineno); ParseError += buff; } if (ExprSpectext[0]) { ParseError += " near '"; ParseError += ExprSpectext; } ParseError += "':\n "; int s = std::max(start, pos-30); int e = std::min(end, pos+30); if (s != start) ParseError += "..."; ParseError += std::string(ParseStr, s, e-s+1); if (e != end) ParseError += "..."; } namespace KSeExpr { extern void specResetCounters(std::vector >& comments); } /* CallParser - This is our entrypoint from the rest of the expr library. A string is passed in and a parse tree is returned. If the tree is null, an error string is returned. Any flags set during parsing are passed along. */ static std::mutex mutex; /// Main entry point to parser bool ExprSpecParse(std::vector& outputEditables, std::vector& outputVariables, std::vector >& comments, const char* str) { std::lock_guard locker(mutex); /// Make inputs/outputs accessible to parser actions editables=&outputEditables; variables=&outputVariables; ParseStr=str; // setup and startup parser KSeExpr::specResetCounters(comments); // reset lineNumber and columnNumber in scanner ExprSpec_buffer_state* buffer = ExprSpec_scan_string(str); // setup lexer ParseResult = 0; int resultCode = ExprSpecparse(); // parser (don't care if it is a parse error) UNUSED(resultCode); ExprSpec_delete_buffer(buffer); // delete temporary data -- specs(mini parse tree) and tokens(strings)! for(size_t i=0;i. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, especially those whose name start with ExprSpecYY_ or ExprSpec_. They are private implementation details that can be changed or removed. */ #ifndef ExprSpecYY_EXPRSPEC_Y_TAB_H_INCLUDED # define ExprSpecYY_EXPRSPEC_Y_TAB_H_INCLUDED /* Debug traces. */ #ifndef ExprSpecYYDEBUG # define ExprSpecYYDEBUG 0 #endif #if ExprSpecYYDEBUG extern int ExprSpecdebug; #endif /* Token kinds. */ #ifndef ExprSpecYYTOKENTYPE # define ExprSpecYYTOKENTYPE enum ExprSpectokentype { ExprSpecYYEMPTY = -2, ExprSpecYYEOF = 0, /* "end of file" */ ExprSpecYYerror = 256, /* error */ ExprSpecYYUNDEF = 257, /* "invalid token" */ IF = 258, /* IF */ ELSE = 259, /* ELSE */ NAME = 260, /* NAME */ VAR = 261, /* VAR */ STR = 262, /* STR */ NUMBER = 263, /* NUMBER */ AddEq = 264, /* AddEq */ SubEq = 265, /* SubEq */ MultEq = 266, /* MultEq */ DivEq = 267, /* DivEq */ ExpEq = 268, /* ExpEq */ ModEq = 269, /* ModEq */ ARROW = 270, /* ARROW */ OR = 271, /* OR */ AND = 272, /* AND */ EQ = 273, /* EQ */ NE = 274, /* NE */ LE = 275, /* LE */ GE = 276, /* GE */ UNARY = 277 /* UNARY */ }; typedef enum ExprSpectokentype ExprSpectoken_kind_t; #endif /* Value type. */ #if ! defined ExprSpecYYSTYPE && ! defined ExprSpecYYSTYPE_IS_DECLARED union ExprSpecYYSTYPE { #line 181 "@@PATH@@/src/KSeExprUI/ExprSpecParser.y" ExprSpecNode* n; double d; // return value for number tokens char* s; /* return value for name tokens. Note: UNLIKE the regular parser, this is not strdup()'dthe string */ #line 92 "y.tab.h" }; typedef union ExprSpecYYSTYPE ExprSpecYYSTYPE; # define ExprSpecYYSTYPE_IS_TRIVIAL 1 # define ExprSpecYYSTYPE_IS_DECLARED 1 #endif /* Location type. */ #if ! defined ExprSpecYYLTYPE && ! defined ExprSpecYYLTYPE_IS_DECLARED typedef struct ExprSpecYYLTYPE ExprSpecYYLTYPE; struct ExprSpecYYLTYPE { int first_line; int first_column; int last_line; int last_column; }; # define ExprSpecYYLTYPE_IS_DECLARED 1 # define ExprSpecYYLTYPE_IS_TRIVIAL 1 #endif extern ExprSpecYYSTYPE ExprSpeclval; extern ExprSpecYYLTYPE ExprSpeclloc; int ExprSpecparse (void); #endif /* !ExprSpecYY_EXPRSPEC_Y_TAB_H_INCLUDED */ kseexpr-4.0.4.0/generated/KSeExprUI/ExprSpecParserLex.cpp0000644000000000000240000017101014156102631023141 0ustar00rootroot00000000000000#line 1 "ExprSpecParserLexIn.cpp" #line 3 "ExprSpecParserLexIn.cpp" #define ExprSpecYY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define ExprSpecYY_FLEX_MAJOR_VERSION 2 #define ExprSpecYY_FLEX_MINOR_VERSION 6 #define ExprSpecYY_FLEX_SUBMINOR_VERSION 4 #if ExprSpecYY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #ifndef SIZE_MAX #define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* begin standard C++ headers. */ /* TODO: this is always defined, so inline it */ #define ExprSpecconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define ExprSpecnoreturn __attribute__((__noreturn__)) #else #define ExprSpecnoreturn #endif /* Returned upon end-of-file. */ #define ExprSpecYY_NULL 0 /* Promotes a possibly negative, possibly signed char to an * integer in range [0..255] for use as an array index. */ #define ExprSpecYY_SC_TO_UI(c) ((ExprSpecYY_CHAR) (c)) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (ExprSpec_start) = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The ExprSpecYYSTATE alias is for lex * compatibility. */ #define ExprSpecYY_START (((ExprSpec_start) - 1) / 2) #define ExprSpecYYSTATE ExprSpecYY_START /* Action number for EOF rule of a given start state. */ #define ExprSpecYY_STATE_EOF(state) (ExprSpecYY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define ExprSpecYY_NEW_FILE ExprSpecrestart( ExprSpecin ) #define ExprSpecYY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef ExprSpecYY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, ExprSpecYY_BUF_SIZE is 2*ExprSpecYY_READ_BUF_SIZE in the general case. * Ditto for the __ia64__ case accordingly. */ #define ExprSpecYY_BUF_SIZE 32768 #else #define ExprSpecYY_BUF_SIZE 16384 #endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define ExprSpecYY_STATE_BUF_SIZE ((ExprSpecYY_BUF_SIZE + 2) * sizeof(ExprSpec_state_type)) #ifndef ExprSpecYY_TYPEDEF_ExprSpecYY_BUFFER_STATE #define ExprSpecYY_TYPEDEF_ExprSpecYY_BUFFER_STATE typedef struct ExprSpec_buffer_state *ExprSpecYY_BUFFER_STATE; #endif #ifndef ExprSpecYY_TYPEDEF_ExprSpecYY_SIZE_T #define ExprSpecYY_TYPEDEF_ExprSpecYY_SIZE_T typedef size_t ExprSpec_size_t; #endif extern int ExprSpecleng; extern FILE *ExprSpecin, *ExprSpecout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define ExprSpecYY_LESS_LINENO(n) #define ExprSpecYY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define ExprSpecless(n) \ do \ { \ /* Undo effects of setting up ExprSpectext. */ \ int ExprSpecless_macro_arg = (n); \ ExprSpecYY_LESS_LINENO(ExprSpecless_macro_arg);\ *ExprSpec_cp = (ExprSpec_hold_char); \ ExprSpecYY_RESTORE_ExprSpecYY_MORE_OFFSET \ (ExprSpec_c_buf_p) = ExprSpec_cp = ExprSpec_bp + ExprSpecless_macro_arg - ExprSpecYY_MORE_ADJ; \ ExprSpecYY_DO_BEFORE_ACTION; /* set up ExprSpectext again */ \ } \ while ( 0 ) #define unput(c) ExprSpecunput( c, (ExprSpectext_ptr) ) #ifndef ExprSpecYY_STRUCT_ExprSpecYY_BUFFER_STATE #define ExprSpecYY_STRUCT_ExprSpecYY_BUFFER_STATE struct ExprSpec_buffer_state { FILE *ExprSpec_input_file; char *ExprSpec_ch_buf; /* input buffer */ char *ExprSpec_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ int ExprSpec_buf_size; /* Number of characters read into ExprSpec_ch_buf, not including EOB * characters. */ int ExprSpec_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int ExprSpec_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int ExprSpec_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int ExprSpec_at_bol; int ExprSpec_bs_lineno; /**< The line count. */ int ExprSpec_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int ExprSpec_fill_buffer; int ExprSpec_buffer_status; #define ExprSpecYY_BUFFER_NEW 0 #define ExprSpecYY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as ExprSpecYY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via ExprSpecrestart()), so that the user can continue scanning by * just pointing ExprSpecin at a new input file. */ #define ExprSpecYY_BUFFER_EOF_PENDING 2 }; #endif /* !ExprSpecYY_STRUCT_ExprSpecYY_BUFFER_STATE */ /* Stack of input buffers. */ static size_t ExprSpec_buffer_stack_top = 0; /**< index of top of stack. */ static size_t ExprSpec_buffer_stack_max = 0; /**< capacity of stack. */ static ExprSpecYY_BUFFER_STATE * ExprSpec_buffer_stack = NULL; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define ExprSpecYY_CURRENT_BUFFER ( (ExprSpec_buffer_stack) \ ? (ExprSpec_buffer_stack)[(ExprSpec_buffer_stack_top)] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define ExprSpecYY_CURRENT_BUFFER_LVALUE (ExprSpec_buffer_stack)[(ExprSpec_buffer_stack_top)] /* ExprSpec_hold_char holds the character lost when ExprSpectext is formed. */ static char ExprSpec_hold_char; static int ExprSpec_n_chars; /* number of characters read into ExprSpec_ch_buf */ int ExprSpecleng; /* Points to current character in buffer. */ static char *ExprSpec_c_buf_p = NULL; static int ExprSpec_init = 0; /* whether we need to initialize */ static int ExprSpec_start = 0; /* start state number */ /* Flag which is used to allow ExprSpecwrap()'s to do buffer switches * instead of setting up a fresh ExprSpecin. A bit of a hack ... */ static int ExprSpec_did_buffer_switch_on_eof; void ExprSpecrestart ( FILE *input_file ); void ExprSpec_switch_to_buffer ( ExprSpecYY_BUFFER_STATE new_buffer ); ExprSpecYY_BUFFER_STATE ExprSpec_create_buffer ( FILE *file, int size ); void ExprSpec_delete_buffer ( ExprSpecYY_BUFFER_STATE b ); void ExprSpec_flush_buffer ( ExprSpecYY_BUFFER_STATE b ); void ExprSpecpush_buffer_state ( ExprSpecYY_BUFFER_STATE new_buffer ); void ExprSpecpop_buffer_state ( void ); static void ExprSpecensure_buffer_stack ( void ); static void ExprSpec_load_buffer_state ( void ); static void ExprSpec_init_buffer ( ExprSpecYY_BUFFER_STATE b, FILE *file ); #define ExprSpecYY_FLUSH_BUFFER ExprSpec_flush_buffer( ExprSpecYY_CURRENT_BUFFER ) ExprSpecYY_BUFFER_STATE ExprSpec_scan_buffer ( char *base, ExprSpec_size_t size ); ExprSpecYY_BUFFER_STATE ExprSpec_scan_string ( const char *ExprSpec_str ); ExprSpecYY_BUFFER_STATE ExprSpec_scan_bytes ( const char *bytes, int len ); void *ExprSpecalloc ( ExprSpec_size_t ); void *ExprSpecrealloc ( void *, ExprSpec_size_t ); void ExprSpecfree ( void * ); #define ExprSpec_new_buffer ExprSpec_create_buffer #define ExprSpec_set_interactive(is_interactive) \ { \ if ( ! ExprSpecYY_CURRENT_BUFFER ){ \ ExprSpecensure_buffer_stack (); \ ExprSpecYY_CURRENT_BUFFER_LVALUE = \ ExprSpec_create_buffer( ExprSpecin, ExprSpecYY_BUF_SIZE ); \ } \ ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_is_interactive = is_interactive; \ } #define ExprSpec_set_bol(at_bol) \ { \ if ( ! ExprSpecYY_CURRENT_BUFFER ){\ ExprSpecensure_buffer_stack (); \ ExprSpecYY_CURRENT_BUFFER_LVALUE = \ ExprSpec_create_buffer( ExprSpecin, ExprSpecYY_BUF_SIZE ); \ } \ ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_at_bol = at_bol; \ } #define ExprSpecYY_AT_BOL() (ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_at_bol) /* Begin user sect3 */ #define ExprSpecwrap() (/*CONSTCOND*/1) #define ExprSpecYY_SKIP_ExprSpecYYWRAP typedef flex_uint8_t ExprSpecYY_CHAR; FILE *ExprSpecin = NULL, *ExprSpecout = NULL; typedef int ExprSpec_state_type; extern int ExprSpeclineno; int ExprSpeclineno = 1; extern char *ExprSpectext; #ifdef ExprSpectext_ptr #undef ExprSpectext_ptr #endif #define ExprSpectext_ptr ExprSpectext static ExprSpec_state_type ExprSpec_get_previous_state ( void ); static ExprSpec_state_type ExprSpec_try_NUL_trans ( ExprSpec_state_type current_state ); static int ExprSpec_get_next_buffer ( void ); static void ExprSpecnoreturn ExprSpec_fatal_error ( const char* msg ); /* Done after the current pattern has been matched and before the * corresponding action - sets up ExprSpectext. */ #define ExprSpecYY_DO_BEFORE_ACTION \ (ExprSpectext_ptr) = ExprSpec_bp; \ ExprSpecleng = (int) (ExprSpec_cp - ExprSpec_bp); \ (ExprSpec_hold_char) = *ExprSpec_cp; \ *ExprSpec_cp = '\0'; \ (ExprSpec_c_buf_p) = ExprSpec_cp; #define ExprSpecYY_NUM_RULES 34 #define ExprSpecYY_END_OF_BUFFER 35 /* This struct is not used in this scanner, but its presence is necessary. */ struct ExprSpec_trans_info { flex_int32_t ExprSpec_verify; flex_int32_t ExprSpec_nxt; }; static const flex_int16_t ExprSpec_accept[115] = { 0, 0, 0, 35, 33, 31, 31, 33, 33, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 23, 33, 33, 33, 28, 28, 18, 28, 33, 33, 28, 28, 28, 28, 28, 28, 33, 7, 0, 24, 0, 32, 0, 26, 15, 5, 0, 25, 0, 13, 11, 12, 10, 23, 14, 23, 23, 0, 8, 6, 9, 28, 28, 17, 29, 30, 16, 28, 28, 28, 2, 28, 28, 4, 24, 26, 0, 25, 0, 23, 0, 0, 23, 28, 22, 28, 28, 28, 28, 0, 0, 23, 0, 0, 23, 28, 3, 28, 28, 28, 27, 0, 23, 28, 28, 28, 28, 27, 28, 28, 19, 20, 1, 28, 21, 0 } ; static const ExprSpecYY_CHAR ExprSpec_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 5, 6, 7, 8, 9, 10, 1, 1, 11, 12, 1, 13, 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 1, 1, 23, 24, 23, 23, 25, 23, 26, 23, 27, 23, 23, 23, 23, 28, 23, 29, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 1, 30, 1, 31, 23, 1, 32, 33, 23, 23, 34, 35, 36, 37, 38, 23, 23, 39, 40, 41, 42, 23, 23, 43, 44, 45, 46, 23, 23, 47, 23, 23, 1, 48, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static const ExprSpecYY_CHAR ExprSpec_meta[49] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 3, 4, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1 } ; static const flex_int16_t ExprSpec_base[123] = { 0, 0, 0, 193, 194, 194, 194, 171, 44, 161, 0, 169, 180, 40, 167, 166, 30, 37, 165, 41, 164, 163, 162, 0, 157, 0, 154, 15, 159, 137, 139, 145, 141, 137, 134, 125, 194, 54, 194, 56, 142, 130, 152, 194, 194, 52, 194, 53, 194, 194, 194, 194, 51, 194, 55, 74, 80, 194, 194, 194, 0, 143, 0, 194, 194, 194, 121, 123, 120, 0, 124, 122, 194, 64, 145, 144, 68, 88, 86, 97, 48, 90, 134, 0, 126, 115, 124, 115, 0, 99, 101, 109, 107, 111, 127, 0, 105, 112, 94, 0, 113, 115, 118, 81, 69, 58, 0, 68, 49, 0, 0, 194, 38, 0, 194, 132, 137, 72, 142, 145, 148, 68, 151 } ; static const flex_int16_t ExprSpec_def[123] = { 0, 114, 1, 114, 114, 114, 114, 114, 115, 116, 117, 114, 114, 118, 114, 114, 114, 114, 114, 114, 114, 114, 114, 119, 119, 119, 119, 114, 114, 119, 119, 119, 119, 119, 119, 114, 114, 115, 114, 115, 116, 116, 120, 114, 114, 118, 114, 118, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 119, 119, 119, 114, 114, 114, 119, 119, 119, 119, 119, 119, 114, 115, 120, 114, 118, 114, 114, 114, 114, 114, 119, 119, 119, 119, 119, 119, 121, 114, 114, 114, 114, 114, 119, 119, 119, 119, 119, 122, 114, 114, 119, 119, 119, 119, 122, 119, 119, 119, 119, 114, 119, 119, 0, 114, 114, 114, 114, 114, 114, 114, 114 } ; static const flex_int16_t ExprSpec_nxt[243] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 4, 4, 20, 21, 22, 23, 24, 25, 23, 23, 23, 26, 27, 28, 23, 29, 30, 23, 31, 23, 32, 33, 23, 23, 23, 23, 34, 23, 23, 23, 35, 38, 46, 50, 51, 52, 52, 54, 63, 55, 55, 38, 64, 73, 46, 76, 81, 81, 56, 52, 52, 38, 47, 78, 78, 99, 39, 56, 77, 42, 46, 113, 79, 112, 47, 47, 39, 77, 39, 111, 54, 79, 55, 55, 80, 80, 39, 110, 81, 81, 47, 56, 89, 89, 78, 78, 90, 90, 81, 81, 56, 92, 92, 91, 109, 93, 93, 90, 90, 90, 90, 108, 91, 100, 100, 93, 93, 101, 101, 93, 93, 101, 101, 101, 101, 37, 107, 37, 37, 37, 40, 105, 40, 40, 40, 45, 104, 45, 45, 45, 60, 103, 60, 74, 74, 74, 106, 102, 106, 98, 97, 96, 95, 94, 88, 75, 87, 86, 85, 84, 83, 82, 75, 114, 41, 72, 71, 70, 69, 68, 67, 66, 65, 62, 61, 59, 58, 57, 53, 49, 48, 44, 43, 41, 36, 114, 3, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114 } ; static const flex_int16_t ExprSpec_chk[243] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 13, 16, 16, 17, 17, 19, 27, 19, 19, 37, 27, 39, 45, 47, 80, 80, 19, 52, 52, 73, 13, 54, 54, 121, 8, 19, 52, 117, 76, 112, 54, 108, 45, 47, 37, 52, 39, 107, 55, 54, 55, 55, 56, 56, 73, 105, 56, 56, 76, 55, 77, 77, 78, 78, 77, 77, 81, 81, 55, 79, 79, 78, 104, 79, 79, 89, 89, 90, 90, 103, 78, 91, 91, 92, 92, 91, 91, 93, 93, 100, 100, 101, 101, 115, 102, 115, 115, 115, 116, 98, 116, 116, 116, 118, 97, 118, 118, 118, 119, 96, 119, 120, 120, 120, 122, 94, 122, 87, 86, 85, 84, 82, 75, 74, 71, 70, 68, 67, 66, 61, 42, 41, 40, 35, 34, 33, 32, 31, 30, 29, 28, 26, 24, 22, 21, 20, 18, 15, 14, 12, 11, 9, 7, 3, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114 } ; static ExprSpec_state_type ExprSpec_last_accepting_state; static char *ExprSpec_last_accepting_cpos; extern int ExprSpec_flex_debug; int ExprSpec_flex_debug = 0; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define ExprSpecmore() ExprSpecmore_used_but_not_detected #define ExprSpecYY_MORE_ADJ 0 #define ExprSpecYY_RESTORE_ExprSpecYY_MORE_OFFSET char *ExprSpectext; #line 1 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" /** * SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. * SPDX-License-Identifier: LicenseRef-Apache-2.0 * SPDX-FileCopyrightText: 2020-2021 L. E. Segovia * SPDX-License-Identifier: GPL-3.0-or-later */ /* Don't generate ExprSpecwrap since everything is in one string */ /* Don't generate unput since it's unused and gcc complains... */ /* Don't generate input since it's unused too -- amyspark */ #define ExprSpecYY_NO_INPUT 1 /* Don't worry about interactive and using isatty(). Fixes Windows compile. */ #line 18 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" #include #include #include #include // If c++11 don't use register designator, lex and yacc need to go... #if __cplusplus > 199711L #define register // Deprecated in C++11. #endif // #if __cplusplus > 199711L #include "ExprSpecType.h" #include #ifdef SEEXPR_WIN32 # define ExprSpecYY_NO_UNISTD_H # define ExprSpecYY_SKIP_ExprSpecYYWRAP #endif #ifndef MAKEDEPEND # include "ExprSpecParser.tab.h" #endif // TODO: make this thread safe static int columnNumber=0; // really buffer position static int lineNumber=0; // not used static std::vector >* comments=0; extern char* specRegisterToken(char* tok); namespace KSeExpr { void specResetCounters(std::vector >& commentsIn){ columnNumber=lineNumber=0; comments=&commentsIn; } } int ExprSpecpos(); // forward declare #define ExprSpecYY_USER_ACTION { \ ExprSpeclloc.first_line=lineNumber;ExprSpeclloc.first_column=columnNumber; \ columnNumber+=ExprSpecleng;\ ExprSpeclloc.last_column=columnNumber;ExprSpeclloc.last_line=lineNumber;} #line 593 "ExprSpecParserLexIn.cpp" #line 594 "ExprSpecParserLexIn.cpp" #define INITIAL 0 #ifndef ExprSpecYY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef ExprSpecYY_EXTRA_TYPE #define ExprSpecYY_EXTRA_TYPE void * #endif static int ExprSpec_init_globals ( void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int ExprSpeclex_destroy ( void ); int ExprSpecget_debug ( void ); void ExprSpecset_debug ( int debug_flag ); ExprSpecYY_EXTRA_TYPE ExprSpecget_extra ( void ); void ExprSpecset_extra ( ExprSpecYY_EXTRA_TYPE user_defined ); FILE *ExprSpecget_in ( void ); void ExprSpecset_in ( FILE * _in_str ); FILE *ExprSpecget_out ( void ); void ExprSpecset_out ( FILE * _out_str ); int ExprSpecget_leng ( void ); char *ExprSpecget_text ( void ); int ExprSpecget_lineno ( void ); void ExprSpecset_lineno ( int _line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef ExprSpecYY_SKIP_ExprSpecYYWRAP #ifdef __cplusplus extern "C" int ExprSpecwrap ( void ); #else extern int ExprSpecwrap ( void ); #endif #endif #ifndef ExprSpecYY_NO_UNPUT #endif #ifndef ExprSpectext_ptr static void ExprSpec_flex_strncpy ( char *, const char *, int ); #endif #ifdef ExprSpecYY_NEED_STRLEN static int ExprSpec_flex_strlen ( const char * ); #endif #ifndef ExprSpecYY_NO_INPUT #ifdef __cplusplus static int ExprSpecinput ( void ); #else static int input ( void ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef ExprSpecYY_READ_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k */ #define ExprSpecYY_READ_BUF_SIZE 16384 #else #define ExprSpecYY_READ_BUF_SIZE 8192 #endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO do { if (fwrite( ExprSpectext, (size_t) ExprSpecleng, 1, ExprSpecout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or ExprSpecYY_NULL, * is returned in "result". */ #ifndef ExprSpecYY_INPUT #define ExprSpecYY_INPUT(buf,result,max_size) \ if ( ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_is_interactive ) \ { \ int c = '*'; \ int n; \ for ( n = 0; n < max_size && \ (c = getc( ExprSpecin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( ExprSpecin ) ) \ ExprSpecYY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = (int) fread(buf, 1, (ExprSpec_size_t) max_size, ExprSpecin)) == 0 && ferror(ExprSpecin)) \ { \ if( errno != EINTR) \ { \ ExprSpecYY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(ExprSpecin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "ExprSpecterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef ExprSpecterminate #define ExprSpecterminate() return ExprSpecYY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef ExprSpecYY_START_STACK_INCR #define ExprSpecYY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef ExprSpecYY_FATAL_ERROR #define ExprSpecYY_FATAL_ERROR(msg) ExprSpec_fatal_error( msg ) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef ExprSpecYY_DECL #define ExprSpecYY_DECL_IS_OURS 1 extern int ExprSpeclex (void); #define ExprSpecYY_DECL int ExprSpeclex (void) #endif /* !ExprSpecYY_DECL */ /* Code executed at the beginning of each rule, after ExprSpectext and ExprSpecleng * have been set up. */ #ifndef ExprSpecYY_USER_ACTION #define ExprSpecYY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef ExprSpecYY_BREAK #define ExprSpecYY_BREAK /*LINTED*/break; #endif #define ExprSpecYY_RULE_SETUP \ ExprSpecYY_USER_ACTION /** The main scanner function which does all the work. */ ExprSpecYY_DECL { ExprSpec_state_type ExprSpec_current_state; char *ExprSpec_cp, *ExprSpec_bp; int ExprSpec_act; if ( !(ExprSpec_init) ) { (ExprSpec_init) = 1; #ifdef ExprSpecYY_USER_INIT ExprSpecYY_USER_INIT; #endif if ( ! (ExprSpec_start) ) (ExprSpec_start) = 1; /* first start state */ if ( ! ExprSpecin ) ExprSpecin = stdin; if ( ! ExprSpecout ) ExprSpecout = stdout; if ( ! ExprSpecYY_CURRENT_BUFFER ) { ExprSpecensure_buffer_stack (); ExprSpecYY_CURRENT_BUFFER_LVALUE = ExprSpec_create_buffer( ExprSpecin, ExprSpecYY_BUF_SIZE ); } ExprSpec_load_buffer_state( ); } { #line 68 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" #line 811 "ExprSpecParserLexIn.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { ExprSpec_cp = (ExprSpec_c_buf_p); /* Support of ExprSpectext. */ *ExprSpec_cp = (ExprSpec_hold_char); /* ExprSpec_bp points to the position in ExprSpec_ch_buf of the start of * the current run. */ ExprSpec_bp = ExprSpec_cp; ExprSpec_current_state = (ExprSpec_start); ExprSpec_match: do { ExprSpecYY_CHAR ExprSpec_c = ExprSpec_ec[ExprSpecYY_SC_TO_UI(*ExprSpec_cp)] ; if ( ExprSpec_accept[ExprSpec_current_state] ) { (ExprSpec_last_accepting_state) = ExprSpec_current_state; (ExprSpec_last_accepting_cpos) = ExprSpec_cp; } while ( ExprSpec_chk[ExprSpec_base[ExprSpec_current_state] + ExprSpec_c] != ExprSpec_current_state ) { ExprSpec_current_state = (int) ExprSpec_def[ExprSpec_current_state]; if ( ExprSpec_current_state >= 115 ) ExprSpec_c = ExprSpec_meta[ExprSpec_c]; } ExprSpec_current_state = ExprSpec_nxt[ExprSpec_base[ExprSpec_current_state] + ExprSpec_c]; ++ExprSpec_cp; } while ( ExprSpec_current_state != 114 ); ExprSpec_cp = (ExprSpec_last_accepting_cpos); ExprSpec_current_state = (ExprSpec_last_accepting_state); ExprSpec_find_action: ExprSpec_act = ExprSpec_accept[ExprSpec_current_state]; ExprSpecYY_DO_BEFORE_ACTION; do_action: /* This label is used only to access EOF actions. */ switch ( ExprSpec_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of ExprSpecYY_DO_BEFORE_ACTION */ *ExprSpec_cp = (ExprSpec_hold_char); ExprSpec_cp = (ExprSpec_last_accepting_cpos); ExprSpec_current_state = (ExprSpec_last_accepting_state); goto ExprSpec_find_action; case 1: ExprSpecYY_RULE_SETUP #line 69 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" ExprSpecYY_BREAK case 2: ExprSpecYY_RULE_SETUP #line 71 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return IF; } ExprSpecYY_BREAK case 3: ExprSpecYY_RULE_SETUP #line 72 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return ELSE; } ExprSpecYY_BREAK case 4: ExprSpecYY_RULE_SETUP #line 74 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return OR; } ExprSpecYY_BREAK case 5: ExprSpecYY_RULE_SETUP #line 75 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return AND; } ExprSpecYY_BREAK case 6: ExprSpecYY_RULE_SETUP #line 76 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return EQ; } ExprSpecYY_BREAK case 7: ExprSpecYY_RULE_SETUP #line 77 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return NE; } ExprSpecYY_BREAK case 8: ExprSpecYY_RULE_SETUP #line 78 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return LE; } ExprSpecYY_BREAK case 9: ExprSpecYY_RULE_SETUP #line 79 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return GE; } ExprSpecYY_BREAK case 10: ExprSpecYY_RULE_SETUP #line 80 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return ARROW; } ExprSpecYY_BREAK case 11: ExprSpecYY_RULE_SETUP #line 81 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return AddEq; } ExprSpecYY_BREAK case 12: ExprSpecYY_RULE_SETUP #line 82 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return SubEq; } ExprSpecYY_BREAK case 13: ExprSpecYY_RULE_SETUP #line 83 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return MultEq; } ExprSpecYY_BREAK case 14: ExprSpecYY_RULE_SETUP #line 84 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return DivEq; } ExprSpecYY_BREAK case 15: ExprSpecYY_RULE_SETUP #line 85 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return ModEq; } ExprSpecYY_BREAK case 16: ExprSpecYY_RULE_SETUP #line 86 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return ExpEq; } ExprSpecYY_BREAK case 17: ExprSpecYY_RULE_SETUP #line 88 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { ExprSpeclval.d = M_PI; return NUMBER; } ExprSpecYY_BREAK case 18: ExprSpecYY_RULE_SETUP #line 89 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { ExprSpeclval.d = M_E; return NUMBER; } ExprSpecYY_BREAK case 19: ExprSpecYY_RULE_SETUP #line 90 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { ExprSpeclval.d = 0; return NUMBER; } ExprSpecYY_BREAK case 20: ExprSpecYY_RULE_SETUP #line 91 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { ExprSpeclval.d = 1; return NUMBER; } ExprSpecYY_BREAK case 21: ExprSpecYY_RULE_SETUP #line 92 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { ExprSpeclval.d = 2; return NUMBER; } ExprSpecYY_BREAK case 22: ExprSpecYY_RULE_SETUP #line 93 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { ExprSpeclval.d = 3; return NUMBER; } ExprSpecYY_BREAK case 23: ExprSpecYY_RULE_SETUP #line 95 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { ExprSpeclval.d = KSeExpr::Utils::atof(ExprSpectext); return NUMBER; } ExprSpecYY_BREAK case 24: ExprSpecYY_RULE_SETUP #line 96 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { /* match quoted string, allow embedded quote, \" */ ExprSpeclval.s = specRegisterToken(&ExprSpectext[1]); ExprSpeclval.s[strlen(ExprSpeclval.s)-1] = '\0'; return STR; } ExprSpecYY_BREAK case 25: ExprSpecYY_RULE_SETUP #line 100 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { /* match quoted string, allow embedded quote, \' */ ExprSpeclval.s = specRegisterToken(&ExprSpectext[1]); ExprSpeclval.s[strlen(ExprSpeclval.s)-1] = '\0'; return STR; } ExprSpecYY_BREAK case 26: ExprSpecYY_RULE_SETUP #line 104 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { ExprSpeclval.s = specRegisterToken(&ExprSpectext[1]); return VAR; } ExprSpecYY_BREAK case 27: ExprSpecYY_RULE_SETUP #line 105 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { ExprSpeclval.s = specRegisterToken(&ExprSpectext[1]); return VAR; } ExprSpecYY_BREAK case 28: ExprSpecYY_RULE_SETUP #line 106 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { ExprSpeclval.s = specRegisterToken(ExprSpectext); return NAME; } ExprSpecYY_BREAK case 29: ExprSpecYY_RULE_SETUP #line 108 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" /* ignore quoted newline */; ExprSpecYY_BREAK case 30: ExprSpecYY_RULE_SETUP #line 109 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" /* ignore quoted tab */; ExprSpecYY_BREAK case 31: /* rule 31 can match eol */ ExprSpecYY_RULE_SETUP #line 110 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" /* ignore whitespace */; ExprSpecYY_BREAK case 32: ExprSpecYY_RULE_SETUP #line 111 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { /* match comment */ int startPos=ExprSpecpos(),endPos=ExprSpecpos()+strlen(&ExprSpectext[1])+1; comments->push_back(std::pair(startPos,endPos));} ExprSpecYY_BREAK case 33: ExprSpecYY_RULE_SETUP #line 116 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return ExprSpectext[0]; } ExprSpecYY_BREAK case 34: ExprSpecYY_RULE_SETUP #line 118 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" ECHO; ExprSpecYY_BREAK #line 1043 "ExprSpecParserLexIn.cpp" case ExprSpecYY_STATE_EOF(INITIAL): ExprSpecterminate(); case ExprSpecYY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int ExprSpec_amount_of_matched_text = (int) (ExprSpec_cp - (ExprSpectext_ptr)) - 1; /* Undo the effects of ExprSpecYY_DO_BEFORE_ACTION. */ *ExprSpec_cp = (ExprSpec_hold_char); ExprSpecYY_RESTORE_ExprSpecYY_MORE_OFFSET if ( ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_buffer_status == ExprSpecYY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed ExprSpecin at a new source and called * ExprSpeclex(). If so, then we have to assure * consistency between ExprSpecYY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (ExprSpec_n_chars) = ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_n_chars; ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_input_file = ExprSpecin; ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_buffer_status = ExprSpecYY_BUFFER_NORMAL; } /* Note that here we test for ExprSpec_c_buf_p "<=" to the position * of the first EOB in the buffer, since ExprSpec_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( (ExprSpec_c_buf_p) <= &ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_ch_buf[(ExprSpec_n_chars)] ) { /* This was really a NUL. */ ExprSpec_state_type ExprSpec_next_state; (ExprSpec_c_buf_p) = (ExprSpectext_ptr) + ExprSpec_amount_of_matched_text; ExprSpec_current_state = ExprSpec_get_previous_state( ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * ExprSpec_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ ExprSpec_next_state = ExprSpec_try_NUL_trans( ExprSpec_current_state ); ExprSpec_bp = (ExprSpectext_ptr) + ExprSpecYY_MORE_ADJ; if ( ExprSpec_next_state ) { /* Consume the NUL. */ ExprSpec_cp = ++(ExprSpec_c_buf_p); ExprSpec_current_state = ExprSpec_next_state; goto ExprSpec_match; } else { ExprSpec_cp = (ExprSpec_last_accepting_cpos); ExprSpec_current_state = (ExprSpec_last_accepting_state); goto ExprSpec_find_action; } } else switch ( ExprSpec_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { (ExprSpec_did_buffer_switch_on_eof) = 0; if ( ExprSpecwrap( ) ) { /* Note: because we've taken care in * ExprSpec_get_next_buffer() to have set up * ExprSpectext, we can now set up * ExprSpec_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * ExprSpecYY_NULL, it'll still work - another * ExprSpecYY_NULL will get returned. */ (ExprSpec_c_buf_p) = (ExprSpectext_ptr) + ExprSpecYY_MORE_ADJ; ExprSpec_act = ExprSpecYY_STATE_EOF(ExprSpecYY_START); goto do_action; } else { if ( ! (ExprSpec_did_buffer_switch_on_eof) ) ExprSpecYY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: (ExprSpec_c_buf_p) = (ExprSpectext_ptr) + ExprSpec_amount_of_matched_text; ExprSpec_current_state = ExprSpec_get_previous_state( ); ExprSpec_cp = (ExprSpec_c_buf_p); ExprSpec_bp = (ExprSpectext_ptr) + ExprSpecYY_MORE_ADJ; goto ExprSpec_match; case EOB_ACT_LAST_MATCH: (ExprSpec_c_buf_p) = &ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_ch_buf[(ExprSpec_n_chars)]; ExprSpec_current_state = ExprSpec_get_previous_state( ); ExprSpec_cp = (ExprSpec_c_buf_p); ExprSpec_bp = (ExprSpectext_ptr) + ExprSpecYY_MORE_ADJ; goto ExprSpec_find_action; } break; } default: ExprSpecYY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of ExprSpeclex */ /* ExprSpec_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int ExprSpec_get_next_buffer (void) { char *dest = ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_ch_buf; char *source = (ExprSpectext_ptr); int number_to_move, i; int ret_val; if ( (ExprSpec_c_buf_p) > &ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_ch_buf[(ExprSpec_n_chars) + 1] ) ExprSpecYY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( (ExprSpec_c_buf_p) - (ExprSpectext_ptr) - ExprSpecYY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) ((ExprSpec_c_buf_p) - (ExprSpectext_ptr) - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_buffer_status == ExprSpecYY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_n_chars = (ExprSpec_n_chars) = 0; else { int num_to_read = ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ ExprSpecYY_BUFFER_STATE b = ExprSpecYY_CURRENT_BUFFER_LVALUE; int ExprSpec_c_buf_p_offset = (int) ((ExprSpec_c_buf_p) - b->ExprSpec_ch_buf); if ( b->ExprSpec_is_our_buffer ) { int new_size = b->ExprSpec_buf_size * 2; if ( new_size <= 0 ) b->ExprSpec_buf_size += b->ExprSpec_buf_size / 8; else b->ExprSpec_buf_size *= 2; b->ExprSpec_ch_buf = (char *) /* Include room in for 2 EOB chars. */ ExprSpecrealloc( (void *) b->ExprSpec_ch_buf, (ExprSpec_size_t) (b->ExprSpec_buf_size + 2) ); } else /* Can't grow it, we don't own it. */ b->ExprSpec_ch_buf = NULL; if ( ! b->ExprSpec_ch_buf ) ExprSpecYY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); (ExprSpec_c_buf_p) = &b->ExprSpec_ch_buf[ExprSpec_c_buf_p_offset]; num_to_read = ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_buf_size - number_to_move - 1; } if ( num_to_read > ExprSpecYY_READ_BUF_SIZE ) num_to_read = ExprSpecYY_READ_BUF_SIZE; /* Read in more data. */ ExprSpecYY_INPUT( (&ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_ch_buf[number_to_move]), (ExprSpec_n_chars), num_to_read ); ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_n_chars = (ExprSpec_n_chars); } if ( (ExprSpec_n_chars) == 0 ) { if ( number_to_move == ExprSpecYY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; ExprSpecrestart( ExprSpecin ); } else { ret_val = EOB_ACT_LAST_MATCH; ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_buffer_status = ExprSpecYY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if (((ExprSpec_n_chars) + number_to_move) > ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = (ExprSpec_n_chars) + number_to_move + ((ExprSpec_n_chars) >> 1); ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_ch_buf = (char *) ExprSpecrealloc( (void *) ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_ch_buf, (ExprSpec_size_t) new_size ); if ( ! ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_ch_buf ) ExprSpecYY_FATAL_ERROR( "out of dynamic memory in ExprSpec_get_next_buffer()" ); /* "- 2" to take care of EOB's */ ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_buf_size = (int) (new_size - 2); } (ExprSpec_n_chars) += number_to_move; ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_ch_buf[(ExprSpec_n_chars)] = ExprSpecYY_END_OF_BUFFER_CHAR; ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_ch_buf[(ExprSpec_n_chars) + 1] = ExprSpecYY_END_OF_BUFFER_CHAR; (ExprSpectext_ptr) = &ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_ch_buf[0]; return ret_val; } /* ExprSpec_get_previous_state - get the state just before the EOB char was reached */ static ExprSpec_state_type ExprSpec_get_previous_state (void) { ExprSpec_state_type ExprSpec_current_state; char *ExprSpec_cp; ExprSpec_current_state = (ExprSpec_start); for ( ExprSpec_cp = (ExprSpectext_ptr) + ExprSpecYY_MORE_ADJ; ExprSpec_cp < (ExprSpec_c_buf_p); ++ExprSpec_cp ) { ExprSpecYY_CHAR ExprSpec_c = (*ExprSpec_cp ? ExprSpec_ec[ExprSpecYY_SC_TO_UI(*ExprSpec_cp)] : 1); if ( ExprSpec_accept[ExprSpec_current_state] ) { (ExprSpec_last_accepting_state) = ExprSpec_current_state; (ExprSpec_last_accepting_cpos) = ExprSpec_cp; } while ( ExprSpec_chk[ExprSpec_base[ExprSpec_current_state] + ExprSpec_c] != ExprSpec_current_state ) { ExprSpec_current_state = (int) ExprSpec_def[ExprSpec_current_state]; if ( ExprSpec_current_state >= 115 ) ExprSpec_c = ExprSpec_meta[ExprSpec_c]; } ExprSpec_current_state = ExprSpec_nxt[ExprSpec_base[ExprSpec_current_state] + ExprSpec_c]; } return ExprSpec_current_state; } /* ExprSpec_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = ExprSpec_try_NUL_trans( current_state ); */ static ExprSpec_state_type ExprSpec_try_NUL_trans (ExprSpec_state_type ExprSpec_current_state ) { int ExprSpec_is_jam; char *ExprSpec_cp = (ExprSpec_c_buf_p); ExprSpecYY_CHAR ExprSpec_c = 1; if ( ExprSpec_accept[ExprSpec_current_state] ) { (ExprSpec_last_accepting_state) = ExprSpec_current_state; (ExprSpec_last_accepting_cpos) = ExprSpec_cp; } while ( ExprSpec_chk[ExprSpec_base[ExprSpec_current_state] + ExprSpec_c] != ExprSpec_current_state ) { ExprSpec_current_state = (int) ExprSpec_def[ExprSpec_current_state]; if ( ExprSpec_current_state >= 115 ) ExprSpec_c = ExprSpec_meta[ExprSpec_c]; } ExprSpec_current_state = ExprSpec_nxt[ExprSpec_base[ExprSpec_current_state] + ExprSpec_c]; ExprSpec_is_jam = (ExprSpec_current_state == 114); return ExprSpec_is_jam ? 0 : ExprSpec_current_state; } #ifndef ExprSpecYY_NO_UNPUT #endif #ifndef ExprSpecYY_NO_INPUT #ifdef __cplusplus static int ExprSpecinput (void) #else static int input (void) #endif { int c; *(ExprSpec_c_buf_p) = (ExprSpec_hold_char); if ( *(ExprSpec_c_buf_p) == ExprSpecYY_END_OF_BUFFER_CHAR ) { /* ExprSpec_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( (ExprSpec_c_buf_p) < &ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_ch_buf[(ExprSpec_n_chars)] ) /* This was really a NUL. */ *(ExprSpec_c_buf_p) = '\0'; else { /* need more input */ int offset = (int) ((ExprSpec_c_buf_p) - (ExprSpectext_ptr)); ++(ExprSpec_c_buf_p); switch ( ExprSpec_get_next_buffer( ) ) { case EOB_ACT_LAST_MATCH: /* This happens because ExprSpec_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ ExprSpecrestart( ExprSpecin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( ExprSpecwrap( ) ) return 0; if ( ! (ExprSpec_did_buffer_switch_on_eof) ) ExprSpecYY_NEW_FILE; #ifdef __cplusplus return ExprSpecinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: (ExprSpec_c_buf_p) = (ExprSpectext_ptr) + offset; break; } } } c = *(unsigned char *) (ExprSpec_c_buf_p); /* cast for 8-bit char's */ *(ExprSpec_c_buf_p) = '\0'; /* preserve ExprSpectext */ (ExprSpec_hold_char) = *++(ExprSpec_c_buf_p); return c; } #endif /* ifndef ExprSpecYY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * * @note This function does not reset the start condition to @c INITIAL . */ void ExprSpecrestart (FILE * input_file ) { if ( ! ExprSpecYY_CURRENT_BUFFER ){ ExprSpecensure_buffer_stack (); ExprSpecYY_CURRENT_BUFFER_LVALUE = ExprSpec_create_buffer( ExprSpecin, ExprSpecYY_BUF_SIZE ); } ExprSpec_init_buffer( ExprSpecYY_CURRENT_BUFFER, input_file ); ExprSpec_load_buffer_state( ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ void ExprSpec_switch_to_buffer (ExprSpecYY_BUFFER_STATE new_buffer ) { /* TODO. We should be able to replace this entire function body * with * ExprSpecpop_buffer_state(); * ExprSpecpush_buffer_state(new_buffer); */ ExprSpecensure_buffer_stack (); if ( ExprSpecYY_CURRENT_BUFFER == new_buffer ) return; if ( ExprSpecYY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(ExprSpec_c_buf_p) = (ExprSpec_hold_char); ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_buf_pos = (ExprSpec_c_buf_p); ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_n_chars = (ExprSpec_n_chars); } ExprSpecYY_CURRENT_BUFFER_LVALUE = new_buffer; ExprSpec_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (ExprSpecwrap()) processing, but the only time this flag * is looked at is after ExprSpecwrap() is called, so it's safe * to go ahead and always set it. */ (ExprSpec_did_buffer_switch_on_eof) = 1; } static void ExprSpec_load_buffer_state (void) { (ExprSpec_n_chars) = ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_n_chars; (ExprSpectext_ptr) = (ExprSpec_c_buf_p) = ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_buf_pos; ExprSpecin = ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_input_file; (ExprSpec_hold_char) = *(ExprSpec_c_buf_p); } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c ExprSpecYY_BUF_SIZE. * * @return the allocated buffer state. */ ExprSpecYY_BUFFER_STATE ExprSpec_create_buffer (FILE * file, int size ) { ExprSpecYY_BUFFER_STATE b; b = (ExprSpecYY_BUFFER_STATE) ExprSpecalloc( sizeof( struct ExprSpec_buffer_state ) ); if ( ! b ) ExprSpecYY_FATAL_ERROR( "out of dynamic memory in ExprSpec_create_buffer()" ); b->ExprSpec_buf_size = size; /* ExprSpec_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->ExprSpec_ch_buf = (char *) ExprSpecalloc( (ExprSpec_size_t) (b->ExprSpec_buf_size + 2) ); if ( ! b->ExprSpec_ch_buf ) ExprSpecYY_FATAL_ERROR( "out of dynamic memory in ExprSpec_create_buffer()" ); b->ExprSpec_is_our_buffer = 1; ExprSpec_init_buffer( b, file ); return b; } /** Destroy the buffer. * @param b a buffer created with ExprSpec_create_buffer() * */ void ExprSpec_delete_buffer (ExprSpecYY_BUFFER_STATE b ) { if ( ! b ) return; if ( b == ExprSpecYY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ ExprSpecYY_CURRENT_BUFFER_LVALUE = (ExprSpecYY_BUFFER_STATE) 0; if ( b->ExprSpec_is_our_buffer ) ExprSpecfree( (void *) b->ExprSpec_ch_buf ); ExprSpecfree( (void *) b ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a ExprSpecrestart() or at EOF. */ static void ExprSpec_init_buffer (ExprSpecYY_BUFFER_STATE b, FILE * file ) { int oerrno = errno; ExprSpec_flush_buffer( b ); b->ExprSpec_input_file = file; b->ExprSpec_fill_buffer = 1; /* If b is the current buffer, then ExprSpec_init_buffer was _probably_ * called from ExprSpecrestart() or through ExprSpec_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != ExprSpecYY_CURRENT_BUFFER){ b->ExprSpec_bs_lineno = 1; b->ExprSpec_bs_column = 0; } b->ExprSpec_is_interactive = 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, ExprSpecYY_INPUT will be called. * @param b the buffer state to be flushed, usually @c ExprSpecYY_CURRENT_BUFFER. * */ void ExprSpec_flush_buffer (ExprSpecYY_BUFFER_STATE b ) { if ( ! b ) return; b->ExprSpec_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->ExprSpec_ch_buf[0] = ExprSpecYY_END_OF_BUFFER_CHAR; b->ExprSpec_ch_buf[1] = ExprSpecYY_END_OF_BUFFER_CHAR; b->ExprSpec_buf_pos = &b->ExprSpec_ch_buf[0]; b->ExprSpec_at_bol = 1; b->ExprSpec_buffer_status = ExprSpecYY_BUFFER_NEW; if ( b == ExprSpecYY_CURRENT_BUFFER ) ExprSpec_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * */ void ExprSpecpush_buffer_state (ExprSpecYY_BUFFER_STATE new_buffer ) { if (new_buffer == NULL) return; ExprSpecensure_buffer_stack(); /* This block is copied from ExprSpec_switch_to_buffer. */ if ( ExprSpecYY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(ExprSpec_c_buf_p) = (ExprSpec_hold_char); ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_buf_pos = (ExprSpec_c_buf_p); ExprSpecYY_CURRENT_BUFFER_LVALUE->ExprSpec_n_chars = (ExprSpec_n_chars); } /* Only push if top exists. Otherwise, replace top. */ if (ExprSpecYY_CURRENT_BUFFER) (ExprSpec_buffer_stack_top)++; ExprSpecYY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from ExprSpec_switch_to_buffer. */ ExprSpec_load_buffer_state( ); (ExprSpec_did_buffer_switch_on_eof) = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * */ void ExprSpecpop_buffer_state (void) { if (!ExprSpecYY_CURRENT_BUFFER) return; ExprSpec_delete_buffer(ExprSpecYY_CURRENT_BUFFER ); ExprSpecYY_CURRENT_BUFFER_LVALUE = NULL; if ((ExprSpec_buffer_stack_top) > 0) --(ExprSpec_buffer_stack_top); if (ExprSpecYY_CURRENT_BUFFER) { ExprSpec_load_buffer_state( ); (ExprSpec_did_buffer_switch_on_eof) = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void ExprSpecensure_buffer_stack (void) { ExprSpec_size_t num_to_alloc; if (!(ExprSpec_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ (ExprSpec_buffer_stack) = (struct ExprSpec_buffer_state**)ExprSpecalloc (num_to_alloc * sizeof(struct ExprSpec_buffer_state*) ); if ( ! (ExprSpec_buffer_stack) ) ExprSpecYY_FATAL_ERROR( "out of dynamic memory in ExprSpecensure_buffer_stack()" ); memset((ExprSpec_buffer_stack), 0, num_to_alloc * sizeof(struct ExprSpec_buffer_state*)); (ExprSpec_buffer_stack_max) = num_to_alloc; (ExprSpec_buffer_stack_top) = 0; return; } if ((ExprSpec_buffer_stack_top) >= ((ExprSpec_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ ExprSpec_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = (ExprSpec_buffer_stack_max) + grow_size; (ExprSpec_buffer_stack) = (struct ExprSpec_buffer_state**)ExprSpecrealloc ((ExprSpec_buffer_stack), num_to_alloc * sizeof(struct ExprSpec_buffer_state*) ); if ( ! (ExprSpec_buffer_stack) ) ExprSpecYY_FATAL_ERROR( "out of dynamic memory in ExprSpecensure_buffer_stack()" ); /* zero only the new slots.*/ memset((ExprSpec_buffer_stack) + (ExprSpec_buffer_stack_max), 0, grow_size * sizeof(struct ExprSpec_buffer_state*)); (ExprSpec_buffer_stack_max) = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * * @return the newly allocated buffer state object. */ ExprSpecYY_BUFFER_STATE ExprSpec_scan_buffer (char * base, ExprSpec_size_t size ) { ExprSpecYY_BUFFER_STATE b; if ( size < 2 || base[size-2] != ExprSpecYY_END_OF_BUFFER_CHAR || base[size-1] != ExprSpecYY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (ExprSpecYY_BUFFER_STATE) ExprSpecalloc( sizeof( struct ExprSpec_buffer_state ) ); if ( ! b ) ExprSpecYY_FATAL_ERROR( "out of dynamic memory in ExprSpec_scan_buffer()" ); b->ExprSpec_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->ExprSpec_buf_pos = b->ExprSpec_ch_buf = base; b->ExprSpec_is_our_buffer = 0; b->ExprSpec_input_file = NULL; b->ExprSpec_n_chars = b->ExprSpec_buf_size; b->ExprSpec_is_interactive = 0; b->ExprSpec_at_bol = 1; b->ExprSpec_fill_buffer = 0; b->ExprSpec_buffer_status = ExprSpecYY_BUFFER_NEW; ExprSpec_switch_to_buffer( b ); return b; } /** Setup the input buffer state to scan a string. The next call to ExprSpeclex() will * scan from a @e copy of @a str. * @param ExprSpecstr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * ExprSpec_scan_bytes() instead. */ ExprSpecYY_BUFFER_STATE ExprSpec_scan_string (const char * ExprSpecstr ) { return ExprSpec_scan_bytes( ExprSpecstr, (int) strlen(ExprSpecstr) ); } /** Setup the input buffer state to scan the given bytes. The next call to ExprSpeclex() will * scan from a @e copy of @a bytes. * @param ExprSpecbytes the byte buffer to scan * @param _ExprSpecbytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ ExprSpecYY_BUFFER_STATE ExprSpec_scan_bytes (const char * ExprSpecbytes, int _ExprSpecbytes_len ) { ExprSpecYY_BUFFER_STATE b; char *buf; ExprSpec_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (ExprSpec_size_t) (_ExprSpecbytes_len + 2); buf = (char *) ExprSpecalloc( n ); if ( ! buf ) ExprSpecYY_FATAL_ERROR( "out of dynamic memory in ExprSpec_scan_bytes()" ); for ( i = 0; i < _ExprSpecbytes_len; ++i ) buf[i] = ExprSpecbytes[i]; buf[_ExprSpecbytes_len] = buf[_ExprSpecbytes_len+1] = ExprSpecYY_END_OF_BUFFER_CHAR; b = ExprSpec_scan_buffer( buf, n ); if ( ! b ) ExprSpecYY_FATAL_ERROR( "bad buffer in ExprSpec_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->ExprSpec_is_our_buffer = 1; return b; } #ifndef ExprSpecYY_EXIT_FAILURE #define ExprSpecYY_EXIT_FAILURE 2 #endif static void ExprSpecnoreturn ExprSpec_fatal_error (const char* msg ) { fprintf( stderr, "%s\n", msg ); exit( ExprSpecYY_EXIT_FAILURE ); } /* Redefine ExprSpecless() so it works in section 3 code. */ #undef ExprSpecless #define ExprSpecless(n) \ do \ { \ /* Undo effects of setting up ExprSpectext. */ \ int ExprSpecless_macro_arg = (n); \ ExprSpecYY_LESS_LINENO(ExprSpecless_macro_arg);\ ExprSpectext[ExprSpecleng] = (ExprSpec_hold_char); \ (ExprSpec_c_buf_p) = ExprSpectext + ExprSpecless_macro_arg; \ (ExprSpec_hold_char) = *(ExprSpec_c_buf_p); \ *(ExprSpec_c_buf_p) = '\0'; \ ExprSpecleng = ExprSpecless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. * */ int ExprSpecget_lineno (void) { return ExprSpeclineno; } /** Get the input stream. * */ FILE *ExprSpecget_in (void) { return ExprSpecin; } /** Get the output stream. * */ FILE *ExprSpecget_out (void) { return ExprSpecout; } /** Get the length of the current token. * */ int ExprSpecget_leng (void) { return ExprSpecleng; } /** Get the current token. * */ char *ExprSpecget_text (void) { return ExprSpectext; } /** Set the current line number. * @param _line_number line number * */ void ExprSpecset_lineno (int _line_number ) { ExprSpeclineno = _line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * * @see ExprSpec_switch_to_buffer */ void ExprSpecset_in (FILE * _in_str ) { ExprSpecin = _in_str ; } void ExprSpecset_out (FILE * _out_str ) { ExprSpecout = _out_str ; } int ExprSpecget_debug (void) { return ExprSpec_flex_debug; } void ExprSpecset_debug (int _bdebug ) { ExprSpec_flex_debug = _bdebug ; } static int ExprSpec_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. * This function is called from ExprSpeclex_destroy(), so don't allocate here. */ (ExprSpec_buffer_stack) = NULL; (ExprSpec_buffer_stack_top) = 0; (ExprSpec_buffer_stack_max) = 0; (ExprSpec_c_buf_p) = NULL; (ExprSpec_init) = 0; (ExprSpec_start) = 0; /* Defined in main.c */ #ifdef ExprSpecYY_STDINIT ExprSpecin = stdin; ExprSpecout = stdout; #else ExprSpecin = NULL; ExprSpecout = NULL; #endif /* For future reference: Set errno on error, since we are called by * ExprSpeclex_init() */ return 0; } /* ExprSpeclex_destroy is for both reentrant and non-reentrant scanners. */ int ExprSpeclex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(ExprSpecYY_CURRENT_BUFFER){ ExprSpec_delete_buffer( ExprSpecYY_CURRENT_BUFFER ); ExprSpecYY_CURRENT_BUFFER_LVALUE = NULL; ExprSpecpop_buffer_state(); } /* Destroy the stack itself. */ ExprSpecfree((ExprSpec_buffer_stack) ); (ExprSpec_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * ExprSpeclex() is called, initialization will occur. */ ExprSpec_init_globals( ); return 0; } /* * Internal utility routines. */ #ifndef ExprSpectext_ptr static void ExprSpec_flex_strncpy (char* s1, const char * s2, int n ) { int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef ExprSpecYY_NEED_STRLEN static int ExprSpec_flex_strlen (const char * s ) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *ExprSpecalloc (ExprSpec_size_t size ) { return malloc(size); } void *ExprSpecrealloc (void * ptr, ExprSpec_size_t size ) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void ExprSpecfree (void * ptr ) { free( (char *) ptr ); /* see ExprSpecrealloc() for (char *) cast */ } #define ExprSpecYYTABLES_NAME "ExprSpectables" #line 118 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" /* Gets index of current token (corresponding to ExprSpectext). Used for error reporting. */ int ExprSpecpos() { return ExprSpec_c_buf_p - ExprSpecYY_CURRENT_BUFFER->ExprSpec_ch_buf - ExprSpecleng; } kseexpr-4.0.4.0/generated/KSeExprUI/ExprSpecParserLexIn.cpp0000644000000000000240000015265014156102631023441 0ustar00rootroot00000000000000#line 1 "ExprSpecParserLexIn.cpp" #line 3 "ExprSpecParserLexIn.cpp" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 #define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #ifndef SIZE_MAX #define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* begin standard C++ headers. */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an * integer in range [0..255] for use as an array index. */ #define YY_SC_TO_UI(c) ((YY_CHAR) (c)) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart( yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. * Ditto for the __ia64__ case accordingly. */ #define YY_BUF_SIZE 32768 #else #define YY_BUF_SIZE 16384 #endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif extern int yyleng; extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ int yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; static int yy_n_chars; /* number of characters read into yy_ch_buf */ int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = NULL; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ /* Flag which is used to allow yywrap()'s to do buffer switches * instead of setting up a fresh yyin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; void yyrestart ( FILE *input_file ); void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); void yy_delete_buffer ( YY_BUFFER_STATE b ); void yy_flush_buffer ( YY_BUFFER_STATE b ); void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); void yypop_buffer_state ( void ); static void yyensure_buffer_stack ( void ); static void yy_load_buffer_state ( void ); static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); void *yyalloc ( yy_size_t ); void *yyrealloc ( void *, yy_size_t ); void yyfree ( void * ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ #define yywrap() (/*CONSTCOND*/1) #define YY_SKIP_YYWRAP typedef flex_uint8_t YY_CHAR; FILE *yyin = NULL, *yyout = NULL; typedef int yy_state_type; extern int yylineno; int yylineno = 1; extern char *yytext; #ifdef yytext_ptr #undef yytext_ptr #endif #define yytext_ptr yytext static yy_state_type yy_get_previous_state ( void ); static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); static int yy_get_next_buffer ( void ); static void yynoreturn yy_fatal_error ( const char* msg ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; #define YY_NUM_RULES 34 #define YY_END_OF_BUFFER 35 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static const flex_int16_t yy_accept[115] = { 0, 0, 0, 35, 33, 31, 31, 33, 33, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 23, 33, 33, 33, 28, 28, 18, 28, 33, 33, 28, 28, 28, 28, 28, 28, 33, 7, 0, 24, 0, 32, 0, 26, 15, 5, 0, 25, 0, 13, 11, 12, 10, 23, 14, 23, 23, 0, 8, 6, 9, 28, 28, 17, 29, 30, 16, 28, 28, 28, 2, 28, 28, 4, 24, 26, 0, 25, 0, 23, 0, 0, 23, 28, 22, 28, 28, 28, 28, 0, 0, 23, 0, 0, 23, 28, 3, 28, 28, 28, 27, 0, 23, 28, 28, 28, 28, 27, 28, 28, 19, 20, 1, 28, 21, 0 } ; static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 5, 6, 7, 8, 9, 10, 1, 1, 11, 12, 1, 13, 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 1, 1, 23, 24, 23, 23, 25, 23, 26, 23, 27, 23, 23, 23, 23, 28, 23, 29, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 1, 30, 1, 31, 23, 1, 32, 33, 23, 23, 34, 35, 36, 37, 38, 23, 23, 39, 40, 41, 42, 23, 23, 43, 44, 45, 46, 23, 23, 47, 23, 23, 1, 48, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static const YY_CHAR yy_meta[49] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 3, 4, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1 } ; static const flex_int16_t yy_base[123] = { 0, 0, 0, 193, 194, 194, 194, 171, 44, 161, 0, 169, 180, 40, 167, 166, 30, 37, 165, 41, 164, 163, 162, 0, 157, 0, 154, 15, 159, 137, 139, 145, 141, 137, 134, 125, 194, 54, 194, 56, 142, 130, 152, 194, 194, 52, 194, 53, 194, 194, 194, 194, 51, 194, 55, 74, 80, 194, 194, 194, 0, 143, 0, 194, 194, 194, 121, 123, 120, 0, 124, 122, 194, 64, 145, 144, 68, 88, 86, 97, 48, 90, 134, 0, 126, 115, 124, 115, 0, 99, 101, 109, 107, 111, 127, 0, 105, 112, 94, 0, 113, 115, 118, 81, 69, 58, 0, 68, 49, 0, 0, 194, 38, 0, 194, 132, 137, 72, 142, 145, 148, 68, 151 } ; static const flex_int16_t yy_def[123] = { 0, 114, 1, 114, 114, 114, 114, 114, 115, 116, 117, 114, 114, 118, 114, 114, 114, 114, 114, 114, 114, 114, 114, 119, 119, 119, 119, 114, 114, 119, 119, 119, 119, 119, 119, 114, 114, 115, 114, 115, 116, 116, 120, 114, 114, 118, 114, 118, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 119, 119, 119, 114, 114, 114, 119, 119, 119, 119, 119, 119, 114, 115, 120, 114, 118, 114, 114, 114, 114, 114, 119, 119, 119, 119, 119, 119, 121, 114, 114, 114, 114, 114, 119, 119, 119, 119, 119, 122, 114, 114, 119, 119, 119, 119, 122, 119, 119, 119, 119, 114, 119, 119, 0, 114, 114, 114, 114, 114, 114, 114, 114 } ; static const flex_int16_t yy_nxt[243] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 4, 4, 20, 21, 22, 23, 24, 25, 23, 23, 23, 26, 27, 28, 23, 29, 30, 23, 31, 23, 32, 33, 23, 23, 23, 23, 34, 23, 23, 23, 35, 38, 46, 50, 51, 52, 52, 54, 63, 55, 55, 38, 64, 73, 46, 76, 81, 81, 56, 52, 52, 38, 47, 78, 78, 99, 39, 56, 77, 42, 46, 113, 79, 112, 47, 47, 39, 77, 39, 111, 54, 79, 55, 55, 80, 80, 39, 110, 81, 81, 47, 56, 89, 89, 78, 78, 90, 90, 81, 81, 56, 92, 92, 91, 109, 93, 93, 90, 90, 90, 90, 108, 91, 100, 100, 93, 93, 101, 101, 93, 93, 101, 101, 101, 101, 37, 107, 37, 37, 37, 40, 105, 40, 40, 40, 45, 104, 45, 45, 45, 60, 103, 60, 74, 74, 74, 106, 102, 106, 98, 97, 96, 95, 94, 88, 75, 87, 86, 85, 84, 83, 82, 75, 114, 41, 72, 71, 70, 69, 68, 67, 66, 65, 62, 61, 59, 58, 57, 53, 49, 48, 44, 43, 41, 36, 114, 3, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114 } ; static const flex_int16_t yy_chk[243] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 13, 16, 16, 17, 17, 19, 27, 19, 19, 37, 27, 39, 45, 47, 80, 80, 19, 52, 52, 73, 13, 54, 54, 121, 8, 19, 52, 117, 76, 112, 54, 108, 45, 47, 37, 52, 39, 107, 55, 54, 55, 55, 56, 56, 73, 105, 56, 56, 76, 55, 77, 77, 78, 78, 77, 77, 81, 81, 55, 79, 79, 78, 104, 79, 79, 89, 89, 90, 90, 103, 78, 91, 91, 92, 92, 91, 91, 93, 93, 100, 100, 101, 101, 115, 102, 115, 115, 115, 116, 98, 116, 116, 116, 118, 97, 118, 118, 118, 119, 96, 119, 120, 120, 120, 122, 94, 122, 87, 86, 85, 84, 82, 75, 74, 71, 70, 68, 67, 66, 61, 42, 41, 40, 35, 34, 33, 32, 31, 30, 29, 28, 26, 24, 22, 21, 20, 18, 15, 14, 12, 11, 9, 7, 3, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114 } ; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 0; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; #line 1 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" /** * SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. * SPDX-License-Identifier: LicenseRef-Apache-2.0 * SPDX-FileCopyrightText: 2020-2021 L. E. Segovia * SPDX-License-Identifier: GPL-3.0-or-later */ /* Don't generate yywrap since everything is in one string */ /* Don't generate unput since it's unused and gcc complains... */ /* Don't generate input since it's unused too -- amyspark */ #define YY_NO_INPUT 1 /* Don't worry about interactive and using isatty(). Fixes Windows compile. */ #line 18 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" #include #include #include #include // If c++11 don't use register designator, lex and yacc need to go... #if __cplusplus > 199711L #define register // Deprecated in C++11. #endif // #if __cplusplus > 199711L #include "ExprSpecType.h" #include #ifdef SEEXPR_WIN32 # define YY_NO_UNISTD_H # define YY_SKIP_YYWRAP #endif #ifndef MAKEDEPEND # include "ExprSpecParser.tab.h" #endif // TODO: make this thread safe static int columnNumber=0; // really buffer position static int lineNumber=0; // not used static std::vector >* comments=0; extern char* specRegisterToken(char* tok); namespace KSeExpr { void specResetCounters(std::vector >& commentsIn){ columnNumber=lineNumber=0; comments=&commentsIn; } } int yypos(); // forward declare #define YY_USER_ACTION { \ yylloc.first_line=lineNumber;yylloc.first_column=columnNumber; \ columnNumber+=yyleng;\ yylloc.last_column=columnNumber;yylloc.last_line=lineNumber;} #line 593 "ExprSpecParserLexIn.cpp" #line 594 "ExprSpecParserLexIn.cpp" #define INITIAL 0 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif static int yy_init_globals ( void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy ( void ); int yyget_debug ( void ); void yyset_debug ( int debug_flag ); YY_EXTRA_TYPE yyget_extra ( void ); void yyset_extra ( YY_EXTRA_TYPE user_defined ); FILE *yyget_in ( void ); void yyset_in ( FILE * _in_str ); FILE *yyget_out ( void ); void yyset_out ( FILE * _out_str ); int yyget_leng ( void ); char *yyget_text ( void ); int yyget_lineno ( void ); void yyset_lineno ( int _line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap ( void ); #else extern int yywrap ( void ); #endif #endif #ifndef YY_NO_UNPUT #endif #ifndef yytext_ptr static void yy_flex_strncpy ( char *, const char *, int ); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen ( const char * ); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput ( void ); #else static int input ( void ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k */ #define YY_READ_BUF_SIZE 16384 #else #define YY_READ_BUF_SIZE 8192 #endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ int n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (void); #define YY_DECL int yylex (void) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK /*LINTED*/break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { yy_state_type yy_current_state; char *yy_cp, *yy_bp; int yy_act; if ( !(yy_init) ) { (yy_init) = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE ); } yy_load_buffer_state( ); } { #line 68 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" #line 811 "ExprSpecParserLexIn.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); /* Support of yytext. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = (yy_start); yy_match: do { YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 115 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } while ( yy_current_state != 114 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); yy_find_action: yy_act = yy_accept[yy_current_state]; YY_DO_BEFORE_ACTION; do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = (yy_hold_char); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); goto yy_find_action; case 1: YY_RULE_SETUP #line 69 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" YY_BREAK case 2: YY_RULE_SETUP #line 71 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return IF; } YY_BREAK case 3: YY_RULE_SETUP #line 72 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return ELSE; } YY_BREAK case 4: YY_RULE_SETUP #line 74 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return OR; } YY_BREAK case 5: YY_RULE_SETUP #line 75 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return AND; } YY_BREAK case 6: YY_RULE_SETUP #line 76 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return EQ; } YY_BREAK case 7: YY_RULE_SETUP #line 77 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return NE; } YY_BREAK case 8: YY_RULE_SETUP #line 78 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return LE; } YY_BREAK case 9: YY_RULE_SETUP #line 79 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return GE; } YY_BREAK case 10: YY_RULE_SETUP #line 80 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return ARROW; } YY_BREAK case 11: YY_RULE_SETUP #line 81 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return AddEq; } YY_BREAK case 12: YY_RULE_SETUP #line 82 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return SubEq; } YY_BREAK case 13: YY_RULE_SETUP #line 83 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return MultEq; } YY_BREAK case 14: YY_RULE_SETUP #line 84 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return DivEq; } YY_BREAK case 15: YY_RULE_SETUP #line 85 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return ModEq; } YY_BREAK case 16: YY_RULE_SETUP #line 86 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return ExpEq; } YY_BREAK case 17: YY_RULE_SETUP #line 88 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { yylval.d = M_PI; return NUMBER; } YY_BREAK case 18: YY_RULE_SETUP #line 89 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { yylval.d = M_E; return NUMBER; } YY_BREAK case 19: YY_RULE_SETUP #line 90 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { yylval.d = 0; return NUMBER; } YY_BREAK case 20: YY_RULE_SETUP #line 91 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { yylval.d = 1; return NUMBER; } YY_BREAK case 21: YY_RULE_SETUP #line 92 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { yylval.d = 2; return NUMBER; } YY_BREAK case 22: YY_RULE_SETUP #line 93 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { yylval.d = 3; return NUMBER; } YY_BREAK case 23: YY_RULE_SETUP #line 95 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { yylval.d = KSeExpr::Utils::atof(yytext); return NUMBER; } YY_BREAK case 24: YY_RULE_SETUP #line 96 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { /* match quoted string, allow embedded quote, \" */ yylval.s = specRegisterToken(&yytext[1]); yylval.s[strlen(yylval.s)-1] = '\0'; return STR; } YY_BREAK case 25: YY_RULE_SETUP #line 100 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { /* match quoted string, allow embedded quote, \' */ yylval.s = specRegisterToken(&yytext[1]); yylval.s[strlen(yylval.s)-1] = '\0'; return STR; } YY_BREAK case 26: YY_RULE_SETUP #line 104 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { yylval.s = specRegisterToken(&yytext[1]); return VAR; } YY_BREAK case 27: YY_RULE_SETUP #line 105 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { yylval.s = specRegisterToken(&yytext[1]); return VAR; } YY_BREAK case 28: YY_RULE_SETUP #line 106 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { yylval.s = specRegisterToken(yytext); return NAME; } YY_BREAK case 29: YY_RULE_SETUP #line 108 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" /* ignore quoted newline */; YY_BREAK case 30: YY_RULE_SETUP #line 109 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" /* ignore quoted tab */; YY_BREAK case 31: /* rule 31 can match eol */ YY_RULE_SETUP #line 110 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" /* ignore whitespace */; YY_BREAK case 32: YY_RULE_SETUP #line 111 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { /* match comment */ int startPos=yypos(),endPos=yypos()+strlen(&yytext[1])+1; comments->push_back(std::pair(startPos,endPos));} YY_BREAK case 33: YY_RULE_SETUP #line 116 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" { return yytext[0]; } YY_BREAK case 34: YY_RULE_SETUP #line 118 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" ECHO; YY_BREAK #line 1043 "ExprSpecParserLexIn.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = (yy_hold_char); YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) { /* This was really a NUL. */ yy_state_type yy_next_state; (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state ); yy_bp = (yytext_ptr) + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++(yy_c_buf_p); yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); goto yy_find_action; } } else switch ( yy_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { (yy_did_buffer_switch_on_eof) = 0; if ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: (yy_c_buf_p) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (void) { char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = (yytext_ptr); int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; else { int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyrealloc( (void *) b->yy_ch_buf, (yy_size_t) (b->yy_buf_size + 2) ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), (yy_n_chars), num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } if ( (yy_n_chars) == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart( yyin ); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); /* "- 2" to take care of EOB's */ YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (void) { yy_state_type yy_current_state; char *yy_cp; yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 115 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { int yy_is_jam; char *yy_cp = (yy_c_buf_p); YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 115 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; yy_is_jam = (yy_current_state == 114); return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) #else static int input (void) #endif { int c; *(yy_c_buf_p) = (yy_hold_char); if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) /* This was really a NUL. */ *(yy_c_buf_p) = '\0'; else { /* need more input */ int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart( yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) return 0; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + offset; break; } } } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ *(yy_c_buf_p) = '\0'; /* preserve yytext */ (yy_hold_char) = *++(yy_c_buf_p); return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file ) { if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE ); } yy_init_buffer( YY_CURRENT_BUFFER, input_file ); yy_load_buffer_state( ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) { /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } static void yy_load_buffer_state (void) { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer( b, file ); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * */ void yy_delete_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree( (void *) b->yy_ch_buf ); yyfree( (void *) b ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) { int oerrno = errno; yy_flush_buffer( b ); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * */ void yy_flush_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) { if (new_buffer == NULL) return; yyensure_buffer_stack(); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * */ void yypop_buffer_state (void) { if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (void) { yy_size_t num_to_alloc; if (!(yy_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; } if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer( b ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (const char * yystr ) { return yy_scan_bytes( yystr, (int) strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); buf = (char *) yyalloc( n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer( buf, n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yynoreturn yy_fatal_error (const char* msg ) { fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. * */ int yyget_lineno (void) { return yylineno; } /** Get the input stream. * */ FILE *yyget_in (void) { return yyin; } /** Get the output stream. * */ FILE *yyget_out (void) { return yyout; } /** Get the length of the current token. * */ int yyget_leng (void) { return yyleng; } /** Get the current token. * */ char *yyget_text (void) { return yytext; } /** Set the current line number. * @param _line_number line number * */ void yyset_lineno (int _line_number ) { yylineno = _line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * * @see yy_switch_to_buffer */ void yyset_in (FILE * _in_str ) { yyin = _in_str ; } void yyset_out (FILE * _out_str ) { yyout = _out_str ; } int yyget_debug (void) { return yy_flex_debug; } void yyset_debug (int _bdebug ) { yy_flex_debug = _bdebug ; } static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ (yy_buffer_stack) = NULL; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; (yy_c_buf_p) = NULL; (yy_init) = 0; (yy_start) = 0; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer( YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } /* Destroy the stack itself. */ yyfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( ); return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, const char * s2, int n ) { int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (const char * s ) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size ) { return malloc(size); } void *yyrealloc (void * ptr, yy_size_t size ) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void yyfree (void * ptr ) { free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 118 "@@PATH@@/src/KSeExprUI/ExprSpecParserLex.l" /* Gets index of current token (corresponding to yytext). Used for error reporting. */ int yypos() { return yy_c_buf_p - YY_CURRENT_BUFFER->yy_ch_buf - yyleng; } kseexpr-4.0.4.0/generated/README.md0000644000000000000240000000040114156102631016551 0ustar00rootroot00000000000000# Pregenerated parser files This directory contains pregenerated parser files for use in Windows-based builds, or anywhere where there is no Bison/FLEX provided by default). These files are automatically copied by CMake, no action is needed by the user. kseexpr-4.0.4.0/packaging/0000755000000000000240000000000014156102631015265 5ustar00rootroot00000000000000kseexpr-4.0.4.0/packaging/create_manifest.rb0000755000000000000240000000561714156102631020757 0ustar00rootroot00000000000000#!/usr/bin/env ruby # This script attempts to make sense of my commits into a decent CHANGELOG. # SPDX-FileCopyrightText: 2020 L. E. Segovia # SPDX-License-Identifier: BSD-3-Clause # frozen_string_literal: true require 'date' require 'optparse' require 'ostruct' require 'pathname' options = OpenStruct.new opts = OptionParser.new do |o| o.on_tail('-h', '--help', 'Show this usage statement') do |_h| options.help = true end o.on_tail('-f', '--from TAG', 'Start counting from this Git tag...') do |f| options.from = f end o.on_tail('-t', '--to TAG', '...to this tag inclusive') do |t| options.to = t end end begin opts.parse!(ARGV) system "git rev-parse #{options.from} > /dev/null", exception: true system "git rev-parse #{options.to} > /dev/null", exception: true rescue StandardError => e warn e, '', opts exit 1 end if options.help puts opts exit end log = `git log --oneline --reverse #{options.from}..#{options.to}` date = `git log -1 --format=%aI #{options.to} 2> /dev/null` unless options.to.match? 'HEAD' log2 = log .lines(chomp: true) .map { |a| a.split(' ', 2) } .map { |a| "#{a[1]} (#{a[0]})" } log2 = log2.group_by do |a| keyword = a.split(' ')[0].downcase case keyword when 'enable', 'reimplement', 'standardize', 'implement', 'add', 'use' 'Added' when 'automagically', 'rebrand', 'complete', 'automatically', 'hide' 'Added' when 'extract', 'expose', 'improve', 'install', 'factor', 'integrate' 'Added' when 'restore', 'properly', 'sort', 'detect', 'only', 'fix', 'correct' 'Fixed' when 'work', 'do', 'ward', 'propagate', 'ensure', 'forcibly' 'Fixed' when 'differentiate', 'more' 'Fixed' when 'drop', 'assorted', 'cleanup', 'general', 'clean', 'remove' 'Removed' else 'Changed' end end log3 = [] # log3 << "# Changelog" # log3 << "\n" # log3 << "All notable changes to this project will be documented in this file." # log3 << "The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)," # log3 << "and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html)." # log3 << "\n" date_string = if date "(#{DateTime.iso8601(date).strftime('%B %d, %Y')})" else '' end version_string = if options.to.match? 'HEAD' 'Unreleased' else options.to end log3 << "## #{version_string} #{date_string}" log3 << "\n" %w[Added Fixed Removed Changed].each do |k| log3 << "### #{k}" log3 << "\n" next unless log2[k] log2[k].each do |c| log3 << "- #{c}" end log3 << "\n" end tarballs = Dir.glob "kseexpr-#{options.to[1..-1]}.tar.gz" if tarballs log3 << '### Release hashes' log3 << "\n" tarballs.each do |i| log3 << "md5sum: #{`md5sum #{i}`}" log3 << "sha256: #{`sha256sum #{i}`}" end end puts log3 kseexpr-4.0.4.0/packaging/create_release.rb0000644000000000000240000000730714156102631020564 0ustar00rootroot00000000000000# /usr/bin/env ruby # This script generates a releasable, signed tarball out of the container repo. # It also fetches, if its manifest so defines, translations from KDE i18n. # SPDX-FileCopyrightText: 2020 L. E. Segovia # SPDX-License-Identifier: BSD-3-Clause # frozen_string_literal: true require 'fileutils' require 'json' require 'optparse' require 'ostruct' require 'pathname' options = OpenStruct.new opts = OptionParser.new do |o| o.on_tail('-h', '--help', 'Show this usage statement') do |_h| options.help = true end o.on_tail('-s', '--sign USER', 'Sign generated tarballs using this key') do |h| options.gpg_key = h end o.on_tail('-k', '--skip', 'Skip base tarball generation') do |_k| options.skip_archive = true end end begin opts.parse!(ARGV) rescue StandardError => e warn e, '', opts exit 1 end if options.help puts opts exit end manifest = JSON.parse File.read('manifest.json') warn 'This script needs a JSON manifest of the underlying repo!' if manifest.empty? VERSION = (manifest['version'] || `git describe`.chomp[1..-1]).freeze PREFIX = "#{manifest['name']}-#{VERSION}" BRANCH = (manifest['gitTag'] || 'HEAD').freeze puts "Application: #{manifest['name']} #{VERSION}" ROOT = `git rev-parse --show-toplevel`.chomp.freeze puts "Repository root: #{ROOT}" PACKAGING = Pathname(Dir.pwd) unless options.skip_archive if Dir.exist?(PACKAGING / PREFIX) puts 'Removing old tarball root...' FileUtils.rm_rf PACKAGING / PREFIX end Dir.chdir(ROOT) do puts "Creating tarball root from #{BRANCH}..." system "git archive --prefix=#{PREFIX}/ #{BRANCH} | tar xv -C packaging 2> /dev/null", exception: true end unless manifest['translations'].empty? SVN_BASE = 'svn://anonsvn.kde.org/home/kde' MAINMODULE = (manifest['translations']['mainmodule'] || 'trunk').freeze MODULE = (manifest['translations']['file'] || manifest['name']).freeze REVISION = (manifest['translations']['REVISION'] || '').freeze puts "Fetching translations (#{MODULE}.po)..." Dir.chdir(PACKAGING / PREFIX) do languages = `svn cat #{SVN_BASE}/#{MAINMODULE}/l10n-kf5/subdirs`.chomp.lines Dir.mkdir('po') unless Dir.exist? 'po' Dir.mkdir('l10n') unless Dir.exist? 'l10n' languages .reject { |lang| lang.start_with? 'x-test' } .each do |lang| lang.chomp! print format('-> %20s: ', lang: lang) pofilename = "#{SVN_BASE}/#{MAINMODULE}/l10n-kf5/#{lang}/messages/kseexpr/#{MODULE}.po" system "svn cat #{pofilename} #{REVISION} 2> /dev/null | tee l10n/#{MODULE}.po > /dev/null", exception: true if FileTest.size("l10n/#{MODULE}.po").zero? puts 'file does not exist.' next end Dir.mkdir "po/#{lang}" unless Dir.exist? "po/#{lang}" FileUtils.mv "l10n/#{MODULE}.po", "po/#{lang}/" puts 'success!' end FileUtils.rm_rf 'l10n' end end end Dir.chdir(PACKAGING) do puts 'Removing old files...' FileUtils.rm Dir.glob("#{PREFIX}.*") puts 'Creating tarballs...' tar = if system('which gtar > /dev/null 2>&1') 'gtar' else 'tar' end system "#{tar} czf #{PREFIX}.tar.gz --group=root --owner=root --sort=name --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime #{PREFIX} > /dev/null", exception: true if options.gpg_key puts 'Requesting GPG signature...' system "gpg --armor --detach-sign -u #{options.gpg_key} #{PREFIX}.tar.gz", exception: true end puts "Success! Your tarball is at #{File.expand_path("#{PREFIX}.tar.gz")}" puts "md5: #{`md5sum #{PREFIX}.tar.gz`.chomp}" puts "sha256: #{`sha256sum #{PREFIX}.tar.gz`.chomp}" end kseexpr-4.0.4.0/packaging/manifest.json0000644000000000000240000000036114156102631017766 0ustar00rootroot00000000000000{ "name": "kseexpr", "gitTag": null, "translations": { "branch": "trunk", "l10nmodule": "kseexpr", "file": "seexpr2_qt", "rev": null }, "mainmodule": "trunk", "l10nmodule": "kseexpr" } kseexpr-4.0.4.0/PaxHeaders/po0000644000000000000000000000003614156104533012762 xustar0030 mtime=1639483739.745289768 kseexpr-4.0.4.0/po/0000755000000000000240000000000014156104533013762 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/PaxHeaders/ca0000644000000000000000000000003414156104220013334 xustar0028 mtime=1639483536.7967389 kseexpr-4.0.4.0/po/ca/0000755000000000000240000000000014156104220014336 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/ca/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104220016047 xustar0030 mtime=1639483536.791747536 kseexpr-4.0.4.0/po/ca/seexpr2_qt.po0000644000000000000240000014333214156104220017000 0ustar00rootroot00000000000000# Translation of seexpr2_qt.po to Catalan # Copyright (C) 2020-2021 This_file_is_part_of_KDE # This file is distributed under the license LGPL version 2.1 or # version 3 or later versions approved by the membership of KDE e.V. # # Antoni Bella Pérez , 2020. # Josep M. Ferrer , 2020, 2021. msgid "" msgstr "" "Project-Id-Version: kseexpr\n" "PO-Revision-Date: 2021-12-02 17:44+0100\n" "Last-Translator: Josep M. Ferrer \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Qt-Contexts: true\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 20.12.0\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs(float x)\n" "Valor absolut de «x»" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" "float deg(float angle)\n" "Radians a graus" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" "float rad(float angle)\n" "Graus a radians" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" "float cosd(float angle)\n" "Cosinus en graus" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" "float sind(float angle)\n" "Sinus en graus" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" "float tand(float angle)\n" "Tangent en graus" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" "float acosd(float value)\n" "Arccosinus en graus" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" "float asind(float value)\n" "Arcsinus en graus" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" "float atand(float value)\n" "Arctangent en graus" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" "float atan2d(float y,float x)\n" "Arctangent en graus de «y»/«x» entre -180 i 180" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" "float cos(float angle)\n" "Cosinus en radians" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" "float sin(float angle)\n" "Sinus en radians" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" "float tan(float angle)\n" "Tangent en radians" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" "float acos(float value)\n" "Arccosinus en radians" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" "float asin(float value)\n" "Arcsinus en radians" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" "float atan(float value)\n" "Arctangent en radians" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" "float atan2(float y,float x)\n" "Arctangent en radians de «y»/«x» entre -PI i PI" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" "float cosh(float angle)\n" "Cosinus hiperbòlic en radians" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" "float sinh(float angle)\n" "Sinus hiperbòlic en radians" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" "float tanh(float angle)\n" "Tangent hiperbòlica en radians" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" "float acosh(float value)\n" "Arccosinus hiperbòlic en radians" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" "float asinh(float value)\n" "Arcsinus hiperbòlic en radians" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" "float atanh(float value)\n" "Arctangent hiperbòlic en radians" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" "float clamp(float x,float lo,float hi)\n" "Restringeix «x» a l'interval [lo,hi]" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" "float round(float x)\n" "Arrodoneix a l'enter més proper a «x»" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" "float max(float a,float b)\n" "Enter més gran entre «a» i «b»" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" "float min(float a,float b)\n" "Enter més petit entre «a» i «b»" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" "float trunc(float a)\n" "Sencer més proper a zero" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" "float floor(float a)\n" "Següent sencer més petit" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" "float ceil(float a)\n" "Següent sencer més gran" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" "float invert(float a)\n" "Definit com a 1-x" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" "float cbrt(float x)\n" "Arrel cúbica" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" "float sqrt(float x)\n" "Arrel quadrada" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" "float exp(float x)\n" "«e» elevat a la potència de «x»" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" "float pow(float x, float y)\n" "«x» elevat a la potència de «y», també disponible com a «^»" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" "float log(float x)\n" "Logaritme natural" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" "float log10(float x)\n" "Logaritme en base 10" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" "float fmod(float x,float y)\n" "La resta de «x»/«y» (també disponible com a l'operador «%»)" # skip-rule: t-pu_sp #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=0.5)\n" "Es pren el valor absolut de cada terme de soroll. Això li dona una aparença " "més ondulada" # skip-rule: t-pu_sp #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=0.5)\n" "Es pren el valor absolut de cada terme de soroll. Això li dona una aparença " "més ondulada" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float " "gain=0.5)\n" "Es pren el valor absolut de cada terme de soroll. Això li dona una aparença " "més ondulada" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" "float compress(float x,float lo,float hi)\n" "Reassigna «x» de [0,1] a [lo,hi]" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" "float expand(float x,float lo,float hi)\n" "Reassigna «x» de [lo,hi] a [0,1]" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Reassigna linealment «x» de [a1,b1] a [a2,b2]" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" "float gamma(float x, float g)\n" "Correcció de la gamma de «x» amb el factor de la gamma de «g»" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" "float bias(float x, float g)\n" "Variació de gamma on els valors inferiors a 0,5 empenyen la corba\n" "cap avall i els valors superiors a 0,5 empenyen la corba cap amunt\n" "pow(x,log(b)/log(0.5))" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" "float contrast(float x,float c)\n" "Ajusta el contrast:  Per a «c» des de 0 fins a 0,5, redueix el contrast." "  Per a «c» > 0,5, augmenta el contrast." #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" "float boxstep(float x,float a)\n" "Si «x» és < que a, serà 0, en cas contrari 1" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" "float linearstep(float x, float a, float b)\n" "Si «x» < «a» serà 0, si «x» > «b» serà 1, i «x»\n" "canviarà linealment quan < «x» < «b»" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" "float smoothstep(float x,float a,float b)\n" "Si «x» < «a» serà 0, si «x» > «b» serà 1, i «x»\n" "canviarà suaument (cúbica) quan < «x» < «b»" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" "float gasussstep(float x,float a,float b)\n" "Si «x» < «a» serà 0, si «x» > «b» serà 1, i «x»\n" "canviarà suaument (exponencialment) quan < «x» < «b»" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" "remap(float x, float source, float range, float falloff, float interp)\n" "Funció de reassignació general.\n" "Quan «x» es troba dins de l'interval (range) +/- de la font,\n" "el resultat és u.\n" "El resultat caurà a zero més enllà d'aquest interval sobre la\n" "distància de caiguda (falloff).\n" "La forma de la caiguda està controlada per interp.\n" "Es poden usar valors numèrics o constants amb nom:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" "mix(float a,float b,float alpha)\n" "Barreja d'«a» i «b» segons alfa." #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" "color hsi(color x, float h, float s, float i, float map=1)\n" "La funció «hsi» desplaça el to per «h» (en graus) i escala la\n" "saturació i la intensitat per «s» i «i» respectivament.  Es pot\n" "proporcionar un mapa que controlarà el desplaçament: tot el\n" "desplaçament succeirà quan el mapa sigui u, i no succeirà cap\n" "canvi quan el mapa sigui zero.  El desplaçament s'escalarà\n" "a menys per als valors entre zero i u." #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "La funció «midhsi» és com la funció «hsi», excepte que el mapa\n" "de control està centrat al voltant del punt mitjà (valor de 0,5)\n" "i pot escalar el desplaçament en ambdues direccions." #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color rgbtohsl(color rgb)\n" "Conversió des de l'espai de color RGB a HSL.\n" "El HSL és To, Saturació i Claredat (tots en l'interval [0..1]).\n" "Aquestes funcions també s'han ampliat per a admetre valors RGB\n" "i HSL fora de l'interval [0..1] de manera raonable.  Per a qualsevol\n" "valor RGB o HSL (excepte per als valors «s» negatius), la conversió\n" "estarà ben definida i serà reversible." #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color hsltorgb(color hsl)\n" "Conversió des de l'espai de color HSL a RGB.\n" "El HSL és To, Saturació i Claredat (tots en l'interval [0..1]).\n" "Aquestes funcions també s'han ampliat per a admetre valors RGB\n" "i HSL fora de l'interval [0..1] de manera raonable.  Per a qualsevol\n" "valor RGB o HSL (excepte per als valors «s» negatius), la conversió\n" "estarà ben definida i serà reversible." #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" "color saturate(color val, float amt)\n" "Escala de saturació del color per «amt».\n" "El color s'escala al voltant del valor de luminància Rec. 709 i\n" "els resultats negatius es mantenen a zero.\n" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" "float rand ( [float min, float max], [float seed] )\n" "Nombre aleatori entre [min, max] (o [0, 1] si no s'especifica).\n" "Si se subministra una llavor, s'usarà a més de les llavors internes i es " "podrà utilitzar per a crear múltiples generadors diferents." #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" "float hash(float seed1,[float seed2, ...])\n" "Com «rand», però sense llavors internes. Es pot indicar qualsevol\n" "nombre de llavors i el resultat serà una funció aleatòria basada\n" "en totes les llavors." #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Soroll Perlin original a la ubicació (interpolant C2)" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" "float snoise ( vector v)\n" "Soroll signat «w/» amb l'interval -1 a 1 format amb el soroll Perlin " "original a la ubicació (interpolant C2)" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "vector vnoise ( vector v)\n" "Soroll vectorial format amb el soroll Perlin original a la ubicació " "(interpolant C2)" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise ( vector v)\n" "Soroll del color format amb el soroll Perlin original a la ubicació " "(interpolant C2)" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" "float snoise4 ( vector v,float t)\n" "Soroll signat en 4D «w/» amb l'interval -1 a 1 format amb el soroll Perlin " "original a la ubicació (interpolant C2)" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" "vector vnoise4 ( vector v,float t)\n" "Soroll vectorial en 4D format amb el soroll Perlin original a la ubicació " "(interpolant C2)" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise4 ( vector v,float t)\n" "Soroll del color en 4D format amb el soroll Perlin original a la ubicació " "(interpolant C2)" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=0.5)\n" "«fbm» (moviment brownià fraccional) és una funció de soroll amb\n" "múltiples freqüències.\n" "La freqüència base és la mateixa que la funció «noise» (soroll). El nombre " "total de freqüències està controlat per «octaves» (octaus). La " "«lacunarity» (lacunaritat) és l'espai entre les freqüències: un valor de 2 " "vol dir que cada vuitena és el doble de la freqüència anterior. El " "«gain» (guany) controla quant s'escalarà cada freqüència en relació amb la " "freqüència anterior." #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=0.5)" # skip-rule: t-pu_sp #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=0.5)\n" "«fbm» (moviment brownià fraccional) és una funció de soroll amb\n" "múltiples freqüències. La freqüència base és la mateixa que la\n" "funció «noise» (soroll). El nombre total de freqüències està\n" "controlat per «octaves» (octaus). La «lacunarity» (lacunaritat)\n" "és l'espai entre les freqüències: un valor de 2 vol dir que cada\n" "vuitena és el doble de la freqüència anterior. El «gain» (guany)\n" "controla quant s'escalarà cada freqüència en relació amb la\n" "freqüència anterior." # skip-rule: t-pu_sp #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=0.5)" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=0.5)" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=0.5)" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "float cellnoise(vector v)\n" "«cellnoise» genera un camp de cubs amb colors constants en funció de la " "ubicació del nombre sencer.\n" "És el mateix que la funció «cellnoise» de PRMan." #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "color cellnoise(vector v)\n" "«cellnoise» genera un camp de cubs amb colors constants en funció de la " "ubicació del nombre sencer.\n" "És el mateix que la funció «cellnoise» de PRMan." #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" "float pnoise ( vector v, vector period )\n" "Soroll periòdic" # skip-rule: t-pu_sp #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "«voronoi» és un patró de soroll cel·lular. És una variant nerviosa de " "«cellnoise»." # skip-rule: t-pu_sp #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "Retorna el color en un patró cel·lular. És una variant nerviosa de " "«cellnoise»." # skip-rule: t-pu_sp #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "Retorna el centre de la cel·la «voronoi»." #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" "float dist(vector a, vector b)\n" "Distància entre dos punts" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" "float length(vector v)\n" "Longitud del vector" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" "float hypot(vector v)\n" "Longitud del vector en 2D [x,y]" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" "float dot(vector a,vector b)\n" "Producte d'un punt vectorial" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" "vector norm(vector v)\n" "Vector escalat a una unitat de longitud" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" "vector cross(vector a,vector b)\n" "Producte vectorial" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" "float angle(vector a,vector b)\n" "Angle entre dos vectors (en radians)" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" "vector angle(vector a,vector b)\n" "Vector normalitzat ortogonal, «a» i «b» escalats a una unitat de longitud" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" "vector rotate(vector v,vector axis,float angle)\n" "Gira «v» al voltant de l'eix en un angle indicat (en radians)" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" "vector up(vector P,vector upvec)\n" "Gira «v» de manera que l'eix «Y» apunti en la direcció indicada" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" "int cycle(int index, int loRange, int hiRange )\n" "Recorre els valors entre «loRange» i «hiRange» segons l'índex proporcionat.\n" "Aquesta és una funció «mod» de compensació. El resultat és calculat com a " "«loRange + value % (hiRange-loRange+1)»." #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Tria aleatòriament els valors entre «loRange» i «hiRange» segons\n" "l'índex proporcionat (el qual automàticament té una suma):  Els\n" "valors es distribuiran segons els pesos subministrats.  S'assumirà\n" "que qualsevol pes no subministrat serà 1.0." #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Tria una de les opcions proporcionades segons l'índex (se suposa que està en " "l'interval [0..1])." #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" "float choose(float index,float choice1, float choice2, [...])\n" "Tria una de les opcions proporcionades segons l'índex (se suposa que està en " "l'interval [0, 1])." #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Tria una de les opcions proporcionades segons l'índex (se suposa que està en " "l'interval [0..1]).\n" "Els valors es distribuiran segons els pesos subministrats." #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpola un conjunt de valors al paràmetre especificat, on «y1»,\n" "«...» i «yn» són distribuïts homogèniament des de [0..1]" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpola una rampa en 1D definida pels punts de control en el\n" "«param». Els punts de control s'especifiquen mitjançant triples\n" "dels paràmetres «pos_i», «val_i» i «interp_i». Els codis d'interpolació\n" "són: 0 - cap, 1 - lineal, 2 - suau, 3 - spline i 4 - monòton\n" "(spline no oscil·lant)" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpola una rampa definida pels punts de control en el «param».\n" "Els punts de control s'especifiquen mitjançant triples dels\n" "paràmetres «pos_i», «val_i» i «interp_i». Els codis d'interpolació\n" "són: 0 - cap, 1 - lineal, 2 - suau, 3 - spline i 4 - monòton\n" "(spline no oscil·lant)" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" "getVar(string varName,vector defaultValue)\n" "Retorna el valor de «varName» si la variable existeix, en cas contrari " "retorna «defaultValue»" # skip-rule: t-sp_pu #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" "printf(string format,[vec0, vec1, ...])\n" "Imprimeix una cadena a la sortida estàndard, el format permès dels " "paràmetres és «%v» i «%f».\n" "El retornat pel paràmetre estarà buit, però s'haurà d'assignar a una " "variable." #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" "sprintf(string format, [double|string, double|string, ...])\n" "Retorna una cadena formatada a partir dels valors indicats. Per a obtenir " "els detalls sobre el format, vegeu «man sprintf»." #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "Afegeix una variable nova" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "S'esperava «string» o «float[d]»" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "S'esperava «float[d]»" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "S'esperava «float[%1]»" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "No coincideixen els tipus, primer: «%1», segon: «%2»" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "S'esperava «float» o «float[3]»" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "S'esperava «%1» per a l'argument i s'ha obtingut «%2»" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "Nombre incorrecte d'arguments, hauria de ser d'1 fins a 7" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "Nombre incorrecte d'arguments, hauria de ser múltiple de 3 més 1" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "Nombre incorrecte d'arguments, hauria de ser 1 o més" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "El primer argument ha de ser una cadena" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "Especificador incomplet de format" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "No hi ha cap variable anomenada «%1»" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "La funció «%1» no té definició" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "L'operació d'assignació té un tipus incorrecte «%1»" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "Els tipus de condicional no són compatibles" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "La variable «%1» està definida de manera inconsistent en condicional" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "Hi ha pocs arguments indicats per a la funció «%1»" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "Hi ha massa arguments indicats per a la funció «%1»" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "" "Tipus d'expressió generada «%1», incompatible amb el tipus desitjat «%2»" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "Error de sintaxi a prop de «%1»" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "Final inesperat de l'expressió a prop de «%1»" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "Final inesperat del format de la cadena" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "Format de la cadena no vàlid, només es permet %v o %f" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "Nombre incorrecte d'arguments per al format de la cadena" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "Error desconegut (missatge = %1)" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "Variable" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "Cerca" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "Corba" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "Corba de color" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "Predeterminat" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "Mín" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "Màx" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "Enter" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "Flotant" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Vector" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Color" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "Arc de Sant Martí" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "Ombres de gris" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Colors" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "Mostra" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "cadena" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "fitxer" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "directori" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "Nom de la cadena" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "Tipus de cadena" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "Cadena predeterminada" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "Cadena" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "Desa l'expressió" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "No s'ha pogut obrir el fitxer «%1» per a escriptura" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "Error" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "" "No s'ha pogut obrir el fitxer «%1» per a escriptura. És de només lectura?" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "Suprimeix el punt" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "Posició seleccionada:" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "Color de seleccionat:" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "Interp.:" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "Cap" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Lineal" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "Suavitzat" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "&Expandeix..." #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "Suprimeix la mostra" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "Cancel·la" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "&Afegeix..." #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "Local" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "Si us plau, seleccioneu un fitxer" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "Imatges (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "Interp.:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "Interp.:" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "Suprimeix el punt" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "Posició seleccionada:" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "Valor seleccionat:" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "Interp.:" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "Cap" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "Lineal" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "Suavitzat" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "&Expandeix..." #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "Editor d'expressions" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "Obre" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "Preferides" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "Ajuda emergent" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" #~ msgctxt "ExprAddDialog|" #~ msgid "Link" #~ msgstr "Enllaç" #~ msgctxt "ExprAddDialog|" #~ msgid "AnimCurve" #~ msgstr "AnimCurve" #~ msgctxt "ExprAddDialog|" #~ msgid "Deep Water" #~ msgstr "Aigües profundes" #~ msgctxt "ExprDialog|" #~ msgid "Preview / Library" #~ msgstr "Vista prèvia / Biblioteca" #~ msgctxt "ExprDialog|" #~ msgid "Preview" #~ msgstr "Vista prèvia" #~ msgctxt "ExprDialog|" #~ msgid "Save" #~ msgstr "Desa" #~ msgctxt "ExprDialog|" #~ msgid "Save As" #~ msgstr "Desa com a" #~ msgctxt "ExprDialog|" #~ msgid "Save Local" #~ msgstr "Desa en local" #~ msgctxt "ExprDialog|" #~ msgid "Clear" #~ msgstr "Neteja" #~ msgctxt "ExprDialog|" #~ msgid "Apply" #~ msgstr "Aplica" #~ msgctxt "ExprDialog|" #~ msgid "Accept" #~ msgstr "Accepta" #~ msgctxt "ExprDialog|" #~ msgid "Cancel" #~ msgstr "Cancel·la" #~ msgctxt "ExprDialog|" #~ msgid "Your expression had possible errors." #~ msgstr "L'expressió conté possibles errors." #~ msgctxt "ExprDialog|" #~ msgid "Do you want to accept your expression anyways?" #~ msgstr "Voleu acceptar aquesta expressió de totes maneres?" #~ msgctxt "ExprDialog|" #~ msgid "Help" #~ msgstr "Ajuda" #~ msgctxt "ExprDialog|" #~ msgid "Back" #~ msgstr "Enrere" #~ msgctxt "ExprDialog|" #~ msgid "Forward" #~ msgstr "Endavant" #~ msgctxt "ExprDialog|" #~ msgid "Find" #~ msgstr "Cerca" #~ msgctxt "ExprDialog|" #~ msgid "Find Next" #~ msgstr "Cerca la següent" #~ msgctxt "ExprDialog|" #~ msgid "Find Prev" #~ msgstr "Cerca l'anterior" #~ msgctxt "ExprDialog|" #~ msgid "Variables not supported in preview (assumed zero):
" #~ msgstr "" #~ "Variables no admeses en la vista prèvia (se suposa que és zero):
" #~ msgctxt "ExprDialog|" #~ msgid "Functions not supported in preview (assumed zero):
" #~ msgstr "" #~ "Funcions no admeses en la vista prèvia (se suposa que és zero):
" #~ msgctxt "ExprGrapherWidget|" #~ msgid "Width" #~ msgstr "Amplada" #~ msgctxt "ExprGrapherWidget|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "
%1" #~ msgstr "
%1" #~ msgctxt "ExprCurve|" #~ msgid "Selected Position: " #~ msgstr "Posició seleccionada: " kseexpr-4.0.4.0/po/PaxHeaders/ca@valencia0000644000000000000000000000003614156104224015145 xustar0030 mtime=1639483540.702988845 kseexpr-4.0.4.0/po/ca@valencia/0000755000000000000240000000000014156104224016145 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/ca@valencia/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104224017656 xustar0030 mtime=1639483540.698971348 kseexpr-4.0.4.0/po/ca@valencia/seexpr2_qt.po0000644000000000000240000014335114156104224020610 0ustar00rootroot00000000000000# Translation of seexpr2_qt.po to Catalan (Valencian) # Copyright (C) 2020-2021 This_file_is_part_of_KDE # This file is distributed under the license LGPL version 2.1 or # version 3 or later versions approved by the membership of KDE e.V. # # Antoni Bella Pérez , 2020. # Josep M. Ferrer , 2020, 2021. msgid "" msgstr "" "Project-Id-Version: kseexpr\n" "PO-Revision-Date: 2021-12-02 17:44+0100\n" "Last-Translator: Josep M. Ferrer \n" "Language-Team: Catalan \n" "Language: ca@valencia\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Qt-Contexts: true\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 20.12.0\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs(float x)\n" "Valor absolut de «x»" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" "float deg(float angle)\n" "Radians a graus" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" "float rad(float angle)\n" "Graus a radians" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" "float cosd(float angle)\n" "Cosinus en graus" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" "float sind(float angle)\n" "Sinus en graus" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" "float tand(float angle)\n" "Tangent en graus" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" "float acosd(float value)\n" "Arccosinus en graus" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" "float asind(float value)\n" "Arcsinus en graus" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" "float atand(float value)\n" "Arctangent en graus" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" "float atan2d(float y,float x)\n" "Arctangent en graus de «y»/«x» entre -180 i 180" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" "float cos(float angle)\n" "Cosinus en radians" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" "float sin(float angle)\n" "Sinus en radians" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" "float tan(float angle)\n" "Tangent en radians" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" "float acos(float value)\n" "Arccosinus en radians" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" "float asin(float value)\n" "Arcsinus en radians" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" "float atan(float value)\n" "Arctangent en radians" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" "float atan2(float y,float x)\n" "Arctangent en radians de «y»/«x» entre -PI i PI" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" "float cosh(float angle)\n" "Cosinus hiperbòlic en radians" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" "float sinh(float angle)\n" "Sinus hiperbòlic en radians" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" "float tanh(float angle)\n" "Tangent hiperbòlica en radians" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" "float acosh(float value)\n" "Arccosinus hiperbòlic en radians" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" "float asinh(float value)\n" "Arcsinus hiperbòlic en radians" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" "float atanh(float value)\n" "Arctangent hiperbòlic en radians" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" "float clamp(float x,float lo,float hi)\n" "Restringeix «x» a l'interval [lo,hi]" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" "float round(float x)\n" "Arrodoneix a l'enter més proper a «x»" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" "float max(float a,float b)\n" "Enter més gran entre «a» i «b»" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" "float min(float a,float b)\n" "Enter més petit entre «a» i «b»" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" "float trunc(float a)\n" "Sencer més proper a zero" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" "float floor(float a)\n" "Següent sencer més petit" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" "float ceil(float a)\n" "Següent sencer més gran" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" "float invert(float a)\n" "Definit com a 1-x" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" "float cbrt(float x)\n" "Arrel cúbica" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" "float sqrt(float x)\n" "Arrel quadrada" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" "float exp(float x)\n" "«e» elevat a la potència de «x»" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" "float pow(float x, float y)\n" "«x» elevat a la potència de «y», també disponible com a «^»" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" "float log(float x)\n" "Logaritme natural" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" "float log10(float x)\n" "Logaritme en base 10" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" "float fmod(float x,float y)\n" "La resta de «x»/«y» (també disponible com a l'operador «%»)" # skip-rule: t-pu_sp #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=0.5)\n" "Es pren el valor absolut de cada terme de soroll. Això li dona una aparença " "més ondulada" # skip-rule: t-pu_sp #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=0.5)\n" "Es pren el valor absolut de cada terme de soroll. Això li dona una aparença " "més ondulada" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float " "gain=0.5)\n" "Es pren el valor absolut de cada terme de soroll. Això li dona una aparença " "més ondulada" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" "float compress(float x,float lo,float hi)\n" "Reassigna «x» de [0,1] a [lo,hi]" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" "float expand(float x,float lo,float hi)\n" "Reassigna «x» de [lo,hi] a [0,1]" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Reassigna linealment «x» de [a1,b1] a [a2,b2]" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" "float gamma(float x, float g)\n" "Correcció de la gamma de «x» amb el factor de la gamma de «g»" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" "float bias(float x, float g)\n" "Variació de gamma on els valors inferiors a 0,5 empenyen la corba\n" "cap avall i els valors superiors a 0,5 empenyen la corba cap amunt\n" "pow(x,log(b)/log(0.5))" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" "float contrast(float x,float c)\n" "Ajusta el contrast:  Per a «c» des de 0 fins a 0,5, redueix el contrast." "  Per a «c» > 0,5, augmenta el contrast." #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" "float boxstep(float x,float a)\n" "Si «x» és < que a, serà 0, en cas contrari 1" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" "float linearstep(float x, float a, float b)\n" "Si «x» < «a» serà 0, si «x» > «b» serà 1, i «x»\n" "canviarà linealment quan < «x» < «b»" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" "float smoothstep(float x,float a,float b)\n" "Si «x» < «a» serà 0, si «x» > «b» serà 1, i «x»\n" "canviarà suaument (cúbica) quan < «x» < «b»" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" "float gasussstep(float x,float a,float b)\n" "Si «x» < «a» serà 0, si «x» > «b» serà 1, i «x»\n" "canviarà suaument (exponencialment) quan < «x» < «b»" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" "remap(float x, float source, float range, float falloff, float interp)\n" "Funció de reassignació general.\n" "Quan «x» es troba dins de l'interval (range) +/- de la font,\n" "el resultat és u.\n" "El resultat caurà a zero més enllà d'aquest interval sobre la\n" "distància de caiguda (falloff).\n" "La forma de la caiguda està controlada per interp.\n" "Es poden usar valors numèrics o constants amb nom:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" "mix(float a,float b,float alpha)\n" "Barreja d'«a» i «b» segons alfa." #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" "color hsi(color x, float h, float s, float i, float map=1)\n" "La funció «hsi» desplaça el to per «h» (en graus) i escala la\n" "saturació i la intensitat per «s» i «i» respectivament.  Es pot\n" "proporcionar un mapa que controlarà el desplaçament: tot el\n" "desplaçament succeirà quan el mapa siga u, i no succeirà cap\n" "canvi quan el mapa siga zero.  El desplaçament s'escalarà\n" "a menys per als valors entre zero i u." #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "La funció «midhsi» és com la funció «hsi», excepte que el mapa\n" "de control està centrat al voltant del punt mitjà (valor de 0,5)\n" "i pot escalar el desplaçament en ambdues direccions." #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color rgbtohsl(color rgb)\n" "Conversió des de l'espai de color RGB a HSL.\n" "El HSL és To, Saturació i Claredat (tots en l'interval [0..1]).\n" "Aquestes funcions també s'han ampliat per a admetre valors RGB\n" "i HSL fora de l'interval [0..1] de manera raonable.  Per a qualsevol\n" "valor RGB o HSL (excepte per als valors «s» negatius), la conversió\n" "estarà ben definida i serà reversible." #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color hsltorgb(color hsl)\n" "Conversió des de l'espai de color HSL a RGB.\n" "El HSL és To, Saturació i Claredat (tots en l'interval [0..1]).\n" "Aquestes funcions també s'han ampliat per a admetre valors RGB\n" "i HSL fora de l'interval [0..1] de manera raonable.  Per a qualsevol\n" "valor RGB o HSL (excepte per als valors «s» negatius), la conversió\n" "estarà ben definida i serà reversible." #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" "color saturate(color val, float amt)\n" "Escala de saturació del color per «amt».\n" "El color s'escala al voltant del valor de luminància Rec. 709 i\n" "els resultats negatius es mantenen a zero.\n" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" "float rand ( [float min, float max], [float seed] )\n" "Nombre aleatori entre [min, max] (o [0, 1] si no s'especifica).\n" "Si se subministra una llavor, s'usarà a més de les llavors internes i es " "podrà utilitzar per a crear múltiples generadors diferents." #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" "float hash(float seed1,[float seed2, ...])\n" "Com «rand», però sense llavors internes. Es pot indicar qualsevol\n" "nombre de llavors i el resultat serà una funció aleatòria basada\n" "en totes les llavors." #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Soroll Perlin original a la ubicació (interpolant C2)" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" "float snoise ( vector v)\n" "Soroll signat «w/» amb l'interval -1 a 1 format amb el soroll Perlin " "original a la ubicació (interpolant C2)" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "vector vnoise ( vector v)\n" "Soroll vectorial format amb el soroll Perlin original a la ubicació " "(interpolant C2)" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise ( vector v)\n" "Soroll del color format amb el soroll Perlin original a la ubicació " "(interpolant C2)" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" "float snoise4 ( vector v,float t)\n" "Soroll signat en 4D «w/» amb l'interval -1 a 1 format amb el soroll Perlin " "original a la ubicació (interpolant C2)" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" "vector vnoise4 ( vector v,float t)\n" "Soroll vectorial en 4D format amb el soroll Perlin original a la ubicació " "(interpolant C2)" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise4 ( vector v,float t)\n" "Soroll del color en 4D format amb el soroll Perlin original a la ubicació " "(interpolant C2)" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=0.5)\n" "«fbm» (moviment brownià fraccional) és una funció de soroll amb\n" "múltiples freqüències.\n" "La freqüència base és la mateixa que la funció «noise» (soroll). El nombre " "total de freqüències està controlat per «octaves» (octaus). La " "«lacunarity» (lacunaritat) és l'espai entre les freqüències: un valor de 2 " "vol dir que cada vuitena és el doble de la freqüència anterior. El " "«gain» (guany) controla quant s'escalarà cada freqüència en relació amb la " "freqüència anterior." #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=0.5)" # skip-rule: t-pu_sp #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=0.5)\n" "«fbm» (moviment brownià fraccional) és una funció de soroll amb\n" "múltiples freqüències. La freqüència base és la mateixa que la\n" "funció «noise» (soroll). El nombre total de freqüències està\n" "controlat per «octaves» (octaus). La «lacunarity» (lacunaritat)\n" "és l'espai entre les freqüències: un valor de 2 vol dir que cada\n" "vuitena és el doble de la freqüència anterior. El «gain» (guany)\n" "controla quant s'escalarà cada freqüència en relació amb la\n" "freqüència anterior." # skip-rule: t-pu_sp #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=0.5)" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=0.5)" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=0.5)" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "float cellnoise(vector v)\n" "«cellnoise» genera un camp de cubs amb colors constants en funció de la " "ubicació del nombre sencer.\n" "És el mateix que la funció «cellnoise» de PRMan." #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "color cellnoise(vector v)\n" "«cellnoise» genera un camp de cubs amb colors constants en funció de la " "ubicació del nombre sencer.\n" "És el mateix que la funció «cellnoise» de PRMan." #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" "float pnoise ( vector v, vector period )\n" "Soroll periòdic" # skip-rule: t-pu_sp #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "«voronoi» és un patró de soroll cel·lular. És una variant nerviosa de " "«cellnoise»." # skip-rule: t-pu_sp #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "Retorna el color en un patró cel·lular. És una variant nerviosa de " "«cellnoise»." # skip-rule: t-pu_sp #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "Retorna el centre de la cel·la «voronoi»." #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" "float dist(vector a, vector b)\n" "Distància entre dos punts" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" "float length(vector v)\n" "Longitud del vector" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" "float hypot(vector v)\n" "Longitud del vector en 2D [x,y]" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" "float dot(vector a,vector b)\n" "Producte d'un punt vectorial" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" "vector norm(vector v)\n" "Vector escalat a una unitat de longitud" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" "vector cross(vector a,vector b)\n" "Producte vectorial" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" "float angle(vector a,vector b)\n" "Angle entre dos vectors (en radians)" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" "vector angle(vector a,vector b)\n" "Vector normalitzat ortogonal, «a» i «b» escalats a una unitat de longitud" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" "vector rotate(vector v,vector axis,float angle)\n" "Gira «v» al voltant de l'eix en un angle indicat (en radians)" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" "vector up(vector P,vector upvec)\n" "Gira «v» de manera que l'eix «Y» apunti en la direcció indicada" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" "int cycle(int index, int loRange, int hiRange )\n" "Recorre els valors entre «loRange» i «hiRange» segons l'índex proporcionat.\n" "Aquesta és una funció «mod» de compensació. El resultat és calculat com a " "«loRange + value % (hiRange-loRange+1)»." #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Tria aleatòriament els valors entre «loRange» i «hiRange» segons\n" "l'índex proporcionat (el qual automàticament té una suma):  Els\n" "valors es distribuiran segons els pesos subministrats.  S'assumirà\n" "que qualsevol pes no subministrat serà 1.0." #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Tria una de les opcions proporcionades segons l'índex (se suposa que està en " "l'interval [0..1])." #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" "float choose(float index,float choice1, float choice2, [...])\n" "Tria una de les opcions proporcionades segons l'índex (se suposa que està en " "l'interval [0, 1])." #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Tria una de les opcions proporcionades segons l'índex (se suposa que està en " "l'interval [0..1]).\n" "Els valors es distribuiran segons els pesos subministrats." #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpola un conjunt de valors al paràmetre especificat, on «y1»,\n" "«...» i «yn» són distribuïts homogèniament des de [0..1]" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpola una rampa en 1D definida pels punts de control en el\n" "«param». Els punts de control s'especifiquen mitjançant triples\n" "dels paràmetres «pos_i», «val_i» i «interp_i». Els codis d'interpolació\n" "són: 0 - cap, 1 - lineal, 2 - suau, 3 - spline i 4 - monòton\n" "(spline no oscil·lant)" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpola una rampa definida pels punts de control en el «param».\n" "Els punts de control s'especifiquen mitjançant triples dels\n" "paràmetres «pos_i», «val_i» i «interp_i». Els codis d'interpolació\n" "són: 0 - cap, 1 - lineal, 2 - suau, 3 - spline i 4 - monòton\n" "(spline no oscil·lant)" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" "getVar(string varName,vector defaultValue)\n" "Retorna el valor de «varName» si la variable existeix, en cas contrari " "retorna «defaultValue»" # skip-rule: t-sp_pu #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" "printf(string format,[vec0, vec1, ...])\n" "Imprimeix una cadena a l'eixida estàndard, el format permés dels paràmetres " "és «%v» i «%f».\n" "El retornat pel paràmetre estarà buit, però s'haurà d'assignar a una " "variable." #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" "sprintf(string format, [double|string, double|string, ...])\n" "Retorna una cadena formatada a partir dels valors indicats. Per a obtindre " "els detalls sobre el format, vegeu «man sprintf»." #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "Afig una variable nova" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "S'esperava «string» o «float[d]»" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "S'esperava «float[d]»" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "S'esperava «float[%1]»" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "No coincideixen els tipus, primer: «%1», segon: «%2»" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "S'esperava «float» o «float[3]»" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "S'esperava «%1» per a l'argument i s'ha obtingut «%2»" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "Nombre incorrecte d'arguments, hauria de ser d'1 fins a 7" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "Nombre incorrecte d'arguments, hauria de ser múltiple de 3 més 1" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "Nombre incorrecte d'arguments, hauria de ser 1 o més" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "El primer argument ha de ser una cadena" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "Especificador incomplet de format" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "No hi ha cap variable anomenada «%1»" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "La funció «%1» no té definició" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "L'operació d'assignació té un tipus incorrecte «%1»" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "Els tipus de condicional no són compatibles" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "La variable «%1» està definida de manera inconsistent en condicional" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "Hi ha pocs arguments indicats per a la funció «%1»" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "Hi ha massa arguments indicats per a la funció «%1»" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "" "Tipus d'expressió generada «%1», incompatible amb el tipus desitjat «%2»" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "Error de sintaxi a prop de «%1»" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "Final inesperat de l'expressió a prop de «%1»" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "Final inesperat del format de la cadena" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "Format de la cadena no vàlid, només es permet %v o %f" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "Nombre incorrecte d'arguments per al format de la cadena" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "Error desconegut (missatge = %1)" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "Variable" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "Cerca" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "Corba" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "Corba de color" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "Predeterminat" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "Mín" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "Màx" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "Enter" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "Flotant" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Vector" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Color" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "Arc de Sant Martí" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "Ombres de gris" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Colors" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "Mostra" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "cadena" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "fitxer" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "directori" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "Nom de la cadena" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "Tipus de cadena" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "Cadena predeterminada" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "Cadena" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "Guarda l'expressió" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "No s'ha pogut obrir el fitxer «%1» per a escriptura" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "Error" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "" "No s'ha pogut obrir el fitxer «%1» per a escriptura. És de només lectura?" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "Suprimeix el punt" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "Posició seleccionada:" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "Color de seleccionat:" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "Interp.:" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "Cap" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Lineal" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "Suavitzat" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "&Expandeix..." #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "Suprimeix la mostra" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "Cancel·la" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "&Afig..." #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "Local" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "Per favor, seleccioneu un fitxer" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "Imatges (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "Interp.:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "Interp.:" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "Suprimeix el punt" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "Posició seleccionada:" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "Valor seleccionat:" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "Interp.:" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "Cap" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "Lineal" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "Suavitzat" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "&Expandeix..." #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "Editor d'expressions" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "Obri" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "Preferides" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "Ajuda emergent" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" #~ msgctxt "ExprAddDialog|" #~ msgid "Link" #~ msgstr "Enllaç" #~ msgctxt "ExprAddDialog|" #~ msgid "AnimCurve" #~ msgstr "AnimCurve" #~ msgctxt "ExprAddDialog|" #~ msgid "Deep Water" #~ msgstr "Aigües profundes" #~ msgctxt "ExprDialog|" #~ msgid "Preview / Library" #~ msgstr "Vista prèvia / Biblioteca" #~ msgctxt "ExprDialog|" #~ msgid "Preview" #~ msgstr "Vista prèvia" #~ msgctxt "ExprDialog|" #~ msgid "Save" #~ msgstr "Desa" #~ msgctxt "ExprDialog|" #~ msgid "Save As" #~ msgstr "Desa com a" #~ msgctxt "ExprDialog|" #~ msgid "Save Local" #~ msgstr "Desa en local" #~ msgctxt "ExprDialog|" #~ msgid "Clear" #~ msgstr "Neteja" #~ msgctxt "ExprDialog|" #~ msgid "Apply" #~ msgstr "Aplica" #~ msgctxt "ExprDialog|" #~ msgid "Accept" #~ msgstr "Accepta" #~ msgctxt "ExprDialog|" #~ msgid "Cancel" #~ msgstr "Cancel·la" #~ msgctxt "ExprDialog|" #~ msgid "Your expression had possible errors." #~ msgstr "L'expressió conté possibles errors." #~ msgctxt "ExprDialog|" #~ msgid "Do you want to accept your expression anyways?" #~ msgstr "Voleu acceptar aquesta expressió de totes maneres?" #~ msgctxt "ExprDialog|" #~ msgid "Help" #~ msgstr "Ajuda" #~ msgctxt "ExprDialog|" #~ msgid "Back" #~ msgstr "Enrere" #~ msgctxt "ExprDialog|" #~ msgid "Forward" #~ msgstr "Endavant" #~ msgctxt "ExprDialog|" #~ msgid "Find" #~ msgstr "Cerca" #~ msgctxt "ExprDialog|" #~ msgid "Find Next" #~ msgstr "Cerca la següent" #~ msgctxt "ExprDialog|" #~ msgid "Find Prev" #~ msgstr "Cerca l'anterior" #~ msgctxt "ExprDialog|" #~ msgid "Variables not supported in preview (assumed zero):
" #~ msgstr "" #~ "Variables no admeses en la vista prèvia (se suposa que és zero):
" #~ msgctxt "ExprDialog|" #~ msgid "Functions not supported in preview (assumed zero):
" #~ msgstr "" #~ "Funcions no admeses en la vista prèvia (se suposa que és zero):
" #~ msgctxt "ExprGrapherWidget|" #~ msgid "Width" #~ msgstr "Amplada" #~ msgctxt "ExprGrapherWidget|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "
%1" #~ msgstr "
%1" #~ msgctxt "ExprCurve|" #~ msgid "Selected Position: " #~ msgstr "Posició seleccionada: " kseexpr-4.0.4.0/po/PaxHeaders/cs0000644000000000000000000000003614156104231013362 xustar0030 mtime=1639483545.831692509 kseexpr-4.0.4.0/po/cs/0000755000000000000240000000000014156104231014362 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/cs/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104231016073 xustar0030 mtime=1639483545.827720734 kseexpr-4.0.4.0/po/cs/seexpr2_qt.po0000644000000000000240000007710314156104231017026 0ustar00rootroot00000000000000# Vit Pelcak , 2020, 2021. msgid "" msgstr "" "Project-Id-Version: \n" "PO-Revision-Date: 2021-07-01 09:12+0200\n" "Last-Translator: Vit Pelcak \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Lokalize 21.04.2\n" "X-Qt-Contexts: true\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "PÅ™idat novou promÄ›nnou" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "PromÄ›nná" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "Vyhledat" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "KÅ™ivka" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "Výchozí" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "Minimum" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "Max" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "Int" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "Desetinné Äíslo" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Vektor" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Barva" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "Duha" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Barvy" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "Å™etÄ›zec" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "soubor" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "adresář" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "ŘetÄ›zec" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "Nelze otevřít soubor %1 pro zápis" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "Chyba" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "Smazat bod" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "Vybraná pozice:" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "Vybraná barva:" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "Žádný" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Lineární" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "Hladké" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Splajn" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "&Rozbalit..." #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "ZruÅ¡it" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "PÅ™id&at..." #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "Místní" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "Prosím, vyberte soubor" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "Obrázky (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "Hod:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "Hod:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "Smazat bod" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "Vybraná pozice:" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "Vybraná hodnota:" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "Žádný" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "Lineární" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "Hladké" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Splajn" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "&Rozbalit..." #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "Otevřít" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "Oblíbené" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" kseexpr-4.0.4.0/po/PaxHeaders/de0000644000000000000000000000003614156104242013347 xustar0030 mtime=1639483554.029711018 kseexpr-4.0.4.0/po/de/0000755000000000000240000000000014156104242014347 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/de/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104242016060 xustar0030 mtime=1639483554.024681671 kseexpr-4.0.4.0/po/de/seexpr2_qt.po0000644000000000000240000010615014156104242017006 0ustar00rootroot00000000000000# Burkhard Lück , 2020, 2021. msgid "" msgstr "" "Project-Id-Version: \n" "PO-Revision-Date: 2021-06-03 07:42+0200\n" "Last-Translator: Burkhard Lück \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Qt-Contexts: true\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs(float x)\n" "absoluter Wert von x" #: KSeExpr/ExprBuiltins.cpp:30 #, fuzzy #| msgctxt "builtin|" #| msgid "" #| "float deg(float angle)\n" #| "radians to degrees" msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" "float deg(float winkel)\n" "Bogenmaß (rad) ín Grad (°)" #: KSeExpr/ExprBuiltins.cpp:31 #, fuzzy #| msgctxt "builtin|" #| msgid "" #| "float deg(float angle)\n" #| "degrees to radians" msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" "float deg(float winkel)\n" "Grad (°) in Bogenmaß (rad)" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" "float cosd(float winkel)\n" "Kosinus in Grad (°)" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" "float sind(float winkel)\n" "Sinus in Grad (°)" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" "float tand(float winkel)\n" "Tangens in Grad (°)" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" "float acosd(float winkel)\n" "Arcuscosinus in Grad (°)" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" "float asind(float winkel)\n" "Arcussinus in Grad (°)" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" "float atand(float winkel)\n" "Arcustangens in Grad (°)" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" "float atan2d(float y,float x)\n" "Arcustangens in Grad (°) von y/x zwischen -180 and 180" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" "float cos(float winkel)\n" "Kosinus im Bogenmaß (rad)" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" "float sin(float winkel)\n" "Sinus im Bogenmaß (rad)" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" "float tan(float winkel)\n" "Tangens im Bogenmaß (rad)" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" "float acos(float winkel)\n" "Arcuscosinus im Bogenmaß (rad)" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" "float asin(float winkel)\n" "Arcussinus im Bogenmaß (rad)" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" "float atan(float winkel)\n" "Arcustangens im Bogenmaß (rad)" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" "float atan2(float y,float x)\n" "Arcustangens im Bogenmaß (rad) von y/x zwischen - pi und pi" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" "float cosh(float winkel)\n" "Kosinus hyperbolicus im Bogenmaß (rad)" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" "float sinh(float winkel)\n" "Sinus hyperbolicus im Bogenmaß (rad)" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" "float tanh(float winkel)\n" "Tangens hyperbolicus im Bogenmaß (rad)" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" "float acosh(float winkel)\n" "Arcuscosinus hyperbolicus im Bogenmaß (rad)" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" "float asinh(float winkel)\n" "Arcussinus hyperbolicus im Bogenmaß (rad)" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" "float atanh(float winkel)\n" "Arcustangens hyperbolicus im Bogenmaß (rad)" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" "float cbrt(float x)\n" "Dritte Wurzel" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" "float sqrt(float x)\n" "Quadratwurzel" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" "float log(float x)\n" "Natürlicher Logarithmus" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" "float log10(float x)\n" "Dekadischer Logarithmus" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" "float dist(vector a, vector b)\n" "Abstand zwischen zwei Punkten" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" "float length(vector v)\n" "Länge des Vektors" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" "float hypot(vector v)\n" "Länge des zweidimensionalen Vektors [x,y]" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "Neue Variable hinzufügen" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "Falsche Anzahl von Argumenten, muss zwischen 1 und 7 sein" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "Keine Variable mit dem Namen „%1“" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "Zu wenig Argumente für die Funktion „%1“" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "Zu viele Argumente für die Funktion „%1“" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "Unbekannter Fehler (Meldung = %1)" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "Variable" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "Kurve" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "Farbkurve" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "Standard" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "Min" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "Max" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Vektor" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Farbe" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "Regenbogen" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Farben" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "Zeichenfolge" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "Datei" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "Ordner" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "Standard-Zeichenfolge" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "Zeichenfolge" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "Ausdruck speichern" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "Die Datei %1 kann nicht zum Schreiben geöffnet werden" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "Fehler" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "" "Die Datei %1 kann nicht zum Schreiben geöffnet werden. Ist sie " "schreibgeschützt?" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "Punkt löschen" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "Ausgewählte Position:" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "Ausgewählte Farbe:" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "Kein" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Linear" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "" #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 #, fuzzy #| msgctxt "CCurveScene|" #| msgid "Delete Point" msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "Punkt löschen" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "Abbrechen" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "&Hinzufügen ..." #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "Lokal" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "Bitte wählen Sie eine Datei" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "Bilder (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "Punkt löschen" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "Ausgewählte Position:" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "Ausgewählter Wert:" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "Kein" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "Linear" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "" #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "Ausdrucks-Editor" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "Öffnen" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "Favoriten" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" #~ msgctxt "ExprDialog|" #~ msgid "Preview / Library" #~ msgstr "Vorschau / Bibliothek" #~ msgctxt "ExprDialog|" #~ msgid "Preview" #~ msgstr "Vorschau" #~ msgctxt "ExprDialog|" #~ msgid "Save" #~ msgstr "Speichern" #~ msgctxt "ExprDialog|" #~ msgid "Save As" #~ msgstr "Speichern unter" #~ msgctxt "ExprDialog|" #~ msgid "Clear" #~ msgstr "Löschen" #~ msgctxt "ExprDialog|" #~ msgid "Apply" #~ msgstr "Anwenden" #~ msgctxt "ExprDialog|" #~ msgid "Accept" #~ msgstr "Annehmen" #~ msgctxt "ExprDialog|" #~ msgid "Cancel" #~ msgstr "Abbrechen" #~ msgctxt "ExprDialog|" #~ msgid "Help" #~ msgstr "Hilfe" #~ msgctxt "ExprDialog|" #~ msgid "Back" #~ msgstr "Zurück" #~ msgctxt "ExprDialog|" #~ msgid "Forward" #~ msgstr "Vorwärts" #~ msgctxt "ExprDialog|" #~ msgid "Find" #~ msgstr "Suchen" #~ msgctxt "ExprDialog|" #~ msgid "Find Next" #~ msgstr "Weitersuchen" #~ msgctxt "ExprDialog|" #~ msgid "Find Prev" #~ msgstr "Vorherige suchen" #~ msgctxt "ExprGrapherWidget|" #~ msgid "Width" #~ msgstr "Breite" #~ msgctxt "ExprGrapherWidget|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "
%1" #~ msgstr "
%1" kseexpr-4.0.4.0/po/PaxHeaders/en_GB0000644000000000000000000000003614156104250013730 xustar0030 mtime=1639483560.441142803 kseexpr-4.0.4.0/po/en_GB/0000755000000000000240000000000014156104250014730 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/en_GB/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104250016441 xustar0030 mtime=1639483560.437327824 kseexpr-4.0.4.0/po/en_GB/seexpr2_qt.po0000644000000000000240000013657414156104250017404 0ustar00rootroot00000000000000# Steve Allewell , 2020, 2021. msgid "" msgstr "" "Project-Id-Version: \n" "PO-Revision-Date: 2021-07-04 13:45+0100\n" "Last-Translator: Steve Allewell \n" "Language-Team: British English \n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Qt-Contexts: true\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 21.04.2\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs(float x)\n" "absolute value of x" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" "float deg(float angle)\n" "radians to degrees" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" "float rad(float angle)\n" "degrees to radians" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" "float cosd(float angle)\n" "cosine in degrees" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" "float sind(float angle)\n" "sine in degrees" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" "float tand(float angle)\n" "tangent in degrees" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" "float acosd(float value)\n" "arc cosine in degrees" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" "float asind(float value)\n" "arc sine in degrees" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" "float atand(float value)\n" "arc tangent in degrees" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" "float cos(float angle)\n" "cosine in radians" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" "float sin(float angle)\n" "sine in radians" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" "float tan(float angle)\n" "tangent in radians" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" "float acos(float value)\n" "arc cosine in radians" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" "float asin(float value)\n" "arc sine in radians" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" "float atan(float value)\n" "arc tangent in radians" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" "float cosh(float angle)\n" "hyperbolic cosine in radians" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" "float sinh(float angle)\n" "hyperbolic sine in radians" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" "float tanh(float angle)\n" "hyperbolic tangent in radians" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" "float asinh(float value)\n" "hyperbolic arc sine in radians" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" "float round(float x)\n" "nearest integer to x" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" "float max(float a,float b)\n" "greater of a and b" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" "float min(float a,float b)\n" "lesser of a and b" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" "float trunc(float a)\n" "nearest integer towards zero" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" "float floor(float a)\n" "next lower integer" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" "float ceil(float a)\n" "next higher integer" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" "float invert(float a)\n" "Defined as 1-x" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" "float cbrt(float x)\n" "cube root" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" "float sqrt(float x)\n" "square root" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" "float exp(float x)\n" "E raised to the x power" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" "float pow(float x, float y)\n" "x to the y power, also available as ^" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" "float log(float x)\n" "Natural logarithm" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" "float log10(float x)\n" "Base 10 logarithm" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centred around the mid point (value of 0.5)\n" "and can scale the shift in both directions." #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color rgbtohsl(color rgb)\n" "RGB to HSL colour space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support RGB and HSL values\n" "outside of the range [0..1] in a reasonable way.  For any RGB or\n" "HSL value (except for negative s values), the conversion is\n" "well-defined and reversible." #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color hsltorgb(color hsl)\n" "HSL to RGB colour space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support RGB and HSL values\n" "outside of the range [0..1] in a reasonable way.  For any RGB or\n" "HSL value (except for negative s values), the conversion is\n" "well-defined and reversible." #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" "color saturate(color val, float amt)\n" "Scale saturation of colour by amt.\n" "The colour is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise ( vector v)\n" "colour noise formed with original perlin noise at location (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise4 ( vector v,float t)\n" "4D colour noise formed with original perlin noise at location (C2 " "interpolant)" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant coloured cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant coloured cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" "float pnoise ( vector v, vector period )\n" "periodic noise" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns colour in cellular pattern. It is a jittered variant of cellnoise." #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns centre of voronoi cell." #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" "float dist(vector a, vector b)\n" "distance between two points" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" "float length(vector v)\n" "length of vector" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" "float hypot(vector v)\n" "length of 2d vector [x,y]" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" "float dot(vector a,vector b)\n" "vector dot product" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" "vector norm(vector v)\n" "vector scaled to unit length" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" "vector cross(vector a,vector b)\n" "vector cross product" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" "vector angle(vector a,vector b)\n" "normalised vector orthogonal to a and b scaled to unit length" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied colour choices based on the index (assumed to be " "in range [0..1])." #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates colour ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "Add new variable" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "Expected string or float[d]" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "Expected float[d]" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "Expected float[%1]" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "Type mismatch, first: '%1'; second: '%2'" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "Expected float or float[3]" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "Expected '%1' for argument, got '%2'" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "Wrong number of arguments, should be 1 to 7" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "Wrong number of arguments, should be multiple of 3 plus 1" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "Wrong number of arguments, should be 1 or more" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "First argument must be a string" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "Incomplete format specifier" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "No variable named '%1'" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "Function '%1' has no definition" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "Assignment operation has incorrect type '%1'" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "Types of conditional are not compatible" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "Variable '%1' defined in conditionals inconsistently" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "Too few arguments for function '%1'" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "Too many arguments for function '%1'" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "Expression generated type '%1', incompatible with desired type '%2'" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "Syntax error near '%1'" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "Unexpected end of expression near '%1'" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "Unexpected end of format string" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "Invalid format string, only %v or %f is allowed" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "Wrong number of arguments for format string" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "Unknown error (message = %1)" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "Variable" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "Lookup" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "Curve" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "Colour Curve" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "Default" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "Min" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "Max" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "Int" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "Float" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Vector" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Colour" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "Rainbow" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "Shades of Grey" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Colours" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "Swatch" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "string" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "file" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "directory" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "String Name" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "String Type" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "String Default" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "String" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "Save Expression" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "Could not open file %1 for writing" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "Error" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "Could not open file %1 for writing. Is it read-only?" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "Delete Point" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "Selected Position:" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "Selected Colour:" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "None" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Linear" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "Smooth" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "&Expand..." #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "Delete Swatch" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "Cancel" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "&Add..." #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "Local" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "Please choose a file" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "Images (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "Delete Point" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "Selected Position:" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "Selected Value:" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "None" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "Linear" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "Smooth" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "&Expand..." #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "Expression Editor" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "Open" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "Favourites" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "Pop-up Help" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" #~ msgctxt "ExprAddDialog|" #~ msgid "Link" #~ msgstr "Link" #~ msgctxt "ExprAddDialog|" #~ msgid "AnimCurve" #~ msgstr "AnimCurve" #~ msgctxt "ExprAddDialog|" #~ msgid "Deep Water" #~ msgstr "Deep Water" #~ msgctxt "ExprDialog|" #~ msgid "Preview / Library" #~ msgstr "Preview / Library" #~ msgctxt "ExprDialog|" #~ msgid "Preview" #~ msgstr "Preview" #~ msgctxt "ExprDialog|" #~ msgid "Save" #~ msgstr "Save" #~ msgctxt "ExprDialog|" #~ msgid "Save As" #~ msgstr "Save As" #~ msgctxt "ExprDialog|" #~ msgid "Save Local" #~ msgstr "Save Local" #~ msgctxt "ExprDialog|" #~ msgid "Clear" #~ msgstr "Clear" #~ msgctxt "ExprDialog|" #~ msgid "Apply" #~ msgstr "Apply" #~ msgctxt "ExprDialog|" #~ msgid "Accept" #~ msgstr "Accept" #~ msgctxt "ExprDialog|" #~ msgid "Cancel" #~ msgstr "Cancel" #~ msgctxt "ExprDialog|" #~ msgid "Your expression had possible errors." #~ msgstr "Your expression had possible errors." #~ msgctxt "ExprDialog|" #~ msgid "Do you want to accept your expression anyways?" #~ msgstr "Do you want to accept your expression anyway?" #~ msgctxt "ExprDialog|" #~ msgid "Help" #~ msgstr "Help" #~ msgctxt "ExprDialog|" #~ msgid "Back" #~ msgstr "Back" #~ msgctxt "ExprDialog|" #~ msgid "Forward" #~ msgstr "Forward" #~ msgctxt "ExprDialog|" #~ msgid "Find" #~ msgstr "Find" #~ msgctxt "ExprDialog|" #~ msgid "Find Next" #~ msgstr "Find Next" #~ msgctxt "ExprDialog|" #~ msgid "Find Prev" #~ msgstr "Find Prev" #~ msgctxt "ExprDialog|" #~ msgid "Variables not supported in preview (assumed zero):
" #~ msgstr "Variables not supported in preview (assumed zero):
" #~ msgctxt "ExprDialog|" #~ msgid "Functions not supported in preview (assumed zero):
" #~ msgstr "Functions not supported in preview (assumed zero):
" #~ msgctxt "ExprGrapherWidget|" #~ msgid "Width" #~ msgstr "Width" #~ msgctxt "ExprGrapherWidget|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "
%1" #~ msgstr "
%1" #~ msgctxt "ExprCurve|" #~ msgid "Selected Position: " #~ msgstr "Selected Position: " kseexpr-4.0.4.0/po/PaxHeaders/es0000644000000000000000000000003614156104255013372 xustar0030 mtime=1639483565.042780513 kseexpr-4.0.4.0/po/es/0000755000000000000240000000000014156104255014372 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/es/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104255016103 xustar0030 mtime=1639483565.038312674 kseexpr-4.0.4.0/po/es/seexpr2_qt.po0000644000000000000240000014303714156104255017036 0ustar00rootroot00000000000000# Sofia Priego , %Y. # Eloy Cuadra , 2020, 2021. msgid "" msgstr "" "Project-Id-Version: seexpr2_qt\n" "PO-Revision-Date: 2021-07-03 19:13+0100\n" "Last-Translator: Sofia Priego \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Qt-Contexts: true\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 21.04.2\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs(float x)\n" "valor absoluto de x" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" "float deg(float ángulo)\n" "radianes a grados" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" "float rad(float ángulo)\n" "grados a radianes" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" "float cosd(float ángulo)\n" "coseno en grados" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" "float sind(float ángulo)\n" "seno en grados" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" "float tand(float ángulo)\n" "tangente en grados" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" "float acosd(float valor)\n" "arcocoseno en grados" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" "float asind(float valor)\n" "arcoseno en grados" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" "float atand(float valor)\n" "arcotangente en grados" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" "float atan2d(float y,float x)\n" "arcotangente en grados de y/x entre -180 y 180" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" "float cos(float ángulo)\n" "coseno en radianes" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" "float sin(float ángulo)\n" "seno en radianes" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" "float tan(float ángulo)\n" "tangente en radianes" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" "float acos(float valor)\n" "arcocoseno en radianes" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" "float asin(float valor)\n" "arcoseno en radianes" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" "float atan(float valor)\n" "arcotangente en radianes" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" "float atan2(float y,float x)\n" "arcotangente en radianes de y/x entre -PI y PI" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" "float cosh(float ángulo)\n" "coseno hiperbólico en radianes" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" "float sinh(float ángulo)\n" "seno hiperbólico en radianes" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" "float tanh(float ángulo)\n" "tangente hiperbólica en radianes" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" "float acosh(float valor)\n" "arcocoseno hiperbólico en radianes" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" "float asinh(float valor)\n" "arcoseno hiperbólico en radianes" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" "float atanh(float valor)\n" "arcotangente hiperbólica en radianes" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" "float clamp(float x,float bajo,float alto)\n" "limitar x al intervalo [bajo,alto]" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" "float round(float x)\n" "entero más cercano a x" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" "float max(float a,float b)\n" "mayor de a y b" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" "float min(float a,float b)\n" "menor de a y b" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" "float trunc(float a)\n" "entero más cercano hacia cero" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" "float floor(float a)\n" "siguiente entero más bajo" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" "float ceil(float a)\n" "siguiente entero más alto" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" "float invert(float a)\n" "Definido como 1-x" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" "float cbrt(float x)\n" "raíz cúbica" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" "float sqrt(float x)\n" "raíz cuadrada" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" "float exp(float x)\n" "E elevado a la potencia de x" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" "float pow(float x, float y)\n" "x a la potencia de y, también está disponible como ^" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" "float log(float x)\n" "Logaritmo natural" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" "float log10(float x)\n" "Logaritmo en base 10" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" "float fmod(float x,float y)\n" "resto de x/y (también disponible como el operador %)" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "float turbulence(vector v,int octavas=6,float lagunaridad=2,float " "ganancia=.5)\n" "Se toma el valor absoluto de cada término de ruido. Esto proporciona una " "apariencia ondulada." #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "color cturbulence(vector v,int octavas=6,float lagunaridad=2,float " "ganancia=.5)\n" "Se toma el valor absoluto de cada término de ruido. Esto proporciona una " "apariencia ondulada." #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "vector vturbulence(vector v,int octavas=6,float lagunaridad=2,float " "ganancia=.5)\n" "Se toma el valor absoluto de cada término de ruido. Esto proporciona una " "apariencia ondulada." #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" "float compress(float x,float bajo,float alto)\n" "Remapea x en [0,1] a [bajo,alto]" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" "float expand(float x,float bajo,float alto)\n" "Remapea x en [bajo,alto] a [0,1]" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Remapea linealmente x en [a1,b1] a [a2,b2]" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" "float gamma(float x, float g)\n" "Corrección gamma de x con el factor gamma g" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" "float bias(float x, float g)\n" "Variación de gamma en la que los valores menores que 0.5 tiran de la curva " "hacia abajo\n" "y los valores mayores que 0.5 tiran de la curva hacia arriba\n" "pow(x,log(b)/log(0.5))" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" "float contrast(float x, float c)\n" "Ajustar el contraste.  Para c de 0 a 0.5, se disminuye el contraste." "  Para c > 0.5, se aumenta el contraste." #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" "float boxstep(float x,float a)\n" "si x < a entonces 0 en caso contrario 1" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" "float linearstep(float x, float a, float b)\n" " si x < a entonces 0, si x > b entonces 1, y\n" "x se convierte linealmente cuando a < x < b" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" "float smoothstep(float x,float a,float b)\n" " si x < a entonces 0, si x > b entonces 1, y\n" "x se convierte suavemente (de forma cúbica) cuando a < x < b" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" "float gasussstep(float x,float a,float b)\n" " si x < a entonces 0, si x > b entonces 1, y\n" "x se convierte suavemente (de forma exponencial) cuando a < x < b" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" "remap(float x, float origen, float intervado, float caída, float interp)\n" "Función de remapeo general.\n" "Cuando x está dentro de +/- intervalo de origen, el resultado " "es uno.\n" "El resultado cae a cero más allá de este intervalo, sobre la distancia de " "caída.\n" "La forma de la caída se controla con interp. Se pueden usar valores\n" "numéricos o constantes con nombre:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" "mix(float a,float b,float alfa)\n" "Mezcla de a y b según alfa." #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" "color hsi(color x, float h, float s, float i, float mapa=1)\n" "La función «hsi» desplaza el matiz «h» grados\n" "y escala la saturación y la intensidad «s» e «i», respectivamente.\n" "  Se puede proporcionar un mapa para controlar el desplazamiento\n" " (tendrá lugar un desplazamiento completo cuando el mapa es uno, mientras\n" "que no habrá desplazamiento cuando el mapa es cero.  El desplazamiento\n" "se escalará hacia atrás para los valores entre cero y uno." #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "La función «midhsi» es similar a la función «hsi», excepto que el mapa\n" "de control está centrado alrededor del punto medio (valor de 0.5)\n" "y puede escalar el desplazamiento en ambas direcciones." #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color rgbtohsl(color rgb)\n" "Conversión de espacio de color RGB a HSL.\n" "HSL significa «matiz», «saturación» y «luminosidad» (todos en el intervalo " "[0..1]).\n" "Estas funciones también se han extendido para permitir valores RGB y HSL\n" "fuera del intervalo [0..1] de un modo razonable.  La conversión está " "bien\n" "definida y es reversible para cualquier valor RGB o HSL (excepto para " "valores\n" "negativos de «s»)." #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color hsltorgb(color hsl)\n" "Conversión de espacio de color HSL a RGB.\n" "HSL significa «matiz», «saturación» y «luminosidad» (todos en el intervalo " "[0..1]).\n" "Estas funciones también se han extendido para permitir valores RGB y HSL\n" "fuera del intervalo [0..1] de un modo razonable.  La conversión está " "bien\n" "definida y es reversible para cualquier valor RGB o HSL (excepto para " "valores\n" "negativos de «s»)." #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" "color saturate(color val, float cantidad)\n" "Escalar la saturación de color en «cantidad».\n" "El color se escala en torno al valor de luminancia rec709,\n" "mientras que los valores negativos se recortan a cero.\n" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" "float rand ( [float mín, float máx], [float semilla] )\n" "Número aleatorio entre [mín, máx] (o [0, 1] si no se especifican).\n" "Si se proporciona una «semilla», se usará adicionalmente a las semillas " "internas; se puede usar para crear múltiples generadores distintos." #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" "float hash(float semilla1,[float semilla2, ...])\n" "Como rand, pero sin semillas internas. Se puede indicar cualquier número de\n" "semillas y el resultado será una función aleatoria basada en todas las " "semillas." #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Ruido Perlin original de la posición (interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" "float snoise ( vector v)\n" "Ruido con signo en el intervalo -1 a 1 formado con el ruido Perlin original " "de la posición (interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "vector vnoise ( vector v)\n" "Ruido vectorial formado con el ruido Perlin original de la posición " "(interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise ( vector v)\n" "Ruido de color formado con el ruido Perlin original de la posición " "(interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" "float snoise4 ( vector v,float t)\n" "Ruido con signo en 4D en el intervalo -1 a 1 formado con el ruido Perlin " "original de la posición (interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" "vector vnoise4 ( vector v,float t)\n" "Ruido vectorial en 4D formado con el ruido Perlin original de la posición " "(interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise4 ( vector v,float t)\n" "Ruido de color en 4D formado con el ruido Perlin original de la posición " "(interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" "float fbm(vector v,int octavas=6,float lagunaridad=2,float ganancia=.5)\n" "El «fbm» (movimiento browniano fraccionario) es una función de ruido " "multifrecuencia. \n" "La frecuencia base es la misma que la de la función «noise». El número total " "de frecuencias se controla mediante «octavas». La «lagunaridad» es el " "espacio entre las frecuencias (un valor de 2 significa que cada octava es el " "doble de la frecuencia anterior). La «ganancia» controla cuánto se escala " "cada frecuencia con relación a la frecuencia anterior." #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" "vector vfbm(vector vint octavas=6,float lagunaridad=2,float ganancia=.5)" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" "float fbm4(vector v,float tiempo,int octavas=6,float lagunaridad=2,float " "ganancia=.5)\n" "El «fbm» (movimiento browniano fraccionario) es una función de ruido " "multifrecuencia. \n" "La frecuencia base es la misma que la de la función «noise». El número " "total \n" "de frecuencias se controla mediante «octavas». La «lagunaridad» es el \n" "espacio entre las frecuencias (un valor de 2 significa que cada octava es \n" "el doble de la frecuencia anterior). La «ganancia» controla cuánto se " "escala \n" "cada frecuencia con relación a la frecuencia anterior." #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "vector vfbm4(vector v,float tiempo,int octavas=6,float lagunaridad=2,float " "ganancia=.5)" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" "color cfbm(vector vint octavas=6,float lagunaridad=2,float ganancia=.5)" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "color cfbm4(vector v,float tiempo,int octavas=6,float lagunaridad=2,float " "ganancia=.5)" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "float cellnoise(vector v)\n" "«cellnoise» genera un campo constante de cubos de color basado en la " "posición entera.\n" "Es idéntica a la función «cellnoise» de PRMan." #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "color cellnoise(vector v)\n" "«cellnoise» genera un campo constante de cubos de color basado en la " "posición entera.\n" "Es idéntica a la función «cellnoise» de PRMan." #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" "float pnoise ( vector v, vector periodo )\n" "ruido periódico" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" "float voronoi(vector v, int tipo=1,float agitación=0.5, float fbmEscala=0, " "int fbmOctavas=4,float fbmLagunaridad=2, float fbmGanancia=.5)\n" "«voronoi» es un patrón de ruido celular. Es una variante de «cellnoise» con " "agitación." #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" "color cvoronoi(vector v, int tipo=1,float agitación=0.5, float fbmEscala=0, " "int fbmOctavas=4,float fbmLagunaridad=2, float fbmGanancia=.5)\n" "Devuelve el color de un patrón celular. Es una variante de «cellnoise» con " "agitación." #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" "color pvoronoi(vector v, int tipo=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "devuelve el centro de la celda de Voronói." #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" "float dist(vector a, vector b)\n" "distancia entre dos puntos" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" "float length(vector v)\n" "longitud del vector" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" "float hypot(vector v)\n" "longitud del segundo vector [x,y]" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" "float dot(vector a,vector b)\n" "Producto de un punto vectorial" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" "vector norm(vector v)\n" "vector escalado a la longitud unitaria" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" "vector cross(vector a,vector b)\n" "Producto de un cruce vectorial" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" "float angle(vector a,vector b)\n" "ángulo entre dos vectores (en radianes)" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" "vector angle(vector a,vector b)\n" "Vector ortogonal normalizado de «a» y «b» escalado a la longitud unitaria" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" "vector rotate(vector v,vector eje,float ángulo)\n" "rota v alrededor del eje el ángulo indicado (en radianes)" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" "vector up(vector P,vector vectorarriba)\n" "Rota «v» de tal modo que el eje Y apunte en la dirección arriba indicada" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" "int cycle(int índice, int limInferior, int limSuperior )\n" "Recorre los valores entre «limInferior» y «limSuperior» según el índice " "proporcionado.\n" "Es una función «mod» de desplazamiento. El resultado se calcula como " "``limInferior + valor % (limSuperior - limInferior + 1)``." #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" "int pick(float índice, int limInferior, int limSuperior, [float " "pesos, ...] )\n" "Escoge valores aleatoriamente entre «limInferior» y «limSuperior» según el " "índice proporcionado (cuyo\n" "«hash» se obtiene automáticamente).  Los valores se distribuirán según\n" "los pesos proporcionados.  Se asume que los pesos no indicados valen\n" "1.0." #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" "color swatch(float índice, color elección0, color elección1, color " "elección2, [...])\n" "Escoge una de las elecciones de color proporcionadas basándose en el " "«índice» (que se supone en el intervalo [0..1])." #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" "float choose(float índice,float elección1, float elección2, [...])\n" "Escoge una de las elecciones proporcionadas basándose en el «índice» (que se " "supone en el intervalo [0, 1])." #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" "float wchoose(float índice,float elección1, float peso1, float elección2, " "float peso2, [...] )\n" "Escoge una de las elecciones proporcionadas basándose en el «índice» (que se " "supone en el intervalo [0..1]).\n" "Los valores se distribuyen según los pesos proporcionados." #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" "float spline(float parámetro,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpola un conjunto de valores al parámetro especificado, donde y1, ..., " "yn se\n" "distribuyen uniformemente desde [0..1]" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "float curve(float parámetro,float pos0,float val0,int interp0,float pos1," "float val1,int interp1,[...])\n" "\n" "Interpola una rampa de 1D definida por los puntos de control en «parámetro». " "Los puntos de control se especifican \n" "mediante tripletes de los parámetros pos_i, val_i e interp_i. Los códigos de " "interpolación son \n" "0 - ninguno, 1 - lineal, 2 - suave, 3 - spline, \n" "4 - monótono (spline no oscilante)" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "color curve(float parámetro,float pos0,color val0,int interp0,float pos1," "color val1,int interp1,[...])\n" "\n" "Interpola la rampa de color indicada por los puntos de control de " "«parámetro». Los puntos de control se especifican \n" "mediante tripletes de los parámetros pos_i, val_i e interp_i. Los códigos de " "interpolación son \n" "0 - ninguno, 1 - lineal, 2 - suave, 3 - spline, \n" "4 - monótono (spline no oscilante)" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" "getVar(string nombreVariable,vector valorPredeterminado)\n" "Devuelve el valor de «nombreVariable» si existe dicha variable. En caso " "contrario devuelve «valorPredeterminado»." #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" "float printf(string formato,[vec0, vec1, ...])\n" "Imprime una cadena de texto en STDOUT. Los parámetros de formato permitidos " "son «%v» y «%f».\n" "El parámetro devuelto está vacío, aunque se puede asignar a una variable." #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" "sprintf(string formato, [double|string, double|string, ...])\n" "Devuelve una cadena de texto formateada con los valores indicados. Consulte " "«man sprintf» para los detalles del formato." #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "Añadir nueva variable" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "Se esperaba string o float[d]" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "Se esperaba float[d]" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "Se esperaba float[%1]" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "El tipo no coincide; primero: «%1»; segundo: «%2»" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "Se esperaba float o float[3]" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "Se esperaba «%1» para el argumento, pero se ha obtenido «%2»" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "Número incorrecto de argumentos; deben ser de 1 a 7" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "Número incorrecto de argumentos, debe ser múltiplo de 3 más 1" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "Número incorrecto de argumentos; debe ser 1 o más" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "El primer argumento debe ser una cadena de texto" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "Especificador de formato incompleto" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "No hay ninguna variable con el nombre «%1»" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "La función «%1» no tiene definición" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "La operación de asignación tiene el tipo incorrecto «%1»" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "Los tipos del condicional no son compatibles" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "Variable «%1» definida en los condicionales de forma inconsistente" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "Faltan argumentos para la función «%1»" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "Demasiados argumentos para la función «%1»" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "" "El tipo de expresión generado «%1» es incompatible con el tipo deseado «%2»" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "Error de sintaxis próximo a «%1»" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "Fin de expresión no esperado próximo a «%1»" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "Fin no esperado de la cadena de formato" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "Cadena de formato no válida. Solo se permite %v o %f." #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "Número incorrecto de argumentos para la cadena de formato" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "Error desconocido (mensaje = %1)" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "Variable" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "Búsqueda" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "Curva" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "Curva de color" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "Por omisión" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "Mín" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "Máx" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "Int" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "Float" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Vector" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Color" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "Arcoíris" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "Tonos de gris" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Colores" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "Muestra" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "cadena de texto" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "archivo" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "directorio" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "Nombre de la cadena de texto" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "Tipo de cadena de texto" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "Cadena de texto por omisión" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "Cadena de texto" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "Guardar expresión" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "No se ha podido abrir el archivo %1 para escritura" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "Error" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "" "No se ha podido abrir el archivo %1 para escritura. ¿Es de solo lectura?" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "Borrar punto" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "Posición seleccionada:" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "Color seleccionado:" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "Intérp:" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "Ninguna" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Lineal" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "Suave" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "&Expandir..." #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "Borrar muestra" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "Cancelar" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "&Añadir..." #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "Local" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "Seleccione un archivo" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "Imágenes (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "Intérp:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "Intérp:" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "Borrar punto" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "Posición seleccionada:" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "Valor seleccionado:" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "Intérp:" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "Ninguna" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "Lineal" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "Suave" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "&Expandir..." #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "Editor de expresiones" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "Abrir" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "Favoritos" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "Ayuda emergente" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" #~ msgctxt "ExprAddDialog|" #~ msgid "Link" #~ msgstr "Enlace" #~ msgctxt "ExprAddDialog|" #~ msgid "AnimCurve" #~ msgstr "CurvaAnim" #~ msgctxt "ExprAddDialog|" #~ msgid "Deep Water" #~ msgstr "Aguas profundas" #~ msgctxt "ExprDialog|" #~ msgid "Preview / Library" #~ msgstr "Vista previa / biblioteca" #~ msgctxt "ExprDialog|" #~ msgid "Preview" #~ msgstr "Vista previa" #~ msgctxt "ExprDialog|" #~ msgid "Save" #~ msgstr "Guardar" #~ msgctxt "ExprDialog|" #~ msgid "Save As" #~ msgstr "Guardar como" #~ msgctxt "ExprDialog|" #~ msgid "Save Local" #~ msgstr "Guardar localmente" #~ msgctxt "ExprDialog|" #~ msgid "Clear" #~ msgstr "Borrar" #~ msgctxt "ExprDialog|" #~ msgid "Apply" #~ msgstr "Aplicar" #~ msgctxt "ExprDialog|" #~ msgid "Accept" #~ msgstr "Aceptar" #~ msgctxt "ExprDialog|" #~ msgid "Cancel" #~ msgstr "Cancelar" #~ msgctxt "ExprDialog|" #~ msgid "Your expression had possible errors." #~ msgstr "La expresión puede contener errores." #~ msgctxt "ExprDialog|" #~ msgid "Do you want to accept your expression anyways?" #~ msgstr "¿Desea aceptar la expresión no obstante?" #~ msgctxt "ExprDialog|" #~ msgid "Help" #~ msgstr "Ayuda" #~ msgctxt "ExprDialog|" #~ msgid "Back" #~ msgstr "Atrás" #~ msgctxt "ExprDialog|" #~ msgid "Forward" #~ msgstr "Adelante" #~ msgctxt "ExprDialog|" #~ msgid "Find" #~ msgstr "Buscar" #~ msgctxt "ExprDialog|" #~ msgid "Find Next" #~ msgstr "Encontrar siguiente" #~ msgctxt "ExprDialog|" #~ msgid "Find Prev" #~ msgstr "Encontrar anterior" #~ msgctxt "ExprDialog|" #~ msgid "Variables not supported in preview (assumed zero):
" #~ msgstr "" #~ "Variables no permitidas en la vista previa (se asume que valen cero):
" #~ msgctxt "ExprDialog|" #~ msgid "Functions not supported in preview (assumed zero):
" #~ msgstr "" #~ "Funciones no permitidas en la vista previa (se asume que valen cero):
" #~ msgctxt "ExprGrapherWidget|" #~ msgid "Width" #~ msgstr "Anchura" #~ msgctxt "ExprGrapherWidget|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "
%1" #~ msgstr "
%1" #~ msgctxt "ExprCurve|" #~ msgid "Selected Position: " #~ msgstr "Posición seleccionada: " kseexpr-4.0.4.0/po/PaxHeaders/fr0000644000000000000000000000003614156104267013375 xustar0030 mtime=1639483575.290306385 kseexpr-4.0.4.0/po/fr/0000755000000000000240000000000014156104267014375 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/fr/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104267016106 xustar0030 mtime=1639483575.286917228 kseexpr-4.0.4.0/po/fr/seexpr2_qt.po0000644000000000000240000013762614156104267017050 0ustar00rootroot00000000000000# Xavier Besnard , 2020, 2021. msgid "" msgstr "" "Project-Id-Version: seexpr2_qt\n" "PO-Revision-Date: 2021-07-03 10:00+0200\n" "Last-Translator: Xavier Besnard \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Lokalize 21.04.2\n" "X-Qt-Contexts: true\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs (float x)\n" "Valeur absolue de x" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" "float deg (float angle)\n" "Conversion de degrés en radians" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" "float rad (float angle)\n" "Conversion de degrés en radians" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" "float cosd (float angle)\n" "cosinus en degrés" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" "float sind (float angle)\n" "sinus en degrés" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" "float tand (float angle)\n" "tangente en degrés" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" "float acosd (float value)\n" "arc cosinus en degrés" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" "float asind (float value)\n" "arc sinus en degrés" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" "float atand (float value)\n" "arc tangente en degrés" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" "float atan2d (float y, float x)\n" "arc tangente en degrés de y divisé par x entre -180 et 180 degrés" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" "float cos (float angle)\n" "cosinus en radians" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" "float sin (float angle)\n" "sinus en radians" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" "float tan (float angle)\n" "tangente en radians" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" "float acos (float value)\n" "arc cosinus en radians" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" "float asin (float value)\n" "arc sinus en radians" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" "float atan (float value)\n" "arc tangente en radians" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" "float atan2 (float y, float x)\n" "arc tangente en radians de y divisé par x entre -Pi et +Pi" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" "float cosh (float angle)\n" "cosinus hyperbolique en radians" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" "float sinh (float angle)\n" "sinus hyperbolique en radians" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" "float tanh (float angle)\n" "tangente hyperbolique en radians" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" "float acosh (float value)\n" "arc cosinus hyperbolique en radians" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" "float asinh (float value)\n" "arc sinus hyperbolique en radians" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" "float atanh (float value)\n" "arc tangente hyperbolique en radians" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" "float clamp (float x, float lo, float hi)\n" "Limiter x à l'intervalle [lo,hi]" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" "float round (float x)\n" "entier le plus proche de x" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" "float max (float a, float b)\n" "le plus grand entre a et b" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" "float min(float a,float b)\n" "Le plus petit entre a et b" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" "float trunc (float a)\n" "Entier le plus proche de zéro" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" "float floor (float a)\n" "Entier inférieur suivant" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" "float ceil (float a)\n" "Entier supérieur suivant" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" "float invert (float a)\n" "Défini comme « 1 - x »" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" "float cbrt (float x)\n" "racine cubique" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" "float sqrt (float x)\n" "Racine carrée" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" "float exp (float x)\n" "E élevé à la puissance x" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" "float pow (float x, float y)\n" "Élévation de x à la puissance y, aussi noté x^y" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" "float log (float x)\n" "Logarithme classique" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" "float log10 (float x)\n" "Logarithme en base 10" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" "float fmod (float x, float y)\n" "Reste de la division entière de x par y (aussi nommé sous la forme x % y)" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "float turbulence (vector v, int octaves=6, float lacunarity=2, float " "gain=0.5)\n" "La valeur absolue de chaque terme de bruit est prise. Ceci donne une " "apparence agitée." #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "color cturbulence(vector v, int octaves=6, float lacunarity=2, float " "gain=0.5)\n" "La valeur absolue de chaque terme de bruit est prise. Ceci donne une " "apparence agitée." #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "vector vturbulence (vector v, int octaves=6, float lacunarity=2, float " "gain=0.5)\n" "La valeur absolue de chaque terme est prise. Ceci donne une apparence agitée." #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" "float compress (float x, float lo, float hi)\n" "Recales x dans [0,1] vers [lo, hi]" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" "float expand (float x, float lo, float hi)\n" "Recales x dans [lo,hi] vers [0,1]" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" "float fit (float x, float a1, float b1, float a2, float b2)\n" "Recales linéairement x dans [a1, b1] vers [a2, b2]" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" "float gamma (float x, float g)\n" "Correction de « Gamma » de x selon le facteur « Gamma »" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" "float bias (float x, float g)\n" "La variation de « Gamma » où les valeurs inférieures à 0.5 déplacent la " "courbe vers le bas et \n" "les valeurs supérieures à 0.5 vers le haut\n" "pow (x, log(b) / log (0.5))" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" "float contrast (float x, float c)\n" "Ajuste le contrast. Pour c allant de 0 à 0.5, le contraste et diminué. Pour " "c supérieur à 0.5, le contraste est augmenté." #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" "float boxstep (float x,float a)\n" "si x est strictement plus petit que y alors 0 sinon 1" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" "float linearstep (float x, float a, float b)\n" "Si x < a alors 0, si x > b alors 1 et\n" "x est extrapolé linéairement quand < x < b " #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" "float smoothstep (float x, float a, float b)\n" "Si x < a alors 0, si x > b alors 1, et\n" "x extrapolé doucement (cubique) quand < x < b " #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" "float gasussstep (float x, float a, float b)\n" "si x < a alors 0, si x > b alors 1, et\n" "x est extrapolé doucement (exponentiellement) quand a < x < b" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" "remap (float x, float source, float range, float falloff, float interp)\n" "Fonction générale de ré-association.\n" "Quand x est dans +/- range de source, le résultat est 1.\n" "Le résultat passe à zéro sous cette intervalle au dessus de la distance " "falloff.\n" "La condition falloff est contrôlé par interp. Les valeurs numériques\n" "ou les constantes nommées peuvent être utilisées :\n" "    int linéaire = 0\n" "    int doux = 1\n" "    int gaussien = 2\n" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" "mix (float a, float b, float alpha)\n" "Mélange de a et b selon alpha." #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" "color hsi (color x, float h, float s, float i, float map=1)\n" "La fonction « hsi » décale la tonalité chromatique par h\n" "(en degrés) et dimensionne la saturation et l'intensité lumineuse " "respectivement par s et i.\n" "Une carte peut être fournie contrôlant le décalage\n" "- le décalage complet se produira quand la carte est unique et qu'aucun " "décalage ne se produira quand la carte est à zéro. Le décalage sera " "dimensionné en retour pour \n" "des valeurs entre 0 et 1." #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" "color midhsi (color x, float h, float s, float i, float map, float " "falloff=1, int interp=0)\n" "La fonction « midhsi » est similaire à la fonction « hsi » excepté que\n" "la carte de contrôle est centré autour du point médian (valeur de 0.5)\n" "et peut dimensionner le positionnement dans les deux directions." #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color rgbtohsl (color rgb)\n" "Conversion de l'espace colorimétrique de RGB vers HSL.\n" "HSL est la tonalité chromatique « Hue », la saturation « Saturation »\n" ", l'intensité lumineuse « Lightness » (tout entre [0..1] )\n" "Ces fonctions ont aussi été étendues pour la prise en charge des valeurs\n" " « rgb » et « hsl » en dehors de l'intervalle [0..1] de façon raisonnable. " "Pour toute valeur\n" " « rgb » et « hsl » (excepté les valeurs négatives),\n" " la conversion est bien définie et réversible." #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color hsltorgb (color hsl)\n" "Conversion de l'espace colorimétrique de HSL vers RGB.\n" "HSL est la tonalité chromatique « Hue », la saturation « Saturation »,\n" " l'intensité lumineuse « Lightness » (tout entre [0..1] )\n" "Ces fonctions ont aussi été étendues pour la prise en charge des valeurs " "« rgb » et « hsl »\n" "en dehors de l'intervalle [0..1] de façon raisonnable. Pour toute valeur\n" " « rgb » et « hsl » (excepté les valeurs négatives), la conversion est bien " "définie et\n" " réversible." #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" "color saturate (color val, float amt)\n" "Réduire la saturation de couleurs par amt.\n" "La couleur est réduite d'environ de la valeur de luminance « rec709 »,\n" "et les résultats négatifs sont calés à zéro.\n" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" "float rand ([float min, float max], [float seed] )\n" "Nombre aléatoire entre [min, max](ou [0, 1] si non spécifié).\n" "Si une initialisation « seed » est fournie, elle sera utilisée en addition " "des initialisations internes et pourra être utilisée pour créer de multiples " "générateurs distincts." #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" "float hash (float seed1, [float seed2,...])\n" "Comme la fonction « rand » mais sans aucune initialisation interne\n" "et le résultat sera une fonction aléatoire reposant sur toutes les " "initialisations." #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Bruit original de Perlin à cet emplacement (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" "float snoise ( vector v)\n" "Bruit signé «  w/ range -1 » vers 1, constitué par le bruit original de " "Perlin à l'emplacement (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "vector vnoise ( vector v)\n" "Vecteur de bruit constitué par le bruit original de Perlin à cet emplacement " "(C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise (vector v)\n" "Bruit de couleurs constitué par le bruit original de Perlin à cet " "emplacement (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" "float snoise4 ( vector v, float t)\n" "Bruit « 4D » signé «  w/ range -1 » vers 1, constitué par le bruit original " "de Perlin à l'emplacement (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" "vector vnoise4 ( vector v, float t)\n" "Vecteur de bruit « 4D » constitué par le bruit original de Perlin à cet " "emplacement (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise4 (vector v, float t)\n" "Bruit de couleurs « 4D » constitué par le bruit original de Perlin à cet " "emplacement (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" "float fbm (vector v, int octaves=6, float lacunarity=2, float gain=0.5)\n" "fbm « Fractal Brownian Motion » est une fonction de bruit multi-fréquence. \n" "La fréquence de base est la même que la fonction « noise ». Le nombre total " "de fréquences est contrôlé par octaves. La lacunarité est l'espacement entre " "les fréquences - une valeur de 2 signifie que chaque octave est deux fois la " "fréquence précédente. Le gain contrôle de combien chaque fréquence est " "étendue relativement à la fréquence précédente." #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" "vector vfbm (vector vint octaves=6, float lacunarity=2, float gain=0.5)" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" "float fbm4 (vector v, float time, int octaves=6, float lacunarity=2, float " "gain=0.5)\n" "fbm, « Fractal Brownian Motion », est une fonction de bruit multi-" "fréquence. \n" "La fréquence de base est la même que la fonction « noise ». Le nombre total\n" " de fréquences est contrôlé par octaves. La lacunarité est l'espacement " "entre\n" " les fréquences - une valeur de 2 signifie que chaque octave est deux fois " "la\n" " fréquence précédente. Le gain contrôle de combien chaque fréquence est\n" " étendue relativement à la fréquence précédente." #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "vector vfbm4 (vector v, float time, int octaves=6, float lacunarity=2, float " "gain=0.5)" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" "color cfbm (vector vint octaves = 6, float lacunarity = 2,float gain=0.5)" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "color cfbm4 (vector v, float time, int octaves=6, float lacunarity=2, float " "gain=0.5)" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "float cellnoise (vector v)\n" "La fonction « cellnoise » génère un ensemble de cubes constants et colorés " "selon un emplacement entier.\n" "Elle est identique à la fonction « prman » pour le bruit dans les cellules." #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "float cellnoise (vector v)\n" "La fonction « cellnoise » génère un ensemble de cubes constants et colorés " "selon un emplacement entier.\n" "Elle est identique à la fonction « prman » pour le bruit dans les cellules." #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" "float pnoise (vector v, vector period)\n" "bruit périodique" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" "float voronoi (vector v, int type=1, float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4, float fbmLacunarity=2, float fbmGain=0.5)\n" "« Voronoi » est un profil de bruit cellulaire. C'est une variante instable " "de la fonction « cellnoise »." #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" "color cvoronoi (vector v, int type=1, float jitter=0.5, float fbmScale=0, " "int fbmOctaves=4,float fbmLacunarity=2, float fbmGain=0.5)\n" "retourne une couleur dans un profil de cellules. C'est une variante instable " "de la fonction « cellnoise »." #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" "color pvoronoi(vector v, int type=1, float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4, float fbmLacunarity=2, float fbmGain=0.5)\n" "retourne la cellule de Voronoi." #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" "float dist (vector a, vector b)\n" "distance entre deux points" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" "float length (vector v)\n" "longueur du vecteur" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" "float hypot (vector v)\n" "longueur d'un vecteur à deux dimensions [x,y]" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" "float dot (vector a, vector b)\n" "vecteur.produit" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" "vector norm (vector v)\n" "vecteur redimensionné à la longueur de l'unité" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" "vector cross (vector a, vector b)\n" "vecteur x produit" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" "float angle (vector a, vector b)\n" "angle formé par deux vecteurs (en radians)" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" "vector angle (vector a, vector b)\n" "vecteur normé orthogonal à a et b, redimensionné à la longueur de l'unité" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" "vector rotate (vector v, vector axis, float angle)\n" "tournes v autour l'axe donné par un angle donné (en radians)." #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" "vector up (vector P, vector upvec)\n" "tournes v tel que l'axe Y pointe dans une direction donnée." #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" "int cycle (int index, int loRange, int hiRange )\n" "Parcourt les valeurs entre « loRange » et « hiRange » reposant sur l'index " "fourni.\n" "Ceci est une fonction dérivée de « mod ». Le résultat est calculé comme " "« loRange + value % (hiRange-loRange+1) »." #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" "int pick (float index, int loRange, int hiRange, [float weights,...] )\n" "Sélectionne des valeurs aléatoires dans l'intervalle « loRange » et\n" " « hiRange » selon l'index fourni (lequel est automatiquement haché). Les\n" " valeurs seront distribués selon \n" "les poids fournis. Si non fourni, le poids est supposé valoir 1.0." #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" "color swatch (float index, color choice0, color choice1, color choice2, " "[...])\n" "Sélectionne un des choix fournis de couleurs selon l'index (supposé être " "dans [0..1])." #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" "float choose (float index, float choice1, float choice2, [...])\n" "Sélectionne un des choix proposés selon l'index (est supposé être entre [0, " "1])." #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" "float wchoose (float index, float choice1, float weight1, float choice2, " "float weight2, [...] )\n" "Choisit un des choix fournis selon l'index (en supposant qu'il soit dans " "l'intervalle [0..1]).\n" "Les valeurs seront distribuées selon les poids fournis." #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" "float spline (float param, float y1, float y2, float y3, float y4, [...])\n" "\n" "Interpole un ensemble de valeurs selon le paramètre spécifié, où y1,..., yn " "sont\n" "distribués de façon uniforme entre [0..1]." #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "float curve (float param, float pos0, float val0, int interp0, float pos1, " "float val1, int interp1, [...])\n" "\n" "Interpole une rampe « 1D » définie par des points de contrôle de « param ». " "Les points de contrôle sont spécifiés \n" "par des triplets de paramètres « pos_i », « val_i » et « interp_i ». Les " "codes d'interpolation sont \n" "0 - aucun, 1 - linéaire, 2 - doux, 3 - courbe, \n" "4-monotone (courbe non oscillante)." #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "color curve (float param, float pos0, color val0, int interp0, float pos1, " "color val1,int interp1,[...])\n" "\n" "Interpole une rampe définie par des points de contrôle de « param ». Les " "points de contrôle sont spécifiés par des triplets de paramètres pos_i, " "val_i, et interp_i. Les codes d'interpolation sont \n" "0 - aucun, 1 - linéaire, 2 - doux, 3 - courbe, \n" "4 - monotone (courbe non oscillante)" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" "getVar (string varName, vector defaultValue)\n" "retourne la valeur de « varName » si la variable existe, sinon retourne " "« defaultValue »" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" "float printf (string format, [vec0, vec1,...])\n" "Imprime une chaîne sur « stdout ». Les paramètres de formatage sont « %v » " "et « %f ».\n" "Le paramètre retourné est vide mais doit être stocké dans une variable." #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" "sprintf (string format, [double|string, double|string,...])\n" "Retourne une chaîne formatée à partir des valeurs fournies. Veuillez " "consulter « man sprintf » pour des informations détaillées sur le format." #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "Ajouter une nouvelle variable" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "Flottant ou chaîne attendus [d]" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "Flottant attendu [d]" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "Flottant attendu [%1]" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "Incohérence de type, premier arg : « %1 » ; second arg : « %2 »" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "Flottant attendu ou flottant [3]" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "Argument attendu « %1 » mais fourni « %2 »" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "Nombre incorrect d'arguments. Devrait être entre 1 et 7." #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "Nombre incorrect d'arguments. Devrait être multiple de 3 plus 1." #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "Nombre incorrect d'arguments. Devrait être 1 ou plus." #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "Le premier argument doit être une chaîne" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "Spécificateur de format incomplet" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "Aucune variable nommée « %1 »" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "La fonction « %1 » n'a aucune définition" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "L'opération d'affectation a un type incorrect « %1 »" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "Les types de conditions sont incompatibles." #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "" "La variable « %1 » est définie de façon incohérente dans les conditions" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "Nombre d'arguments insuffisant pour la fonction « %1 »" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "Nombre d'arguments trop important pour la fonction « %1 »" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "" "Type généré de l'expression « %1 », incompatible avec le type attendu « %2 »" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "Erreur de syntaxe à proximité de « %1 »" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "Fin inattendue d'expression à proximité de « %1 »" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "Fin inattendue de la chaîne de formatage" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "" "Chaîne de formatage non valable. Seuls « %v » ou « %f » sont autorisés." #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "Nombre incorrect d'arguments pour la chaîne de formatage." #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "Erreur inconnue (message = %1)" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "Variable" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "Rechercher" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "Courbe" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "Colorer la courbe" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "Par défaut" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "Min" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "Max" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "Ent" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "Flottant" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Vecteur" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Couleur" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "Arc-en-ciel" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "Nuances de gris" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Couleurs" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "Nuancier" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "chaîne" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "Fichier" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "dossier" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "Nom de la chaîne" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "Type de chaîne" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "Chaîne par défaut" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "Chaîne" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "Enregistrer une expression" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "Impossible d'ouvrir le fichier %1 pour y écrire" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "Erreur" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "" "Impossible d'ouvrir le fichier %1 pour y écrire ? Serait-il en lecture " "seule ?" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "Supprimer un point" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "Position sélectionnée :" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "Couleur sélectionnée :" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "Interp :" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "Aucun" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Linéaire" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "Doux" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Courbe" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "Développ&er..." #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "Supprimer le nuancier" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "Annuler" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "&Ajouter..." #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "Local" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "Veuillez choisir un fichier" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "Images (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "Pos :" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "Val :" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "Interp :" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "Pos :" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "Val :" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "Interp :" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "Supprimer un point" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "Position sélectionnée :" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "Valeur sélectionnée :" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "Interp :" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "Aucun" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "Linéaire" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "Doux" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Courbe" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "Développ&er..." #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "Éditeur d'expressions" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2) : %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "Ouvrir" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "Favoris" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "Aide contextuelle" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" kseexpr-4.0.4.0/po/PaxHeaders/it0000644000000000000000000000003614156104331013372 xustar0030 mtime=1639483609.886015684 kseexpr-4.0.4.0/po/it/0000755000000000000240000000000014156104331014372 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/it/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104331016103 xustar0030 mtime=1639483609.882342294 kseexpr-4.0.4.0/po/it/seexpr2_qt.po0000644000000000000240000014104114156104331017027 0ustar00rootroot00000000000000# Vincenzo Reale , 2020, 2021. msgid "" msgstr "" "Project-Id-Version: \n" "PO-Revision-Date: 2021-07-05 08:51+0200\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 21.04.2\n" "X-Qt-Contexts: true\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs(float x)\n" "valore assoluto di x" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" "float deg(float angolo)\n" "radianti a gradi" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" "float rad(float angolo)\n" "gradi a radianti" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" "float cosd(float angolo)\n" "coseno in gradi" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" "float sind(float angolo)\n" "seno in gradi" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" "float tand(float angolo)\n" "tangente in gradi" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" "float acosd(float valore)\n" "arcocoseno in gradi" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" "float asind(float valore)\n" "arcoseno in gradi" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" "float atand(float value)\n" "arc tangent in degrees" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" "float atan2d(float y,float x)\n" "arcotangente in gradi di y/x tra -180 e 180" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" "float cos(float angolo)\n" "coseno in radianti" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" "float sin(float angolo)\n" "seno in radianti" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" "float tan(float angolo)\n" "tangente in radianti" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" "float acos(float valore)\n" "arcocoseno in radianti" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" "float asin(float valore)\n" "arcoseno in radianti" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" "float atan(float valore)\n" "arcotangente in radianti" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" "float atan2(float y,float x)\n" "arcotangente in radianti di y/x tra -PI e PI" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" "float cosh(float angolo)\n" "coseno iperbolico in radianti" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" "float sinh(float angolo)\n" "seno iperbolico in radianti" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" "float tanh(float angolo)\n" "tangente iperbolica in radianti" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" "float acosh(float valore)\n" "arcocoseno iperbolico in radianti" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" "float asinh(float valore)\n" "seno iperbolico in radianti" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" "float atanh(float valore)\n" "arcotangente iperbolica in radianti" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" "float clamp(float x,float lo,float hi)\n" "vincola x all'intervallo [lo, hi]" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" "float round(float x)\n" "intero più vicino a x" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" "float max(float a,float b)\n" "maggiore di a e b" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" "float min(float a,float b)\n" "minore di a e b" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" "float trunc(float a)\n" "intero più vicino verso lo zero" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" "float floor(float a)\n" "intero successivo inferiore" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" "float ceil(float a)\n" "intero successivo più alto" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" "float invert(float a)\n" "Definito come 1-x" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" "float cbrt(float x)\n" "radice cubica" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" "float sqrt(float x)\n" "radice quadrata" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" "float exp(float x)\n" "E elevato alla potenza di x" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" "float pow(float x)\n" "x alla potenza di y, disponibile anche come ^" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" "float log(float x)\n" "Logaritmo naturale" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" "float log10(float x)\n" "Logaritmo in base 10" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" "float fmod(float x,float y)\n" "resto di x/y (disponibile anche come operatore %)" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Viene preso il valore assoluto di ciascun termine di rumore. Questo dà un " "aspetto fluttuante" #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Viene preso il valore assoluto di ciascun termine di rumore. Questo dà un " "aspetto fluttuante" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Viene preso il valore assoluto di ciascun termine di rumore. Questo dà un " "aspetto fluttuante" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" "float compress(float x,float lo,float hi)\n" "Rimappa x in [0,1] a [lo,hi]" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" "float expand(float x,float lo,float hi)\n" "Rimappa x in [lo,hi] a [0,1]" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Rimappa linearmente x in [a1,b1] a [a2,b2]" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" "float gamma (float x, float g)\n" "Correzione gamma di x con fattore gamma g" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" "float bias(float x, float g)\n" "Variazione della gamma dove valori inferiori a 0,5 abbassano la curva\n" "e valori maggiori di 0,5 alzano la curva\n" "pow(x,log(b)/log(0.5))" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" "float contrast(float x,float c)\n" "Regola il contrasto.   Per c tra 0 e 0,5, il contrasto è ridotto.  " "Per c > 0,5, il contrasto è aumentato." #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" "float boxstep(float x,float a)\n" " se x < a allora 0 altrimenti 1" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" "float linearstep(float x,float a,float b)\n" " se x < a allora 0, se x > b allora 1, e\n" "x passa linearmente quando a < x < b" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" "float smoothstep(float x,float a,float b)\n" " se x < a allora 0, se x > b allora 1, e\n" "x passa gradualmente (cubica) quando a < x < b" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" "float gasussstep(float x,float a,float b)\n" " se x < a allora 0, se x > b allora 1, e\n" "x passa in modo graduale (esponenzialmente) quando a < x < b" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" "remap(float x, float source, float range, float falloff, float interp)\n" "Funzione di ri-mappatura generale.\n" "Quando x è all'interno di +/- ilrange della sorgente, il risultato è " "uno.\n" "Il risultato scende a zero oltre tale intervallo sulla distanza di " "falloff.\n" "La forma del decadimento è controllata da interp. Valori numerici\n" "o costanti con nome possono essere utilizzati:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" "mix(float a,float b,float alpha)\n" "Miscela di a e b in base ad alfa." #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" "color hsi(color x, float h, float s, float i, float map=1)\n" "La funzione hsi sposta la tonalità di h\n" "(in gradi) e scala la saturazione e l'intensità di s e i\n" "rispettivamente. Potrebbe essere fornita una mappa che controllerà lo " "spostamento\n" "- lo spostamento completo avverrà quando la mappa è una e nessuno " "spostamento\n" "si verifica quando la mappa è zero. Lo spostamento sarà ridotto per\n" "valori compresi tra zero e uno." #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "La funzione midhsi è proprio come la funzione hsi tranne che\n" "la mappa di controllo è centrata attorno al punto medio (valore 0,5)\n" "e può scalare lo spostamento in entrambe le direzioni." #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color rgbtohsl(color rgb)\n" "Conversione dello spazio dei colori da RGB a HSL.\n" "HSL sta per Tonalità (Hue), Saturazione, Luminosità (tutto nell'intervallo " "[0..1])\n" "Queste funzioni sono state estese anche per supportare i valori rgb e hsl\n" "al di fuori dell'intervallo [0..1] in modo ragionevole. Per qualsiasi " "valore rgb o\n" "hsl (ad eccezione dei valori s negativi), la conversione è\n" "ben definita e reversibile." #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color hsltorgb(color hsl)\n" "Conversione dello spazio dei colori da HSL a RGB.\n" "HSL sta per Tonalità (Hue), Saturazione, Luminosità (tutto nell'intervallo " "[0..1])\n" "Queste funzioni sono state estese anche per supportare i valori rgb e hsl\n" "al di fuori dell'intervallo [0..1] in modo ragionevole. Per qualsiasi " "valore rgb o\n" "hsl (ad eccezione dei valori s negativi), la conversione è\n" "ben definita e reversibile." #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" "color saturate(color val, float amt)\n" "Scala la saturazione del colore di amt.\n" "Il colore viene ridimensionato attorno al valore di luminanza di rec709,\n" "e i risultati negativi sono fissati a zero.\n" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" "float rand ( [float min, float max], [float seme] )\n" "Numero casuale compreso tra [min, max] (o [0, 1] se non specificato).\n" "Se viene fornito un seme, sarà utilizzato in aggiunta ai semi interni epuò " "essere utilizzato per creare più generatori distinti." #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" "float hash(float seed1,[float seed2, ...])\n" "Come rand, ma senza semi interni. Può essere fornito un numero qualsiasi di " "semi\n" "e il risultato sarà una funzione casuale basata su tutti i semi." #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Rumore di Perlin originale nella posizione (interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" "float snoise ( vector v)\n" "rumore con segno nell'intervallo da -1 a 1 formato con rumore di Perlin " "originale nella posizione (interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "vector vnoise ( vector v)\n" "rumore vettoriale formato con rumore di Perlin originale nella posizione " "(interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise ( vector v)\n" "rumore di colore formato con rumore di Perlin originale nella posizione " "(interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" "float snoise4 ( vector v,float t)\n" "rumore 4D con segno nell'intervallo da -1 a 1 formato con rumore di Perlin " "originale nella posizione (interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" "vector vnoise4 ( vector v,float t)\n" "rumore vettoriale 4D formato con rumore di Perlin originale nella posizione " "(interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise4 ( vector v,float t)\n" "rumore di colore 4D formato con rumore di Perlin originale nella posizione " "(interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (moto browniano frazionario) è una funzione di rumore multi-frequenza.\n" "La frequenza di base è la stessa della funzione «noise». Il numero\n" "totale di frequenze è controllato da ottave. La lacunarità è la\n" "spaziatura tra le frequenze - un valore di 2 significa che ogni ottava è\n" "due volte la frequenza precedente. Il guadagno controlla quanto ciascuna\n" "frequenza viene scalata rispetto alla frequenza precedente." #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (moto browniano frazionario) è una funzione di rumore multi-frequenza.\n" "La frequenza di base è la stessa della funzione «noise». Il numero\n" "totale di frequenze è controllato da ottave. La lacunarità è la\n" "spaziatura tra le frequenze - un valore di 2 significa che ogni ottava è\n" "due volte la frequenza precedente. Il guadagno controlla quanto ciascuna\n" "frequenza viene scalata rispetto alla frequenza precedente." #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "float cellnoise(vector v)\n" "cellnoise genera un campo di cubi colorati costanti in base alla posizione " "dell'intero.\n" "È uguale alla funzione prman cellnoise." #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "color cellnoise(vector v)\n" "cellnoise genera un campo di cubi colorati costanti in base alla posizione " "dell'intero.\n" "È uguale alla funzione prman cellnoise." #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" "float pnoise ( vector v, vector period )\n" "rumore periodico" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi è un modello di rumore cellulare. È una variante con jitter di " "cellnoise." #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "restituisce il colore nel modello cellulare. È una variante con jitter di " "cellnoise." #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "restituisce il centro della cellula voronoi." #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" "float dist(vector a, vector b)\n" "distanza tra due punti" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" "float length(vector v)\n" "lunghezza del vettore" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" "float hypot(vector v)\n" "lunghezza del vettore 2D [x,y]" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" "float dot(vector a,vector b)\n" "prodotto scalare" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" "vector norm(vector v)\n" "vettore scalato alla lunghezza unitaria" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" "vector cross(vector a,vector b)\n" "prodotto vettoriale" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" "float angle(vector a,vector b)\n" "angolo tra due vettori (in radianti)" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" "vector angle(vector a,vector b)\n" "vettore normalizzato ortogonale ad a e b scalato alla lunghezza unitaria" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" "vector rotate(vector v,vector axis,float angle)\n" "ruota v attorno all'asse di un dato angolo (in radianti)" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" "vector up(vector P,vector upvec)\n" "ruota v in modo tale che l'asse Y punti nella direzione indicata" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" "int cycle(int index, int loRange, int hiRange )\n" "Passa attraverso i valori tra loRange e hiRange in base all'indice fornito.\n" "Questa è una funzione «mod» di offset. Il risultato è calcolato come " "``loRange + value % (hiRange-loRange+1)``." #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" "int pick (float index, int loRange, int hiRange, [float weights, ...])\n" "Seleziona i valori in modo casuale tra loRange e hiRange in base all'indice " "fornito (per cui viene generato\n" "automaticamente un hash). I valori verranno distribuiti secondo\n" "ai pesi forniti. Si assume che i pesi non forniti\n" "siano 1,0." #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" "color swatch (float index, colore choice0, color choice1, color choice2, " "[...])\n" "Sceglie una delle scelte di colore fornite in base all'indice " "(presumibilmente nell'intervallo [0..1])." #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" "float choose(float index,float choice1, float choice2, [...])\n" "Seleziona una delle scelte fornite in base all'indice (assunto " "nell'intervallo [0, 1])." #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" "float wchoose(float indice,float scelta1, float peso1, float scelta2, float " "peso2, [...] )\n" "Seleziona una delle scelte fornite in base all'indice (assunto " "nell'intervallo [0..1]).\n" "I valori saranno distribuiti in base ai pesi forniti." #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" "float spline (float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpola un insieme di valori nel parametro specificato dove y1, ..., yn " "sono\n" "distribuiti uniformemente da [0...1]" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpola una rampa 1D definita dai punti di controllo in «param». I punti " "di controllo sono specificati\n" "per triple dei parametri pos_i, val_i e interp_i. I codici di interpolazione " "sono \n" "0 - nessuna, 1 - lineare, 2 - liscia, 3 - spline,\n" "4 - monotona (spline non oscillante)" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpola la scala di colori fornita dai punti di controllo in «param». I " "punti di controllo sono specificati\n" "da triple dei parametri pos_i, val_i e interp_i. I codici di interpolazione " "sono\n" "0 - nessuna, 1 - lineare, 2 - liscia, 3 - spline,\n" "4 - monotona (spline non oscillante)" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" "getVar (string varName,vector defaultValue)\n" "restituisce il valore di varName se la variabile esiste, altrimenti " "restituisce defaultValue" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" "printf (formato stringa,[vec0, vec1, ...])\n" "Stampa una stringa su STDOUT, i parametri di formato consentiti sono è «%v» " "and «%f».\n" "Il parametro di ritorno è vuoto, ma deve essere assegnato a una variabile." #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" "sprintf (formato stringa, [double|stringa, double|stringa, ...])\n" "Restituisce una stringa formattata dai valori forniti. Vedi «man sprintf» " "per i dettagli del formato." #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "Aggiungi una nuova variabile" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "Stringa o float[d] atteso" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "float[d] atteso" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "float[%1] atteso" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "Tipo non corrispondente, primo: «%1»; secondo «%2»" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "Float atteso o float[3] " #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "Atteso «%1» come argomento, ricevuto «%2»" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "Numero di argomenti non corretto, dovrebbe essere da 1 a 7" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "Numero di argomenti non corretto, dovrebbe essere multiplo di 3 più 1" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "Numero di argomenti non corretto, dovrebbe essere 1 o più" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "Il primo argomento deve essere una stringa" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "Specificatore di formato incompleto" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "Nessuna variabile con nome «%1»" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "La funzione «%1» non ha definizione" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "L'operazione di assegnazione ha il tipo non corretto «%1»" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "I tipi di condizione non sono compatibili" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "Variabile «%1» definita nelle condizioni in modo incoerente" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "Troppi argomenti per la funzione «%1»" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "Troppi argomenti per la funzione «%1»" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "" "Tipo di espressione generato «%1», incompatibile con il tipo desiderato «%2»" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "Errore di sintassi vicino a «%1»" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "Fine di espressione inattesa vicino a «%1»" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "Fine inattesa della stringa di formato" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "Formato non valido, è consentito solo %v o %f" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "Numero di argomenti non corretto per la stringa di formato" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "Errore sconosciuto (messaggio = %1)" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "Variabile" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "Ricerca" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "Curva" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "Curva di colore" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "Predefinita" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "Min" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "Max" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "Int" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "Float" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Vettore" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Colore" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "Arcobaleno" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "Sfumature di grigio" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Colori" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "Campione" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "stringa" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "File" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "cartella" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "Nome stringa" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "Tipo stringa" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "Valore predefinito stringa" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "Stringa" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "Salva espressione" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "Impossibile aprire il file %1 in scrittura" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "Errore" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "Impossibile aprire il file %1 in scrittura. È in sola lettura?" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "Elimina punto" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "Posizione selezionata:" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "Colore selezionato:" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "Nessuno" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Lineare" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "Smussatura" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "&Espandi..." #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "Elimina campione" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "Annulla" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "&Aggiungi..." #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "Locale" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "Scegli un file" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "Immagini (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "Elimina punto" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "Posizione selezionata:" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "Valore selezionato:" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "Nessuno" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "Lineare" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "Smussatura" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "&Espandi..." #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "Editor delle espressioni" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "Apri" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "Preferiti" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "Aiuto a comparsa" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" #~ msgctxt "ExprAddDialog|" #~ msgid "Link" #~ msgstr "Collegamento" #~ msgctxt "ExprAddDialog|" #~ msgid "AnimCurve" #~ msgstr "AnimCurve" #~ msgctxt "ExprAddDialog|" #~ msgid "Deep Water" #~ msgstr "Acqua profonda" #~ msgctxt "ExprDialog|" #~ msgid "Preview / Library" #~ msgstr "Anteprima / Raccolta" #~ msgctxt "ExprDialog|" #~ msgid "Preview" #~ msgstr "Anteprima" #~ msgctxt "ExprDialog|" #~ msgid "Save" #~ msgstr "Salva" #~ msgctxt "ExprDialog|" #~ msgid "Save As" #~ msgstr "Salva come" #~ msgctxt "ExprDialog|" #~ msgid "Save Local" #~ msgstr "Salva localmente" #~ msgctxt "ExprDialog|" #~ msgid "Clear" #~ msgstr "Pulisci" #~ msgctxt "ExprDialog|" #~ msgid "Apply" #~ msgstr "Applica" #~ msgctxt "ExprDialog|" #~ msgid "Accept" #~ msgstr "Accetta" #~ msgctxt "ExprDialog|" #~ msgid "Cancel" #~ msgstr "Annulla" #~ msgctxt "ExprDialog|" #~ msgid "Your expression had possible errors." #~ msgstr "La tua espressione aveva probabilmente degli errori." #~ msgctxt "ExprDialog|" #~ msgid "Do you want to accept your expression anyways?" #~ msgstr "Vuoi accettare comunque la tua espressione?" #~ msgctxt "ExprDialog|" #~ msgid "Help" #~ msgstr "Aiuto" #~ msgctxt "ExprDialog|" #~ msgid "Back" #~ msgstr "Indietro" #~ msgctxt "ExprDialog|" #~ msgid "Forward" #~ msgstr "Avanti" #~ msgctxt "ExprDialog|" #~ msgid "Find" #~ msgstr "Trova" #~ msgctxt "ExprDialog|" #~ msgid "Find Next" #~ msgstr "Trova successivo" #~ msgctxt "ExprDialog|" #~ msgid "Find Prev" #~ msgstr "Trova precedente" #~ msgctxt "ExprDialog|" #~ msgid "Variables not supported in preview (assumed zero):
" #~ msgstr "Variabili non supportate nell'anteprima (assunto zero):
" #~ msgctxt "ExprDialog|" #~ msgid "Functions not supported in preview (assumed zero):
" #~ msgstr "Funzioni non supportate nell'anteprima (assunto zero):
" #~ msgctxt "ExprGrapherWidget|" #~ msgid "Width" #~ msgstr "Larghezza" #~ msgctxt "ExprGrapherWidget|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "
%1" #~ msgstr "
%1" #~ msgctxt "ExprCurve|" #~ msgid "Selected Position: " #~ msgstr "Posizione selezionata: " kseexpr-4.0.4.0/po/PaxHeaders/ja0000644000000000000000000000003614156104334013353 xustar0030 mtime=1639483612.404579164 kseexpr-4.0.4.0/po/ja/0000755000000000000240000000000014156104334014353 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/ja/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104334016064 xustar0030 mtime=1639483612.399833245 kseexpr-4.0.4.0/po/ja/seexpr2_qt.po0000644000000000000240000007560714156104334017026 0ustar00rootroot00000000000000msgid "" msgstr "" "Project-Id-Version: seexpr2_qt\n" "Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: qtrich\n" "X-Qt-Contexts: true\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "" #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "" #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "" #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "" kseexpr-4.0.4.0/po/PaxHeaders/ko0000644000000000000000000000003614156104350013370 xustar0030 mtime=1639483624.166463521 kseexpr-4.0.4.0/po/ko/0000755000000000000240000000000014156104350014370 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/ko/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003514156104350016100 xustar0029 mtime=1639483624.16255897 kseexpr-4.0.4.0/po/ko/seexpr2_qt.po0000644000000000000240000011222514156104350017027 0ustar00rootroot00000000000000# Shinjo Park , 2021. msgid "" msgstr "" "Project-Id-Version: \n" "PO-Revision-Date: 2021-06-09 23:50+0200\n" "Last-Translator: Shinjo Park \n" "Language-Team: Korean \n" "Language: ko\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: Lokalize 20.12.3\n" "X-Qt-Contexts: true\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs(float x)\n" "xì˜ ì ˆëŒ“ê°’" #: KSeExpr/ExprBuiltins.cpp:30 #, fuzzy #| msgctxt "builtin|" #| msgid "" #| "float deg(float angle)\n" #| "radians to degrees" msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" "float deg(float angle)\n" "ë¼ë””안ì—서 ë„로" #: KSeExpr/ExprBuiltins.cpp:31 #, fuzzy #| msgctxt "builtin|" #| msgid "" #| "float deg(float angle)\n" #| "degrees to radians" msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" "float deg(float angle)\n" "ë„ì—서 ë¼ë””안으로" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" "float cosd(float angle)\n" "ë„ ë‹¨ìœ„ ê°ë„ì˜ ì½”ì‚¬ì¸" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" "float sind(float angle)\n" "ë„ ë‹¨ìœ„ ê°ë„ì˜ ì‚¬ì¸" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" "float tand(float angle)\n" "ë„ ë‹¨ìœ„ ê°ë„ì˜ íƒ„ì  íŠ¸" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" "float acosd(float value)\n" "ë„ ë‹¨ìœ„ ì•„í¬ ì½”ì‚¬ì¸" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" "float asind(float value)\n" "ë„ ë‹¨ìœ„ ì•„í¬ ì‚¬ì¸" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" "float atand(float value)\n" "ë„ ë‹¨ìœ„ ì•„í¬ íƒ„ì  íŠ¸" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" "float atan2d(float y,float x)\n" "-180부터 180 ì‚¬ì´ y/xì˜ ë„ ë‹¨ìœ„ ì•„í¬ íƒ„ì  íŠ¸" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" "float cos(float angle)\n" "ë¼ë””안 단위 ê°ë„ì˜ ì½”ì‚¬ì¸" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" "float sin(float angle)\n" "ë¼ë””안 단위 ê°ë„ì˜ ì‚¬ì¸" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" "float tan(float angle)\n" "ë¼ë””안 단위 ê°ë„ì˜ íƒ„ì  íŠ¸" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" "float acos(float value)\n" "ë¼ë””안 단위 ì•„í¬ ì½”ì‚¬ì¸" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" "float asin(float value)\n" "ë¼ë””안 단위 ì•„í¬ ì‚¬ì¸" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" "float atan(float value)\n" "ë¼ë””안 단위 ì•„í¬ íƒ„ì  íŠ¸" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" "float atan2(float y,float x)\n" "-PI부터 PI ì‚¬ì´ y/xì˜ ë¼ë””안 단위 ì•„í¬ íƒ„ì  íŠ¸" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" "float cosh(float angle)\n" "ë¼ë””안 단위 ê°ë„ì˜ ìŒê³¡ì„  코사ì¸" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" "float sinh(float angle)\n" "ë¼ë””안 단위 ê°ë„ì˜ ìŒê³¡ì„  사ì¸" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" "float tanh(float angle)\n" "ë¼ë””안 단위 ê°ë„ì˜ ìŒê³¡ì„  탄젠트" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" "float acosh(float value)\n" "ë¼ë””안 단위 ìŒê³¡ì„  ì•„í¬ ì½”ì‚¬ì¸" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" "float asinh(float value)\n" "ë¼ë””안 단위 ìŒê³¡ì„  ì•„í¬ ì‚¬ì¸" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" "float atanh(float value)\n" "ë¼ë””안 단위 ìŒê³¡ì„  ì•„í¬ íƒ„ì  íŠ¸" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" "float clamp(float x,float lo,float hi)\n" "x를 [lo,hi] 범위로 제한" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" "float round(float x)\n" "x를 가장 가까운 정수로 반올림" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" "float max(float a,float b)\n" "a와 b 중 í° ê°’" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" "float min(float a,float b)\n" "a와 b 중 ìž‘ì€ ê°’" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" "float trunc(float a)\n" "ì–‘ìˆ˜ì˜ ê²½ìš° 버림, ìŒìˆ˜ì˜ 경우 올림" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" "float floor(float a)\n" "버림" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" "float ceil(float a)\n" "올림" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" "float invert(float a)\n" "1-x로 ì •ì˜ë¨" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" "float cbrt(float x)\n" "세제곱근" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" "float sqrt(float x)\n" "제곱근" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" "float exp(float x)\n" "Eì˜ x제곱" #: KSeExpr/ExprBuiltins.cpp:68 #, fuzzy #| msgctxt "builtin|" #| msgid "" #| "float pow(float x)\n" #| "x to the y power, also available as ^" msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" "float pow(float x)\n" "xì˜ y제곱, ^ ì—°ì‚°ìžë¡œë„ 사용 가능" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" "float log(float x)\n" "ìžì—° 로그" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" "float log10(float x)\n" "ë°‘ì´ 10ì¸ ë¡œê·¸" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" "float fmod(float x,float y)\n" "x/yì˜ ë‚˜ë¨¸ì§€(% ì—°ì‚°ìžë¡œë„ 사용 가능)" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" "float compress(float x,float lo,float hi)\n" "x를 [0,1]ì—서 [lo,hi]로 대ì‘" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" "float expand(float x,float lo,float hi)\n" "x를 [lo,hi]ì—서 [0,1]로 대ì‘" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "x를 [a1,b1]ì—서 [a2,b2]로 선형 대ì‘" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" "float gamma(float x, float g)\n" "xì˜ ê°ë§ˆ 수정, ê°ë§ˆ 계수 g 사용" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" "float bias(float x, float g)\n" "ê°’ì´ 0.5보다 ìž‘ì„ ë•Œì—는 ê³¡ì„ ì„ ì•„ëž˜ë¡œ 내리고\n" "ê°’ì´ 0.5보다 í´ ë•Œì—는 ê³¡ì„ ì„ ìœ„ë¡œ 올리는 ê°ë§ˆ 변화\n" "pow(x,log(b)/log(0.5))" #: KSeExpr/ExprBuiltins.cpp:124 #, fuzzy #| msgctxt "builtin|" #| msgid "" #| "float contrast(float x,float x)\n" #| "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." #| "  For c > 0.5, the contrast is increased." msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" "float contrast(float x,float x)\n" "명암 ì¡°ì ˆ.  cê°€ 0부터 0.5ì´ë©´ 명암 ê°ì†Œ.  c > 0.5ì´ë©´ 명암 ì¦ê°€." #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" "float boxstep(float x,float a)\n" " x < aì´ë©´ 0, 아니면 1" #: KSeExpr/ExprBuiltins.cpp:143 #, fuzzy #| msgctxt "builtin|" #| msgid "" #| "float linearstep(float x,float a,float b)\n" #| " if x < a then 0, if x > b then 1, and\n" #| "x transitions linearly when < x < b " msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" "float linearstep(float x,float a,float b)\n" " x < aì´ë©´ 0, x > bì´ë©´ 1,\n" "a < x < bì´ë©´ xì— ë”°ë¼ ì„ í˜•ìœ¼ë¡œ 전환" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" "float smoothstep(float x,float a,float b)\n" " x < aì´ë©´ 0, x > bì´ë©´ 1,\n" "a < x < bì´ë©´ xì— ë”°ë¼ ë¶€ë“œëŸ½ê²Œ(삼차 함수) 전환" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" "float gasussstep(float x,float a,float b)\n" " x < aì´ë©´ 0, x > bì´ë©´ 1,\n" "a < x < bì´ë©´ xì— ë”°ë¼ ë¶€ë“œëŸ½ê²Œ(지수 함수) 전환" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "새 변수 추가" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "string ë˜ëŠ” float[d]를 예ìƒí•¨" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "float[d]를 예ìƒí•¨" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "float[%1]ì„(를) 예ìƒí•¨" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "형ì‹ì´ ì¼ì¹˜í•˜ì§€ 않ìŒ. 첫 번째: '%1', ë‘ ë²ˆì§¸: '%2'" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "float ë˜ëŠ” float[3]ì„ ì˜ˆìƒí•¨" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "ì¸ìžì— '%1'ì„(를) 예ìƒí–ˆì§€ë§Œ '%2'ì´(ê°€) 옴" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "ì¸ìž 개수가 잘못ë¨, 1부터 7까지여야 함" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "ì¸ìž 개수가 잘못ë¨, 3ì˜ ë°°ìˆ˜ ë”하기 1ì´ì–´ì•¼ 함" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "ì¸ìž 개수가 잘못ë¨, 1 ì´ìƒì´ì–´ì•¼ 함" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "첫 ì¸ìžëŠ” stringì´ì–´ì•¼ 함" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "불완전한 í˜•ì‹ ì§€ì •ìž" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "ì´ë¦„ì´ '%1'ì¸ ë³€ìˆ˜ê°€ ì—†ìŒ" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "함수 '%1'ì˜ ì •ì˜ê°€ ì—†ìŒ" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "대입 ì—°ì‚°ì˜ í˜•ì‹ '%1'ì´(ê°€) 잘못ë¨" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "ì¡°ê±´ë¬¸ì˜ í˜•ì‹ì´ 호환ë˜ì§€ 않ìŒ" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "변수 '%1'ì´(ê°€) 조건문ì—서 ì¼ê´€ì„± 없게 ì •ì˜ë¨" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "함수 '%1'ì˜ ì¸ìžê°€ 너무 ì ìŒ" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "함수 '%1'ì˜ ì¸ìžê°€ 너무 ë§ŽìŒ" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "표현ì‹ì—서 ìƒì„±í•œ í˜•ì‹ '%1'ì´(ê°€) 필요한 í˜•ì‹ '%2'와(ê³¼) 호환ë˜ì§€ 않ìŒ" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "'%1' 근처ì—서 구문 오류" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "'%1' 근처ì—서 예ìƒí•˜ì§€ 못한 표현ì‹ì˜ ë" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "예ìƒí•˜ì§€ 못한 í˜•ì‹ ë¬¸ìžì—´ì˜ ë" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "ìž˜ëª»ëœ í˜•ì‹ ë¬¸ìžì—´, %v나 %fë§Œ 사용 가능" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "í˜•ì‹ ë¬¸ìžì—´ì˜ ì¸ìž 개수가 잘못ë¨" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "알 수 없는 오류(메시지 = %1)" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "변수" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "찾아보기" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "곡선" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "ìƒ‰ìƒ ê³¡ì„ " #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "기본값" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "최소" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "최대" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "정수" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "실수" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "벡터" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "색ìƒ" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "무지개색" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "회색조" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "색ìƒ" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "스와치" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "문ìžì—´" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "파ì¼" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "디렉터리" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "문ìžì—´ ì´ë¦„" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "문ìžì—´ 형ì‹" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "문ìžì—´ 기본값" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "문ìžì—´" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "í‘œí˜„ì‹ ì €ìž¥" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "íŒŒì¼ %1ì— ì“°ë ¤ê³  ì—´ 수 ì—†ìŒ" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "오류" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "íŒŒì¼ %1ì— ì“°ë ¤ê³  ì—´ 수 없습니다. ì½ê¸° 전용입니까?" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "ì  ì‚­ì œ" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "ì„ íƒí•œ 위치:" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "ì„ íƒí•œ 색ìƒ:" #: KSeExprUI/ExprColorCurve.cpp:416 #, fuzzy #| msgctxt "CurveControl|" #| msgid "Interp:" msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "í•´ì„:" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "ì—†ìŒ" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "선형" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "부드럽게" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "스플ë¼ì¸" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "M스플ë¼ì¸" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "확장(&E)..." #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "스와치 ì‚­ì œ" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "취소" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "추가(&A)..." #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "로컬" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "파ì¼ì„ ì„ íƒí•˜ì‹­ì‹œì˜¤" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "그림 (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "위치:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "ê°’:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "í•´ì„:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "위치:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "ê°’:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "í•´ì„:" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "ì  ì‚­ì œ" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "ì„ íƒí•œ 위치:" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "ì„ íƒí•œ ê°’:" #: KSeExprUI/ExprCurve.cpp:317 #, fuzzy #| msgctxt "CurveControl|" #| msgid "Interp:" msgctxt "ExprCurve|" msgid "Interp:" msgstr "í•´ì„:" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "ì—†ìŒ" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "선형" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "부드럽게" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "스플ë¼ì¸" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "M스플ë¼ì¸" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "확장(&E)..." #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "í‘œí˜„ì‹ íŽ¸ì§‘ê¸°" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "열기" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "책갈피" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "íŒì—… ë„움ë§" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" kseexpr-4.0.4.0/po/PaxHeaders/lt0000644000000000000000000000003614156104356013404 xustar0030 mtime=1639483630.529066341 kseexpr-4.0.4.0/po/lt/0000755000000000000240000000000014156104356014404 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/lt/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104356016115 xustar0030 mtime=1639483630.523599968 kseexpr-4.0.4.0/po/lt/seexpr2_qt.po0000644000000000000240000007570514156104356017056 0ustar00rootroot00000000000000msgid "" msgstr "" "Project-Id-Version: trunk-kf 5\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: lt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Qt-Contexts: true\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" "%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "" #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "" #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "" #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "" kseexpr-4.0.4.0/po/PaxHeaders/nl0000644000000000000000000000003614156104405013371 xustar0030 mtime=1639483653.931091272 kseexpr-4.0.4.0/po/nl/0000755000000000000240000000000014156104405014371 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/nl/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104405016102 xustar0030 mtime=1639483653.926135166 kseexpr-4.0.4.0/po/nl/seexpr2_qt.po0000644000000000000240000014021014156104405017023 0ustar00rootroot00000000000000# Freek de Kruijf , 2020, 2021. # jaap , 2020, 2021. msgid "" msgstr "" "Project-Id-Version: \n" "PO-Revision-Date: 2021-07-03 14:48+0200\n" "Last-Translator: jaap \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Qt-Contexts: true\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 19.12.3\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs(float x)\n" "absolute waarde van x" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" "float deg(float hoek)\n" "radialen naar graden" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" "float rad(float hoek)\n" "graden naar radialen" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" "float cosd(float hoek)\n" "cosinus in graden" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" "float sind(float hoek)\n" "sinus in graden" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" "float tand(float hoek)\n" "tangens in graden" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" "float acosd(float getal)\n" "arccosinus in graden" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" "float asind(float getal)\n" "arcsinus in graden" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" "float atand(float getal)\n" "arctangens in graden" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" "float atan2d(float y,float x)\n" "arctangens in graden van y/x tussen -180 en 180" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" "float cos(float hoek)\n" "cosinus in radialen" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" "float sin(float hoek)\n" "sinus in radialen" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" "float tan(float hoek)\n" "tangens in radialen" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" "float acos(float getal)\n" "arccosinus in radialen" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" "float asin(float getal)\n" "arcsinus in radialen" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" "float atan(float getal)\n" "arctangens in radialen" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" "float atan2(float y,float x)\n" "arctangens in radialen van y/x tussen -PI en PI" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" "float cosh(float hoek)\n" "hyperbolische cosinus in radialen" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" "float sinh(float hoek)\n" "hyperbolische sinus in radialen" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" "float tanh(float hoek)\n" "hyperbolische tangens in radialen" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" "float acosh(float getal)\n" "hyperbolische arccosinus in radialen" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" "float asinh(float getal)\n" "hyperbolische arcsinus in radialen" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" "float atanh(float getal)\n" "hyperbolische arctangens in radialen" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" "float clamp(float x,float laag,float hoog)\n" "beperk x tot domein [laag, hoog]" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" "float round(float x)\n" "geheel getal dichtst bij x" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" "float max(float a,float b)\n" "grootste van a en b" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" "float min(float a,float b)\n" "kleinste van a en b" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" "float trunc(float a)\n" "dichtstbijzijnd geheel getal in de richting van 0" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" "float floor(float a)\n" "eerstvolgend kleiner geheel getal" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" "float ceil(float a)\n" "eerstvolgend groter geheel getal" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" "float invert(float a)\n" "Gedefinieerd als 1-x" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" "float cbrt(float x)\n" "derdemachts wortel" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" "float sqrt(float x)\n" "(vierkants) wortel" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" "float exp(float x)\n" "e tot de macht x" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" "float pow(float x, float y)\n" "x tot de macht y, ook mogelijk met ^" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" "float log(float x)\n" "natuurlijke logaritme" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" "float log10(float x)\n" "logaritme met grondtal 10" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" "float fmod(float x,float y)\n" "rest van x/y (ook mogelijk met x%y)" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Met absolute waarde van elke ruisterm. Ziet er golvend uit" #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Met absolute waarde van elke ruisterm. Ziet er golvend uit" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Met absolute waarde van elke ruisterm. Ziet er golvend uit" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" "float compress(float x,float laag,float hoog)\n" "Beeldt x af van [0,1] naar [laag,hoog]" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" "float expand(float x,float laag,float hoog)\n" "Beeldt x af van [laag,hoog] naar [0, 1]" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Lineair afbeelden van x van [a1,b1] naar [a2,b2]" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" "float gamma(float x, float g)\n" "gammacorrectie van x met gammafactor g" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" "float bias(float x, float g)\n" "Variatie van gamma, waarbij waarden kleiner dan 0.5 de kromme neertrekken\n" "en waarden groter dan 0.5 de kromme omhoog trekken\n" "pow(x,log(b)/log(0.5))" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" "float contrast(float x, float c)\n" "Contrast aanpassen.  Bij c van 0 tot 0.5 neemt het contrast af .  " "Bij c > 0.5 neemt het contrast toe." #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" "float boxstep(float x,float a)\n" "als x < a dan 0 en anders 1" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" "float linearstep(float x, float a, float b)\n" " als x < a dan 0, als x > b dan 1, en\n" "x verloopt lineair als a < x < b" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" "float smoothstep(float x,float a,float b)\n" "als x < a dan 0, als x > b dan 1, en\n" "x verloopt vloeiend (kubisch) als a < x < b" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" "float gaussstep(float x,float a,float b)\n" " als x < a dan 0, als x > b dan 1, en\n" "x verloopt vloeiend (exponentieel) als a < x < b" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" "remap(float x, float bron, float bereik, float afval, float interp)\n" "Algemene functie voor afbeelden.\n" "Wanneer x +/- binnen het bereik is van bron, is het antwoord een.\n" "Het resultaat wordt nul op meer dan afval buiten bereik.\n" "De vorm van afval wordt geregeld met interp. U kunt getallen\n" "gebruiken of constanten met een waarde:\n" "    int lineair = 0\n" "    int glad = 1\n" "    int gaussisch = 2\n" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" "mix(float a,float b,float alpha)\n" "mengen van a en b volgens alpha." #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" "color hsi(color x, float h, float s, float i, float map=1)\n" "de hsi function verschuift kleur met h\n" "(in graden) en schaalt de verzadiging en intensiteit met s en i.\n" "  Met optioneel map kan de verschuiving worden geregeld\n" "- volledig wanneer map 1 is, en geen verandering wanneer map\n" "0 is.  De verschuiving wordt voor waarden tussen 0 en 1 terug geschaald." #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "midhsi is gelijk aan de functie hsi behalve dat\n" "de besturing map werkt rond het midden (waarde 0.5)\n" "en de verschuiving in beide richtingen kan schalen." #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color rgbtohsl(color rgb)\n" "Omzetting kleurruimten van RGB naar HSL.\n" "HSL is Hue (kleur), Saturation (verzadiging), Lightness (lichtheid)\n" "(alles in bereik [0..1] )\n" "Deze functies zijn ook op redelijke manier uitgebreid voor rgb- en hsl-" "waarden\n" "buiten het bereik [0..1].  Voor elke rgb- of hsl-waarde\n" " (behalve negatieve getallen), is de omzetting goed gedefinieerd en " "omkeerbaar." #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color hsltorgb(color hsl)\n" "omzetting kleurruimten van HSL naar RGB.\n" "HSL is Hue (kleur), Saturation (verzadiging), Lightness (lichtheid)\n" "(alles in bereik [0..1] )\n" "Deze functies zijn ook op redelijke manier uitgebreid voor rgb- en hsl-" "waarden\n" "buiten het bereik [0..1].  Voor elke rgb- of\n" "hsl-waarde (behalve negatieve getallen), is de omzetting goed gedefinieerd " "en omkeerbaar." #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" "color saturate(color getal, float amt)\n" "Kleurverzadiging schalen met amt.\n" "De kleur wordt geschaald rond de luminantiewaarde rec709,\n" "en negatieve resultaten worden beperkt tot nul.\n" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" "float rand ( [float min, float max], [float zaadje] )\n" "Willekeurig getal tussen [min, max] (of [0, 1] indien niet genoemd).\n" "Als een zaadje wordt gegeven wordt dat gebruikt naast de interne zaadjes, en " "kan het worden gebruikt voor het aanmaken van meerdere afzonderlijke " "generatoren." #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" "float hash(float zaadje1,[float zaadje2, ...])\n" "Als rand, maar zonder interne zaadjes. Elk aantal zaadjes is mogelijk\n" "en het gegeven antwoord is afhankelijk van alle gegeven zaadjes." #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Originele perlin ruis op locatie (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" "float snoise ( vector v)\n" "ruis met teken binnen bereik -1 tot 1 gevormd met originele perlin ruis op " "locatie (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "vector vnoise ( vector v)\n" "vector ruis gevormd met originele perlin ruis op locatie (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise ( vector v)\n" "kleur ruis gevormd met originele perlin ruis op locatie (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" "float snoise4 ( vector v,float t)\n" "4D ruis met teken, binnen bereik -1 tot 1 gevormd met originele perlin ruis " "op locatie (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" "vector vnoise4 ( vector v,float t)\n" "4D vector ruis met teken, binnen bereik -1 tot 1 gevormd met originele " "perlin ruis op locatie (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise4 ( vector v,float t)\n" "4D kleur ruis met teken gevormd met originele perlin ruis op locatie (C2 " "interpolant)" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" "float fbm(vector v,int octaves=6,float lacunariteit=2,float versterking=.5)\n" "fbm (Fractale Brownse beweging) is een multi-frequentie ruis functie. \n" "The basis frequentie is gelijk aan de \"noise\" (ruis) functie. Het totale " "aantal van de frequenties wordt geregeld met octaves. The lacunariteit " "regelt deafstand tussen de frequenties - een waarde 2 betekent dat elke " "octaaf twee keer de voorgaande frequentie is. De versterking regelt de " "schaal van elke frequentie vergeleken met die van de vorige frequentie." #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" "vector vfbm(vector vint octaves=6,float lacunariteit=2,float versterking=.5)" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractale Brownse beweging) is een multi-frequentie ruis functie. \n" "The basis frequentie is gelijk aan de \"noise\" (ruis) functie. Het totale \n" "aantal van de frequenties wordt geregeld met octaves. The lacunariteit " "regelt de\n" "afstand tussen de frequenties - een waarde 2 betekent dat elke octaaf \n" "twee keer de voorgaande frequentie is. De versterking regelt de schaal van \n" "elke frequentie vergeleken met die van de vorige frequentie." #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "vector vfbm4(vector v,float time,int octaves=6,float lacunariteit=2,float " "versterking=.5)" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" "color cfbm(vector vint octaves=6,float lacunariteit=2,float versterking=.5)" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "color cfbm4(vector v,float time,int octaves=6,float lacunariteit=2,float " "versterking=.5)" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "float cellnoise(vector v)\n" "cellnoise genereert een veld van constant gekleurde kubussen op basis van de " "gehele locatie.\n" "Dit is gelijk aan de prman cellnoise functie." #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "color cellnoise(vector v)\n" "cellnoise genereert een veld van constant gekleurde kubussen op basis van de " "gehele locatie.\n" "Dit is gelijk aan de prman cellnoise functie." #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" "float pnoise ( vector v, vector periode )\n" "periodieke ruis" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunariteit=2, float fbmGain=.5)\n" "voronoi is een cellulair ruispatroon. Het is een springerige variant van " "cellnoise." #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunariteit=2, float fbmGain=.5)\n" "geeft kleur terug in cellulair patroon. Het is een springerige variant van " "cellnoise." #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunariteit=2, float fbmGain=.5)\n" "geeft centrum terug van voronoi cel." #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" "float dist(vector a, vector b)\n" "afstand tussen twee punten" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" "float length(vector v)\n" "lengte van vector" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" "float hypot(vector v)\n" "lengte van 2d vector [x,y]" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" "float dot(vector a,vector b)\n" "vector inproduct" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" "vector norm(vector v)\n" "tot lengte 1 geschaalde vector" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" "vector cross(vector a,vector b)\n" "vector uitproduct" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" "float angle(vector a,vector b)\n" "hoek tussen twee vectoren (in radialen)" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" "vector angle(vector a,vector b)\n" "genormaliseerde vector loodrecht op a en b geschaald naar lengte 1" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" "vector rotate(vector v,vector as, float hoek)\n" "roteert v rond as over een gegeven hoek (in radialen)" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" "vector up(vector P,vector upvec)\n" "roteert v zodanig dat de Y-as wijst in de gegeven richting van upvec" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" "int cycle(int index, int laag, int hoog )\n" "cyclisch gaan door de waarden tussen laag en hoog, op basis van de gegeven " "index.\n" "Dit is een offset \"mod\"-functie. Het antwoord wordt berekend als \"laag + " "waarde % (hoog - laag) +1 \"." #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" "int pick(float index, int laag, int hoog, [float gewichten, ...] )\n" "Kiest willekeurig waarden tussen laag en hoog op basis van de opgegeven " "index(met automatische hash\n" ".   De waarden worden verdeeld volgens de opgegeven\n" "gewichten. Een niet opgegeven gewicht wordt verondersteld 1.0 te zijn." #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" "color swatch(float index, color keuze0, color keuze1, color keuze2, [...])\n" "Kiest een van de opgegeven kleurkeuzes op basis van de index ( volgens " "aanname in bereik [0..1])." #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" "float choose(float index,float keuze1, float keuze2, [0, ])\n" "Kiest een van de opgegeven keuzes op basis van de index ( volgens aanname in " "bereik [0..1])." #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" "float wchoose(float index,float keuze1, float gewicht1, float keuze2, float " "gewicht2, [...] )\n" "Kiest een van de opgegeven keuzes op basis van de index ( volgens aanname in " "bereik [0..1]).\n" "De waarden worden verdeeld naar de opgegeven gewichten." #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpoleert een aantal waarden naar de opgegeven parameter, hierin\n" " zijn y1,...,y2 gelijkmatig verdeeld over [0..1]" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "float curve(float param,float pos0,float waarde0,int interp0,float pos1," "float waarde1,int interp1,[...])\n" "\n" "Interpoleert 1D helling gedefinieerd door de controlepunten in 'param'. " "Controlepuntenworden opgegeven met \n" "drietallen parameters posi, waardei, and interpi. Interpolatiecodes zijn \n" "0 - geen, 1 - lineair, 2 - glad, 3 - spline, \n" "4 - monotoon (niet-oscillerende spline)" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "color curve(float param,float pos0,float waarde0,int interp0,float pos1," "float waarde1,int interp1,[...])\n" "\n" "Interpoleert kleurenhelling gedefinieerd door de controlepunten in 'param'. " "Controlepuntenworden opgegeven met \n" "drietallen parameters posi, waardei, and interpi. Interpolatiecodes zijn \n" "0 - geen, 1 - lineair, 2 - glad, 3 - spline, \n" "4-monotoon (niet-oscillerende spline)" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" "getVar(string varNaam,vector standaardWaarde)\n" "geeft waarde terug van varNaam indien variable bestaat, en anders de " "standaardWaarde" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" "float printf(string format,[vec0, vec1, ...])\n" "Stuurt een tekenreeks naar STDOUT, Format parameters zijn \"%v\" en \"%f\".\n" "Teruggegeven parameter is leeg, maar moet aan een variabele worden toegekend." #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" "sprintf(string format, [double|string, double|string, ...])\n" "Geeft tekenreeks terug geformatteerd naar de gegeven waarden. Zie 'man " "sprintf' voor meer details over format." #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "Nieuwe variabele toevoegen" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "String (tekenreeks) verwacht of float[d]" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "float[d] verwacht" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "float[%1] verwacht" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "Types kloppen niet, eerst: '%1'; daarna: '%2'" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "float of float[3] verwacht" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "'%1' verwacht voor argument, maar kreeg '%2'" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "Aantal argumenten klopt niet, moet 1 tot 7 zijn" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "Aantal argumenten klopt niet, moet veelvoud zijn van 3, plus 1" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "Aantal argumenten klopt niet, moet 1 zijn of meer" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "Eerste argument moet een tekenreeks zijn" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "Onvolledige format specificatie" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "Geen variabele met naam '%1'" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "Functie '%1' is niet gedefinieerd" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "Toekenning heeft onjuist type '%1'" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "Types van conditie komen niet met elkaar overeen" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "Variabele '%1' in condities is inconsistent gedefinieerd" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "Te weinig argumenten voor functie '%1'" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "Teveel argumenten voor functie '%1'" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "Expressie genereerde type '%1', incompatibel met gewenst type '%2'" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "Syntaxisfout nabij '%1'" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "Onverwacht einde van expressie nabij '%1'" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "Onverwacht einde van format string" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "Ongeldige format string, alleen %v en %f zijn toegestaan" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "Aantal argumenten voor format string klopt niet" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "Onbekende fout (melding=%1)" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "Variabele" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "Opzoeken" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "Kromme" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "Kleurkromme" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "Standaard" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "Min" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "Max" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "Int" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "Float" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Vector" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Kleur" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "Regenboog" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "Grijswaarden" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Kleuren" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "Kleurenstaal" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "string (tekenreeks)" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "bestand" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "map" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "Naam van string" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "Stringtype" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "Stringstandaard" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "String (tekenreeks)" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "Expressie opslaan" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "Kon bestand %1 niet openen voor schrijven" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "Fout" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "Kon bestand %1 niet openen voor schrijven. Is het alleen-lezen?" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "Punt verwijderen" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "Geselecteerde positie:" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "Geselecteerde kleur: " #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "Geen" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Lineair" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "Glad" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "Uitvouw&en..." #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "Kleurenstaal wissen" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "Annuleren" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "&Toevoegen..." #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "Lokaal" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "Kies een bestand a.u.b" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "Afbeeldingen (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "Waarde:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "Waarde:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "Punt verwijderen" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "Geselecteerde positie:" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "Geselecteerde waarde:" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "Geen" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "Lineair" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "Glad" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "Uitvouw&en..." #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "Editor voor expressies" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "Openen" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "Favorieten" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "Help pop-up" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" #~ msgctxt "ExprAddDialog|" #~ msgid "Link" #~ msgstr "Koppeling" #~ msgctxt "ExprAddDialog|" #~ msgid "AnimCurve" #~ msgstr "AnimCurve" #~ msgctxt "ExprAddDialog|" #~ msgid "Deep Water" #~ msgstr "Deep Water" #~ msgctxt "ExprDialog|" #~ msgid "Preview / Library" #~ msgstr "Voorbeeld / Bibliotheek" #~ msgctxt "ExprDialog|" #~ msgid "Preview" #~ msgstr "Voorbeeld" #~ msgctxt "ExprDialog|" #~ msgid "Save" #~ msgstr "Opslaan" #~ msgctxt "ExprDialog|" #~ msgid "Save As" #~ msgstr "Opslaan als" #~ msgctxt "ExprDialog|" #~ msgid "Save Local" #~ msgstr "Lokaal opslaan" #~ msgctxt "ExprDialog|" #~ msgid "Clear" #~ msgstr "Wissen" #~ msgctxt "ExprDialog|" #~ msgid "Apply" #~ msgstr "Toepassen" #~ msgctxt "ExprDialog|" #~ msgid "Accept" #~ msgstr "Accepteren" #~ msgctxt "ExprDialog|" #~ msgid "Cancel" #~ msgstr "Annuleren" #~ msgctxt "ExprDialog|" #~ msgid "Your expression had possible errors." #~ msgstr "De expressie bevatte mogelijk fouten." #~ msgctxt "ExprDialog|" #~ msgid "Do you want to accept your expression anyways?" #~ msgstr "Wilt u toch deze expressie gebruiken?" #~ msgctxt "ExprDialog|" #~ msgid "Help" #~ msgstr "Help" #~ msgctxt "ExprDialog|" #~ msgid "Back" #~ msgstr "Terug" #~ msgctxt "ExprDialog|" #~ msgid "Forward" #~ msgstr "Vooruit" #~ msgctxt "ExprDialog|" #~ msgid "Find" #~ msgstr "Zoeken" #~ msgctxt "ExprDialog|" #~ msgid "Find Next" #~ msgstr "Volgende zoeken" #~ msgctxt "ExprDialog|" #~ msgid "Find Prev" #~ msgstr "Zoek vorige" #~ msgctxt "ExprDialog|" #~ msgid "Variables not supported in preview (assumed zero):
" #~ msgstr "" #~ "Variabelen niet ondersteund in voorbeeld (nul aangenomen):
" #~ msgctxt "ExprDialog|" #~ msgid "Functions not supported in preview (assumed zero):
" #~ msgstr "" #~ "Variabelen niet ondersteund in voorbeeld (nul aangenomen):
" #~ msgctxt "ExprGrapherWidget|" #~ msgid "Width" #~ msgstr "Breedte" #~ msgctxt "ExprGrapherWidget|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "
%1" #~ msgstr "
%1" #~ msgctxt "ExprCurve|" #~ msgid "Selected Position: " #~ msgstr "Geselecteerde positie:" kseexpr-4.0.4.0/po/PaxHeaders/nn0000644000000000000000000000003614156104410013367 xustar0030 mtime=1639483656.727377946 kseexpr-4.0.4.0/po/nn/0000755000000000000240000000000014156104410014367 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/nn/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104410016100 xustar0030 mtime=1639483656.721967214 kseexpr-4.0.4.0/po/nn/seexpr2_qt.po0000644000000000000240000007706214156104410017037 0ustar00rootroot00000000000000# Translation of seexpr2_qt to Norwegian Nynorsk # # Karl Ove Hufthammer , 2020. msgid "" msgstr "" "Project-Id-Version: \n" "PO-Revision-Date: 2020-08-28 18:49+0200\n" "Last-Translator: Karl Ove Hufthammer \n" "Language-Team: Norwegian Nynorsk \n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 20.08.0\n" "X-Environment: kde\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: qtrich\n" "X-Qt-Contexts: true\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "Legg til ny variabel" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "Variabel" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "Oppslag" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "Kurve" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "Fargekurve" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "Standard" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Vektor" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Farge" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "Regnboge" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "GrÃ¥tonar" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Fargar" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "Fargesamling" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "tekststreng" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "fil" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "mappe" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "Feil" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "Slett punkt" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "Ingen" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Lineær" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "Jamn" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "&Utvid …" #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "Slett fargesamling" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "Avbryt" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "&Legg til …" #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "Lokal" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "Vel ei fil" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "Bilete (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "Slett punkt" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "Ingen" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "Lineær" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "Jamn" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "&Utvid …" #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "Opna" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "Favorittar" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "Sprettopphjelp" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" kseexpr-4.0.4.0/po/PaxHeaders/pl0000644000000000000000000000003614156104423013373 xustar0030 mtime=1639483667.034677854 kseexpr-4.0.4.0/po/pl/0000755000000000000240000000000014156104423014373 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/pl/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104423016104 xustar0030 mtime=1639483667.029951673 kseexpr-4.0.4.0/po/pl/seexpr2_qt.po0000644000000000000240000013620514156104423017036 0ustar00rootroot00000000000000# Åukasz WojniÅ‚owicz , 2021. msgid "" msgstr "" "Project-Id-Version: \n" "PO-Revision-Date: 2021-09-12 09:13+0200\n" "Last-Translator: Åukasz WojniÅ‚owicz \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Qt-Contexts: true\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 20.12.1\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs(float x)\n" "wartość bezwzglÄ™dna z \"x\"" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" "float deg(float kÄ…t)\n" "radiany na stopnie" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" "float rad(float kÄ…t)\n" "stopnie na radiany" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" "float cosd(float kÄ…t)\n" "kosinus w stopniach" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" "float sind(float kÄ…t)\n" "sinus w stopniach" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" "float tand(float kÄ…t)\n" "tangens w stopniach" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" "float acosd(float wartość)\n" "arkus kosinus w stopniach" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" "float asind(float wartość)\n" "arkus sinus w stopniach" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" "float atand(float wartość)\n" "arkus tangens w stopniach" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" "float atan2d(float y,float x)\n" "arkus tangens w stopniach z \"y/x\" w zakresie -180 oraz 180" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" "float cos(float kÄ…t)\n" "kosinus w radianach" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" "float sin(float kÄ…t)\n" "sinus w radianach" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" "float tan(float kÄ…t)\n" "tangens w radianach" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" "float acos(float wartość)\n" "arkus kosinus w radianach" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" "float asin(float wartość)\n" "arkus sinus w radianach" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" "float atan(float wartość)\n" "arkus tangens w radianach" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" "float atan2(float y,float x)\n" "arkus tangens w radianach z \"y/x\" w zakresie -PI oraz PI" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" "float cosh(float kÄ…t)\n" "hiperboliczny kosinus w radianach" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" "float sinh(float kÄ…t)\n" "hiperboliczny sinus w radianach" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" "float tanh(float kÄ…t)\n" "hiperboliczny tangens w radianach" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" "float acosh(float wartość)\n" "hiperboliczny arkus kosinus w radianach" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" "float asinh(float wartość)\n" "hiperboliczny arkus sinus w radianach" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" "float atanh(float wartość)\n" "hiperboliczny arkus tangens w radianach" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" "float clamp(float x,float lo,float hi)\n" "wiąże x do zakresu [lo,hi]" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" "float round(float x)\n" "najbliższa liczba caÅ‚kowita przy x" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" "float max(float a,float b)\n" "wiÄ™ksze spoÅ›ród a oraz b" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" "float mix(float a,float b)\n" "mniejsze spoÅ›ród a oraz b" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" "float trunc(float a)\n" "najbliższa liczba caÅ‚kowita w stronÄ™ zera" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" "float floor(float a)\n" "nastÄ™pna niższa liczba caÅ‚kowita" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" "float ceil(float a)\n" "nastÄ™pna wyższa liczba caÅ‚kowita" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" "float invert(float a)\n" "OkreÅ›lone jako 1-x" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" "float cbrt(float x)\n" "pierwiastek szeÅ›cienny" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" "float sqrt(float x)\n" "pierwiastek kwadratowy" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" "float exp(float x)\n" "E podniesione do potÄ™gi x" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" "float pow(float x, float y)\n" "x do potÄ™gi y, dostÄ™pne również jako ^" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" "float log(float x)\n" "Logarytm naturalny" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" "float log10(float x)\n" "Podstawa algorytmu 10" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" "float fmod(float x,float y)\n" "reszta z x/y (dostÄ™pne również jako operator %)" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "float turbulence(vector v,int oktawy=6,float lakunarność=2,float " "wzmocnienie=.5)\n" "Brana jest bezwzglÄ™dna wartość każdego wyrażenia szumu. Nadaje to wzburzony " "wyglÄ…d" #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "color cturbulence(vector v,int oktawy=6,float lakunarność=2,float " "wzmocnienie=.5)\n" "Brana jest bezwzglÄ™dna wartość każdego wyrażenia szumu. Nadaje to wzburzony " "wyglÄ…d" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "vector vturbulence(vector v,int oktawy=6,float lakunarność=2,float " "wzmocnienie=.5)\n" "Brana jest bezwzglÄ™dna wartość każdego wyrażenia szumu. Nadaje to wzburzony " "wyglÄ…d" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" "float compress(float x,float lo,float hi)\n" "Ponownie mapuje x w [0,1] do [lo,hi]" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" "float expand(float x,float lo,float hi)\n" "Ponownie mapuje x w [lo,hi] do [0,1]" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Liniowo mapuje ponownie x w [a1,b1] do [a2,b2]" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" "float gamma(float x, float g)\n" "Poprawka gammy \"x\" ze współczynnikiem gammy \"g\"" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" "float bias(float x, float g)\n" "Odmiana gammy, gdzie wartoÅ›ci mniejsze niż 0,5 Å›ciÄ…gajÄ… krzywÄ… na dół\n" "a wartoÅ›ci wiÄ™ksze niż 0.5 ciÄ…gnÄ… krzywÄ… w górÄ™\n" "pow(x,log(b)/log(0.5))" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" "float contrast(float x, float c)\n" "Dostosuje kontrast.  Dla \"c\" od 0 do 0,5, kontrast jest zmniejszany." "  Dla \"c\" > 0,5, kontrast jest zwiÄ™kszany." #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" "float boxstep(float x,float a)\n" " jeÅ›li x < a to 0 w przeciwnym przypadku 1" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" "float linearstep(float x, float a, float b)\n" " jeÅ›li x < a to 0, jeÅ›li x > b to 1 oraz\n" "x przechodzi liniowo, gdy a < x < b " #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" "float smoothstep(float x,float a,float b)\n" " jeÅ›li x < a to 0, jeÅ›li x > b to 1 oraz\n" "x przechodzi gÅ‚adko (szeÅ›ciennie), gdy a < x < b" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" "float gasussstep(float x,float a,float b)\n" " jeÅ›li x < a to 0, jeÅ›li x > b to 1 oraz\n" "x przechodzi gÅ‚adko (wykÅ‚adniczo), gdy a < x < b" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" "remap(float x, float źródÅ‚o, float zakres, float spadek, float interp)\n" "Ogólna funkcja ponownie mapujÄ…ca.\n" "Gdy x jest w zakres +/- źródÅ‚a, to wynik jest równy jeden.\n" "Wynik spada do zera poza tym zakresem w odlegÅ‚oÅ›ci spadek.\n" "KsztaÅ‚t spadku jest okreÅ›lany przez interp. Można używać wartoÅ›ci " "numerycznych\n" "lub nazwanych staÅ‚ych:\n" "    int linowy = 0\n" "    int wygÅ‚adzony = 1\n" "    int gausa = 2\n" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" "mix(float a,float b,float alpha)\n" "Zmieszanie \"a\" oraz \"b\" wg alfy." #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" "color hsi(color x, float h, float s, float i, float map=1)\n" "Funkcja hsi przesuwa odcieÅ„ o wartość \"h\"\n" "(w stopniach) i skaluje nasycenie oraz natężenie odpowiednio o wartość \"s\" " "oraz \"i\"\n" ".  Można podać mapÄ™, która bÄ™dzie sterować przesuniÄ™ciem\n" "- peÅ‚ne przesuniÄ™cie nastÄ…pi, gdy mapa jest równa jeden, a brak przesuniÄ™cia " "nastÄ…pi\n" "gdy mapa jest równa zero.  PrzesuniÄ™cie powróci do swojej pierwotnej\n" "wartoÅ›ci pomiÄ™dzy zero i jeden." #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "Funkcja midhsi jest taka sama jak hsi z wyjÄ…tkiem, że \n" "mapa sterujÄ…ca jest wyÅ›rodkowana wzglÄ™dem punktu Å›rodkowego (wartość 0.5)\n" "i może skalować przesuniÄ™cie w obu kierunkach." #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color rgbtohsl(color rgb)\n" "PrzeksztaÅ‚cenie przestrzeni barw RGB na HSL.\n" "HSL to Hue (z ang. odcieÅ„), Saturation (z ang. nasycenie), Lightness (z ang. " "jasność) (wszystkie w zakresie[0..1] )\n" "Funkcje te zostaÅ‚y także rozszerzone o obsÅ‚ugÄ™ wartoÅ›ci rgb oraz hsl\n" "spoza zakresu [0..1] w sensowny sposób.  Dla każdej wartoÅ›ci rgb czy\n" "hsl (poza ujemnymi wartoÅ›ciami \"s\"), przeksztaÅ‚cenie\n" "jest jednoznacznie okreÅ›lone i odwracalne." #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color hsltorgb(color hsl)\n" "PrzeksztaÅ‚cenie przestrzeni barw HSL na RGB.\n" "HSL to Hue (z ang. odcieÅ„), Saturation (z ang. nasycenie), Lightness (z ang. " "jasność) (wszystkie w zakresie[0..1] )\n" "Funkcje te zostaÅ‚y także rozszerzone o obsÅ‚ugÄ™ wartoÅ›ci rgb oraz hsl\n" "spoza zakresu [0..1] w sensowny sposób.  Dla każdej wartoÅ›ci rgb czy\n" "hsl (poza ujemnymi wartoÅ›ciami \"s\"), przeksztaÅ‚cenie\n" "jest jednoznacznie okreÅ›lone i odwracalne." #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" "color saturate(color val, float amt)\n" "Skaluje nasycenie barwy o wartość \"amt\".\n" "Barwa jest skalowana wokół wartoÅ›ci luminancji rec709,\n" "a wartoÅ›ci ujemne sÄ… przycinane do zera.\n" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" "float rand ( [float min, float max], [float seed] )\n" "Losowa liczba pomiÄ™dzy [min, max] (lub [0, 1] jeÅ›li nie okreÅ›lono).\n" "JeÅ›li podano ziarno losowoÅ›ci, to zostanie ono wykorzystane jako dodatkowe " "do wewnÄ™trznych ziaren losowoÅ›ci i może być użyte do stworzenia wielu " "odmiennych generatorów." #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" "float hash(float seed1,[float seed2, ...])\n" "Tak jak rand lecz bez wewnÄ™trznych ziaren losowoÅ›ci. Można podać dowolnÄ…\n" "liczbÄ™ ziaren losowoÅ›ci, a wynikiem bÄ™dzie losowa funkcja na podstawie " "wszystkich ziaren losowoÅ›ci." #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Pierwotny szum perlin w miejscu (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" "float snoise ( vector v)\n" "Szum w zakresie od -1 do 1 utworzony z pierwotnego szumu perlin w miejscu " "(C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "vector vnoise (vector v)\n" "Szum wektorowy utworzony z pierwotnego szumu perlin w miejscu (C2 " "interpolant)" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise ( vector v)\n" "Szum kolorowy utworzony z pierwotnego szumu perlin w miejscu (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" "float snoise4 ( vector v,float t)\n" "Szum 4D ze znakiem w zakresie od -1 do 1 utworzony z pierwotnego szumu " "perlin w miejscu (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" "vector vnoise4 ( vector v,float t)\n" "Szum wektorowy 4D utworzony z pierwotnego szumu perlin w miejscu (C2 " "interpolant)" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise4 ( vector v,float t)\n" "Szum kolorowy 4D utworzony z pierwotnego szumu perlin w miejscu (C2 " "interpolant)" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" "float fbm(vector v,int oktawy=6,float lakunarność=2,float wzmocnienie=.5)\n" "fbm (Fraktalny ruch Browna) jest wieloczÄ™stotliwoÅ›ciowÄ… funkcjÄ… szumu. \n" "Podstawowa czÄ™stotliwość jest taka sama jak funkcja \"szumu\". CaÅ‚kowita " "liczba czÄ™stotliwoÅ›ci sterowanych przez oktawy. Lakunarność jest " "odlegÅ‚oÅ›ciÄ…pomiÄ™dzy czÄ™stotliwoÅ›ciami - wartość równa 2 oznacza, że każda " "oktawa madwukrotnie wyższÄ… czÄ™stotliwość poprzedniej. Wzmocnienie okreÅ›la o " "ilekażda czÄ™stotliwość jest skalowana wzglÄ™dem poprzedniej czÄ™stotliwoÅ›ci." #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" "vector vfbm(vector v, int oktawy=6, float lakunarność=2, float " "wzmocnienie=.5 )" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" "float fbm4(vector v,float czas,int oktaves=6,float lakunarność=2,float " "wzmocnienie=.5)\n" "fbm (Fraktalny ruch Browna) jest wieloczÄ™stotliwoÅ›ciowÄ… funkcjÄ… szumu. \n" "Podstawowa czÄ™stotliwość jest taka sama jak funkcja \"szumu\". CaÅ‚kowita \n" "liczba czÄ™stotliwoÅ›ci sterowanych przez oktawy. Lakunarność jest " "odlegÅ‚oÅ›ciÄ… \n" "pomiÄ™dzy czÄ™stotliwoÅ›ciami - wartość równa 2 oznacza, że każda oktawa ma \n" "dwukrotnie wyższÄ… czÄ™stotliwość poprzedniej. Wzmocnienie okreÅ›la o ile \n" "każda czÄ™stotliwość jest skalowana wzglÄ™dem poprzedniej czÄ™stotliwoÅ›ci." #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "vector vfbm4(vector v,float czas,int oktawy=6,float lakunarność=2,float " "wzmocnienie=.5)" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" "color cfbm(vector vint oktawy=6,float lakunarność=2,float wzmocnienie=.5)" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "color cfbm4(vector v,float czas,int oktawy=6,float lakunarność=2,float " "wzmocnienie=.5)" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "float cellnoise(vector v)\n" "cellnoise tworzy pole szeÅ›cianów o staÅ‚ej barwie na podstawie poÅ‚ożenia " "liczb caÅ‚kowitych.\n" "Jest to to samo co funkcja szumu komórkowego prman." #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "color cellnoise(vector v)\n" "cellnoise tworzy pole szeÅ›cianów o staÅ‚ej barwie na podstawie poÅ‚ożenia " "liczb caÅ‚kowitych.\n" "Jest to to samo co funkcja szumu komórkowego prman." #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" "float pnoise ( vector v, vector okres )\n" "szum okresowy" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" "float voronoi(vector v, int rodzaj=1,float postrzÄ™pienie=0.5, float " "fbmSkala=0, int fbmOktawy=4,float fbmLakunarność=2, float " "fbmWzmocnienie=.5)\n" "voronoi jest komórkowym wzorcem szumu. Jest postrzÄ™pionÄ… odmianÄ… cellnoise." #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" "color cvoronoi(vector v, int rodzaj=1,float postrzÄ™pienie=0.5, float " "fbmSkala=0, int fbmOktawy=4,float fbmLakunarność=2, float " "fbmWzmocnienie=.5)\n" "zwraca barwÄ™ we wzorcu komórkowym. Jest postrzÄ™pionÄ… odmianÄ… cellnoise." #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" "color pvoronoi(vector v, int rodzaj=1,float postrzÄ™pienie=0.5, float " "fbmSkala=0, int fbmOktawy=4,float fbmLakunarność=2, float " "fbmWzmocnienie=.5)\n" "zwraca Å›rodek komórki voronoi." #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" "float dist(vector a, vector b)\n" "odlegÅ‚ość pomiÄ™dzy dwoma punktami" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" "float length(vector v)\n" "dÅ‚ugość wektora" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" "float hypot(vector v)\n" "dÅ‚ugość wektora 2D [x, y]" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" "float dot(vector a,vector b)\n" "iloczyn skalarny wektorów" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" "vector norm(vector v)\n" "wektor przeskalowany do dÅ‚ugoÅ›ci jednostkowej" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" "vector cross(vector a,vector b)\n" "iloczyn wektorowy wektorów" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" "float angle(vector a,vector b)\n" "kÄ…t pomiÄ™dzy dwoma wektorami (w radianach)" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" "vector angle(vector a,vector b)\n" "znormalizowany wektor prostopadÅ‚y do \"a\" oraz \"b\", przeskalowany do " "jednostki dÅ‚ugoÅ›ci" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" "vector rotate(vector v,vector oÅ›,float kÄ…t)\n" "obraca \"v\" wokół osi o dany kÄ…t (w radianach)" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" "vector up(vector P,vector upvec)\n" "obraca v tak, że oÅ› Y jest skierowana w górÄ™ danego kierunku" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" "int cycle(int index, int loRange, int hiRange )\n" "Krąży pomiÄ™dzy wartoÅ›ciami spomiÄ™dzy zakresu loRange oraz hiRange na " "podstawie podanego indeksu.\n" " Jest to funkcja przesuniÄ™cia \"mod\". Wynik jest obliczony jako ``loRange + " "wartość % (hiRange-loRange+1)``." #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Wybiera wartoÅ›ci losowo spomiÄ™dzy loRange oraz hiRange na podstawie podanego " "indeksu (dla którego\n" " jest obliczany hasz).  WartoÅ›ci zostanÄ… rozÅ‚ożone wg podanych wag." "  Gdy wartość wagi jest niepodana, to przyjmuje siÄ™\n" "1.0. " #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" "color swatch(float indeks, color wybór0, color wybór1, color wybór2, [...])\n" "Wybiera jednÄ… z dostÄ™pnych barw na podstawie indeksu (zakÅ‚ada siÄ™, że z " "zakresu [0..1])." #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" "float choose(float indeks,float wybór1, float wybór2, [...])\n" "Wybiera jeden z możliwych wyborów na podstawie indeksu (zakÅ‚ada siÄ™, że z " "zakresu [0, 1])." #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" "float wchoose(float indeks,float wybór1, float waga1, float wybór2, float " "waga2, [...] )\n" "Wybiera jeden z możliwych wyborów na podstawie indeksu (zakÅ‚ada siÄ™, że z " "zakresu [0..1]).\n" "WartoÅ›ci zostanÄ… rozÅ‚ożone wg podanych wag." #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpoluje zestaw wartoÅ›ci do danego parametru, gdzie y...1, ..., yn\n" "sÄ… rozÅ‚ożone równo w zakresie [0..1]" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpoluje rampÄ™ 1D okreÅ›lonÄ… punktami tworzÄ…cymi poprzez 'param'. Punkty " "tworzÄ…ce sÄ… okreÅ›lane \n" "trójkami parametrów pos_i, val_i oraz interp_i. Kody interpolacji to \n" "0 - brak, 1 - liniowa, 2 - wygÅ‚adzona, 3 - krzywa sklejana, \n" "4 - monotoniczna (nieoscylacyjna krzywa sklejana)" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpoluje rampÄ™ barw okreÅ›lonÄ… punktami tworzÄ…cymi poprzez 'param'. Punkty " "tworzÄ…ce sÄ… okreÅ›lane \n" "trójkami parametrów pos_i, val_i oraz interp_i. Kody interpolacji to \n" "0 - brak, 1 - liniowa, 2 - wygÅ‚adzona, 3 - krzywa sklejana, \n" "4 - monotoniczna (nieoscylacyjna krzywa sklejana)" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" "getVar(string nazwaZmiennej,vector wartośćDomyÅ›lna)\n" "zwraca wartość nazwaZmiennej, jeÅ›li zmienna istnieje, w przeciwnym przypadku " "zwraca wartośćDomyÅ›lna" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" "float printf(string format,[vec0, vec1, ...])\n" "WyÅ›wietla ciÄ…g znaków na STDOUT, dozwolone parametry formatujÄ…ce to \"%v\" " "oraz\"%f\".\n" "Wartość zwracana jest pusta, lecz musi zostać przypisana do zmiennej." #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" "sprintf(string format, [double|string, double|string, ...])\n" "Zwraca ciÄ…g znaków sformatowany wg podanych wartoÅ›ci. Zobacz 'man sprintf' " "po wiÄ™cej szczegółów nt. formatowania." #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "Dodaj nowÄ… zmiennÄ…" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "Oczekiwany ciÄ…g znaków lub float[d]" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "Oczekiwany float[d]" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "Oczekiwano float[%1]" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "Niezgodność rodzaju, pierwszy: '%1'; drugi: '%2'" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "Oczekiwany float lub float[3]" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "Oczekiwano '%1' jako argumentu, dostano '%2'" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "ZÅ‚a liczba argumentów, powinno być od 1 do 7" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "ZÅ‚a liczba argumentów, powinna być wielokrotnoÅ›ciÄ… 3 plus 1" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "ZÅ‚a liczba argumentów, powinno być 1 lub wiÄ™cej" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "Pierwszym argumentem musi być ciÄ…g znaków" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "NiezupeÅ‚ne okreÅ›lenie formatu" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "Brak zmiennej o nazwie '%1'" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "Funkcja '%1' nie ma definicji" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "DziaÅ‚anie przypisania ma niepoprawny rodzaj '%1'" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "Rodzaje warunków nie sÄ… zgodne" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "Zmienna '%1' jest okreÅ›lona w warunkach niejednoznacznie" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "Zbyt maÅ‚o argumentów dla funkcji '%1'" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "Zbyt wiele argumentów dla funkcji '%1'" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "" "Rodzaj wytworzonego wyrażenia '%1' jest niezgodny z żądanym rodzajem '%2'" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "Błąd skÅ‚adni w pobliżu '%1'" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "Nieoczekiwany koniec wyrażenia w pobliżu '%1'" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "Nieoczekiwany koniec ciÄ…gu z formatowaniem" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "NieprawidÅ‚owy format ciÄ…gu znaków, dopuszczalne sÄ… tylko %v oraz %f" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "ZÅ‚a liczba argumentów dla ciÄ…gu z formatem" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "Nieznany błąd (wiadomość = %1)" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "Zmienna" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "Znajdź" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "Krzywa" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "Krzywa barwy" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "DomyÅ›lne" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "Min" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "Maks" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "Int" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "Liczba zmiennoprzecinkowa" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Wektor" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Barwa" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "TÄ™cza" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "Odcienie szaroÅ›ci" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Barwy" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "Åata" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "ciÄ…g znaków" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "plik" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "katalog" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "Nazwa ciÄ…gu znaków" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "Rodzaj ciÄ…gu znaków" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "DomyÅ›lny ciÄ…g znaków" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "CiÄ…g znaków" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "Zapisz wyrażenie" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "Nie można otworzyć pliku %1 do zapisu" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "Błąd" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "Nie można otworzyć pliku %1 do zapisu. Czy jest on tylko do odczytu?" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "UsuÅ„ punkt" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "Wybrane poÅ‚ożenie:" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "Zaznaczona barwa:" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "Brak" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Liniowa" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "WygÅ‚adzona" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Krzywa sklejana" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "&RozwiÅ„..." #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "UsuÅ„ Å‚atkÄ™" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "Anuluj" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "Dod&aj..." #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "Lokalna" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "Wybierz plik" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "Obrazy (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "PoÅ‚ożenie:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "Wartość:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "PoÅ‚ożenie:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "Wartość:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "UsuÅ„ punkt" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "Wybrane poÅ‚ożenie:" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "Zaznaczona wartość:" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "Brak" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "Liniowa" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "WygÅ‚adzona" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Krzywa sklejana" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "&RozwiÅ„..." #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "Edytor wyrażeÅ„" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "Otwórz" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "Ulubione" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "Pomoc podrÄ™czna" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" kseexpr-4.0.4.0/po/PaxHeaders/pt0000644000000000000000000000003614156104427013407 xustar0030 mtime=1639483671.799288084 kseexpr-4.0.4.0/po/pt/0000755000000000000240000000000014156104427014407 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/pt/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104427016120 xustar0030 mtime=1639483671.794082757 kseexpr-4.0.4.0/po/pt/seexpr2_qt.po0000644000000000000240000014161214156104427017050 0ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) licensed under the GNU Free Documentation License 1.3+ unless stated otherwise # This file is distributed under the same license as the Krita Manual package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: Krita Manual 4.3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-08-10 01:58+0200\n" "PO-Revision-Date: 2021-07-02 12:29+0100\n" "Last-Translator: José Nuno Coelho Pires \n" "Language-Team: Portuguese \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-POFile-SpellExtra: SeExpr ref seexprtutintro seexprfilllayer\n" "X-POFile-SpellExtra: resourceseexprscripts Krita Inigo Quilez Shaders\n" "X-POFile-SpellExtra: Invent Disney kbd noise pow fbm vnoise if Cs contrast\n" "X-POFile-SpellExtra: var void printf stdout float bias boxstep gausstep\n" "X-POFile-SpellExtra: smoothstep clamp inf sup compress expand fit gamma\n" "X-POFile-SpellExtra: invert color hsi hsltorgb hsl rgbtohsl rgb HSL midhsi\n" "X-POFile-SpellExtra: int interp remap mix cellnoise ccellnoise PRMan cfbm\n" "X-POFile-SpellExtra: vfbm Fractal Brownian Motion hash rand cnoise pnoise\n" "X-POFile-SpellExtra: snoise Ken Perlin min max turbulence cturbulence\n" "X-POFile-SpellExtra: vturbulence voronoi fbmEscala fbmOitavas fbmLacunas\n" "X-POFile-SpellExtra: fbmGanho cvoronoi pvoronoi fbmEscal Voronoi choose\n" "X-POFile-SpellExtra: indice opcao cycle intervaloInf intervaloSup mod pick\n" "X-POFile-SpellExtra: wchoose abs cbrt ceil exp floor fmod log round sqrt\n" "X-POFile-SpellExtra: trunc acos acosd acosh asin asind asinh atan atand\n" "X-POFile-SpellExtra: atanh cos cosd cosh deg hypot rad sin sind sinh tan\n" "X-POFile-SpellExtra: tand tanh angle vectoers cross dist dot length norm\n" "X-POFile-SpellExtra: ortho rotate angulo up símples spline ccurve pos val\n" "X-POFile-SpellExtra: posi interpi yn image images seexpr Sevoronoi alt\n" "X-POFile-SpellExtra: periodo saturate quant rec swatch getVar\n" "X-POFile-SpellExtra: valorPredefinido vec STDOUT sprintf man Mín Máx Int\n" "X-POFile-SpellExtra: Anim tif tx jpg Pos Val Interp ptx\n" "X-Qt-Contexts: true\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs(float x)\n" "valor absoluto de 'x'" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" "float deg(float angulo)\n" "radianos para graus" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" "float rad(float angulo)\n" "graus para radianos" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" "float cosd(float angulo)\n" "Coseno em graus" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" "float sind(float angulo)\n" "seno em graus" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" "float tand(float angulo)\n" "tangente em graus" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" "float acosd(float valor)\n" "arco-coseno em graus" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" "float asind(float valor)\n" "arco-seno em graus" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" "float atand(float valor)\n" "arco-tangente em graus" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" "float atan2d(float y,float x)\n" "arco-tangente em graus de y/x entre -180 e 180" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" "float cos(float angulo)\n" "coseno em radianos" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" "float sin(float angulo)\n" "seno em radianos" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" "float tan(float angulo)\n" "tangente em radianos" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" "float acos(float valor)\n" "arco-coseno em radianos" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" "float asin(float valor)\n" "arco-seno em radianos" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" "float atan(float valor)\n" "arco-tangente em radianos" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" "float atan2(float valor)\n" "arco-tangente em radianos do y/x entre -PI e PI" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" "float cosh(float angulo)\n" "coseno hiperbólico em radianos" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" "float sinh(float angulo)\n" "seno hiperbólico em radianos" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" "float tanh(float angulo)\n" "tangente hiperbólica em radianos" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" "float acosh(float valor)\n" "arco-coseno hiperbólico em radianos" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" "float asinh(float valor)\n" "arco-seno hiperbólico em radianos" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" "float atanh(float valor)\n" "arco-tangente hiperbólica em radianos" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" "float clamp(float x, float inf, float sup)\n" "restringe o 'x' ao intervalo [inf,sup]" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" "float round(float x)\n" "inteiro mais próximo de 'x'" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" "float max(float a, float b)\n" "o maior dos valores 'a' ou 'b'" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" "float min(float a, float b)\n" "o menor dos valores 'a' ou 'b'" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" "float trunc(float a)\n" "inteiro mais próximo em direcção a zero" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" "float floor(float a)\n" "inteiro mais próximo por defeito" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" "float ceil(float a)\n" "inteiro mais próximo por excesso" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" "float invert(float a)\n" "Definido como 1-x" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" "float cbrt(float x)\n" "raiz cúbica" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" "float sqrt(float x)\n" "raiz quadrada" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" "float exp(float x)\n" "E elevado ao expoente 'x'" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" "float pow(float x, float y)\n" "x elevado à potência de 'y', também conhecido por ^" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" "float log(float x)\n" "Logaritmo natural" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" "float log10(float x)\n" "Logaritmo de base 10" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" "float fmod(float x,float y)\n" "resto do x/y (também disponível como o operador %)" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "float turbulence(vector v,int oitavas=6,float lacunas=2,float ganho=.5)\n" "É retirado o valor absoluto de cada termo do ruído. Isto gera uma aparência " "mais ondulada" #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "color cturbulence(vector v,int oitavas=6,float lacunas=2,float ganho=.5)\n" "É retirado o valor absoluto de cada termo do ruído. Isto gera uma aparência " "mais ondulada" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "vector vturbulence(vector v,int oitavas=6,float lacunas=2,float ganho=.5)\n" "É retirado o valor absoluto de cada termo do ruído. Isto gera uma aparência " "mais ondulada" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" "float compress(float x, float inf, float sup)\n" "Associa o 'x' entre [0,1] a [inf,sup]" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" "float expand(float x, float inf, float sup)\n" "Associa o 'x' entre [inf,sup] a [0,1]" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" "float fit(float x, float a1, float b1, float a2, float b2)\n" "Associa linearmente o 'x' entre [a1,b1] a [a2,b2]" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" "float gamma(float x, float g)\n" "Correcção do 'gama' do 'x' com o factor 'g'" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" "float bias(float x, float g)\n" "Variação do 'gama', onde os valores inferiores a 0.5 puxam a curva para " "baixo\n" "enquanto os superiores a 0.5 puxam a curva para cima\n" "pow(x,log(b)/log(0.5))" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" "float contrast(float x, float c)\n" "Ajusta o contraste.  Para um 'c' de 0 a 0.5, o contraste é diminuído." "  Para o 'c' > 0.5, o contraste é aumentado." #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" "float boxstep(float x, float a)\n" " se o x < a então 0, caso contrário 1" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" "float linearstep(float x, float a, float b)\n" " se x < a então 0, se x > b então 1,\n" "sendo que o 'x' transita linearmente quando a < x < b " #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" "float smoothstep(float x,float a,float b)\n" " se x < a então 0, se x > b então 1,\n" "sendo que o 'x' transita suavemente (de forma cúbica) quando a < x < b" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" "float gaussstep(float x,float a,float b)\n" " se x < a então 0, se x > b então 1,\n" "sendo que o 'x' transita suavemente (de forma exponencial) quando a < x " "< b" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" "remap(float x, float origem, float intervalo, float corte, float interp)\n" "Função de associação genérica.\n" "Quando o 'x' está dentro de +/- intervalo da origem, o resultado é " "um.\n" "O resultado passa a zero para além desse intervalo com uma distância de " "corte.\n" "A forma de corte é controlada pelo interp. Poderá usar\n" "valores numéricos ou constantes com nome:\n" "    int linear = 0\n" "    int suave = 1\n" "    int gaussiano = 2\n" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" "mix(float a,float b,float alfa)\n" "Mistura do 'a' com o 'b' de acordo com o alfa." #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" "color hsi(color x, float h, float s, float i, float mapa=1)\n" "A função 'hsi' desvia a matiz em 'h' (em graus) e ajusta a escala\n" "da saturação e intensidade em 's' e 'i' respectivamente. \n" "Poderá ser indicado um 'mapa' que irá controlar o desvio - o desvio\n" "completo irá acontecer quando o mapa for igual a 1 e não ocorrerá\n" "nenhum desvio quando o mapa for zero. O desvio será ajustado à escala\n" "para os valores entre zero e um." #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" "color midhsi(color x, float h, float s, float i, float mapa, float corte=1, " "int interp=0)\n" "A função 'midhsi0 é parecida com a função 'hsi', exceptuando o facto\n" "que o 'mapa' de controlo está centrado em torno do ponto médio (valor 0.5)\n" "e poderá ajustar a escala do desvio em ambas as direcções." #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color rgbtohsl(color rgb)\n" "Conversão do espaço de cores RGB para HSL.\n" "O HSL corresponde a Matiz, Saturação e Luminosidade (todos no intervalo " "[0..1])\n" "Estas funções também foram estendidas para suportar os valores de RGB e HSL\n" "fora do intervalo [0..1] de forma razoável. Para qualquer valor\n" "de RGB ou HSL (excepto os valores negativos), a conversão está\n" "bem-definida e é reversível." #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color hsltorgb(color hsl)\n" "Conversão do espaço de cores HSL para RGB.\n" "O HSL corresponde a Matiz, Saturação e Luminosidade (todos no intervalo " "[0..1])\n" "Estas funções também foram estendidas para suportar os valores de RGB e HSL\n" "fora do intervalo [0..1] de forma razoável. Para qualquer valor\n" "de RGB ou HSL (excepto os valores negativos), a conversão está\n" "bem-definida e é reversível." #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" "color saturate(color val, float quant)\n" "Ajusta a escala de saturação da cor em 'quant'.\n" "A escala da cor é ajustada em torno do valor de luminância do rec709,\n" "sendo que os valores negativos são convertidos em zero.\n" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" "float rand ( [float min, float max], [float base] )\n" "Número aleatório entre [min, max] (ou [0, 1] se não forem indicados).\n" "Se for indicado um valor de 'base', será usado para além dos valores de base " "internos e pode ser usado para criar vários geradores distintos." #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" "float hash(float base1,[float base2, ...])\n" "Como o 'rand', mas sem valores de base internos. Poderá indicar\n" "qualquer número de valores de base e o resultado será uma função\n" "aleatória com base em todos os valores de base." #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float p )\n" "Ruído de Perlin original no local (interpolação C2)" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" "float snoise ( vector v)\n" "ruído com sinal no intervalo -1 a 1, formado com o ruído de Perlin original " "na localização (interpolação C2)" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "vector vnoise ( vector v)\n" "ruído vectorial, formado com o ruído de Perlin original na localização " "(interpolação C2)" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise ( vector v)\n" "ruído de cor, formado com o ruído de Perlin original na localização " "(interpolação C2)" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" "float snoise4 ( vector v, float t)\n" "ruído 4D com sinal no intervalo -1 a 1, formado com o ruído de Perlin " "original na localização (interpolação C2)" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" "vector vnoise4 ( vector v, float t)\n" "ruído vectorial 4D com sinal no intervalo -1 a 1, formado com o ruído de " "Perlin original na localização (interpolação C2)" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise4 ( vector v, float t)\n" "ruído de cor 4D com sinal no intervalo -1 a 1, formado com o ruído de Perlin " "original na localização (interpolação C2)" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" "float fbm(vector v,int oitavas=6,float lacunas=2,float ganho=.5)\n" "O 'fbm (Fractal Brownian Motion - Movimento Fractal de Brown) é\n" "uma função de ruído multi-frequências. A frequência de base é igual\n" "à da função \"noise\". O número total de frequências é controlado\n" "pelas 'oitavas'. As 'lacunas' são o intervalo entre as frequências\n" "- um valor de 2 significa que cada oitava é duas vezes a frequência\n" "anterior. O 'ganho' controla qual o ajuste da escala de cada\n" "frequência face à frequência anterior." #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "vector vfbm(vector v,int oitavas=6,float lacunas=2,float ganho=.5)" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" "float fbm4(vector v,int oitavas=6,float lacunas=2,float ganho=.5)\n" "O 'fbm (Fractal Brownian Motion - Movimento Fractal de Brown) é\n" "uma função de ruído multi-frequências. A frequência de base é igual\n" "à da função \"noise\". O número total de frequências é controlado\n" "pelas 'oitavas'. As 'lacunas' são o intervalo entre as frequências\n" "- um valor de 2 significa que cada oitava é duas vezes a frequência\n" "anterior. O 'ganho' controla qual o ajuste da escala de cada\n" "frequência face à frequência anterior." #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "vector vfbm4(vector v,int oitavas=6,float lacunas=2,float ganho=.5)" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "color cfbm(vector v,int oitavas=6,float lacunas=2,float ganho=.5)" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "color cfbm4(vector v,int oitavas=6,float lacunas=2,float ganho=.5)" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "float cellnoise(vector v)\n" "O 'cellnoise' gera um campo de cubos coloridos constantes com base\n" "na localização inteira.\n" "Isto é igual à função 'cellnoise' do PRMan." #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "color cellnoise(vector v)\n" "O 'cellnoise' gera um campo de cubos coloridos constantes com base\n" "na localização inteira.\n" "Isto é igual à função 'cellnoise' do PRMan." #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" "float pnoise ( vector v, vector periodo )\n" "ruído periódico" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" "float voronoi( vector v, int tipo=1, float desvio=0.5, float fbmEscala=0, " "int fbmOitavas=4, float fbmLacunas=2, float fbmGanho=0.5)\n" "O 'voronoi' é um padrão de ruído celular. É uma variante com desvios do " "'cellnoise'." #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" "color cvoronoi( vector v, int tipo=1, float desvio=0.5, float fbmEscala=0, " "int fbmOitavas=4, float fbmLacunas=2, float fbmGanho=0.5)\n" "Devolve uma cor num padrão celular. É uma variante com desvios do " "'cellnoise'." #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" "color pvoronoi( vector v, int tipo=1, float desvio=0.5, float fbmEscala=0, " "int fbmOitavas=4, float fbmLacunas=2, float fbmGanho=0.5)\n" "Devolve o centro da célula de Voronoi." #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" "float dist(vector a, vector b)\n" "distância entre dois pontos" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" "float length(vector v)\n" "comprimento do vector" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" "float hypot(vector v)\n" "comprimento do vector 2d [x,y]" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" "float dot(vector a, vector b)\n" "produto interno vectorial" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" "vector norm(vector v)\n" "O vector escalado ao comprimento da unidade" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" "vector cross (vector a, vector b)\n" "produtor vectorial externo" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" "float angle(vector a,vector b)\n" "ângulo entre dois vectoers (em radianos)" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" "vector angle(vector a,vector b)\n" "vector normalizado ortogonal ao 'a' e 'b' escalados ao tamanho da unidade" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" "vector rotate(vector v, vector eixo, float angulo)\n" "roda em 'angulo' radianos o 'v' em torno do eixo" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" "vector up(vector v, vector cima)\n" "Roda o 'v' de forma que o eixo dos Y aponte para a direcção 'cima indicada" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" "int cycle(int indice, int intervaloInf, int intervaloSup)\n" "Circula pelos valores entre 'intervaloInf' e 'intervaloSup' com base no " "índice fornecido.\n" "Esta é uma função 'mod' do deslocamento. O resultado é calculado como " "``intervaloInf + valor % (intervaloSup-intervaloInf+1)``." #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" "int pick(float indice, int intervaloInf, int intervaloSup, [float " "pesos, ...] )\n" "Escolhe os valores aleatoriamente entre 'intervaloInf' e 'intervaloSup'\n" "com base no índice fornecido (que é disperso de forma automática).\n" " Os valores serão distribuídos de acordo com os pesos indicados.\n" " Todos os pesos não indicados assumem-se como sendo iguais a 1.0." #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" "color swatch(float indice, color opcao0, color opcao1, color opcao2, [...])\n" "Escolha uma das opções de cores indicadas com base no índice (assume-se que " "está no intervalo de [0..1])." #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" "color choose(float indice, color opcao0, color opcao1, color opcao2, [...])\n" "Escolha uma das opções indicadas com base no índice (assume-se que está no " "intervalo de [0..1])." #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" "color wchoose(float indice, float opcao0, float peso0, float opcao1, float " "peso2, [...])\n" "Escolhe uma das opções fornecidas com base no índice (que se assume no " "intervalo [0..1]).\n" "Os valores serão distribuídos de acordo com os pesos indicados." #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Faz a interpolação de um conjunto de valores para o parâmetro indicado em " "que os valores 'y1', ..., 'yn' estão distribuídos de forma uniforme de [0..1]" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpola uma rampa em 1D definida pelos pontos de controlo em 'param'. Os " "pontos de controlo são indicados pelos grupos de três parâmetros\n" "pos_i, val_i e interp_i. Os códigos de interpolação são\n" "0 - nenhum, 1 - linear, 2 - suave, 3 - curva, \n" "4- monótono (curva não oscilante)" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "Interpola uma rampa de cores definida pelos pontos de controlo em 'param'. " "Os pontos de controlo são indicados pelos grupos de três parâmetros\n" "pos_i, val_i e interp_i. Os códigos de interpolação são\n" "0 - nenhum, 1 - linear, 2 - suave, 3 - curva, \n" "4- monótono (curva não oscilante)" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" "getVar(string nome,vector valorPredefinido)\n" "devolve o valor da variável 'nome', se existir, caso contrário devolve o " "'valorPredefinido'" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" "printf(string formato,[vec0, vec1, ...])\n" "Imprime um texto no STDOUT, O parâmetro de formato permitido é \"%v\" e \"%f" "\".\n" "O parâmetro devolvido é vazio, mas é necessário estar atribuído a uma " "variável." #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" "sprintf(string formato, [número|texto, número|texto, ...])\n" "Devolve um texto formatado a partir dos valores indicados. Veja os detalhes " "do formato em 'man sprintf'." #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "Adicionar uma nova variável" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "É esperado uma 'string' ou um 'float[d]'" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "É esperado um 'float[d]'" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "É esperado um 'float[%1]'" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "Inconsistência de tipos, primeiro: '%1'; segundo: '%2'" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "É esperado um 'float' ou 'float[3]'" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "É esperado um '%1' como argumento, mas obteve-se um '%2'" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "Número de argumentos inválido, deverá ser de 1 a 7" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "Número de argumentos inválido, deverá um múltiplo de 3 mais 1" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "Número de argumentos inválido, deverá ser 1 ou mais" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "O primeiro argumento deverá ser de texto" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "O texto de formato está incompleto" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "Não existe a variável com o nome '%1'" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "A função '%1' não tem nenhuma definição" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "A operação de atribuição tem o tipo incorrecto '%1'" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "Os tipos de condicionais não são compatíveis" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "A variável '%1' está definida de forma inconsistente nas condicionais" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "Tem argumentos a menos na função '%1'" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "Tem argumentos a mais na função '%1'" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "" "A expressão gerou o tipo '%1', que é incompatível com o tipo desejado '%2'" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "Erro de sintaxe perto de '%1'" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "Chegou-se inesperadamente ao fim da expressão perto de '%1'" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "Chegou-se inesperadamente ao fim do texto de formato" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "O texto do formato é inválido, só é permitido o %v ou o %f" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "Número de argumentos inválido para o texto do formato" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "Erro desconhecido (mensagem = %1)" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "Variável" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "Consulta" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "Curva" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "Curva de Cor" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "Predefinição" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "Mín" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "Máx" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "Int" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "Fraccionário" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Vector" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Cor" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "Arco-Ãris" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "Tons de Cinzento" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Cores" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "Amostra" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "texto" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "ficheiro" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "pasta" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "Nome do Texto" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "Tipo do Texto" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "Texto por Omissão" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "Texto" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "Gravar a Expressão" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "Não foi possível aceder ao ficheiro '%1' para escrita" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "Erro" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "" "Não foi possível aceder ao ficheiro '%1' para escrita. É apenas para leitura?" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "Apagar o Ponto" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "Posição Seleccionada:" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "Cor Seleccionada:" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "Nenhuma" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Linear" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "Suave" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Curva" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "Curva-M" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "&Expandir..." #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "Apagar a Amostra" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "Cancelar" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "&Adicionar..." #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "Local" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "Escolha por favor um ficheiro" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "Imagens (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "Apagar o Ponto" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "Posição Seleccionada:" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "Valor Seleccionado:" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "Nenhum" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "Linear" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "Suave" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Curva" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "Curva-M" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "&Expandir..." #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "Editor da Expressão" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "Abrir" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "Favoritos" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "Ajuda de Contexto" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" kseexpr-4.0.4.0/po/PaxHeaders/pt_BR0000644000000000000000000000003614156104432013766 xustar0030 mtime=1639483674.720183697 kseexpr-4.0.4.0/po/pt_BR/0000755000000000000240000000000014156104432014766 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/pt_BR/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104432016477 xustar0030 mtime=1639483674.715978277 kseexpr-4.0.4.0/po/pt_BR/seexpr2_qt.po0000644000000000000240000014122714156104432017431 0ustar00rootroot00000000000000# Luiz Fernando Ranghetti , 2020, 2021. # Barbara , 2020. msgid "" msgstr "" "Project-Id-Version: \n" "PO-Revision-Date: 2021-07-02 15:31-0300\n" "Last-Translator: Luiz Fernando Ranghetti \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Qt-Contexts: true\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Lokalize 20.04.2\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs(float x)\n" "valor absoluto de x" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" "float deg(float angle)\n" "radianos para graus" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" "float rad(float angle)\n" "graus para radianos" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" "float cosd(float angle)\n" "cosseno em graus" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" "float sind(float angle)\n" "seno em graus" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" "float tand(float angle)\n" "tangente em graus" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" "float acosd(float value)\n" "arco cosseno em graus" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" "float asind(float value)\n" "arco seno em graus" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" "float atand(float value)\n" "arco tangente em graus" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" "float atan2d(float y,float x)\n" "arco tangente em graus de y/x entre -180 e 180" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" "float cos(float angle)\n" "cosseno em radianos" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" "float sin(float angle)\n" "seno em radianos" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" "float tan(float angle)\n" "tangente em radianos" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" "float acos(float value)\n" "arco cosseno em radianos" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" "float asin(float value)\n" "arco seno em radianos" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" "float atan(float value)\n" "arco tangente em radianos" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" "float atan2(float y,float x)\n" "arco tangente em radianos de y/x entre -PI e PI" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" "float cosh(float angle)\n" "cosseno hiperbólico em radianos" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" "float sinh(float angle)\n" "seno hiperbólico em radianos" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" "float tanh(float angle)\n" "tangente hiperbólica em radianos" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" "float acosh(float value)\n" "arco cosseno hiperbólico em radianos" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" "float asinh(float value)\n" "arco seno hiperbólico em radianos" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" "float atanh(float value)\n" "arco tangente hiperbólico em radianos" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" "float clamp(float x,float lo,float hi)\n" "restringir x ao intervalo [lo, hi]" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" "float round(float x)\n" "o número inteiro mais próximo a x" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" "float max(float a,float b)\n" "maior de a e b" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" "float min(float a,float b)\n" "menor de a e b" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" "float trunc(float a)\n" "o número inteiro mais próximo de zero" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" "float floor(float a)\n" "próximo inteiro inferior" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" "float ceil(float a)\n" "próximo inteiro superior" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" "float invert(float a)\n" "Definido como 1-x" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" "float cbrt(float x)\n" "raiz cúbica" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" "float sqrt(float x)\n" "raiz quadrada" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" "float exp(float x)\n" "e elevado à potência de x" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" "float pow(float x, float y)\n" "x elevado à potência de y, também disponível como ^" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" "float log(float x)\n" "Logaritmo natural" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" "float log10(float x)\n" "Logaritmo de base 10" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" "float fmod(float x,float y)\n" "restante de x/y (também disponível como operador % )" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "O valor absoluto de cada termo de ruído é considerado. Isso dá uma aparência " "ondulada" #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "O valor absoluto de cada termo de ruído é considerado. Isso dá uma aparência " "ondulada" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "O valor absoluto de cada termo de ruído é considerado. Isso dá uma aparência " "ondulada" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" "float compress(float x,float lo,float hi)\n" "Remapeia x em [0,1] para [lo, hi]" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" "float expand(float x,float lo,float hi)\n" "Remapeia x em [lo, hi] para [0,1]" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Remapeia linearmente x em [a1,b1] para [a2,b2]" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" "float gamma(float x, float g)\n" "Correção gama de x com fator gama g" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" "float bias(float x, float g)\n" "Variação de gama onde valores menores que 0,5 puxam a curva\n" "para baixo e valores maiores que 0,5 puxam a curva para cima\n" "pow(x,log(b)/log(0.5))" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" "float contrast(float x, float c)\n" "Ajusta o contraste.  Para c de 0 a 0.5, o contraste é diminuído.  " "Para c > 0.5, o contraste é aumentado." #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" "float boxstep(float x,float a)\n" "se x < a então 0, caso contrário 1" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" "float linearstep(float x,float a,float b)\n" "se x < a então 0, se x > b então 1 e\n" "x transita linearmente quando a < x < b" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" "float smoothstep(float x,float a,float b)\n" "se x < a então 0, se x > b então 1 e\n" "x transita suavemente (cúbico) quando a < x < b" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" "float gasussstep(float x,float a,float b)\n" "se x < a então 0, se x > b então 1 e\n" "x transita suavemente (exponencialmente) quando a < x < b" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" "remap(float x, float source, float range, float falloff, float interp)\n" "Função de remapeamento geral.\n" "Quando x está dentro de +/- range de source, o resultado é 1.\n" "O resultado cai para zero na distância falloff além do intervalo " "range.\n" "A forma de queda é controlada por interp. Valores numéricos\n" "ou constantes nomeadas podem ser usadas:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" "mix(float a,float b,float alpha)\n" "Mistura de a e b de acordo com alfa." #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" "color hsi(color x, float h, float s, float i, float map=1)\n" "A função hsi muda a matiz em h\n" "(em graus) e dimensiona a saturação e a intensidade por s e i\n" "respectivamente.  Um mapa pode ser fornecido para controlar a mudança\n" "- a mudança completa acontecerá quando o mapa for um e nenhuma mudança\n" "acontecerá quando o mapa é zero.  A mudança será reduzida para\n" "valores entre zero e um." #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "A função midhsi é como a função hsi, exceto que\n" "o mapa de controle é centralizado em torno do ponto médio (valor de 0.5)\n" "e pode escalar a mudança em ambas as direções." #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color rgbtohsl(color rgb)\n" "Conversão de espaço de cores RGB em HSL.\n" "HSL significa Matiz, Saturação, Luminosidade (todos no intervalo [0..1])\n" "Essas funções também foram estendidas para oferecer suporte aos valores\n" "RGB e HSL fora do intervalo [0..1] de uma forma razoável.  Para " "qualquer\n" "valor RGB ou HSL (exceto para valores s negativos), a conversão é bem\n" "definida e reversível." #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color hsltorgb(color hsl)\n" "Conversão de espaço de cor HSL em RGB. \n" "HSL significa Matiz, Saturação, Luminosidade (todos no intervalo [0..1])\n" "Essas funções também foram estendidas para oferecer suporte aos valores\n" "RGB e HSL fora do intervalo [0..1] de uma forma razoável.   Para " "qualquer\n" "valor RGB ou HSL (exceto para valores s negativos), a conversão é bem\n" "definida e reversível." #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" "color saturate(color val, float amt)\n" "Escala de saturação de cor por quantidade.\n" "A cor é dimensionada em torno do valor de luminância rec709, \n" "e os resultados negativos são fixados em zero. \n" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" "float rand ( [float min, float max], [float seed] )\n" "Número aleatório entre [mín, máx] (ou [0, 1] se não especificado).\n" "Se uma semente (seed) for fornecida, ela será usada adicionalmente às " "sementes internas e pode ser usado para criar múltiplos geradores distintos." #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" "float hash(float seed1,[float seed2, ...])\n" "Como rand, mas sem seeds (sementes) internas. Qualquer número de\n" "sementes pode ser fornecido e o resultado será uma função aleatória\n" "baseada em todas as sementes." #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" "float noise (vector v)\n" "float noise (float x, float y)\n" "float noise (float x, float y, float z)\n" "float noise (float x, float y, float z, float w)\n" "Ruído perlin original no local (interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" "float snoise (vector v)\n" "ruído sinalizado com faixa -1 a 1 formado com ruído perlin original no " "local(Interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "vector vnoise (vector v)\n" "ruído vetorial formado com ruído perlin original no local (interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise (vector v)\n" "ruído de cor formado com ruído perlin original no local (interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" "float snoise4 (vector v,float t)\n" "ruído sinalizado 4D com faixa -1 a 1 formado com ruído perlin original " "nalocalização (C2 interpolante)" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" "vector vnoise4 ( vector v,float t)\n" "ruído de vetor 4D formado com ruído perlin original no local (interpolante " "C2)" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise4 ( vector v,float t)\n" "ruído de cor 4D formado com ruído perlin original no local (interpolante C2)" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) é uma função de ruído multifrequêncial.\n" "A frequência base é igual à função \"noise\". O número total de frequências " "é controlado por octaves. A lacunarity é o espaçamento entre " "as frequências - um valor de 2 significa que cada oitava é duas vezes a " "frequência anterior. O gain controla quanto cada frequência é " "escalada em relação à frequência anterior." #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) é uma função de ruído multifrequencial. \n" "A frequência base é igual à função \"ruído\". O número total \n" "de frequências é controlado por oitavas. A lacunaridade é o \n" "espaçamento entre as frequências - um valor de 2 significa que cada oitava\n" "é duas vezes a frequência anterior. O ganho controla quanto cada \n" "frequência é escalada em relação à frequência anterior." #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "float cellnoise(vector v)\n" "cellnoise gera um campo de cubos coloridos constantes com base no número\n" "inteiro da localização. Este é o mesmo que a função cellnoise do prman." #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "color cellnoise(vector v)\n" "cellnoise gera um campo de cubos coloridos constantes com base no número\n" "inteiro da localização. Este é o mesmo que a função cellnoise do prman." #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" "float pnoise ( vector v, vector period )\n" "ruído periódico" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi é um padrão de ruído celular. É uma variante instável do cellnoise." #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "retorna a cor no padrão celular. É uma variante instável do ruído da célula." #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "retorna o centro da célula de voronoi." #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" "float dist(vector a, vector b)\n" "distância entre dois pontos" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" "float length(vector v)\n" "comprimento do vetor" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" "float hypot(vector v)\n" "comprimento do vetor 2d [x,y]" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" "float dot(vector a,vector b)\n" "produto de ponto vetorial" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" "vector norm(vector v)\n" "vetor dimensionado para unidade de comprimento" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" "vector cross(vector a,vector b)\n" "produto vetorial de vetor" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" "float angle(vector a,vector b)\n" "ângulo entre dois vetores (em radianos)" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" "vector angle(vector a,vector b)\n" "vetor ortogonal normalizado entre a e b dimensionado para comprimento " "unitário" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" "vector rotate(vector v,vector axis,float angle)\n" "gira v em torno do eixo por determinado ângulo (em radianos)" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" "vector up(vector P,vector upvec)\n" "gira v de modo que o eixo Y aponta na direção dada" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" "int cycle(int index, int loRange, int hiRange )\n" "Percorre os valores entre loRange e hiRange baseado no índice fornecido. \n" "Esta é uma função \"mod\" de deslocamento. O resultado é computado como " "``loRange + valor % (hiRange-loRange+1)``." #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Escolhe valores aleatoriamente entre loRange e hiRange com base no índice\n" "fornecido (que é automaticamente marcado).   Os valores serão " "distribuídos\n" "de acordo com aos pesos fornecidos.   Quaisquer pesos não fornecidos\n" "são assumidos como ser 1.0." #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Escolhe uma das opções de cores fornecidas com base no índice (assumido\n" "como no intervalo [0..1])." #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" "float choose(float index,float choice1, float choice2, [...])\n" "Escolhe uma das opções fornecidas com base no índice (presume-se que esteja " "no intervalo [0, 1])." #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Escolhe uma das opções fornecidas com base no índice (presume-se que esteja " "no intervalo [0..1]). \n" "Os valores serão distribuídos de acordo com os pesos fornecidos." #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpola um conjunto de valores para o parâmetro especificado onde y1, ..., " "yn são \n" "distribuídos uniformemente de [0..1]" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpola uma rampa 1D definida por pontos de controle em 'param'. Pontos " "de\n" " controle são especificados por triplos de parâmetros pos_i, val_i e " "interp_i. Os\n" "códigos de interpolação são\n" "0 - nenhum, 1 - linear, 2 - suave, 3 - spline, \n" "4 - monótono (spline não oscilante)" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpola a rampa de cores fornecida pelos pontos de controle em 'param'. " "Pontos de controle são especificados \n" "por triplos de parâmetros pos_i, val_i e interp_i. Os códigos de " "interpolação são \n" "0 - nenhum, 1 - linear, 2 - suave, 3 - spline, \n" "4 - monótono (spline não oscilante)" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" "getVar(string varName,vector defaultValue)\n" "valor de retorno de varName se a variável existir; caso contrário, retorne " "valor padrão" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" "float printf(string format,[vec0, vec1, ...])\n" "Imprime um texto na STDOUT, os parâmetros de formato permitidos são \"%v\" e " "\"%f\".\n" "O retorno do parâmetro é vazio, mas deve ser atribuído a uma variável." #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" "sprintf(string format, [double|string, double|string, ...])\n" "Retorna um texto formatado a partir dos valores fornecidos. Veja 'man " "sprintf' para detalhes do formato." #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "Adicionar nova variável" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "Texto ou ponto flutuante esperado [d]" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "Ponto flutuante esperado [d]" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "Ponto flutuante esperado [%1]" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "Digite incompatibilidade, primeiro: '%1'; segundo: '%2'" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "Ponto flutuante ou flutuação esperada [3]" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "Esperado '%1' para o argumento, obtido '%2'" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "Número errado de argumentos, deve ser de 1 a 7" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "Número errado de argumentos, deve ser múltiplo de 3 mais 1" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "Número errado de argumentos, deve ser 1 ou mais" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "O primeiro argumento deve ser um texto" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "Especificador de formato incompleto" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "Nenhuma variável chamada '%1'" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "A função '%1' não tem definição" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "A operação de atribuição tem o tipo incorreto '%1'" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "Tipos de condicionais não são compatíveis" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "Variável '%1' definida nas condicionais de forma inconsistente" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "Poucos argumentos para a função '%1'" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "Muitos argumentos para a função '%1'" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "Expressão gerada tipo '%1', incompatível com o tipo desejado '%2'" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "Erro de sintaxe próximo a '%1'" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "Fim de expressão inesperada próximo a '%1'" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "Fim inesperado do texto de formato" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "Texto de formato inválido, apenas %v ou %f são permitidos." #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "Número errado de argumentos do texto de formato" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "Erro desconhecido (mensagem = %1)" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "Variável" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "Procurar" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "Curva" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "Curva de cor" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "Padrão" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "Mín" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "Máx" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "Int" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "Ponto flutuante" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Vetor" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Cor" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "Arco-íris" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "Tons de cinza" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Cores" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "Amostra" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "texto" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "arquivo" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "pasta" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "Nome do texto" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "Tipo de texto" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "Texto padrão" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "Texto" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "Salvar expressão" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "Não foi possível abrir o arquivo %1 para gravação" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "Erro" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "Não foi possível abrir o arquivo %1 para gravação. É somente leitura?" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "Excluir ponto" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "Posição selecionada:" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "Cor selecionada:" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "Nenhuma" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Linear" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "Suave" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "&Expandir..." #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "Excluir amostra" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "Cancelar" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "&Adicionar..." #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "Local" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "Escolha um arquivo" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "Imagens (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "Excluir ponto" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "Posição selecionada:" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "Valor selecionado:" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "Nenhum" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "Linear" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "Suave" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "&Expandir..." #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "Editor de expressão" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "Abrir" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "Favoritos" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "Ajuda flutuante" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" #~ msgctxt "ExprAddDialog|" #~ msgid "Link" #~ msgstr "Link" #~ msgctxt "ExprAddDialog|" #~ msgid "AnimCurve" #~ msgstr "Curva de animação" #~ msgctxt "ExprAddDialog|" #~ msgid "Deep Water" #~ msgstr "Ãguas profundas" #~ msgctxt "ExprDialog|" #~ msgid "Preview / Library" #~ msgstr "Pré-visualizar / biblioteca" #~ msgctxt "ExprDialog|" #~ msgid "Preview" #~ msgstr "Pré-visualizar" #~ msgctxt "ExprDialog|" #~ msgid "Save" #~ msgstr "Salvar" #~ msgctxt "ExprDialog|" #~ msgid "Save As" #~ msgstr "Salvar como" #~ msgctxt "ExprDialog|" #~ msgid "Save Local" #~ msgstr "Salvar local" #~ msgctxt "ExprDialog|" #~ msgid "Clear" #~ msgstr "Limpar" #~ msgctxt "ExprDialog|" #~ msgid "Apply" #~ msgstr "Aplicar" #~ msgctxt "ExprDialog|" #~ msgid "Accept" #~ msgstr "Aceitar" #~ msgctxt "ExprDialog|" #~ msgid "Cancel" #~ msgstr "Cancelar" #~ msgctxt "ExprDialog|" #~ msgid "Your expression had possible errors." #~ msgstr "Sua expressão tinha possíveis erros." #~ msgctxt "ExprDialog|" #~ msgid "Do you want to accept your expression anyways?" #~ msgstr "Você quer aceitar sua expressão de qualquer maneira?" #~ msgctxt "ExprDialog|" #~ msgid "Help" #~ msgstr "Ajuda" #~ msgctxt "ExprDialog|" #~ msgid "Back" #~ msgstr "Anterior" #~ msgctxt "ExprDialog|" #~ msgid "Forward" #~ msgstr "Seguinte" #~ msgctxt "ExprDialog|" #~ msgid "Find" #~ msgstr "Encontrar" #~ msgctxt "ExprDialog|" #~ msgid "Find Next" #~ msgstr "Encontrar próxima" #~ msgctxt "ExprDialog|" #~ msgid "Find Prev" #~ msgstr "Encontrar anterior" #~ msgctxt "ExprDialog|" #~ msgid "Variables not supported in preview (assumed zero):
" #~ msgstr "" #~ "Variáveis não suportadas na visualização (assumido zero):
" #~ msgctxt "ExprDialog|" #~ msgid "Functions not supported in preview (assumed zero):
" #~ msgstr "Funções não suportadas na visualização (assumido zero):
" #~ msgctxt "ExprGrapherWidget|" #~ msgid "Width" #~ msgstr "Largura" #~ msgctxt "ExprGrapherWidget|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "
%1" #~ msgstr "
%1" #~ msgctxt "ExprCurve|" #~ msgid "Selected Position: " #~ msgstr "Posição selecionada: " kseexpr-4.0.4.0/po/PaxHeaders/ru0000644000000000000000000000003614156104437013413 xustar0030 mtime=1639483679.357710249 kseexpr-4.0.4.0/po/ru/0000755000000000000240000000000014156104437014413 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/ru/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104437016124 xustar0030 mtime=1639483679.351698361 kseexpr-4.0.4.0/po/ru/seexpr2_qt.po0000644000000000000240000007631214156104437017060 0ustar00rootroot00000000000000# Alexander Potashev , 2020. msgid "" msgstr "" "Project-Id-Version: \n" "PO-Revision-Date: 2020-09-06 15:55+0200\n" "Last-Translator: Alexander Potashev \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Qt-Contexts: true\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 19.12.2\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "Ошибка ÑинтакÑиÑа вблизи «'%1»" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "" #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "" #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "" #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "" kseexpr-4.0.4.0/po/PaxHeaders/sk0000644000000000000000000000003614156104447013403 xustar0030 mtime=1639483687.872396948 kseexpr-4.0.4.0/po/sk/0000755000000000000240000000000014156104447014403 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/sk/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104447016114 xustar0030 mtime=1639483687.868340613 kseexpr-4.0.4.0/po/sk/seexpr2_qt.po0000644000000000000240000010263114156104447017042 0ustar00rootroot00000000000000# translation of seexpr2_qt.po to Slovak # Roman Paholík , 2020. msgid "" msgstr "" "Project-Id-Version: seexpr2_qt\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2020-08-29 02:26+0200\n" "PO-Revision-Date: 2020-11-14 19:52+0100\n" "Last-Translator: Roman Paholík \n" "Language-Team: Slovak \n" "Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 20.08.2\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Qt-Contexts: true\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs(float x)\n" "absolútna hodnota x" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "PridaÅ¥ novú premennú" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "" #: KSeExprUI/ErrorMessages.cpp:47 #, fuzzy, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "Priveľa argumentov pre funkciu." #: KSeExprUI/ErrorMessages.cpp:49 #, fuzzy, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "Priveľa argumentov pre funkciu." #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "Premenná" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "Hľadanie" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 #, fuzzy msgctxt "ExprAddDialog|" msgid "$u" msgstr "%1 u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "Krivka" #: KSeExprUI/ExprAddDialog.cpp:53 #, fuzzy #| msgctxt "ExprAddDialog|" #| msgid "Curve" msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "Krivka" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 #, fuzzy msgctxt "ExprAddDialog|" msgid "Default" msgstr "Predvolené" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 #, fuzzy msgctxt "ExprAddDialog|" msgid "Min" msgstr "Min" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 #, fuzzy msgctxt "ExprAddDialog|" msgid "Max" msgstr "Max" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "Int" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "Reálne Äíslo" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Vektor" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Farba" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "Dúha" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Farby" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "" #: KSeExprUI/ExprAddDialog.cpp:152 #, fuzzy msgctxt "ExprAddDialog|" msgid "string" msgstr "reÅ¥azec" #: KSeExprUI/ExprAddDialog.cpp:153 #, fuzzy msgctxt "ExprAddDialog|" msgid "file" msgstr "&Súbor" #: KSeExprUI/ExprAddDialog.cpp:154 #, fuzzy msgctxt "ExprAddDialog|" msgid "directory" msgstr "Adresár" #: KSeExprUI/ExprAddDialog.cpp:158 #, fuzzy #| msgctxt "ExprAddDialog|" #| msgid "String" msgctxt "ExprAddDialog|" msgid "String Name" msgstr "ReÅ¥azec" #: KSeExprUI/ExprAddDialog.cpp:160 #, fuzzy #| msgctxt "ExprAddDialog|" #| msgid "String" msgctxt "ExprAddDialog|" msgid "String Type" msgstr "ReÅ¥azec" #: KSeExprUI/ExprAddDialog.cpp:162 #, fuzzy msgctxt "ExprAddDialog|" msgid "String Default" msgstr "Predvolené" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "ReÅ¥azec" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 #, fuzzy msgctxt "ExprBrowser|" msgid "*.se" msgstr "JV" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, fuzzy, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "Nepodarilo sa otvoriÅ¥ súbor pre zápis." #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "Chyba" #: KSeExprUI/ExprBrowser.cpp:449 #, fuzzy, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "Nepodarilo sa otvoriÅ¥ súbor pre zápis." #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "ZmazaÅ¥ bod" #: KSeExprUI/ExprColorCurve.cpp:397 #, fuzzy msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "Vybraná farba" #: KSeExprUI/ExprColorCurve.cpp:408 #, fuzzy msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "Vybraná farba" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprColorCurve.cpp:421 #, fuzzy msgctxt "ExprColorCurve|" msgid "None" msgstr "Žiadne" #: KSeExprUI/ExprColorCurve.cpp:422 #, fuzzy msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Lineárny" #: KSeExprUI/ExprColorCurve.cpp:423 #, fuzzy msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "Plynulý" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprColorCurve.cpp:425 #, fuzzy #| msgctxt "ExprColorCurve|" #| msgid "Spline" msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "Spline" #: KSeExprUI/ExprColorCurve.cpp:445 #, fuzzy msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "Rozvinúť" #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "" #: KSeExprUI/ExprColorSwatch.cpp:77 #, fuzzy #| msgctxt "CCurveScene|" #| msgid "Delete Point" msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "ZmazaÅ¥ bod" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "ZruÅ¡iÅ¥" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "&PridaÅ¥..." #: KSeExprUI/ExprCompletionModel.cpp:121 #, fuzzy msgctxt "ExprCompletionModel|" msgid "Local" msgstr "Lokálne" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "Prosím, vyberte súbor" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "" #: KSeExprUI/ExprControl.cpp:488 #, fuzzy msgctxt "CurveControl|" msgid "Val:" msgstr "val" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "" #: KSeExprUI/ExprControl.cpp:512 #, fuzzy msgctxt "CCurveControl|" msgid "Val:" msgstr "val" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "ZmazaÅ¥ bod" #: KSeExprUI/ExprCurve.cpp:298 #, fuzzy msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "Vybraná farba" #: KSeExprUI/ExprCurve.cpp:309 #, fuzzy msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "Vybraná farba" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "" #: KSeExprUI/ExprCurve.cpp:322 #, fuzzy msgctxt "ExprCurve|" msgid "None" msgstr "Žiadne" #: KSeExprUI/ExprCurve.cpp:323 #, fuzzy msgctxt "ExprCurve|" msgid "Linear" msgstr "Lineárny" #: KSeExprUI/ExprCurve.cpp:324 #, fuzzy msgctxt "ExprCurve|" msgid "Smooth" msgstr "Plynulý" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprCurve.cpp:326 #, fuzzy #| msgctxt "ExprCurve|" #| msgid "Spline" msgctxt "ExprCurve|" msgid "MSpline" msgstr "Spline" #: KSeExprUI/ExprCurve.cpp:347 #, fuzzy msgctxt "ExprCurve|" msgid "&Expand..." msgstr "Rozvinúť" #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "OtvoriÅ¥" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "Obľúbené" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "" #~ msgctxt "ExprAddDialog|" #~ msgid "Link" #~ msgstr "Odkaz" #, fuzzy #~ msgctxt "ExprDialog|" #~ msgid "Preview" #~ msgstr "Náhľad" #, fuzzy #~ msgctxt "ExprDialog|" #~ msgid "Save" #~ msgstr "UložiÅ¥" #, fuzzy #~ msgctxt "ExprDialog|" #~ msgid "Save As" #~ msgstr "UložiÅ¥ ako" #, fuzzy #~ msgctxt "ExprDialog|" #~ msgid "Clear" #~ msgstr "VyÄistiÅ¥" #, fuzzy #~ msgctxt "ExprDialog|" #~ msgid "Apply" #~ msgstr "PoužiÅ¥" #, fuzzy #~ msgctxt "ExprDialog|" #~ msgid "Accept" #~ msgstr "PrijaÅ¥" #~ msgctxt "ExprDialog|" #~ msgid "Cancel" #~ msgstr "ZruÅ¡iÅ¥" #, fuzzy #~ msgctxt "ExprDialog|" #~ msgid "Help" #~ msgstr "Pomocník" #, fuzzy #~ msgctxt "ExprDialog|" #~ msgid "Back" #~ msgstr "Späť" #, fuzzy #~ msgctxt "ExprDialog|" #~ msgid "Forward" #~ msgstr "Dopredu" #~ msgctxt "ExprDialog|" #~ msgid "Find" #~ msgstr "NájsÅ¥" #~ msgctxt "ExprDialog|" #~ msgid "Find Next" #~ msgstr "NájsÅ¥ nasledujúci" #~ msgctxt "ExprDialog|" #~ msgid "Find Prev" #~ msgstr "NájsÅ¥ predchádzajúci" #~ msgctxt "ExprGrapherWidget|" #~ msgid "Width" #~ msgstr "Šírka" kseexpr-4.0.4.0/po/PaxHeaders/sl0000644000000000000000000000003614156104453013401 xustar0030 mtime=1639483691.096458219 kseexpr-4.0.4.0/po/sl/0000755000000000000240000000000014156104453014401 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/sl/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104453016112 xustar0030 mtime=1639483691.092391882 kseexpr-4.0.4.0/po/sl/seexpr2_qt.po0000644000000000000240000013714714156104453017052 0ustar00rootroot00000000000000# Matjaž Jeran , 2020, 2021. msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: 2021-07-05 09:53+0200\n" "Last-Translator: Matjaž Jeran \n" "Language-Team: Slovenian \n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Qt-Contexts: true\n" "X-Generator: Lokalize 20.12.2\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100>=3 && n" "%100<=4 ? 2 : 3);\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs(float x)\n" "absolutna vrednost x" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" "float deg(float angle)\n" "radiani v stopinje" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" "float rad(float angle)\n" "stopinje v radiane" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" "float cosd(float angle)\n" "cosinus v stopinjah" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" "float sind(float angle)\n" "sinus v stopinjah" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" "float tand(float angle)\n" "tangens v stopinjah" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" "float acosd(float value)\n" "arcs cosinus v stopinjah" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" "float asind(float value)\n" "arcus sinus v stopinjah" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" "float atand(float value)\n" "arcus tangens v stopinjah" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" "float atan2d(float y,float x)\n" "arcus tangens v stopinjah y/x med -180 in 180" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" "float cos(float angle)\n" "cosinus v radianih" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" "float sin(float angle)\n" "sinus v radianih" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" "float tan(float angle)\n" "tangens v radianih" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" "float acos(float value)\n" "arcus cosinus v radianih" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" "float asin(float value)\n" "arcus sinus v radianih" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" "float atan(float value)\n" "arcus tangens v radianih" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" "float atan2(float y,float x)\n" "arcus tangens v radianih y/x med -PI in PI" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" "float cosh(float angle)\n" "hiperboliÄni cosinus v radianih" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" "float sinh(float angle)\n" "hiperboliÄni sinus v radianih" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" "float tanh(float angle)\n" "hiperboliÄni tangens v radianih" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" "float acosh(float value)\n" "hiperboliÄni arcus cosinus v radianih" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" "float asinh(float value)\n" "hiperboliÄni arcus sinus v radianih" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" "float atanh(float value)\n" "hiperboliÄni arcus tangens v radianih" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" "float clamp(float x,float lo,float hi)\n" "omeji x na obseg [lo,hi]" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" "float round(float x)\n" "najbližje celo Å¡tevilo x-a" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" "float max(float a,float b)\n" "veÄji izmed a in b" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" "float min(float a,float b)\n" "manjÅ¡i izmed a in b" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" "float trunc(float a)\n" "najbližje celo Å¡tevilo proti niÄli" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" "float floor(float a)\n" "naslednje manjÅ¡e celo Å¡tevilo" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" "float ceil(float a)\n" "naslednje veÄje celo Å¡tevilo" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" "float invert(float a)\n" "DoloÄeno kot 1-x" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" "float cbrt(float x)\n" "kubni koren" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" "float sqrt(float x)\n" "kvadratni koren" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" "float exp(float x)\n" "E na potenco x" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" "float pow(float x, float y)\n" "x na potenco y, na voljo tudi kot ^" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" "float log(float x)\n" "Naravni logaritem" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" "float log10(float x)\n" "Logaritem z osnovo 10" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" "float fmod(float x,float y)\n" "ostanek pri x/y (na voljo tudi kot operator %)" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "UpoÅ¡teva absolutna vrednost vsakega izraza Å¡uma. To daje valovit videz" #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "UpoÅ¡teva absolutna vrednost vsakega izraza Å¡uma. To daje valovit videz" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "UpoÅ¡teva absolutna vrednost vsakega izraza Å¡uma. To daje valovit videz" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" "float compress(float x,float lo,float hi)\n" "Preslika x iz [0,1] v [lo,hi]" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" "float expand(float x,float lo,float hi)\n" "Preslika x iz [lo,hi] v [0,1]" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearno preslika x iz [a1,b1] v [a2,b2]" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" "float gamma(float x, float g)\n" "Gama korekcija x-a s faktorjem gama g" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" "float bias(float x, float g)\n" "Varianca game, kjer vrednosti manjÅ¡e od 0,5 vleÄejo krivuljo navzdol\n" "in vrednosti veÄje od 0.5 vleÄejo krivuljo navzor\n" "pow(x,log(b)/log(0.5))" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" "float contrast(float x, float c)\n" "Prilagodi kontrast.  Za c od 0 do 0,5, je kontrast zmanjÅ¡an.  Za c " "> 0,5, je kontrast poveÄan." #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" "float boxstep(float x,float a)\n" " Äe x < a potem 0 sicer 1" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" "float linearstep(float x, float a, float b)\n" " Äe x < a potem 0, Äe x > b potem 1, in\n" "x linearno prehaja ko < x < b" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" "float smoothstep(float x,float a,float b)\n" " Äe x < a potem 0, Äe x > b potem 1, in\n" "x gladko (kubiÄno) prehaja ko a < x < b" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" "float gasussstep(float x,float a,float b)\n" " Äe x < a potem 0, Äe x > b potem 1, in\n" "x gladko (eksponentno) prehaja, ko a < x < b" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" "remap(float x, float source, float range, float falloff, float interp)\n" "SploÅ¡na funkcija preslikave.\n" "Ko je x znotraj +/- obsega vira, je rezultat ena.\n" "Rezultat pade na niÄ preko tega obsega na razdalji padanja.\n" "Obliko padanja nadzira interp. Å tevilske vrednosti\n" "lahko se uporabijo konstante z imenom:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" "mix(float a,float b,float alpha)\n" "MeÅ¡anica a in b glede na alpha." #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" "color hsi(color x, float h, float s, float i, float map=1)\n" "Funkcija hsi premakne odtenek za h (v stopinjah) in\n" "nasiÄenost in intenzivnost prilagodi za s in i.\n" "Na voljo je Å¡e preslikava, ki bo nadzorovala premik - \n" "popoln premik se bo zgodil, ko bo preslikava ena in\n" "noben premik ne bo zgodil, ko je preslikava niÄ.\n" "Premik bo pomanjÅ¡an za vrednosti med niÄ in ena." #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "Funkcija midhsi je podobna funkciji hsi, razen, da je kontrolna\n" "preslikava centrirana okoli srednje toÄke (vrednost 0,5)\n" "in lahko spreminja premik v obe smeri." #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color rgbtohsl(color rgb)\n" "Pretvorba barvnega prostora RGB v HSL.\n" "HSL (angl. Hue, Saturation, Lightness) je odtenek, nasiÄenost, osvetljenost\n" "(vse v intervalu [0..1]). Te funkcije so bile razÅ¡irjene tudi tako, da " "podpirajo\n" "vrednosti rgb in hsl zunaj obsega [0..1] na razumen naÄin.  Za\n" "katerokoli vrednost rgb ali hsl (razen negativnih vrednosti s) je pretvorba\n" "dobro definirana in reverzibilna." #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color hsltorgb(color hsl)\n" "Pretvorba barvnega prostora HSL v RGB.\n" "HSL (angl. Hue, Saturation, Lightness) je odtenek, nasiÄenost, osvetljenost\n" "(vse v intervalu [0..1]). Te funkcije so bile razÅ¡irjene tudi tako, da " "podpirajo\n" "vrednosti rgb in hsl zunaj obsega [0..1] na razumen naÄin.  Za\n" "katerokoli vrednost rgb ali hsl (razen negativnih vrednosti s) je pretvorba\n" "dobro definirana in reverzibilna." #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" "color saturate(color val, float amt)\n" "Lestvico nasiÄenosti barve pomnoži z amt.\n" "Barva je pomanjÅ¡ana okoli vrednosti osvetlitve rec709,\n" "negativni rezultati pa so pritrjeni na niÄ.\n" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" "float rand ( [float min, float max], [float seed] )\n" "SluÄajno Å¡tevilo med [min, max] (ali [0, 1] Äe ni doloÄeno).\n" "ÄŒe je doloÄen brst, bo uporabljen kot dodatek k notranjim brstom inje lahko " "uporabljen za tvorbo veÄ loÄenih generatorjev sluÄajnih Å¡tevil." #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" "float hash(float seed1,[float seed2, ...])\n" "Kot rand a brez notranjih brstov. Dodati je možno poljubno Å¡tevilo brstov\n" "in rezultat bo sluÄajna funkcija na osnovi vseh teh brstov." #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Izvorni Perlinov Å¡um na lokaciji (C2 interpolacija)" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" "float snoise ( vector v)\n" "predznaÄen Å¡un v obsegu od -1 do 1 izoblikovan z izvirnim Perlinovem Å¡umom " "na lokaciji(C2 interpolacija)" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "vector vnoise ( vector v)\n" "vektorski Å¡um oblikovan z originalnim Perlinovim Å¡umom na lokaciji (C2 " "interpolacija)" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise ( vector v)\n" "barvni Å¡um oblikovan z originalnim Perlinovim Å¡umom na lokaciji (C2 " "interpolacija)" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" "float snoise4 ( vector v,float t)\n" "4D predznaÄen Å¡um v obsegu od -1 do 1 oblikovan z originalnim Perlinovim " "Å¡umom na lokaciji (C2 interpolacija)" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" "vector vnoise4 ( vector v,float t)\n" "4D vektorski Å¡um oblikovan z originalnim Perlinovim Å¡umom na lokaciji (C2 " "interpolacija)" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise4 ( vector v,float t)\n" "4D barvni Å¡um oblikovan z originalnim Perlinovim Å¡umom na lokaciji (C2 " "interpolacija)" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fraktalno Brownovo gibanje) je veÄfrekvenÄna funkcija Å¡uma.\n" "Osnovna frekvenca je enaka funkciji \"Å¡uma\". Skupno Å¡tevilofrekvenc " "nadzirajo oktave. Lacunarnost je razmik med frekvencami - vrednost 2 pomeni, " "da je vsaka oktava dvakratnik prejÅ¡nje frekvence. OjaÄenje nadzoruje, za " "koliko je posamezna frekvenca poveÄanaglede na prejÅ¡njo frekvenco." #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fraktalno Brownovo gibanje) je veÄfrekvenÄna funkcija Å¡uma.\n" "Osnovna frekvenca je enaka funkciji \"Å¡uma\". Skupno Å¡tevilo frekvenc " "nadzirajo oktave. Lacunarnost je razmik med frekvencami - vrednost 2 pomeni, " "da je vsaka oktava dvakratnik prejÅ¡nje frekvence. OjaÄenje nadzoruje, za " "koliko je posamezna frekvenca poveÄana glede na prejÅ¡njo frekvenco." #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "float cellnoise(vector v)\n" "cellnoise ustvari polje konstantnih barvnih kock na podlagi lokacije " "Å¡tevila.\n" "To je enako kot funkcija prman cellnoise." #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "color cellnoise(vector v)\n" "cellnoise ustvari polje konstantnih barvnih kock na podlagi lokacije " "Å¡tevila.\n" "To je enako kot funkcija prman cellnoise." #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" "float pnoise ( vector v, vector period )\n" "periodiÄni Å¡um" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi je celiÄni vzorec Å¡umov. To je vzburjena razliÄica celiÄnega Å¡uma." #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "vrne barvo v celiÄnem vzorcu. To je vzburjena razliÄica celiÄnega Å¡uma." #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "vrne center voronoiove celice." #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" "float dist(vector a, vector b)\n" "razdalja med dvema toÄkama" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" "float length(vector v)\n" "dolžina vektorja" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" "float hypot(vector v)\n" "dolžina 2d vektorja [x,y]" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" "float dot(vector a,vector b)\n" "skalarni produkt vektorjev" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" "vector norm(vector v)\n" "vektor, pomanjÅ¡an na dolžino enote" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" "vector cross(vector a,vector b)\n" "vektorski produkt" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" "float angle(vector a,vector b)\n" "kot med dvema vektorjema (v radianih)" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" "vector angle(vector a,vector b)\n" "normalizirani vektor, pravokoten na a in b, pomanjÅ¡an na dolžino enote" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" "vector rotate(vector v,vector axis,float angle)\n" "vrti v okoli osi za dani kot (v radianih)" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" "vector up(vector P,vector upvec)\n" "vrti v tako, da os Y kaže v dani smeri" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" "int cycle(int index, int loRange, int hiRange )\n" "Preklaplja med vrednostmi loRange in hiRange na podlagi danega indeksa.\n" "To je odmik funkcije \"mod\". Rezultat je izraÄunan kot ``loRange + value % " "(hiRange-loRange+1)``." #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" "nt pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "NakljuÄno izbira vrednosti med loRange in hiRange glede na priloženi indeks\n" "(ki je samodejno zgoÅ¡Äena).\n" " Vrednosti bodo porazdeljene v skladu\n" "s priloženimi utežmi.  Za vse nedobavljene uteži se predpostavlja\n" "da so 1,0." #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Izbere eno od ponujenih barvnih izbir glede na indeks (domnevnov obmoÄju " "[0..1])." #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" "float choose(float index,float choice1, float choice2, [...])\n" "Izbere eno od ponujenih izbir glede na indeks (predvideno v obmoÄju [0..1])." #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Izbere eno od ponujenih možnosti na podlagi indeksa (domnevno v obsegu " "[0..1]).\n" "Vrednosti se porazdelijo glede na priložene uteži." #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolira nabor vrednosti na navedeni parameter, kjer so y1, ..., yn \n" "porazdeljeni enakomerno na [0..1]" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolira 1D rampo, doloÄeno s kontrolnimi toÄkami pri 'param'. Kontrolne " "toÄke so doloÄene\n" "s trojkami parametrov pos_i, val_i in interp_i. Interpolacijske kode so\n" "0 - niÄ, 1 - linearno, 2 - gladko, 3 - zlepljeno,\n" "4-monotona (ne nihajoÄi zlepek)" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolira barvno rampo, doloÄeno s kontrolnimi toÄkami pri \"param\". " "Kontrolne toÄkeso doloÄene\n" "s trojkami parametrov pos_i, val_i in interp_i. Interpolacijske kode so\n" "0 - niÄ, 1 - linearno, 2 - gladko, 3 - zlepljeno,\n" "4 - monotona (ne nihajoÄi zlepek)" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" "getVar(string varName,vector defaultValue)\n" "vrne vrednost varName, Äe spremenljivka obstaja, sicer vrne defaultValue" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" "float printf(string format,[vec0, vec1, ...])\n" "Natisne niz v STDOUT, dovoljeni parametri formatiranja so \"%v\" in \"%f\".\n" "Vrnjeni parameter je prazen, vendar ga je treba dodeliti spremenljivki." #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" "sprintf(string format, [double|string, double|string, ...])\n" "Vrne niz oblikovan iz danih vrednosti. Glejte \"man sprintf\" zapodrobnosti " "o formatu." #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "Dodaj novo spremenljivko" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "PriÄakovana string ali float[d]" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "PriÄakovana float[d]" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "PriÄakovana float[%1]" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "Neujemanje tipov, prvo: '%1'; drugo: '%2'" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "PriÄakovan float ali float[3]" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "PriÄakovan argument '%1' , dobil '%2'" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "NapaÄno Å¡tevilo argumentov, mora biti od 1 do 7" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "NapaÄno Å¡tevilo argumentov, mora biti veÄkratnik 3 plus 1" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "NapaÄno Å¡tevilo argumentov, mora biti 1 ali veÄ" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "Prvi argument mora biti niz" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "Nepopoln doloÄilnik formata" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "Ni spremenljivke z imenom '%1'" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "Funkcija '%1' nima definicije" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "Operacija prirejanja ima napaÄen tip '%1'" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "Tipi pogojev niso združljivi" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "Spremenljivka '%1' je nedosledno doloÄena v pogojih" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "Premalo argumentov za funkcijo '%1'" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "PreveÄ argumentov za funkcijo '%1'" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "Izraz je ustvaril tip '%1', je nezdružljiv z želenim tipom '%2'" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "Skladenjska napaka blizu '%1'" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "NepriÄakovan konec izraza blizu '%1'" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "NepriÄakovan konec niza formata" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "Neveljaven niz formata, dovoljen je samo %v ali %f" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "NapaÄno Å¡tevilo argumentov za niz formata" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "Neznana napaka (sporoÄilo = %1)" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "Spremenljivka" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "Pogled" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "Krivulja" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "Barvna krivulja" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "Privzeto" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "Min" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "Max" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "Int" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "Float" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Vektor" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Barva" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "Mavrica" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "Odtenki sive" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Barve" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "Vzorec barve" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "niz" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "datoteka" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "direktorij" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "Ime niza" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "Vrsta niza" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "Privzeti niz" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "Niz" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "Shrani izraz" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "Datoteke %1 ni bilo mogoÄe odpreti za pisanje" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "Napaka" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "Datoteke %1 ni bilo mogoÄe odpreti za pisanje. Ali je samo za branje?" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "BriÅ¡i toÄko" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "Izbrana pozicija:" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "Izbrana barva:" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "Nobena" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Linearno" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "Gladko" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Zlepek" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "MZlepek" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "RazÅ¡iri..." #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "ZbriÅ¡i vzorec barve" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "PrekliÄi" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "Dodaj..." #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "Lokalno" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "Izberite datoteko" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "Slike (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "ZbriÅ¡i toÄko" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "Izbrana pozicija:" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "Izbrana vrednost:" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "Nobena" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "Linearno" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "Gladko" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Zlepek" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "MZlepek" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "RazÅ¡iri..." #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "Urejevalnik izraza" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "Odpri" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "Priljubljene" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "Pogovorno okno pomoÄi" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" #~ msgctxt "ExprAddDialog|" #~ msgid "Link" #~ msgstr "Povezava" #~ msgctxt "ExprAddDialog|" #~ msgid "AnimCurve" #~ msgstr "Krivulja animacije" #~ msgctxt "ExprAddDialog|" #~ msgid "Deep Water" #~ msgstr "Globoka voda" #~ msgctxt "ExprDialog|" #~ msgid "Preview / Library" #~ msgstr "Predoged / Knjižnica" #~ msgctxt "ExprDialog|" #~ msgid "Preview" #~ msgstr "Predogled" #~ msgctxt "ExprDialog|" #~ msgid "Save" #~ msgstr "Shrani" #~ msgctxt "ExprDialog|" #~ msgid "Save As" #~ msgstr "Shrani kot" #~ msgctxt "ExprDialog|" #~ msgid "Save Local" #~ msgstr "Shrani lokalno" #~ msgctxt "ExprDialog|" #~ msgid "Clear" #~ msgstr "OÄisti" #~ msgctxt "ExprDialog|" #~ msgid "Apply" #~ msgstr "Uveljavi" #~ msgctxt "ExprDialog|" #~ msgid "Accept" #~ msgstr "Sprejmi" #~ msgctxt "ExprDialog|" #~ msgid "Cancel" #~ msgstr "PrekliÄi" #~ msgctxt "ExprDialog|" #~ msgid "Your expression had possible errors." #~ msgstr "VaÅ¡ izraz je imel možne napake." #~ msgctxt "ExprDialog|" #~ msgid "Do you want to accept your expression anyways?" #~ msgstr "Ali želite vseeno sprejeti svoj izraz?" #~ msgctxt "ExprDialog|" #~ msgid "Help" #~ msgstr "PomoÄ" #~ msgctxt "ExprDialog|" #~ msgid "Back" #~ msgstr "Nazaj" #~ msgctxt "ExprDialog|" #~ msgid "Forward" #~ msgstr "Naprej" #~ msgctxt "ExprDialog|" #~ msgid "Find" #~ msgstr "Najdi" #~ msgctxt "ExprDialog|" #~ msgid "Find Next" #~ msgstr "Najdi naslednjega" #~ msgctxt "ExprDialog|" #~ msgid "Find Prev" #~ msgstr "Najdi prejÅ¡njega" #~ msgctxt "ExprDialog|" #~ msgid "Variables not supported in preview (assumed zero):
" #~ msgstr "" #~ "Spremenljivke v predogledu niso podprte (domnevno so niÄ):
" #~ msgctxt "ExprDialog|" #~ msgid "Functions not supported in preview (assumed zero):
" #~ msgstr "Funkcije v predogledu niso podprte (domnevno so niÄ):
" #~ msgctxt "ExprGrapherWidget|" #~ msgid "Width" #~ msgstr "Å irina" #~ msgctxt "ExprGrapherWidget|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "
%1" #~ msgstr "
%1" kseexpr-4.0.4.0/po/PaxHeaders/sv0000644000000000000000000000003614156104470013412 xustar0030 mtime=1639483704.206587294 kseexpr-4.0.4.0/po/sv/0000755000000000000240000000000014156104470014412 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/sv/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104470016123 xustar0030 mtime=1639483704.203310229 kseexpr-4.0.4.0/po/sv/seexpr2_qt.po0000644000000000000240000013323614156104470017056 0ustar00rootroot00000000000000# Stefan Asserhäll , 2021. msgid "" msgstr "" "Project-Id-Version: \n" "PO-Revision-Date: 2021-07-02 20:35+0200\n" "Last-Translator: Stefan Asserhäll \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Qt-Contexts: true\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 20.08.1\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs(float x)\n" "absolutvärde av x" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" "float deg(float angle)\n" "radianer till grader" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" "float rad(float angle)\n" "grader till radianer" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" "float cosd(float angle)\n" "cosinus i grader" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" "float sind(float angle)\n" "sinus i grader" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" "float tand(float angle)\n" "tangens i grader" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" "float acosd(float value)\n" "arcus cosinus i grader" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" "float asind(float value)\n" "arcus sinus i grader" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" "float atand(float value)\n" "arcus tangens i grader" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" "float atan2d(float y,float x)\n" "arcus tangens i grader av y/x mellan -180 och 180" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" "float cos(float angle)\n" "cosinus i radianer" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" "float sin(float angle)\n" "sinus i radianer" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" "float tan(float angle)\n" "tangens i radianer" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" "float acos(float value)\n" "arcus cosinus i radianer" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" "float asin(float value)\n" "arcus sinus i radianer" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" "float atan(float value)\n" "arcus tangens i radianer" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" "float atan2(float y,float x)\n" "arcus tangens i radianer av y/x mellan -PI och PI" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" "float cosh(float angle)\n" "hyperbolisk cosinus i radianer" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" "float sinh(float angle)\n" "hyperbolisk sinus i radianer" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" "float tanh(float angle)\n" "hyperbolisk tangens i radianer" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" "float acosh(float value)\n" "hyperbolisk arcus cosinus i radianer" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" "float asinh(float value)\n" "hyperbolisk arcus sinus i radianer" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" "float atanh(float value)\n" "hyperbolisk arcus tangens i radianer" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" "float clamp(float x,float lo,float hi)\n" "begränsar x till intervallet [lo,hi]" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" "float round(float x)\n" "närmaste heltal till x" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" "float max(float a,float b)\n" "det största av a och b" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" "float min(float a,float b)\n" "det minsta av a och b" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" "float trunc(float a)\n" "närmaste heltal mot noll" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" "float floor(float a)\n" "nästa mindre heltal" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" "float ceil(float a)\n" "nästa större heltal" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" "float invert(float a)\n" "Definierat som 1-x" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" "float cbrt(float x)\n" "kubrot" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" "float sqrt(float x)\n" "kvadratrot" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" "float exp(float x)\n" "e upphöjt till x" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" "float pow(float x, float y)\n" "x upphöjt till y, ocksÃ¥ tillgängligt som ^" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" "float log(float x)\n" "Naturlig logaritm" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" "float log10(float x)\n" "Bas 10 logaritm" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" "float fmod(float x,float y)\n" "rest av x/y (ocksÃ¥ tillgänglig som operatorn %)" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolutvärdet av varje brusterm beräknas. Det ger ett böljande utseende." #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolutvärdet av varje brusterm beräknas. Det ger ett böljande utseende." #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolutvärdet av varje brusterm beräknas. Det ger ett böljande utseende." #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" "float compress(float x,float lo,float hi)\n" "Avbildar x inom [0,1] till [lo,hi]" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" "float expand(float x,float lo,float hi)\n" "Avbildar x inom [lo,hi] till [0,1]" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Avbildar x inom [a1,b1] linjärt till [a2,b2]" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" "float gamma(float x, float g)\n" "Gammakorrigering av x med gammafaktor g" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" "float bias(float x, float g)\n" "Variation av gamma där värden mindre än 0,5 drar ner kurvan\n" "och värden större än 0,5 drar upp kurvan\n" "pow(x,log(b)/log(0.5))" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" "float contrast(float x,float c)\n" "Justerar kontrasten.  För c frÃ¥n 0 till 0,5, minskas kontrasten.  " "För c > 0,5, ökas kontrasten." #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" "float boxstep(float x,float a)\n" "om x < a är resultatet 0 annars 1" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" "float linearstep(float x,float a,float b)\n" " om x < a är resultatet 0, om x > b är det 1, och\n" "x ändras linjärt när < x < b " #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" "float smoothstep(float x,float a,float b)\n" " om x < a är resultatet 0, om x > b är det 1, och\n" "x ändras jämnt (kubiskt) när a < x < b" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" "float gasussstep(float x,float a,float b)\n" " om x < a är resultatet 0, om x > b är det 1, och\n" "x ändras jämnt (exponentiellt) när a < x < b" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" "remap(float x, float source, float range, float falloff, float interp)\n" "Allmän avbildningsfunktion.\n" "När x är inom +/- range av source, är resultatet ett.\n" "Resultat minskar till noll bortom intervallet över avstÃ¥ndet falloff.\n" "Minskningens form bestäms av interp. Numeriska värden\n" "eller namngivna konstanter kan användas:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" "mix(float a,float b,float alpha)\n" "Blanda a och b enligt alpha." #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" "color hsi(color x, float h, float s, float i, float map=1)\n" "Funktionen hsi ändrar färgtonen med h\n" "(i grader) och skalar färgmättnaden och intensiteten med s och i. \n" "En avbildning kan anges som bestämmer skiftningen\n" "- fullständig skiftning sker när avbildningen är ett och igen skiftning\n" "sker när avbildningen är noll.  Skiftningen skalas ner för\n" "värden mellan noll och ett." #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "Funktionen midhsi är precis som funktionen hsi utom att\n" "kontrollavbildningen är centrerad omkring mittpunkten (värdet 0,5)\n" "och kan skala skiftningen i bÃ¥da riktningar." #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color rgbtohsl(color rgb)\n" "RGB till HSL färgrymdskonvertering.\n" "HSL är färgton, färgmättnad, ljushet (alla i intervallet [0..1] )\n" "Funktionerna har ocksÃ¥ utökats för att stödja rgb- och hsi-värden\n" "utanför intervallet [0..1] pÃ¥ ett rimligt sätt.  För alla rgb- eller\n" "hsl-värden (utom för negativa s-värden), är konverteringen\n" "väldefinierad och reversibel." #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color hsltorgb(color hsl)\n" "HSL till RGB färgrymdskonvertering.\n" "HSL är färgton, färgmättnad, ljushet (alla i intervallet [0..1] )\n" "Funktionerna har ocksÃ¥ utökats för att stödja rgb- och hsi-värden\n" "utanför intervallet [0..1] pÃ¥ ett rimligt sätt.  För alla rgb- eller\n" "hsl-värden (utom för negativa s-värden), är konverteringen\n" "väldefinierad och reversibel." #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" "color saturate(color val, float amt)\n" "Skala färgmättnaden med amt.\n" "Färgen skalas omkring rec709 luminansvärde,\n" "och negativa resultat tvingas till noll.\n" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" "float rand ( [float min, float max], [float seed] )\n" "Slumptal mellan [min, max] (eller [0, 1] om de inte anges).\n" "Om ett frö anges, används det förutom de interna fröerna och kan användas " "för att skapa flera distinkta generatorer." #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" "float hash(float seed1,[float seed2, ...])\n" "SÃ¥som rand, men utan nÃ¥gra interna frön. Godtyckligt antal frön kan anges\n" "och resultatet är en slumpfunktion baserad pÃ¥ fröna." #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Ursprungligt perlin brus pÃ¥ plats (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" "float snoise ( vector v)\n" "brus med tecken i intervallet -1 till 1 format med ursprungligt perlin brus " "pÃ¥ plats (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "vector vnoise ( vector v)\n" "vektorbrus format med ursprungligt perlin brus pÃ¥ plats (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise ( vector v)\n" "färgbrus format med ursprungligt perlin brus pÃ¥ plats (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" "float snoise4 ( vector v,float t)\n" "fyrdimensionellt brus med tecken i intervallet -1 till 1 format med " "ursprungligt perlin brus pÃ¥ plats (C2 interpolant)" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" "vector vnoise4 ( vector v,float t)\n" "fyrdimensionellt vektorbrus format med ursprungligt perlin brus pÃ¥ plats (C2 " "interpolant)" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise4 ( vector v,float t)\n" "fyrdimensionellt färgbrus format med ursprungligt perlin brus pÃ¥ plats (C2 " "interpolant)" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Funktionen fbm (fraktal Brownsk rörelse) är en brusfunktion med flera " "frekvenser. \n" "Basfrekvensen är samma som funktionen \"noise\". Det totala antalet " "frekvenser bestäms av octaves. Värdet lacunarity är avstÃ¥ndet mellan " "frekvenserna: värdet 2 betyder att varje oktav är den dubbla av den " "föregÃ¥ende frekvensen. Värdet gain styr hur mycket varje frekvens skalas " "relativt till den föregÃ¥ende frekvensen." #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "Funktionen fbm (fraktal Brownsk rörelse) är en brusfunktion med flera " "frekvenser. \n" "Basfrekvensen är samma som funktionen \"noise\". Det totala antalet \n" "frekvenser bestäms av octaves. Värdet lacunarity är avstÃ¥ndet \n" "mellan frekvenserna: värdet 2 betyder att varje oktav är den dubbla \n" "av den föregÃ¥ende frekvensen. Värdet gain styr hur mycket varje \n" "frekvens skalas relativt till den föregÃ¥ende frekvensen." #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "icolor cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "float cellnoise(vector v)\n" "cellnoise genererar ett fält av konstantfärgade kuber baserade pÃ¥ " "heltaletsplats.\n" "Det är samma sak som prman funktionen cellnoise." #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "color cellnoise(vector v)\n" "cellnoise genererar ett fält av konstantfärgade kuber baserade pÃ¥ " "heltaletsplats.\n" "Det är samma sak som prman funktionen cellnoise." #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" "float pnoise ( vector v, vector period )\n" "periodiskt brus" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi är ett cellulärt brusmönster. Det är en gittervariant av cellnoise." #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returnerar färg i ett cellulärt mönster. Det är en gittervariant av " "cellnoise." #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returnerar centrum av en voronoi-cell." #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" "float dist(vector a, vector b)\n" "avstÃ¥nd mellan tvÃ¥ punkter" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" "float length(vector v)\n" "en vektors längd" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" "float hypot(vector v)\n" "längden av en 2d-vektor [x,y]" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" "float dot(vector a,vector b)\n" "vektorskalärprodukt" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" "vector norm(vector v)\n" "vektor skalad till enhetslängd" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" "vector cross(vector a,vector b)\n" "vektorkorsprodukt" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" "float angle(vector a,vector b)\n" "vinkel mellan tvÃ¥ vektorer (i radianer)" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" "vector angle(vector a,vector b)\n" "normalisera vektor ortogonalt mot a och b skalat till enhetslängd" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" "vector rotate(vector v,vector axis,float angle)\n" "roterar v omkring axeln axis med angiven vinkel angle (i radianer)" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" "vector up(vector P,vector upvec)\n" "roterar v sÃ¥ att Y-axeln pekar i angiven uppÃ¥triktning" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" "int cycle(int index, int loRange, int hiRange )\n" "GÃ¥r igenom värden mellan loRange och hiRange cykliskt baserat pÃ¥ angivna " "index.\n" "Det är en \"mod\" funktion. Resultatet beräknas som ``loRange + värde % " "(hiRange-loRange+1)``." #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Väljer värden slumpmässigt mellan loRange och hiRange baserat pÃ¥ angivet " "index (som\n" "automatiskt kondenseras).  Värdena fördelas enligt\n" "angivna vikter.  Alla vikter som inte anges antas\n" "vara 1,0." #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Väljer ett av de tillhandahÃ¥llna färgvalen baserat pÃ¥ index (antas vara i " "intervallet [0..1])." #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" "float choose(float index,float choice1, float choice2, [...])\n" "Väljer ett av de tillhandahÃ¥llna valen baserat pÃ¥ index (antas vara i " "intervallet [0, 1])." #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Väljer ett av de angivna värdena baserat pÃ¥ index (som antas vara i " "intervallet [0..1]).\n" "Värdena distribueras enligt de angivna vikterna." #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolerar en uppsättning värden till den angivna parametern där y1, ..., " "yn\n" "distribueras jämt frÃ¥n [0..1]" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolerar en endimensionell ramp definierad av styrpunkter i 'param'. " "Styrpunkter specificeras \n" "av tripplar av parametrarna pos_i, val_i och interp_i. Interpolationskoder " "är \n" "0 - ingen, 1 - linjär, 2 - jämn, 3 - spline, \n" "4-monoton (icke-oscillerande spline)" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolerar en färgramp angiven av styrpunkter i 'param'. Styrpunkter " "specificeras \n" "av tripplar av parametrarna pos_i, val_i och interp_i. Interpolationskoder " "är \n" "0 - ingen, 1 - linjär, 2 - jämn, 3 - spline, \n" "4-monoton (icke-oscillerande spline)" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" "getVar(string varName,vector defaultValue)\n" "returnera värdet pÃ¥ varName om variabeln finns, returnera annars defaultValue" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" "float printf(string format,[vec0, vec1, ...])\n" "Skriv ut en sträng till standardutmatningen, formatparametrar som tillÃ¥ts är " "\"%v\" och \"%f\".\n" "Returparametern är tom, men mÃ¥ste tilldelas till en variabel." #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" "sprintf(string format, [double|string, double|string, ...])\n" "Returnerar en sträng formaterad frÃ¥n det givna värdet. Se 'man sprintf' för " "formatinformation." #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "Lägg till ny variabel" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "Förväntade sträng eller flyttal[d]" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "Förväntade flyttal[d]" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "Förväntade flyttal[%1]" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "Typmissanpassning, första: '%1', andra: '%2'" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "Förväntade flyttal eller flyttal[3]" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "Förväntade '%1' som argument, erhöll '%2'" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "Fel antal argument, ska vara 1 eller 7" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "Fel antal argument, ska vara en multipel av 3 plus 1" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "Fel antal argument, ska vara 1 eller fler" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "Första argumentet mÃ¥ste vara en sträng" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "Ofullständig formatspecificering" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "Ingen variabel benämnd '%1'" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "Funktionen '%1' saknar definition" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "Tilldelningsoperation har felaktig typ '%1'" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "Villkorsuttryckens typer är inte kompatibla" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "Variabeln '%1' är inkonsekvent definierad i villkorsuttryck" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "För fÃ¥ argument för funktionen '%1'" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "För mÃ¥nga argument för funktionen '%1'" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "Uttryck genererade typen '%1', inkompatibel med önskad typ '%2'" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "Syntaxfel nära '%1'" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "Oväntat slut pÃ¥ uttryck nära '%1'" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "Oväntat slut pÃ¥ formatsträng" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "Ogiltig formatsträng, bara %v eller %f är tillÃ¥tna" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "Fel antal argument för formatsträng" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "Okänt fel (meddelande = %1)" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "Variabel" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "SlÃ¥ upp" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "Kurva" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "Färgkurva" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "Förval" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "Min" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "Max" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "Heltal" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "Flyttal" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Vektor" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Färg" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "RegnbÃ¥ge" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "GrÃ¥skala" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Färger" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "Färgruta" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "sträng" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "fil" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "katalog" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "Strängnamn" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "Strängtyp" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "Strängförval" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "Sträng" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "Spara uttryck" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "Kunde inte öppna filen %1 för skrivning" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "Fel" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "Kunde inte öppna filen %1 för skrivning. Är den skrivskyddad?" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "Ta bort punkt" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "Vald position:" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "Vald färg:" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "Ingen" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Linjär" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "Jämn" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "&Expandera..." #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "Ta bort färgruta" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "Avbryt" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "&Lägg till..." #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "Lokal" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "Välj en fil" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "bilder (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "Värde:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "Värde:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "Ta bort punkt" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "Vald position:" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "Valt värde:" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "Inget" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "Linjärt" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "Jämnt" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Spline" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "MSpline" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "&Expandera..." #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "Uttryckseditor" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "Öppna" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "Favoriter" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "Hjälpruta" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" kseexpr-4.0.4.0/po/PaxHeaders/uk0000644000000000000000000000003614156104512013376 xustar0030 mtime=1639483722.740875352 kseexpr-4.0.4.0/po/uk/0000755000000000000240000000000014156104512014376 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/uk/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104512016107 xustar0030 mtime=1639483722.736011714 kseexpr-4.0.4.0/po/uk/seexpr2_qt.po0000644000000000000240000016275314156104512017050 0ustar00rootroot00000000000000# Translation of seexpr2_qt.po to Ukrainian # Copyright (C) 2020 This_file_is_part_of_KDE # This file is distributed under the license LGPL version 2.1 or # version 3 or later versions approved by the membership of KDE e.V. # # Yuri Chornoivan , 2020, 2021. msgid "" msgstr "" "Project-Id-Version: seexpr2_qt\n" "PO-Revision-Date: 2021-07-02 07:34+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Qt-Contexts: true\n" "X-Qt-Contexts: true\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Lokalize 20.12.0\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs(float x)\n" "модуль Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ x" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" "float deg(float кут)\n" "радіани у градуÑи" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" "float rad(float кут)\n" "градуÑи у радіани" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" "float cosd(float кут)\n" "коÑÐ¸Ð½ÑƒÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ градуÑах" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" "float sind(float кут)\n" "ÑÐ¸Ð½ÑƒÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ градуÑах" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" "float tand(float кут)\n" "Ñ‚Ð°Ð½Ð³ÐµÐ½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ градуÑах" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" "float acosd(float значеннÑ)\n" "арккоÑÐ¸Ð½ÑƒÑ Ñƒ градуÑах" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" "float asind(float значеннÑ)\n" "аркÑÐ¸Ð½ÑƒÑ Ñƒ градуÑах" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" "float atand(float значеннÑ)\n" "Ð°Ñ€ÐºÑ‚Ð°Ð½Ð³ÐµÐ½Ñ Ñƒ градуÑах" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" "float atan2d(float y,float x)\n" "Ð°Ñ€ÐºÑ‚Ð°Ð½Ð³ÐµÐ½Ñ Ñƒ градуÑах Ð´Ð»Ñ y/x, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ -180 до 180" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" "float cos(float кут)\n" "коÑÐ¸Ð½ÑƒÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ радіанах" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" "float sin(float кут)\n" "ÑÐ¸Ð½ÑƒÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ радіанах" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" "float tan(float кут)\n" "Ñ‚Ð°Ð½Ð³ÐµÐ½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ радіанах" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" "float acos(float значеннÑ)\n" "арккоÑÐ¸Ð½ÑƒÑ Ñƒ радіанах" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" "float asin(float значеннÑ)\n" "аркÑÐ¸Ð½ÑƒÑ Ñƒ радіанах" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" "float atan(float значеннÑ)\n" "Ð°Ñ€ÐºÑ‚Ð°Ð½Ð³ÐµÐ½Ñ Ñƒ радіанах" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" "float atan2(float y,float x)\n" "Ð°Ñ€ÐºÑ‚Ð°Ð½Ð³ÐµÐ½Ñ Ñƒ радіанах Ð´Ð»Ñ y/x, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ -PI до PI" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" "float cosh(float кут)\n" "гіперболічний коÑÐ¸Ð½ÑƒÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ радіанах" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" "float sinh(float кут)\n" "гіперболічний ÑÐ¸Ð½ÑƒÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ радіанах" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" "float tanh(float кут)\n" "гіперболічний Ñ‚Ð°Ð½Ð³ÐµÐ½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ радіанах" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" "float acosh(float значеннÑ)\n" "гіперболічний арккоÑÐ¸Ð½ÑƒÑ Ñƒ радіанах" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" "float asinh(float значеннÑ)\n" "гіперболічний аркÑÐ¸Ð½ÑƒÑ Ñƒ радіанах" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" "float atanh(float кут)\n" "гіперболічний Ð°Ñ€ÐºÑ‚Ð°Ð½Ð³ÐµÐ½Ñ Ñƒ радіанах" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" "float clamp(float x,float lo,float hi)\n" "обмежити x до діапазону [lo,hi]" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" "float round(float x)\n" "найближче до x ціле значеннÑ" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" "float max(float a,float b)\n" "більше з чиÑел a Ñ– b" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" "float min(float a,float b)\n" "менше з чиÑел a Ñ– b" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" "float trunc(float a)\n" "найближче до x ціле Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ напрÑмку до нулÑ" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" "float floor(float a)\n" "найбільше з менших цілих чиÑел" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" "float ceil(float a)\n" "найменше з більших цілих чиÑел" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" "float invert(float a)\n" "визначено Ñк 1-x" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" "float cbrt(float x)\n" "кубічний корінь" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" "float sqrt(float x)\n" "квадратний корінь" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" "float exp(float x)\n" "E у Ñтепені x" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" "float pow(float x, float y)\n" "x у Ñтепені y, також можна запиÑати у формі з ^" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" "float log(float x)\n" "натуральний логарифм" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" "float log10(float x)\n" "логарифм за оÑновою 10" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" "float fmod(float x,float y)\n" "Лишок від Ð´Ñ–Ð»ÐµÐ½Ð½Ñ x/y (також можна викориÑтати форму запиÑу з оператором %)" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Ð’Ñ€Ð°Ñ…ÑƒÐ²Ð°Ð½Ð½Ñ ÑƒÑÑ–Ñ… Ñкладових шуму за модулем. Ðадає хвилÑÑтішого виглÑду." #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Ð’Ñ€Ð°Ñ…ÑƒÐ²Ð°Ð½Ð½Ñ ÑƒÑÑ–Ñ… Ñкладових шуму за модулем. Ðадає хвилÑÑтішого виглÑду." #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Ð’Ñ€Ð°Ñ…ÑƒÐ²Ð°Ð½Ð½Ñ ÑƒÑÑ–Ñ… Ñкладових шуму за модулем. Ðадає хвилÑÑтішого виглÑду." #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" "float compress(float x,float lo,float hi)\n" "Відображає x з [0,1] на [lo,hi]" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" "float expand(float x,float lo,float hi)\n" "Відображає x з [lo,hi] на [0,1]" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Лінійно відображає x з [a1,b1] на [a2,b2]" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" "float gamma(float x, float g)\n" "Гамма-Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ x із коефіцієнтом гамма, Ñкий дорівнює g" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" "float bias(float x, float g)\n" "Ð’Ð°Ñ€Ñ–Ð°Ñ†Ñ–Ñ Ð³Ð°Ð¼Ð¼Ð¸, де параметр ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð°Ñ” Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ 0 до 1 зі значеннÑми, " "меншими за 0.5, Ñкі піднімають криву, Ñ– значеннÑми, більшими за 0.5, Ñкі " "опуÑкають криву. ВизначаєтьÑÑ Ñк pow(x, log(b)/log(0.5))." #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" "float contrast(float x,float c)\n" "Скоригувати контраÑтніÑть. Ð”Ð»Ñ c у діапазоні від 0 до 0.5 контраÑтніÑть " "зменшуватиметьÑÑ. Ð”Ð»Ñ c > 0.5 контраÑтніÑть збільшуватиметьÑÑ." #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" "float boxstep(float x,float a)\n" "Ñкщо x < a, то 0, інакше — 1" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" "float linearstep(float x,float a,float b)\n" "Ñкщо x < a, то 0, Ñкщо x > b, то 1, Ñ–\n" "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð»Ñ–Ð½Ñ–Ð¹Ð½Ð¾ переходить у проміжку a < x < b " #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" "float smoothstep(float x,float a,float b)\n" "Ñкщо x < a, то 0, Ñкщо x > b, то 1, Ñ–\n" "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð»Ð°Ð²Ð½Ð¾ переходить (за кубічною параболою) у проміжку a < x < b" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" "float gasussstep(float x,float a,float b)\n" "Ñкщо x < a, то 0, Ñкщо x > b, то 1, Ñ–\n" "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð»Ð°Ð²Ð½Ð¾ переходить (за екÑпонентою) у проміжку a < x < b" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" "remap(float x, float source, float range, float falloff, float interp)\n" "Загальна Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ.\n" "Якщо x перебуває у діапазоні джерела ±range, результатом буде " "одиницÑ. Результат Ñпадає до Ð½ÑƒÐ»Ñ Ð·Ð° межами діапазону на відÑтані " "falloff. Форма ÑÐ¿Ð°Ð´Ð°Ð½Ð½Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŽÑ”Ñ‚ÑŒÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ interp. Можна " "викориÑтовувати чиÑлові значеннÑ\n" "або іменовані Ñталі:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" "mix(float a,float b,float alpha)\n" "Змішує a Ñ– b відповідно до alpha." #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" "color hsi(color x, float h, float s, float i, float map=1)\n" "Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ hsi зÑуває відтінок на ``h`` (у градуÑах) Ñ– маÑштабує\n" "наÑиченіÑть та інтенÑивніÑть на ``s`` Ñ– ``i``, відповідно. Функції може " "бути\n" "передано Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ map, Ñке контролюватиме зÑув — повний зÑув\n" "відбуватиметьÑÑ, Ñкщо map дорівнює одиниці. Якщо ж значеннÑм map буде нуль,\n" "зÑув не відбуватиметьÑÑ. ЗÑув буде маÑштабовано до значень між нулем та\n" "одиницею." #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ midhsi подібна до функції hsi, але керівне відображеннÑ\n" "центровано навколо Ñередньої точки (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 0.5)\n" "Ñ– може маÑштабувати зÑув у обох напрÑмках." #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color rgbtohsl(color rgb)\n" "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð· проÑтору кольорів RGB до проÑтору кольорів HSL.\n" "Колір у HSL визначаєтьÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñми відтінку (Hue), наÑиченоÑті " "(Saturation), оÑвітленоÑті (Lightness) (уÑÑ– в діапазоні [0, 1]).\n" "Ці функції також розширено Ð´Ð»Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ значень RGB Ñ– HSL поза діапазоном " "[0, 1] у природний ÑпоÑіб.\n" "Ð”Ð»Ñ Ð±ÑƒÐ´ÑŒ-Ñкого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ RGB або HSL (окрім від'ємних значень) Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ” " "коректним Ñ– оборотним." #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color hsltorgb(color hsl)\n" "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð· проÑтору кольорів HSL до проÑтору кольорів RGB.\n" "Колір у HSL визначаєтьÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñми відтінку (Hue), наÑиченоÑті " "(Saturation), оÑвітленоÑті (Lightness) (уÑÑ– в діапазоні [0, 1]).\n" "Ці функції також розширено Ð´Ð»Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ значень RGB Ñ– HSL поза діапазоном " "[0, 1] у природний ÑпоÑіб.\n" "Ð”Ð»Ñ Ð±ÑƒÐ´ÑŒ-Ñкого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ RGB або HSL (окрім від'ємних значень) Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ” " "коректним Ñ– оборотним." #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" "color saturate(color val, float amt)\n" "МаÑштабує наÑиченіÑть кольору на amt.\n" "Колір буде маÑштабовано навколо Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾ÑвітленоÑті rec709, від'ємні\n" "результати буде обрізано до нулÑ.\n" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" "float rand ( [float min, float max], [float seed] )\n" "Випадкове чиÑло у проміжку [min; max] (або [0; 1], Ñкщо проміжок не " "вказано).\n" "Якщо вказано базове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (seed), його буде викориÑтано на додачу до " "вбудованих базових значень. Цим значеннÑм можна ÑкориÑтатиÑÑ Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ " "декількох різних генераторів." #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" "float hash(float seed1,[float seed2, ...])\n" "Подібна до «rand», але без внутрішніх базових значень пÑевдовипадковоÑті. " "Можна надавати довільну кількіÑть базових значень (seed). Результатом буде " "випадкова Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð½Ð° оÑнові уÑÑ–Ñ… базових значень." #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Оригінальний шум Перліна у точці (інтерполÑтора C2)" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" "float snoise ( vector v )\n" "шум з чиÑел зі знаком у діапазоні від –1 до 1, Ñформований за допомогою " "оригінального шуму Перліна у точці (інтерполÑтор C2)" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "vector vnoise ( vector v )\n" "векторний шум, Ñформований за допомогою оригінального шуму Перліна у точці " "(інтерполÑтор C2)" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise ( vector v )\n" "колірний шум, Ñформований за допомогою оригінального шуму Перліна у точці " "(інтерполÑтор C2)" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" "float snoise4 ( vector v, float t)\n" "Чотиривимірний шум з чиÑел зі знаком у діапазоні від –1 до 1, Ñформований за " "допомогою оригінального шуму Перліна у точці (інтерполÑтор C2)" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" "vector vnoise4 ( vector v, float t)\n" "Чотиривимірний векторний шум, Ñформований за допомогою оригінального шуму " "Перліна у точці (інтерполÑтор C2)" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise4 ( vector v,float t)\n" "Чотиривимірний колірний шум, Ñформований за допомогою оригінального шуму " "Перліна у точці (інтерполÑтор C2)" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion або фрактальний броунівÑький рух) Ñ” " "багаточаÑтотною функцію шуму.\n" "Базова чаÑтота збігаєтьÑÑ Ñ–Ð· чаÑтотою функції «noise». Загальна кількіÑть " "чаÑтот керуєтьÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñм «octaves». Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«lacunarity» Ñ” інтервалом між " "чаÑтотами — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 2 означає, що у кожній наÑтупній октаві чаÑтота " "подвоюєтьÑÑ. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«gain» керує тим, наÑкільки буде маÑштабовано кожну " "чаÑтоту відноÑно попередньої чаÑтоти." #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion або фрактальний броунівÑький рух) Ñ” " "багаточаÑтотною функцію шуму.\n" "Базова чаÑтота збігаєтьÑÑ Ñ–Ð· чаÑтотою функції «noise». Загальна кількіÑть " "чаÑтот керуєтьÑÑ\n" "значеннÑм «octaves». Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«lacunarity» Ñ” інтервалом між чаÑтотами — " "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 2 означає,\n" "що у кожній наÑтупній октаві чаÑтота подвоюєтьÑÑ. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«gain» керує тим, " "наÑкільки буде\n" "маÑштабовано кожну чаÑтоту відноÑно попередньої чаÑтоти." #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "float cellnoise(vector v)\n" "cellnoise Ñтворює поле кубів розфарбованих Ñталим кольором на оÑнові " "цілочиÑельного Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑˆÐ¸Ð½.\n" "Ð¦Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑÑ Ñ–Ð· функцією cellnoise prman." #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "color cellnoise(vector v)\n" "cellnoise Ñтворює поле кубів розфарбованих Ñталим кольором на оÑнові " "цілочиÑельного Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑˆÐ¸Ð½.\n" "Ð¦Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑÑ Ñ–Ð· функцією cellnoise prman." #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" "float pnoise ( vector v, vector період )\n" "періодичний шум" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "повертає Ñтільниковий шумовий візерунок. Це варіант cellnoise із джитером." #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "повертає колір у Ñтільниковому візерунку. Це варіант cellnoise із джитером." #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "повертає центр комірки Вороного." #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" "float dist(vector a, vector b)\n" "відÑтань між двома точками" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" "float length(vector v)\n" "довжина вектора" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" "float hypot(vector v)\n" "довжина двовимірного вектора [x,y]" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" "float dot(vector a,vector b)\n" "ÑкалÑрний добуток векторів" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" "vector norm(vector v)\n" "маÑÑˆÑ‚Ð°Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð° до одиничної довжини" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" "vector cross(vector a,vector b)\n" "векторний добуток векторів" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" "float angle(vector a,vector b)\n" "кут між двома векторами (у радіанах)" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" "vector angle(vector a,vector b)\n" "нормалізований вектор, Ñкий Ñ” ортогональним до a Ñ– b, маÑштабований до " "одиничної довжини" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" "vector rotate(vector v,vector віÑÑŒ,float кут)\n" "Обертає вектор v навколо віÑÑ– на заданий кут (у радіанах)" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" "vector up(vector P,vector upvec)\n" "обертає v так, щоб віÑÑŒ Y вказувала у заданому напрÑмку" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" "int cycle(int index, int loRange, int hiRange )\n" "Циклічно переходить значеннÑми між loRange Ñ– hiRange на оÑнові наданого\n" "індекÑу (index). Це зÑунута верÑÑ–Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— «mod». Результатом Ñ” Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ " "``loRange + value % (hiRange-loRange+1)``." #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Випадково вибирає Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ñ–Ð¶ loRange Ñ– hiRange на оÑнові наданого індекÑу " "(index,\n" "Ñкий автоматично хешуєтьÑÑ). Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±ÑƒÐ´Ðµ розподілено за вказаними " "значеннÑми ваги (weights).\n" "УÑÑ– ваги, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñких не вказано, вважатимутьÑÑ Ñ€Ñ–Ð²Ð½Ð¸Ð¼Ð¸ 1.0." #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" "color swatch(float індекÑ, color варіант0, color варіант1, color варіант2, " "[...])\n" "Вибирає один із наданих варіантів на оÑнові індекÑу (припуÑкаєтьÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ " "у діапазоні [0, 1])." #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" "float choose(float індекÑ, float варіант1, float варіант2, [...])\n" "Вибирає один із наданих варіантів на оÑнові індекÑу (припуÑкаєтьÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ " "у діапазоні [0, 1])." #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Вибирає один із наданих варіантів на оÑнові індекÑу (припуÑкаєтьÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ " "у діапазоні [0, 1]).\n" "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±ÑƒÐ´Ðµ розподілено відповідно до наданих значень ваги (weight)." #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Інтерполює набір значень до вказаного параметра, де y1, ..., yn розподілено " "рівномірно у проміжку [0, 1]" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Інтерполює одновимірний набір, Ñкі задано контрольними точками Ð´Ð»Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ " "param.\n" "Контрольні точки задаютьÑÑ Ñ‚Ñ€Ñ–Ð¹ÐºÐ°Ð¼Ð¸ параметрів pos_i, val_i Ñ– interp_i. Коди " "інтерполÑції: \n" "0 — немає, 1 — лінійна, 2 — згладжена, 3 — Ñплайни, \n" "4 — монотонна (Ñплайни без оÑцилÑції)" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Інтерполює набір кольорів, Ñкі задано контрольними точками Ð´Ð»Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ " "param.\n" "Контрольні точки задаютьÑÑ Ñ‚Ñ€Ñ–Ð¹ÐºÐ°Ð¼Ð¸ параметрів pos_i, val_i Ñ– interp_i. Коди " "інтерполÑції:\n" "0 — немає, 1 — лінійна, 2 — згладжена, 3 — Ñплайни, \n" "4 — монотонна (Ñплайни без оÑцилÑції)" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" "getVar(string varName, vector defaultValue)\n" "повертає Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ— varName, Ñкщо змінна Ñ–Ñнує, інакше, повертає " "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ defaultValue" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" "float printf(string формат,[vec0, vec1, ...])\n" "Виводить Ñ€Ñдок до STDOUT. Можливими значеннÑми параметра «формат» Ñ” %v та " "%f.\n" "Повернутий параметр Ñ” порожнім, але його обов'Ñзково Ñлід пов'Ñзувати " "наданнÑм Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ñ–Ð¹." #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" "sprintf(string формат, [double|Ñ€Ñдок, double|Ñ€Ñдок, ...])\n" "Повертає Ñ€Ñдок, форматований з вказаних значень. Див. «man sprintf», щоб " "дізнатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ про форматуваннÑ." #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "Додати нову змінну" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "Мав бути Ñ€Ñдок або float[d]" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "Мало бути float[d]" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "Мало бути float[%1]" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "ÐевідповідніÑть типів. Перший: «%1»; другий: «%2»" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "Мало бути float або float[3]" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "Ðргументом мав бути «%1», а маємо «%2»" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "Помилкова кількіÑть аргументів. Має бути від одного до Ñеми" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "Помилкова кількіÑть аргументів. Має бути кратною до 3 Ð¿Ð»ÑŽÑ 1" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "Помилкова кількіÑть аргументів. Має бути один або декілька" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "Першим аргументом має бути Ñ€Ñдок" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "Ðеповний Ñпецифікатор форматуваннÑ" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "Ðемає змінної із назвою «%1»" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ Â«%1» не має визначеннÑ" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ до некоректного типу «%1»" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "Тип умов Ñ” неÑуміÑним" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "Змінну «%1» визначено неÑуміÑним чином" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "Замало аргументів функції «%1»" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "Забагато аргументів функції «%1»" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "Створений виразом тип «%1» Ñ” неÑуміÑним із бажаним типом «%2»" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "СинтакÑична помилка порÑд із «%1»" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "Ðеочікуване Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð²Ð¸Ñ€Ð°Ð·Ñƒ порÑд із «%1»" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "Ðеочікуване Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ñдка форматуваннÑ" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "Ðекоректний Ñ€Ñдок форматуваннÑ. Можна викориÑтовувати лише %v або %f" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "Помилкова кількіÑть аргументів Ð´Ð»Ñ Ñ€Ñдка форматуваннÑ" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "Ðевідома помилка (Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ = %1)" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "Змінна" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "Пошук" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "Крива" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "Крива кольорів" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "Типова" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "Мін." #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "МакÑ." #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "Ціле" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "Float" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Вектор" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Колір" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "ВеÑелка" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "Відтінки Ñірого" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Кольори" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "Зразок" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "Ñ€Ñдок" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "файл" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "каталог" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "Ðазва Ñ€Ñдка" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "Тип Ñ€Ñдка" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "Типовий Ñ€Ñдок" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "РÑдок" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "Зберегти вираз" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл %1 Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу." #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "Помилка" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "" "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл %1 Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу. Цей файл призначено лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ?" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "Вилучити точку" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "Вибрана позиціÑ:" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "Вибраний колір:" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "Ітерпр.:" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "Ðемає" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Лінійний" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "ЗгладжуваннÑ" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Сплайни" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "M-Ñплайни" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "Роз&горнути" #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "Вилучити зразок" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "СкаÑувати" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "&Додати…" #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "Локально" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "Будь лаÑка, виберіть файл" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "Поз.:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "Знач.:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "Ітерпр.:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "Поз.:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "Знач.:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "Ітерпр.:" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "Вилучити точку" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "Вибрана позиціÑ:" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "Вибране значеннÑ:" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "Ітерпр.:" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "Ðемає" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "Лінійний" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "ЗгладжуваннÑ" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Сплайни" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "M-Ñплайни" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "&Розгорнути…" #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "Редактор виразів" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "Відкрити" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "Улюблене" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "КонтекÑтна довідка" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" #~ msgctxt "ExprAddDialog|" #~ msgid "Link" #~ msgstr "ПоÑиланнÑ" #~ msgctxt "ExprAddDialog|" #~ msgid "AnimCurve" #~ msgstr "ÐнімКрива" #~ msgctxt "ExprAddDialog|" #~ msgid "Deep Water" #~ msgstr "Глибока вода" #~ msgctxt "ExprDialog|" #~ msgid "Preview / Library" #~ msgstr "ПереглÑд/Бібліотека" #~ msgctxt "ExprDialog|" #~ msgid "Preview" #~ msgstr "ПереглÑд" #~ msgctxt "ExprDialog|" #~ msgid "Save" #~ msgstr "Зберегти" #~ msgctxt "ExprDialog|" #~ msgid "Save As" #~ msgstr "Зберегти Ñк" #~ msgctxt "ExprDialog|" #~ msgid "Save Local" #~ msgstr "Зберегти локально" #~ msgctxt "ExprDialog|" #~ msgid "Clear" #~ msgstr "Спорожнити" #~ msgctxt "ExprDialog|" #~ msgid "Apply" #~ msgstr "ЗаÑтоÑувати" #~ msgctxt "ExprDialog|" #~ msgid "Accept" #~ msgstr "ПрийнÑти" #~ msgctxt "ExprDialog|" #~ msgid "Cancel" #~ msgstr "СкаÑувати" #~ msgctxt "ExprDialog|" #~ msgid "Your expression had possible errors." #~ msgstr "У вашому виразі були помилки." #~ msgctxt "ExprDialog|" #~ msgid "Do you want to accept your expression anyways?" #~ msgstr "Хочете прийнÑти ваш вираз попри це?" #~ msgctxt "ExprDialog|" #~ msgid "Help" #~ msgstr "Довідка" #~ msgctxt "ExprDialog|" #~ msgid "Back" #~ msgstr "Ðазад" #~ msgctxt "ExprDialog|" #~ msgid "Forward" #~ msgstr "Далі" #~ msgctxt "ExprDialog|" #~ msgid "Find" #~ msgstr "Знайти" #~ msgctxt "ExprDialog|" #~ msgid "Find Next" #~ msgstr "Знайти далі" #~ msgctxt "ExprDialog|" #~ msgid "Find Prev" #~ msgstr "Знайти позаду" #~ msgctxt "ExprDialog|" #~ msgid "Variables not supported in preview (assumed zero):
" #~ msgstr "" #~ "Змінні, підтримки Ñких у переглÑді не передбачено (припуÑкаєтьÑÑ Ð½ÑƒÐ»ÑŒ):" #~ "
" #~ msgctxt "ExprDialog|" #~ msgid "Functions not supported in preview (assumed zero):
" #~ msgstr "" #~ "Функції, підтримки Ñких у переглÑді не передбачено (припуÑкаєтьÑÑ " #~ "нуль):
" #~ msgctxt "ExprGrapherWidget|" #~ msgid "Width" #~ msgstr "Ширина" #~ msgctxt "ExprGrapherWidget|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "%1" #~ msgstr "%1" #~ msgctxt "ExprShortTextEdit|" #~ msgid "
%1" #~ msgstr "
%1" #~ msgctxt "ExprCurve|" #~ msgid "Selected Position: " #~ msgstr "Вибрана позиціÑ: " #~ msgctxt "builtin|" #~ msgid "" #~ "float round(float x)\n" #~ "constrain x to range [lo,hi]" #~ msgstr "" #~ "float round(float x)\n" #~ "найближче до x ціле значеннÑ" kseexpr-4.0.4.0/po/PaxHeaders/zh_CN0000644000000000000000000000003614156104526013765 xustar0030 mtime=1639483734.847245046 kseexpr-4.0.4.0/po/zh_CN/0000755000000000000240000000000014156104526014765 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/zh_CN/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003614156104526016476 xustar0030 mtime=1639483734.843743865 kseexpr-4.0.4.0/po/zh_CN/seexpr2_qt.po0000644000000000000240000013344714156104526017435 0ustar00rootroot00000000000000msgid "" msgstr "" "Project-Id-Version: kdeorg\n" "PO-Revision-Date: 2021-12-11 15:04\n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Qt-Contexts: true\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Crowdin-Project: kdeorg\n" "X-Crowdin-Project-ID: 269464\n" "X-Crowdin-Language: zh-CN\n" "X-Crowdin-File: /kf5-trunk/messages/kseexpr/seexpr2_qt.pot\n" "X-Crowdin-File-ID: 24866\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs(float x)\n" "x çš„ç»å¯¹å€¼" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" "float deg(float angle)\n" "将弧度转æ¢ä¸ºè§’度" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" "float rad(float angle)\n" "将角度转æ¢ä¸ºå¼§åº¦" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" "float cosd(float angle)\n" "求余弦角度" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" "float sind(float angle)\n" "求正弦角度" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" "float tand(float angle)\n" "求正切角度" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" "float acosd(float value)\n" "求å余弦角度" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" "float asind(float value)\n" "æ±‚åæ­£å¼¦è§’度" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" "float atand(float value)\n" "æ±‚åæ­£åˆ‡è§’度" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" "float atan2d(float y,float x)\n" "在 -180º å’Œ 180º 之间求 y/x çš„åæ­£åˆ‡è§’度" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" "float cos(float angle)\n" "求余弦弧度" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" "float sin(float angle)\n" "求正弦弧度" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" "float tan(float angle)\n" "求正切弧度" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" "float acos(float value)\n" "求å余弦弧度" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" "float asin(float value)\n" "æ±‚åæ­£å¼¦å¼§åº¦" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" "float atan(float value)\n" "æ±‚åæ­£åˆ‡å¼§åº¦" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" "float atan2(float y,float x)\n" "在 -PI å’Œ PI 之间求 y/x çš„åæ­£åˆ‡å¼§åº¦" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" "float cosh(float angle)\n" "æ±‚åŒæ›²ä½™å¼¦å¼§åº¦" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" "float sinh(float angle)\n" "æ±‚åŒæ›²æ­£å¼¦å¼§åº¦" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" "float tanh(float angle)\n" "æ±‚åŒæ›²æ­£åˆ‡å¼§åº¦" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" "float acosh(float value)\n" "æ±‚åŒæ›²å余弦弧度" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" "float asinh(float value)\n" "æ±‚åŒæ›²å正弦弧度" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" "float atanh(float value)\n" "æ±‚åŒæ›²å正切弧度" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" "float clamp(float x,float lo,float hi)\n" "å°† x é™åˆ¶åœ¨ [lo, hi] 范围内" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" "float round(float x)\n" "å– x 的最近似整数" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" "float max(float a,float b)\n" "å– a å’Œ b 的较大值" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" "float min(float a,float b)\n" "å– a å’Œ b 的较å°å€¼" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" "float trunc(float a)\n" "趋零截尾,求 x 在趋近零方å‘上的最近似整数" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" "float floor(float a)\n" "å–ä¸‹ä¸€æ›´å°æ•´æ•°" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" "float ceil(float a)\n" "å–下一更大整数" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" "float invert(float a)\n" "将数值进行å相,按照 1 - x 进行定义" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" "float cbrt(float x)\n" "求 x 的立方根" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" "float sqrt(float x)\n" "求 x 的平方根" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" "float exp(float x)\n" "求 E çš„ x 次方" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" "float pow(float x, float y)\n" "求 x çš„ y 次方 (也å¯ä»¥é€šè¿‡ ^ è¿ç®—符调用)" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" "float log(float x)\n" "求自然对数" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" "float log10(float x)\n" "求以 10 为底的对数" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" "float fmod(float x,float y)\n" "求 x/y 的余数 (也å¯ä»¥é€šè¿‡ % è¿ç®—符调用)" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "å–æ¯ç§å™ªå£°æ¡ä»¶çš„ç»å¯¹å€¼ï¼Œç»™å‡ºæ›´åŠ æ±¹æ¶Œçš„è§†è§‰æ•ˆæžœ" #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "å–æ¯ç§å™ªå£°æ¡ä»¶çš„ç»å¯¹å€¼ï¼Œç»™å‡ºæ›´åŠ æ±¹æ¶Œçš„è§†è§‰æ•ˆæžœ" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "å–æ¯ç§å™ªå£°æ¡ä»¶çš„ç»å¯¹å€¼ï¼Œç»™å‡ºæ›´åŠ æ±¹æ¶Œçš„è§†è§‰æ•ˆæžœ" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" "float compress(float x,float lo,float hi)\n" "å°† x 的动æ€èŒƒå›´ä»Ž [0, 1] 压缩至 [lo, hi]" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" "float expand(float x,float lo,float hi)\n" "å°† x 的动æ€èŒƒå›´ä»Ž [lo, hi] 扩展至 [0, 1]" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "å°† x 从 [a1,b1] èŒƒå›´çº¿æ€§é‡æ˜ å°„至 [a2,b2]" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" "float gamma(float x, float g)\n" "用 Gamma 系数 g 对 x 进行 Gamma æ ¡æ­£" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" "float bias(float x, float g)\n" "Gamma å˜é‡\n" "数值å°äºŽ 0.5 时拉低曲线,大于 0.5 时拉高曲线\n" "pow(x,log(b)/log(0.5))" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased.\n" "调整对比度。c 在 0 到 0.5 之间时,对比度将下é™ã€‚c 大于 0.5 时,对比度将æé«˜" #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" "float boxstep(float x,float a)\n" "当 x < a 时为 0,å¦åˆ™ä¸º 1" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" "float linearstep(float x, float a, float b)\n" "当 x < a 时为 0,当 x > b 时为 1\n" "当 a < x < b 时,x 在该范围线性过渡" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" "float smoothstep(float x,float a,float b)\n" "当 x < a 时为 0,当 x > b 时为 1\n" "当 a < x < b 时,x 在该范围平滑过渡 (åŒç«‹æ–¹æ’值)" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" "float gasussstep(float x,float a,float b)\n" "当 x < a 时为 0,当 x > b 时为 1\n" "当 a < x < b 时,x 在该范围平滑过渡 (高斯指数æ’值)" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" "remap(float x, float source, float range, float falloff, float interp)\n" "å¸¸è§„é‡æ˜ å°„函数\n" "当 x åœ¨æºæ•°æ®çš„ +/- range 范围内时,结果为 1\n" "当超出 falloff è·ç¦»æ—¶æ•°å€¼é™ä¸º 0\n" "falloff shape (滚é™å½¢çж) ç”± interp 进行控制\n" "è¯¥å‚æ•°å¯ä»¥é€šè¿‡æ•°å­—或者具å常é‡è°ƒç”¨ï¼š\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" "mix(float a,float b,float alpha)\n" "æ ¹æ® alpha (逿˜Žåº¦é€šé“) æ··åˆ a å’Œ b" #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" "color hsi(color x, float h, float s, float i, float map=1)\n" "hsi 函数按 h (å•ä½ä¸ºåº¦) 对色相进行 shift (åç§»)\n" "按 s 缩放饱和度,按 i 缩放亮度\n" "å¯ä»¥æä¾› map (映射值) æ¥æŽ§åˆ¶åç§»é‡\n" "map 为 1 时色相旋转一周,map 为 0 æ—¶è‰²ç›¸ä¸æ—‹è½¬\n" "map 在 0 到 1 之间时,åç§»é‡å°†ç­‰æ¯”例缩放" #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "midhsi 函数和 hsi 函数类似\n" "ä¸åŒä¹‹å¤„åœ¨äºŽå®ƒçš„æŽ§åˆ¶æ˜ å°„æŒ‰ä¸­é—´ç‚¹å¯¹é½ (数值为 0.5)\n" "å¯ä»¥å‘ä¸¤ä¸ªæ–¹å‘æŒ‰æ¯”例缩放色相åç§»é‡" #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color rgbtohsl(color rgb)\n" "RGB 到 HSL 色彩空间转æ¢\n" "HSL 代表 Hue (色相)ã€Saturation (饱和度)ã€Lightness (亮度) \n" "这些数值的范围全部为 [0..1]\n" "坿‰©å±•至支æŒåœ¨åˆç†èŒƒå›´å†…超出 [0..1] çš„ RGB å’Œ HSL 数值\n" "å¯¹äºŽä»»æ„ RGB 或者 HSL 数值 (负值除外)\n" "æ­¤è½¬æ¢æ“作是定义明确且å¯é€†çš„" #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color hsltorgb(color hsl)\n" "HSL 到 RGB 色彩空间转æ¢\n" "HSL 代表 Hue (色相)ã€Saturation (饱和度)ã€Lightness (亮度) \n" "这些数值的范围全部为 [0, 1]\n" "坿‰©å±•至支æŒåœ¨åˆç†èŒƒå›´å†…超出 [0, 1] çš„ RGB å’Œ HSL 数值\n" "å¯¹äºŽä»»æ„ RGB 或者 HSL 数值 (负值除外)\n" "æ­¤è½¬æ¢æ“作是定义明确且å¯é€†çš„" #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" "color saturate(color val, float amt)\n" "按照 amt 缩放颜色的饱和度\n" "颜色将按照 rec.709 亮度值进行缩放\n" "负值的结果将被压缩为零\n" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" "float rand ( [float min, float max], [float seed] )\n" "在 [min, max] èŒƒå›´å†…çš„éšæœºæ•°å­— (å¦‚æžœä¸æŒ‡å®šèŒƒå›´ï¼ŒèŒƒå›´ä¸º [0, 1] )。\n" "如果æä¾›äº†å¤–部ç§å­ï¼Œå†…部ç§å­å°†å’Œå¤–部ç§å­ä¸€åŒè¢«ä½¿ç”¨ï¼Œå¯ä»¥ç”¨äºŽç¼–写å„ç§æ•ˆæžœç‹¬ç‰¹" "的生æˆå™¨ã€‚" #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" "float hash(float seed1,[float seed2, ...])\n" "å’Œ rand 类似,但ä¸å¸¦æœ‰å†…部ç§å­ï¼Œå¯ä»¥æŒ‡å®šä»»æ„æ•°é‡çš„ç§å­\n" "结果为基于所有ç§å­çš„éšæœºå‡½æ•°" #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "è¾“å‡ºåŽŸå§‹æŸæž—噪声,ä½ç½®ä¸º (C2 æ’值函数)" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" "float snoise ( vector v)\n" "è¾“å‡ºæœ‰æ­£è´Ÿä¹‹åˆ†çš„å™ªå£°ï¼Œä»¥åŽŸå§‹æŸæž—噪声生æˆï¼ŒèŒƒå›´ä¸º -1 到 1,ä½ç½®ä¸º (C2 æ’值函" "æ•°)" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "vector vnoise ( vector v)\n" "输出有正负之分的矢é‡å™ªå£°ï¼Œä»¥åŽŸå§‹æŸæž—噪声生æˆï¼Œä½ç½®ä¸º (C2 æ’值函数)" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise ( vector v)\n" "è¾“å‡ºé¢œè‰²å™ªå£°ï¼Œä»¥åŽŸå§‹æŸæž—噪声生æˆï¼Œä½ç½®ä¸º (C2 æ’值函数)" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" "float snoise4 ( vector v,float t)\n" "输出有正负之分的 4D å™ªå£°ï¼Œä»¥åŽŸå§‹æŸæž—噪声生æˆï¼ŒèŒƒå›´ä¸º -1 到 1,ä½ç½®ä¸º (C2 æ’值" "函数)" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" "vector vnoise4 ( vector v,float t)\n" "输出有正负之分的 4D 矢é‡å™ªå£°ï¼Œä»¥åŽŸå§‹æŸæž—噪声生æˆï¼Œä½ç½®ä¸º (C2 æ’值函数)" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise4 ( vector v,float t)\n" "输出 4D é¢œè‰²å™ªå£°ï¼Œä»¥åŽŸå§‹æŸæž—噪声生æˆï¼Œä½ç½®ä¸º (C2 æ’值函数)" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion / 分形布朗è¿åЍ) 是一个多频率噪声函数\n" "它的基本频率和 noise 函数相åŒ\n" "它的频率总数通过 octaves 控制\n" "lacunarity 是频率之间的间隙,当它为 2 æ—¶\n" "代表æ¯ä¸€ octave (八度) 的频率是å‰ä¸€å…«åº¦çš„ 2 å€\n" "gain 控制æ¯ä¸ªé¢‘率相对å‰ä¸€é¢‘率如何按比例缩放" #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion / 分形布朗è¿åЍ) 是一个多频率噪声函数\n" "它的基本频率和 noise 函数相åŒ\n" "它的频率总数通过 octaves 控制\n" "lacunarity 是频率之间的间隙,当它为 2 æ—¶\n" "代表æ¯ä¸€ octave (八度) 的频率是å‰ä¸€å…«åº¦çš„ 2 å€\n" "gain 控制æ¯ä¸ªé¢‘率相对å‰ä¸€é¢‘率如何按比例缩放" #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "float cellnoise(vector v)\n" "cellnoise ä¼šåœ¨ä¸€ç‰‡åŒºåŸŸä¸­ä¾æ®æ•´æ•°ä½ç½®ç”Ÿæˆä¸€ç‰‡å¸¦æœ‰æ’定颜色的方å—\n" "它和 PRMan cellnoise function 功能一致" #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "color cellnoise(vector v)\n" "cellnoise ä¼šåœ¨ä¸€ç‰‡åŒºåŸŸä¸­ä¾æ®æ•´æ•°ä½ç½®ç”Ÿæˆä¸€ç‰‡å¸¦æœ‰æ’定颜色的方å—\n" "它和 PRMan cellnoise function 功能一致" #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" "float pnoise ( vector v, vector period )\n" "输出周期噪声" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi 是一ç§èœ‚çªçŠ¶å™ªå£°å›¾æ¡ˆï¼Œå®ƒæ˜¯ cellnoise 的抖动å˜ä½“" #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "给蜂çªå›¾æ¡ˆçš„æ¯ä¸€æ ¼è¿”å›žä¸€ç§éšæœºé¢œè‰²ï¼Œå®ƒæ˜¯ cellnoise 的抖动å˜ä½“" #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "返回蜂çªå›¾æ¡ˆæ ¼å­ä¸­å¿ƒç‚¹ä½ç½®" #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" "float dist(vector a, vector b)\n" "求两点间è·ç¦»" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" "float length(vector v)\n" "求矢é‡çš„长度" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" "float hypot(vector v)\n" "æ±‚äºŒç»´çŸ¢é‡ [x, y] 的长度" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" "float dot(vector a,vector b)\n" "求矢é‡çš„æ ‡é‡ç§¯" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" "vector norm(vector v)\n" "求矢é‡ç¼©æ”¾è‡³å•ä½é•¿åº¦åŽçš„矢é‡" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" "vector cross(vector a,vector b)\n" "求矢é‡çš„矢é‡ç§¯" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" "float angle(vector a,vector b)\n" "求两个矢é‡ä¹‹é—´çš„夹角 (输出弧度)" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length\n" "æ±‚ä¸ŽçŸ¢é‡ a å’Œ b 正交的归一化矢é‡ï¼Œç¼©æ”¾è‡³å•元长度" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" "vector rotate(vector v,vector axis,float angle)\n" "按照给定的角度 angle (弧度数值)ï¼Œç»•è½´æ—‹è½¬çŸ¢é‡ v" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" "vector up(vector P,vector upvec)\n" "æ—‹è½¬çŸ¢é‡ v,使其 Y 轴指å‘给定的 up æ–¹å‘。" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" "int cycle(int index, int loRange, int hiRange )\n" "按照æä¾›çš„ index (索引) 在 loRange å’Œ hiRange 之间 cycle (循环) 输出数值。\n" "这是一个 offset (åç§»)çš„ “mod†函数。其结果按照 ``loRange + value % (hiRange-" "loRange+1)`` 进行计算。" #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "按照æä¾›çš„ index (索引值,通过自动散列得到 / automatically hashed) \n" "在 loRange å’Œ hiRange ä¹‹é—´éšæœºé€‰å–数值,数值将按照æä¾›çš„ weight (æƒé‡) 分布\n" "未æä¾›æƒé‡çš„å‡è®¾å…¶æƒé‡ä¸º 1.0" #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "在æä¾›çš„颜色选项中基于 index (索引) 选å–其中之一 (å‡è®¾èŒƒå›´ä¸º [0..1])" #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" "float choose(float index,float choice1, float choice2, [...])\n" "在æä¾›çš„选项中基于 index (索引) 选å–其中之一 (å‡è®¾èŒƒå›´ä¸º [0, 1])" #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "按照索引 (å‡è®¾èŒƒå›´ä¸º [0..1]) 从æä¾›çš„选项中选择其一,数值将按照æä¾›çš„æƒé‡è¿›è¡Œ" "分布" #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "å°†ä¸€ç»„æ•°å€¼æŒ‰ç…§æŒ‡å®šå‚æ•°è¿›è¡Œæ’值\n" "y1 至 yn 的数值在 [0..1] 范围内等è·åˆ†å¸ƒ" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "用 param 处给定的控制点对一维梯度进行æ’值\n" "æŽ§åˆ¶ç‚¹ç”±ä¸‰å…ƒå‚æ•° pos_iã€val_iã€interp_i 进行指定\n" "0 - none (æ— )ã€1 - linear (线性)ã€2 - smooth (平滑)ã€3 - spline (æ ·æ¡æ›²çº¿)\n" "4 - monotone (non-oscillating) spline (å•è°ƒ/éžæŒ¯åŠ¨æ ·æ¡æ›²çº¿)" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "用 param 处给定的控制点对颜色梯度进行æ’值\n" "æŽ§åˆ¶ç‚¹ç”±ä¸‰å…ƒå‚æ•° pos_iã€val_iã€interp_i 进行指定\n" "0 - none (æ— )ã€1 - linear (线性)ã€2 - smooth (平滑)ã€3 - spline (æ ·æ¡æ›²çº¿)\n" "4 - monotone (non-oscillating) spline (å•è°ƒ/éžæŒ¯åŠ¨æ ·æ¡æ›²çº¿)" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" "getVar(string varName,vector defaultValue)\n" "如果 varName å˜é‡å­˜åœ¨ï¼Œè¿”回它的值,å¦åˆ™è¿”回 defaultValue" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" "float printf(string format,[vec0, vec1, ...])\n" "打å°ä¸€æ¡å­—符串到 STDOUT,å¯ä»¥ä½¿ç”¨çš„æ ¼å¼å‚数是 “%v†和 “%fâ€ã€‚\n" "è¿”å›žå‚æ•°ä¸ºç©ºï¼Œä½†å¿…须被指定到一个å˜é‡ã€‚" #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" "sprintf(string format, [double|string, double|string, ...])\n" "返回按照给定的值进行格å¼åŒ–的字符串,更多格å¼ç»†èŠ‚è¯·é€šè¿‡ man sprintf 指令学习" #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "新增å˜é‡" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "éœ€è¦ string 或者 float[d]" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "éœ€è¦ float[d]" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "éœ€è¦ float[%1]" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "类型ä¸åŒ¹é…,第一个: '%1'; 第二个: '%2'" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "éœ€è¦ float 或者 float[3]" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "傿•°éœ€è¦ '%1' ,但得到了 '%2'" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "傿•°æ•°é‡ä¸æ­£ç¡®ï¼Œåº”为 1 到 7" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "傿•°æ•°é‡ä¸æ­£ç¡®ï¼Œåº”为 3 çš„å€æ•°åŠ  1" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "傿•°æ•°é‡ä¸æ­£ç¡®ï¼Œåº”为 1 或者更多" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "ç¬¬ä¸€ä¸ªå‚æ•°å¿…须是字符串" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "æ ¼å¼åŒºåˆ†ç¬¦ä¸å®Œæ•´" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "ä¸å­˜åœ¨å为 '%1' çš„å˜é‡" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "函数 '%1' 没有定义" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "赋值è¿ç®—符类型 '%1' 䏿­£ç¡®" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "æ¡ä»¶ç±»åž‹ä¸å…¼å®¹" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "å˜é‡ '%1' 定义æ¡ä»¶ä¸ä¸€è‡´" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "函数 '%1' çš„å‚æ•°è¿‡å°‘" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "函数 '%1' çš„å‚æ•°è¿‡å¤š" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "表达å¼ç”Ÿæˆç±»åž‹â€œ%1â€ï¼Œä¸å…¼å®¹äºŽé¢„期类型“%2â€" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "在 '%1' 附近å‘生语法错误" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "在 '%1' é™„è¿‘è¡¨è¾¾å¼æ„外结æŸ" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "æ ¼å¼å­—符串æ„外结æŸ" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "无效的格å¼å­—符串,åªå¯ä½¿ç”¨ %v 或者 %f" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "æ ¼å¼å­—ç¬¦ä¸²çš„å‚æ•°æ•°é‡é”™è¯¯" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "未知错误 (æ¶ˆæ¯ = %1)" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "Variable(å˜é‡)" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "Lookup(查找)" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "Curve(曲线)" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "Color Curve(颜色曲线)" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "Default(默认值)" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "Min(最å°å€¼)" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "Max(最大值)" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "Int(æ•´æ•°)" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "Float(浮点)" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "Vector(矢é‡)" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "Color(颜色)" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "Rainbow(彩虹色)" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "Shades of Gray(ç°åº¦è‰²)" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "Colors(颜色)" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "Swatch(色å—)" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "string(字符串)" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "file(文件)" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "directory(目录)" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "String Name(字符串åç§°)" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "String Type(字符串类型)" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "String Default(字符串默认值)" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "String(字符串)" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "ä¿å­˜è¡¨è¾¾å¼" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "无法打开文件 %1 进行写入" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "错误" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "无法打开文件 %1 进行写入,它是åªè¯»æ–‡ä»¶å—?" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "删除点" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "选定的ä½ç½®:" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "选定的颜色:" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "None(æ— )" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "Linear(线性)" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "Smooth(平滑)" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "Spline(æ ·æ¡æ›²çº¿)" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "MSpline(å•è°ƒæ ·æ¡æ›²çº¿)" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "展开(&E)…" #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "删除色å—" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "å–æ¶ˆ" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "新增(&A)…" #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "局部å˜é‡" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "请选择文件" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "å›¾åƒ (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "Pos:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "Val:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "删除点" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "选定的ä½ç½®:" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "选定的数值:" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "Interp:" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "None(æ— )" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "Linear(线性)" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "Smooth(平滑)" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "Spline(æ ·æ¡æ›²çº¿)" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "MSpline(å•è°ƒæ ·æ¡æ›²çº¿)" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "展开(&E)…" #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "表达å¼ç¼–辑器" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "打开" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "常用" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "浮动å¼å¸®åŠ©" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" kseexpr-4.0.4.0/po/PaxHeaders/zh_TW0000644000000000000000000000003614156104533014015 xustar0030 mtime=1639483739.745788751 kseexpr-4.0.4.0/po/zh_TW/0000755000000000000240000000000014156104533015015 5ustar00rootroot00000000000000kseexpr-4.0.4.0/po/zh_TW/PaxHeaders/seexpr2_qt.po0000644000000000000000000000003514156104533016525 xustar0029 mtime=1639483739.74191433 kseexpr-4.0.4.0/po/zh_TW/seexpr2_qt.po0000644000000000000240000013246314156104533017462 0ustar00rootroot00000000000000# Alvin , 2021. msgid "" msgstr "" "Project-Id-Version: \n" "PO-Revision-Date: 2021-07-03 16:12+0800\n" "Last-Translator: Alvin \n" "Language-Team: Chinese \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Qt-Contexts: true\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Lokalize 21.04.1\n" #: KSeExpr/ExprBuiltins.cpp:27 msgctxt "builtin|" msgid "" "float abs(float x)\n" "absolute value of x" msgstr "" "float abs(float x)\n" "x 的絕å°å€¼" #: KSeExpr/ExprBuiltins.cpp:30 msgctxt "builtin|" msgid "" "float deg(float angle)\n" "radians to degrees" msgstr "" "float deg(float angle)\n" "轉æ›å¼§åº¦ (rad) 至角度 (deg)" #: KSeExpr/ExprBuiltins.cpp:31 msgctxt "builtin|" msgid "" "float rad(float angle)\n" "degrees to radians" msgstr "" "float rad(float angle)\n" "轉æ›è§’度 (deg) 至弧度 (rad)" #: KSeExpr/ExprBuiltins.cpp:33 msgctxt "builtin|" msgid "" "float cosd(float angle)\n" "cosine in degrees" msgstr "" "float cosd(float angle)\n" "以角度 (deg) 計算餘弦 (cos)" #: KSeExpr/ExprBuiltins.cpp:34 msgctxt "builtin|" msgid "" "float sind(float angle)\n" "sine in degrees" msgstr "" "float sind(float angle)\n" "以角度 (deg) 計算正弦 (sin)" #: KSeExpr/ExprBuiltins.cpp:35 msgctxt "builtin|" msgid "" "float tand(float angle)\n" "tangent in degrees" msgstr "" "float tand(float angle)\n" "以角度 (deg) 計算正切 (tan)" #: KSeExpr/ExprBuiltins.cpp:36 msgctxt "builtin|" msgid "" "float acosd(float value)\n" "arc cosine in degrees" msgstr "" "float acosd(float value)\n" "以角度 (deg) 計算å餘弦 (arccos)" #: KSeExpr/ExprBuiltins.cpp:37 msgctxt "builtin|" msgid "" "float asind(float value)\n" "arc sine in degrees" msgstr "" "float asind(float value)\n" "以角度 (deg) è¨ˆç®—åæ­£å¼¦ (arcsin)" #: KSeExpr/ExprBuiltins.cpp:38 msgctxt "builtin|" msgid "" "float atand(float value)\n" "arc tangent in degrees" msgstr "" "float atand(float value)\n" "以角度 (deg) è¨ˆç®—åæ­£åˆ‡ (arctan)" #: KSeExpr/ExprBuiltins.cpp:39 msgctxt "builtin|" msgid "" "float atan2d(float y,float x)\n" "arc tangent in degrees of y/x between -180 and 180" msgstr "" "float atan2d(float y,float x)\n" "以角度 (deg) 計算在 -180° åŠ 180° 之間 y/x çš„åæ­£åˆ‡ (arctan)" #: KSeExpr/ExprBuiltins.cpp:41 msgctxt "builtin|" msgid "" "float cos(float angle)\n" "cosine in radians" msgstr "" "float cos(float angle)\n" "以弧度 (rad) 計算餘弦 (cos)" #: KSeExpr/ExprBuiltins.cpp:42 msgctxt "builtin|" msgid "" "float sin(float angle)\n" "sine in radians" msgstr "" "float sin(float angle)\n" "以弧度 (rad) 計算正弦 (sin)" #: KSeExpr/ExprBuiltins.cpp:43 msgctxt "builtin|" msgid "" "float tan(float angle)\n" "tangent in radians" msgstr "" "float tan(float angle)\n" "以弧度 (rad) 計算正切 (tan)" #: KSeExpr/ExprBuiltins.cpp:44 msgctxt "builtin|" msgid "" "float acos(float value)\n" "arc cosine in radians" msgstr "" "float acos(float value)\n" "以弧度 (rad) 計算å餘弦 (arccos)" #: KSeExpr/ExprBuiltins.cpp:45 msgctxt "builtin|" msgid "" "float asin(float value)\n" "arc sine in radians" msgstr "" "float asin(float value)\n" "以弧度 (rad) è¨ˆç®—åæ­£å¼¦ (arcsin)" #: KSeExpr/ExprBuiltins.cpp:46 msgctxt "builtin|" msgid "" "float atan(float value)\n" "arc tangent in radians" msgstr "" "float atan(float value)\n" "以弧度 (rad) è¨ˆç®—åæ­£åˆ‡ (arctan)" #: KSeExpr/ExprBuiltins.cpp:47 msgctxt "builtin|" msgid "" "float atan2(float y,float x)\n" "arc tangent in radians of y/x between -PI and PI" msgstr "" "float atan2d(float y,float x)\n" "以弧度 (rad) 計算在 -PI åŠ PI 之間 y/x çš„åæ­£åˆ‡ (arctan)" #: KSeExpr/ExprBuiltins.cpp:49 msgctxt "builtin|" msgid "" "float cosh(float angle)\n" "hyperbolic cosine in radians" msgstr "" "float cosh(float angle)\n" "以弧度 (rad) 計算雙曲餘弦 (cosh)" #: KSeExpr/ExprBuiltins.cpp:50 msgctxt "builtin|" msgid "" "float sinh(float angle)\n" "hyperbolic sine in radians" msgstr "" "float sin(float angle)\n" "以弧度 (rad) 計算雙曲正弦 (sinh)" #: KSeExpr/ExprBuiltins.cpp:51 msgctxt "builtin|" msgid "" "float tanh(float angle)\n" "hyperbolic tangent in radians" msgstr "" "float tan(float angle)\n" "以弧度 (rad) 計算雙曲正切 (tanh)" #: KSeExpr/ExprBuiltins.cpp:52 msgctxt "builtin|" msgid "" "float acosh(float value)\n" "hyperbolic arc cosine in radians" msgstr "" "float acosh(float value)\n" "以弧度 (rad) 計算å雙曲餘弦 (arcosh)" #: KSeExpr/ExprBuiltins.cpp:53 msgctxt "builtin|" msgid "" "float asinh(float value)\n" "hyperbolic arc sine in radians" msgstr "" "float asinh(float value)\n" "以弧度 (rad) 計算å雙曲正弦 (arsinh)" #: KSeExpr/ExprBuiltins.cpp:54 msgctxt "builtin|" msgid "" "float atanh(float value)\n" "hyperbolic arc tangent in radians" msgstr "" "float atanh(float value)\n" "以弧度 (rad) 計算å雙曲正切 (artanh)" #: KSeExpr/ExprBuiltins.cpp:56 msgctxt "builtin|" msgid "" "float clamp(float x,float lo,float hi)\n" "constrain x to range [lo,hi]" msgstr "" "float clamp(float x,float lo,float hi)\n" "å°‡ x å±€é™åˆ° [lo,hi] 之間" #: KSeExpr/ExprBuiltins.cpp:57 msgctxt "builtin|" msgid "" "float round(float x)\n" "nearest integer to x" msgstr "" "float round(float x)\n" "å– x 最近整數值" #: KSeExpr/ExprBuiltins.cpp:58 msgctxt "builtin|" msgid "" "float max(float a,float b)\n" "greater of a and b" msgstr "" "float max(float a,float b)\n" "å– a 與 b 之間的最大值" #: KSeExpr/ExprBuiltins.cpp:59 msgctxt "builtin|" msgid "" "float min(float a,float b)\n" "lesser of a and b" msgstr "" "float min(float a,float b)\n" "å– a 與 b 之間的最å°å€¼" #: KSeExpr/ExprBuiltins.cpp:60 msgctxt "builtin|" msgid "" "float trunc(float a)\n" "nearest integer towards zero" msgstr "" "float trunc(float a)\n" "å‘ 0 å–æœ€è¿‘整數值" #: KSeExpr/ExprBuiltins.cpp:61 msgctxt "builtin|" msgid "" "float floor(float a)\n" "next lower integer" msgstr "" "float floor(float a)\n" "å‘䏋喿•´æ•¸å€¼" #: KSeExpr/ExprBuiltins.cpp:62 msgctxt "builtin|" msgid "" "float ceil(float a)\n" "next higher integer" msgstr "" "float ceil(float a)\n" "å‘ä¸Šå–æ•´æ•¸å€¼" #: KSeExpr/ExprBuiltins.cpp:64 msgctxt "builtin|" msgid "" "float invert(float a)\n" "Defined as 1-x" msgstr "" "float invert(float a)\n" "已定義為 1-x" #: KSeExpr/ExprBuiltins.cpp:65 msgctxt "builtin|" msgid "" "float cbrt(float x)\n" "cube root" msgstr "" "float cbrt(float x)\n" "立方根" #: KSeExpr/ExprBuiltins.cpp:66 msgctxt "builtin|" msgid "" "float sqrt(float x)\n" "square root" msgstr "" "float sqrt(float x)\n" "平方根" #: KSeExpr/ExprBuiltins.cpp:67 msgctxt "builtin|" msgid "" "float exp(float x)\n" "E raised to the x power" msgstr "" "float exp(float x)\n" "E çš„ x 次方 (指數函數)" #: KSeExpr/ExprBuiltins.cpp:68 msgctxt "builtin|" msgid "" "float pow(float x, float y)\n" "x to the y power, also available as ^" msgstr "" "float pow(float x, float y)\n" "x çš„ y 次方,亦å¯ç”¨é‹ç®—符號 ^ 表é”" #: KSeExpr/ExprBuiltins.cpp:69 msgctxt "builtin|" msgid "" "float log(float x)\n" "Natural logarithm" msgstr "" "float log(float x)\n" "è‡ªç„¶å°æ•¸" #: KSeExpr/ExprBuiltins.cpp:70 msgctxt "builtin|" msgid "" "float log10(float x)\n" "Base 10 logarithm" msgstr "" "float log10(float x)\n" "基數為 10 çš„å°æ•¸" #: KSeExpr/ExprBuiltins.cpp:71 msgctxt "builtin|" msgid "" "float fmod(float x,float y)\n" "remainder of x/y (also available as % operator)" msgstr "" "float fmod(float x,float y)\n" "x/y 的餘數,亦å¯ç”¨é‹ç®—符號 % 表é”" #: KSeExpr/ExprBuiltins.cpp:72 msgctxt "builtin|" msgid "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "將喿¯å€‹é›œè¨Šæ•¸å€¼çš„絕å°å€¼ã€‚這會產生一個比較膨脹飽滿的外觀" #: KSeExpr/ExprBuiltins.cpp:75 msgctxt "builtin|" msgid "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "將喿¯å€‹é›œè¨Šæ•¸å€¼çš„絕å°å€¼ã€‚這會產生一個比較膨脹飽滿的外觀" #: KSeExpr/ExprBuiltins.cpp:78 msgctxt "builtin|" msgid "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "Absolute value of each noise term is taken. This gives billowy appearance" msgstr "" "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "將喿¯å€‹é›œè¨Šæ•¸å€¼çš„絕å°å€¼ã€‚這會產生一個比較膨脹飽滿的外觀" #: KSeExpr/ExprBuiltins.cpp:86 msgctxt "builtin|" msgid "" "float compress(float x,float lo,float hi)\n" "Remaps x in [0,1] to [lo,hi]" msgstr "" "float compress(float x,float lo,float hi)\n" "å°‡ x ç”± [0,1] 映射到 [lo,hi]" #: KSeExpr/ExprBuiltins.cpp:94 msgctxt "builtin|" msgid "" "float expand(float x,float lo,float hi)\n" "Remaps x in [lo,hi] to [0,1]" msgstr "" "float expand(float x,float lo,float hi)\n" "å°‡ x ç”± [lo,hi] 映射到 [0,1]" #: KSeExpr/ExprBuiltins.cpp:100 msgctxt "builtin|" msgid "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "Linearly remaps x in [a1,b1] to [a2,b2]" msgstr "" "float fit(float x,float a1,float b1,float a2,float b2)\n" "線性地將 x ç”± [a1,b1] 映射到 [a2,b2]" #: KSeExpr/ExprBuiltins.cpp:106 msgctxt "builtin|" msgid "" "float gamma(float x, float g)\n" "Gamma correction of x with gamma factor g" msgstr "" "float gamma(float x, float g)\n" "ä»¥ä¼½é¦¬å› å­ (gamma factor) g å° x 作伽馬修正" #: KSeExpr/ExprBuiltins.cpp:113 msgctxt "builtin|" msgid "" "float bias(float x, float g)\n" "Variation of gamma where values less than 0.5 pull the curve down\n" "and values greater than 0.5 pull the curve up\n" "pow(x,log(b)/log(0.5))" msgstr "" "float bias(float x, float g)\n" "gamma 的變異:低於 0.5 的值會將曲線下拉,\n" "而高於 0.5 的值會將曲線上推\n" "pow(x,log(b)/log(0.5))" #: KSeExpr/ExprBuiltins.cpp:124 msgctxt "builtin|" msgid "" "float contrast(float x, float c)\n" "Adjust the contrast.  For c from 0 to 0.5, the contrast is decreased." "  For c > 0.5, the contrast is increased." msgstr "" "float contrast(float x,float c)\n" "å°æ¯”度調整。0 至 0.5 之間的 c å€¼æœƒèª¿ä½Žå°æ¯”度,而大於 0.5 çš„ c å€¼æœƒèª¿é«˜å°æ¯”" "度。" #: KSeExpr/ExprBuiltins.cpp:132 msgctxt "builtin|" msgid "" "float boxstep(float x,float a)\n" " if x < a then 0 otherwise 1" msgstr "" "float boxstep(float x,float a)\n" "如 x < a 則傳回 0,å¦å‰‡å‚³å›ž 1" #: KSeExpr/ExprBuiltins.cpp:143 msgctxt "builtin|" msgid "" "float linearstep(float x, float a, float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions linearly when a < x < b" msgstr "" "float linearstep(float x,float a,float b)\n" "如 x < a 則傳回 0,如 x > b 則傳回 1,\n" "如 a < x < b 則為 x ä½œç·šæ€§éŽæ¸¡" #: KSeExpr/ExprBuiltins.cpp:165 msgctxt "builtin|" msgid "" "float smoothstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (cubic) when a < x < b" msgstr "" "float smoothstep(float x,float a,float b)\n" "如 x < a 則傳回 0,如 x > b 則傳回 1,\n" "如 a < x < b 則為 x ä½œå¹³æ»‘éŽæ¸¡ (cubic)" #: KSeExpr/ExprBuiltins.cpp:187 msgctxt "builtin|" msgid "" "float gasussstep(float x,float a,float b)\n" " if x < a then 0, if x > b then 1, and\n" "x transitions smoothly (exponentially) when a < x < b" msgstr "" "float gasussstep(float x,float a,float b)\n" "如 x < a 則傳回 0,如 x > b 則傳回 1,\n" "如 a < x < b 則為 x ä½œå¹³æ»‘éŽæ¸¡ (exponentially)" #: KSeExpr/ExprBuiltins.cpp:218 msgctxt "builtin|" msgid "" "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" msgstr "" "remap(float x, float source, float range, float falloff, float interp)\n" "泛用的數值映射函數。\n" "ç•¶ x 使–¼ source +/- range 的範åœå…§ï¼Œçµæžœç‚º 1。\n" "在範åœä»¥å¤–將會在 falloff è·é›¢ä¸­ä¸‹é™åˆ° 0。\n" "下é™å½¢ç‹€ç”± interp 控制。å¯ä½¿ç”¨ä¸‹åˆ—的列舉數值或\n" "命å常數字串:    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n" #: KSeExpr/ExprBuiltins.cpp:233 msgctxt "builtin|" msgid "" "mix(float a,float b,float alpha)\n" "Blend of a and b according to alpha." msgstr "" "mix(float a,float b,float alpha)\n" "根據 alpha æ··åˆ a å’Œ b。" #: KSeExpr/ExprBuiltins.cpp:260 msgctxt "builtin|" msgid "" "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one." msgstr "" "color hsi(color x, float h, float s, float i, float map=1)\n" "將色相 (hue) åç§» h åº¦ï¼ŒåŒæ™‚將飽和度åŠå¼·åº¦åˆ†åˆ¥ä¹˜ä»¥ s åŠ i。\n" "map å¯ä»¥æŽ§åˆ¶å移的幅度——map 為 1 時作全幅度å移,\n" "而 map 為 0 時則ä¸ä½œå移,在 0 å’Œ 1 之間時則按比例å移。" #: KSeExpr/ExprBuiltins.cpp:306 msgctxt "builtin|" msgid "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions." msgstr "" "color midhsi(color x, float h, float s, float i, float map, float falloff=1, " "int interp=0)\n" "與 hsi 函數相似,ä¸éŽ midhsi åƒæ•¸ map 的中間點為 0.5,\n" "å¯å¾ªå…©å€‹æ–¹å‘控制å移的比例。" #: KSeExpr/ExprBuiltins.cpp:358 msgctxt "builtin|" msgid "" "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color rgbtohsl(color rgb)\n" "è½‰æ› RGB 色彩空間至 HSL。\n" "HSL 為色相ã€é£½å’Œåº¦ã€äº®åº¦ (範åœç‚º [0..1] )\n" "é€™äº›å‡½æ•¸å·²è¢«æ“´å±•è‡³æ”¯æ´ [0..1] 範åœä»¥å¤–çš„ RGB åŠ HSL 值。\n" "任何 RGB 或 HSL 值 (負數的 s 值除外) 都有明確的定義,å¯é€†å‘轉æ›ã€‚" #: KSeExpr/ExprBuiltins.cpp:413 msgctxt "builtin|" msgid "" "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible." msgstr "" "color hsltorgb(color hsl)\n" "è½‰æ› HSL 色彩空間至 RGB。\n" "HSL 為色相ã€é£½å’Œåº¦ã€äº®åº¦ (範åœç‚º [0..1] )\n" "é€™äº›å‡½æ•¸å·²è¢«æ“´å±•è‡³æ”¯æ´ [0..1] 範åœä»¥å¤–çš„ RGB åŠ HSL 值。\n" "任何 RGB 或 HSL 值 (負數的 s 值除外) 都有明確的定義,å¯é€†å‘轉æ›ã€‚" #: KSeExpr/ExprBuiltins.cpp:441 msgctxt "builtin|" msgid "" "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n" msgstr "" "color saturate(color val, float amt)\n" "將飽和度乘以 amt。\n" "色彩會根據 rec709 的光度值按比例縮放,\n" "è€Œè² æ•¸çš„çµæžœæœƒè®Šç‚º 0。\n" #: KSeExpr/ExprBuiltins.cpp:499 msgctxt "builtin|" msgid "" "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and " "may be used to create multiple distinct generators." msgstr "" "float rand ( [float min, float max], [float seed] )\n" "[min, max] 之間的隨機數 (䏿Œ‡å®šç¯„åœçš„話則為 [0, 1] 之間)。\n" "如果æä¾› seed (種å­) åƒæ•¸ï¼Œæœƒèˆ‡å…§ç½®çš„隨機數種å­åŒæ™‚使用,å¯ç”¨ä½œå»ºç«‹å¤šå€‹ä¸åŒçš„" "產生器。" #: KSeExpr/ExprBuiltins.cpp:553 msgctxt "builtin|" msgid "" "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds." msgstr "" "float hash(float seed1,[float seed2, ...])\n" "與 rand 函數相似,ä¸éŽæ²’有使用內置的隨機數種å­ã€‚å¯æä¾›ä»»ä½•æ•¸ç›®\n" "的隨機數種å­ï¼Œçµæžœå°‡æœƒæ˜¯ç”±åˆä½µæ‰€æœ‰ç¨®å­æ‰€å¾—出的隨機數。" #: KSeExpr/ExprBuiltins.cpp:596 msgctxt "builtin|" msgid "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)" msgstr "" "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "原版 Perlin 雜訊 (C2 æ’值)" #: KSeExpr/ExprBuiltins.cpp:610 msgctxt "builtin|" msgid "" "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location " "(C2 interpolant)" msgstr "" "float snoise ( vector v)\n" "嫿­£è² æ•¸ã€ç¯„åœç‚º -1 至 1 的雜訊,由原版 Perlin 雜訊 (C2 æ’值) 產生" #: KSeExpr/ExprBuiltins.cpp:621 msgctxt "builtin|" msgid "" "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "vector vnoise ( vector v)\n" "å‘é‡é›œè¨Šï¼Œç”±åŽŸç‰ˆ Perlin 雜訊 (C2 æ’值) 產生" #: KSeExpr/ExprBuiltins.cpp:629 msgctxt "builtin|" msgid "" "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise ( vector v)\n" "色彩雜訊,由原版 Perlin 雜訊 (C2 æ’值) 產生" #: KSeExpr/ExprBuiltins.cpp:640 msgctxt "builtin|" msgid "" "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at " "location (C2 interpolant)" msgstr "" "float snoise4 ( vector v,float t)\n" "4D 且範åœç‚º -1 至 1 的雜訊,由原版 Perlin 雜訊 (C2 æ’值) 產生" #: KSeExpr/ExprBuiltins.cpp:651 msgctxt "builtin|" msgid "" "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 " "interpolant)" msgstr "" "vector vnoise4 ( vector v,float t)\n" "4D å‘é‡é›œè¨Šï¼Œç”±åŽŸç‰ˆ Perlin 雜訊 (C2 æ’值) 產生" #: KSeExpr/ExprBuiltins.cpp:659 msgctxt "builtin|" msgid "" "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)" msgstr "" "color cnoise4 ( vector v,float t)\n" "4D 色彩雜訊,由原版 Perlin 雜訊 (C2 æ’值) 產生" #: KSeExpr/ExprBuiltins.cpp:751 msgctxt "builtin|" msgid "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total number " "of frequencies is controlled by octaves. The lacunarity is the spacing " "between the frequencies - a value of 2 means each octave is twice the " "previous frequency. The gain controls how much each frequency is scaled " "relative to the previous frequency." msgstr "" "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "FBM (Fractal Brownian Motion,碎形布朗é‹å‹•) 為多個頻率週波雜訊函數。\n" "基本頻率與 noise 函數相åŒã€‚總週波數目由 octaves 控制。lacunarity 控制週波間è·" "â€”â€”è‹¥åƒæ•¸å€¼ç‚º 2 則表示æ¯å€‹ actave 為上一個週波頻率的兩å€ã€‚gain 控制æ¯å€‹é€±æ³¢ç›¸" "å°æ–¼ä¸Šä¸€å€‹é€±æ³¢çš„æŒ¯å¹…比例。" #: KSeExpr/ExprBuiltins.cpp:787 msgctxt "builtin|" msgid "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" #: KSeExpr/ExprBuiltins.cpp:820 msgctxt "builtin|" msgid "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency." msgstr "" "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)\n" "FBM (Fractal Brownian Motion,碎形布朗é‹å‹•) 為多個頻率週波雜訊函數。\n" "基本頻率與 noise 函數相åŒã€‚總週波數目由 octaves 控制。lacunarity 控制週波間è·" "â€”â€”è‹¥åƒæ•¸å€¼ç‚º 2 則表示æ¯å€‹ actave 為上一個週波頻率的兩å€ã€‚gain 控制æ¯å€‹é€±æ³¢ç›¸" "å°æ–¼ä¸Šä¸€å€‹é€±æ³¢çš„æŒ¯å¹…比例。" #: KSeExpr/ExprBuiltins.cpp:860 msgctxt "builtin|" msgid "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" #: KSeExpr/ExprBuiltins.cpp:866 msgctxt "builtin|" msgid "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" msgstr "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)" #: KSeExpr/ExprBuiltins.cpp:872 msgctxt "builtin|" msgid "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" msgstr "" "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float " "gain=.5)" #: KSeExpr/ExprBuiltins.cpp:881 msgctxt "builtin|" msgid "" "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "float cellnoise(vector v)\n" "產生一系列基於整數ä½ç½®å›ºå®šä¸Šè‰²çš„立方體。\n" "與 prman cellnoise 函數相åŒã€‚" #: KSeExpr/ExprBuiltins.cpp:893 msgctxt "builtin|" msgid "" "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer " "location.\n" "This is the same as the prman cellnoise function." msgstr "" "color cellnoise(vector v)\n" "產生一系列基於整數ä½ç½®å›ºå®šä¸Šè‰²çš„立方體。\n" "與 prman cellnoise 函數相åŒã€‚" #: KSeExpr/ExprBuiltins.cpp:906 msgctxt "builtin|" msgid "" "float pnoise ( vector v, vector period )\n" "periodic noise" msgstr "" "float pnoise ( vector v, vector period )\n" "週期函數雜訊" #: KSeExpr/ExprBuiltins.cpp:1050 msgctxt "builtin|" msgid "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise." msgstr "" "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "巢狀雜訊圖案,為 cellnoise 經抖動後的變化體。" #: KSeExpr/ExprBuiltins.cpp:1126 msgctxt "builtin|" msgid "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise." msgstr "" "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "傳回巢狀雜訊圖案的色彩,為 cellnoise 經抖動後的變化體。" #: KSeExpr/ExprBuiltins.cpp:1175 msgctxt "builtin|" msgid "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "returns center of voronoi cell." msgstr "" "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int " "fbmOctaves=4,float fbmLacunarity=2, float fbmGain=.5)\n" "傳回 voronoi 巢狀格的中心點。" #: KSeExpr/ExprBuiltins.cpp:1238 msgctxt "builtin|" msgid "" "float dist(vector a, vector b)\n" "distance between two points" msgstr "" "float dist(vector a, vector b)\n" "兩點之間的è·é›¢" #: KSeExpr/ExprBuiltins.cpp:1246 msgctxt "builtin|" msgid "" "float length(vector v)\n" "length of vector" msgstr "" "float length(vector v)\n" "å‘é‡çš„長度" #: KSeExpr/ExprBuiltins.cpp:1254 msgctxt "builtin|" msgid "" "float hypot(vector v)\n" "length of 2d vector [x,y]" msgstr "" "float hypot(vector v)\n" "2D å‘é‡ [x,y] 的長度" #: KSeExpr/ExprBuiltins.cpp:1262 msgctxt "builtin|" msgid "" "float dot(vector a,vector b)\n" "vector dot product" msgstr "" "float dot(vector a,vector b)\n" "å‘é‡çš„å…§ç© (dot product)" #: KSeExpr/ExprBuiltins.cpp:1274 msgctxt "builtin|" msgid "" "vector norm(vector v)\n" "vector scaled to unit length" msgstr "" "vector norm(vector v)\n" "å°‡å‘é‡ç¸®æ”¾è‡³å–®ä½é•·åº¦" #: KSeExpr/ExprBuiltins.cpp:1282 msgctxt "builtin|" msgid "" "vector cross(vector a,vector b)\n" "vector cross product" msgstr "" "vector cross(vector a,vector b)\n" "å‘é‡å¤–ç© (cross product)" #: KSeExpr/ExprBuiltins.cpp:1293 msgctxt "builtin|" msgid "" "float angle(vector a,vector b)\n" "angle between two vectors (in radians)" msgstr "" "float angle(vector a,vector b)\n" "兩組å‘é‡ä¹‹é–“的夾角 (以弧度 rad 為單ä½)" #: KSeExpr/ExprBuiltins.cpp:1301 msgctxt "builtin|" msgid "" "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length" msgstr "" "vector angle(vector a,vector b)\n" "與 a å’Œ b 正交的正è¦åŒ–å‘é‡ (normalized vector,å³å·²ç¸®æ”¾è‡³å–®ä½é•·åº¦)" #: KSeExpr/ExprBuiltins.cpp:1317 msgctxt "builtin|" msgid "" "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)" msgstr "" "vector rotate(vector v,vector axis,float angle)\n" "ä¾ axis 軸旋轉 v,角度為 angle (以弧度 rad 為單ä½)" #: KSeExpr/ExprBuiltins.cpp:1327 msgctxt "builtin|" msgid "" "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction" msgstr "" "vector up(vector P,vector upvec)\n" "旋轉 v 以使其 Y è»¸æŒ‡å‘ upvec æŒ‡å®šçš„ã€Œä¸Šæ–¹ã€æ–¹å‘" #: KSeExpr/ExprBuiltins.cpp:1343 msgctxt "builtin|" msgid "" "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. The result is computed as ``loRange + " "value % (hiRange-loRange+1)``." msgstr "" "int cycle(int index, int loRange, int hiRange )\n" "ä¾ index å±ç’° loRange åŠ hiRange 之間的數值。這是經å移的 \"mod\" (模數) 函" "數,é‹ç®—å¼ç‚º ``loRange + value % (hiRange-loRange+1)``。" #: KSeExpr/ExprBuiltins.cpp:1405 msgctxt "builtin|" msgid "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index " "(which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0." msgstr "" "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "ä¾ index (會經 hash 函數å–雜湊值) éš¨æ©Ÿå– loRange åŠ hiRange 之間的數值。\n" "數值會根據所æä¾›çš„ weights åƒæ•¸åˆ†ä½ˆã€‚çœç•¥æŽ‰çš„ weights åƒæ•¸å°‡æœƒé è¨­ç‚º 1.0。" #: KSeExpr/ExprBuiltins.cpp:1416 msgctxt "builtin|" msgid "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "Chooses one of the supplied color choices based on the index (assumed to be " "in range [0..1])." msgstr "" "color swatch(float index, color choice0, color choice1, color choice2, " "[...])\n" "ä¾ index (範åœç‚º [0..1]) 由所æä¾›çš„è‰²å½©ä¸­é¸æ“‡ä¸€ç¨®è‰²å½©ã€‚" #: KSeExpr/ExprBuiltins.cpp:1431 msgctxt "builtin|" msgid "" "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0, 1])." msgstr "" "ufloat choose(float index,float choice1, float choice2, [...])\n" "ä¾ index (範åœç‚º [0..1]) 由所æä¾›çš„æ•¸å€¼ä¸­é¸æ“‡ä¸€å€‹æ•¸å€¼ã€‚" #: KSeExpr/ExprBuiltins.cpp:1487 msgctxt "builtin|" msgid "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in " "range [0..1]).\n" "The values will be distributed according to the supplied weights." msgstr "" "float wchoose(float index,float choice1, float weight1, float choice2, float " "weight2, [...] )\n" "ä¾ index (範åœç‚º [0..1]) 由所æä¾›çš„æ•¸å€¼ä¸­é¸æ“‡ä¸€å€‹æ•¸å€¼ã€‚\n" "數值會根據所æä¾›çš„ weights åƒæ•¸åˆ†ä½ˆã€‚" #: KSeExpr/ExprBuiltins.cpp:1509 msgctxt "builtin|" msgid "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "Interpolates a set of values to the parameter specified where y1, ..., yn " "are\n" "distributed evenly from [0..1]" msgstr "" "float spline(float param,float y1,float y2,float y3,float y4,[...])\n" "\n" "å°‡ y1, ..., yn å¹³å‡åˆ†ä½ˆåœ¨ [0..1] 範åœå…§ï¼Œä¾å…¶è¨ˆç®— param åƒæ•¸çš„æ’å€¼" #: KSeExpr/ExprBuiltins.cpp:1577 msgctxt "builtin|" msgid "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "float curve(float param,float pos0,float val0,int interp0,float pos1,float " "val1,int interp1,[...])\n" "\n" "以控制點定義一個 1D æ–œå¡ï¼Œä¾å…¶è¨ˆç®— param åƒæ•¸çš„æ’å€¼ã€‚\n" "æŽ§åˆ¶é»žæ ¹æ“šå¤šçµ„ä¸‰é …é€£çºŒçš„åƒæ•¸ pos_iã€val_iï¼Œä»¥åŠ interp_i 定義。\n" "æ’值列舉常數值如下:\n" "0 - ç„¡ã€1 - 線性ã€2 - 平滑ã€3 - æ¨£æ¢æ›²ç·š (spline)ã€\n" "4 - 單調 (monotone,無振動的樣æ¢)" #: KSeExpr/ExprBuiltins.cpp:1639 msgctxt "builtin|" msgid "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "Interpolates color ramp given by control points at 'param'. Control points " "are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes " "are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)" msgstr "" "color curve(float param,float pos0,color val0,int interp0,float pos1,color " "val1,int interp1,[...])\n" "\n" "以控制點定義一個色彩斜å¡ï¼Œä¾å…¶è¨ˆç®— param åƒæ•¸çš„æ’å€¼ã€‚\n" "æŽ§åˆ¶é»žæ ¹æ“šå¤šçµ„ä¸‰é …é€£çºŒçš„åƒæ•¸ pos_iã€val_iï¼Œä»¥åŠ interp_i 定義。\n" "æ’值列舉常數值如下:\n" "0 - ç„¡ã€1 - 線性ã€2 - 平滑ã€3 - æ¨£æ¢æ›²ç·š (spline)ã€\n" "4 - 單調 (monotone,無振動的樣æ¢)" #: KSeExpr/ExprBuiltins.cpp:1711 msgctxt "builtin|" msgid "" "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue" msgstr "" "getVar(string varName,vector defaultValue)\n" "如 varName 變數存在,傳回這變數的值,å¦å‰‡å‚³å›ž defaultValue" #: KSeExpr/ExprBuiltins.cpp:1858 msgctxt "builtin|" msgid "" "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f" "\".\n" "Return parameter is empty, but must be assigned to a variable." msgstr "" "float printf(string format,[vec0, vec1, ...])\n" "輸出字串到 STDOUT,å¯ç”¨çš„æ ¼å¼å­—串為 \"%v\" å’Œ \"%f\"。\n" "傳回值為空,ä¸éŽå¿…須將其指派給變數。" #: KSeExpr/ExprBuiltins.cpp:1971 msgctxt "builtin|" msgid "" "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for " "format details." msgstr "" "sprintf(string format, [double|string, double|string, ...])\n" "å‚³å›žæ ¹æ“šåƒæ•¸å€¼ä½œæ ¼å¼åŒ–的字串。格å¼åŒ–詳情請åƒè¦‹ 'man sprintf'。" #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:62 #: KSeExprUI/ECMQmLoader-seexpr2_qt.cpp:122 #: KSeExprUI/ExprControlCollection.cpp:27 msgctxt "ExprControlCollection|" msgid "Add new variable" msgstr "加入新變數" #: KSeExprUI/ErrorMessages.cpp:15 msgctxt "ErrorMessages|" msgid "Expected string or float[d]" msgstr "é æœŸæ‡‰ç‚ºå­—串 (string) 或浮點陣列 (float[d])" #: KSeExprUI/ErrorMessages.cpp:17 msgctxt "ErrorMessages|" msgid "Expected float[d]" msgstr "é æœŸæ‡‰ç‚ºæµ®é»žé™£åˆ— (float[d])" #: KSeExprUI/ErrorMessages.cpp:19 #, qt-format msgctxt "ErrorMessages|" msgid "Expected float[%1]" msgstr "é æœŸæ‡‰ç‚ºå« %1 項的浮點陣列 (float[%1])" #: KSeExprUI/ErrorMessages.cpp:21 #, qt-format msgctxt "ErrorMessages|" msgid "Type mismatch, first: '%1'; second: '%2'" msgstr "類型ä¸ç¬¦ï¼Œé¦–項:'%1';次項:'%2'" #: KSeExprUI/ErrorMessages.cpp:23 msgctxt "ErrorMessages|" msgid "Expected float or float[3]" msgstr "é æœŸæ‡‰ç‚ºæµ®é»ž (float) æˆ–å« 3 項的浮點陣列 (float[3])" #: KSeExprUI/ErrorMessages.cpp:25 #, qt-format msgctxt "ErrorMessages|" msgid "Expected '%1' for argument, got '%2'" msgstr "é æœŸåƒæ•¸æ‡‰ç‚º '%1',å»å¾—出 '%2'" #: KSeExprUI/ErrorMessages.cpp:27 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 to 7" msgstr "䏿­£ç¢ºçš„åƒæ•¸æ•¸ç›®ï¼Œæ‡‰ç‚º 1 至 7 é …" #: KSeExprUI/ErrorMessages.cpp:29 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be multiple of 3 plus 1" msgstr "䏿­£ç¢ºçš„åƒæ•¸æ•¸ç›®ï¼Œæ‡‰ç‚º 3 çš„å€æ•¸åŠ  1 é …" #: KSeExprUI/ErrorMessages.cpp:31 msgctxt "ErrorMessages|" msgid "Wrong number of arguments, should be 1 or more" msgstr "䏿­£ç¢ºçš„åƒæ•¸æ•¸ç›®ï¼Œæ‡‰ç‚º 1 項或更多" #: KSeExprUI/ErrorMessages.cpp:33 msgctxt "ErrorMessages|" msgid "First argument must be a string" msgstr "é¦–é …åƒæ•¸å¿…須為字串 (string)" #: KSeExprUI/ErrorMessages.cpp:35 msgctxt "ErrorMessages|" msgid "Incomplete format specifier" msgstr "ä¸å®Œæ•´çš„æ ¼å¼å®šç¾©ç¬¦è™Ÿ" #: KSeExprUI/ErrorMessages.cpp:37 #, qt-format msgctxt "ErrorMessages|" msgid "No variable named '%1'" msgstr "沒有å為 '%1' 的變數" #: KSeExprUI/ErrorMessages.cpp:39 #, qt-format msgctxt "ErrorMessages|" msgid "Function '%1' has no definition" msgstr "函數 '%1' 未被定義" #: KSeExprUI/ErrorMessages.cpp:41 #, qt-format msgctxt "ErrorMessages|" msgid "Assignment operation has incorrect type '%1'" msgstr "指派æ“作å«ä¸æ­£ç¢ºçš„類型 '%1'" #: KSeExprUI/ErrorMessages.cpp:43 msgctxt "ErrorMessages|" msgid "Types of conditional are not compatible" msgstr "æ¢ä»¶é‹ç®—å¼çš„類型ä¸å…¼å®¹" #: KSeExprUI/ErrorMessages.cpp:45 #, qt-format msgctxt "ErrorMessages|" msgid "Variable '%1' defined in conditionals inconsistently" msgstr "變數 '%1' 在æ¢ä»¶é‹ç®—å€å¡Šå…§çš„定義ä¸ä¸€è‡´" #: KSeExprUI/ErrorMessages.cpp:47 #, qt-format msgctxt "ErrorMessages|" msgid "Too few arguments for function '%1'" msgstr "傳é€çµ¦å‡½æ•¸ '%1' çš„åƒæ•¸éŽå°‘" #: KSeExprUI/ErrorMessages.cpp:49 #, qt-format msgctxt "ErrorMessages|" msgid "Too many arguments for function '%1'" msgstr "傳é€çµ¦å‡½æ•¸ '%1' çš„åƒæ•¸éŽå¤š" #: KSeExprUI/ErrorMessages.cpp:51 #, qt-format msgctxt "ErrorMessages|" msgid "Expression generated type '%1', incompatible with desired type '%2'" msgstr "é‹ç®—å¼çš„çµæžœç‚ºé¡žåž‹ '%1',與目標類型 '%2' ä¸å…¼å®¹" #: KSeExprUI/ErrorMessages.cpp:53 #, qt-format msgctxt "ErrorMessages|" msgid "Syntax error near '%1'" msgstr "語法錯誤——在 '%1' 附近" #: KSeExprUI/ErrorMessages.cpp:55 #, qt-format msgctxt "ErrorMessages|" msgid "Unexpected end of expression near '%1'" msgstr "æœªé æœŸé‹ç®—å¼çš„終çµâ€”—在 '%1' 附近" #: KSeExprUI/ErrorMessages.cpp:57 msgctxt "ErrorMessages|" msgid "Unexpected end of format string" msgstr "æœªé æœŸæ ¼å¼å­—串的終çµ" #: KSeExprUI/ErrorMessages.cpp:59 msgctxt "ErrorMessages|" msgid "Invalid format string, only %v or %f is allowed" msgstr "無效的格å¼å­—串,åªå®¹è¨± %v 或 %f" #: KSeExprUI/ErrorMessages.cpp:61 msgctxt "ErrorMessages|" msgid "Wrong number of arguments for format string" msgstr "æ ¼å¼å­—ä¸²çš„åƒæ•¸æ•¸ç›®ä¸æ­£ç¢º" #: KSeExprUI/ErrorMessages.cpp:64 #, qt-format msgctxt "ErrorMessages|" msgid "Unknown error (message = %1)" msgstr "未知錯誤 (message = %1)" #: KSeExprUI/ExprAddDialog.cpp:27 msgctxt "ExprAddDialog|" msgid "Variable" msgstr "變數" #: KSeExprUI/ExprAddDialog.cpp:40 KSeExprUI/ExprAddDialog.cpp:50 #: KSeExprUI/ExprAddDialog.cpp:135 msgctxt "ExprAddDialog|" msgid "Lookup" msgstr "查找" #: KSeExprUI/ExprAddDialog.cpp:41 KSeExprUI/ExprAddDialog.cpp:51 #: KSeExprUI/ExprAddDialog.cpp:134 msgctxt "ExprAddDialog|" msgid "$u" msgstr "$u" #: KSeExprUI/ExprAddDialog.cpp:43 msgctxt "ExprAddDialog|" msgid "Curve" msgstr "曲線" #: KSeExprUI/ExprAddDialog.cpp:53 msgctxt "ExprAddDialog|" msgid "Color Curve" msgstr "色彩曲線" #: KSeExprUI/ExprAddDialog.cpp:60 KSeExprUI/ExprAddDialog.cpp:76 #: KSeExprUI/ExprAddDialog.cpp:93 msgctxt "ExprAddDialog|" msgid "Default" msgstr "é è¨­" #: KSeExprUI/ExprAddDialog.cpp:61 KSeExprUI/ExprAddDialog.cpp:77 #: KSeExprUI/ExprAddDialog.cpp:94 msgctxt "ExprAddDialog|" msgid "Min" msgstr "最å°" #: KSeExprUI/ExprAddDialog.cpp:62 KSeExprUI/ExprAddDialog.cpp:78 #: KSeExprUI/ExprAddDialog.cpp:95 msgctxt "ExprAddDialog|" msgid "Max" msgstr "最大" #: KSeExprUI/ExprAddDialog.cpp:63 KSeExprUI/ExprAddDialog.cpp:65 #: KSeExprUI/ExprAddDialog.cpp:79 KSeExprUI/ExprAddDialog.cpp:81 #: KSeExprUI/ExprAddDialog.cpp:96 KSeExprUI/ExprAddDialog.cpp:97 #: KSeExprUI/ExprAddDialog.cpp:98 KSeExprUI/ExprAddDialog.cpp:104 msgctxt "ExprAddDialog|" msgid "0" msgstr "0" #: KSeExprUI/ExprAddDialog.cpp:67 msgctxt "ExprAddDialog|" msgid "10" msgstr "10" #: KSeExprUI/ExprAddDialog.cpp:69 msgctxt "ExprAddDialog|" msgid "Int" msgstr "整數 (int)" #: KSeExprUI/ExprAddDialog.cpp:83 KSeExprUI/ExprAddDialog.cpp:106 msgctxt "ExprAddDialog|" msgid "1" msgstr "1" #: KSeExprUI/ExprAddDialog.cpp:86 msgctxt "ExprAddDialog|" msgid "Float" msgstr "浮點 (float)" #: KSeExprUI/ExprAddDialog.cpp:109 msgctxt "ExprAddDialog|" msgid "Vector" msgstr "å‘é‡ (vector)" #: KSeExprUI/ExprAddDialog.cpp:119 KSeExprUI/ExprAddDialog.cpp:125 msgctxt "ExprAddDialog|" msgid "Color" msgstr "色彩" #: KSeExprUI/ExprAddDialog.cpp:137 msgctxt "ExprAddDialog|" msgid "Rainbow" msgstr "彩虹" #: KSeExprUI/ExprAddDialog.cpp:139 msgctxt "ExprAddDialog|" msgid "Shades of Gray" msgstr "ç°éšŽ" #: KSeExprUI/ExprAddDialog.cpp:140 msgctxt "ExprAddDialog|" msgid "Colors" msgstr "色彩" #: KSeExprUI/ExprAddDialog.cpp:144 msgctxt "ExprAddDialog|" msgid "Swatch" msgstr "è‰²æ¿ (swatch)" #: KSeExprUI/ExprAddDialog.cpp:152 msgctxt "ExprAddDialog|" msgid "string" msgstr "字串" #: KSeExprUI/ExprAddDialog.cpp:153 msgctxt "ExprAddDialog|" msgid "file" msgstr "檔案" #: KSeExprUI/ExprAddDialog.cpp:154 msgctxt "ExprAddDialog|" msgid "directory" msgstr "目錄" #: KSeExprUI/ExprAddDialog.cpp:158 msgctxt "ExprAddDialog|" msgid "String Name" msgstr "字串å稱" #: KSeExprUI/ExprAddDialog.cpp:160 msgctxt "ExprAddDialog|" msgid "String Type" msgstr "字串類型" #: KSeExprUI/ExprAddDialog.cpp:162 msgctxt "ExprAddDialog|" msgid "String Default" msgstr "字串é è¨­" #: KSeExprUI/ExprAddDialog.cpp:165 msgctxt "ExprAddDialog|" msgid "String" msgstr "字串 (string)" #: KSeExprUI/ExprBrowser.cpp:299 msgctxt "ExprBrowser|" msgid "X" msgstr "X" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "Save Expression" msgstr "儲存é‹ç®—å¼" #: KSeExprUI/ExprBrowser.cpp:404 KSeExprUI/ExprBrowser.cpp:423 msgctxt "ExprBrowser|" msgid "*.se" msgstr "*.se" #: KSeExprUI/ExprBrowser.cpp:409 KSeExprUI/ExprBrowser.cpp:428 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing" msgstr "ä¸èƒ½é–‹å•Ÿæª”案 %1 以供寫入" #: KSeExprUI/ExprBrowser.cpp:410 KSeExprUI/ExprBrowser.cpp:429 #: KSeExprUI/ExprBrowser.cpp:450 msgctxt "ExprBrowser|" msgid "Error" msgstr "錯誤" #: KSeExprUI/ExprBrowser.cpp:449 #, qt-format msgctxt "ExprBrowser|" msgid "Could not open file %1 for writing. Is it read-only?" msgstr "ä¸èƒ½é–‹å•Ÿæª”案 %1 以供寫入。檔案是å¦å”¯è®€ï¼Ÿ" #: KSeExprUI/ExprBrowser.cpp:450 #, qt-format msgctxt "ExprBrowser|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorCurve.cpp:180 msgctxt "CCurveScene|" msgid "Delete Point" msgstr "刪除點" #: KSeExprUI/ExprColorCurve.cpp:397 msgctxt "ExprColorCurve|" msgid "Selected Position:" msgstr "å·²é¸å–ä½ç½®ï¼š" #: KSeExprUI/ExprColorCurve.cpp:408 msgctxt "ExprColorCurve|" msgid "Selected Color:" msgstr "å·²é¸å–色彩:" #: KSeExprUI/ExprColorCurve.cpp:416 msgctxt "ExprColorCurve|" msgid "Interp:" msgstr "æ’值:" #: KSeExprUI/ExprColorCurve.cpp:421 msgctxt "ExprColorCurve|" msgid "None" msgstr "ç„¡" #: KSeExprUI/ExprColorCurve.cpp:422 msgctxt "ExprColorCurve|" msgid "Linear" msgstr "線性" #: KSeExprUI/ExprColorCurve.cpp:423 msgctxt "ExprColorCurve|" msgid "Smooth" msgstr "平滑" #: KSeExprUI/ExprColorCurve.cpp:424 msgctxt "ExprColorCurve|" msgid "Spline" msgstr "æ¨£æ¢æ›²ç·š (spline)" #: KSeExprUI/ExprColorCurve.cpp:425 msgctxt "ExprColorCurve|" msgid "MSpline" msgstr "Mæ¨£æ¢æ›²ç·š (MSpline)" #: KSeExprUI/ExprColorCurve.cpp:445 msgctxt "ExprColorCurve|" msgid "&Expand..." msgstr "放大窗格(&E)…" #: KSeExprUI/ExprColorCurve.cpp:487 #, qt-format msgctxt "ExprColorCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:77 msgctxt "ExprColorFrame|" msgid "Delete Swatch" msgstr "刪除色彩" #: KSeExprUI/ExprColorSwatch.cpp:78 msgctxt "ExprColorFrame|" msgid "Cancel" msgstr "å–æ¶ˆ" #: KSeExprUI/ExprColorSwatch.cpp:98 #, qt-format msgctxt "ExprColorWidget|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprColorSwatch.cpp:123 msgctxt "ExprColorSwatchWidget|" msgid "&Add..." msgstr "加入(&A)…" #: KSeExprUI/ExprCompletionModel.cpp:121 msgctxt "ExprCompletionModel|" msgid "Local" msgstr "本地變數" #: KSeExprUI/ExprControl.cpp:185 KSeExprUI/ExprControl.cpp:200 #, qt-format msgctxt "ExprControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:279 #, qt-format msgctxt "NumberControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:386 #, qt-format msgctxt "VectorControl|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprControl.cpp:456 KSeExprUI/ExprControl.cpp:465 msgctxt "StringControl|" msgid "Please choose a file" msgstr "è«‹é¸æ“‡æª”案" #: KSeExprUI/ExprControl.cpp:456 msgctxt "StringControl|" msgid "Images (*.tif *.tx *.jpg *.ptx *.png)" msgstr "åœ–åƒæª” (*.tif *.tx *.jpg *.ptx *.png)" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Pos:" msgstr "ä½ç½®ï¼š" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Val:" msgstr "數值:" #: KSeExprUI/ExprControl.cpp:488 msgctxt "CurveControl|" msgid "Interp:" msgstr "æ’值:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Pos:" msgstr "ä½ç½®ï¼š" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Val:" msgstr "數值:" #: KSeExprUI/ExprControl.cpp:512 msgctxt "CCurveControl|" msgid "Interp:" msgstr "æ’值:" #: KSeExprUI/ExprControl.cpp:617 KSeExprUI/ExprControl.cpp:618 #: KSeExprUI/ExprControl.cpp:619 KSeExprUI/ExprControl.cpp:620 #, qt-format msgctxt "ExprGraphPreview|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprCurve.cpp:153 msgctxt "CurveScene|" msgid "Delete Point" msgstr "刪除點" #: KSeExprUI/ExprCurve.cpp:298 msgctxt "ExprCurve|" msgid "Selected Position:" msgstr "å·²é¸å–ä½ç½®ï¼š" #: KSeExprUI/ExprCurve.cpp:309 msgctxt "ExprCurve|" msgid "Selected Value:" msgstr "å·²é¸å–數值:" #: KSeExprUI/ExprCurve.cpp:317 msgctxt "ExprCurve|" msgid "Interp:" msgstr "æ’值:" #: KSeExprUI/ExprCurve.cpp:322 msgctxt "ExprCurve|" msgid "None" msgstr "ç„¡" #: KSeExprUI/ExprCurve.cpp:323 msgctxt "ExprCurve|" msgid "Linear" msgstr "線性" #: KSeExprUI/ExprCurve.cpp:324 msgctxt "ExprCurve|" msgid "Smooth" msgstr "平滑" #: KSeExprUI/ExprCurve.cpp:325 msgctxt "ExprCurve|" msgid "Spline" msgstr "æ¨£æ¢æ›²ç·š (spline)" #: KSeExprUI/ExprCurve.cpp:326 msgctxt "ExprCurve|" msgid "MSpline" msgstr "Mæ¨£æ¢æ›²ç·š (MSpline)" #: KSeExprUI/ExprCurve.cpp:347 msgctxt "ExprCurve|" msgid "&Expand..." msgstr "放大窗格(&E)…" #: KSeExprUI/ExprCurve.cpp:390 KSeExprUI/ExprCurve.cpp:399 #, qt-format msgctxt "ExprCurve|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprEditor.cpp:73 msgctxt "ExprEditor|" msgid "Expression Editor" msgstr "é‹ç®—å¼ç·¨è¼¯å™¨" #: KSeExprUI/ExprEditor.cpp:216 #, qt-format msgctxt "ExprEditor|" msgid "(%1, %2): %3" msgstr "(%1, %2): %3" #: KSeExprUI/ExprFileDialog.cpp:84 msgctxt "ExprFileDialog|" msgid "Open" msgstr "開啟" #: KSeExprUI/ExprFileDialog.cpp:189 msgctxt "ExprFileDialog|" msgid "Favorites" msgstr "最愛" #: KSeExprUI/ExprTextEdit.cpp:44 msgctxt "ExprTextEdit|" msgid "Pop-up Help" msgstr "浮動說明" #: KSeExprUI/ExprTextEdit.cpp:185 #, qt-format msgctxt "ExprTextEdit|" msgid "%1" msgstr "%1" #: KSeExprUI/ExprTextEdit.cpp:187 #, qt-format msgctxt "ExprTextEdit|" msgid "
%1" msgstr "
%1" kseexpr-4.0.4.0/src/0000755000000000000240000000000014156102631014130 5ustar00rootroot00000000000000kseexpr-4.0.4.0/src/KSeExpr/0000755000000000000240000000000014156102631015451 5ustar00rootroot00000000000000kseexpr-4.0.4.0/src/KSeExpr/CMakeLists.txt0000644000000000000240000000722614156102631020220 0ustar00rootroot00000000000000# SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. # SPDX-License-Identifier: LicenseRef-Apache-2.0 # SPDX-FileCopyrightText: 2020 L. E. Segovia # SPDX-License-Identifier: GPL-3.0-or-later # Source files for llvm supported library and interpreter library set(KSeExpr_HEADERS Context.h Curve.h ErrorCode.h Evaluator.h ExprBuiltins.h ExprEnv.h Expression.h ExprFunc.h ExprFuncStandard.h ExprFuncX.h ExprLLVM.h ExprLLVMAll.h ExprMultiExpr.h ExprNode.h ExprParser.h ExprPatterns.h ExprType.h ExprWalker.h Interpreter.h Noise.h NoiseTables.h PerformanceTimer.h StringUtils.h Timer.h TypePrinter.h Utils.h VarBlock.h Vec.h ) set(KSeExpr_SOURCES Context.cpp Curve.cpp ExprBuiltins.cpp ExprEnv.cpp Expression.cpp ExprFunc.cpp ExprFuncStandard.cpp ExprFuncX.cpp ExprLLVMCodeGeneration.cpp ExprMultiExpr.cpp ExprNode.cpp ExprWalker.cpp Interpreter.cpp Noise.cpp Utils.cpp ) set_source_files_properties("ExprBuiltins.cpp" PROPERTIES COMPILE_DEFINITIONS "__STDC_LIMIT_MACROS") ## Test charconv and dynamic dispatch support check_cxx_source_compiles(" #include #include int main() { std::string test{ \"4.5\" }; double d; auto [p, ec] = std::from_chars(test.data(), test.data() + test.size(), d); return ec != std::errc(); } " KSeExpr_HAVE_CHARCONV_WITH_DOUBLES) check_cxx_source_compiles(" [[gnu::target(\"default\")]] int main() { return 4; } [[gnu::target(\"sse4.1\")]] int main() { return 5; } " KSeExpr_HAVE_DYNAMIC_DISPATCH) BuildParserScanner(KSeExpr ExprParserLex ExprParser SeExpr parser_cpp) if (NOT WIN32) add_library(KSeExpr SHARED ${KSeExpr_SOURCES} ${parser_cpp}) if (NOT APPLE) set_source_files_properties(interpreter.cpp PROPERTIES COMPILE_OPTIONS "-rdynamic") endif() target_link_libraries(KSeExpr "dl") else() add_library(KSeExpr STATIC ${KSeExpr_SOURCES} ${parser_cpp}) endif() target_include_directories(KSeExpr PUBLIC $ PRIVATE $ INTERFACE $ ) set_property(TARGET KSeExpr PROPERTY VERSION ${KSeExpr_VERSION}) set_property(TARGET KSeExpr PROPERTY SOVERSION ${KSeExpr_VERSION_MAJOR}) set_property(TARGET KSeExpr PROPERTY INTERFACE_KSeExpr_MAJOR_VERSION ${KSeExpr_VERSION_MAJOR}) set_property(TARGET KSeExpr APPEND PROPERTY COMPATIBLE_INTERFACE_STRING ${KSeExpr_VERSION_MAJOR}) generate_export_header(KSeExpr) configure_file("ExprConfig.h.in" "ExprConfig.h") ## Install binary and includes install(TARGETS KSeExpr DESTINATION ${CMAKE_INSTALL_LIBDIR} EXPORT ${PROJECT_NAME}Targets ) install(FILES ${KSeExpr_HEADERS} ${KSeExpr_LLVM_HEADERS} $ $ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/KSeExpr" ) if (ENABLE_LLVM_BACKEND) add_definitions(${LLVM_DEFINITIONS}) target_include_directories(${SEEXPR_LIBRARIES} PUBLIC ${LLVM_INCLUDE_DIRS}) if(LLVM_VERSION VERSION_GREATER_EQUAL 10) # LLVM >= 10 moved to C++ 14. target_compile_features(${SEEXPR_LIBRARIES} PUBLIC cxx_std_14) else() target_compile_features(${SEEXPR_LIBRARIES} PUBLIC cxx_std_11) endif() target_link_libraries(KSeExpr ${LLVM_LIB}) endif() kseexpr-4.0.4.0/src/KSeExpr/Context.cpp0000644000000000000240000000117514156102631017605 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #include "Context.h" using namespace KSeExpr; Context::Context(const Context *parent) : _parent(parent) { } void Context::setParameter(const std::string ¶meterName, const std::string &value) { _parameters[parameterName] = value; } Context *Context::createChildContext() const { return new Context(this); } Context &Context::global() { static Context context(nullptr); return context; } kseexpr-4.0.4.0/src/KSeExpr/Context.h0000644000000000000240000000420414156102631017246 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include namespace KSeExpr { class Context { public: /// Lookup a Context parameter by name. bool lookupParameter(const std::string ¶meterName, std::string &value) const { auto it = _parameters.find(parameterName); if (it != _parameters.end()) { value = it->second; return true; } else if (_parent) return _parent->lookupParameter(parameterName, value); else return false; } /// Set a parameter. NOTE: this must be done when no threads are accessing lookupParameter for safety void setParameter(const std::string ¶meterName, const std::string &value); /// Create a context that is a child of this context Context *createChildContext() const; // Parent access uses pointers as it is acceptable to set/get a NULL parent void setParent(const Context *context) { _parent = context; } const Context *getParent() const { return _parent; } bool hasContext(const Context *context) const { if (this == context) return true; if (_parent) return _parent->hasContext(context); return false; } /// The global default context of the seexpr static Context &global(); ~Context() = default; /// Private constructor and un-implemented default/copy/assignment /// (it is required that we derive from the global context via createChildContext) Context(const Context &) = delete; Context(Context &&) = delete; Context &operator=(const Context &) = delete; Context &operator=(Context &&) = delete; private: Context(const Context *parent); /// The parent scope const Context *_parent{nullptr}; using ParameterMap = std::unordered_map; /// Attribute/value pairs ParameterMap _parameters; }; } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/Curve.cpp0000644000000000000240000001763214156102631017252 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #include #include #include #include "Curve.h" #include "ExprBuiltins.h" #include "Expression.h" namespace KSeExpr { template<> double Curve::comp(const double &val, const int) { return val; } template<> double Curve::comp(const Vec3d &val, const int i) { return val[i]; } template bool Curve::cvLessThan(const CV &cv1, const CV &cv2) { return cv1._pos < cv2._pos; } template Curve::Curve() : cacheCV(0) , prepared(false) { _cvData.push_back(CV(-FLT_MAX, T(), kNone)); _cvData.push_back(CV(FLT_MAX, T(), kNone)); } template void Curve::addPoint(double position, const T &val, InterpType type) { prepared = false; _cvData.push_back(CV(position, val, type)); } template void Curve::preparePoints() { prepared = true; cacheCV = 0; // sort std::sort(_cvData.begin(), _cvData.end(), cvLessThan); // Setup boundary conditions on sentinel values CV &end = *(_cvData.end() - 1); CV &begin = *(_cvData.begin()); auto realCVs = _cvData.size() - 2; assert(realCVs >= 0); if (realCVs > 0) { begin._val = _cvData[1]._val; begin._deriv = T(); begin._interp = kNone; auto lastIndex = _cvData.size() - 1; end._val = _cvData[lastIndex - 1]._val; end._deriv = T(); end._interp = kNone; } else { begin._pos = end._pos = 0; begin._val = end._val = T(); begin._interp = kNone; begin._deriv = end._deriv = T(); } // Initialize "Catmull-Rom" derivatives (centered differences) for (unsigned int i = 1; i < _cvData.size() - 1; i++) { _cvData[i]._deriv = (_cvData[i + 1]._val - _cvData[i - 1]._val) / (_cvData[i + 1]._pos - _cvData[i - 1]._pos); } // Fix extrema by going through all intervals for (unsigned int i = 0; i < _cvData.size() - 1; i++) { if (_cvData[i]._interp == kMonotoneSpline) { double h = _cvData[i + 1]._pos - _cvData[i]._pos; if (h == 0) _cvData[i]._deriv = _cvData[i + 1]._deriv = T(); else { T delta = (_cvData[i + 1]._val - _cvData[i]._val) / h; clampCurveSegment(delta, _cvData[i]._deriv, _cvData[i + 1]._deriv); } } } } // TODO: this function and the next could be merged with template magic // but it might be simpler to just have two copies! template T Curve::getValue(const double param) const { assert(prepared); // find the cv data point index just greater than the desired param const int numPoints = static_cast(_cvData.size()); const CV *cvDataBegin = &_cvData[0]; int index = static_cast(std::upper_bound(cvDataBegin, cvDataBegin + numPoints, CV(param, T(), kLinear), cvLessThan) - cvDataBegin); index = std::max(1, std::min(index, numPoints - 1)); const auto t0 = _cvData[index - 1]._pos; const T k0 = _cvData[index - 1]._val; const InterpType interp = _cvData[index - 1]._interp; const auto t1 = _cvData[index]._pos; const T k1 = _cvData[index]._val; switch (interp) { case kNone: return k0; break; case kLinear: { double u = (param - t0) / (t1 - t0); return k0 + u * (k1 - k0); } break; case kSmooth: { double u = (param - t0) / (t1 - t0); return k0 * (u - 1) * (u - 1) * (2 * u + 1) + k1 * u * u * (3 - 2 * u); } break; case kSpline: case kMonotoneSpline: { double x = param - _cvData[index - 1]._pos; // xstart double h = _cvData[index]._pos - _cvData[index - 1]._pos; // xend-xstart T y = _cvData[index - 1]._val; // f(xstart) T delta = _cvData[index]._val - _cvData[index - 1]._val; // f(xend)-f(xstart) T d1 = _cvData[index - 1]._deriv; // f'(xstart) T d2 = _cvData[index]._deriv; // f'(xend) return (x * (delta * (3 * h - 2 * x) * x + h * (-h + x) * (-(d1 * h) + (d1 + d2) * x))) / (h * h * h) + y; } break; default: assert(false); return T(); break; } } // TODO: this function and the previous could be merged with template magic // but it might be simpler to just have two copies! template double Curve::getChannelValue(const double param, int channel) const { assert(prepared); // find the cv data point index just greater than the desired param const int numPoints = static_cast(_cvData.size()); const CV *cvDataBegin = &_cvData[0]; int index = static_cast(std::upper_bound(cvDataBegin, cvDataBegin + numPoints, CV(param, T(), kLinear), cvLessThan) - cvDataBegin); index = std::max(1, std::min(index, numPoints - 1)); const auto t0 = _cvData[index - 1]._pos; const double k0 = comp(_cvData[index - 1]._val, channel); const InterpType interp = _cvData[index - 1]._interp; const auto t1 = _cvData[index]._pos; const double k1 = comp(_cvData[index]._val, channel); switch (interp) { case kNone: return k0; break; case kLinear: { double u = (param - t0) / (t1 - t0); return k0 + u * (k1 - k0); } break; case kSmooth: // standard cubic interpolation { double u = (param - t0) / (t1 - t0); return k0 * (u - 1) * (u - 1) * (2 * u + 1) + k1 * u * u * (3 - 2 * u); } break; case kSpline: case kMonotoneSpline: { double x = param - _cvData[index - 1]._pos; // xstart double h = _cvData[index]._pos - _cvData[index - 1]._pos; // xend-xstart double y = comp(_cvData[index - 1]._val, channel); // f(xtart) double delta = comp(_cvData[index]._val, channel) - comp(_cvData[index - 1]._val, channel); // f(xend)-f(xtart) double d1 = comp(_cvData[index - 1]._deriv, channel); // f'(xtart) double d2 = comp(_cvData[index]._deriv, channel); // f'(xend) return (x * (delta * (3 * h - 2 * x) * x + h * (-h + x) * (-(d1 * h) + (d1 + d2) * x))) / (h * h * h) + y; } break; default: assert(false); return 0; break; } } template typename Curve::CV Curve::getLowerBoundCV(const double param) const { assert(prepared); const CV *cvDataBegin = &_cvData[0]; int numPoints = static_cast(_cvData.size()); int index = static_cast(std::upper_bound(cvDataBegin, cvDataBegin + numPoints, CV(param, T(), kLinear), cvLessThan) - cvDataBegin); index = std::max(1, std::min(index, numPoints - 1)); if (index - 1 > 0) return _cvData[index - 1]; return _cvData[index]; } template bool Curve::interpTypeValid(InterpType interp) { return interp == kNone || interp == kLinear || interp == kSmooth || interp == kSpline || interp == kMonotoneSpline; } template<> inline void Curve::clampCurveSegment(const double &delta, double &d1, double &d2) { if (delta == 0) d1 = d2 = 0; else { d1 = KSeExpr::clamp(d1 / delta, 0, 3) * delta; d2 = KSeExpr::clamp(d2 / delta, 0, 3) * delta; } } template<> void Curve::clampCurveSegment(const Vec3d &delta, Vec3d &d1, Vec3d &d2) { for (int i = 0; i < 3; i++) { if (delta[i] == 0) d1[i] = d2[i] = 0; else { d1[i] = KSeExpr::clamp(d1[i] / delta[i], 0, 3) * delta[i]; d2[i] = KSeExpr::clamp(d2[i] / delta[i], 0, 3) * delta[i]; } } } template class Curve; template class Curve; } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/Curve.h0000644000000000000240000000463314156102631016714 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include #include #include "Vec.h" namespace KSeExpr { //! Interpolation curve class for double->double and double->Vec3D /** Interpolation curve class for mapping from double -> double or double -> Vec3D Subject to some interpolation points. Each segment is interpolated according to the interpolation type specified on the left control point. Interpolation types supported are members of InterpType below. Valid instantiation types for this are double, or Vec3D */ template class Curve { mutable int cacheCV; public: //! Supported interpolation types enum InterpType { kNone = 0, kLinear, kSmooth, kSpline, kMonotoneSpline }; struct CV { CV(double pos, const T &val, InterpType type) : _pos(pos) , _val(val) , _interp(type) { } double _pos; T _val, _deriv; InterpType _interp; }; private: std::vector _cvData; bool prepared; public: Curve(); //! Adds a point to the curve void addPoint(double position, const T &val, InterpType type); //! Prepares points for evaluation (sorts and computes boundaries, clamps extrema) void preparePoints(); //! Evaluates curve and returns full value T getValue(double param) const; //! Evaluates curve for a sub-component of the interpolation values //! must call preparePoints() before this is ok to call double getChannelValue(double param, int channel) const; //! Returns the control point that is less than the parameter, unless there is no //! point, in which case it returns the right point or nothing CV getLowerBoundCV(double param) const; //! Returns whether the given interpolation type is supported static bool interpTypeValid(InterpType interp); //! CV Parameter ordering (cv1._pos < cv2._pos) static bool cvLessThan(const CV &cv1, const CV &cv2); private: //! Performs hermite derivative clamping in canonical space void clampCurveSegment(const T &delta, T &d1, T &d2); //! Returns a component of the given value static double comp(const T &val, int i); }; } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/ErrorCode.h0000644000000000000240000000424514156102631017513 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #pragma once namespace KSeExpr { enum ErrorCode { //! OK None = 0, //! "Expected String or Float[d]" ExpectedStringOrFloatAnyD, //! "Expected Float[d]" ExpectedFloatAnyD, //! "Expected Float[" << d << "]" ExpectedFloatD, //! "Type mismatch. First: " << first << " Second: " << second TypeMismatch12, //! "Expected float or FP[3]" ExpectedFloatOrFloat3, //! "Expected "<< type << " for argument, got " << childType ArgumentTypeMismatch, //! "Wrong number of arguments, should be 1 to 7" WrongNumberOfArguments, //! "Wrong number of arguments, should be multiple of 3 plus 1" WrongNumberOfArgumentsMultiple3Plus1, //! "Wrong number of arguments, should be >= 1" WrongNumberOfArguments1Plus, //! "First argument must be a string." FirstArgumentNotString, //! "incomplete format specifier" IncompleteFormatSpecifier, //! name + " fail resolveVar" //! "No variable named '" << name() << "'" UndeclaredVariable, //! "Function " << _name << " has no definition" UndeclaredFunction, //! "Assignment operation has bad type: " << _type BadAssignmentOperator, //! "Types of conditional are not compatible", ConditionalTypesNotCompatible, //! "Variable " << name() << " defined in conditionals inconsistently." InconsistentDefinition, //! "Too few args for function " << _name FunctionTooFewArguments, //! "Too many args for function " << _name FunctionTooManyArguments, //! "Expression generated type " << _parseTree->type() << " incompatible with desired type " << _desiredReturnType ExpressionIncompatibleTypes, //! Syntax error SyntaxError, //! Unexpected end of expression UnexpectedEndOfExpression, //! Unexpected end of format string UnexpectedEndOfFormatString, //! Invalid format string, only %v or %f is allowed InvalidFormatString, //! Wrong number of arguments for format string WrongNumberOfArgumentsForFormatString, //! Unknown error (message = %1) Unknown, }; } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/Evaluator.h0000644000000000000240000005171114156102631017571 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #include #include "ExprConfig.h" #include "ExprLLVMAll.h" #include "ExprNode.h" #include "VarBlock.h" extern "C" void KSeExprLLVMEvalFPVarRef(KSeExpr::ExprVarRef *seVR, double *result); extern "C" void KSeExprLLVMEvalStrVarRef(KSeExpr::ExprVarRef *seVR, double *result); extern "C" void KSeExprLLVMEvalCustomFunction(int *opDataArg, double *fpArg, char **strArg, void **funcdata, const KSeExpr::ExprFuncNode *node); namespace KSeExpr { #if defined(SEEXPR_ENABLE_LLVM) LLVM_VALUE promoteToDim(LLVM_VALUE val, unsigned dim, llvm::IRBuilder<> &Builder); class LLVMEvaluator { // TODO: this seems needlessly complex, let's fix it // TODO: let the dev code allocate memory? // FP is the native function for this expression. template class LLVMEvaluationContext { private: using FunctionPtr = void (*)(T *, char **, uint32_t); using FunctionPtrMultiple = void (*)(char **, uint32_t, uint32_t, uint32_t); FunctionPtr functionPtr{nullptr}; FunctionPtrMultiple functionPtrMultiple{nullptr}; T *resultData{nullptr}; public: LLVMEvaluationContext(const LLVMEvaluationContext &) = delete; LLVMEvaluationContext &operator=(const LLVMEvaluationContext &) = delete; LLVMEvaluationContext(LLVMEvaluationContext &&) noexcept = default; LLVMEvaluationContext& operator=(LLVMEvaluationContext &&) noexcept = default; ~LLVMEvaluationContext() { delete[] resultData; } LLVMEvaluationContext() = default; void init(void *fp, void *fpLoop, int dim) { reset(); functionPtr = reinterpret_cast(fp); functionPtrMultiple = reinterpret_cast(fpLoop); resultData = new T[dim]; } void reset() { delete[] resultData; resultData = nullptr; functionPtr = nullptr; resultData = nullptr; } const T *operator()(VarBlock *varBlock) { assert(functionPtr && resultData); functionPtr(resultData, varBlock ? varBlock->data() : nullptr, varBlock ? varBlock->indirectIndex : 0); return resultData; } void operator()(VarBlock *varBlock, size_t outputVarBlockOffset, size_t rangeStart, size_t rangeEnd) { assert(functionPtr && resultData); functionPtrMultiple(varBlock ? varBlock->data() : nullptr, outputVarBlockOffset, rangeStart, rangeEnd); } }; std::unique_ptr> _llvmEvalFP; std::unique_ptr> _llvmEvalStr; std::unique_ptr _llvmContext; std::unique_ptr TheExecutionEngine; public: LLVMEvaluator() = default; const char *evalStr(VarBlock *varBlock) { return *(*_llvmEvalStr)(varBlock); } const double *evalFP(VarBlock *varBlock) { return (*_llvmEvalFP)(varBlock); } void evalMultiple(VarBlock *varBlock, uint32_t outputVarBlockOffset, uint32_t rangeStart, uint32_t rangeEnd) { return (*_llvmEvalFP)(varBlock, outputVarBlockOffset, rangeStart, rangeEnd); } void debugPrint() { // TheModule->print(llvm::errs(), nullptr); } bool prepLLVM(ExprNode *parseTree, const ExprType &desiredReturnType) { using namespace llvm; InitializeNativeTarget(); InitializeNativeTargetAsmPrinter(); InitializeNativeTargetAsmParser(); std::string uniqueName = getUniqueName(); // create Module _llvmContext = std::make_unique(); std::unique_ptr TheModule(new Module(uniqueName + "_module", *_llvmContext)); // create all needed types Type *i8PtrTy = Type::getInt8PtrTy(*_llvmContext); // char * PointerType *i8PtrPtrTy = PointerType::getUnqual(i8PtrTy); // char ** PointerType *i8PtrPtrPtrTy = PointerType::getUnqual(i8PtrPtrTy); // char *** Type *i32Ty = Type::getInt32Ty(*_llvmContext); // int Type *i32PtrTy = Type::getInt32PtrTy(*_llvmContext); // int * Type *i64Ty = Type::getInt64Ty(*_llvmContext); // int64 * Type *doublePtrTy = Type::getDoublePtrTy(*_llvmContext); // double * PointerType *doublePtrPtrTy = PointerType::getUnqual(doublePtrTy); // double ** Type *voidTy = Type::getVoidTy(*_llvmContext); // void // create bindings to helper functions for variables and fucntions Function *KSeExprLLVMEvalCustomFunctionFunc = nullptr; Function *KSeExprLLVMEvalFPVarRefFunc = nullptr; Function *KSeExprLLVMEvalStrVarRefFunc = nullptr; Function *KSeExprLLVMEvalstrlenFunc = nullptr; Function *KSeExprLLVMEvalmallocFunc = nullptr; Function *KSeExprLLVMEvalfreeFunc = nullptr; Function *KSeExprLLVMEvalmemsetFunc = nullptr; Function *KSeExprLLVMEvalstrcatFunc = nullptr; Function *KSeExprLLVMEvalstrcmpFunc = nullptr; { { FunctionType *FT = FunctionType::get(voidTy, {i32PtrTy, doublePtrTy, i8PtrPtrTy, i8PtrPtrTy, i64Ty}, false); KSeExprLLVMEvalCustomFunctionFunc = Function::Create(FT, GlobalValue::ExternalLinkage, "KSeExprLLVMEvalCustomFunction", TheModule.get()); } { FunctionType *FT = FunctionType::get(voidTy, {i8PtrTy, doublePtrTy}, false); KSeExprLLVMEvalFPVarRefFunc = Function::Create(FT, GlobalValue::ExternalLinkage, "KSeExprLLVMEvalFPVarRef", TheModule.get()); } { FunctionType *FT = FunctionType::get(voidTy, {i8PtrTy, i8PtrPtrTy}, false); KSeExprLLVMEvalStrVarRefFunc = Function::Create(FT, GlobalValue::ExternalLinkage, "KSeExprLLVMEvalStrVarRef", TheModule.get()); } { FunctionType *FT = FunctionType::get(i32Ty, {i8PtrTy}, false); KSeExprLLVMEvalstrlenFunc = Function::Create(FT, Function::ExternalLinkage, "strlen", TheModule.get()); } { FunctionType *FT = FunctionType::get(i8PtrTy, {i32Ty}, false); KSeExprLLVMEvalmallocFunc = Function::Create(FT, Function::ExternalLinkage, "malloc", TheModule.get()); } { FunctionType *FT = FunctionType::get(voidTy, {i8PtrTy}, false); KSeExprLLVMEvalfreeFunc = Function::Create(FT, Function::ExternalLinkage, "free", TheModule.get()); } { FunctionType *FT = FunctionType::get(voidTy, {i8PtrTy, i32Ty, i32Ty}, false); KSeExprLLVMEvalmemsetFunc = Function::Create(FT, Function::ExternalLinkage, "memset", TheModule.get()); } { FunctionType *FT = FunctionType::get(i8PtrTy, {i8PtrTy, i8PtrTy}, false); KSeExprLLVMEvalstrcatFunc = Function::Create(FT, Function::ExternalLinkage, "strcat", TheModule.get()); } { FunctionType *FT = FunctionType::get(i32Ty, {i8PtrTy, i8PtrTy}, false); KSeExprLLVMEvalstrcmpFunc = Function::Create(FT, Function::ExternalLinkage, "strcmp", TheModule.get()); } } // create function and entry BB bool desireFP = desiredReturnType.isFP(); std::array ParamTys = {desireFP ? doublePtrTy : i8PtrPtrTy, doublePtrPtrTy, i32Ty}; FunctionType *FT = FunctionType::get(voidTy, ParamTys, false); Function *F = Function::Create(FT, Function::ExternalLinkage, uniqueName + "_func", TheModule.get()); #if LLVM_VERSION_MAJOR > 4 F->addAttribute(llvm::AttributeList::FunctionIndex, llvm::Attribute::AlwaysInline); #else F->addAttribute(llvm::AttributeSet::FunctionIndex, llvm::Attribute::AlwaysInline); #endif { // label the function with names std::array names = {"outputPointer", "dataBlock", "indirectIndex"}; int idx = 0; for (auto &arg : F->args()) arg.setName(names[idx++]); } auto dimDesired = desiredReturnType.dim(); auto dimGenerated = parseTree->type().dim(); { BasicBlock *BB = BasicBlock::Create(*_llvmContext, "entry", F); IRBuilder<> Builder(BB); // codegen Value *lastVal = parseTree->codegen(Builder); // return values through parameter. Value *firstArg = &*F->arg_begin(); if (desireFP) { Value *newLastVal = promoteToDim(lastVal, dimDesired, Builder); if (newLastVal->getType()->isVectorTy()) { // Output is vector - copy values (if possible) assert(dimDesired >= 1 && "error. dim of FP is less than 1."); assert(dimGenerated >= 1 && "error. dim of FP is less than 1."); assert(dimGenerated == 1 || dimGenerated >= dimDesired && "error: unable to match between FP of differing dimensions"); auto *VT = llvm::cast(newLastVal->getType()); #if LLVM_VERSION_MAJOR >= 13 if (VT && VT->getElementCount().getKnownMinValue() >= dimDesired) { #else if (VT && VT->getNumElements() >= dimDesired) { #endif for (unsigned i = 0; i < dimDesired; ++i) { Value *idx = ConstantInt::get(Type::getInt64Ty(*_llvmContext), i); Value *val = Builder.CreateExtractElement(newLastVal, idx); Value *ptr = IN_BOUNDS_GEP(Builder, firstArg, idx); Builder.CreateStore(val, ptr); } } else { for (unsigned i = 0; i < dimDesired; ++i) { Value *idx = ConstantInt::get(Type::getInt64Ty(*_llvmContext), i); Value *original_idx = ConstantInt::get(Type::getInt64Ty(*_llvmContext), 0); Value *val = Builder.CreateExtractElement(newLastVal, original_idx); Value *ptr = IN_BOUNDS_GEP(Builder, firstArg, idx); Builder.CreateStore(val, ptr); } } } else { if (dimGenerated > 1) { Value *newLastVal = promoteToDim(lastVal, dimDesired, Builder); #ifndef NDEBUG auto *VT = llvm::cast(newLastVal->getType()); #if LLVM_VERSION_MAJOR >= 13 assert(VT && VT->getElementCount().getKnownMinValue() >= dimDesired); #else assert(VT && VT->getNumElements() >= dimDesired); #endif #endif for (unsigned i = 0; i < dimDesired; ++i) { Value *idx = ConstantInt::get(Type::getInt64Ty(*_llvmContext), i); Value *val = Builder.CreateExtractElement(newLastVal, idx); Value *ptr = IN_BOUNDS_GEP(Builder, firstArg, idx); Builder.CreateStore(val, ptr); } } else if (dimGenerated == 1) { for (unsigned i = 0; i < dimDesired; ++i) { Value *ptr = Builder.CreateConstInBoundsGEP1_32(nullptr, firstArg, i); Builder.CreateStore(lastVal, ptr); } } else { assert(false && "error. dim of FP is less than 1."); } } } else { Builder.CreateStore(lastVal, firstArg); } Builder.CreateRetVoid(); } // write a new function FunctionType *FTLOOP = FunctionType::get(voidTy, {i8PtrTy, i32Ty, i32Ty, i32Ty}, false); Function *FLOOP = Function::Create(FTLOOP, Function::ExternalLinkage, uniqueName + "_loopfunc", TheModule.get()); { // label the function with names std::array names = {"dataBlock", "outputVarBlockOffset", "rangeStart", "rangeEnd"}; int idx = 0; for (auto &arg : FLOOP->args()) { arg.setName(names[idx++]); } } { // Local variables Value *dimValue = ConstantInt::get(i32Ty, dimDesired); Value *oneValue = ConstantInt::get(i32Ty, 1); // Basic blocks BasicBlock *entryBlock = BasicBlock::Create(*_llvmContext, "entry", FLOOP); BasicBlock *loopCmpBlock = BasicBlock::Create(*_llvmContext, "loopCmp", FLOOP); BasicBlock *loopRepeatBlock = BasicBlock::Create(*_llvmContext, "loopRepeat", FLOOP); BasicBlock *loopIncBlock = BasicBlock::Create(*_llvmContext, "loopInc", FLOOP); BasicBlock *loopEndBlock = BasicBlock::Create(*_llvmContext, "loopEnd", FLOOP); IRBuilder<> Builder(entryBlock); Builder.SetInsertPoint(entryBlock); // Get arguments Function::arg_iterator argIterator = FLOOP->arg_begin(); Value *varBlockCharPtrPtrArg = &*argIterator; ++argIterator; Value *outputVarBlockOffsetArg = &*argIterator; ++argIterator; Value *rangeStartArg = &*argIterator; ++argIterator; Value *rangeEndArg = &*argIterator; ++argIterator; // Allocate Variables Value *rangeStartVar = Builder.CreateAlloca(Type::getInt32Ty(*_llvmContext), oneValue, "rangeStartVar"); Value *rangeEndVar = Builder.CreateAlloca(Type::getInt32Ty(*_llvmContext), oneValue, "rangeEndVar"); Value *indexVar = Builder.CreateAlloca(Type::getInt32Ty(*_llvmContext), oneValue, "indexVar"); Value *outputVarBlockOffsetVar = Builder.CreateAlloca(Type::getInt32Ty(*_llvmContext), oneValue, "outputVarBlockOffsetVar"); Value *varBlockDoublePtrPtrVar = Builder.CreateAlloca(doublePtrPtrTy, oneValue, "varBlockDoublePtrPtrVar"); Value *varBlockTPtrPtrVar = Builder.CreateAlloca(desireFP == true ? doublePtrPtrTy : i8PtrPtrPtrTy, oneValue, "varBlockTPtrPtrVar"); // Copy variables from args Builder.CreateStore(Builder.CreatePointerCast(varBlockCharPtrPtrArg, doublePtrPtrTy, "varBlockAsDoublePtrPtr"), varBlockDoublePtrPtrVar); Builder.CreateStore(Builder.CreatePointerCast(varBlockCharPtrPtrArg, desireFP ? doublePtrPtrTy : i8PtrPtrPtrTy, "varBlockAsTPtrPtr"), varBlockTPtrPtrVar); Builder.CreateStore(rangeStartArg, rangeStartVar); Builder.CreateStore(rangeEndArg, rangeEndVar); Builder.CreateStore(outputVarBlockOffsetArg, outputVarBlockOffsetVar); // Set output pointer Value *outputBasePtrPtr = Builder.CreateGEP(nullptr, CREATE_LOAD(Builder, varBlockTPtrPtrVar), outputVarBlockOffsetArg, "outputBasePtrPtr"); Value *outputBasePtr = CREATE_LOAD_WITH_ID(Builder, outputBasePtrPtr, "outputBasePtr"); Builder.CreateStore(CREATE_LOAD(Builder, rangeStartVar), indexVar); Builder.CreateBr(loopCmpBlock); Builder.SetInsertPoint(loopCmpBlock); Value *cond = Builder.CreateICmpULT(CREATE_LOAD(Builder, indexVar), CREATE_LOAD(Builder, rangeEndVar)); Builder.CreateCondBr(cond, loopRepeatBlock, loopEndBlock); Builder.SetInsertPoint(loopRepeatBlock); Value *myOutputPtr = Builder.CreateGEP(nullptr, outputBasePtr, Builder.CreateMul(dimValue, CREATE_LOAD(Builder, indexVar))); Builder.CreateCall(F, {myOutputPtr, CREATE_LOAD(Builder, varBlockDoublePtrPtrVar), CREATE_LOAD(Builder, indexVar)}); Builder.CreateBr(loopIncBlock); Builder.SetInsertPoint(loopIncBlock); Builder.CreateStore(Builder.CreateAdd(CREATE_LOAD(Builder, indexVar), oneValue), indexVar); Builder.CreateBr(loopCmpBlock); Builder.SetInsertPoint(loopEndBlock); Builder.CreateRetVoid(); } if (Expression::debugging) { #ifdef DEBUG std::cerr << "Pre verified LLVM byte code " << std::endl; TheModule->print(llvm::errs(), nullptr); #endif } // TODO: Find out if there is a new way to veirfy // if (verifyModule(*TheModule)) { // std::cerr << "Logic error in code generation of LLVM alert developers" << std::endl; // TheModule->print(llvm::errs(), nullptr); // } Module *altModule = TheModule.get(); std::string ErrStr; TheExecutionEngine.reset(EngineBuilder(std::move(TheModule)) .setErrorStr(&ErrStr) // .setUseMCJIT(true) .setOptLevel(CodeGenOpt::Aggressive) .create()); altModule->setDataLayout(TheExecutionEngine->getDataLayout()); // Add bindings to C linkage helper functions TheExecutionEngine->addGlobalMapping(KSeExprLLVMEvalFPVarRefFunc, reinterpret_cast(KSeExprLLVMEvalFPVarRef)); TheExecutionEngine->addGlobalMapping(KSeExprLLVMEvalStrVarRefFunc, reinterpret_cast(KSeExprLLVMEvalStrVarRef)); TheExecutionEngine->addGlobalMapping(KSeExprLLVMEvalCustomFunctionFunc, reinterpret_cast(KSeExprLLVMEvalCustomFunction)); TheExecutionEngine->addGlobalMapping(KSeExprLLVMEvalstrlenFunc, reinterpret_cast(strlen)); TheExecutionEngine->addGlobalMapping(KSeExprLLVMEvalstrcatFunc, reinterpret_cast(strcat)); TheExecutionEngine->addGlobalMapping(KSeExprLLVMEvalstrcmpFunc, reinterpret_cast(strcmp)); TheExecutionEngine->addGlobalMapping(KSeExprLLVMEvalmemsetFunc, reinterpret_cast(memset)); TheExecutionEngine->addGlobalMapping(KSeExprLLVMEvalmallocFunc, reinterpret_cast(malloc)); TheExecutionEngine->addGlobalMapping(KSeExprLLVMEvalfreeFunc, reinterpret_cast(free)); // [verify] std::string errorStr; llvm::raw_string_ostream raw(errorStr); if (llvm::verifyModule(*altModule, &raw)) { parseTree->addError(ErrorCode::Unknown, {errorStr}); return false; } // Setup optimization llvm::PassManagerBuilder builder; std::unique_ptr pm(new llvm::legacy::PassManager); std::unique_ptr fpm(new llvm::legacy::FunctionPassManager(altModule)); builder.OptLevel = 3; #if (LLVM_VERSION_MAJOR >= 4) builder.Inliner = llvm::createAlwaysInlinerLegacyPass(); #else builder.Inliner = llvm::createAlwaysInlinerPass(); #endif builder.populateModulePassManager(*pm); // fpm->add(new llvm::DataLayoutPass()); builder.populateFunctionPassManager(*fpm); fpm->run(*F); fpm->run(*FLOOP); pm->run(*altModule); // Create the JIT. This takes ownership of the module. if (!TheExecutionEngine) { std::cerr << "Could not create ExecutionEngine: " << ErrStr << std::endl; exit(1); } TheExecutionEngine->finalizeObject(); void *fp = TheExecutionEngine->getPointerToFunction(F); void *fpLoop = TheExecutionEngine->getPointerToFunction(FLOOP); if (desireFP) { _llvmEvalFP = std::make_unique>(); _llvmEvalFP->init(fp, fpLoop, dimDesired); } else { _llvmEvalStr = std::make_unique>(); _llvmEvalStr->init(fp, fpLoop, dimDesired); } if (Expression::debugging) { #ifdef DEBUG std::cerr << "Pre verified LLVM byte code " << std::endl; altModule->print(llvm::errs(), nullptr); #endif } return true; } std::string getUniqueName() const { std::ostringstream o; o << std::setbase(16) << reinterpret_cast(this); return ("_" + o.str()); } }; #else // no LLVM support class LLVMEvaluator { public: static void unsupported() { assert(false && "LLVM is not enabled in build"); } static const char *evalStr(VarBlock *) { unsupported(); return nullptr; } static const double *evalFP(VarBlock *) { unsupported(); return nullptr; } static bool prepLLVM(ExprNode *, ExprType) { unsupported(); return false; } static void evalMultiple(VarBlock *, int, size_t, size_t) { unsupported(); } void debugPrint() { } }; #endif } // end namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/ExprBuiltins.cpp0000644000000000000240000022033714156102631020614 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #include #if !defined(_USE_MATH_DEFINES) #define _USE_MATH_DEFINES #endif #include #include #include #include #include #include #include "ExprFunc.h" #include "ExprNode.h" #include "Vec.h" #include "Curve.h" #include "ExprBuiltins.h" #include "Noise.h" #include "Interpreter.h" namespace KSeExpr { static const char* fabs_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float abs(float x)\nabsolute value of x"); // angle conversion functions static const char *deg_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float deg(float angle)\nradians to degrees"); static const char *rad_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float rad(float angle)\ndegrees to radians"); // trig in degrees static const char* cosd_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float cosd(float angle)\ncosine in degrees"); static const char* sind_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float sind(float angle)\nsine in degrees"); static const char* tand_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float tand(float angle)\ntangent in degrees"); static const char* acosd_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float acosd(float value)\narc cosine in degrees"); static const char* asind_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float asind(float value)\narc sine in degrees"); static const char* atand_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float atand(float value)\narc tangent in degrees"); static const char* atan2d_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float atan2d(float y,float x)\narc tangent in degrees of y/x between -180 and 180"); // trig in radians static const char* cos_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float cos(float angle)\ncosine in radians"); static const char* sin_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float sin(float angle)\nsine in radians"); static const char* tan_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float tan(float angle)\ntangent in radians"); static const char* acos_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float acos(float value)\narc cosine in radians"); static const char* asin_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float asin(float value)\narc sine in radians"); static const char* atan_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float atan(float value)\narc tangent in radians"); static const char* atan2_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float atan2(float y,float x)\narc tangent in radians of y/x between -PI and PI"); // hyperbolic trig static const char* cosh_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float cosh(float angle)\nhyperbolic cosine in radians"); static const char* sinh_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float sinh(float angle)\nhyperbolic sine in radians"); static const char* tanh_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float tanh(float angle)\nhyperbolic tangent in radians"); static const char* acosh_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float acosh(float value)\nhyperbolic arc cosine in radians"); static const char* asinh_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float asinh(float value)\nhyperbolic arc sine in radians"); static const char* atanh_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float atanh(float value)\nhyperbolic arc tangent in radians"); // clamping/rounding static const char* clamp_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float clamp(float x,float lo,float hi)\nconstrain x to range [lo,hi]"); static const char* round_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float round(float x)\nnearest integer to x"); static const char* max_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float max(float a,float b)\ngreater of a and b"); static const char* min_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float min(float a,float b)\nlesser of a and b"); static const char* trunc_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float trunc(float a)\nnearest integer towards zero"); static const char* floor_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float floor(float a)\nnext lower integer"); static const char* ceil_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float ceil(float a)\nnext higher integer"); // misc math static const char* invert_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float invert(float a)\nDefined as 1-x"); static const char* cbrt_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float cbrt(float x)\ncube root"); static const char* sqrt_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float sqrt(float x)\nsquare root"); static const char* exp_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float exp(float x)\nE raised to the x power"); static const char* pow_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float pow(float x, float y)\nx to the y power, also available as ^"); static const char* log_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float log(float x)\nNatural logarithm"); static const char* log10_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float log10(float x)\nBase 10 logarithm"); static const char* fmod_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float fmod(float x,float y)\nremainder of x/y (also available as % operator)"); static const char* turbulence_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float turbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\nAbsolute value of each noise term is " "taken. This gives billowy appearance"); static const char* cturbulence_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "color cturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\nAbsolute value of each noise term is " "taken. This gives billowy appearance"); static const char* vturbulence_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "vector vturbulence(vector v,int octaves=6,float lacunarity=2,float gain=.5)\nAbsolute value of each noise term is " "taken. This gives billowy appearance"); double compress(double x, double lo, double hi) { return (hi - lo) * x + lo; } static const char *compress_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float compress(float x,float lo,float hi)\nRemaps x in [0,1] to [lo,hi]"); double expand(double x, double lo, double hi) { if (lo == hi) return x < lo ? 0 : 1; return (x - lo) / (hi - lo); } static const char* expand_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float expand(float x,float lo,float hi)\nRemaps x in [lo,hi] to [0,1]"); double fit(double x, double a1, double b1, double a2, double b2) { return (x * (b2 - a2) - a1 * b2 + b1 * a2) / (b1 - a1); } static const char* fit_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float fit(float x,float a1,float b1,float a2,float b2)\nLinearly remaps x in [a1,b1] to [a2,b2]"); double gamma(double x, double g) { return pow(x, 1 / g); } static const char *gamma_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float gamma(float x, float g)\nGamma correction of x with gamma factor g"); double bias(double x, double b) { static double C = 1 / log(0.5); return pow(x, log(b) * C); } static const char* bias_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float bias(float x, float g)\nVariation of gamma where values less than 0.5 pull the curve down\nand values " "greater than 0.5 pull the curve up\npow(x,log(b)/log(0.5))"); double contrast(double x, double c) { if (x < 0.5) return 0.5 * bias(1 - c, 2 * x); else return 1 - 0.5 * bias(1 - c, 2 - 2 * x); } static const char* contrast_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float contrast(float x, float c)\nAdjust the contrast.  For c from 0 to 0.5, the contrast is decreased.  " "For c > 0.5, the contrast is increased."); double boxstep(double x, double a) { return x < a ? 0.0 : 1.0; } static const char *boxstep_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float boxstep(float x,float a)\n if x < a then 0 otherwise 1"); double linearstep(double x, double a, double b) { if (a < b) { return x < a ? 0 : (x > b ? 1 : (x - a) / (b - a)); } else if (a > b) { return 1 - (x < b ? 0 : (x > a ? 1 : (x - b) / (a - b))); } return boxstep(x, a); } static const char* linearstep_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float linearstep(float x, float a, float b)\n if x < a then 0, if x > b then 1, and\nx transitions linearly " "when a < x < b"); double smoothstep(double x, double a, double b) { if (a < b) { if (x < a) return 0; if (x >= b) return 1; x = (x - a) / (b - a); } else if (a > b) { if (x <= b) return 1; if (x > a) return 0; x = 1 - (x - b) / (a - b); } else return boxstep(x, a); return x * x * (3 - 2 * x); } static const char* smoothstep_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float smoothstep(float x,float a,float b)\n if x < a then 0, if x > b then 1, and\nx transitions smoothly " "(cubic) when a < x < b"); double gaussstep(double x, double a, double b) { if (a < b) { if (x < a) return 0; if (x >= b) return 1; x = 1 - (x - a) / (b - a); } else if (a > b) { if (x <= b) return 1; if (x > a) return 0; x = (x - b) / (a - b); } else return boxstep(x, a); return pow(2, -8 * x * x); } static const char* gaussstep_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float gasussstep(float x,float a,float b)\n if x < a then 0, if x > b then 1, and\nx transitions smoothly " "(exponentially) when a < x < b"); double remap(double x, double source, double range, double falloff, double interp) { range = fabs(range); falloff = fabs(falloff); if (falloff == 0) return fabs(x - source) < range; double a = NAN; double b = NAN; if (x > source) { a = source + range; b = a + falloff; } else { a = source - range; b = a - falloff; } switch (int(interp)) { case 0: return linearstep(x, b, a); case 1: return smoothstep(x, b, a); default: return gaussstep(x, b, a); } } static const char* remap_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "remap(float x, float source, float range, float falloff, float interp)\n" "General remapping function.\n" "When x is within +/- range of source, the result is one.\n" "The result falls to zero beyond that range over falloff distance.\n" "The falloff shape is controlled by interp. Numeric values\n" "or named constants may be used:\n" "    int linear = 0\n" "    int smooth = 1\n" "    int gaussian = 2\n"); double mix(double x, double y, double alpha) { return x * (1 - alpha) + y * alpha; } static const char *mix_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "mix(float a,float b,float alpha)\nBlend of a and b according to alpha."); Vec3d hsiAdjust(const Vec3d &rgb, double h, double s, double i) { Vec3d hsl = rgbtohsl(rgb); hsl[0] += h * (1.0 / 360); hsl[1] *= s; return hsltorgb(hsl) * i; } Vec3d hsi(int n, const Vec3d *args) { if (n < 4) return 0.0; double h = args[1][0]; double s = args[2][0]; double i = args[3][0]; if (n >= 5) { // apply mask double m = args[4][0]; h *= m; s = (s - 1) * m + 1; i = (i - 1) * m + 1; } return hsiAdjust(args[0], h, s, i); } static const char* hsi_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "color hsi(color x, float h, float s, float i, float map=1)\n" "The hsi function shifts the hue by h\n" "(in degrees) and scales the saturation and intensity by s and i\n" "respectively.  A map may be supplied which will control the shift\n" "- the full shift will happen when the map is one and no shift will\n" "happen when the map is zero.  The shift will be scaled back for\n" "values between zero and one."); Vec3d midhsi(int n, const Vec3d *args) { if (n < 4) return 0.0; double h = args[1][0]; double s = args[2][0]; double i = args[3][0]; if (n >= 5) { // apply mask double m = args[4][0]; // remap from [0..1] to [-1..1] m = m * 2 - 1; // add falloff (if specified) double falloff = 1; double interp = 0; if (n >= 6) falloff = args[5][0]; if (n >= 7) interp = args[6][0]; if (m < 0) m = -remap(-m, 1, 0, falloff, interp); else m = remap(m, 1, 0, falloff, interp); // scale hsi values according to mask (both directions) h *= m; float absm = fabs(static_cast(m)); s = s * absm + 1 - absm; i = i * absm + 1 - absm; if (m < 0) { s = 1 / s; i = 1 / i; } } return hsiAdjust(args[0], h, s, i); } static const char* midhsi_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "color midhsi(color x, float h, float s, float i, float map, float falloff=1, int interp=0)\n" "The midhsi function is just like the hsi function except that\n" "the control map is centered around the mid point (value of 0.5)\n" "and can scale the shift in both directions."); Vec3d rgbtohsl(const Vec3d &rgb) { // RGB to HSL color space conversion // This is based on Foley, Van Dam (2nd ed; p. 595) // but extended to allow rgb values outside of 0..1 double H = NAN; double S = NAN; double L = NAN; double R = rgb[0]; double G = rgb[1]; double B = rgb[2]; double x = R < G ? (R < B ? R : B) : (G < B ? G : B); // min(R,G,B) double y = R > G ? (R > B ? R : B) : (G > B ? G : B); // max(R,G,B) // compute lightness = avg of min and max rgb vals double sum = x + y; double diff = y - x; L = sum / 2; if (diff < 1e-6) // achromatic return {0, 0, L}; // compute saturation if (L <= .5) { if (x < 0) S = 1 - x; else S = diff / sum; } else { if (y > 1) S = y; else S = diff / (2 - sum); } // compute hue if (R == y) H = (G - B) / diff; else if (G == y) H = (B - R) / diff + 2; else H = (R - G) / diff + 4; H *= 1 / 6.; H -= floor(H); // make sure hue is in range 0..1 return {H, S, L}; } static const char* rgbtohsl_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "color rgbtohsl(color rgb)\n" "RGB to HSL color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible."); static double hslvalue(double x, double y, double H) { H -= floor(H); // make sure hue is in range 0..1 if (H < 1 / 6.) return x + (y - x) * H * 6; else if (H < 3 / 6.) return y; else if (H < 4 / 6.) return x + (y - x) * (4 / 6. - H) * 6; else return x; } Vec3d hsltorgb(const Vec3d &hsl) { // HSL to RGB color space conversion // This is based on Foley, Van Dam (2nd ed; p. 596) // but extended to allow rgb values outside of 0..1 double y = NAN; double H = hsl[0]; double S = hsl[1]; double L = hsl[2]; if (S <= 0) // achromatic return {L, L, L}; // find min/max rgb values if (L < 0.5) { if (S > 1) y = 2 * L + S - 1; else y = L + L * S; } else { if (S > 1) y = S; else y = L + S - L * S; } double x = 2 * L - y; // reconstruct rgb from min,max,hue double R = hslvalue(x, y, H + (1 / 3.)); double G = hslvalue(x, y, H); double B = hslvalue(x, y, H - (1 / 3.)); return {R, G, B}; } static const char* hsltorgb_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "color hsltorgb(color hsl)\n" "HSL to RGB color space conversion.\n" "HSL is Hue, Saturation, Lightness (all in range [0..1] )\n" "These functions have also been extended to support rgb and hsl values\n" "outside of the range [0..1] in a reasonable way.  For any rgb or\n" "hsl value (except for negative s values), the conversion is\n" "well-defined and reversible."); static Vec3d saturate(const Vec3d &Cin, double amt) { const Vec3d lum(.2126, .7152, .0722); // rec709 luminance Vec3d result = Vec3d(Cin.dot(lum) * (1 - amt)) + Cin * amt; if (result[0] < 0) result[0] = 0; if (result[1] < 0) result[1] = 0; if (result[2] < 0) result[2] = 0; return result; } Vec3d saturate(int n, const Vec3d *args) { if (n < 2) return 0.0; return saturate(args[0], args[1][0]); } static const char* saturate_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "color saturate(color val, float amt)\n" "Scale saturation of color by amt.\n" "The color is scaled around the rec709 luminance value,\n" "and negative results are clamped at zero.\n"); class RandFuncX : public ExprFuncSimple { // The default seed of the Mersenne Twister is as predictable as 0 - amyspark struct Data : public ExprFuncNode::Data { // NOLINT cert-msc32-c std::mt19937 gen; std::uniform_real_distribution<> dis; }; ExprType prep(ExprFuncNode *node, bool, ExprVarEnvBuilder &envBuilder) const override { bool valid = true; for (auto i = 0; i < node->numChildren(); i++) valid &= node->checkArg(i, ExprType().FP(1).Varying(), envBuilder); return valid ? ExprType().FP(1).Varying() : ExprType().Error(); } ExprFuncNode::Data *evalConstant(const ExprFuncNode *, ArgHandle args) const override { auto *data = new Data(); auto a = 0.0; auto b = 1.0; if (args.nargs() >= 1) { a = args.inFp<1>(0)[0]; } if (args.nargs() >= 2) { b = args.inFp<1>(1)[0]; } if (args.nargs() >= 3) { data->gen = std::mt19937(args.inFp<1>(2)[0]); } else { data->gen = std::mt19937(0); // NOLINT cert-msc32-c } data->dis = std::uniform_real_distribution<>(a, b); return data; } void eval(ArgHandle args) override { auto *data = dynamic_cast(args.data); args.outFp = data->dis(data->gen); } public: RandFuncX() noexcept : ExprFuncSimple(true) { } // Thread Safe } rand; static const char *rand_docstring = QT_TRANSLATE_NOOP("builtin", "float rand ( [float min, float max], [float seed] )\n" "Random number between [min, max] (or [0, 1] if unspecified).\n" "If a seed is supplied, it will be used in addition to the internal seeds and may be used to create multiple distinct generators."); double hash(int n, double* args) { // combine args into a single seed uint32_t seed = 0; for (int i = 0; i < n; i++) { // make irrational to generate fraction and combine xor into 32 bits int exp = 0; double frac = frexp(args[i] * double(M_E * M_PI), &exp); uint32_t s = (uint32_t)(frac * UINT32_MAX) ^ (uint32_t)exp; // blend with seed (constants from Numerical Recipes, attrib. from Knuth) static const uint32_t M = 1664525; static const uint32_t C = 1013904223; seed = seed * M + s + C; } // tempering (from Matsumoto) seed ^= (seed >> 11); seed ^= (seed << 7) & 0x9d2c5680UL; seed ^= (seed << 15) & 0xefc60000UL; seed ^= (seed >> 18); // permute static std::array p{ 148, 201, 203, 34, 85, 225, 163, 200, 174, 137, 51, 24, 19, 252, 107, 173, 110, 251, 149, 69, 180, 152, 141, 132, 22, 20, 147, 219, 37, 46, 154, 114, 59, 49, 155, 161, 239, 77, 47, 10, 70, 227, 53, 235, 30, 188, 143, 73, 88, 193, 214, 194, 18, 120, 176, 36, 212, 84, 211, 142, 167, 57, 153, 71, 159, 151, 126, 115, 229, 124, 172, 101, 79, 183, 32, 38, 68, 11, 67, 109, 221, 3, 4, 61, 122, 94, 72, 117, 12, 240, 199, 76, 118, 5, 48, 197, 128, 62, 119, 89, 14, 45, 226, 195, 80, 50, 40, 192, 60, 65, 166, 106, 90, 215, 213, 232, 250, 207, 104, 52, 182, 29, 157, 103, 242, 97, 111, 17, 8, 175, 254, 108, 208, 224, 191, 112, 105, 187, 43, 56, 185, 243, 196, 156, 246, 249, 184, 7, 135, 6, 158, 82, 130, 234, 206, 255, 160, 236, 171, 230, 42, 98, 54, 74, 209, 205, 33, 177, 15, 138, 178, 44, 116, 96, 140, 253, 233, 125, 21, 133, 136, 86, 245, 58, 23, 1, 75, 165, 92, 217, 39, 0, 218, 91, 179, 55, 238, 170, 134, 83, 25, 189, 216, 100, 129, 150, 241, 210, 123, 99, 2, 164, 16, 220, 121, 139, 168, 64, 190, 9, 31, 228, 95, 247, 244, 81, 102, 145, 204, 146, 26, 87, 113, 198, 181, 127, 237, 169, 28, 93, 27, 41, 231, 248, 78, 162, 13, 186, 63, 66, 131, 202, 35, 144, 222, 223}; union { uint32_t i; std::array c; } u1 {}, u2 {}; u1.i = seed; u2.c[3] = p[u1.c[0]]; u2.c[2] = p[(u1.c[1] + u2.c[3]) & 0xff]; u2.c[1] = p[(u1.c[2] + u2.c[2]) & 0xff]; u2.c[0] = p[(u1.c[3] + u2.c[1]) & 0xff]; // scale to [0.0 .. 1.0] return u2.i * (1.0 / UINT32_MAX); } static const char* hash_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float hash(float seed1,[float seed2, ...])\n" "Like rand, but with no internal seeds. Any number of seeds may be given\n" "and the result will be a random function based on all the seeds."); double noise(int n, const Vec3d *args) { if (n < 1) return 0; if (n == 1) { // 1 arg = vector arg double result = NAN; std::array p {args[0][0], args[0][1], args[0][2]}; Noise<3, 1>(p.data(), &result); return .5 * result + .5; } // scalar args if (n > 4) n = 4; std::array p {}; for (int i = 0; i < n; i++) p[i] = args[i][0]; double result = NAN; switch (n) { case 1: Noise<1, 1>(p.data(), &result); break; case 2: Noise<2, 1>(p.data(), &result); break; case 3: Noise<3, 1>(p.data(), &result); break; case 4: Noise<4, 1>(p.data(), &result); break; default: result = 0; break; } return .5 * result + .5; } static const char* noise_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float noise ( vector v )\n" "float noise ( float x, float y )\n" "float noise ( float x, float y, float z )\n" "float noise ( float x, float y, float z, float w )\n" "Original perlin noise at location (C2 interpolant)"); double snoise(const Vec3d &p) { double result = NAN; std::array args {p[0], p[1], p[2]}; Noise<3, 1>(args.data(), &result); return result; } static const char* snoise_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float snoise ( vector v)\n" "signed noise w/ range -1 to 1 formed with original perlin noise at location (C2 interpolant)"); Vec3d vnoise(const Vec3d &p) { Vec3d result; std::array args {p[0], p[1], p[2]}; Noise<3, 3>(args.data(), &result[0]); return result; } static const char* vnoise_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "vector vnoise ( vector v)\n" "vector noise formed with original perlin noise at location (C2 interpolant)"); Vec3d cnoise(const Vec3d &p) { return .5 * vnoise(p) + Vec3d(.5); } static const char* cnoise_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "color cnoise ( vector v)\n" "color noise formed with original perlin noise at location (C2 interpolant)"); double snoise4(int, const Vec3d *args) { double result = NAN; std::array procargs {args[0][0], args[0][1], args[0][2], args[1][0]}; Noise<4, 1>(procargs.data(), &result); return result; } static const char* snoise4_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float snoise4 ( vector v,float t)\n" "4D signed noise w/ range -1 to 1 formed with original perlin noise at location (C2 interpolant)"); Vec3d vnoise4(int, const Vec3d *args) { Vec3d result; std::array procargs {args[0][0], args[0][1], args[0][2], args[1][0]}; Noise<4, 3>(procargs.data(), &result[0]); return result; } static const char* vnoise4_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "vector vnoise4 ( vector v,float t)\n" "4D vector noise formed with original perlin noise at location (C2 interpolant)"); Vec3d cnoise4(int n, const Vec3d *args) { return .5 * vnoise4(n, args) + Vec3d(.5); } static const char* cnoise4_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "color cnoise4 ( vector v,float t)\n" "4D color noise formed with original perlin noise at location (C2 interpolant)"); double turbulence(int n, const Vec3d *args) { // args: octaves, lacunarity, gain int octaves = 6; double lacunarity = 2; double gain = 0.5; Vec3d p = 0.0; switch (n) { case 4: gain = args[3][0]; /* fall through */ case 3: lacunarity = args[2][0]; /* fall through */ case 2: octaves = int(clamp(args[1][0], 1, 8)); /* fall through */ case 1: p = args[0]; } double result = 0; std::array P {p[0], p[1], p[2]}; FBM<3, 1, true>(P.data(), &result, octaves, lacunarity, gain); return .5 * result + .5; } Vec3d vturbulence(int n, const Vec3d *args) { // args: octaves, lacunarity, gain int octaves = 6; double lacunarity = 2; double gain = 0.5; Vec3d p = 0.0; switch (n) { case 4: gain = args[3][0]; /* fall through */ case 3: lacunarity = args[2][0]; /* fall through */ case 2: octaves = int(clamp(args[1][0], 1, 8)); /* fall through */ case 1: p = args[0]; } Vec3d result; std::array P {p[0], p[1], p[2]}; FBM<3, 3, true>(P.data(), &result[0], octaves, lacunarity, gain); return result; } Vec3d cturbulence(int n, const Vec3d *args) { return vturbulence(n, args) * .5 + Vec3d(.5); } double fbm(int n, const Vec3d *args) { // args: octaves, lacunarity, gain int octaves = 6; double lacunarity = 2; double gain = 0.5; Vec3d p = 0.0; switch (n) { case 4: gain = args[3][0]; /* fall through */ case 3: lacunarity = args[2][0]; /* fall through */ case 2: octaves = int(clamp(args[1][0], 1, 8)); /* fall through */ case 1: p = args[0]; } double result = 0.0; std::array P {p[0], p[1], p[2]}; FBM<3, 1, false>(P.data(), &result, octaves, lacunarity, gain); return .5 * result + .5; } static const char* fbm_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float fbm(vector v,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total " "number of frequencies is controlled by octaves. The lacunarity is the " "spacing between the frequencies - a value of 2 means each octave is " "twice the previous frequency. The gain controls how much each " "frequency is scaled relative to the previous frequency."); Vec3d vfbm(int n, const Vec3d *args) { // args: octaves, lacunarity, gain int octaves = 6; double lacunarity = 2; double gain = 0.5; Vec3d p = 0.0; switch (n) { case 4: gain = args[3][0]; /* fall through */ case 3: lacunarity = args[2][0]; /* fall through */ case 2: octaves = int(clamp(args[1][0], 1, 8)); /* fall through */ case 1: p = args[0]; } Vec3d result = 0.0; std::array P {p[0], p[1], p[2]}; FBM<3, 3, false>(P.data(), &result[0], octaves, lacunarity, gain); return result; } static const char* vfbm_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "vector vfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)"); double fbm4(int n, const Vec3d *args) { // args: octaves, lacunarity, gain int octaves = 6; double lacunarity = 2; double gain = 0.5; Vec3d p = 0.0; float time = 0.0; switch (n) { case 5: gain = args[4][0]; /* fall through */ case 4: lacunarity = args[3][0]; /* fall through */ case 3: octaves = int(clamp(args[2][0], 1, 8)); /* fall through */ case 2: time = static_cast(args[1][0]); /* fall through */ case 1: p = args[0]; } double result = 0.0; std::array P {p[0], p[1], p[2], time}; FBM<4, 1, false>(P.data(), &result, octaves, lacunarity, gain); return .5 * result + .5; } static const char* fbm4_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float fbm4(vector v,float time,int octaves=6,float lacunarity=2,float gain=.5)\n" "fbm (Fractal Brownian Motion) is a multi-frequency noise function. \n" "The base frequency is the same as the \"noise\" function. The total \n" "number of frequencies is controlled by octaves. The lacunarity is the \n" "spacing between the frequencies - a value of 2 means each octave is \n" "twice the previous frequency. The gain controls how much each \n" "frequency is scaled relative to the previous frequency."); Vec3d vfbm4(int n, const Vec3d *args) { // args: octaves, lacunarity, gain int octaves = 6; double lacunarity = 2; double gain = 0.5; Vec3d p = 0.0; float time = 0.0; switch (n) { case 5: gain = args[4][0]; /* fall through */ case 4: lacunarity = args[3][0]; /* fall through */ case 3: octaves = int(clamp(args[2][0], 1, 8)); /* fall through */ case 2: time = static_cast(args[1][0]); /* fall through */ case 1: p = args[0]; } Vec3d result = 0.0; std::array P {p[0], p[1], p[2], time}; FBM<4, 3, false>(P.data(), &result[0], octaves, lacunarity, gain); return result; } static const char* vfbm4_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "vector vfbm4(vector v,float time,int octaves=6,float lacunarity=2,float gain=.5)"); Vec3d cfbm(int n, const Vec3d *args) { return vfbm(n, args) * .5 + Vec3d(.5); } static const char *cfbm_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "color cfbm(vector vint octaves=6,float lacunarity=2,float gain=.5)"); Vec3d cfbm4(int n, const Vec3d *args) { return vfbm4(n, args) * .5 + Vec3d(.5); } static const char *cfbm4_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "color cfbm4(vector v,float time,int octaves=6,float lacunarity=2,float gain=.5)"); double cellnoise(const Vec3d &p) { double result = NAN; std::array args {p[0], p[1], p[2]}; CellNoise<3, 1>(args.data(), &result); return result; } static const char* cellnoise_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer location.\n" "This is the same as the prman cellnoise function."); Vec3d ccellnoise(const Vec3d &p) { Vec3d result; std::array args {p[0], p[1], p[2]}; CellNoise<3, 3>(args.data(), &result[0]); return result; } static const char* ccellnoise_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "color cellnoise(vector v)\n" "cellnoise generates a field of constant colored cubes based on the integer location.\n" "This is the same as the prman cellnoise function."); double pnoise(const Vec3d &p, const Vec3d &period) { double result = NAN; std::array args {p[0], p[1], p[2]}; std::array pargs {std::max((int)1, (int)period[0]), std::max((int)1, (int)period[1]), std::max((int)1, (int)period[2])}; PNoise<3, 1>(args.data(), pargs.data(), &result); return result; } static const char* pnoise_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float pnoise ( vector v, vector period )\n" "periodic noise"); struct VoronoiPointData : public ExprFuncNode::Data { std::array points; Vec3d cell; double jitter {-1}; VoronoiPointData() = default; }; static Vec3d *voronoi_points(VoronoiPointData &data, const Vec3d &cell, double jitter) { if (cell == data.cell && jitter == data.jitter) return data.points.data(); data.cell = cell; data.jitter = jitter; int n = 0; for (int i = -1; i <= 1; i++) { for (int j = -1; j <= 1; j++) { for (int k = -1; k <= 1; k++, n++) { Vec3d testcell = cell + Vec3d(i, j, k); data.points[n] = testcell + jitter * (ccellnoise(testcell) - Vec3d(.5)); } } } return data.points.data(); } static void voronoi_f1_3d(VoronoiPointData &data, const Vec3d &p, double jitter, double &f1, Vec3d &pos1) { // from Advanced Renderman, page 257 Vec3d thiscell(floor(p[0]) + 0.5, floor(p[1]) + 0.5, floor(p[2]) + 0.5); f1 = 1000; Vec3d *pos = voronoi_points(data, thiscell, jitter); Vec3d *end = pos + 27; for (; pos != end; pos++) { Vec3d offset = *pos - p; double dist = offset.dot(offset); if (dist < f1) { f1 = dist; pos1 = *pos; } } f1 = sqrt(f1); } static void voronoi_f1f2_3d(VoronoiPointData &data, const Vec3d &p, double jitter, double &f1, Vec3d &pos1, double &f2, Vec3d &pos2) { // from Advanced Renderman, page 258 Vec3d thiscell(floor(p[0]) + 0.5, floor(p[1]) + 0.5, floor(p[2]) + 0.5); f1 = f2 = 1000; Vec3d *pos = voronoi_points(data, thiscell, jitter); Vec3d *end = pos + 27; for (; pos != end; pos++) { Vec3d offset = *pos - p; double dist = offset.dot(offset); if (dist < f1) { f2 = f1; pos2 = pos1; f1 = dist; pos1 = *pos; } else if (dist < f2) { f2 = dist; pos2 = *pos; } } f1 = sqrt(f1); f2 = sqrt(f2); } Vec3d voronoiFn(VoronoiPointData &data, int n, const Vec3d *args) { // args = p, type, jitter, // fbmScale, fbmOctaves, fbmLacunarity, fbmGain Vec3d p; int type = 1; double jitter = 0.5; double fbmScale = 0; double fbmOctaves = 4; double fbmLacunarity = 2; double fbmGain = 0.5; switch (n) { case 7: fbmGain = args[6][0]; /* fall through */ case 6: fbmLacunarity = args[5][0]; /* fall through */ case 5: fbmOctaves = args[4][0]; /* fall through */ case 4: fbmScale = args[3][0]; /* fall through */ case 3: jitter = clamp(args[2][0], 1e-3, 1); /* fall through */ case 2: type = int(args[1][0]); /* fall through */ case 1: p = args[0]; } if (fbmScale > 0) { std::array fbmArgs; fbmArgs[0] = 2 * p; fbmArgs[1] = fbmOctaves; fbmArgs[2] = fbmLacunarity; fbmArgs[3] = fbmGain; p += fbmScale * vfbm(4, fbmArgs.data()); } double f1 = NAN; double f2 = NAN; Vec3d pos1; Vec3d pos2; if (type >= 3) voronoi_f1f2_3d(data, p, jitter, f1, pos1, f2, pos2); else voronoi_f1_3d(data, p, jitter, f1, pos1); switch (type) { case 1: pos1[0] += 10; return cellnoise(pos1); case 2: return f1; case 3: return f2; case 4: return f2 - f1; case 5: { float scalefactor = static_cast((pos2 - pos1).length() / ((pos1 - p).length() + (pos2 - p).length())); return smoothstep(f2 - f1, 0, 0.1 * scalefactor); } } return 0.0; } const static char* voronoi_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float voronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int fbmOctaves=4,float fbmLacunarity=2, " "float fbmGain=.5)\n" "voronoi is a cellular noise pattern. It is a jittered variant of cellnoise."); Vec3d cvoronoiFn(VoronoiPointData &data, int n, const Vec3d *args) { // args = p, type, jitter, // fbmScale, fbmOctaves, fbmLacunarity, fbmGain Vec3d p; int type = 1; double jitter = 0.5; double fbmScale = 0; double fbmOctaves = 4; double fbmLacunarity = 2; double fbmGain = 0.5; switch (n) { case 7: fbmGain = args[6][0]; /* fall through */ case 6: fbmLacunarity = args[5][0]; /* fall through */ case 5: fbmOctaves = args[4][0]; /* fall through */ case 4: fbmScale = args[3][0]; /* fall through */ case 3: jitter = clamp(args[2][0], 1e-3, 1); /* fall through */ case 2: type = int(args[1][0]); /* fall through */ case 1: p = args[0]; } if (fbmScale > 0) { std::array fbmArgs; fbmArgs[0] = 2 * p; fbmArgs[1] = fbmOctaves; fbmArgs[2] = fbmLacunarity; fbmArgs[3] = fbmGain; p += fbmScale * vfbm(4, fbmArgs.data()); } double f1 = NAN; double f2 = NAN; Vec3d pos1; Vec3d pos2; if (type >= 3) voronoi_f1f2_3d(data, p, jitter, f1, pos1, f2, pos2); else voronoi_f1_3d(data, p, jitter, f1, pos1); Vec3d color = ccellnoise(pos1); switch (type) { case 1: pos1[0] += 10; return color; case 2: return f1 * color; case 3: return f2 * color; case 4: return (f2 - f1) * color; case 5: { float scalefactor = static_cast((pos2 - pos1).length() / ((pos1 - p).length() + (pos2 - p).length())); return smoothstep(f2 - f1, 0, 0.1 * scalefactor) * color; } } return 0.0; } const static char* cvoronoi_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "color cvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int fbmOctaves=4,float fbmLacunarity=2, " "float fbmGain=.5)\n" "returns color in cellular pattern. It is a jittered variant of cellnoise."); Vec3d pvoronoiFn(VoronoiPointData &data, int n, const Vec3d *args) { // args = p, jitter, // fbmScale, fbmOctaves, fbmLacunarity, fbmGain Vec3d p; double jitter = 0.5; double fbmScale = 0; double fbmOctaves = 4; double fbmLacunarity = 2; double fbmGain = 0.5; switch (n) { case 6: fbmGain = args[5][0]; /* fall through */ case 5: fbmLacunarity = args[4][0]; /* fall through */ case 4: fbmOctaves = args[3][0]; /* fall through */ case 3: fbmScale = args[2][0]; /* fall through */ case 2: jitter = clamp(args[1][0], 1e-3, 1); /* fall through */ case 1: p = args[0]; } if (fbmScale > 0) { std::array fbmArgs; fbmArgs[0] = 2 * p; fbmArgs[1] = fbmOctaves; fbmArgs[2] = fbmLacunarity; fbmArgs[3] = fbmGain; p += fbmScale * vfbm(4, fbmArgs.data()); } double f1 = NAN; Vec3d pos1; voronoi_f1_3d(data, p, jitter, f1, pos1); return pos1; } const static char* pvoronoi_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "color pvoronoi(vector v, int type=1,float jitter=0.5, float fbmScale=0, int fbmOctaves=4,float fbmLacunarity=2, " "float fbmGain=.5)\n" "returns center of voronoi cell."); class CachedVoronoiFunc : public ExprFuncSimple { public: using VoronoiFunc = Vec3d(VoronoiPointData &, int, const Vec3d *); CachedVoronoiFunc(VoronoiFunc *vfunc) noexcept : ExprFuncSimple(true) , _vfunc(vfunc) { } ExprType prep(ExprFuncNode *node, bool, ExprVarEnvBuilder &envBuilder) const override { // check number of arguments int nargs = node->numChildren(); if (nargs < 1 || nargs > 7) { node->addError(ErrorCode::WrongNumberOfArguments); return ExprType().Error(); } bool valid = true; valid &= node->checkArg(0, ExprType().FP(3).Varying(), envBuilder); for (int i = 1; i < nargs; i++) valid &= node->checkArg(i, ExprType().FP(1).Constant(), envBuilder); return valid ? ExprType().FP(3).Varying() : ExprType().Error(); } ExprFuncNode::Data *evalConstant(const ExprFuncNode *, ArgHandle) const override { return new VoronoiPointData(); } void eval(ArgHandle args) override { auto *data = dynamic_cast(args.data); int nargs = args.nargs(); auto sevArgs = std::vector(nargs); for (int i = 0; i < nargs; i++) for (int j = 0; j < 3; j++) sevArgs[i][j] = args.inFp<3>(i)[j]; Vec3d result = _vfunc(*data, nargs, sevArgs.data()); double *out = &args.outFp; for (int i = 0; i < 3; i++) out[i] = result[i]; } private: VoronoiFunc *_vfunc; } voronoi(voronoiFn), cvoronoi(cvoronoiFn), pvoronoi(pvoronoiFn); double dist(const Vec3d &a, const Vec3d &b) { double x = a[0] - b[0]; double y = a[1] - b[1]; double z = a[2] - b[2]; return sqrt(x * x + y * y + z * z); } static const char* dist_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float dist(vector a, vector b)\n" "distance between two points"); double length(const Vec3d &v) { return sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); } static const char* length_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float length(vector v)\n" "length of vector"); double hypot(double x, double y) { return sqrt(x * x + y * y); } static const char* hypot_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float hypot(vector v)\n" "length of 2d vector [x,y]"); double dot(const Vec3d &a, const Vec3d &b) { return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; } static const char* dot_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float dot(vector a,vector b)\n" "vector dot product"); Vec3d norm(const Vec3d &a) { double len = length(a); if (len == 0) return 0.0; else return a / len; } static const char* norm_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "vector norm(vector v)\n" "vector scaled to unit length"); Vec3d cross(const Vec3d &a, const Vec3d &b) { return {a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]}; } static const char* cross_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "vector cross(vector a,vector b)\n" "vector cross product"); double angle(const Vec3d &a, const Vec3d &b) { double len = length(a) * length(b); if (len == 0) return 0; return acos(dot(a, b) / len); } static const char* angle_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float angle(vector a,vector b)\n" "angle between two vectors (in radians)"); Vec3d ortho(const Vec3d &a, const Vec3d &b) { return norm(cross(a, b)); } static const char* ortho_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "vector angle(vector a,vector b)\n" "normalized vector orthogonal to a and b scaled to unit length"); Vec3d rotate(int n, const Vec3d *args) { if (n != 3) return 0.0; const Vec3d &P = args[0]; const Vec3d &axis = args[1]; auto angle = static_cast(args[2][0]); double len = axis.length(); if (len == 0.0) return P; return P.rotateBy(axis / len, angle); } static const char* rotate_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "vector rotate(vector v,vector axis,float angle)\n" "rotates v around axis by given angle (in radians)"); Vec3d up(const Vec3d &P, const Vec3d &upvec) { // rotate vec so y-axis points to upvec Vec3d yAxis(0, 1, 0); return P.rotateBy(ortho(upvec, yAxis), angle(upvec, yAxis)); } static const char* up_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "vector up(vector P,vector upvec)\n" "rotates v such that the Y axis points in the given up direction"); double cycle(double index, double loRange, double hiRange) { int lo = int(loRange); int hi = int(hiRange); int range = hi - lo + 1; if (range <= 0) return lo; int result = int(index) % range; if (result < 0) result += range; return lo + result; } static const char* cycle_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "int cycle(int index, int loRange, int hiRange )\n" "Cycles through values between loRange and hiRange based on supplied index.\n" "This is an offset \"mod\" function. " "The result is computed as ``loRange + value % (hiRange-loRange+1)``."); double pick(int n, double *params) { if (n < 3) return 0; double index = hash(1, ¶ms[0]); int loRange = int(params[1]); int hiRange = int(params[2]); int range = hiRange - loRange + 1; if (range <= 0) return loRange; int numWeights = n - 3; if (numWeights > range) numWeights = range; // build cutoff points based on weights // note: n is user-controlled; replaced with vector() - amyspark auto cutoffs = std::vector(range); auto weights = std::vector(range); double total = 0; for (int i = 0; i < range; i++) { double weight = i < numWeights ? params[i + 3] : 1; total += weight; cutoffs[i] = total; weights[i] = weight; } if (total == 0) return loRange; // scale value from [0..1] to [0..total] range index *= total; // bsearch cutoff table to find index that spans value int lo = 0; int hi = range - 1; while (lo < hi) { int m = (lo + hi) / 2; if (index <= cutoffs[m]) hi = m; else lo = m + 1; } // skip zero-length intervals if (weights[lo] == 0) { if (lo > 0 && cutoffs[lo] > 0) // scan backward if possible while (--lo > 0 && weights[lo] == 0) ; else if (lo < range - 1) // else scan forward if possible while (++lo < range - 1 && weights[lo] == 0) ; } // add offset and return result return loRange + lo; } static const char* pick_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "int pick(float index, int loRange, int hiRange, [float weights, ...] )\n" "Picks values randomly between loRange and hiRange based on supplied index (which is\n" "automatically hashed).  The values will be distributed according\n" "to the supplied weights.  Any weights not supplied are assumed to\n" "be 1.0."); double swatch(int n, double *params) { return choose(n, params); } static const char* swatch_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "color swatch(float index, color choice0, color choice1, color choice2, [...])\n" "Chooses one of the supplied color choices based on the index (assumed to be in range [0..1])."); double choose(int n, double *params) { if (n < 3) return 0; double key = params[0]; // NaN protection if (key != key) return 0; int nvals = n - 1; return params[1 + int(clamp(key * nvals, 0, nvals - 1))]; } static const char* choose_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float choose(float index,float choice1, float choice2, [...])\n" "Chooses one of the supplied choices based on the index (assumed to be in range [0, 1])."); double wchoose(int n, double *params) { if (n < 5) return 0; double key = params[0]; // NaN protection if (key != key) return 0; int nvals = (n - 1) / 2; // nweights = nvals // build cutoff points based on weights // note: n is user-controlled; replaced with vector() - amyspark auto cutoffs = std::vector(nvals); auto weights = std::vector(nvals); double total = 0; for (int i = 0; i < nvals; i++) { double weight = params[i * 2 + 2]; total += weight; cutoffs[i] = total; weights[i] = weight; } if (total == 0) return params[1]; // scale value from [0..1] to [0..total] range key *= total; // bsearch cutoff table to find index that spans value int lo = 0; int hi = nvals - 1; while (lo < hi) { int m = (lo + hi) / 2; if (key <= cutoffs[m]) hi = m; else lo = m + 1; } // skip zero-length intervals if (weights[lo] == 0) { if (lo > 0 && cutoffs[lo] > 0) // scan backward if possible while (--lo > 0 && weights[lo] == 0) ; else if (lo < nvals - 1) // else scan forward if possible while (++lo < nvals - 1 && weights[lo] == 0) ; } // return corresponding value return params[lo * 2 + 1]; } static const char* wchoose_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float wchoose(float index,float choice1, float weight1, float choice2, float weight2, [...] )\n" "Chooses one of the supplied choices based on the index (assumed to be in range [0..1]).\n" "The values will be distributed according to the supplied weights."); double spline(int n, double *params) { if (n < 5) return 0; double u = clamp(params[0], 0, 1); if (u == 0) return params[2]; if (u == 1) return params[n - 2]; int nsegs = n - 4; double seg = NAN; u = modf(u * nsegs, &seg); double *p = ¶ms[int(seg) + 1]; double u2 = u * u; double u3 = u2 * u; return 0.5 * (p[0] * (-u3 + 2 * u2 - u) + p[1] * (3 * u3 - 5 * u2 + 2) + p[2] * (-3 * u3 + 4 * u2 + u) + p[3] * (u3 - u2)); } static const char* spline_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float spline(float param,float y1,float y2,float y3,float y4,[...])\n\n" "Interpolates a set of values to the parameter specified where y1, ..., yn are\n" "distributed evenly from [0..1]"); template struct CurveData : public ExprFuncNode::Data { Curve curve; CurveData() = default; ~CurveData() override = default; CurveData(const CurveData &) = default; CurveData &operator=(const CurveData &) = default; CurveData(CurveData &&) noexcept = default; CurveData &operator=(CurveData &&) noexcept = default; }; class CurveFuncX : public ExprFuncSimple { public: CurveFuncX() noexcept : ExprFuncSimple(true) { } ExprType prep(ExprFuncNode *node, bool, ExprVarEnvBuilder &envBuilder) const override { // check number of arguments int nargs = node->numChildren(); if ((nargs - 1) % 3) { node->addError(ErrorCode::WrongNumberOfArgumentsMultiple3Plus1); return ExprType().Error(); } bool valid = true; valid &= node->checkArg(0, ExprType().FP(1).Varying(), envBuilder); for (int i = 1; i < nargs && valid; i += 3) { valid &= node->checkArg(i, ExprType().FP(1).Constant(), envBuilder); valid &= node->checkArg(i + 1, ExprType().FP(1).Constant(), envBuilder); valid &= node->checkArg(i + 2, ExprType().FP(1).Constant(), envBuilder); if (valid) { const auto *value = dynamic_cast(node->child(i + 2)); if (!value) { node->addError(ErrorCode::Unknown, {QT_TRANSLATE_NOOP_UTF8("builtin", "Unable to validate the interpolant type")}); return ExprType().Error().Varying(); } else if (!Curve::interpTypeValid(static_cast::InterpType>((int)value->value()))){ node->addError(ErrorCode::Unknown, {QT_TRANSLATE_NOOP_UTF8("builtin", "Invalid interpolant type")}); return ExprType().Error().Varying(); } } } return valid ? ExprType().FP(1).Varying() : ExprType().Error(); } ExprFuncNode::Data *evalConstant(const ExprFuncNode *, ArgHandle args) const override { auto *data = new CurveData; for (int i = 1; i < args.nargs() - 2; i += 3) { double pos = args.inFp<1>(i)[0]; double val = args.inFp<1>(i + 1)[0]; double interpDouble = args.inFp<1>(i + 2)[0]; int interpInt = (int)interpDouble; auto interpolant = (Curve::InterpType)interpInt; if (!Curve::interpTypeValid(interpolant)) { assert(false && "ExprFuncNode ERROR: invalid interpolant type!"); } data->curve.addPoint(pos, val, interpolant); } data->curve.preparePoints(); return data; } void eval(ArgHandle args) override { auto *data = dynamic_cast *>(args.data); double param = args.inFp<1>(0)[0]; args.outFp = data->curve.getValue(param); } } curve; static const char* curve_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float curve(float param,float pos0,float val0,int interp0,float pos1,float val1,int interp1,[...])\n\n" "Interpolates a 1D ramp defined by control points at 'param'. Control points are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)"); class CCurveFuncX : public ExprFuncSimple { ExprType prep(ExprFuncNode *node, bool, ExprVarEnvBuilder &envBuilder) const override { // check number of arguments int nargs = node->numChildren(); if ((nargs - 1) % 3) { node->addError(ErrorCode::WrongNumberOfArgumentsMultiple3Plus1); return ExprType().Error().Varying(); } bool valid = true; valid &= node->checkArg(0, ExprType().FP(1).Varying(), envBuilder); for (int i = 1; i < nargs && valid; i += 3) { valid &= node->checkArg(i, ExprType().FP(1).Constant(), envBuilder); valid &= node->checkArg(i + 1, ExprType().FP(3).Constant(), envBuilder); valid &= node->checkArg(i + 2, ExprType().FP(1).Constant(), envBuilder); if (valid) { const auto *value = dynamic_cast(node->child(i + 2)); if (!value) { node->addError(ErrorCode::Unknown, {QT_TRANSLATE_NOOP_UTF8("builtin", "Unable to validate the interpolant type")}); return ExprType().Error().Varying(); } else if (!Curve::interpTypeValid(static_cast::InterpType>((int)value->value()))) { node->addError(ErrorCode::Unknown, {QT_TRANSLATE_NOOP_UTF8("builtin", "Invalid interpolant type")}); return ExprType().Error().Varying(); } } } return valid ? ExprType().FP(3).Varying() : ExprType().Error(); } ExprFuncNode::Data *evalConstant(const ExprFuncNode *, ArgHandle args) const override { auto *data = new CurveData; for (int i = 1; i < args.nargs() - 2; i += 3) { double pos = args.inFp<1>(i)[0]; Vec3dRef val(&args.inFp<3>(i + 1)[0]); double interpDouble = args.inFp<1>(i + 2)[0]; int interpInt = (int)interpDouble; auto interpolant = (Curve::InterpType)interpInt; if (!Curve::interpTypeValid(interpolant)) { // TODO: fix error checking! } data->curve.addPoint(pos, val, interpolant); } data->curve.preparePoints(); return data; } void eval(ArgHandle args) override { auto *data = dynamic_cast *>(args.data); double param = args.inFp<1>(0)[0]; Vec3d result = data->curve.getValue(param); double *out = &args.outFp; for (int k = 0; k < 3; k++) out[k] = result[k]; } public: CCurveFuncX() noexcept : ExprFuncSimple(true) { } // Thread Safe } ccurve; static const char* ccurve_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "color curve(float param,float pos0,color val0,int interp0,float pos1,color val1,int interp1,[...])\n\n" "Interpolates color ramp given by control points at 'param'. Control points are specified \n" "by triples of parameters pos_i, val_i, and interp_i. Interpolation codes are \n" "0 - none, 1 - linear, 2 - smooth, 3 - spline, \n" "4 - monotone (non oscillating spline)"); class GetVar : public ExprFuncSimple { struct Data : public ExprFuncNode::Data { using func = void (*)(double *, double *); Data(func fIn, int dim) : f(fIn) , dim(dim) { } func f; int dim; }; ExprType prep(ExprFuncNode *node, bool wantScalar, ExprVarEnvBuilder &envBuilder) const override { bool valid = true; valid &= node->checkArg(0, ExprType().String().Constant(), envBuilder); std::string varName = node->getStrArg(0); auto *varNode = new ExprVarNode(node->expr(), varName.c_str()); ExprType varType = varNode->prep(wantScalar, envBuilder); if (varType.isValid()) { node->removeLastChild(); // remove the useless default argument from the arugment list node->removeLastChild(); // remove the useless default argument from the arugment list node->addChild(varNode); } else { delete varNode; node->swapChildren(0, 1); // move the default argument in the beginning varType = node->child(0)->prep(wantScalar, envBuilder); node->removeLastChild(); // remove the useless string argument } return varType.isValid() ? varType : ExprType().Error(); } ExprFuncNode::Data *evalConstant(const ExprFuncNode *node, ArgHandle) const override { return new Data(node->type().isFP() ? getTemplatizedOp(node->type().dim()) : nullptr, node->type().dim()); } template struct Assign { static void f(double *out, double *in) { for (int k = 0; k < d; k++) out[k] = in[k]; } }; void eval(ArgHandle args) override { Data *data = dynamic_cast(args.data); assert(data); double *out = &args.outFp; // for(int i=0;idim;i++) std::cerr<<" "<(0)[i]; // std::cerr<f) data->f(out, &args.inFp<1>(0)[0]); else throw std::runtime_error("getVar does not support non FP types right now got type"); } public: GetVar() noexcept : ExprFuncSimple(true) { } // Thread Safe } getVar; static const char* getVar_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "getVar(string varName,vector defaultValue)\n" "return value of varName if variable exists, otherwise return defaultValue"); class PrintFuncX : public ExprFuncSimple { struct Data : public ExprFuncNode::Data { std::vector> ranges; std::string format; }; public: ExprType prep(ExprFuncNode *node, bool, ExprVarEnvBuilder &envBuilder) const override { int nargs = node->numChildren(); if (nargs < 1) { node->addError(ErrorCode::WrongNumberOfArguments1Plus); return ExprType().Error(); } bool valid = true; valid &= node->checkArg(0, ExprType().String().Constant(), envBuilder); int items = 0; int searchStart = 0; auto format = node->getStrArg(0); while (true) { std::size_t percentStart = format.find('%', searchStart); if (percentStart == std::string::npos) break; if (percentStart + 1 == format.length()) { node->addError(UnexpectedEndOfFormatString); return ExprType().Error(); } else if (format[percentStart + 1] == '%') { searchStart = static_cast(percentStart + 2); continue; } else if (format[percentStart + 1] == 'v' || format[percentStart + 1] == 'f') { items++; if (items >= node->numChildren()) { // TODO: test here, checkArg should not fail node->addError(WrongNumberOfArgumentsForFormatString); return ExprType().Error(); } else { valid &= (node->checkArg(items, ExprType().FP(1), envBuilder) || node->checkArg(items, ExprType().FP(3), envBuilder)); searchStart = static_cast(percentStart + 2); } } else { node->addError(InvalidFormatString); return ExprType().Error(); } } if (!valid) { node->addError(ExpectedFloatOrFloat3); return ExprType().Error(); } else if (items != nargs - 1) { node->addError(WrongNumberOfArgumentsForFormatString); return ExprType().Error(); } return ExprType().FP(1).Constant(); } ExprFuncNode::Data *evalConstant(const ExprFuncNode *, ArgHandle args) const override { // parse format string unsigned int bakeStart = 0; int searchStart = 0; int needed = 0; Data *data = new Data; data->format = args.inStr(0); std::string &format = data->format; std::vector> &ranges = data->ranges; int items = 0; while (true) { std::size_t percentStart = format.find('%', searchStart); if (percentStart == std::string::npos) break; if (percentStart + 1 == format.length()) { // node->addError("Unexpected end of format string"); delete data; assert(false); } else if (format[percentStart + 1] == '%') { searchStart = static_cast(percentStart + 2); continue; } else if (format[percentStart + 1] == 'v' || format[percentStart + 1] == 'f') { char c = format[percentStart + 1]; int code = (c == 'v') ? -1 : -2; needed++; if (bakeStart != percentStart) ranges.emplace_back(bakeStart, static_cast(percentStart)); ranges.emplace_back(code, code); items++; searchStart = static_cast(percentStart + 2); bakeStart = searchStart; } else { // node->addError("Invalid format string, only %v is allowed"); delete data; // TODO: check that this is correct // return ExprType().Error().Varying(); // return false; assert(false); } } if (bakeStart != format.length()) ranges.emplace_back(bakeStart, static_cast(format.length())); if (items != args.nargs() - 1) { // node->addError("Wrong number of arguments for format string"); delete data; // TODO: check that this is correct // return ExprType().Error().Varying(); // return false; assert(false); } return data; } void eval(ArgHandle args) override { Data *data = dynamic_cast(args.data); int item = 1; for (unsigned int i = 0; i < data->ranges.size(); i++) { const std::pair &range = data->ranges[i]; if (range.first == -2) { std::cerr << args.inFp<1>(item)[0]; item++; } else if (range.first == -1) { std::cerr << "[" << args.inFp<3>(item)[0] << "," << args.inFp<3>(item)[1] << "," << args.inFp<3>(item)[2] << "]"; item++; } else { std::cerr << data->format.substr(range.first, range.second - range.first); } } std::cerr << std::endl; args.outFp = 0; } PrintFuncX() noexcept : ExprFuncSimple(false) { } // not thread safe } printf; static const char* printf_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "float printf(string format,[vec0, vec1, ...])\n" "Prints out a string to STDOUT, Format parameters allowed are \"%v\" and \"%f\".\n" "Return parameter is empty, but must be assigned to a variable."); class SPrintFuncX : public ExprFuncSimple { struct StringData : public KSeExpr::ExprFuncNode::Data, public std::string { }; // Format specifier categories for SPrintFuncX std::string _intSpec {"diouxXc"}; std::string _doubleSpec {"eEfFgGaA"}; std::string _strSpec {"s"}; public: SPrintFuncX() noexcept : ExprFuncSimple(false) { } // not thread safe ExprType prep(ExprFuncNode *node, bool, ExprVarEnvBuilder &envBuilder) const override { int nargs = node->numChildren(); if (nargs < 1) { node->addError(ErrorCode::WrongNumberOfArguments1Plus); return ExprType().Error().Constant(); } if (!node->checkArg(0, ExprType().String().Constant(), envBuilder)) { node->addError(ErrorCode::FirstArgumentNotString); return ExprType().Error().Constant(); } const std::string &format = dynamic_cast(node->child(0))->str(); static const std::string strSpec("s"); size_t searchStart = 0; size_t exprArg = 1; while (true) { const size_t specStart = format.find('%', searchStart); if (specStart == std::string::npos) break; if (specStart + 1 == format.length()) { node->addError(ErrorCode::IncompleteFormatSpecifier); return ExprType().Error().Constant(); } if (format[specStart + 1] == '%') { searchStart = specStart + 2; // Skip "%%" continue; } const size_t specEnd = format.find_first_of(std::string(_intSpec).append(_doubleSpec).append(_strSpec), specStart); if (specEnd == std::string::npos) { node->addError(ErrorCode::IncompleteFormatSpecifier); return ExprType().Error().Constant(); } if (_strSpec.find(format[specEnd]) != std::string::npos) { if (!node->checkArg(exprArg, ExprType().String(), envBuilder)) { return ExprType().Error().Constant(); } } else { if (!node->checkArg(exprArg, ExprType().FP(1), envBuilder)) { return ExprType().Error().Constant(); } } ++exprArg; searchStart = specEnd + 1; }; return ExprType().String().Constant(); } ExprFuncNode::Data *evalConstant(const ExprFuncNode *, ArgHandle) const override { return new StringData(); } void eval(ArgHandle args) override { auto result = *dynamic_cast(args.data); result.assign(args.inStr(0)); std::array fragment {}; size_t searchStart = 0; size_t exprArg = 1; while (true) { const size_t specStart = result.find('%', searchStart); if (specStart == std::string::npos) break; if (result[specStart + 1] == '%') { result.erase(specStart, 1); searchStart = specStart + 1; continue; } const size_t specEnd = result.find_first_of(std::string(_intSpec).append(_doubleSpec).append(_strSpec), specStart); const std::string &spec = result.substr(specStart, specEnd - specStart + 1); int fragLen = -1; if (std::string::npos != _intSpec.find(result[specEnd])) fragLen = snprintf(fragment.data(), 255, spec.c_str(), int(args.inFp<1>(exprArg++)[0])); else if (std::string::npos != _doubleSpec.find(result[specEnd])) fragLen = snprintf(fragment.data(), 255, spec.c_str(), args.inFp<1>(exprArg++)[0]); else if (std::string::npos != _strSpec.find(result[specEnd])) fragLen = snprintf(fragment.data(), 255, spec.c_str(), args.inStr(exprArg++)); assert(fragLen >= 0); result.replace(specStart, spec.size(), fragment.data()); searchStart += fragLen + 1; }; args.outStr = const_cast(result.c_str()); } } sprintf; static const char* sprintf_docstring = QT_TRANSLATE_NOOP_UTF8("builtin", "sprintf(string format, [double|string, double|string, ...])\n" "Returns a string formatted from the given values. See 'man sprintf' for format details."); #if 0 class TestFunc:public ExprFuncSimple { struct MyData:public ExprFuncNode::Data { float foo; MyData(float foo) :foo(foo) {} }; public: TestFunc() :ExprFuncSimple(true) {} virtual ExprType prep(ExprFuncNode* node,bool scalarWanted,ExprVarEnvBuilder& envBuilder) const { bool valid=true; valid &= node->checkArg(0,ExprType().FP(3).Varying(),envBuilder); valid &= node->checkArg(1,ExprType().FP(1).Constant(),envBuilder); return valid ?ExprType().FP(3).Varying():ExprType().Error(); } virtual ExprFuncNode::Data* evalConstant(ArgHandle args) const { //std::cerr<<"evalling const "<(1)<(1)[0]); } virtual void eval(ArgHandle args) { MyData* data=static_cast(args.data); Vec(&args.outFp)=args.inFp<3>(0)+Vec(data->foo); } } testfunc; static const char* testfunc_docstring="fdsA"; #endif void defineBuiltins(ExprFunc::Define, ExprFunc::Define3 define3) { // functions from math.h (global namespace) //#define FUNC(func) define(#func, ExprFunc(::func)) #define FUNCADOC(name, func) define3(name, ExprFunc(::func), func##_docstring) #define FUNCDOC(func) define3(#func, ExprFunc(::func), func##_docstring) FUNCADOC("abs", fabs); FUNCDOC(acos); FUNCDOC(asin); FUNCDOC(atan); FUNCDOC(atan2); FUNCDOC(ceil); FUNCDOC(cos); FUNCDOC(cosh); FUNCDOC(exp); FUNCDOC(floor); FUNCDOC(fmod); FUNCDOC(log); FUNCDOC(log10); FUNCDOC(pow); FUNCDOC(sin); FUNCDOC(sinh); FUNCDOC(sqrt); FUNCDOC(tan); FUNCDOC(tanh); FUNCDOC(cbrt); FUNCDOC(asinh); FUNCDOC(acosh); FUNCDOC(atanh); FUNCDOC(trunc); // local functions (KSeExpr namespace) //#undef FUNC #undef FUNCDOC //#define FUNC(func) define(#func, ExprFunc(KSeExpr::func)) //#define FUNCN(func, min, max) define(#func, ExprFunc(KSeExpr::func, min, max)) #define FUNCDOC(func) define3(#func, ExprFunc(KSeExpr::func), func##_docstring) #define FUNCNDOC(func, min, max) define3(#func, ExprFunc(KSeExpr::func, min, max), func##_docstring) // trig FUNCDOC(deg); FUNCDOC(rad); FUNCDOC(cosd); FUNCDOC(sind); FUNCDOC(tand); FUNCDOC(acosd); FUNCDOC(asind); FUNCDOC(atand); FUNCDOC(atan2d); // clamping FUNCDOC(clamp); FUNCDOC(round); FUNCDOC(max); FUNCDOC(min); // blending / remapping FUNCDOC(invert); FUNCDOC(compress); FUNCDOC(expand); FUNCDOC(fit); FUNCDOC(gamma); FUNCDOC(bias); FUNCDOC(contrast); FUNCDOC(boxstep); FUNCDOC(linearstep); FUNCDOC(smoothstep); FUNCDOC(gaussstep); FUNCDOC(remap); FUNCDOC(mix); FUNCNDOC(hsi, 4, 5); FUNCNDOC(midhsi, 5, 7); FUNCDOC(hsltorgb); FUNCDOC(rgbtohsl); FUNCNDOC(saturate, 2, 2); // noise FUNCNDOC(rand, 0, 3); FUNCNDOC(hash, 1, -1); FUNCNDOC(noise, 1, 4); FUNCDOC(snoise); FUNCDOC(vnoise); FUNCDOC(cnoise); FUNCNDOC(snoise4, 2, 2); FUNCNDOC(vnoise4, 2, 2); FUNCNDOC(cnoise4, 2, 2); FUNCNDOC(turbulence, 1, 4); FUNCNDOC(vturbulence, 1, 4); FUNCNDOC(cturbulence, 1, 4); FUNCNDOC(fbm, 1, 4); FUNCNDOC(vfbm, 1, 4); FUNCNDOC(cfbm, 1, 4); FUNCDOC(cellnoise); FUNCDOC(ccellnoise); FUNCDOC(pnoise); FUNCNDOC(fbm4, 2, 5); FUNCNDOC(vfbm4, 2, 5); FUNCNDOC(cfbm4, 2, 5); // vectors FUNCDOC(dist); FUNCDOC(length); FUNCDOC(hypot); FUNCDOC(dot); FUNCDOC(norm); FUNCDOC(cross); FUNCDOC(angle); FUNCDOC(ortho); FUNCNDOC(rotate, 3, 3); FUNCDOC(up); // variations FUNCDOC(cycle); FUNCNDOC(pick, 3, -1); FUNCNDOC(choose, 3, -1); FUNCNDOC(wchoose, 4, -1); FUNCNDOC(swatch, 3, -1); FUNCNDOC(spline, 5, -1); // FuncX interface // noise FUNCNDOC(voronoi, 1, 7); FUNCNDOC(cvoronoi, 1, 7); FUNCNDOC(pvoronoi, 1, 6); // variations FUNCNDOC(curve, 1, -1); FUNCNDOC(ccurve, 1, -1); FUNCNDOC(getVar, 2, 2); FUNCNDOC(printf, 1, -1); // FUNCNDOC(testfunc,2,2); FUNCNDOC(sprintf, 1, -1); } } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/ExprBuiltins.h0000644000000000000240000000706314156102631020260 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #ifndef ExprBuiltins_h #define ExprBuiltins_h #if !defined(_USE_MATH_DEFINES) #define _USE_MATH_DEFINES #endif #include #include "ExprFunc.h" /// Translation macros - for UI extraction /// These macros *need* a context for lupdate to not complain #ifndef QT_TRANSLATE_NOOP #define QT_TRANSLATE_NOOP(scope, x) x #endif #ifndef QT_TRANSLATE_NOOP_UTF8 #define QT_TRANSLATE_NOOP_UTF8(scope, x) x #endif namespace KSeExpr { // trig inline double deg(double angle) { return angle * (180 / M_PI); } inline double rad(double angle) { return angle * (M_PI / 180); } inline double cosd(double x) { return cos(rad(x)); } inline double sind(double x) { return sin(rad(x)); } inline double tand(double x) { return tan(rad(x)); } inline double acosd(double x) { return deg(acos(x)); } inline double asind(double x) { return deg(asin(x)); } inline double atand(double x) { return deg(atan(x)); } inline double atan2d(double y, double x) { return deg(atan2(y, x)); } // clamping inline double clamp(double x, double lo, double hi) { return x < lo ? lo : x > hi ? hi : x; } inline double round(double x) { return x < 0 ? ceil(x - 0.5) : floor(x + 0.5); } inline double max(double x, double y) { return x > y ? x : y; } inline double min(double x, double y) { return x < y ? x : y; } // blending / remapping inline double invert(double x) { return 1 - x; } double compress(double x, double lo, double hi); double expand(double x, double lo, double hi); double fit(double x, double a1, double b1, double a2, double b2); double gamma(double x, double g); double bias(double x, double b); double contrast(double x, double c); double boxstep(double x, double a); double linearstep(double x, double a, double b); double smoothstep(double x, double a, double b); double gaussstep(double x, double a, double b); double remap(double x, double s, double r, double f, double interp); double mix(double x, double y, double alpha); Vec3d hsi(int n, const Vec3d *args); Vec3d midhsi(int n, const Vec3d *args); Vec3d rgbtohsl(const Vec3d &rgb); Vec3d hsltorgb(const Vec3d &hsl); // noise double hash(int n, double *args); double noise(int n, const Vec3d *args); double snoise(const Vec3d &p); Vec3d cnoise(const Vec3d &p); Vec3d vnoise(const Vec3d &p); double turbulence(int n, const Vec3d *args); Vec3d vturbulence(int n, const Vec3d *args); Vec3d cturbulence(int n, const Vec3d *args); double fbm(int n, const Vec3d *args); Vec3d vfbm(int n, const Vec3d *args); Vec3d cfbm(int n, const Vec3d *args); double cellnoise(const Vec3d &p); Vec3d ccellnoise(const Vec3d &p); double pnoise(const Vec3d &p, const Vec3d &period); // vectors double dist(const Vec3d &a, const Vec3d &b); double length(const Vec3d &v); double hypot(double x, double y); double dot(const Vec3d &a, const Vec3d &b); Vec3d norm(const Vec3d &a); Vec3d cross(const Vec3d &a, const Vec3d &b); double angle(const Vec3d &a, const Vec3d &b); Vec3d ortho(const Vec3d &a, const Vec3d &b); Vec3d up(const Vec3d &P, const Vec3d &upvec); // variations double cycle(double index, double loRange, double hiRange); double pick(int n, double *params); double choose(int n, double *params); double wchoose(int n, double *params); double spline(int n, double *params); // add builtins to expression function table void defineBuiltins(ExprFunc::Define define, ExprFunc::Define3 define3); } // namespace KSeExpr #endif kseexpr-4.0.4.0/src/KSeExpr/ExprConfig.h.in0000644000000000000240000000055114156102631020274 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #cmakedefine SEEXPR_ENABLE_LLVM #cmakedefine KSeExpr_HAVE_CHARCONV_WITH_DOUBLES #cmakedefine KSeExpr_HAVE_DYNAMIC_DISPATCH kseexpr-4.0.4.0/src/KSeExpr/ExprEnv.cpp0000644000000000000240000000646014156102631017552 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #include "ExprEnv.h" #include "ExprType.h" #include "Expression.h" namespace KSeExpr { void ExprVarEnv::resetAndSetParent(ExprVarEnv *parent) { _parent = parent; } ExprLocalVar *ExprVarEnv::find(const std::string &name) { auto iter = _map.find(name); if (iter != _map.end()) return iter->second.get(); else if (_parent) return _parent->find(name); else return nullptr; } ExprLocalFunctionNode *ExprVarEnv::findFunction(const std::string &name) { auto iter = _functions.find(name); if (iter != _functions.end()) return iter->second; else if (_parent) return _parent->findFunction(name); else return nullptr; } ExprLocalVar const *ExprVarEnv::lookup(const std::string &name) const { auto iter = _map.find(name); if (iter != _map.end()) return iter->second.get(); else if (_parent) return _parent->lookup(name); return nullptr; } void ExprVarEnv::addFunction(const std::string &name, ExprLocalFunctionNode *prototype) { // go to parent until we are at root (all functions globally declared) if (_parent) _parent->addFunction(name, prototype); else { auto iter = _functions.find(name); if (iter != _functions.end()) iter->second = prototype; else _functions.insert(std::make_pair(name, prototype)); } } void ExprVarEnv::add(const std::string &name, std::unique_ptr var) { auto iter = _map.find(name); if (iter != _map.end()) { // throw std::runtime_error("Invalid creation of existing variable in same scope!"); shadowedVariables.emplace_back(std::move(iter->second)); iter->second = std::move(var); } else _map.insert(std::make_pair(name, std::move(var))); } size_t ExprVarEnv::mergeBranches(const ExprType &type, ExprVarEnv &env1, ExprVarEnv &env2) { using MakeMap = std::map, std::string>; MakeMap phisToMake; /// For each thing in env1 see if env2 has an entry for (auto &ienv : env1._map) { const std::string &name = ienv.first; ExprLocalVar *var = ienv.second.get(); if (ExprLocalVar *env2Var = env2.find(name)) { phisToMake[std::make_pair(var, env2Var)] = name; } } /// For each thing in env2 see if env1 has an entry for (auto &ienv : env2._map) { const std::string &name = ienv.first; ExprLocalVar *var = ienv.second.get(); if (ExprLocalVar *env1Var = env1.find(name)) { phisToMake[std::make_pair(env1Var, var)] = name; } } std::vector> mergedVariablesInThisCall; for (auto& it : phisToMake) { auto newVar = std::make_unique(type, it.first.first, it.first.second); mergedVariablesInThisCall.emplace_back(it.second, dynamic_cast(newVar.get())); add(it.second, std::move(newVar)); } _mergedVariables.emplace_back(std::move(mergedVariablesInThisCall)); return _mergedVariables.size() - 1; } } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/ExprEnv.h0000644000000000000240000001670314156102631017220 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include #include #include #include #include #include "ExprLLVM.h" #include "ExprType.h" namespace KSeExpr { class ExprVarRef; class ExprLocalVar; class ExprNode; class ExprLocalFunctionNode; class Interpreter; //! ExprLocalVar reference, all local variables in seexpr are subclasses of this or this itself class ExprLocalVar { private: ExprType _type; ExprLocalVar *_phi {nullptr}; mutable LLVM_VALUE _varPtr {0}; public: ExprLocalVar(const ExprType &type) : _type(type) { } virtual ~ExprLocalVar() = default; ExprLocalVar(ExprLocalVar &) = default; ExprLocalVar(ExprLocalVar &&) = default; ExprLocalVar &operator=(const ExprLocalVar &) = default; ExprLocalVar &operator=(ExprLocalVar &&) = default; //! get the primary representative phi node (i.e. the global parent of a dependent phi node) const ExprLocalVar *getPhi() const { return _phi; } //! returns type of the variable ExprType type() const { return _type; } //! setter for variable type virtual void setType(const ExprType &type) { _type = type; } //! sets the representative phi node (like a brute force set unioning operation) phi is the set representative virtual void setPhi(ExprLocalVar *phi) { _phi = phi; } //! LLVM value that has been allocated virtual LLVM_VALUE codegen(LLVM_BUILDER, const std::string &, LLVM_VALUE) LLVM_BASE; //! LLVM value that has been pre-done virtual LLVM_VALUE varPtr() { return _varPtr; } //! Allocates variable for interpreter int buildInterpreter(Interpreter *interpreter) const; }; //! ExprLocalVar join (merge) references. Remembers which variables are possible assigners to this // This is basically like single assignment form inspired. hence the phi node nomenclature. class ExprLocalVarPhi : public ExprLocalVar { public: ExprLocalVarPhi(const ExprType &condLife, ExprLocalVar *thenVar, ExprLocalVar *elseVar) : ExprLocalVar(ExprType()) , _thenVar(thenVar) , _elseVar(elseVar) { // find the compatible common-denominator lifetime ExprType firstType = _thenVar->type(); ExprType secondType = _elseVar->type(); if (ExprType::valuesCompatible(_thenVar->type(), _elseVar->type())) { setType(((firstType.isFP(1) ? secondType : firstType).setLifetime(firstType, secondType))); } // lifetime should be the minimum (error=0,varying=1,uniform=2,constant=3). // i.e. you can only guarantee something is constant if the condition, ifvar, and else var are the same setType(type().setLifetime(firstType, secondType, condLife)); } bool valid() const { return !type().isError(); } void setPhi(ExprLocalVar *phi) override { ExprLocalVar::setPhi(phi); _thenVar->setPhi(phi); _elseVar->setPhi(phi); } ExprNode *_condNode {nullptr}; ExprLocalVar *_thenVar {nullptr}, *_elseVar {nullptr}; }; //! Variable scope for tracking variable lookup class ExprVarEnv { private: using VarDictType = std::map>; VarDictType _map; using FuncDictType = std::map; FuncDictType _functions; //! Variables that have been superceded (and thus are inaccessible) // i.e. a=3;a=[1,2,3];a=[2];a will yield 2 entries in shadowedVariables std::vector> shadowedVariables; //! Keep track of all merged variables in std::vector>> _mergedVariables; //! Parent variable environment has all variablesf rom previou scope (for lookup) ExprVarEnv *_parent {nullptr}; protected: ExprVarEnv(ExprVarEnv &other); ExprVarEnv &operator=(const ExprVarEnv &other); public: // TODO: figure out when anotherOwns is needed //! Create a scope with no parent ExprVarEnv() = default; ~ExprVarEnv() = default; ExprVarEnv(ExprVarEnv &&) = default; ExprVarEnv& operator=(ExprVarEnv&&) = default; //! Resets the scope (deletes all variables) and sets parent void resetAndSetParent(ExprVarEnv *parent); //! Find a function by name (recursive to parents) ExprLocalFunctionNode *findFunction(const std::string &name); //! Find a variable name by name (recursive to parents) ExprLocalVar *find(const std::string &name); //! Find a const variable reference name by name (recursive to parents) ExprLocalVar const *lookup(const std::string &name) const; //! Add a function void addFunction(const std::string &name, ExprLocalFunctionNode *prototype); //! Add a variable refernece void add(const std::string &name, std::unique_ptr var); //! Add all variables into scope by name, but modify their lifetimes to the given type's lifetime // void add(ExprVarEnv & env,const ExprType & modifyingType); //! Checks if each branch shares the same items and the same types! // static bool branchesMatch(const ExprVarEnv & env1, const ExprVarEnv & env2); size_t mergeBranches(const ExprType &type, ExprVarEnv &env1, ExprVarEnv &env2); // Code generate merges. LLVM_VALUE codegenMerges(LLVM_BUILDER, int) LLVM_BASE; // NOLINT // Query merges std::vector> &merge(size_t index) { return _mergedVariables[index]; } }; //! Variable scope builder is used by the type checking and code gen to track visiblity of variables and changing of // scopes // It is inspired by IRBuilder's notion of a basic block insertion point class ExprVarEnvBuilder { public: //! Creates an empty builder with one current scope entry ExprVarEnvBuilder() { reset(); } //! Reset to factory state (one empty environment that is current) void reset() { std::unique_ptr newEnv(new ExprVarEnv); _currentEnv = newEnv.get(); all.emplace_back(std::move(newEnv)); } //! Return the current variable scope ExprVarEnv *current() { return _currentEnv; } //! Set a new current variable scope void setCurrent(ExprVarEnv *env) { _currentEnv = env; } //! Create a descendant scope from the provided parent, does not clobber current ExprVarEnv *createDescendant(ExprVarEnv *parent) { std::unique_ptr newEnv(new ExprVarEnv); newEnv->resetAndSetParent(parent); all.emplace_back(std::move(newEnv)); return all.back().get(); } private: //! All owned symbol tables std::vector> all; //! The current symbol table (should be a pointer owned by all) ExprVarEnv *_currentEnv {nullptr}; }; //! Evaluation result. struct ExprEvalResult { ExprEvalResult() = default; ExprEvalResult(int n, double *fp) : n(n) , fp(fp) { } ExprEvalResult(const char **c) : n(1) , str(c) { } ExprEvalResult(int n, double *fp, const char **c) : n(n) , fp(fp) , str(c) { } int n {0}; double *fp {nullptr}; const char **str {nullptr}; }; } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/ExprFunc.cpp0000644000000000000240000001244514156102631017715 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #include #include #include #include #include #include "ExprBuiltins.h" #include "ExprFunc.h" #include "ExprNode.h" #include "Expression.h" namespace { // FuncTable - table of pre-defined functions class FuncTable { public: void define(const char *name, const KSeExpr::ExprFunc &f, const char *docString = nullptr) { if (docString) funcmap[name] = FuncMapItem(std::string(docString), f); else funcmap[name] = FuncMapItem(name, f); } const KSeExpr::ExprFunc *lookup(const std::string &name) { const auto &i = funcmap.find(name); if (i == funcmap.end()) return nullptr; else return &i->second.second; } void getFunctionNames(std::vector &names) { for (const auto &i : funcmap) names.push_back(i.first); } std::string getDocString(const char *functionName) { const auto &i = funcmap.find(functionName); if (i == funcmap.end()) return ""; else return i->second.first; } size_t sizeInBytes() const { size_t totalSize = 0; for (const auto &it : funcmap) { totalSize += it.first.size() + sizeof(FuncMapItem); const KSeExpr::ExprFunc &function = it.second.second; if (const KSeExpr::ExprFuncX *funcx = function.funcx()) { totalSize += funcx->sizeInBytes(); } } return totalSize; } KSeExpr::Statistics statistics() const { KSeExpr::Statistics statisticsDump; size_t totalSize = 0; for (const auto &it : funcmap) { totalSize += it.first.size() + sizeof(FuncMapItem); const KSeExpr::ExprFunc &function = it.second.second; if (const KSeExpr::ExprFuncX *funcx = function.funcx()) { funcx->statistics(statisticsDump); } } return statisticsDump; } private: using FuncMapItem = std::pair; using FuncMap = std::map; FuncMap funcmap; }; std::unique_ptr Functions; } // namespace // ExprType ExprFuncX::prep(ExprFuncNode* node, bool scalarWanted, ExprVarEnv & env) const //{ // /* call base node prep by default: // this passes wantVec to all the children and sets isVec true if any // child is a vec */ // /* TODO: check that this is correct behavior */ // return node->ExprNode::prep(scalarWanted, env); //} namespace KSeExpr { static std::mutex mutex; void ExprFunc::init() { std::lock_guard locker(mutex); initInternal(); } void ExprFunc::cleanup() { std::lock_guard locker(mutex); Functions = nullptr; } const ExprFunc *ExprFunc::lookup(const std::string &name) { std::lock_guard locker(mutex); if (!Functions) initInternal(); const ExprFunc *ret = Functions->lookup(name); return ret; } inline static void defineInternal(const char *name, const ExprFunc &f) { // THIS FUNCTION IS NOT THREAD SAFE, it assumes you have a mutex from callee // ALSO YOU MUST BE VERY CAREFUL NOT TO CALL ANYTHING THAT TRIES TO REACQUIRE MUTEX! Functions->define(name, f); } inline static void defineInternal3(const char *name, const ExprFunc &f, const char *docString) { // THIS FUNCTION IS NOT THREAD SAFE, it assumes you have a mutex from callee // ALSO YOU MUST BE VERY CAREFUL NOT TO CALL ANYTHING THAT TRIES TO REACQUIRE MUTEX! Functions->define(name, f, docString); } void ExprFunc::initInternal() { // THIS FUNCTION IS NOT THREAD SAFE, it assumes you have a mutex from callee // ALSO YOU MUST BE VERY CAREFUL NOT TO CALL ANYTHING THAT TRIES TO REACQUIRE MUTEX! if (Functions) return; Functions = std::make_unique(); KSeExpr::defineBuiltins(defineInternal, defineInternal3); } void ExprFunc::define(const char *name, const ExprFunc &f) { std::lock_guard locker(mutex); if (!Functions) initInternal(); defineInternal(name, f); } void ExprFunc::define(const char *name, const ExprFunc &f, const char *docString) { std::lock_guard locker(mutex); if (!Functions) initInternal(); defineInternal3(name, f, docString); } void ExprFunc::getFunctionNames(std::vector &names) { std::lock_guard locker(mutex); if (!Functions) initInternal(); Functions->getFunctionNames(names); } std::string ExprFunc::getDocString(const char *functionName) { std::lock_guard locker(mutex); if (!Functions) initInternal(); std::string ret = Functions->getDocString(functionName); return ret; } size_t ExprFunc::sizeInBytes() { std::lock_guard locker(mutex); if (!Functions) initInternal(); return Functions->sizeInBytes(); } KSeExpr::Statistics ExprFunc::statistics() { std::lock_guard locker(mutex); if (!Functions) initInternal(); return Functions->statistics(); } } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/ExprFunc.h0000644000000000000240000001314714156102631017362 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #ifndef ExprFunc_h #define ExprFunc_h #include "Vec.h" #include #include "ExprEnv.h" #include "ExprFuncStandard.h" #include "ExprFuncX.h" #include "ExprType.h" namespace KSeExpr { //! Function Definition, used in parse tree and func table. /** This class in a static setting manages all builtin functions defined by SeExpr internally. These can be queried by name for documentation. Users can create their own custom functions by creating one of these with the appropriate argument template. Any function that doesn't work within the given templates can be written using a ExprFuncX template instead Note: If you use the convenience prototypes instead of ExprFuncX, the user defined function will be assumed to be thread safe. If you have a thread unsafe function be sure to use ExprFuncX and call the base constructor with false. */ class ExprFunc { static void initInternal(); // call to define built-in funcs public: //! call to define built-in funcs static void init(); //! cleanup all functions static void cleanup(); /* A pointer to the define func is passed to the init method of expression plugins. This should be called instead of calling the static method directly so that the plugin will work if the expression library is statically linked. */ static void define(const char *name, const ExprFunc &f, const char *docString); static void define(const char *name, const ExprFunc &f); using Define = void (*)(const char *, const ExprFunc &); using Define3 = void (*)(const char *, const ExprFunc &, const char *); //! Lookup a builtin function by name static const ExprFunc *lookup(const std::string &name); //! Get a list of registered builtin and DSO generated functions static void getFunctionNames(std::vector &names); //! Get doc string for a specific function static std::string getDocString(const char *functionName); //! Get the total size estimate of all plugins static size_t sizeInBytes(); //! Dump statistics static Statistics statistics(); // bool isScalar() const { return _scalar; }; ExprFunc() = default; //! User defined function with custom argument parsing ExprFunc(ExprFuncX &f, int min = 1, int max = 1) : _func(&f) , _minargs(min) , _maxargs(max) {}; ExprFunc(ExprFuncStandard::Func0 *f) : _standardFunc(ExprFuncStandard::FUNC0, (void *)f) { } ExprFunc(ExprFuncStandard::Func1 *f) : _standardFunc(ExprFuncStandard::FUNC1, (void *)f) , _minargs(1) , _maxargs(1) { } ExprFunc(ExprFuncStandard::Func2 *f) : _standardFunc(ExprFuncStandard::FUNC2, (void *)f) , _minargs(2) , _maxargs(2) { } ExprFunc(ExprFuncStandard::Func3 *f) : _standardFunc(ExprFuncStandard::FUNC3, (void *)f) , _minargs(3) , _maxargs(3) { } ExprFunc(ExprFuncStandard::Func4 *f) : _standardFunc(ExprFuncStandard::FUNC4, (void *)f) , _minargs(4) , _maxargs(4) { } ExprFunc(ExprFuncStandard::Func5 *f) : _standardFunc(ExprFuncStandard::FUNC5, (void *)f) , _minargs(5) // NOLINT readability-magic-numbers , _maxargs(5) // NOLINT readability-magic-numbers { } ExprFunc(ExprFuncStandard::Func6 *f) : _standardFunc(ExprFuncStandard::FUNC6, (void *)f) , _minargs(6) // NOLINT readability-magic-numbers , _maxargs(6) // NOLINT readability-magic-numbers { } ExprFunc(ExprFuncStandard::Funcn *f, int minArgs, int maxArgs) : _standardFunc(ExprFuncStandard::FUNCN, (void *)f) , _minargs(minArgs) , _maxargs(maxArgs) { } ExprFunc(ExprFuncStandard::Func1v *f) : _standardFunc(ExprFuncStandard::FUNC1V, (void *)f) , _minargs(1) , _maxargs(1) { } ExprFunc(ExprFuncStandard::Func2v *f) : _standardFunc(ExprFuncStandard::FUNC2V, (void *)f) , _minargs(2) , _maxargs(2) { } ExprFunc(ExprFuncStandard::Funcnv *f, int minArgs, int maxArgs) : _standardFunc(ExprFuncStandard::FUNCNV, (void *)f) , _minargs(minArgs) , _maxargs(maxArgs) { } ExprFunc(ExprFuncStandard::Func1vv *f) : _standardFunc(ExprFuncStandard::FUNC1VV, (void *)f) , _minargs(1) , _maxargs(1) { } ExprFunc(ExprFuncStandard::Func2vv *f) : _standardFunc(ExprFuncStandard::FUNC2VV, (void *)f) , _minargs(2) , _maxargs(2) { } ExprFunc(ExprFuncStandard::Funcnvv *f) : _standardFunc(ExprFuncStandard::FUNC1VV, (void *)f) , _minargs(1) , _maxargs(1) { } ExprFunc(ExprFuncStandard::Funcnvv *f, int minArgs, int maxArgs) : _standardFunc(ExprFuncStandard::FUNCNVV, (void *)f) , _minargs(minArgs) , _maxargs(maxArgs) { } //! return the minimum number of acceptable arguments int minArgs() const { return _minargs; } //! return the maximum number of acceptable arguments int maxArgs() const { return _maxargs; } //! return pointer to the funcx const ExprFuncX *funcx() const { return _func ? _func : &_standardFunc; } private: ExprFuncStandard _standardFunc; ExprFuncX *_func {nullptr}; int _minargs {0}; int _maxargs {0}; }; } // namespace KSeExpr #endif kseexpr-4.0.4.0/src/KSeExpr/ExprFuncStandard.cpp0000644000000000000240000002100414156102631021365 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #include "ExprNode.h" #include "ExprFuncStandard.h" namespace KSeExpr { ExprType ExprFuncStandard::prep(ExprFuncNode* node, bool scalarWanted, ExprVarEnvBuilder& envBuilder) const { if (_funcType < VEC) { // scalar argumented functions returning scalars // use promote protocol... bool error = false; int nonOneDim = 1; // defaults to 1, if another is seen record! bool multiInvoke = !scalarWanted; ExprType retType; for (int c = 0; c < node->numChildren(); c++) { ExprType childType = node->child(c)->prep(scalarWanted, envBuilder); int childDim = childType.dim(); node->child(c)->checkIsFP(childType, error); retType.setLifetime(childType); if (childDim != 1) { if (nonOneDim != 1 && childDim != nonOneDim) multiInvoke = false; nonOneDim = childDim; } } if (error) return retType.Error(); else if (multiInvoke && nonOneDim != 1) return retType.FP(nonOneDim); return retType.FP(1); } else { // vector argumented functions bool error = false; ExprType retType; for (int c = 0; c < node->numChildren(); c++) { ExprType childType = node->child(c)->prep(scalarWanted, envBuilder); int childDim = childType.dim(); node->child(c)->checkIsFP(childType, error); node->child(c)->checkCondition(childDim == 1 || childDim == 3, ErrorCode::ExpectedFloatOrFloat3, {}, error); retType.setLifetime(childType); } if (error) return retType.Error(); else if (scalarWanted || _funcType < VECVEC) return retType.FP(1); else return retType.FP(3); } } int Func0Op(int* opData, double* fp, char** c, std::vector& ) { fp[opData[1]] = ((ExprFuncStandard::Func0*)(c[opData[0]]))(); return 1; } int Func1Op(int* opData, double* fp, char** c, std::vector&) { fp[opData[2]] = ((ExprFuncStandard::Func1*)(c[opData[0]]))(fp[opData[1]]); return 1; } int Func2Op(int* opData, double* fp, char** c, std::vector&) { fp[opData[3]] = ((ExprFuncStandard::Func2*)(c[opData[0]]))(fp[opData[1]], fp[opData[2]]); return 1; } int Func3Op(int* opData, double* fp, char** c, std::vector&) { fp[opData[4]] = ((ExprFuncStandard::Func3*)(c[opData[0]]))(fp[opData[1]], fp[opData[2]], fp[opData[3]]); return 1; } int Func4Op(int* opData, double* fp, char** c, std::vector&) { fp[opData[5]] = ((ExprFuncStandard::Func4*)(c[opData[0]]))(fp[opData[1]], fp[opData[2]], fp[opData[3]], fp[opData[4]]); return 1; } int Func5Op(int* opData, double* fp, char** c, std::vector&) { fp[opData[6]] = ((ExprFuncStandard::Func5*)(c[opData[0]]))( fp[opData[1]], fp[opData[2]], fp[opData[3]], fp[opData[4]], fp[opData[5]]); return 1; } int Func6Op(int* opData, double* fp, char** c, std::vector&) { fp[opData[7]] = ((ExprFuncStandard::Func6*)(c[opData[0]]))( fp[opData[1]], fp[opData[2]], fp[opData[3]], fp[opData[4]], fp[opData[5]], fp[opData[6]]); return 1; } int FuncNOp(int* opData, double* fp, char** c, std::vector&) { int n = opData[1]; double* vals = static_cast(alloca(n * sizeof(double))); for (int k = 0; k < n; k++) vals[k] = fp[opData[k + 2]]; double* out = &fp[opData[n + 2]]; *out = ((ExprFuncStandard::Funcn*)(c[opData[0]]))(n, vals); return 1; } int Func1VOp(int* opData, double* fp, char** c, std::vector&) { fp[opData[2]] = ((ExprFuncStandard::Func1v*)(c[opData[0]]))(Vec3d::copy(&fp[opData[1]])); return 1; } int Func2VOp(int* opData, double* fp, char** c, std::vector&) { fp[opData[3]] = ((ExprFuncStandard::Func2v*)(c[opData[0]]))(Vec3d::copy(&fp[opData[1]]), Vec3d::copy(&fp[opData[2]])); return 1; } int Func1VVOp(int* opData, double* fp, char** c, std::vector&) { Vec3d v = ((ExprFuncStandard::Func1vv*)(c[opData[0]]))(Vec3d::copy(&fp[opData[1]])); double* out = &fp[opData[2]]; for (int k = 0; k < 3; k++) out[k] = v[k]; return 1; } int Func2VVOp(int* opData, double* fp, char** c, std::vector&) { Vec3d v = ((ExprFuncStandard::Func2vv*)(c[opData[0]]))(Vec3d::copy(&fp[opData[1]]), Vec3d::copy(&fp[opData[2]])); double* out = &fp[opData[3]]; for (int k = 0; k < 3; k++) out[k] = v[k]; return 1; } int FuncNVOp(int* opData, double* fp, char** c, std::vector&) { int n = opData[1]; Vec3d* vals = static_cast(alloca(n * sizeof(Vec3d))); for (int k = 0; k < n; k++) new (vals + k) Vec3d(Vec3dRef(&fp[opData[k + 2]])); // placement new! double* out = &fp[opData[n + 2]]; *out = ((ExprFuncStandard::Funcnv*)(c[opData[0]]))(n, vals); return 1; } int FuncNVVOp(int* opData, double* fp, char** c, std::vector&) { int n = opData[1]; Vec3d* vals = static_cast(alloca(n * sizeof(Vec3d))); for (int k = 0; k < n; k++) new (vals + k) Vec3d(Vec3dRef(&fp[opData[k + 2]])); // placement new! double* out = &fp[opData[n + 2]]; Vec3d val = ((ExprFuncStandard::Funcnvv*)(c[opData[0]]))(n, vals); for (int k = 0; k < 3; k++) out[k] = val[k]; return 1; } int ExprFuncStandard::buildInterpreter(const ExprFuncNode* node, Interpreter* interpreter) const { std::vector argOps; for (int c = 0; c < node->numChildren(); c++) { int op = node->child(c)->buildInterpreter(interpreter); argOps.push_back(op); } int retOp = -1; int funcPtrLoc = interpreter->allocPtr(); interpreter->s[funcPtrLoc] = (char*)_func; Interpreter::OpF op = nullptr; switch (_funcType) { case FUNC0: op = Func0Op; break; case FUNC1: op = Func1Op; break; case FUNC2: op = Func2Op; break; case FUNC3: op = Func3Op; break; case FUNC4: op = Func4Op; break; case FUNC5: op = Func5Op; break; case FUNC6: op = Func6Op; break; case FUNCN: op = FuncNOp; break; case FUNC1V: op = Func1VOp; break; case FUNC2V: op = Func2VOp; break; case FUNCNV: op = FuncNVOp; break; case FUNC1VV: op = Func1VVOp; break; case FUNC2VV: op = Func2VVOp; break; case FUNCNVV: op = FuncNVVOp; break; default: assert(false); } if (_funcType < VEC) { retOp = interpreter->allocFP(node->type().dim()); for (int k = 0; k < node->type().dim(); k++) { interpreter->addOp(op); interpreter->addOperand(funcPtrLoc); if (_funcType == FUNCN) interpreter->addOperand(static_cast(argOps.size())); for (size_t c = 0; c < argOps.size(); c++) { if (node->child(c)->type().isFP(1)) interpreter->addOperand(argOps[c]); else interpreter->addOperand(argOps[c] + k); } interpreter->addOperand(retOp + k); interpreter->endOp(); } } else { // do any promotions that are necessary for (size_t c = 0; c < argOps.size(); c++) { if (node->child(c)->type().dim() == 1) { int promotedArgOp = interpreter->allocFP(3); interpreter->addOp(Promote<3>::f); interpreter->addOperand(argOps[c]); interpreter->addOperand(promotedArgOp); interpreter->endOp(); argOps[c] = promotedArgOp; } } retOp = interpreter->allocFP(_funcType >= VECVEC ? 3 : 1); interpreter->addOp(op); interpreter->addOperand(funcPtrLoc); if (_funcType == FUNCNV || _funcType == FUNCNVV) interpreter->addOperand(static_cast(argOps.size())); for (int argOp : argOps) { interpreter->addOperand(argOp); } interpreter->addOperand(retOp); interpreter->endOp(); } if (Expression::debugging) { std::cerr << "Interpreter dump" << std::endl; interpreter->print(); } return retOp; } } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/ExprFuncStandard.h0000644000000000000240000001343014156102631021036 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "ExprFuncX.h" #include "Vec.h" namespace KSeExpr { class ExprFuncStandard : public ExprFuncX { public: enum FuncType { NONE = 0, // scalar args and result FUNC0, FUNC1, FUNC2, FUNC3, FUNC4, FUNC5, FUNC6, FUNCN, // vector args, scalar result VEC, FUNC1V = VEC, FUNC2V, FUNCNV, // vector args and result VECVEC, FUNC1VV = VECVEC, FUNC2VV, FUNCNVV }; using Func0 = double(); using Func1 = double(double); using Func2 = double(double, double); using Func3 = double(double, double, double); using Func4 = double(double, double, double, double); using Func5 = double(double, double, double, double, double); using Func6 = double(double, double, double, double, double, double); using Func1v = double(const Vec3d &); using Func2v = double(const Vec3d &, const Vec3d &); using Func1vv = Vec3d(const Vec3d &); using Func2vv = Vec3d(const Vec3d &, const Vec3d &); using Funcn = double(int, double *); using Funcnv = double(int, const Vec3d *); using Funcnvv = Vec3d(int, const Vec3d *); #if 0 Func0* func0() const { return (Func0*)_func; } Func1* func1() const { return (Func1*)_func; } Func2* func2() const { return (Func2*)_func; } Func3* func3() const { return (Func3*)_func; } Func4* func4() const { return (Func4*)_func; } Func5* func5() const { return (Func5*)_func; } Func6* func6() const { return (Func6*)_func; } Func1v* func1v() const { return (Func1v*)_func; } Func2v* func2v() const { return (Func2v*)_func; } Func1vv* func1vv() const { return (Func1vv*)_func; } Func2vv* func2vv() const { return (Func2vv*)_func; } Funcn* funcn() const { return (Funcn*)_func; } Funcnv* funcnv() const { return (Funcnv*)_func; } Funcnvv* funcnvv() const { return (Funcnvv*)_func; } #endif //! No argument function ExprFuncStandard(FuncType funcType, void *f) : ExprFuncX(true) , _funcType(funcType) , _func(f) { } #if 0 //! User defined function with prototype double f(double) ExprFunc(Func1* f) : _type(FUNC1), _retType(ExprType().FP(1).Varying()), _scalar(true), _func((void*)f), _minargs(1), _maxargs(1) {}; //! User defined function with prototype double f(double,double) ExprFunc(Func2* f) : _type(FUNC2), _retType(ExprType().FP(1).Varying()), _scalar(true), _func((void*)f), _minargs(2), _maxargs(2) {}; //! User defined function with prototype double f(double,double,double) ExprFunc(Func3* f) : _type(FUNC3), _retType(ExprType().FP(1).Varying()), _scalar(true), _func((void*)f), _minargs(3), _maxargs(3) {}; //! User defined function with prototype double f(double,double,double,double) ExprFunc(Func4* f) : _type(FUNC4), _retType(ExprType().FP(1).Varying()), _scalar(true), _func((void*)f), _minargs(4), _maxargs(4) {}; //! User defined function with prototype double f(double,double,double,double,double) ExprFunc(Func5* f) : _type(FUNC5), _retType(ExprType().FP(1).Varying()), _scalar(true), _func((void*)f), _minargs(5), _maxargs(5) {}; //! User defined function with prototype double f(double,double,double,double,double,double) ExprFunc(Func6* f) : _type(FUNC6), _retType(ExprType().FP(1).Varying()), _scalar(true), _func((void*)f), _minargs(6), _maxargs(6) {}; //! User defined function with prototype double f(vector) ExprFunc(Func1v* f) : _type(FUNC1V), _retType(ExprType().FP(1).Varying()), _scalar(true), _func((void*)f), _minargs(1), _maxargs(1) {}; //! User defined function with prototype double f(vector,vector) ExprFunc(Func2v* f) : _type(FUNC2V), _retType(ExprType().FP(1).Varying()), _scalar(true), _func((void*)f), _minargs(2), _maxargs(2) {}; //! User defined function with prototype vector f(vector) ExprFunc(Func1vv* f) : _type(FUNC1VV), _retType(ExprType().FP(3).Varying()), _scalar(false), _func((void*)f), _minargs(1), _maxargs(1) {}; //! User defined function with prototype vector f(vector,vector) ExprFunc(Func2vv* f) : _type(FUNC2VV), _retType(ExprType().FP(3).Varying()), _scalar(false), _func((void*)f), _minargs(2), _maxargs(2) {}; //! User defined function with arbitrary number of arguments double f(double,...) ExprFunc(Funcn* f, int min, int max) : _type(FUNCN), _retType(ExprType().FP(1).Varying()), _scalar(true), _func((void*)f), _minargs(min), _maxargs(max) {}; //! User defined function with arbitrary number of arguments double f(vector,...) ExprFunc(Funcnv* f, int min, int max) : _type(FUNCNV), _retType(ExprType().FP(1).Varying()), _scalar(true), _func((void*)f), _minargs(min), _maxargs(max) {}; //! User defined function with arbitrary number of arguments vector f(vector,...) ExprFunc(Funcnvv* f, int min, int max) : _type(FUNCNVV), _retType(ExprType().FP(3).Varying()), _scalar(false), _func((void*)f), _minargs(min), _maxargs(max) {}; #endif public: ExprFuncStandard() : ExprFuncX(true) { } ExprType prep(ExprFuncNode *node, bool scalarWanted, ExprVarEnvBuilder &envBuilder) const override; int buildInterpreter(const ExprFuncNode *node, Interpreter *interpreter) const override; void *getFuncPointer() const { return _func; } FuncType getFuncType() const { return _funcType; } private: FuncType _funcType {}; void *_func {nullptr}; // blind func style }; } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/ExprFuncX.cpp0000644000000000000240000001060514156102631020041 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #include #include "ExprFunc.h" #include "ExprFuncX.h" #include "Interpreter.h" #include "ExprNode.h" namespace KSeExpr { int ExprFuncSimple::EvalOp(int *opData, double *fp, char **c, std::vector &callStack) { auto *simple = reinterpret_cast(c[opData[0]]); // ExprFuncNode::Data* simpleData=reinterpret_cast(c[opData[1]]); ArgHandle args(opData, fp, c, callStack); simple->eval(args); return 1; } int ExprFuncSimple::buildInterpreter(const ExprFuncNode *node, Interpreter *interpreter) const { std::vector operands; for (int c = 0; c < node->numChildren(); c++) { int operand = node->child(c)->buildInterpreter(interpreter); #if 0 // debug std::cerr<<"we are "<promote(c)<<" "<promote(c) != 0) { interpreter->addOp(getTemplatizedOp(node->promote(c))); int promotedOperand = interpreter->allocFP(node->promote(c)); interpreter->addOperand(operand); interpreter->addOperand(promotedOperand); operand = promotedOperand; interpreter->endOp(); } operands.push_back(operand); } int outoperand = -1; int nargsData = interpreter->allocFP(1); interpreter->d[nargsData] = node->numChildren(); if (node->type().isFP()) outoperand = interpreter->allocFP(node->type().dim()); else if (node->type().isString()) outoperand = interpreter->allocPtr(); else assert(false); interpreter->addOp(EvalOp); int ptrLoc = interpreter->allocPtr(); int ptrDataLoc = interpreter->allocPtr(); interpreter->s[ptrLoc] = (char *)this; interpreter->addOperand(ptrLoc); interpreter->addOperand(ptrDataLoc); interpreter->addOperand(outoperand); interpreter->addOperand(nargsData); for (int operand : operands) { interpreter->addOperand(operand); } interpreter->endOp(false); // do not eval because the function may not be evaluatable! // call into interpreter eval int pc = interpreter->nextPC() - 1; int *opCurr = (&interpreter->opData[0]) + interpreter->ops[pc].second; ArgHandle args(opCurr, &interpreter->d[0], &interpreter->s[0], interpreter->callStack); ExprFuncNode::Data* data = evalConstant(node, args); node->setData(data); interpreter->s[ptrDataLoc] = reinterpret_cast(data); return outoperand; } } // namespace KSeExpr extern "C" { // allocate int[4+number of args]; // allocate char*[2]; // allocate double[1+ sizeof(ret) + sizeof(args)] // // int[0]= c , 0 // int[1]= c , 1 // int[2]= f, 0 // int[3]= f, 8 // // int[4]= f, 8 // int[5]= f, 9 // // // double[0] = 0 // double[1] = 0 // double[2] = 0 // double[3] = 0 // opData indexes either into f or into c. // opdata[0] points to ExprFuncSimple instance // opdata[1] points to the data generated by evalConstant // opdata[2] points to return value // opdata[3] points to number of args // opdata[4] points to beginning of arguments in void KSeExprLLVMEvalCustomFunction(int *opDataArg, double *fpArg, char **strArg, void **funcdata, const KSeExpr::ExprFuncNode *node) { const KSeExpr::ExprFunc *func = node->func(); auto *funcX = const_cast(func->funcx()); auto *funcSimple = static_cast(funcX); strArg[0] = reinterpret_cast(funcSimple); std::vector callStack; KSeExpr::ExprFuncSimple::ArgHandle handle(opDataArg, fpArg, strArg, callStack); if (!*funcdata) { handle.data = funcSimple->evalConstant(node, handle); *funcdata = reinterpret_cast(handle.data); node->setData(handle.data); } else { handle.data = reinterpret_cast(*funcdata); } funcSimple->eval(handle); // for (int i = 0; i < retSize; ++i) result[i] = fp[1 + i]; } } kseexpr-4.0.4.0/src/KSeExpr/ExprFuncX.h0000644000000000000240000001077014156102631017511 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "ExprType.h" #include "Vec.h" #include "ExprNode.h" namespace KSeExpr { class ExprFuncNode; class Interpreter; class ExprVarEnv; using Statistics = std::map; //! Extension function spec, used for complicated argument custom functions. /** Provides the ability to handle all argument type checking and processing manually. Derive from this class and then make your own ExprFunc that takes this object. This is necessary if you need string arguments or you have variable numbers of arguments. See ExprBuiltins.h for some examples */ class ExprFuncX { public: //! Create an ExprFuncX. If the functions and type checking you implement //! is thread safe your derived class should call this with true. If not, //! then false. If you mark a function as thread unsafe, and it is used //! in an expression then bool Expression::isThreadSafe() will return false //! and the controlling software should not attempt to run multiple threads //! of an expression. ExprFuncX(const bool threadSafe) : _threadSafe(threadSafe) {} ExprFuncX(const ExprFuncX &) = default; ExprFuncX(ExprFuncX &&) = default; ExprFuncX& operator=(const ExprFuncX &) = default; ExprFuncX& operator=(ExprFuncX &&) = default; /** prep the expression by doing all type checking argument checking, etc. */ virtual ExprType prep(ExprFuncNode* node, bool scalarWanted, ExprVarEnvBuilder& env) const = 0; virtual ExprType type() const { return _type; } /** evaluate the expression. the given node is where in the parse tree the evaluation is for */ // virtual void eval(const ExprFuncNode* node, Vec3d& result) const = 0; //! Build an interpreter to evaluate the expression virtual int buildInterpreter(const ExprFuncNode* node, Interpreter* interpreter) const = 0; virtual ~ExprFuncX() = default; bool isThreadSafe() const { return _threadSafe; } /// Return memory usage of a funcX in bytes. virtual size_t sizeInBytes() const { return 0; } /// Give this function a chance to populate its statistics virtual void statistics(Statistics& /*statistics*/) const {} protected: bool _isScalar{}; ExprType _type; private: bool _threadSafe; }; class ExprFuncSimple : public ExprFuncX { public: ExprFuncSimple(const bool threadSafe) : ExprFuncX(threadSafe) {} class ArgHandle { public: ArgHandle(int* opData, double* fp, char** c, std::vector&) : outFp(fp[opData[2]]), outStr(c[opData[2]]), data(reinterpret_cast(c[opData[1]])), // TODO: put the value in opData rather than fp _nargs((int)fp[opData[3]]), // TODO: would be good not to have to convert to int! opData(opData + 4), fp(fp), c(c) {} template Vec inFp(int i) { return Vec(&fp[opData[i]]); } char* inStr(int i) { return c[opData[i]]; } int nargs() const { return _nargs; } /// Return a vector handle which is easier to assign to template Vec outFpHandle() { return Vec(&outFp); } double& outFp; char*& outStr; ExprFuncNode::Data* data; private: int _nargs; int* opData; double* fp; char** c; // std::stack& callStack; }; int buildInterpreter(const ExprFuncNode* node, Interpreter* interpreter) const override; ExprType prep(ExprFuncNode* node, bool scalarWanted, ExprVarEnvBuilder& envBuilder) const override = 0; virtual ExprFuncNode::Data* evalConstant(const ExprFuncNode* node, ArgHandle args) const = 0; virtual void eval(ArgHandle args) = 0; private: static int EvalOp(int* opData, double* fp, char** c, std::vector& callStack); }; class ExprFuncLocal : public ExprFuncX { ExprFuncLocal() : ExprFuncX(true) {} /** prep the expression by doing all type checking argument checking, etc. */ ExprType prep(ExprFuncNode* node, bool scalarWanted, ExprVarEnvBuilder& envBuilder) const override; //! Build an interpreter to evaluate the expression int buildInterpreter(const ExprFuncNode* node, Interpreter* interpreter) const override; }; } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/ExprLLVM.h0000644000000000000240000000141614156102631017235 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "ExprConfig.h" #if defined(SEEXPR_ENABLE_LLVM) #ifndef Q_MOC_RUN /* automoc chokes in Qt classes using llvm/ir/intrinsics.h indirectly*/ #include #endif namespace llvm { class Value; class Type; class Module; class Function; } using LLVM_VALUE = llvm::Value *; using LLVM_BUILDER = llvm::IRBuilder<> &; #define LLVM_BASE const #define LLVM_BODY const override #else using LLVM_VALUE = double; using LLVM_BUILDER = double; #define LLVM_BASE const { return 0; } #define LLVM_BODY const override { return 0; } #endif kseexpr-4.0.4.0/src/KSeExpr/ExprLLVMAll.h0000644000000000000240000000460314156102631017667 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "ExprConfig.h" #include "ExprLLVM.h" #if defined(SEEXPR_ENABLE_LLVM) #ifndef Q_MOC_RUN /* automoc chokes in Qt classes using llvm/ir/intrinsics.h indirectly*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if LLVM_VERSION_MAJOR >= 13 #define IN_BOUNDS_GEP(Builder, firstArg, idx) Builder.CreateInBoundsGEP(firstArg->getType()->getScalarType()->getPointerElementType(), firstArg, idx) #define CREATE_LOAD(Builder, indexVar) Builder.CreateLoad(indexVar->getType()->getPointerElementType(), indexVar) #define CREATE_LOAD_WITH_ID(Builder, indexVar, id) Builder.CreateLoad(indexVar->getType()->getPointerElementType(), indexVar, id) #define CREATE_CONST_GEP1_32(Builder, a, b) Builder.CreateConstGEP1_32(a->getType()->getPointerElementType(), a, b) #else #define IN_BOUNDS_GEP(Builder, firstArg, idx) Builder.CreateInBoundsGEP(firstArg, idx) #define CREATE_LOAD(Builder, indexVar) Builder.CreateLoad(indexVar) #define CREATE_LOAD_WITH_ID(Builder, indexVar, id) Builder.CreateLoad(indexVar, id) #define CREATE_CONST_GEP1_32(Builder, a, b) Builder.CreateConstGEP1_32(a, b) #endif // LLVM_VERSION_MAJOR >= 13 #endif // Q_MOC_RUN #endif kseexpr-4.0.4.0/src/KSeExpr/ExprLLVMCodeGeneration.cpp0000644000000000000240000014366714156102631022416 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #include "ExprConfig.h" #if defined(SEEXPR_ENABLE_LLVM) #include #include "ExprFunc.h" #include "ExprLLVM.h" #include "ExprLLVMAll.h" #include "ExprNode.h" #include "StringUtils.h" #include "VarBlock.h" using namespace llvm; using namespace KSeExpr; // TODO: Use ordered or unordered float comparison? // TODO: factor out commonly used llvm types // TODO: factor out integer/double constant creation namespace { Function *llvm_getFunction(LLVM_BUILDER Builder) { return Builder.GetInsertBlock()->getParent(); } Module *llvm_getModule(LLVM_BUILDER Builder) { return llvm_getFunction(Builder)->getParent(); } //! Turn LLVM type into a std::string, convenience to work around needing to use raw_string_ostream everywhere std::string llvmTypeString(llvm::Type *type) { std::string myString; llvm::raw_string_ostream rawStream(myString); type->print(rawStream); return rawStream.str(); } bool isVarArg(ExprFuncStandard::FuncType seFuncType) { return seFuncType == ExprFuncStandard::FUNCN || seFuncType == ExprFuncStandard::FUNCNV || seFuncType == ExprFuncStandard::FUNCNVV; } bool isReturnVector(ExprFuncStandard::FuncType seFuncType) { return seFuncType == ExprFuncStandard::FUNC1VV || seFuncType == ExprFuncStandard::FUNC2VV || seFuncType == ExprFuncStandard::FUNCNVV; } bool isTakeOnlyDoubleArg(ExprFuncStandard::FuncType seFuncType) { return seFuncType <= ExprFuncStandard::FUNC6 || seFuncType == ExprFuncStandard::FUNCN; } FunctionType *getSeExprFuncStandardLLVMType(ExprFuncStandard::FuncType sft, LLVMContext &llvmContext) { assert(sft != ExprFuncStandard::NONE); Type *intType = Type::getInt32Ty(llvmContext); Type *doubleType = Type::getDoubleTy(llvmContext); Type *doublePtrType = PointerType::getUnqual(Type::getDoubleTy(llvmContext)); Type *voidType = Type::getVoidTy(llvmContext); FunctionType *FT = nullptr; if (sft <= ExprFuncStandard::FUNC6) { std::vector paramTypes; switch (sft) { case ExprFuncStandard::FUNC6: paramTypes.push_back(doubleType); case ExprFuncStandard::FUNC5: paramTypes.push_back(doubleType); case ExprFuncStandard::FUNC4: paramTypes.push_back(doubleType); case ExprFuncStandard::FUNC3: paramTypes.push_back(doubleType); case ExprFuncStandard::FUNC2: paramTypes.push_back(doubleType); case ExprFuncStandard::FUNC1: paramTypes.push_back(doubleType); case ExprFuncStandard::FUNC0: default: FT = FunctionType::get(doubleType, paramTypes, false); } } else if (sft == ExprFuncStandard::FUNC1V) { std::array paramTypes = {doublePtrType}; FT = FunctionType::get(doubleType, paramTypes, false); } else if (sft == ExprFuncStandard::FUNC2V) { std::array paramTypes = {doublePtrType, doublePtrType}; FT = FunctionType::get(doubleType, paramTypes, false); } else if (sft == ExprFuncStandard::FUNC1VV) { std::array paramTypes = {doublePtrType, doublePtrType}; FT = FunctionType::get(voidType, paramTypes, false); } else if (sft == ExprFuncStandard::FUNC2VV) { std::array paramTypes = {doublePtrType, doublePtrType, doublePtrType}; FT = FunctionType::get(voidType, paramTypes, false); } else if (sft == ExprFuncStandard::FUNCN) { std::array paramTypes = {intType, doublePtrType}; FT = FunctionType::get(doubleType, paramTypes, false); } else if (sft == ExprFuncStandard::FUNCNV) { std::array paramTypes = {intType, doublePtrType}; FT = FunctionType::get(doubleType, paramTypes, false); } else if (sft == ExprFuncStandard::FUNCNVV) { std::array paramTypes = {doublePtrType, intType, doublePtrType}; FT = FunctionType::get(voidType, paramTypes, false); } else assert(false); return FT; } LLVM_VALUE CreateCall(LLVM_BUILDER Builder, LLVM_VALUE addrVal, ArrayRef args) { #if LLVM_VERSION_MAJOR >= 11 // LLVM 11 wants the desired function signature forcibly. // However, Disney covered it in a layer of casts, which I have to undo. auto *funcCast = llvm::cast(addrVal); assert(funcCast && "ERROR! The callee value is not a pointer cast!"); auto *funcPtr = llvm::cast(funcCast->getDestTy()); assert(funcPtr && "ERROR! The callee value does not contain a function!"); auto *TY = llvm::cast(funcPtr->getElementType()); assert(TY && "ERROR! The callee value does not return a function signature!"); return Builder.CreateCall(TY, addrVal, args); #else return Builder.CreateCall(addrVal, args); #endif } Type *createLLVMTyForSeExprType(LLVMContext &llvmContext, const ExprType& seType) { if (seType.isFP()) { int dim = seType.dim(); #if LLVM_VERSION_MAJOR >= 10 return dim == 1 ? Type::getDoubleTy(llvmContext) : VectorType::get(Type::getDoubleTy(llvmContext), dim, false); #else return dim == 1 ? Type::getDoubleTy(llvmContext) : VectorType::get(Type::getDoubleTy(llvmContext), dim); #endif } else if (seType.isString()) { static_assert(sizeof(char*) == 8, "Expect 64-bit pointers"); return Type::getInt8PtrTy(llvmContext); } assert(!"unknown SeExpr type encountered"); // unknown type return nullptr; } // Copy a scalar "val" to a vector of "dim" length LLVM_VALUE createVecVal(LLVM_BUILDER Builder, LLVM_VALUE val, unsigned dim) { LLVMContext &llvmContext = Builder.getContext(); #if LLVM_VERSION_MAJOR >= 10 VectorType *doubleVecTy = VectorType::get(Type::getDoubleTy(llvmContext), dim, false); #else VectorType *doubleVecTy = VectorType::get(Type::getDoubleTy(llvmContext), dim); #endif LLVM_VALUE vecVal = UndefValue::get(doubleVecTy); for (unsigned i = 0; i < dim; i++) vecVal = Builder.CreateInsertElement(vecVal, val, ConstantInt::get(Type::getInt32Ty(llvmContext), i)); return vecVal; } // Copy a vector "val" to a vector of the same length LLVM_VALUE createVecVal(LLVM_BUILDER Builder, ArrayRef val, const std::string &name = "") { if (val.empty()) return nullptr; LLVMContext &llvmContext = Builder.getContext(); unsigned dim = val.size(); #if LLVM_VERSION_MAJOR >= 10 VectorType *elemType = VectorType::get(val[0]->getType(), dim, false); #else VectorType *elemType = VectorType::get(val[0]->getType(), dim); #endif LLVM_VALUE vecVal = UndefValue::get(elemType); for (unsigned i = 0; i < dim; i++) vecVal = Builder.CreateInsertElement(vecVal, val[i], ConstantInt::get(Type::getInt32Ty(llvmContext), i), name); return vecVal; } LLVM_VALUE createVecValFromAlloca(LLVM_BUILDER Builder, AllocaInst *destPtr, unsigned vecLen) { Type *destTy = destPtr->getType()->getPointerElementType(); assert(destTy->isDoubleTy() || destTy->isArrayTy()); std::vector vals; for (unsigned i = 0; i < vecLen; ++i) { LLVM_VALUE ptr = destTy->isDoubleTy() ? CREATE_CONST_GEP1_32(Builder, destPtr, i) : Builder.CreateConstGEP2_32(nullptr, destPtr, 0, i); vals.push_back(CREATE_LOAD(Builder, ptr)); } return createVecVal(Builder, vals); } //! Convenience function to get the number of elements of a vector type. inline unsigned int getVectorNumElements(llvm::Type *ty) { #if LLVM_VERSION_MAJOR >= 11 assert(ty && ty->isVectorTy() && "This is not a vector type!"); auto *VT = llvm::cast(ty); #if LLVM_VERSION_MAJOR >= 13 return VT->getElementCount().getKnownMinValue(); #else return VT->getNumElements(); #endif #else return ty->getVectorNumElements(); #endif } LLVM_VALUE getFirstElement(LLVM_VALUE V, IRBuilder<> &Builder) { Type *VTy = V->getType(); if (VTy->isDoubleTy()) return V; if (VTy->isPointerTy()) return V; assert(VTy->isVectorTy()); LLVMContext &llvmContext = Builder.getContext(); LLVM_VALUE zero = ConstantInt::get(Type::getInt32Ty(llvmContext), 0); return Builder.CreateExtractElement(V, zero); } LLVM_VALUE promoteToTy(LLVM_VALUE val, Type *destTy, LLVM_BUILDER Builder) { Type *srcTy = val->getType(); if (srcTy == destTy) return val; if (destTy->isDoubleTy()) return val; return createVecVal(Builder, val, getVectorNumElements(destTy)); } AllocaInst *createAllocaInst(LLVM_BUILDER Builder, Type *ty, unsigned arraySize = 1, const StringRef &varName = "") { // move builder to first position of entry BB BasicBlock *entryBB = &llvm_getFunction(Builder)->getEntryBlock(); IRBuilder<>::InsertPoint oldIP = Builder.saveIP(); if (!entryBB->empty()) Builder.SetInsertPoint(&entryBB->front()); else Builder.SetInsertPoint(entryBB); // allocate stack memory and store value to it. LLVMContext &llvmContext = Builder.getContext(); LLVM_VALUE arraySizeVal = ConstantInt::get(Type::getInt32Ty(llvmContext), arraySize); AllocaInst *varPtr = Builder.CreateAlloca(ty, arraySizeVal, static_cast(varName)); // restore builder insertion position Builder.restoreIP(oldIP); return varPtr; } AllocaInst *createArray(LLVM_BUILDER Builder, Type *ty, unsigned arraySize, const std::string &varName = "") { // move builder to first position of entry BB BasicBlock *entryBB = &llvm_getFunction(Builder)->getEntryBlock(); IRBuilder<>::InsertPoint oldIP = Builder.saveIP(); if (!entryBB->empty()) Builder.SetInsertPoint(&entryBB->front()); else Builder.SetInsertPoint(entryBB); // allocate stack memory and store value to it. ArrayType *arrayTy = ArrayType::get(ty, arraySize); AllocaInst *varPtr = Builder.CreateAlloca(arrayTy, nullptr, varName); // restore builder insertion position Builder.restoreIP(oldIP); return varPtr; } std::pair promoteBinaryOperandsToAppropriateVector(LLVM_BUILDER Builder, LLVM_VALUE op1, LLVM_VALUE op2) { Type *op1Ty = op1->getType(); Type *op2Ty = op2->getType(); if (op1Ty == op2Ty) return std::make_pair(op1, op2); LLVM_VALUE toPromote = op1; LLVM_VALUE target = op2; if (op1Ty->isVectorTy()) std::swap(toPromote, target); assert(target->getType()->isVectorTy()); unsigned dim = getVectorNumElements(target->getType()); LLVM_VALUE vecVal = createVecVal(Builder, toPromote, dim); if (op1Ty->isVectorTy()) op2 = vecVal; else op1 = vecVal; return std::make_pair(op1, op2); } LLVM_VALUE promoteOperand(LLVM_BUILDER Builder, const ExprType& refType, LLVM_VALUE val) { Type *valTy = val->getType(); if (refType.isFP() && refType.dim() > 1 && !valTy->isVectorTy()) { return createVecVal(Builder, val, refType.dim()); } else { return val; } } AllocaInst *storeVectorToDoublePtr(LLVM_BUILDER Builder, LLVM_VALUE vecVal) { LLVMContext &llvmContext = Builder.getContext(); AllocaInst *doublePtr = createAllocaInst(Builder, Type::getDoubleTy(llvmContext), getVectorNumElements(vecVal->getType())); for (unsigned i = 0; i < 3; ++i) { LLVM_VALUE idx = ConstantInt::get(Type::getInt32Ty(llvmContext), i); LLVM_VALUE val = Builder.CreateExtractElement(vecVal, idx); LLVM_VALUE ptr = CREATE_CONST_GEP1_32(Builder, doublePtr, i); Builder.CreateStore(val, ptr); } return doublePtr; } std::vector codegenFuncCallArgs(LLVM_BUILDER Builder, const ExprFuncNode *funcNode) { std::vector args; args.reserve(funcNode->numChildren()); for (int i = 0; i < funcNode->numChildren(); ++i) args.push_back(funcNode->child(i)->codegen(Builder)); return args; } std::vector promoteArgs(std::vector args, LLVM_BUILDER Builder, FunctionType *llvmFuncType) { std::vector ret; for (unsigned i = 0; i < args.size(); ++i) ret.push_back(promoteToTy(args[i], llvmFuncType->getParamType(i), Builder)); return ret; } std::vector promoteArgs(std::vector args, LLVM_BUILDER Builder, ExprFuncStandard::FuncType seFuncType) { if (isTakeOnlyDoubleArg(seFuncType)) return args; LLVMContext &llvmContext = Builder.getContext(); #if LLVM_VERSION_MAJOR >= 10 VectorType *destTy = VectorType::get(Type::getDoubleTy(llvmContext), 3, false); #else VectorType *destTy = VectorType::get(Type::getDoubleTy(llvmContext), 3); #endif std::vector ret; ret.reserve(args.size()); for (auto & arg : args) ret.push_back(promoteToTy(arg, destTy, Builder)); return ret; } std::vector replaceVecArgWithDoublePointer(LLVM_BUILDER Builder, std::vector args) { for (auto & arg : args) if (arg->getType()->isVectorTy()) arg = storeVectorToDoublePtr(Builder, arg); return args; } std::vector convertArgsToPointerAndLength(LLVM_BUILDER Builder, std::vector actualArgs, ExprFuncStandard::FuncType seFuncType) { assert(isVarArg(seFuncType)); LLVMContext &llvmContext = Builder.getContext(); unsigned numArgs = actualArgs.size(); // type of arg should be either double or double*(aka. vector). for (unsigned i = 0; i < numArgs; ++i) assert(actualArgs[i]->getType()->isDoubleTy() || actualArgs[i]->getType() == Type::getDoublePtrTy(llvmContext)); std::vector args; // push "int n" args.push_back(ConstantInt::get(Type::getInt32Ty(llvmContext), numArgs)); if (seFuncType == ExprFuncStandard::FUNCN) { AllocaInst *doublePtr = createAllocaInst(Builder, Type::getDoubleTy(llvmContext), numArgs); for (unsigned i = 0; i < numArgs; ++i) { LLVM_VALUE ptr = CREATE_CONST_GEP1_32(Builder, doublePtr, i); Builder.CreateStore(actualArgs[i], ptr); } args.push_back(doublePtr); return args; } AllocaInst *arrayPtr = createArray(Builder, ArrayType::get(Type::getDoubleTy(llvmContext), 3), numArgs); for (unsigned i = 0; i < numArgs; ++i) { LLVM_VALUE toInsert = actualArgs[i]; LLVM_VALUE subArrayPtr = Builder.CreateConstGEP2_32(nullptr, arrayPtr, 0, i); for (unsigned j = 0; j < 3; ++j) { LLVM_VALUE destAddr = Builder.CreateConstGEP2_32(nullptr, subArrayPtr, 0, j); LLVM_VALUE srcAddr = CREATE_CONST_GEP1_32(Builder, toInsert, j); Builder.CreateStore(CREATE_LOAD(Builder, srcAddr), destAddr); } } args.push_back(Builder.CreateBitCast(arrayPtr, Type::getDoublePtrTy(llvmContext))); return args; } LLVM_VALUE executeStandardFunction(LLVM_BUILDER Builder, ExprFuncStandard::FuncType seFuncType, std::vector args, LLVM_VALUE addrVal) { LLVMContext &llvmContext = Builder.getContext(); args = promoteArgs(args, Builder, seFuncType); args = replaceVecArgWithDoublePointer(Builder, args); if (isVarArg(seFuncType)) args = convertArgsToPointerAndLength(Builder, args, seFuncType); if (isReturnVector(seFuncType) == false) return CreateCall(Builder, addrVal, args); // TODO: assume standard function all use vector of length 3 as parameter // or return type. AllocaInst *retPtr = createAllocaInst(Builder, Type::getDoubleTy(llvmContext), 3); args.insert(args.begin(), retPtr); CreateCall(Builder, addrVal, replaceVecArgWithDoublePointer(Builder, args)); return createVecValFromAlloca(Builder, retPtr, 3); } // TODO: Is this necessary? why not use printf custom function? LLVM_VALUE callPrintf(const ExprFuncNode *seFunc, LLVM_BUILDER Builder, Function *callee) { LLVMContext &llvmContext = Builder.getContext(); std::vector args; // TODO: promotion for printf? { // preprocess format string. const auto *formatStrNode = dynamic_cast(seFunc->child(0)); assert(formatStrNode); std::string formatStr(formatStrNode->str()); std::string::size_type pos = std::string::npos; while ((pos = formatStr.find("%v")) != std::string::npos) formatStr.replace(pos, 2, std::string("[%f,%f,%f]")); formatStr.append("\n"); args.push_back(Builder.CreateGlobalStringPtr(formatStr)); } for (int i = 1; i < seFunc->numChildren(); ++i) { LLVM_VALUE arg = seFunc->child(i)->codegen(Builder); if (arg->getType()->isVectorTy()) { AllocaInst *vecArray = storeVectorToDoublePtr(Builder, arg); for (unsigned i = 0; i < getVectorNumElements(arg->getType()); ++i) { LLVM_VALUE elemPtr = CREATE_CONST_GEP1_32(Builder, vecArray, i); args.push_back(CREATE_LOAD(Builder, elemPtr)); } } else args.push_back(arg); } CreateCall(Builder, callee, args); return ConstantFP::get(Type::getDoubleTy(llvmContext), 0.0); } // TODO: not good. need better implementation. LLVM_VALUE callCustomFunction(const ExprFuncNode *funcNode, LLVM_BUILDER Builder) { LLVMContext &llvmContext = Builder.getContext(); // get the function's arguments std::vector args = codegenFuncCallArgs(Builder, funcNode); int nargs = funcNode->numChildren(); assert(nargs == (int)args.size()); // get the number of items that the function returns auto sizeOfRet = (unsigned)funcNode->type().dim(); assert(sizeOfRet == 1 || funcNode->type().isFP()); // TODO: is this necessary ? Doesn't seem to be used :/ createAllocaInst(Builder, Type::getDoubleTy(llvmContext), sizeOfRet); // calculate how much space for opData, fpArg and strArg unsigned sizeOfFpArgs = 1 + sizeOfRet; unsigned sizeOfStrArgs = 2; for (int i = 0; i < nargs; ++i) { ExprType argType = funcNode->child(i)->type(); if (argType.isFP()) { sizeOfFpArgs += std::max(funcNode->promote(i), argType.dim()); } else if (argType.isString()) { sizeOfStrArgs += 1; } else { assert(false && "invalid type encountered"); } } // a few types that are reused throughout this function Type *int32Ty = Type::getInt32Ty(llvmContext); // int Type *doubleTy = Type::getDoubleTy(llvmContext); // double PointerType *int8PtrTy = Type::getInt8PtrTy(llvmContext); // char* Type *int64Ty = Type::getInt64Ty(llvmContext); // int64_t // allocate data that we will feed to KSeExprLLVMEvalCustomFunction on the stack AllocaInst *opDataArg = createAllocaInst(Builder, int32Ty, (unsigned)nargs + 4, "opDataArgPtr"); AllocaInst *fpArg = createAllocaInst(Builder, doubleTy, sizeOfFpArgs, "fpArgPtr"); AllocaInst *strArg = createAllocaInst(Builder, int8PtrTy, sizeOfStrArgs, "strArgPtr"); // fill fpArgPtr's first value Builder.CreateStore(ConstantFP::get(doubleTy, nargs), fpArg); // fill opDataArgPtr Builder.CreateStore(ConstantInt::get(int32Ty, 0), CREATE_CONST_GEP1_32(Builder, opDataArg, 0)); Builder.CreateStore(ConstantInt::get(int32Ty, 1), CREATE_CONST_GEP1_32(Builder, opDataArg, 1)); Builder.CreateStore(ConstantInt::get(int32Ty, 1), CREATE_CONST_GEP1_32(Builder, opDataArg, 2)); Builder.CreateStore(ConstantInt::get(int32Ty, 0), CREATE_CONST_GEP1_32(Builder, opDataArg, 3)); // Load arguments into the pseudo interpreter data structure unsigned fpIdx = 1 + sizeOfRet; unsigned strIdx = 2; for (int argIndex = 0; argIndex < nargs; ++argIndex) { int opIndex = argIndex + 4; ExprType argType = funcNode->child(argIndex)->type(); if (argType.isFP()) { // store the fpArgPtr indirection index Builder.CreateStore(ConstantInt::get(int32Ty, fpIdx), CREATE_CONST_GEP1_32(Builder, opDataArg, opIndex)); if (argType.dim() > 1) { for (int comp = 0; comp < argType.dim(); comp++) { LLVM_VALUE compIndex = ConstantInt::get(int32Ty, comp); LLVM_VALUE val = Builder.CreateExtractElement(args[argIndex], compIndex); LLVM_VALUE fpArgPtr = CREATE_CONST_GEP1_32(Builder, fpArg, fpIdx + comp); Builder.CreateStore(val, fpArgPtr); } fpIdx += argType.dim(); } else { // TODO: this needs the promote!!! int promote = funcNode->promote(argIndex); if (promote) { LLVM_VALUE val = args[argIndex]; for (int comp = 0; comp < promote; comp++) { LLVM_VALUE fpArgPtr = CREATE_CONST_GEP1_32(Builder, fpArg, fpIdx + comp); Builder.CreateStore(val, fpArgPtr); } fpIdx += promote; } else { Builder.CreateStore(args[argIndex], CREATE_CONST_GEP1_32(Builder, fpArg, fpIdx)); fpIdx++; } } } else if (argType.isString()) { // store the strArgPtr indirection index Builder.CreateStore(ConstantInt::get(int32Ty, strIdx), CREATE_CONST_GEP1_32(Builder, opDataArg, opIndex)); Builder.CreateStore(args[argIndex], CREATE_CONST_GEP1_32(Builder, strArg, strIdx)); strIdx++; } } // get the module from the builder Module *module = llvm_getModule(Builder); // TODO: thread safety? // TODO: This leaks! auto *dataGV = new GlobalVariable(*module, int8PtrTy, false, GlobalValue::InternalLinkage, ConstantPointerNull::get(int8PtrTy)); // call the function Builder.CreateCall(module->getFunction("KSeExprLLVMEvalCustomFunction"), {opDataArg, fpArg, strArg, dataGV, ConstantInt::get(int64Ty, reinterpret_cast(funcNode))}); // read the result from memory int resultOffset = 1; if (funcNode->type().isFP()) { if (sizeOfRet == 1) { return CREATE_LOAD(Builder, CREATE_CONST_GEP1_32(Builder, fpArg, resultOffset)); } else if (sizeOfRet > 1) { std::vector resultArray; for (unsigned int comp = 0; comp < sizeOfRet; comp++) { LLVM_VALUE ptr = CREATE_CONST_GEP1_32(Builder, fpArg, resultOffset + comp); // skip nargs resultArray.push_back(CREATE_LOAD(Builder, ptr)); } return createVecVal(Builder, resultArray); } } else { return CREATE_LOAD(Builder, CREATE_CONST_GEP1_32(Builder, strArg, 1)); } assert(false); return nullptr; } } // namespace extern "C" void KSeExprLLVMEvalFPVarRef(ExprVarRef *seVR, double *result) { seVR->eval(result); } extern "C" void KSeExprLLVMEvalStrVarRef(ExprVarRef *seVR, char **result) { seVR->eval((const char **)result); } namespace KSeExpr { LLVM_VALUE promoteToDim(LLVM_VALUE val, unsigned dim, LLVM_BUILDER Builder) { Type *srcTy = val->getType(); if (srcTy->isVectorTy() || dim <= 1) return val; assert(srcTy->isDoubleTy()); return createVecVal(Builder, val, dim); } LLVM_VALUE ExprNode::codegen(LLVM_BUILDER Builder) const { for (int i = 0; i < numChildren(); i++) child(i)->codegen(Builder); return nullptr; } LLVM_VALUE ExprModuleNode::codegen(LLVM_BUILDER Builder) const { LLVM_VALUE lastVal = nullptr; for (int i = 0; i < numChildren(); i++) lastVal = child(i)->codegen(Builder); assert(lastVal); return lastVal; } LLVM_VALUE ExprBlockNode::codegen(LLVM_BUILDER Builder) const { LLVM_VALUE lastVal = nullptr; for (int i = 0; i < numChildren(); i++) lastVal = child(i)->codegen(Builder); assert(lastVal); return lastVal; } LLVM_VALUE ExprNumNode::codegen(LLVM_BUILDER Builder) const { return ConstantFP::get(Builder.getContext(), APFloat(_val)); } LLVM_VALUE ExprBinaryOpNode::codegen(LLVM_BUILDER Builder) const { LLVM_VALUE c1 = child(0)->codegen(Builder); LLVM_VALUE c2 = child(1)->codegen(Builder); std::pair pv = promoteBinaryOperandsToAppropriateVector(Builder, c1, c2); LLVM_VALUE op1 = pv.first; LLVM_VALUE op2 = pv.second; const bool isString = child(0)->type().isString(); if (isString == false) { switch (_op) { case '+': return Builder.CreateFAdd(op1, op2); case '-': return Builder.CreateFSub(op1, op2); case '*': return Builder.CreateFMul(op1, op2); case '/': return Builder.CreateFDiv(op1, op2); case '%': { // niceMod() from v1: b==0 ? 0 : a-floor(a/b)*b LLVM_VALUE a = op1; LLVM_VALUE b = op2; LLVM_VALUE aOverB = Builder.CreateFDiv(a, b); Function *floorFun = Intrinsic::getDeclaration(llvm_getModule(Builder), Intrinsic::floor, op1->getType()); LLVM_VALUE normal = Builder.CreateFSub(a, Builder.CreateFMul(Builder.CreateCall(floorFun, {aOverB}), b)); Constant *zero = ConstantFP::get(op1->getType(), 0.0); return Builder.CreateSelect(Builder.CreateFCmpOEQ(zero, op1), zero, normal); } case '^': { // TODO: make external function reference work with interpreter, libffi // TODO: needed for MCJIT?? // TODO: is the above not already done?! std::vector arg_type; arg_type.push_back(op1->getType()); Function *fun = Intrinsic::getDeclaration(llvm_getModule(Builder), Intrinsic::pow, arg_type); std::vector ops = {op1, op2}; return Builder.CreateCall(fun, ops); } } } else { // precompute a few things LLVMContext &context = Builder.getContext(); Module *module = llvm_getModule(Builder); PointerType *i8PtrPtrTy = PointerType::getUnqual(Type::getInt8PtrTy(context)); Type *i32Ty = Type::getInt32Ty(context); Function *strlen = module->getFunction("strlen"); Function *malloc = module->getFunction("malloc"); Function *free = module->getFunction("free"); Function *memset = module->getFunction("memset"); Function *strcat = module->getFunction("strcat"); // do magic (see the pseudo C code on the comments at the end // of each LLVM instruction) // compute the length of the operand strings LLVM_VALUE len1 = Builder.CreateCall(strlen, {op1}); // len1 = strlen(op1); LLVM_VALUE len2 = Builder.CreateCall(strlen, {op2}); // len2 = strlen(op2); LLVM_VALUE len = Builder.CreateAdd(len1, len2); // len = len1 + len2; // allocate and clear memory LLVM_VALUE alloc = Builder.CreateCall(malloc, {len}); // alloc = malloc(len1 + len2); LLVM_VALUE zero = ConstantInt::get(i32Ty, 0); // zero = 0; Builder.CreateCall(memset, {alloc, zero, len}); // memset(alloc, zero, len); // concatenate operand strings into output string Builder.CreateCall(strcat, {alloc, op1}); // strcat(alloc, op1); LLVM_VALUE newAlloc = Builder.CreateGEP(nullptr, alloc, len1); // newAlloc = alloc + len1 Builder.CreateCall(strcat, {newAlloc, op2}); // strcat(alloc, op2); // store the address in the node's _out member so that it will be // cleaned up when the expression is destroyed. APInt outAddr = APInt(64, reinterpret_cast(&_out)); LLVM_VALUE out = Constant::getIntegerValue(i8PtrPtrTy, outAddr); // out = &_out; Builder.CreateCall(free, {CREATE_LOAD(Builder, out)}); // free(*out); Builder.CreateStore(alloc, out); // *out = alloc return alloc; } assert(false && "unexpected op"); return nullptr; } // This is the def of def-use chain // We don't go to VarNode::codegen. It is codegen'd here. LLVM_VALUE ExprAssignNode::codegen(LLVM_BUILDER Builder) const { // codegen value to store LLVM_VALUE val = child(0)->codegen(Builder); // code gen pointer to store into const std::string &varName = name(); LLVM_VALUE varPtr = _localVar->codegen(Builder, varName, val); // do actual store Builder.CreateStore(val, varPtr); return nullptr; } //! LLVM value that has been allocated LLVM_VALUE ExprLocalVar::codegen(LLVM_BUILDER Builder, const std::string &varName, LLVM_VALUE refValue) const { _varPtr = createAllocaInst(Builder, refValue->getType(), 1, varName); return _varPtr; } LLVM_VALUE ExprCompareEqNode::codegen(LLVM_BUILDER Builder) const { LLVM_VALUE op1 = getFirstElement(child(0)->codegen(Builder), Builder); LLVM_VALUE op2 = getFirstElement(child(1)->codegen(Builder), Builder); LLVM_VALUE boolVal = nullptr; const bool isString = child(0)->type().isString(); if (isString == false) { switch (_op) { case '!': boolVal = Builder.CreateFCmpONE(op1, op2); break; case '=': boolVal = Builder.CreateFCmpOEQ(op1, op2); break; default: assert(false && "Unkown CompareEq op."); } return Builder.CreateUIToFP(boolVal, op1->getType()); } else { // precompute a few things LLVMContext &llvmContext = Builder.getContext(); Module *module = llvm_getModule(Builder); Type *doubleTy = Type::getDoubleTy(llvmContext); Function *strcmp = module->getFunction("strcmp"); LLVM_VALUE val = Builder.CreateCall(strcmp, {op1, op2}); // val = strcmp(op1, op2); Constant *zero = ConstantInt::get(strcmp->getReturnType(), 0); switch (_op) { case '!': boolVal = Builder.CreateICmpNE(val, zero); // boolVal = val == 0; break; case '=': boolVal = Builder.CreateICmpEQ(val, zero); // boolVal = val != 0; break; default: assert(false && "Unkown CompareEq op."); } return Builder.CreateUIToFP(boolVal, doubleTy); } } LLVM_VALUE ExprCompareNode::codegen(LLVM_BUILDER Builder) const { if (_op == '&' || _op == '|') { // Handle & and | specially as conditionals to handle short circuiting! LLVMContext &llvmContext = Builder.getContext(); LLVM_VALUE op1 = getFirstElement(child(0)->codegen(Builder), Builder); Type *opTy = op1->getType(); Constant *zero = ConstantFP::get(opTy, 0.0); LLVM_VALUE op1IsOne = Builder.CreateFCmpUNE(op1, zero); Function *F = llvm_getFunction(Builder); BasicBlock *thenBlock = BasicBlock::Create(llvmContext, "then", F); BasicBlock *elseBlock = BasicBlock::Create(llvmContext, "else", F); BasicBlock *phiBlock = BasicBlock::Create(llvmContext, "phi", F); Builder.CreateCondBr(op1IsOne, thenBlock, elseBlock); LLVM_VALUE op2IsOne = nullptr; Type *intTy = Type::getInt1Ty(llvmContext); Type *doubleTy = Type::getDoubleTy(llvmContext); llvm::PHINode *phiNode = nullptr; if (_op == '&') { // TODO: full IfThenElsenot needed Builder.SetInsertPoint(thenBlock); LLVM_VALUE op2 = child(1)->codegen(Builder); op2IsOne = Builder.CreateFCmpUNE(op2, zero); Builder.CreateBr(phiBlock); thenBlock = Builder.GetInsertBlock(); Builder.SetInsertPoint(elseBlock); Builder.CreateBr(phiBlock); Builder.SetInsertPoint(phiBlock); phiNode = Builder.CreatePHI(intTy, 2, "iftmp"); phiNode->addIncoming(op2IsOne, thenBlock); phiNode->addIncoming(op1IsOne, elseBlock); } else if (_op == '|') { // TODO: full IfThenElsenot needed Builder.SetInsertPoint(thenBlock); Builder.CreateBr(phiBlock); Builder.SetInsertPoint(elseBlock); LLVM_VALUE op2 = child(1)->codegen(Builder); op2IsOne = Builder.CreateFCmpUNE(op2, zero); Builder.CreateBr(phiBlock); elseBlock = Builder.GetInsertBlock(); Builder.SetInsertPoint(phiBlock); phiNode = Builder.CreatePHI(intTy, 2, "iftmp"); phiNode->addIncoming(op1IsOne, thenBlock); phiNode->addIncoming(op2IsOne, elseBlock); } else { throw std::runtime_error("Logical inconsistency."); } LLVM_VALUE out = Builder.CreateUIToFP(phiNode, doubleTy); return out; } else { LLVM_VALUE op1 = getFirstElement(child(0)->codegen(Builder), Builder); LLVM_VALUE op2 = getFirstElement(child(1)->codegen(Builder), Builder); Type *opTy = op1->getType(); Constant *zero = ConstantFP::get(opTy, 0.0); LLVM_VALUE boolVal = nullptr; switch (_op) { case '|': { LLVM_VALUE op1IsOne = Builder.CreateFCmpUNE(op1, zero); LLVM_VALUE op2IsOne = Builder.CreateFCmpUNE(op2, zero); boolVal = Builder.CreateOr(op1IsOne, op2IsOne); break; } case '&': { assert(false); // handled above break; } case 'g': boolVal = Builder.CreateFCmpOGE(op1, op2); break; case 'l': boolVal = Builder.CreateFCmpOLE(op1, op2); break; case '>': boolVal = Builder.CreateFCmpOGT(op1, op2); break; case '<': boolVal = Builder.CreateFCmpOLT(op1, op2); break; default: assert(false && "Unkown Compare op."); } return Builder.CreateUIToFP(boolVal, opTy); } } LLVM_VALUE ExprCondNode::codegen(LLVM_BUILDER Builder) const { #if 0 // old non-short circuit LLVM_VALUE condVal = getFirstElement(child(0)->codegen(Builder), Builder); LLVM_VALUE cond = Builder.CreateFCmpUNE(condVal, ConstantFP::get(condVal->getType(), 0.0)); LLVM_VALUE trueVal = child(1)->codegen(Builder); LLVM_VALUE falseVal = child(2)->codegen(Builder); std::pair pv = promoteBinaryOperandsToAppropriateVector(Builder, trueVal, falseVal); return Builder.CreateSelect(cond, pv.first, pv.second); #else // new short circuit version LLVM_VALUE condVal = getFirstElement(child(0)->codegen(Builder), Builder); LLVM_VALUE condAsBool = Builder.CreateFCmpUNE(condVal, ConstantFP::get(condVal->getType(), 0.0)); LLVMContext &llvmContext = Builder.getContext(); Function *F = llvm_getFunction(Builder); BasicBlock *thenBlock = BasicBlock::Create(llvmContext, "then", F); BasicBlock *elseBlock = BasicBlock::Create(llvmContext, "else", F); BasicBlock *phiBlock = BasicBlock::Create(llvmContext, "phi", F); Builder.CreateCondBr(condAsBool, thenBlock, elseBlock); Builder.SetInsertPoint(thenBlock); LLVM_VALUE trueVal = promoteOperand(Builder, _type, child(1)->codegen(Builder)); Builder.CreateBr(phiBlock); thenBlock = Builder.GetInsertBlock(); Builder.SetInsertPoint(elseBlock); LLVM_VALUE falseVal = promoteOperand(Builder, _type, child(2)->codegen(Builder)); Builder.CreateBr(phiBlock); elseBlock = Builder.GetInsertBlock(); Builder.SetInsertPoint(phiBlock); llvm::PHINode *phiNode = Builder.CreatePHI(trueVal->getType(), 2, "iftmp"); phiNode->addIncoming(trueVal, thenBlock); phiNode->addIncoming(falseVal, elseBlock); return phiNode; #endif } LLVM_VALUE ExprFuncNode::codegen(LLVM_BUILDER Builder) const { LLVMContext &llvmContext = Builder.getContext(); Module *M = llvm_getModule(Builder); std::string calleeName(name()); /************* call local function or printf *************/ Function *callee = M->getFunction(calleeName); if (calleeName == "printf") { if (!callee) { FunctionType *FT = FunctionType::get(Type::getVoidTy(llvmContext), Type::getInt8PtrTy(llvmContext), true); callee = Function::Create(FT, GlobalValue::ExternalLinkage, "printf", llvm_getModule(Builder)); } return callPrintf(this, Builder, callee); } else if (callee) { std::vector args = promoteArgs(codegenFuncCallArgs(Builder, this), Builder, callee->getFunctionType()); return Builder.CreateCall(callee, args); } /************* call standard function or custom function *************/ // call custom function const auto *standfunc = dynamic_cast(_func->funcx()); if (!standfunc) return callCustomFunction(this, Builder); // call standard function // get function pointer ExprFuncStandard::FuncType seFuncType = standfunc->getFuncType(); FunctionType *llvmFuncType = getSeExprFuncStandardLLVMType(seFuncType, llvmContext); void *fp = standfunc->getFuncPointer(); ConstantInt *funcAddr = ConstantInt::get(Type::getInt64Ty(llvmContext), reinterpret_cast(fp)); LLVM_VALUE addrVal = Builder.CreateIntToPtr(funcAddr, PointerType::getUnqual(llvmFuncType)); // Collect distribution positions std::vector args = codegenFuncCallArgs(Builder, this); std::vector argumentIsVectorAndNeedsDistribution(args.size(), 0); Type *maxVectorArgType = nullptr; if (seFuncType == ExprFuncStandard::FUNCN) { for (unsigned i = 0; i < args.size(); ++i) { if (args[i]->getType()->isVectorTy()) { maxVectorArgType = args[i]->getType(); argumentIsVectorAndNeedsDistribution[i] = 1; } } } else if (seFuncType == ExprFuncStandard::FUNCNV || seFuncType == ExprFuncStandard::FUNCNVV) { } else { unsigned shift = isReturnVector(seFuncType) ? 1 : 0; for (unsigned i = 0; i < args.size(); ++i) { Type *paramType = llvmFuncType->getParamType(i + shift); Type *argType = args[i]->getType(); if (argType->isVectorTy() && paramType->isDoubleTy()) { maxVectorArgType = args[i]->getType(); argumentIsVectorAndNeedsDistribution[i] = 1; } } } if (!maxVectorArgType) // nothing needs distribution so just execute normally return executeStandardFunction(Builder, seFuncType, args, addrVal); assert(maxVectorArgType->isVectorTy()); std::vector ret; for (unsigned vecComponent = 0; vecComponent < getVectorNumElements(maxVectorArgType); ++vecComponent) { LLVM_VALUE idx = ConstantInt::get(Type::getInt32Ty(llvmContext), vecComponent); std::vector realArgs; // Break the function into multiple calls per component of the output // i.e. sin([1,2,3]) should be [sin(1),sin(2),sin(3)] for (unsigned argIndex = 0; argIndex < args.size(); ++argIndex) { LLVM_VALUE realArg = args[argIndex]; if (argumentIsVectorAndNeedsDistribution[argIndex]) { if (args[argIndex]->getType()->isPointerTy()) realArg = CREATE_LOAD(Builder, Builder.CreateConstGEP2_32(nullptr, args[argIndex], 0, vecComponent)); else realArg = Builder.CreateExtractElement(args[argIndex], idx); } realArgs.push_back(realArg); } ret.push_back(executeStandardFunction(Builder, seFuncType, realArgs, addrVal)); } return createVecVal(Builder, ret); } LLVM_VALUE ExprIfThenElseNode::codegen(LLVM_BUILDER Builder) const { LLVM_VALUE condVal = getFirstElement(child(0)->codegen(Builder), Builder); Type *condTy = condVal->getType(); LLVMContext &llvmContext = Builder.getContext(); Constant *zero = ConstantFP::get(condTy, 0.0); LLVM_VALUE intCond = Builder.CreateFCmpUNE(condVal, zero); Function *F = llvm_getFunction(Builder); BasicBlock *thenBlock = BasicBlock::Create(llvmContext, "then", F); BasicBlock *elseBlock = BasicBlock::Create(llvmContext, "else", F); BasicBlock *phiBlock = BasicBlock::Create(llvmContext, "phi", F); Builder.CreateCondBr(intCond, thenBlock, elseBlock); Builder.SetInsertPoint(thenBlock); child(1)->codegen(Builder); thenBlock = Builder.GetInsertBlock(); Builder.SetInsertPoint(elseBlock); child(2)->codegen(Builder); elseBlock = Builder.GetInsertBlock(); // make all the merged variables. in the if then basic blocks // this is because we need phi ops to be alone Builder.SetInsertPoint(phiBlock); const auto &merges = _varEnv->merge(_varEnvMergeIndex); std::vector phis; phis.reserve(merges.size()); for (const auto &it : merges) { ExprLocalVarPhi *finalVar = it.second; if (finalVar->valid()) { ExprType refType = finalVar->type(); Builder.SetInsertPoint(thenBlock); LLVM_VALUE thenValue = promoteOperand(Builder, refType, CREATE_LOAD(Builder, finalVar->_thenVar->varPtr())); Builder.SetInsertPoint(elseBlock); LLVM_VALUE elseValue = promoteOperand(Builder, refType, CREATE_LOAD(Builder, finalVar->_elseVar->varPtr())); Type *finalType = thenValue->getType(); Builder.SetInsertPoint(phiBlock); PHINode *phi = Builder.CreatePHI(finalType, 2, it.first); phi->addIncoming(thenValue, thenBlock); phi->addIncoming(elseValue, elseBlock); phis.push_back(phi); } } // Now that we made all of the phi blocks, we must store them into the variables int idx = 0; for (auto &it : _varEnv->merge(_varEnvMergeIndex)) { const std::string &name = it.first; ExprLocalVarPhi *finalVar = it.second; if (finalVar->valid()) { LLVM_VALUE _finalVarPtr = finalVar->codegen(Builder, name + "-merge", phis[idx]); Builder.CreateStore(phis[idx++], _finalVarPtr); } } // Insert the ending jumps out of the then, else basic blocks Builder.SetInsertPoint(thenBlock); Builder.CreateBr(phiBlock); Builder.SetInsertPoint(elseBlock); Builder.CreateBr(phiBlock); // insert at end again Builder.SetInsertPoint(phiBlock); return nullptr; } LLVM_VALUE ExprLocalFunctionNode::codegen(LLVM_BUILDER Builder) const { IRBuilder<>::InsertPoint oldIP = Builder.saveIP(); LLVMContext &llvmContext = Builder.getContext(); // codegen prototype auto *F = cast(child(0)->codegen(Builder)); // create alloca for args BasicBlock *BB = BasicBlock::Create(llvmContext, "entry", F); Builder.SetInsertPoint(BB); for (auto & AI : F->args()) { AllocaInst *Alloca = createAllocaInst(Builder, AI.getType(), 1, AI.getName()); Alloca->takeName(&AI); Builder.CreateStore(&AI, Alloca); } LLVM_VALUE result = nullptr; for (int i = 1; i < numChildren(); i++) result = child(i)->codegen(Builder); Builder.CreateRet(result); Builder.restoreIP(oldIP); return nullptr; } LLVM_VALUE ExprPrototypeNode::codegen(LLVM_BUILDER Builder) const { LLVMContext &llvmContext = Builder.getContext(); // get arg type std::vector ParamTys; ParamTys.reserve(numChildren()); for (int i = 0; i < numChildren(); ++i) ParamTys.push_back(createLLVMTyForSeExprType(llvmContext, argType(i))); // get ret type Type *retTy = createLLVMTyForSeExprType(llvmContext, returnType()); FunctionType *FT = FunctionType::get(retTy, ParamTys, false); Function *F = Function::Create(FT, GlobalValue::InternalLinkage, name(), llvm_getModule(Builder)); // Set names for all arguments. auto *AI = F->arg_begin(); for (int i = 0, e = numChildren(); i != e; ++i, ++AI) { const auto *childNode = dynamic_cast(child(i)); assert(childNode); AI->setName(childNode->name()); } return F; } LLVM_VALUE ExprStrNode::codegen(LLVM_BUILDER Builder) const { return Builder.CreateGlobalStringPtr(unescapeString(_str)); } LLVM_VALUE ExprSubscriptNode::codegen(LLVM_BUILDER Builder) const { LLVM_VALUE op1 = child(0)->codegen(Builder); LLVM_VALUE op2 = child(1)->codegen(Builder); if (op1->getType()->isDoubleTy()) return op1; LLVMContext &llvmContext = Builder.getContext(); LLVM_VALUE idx = Builder.CreateFPToUI(op2, Type::getInt32Ty(llvmContext)); return Builder.CreateExtractElement(op1, idx); } LLVM_VALUE ExprUnaryOpNode::codegen(LLVM_BUILDER Builder) const { LLVM_VALUE op1 = child(0)->codegen(Builder); Type *op1Ty = op1->getType(); Constant *negateZero = ConstantFP::getZeroValueForNegation(op1Ty); Constant *zero = ConstantFP::get(op1Ty, 0.0); Constant *one = ConstantFP::get(op1Ty, 1.0); switch (_op) { case '-': return Builder.CreateFSub(negateZero, op1); case '~': { LLVM_VALUE neg = Builder.CreateFSub(negateZero, op1); return Builder.CreateFAdd(neg, one); } case '!': { LLVM_VALUE eqZero = Builder.CreateFCmpOEQ(zero, op1); return Builder.CreateSelect(eqZero, one, zero); } } assert(false && "not implemented."); return nullptr; } /// Visitor pattern for VarCodeGeneration to make ExprVarNode behave more like a delegation struct VarCodeGeneration { static LLVM_VALUE codegen(ExprVarRef *varRef, const std::string &varName, LLVM_BUILDER Builder) { LLVMContext &llvmContext = Builder.getContext(); // a few types Type *int64Ty = Type::getInt64Ty(llvmContext); // int64_t Type *doubleTy = Type::getDoubleTy(llvmContext); // double PointerType *int8PtrTy = Type::getInt8PtrTy(llvmContext); // char * // get var informations bool isDouble = varRef->type().isFP(); int dim = varRef->type().dim(); // create the return value on the stack AllocaInst *returnValue = createAllocaInst(Builder, isDouble ? doubleTy : int8PtrTy, dim); // get our eval var function, and call it with a pointer to our var ref and a ref to the return value Function *evalVarFunc = llvm_getModule(Builder)->getFunction(isDouble == true ? "KSeExprLLVMEvalFPVarRef" : "KSeExprLLVMEvalStrVarRef"); Builder.CreateCall(evalVarFunc, {Builder.CreateIntToPtr(ConstantInt::get(int64Ty, reinterpret_cast(varRef)), int8PtrTy), returnValue}); // load our return value LLVM_VALUE ret = 0; if (dim == 1) { ret = CREATE_LOAD(Builder, returnValue); } else { ret = createVecValFromAlloca(Builder, returnValue, dim); } AllocaInst *thisvar = createAllocaInst(Builder, ret->getType(), 1, varName); Builder.CreateStore(ret, thisvar); return ret; } static LLVM_VALUE codegen(VarBlockCreator::Ref *varRef, const std::string &varName, LLVM_BUILDER Builder) { LLVMContext &llvmContext = Builder.getContext(); int variableOffset = varRef->offset(); int variableStride = varRef->stride(); Function *function = llvm_getFunction(Builder); auto *argIterator = function->arg_begin(); argIterator++; // skip first arg llvm::Argument *variableBlock = &*(argIterator++); llvm::Argument *indirectIndex = &*(argIterator++); int dim = varRef->type().dim(); Type *ptrToPtrTy = variableBlock->getType(); Value *variableBlockAsPtrPtr = Builder.CreatePointerCast(variableBlock, ptrToPtrTy); Value *variableOffsetIndex = ConstantInt::get(Type::getInt32Ty(llvmContext), variableOffset); Value *variableBlockIndirectPtrPtr = IN_BOUNDS_GEP(Builder, variableBlockAsPtrPtr, variableOffsetIndex); Value *baseMemory = CREATE_LOAD(Builder, variableBlockIndirectPtrPtr); Value *variableStrideValue = ConstantInt::get(Type::getInt32Ty(llvmContext), variableStride); if (dim == 1) { /// If we are uniform always assume indirectIndex is 0 (there's only one value) Value *variablePointer = varRef->type().isLifetimeUniform() ? baseMemory : IN_BOUNDS_GEP(Builder, baseMemory, indirectIndex); return CREATE_LOAD(Builder, variablePointer); } else { std::vector loadedValues(dim); for (int component = 0; component < dim; component++) { Value *componentIndex = ConstantInt::get(Type::getInt32Ty(llvmContext), component); /// If we are uniform always assume indirectIndex is 0 (there's only one value) Value *variablePointer = varRef->type().isLifetimeUniform() ? Builder.CreateInBoundsGEP(Type::getDoubleTy(llvmContext), baseMemory, componentIndex) : Builder.CreateInBoundsGEP(Type::getDoubleTy(llvmContext), baseMemory, Builder.CreateAdd(Builder.CreateMul(indirectIndex, variableStrideValue), componentIndex)); loadedValues[component] = CREATE_LOAD_WITH_ID(Builder, variablePointer, varName); } return createVecVal(Builder, loadedValues, varName); } } }; // This is the use of def-use chain LLVM_VALUE ExprVarNode::codegen(LLVM_BUILDER Builder) const { if (_var) { // All external var has the prefix "external_" in current function to avoid // potential name conflict with local variable std::string varName("external_"); varName.append(name()); // if (LLVM_VALUE valPtr = resolveLocalVar(varName.c_str(), Builder)) // return CREATE_LOAD(Builder, valPtr); if (auto *varBlockRef = dynamic_cast(_var)) return VarCodeGeneration::codegen(varBlockRef, varName, Builder); else return VarCodeGeneration::codegen(_var, varName, Builder); } else if (_localVar) { ExprType varTy = _localVar->type(); if (varTy.isFP() || varTy.isString()) { // LLVM_VALUE valPtr = resolveLocalVar(name(), Builder); LLVM_VALUE varPtr = _localVar->varPtr(); assert(varPtr && "can not found symbol?"); return CREATE_LOAD(Builder, varPtr); } } assert(false); return nullptr; } LLVM_VALUE ExprVecNode::codegen(LLVM_BUILDER Builder) const { std::vector elems; ConstantInt *zero = ConstantInt::get(Type::getInt32Ty(Builder.getContext()), 0); for (int i = 0; i < numChildren(); i++) { LLVM_VALUE val = child(i)->codegen(Builder); elems.push_back(val->getType()->isVectorTy() ? Builder.CreateExtractElement(val, zero) : val); } return createVecVal(Builder, elems); } } // namespace KSeExpr #endif kseexpr-4.0.4.0/src/KSeExpr/ExprMultiExpr.cpp0000644000000000000240000002077314156102631020756 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #include #include #include "ExprMultiExpr.h" namespace KSeExpr { class GlobalVal : public ExprVarRef { public: GlobalVal(const std::string &varName, const KSeExpr::ExprType &et) : ExprVarRef(et) , varName(varName) { } std::set users; std::string varName; }; struct GlobalFP : public GlobalVal { GlobalFP(const std::string &varName, int dim) : GlobalVal(varName, ExprType().FP(dim).Varying()) { val.assign(dim, 0); } std::vector val; void eval(double *result) override { for (int i = 0; i < type().dim(); i++) result[i] = val[i]; } void eval(const char **) override { assert(false); } bool isVec() { return type().dim() > 1; } }; struct GlobalStr : public GlobalVal { GlobalStr(const std::string &varName) : GlobalVal(varName, ExprType().String().Varying()) { } const char *val{nullptr}; void eval(double *) override { assert(false); } void eval(const char **result) override { *result = val; } bool isVec() { return false; } }; } // namespace KSeExpr namespace { std::set getAffectedExpr(KSeExpr::GlobalVal *gv) { std::set ret; std::set workList = gv->users; while (!workList.empty()) { KSeExpr::DExpression *de = *workList.begin(); workList.erase(de); ret.insert(de); workList.insert(de->val->users.begin(), de->val->users.end()); } return ret; } std::set getTransitiveOperandExpr(KSeExpr::DExpression *expr) { std::set ret; std::set workList; workList.insert(expr); while (!workList.empty()) { KSeExpr::DExpression *de = *workList.begin(); workList.erase(de); ret.insert(de); workList.insert(de->operandExprs.begin(), de->operandExprs.end()); } return ret; } std::set tmpOperandExprs; std::set tmpOperandVars; } // namespace namespace KSeExpr { DExpression::DExpression(const std::string &varName, Expressions &context, const std::string &e, const ExprType &type, EvaluationStrategy be) : Expression(e, type, be) , dContext(context) { if (type.isFP()) val = new GlobalFP(varName, type.dim()); else if (type.isString()) val = new GlobalStr(varName); else assert(false); operandExprs = dContext.AllExprs; operandVars = dContext.AllExternalVars; prepIfNeeded(); operandExprs = tmpOperandExprs; operandVars = tmpOperandVars; } const std::string &DExpression::name() const { return val->varName; } ExprVarRef *DExpression::resolveVar(const std::string &name) const { // first time resolve var from all exprs & vars // then resolve var from used exprs & vars for (auto *operandExpr : operandExprs) { if (operandExpr->name() == name) { tmpOperandExprs.insert(operandExpr); operandExpr->val->users.insert(const_cast(this)); return operandExpr->val; } } for (auto *operandVar : operandVars) { if (operandVar->varName == name) { tmpOperandVars.insert(operandVar); operandVar->users.insert(const_cast(this)); return operandVar; } } addError(ErrorCode::UndeclaredVariable, {name}, 0, 0); return nullptr; } void DExpression::eval() { if (_desiredReturnType.isFP()) { const double *ret = evalFP(); auto *fpVal = dynamic_cast(val); fpVal->val.assign(ret, ret + fpVal->val.size()); return; } assert(_desiredReturnType.isString()); auto *strVal = dynamic_cast(val); strVal->val = evalStr(); } Expressions::~Expressions() { for (auto *AllExpr : AllExprs) delete AllExpr; for (auto *AllExternalVar : AllExternalVars) delete AllExternalVar; } VariableHandle Expressions::addExternalVariable(const std::string &variableName, ExprType seTy) { std::pair::iterator, bool> ret; if (seTy.isFP()) ret = AllExternalVars.insert(new GlobalFP(variableName, seTy.dim())); else if (seTy.isString()) ret = AllExternalVars.insert(new GlobalStr(variableName)); else assert(false); return ret.first; } ExprHandle Expressions::addExpression(const std::string &varName, ExprType seTy, const std::string &expr) { std::pair::iterator, bool> ret; ret = AllExprs.insert(new DExpression(varName, *this, expr, seTy)); return ret.first; } VariableSetHandle Expressions::getLoopVarSetHandle(VariableHandle vh) { GlobalVal *thisvar = *vh; auto initSize = static_cast(thisvar->users.size()); if (!initSize) return AllExternalVars.end(); std::set ret = getAffectedExpr(thisvar); exprToEval.insert(ret.begin(), ret.end()); // std::cout << "exprToEval size is " << exprToEval.size() << std::endl; return vh; } void Expressions::setLoopVariable(VariableSetHandle handle, double *values, unsigned dim) { if (handle == AllExternalVars.end()) return; auto *thisvar = dynamic_cast(*handle); assert(thisvar && "set value to variable with incompatible types."); assert(dim == thisvar->val.size()); for (unsigned i = 0; i < dim; ++i) thisvar->val[i] = values[i]; } void Expressions::setLoopVariable(VariableSetHandle handle, const char *values) { if (handle == AllExternalVars.end()) return; auto *thisvar = dynamic_cast(*handle); assert(thisvar && "set value to variable with incompatible types."); thisvar->val = values; } void Expressions::setVariable(VariableHandle handle, double *values, unsigned dim) { auto *thisvar = dynamic_cast(*handle); assert(thisvar && "set value to variable with incompatible types."); assert(dim == thisvar->val.size()); for (unsigned i = 0; i < dim; ++i) thisvar->val[i] = values[i]; // eval loop invariant now. std::set ret = getAffectedExpr(thisvar); for (auto *I : ret) I->eval(); } void Expressions::setVariable(VariableHandle handle, const char *values) { auto *thisvar = dynamic_cast(*handle); assert(thisvar && "set value to variable with incompatible types."); thisvar->val = values; // eval loop invariant now. std::set ret = getAffectedExpr(thisvar); for (auto *I : ret) I->eval(); } bool Expressions::isValid() const { bool ret = true; for (auto *AllExpr : AllExprs) ret &= AllExpr->isValid(); return ret; } ExprEvalHandle Expressions::getExprEvalHandle(ExprHandle eh) { // std::cout << "exprToEval size is " << exprToEval.size() << std::endl; DExpression *de = *eh; std::set all = getTransitiveOperandExpr(de); // std::cout << "all size is " << all.size() << std::endl; std::vector::iterator it; std::vector ret1(all.size()); it = std::set_intersection(all.begin(), all.end(), exprToEval.begin(), exprToEval.end(), ret1.begin()); ret1.resize(it - ret1.begin()); std::vector ret2(ret1.size()); it = std::set_difference(ret1.begin(), ret1.end(), exprEvaled.begin(), exprEvaled.end(), ret2.begin()); ret2.resize(it - ret2.begin()); exprEvaled.insert(ret2.begin(), ret2.end()); // std::cout << "ret2 size is " << ret2.size() << std::endl; return std::make_pair(eh, ret2); } const std::vector &Expressions::evalFP(ExprEvalHandle eeh) { // std::cout << "eeh.second.size() is " << eeh.second.size() << std::endl; for (auto & I : eeh.second) I->eval(); auto *thisvar = dynamic_cast((*eeh.first)->val); // std::cout << thisvar->val[0] << "," // << thisvar->val[1] << "," // << thisvar->val[2] << std::endl; return thisvar->val; } const char *Expressions::evalStr(ExprEvalHandle eeh) { for (auto & I : eeh.second) I->eval(); auto *thisvar = dynamic_cast((*eeh.first)->val); return thisvar->val; } } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/ExprMultiExpr.h0000644000000000000240000000546214156102631020421 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #include "Expression.h" namespace KSeExpr { class DExpression; class GlobalVal; class Expressions; using VariableHandle = std::set::iterator; using VariableSetHandle = std::set::iterator; using ExprHandle = std::set::iterator; using ExprEvalHandle = std::pair >; class DExpression : public Expression { Expressions &dContext; public: DExpression(const std::string &varName, Expressions &context, const std::string &e, const ExprType &type = ExprType().FP(3), EvaluationStrategy be = defaultEvaluationStrategy); mutable std::set operandExprs; mutable std::set operandVars; GlobalVal *val; const std::string &name() const; ExprVarRef *resolveVar(const std::string &name) const override; void eval(); }; class Expressions { std::set exprToEval; std::set exprEvaled; public: std::set AllExprs; std::set AllExternalVars; // Expressions(int numberOfEvals=1); Expressions() = default; ~Expressions(); Expressions(const Expressions&) = default; Expressions& operator=(const Expressions &) = default; Expressions(Expressions &&) = default; Expressions &operator=(Expressions &&) = default; VariableHandle addExternalVariable(const std::string &variableName, ExprType seTy); ExprHandle addExpression(const std::string &varName, ExprType seTy, const std::string &expr); VariableSetHandle getLoopVarSetHandle(VariableHandle vh); void setLoopVariable(VariableSetHandle handle, double *values, unsigned dim); void setLoopVariable(VariableSetHandle handle, double value) { setLoopVariable(handle, &value, 1); } void setLoopVariable(VariableSetHandle handle, const char *values); void setVariable(VariableHandle handle, double *values, unsigned dim); void setVariable(VariableHandle handle, double value) { setVariable(handle, &value, 1); } void setVariable(VariableHandle handle, const char *values); bool isValid() const; void getErrors(std::vector &errors) const; // bool isVariableUsed(VariableHandle variableHandle) const; ExprEvalHandle getExprEvalHandle(ExprHandle eh); const std::vector &evalFP(ExprEvalHandle eeh); const char *evalStr(ExprEvalHandle eeh); void resetEval() { exprToEval.clear(); exprEvaled.clear(); } void reset() { resetEval(); AllExprs.clear(); AllExternalVars.clear(); } }; } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/ExprNode.cpp0000644000000000000240000004632114156102631017707 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #include #include #include #include "ExprEnv.h" #include "ExprFunc.h" #include "ExprNode.h" #include "ExprType.h" #include "Expression.h" #include "StringUtils.h" #include "VarBlock.h" #include "Vec.h" // TODO: add and other binary op demote to scalar if wantScalar // TODO: logical operations like foo::iterator iter; for (iter = _children.begin(); iter != _children.end(); iter++) delete *iter; } void ExprNode::addChild(ExprNode *child) { _children.push_back(child); child->_parent = this; } void ExprNode::addChildren(ExprNode *surrogate) { for (auto & iter : surrogate->_children) { addChild(iter); } surrogate->_children.clear(); delete surrogate; } ExprType ExprNode::prep(bool, ExprVarEnvBuilder &envBuilder) { /** Default is to call prep on children (giving AnyType as desired type). * If all children return valid types, returns NoneType. * Otherwise, returns ErrorType. * *Note:* Ignores wanted type. */ bool error = false; _maxChildDim = 0; for (int c = 0; c < numChildren(); c++) { error |= !child(c)->prep(false, envBuilder).isValid(); int childDim = child(c)->type().isFP() ? child(c)->type().dim() : 0; if (childDim > _maxChildDim) _maxChildDim = childDim; } if (error) setType(ExprType().Error()); else setTypeWithChildLife(ExprType().None()); return _type; } ExprType ExprModuleNode::prep(bool, ExprVarEnvBuilder &envBuilder) { bool error = false; for (int c = 0; c < numChildren(); c++) error |= !child(c)->prep(false, envBuilder).isValid(); if (error) setType(ExprType().Error()); else setType(child(numChildren() - 1)->type()); return _type; } ExprType ExprPrototypeNode::prep(bool, ExprVarEnvBuilder &) { bool error = false; #if 0 // TODO: implement prototype if (_retTypeSet) checkCondition(returnType().isValid(), "Function has bad return type", error); _argTypes.clear(); for (int c = 0; c < numChildren(); c++) { ExprType type = child(c)->type(); checkCondition(type.isValid(), "Function has a parameter with a bad type", error); _argTypes.push_back(type); ExprLocalVar* localVar = new ExprLocalVar(type); envBuilder.current()->add(((ExprVarNode*)child(c))->name(), localVar); std::cerr << "after create localvar phi " << localVar->getPhi() << std::endl; child(c)->prep(wantScalar, envBuilder); } #else checkCondition(false, ErrorCode::Unknown, {"Prototypes are currently not supported"}, error); #endif if (error) setType(ExprType().Error()); else setType(ExprType().None().Varying()); return _type; } void ExprPrototypeNode::addArgTypes(ExprNode *surrogate) { ExprNode::addChildren(surrogate); for (int i = 0; i < numChildren(); i++) _argTypes.push_back(child(i)->type()); } void ExprPrototypeNode::addArgs(ExprNode *surrogate) { ExprNode::addChildren(surrogate); #if 0 ExprNode * child; ExprType type; for(int i = 0; i < numChildren(); i++) { child = this->child(i); type = child->type(); _argTypes.push_back(type); _env.add(((ExprVarNode*)child)->name(), new ExprLocalVar(type)); } #endif } ExprType ExprLocalFunctionNode::prep(bool, ExprVarEnvBuilder &) { bool error = false; #if 0 // TODO: no local functions for now // prep prototype and check for errors ExprPrototypeNode* prototype = (ExprPrototypeNode*)child(0); ExprVarEnv functionEnv; functionEnv.resetAndSetParent(&env); if (!prototype->prep(false, functionEnv).isValid()) error = true; // decide what return type we want bool returnWantsScalar = false; if (!error && prototype->isReturnTypeSet()) returnWantsScalar = prototype->returnType().isFP(1); // prep block and check for errors ExprNode* block = child(1); ExprType blockType = block->prep(returnWantsScalar, functionEnv); if (!error && blockType.isValid()) { if (prototype->isReturnTypeSet()) { if (blockType != prototype->returnType()) { checkCondition(false, "In function result of block '" + blockType.toString() + "' does not match given return type " + prototype->returnType().toString(), error); } } else prototype->setReturnType(blockType); // register the function in the symbol table env.addFunction(prototype->name(), this); } else { checkCondition(false, "Invalid type for blockType is " + blockType.toString(), error); error = true; } #else checkCondition(false, ErrorCode::Unknown, {"Local functions are currently not supported."}, error); #endif if (error) setType(ExprType().Error()); else setType(ExprType().None().Varying()); return _type; } // TODO: write buildInterpreter for local function node ExprType ExprLocalFunctionNode::prep(ExprFuncNode *callerNode, bool, ExprVarEnvBuilder &) const { #if 0 bool error = false; callerNode->checkCondition(callerNode->numChildren() == prototype()->numChildren(), "Incorrect number of arguments to function call", error); for (int i = 0; i < callerNode->numChildren(); i++) { // TODO: is this right? // bool compatible=ExprType::valuesCompatible(callerNode->child(i)->prep(false,env), prototype()->argType(i)); if (!callerNode->checkArg(i, prototype()->argType(i), envBuilder)) error = true; // callerNode->child(i)->checkCondition(compatible,"Incorrect type for argument",error); } return error ? ExprType().Error() : prototype()->returnType(); #else bool error = false; callerNode->checkCondition(false, ErrorCode::Unknown, {"Local functions are currently not supported."}, error); return ExprType().Error(); #endif } ExprType ExprBlockNode::prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) { ExprType assignType = child(0)->prep(false, envBuilder); ExprType resultType = child(1)->prep(wantScalar, envBuilder); if (!assignType.isValid()) setType(ExprType().Error()); else setType(resultType); return _type; } ExprType ExprIfThenElseNode::prep(bool, ExprVarEnvBuilder &envBuilder) { ExprType condType; ExprType thenType; ExprType elseType; bool error = false; condType = child(0)->prep(true, envBuilder); checkIsFP(condType, error); ExprVarEnv *parentEnv = envBuilder.current(); ExprVarEnv *thenEnv = envBuilder.createDescendant(parentEnv); ExprVarEnv *elseEnv = envBuilder.createDescendant(parentEnv); envBuilder.setCurrent(thenEnv); thenType = child(1)->prep(false, envBuilder); thenEnv = envBuilder.current(); envBuilder.setCurrent(elseEnv); elseType = child(2)->prep(false, envBuilder); elseEnv = envBuilder.current(); if (!error && thenType.isValid() && elseType.isValid()) { ExprVarEnv *newEnv = envBuilder.createDescendant(parentEnv); _varEnvMergeIndex = newEnv->mergeBranches(condType, *thenEnv, *elseEnv); envBuilder.setCurrent(newEnv); // TODO: aselle insert the phi nodes! } else { envBuilder.setCurrent(parentEnv); // since the conditionals broke don't include them in new environment error = true; } _varEnv = envBuilder.current(); if (error) setType(ExprType().Error()); else setType(ExprType().None().setLifetime(condType, thenType, elseType)); return _type; } ExprType ExprAssignNode::prep(bool, ExprVarEnvBuilder &envBuilder) { _assignedType = child(0)->prep(false, envBuilder); std::unique_ptr localVar(new ExprLocalVar(child(0)->type())); _localVar = localVar.get(); envBuilder.current()->add(_name, std::move(localVar)); bool error = false; checkCondition(_assignedType.isValid(), ErrorCode::BadAssignmentOperator, {_type.toString()}, error); if (error) setType(ExprType().Error()); else setTypeWithChildLife(ExprType().None()); return _type; } ExprType ExprVecNode::prep(bool, ExprVarEnvBuilder &envBuilder) { bool error = false; int max_child_d = 0; for (int c = 0; c < numChildren(); c++) { ExprType childType = child(c)->prep(true, envBuilder); // TODO: add way to tell what element of vector has the type mismatch checkIsFP(childType, error); max_child_d = std::max(max_child_d, childType.dim()); } if (error) setType(ExprType().Error()); else setTypeWithChildLife(ExprType().FP(numChildren())); return _type; } Vec3d ExprVecNode::value() const { if (const auto *f = dynamic_cast(child(0))) { double first = f->value(); if (const auto *s = dynamic_cast(child(1))) { double second = s->value(); if (const auto *t = dynamic_cast(child(2))) { double third = t->value(); return {first, second, third}; }; }; }; return {0.0}; } ExprType ExprUnaryOpNode::prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) { bool error = false; // TODO: aselle may want to implicitly demote to FP[1] if wantScalar is true! ExprType childType = child(0)->prep(wantScalar, envBuilder); checkIsFP(childType, error); if (error) setType(ExprType().Error()); else setType(childType); return _type; } ExprType ExprCondNode::prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) { // TODO: determine if extra environments are necessary, currently not included ExprType condType; ExprType thenType; ExprType elseType; bool error = false; condType = child(0)->prep(true, envBuilder); checkIsFP(condType, error); thenType = child(1)->prep(wantScalar, envBuilder); elseType = child(2)->prep(wantScalar, envBuilder); checkIsValue(thenType, error); checkIsValue(elseType, error); checkCondition(ExprType::valuesCompatible(thenType, elseType), ErrorCode::ConditionalTypesNotCompatible, {}, error); if (error) setType(ExprType().Error()); else { if (thenType.isString()) setType(thenType); else setType(thenType.isFP(1) ? elseType : thenType); _type.setLifetime(condType, thenType, elseType); } return _type; } ExprType ExprSubscriptNode::prep(bool, ExprVarEnvBuilder &envBuilder) { // TODO: double-check order of evaluation - order MAY effect environment evaluation (probably not, though) ExprType vecType; ExprType scriptType; bool error = false; vecType = child(0)->prep(false, envBuilder); // want scalar is false because we aren't just doing foo[0] checkIsFP(vecType, error); scriptType = child(1)->prep(true, envBuilder); checkIsFP(scriptType, error); if (error) setType(ExprType().Error()); else setType(ExprType().FP(1).setLifetime(vecType, scriptType)); return _type; } ExprType ExprCompareEqNode::prep(bool, ExprVarEnvBuilder &envBuilder) { // TODO: double-check order of evaluation - order MAY effect environment evaluation (probably not, though) ExprType firstType; ExprType secondType; bool error = false; firstType = child(0)->prep(false, envBuilder); checkIsValue(firstType, error); secondType = child(1)->prep(false, envBuilder); checkIsValue(secondType, error); if (firstType.isValid() && secondType.isValid()) checkTypesCompatible(firstType, secondType, error); if (error) setType(ExprType().Error()); else setType(ExprType().FP(1).setLifetime(firstType, secondType)); return _type; } ExprType ExprCompareNode::prep(bool, ExprVarEnvBuilder &envBuilder) { // TODO: assume we want scalar // TODO: double-check order of evaluation - order MAY effect environment evaluation (probably not, though) ExprType firstType; ExprType secondType; bool error = false; firstType = child(0)->prep(true, envBuilder); checkIsFP(firstType, error); secondType = child(1)->prep(true, envBuilder); checkIsFP(secondType, error); if (firstType.isValid() && secondType.isValid()) checkTypesCompatible(firstType, secondType, error); if (error) setType(ExprType().Error()); else setType(ExprType().FP(1).setLifetime(firstType, secondType)); return _type; } ExprType ExprBinaryOpNode::prep(bool, ExprVarEnvBuilder &envBuilder) { // TODO: aselle this probably should set the type to be FP1 if wantScalar is true! // TODO: double-check order of evaluation - order MAY effect environment evaluation (probably not, though) ExprType firstType; ExprType secondType; bool error = false; // prep children and get their types firstType = child(0)->prep(false, envBuilder); secondType = child(1)->prep(false, envBuilder); // check compatibility and get return type // TODO: handle string + fp or fp + string, the same as in Python or equivalent checkTypesCompatible(firstType, secondType, error); if (error) setType(ExprType().Error()); else setType((firstType.isFP(1) ? secondType : firstType).setLifetime(firstType, secondType)); return _type; } ExprType ExprVarNode::prep(bool, ExprVarEnvBuilder &envBuilder) { // ask expression to resolve var bool error = false; if ((_localVar = envBuilder.current()->find(name()))) { if (_localVar->type().isError()) { /// Some friendlier error suggestions if (auto *phi = dynamic_cast(_localVar)) { if (!phi->_thenVar->type().isError() && !phi->_elseVar->type().isError()) { addError(ErrorCode::InconsistentDefinition, {name()}); } } } setType(_localVar->type()); return _type; } else { // user defined external variable _var = _expr->resolveVar(name()); if (!_var) { if (const VarBlockCreator *creator = _expr->varBlockCreator()) { // data block defined external var _var = creator->resolveVar(name()); } } if (_var) { _expr->addVar(name()); // register used variable so _expr->usedVar() works setType(_var->type()); return _type; } } // If we get here we do not have a variable! checkCondition(_var || _localVar, ErrorCode::UndeclaredVariable, {name()}, error); setType(ExprType().Error()); return _type; } ExprType ExprNumNode::prep(bool, ExprVarEnvBuilder &) { _type = ExprType().FP(1).Constant(); return _type; } ExprStrNode::ExprStrNode(const Expression *expr, const char *str) : ExprNode(expr) , _str(unescapeString(str)) { } ExprType ExprStrNode::prep(bool, ExprVarEnvBuilder &) { _type = ExprType().String().Constant(); return _type; } ExprType ExprFuncNode::prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) { bool error = false; int nargs = numChildren(); _promote.resize(nargs, 0); // find function using per-expression callback and then global table // TODO: put lookup of local functions here _func = nullptr; if (ExprLocalFunctionNode *localFunction = envBuilder.current()->findFunction(_name)) { _localFunc = localFunction; setTypeWithChildLife(localFunction->prep(this, wantScalar, envBuilder)); // TODO: we need to type check arguments here } else { if (!_func) _func = _expr->resolveFunc(_name); if (!_func) _func = ExprFunc::lookup(_name); // check that function exists and that the function has the right number of arguments if (checkCondition(_func, ErrorCode::UndeclaredFunction, {_name}, error) && checkCondition(nargs >= _func->minArgs(), ErrorCode::FunctionTooFewArguments, {_name}, error) && checkCondition(nargs <= _func->maxArgs() || _func->maxArgs() < 0, ErrorCode::FunctionTooManyArguments, {_name}, error)) { const ExprFuncX *funcx = _func->funcx(); ExprType type = funcx->prep(this, wantScalar, envBuilder); setTypeWithChildLife(type); } else { // didn't match num args or function not found ExprNode::prep(false, envBuilder); // prep arguments anyways to catch as many errors as possible! setTypeWithChildLife(ExprType().Error()); } } return _type; } int ExprFuncNode::buildInterpreter(Interpreter *interpreter) const { if (_localFunc) return _localFunc->buildInterpreterForCall(this, interpreter); else if (_func) return _func->funcx()->buildInterpreter(this, interpreter); assert(false); return 0; } bool ExprFuncNode::checkArg(int arg, const ExprType &type, ExprVarEnvBuilder &envBuilder) { ExprType childType = child(arg)->prep(type.isFP(1), envBuilder); _promote[arg] = 0; if (ExprType::valuesCompatible(type, childType) && type.isLifeCompatible(childType)) { if (type.isFP() && type.dim() > childType.dim()) { _promote[arg] = type.dim(); } return true; } child(arg)->addError(ErrorCode::ArgumentTypeMismatch, {type.toString(), childType.toString()}); return false; } } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/ExprNode.h0000644000000000000240000005507414156102631017361 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include #include #include "ExprConfig.h" #include "ExprEnv.h" #include "ExprLLVM.h" #include "ExprType.h" #include "Expression.h" #include "Interpreter.h" #include "Vec.h" namespace KSeExpr { class ExprFunc; class ExprFuncX; /** Expression node base class. Always constructed by parser in ExprParser.y Parse tree nodes - this is where the expression evaluation happens. Some implementation notes: 1) Vector vs scalar - Any node can accept vector or scalar inputs and return a vector or scalar result. If a node returns a scalar, it is only required to set the [0] component and the other components must be assumed to be invalid. 2) ExprNode::prep - This is called for all nodes during parsing once the syntax has been checked. Anything can be done here, such as function binding, variable lookups, etc., but the only thing that must be done is to determine whether the result is going to be vector or scalar. This can in some cases depend on whether the children are vector or scalar so the parser calls prep on the root node and each node is expected to call prep on its children and then set its own _isVec variable. The wantVec param provides context from the parent (and ultimately the owning expression) as to whether a vector is desired, but nodes are not bound by this and may produce a scalar even when a vector is wanted. The base class method implements the default behavior which is to pass down the wantVec flag to all children and set isVec to true if any child is a vec. If the prep method fails, an error string should be set and false should be returned. */ class ExprNode { public: ExprNode(const Expression *expr); ExprNode(const Expression *expr, const ExprType &type); /// @{ @name These constructors supply one or more children. ExprNode(const Expression *expr, ExprNode *a); ExprNode(const Expression *expr, ExprNode *a, const ExprType &type); ExprNode(const Expression *expr, ExprNode *a, ExprNode *b); ExprNode(const Expression *expr, ExprNode *a, ExprNode *b, const ExprType &type); ExprNode(const Expression *expr, ExprNode *a, ExprNode *b, ExprNode *c); ExprNode(const Expression *expr, ExprNode *a, ExprNode *b, ExprNode *c, const ExprType &type); /// @} virtual ~ExprNode(); /// @{ @name Interface to implement for subclasses /// Prepare the node (for parser use only). See the discussion at /// the start of SeExprNode.cpp for more info. virtual ExprType prep(bool dontNeedScalar, ExprVarEnvBuilder &envBuilder); /// builds an interpreter. Returns the location index for the evaluated data virtual int buildInterpreter(Interpreter *interpreter) const; /// @} virtual LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BASE; /// True if node has a vector result. bool isVec() const { return _isVec; } /// Access expression const Expression *expr() const { return _expr; } /// Access to original string representation of current expression std::string toString() const { return expr()->getExpr().substr(startPos(), length()); }; /// @{ @name Relationship Queries and Manipulation /// Access parent node - root node has no parent const ExprNode *parent() const { return _parent; } /// Number of children int numChildren() const { return static_cast(_children.size()); } /// Get 0 indexed child const ExprNode *child(size_t i) const { return _children[i]; } /// Get 0 indexed child ExprNode *child(size_t i) { return _children[i]; } /// Swap children, do not use unless you know what you are doing void swapChildren(size_t i, size_t j) { assert(i != j && i < _children.size() && j < _children.size()); std::swap(_children[i], _children[j]); } /// Remove last child and delete the entry void removeLastChild() { if (!_children.empty()) { delete _children.back(); _children.pop_back(); } } /// Add a child to the child list (for parser use only) void addChild(ExprNode *child); /// Transfer children from surrogate parent (for parser use only) void addChildren(ExprNode *surrogate); /// @} /// The type of the node const ExprType &type() const { return _type; }; /// @{ @name Access position in the input buffer that created this node /// Remember the line and column position in the input string inline void setPosition(const short int startPos, const short int endPos) { _startPos = startPos; _endPos = endPos; } /// Access start position in input string inline unsigned short int startPos() const { return _startPos; } /// Access end position in input string inline unsigned short int endPos() const { return _endPos; } /// Access length of input string inline unsigned short int length() const { return endPos() - startPos(); }; /// @} /// Register error. This will allow users and sophisticated editors to highlight where in code problem was inline void addError(const ErrorCode error, const std::vector& ids = {}) const { _expr->addError(error, ids, _startPos, _endPos); } protected: /*protected functions*/ //! Set type of parameter inline void setType(const ExprType &t) { _type = t; }; //! Set's the type to the argument but uses the children to determine lifetime inline void setTypeWithChildLife(const ExprType &t) { setType(t); int num = numChildren(); if (num > 0) { _type.setLifetime(child(0)->type()); for (int i = 1; i < num; i++) _type.setLifetime(_type, child(i)->type()); } else // no children life is constant! _type.Constant(); }; /// @{ @name Error Checking Helpers for Type Checking public: /// Checks the boolean value and records an error string with node if it is false inline bool checkCondition(bool check, const ErrorCode message, const std::vector& ids, bool &error) const { if (!check) { addError(message, ids); error = true; } return check; }; /// Checks if the type is a value (i.e. string or float[d]) bool checkIsValue(const ExprType &type, bool &error) const { return checkCondition(type.isValue(), ErrorCode::ExpectedStringOrFloatAnyD, {}, error); } /// Checks if the type is a float[d] for any d bool checkIsFP(const ExprType &type, bool &error) const { return checkCondition(type.isFP(), ErrorCode::ExpectedFloatAnyD, {}, error); } /// Checks if the type is a float[d] for a specific d bool checkIsFP(int d, const ExprType &type, bool &error) const { return checkCondition(type.isFP(d), ErrorCode::ExpectedFloatD, {std::to_string(d)}, error); } /// types match (true if they do) inline bool checkTypesCompatible(const ExprType &first, const ExprType &second, bool &error) const { return checkCondition(ExprType::valuesCompatible(first, second), ErrorCode::TypeMismatch12, {first.toString(), second.toString()}, error); } /// @} protected: /*protected data members*/ /// Owning expression (node can't modify) const Expression *_expr{nullptr}; /// Parent node (null if this the the root) ExprNode *_parent{nullptr}; /// List of children std::vector _children; /// True if node has a vector result bool _isVec; // Type of node ExprType _type; int _maxChildDim{}; /// Position line and collumn unsigned short int _startPos{}, _endPos{}; }; /// Node that contains entire program class ExprModuleNode : public ExprNode { public: ExprModuleNode(const Expression *expr) : ExprNode(expr) { } ExprType prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) override; int buildInterpreter(Interpreter *interpreter) const override; LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BODY; }; /// Node that contains prototype of function class ExprPrototypeNode : public ExprNode { public: ExprPrototypeNode(const Expression *expr, const std::string &name, const ExprType &retType) : ExprNode(expr) , _name(name) , _retTypeSet(true) , _retType(retType) , _argTypes() { } ExprPrototypeNode(const Expression *expr, const std::string &name) : ExprNode(expr) , _name(name) , _retTypeSet(false) , _argTypes() { } ExprType prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) override; void addArgTypes(ExprNode *surrogate); void addArgs(ExprNode *surrogate); inline void setReturnType(const ExprType &type) { _retType = type; _retTypeSet = true; }; inline bool isReturnTypeSet() const { return _retTypeSet; }; inline ExprType returnType() const { return (_retTypeSet ? _retType : ExprType().Error().Varying()); }; inline ExprType argType(int i) const { return _argTypes[i]; }; inline const ExprNode *arg(int i) const { return child(i); }; const std::string &name() const { return _name; } /// Build the interpreter int buildInterpreter(Interpreter *interpreter) const override; LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BODY; /// Return op for interpreter int interpreterOps(int c) const { return _interpreterOps.at(c); } private: std::string _name; bool _retTypeSet; ExprType _retType; std::vector _argTypes; mutable std::vector _interpreterOps; // operands for interpreter // TODO: this sucks... maybe a better place // for this. }; class ExprFuncNode; /// Node that contains local function class ExprLocalFunctionNode : public ExprNode { public: ExprLocalFunctionNode(const Expression *expr, ExprPrototypeNode *prototype, ExprNode *block) : ExprNode(expr, prototype, block) { } /// Preps the definition of this site ExprType prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) override; /// Preps a caller (i.e. we use callerNode to check arguments) virtual ExprType prep(ExprFuncNode *callerNode, bool scalarWanted, ExprVarEnvBuilder &envBuilder) const; /// TODO: Accessor for prototype (probably not needed when we use prep right) const ExprPrototypeNode *prototype() const { return dynamic_cast(child(0)); } /// Build the interpreter int buildInterpreter(Interpreter *interpreter) const override; /// Build interpreter if we are called int buildInterpreterForCall(const ExprFuncNode *callerNode, Interpreter *interpreter) const; LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BODY; private: mutable int _procedurePC{}; mutable int _returnedDataOp{}; }; /// Node that computes local variables before evaluating expression class ExprBlockNode : public ExprNode { public: ExprBlockNode(const Expression *expr, ExprNode *a, ExprNode *b) : ExprNode(expr, a, b) { } ExprType prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) override; int buildInterpreter(Interpreter *interpreter) const override; LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BODY; }; /// Node that computes local variables before evaluating expression class ExprIfThenElseNode : public ExprNode { public: ExprIfThenElseNode(const Expression *expr, ExprNode *a, ExprNode *b, ExprNode *c) : ExprNode(expr, a, b, c) , _varEnv(nullptr) , _varEnvMergeIndex(0) { } ExprType prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) override; int buildInterpreter(Interpreter *interpreter) const override; LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BODY; ExprVarEnv *_varEnv; size_t _varEnvMergeIndex; }; /// Node that compute a local variable assignment class ExprAssignNode : public ExprNode { public: ExprAssignNode(const Expression *expr, const char *name, ExprNode *e) : ExprNode(expr, e) , _name(name) { } ExprType prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) override; int buildInterpreter(Interpreter *interpreter) const override; // virtual void eval(Vec3d& result) const; LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BODY; const std::string &name() const { return _name; }; const ExprType &assignedType() const { return _assignedType; }; const ExprLocalVar *localVar() const { return _localVar; } private: std::string _name; ExprLocalVar *_localVar{nullptr}; ExprType _assignedType; }; // TODO three scalars? Or 2 to 16 scalars?? /// Node that constructs a vector from three scalars class ExprVecNode : public ExprNode { public: ExprVecNode(const Expression *expr) : ExprNode(expr) { } ExprType prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) override; int buildInterpreter(Interpreter *interpreter) const override; LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BODY; Vec3d value() const; }; /// NOde that computes with a single operand class ExprUnaryOpNode : public ExprNode { public: //! Construct with specific op ('!x' is logical negation, '~x' is 1-x, '-x' is -x) ExprUnaryOpNode(const Expression *expr, ExprNode *a, char op) : ExprNode(expr, a) , _op(op) { } ExprType prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) override; int buildInterpreter(Interpreter *interpreter) const override; LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BODY; char _op; }; /// Node that evaluates a conditional (if-then-else) expression class ExprCondNode : public ExprNode { public: ExprCondNode(const Expression *expr, ExprNode *a, ExprNode *b, ExprNode *c) : ExprNode(expr, a, b, c) { } ExprType prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) override; int buildInterpreter(Interpreter *interpreter) const override; LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BODY; }; /// Node that evaluates a component of a vector class ExprSubscriptNode : public ExprNode { public: ExprSubscriptNode(const Expression *expr, ExprNode *a, ExprNode *b) : ExprNode(expr, a, b) { } ExprType prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) override; int buildInterpreter(Interpreter *interpreter) const override; LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BODY; }; /// Node that implements a numeric/string comparison class ExprCompareEqNode : public ExprNode { public: ExprCompareEqNode(const Expression *expr, ExprNode *a, ExprNode *b, char op) : ExprNode(expr, a, b) , _op(op) { } ExprType prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) override; int buildInterpreter(Interpreter *interpreter) const override; LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BODY; char _op; }; /// Node that implements a numeric comparison class ExprCompareNode : public ExprNode { public: ExprCompareNode(const Expression *expr, ExprNode *a, ExprNode *b, char op) : ExprNode(expr, a, b) , _op(op) { } ExprType prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) override; int buildInterpreter(Interpreter *interpreter) const override; LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BODY; //! _op '<' less-than, 'l' less-than-eq, '>' greater-than, 'g' greater-than-eq char _op; }; /// Node that implements an binary operator class ExprBinaryOpNode : public ExprNode { public: ExprBinaryOpNode(const Expression *expr, ExprNode *a, ExprNode *b, char op) : ExprNode(expr, a, b) , _op(op) { } ExprBinaryOpNode(const ExprBinaryOpNode &) = default; ExprBinaryOpNode& operator=(const ExprBinaryOpNode &) = default; ExprBinaryOpNode(ExprBinaryOpNode &&) = default; ExprBinaryOpNode &operator=(ExprBinaryOpNode &&) = default; ~ExprBinaryOpNode() override { delete _out; } ExprType prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) override; int buildInterpreter(Interpreter *interpreter) const override; LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BODY; char _op; char *_out{nullptr}; }; /// Node that references a variable class ExprVarNode : public ExprNode { public: ExprVarNode(const Expression *expr, const char *name) : ExprNode(expr) , _name(name) { } ExprVarNode(const Expression *expr, const char *name, const ExprType &type) : ExprNode(expr, type) , _name(name) { } ExprType prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) override; int buildInterpreter(Interpreter *interpreter) const override; LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BODY; const char *name() const { return _name.c_str(); } const ExprLocalVar *localVar() const { return _localVar; } const ExprVarRef *var() const { return _var; } private: std::string _name; ExprLocalVar *_localVar{nullptr}; ExprVarRef *_var{nullptr}; }; /// Node that stores a numeric constant class ExprNumNode : public ExprNode { public: ExprNumNode(const Expression *expr, double val) : ExprNode(expr) , _val(val) { } ExprType prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) override; int buildInterpreter(Interpreter *interpreter) const override; LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BODY; double value() const { return _val; }; private: double _val; }; /// Node that stores a string class ExprStrNode : public ExprNode { public: ExprStrNode(const Expression *expr, const char *str); ExprType prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) override; int buildInterpreter(Interpreter *interpreter) const override; LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BODY; const char *str() const { return _str.c_str(); } void str(const char *newstr) { _str = newstr; } private: std::string _str; }; /// Node that calls a function class ExprFuncNode : public ExprNode { public: ExprFuncNode(const Expression *expr, const char *name) : ExprNode(expr) , _name(name) { expr->addFunc(name); } ExprFuncNode(const ExprFuncNode &) = default; ExprFuncNode& operator=(const ExprFuncNode &) = default; ExprFuncNode(ExprFuncNode &&) = default; ExprFuncNode& operator=(ExprFuncNode &&) = default; ~ExprFuncNode() override { if (_data != nullptr && _data->_cleanup == true) { delete _data; } } ExprType prep(bool wantScalar, ExprVarEnvBuilder &envBuilder) override; int buildInterpreter(Interpreter *interpreter) const override; LLVM_VALUE codegen(LLVM_BUILDER) LLVM_BODY; const char *name() const { return _name.c_str(); } bool checkArg(int argIndex, const ExprType &type, ExprVarEnvBuilder &envBuilder); #if 0 virtual void eval(Vec3d& result) const; void setIsVec(bool isVec) { _isVec = isVec; } //! return the number of arguments int nargs() const { return _nargs; } #if 0 double* scalarArgs() const { return &_scalarArgs[0]; } Vec3d* vecArgs() const { return &_vecArgs[0]; } //! eval all arguments (use in eval()) Vec3d* evalArgs() const; //! eval an argument (use in eval()) Vec3d evalArg(int n) const; //! returns whether the nth argument is a string (use in prep) bool isStrArg(int n) const; //! get nth string argument (use in prep) std::string getStrArg(int n) const; #endif #endif // TODO: Remove those two methods. bool isStrArg(int n) const { return n < numChildren() && dynamic_cast(child(n)) != nullptr; } std::string getStrArg(int n) const { if (n < numChildren()) return static_cast(child(n))->str(); return ""; } //! base class for custom instance data struct Data { Data(bool cleanup = false) : _cleanup(cleanup) { } Data(const Data &) = default; Data &operator=(const Data &) = default; Data(Data &&) = default; Data &operator=(Data &&) = default; virtual ~Data() = default; bool _cleanup; }; //! associate blind data with this node (subsequently owned by this object) /*** Use this to set data associated with the node. Equivalently this is data associated with a specific evaluation point of a function. Examples would be tokenized values, sorted lists for binary searches in curve evaluation, etc. This should be done in ExprFuncX::prep(). */ void setData(Data *data) const { _data = data; } //! get associated blind data (returns 0 if none) /*** Use this to get data associated in the prep() routine. This is typically used from ExprFuncX::eval() */ Data *getData() const { return _data; } int promote(int i) const { return _promote[i]; } const ExprFunc *func() const { return _func; } private: std::string _name; const ExprFunc *_func {nullptr}; const ExprLocalFunctionNode *_localFunc {nullptr}; // TODO: it is dirty to have to have both. // int _nargs; // mutable std::vector _scalarArgs; // mutable std::vector _vecArgs; mutable std::vector _promote; mutable Data *_data {nullptr}; }; /// Policy which provides all the AST Types for the parser. class ExprNodePolicy { using Base = ExprNode; using Ptr = std::unique_ptr; using Module = ExprModuleNode; using Prototype = ExprPrototypeNode; using LocalFunction = ExprLocalFunctionNode; using Block = ExprBlockNode; using IfThenElse = ExprIfThenElseNode; using Assign = ExprAssignNode; using Vec = ExprVecNode; using UnaryOp = ExprUnaryOpNode; using Cond = ExprCondNode; using CompareEq = ExprCompareEqNode; using Compare = ExprCompareNode; using BinaryOp = ExprBinaryOpNode; using Var = ExprVarNode; using Num = ExprNumNode; using Str = ExprStrNode; using Func = ExprFuncNode; }; } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/ExprParser.h0000644000000000000240000000143114156102631017714 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #ifndef ExprParser_h #define ExprParser_h #ifndef MAKEDEPEND #include #endif #include "Expression.h" #include "ErrorCode.h" #include "ExprNode.h" namespace KSeExpr { bool ExprParse(KSeExpr::ExprNode*& parseTree, KSeExpr::ErrorCode& errorCode, std::vector& errorIds, int& errorStart, int& errorEnd, std::vector >& _comments, const KSeExpr::Expression* expr, const char* str, bool wantVec = true); } #endif kseexpr-4.0.4.0/src/KSeExpr/ExprParser.y0000644000000000000240000005210314156102631017737 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later %{ #ifndef MAKEDEPEND #include #include #include #include #include #endif #include "ExprType.h" #include "ExprNode.h" #include "ExprParser.h" #include "Expression.h" #include /****************** lexer declarations ******************/ // declarations of functions and data in ExprParser.l int yylex(); int yypos(); extern int yy_start; extern char* yytext; struct yy_buffer_state; yy_buffer_state* yy_scan_string(const char *str); void yy_delete_buffer(yy_buffer_state*); /******************* parser declarations *******************/ // forward declaration static void yyerror(const char* msg); // local data static const char* ParseStr; // string being parsed static KSeExpr::ErrorCode ParseErrorCode; // error (set from yyerror) static std::string ParseErrorId; // string that failed parsing (set from yyerror) static KSeExpr::ExprNode* ParseResult; // must set result here since yyparse can't return it static const KSeExpr::Expression* Expr;// used for parenting created SeExprOp's /* The list of nodes being built is remembered locally here. Eventually (if there are no syntax errors) ownership of the nodes will belong solely to the parse tree and the parent expression. However, if there is a syntax error, we must loop through this list and free any nodes that were allocated before the error to avoid a memory leak. */ static std::vector ParseNodes; inline KSeExpr::ExprNode* Remember(KSeExpr::ExprNode* n,const int startPos,const int endPos) { ParseNodes.push_back(n); n->setPosition(startPos,endPos); return n; } inline void Forget(KSeExpr::ExprNode* n) { ParseNodes.erase(std::find(ParseNodes.begin(), ParseNodes.end(), n)); } /* These are handy node constructors for 0-3 arguments */ #define NODE(startPos,endPos,name) Remember(new KSeExpr::Expr##name(Expr),startPos,endPos) #define NODE1(startPos,endPos,name,a) Remember(new KSeExpr::Expr##name(Expr,a),startPos,endPos) #define NODE2(startPos,endPos,name,a,b) Remember(new KSeExpr::Expr##name(Expr,a,b),startPos,endPos) #define NODE3(startPos,endPos,name,a,b,c) Remember(new KSeExpr::Expr##name(Expr,a,b,c),startPos,endPos) #define NODE4(startPos,endPos,name,a,b,c,t) Remember(new KSeExpr::Expr##name(Expr,a,b,c,t),startPos,endPos) %} %union { KSeExpr::ExprNode* n; /* a node is returned for all non-terminals to build the parse tree from the leaves up. */ double d; // return value for number tokens char* s; /* return value for name tokens. Note: the string is allocated with strdup() in the lexer and must be freed with free() */ struct { KSeExpr::ExprType::Type type; int dim; KSeExpr::ExprType::Lifetime lifetime; } t; // return value for types KSeExpr::ExprType::Lifetime l; // return value for lifetime qualifiers } %token IF ELSE EXTERN DEF FLOATPOINT STRING %token NAME VAR STR %token NUMBER %token LIFETIME_CONSTANT LIFETIME_UNIFORM LIFETIME_VARYING LIFETIME_ERROR %token AddEq SubEq MultEq DivEq ExpEq ModEq %token '(' ')' %left ARROW %nonassoc ':' %nonassoc '?' %left OR %left AND %left EQ NE %left '<' '>' SEEXPR_LE SEEXPR_GE %left '+' '-' %left '*' '/' '%' %right UNARY '!' '~' %right '^' %left '[' %type typeDeclare %type lifetimeOptional %type module declarationList declaration typeListOptional typeList formalTypeListOptional formalTypeList %type block optassigns assigns assign ifthenelse optelse e optargs args arg exprlist /* Some notes about the parse tree construction: Each rule first parses its children and then returns a new node that implements the particular rule (an arithmetic op, a function call, or whatever). Sometimes the child node is just passed up (in the case of a parenthesized expression or a unary '+' for instance). But in all cases, a rule returns a parse node which represents a complete sub-tree. Finally, the "expr" rule returns the root node which represents the completed parse tree. */ %% // TODO: Change grammar to have option to choose to allow variables of the form // $foo or foo. Currently we allow either. /* The root expression rule */ module: declarationList block { ParseResult = $1; ParseResult->setPosition(@$.first_column, @$.last_column); ParseResult->addChild($2); } | block { ParseResult = NODE(@$.first_column, @$.last_column, ModuleNode); ParseResult->addChild($1); } ; declarationList: declaration { $$ = NODE(@$.first_column, @$.last_column, ModuleNode); $$->addChild($1); } | declarationList declaration { $$ = $1; $$->setPosition(@$.first_column, @$.last_column); $$->addChild($2); } ; declaration: EXTERN typeDeclare NAME '(' typeListOptional ')' { KSeExpr::ExprType type = KSeExpr::ExprType($2.type, $2.dim, $2.lifetime); KSeExpr::ExprPrototypeNode * prototype = (KSeExpr::ExprPrototypeNode*)NODE2(@$.first_column, @$.last_column, PrototypeNode, $3, type); prototype->addArgTypes($5); Forget($5); $$ = prototype; free($3); } | DEF typeDeclare NAME '(' formalTypeListOptional ')' '{' block '}' { KSeExpr::ExprType type = KSeExpr::ExprType($2.type, $2.dim, $2.lifetime); KSeExpr::ExprPrototypeNode * prototype = (KSeExpr::ExprPrototypeNode*)NODE2(@$.first_column, @6.last_column, PrototypeNode, $3, type); prototype->addArgs($5); Forget($5); $$ = NODE2(@$.first_column, @$.last_column, LocalFunctionNode, prototype, $8); free($3); } | DEF NAME '(' formalTypeListOptional ')' '{' block '}' { KSeExpr::ExprPrototypeNode * prototype = (KSeExpr::ExprPrototypeNode*)NODE1(@$.first_column, @5.last_column, PrototypeNode, $2); prototype->addArgs($4); Forget($4); $$ = NODE2(@$.first_column, @$.last_column, LocalFunctionNode, prototype, $7); free($2); } ; lifetimeOptional: /* empty */ { $$ = KSeExpr::ExprType::ltVARYING; } | LIFETIME_CONSTANT { $$ = KSeExpr::ExprType::ltCONSTANT; } | LIFETIME_UNIFORM { $$ = KSeExpr::ExprType::ltUNIFORM; } | LIFETIME_VARYING { $$ = KSeExpr::ExprType::ltVARYING; } | LIFETIME_ERROR { $$ = KSeExpr::ExprType::ltERROR; } //For testing purposes only ; typeDeclare: FLOATPOINT lifetimeOptional{$$.type = KSeExpr::ExprType::tFP; $$.dim = 1; $$.lifetime = $2; } | FLOATPOINT '[' NUMBER ']' lifetimeOptional { $$.type = ($3 > 0 ? KSeExpr::ExprType::tFP : KSeExpr::ExprType::tERROR); //TODO: This causes an error but does not report it to user. Change this. $$.dim = ($3 > 0 ? $3 : 0); $$.lifetime = $5; } | STRING lifetimeOptional { $$.type = KSeExpr::ExprType::tSTRING; $$.dim = 1; $$.lifetime = $2; } ; typeListOptional: /* empty */ { $$ = NODE(@$.first_column, @$.last_column, Node); } | typeList { $$ = $1; } ; typeList: typeDeclare { $$ = NODE(@$.first_column, @$.last_column, Node); KSeExpr::ExprType type = KSeExpr::ExprType($1.type, $1.dim, $1.lifetime); KSeExpr::ExprNode* varNode = NODE2(@$.first_column, @$.last_column, VarNode, "", type); $$->addChild(varNode); } | typeList ',' typeDeclare { $$ = $1; KSeExpr::ExprType type = KSeExpr::ExprType($3.type, $3.dim, $3.lifetime); KSeExpr::ExprNode* varNode = NODE2(@3.first_column, @3.last_column, VarNode, "", type); $$->addChild(varNode); } ; formalTypeListOptional: /* empty */ { $$ = NODE(@$.first_column, @$.last_column, Node); } | formalTypeList { $$ = $1; } ; formalTypeList: typeDeclare NAME { $$ = NODE(@$.first_column, @$.last_column, Node); KSeExpr::ExprType type = KSeExpr::ExprType($1.type, $1.dim, $1.lifetime); KSeExpr::ExprNode* varNode = NODE2(@$.first_column, @$.last_column, VarNode, $2, type); $$->addChild(varNode); free($2); } | formalTypeList ',' typeDeclare NAME { $$ = $1; KSeExpr::ExprType type = KSeExpr::ExprType($3.type, $3.dim, $3.lifetime); KSeExpr::ExprNode* varNode = NODE2(@3.first_column, @4.last_column, VarNode, $4, type); $$->addChild(varNode); free($4); } ; block: assigns e { $$ = NODE2(@$.first_column,@$.last_column,BlockNode, $1, $2); } | e { $$ = $1; } ; /* local variable assignments */ optassigns: /* empty */ { $$ = NODE(@$.first_column,@$.last_column,Node); /* create empty node */; } | assigns { $$ = $1; } ; assigns: assign { $$ = NODE1(@$.first_column,@$.last_column,Node, $1); /* create var list */} | assigns assign { $$ = $1; $1->addChild($2); /* add to list */} ; assign: ifthenelse { $$ = $1; } | VAR '=' e ';' { $$ = NODE2(@$.first_column,@$.last_column,AssignNode, $1, $3); free($1); } | VAR AddEq e ';' {KSeExpr::ExprNode* varNode=NODE1(@1.first_column,@1.first_column,VarNode, $1); KSeExpr::ExprNode* opNode=NODE3(@3.first_column,@3.first_column,BinaryOpNode,varNode,$3,'+'); $$ = NODE2(@$.first_column,@$.last_column,AssignNode, $1, opNode);free($1);} | VAR SubEq e ';' {KSeExpr::ExprNode* varNode=NODE1(@1.first_column,@1.first_column,VarNode, $1); KSeExpr::ExprNode* opNode=NODE3(@3.first_column,@3.first_column,BinaryOpNode,varNode,$3,'-'); $$ = NODE2(@$.first_column,@$.last_column,AssignNode, $1, opNode);free($1);} | VAR MultEq e ';' {KSeExpr::ExprNode* varNode=NODE1(@1.first_column,@1.first_column,VarNode, $1); KSeExpr::ExprNode* opNode=NODE3(@3.first_column,@3.first_column,BinaryOpNode,varNode,$3,'*'); $$ = NODE2(@$.first_column,@$.last_column,AssignNode, $1, opNode);free($1);} | VAR DivEq e ';' {KSeExpr::ExprNode* varNode=NODE1(@1.first_column,@1.first_column,VarNode, $1); KSeExpr::ExprNode* opNode=NODE3(@3.first_column,@3.first_column,BinaryOpNode,varNode,$3,'/'); $$ = NODE2(@$.first_column,@$.last_column,AssignNode, $1, opNode);free($1);} | VAR ExpEq e ';' {KSeExpr::ExprNode* varNode=NODE1(@1.first_column,@1.first_column,VarNode, $1); KSeExpr::ExprNode* opNode=NODE3(@3.first_column,@3.first_column,BinaryOpNode,varNode,$3,'^'); $$ = NODE2(@$.first_column,@$.last_column,AssignNode, $1, opNode);free($1);} | VAR ModEq e ';' {KSeExpr::ExprNode* varNode=NODE1(@1.first_column,@1.first_column,VarNode, $1); KSeExpr::ExprNode* opNode=NODE3(@3.first_column,@3.first_column,BinaryOpNode,varNode,$3,'%'); $$ = NODE2(@$.first_column,@$.last_column,AssignNode, $1, opNode);free($1);} | NAME '=' e ';' { $$ = NODE2(@$.first_column,@$.last_column,AssignNode, $1, $3); free($1); } | NAME AddEq e ';' {KSeExpr::ExprNode* varNode=NODE1(@1.first_column,@1.first_column,VarNode, $1); KSeExpr::ExprNode* opNode=NODE3(@3.first_column,@3.first_column,BinaryOpNode,varNode,$3,'+'); $$ = NODE2(@$.first_column,@$.last_column,AssignNode, $1, opNode);free($1);} | NAME SubEq e ';' {KSeExpr::ExprNode* varNode=NODE1(@1.first_column,@1.first_column,VarNode, $1); KSeExpr::ExprNode* opNode=NODE3(@3.first_column,@3.first_column,BinaryOpNode,varNode,$3,'-'); $$ = NODE2(@$.first_column,@$.last_column,AssignNode, $1, opNode);free($1);} | NAME MultEq e ';' {KSeExpr::ExprNode* varNode=NODE1(@1.first_column,@1.first_column,VarNode, $1); KSeExpr::ExprNode* opNode=NODE3(@3.first_column,@3.first_column,BinaryOpNode,varNode,$3,'*'); $$ = NODE2(@$.first_column,@$.last_column,AssignNode, $1, opNode);free($1);} | NAME DivEq e ';' {KSeExpr::ExprNode* varNode=NODE1(@1.first_column,@1.first_column,VarNode, $1); KSeExpr::ExprNode* opNode=NODE3(@3.first_column,@3.first_column,BinaryOpNode,varNode,$3,'/'); $$ = NODE2(@$.first_column,@$.last_column,AssignNode, $1, opNode);free($1);} | NAME ExpEq e ';' {KSeExpr::ExprNode* varNode=NODE1(@1.first_column,@1.first_column,VarNode, $1); KSeExpr::ExprNode* opNode=NODE3(@3.first_column,@3.first_column,BinaryOpNode,varNode,$3,'^'); $$ = NODE2(@$.first_column,@$.last_column,AssignNode, $1, opNode);free($1);} | NAME ModEq e ';' {KSeExpr::ExprNode* varNode=NODE1(@1.first_column,@1.first_column,VarNode, $1); KSeExpr::ExprNode* opNode=NODE3(@3.first_column,@3.first_column,BinaryOpNode,varNode,$3,'%'); $$ = NODE2(@$.first_column,@$.last_column,AssignNode, $1, opNode);free($1);} ; ifthenelse: IF '(' e ')' '{' optassigns '}' optelse { $$ = NODE3(@$.first_column,@$.last_column,IfThenElseNode, $3, $6, $8); } ; optelse: /* empty */ { $$ = NODE(@$.first_column,@$.last_column,Node); /* create empty node */ } | ELSE '{' optassigns '}' { $$ = $3; } | ELSE ifthenelse { $$ = $2; } ; /* An expression or sub-expression */ e: '(' e ')' { $$ = $2; } | '[' exprlist ']' { KSeExpr::ExprNode* newNode = NODE(@$.first_column,@$.last_column,VecNode); newNode->addChildren($2); Forget($2); $$=newNode;} | e '[' e ']' { $$ = NODE2(@$.first_column,@$.last_column,SubscriptNode, $1, $3); } | e '?' e ':' e { $$ = NODE3(@$.first_column,@$.last_column,CondNode, $1, $3, $5); } | e OR e { $$ = NODE3(@$.first_column,@$.last_column,CompareNode, $1, $3, '|'); } | e AND e { $$ = NODE3(@$.first_column,@$.last_column,CompareNode, $1, $3, '&'); } | e EQ e { $$ = NODE3(@$.first_column,@$.last_column,CompareEqNode, $1, $3,'='); } | e NE e { $$ = NODE3(@$.first_column,@$.last_column,CompareEqNode, $1, $3,'!'); } | e '<' e { $$ = NODE3(@$.first_column,@$.last_column,CompareNode, $1, $3,'<'); } | e '>' e { $$ = NODE3(@$.first_column,@$.last_column,CompareNode, $1, $3,'>'); } | e SEEXPR_LE e { $$ = NODE3(@$.first_column,@$.last_column,CompareNode, $1, $3,'l'); } | e SEEXPR_GE e { $$ = NODE3(@$.first_column,@$.last_column,CompareNode, $1, $3,'g'); } | '+' e %prec UNARY { $$ = $2; } | '-' e %prec UNARY { $$ = NODE2(@$.first_column,@$.last_column,UnaryOpNode, $2, '-'); } | '!' e { $$ = NODE2(@$.first_column,@$.last_column,UnaryOpNode, $2, '!'); } | '~' e { $$ = NODE2(@$.first_column,@$.last_column,UnaryOpNode, $2, '~'); } | e '+' e { $$ = NODE3(@$.first_column,@$.last_column,BinaryOpNode, $1, $3, '+'); } | e '-' e { $$ = NODE3(@$.first_column,@$.last_column,BinaryOpNode, $1, $3, '-'); } | e '*' e { $$ = NODE3(@$.first_column,@$.last_column,BinaryOpNode, $1, $3, '*'); } | e '/' e { $$ = NODE3(@$.first_column,@$.last_column,BinaryOpNode, $1, $3, '/'); } | e '%' e { $$ = NODE3(@$.first_column,@$.last_column,BinaryOpNode, $1, $3, '%'); } | e '^' e { $$ = NODE3(@$.first_column,@$.last_column,BinaryOpNode, $1, $3, '^'); } | NAME '(' optargs ')' { $$ = NODE1(@$.first_column,@$.last_column,FuncNode, $1); free($1); // free name string // add args directly and discard arg list node $$->addChildren($3); Forget($3); } | e ARROW NAME '(' optargs ')' { $$ = NODE1(@$.first_column,@$.last_column,FuncNode, $3); free($3); // free name string $$->addChild($1); // add args directly and discard arg list node $$->addChildren($5); Forget($5); } | VAR { $$ = NODE1(@$.first_column,@$.last_column,VarNode, $1); free($1); /* free name string */ } | NAME { $$ = NODE1(@$.first_column,@$.last_column,VarNode, $1); free($1); /* free name string */ } | NUMBER { $$ = NODE1(@$.first_column,@$.last_column,NumNode, $1); /*printf("line %d",@$.last_column);*/} | STR { $$ = NODE1(@$.first_column,@$.last_column,StrNode, $1); free($1); /* free string */} ; exprlist: e { $$ = NODE1(@$.first_column,@$.last_column,Node,$1); } | exprlist ',' e { $$ = $1; $1->addChild($3); } ; /* An optional argument list */ optargs: /* empty */ { $$ = NODE(@$.first_column,@$.last_column,Node); /* create empty node */} | args { $$ = $1; } ; /* Argument list (comma-separated expression list) */ args: arg { $$ = NODE1(@$.first_column,@$.last_column,Node, $1); /* create arg list */} | args ',' arg { $$ = $1; $1->addChild($3); /* add to list */} ; arg: e { $$ = $1; } ; %% /* yyerror - Report an error. This is called by the parser. (Note: the "msg" param is useless as it is usually just "parse error". so it's ignored.) */ static void yyerror(const char* /*msg*/) { // find start of line containing error int pos = yypos(), lineno = 1, start = 0, end = strlen(ParseStr); for (int i = start; i < pos; i++) if (ParseStr[i] == '\n') { start = i + 1; lineno++; } // find end of line containing error for (int i = end; i > pos; i--) if (ParseStr[i] == '\n') { end = i - 1; } ParseErrorCode = yytext[0] ? KSeExpr::ErrorCode::SyntaxError : KSeExpr::ErrorCode::UnexpectedEndOfExpression; ParseErrorId = ""; int s = std::max(start, pos-30); int e = std::min(end, pos+30); if (s != start) ParseErrorId += "..."; ParseErrorId += std::string(ParseStr, s, e-s+1); if (e != end) ParseErrorId += "..."; } /* CallParser - This is our entrypoint from the rest of the expr library. A string is passed in and a parse tree is returned. If the tree is null, an error string is returned. Any flags set during parsing are passed along. */ extern void SeExprLexerResetState(std::vector >& comments); static std::mutex mutex; namespace KSeExpr { bool ExprParse(KSeExpr::ExprNode*& parseTree, KSeExpr::ErrorCode& errorCode, std::vector& errorIds, int& errorStart, int& errorEnd, std::vector >& comments, const KSeExpr::Expression* expr, const char* str, bool) { std::lock_guard locker(mutex); // glue around crippled C interface - ugh! Expr = expr; ParseStr = str; SeExprLexerResetState(comments); yy_buffer_state* buffer = yy_scan_string(str); ParseResult = 0; int resultCode = yyparse(); yy_delete_buffer(buffer); if (resultCode == 0) { // success errorCode = ErrorCode::None; errorIds = {}; parseTree = ParseResult; } else { // failure errorCode = ParseErrorCode; errorIds = { ParseErrorId }; errorStart=yylloc.first_column; errorEnd=yylloc.last_column; parseTree = nullptr; // gather list of nodes with no parent std::vector delnodes; std::vector::iterator iter; for (iter = ParseNodes.begin(); iter != ParseNodes.end(); iter++) { if (!(*iter)->parent()) { delnodes.push_back(*iter); } } // now delete them (they will delete their own children) for (iter = delnodes.begin(); iter != delnodes.end(); iter++) { delete *iter; } } ParseNodes.clear(); return parseTree != nullptr; } } kseexpr-4.0.4.0/src/KSeExpr/ExprParserLex.l0000644000000000000240000001006414156102631020373 0ustar00rootroot00000000000000/** * SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. * SPDX-License-Identifier: LicenseRef-Apache-2.0 * SPDX-FileCopyrightText: 2020-2021 L. E. Segovia * SPDX-License-Identifier: GPL-3.0-or-later */ /* Don't generate yywrap since everything is in one string */ %option noyywrap /* Don't generate unput since it's unused and gcc complains... */ %option nounput /* Don't generate input since it's unused too -- amyspark */ %option noinput /* Don't worry about interactive and using isatty(). Fixes Windows compile. */ %option never-interactive %{ #include #include #include #include // If c++11 don't use register designator, lex and yacc need to go... #if __cplusplus > 199711L #define register // Deprecated in C++11. #endif // #if __cplusplus > 199711L #include "ExprParser.h" #include "ExprNode.h" #include "Expression.h" #include "Utils.h" #ifdef SEEXPR_WIN32 # define YY_NO_UNISTD_H # define YY_SKIP_YYWRAP #endif #ifndef MAKEDEPEND # include "ExprParser.tab.h" #endif // TODO: make this thread safe static int columnNumber=0; // really buffer position static int lineNumber=0; // not used std::vector >* comments=0; //! For lexer's internal use only! void SeExprLexerResetState(std::vector >& commentsIn){ comments=&commentsIn; columnNumber=lineNumber=0; } int yypos(); #define YY_USER_ACTION { \ yylloc.first_line=lineNumber;yylloc.first_column=columnNumber; \ columnNumber+=yyleng;\ yylloc.last_column=columnNumber;yylloc.last_line=lineNumber;} %} D [0-9] E [Ee][+-]?{D}+ REAL {D}+({E})?|{D}*"."{D}+({E})?|{D}+"."{D}*({E})? IDENT [a-zA-Z_][a-zA-Z0-9_.]* %% BEGIN(0); extern { return EXTERN; } def { return DEF; } FLOAT { return FLOATPOINT; } STRING { return STRING; } CONSTANT { return LIFETIME_CONSTANT; } UNIFORM { return LIFETIME_UNIFORM; } VARYING { return LIFETIME_VARYING; } ERROR { return LIFETIME_ERROR; } if { return IF; } else { return ELSE; } "||" { return OR; } "&&" { return AND; } "==" { return EQ; } "!=" { return NE; } "<=" { return SEEXPR_LE; } ">=" { return SEEXPR_GE; } "->" { return ARROW; } "+=" { return AddEq; } "-=" { return SubEq; } "*=" { return MultEq; } "/=" { return DivEq; } "%=" { return ModEq; } "^=" { return ExpEq; } PI { yylval.d = M_PI; return NUMBER; } E { yylval.d = M_E; return NUMBER; } linear { yylval.d = 0; return NUMBER; } smooth { yylval.d = 1; return NUMBER; } gaussian { yylval.d = 2; return NUMBER; } box { yylval.d = 3; return NUMBER; } {REAL} { yylval.d = KSeExpr::Utils::atof(yytext); return NUMBER; } \"(\\\"|[^"\n])*\" { /* match quoted string, allow embedded quote, \" */ yylval.s = strdup(&yytext[1]); yylval.s[strlen(yylval.s)-1] = '\0'; return STR; } \'(\\\'|[^'\n])*\' { /* match quoted string, allow embedded quote, \' */ yylval.s = strdup(&yytext[1]); yylval.s[strlen(yylval.s)-1] = '\0'; return STR; } ${IDENT} { yylval.s = strdup(&yytext[1]); return VAR; } ${IDENT}"::"{IDENT} { yylval.s = strdup(&yytext[1]); return VAR; } {IDENT} { yylval.s = strdup(yytext); return NAME; } "\\n" /* ignore quoted newline */; "\\t" /* ignore quoted tab */; [ \t\n] /* ignore whitespace */; \#([^\\\n]|\\[^n\n])* { /* match comment */ int startPos=yypos(),endPos=yypos()+strlen(&yytext[1])+1; comments->push_back(std::pair(startPos,endPos));} <*>. { return yytext[0]; } %% /* Gets index of current token (corresponding to yytext). Used for error reporting. */ int yypos() { return yy_c_buf_p - YY_CURRENT_BUFFER->yy_ch_buf - yyleng; } kseexpr-4.0.4.0/src/KSeExpr/ExprPatterns.h0000644000000000000240000001072214156102631020263 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "ExprNode.h" namespace KSeExpr { inline const ExprVarNode *isVariable(const ExprNode *testee) { return dynamic_cast(testee); } inline const ExprNumNode *isScalar(const ExprNode *testee) { return dynamic_cast(testee); } inline const ExprVecNode *isVector(const ExprNode *testee) { return dynamic_cast(testee); } inline const ExprVecNode *isLitVec(const ExprNode *testee) { if (const ExprVecNode *vec = isVector(testee)) if (isScalar(vec->child(0)) && isScalar(vec->child(1)) && isScalar(vec->child(2))) return vec; return nullptr; } inline const ExprStrNode *isString(const ExprNode *testee) { return dynamic_cast(testee); } inline const ExprAssignNode *isAssign(const ExprNode *testee) { return dynamic_cast(testee); } inline const ExprFuncNode *isFunc(const ExprNode *testee) { return dynamic_cast(testee); } inline const ExprFuncNode *isNamedFunc(const ExprNode *testee, const std::string &name) { if (const ExprFuncNode *func = isFunc(testee)) if (name == func->name()) return func; return nullptr; } inline const ExprFuncNode *isStrFunc(const ExprNode *testee) { if (const ExprFuncNode *func = isFunc(testee)) { int max = testee->numChildren(); for (int i = 0; i < max; ++i) if (isString(testee->child(i))) return func; } return nullptr; } inline bool hasCurveNumArgs(const ExprFuncNode *testee) { /// numChildren must be multiple of 3 plus 1 return !((testee->numChildren() - 1) % 3); } inline const ExprFuncNode *isCurveFunc(const ExprNode *testee) { const ExprFuncNode *curveFunc = isNamedFunc(testee, "curve"); if (curveFunc && hasCurveNumArgs(curveFunc)) { int numChildren = curveFunc->numChildren() - 2; for (int i = 1; i < numChildren && curveFunc; i += 3) { if (!isScalar(curveFunc->child(i)) || !isScalar(curveFunc->child(i + 1)) || !isScalar(curveFunc->child(i + 2))) curveFunc = nullptr; } } return curveFunc; } inline const ExprFuncNode *isCcurveFunc(const ExprNode *testee) { const ExprFuncNode *ccurveFunc = isNamedFunc(testee, "ccurve"); if (ccurveFunc && hasCurveNumArgs(ccurveFunc)) { int numChildren = ccurveFunc->numChildren() - 2; for (int i = 1; i < numChildren && ccurveFunc; i += 3) { if (!isScalar(ccurveFunc->child(i)) || (!isScalar(ccurveFunc->child(i + 1)) && !isLitVec(ccurveFunc->child(i + 1))) || !isScalar(ccurveFunc->child(i + 2))) ccurveFunc = nullptr; } } return ccurveFunc; } inline const ExprAssignNode *isScalarAssign(const ExprNode *testee) { /// if testee is an assignment statement, check if its sole child is a scalar if (const ExprAssignNode *assign = isAssign(testee)) if (isScalar(assign->child(0))) return assign; return nullptr; } inline const ExprAssignNode *isVectorAssign(const ExprNode *testee) { /// if testee is an assignment statement, check if its sole child is a vector if (const ExprAssignNode *assign = isAssign(testee)) if (isLitVec(assign->child(0))) return assign; return nullptr; } inline const ExprAssignNode *isStrFuncAssign(const ExprNode *testee) { /// if testee is an assignment statement, check if its sole child is a function with a string argument if (const ExprAssignNode *assign = isAssign(testee)) if (isStrFunc(assign->child(0))) return assign; return nullptr; } inline const ExprAssignNode *isCurveAssign(const ExprNode *testee) { /// if testee is an assignment statement, check if its sole child is a curve function if (const ExprAssignNode *assign = isAssign(testee)) if (isCurveFunc(assign->child(0))) return assign; return nullptr; } inline const ExprAssignNode *isCcurveAssign(const ExprNode *testee) { /// if testee is an assignment statement, check if its sole child is a ccurve function if (const ExprAssignNode *assign = isAssign(testee)) if (isCcurveFunc(assign->child(0))) return assign; return nullptr; } } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/ExprType.h0000644000000000000240000001666314156102631017416 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include #include namespace KSeExpr { /** Describes an allowable type in the SeExpr parse tree There are four classes of types in SeExpr: tERROR, tFP, tSTRING, tNONE. These can be further modified by the lifetime modifier ltERROR, ltVARYING, ltUNIFORM, ltCONSTANT Typically a user constructs a type by doing something like this to get a 3-vector Float ExprType().FP(3).Varying() // make varying ExprType().FP(3).Uniform() // make uniform **/ class ExprType { public: //! Possible types enum Type { tERROR = 0, ///< Error type (bad things happened here or upstream in tree) tFP, ///< Floating point type (this combines with _d member to make vectors) tSTRING, ///< String type tNONE }; ///< None type (anything like function prototypes or blocks of assignments) //! Lifetimes that are possible for type, note the order is from highest to lowest priority for promotion enum Lifetime { ltERROR = 0, ///< Error in lifetime (uniform data depending on varying etc.) ltVARYING, ///< Varying data (i.e. changes per evaluation point) ltUNIFORM, ///< Uniform data (i.e. changes only on grids or pixel tiles, depending on how expr used) ltCONSTANT ///< Constant data (i.e. sub parts of the tree that need only be computed once) }; //! Default constructor for a type (error and lifetime error) ExprType() = default; //! Default destructor ~ExprType() = default; //! Fully specified type ExprType(Type type, int n, Lifetime lifetime) : _type(type) , _n(n) , _lifetime(lifetime) { assert(_n >= 1); assert(_type == tFP || _n == 1); } //! Copy constructor ExprType(const ExprType &other) : _type(other.type()) , _n(other.dim()) , _lifetime(other.lifetime()) { assert(_n >= 1); assert(_type == tFP || _n == 1); } //! Default move constructor ExprType(ExprType &&) = default; //! Assignment operator ExprType &operator=(const ExprType &other) = default; ExprType &operator=(ExprType &&) = default; /// Returns true if this and other do not match on type and dimension bool operator!=(const ExprType &other) const { return !(*this == other); } /// Returns true if this and other match type and dimension bool operator==(const ExprType &other) const { return (type() == other.type() && dim() == other.dim() && lifetime() == other.lifetime()); } ///@{ @name Basic type mutator constructors /// Mutate this into a none type ExprType &None() { _type = tNONE; _n = 1; return *this; } /// Mutate this into a floating point type of dimension d ExprType &FP(int d) { _type = tFP; _n = d; return *this; } /// Mutate this into a string type ExprType &String() { _type = tSTRING; _n = 1; return *this; } /// Mutate this into an error type ExprType &Error() { _type = tERROR; _n = 1; return *this; } ///@} ///@{ @name Basic lifetime mutator constructors /// Mutate this into a constant lifetime ExprType &Constant() { _lifetime = ltCONSTANT; return *this; } /// Mutate this into a uniform lifetime ExprType &Uniform() { _lifetime = ltUNIFORM; return *this; } /// Mutate this into a varying lifetime ExprType &Varying() { _lifetime = ltVARYING; return *this; } /// Mutate this into a lifetime error ExprType &LifeError() { _lifetime = ltERROR; return *this; } ///@} /// @{ @name Lifetime propagation and demotion //! Assign the lifetime from type a to be my type ExprType &setLifetime(const ExprType &a) { _lifetime = a.lifetime(); return *this; } //! Combine the lifetimes (min wins) of a and b and then assign them to this ExprType &setLifetime(const ExprType &a, const ExprType &b) { a.lifetime() < b.lifetime() ? setLifetime(a) : setLifetime(b); return *this; } //! Combine the lifetimes (min wins) of a and b and then assign them to this ExprType &setLifetime(const ExprType &a, const ExprType &b, const ExprType &c) { setLifetime(a, b); setLifetime(*this, c); return *this; } ///@} //#################################################################### /// @{ @name Accessors and predicates // accessors Type type() const { return _type; } int dim() const { return _n; } Lifetime lifetime() const { return _lifetime; } //! Direct is predicate checks bool isFP() const { return _type == tFP; } bool isFP(int d) const { return _type == tFP && _n == d; } bool isValue() const { return _type == tFP || _type == tSTRING; } bool isValid() const { return !isError() && !isLifetimeError(); } bool isError() const { return type() == tERROR; } bool isString() const { return type() == tSTRING; } bool isNone() const { return type() == tNONE; } //! Checks if value types are compatible. static bool valuesCompatible(const ExprType &a, const ExprType &b) { return (a.isString() && b.isString()) || (a._type == tFP && b._type == tFP && (a._n == 1 || b._n == 1 || a._n == b._n)); } /// @} /// validity check: type is not an error // lifetime matchers bool isLifetimeConstant() const { return lifetime() == ltCONSTANT; } bool isLifetimeUniform() const { return lifetime() == ltUNIFORM; } bool isLifetimeVarying() const { return lifetime() == ltVARYING; } bool isLifetimeError() const { return lifetime() == ltERROR; } bool isLifeCompatible(const ExprType &o) const { return o.lifetime() >= lifetime(); } //! Stringify the type into a printable string std::string toString() const { std::stringstream ss; if (isLifetimeConstant()) ss << "constant "; else if (isLifetimeUniform()) ss << "uniform "; else if (isLifetimeVarying()) ss << "varying "; else if (isLifetimeError()) ss << "lifetime_error "; else ss << "Invalid_Lifetime "; if (isError()) ss << "Error"; else if (isFP(1)) ss << "Float"; else if (isFP()) ss << "Float[" << dim() << "]"; else if (isString()) ss << "String"; else if (isNone()) ss << "None"; else ss << "Invalid_Type"; return ss.str(); } private: //! Class of type) Type _type {tERROR}; //! Dimension of type _n==1 ignored if _type != FP int _n {1}; //! lifetime of type Lifetime _lifetime {ltERROR}; }; /// Quick way to get a vector type i.e. 3 vec is TypeVec(3) inline ExprType TypeVec(int n) { return ExprType().FP(n).Varying(); } } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/ExprWalker.cpp0000644000000000000240000000165414156102631020247 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #include #include #include "ExprPatterns.h" #include "ExprWalker.h" namespace KSeExpr { template void Walker::walk(T_NODE* examinee) { _examiner->reset(); internalWalk(examinee); } template void Walker::internalWalk(T_NODE* examinee) { /// If examine returns false, do not recurse if (_examiner->examine(examinee)) walkChildren(examinee); _examiner->post(examinee); } template void Walker::walkChildren(T_NODE* parent) { for (int i = 0; i < parent->numChildren(); i++) internalWalk(parent->child(i)); } template class Walker; template class Walker; } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/ExprWalker.h0000644000000000000240000000236514156102631017714 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include "ExprNode.h" namespace KSeExpr { template struct conditional_const { using type = typename std::conditional::type, T>::type; }; template class Examiner { public: using T_NODE = typename conditional_const::type; virtual bool examine(T_NODE *examinee) = 0; virtual void post(T_NODE *examinee) = 0; virtual void reset() = 0; }; template class Walker { public: using T_EXAMINER = Examiner; using T_NODE = typename T_EXAMINER::T_NODE; Walker(T_EXAMINER* examiner) : _examiner(examiner) { _examiner->reset(); }; /// Preorder walk void walk(T_NODE* examinee); protected: void internalWalk(T_NODE* examinee); void walkChildren(T_NODE* parent); private: T_EXAMINER* _examiner; }; using ConstExaminer = Examiner; using ConstWalker = Walker; } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/Expression.cpp0000644000000000000240000002443514156102631020324 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #include #include #include #include #include #include #include #include "Evaluator.h" #include "ExprConfig.h" #include "ExprEnv.h" #include "ExprFunc.h" #include "ExprNode.h" #include "ExprParser.h" #include "ExprType.h" #include "ExprWalker.h" #include "Expression.h" #include "TypePrinter.h" namespace KSeExpr { // Get debugging flag from environment bool Expression::debugging = getenv("SE_EXPR_DEBUG") != nullptr; // Choose the defeault strategy based on what we've compiled with (SEEXPR_ENABLE_LLVM) // And the environment variables SE_EXPR_DEBUG static Expression::EvaluationStrategy chooseDefaultEvaluationStrategy() { if (Expression::debugging) { std::cerr << "KSeExpr Debug Mode Enabled " << #if defined(_MSC_VER) _MSC_FULL_VER #else __VERSION__ #endif << std::endl; } #if defined(SEEXPR_ENABLE_LLVM) if (char* env = getenv("SE_EXPR_EVAL")) { if (Expression::debugging) std::cerr << "Overriding SeExpr Evaluation Default to be " << env << std::endl; return !strcmp(env, "LLVM") ? Expression::UseLLVM : !strcmp(env, "INTERPRETER") ? Expression::UseInterpreter : Expression::UseInterpreter; } else return Expression::UseLLVM; #else return Expression::UseInterpreter; #endif } Expression::EvaluationStrategy Expression::defaultEvaluationStrategy = chooseDefaultEvaluationStrategy(); Expression::Expression(Expression::EvaluationStrategy evaluationStrategy) : _wantVec(true), _expression(""), _evaluationStrategy(evaluationStrategy), _context(&Context::global()), _desiredReturnType(ExprType().FP(3).Varying()), _parseTree(nullptr), _isValid(false), _parsed(false), _prepped(false), _interpreter(nullptr), _llvmEvaluator(new LLVMEvaluator()) { ExprFunc::init(); } Expression::Expression(const std::string& e, const ExprType& type, EvaluationStrategy evaluationStrategy, const Context& context) : _wantVec(true), _expression(e), _evaluationStrategy(evaluationStrategy), _context(&context), _desiredReturnType(type), _parseTree(nullptr), _isValid(false), _parsed(false), _prepped(false), _interpreter(nullptr), _llvmEvaluator(new LLVMEvaluator()) { ExprFunc::init(); } Expression::~Expression() { reset(); delete _llvmEvaluator; } void Expression::debugPrintInterpreter() const { if (_interpreter) { _interpreter->print(); std::cerr << "return slot " << _returnSlot << std::endl; } } void Expression::debugPrintLLVM() const { _llvmEvaluator->debugPrint(); } void Expression::debugPrintParseTree() const { if (_parseTree) { // print the parse tree std::cerr << "Parse tree desired type " << _desiredReturnType.toString() << " actual " << _parseTree->type().toString() << std::endl; TypePrintExaminer _examiner; KSeExpr::ConstWalker _walker(&_examiner); _walker.walk(_parseTree); } } void Expression::reset() { delete _llvmEvaluator; _llvmEvaluator = new LLVMEvaluator(); delete _parseTree; _parseTree = nullptr; if (_evaluationStrategy == UseInterpreter) { delete _interpreter; _interpreter = nullptr; } _isValid = 0; _parsed = 0; _prepped = 0; _parseErrorCode = ErrorCode::None; _parseErrorIds.clear(); _vars.clear(); _funcs.clear(); //_localVars.clear(); _errors.clear(); _envBuilder.reset(); _threadUnsafeFunctionCalls.clear(); _comments.clear(); } void Expression::setContext(const Context& context) { reset(); _context = &context; } void Expression::setDesiredReturnType(const ExprType& type) { reset(); _desiredReturnType = type; } void Expression::setVarBlockCreator(const VarBlockCreator* creator) { reset(); _varBlockCreator = creator; } void Expression::setExpr(const std::string& e) { if (_expression != "") reset(); _expression = e; } bool Expression::syntaxOK() const { parseIfNeeded(); return _isValid; } bool Expression::isConstant() const { parseIfNeeded(); return returnType().isLifetimeConstant(); } bool Expression::usesVar(const std::string& name) const { parseIfNeeded(); return _vars.find(name) != _vars.end(); } bool Expression::usesFunc(const std::string& name) const { parseIfNeeded(); return _funcs.find(name) != _funcs.end(); } void Expression::parse() const { if (_parsed) return; _parsed = true; int tempStartPos, tempEndPos; ExprParse(_parseTree, _parseErrorCode, _parseErrorIds, tempStartPos, tempEndPos, _comments, this, _expression.c_str(), _wantVec); if (!_parseTree) { addError(_parseErrorCode, _parseErrorIds, tempStartPos, tempEndPos); } } void Expression::prep() const { if (_prepped) return; #ifdef SEEXPR_PERFORMANCE PerformanceTimer timer("[ PREP ] v2 prep time: "); #endif _prepped = true; parseIfNeeded(); bool error = false; std::string _parseError; if (!_parseTree) { // parse error error = true; } else if (!_parseTree->prep(_desiredReturnType.isFP(1), _envBuilder).isValid()) { // prep error error = true; } else if (!ExprType::valuesCompatible(_parseTree->type(), _desiredReturnType)) { // incompatible type error error = true; _parseTree->addError(ErrorCode::ExpressionIncompatibleTypes, { _parseTree->type().toString(), _desiredReturnType.toString() }); } else { _isValid = true; if (_evaluationStrategy == UseInterpreter) { if (debugging) { debugPrintParseTree(); std::cerr << "Eval strategy is interpreter" << std::endl; } assert(!_interpreter); _interpreter = new Interpreter; _returnSlot = _parseTree->buildInterpreter(_interpreter); if (_desiredReturnType.isFP()) { int dimWanted = _desiredReturnType.dim(); int dimHave = _parseTree->type().dim(); if (dimWanted > dimHave) { _interpreter->addOp(getTemplatizedOp(dimWanted)); int finalOp = _interpreter->allocFP(dimWanted); _interpreter->addOperand(_returnSlot); _interpreter->addOperand(finalOp); _returnSlot = finalOp; _interpreter->endOp(); } } if (debugging) _interpreter->print(); } else { // useLLVM if (debugging) { std::cerr << "Eval strategy is llvm" << std::endl; debugPrintParseTree(); } if (!_llvmEvaluator->prepLLVM(_parseTree, _desiredReturnType)) { error = true; } } // TODO: need promote _returnType = _parseTree->type(); } if (error) { _isValid = false; _returnType = ExprType().Error(); // build line lookup table std::vector lines; const char* start = _expression.c_str(); const char* p = _expression.c_str(); while (*p != 0) { if (*p == '\n') lines.push_back(static_cast(p - start)); p++; } lines.push_back(static_cast(p - start)); std::stringstream sstream; for (unsigned int i = 0; i < _errors.size(); i++) { int* bound = std::lower_bound(&*lines.begin(), &*lines.end(), _errors[i].startPos); int line = static_cast(bound - &*lines.begin() + 1); int lineStart = line == 1 ? 0 : lines[line - 1]; int col = _errors[i].startPos - lineStart; sstream << " Line " << line << " Col " << col << " - " << _errors[i].error << std::endl; } _parseError = std::string(sstream.str()); } if (debugging) { std::cerr << "ending with isValid " << _isValid << std::endl; std::cerr << "parse error \n" << _parseError << std::endl; } } bool Expression::isVec() const { prepIfNeeded(); return _isValid ? _parseTree->isVec() : _wantVec; } const ExprType& Expression::returnType() const { prepIfNeeded(); return _returnType; } const double* Expression::evalFP(VarBlock* varBlock) const { prepIfNeeded(); if (_isValid) { if (_evaluationStrategy == UseInterpreter) { _interpreter->eval(varBlock); return (varBlock && varBlock->threadSafe) ? &(varBlock->d[_returnSlot]) : &_interpreter->d[_returnSlot]; } else { // useLLVM return _llvmEvaluator->evalFP(varBlock); } } static double noCrash[16] = {}; return noCrash; } void Expression::evalMultiple(VarBlock* varBlock, int outputVarBlockOffset, size_t rangeStart, size_t rangeEnd) const { prepIfNeeded(); if (_isValid) { if (_evaluationStrategy == UseInterpreter) { // TODO: need strings to work int dim = _desiredReturnType.dim(); // double* iHack=reinterpret_cast(varBlock->data())[outputVarBlockOffset]; double* destBase = reinterpret_cast(varBlock->data())[outputVarBlockOffset]; for (size_t i = rangeStart; i < rangeEnd; i++) { varBlock->indirectIndex = static_cast(i); const double* f = evalFP(varBlock); for (int k = 0; k < dim; k++) { destBase[dim * i + k] = f[k]; } } } else { // useLLVM _llvmEvaluator->evalMultiple(varBlock, outputVarBlockOffset, rangeStart, rangeEnd); } } } const char* Expression::evalStr(VarBlock* varBlock) const { prepIfNeeded(); if (_isValid) { if (_evaluationStrategy == UseInterpreter) { _interpreter->eval(varBlock); return (varBlock && varBlock->threadSafe) ? varBlock->s[_returnSlot] : _interpreter->s[_returnSlot]; } else { // useLLVM return _llvmEvaluator->evalStr(varBlock); } } return nullptr; } } // end namespace KSeExpr/ kseexpr-4.0.4.0/src/KSeExpr/Expression.h0000644000000000000240000002601514156102631017765 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #ifndef Expression_h #define Expression_h #include #include #include #include #include #include #include "Context.h" #include "ErrorCode.h" #include "ExprConfig.h" #include "ExprEnv.h" #include "Vec.h" namespace llvm { class ExecutionEngine; class LLVMContext; } namespace KSeExpr { class ExprNode; class ExprVarNode; class ExprFunc; class Expression; class Interpreter; //! abstract class for implementing variable references class ExprVarRef { ExprVarRef() : _type(ExprType().Error().Varying()) {}; public: ExprVarRef(const ExprType& type) : _type(type) {}; virtual ~ExprVarRef() {} //! sets (current) type to given type virtual void setType(const ExprType& type) { _type = type; }; //! returns (current) type virtual ExprType type() const { return _type; }; //! returns this variable's value by setting result virtual void eval(double* result) = 0; virtual void eval(const char** resultStr) = 0; private: ExprType _type; }; class LLVMEvaluator; class VarBlock; class VarBlockCreator; /// main expression class class Expression { public: //! Types of evaluation strategies that are available enum EvaluationStrategy { UseInterpreter, UseLLVM }; //! What evaluation strategy to use by default static EvaluationStrategy defaultEvaluationStrategy; //! Whether to debug expressions static bool debugging; // typedef std::map LocalVarTable; //! Represents a parse or type checking error in an expression struct Error { //! Error code (index to be translated) ErrorCode error; //! Arguments to the error (to be inserted into the translation) std::vector ids; //! Error start offset in expression string int startPos; //! Error end offset in expression string int endPos; Error(const ErrorCode errorIn, std::vector idsIn, const int startPosIn, const int endPosIn) : error(errorIn), ids(idsIn), startPos(startPosIn), endPos(endPosIn) {} }; Expression(EvaluationStrategy be = Expression::defaultEvaluationStrategy); Expression(const std::string& e, const ExprType& type = ExprType().FP(3), EvaluationStrategy be = Expression::defaultEvaluationStrategy, const Context& context = Context::global()); virtual ~Expression(); /** Sets desired return value. This will allow the evaluation to potentially be optimized. */ void setDesiredReturnType(const ExprType& type); /** Set expression string to e. This invalidates all parsed state. */ void setExpr(const std::string& e); //! Get the string that this expression is currently set to evaluate const std::string& getExpr() const { return _expression; } /** Check expression syntax. Expr will be parsed if needed. If this returns false, the error message can be accessed via parseError() */ bool syntaxOK() const; /** Check if expression is valid. Expr will be parsed if needed. Variables and functions will also be bound. If this returns false, the error message can be accessed via parseError() */ bool isValid() const { prepIfNeeded(); return _isValid; } /** Get parse error (if any). First call syntaxOK or isValid to parse (and optionally bind) the expression. */ const ErrorCode& parseError() const { return _parseErrorCode; } /** * Get parse error message's arguments. * First call syntaxOK or isValid to parse (and optionally bind) * the expression. * NOTE: These strings are NOT translatable. */ const std::vector& parseErrorArgs() const { return _parseErrorIds; } /** Get a reference to a list of parse errors in the expression. The error structure gives location information as well as the errors itself. */ const std::vector& getErrors() const { return _errors; } /** Get a reference to a list of the ranges where comments occurred */ const std::vector >& getComments() const { return _comments; } /** Check if expression is constant. Expr will be parsed if needed. No binding is required. */ bool isConstant() const; /** Determine whether expression uses a particular external variable. Expr will be parsed if needed. No binding is required. */ bool usesVar(const std::string& name) const; /** Determine whether expression uses a particular function. Expr will be parsed if needed. No binding is required. */ bool usesFunc(const std::string& name) const; /** Returns whether the expression contains and calls to non-threadsafe */ bool isThreadSafe() const { return _threadUnsafeFunctionCalls.size() == 0; } /** Internal function where parse tree nodes can register violations in thread safety with the main class. */ void setThreadUnsafe(const std::string& functionName) const { _threadUnsafeFunctionCalls.push_back(functionName); } /** Returns a list of functions that are not threadSafe **/ const std::vector& getThreadUnsafeFunctionCalls() const { return _threadUnsafeFunctionCalls; } /** Get wantVec setting */ bool wantVec() const { return _wantVec; } /** Determine if expression computes a vector (may be false even if wantVec is true). Expr will be parsed and variables and functions will be bound if needed. */ bool isVec() const; /** Return the return type of the expression. Currently may not match the type set in setReturnType. Expr will be parsed and variables and functions will be bound if needed. */ const ExprType& returnType() const; /// Evaluate multiple blocks void evalMultiple(VarBlock* varBlock, int outputVarBlockOffset, size_t rangeStart, size_t rangeEnd) const; // TODO: make this deprecated /** Evaluates and returns float (check returnType()!) */ const double* evalFP(VarBlock* varBlock = nullptr) const; // TODO: make this deprecated /** Evaluates and returns string (check returnType()!) */ const char* evalStr(VarBlock* varBlock = nullptr) const; /** Reset expr - force reparse/rebind */ void reset(); /** override resolveVar to add external variables */ virtual ExprVarRef* resolveVar(const std::string&) const { return 0; } /** override resolveFunc to add external functions */ virtual ExprFunc* resolveFunc(const std::string&) const { return 0; } /** records an error in prep or parse stage */ void addError(const ErrorCode error, const std::vector ids, const int startPos, const int endPos) const { _errors.push_back(Error(error, ids, startPos, endPos)); } /** records a comment */ void addComment(int pos, int length) { _comments.push_back(std::pair(pos, length + pos - 1)); } /** Returns a read only map of local variables that were set **/ // const LocalVarTable& getLocalVars() const {return _localVars;} /** An immutable reference to access context parameters from say ExprFuncX's */ const Context& context() const { return *_context; } void setContext(const Context& context); /** Debug printout of parse tree */ void debugPrintParseTree() const; /** Debug printout of interpreter evaluation program **/ void debugPrintInterpreter() const; /** Debug printout of LLVM evaluation **/ void debugPrintLLVM() const; /** Set variable block creator (lifetime of expression must be <= block) **/ void setVarBlockCreator(const VarBlockCreator* varBlockCreator); const VarBlockCreator* varBlockCreator() const { return _varBlockCreator; } private: /** No definition by design. */ Expression(const Expression& e); Expression& operator=(const Expression& e); /** Parse, and remember parse error if any */ void parse() const; /** Parse, but only if not yet parsed */ void parseIfNeeded() const { if (!_parsed) parse(); } /** Prepare expression (bind vars/functions, etc.) and remember error if any */ void prep() const; /** True if the expression wants a vector */ bool _wantVec; /** Computed return type. */ mutable ExprType _returnType; /** The expression. */ std::string _expression; EvaluationStrategy _evaluationStrategy; /** Context for out of band function parameters */ const Context* _context; protected: /** Computed return type. */ mutable ExprType _desiredReturnType; /** Variable environment */ mutable ExprVarEnvBuilder _envBuilder; /** Parse tree (null if syntax is bad). */ mutable ExprNode* _parseTree; /** Prepare, but only if not yet prepped */ void prepIfNeeded() const { if (!_prepped) prep(); } private: /** Flag if we are valid or not */ mutable bool _isValid; /** Flag set once expr is parsed/prepped (parsing is automatic and lazy) */ mutable bool _parsed, _prepped; /** Cached parse error (returned by isValid) */ mutable ErrorCode _parseErrorCode; /** Cached parse error components (returned by isValid) */ mutable std::vector _parseErrorIds; /** Cached parse error location {startline,startcolumn,endline,endcolumn} */ mutable std::vector _errors; /** Cached comments */ mutable std::vector > _comments; /** Variables used in this expr */ mutable std::set _vars; /** Functions used in this expr */ mutable std::set _funcs; /** Local variable table */ // mutable LocalVarTable _localVars; /** Whether or not we have unsafe functions */ mutable std::vector _threadUnsafeFunctionCalls; /** Interpreter */ mutable Interpreter* _interpreter; mutable int _returnSlot; // LLVM evaluation layer mutable LLVMEvaluator* _llvmEvaluator; // Var block creator const VarBlockCreator* _varBlockCreator = 0; /* internal */ public: //! add local variable (this is for internal use) void addVar(const char* n) const { _vars.insert(n); } //! add function evaluation (this is for internal use) void addFunc(const char* n) const { _funcs.insert(n); } ////! get local variable reference (this is for internal use) // ExprVarRef* resolveLocalVar(const char* n) const { // LocalVarTable::iterator iter = _localVars.find(n); // if (iter != _localVars.end()) return &iter->second; // return 0; //} /** get local variable reference. This is potentially useful for expression debuggers and/or uses of expressions where mutable variables are desired */ /* ExprLocalVarRef* getLocalVar(const char* n) const { */ /* return &_localVars[n]; */ /* } */ }; } #endif kseexpr-4.0.4.0/src/KSeExpr/Interpreter.cpp0000644000000000000240000010606214156102631020465 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #include #include #include #ifndef SEEXPR_WIN32 #include #endif #include "ExprNode.h" #include "Interpreter.h" #include "VarBlock.h" // TODO: optimize to write to location directly on a CondNode namespace KSeExpr { void Interpreter::eval(VarBlock* block, bool debug) { // get pointers to the working data double* fp = d.data(); char** str = s.data(); // if we have a VarBlock instance, we need to update the working data if (block) { // if the VarBlock is flagged as thread safe, copy the interpreter's data to it. if (block->threadSafe == true) { // copy double data block->d.resize(d.size()); fp = block->d.data(); memcpy(fp, d.data(), d.size() * sizeof(double)); // copy string data block->s.resize(s.size()); str = block->s.data(); memcpy(str, s.data(), s.size() * sizeof(char*)); } // set the variable evaluation data str[0] = reinterpret_cast(block->data()); str[1] = reinterpret_cast(static_cast(block->indirectIndex)); } int pc = _pcStart; int end = static_cast(ops.size()); while (pc < end) { if (debug) { std::cerr << "Running op at " << pc << std::endl; print(pc); } const std::pair& op = ops[pc]; int* opCurr = &opData[0] + op.second; pc += op.first(opCurr, fp, str, callStack); } } void Interpreter::print(int pc) const { std::cerr << "---- ops ----------------------" << std::endl; for (size_t i = 0; i < ops.size(); i++) { const char *name = ""; #ifndef SEEXPR_WIN32 Dl_info info; if (dladdr((void *)ops[i].first, &info)) name = info.dli_sname; #endif fprintf(stderr, "%s %s %p (", pc == (int)i ? "-->" : " ", name, (void *)ops[i].first); int nextGuy = (i == ops.size() - 1 ? static_cast(opData.size()) : ops[i + 1].second); for (int k = ops[i].second; k < nextGuy; k++) { fprintf(stderr, " %d", opData[k]); } fprintf(stderr, ")\n"); } std::cerr << "---- opdata ----------------------" << std::endl; for (size_t k = 0; k < opData.size(); k++) { std::cerr << "opData[" << k << "]= " << opData[k] << std::endl; } std::cerr << "----- fp --------------------------" << std::endl; for (size_t k = 0; k < d.size(); k++) { std::cerr << "fp[" << k << "]= " << d[k] << std::endl; } std::cerr << "---- str ----------------------" << std::endl; std::cerr << "s[0] reserved for datablock = " << reinterpret_cast(s[0]) << std::endl; std::cerr << "s[1] is indirectIndex = " << reinterpret_cast(s[1]) << std::endl; for (size_t k = 2; k < s.size(); k++) { std::cerr << "s[" << k << "]= " << (void *)(s[k]); if (s[k]) { fprintf(stderr, " '%c%c%c%c...'", s[k][0], s[k][1], s[k][2], s[k][3]); } std::cerr << std::endl; } std::fflush(stderr); } // template Interpreter::OpF* getTemplatizedOp >(int); // template Interpreter::OpF* getTemplatizedOp >(int); // template Interpreter::OpF* getTemplatizedOp >(int); //! Return the function f encapsulated in class T for the dynamic i converted to a static d. (partial application of // template using c) template class T> static Interpreter::OpF getTemplatizedOp2(int i) { switch (i) { case 1: return T::f; case 2: return T::f; case 3: return T::f; case 4: return T::f; case 5: return T::f; case 6: return T::f; case 7: return T::f; case 8: return T::f; case 9: return T::f; case 10: return T::f; case 11: return T::f; case 12: return T::f; case 13: return T::f; case 14: return T::f; case 15: return T::f; case 16: return T::f; default: assert(false && "Invalid dynamic parameter (not supported template)"); break; } return nullptr; } namespace { //! Binary operator for strings. Currently only handle '+' struct BinaryStringOp { static int f(int* opData, double*, char** c, std::vector&) { // get the operand data char*& out = *(char**)c[opData[0]]; char* in1 = c[opData[1]]; char* in2 = c[opData[2]]; // delete previous data and allocate a new buffer, only if needed // NOTE: this is more efficient, but might consume more memory... // Maybe make this behaviour configurable ? size_t len1 = strlen(in1); size_t len2 = strlen(in2); if (out == nullptr || len1 + len2 + 1 > strlen(out)) { delete [] out; out = new char [len1 + len2 + 1]; } // clear previous evaluation content memset(out, 0, len1 + len2 + 1); // concatenate strings strcat(out, in1); strcat(out + len1, in2); out[len1 + len2] = '\0'; // copy to the output c[opData[3]] = out; return 1; } }; //! Computes a binary op of vector dimension d template struct BinaryOp { static double niceMod(double a, double b) { if (b == 0) return 0; return a - floor(a / b) * b; } static int f(int* opData, double* fp, char**, std::vector& ) { double* in1 = fp + opData[0]; double* in2 = fp + opData[1]; double* out = fp + opData[2]; for (int k = 0; k < d; k++) { switch (op) { case '+': *out = (*in1) + (*in2); break; case '-': *out = (*in1) - (*in2); break; case '*': *out = (*in1) * (*in2); break; case '/': *out = (*in1) / (*in2); break; case '%': *out = niceMod(*in1, *in2); break; case '^': *out = pow(*in1, *in2); break; // these only make sense with d==1 case '<': *out = (*in1) < (*in2); break; case '>': *out = (*in1) > (*in2); break; case 'l': *out = (*in1) <= (*in2); break; case 'g': *out = (*in1) >= (*in2); break; case '&': *out = (*in1) && (*in2); break; case '|': *out = (*in1) || (*in2); break; default: assert(false); } in1++; in2++; out++; } return 1; } }; /// Computes a unary op on a FP[d] template struct UnaryOp { static int f(int* opData, double* fp, char**, std::vector&) { double* in = fp + opData[0]; double* out = fp + opData[1]; for (int k = 0; k < d; k++) { switch (op) { case '-': *out = -(*in); break; case '~': *out = 1 - (*in); break; case '!': *out = !*in; break; default: assert(false); } in++; out++; } return 1; } }; //! Subscripts template struct Subscript { static int f(int* opData, double* fp, char**, std::vector&) { int tuple = opData[0]; int subscript = int(fp[opData[1]]); int out = opData[2]; if (subscript >= d || subscript < 0) fp[out] = 0; else fp[out] = fp[tuple + subscript]; return 1; } }; //! build a vector tuple from a bunch of numbers template struct Tuple { static int f(int* opData, double* fp, char**, std::vector&) { int out = opData[d]; for (int k = 0; k < d; k++) { fp[out + k] = fp[opData[k]]; } return 1; } }; //! Assign a floating point to another (NOTE: if src and dest have different dimensions, use Promote) template struct AssignOp { static int f(int* opData, double* fp, char**, std::vector&) { int in = opData[0]; int out = opData[1]; for (int k = 0; k < d; k++) { fp[out + k] = fp[in + k]; } return 1; } }; //! Assigns a string from one position to another struct AssignStrOp { static int f(int* opData, double*, char** c, std::vector&) { int in = opData[0]; int out = opData[1]; c[out] = c[in]; return 1; } }; //! Jumps relative to current executing pc if cond is true struct CondJmpRelativeIfFalse { static int f(int* opData, double* fp, char**, std::vector&) { bool cond = (bool)fp[opData[0]]; if (!cond) return opData[1]; else return 1; } }; //! Jumps relative to current executing pc if cond is true struct CondJmpRelativeIfTrue { static int f(int* opData, double* fp, char**, std::vector&) { bool cond = (bool)fp[opData[0]]; if (cond) return opData[1]; else return 1; } }; //! Jumps relative to current executing pc unconditionally struct JmpRelative { static int f(int* opData, double*, char**, std::vector&) { return opData[0]; } }; //! Evaluates an external variable struct EvalVar { static int f(int* opData, double* fp, char** c, std::vector&) { auto* ref = reinterpret_cast(c[opData[0]]); if (ref->type().isFP()) { ref->eval(fp + opData[1]); } else { ref->eval(const_cast(c + opData[1])); } return 1; } }; //! Evaluates an external variable using a variable block template struct EvalVarBlock { static int f(int* opData, double* fp, char** c, std::vector& callStack) { if (c[0]) { double* basePointer = reinterpret_cast(c[0]) + opData[0]; double* destPointer = fp + opData[1]; for (int i = 0; i < dim; i++) destPointer[i] = basePointer[i]; } return 1; } }; //! Evaluates an external variable using a variable block template struct EvalVarBlockIndirect { static int f(int* opData, double* fp, char** c, std::vector&) { if (c[0]) { int stride = opData[2]; int outputVarBlockOffset = opData[0]; int destIndex = opData[1]; auto indirectIndex = reinterpret_cast(c[1]); double* basePointer = reinterpret_cast(c[0])[outputVarBlockOffset] + (uniform ? 0 : (stride * indirectIndex)); double* destPointer = fp + destIndex; for (int i = 0; i < dim; i++) destPointer[i] = basePointer[i]; } else { // TODO: this happens in initial evaluation! // std::cerr<<"Did not get data block"< struct CompareEqOp { static int f(int* opData, double* fp, char**, std::vector&) { bool result = true; double* in0 = fp + opData[0]; double* in1 = fp + opData[1]; double* out = fp + opData[2]; for (int k = 0; k < d; k++) { switch (op) { case '=': result &= (*in0) == (*in1); break; case '!': result &= (*in0) != (*in1); break; default: assert(false); } in0++; in1++; } *out = result; return 1; } }; template struct CompareEqOp { static int f(int* opData, double* fp, char**, std::vector&) { bool eq = fp[opData[0]] == fp[opData[1]] && fp[opData[0] + 1] == fp[opData[1] + 1] && fp[opData[0] + 2] == fp[opData[1] + 2]; if (op == '=') fp[opData[2]] = eq; if (op == '!') fp[opData[2]] = !eq; return 1; } }; template struct StrCompareEqOp { // TODO: this should rely on tokenization and not use strcmp static int f(int* opData, double* fp, char** c, std::vector&) { switch (op) { case '=': fp[opData[2]] = strcmp(c[opData[0]], c[opData[1]]) == 0; break; case '!': fp[opData[2]] = strcmp(c[opData[0]], c[opData[1]]) != 0; break; } return 1; } }; } // namespace namespace { int ProcedureReturn(int* opData, double*, char**, std::vector& callStack) { int newPC = callStack.back(); callStack.pop_back(); return newPC - opData[0]; } } namespace { int ProcedureCall(int* opData, double*, char**, std::vector& callStack) { callStack.push_back(opData[0]); return opData[1]; } } int ExprLocalFunctionNode::buildInterpreter(Interpreter* interpreter) const { _procedurePC = interpreter->nextPC(); int lastOperand = 0; for (int c = 0; c < numChildren(); c++) lastOperand = child(c)->buildInterpreter(interpreter); int basePC = interpreter->nextPC(); ; interpreter->addOp(ProcedureReturn); // int endPC = interpreter->addOperand(basePC); interpreter->endOp(false); _returnedDataOp = lastOperand; return 0; } int ExprLocalFunctionNode::buildInterpreterForCall(const ExprFuncNode* callerNode, Interpreter* interpreter) const { std::vector operands; for (int c = 0; c < callerNode->numChildren(); c++) { const ExprNode* child = callerNode->child(c); // evaluate the argument int operand = callerNode->child(c)->buildInterpreter(interpreter); if (child->type().isFP()) { if (callerNode->promote(c) != 0) { // promote the argument to the needed type interpreter->addOp(getTemplatizedOp(callerNode->promote(c))); // int promotedOperand=interpreter->allocFP(callerNode->promote(c)); interpreter->addOperand(operand); interpreter->addOperand(prototype()->interpreterOps(c)); interpreter->endOp(); } else { interpreter->addOp(getTemplatizedOp(child->type().dim())); interpreter->addOperand(operand); interpreter->addOperand(prototype()->interpreterOps(c)); interpreter->endOp(); } } else { // TODO: string assert(false); } operands.push_back(operand); } int outoperand = -1; if (callerNode->type().isFP()) outoperand = interpreter->allocFP(callerNode->type().dim()); else if (callerNode->type().isString()) outoperand = interpreter->allocPtr(); else assert(false); int basePC = interpreter->nextPC(); interpreter->addOp(ProcedureCall); int returnAddress = interpreter->addOperand(0); interpreter->addOperand(_procedurePC - basePC); interpreter->endOp(false); // set return address interpreter->opData[returnAddress] = interpreter->nextPC(); // TODO: copy result back and string interpreter->addOp(getTemplatizedOp(callerNode->type().dim())); interpreter->addOperand(_returnedDataOp); interpreter->addOperand(outoperand); interpreter->endOp(); return outoperand; } int ExprNode::buildInterpreter(Interpreter* interpreter) const { for (int c = 0; c < numChildren(); c++) child(c)->buildInterpreter(interpreter); return -1; } int ExprNumNode::buildInterpreter(Interpreter* interpreter) const { int loc = interpreter->allocFP(1); interpreter->d[loc] = value(); return loc; } int ExprStrNode::buildInterpreter(Interpreter* interpreter) const { int loc = interpreter->allocPtr(); interpreter->s[loc] = const_cast(_str.c_str()); return loc; } int ExprVecNode::buildInterpreter(Interpreter* interpreter) const { std::vector locs; for (int k = 0; k < numChildren(); k++) { const ExprNode* c = child(k); locs.push_back(c->buildInterpreter(interpreter)); } interpreter->addOp(getTemplatizedOp(numChildren())); for (int k = 0; k < numChildren(); k++) interpreter->addOperand(locs[k]); int loc = interpreter->allocFP(numChildren()); interpreter->addOperand(loc); interpreter->endOp(); return loc; } int ExprBinaryOpNode::buildInterpreter(Interpreter* interpreter) const { const ExprNode * child0 = child(0); const ExprNode *child1 = child(1); int dim0 = child0->type().dim(); int dim1 = child1->type().dim(); int dimout = type().dim(); int op0 = child0->buildInterpreter(interpreter); int op1 = child1->buildInterpreter(interpreter); if (dimout > 1) { if (dim0 != dimout) { interpreter->addOp(getTemplatizedOp(dimout)); int promoteOp0 = interpreter->allocFP(dimout); interpreter->addOperand(op0); interpreter->addOperand(promoteOp0); op0 = promoteOp0; interpreter->endOp(); } if (dim1 != dimout) { interpreter->addOp(getTemplatizedOp(dimout)); int promoteOp1 = interpreter->allocFP(dimout); interpreter->addOperand(op1); interpreter->addOperand(promoteOp1); op1 = promoteOp1; interpreter->endOp(); } } // check if the node will output a string of numerical value bool isString = child0->type().isString() || child1->type().isString(); // add the operator if (isString == false) { switch (_op) { case '+': interpreter->addOp(getTemplatizedOp2<'+', BinaryOp>(dimout)); break; case '-': interpreter->addOp(getTemplatizedOp2<'-', BinaryOp>(dimout)); break; case '*': interpreter->addOp(getTemplatizedOp2<'*', BinaryOp>(dimout)); break; case '/': interpreter->addOp(getTemplatizedOp2<'/', BinaryOp>(dimout)); break; case '^': interpreter->addOp(getTemplatizedOp2<'^', BinaryOp>(dimout)); break; case '%': interpreter->addOp(getTemplatizedOp2<'%', BinaryOp>(dimout)); break; default: assert(false); } } else { switch (_op) { case '+': { interpreter->addOp(BinaryStringOp::f); int intermediateOp = interpreter->allocPtr(); interpreter->s[intermediateOp] = (char*)(&_out); interpreter->addOperand(intermediateOp); break; } default: assert(false); } } // allocate the output int op2 = -1; if (isString == false) { op2 = interpreter->allocFP(dimout); } else { op2 = interpreter->allocPtr(); } interpreter->addOperand(op0); interpreter->addOperand(op1); interpreter->addOperand(op2); // NOTE: one of the operand can be a function. If it's the case for // strings, since functions are not immediately executed (they have // endOp(false)) using endOp() here would result in a nullptr // input operand during eval, thus the following arg to endOp. // // TODO: only stop execution if one of the operand is either a // function of a var ref. interpreter->endOp(isString == false); return op2; } int ExprUnaryOpNode::buildInterpreter(Interpreter* interpreter) const { const ExprNode* child0 = child(0); int dimout = type().dim(); int op0 = child0->buildInterpreter(interpreter); switch (_op) { case '-': interpreter->addOp(getTemplatizedOp2<'-', UnaryOp>(dimout)); break; case '~': interpreter->addOp(getTemplatizedOp2<'~', UnaryOp>(dimout)); break; case '!': interpreter->addOp(getTemplatizedOp2<'!', UnaryOp>(dimout)); break; default: assert(false); } int op1 = interpreter->allocFP(dimout); interpreter->addOperand(op0); interpreter->addOperand(op1); interpreter->endOp(); return op1; } int ExprSubscriptNode::buildInterpreter(Interpreter* interpreter) const { const ExprNode * child0 = child(0); const ExprNode *child1 = child(1); int dimin = child0->type().dim(); int op0 = child0->buildInterpreter(interpreter); int op1 = child1->buildInterpreter(interpreter); int op2 = interpreter->allocFP(1); interpreter->addOp(getTemplatizedOp(dimin)); interpreter->addOperand(op0); interpreter->addOperand(op1); interpreter->addOperand(op2); interpreter->endOp(); return op2; } int ExprVarNode::buildInterpreter(Interpreter* interpreter) const { if (const ExprLocalVar* var = _localVar) { // if (const ExprLocalVar* phi = var->getPhi()) var = phi; auto i = interpreter->varToLoc.find(var); if (i != interpreter->varToLoc.end()) return i->second; else throw std::runtime_error("Unallocated variable encountered."); } else if (const ExprVarRef* var = _var) { ExprType type = var->type(); int destLoc = -1; if (type.isFP()) { int dim = type.dim(); destLoc = interpreter->allocFP(dim); } else destLoc = interpreter->allocPtr(); if (const auto* blockVarRef = dynamic_cast(var)) { // TODO: handle strings if (blockVarRef->type().isLifetimeUniform()) interpreter->addOp(getTemplatizedOp2<1, EvalVarBlockIndirect>(type.dim())); else interpreter->addOp(getTemplatizedOp2<0, EvalVarBlockIndirect>(type.dim())); interpreter->addOperand(blockVarRef->offset()); interpreter->addOperand(destLoc); interpreter->addOperand(blockVarRef->stride()); interpreter->endOp(); } else { int varRefLoc = interpreter->allocPtr(); interpreter->addOp(EvalVar::f); interpreter->s[varRefLoc] = const_cast(reinterpret_cast(var)); interpreter->addOperand(varRefLoc); interpreter->addOperand(destLoc); interpreter->endOp(); } return destLoc; } return -1; } int ExprLocalVar::buildInterpreter(Interpreter* interpreter) const { return interpreter->varToLoc[this] = _type.isFP() ? interpreter->allocFP(_type.dim()) : _type.isString() ? interpreter->allocPtr() : -1; } int ExprAssignNode::buildInterpreter(Interpreter* interpreter) const { int loc = _localVar->buildInterpreter(interpreter); assert(loc != -1 && "Invalid type found"); ExprType child0Type = child(0)->type(); int op0 = child(0)->buildInterpreter(interpreter); if (child0Type.isFP()) { interpreter->addOp(getTemplatizedOp(child0Type.dim())); } else if (child0Type.isString()) { interpreter->addOp(AssignStrOp::f); } else { assert(false && "Invalid desired assign type"); return -1; } interpreter->addOperand(op0); interpreter->addOperand(loc); interpreter->endOp(child0Type.isString() == false); return loc; } void copyVarToPromotedPosition(Interpreter* interpreter, ExprLocalVar* varSource, ExprLocalVar* varDest) { if (varDest->type().isFP()) { int destDim = varDest->type().dim(); if (destDim != varSource->type().dim()) { assert(varSource->type().dim() == 1); interpreter->addOp(getTemplatizedOp(destDim)); } else { interpreter->addOp(getTemplatizedOp(destDim)); } interpreter->addOperand(interpreter->varToLoc[varSource]); interpreter->addOperand(interpreter->varToLoc[varDest]); interpreter->endOp(); } else if (varDest->type().isString()) { interpreter->addOp(AssignStrOp::f); interpreter->addOperand(interpreter->varToLoc[varSource]); interpreter->addOperand(interpreter->varToLoc[varDest]); interpreter->endOp(); } else { assert(false && "failed to promote invalid type"); } } int ExprIfThenElseNode::buildInterpreter(Interpreter* interpreter) const { int condop = child(0)->buildInterpreter(interpreter); int basePC = interpreter->nextPC(); const auto& merges = _varEnv->merge(_varEnvMergeIndex); // Allocate spots for all the join variables // they are before in the sequence of operands, but it doesn't matter // NOTE: at this point the variables thenVar and elseVar have not been codegen'd for (const auto & it : merges) { ExprLocalVarPhi* finalVar = it.second; if (finalVar->valid()) { finalVar->buildInterpreter(interpreter); } } // Setup the conditional jump interpreter->addOp(CondJmpRelativeIfFalse::f); interpreter->addOperand(condop); int destFalse = interpreter->addOperand(0); interpreter->endOp(); // Then block (build interpreter and copy variables out then jump to end) child(1)->buildInterpreter(interpreter); for (const auto & it : merges) { ExprLocalVarPhi* finalVar = it.second; if (finalVar->valid()) { copyVarToPromotedPosition(interpreter, finalVar->_thenVar, finalVar); } } interpreter->addOp(JmpRelative::f); int destEnd = interpreter->addOperand(0); interpreter->endOp(); // Else block (build interpreter, copy variables out and then we're at end) int child2PC = interpreter->nextPC(); child(2)->buildInterpreter(interpreter); for (const auto & it : merges) { ExprLocalVarPhi* finalVar = it.second; if (finalVar->valid()) { copyVarToPromotedPosition(interpreter, finalVar->_elseVar, finalVar); } } // Patch the jump addresses in the conditional interpreter->opData[destFalse] = child2PC - basePC; interpreter->opData[destEnd] = interpreter->nextPC() - (child2PC - 1); return -1; } int ExprCompareNode::buildInterpreter(Interpreter* interpreter) const { const ExprNode * child0 = child(0); const ExprNode *child1 = child(1); assert(type().dim() == 1 && type().isFP()); if (_op == '&' || _op == '|') { // Handle short circuiting // allocate output int op2 = interpreter->allocFP(1); // unconditionally evaluate first argument int op0 = child0->buildInterpreter(interpreter); // conditional to check if that argument could continue int basePC = (interpreter->nextPC()); interpreter->addOp(_op == '&' ? CondJmpRelativeIfFalse::f : CondJmpRelativeIfTrue::f); interpreter->addOperand(op0); int destFalse = interpreter->addOperand(0); interpreter->endOp(); // this is the no-branch case (op1=true for & and op0=false for |), so eval op1 int op1 = child1->buildInterpreter(interpreter); // combine with & interpreter->addOp(_op == '&' ? getTemplatizedOp2<'&', BinaryOp>(1) : getTemplatizedOp2<'|', BinaryOp>(1)); interpreter->addOperand(op0); interpreter->addOperand(op1); interpreter->addOperand(op2); interpreter->endOp(); interpreter->addOp(JmpRelative::f); int destEnd = interpreter->addOperand(0); interpreter->endOp(); // this is the branch case (op1=false for & and op0=true for |) so no eval of op1 required // just copy from the op0's value int falseConditionPC = interpreter->nextPC(); interpreter->addOp(AssignOp<1>::f); interpreter->addOperand(op0); interpreter->addOperand(op2); interpreter->endOp(); // fix PC relative jump addressses interpreter->opData[destFalse] = falseConditionPC - basePC; interpreter->opData[destEnd] = interpreter->nextPC() - (falseConditionPC - 1); return op2; } else { // Noraml case, always have to evaluatee everything int op0 = child0->buildInterpreter(interpreter); int op1 = child1->buildInterpreter(interpreter); switch (_op) { case '<': interpreter->addOp(getTemplatizedOp2<'<', BinaryOp>(1)); break; case '>': interpreter->addOp(getTemplatizedOp2<'>', BinaryOp>(1)); break; case 'l': interpreter->addOp(getTemplatizedOp2<'l', BinaryOp>(1)); break; case 'g': interpreter->addOp(getTemplatizedOp2<'g', BinaryOp>(1)); break; case '&': assert(false); // interpreter->addOp(getTemplatizedOp2<'&',BinaryOp>(1));break; case '|': assert(false); // interpreter->addOp(getTemplatizedOp2<'|',BinaryOp>(1));break; default: assert(false); } int op2 = interpreter->allocFP(1); interpreter->addOperand(op0); interpreter->addOperand(op1); interpreter->addOperand(op2); interpreter->endOp(); return op2; } } int ExprPrototypeNode::buildInterpreter(Interpreter* interpreter) const { // set up parents _interpreterOps.clear(); for (int c = 0; c < numChildren(); c++) { if (const auto* childVarNode = dynamic_cast(child(c))) { const ExprType& childType = childVarNode->type(); if (childType.isFP()) { int operand = interpreter->allocFP(childType.dim()); _interpreterOps.push_back(operand); interpreter->varToLoc[childVarNode->localVar()] = operand; } } else { assert(false); } child(c)->buildInterpreter(interpreter); // make sure we have a slot in our global activation record for the variables! } return 0; } int ExprCompareEqNode::buildInterpreter(Interpreter* interpreter) const { const ExprNode * child0 = child(0); const ExprNode *child1 = child(1); int op0 = child0->buildInterpreter(interpreter); int op1 = child1->buildInterpreter(interpreter); if (child0->type().isFP()) { int dim0 = child0->type().dim(); int dim1 = child1->type().dim(); int dimCompare = std::max(dim0, dim1); if (dimCompare > 1) { if (dim0 == 1) { interpreter->addOp(getTemplatizedOp(dim1)); int promotedOp0 = interpreter->allocFP(dim1); interpreter->addOperand(op0); interpreter->addOperand(promotedOp0); interpreter->endOp(); op0 = promotedOp0; } if (dim1 == 1) { interpreter->addOp(getTemplatizedOp(dim0)); int promotedOp1 = interpreter->allocFP(dim0); interpreter->addOperand(op1); interpreter->addOperand(promotedOp1); interpreter->endOp(); op1 = promotedOp1; } } if (_op == '=') interpreter->addOp(getTemplatizedOp2<'=', CompareEqOp>(dimCompare)); else if (_op == '!') interpreter->addOp(getTemplatizedOp2<'!', CompareEqOp>(dimCompare)); else assert(false && "Invalid operation"); } else if (child0->type().isString()) { if (_op == '=') interpreter->addOp(getTemplatizedOp2<'=', StrCompareEqOp>(1)); else if (_op == '!') interpreter->addOp(getTemplatizedOp2<'!', StrCompareEqOp>(1)); else assert(false && "Invalid operation"); } else assert(false && "Invalid type for comparison"); int op2 = interpreter->allocFP(1); interpreter->addOperand(op0); interpreter->addOperand(op1); interpreter->addOperand(op2); interpreter->endOp(child0->type().isString() == false); return op2; } int ExprCondNode::buildInterpreter(Interpreter* interpreter) const { int opOut = -1; // TODO: handle strings! int dimout = type().dim(); // conditional int condOp = child(0)->buildInterpreter(interpreter); int basePC = (interpreter->nextPC()); interpreter->addOp(CondJmpRelativeIfFalse::f); interpreter->addOperand(condOp); int destFalse = interpreter->addOperand(0); interpreter->endOp(); // true way of working int op1 = child(1)->buildInterpreter(interpreter); if (type().isFP()) interpreter->addOp(getTemplatizedOp(dimout)); else if (type().isString()) interpreter->addOp(AssignStrOp::f); else assert(false); interpreter->addOperand(op1); int dataOutTrue = interpreter->addOperand(-1); interpreter->endOp(false); // jump past false way of working interpreter->addOp(JmpRelative::f); int destEnd = interpreter->addOperand(0); interpreter->endOp(); // record start of false condition int child2PC = interpreter->nextPC(); // false way of working int op2 = child(2)->buildInterpreter(interpreter); if (type().isFP()) interpreter->addOp(getTemplatizedOp(dimout)); else if (type().isString()) interpreter->addOp(AssignStrOp::f); else assert(false); interpreter->addOperand(op2); int dataOutFalse = interpreter->addOperand(-1); interpreter->endOp(false); // patch up relative jumps interpreter->opData[destFalse] = child2PC - basePC; interpreter->opData[destEnd] = interpreter->nextPC() - (child2PC - 1); // allocate output if (type().isFP()) opOut = interpreter->allocFP(type().dim()); else if (type().isString()) opOut = interpreter->allocPtr(); else assert(false); // patch outputs on assigns in each condition interpreter->opData[dataOutTrue] = opOut; interpreter->opData[dataOutFalse] = opOut; return opOut; } int ExprBlockNode::buildInterpreter(Interpreter* interpreter) const { assert(numChildren() == 2); child(0)->buildInterpreter(interpreter); return child(1)->buildInterpreter(interpreter); } int ExprModuleNode::buildInterpreter(Interpreter* interpreter) const { int lastIdx = 0; for (int c = 0; c < numChildren(); c++) { if (c == numChildren() - 1) interpreter->setPCStart(interpreter->nextPC()); lastIdx = child(c)->buildInterpreter(interpreter); } return lastIdx; } } // namespace KSeExpr kseexpr-4.0.4.0/src/KSeExpr/Interpreter.h0000644000000000000240000001077314156102631020135 0ustar00rootroot00000000000000// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc. // SPDX-License-Identifier: LicenseRef-Apache-2.0 // SPDX-FileCopyrightText: 2020 L. E. Segovia // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "VarBlock.h" #include #include #include namespace KSeExpr { class ExprLocalVar; //! Promotes a FP[1] to FP[d] template struct Promote { // TODO: this needs a name that is prefixed by Se! static int f(int* opData, double* fp, char**, std::vector&) { int posIn = opData[0]; int posOut = opData[1]; for (int k = posOut; k < posOut + d; k++) fp[k] = fp[posIn]; return 1; } }; /// Non-LLVM manual interpreter. This is a simple computation machine. There are no dynamic activation records /// just fixed locations, because we have no recursion! class Interpreter { public: /// Double data (constants and evaluated) std::vector d; /// constant and evaluated pointer data std::vector s; /// Ooperands to op std::vector opData; /// Not needed for eval only building using VarToLoc = std::map; VarToLoc varToLoc{}; /// Op function pointer arguments are (int* currOpData,double* currD,char** c,std::stack& callStackurrS) using OpF = int (*)(int *, double *, char **, std::vector &); std::vector > ops; std::vector callStack; private: bool _startedOp{}; int _pcStart{}; public: Interpreter() { s.push_back(nullptr); // reserved for double** of variable block s.push_back(nullptr); // reserved for double** of variable block } /// Return the position that the next instruction will be placed at int nextPC() const { return static_cast(ops.size()); } ///! adds an operator to the program (pointing to the data at the current location) int addOp(OpF op) { if (_startedOp) { assert(false && "addOp called within another addOp"); } _startedOp = true; int pc = static_cast(ops.size()); ops.emplace_back(op, static_cast(opData.size())); return pc; } void endOp(bool execute = true) { _startedOp = false; if (execute) { double* fp = &d[0]; char** str = &s[0]; int pc = static_cast(ops.size()) - 1; const std::pair& op = ops[pc]; int* opCurr = &opData[0] + op.second; pc += op.first(opCurr, fp, str, callStack); } } ///! Adds an operand. Note this should be done after doing the addOp! int addOperand(int param) { assert(_startedOp); int ret = static_cast(opData.size()); opData.push_back(param); return ret; } ///! Allocate a floating point set of data of dimension n int allocFP(int n) { int ret = static_cast(d.size()); for (int k = 0; k < n; k++) d.push_back(0); return ret; } /// Allocate a pointer location (can be anything, but typically space for char*) int allocPtr() { int ret = static_cast(s.size()); s.push_back(0); return ret; } /// Evaluate program void eval(VarBlock* varBlock, bool debug = false); /// Debug by printing program void print(int pc = -1) const; void setPCStart(int pcStart) { _pcStart = pcStart; } }; //! Return the function f encapsulated in class T for the dynamic i converted to a static d. template