[
  {
    "path": ".github/FUNDING.yml",
    "content": "custom: https://libreart.info/en/projects/gmic\n"
  },
  {
    "path": ".gitignore",
    "content": "Makefile\n*.a\n*.o\n*.pro.user\n*.pro.user.*\n*.so\n*~\n.moc/*\n.obj/*\n.qmake.stash\n.qrc/*\n.ui/*\n./Makefile\ngmic_gimp_qt\ngmic_paintdotnet_qt\ngmic_qt\nCMakeLists.txt.user\n.rsync-exclude\ntranslations/*.qm\ntranslations/filters/*.qm\ntranslations/filters/*.ts\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: cpp\n\ngit:\n  depth: 1\n\nos:\n  - linux\n\nbranches:\n  only:\n    - master\n    - new_api\n    - devel\n\ncompiler:\n  - gcc\n\nmatrix:\n  include:\n    - os: linux\n      dist: bionic\n      env:\n        - BUILD=\"qmake\" GMIC_HOST=\"all\"\n    - os: linux\n      dist: focal\n      env:\n        - BUILD=\"qmake\" GMIC_HOST=\"all\"\n    - os: linux\n      dist: bionic\n      env:\n        - BUILD=\"cmake\" GMIC_HOST=\"none\"\n    - os: linux\n      dist: bionic\n      env:\n        - BUILD=\"cmake\" GMIC_HOST=\"gimp\"\n  fast_finish: true\n\nbefore_install:\n  - date -u\n  - uname -a\n  - git clone --depth=1 https://github.com/dtschump/gmic.git gmic-clone\n  - make -C gmic-clone/src CImg.h gmic_stdlib.h\n  - if [ -z \"$TRAVIS_OS_NAME\" -o \"$TRAVIS_OS_NAME\" = \"linux\" ]; then\n        sudo apt-get update;\n    fi;\n\ninstall:\n  - if [ -z \"$TRAVIS_OS_NAME\" -o \"$TRAVIS_OS_NAME\" = \"linux\" ]; then\n       sudo apt-get install --allow-unauthenticated gdb libfftw3-dev zlib1g-dev libcurl4-openssl-dev libx11-dev libgimp2.0 libgegl-dev libgimp2.0-dev qt5-default qt5-qmake qtbase5-dev qttools5-dev qttools5-dev-tools;\n    fi;\n\nscript:\n  - g++ --version\n  - if [ -z \"$TRAVIS_OS_NAME\" -o \"$TRAVIS_OS_NAME\" = \"linux\" ]; then\n       travis_wait 45 ./scripts/travis_build_${BUILD}.sh;\n    fi;\n"
  },
  {
    "path": "CMakeLists.txt",
    "content": "project(gmic-qt)\n\nmessage(STATUS \"Using CMake version: ${CMAKE_VERSION}\")\n\ncmake_minimum_required(VERSION 3.10.0 FATAL_ERROR)\nLIST (APPEND CMAKE_MODULE_PATH \"${CMAKE_SOURCE_DIR}/cmake/modules\")\ninclude(FeatureSummary)\ninclude(FindPkgConfig)\n\nset(CMAKE_CXX_STANDARD 11)\nadd_definitions(-Dcimg_use_cpp11=1)\n\noption(BUILD_WITH_QT6 \"Build with Qt6, else Qt5\" OFF)\n\nif(BUILD_WITH_QT6)\n    set(MIN_QT_VERSION 6.5.0)\nelse()\n    set(MIN_QT_VERSION 5.2.0)\nendif()\n\nset(CMAKE_AUTOMOC ON)\nset(CMAKE_AUTOUIC OFF)\nset(CMAKE_AUTORCC ON)\nset(CMAKE_INCLUDE_CURRENT_DIR ON)\nset(EXTRA_LIBRARIES)\n\nif (NOT CMAKE_BUILD_TYPE)\n    set(CMAKE_BUILD_TYPE \"Release\")\nendif()\n\nmessage(\"Build type is \" ${CMAKE_BUILD_TYPE})\n\nset (GMIC_QT_HOST \"gimp\" CACHE STRING \"Define for which host gmic-qt will be built: gimp, gimp3 (experimental), none, paintdotnet or 8bf.\")\nif (${GMIC_QT_HOST} STREQUAL \"none\")\n  message(\"Building standalone version.\")\nelse()\n  message(\"Building for target host application: \" ${GMIC_QT_HOST})\nendif()\n\noption(ENABLE_SYSTEM_GMIC \"Find GMIC shared library installed on the system\" ON)\n\nif (ENABLE_SYSTEM_GMIC)\n  option(ENABLE_DYNAMIC_LINKING \"Dynamically link the binaries to the GMIC shared library\" ON)\nelse()\n  option(ENABLE_DYNAMIC_LINKING \"Dynamically link the binaries to the GMIC shared library\" OFF)\n\n  set (GMIC_LIB_PATH \"${GMIC_PATH}\" CACHE STRING \"Define the path to the GMIC shared library\")\n  if(EXISTS \"${CMAKE_CURRENT_SOURCE_DIR}/../src/gmic.cpp\")\n  set (GMIC_PATH \"${CMAKE_CURRENT_SOURCE_DIR}/../src\" CACHE STRING \"Define the path to the gmic headers\")\n  else()\n  set (GMIC_PATH \"${CMAKE_CURRENT_SOURCE_DIR}/../gmic/src\" CACHE STRING \"Define the path to the gmic headers\")\n  endif()\n\n  message(\"G'MIC path: \" ${GMIC_PATH})\nendif()\n\noption(ENABLE_CURL \"Add support for curl\" ON)\n\noption(ENABLE_ASAN \"Enable -fsanitize=address (if debug build)\" ON)\noption(ENABLE_FFTW3 \"Enable FFTW3 library support\" ON)\n\ninclude(CheckIPOSupported)\n\ncheck_ipo_supported(RESULT HAVE_LTO LANGUAGES CXX)\n\nif (HAVE_LTO)\noption(ENABLE_LTO \"Enable Link Time Optimizer\" OFF)\nendif()\n\nif (MSVC)\n  option(ENABLE_CFG \"Enable Control Flow Guard (MSVC)\" ON)\n  add_definitions(-D__PRETTY_FUNCTION__=__FUNCSIG__)\nendif()\n\nif (CMAKE_BUILD_TYPE STREQUAL \"Debug\")\n    set(ENABLE_LTO OFF FORCE)\nendif()\n\nif (NOT ENABLE_SYSTEM_GMIC)\n  #\n  # Look for G'MIC repository\n  #\n  get_filename_component(GMIC_ABSOLUTE_PATH ${GMIC_PATH} ABSOLUTE BASEDIR ${CMAKE_SOURCE_DIR})\n  if (EXISTS ${GMIC_ABSOLUTE_PATH}/gmic.cpp)\n    message(\"Found G'MIC repository\")\n  else()\n    get_filename_component(TARGET_CLONE_DIR ${GMIC_ABSOLUTE_PATH}/.. ABSOLUTE)\n    message(\"\")\n    message(\"Cannot find G'MIC repository in \" ${GMIC_ABSOLUTE_PATH} )\n    message(\"\")\n    message(\"You should try:\")\n    message(\"\")\n    message(\"   git clone https://github.com/dtschump/gmic.git \" ${TARGET_CLONE_DIR}/gmic )\n    message(\"\")\n    message(FATAL_ERROR \"\\nG'MIC repository not found\")\n  endif()\n\n  #\n  # Look for CImg.h and gmic_stdlib_community.h\n  #\n  set(GMIC_FILES CImg.h gmic_stdlib_community.h)\n  foreach(F ${GMIC_FILES})\n  if(EXISTS ${GMIC_ABSOLUTE_PATH}/${F})\n      message(\"Found \" ${GMIC_PATH}/${F})\n  else()\n      message(${F} \" not found\")\n      execute_process(COMMAND make -C ${GMIC_ABSOLUTE_PATH} ${F})\n      if(EXISTS ${GMIC_ABSOLUTE_PATH}/${F})\n      message(\"Found \" ${GMIC_PATH}/${F})\n      else()\n      message(FATAL_ERROR \"\\nCannot obtain \" ${GMIC_PATH}/${F})\n      endif()\n  endif()\n  endforeach()\n\n  #\n  # Ensure that gmic and CImg are the same version\n  #\n  file(STRINGS ${GMIC_ABSOLUTE_PATH}/CImg.h CIMG_VERSION REGEX \"cimg_version \")\n  string(REGEX REPLACE \".*cimg_version \" \"\" CIMG_VERSION ${CIMG_VERSION})\n  message(\"CImg version is [\" ${CIMG_VERSION} \"]\")\n\n  file(STRINGS ${GMIC_ABSOLUTE_PATH}/gmic.h GMIC_VERSION REGEX \"gmic_version \")\n  string(REGEX REPLACE \".*gmic_version \" \"\" GMIC_VERSION ${GMIC_VERSION})\n  message(\"G'MIC version is [\" ${GMIC_VERSION} \"]\")\n\n  if (NOT(${GMIC_VERSION} EQUAL ${CIMG_VERSION}))\n  message(FATAL_ERROR \"\\nVersion numbers of files 'gmic.h' (\" ${GMIC_VERSION} \") and 'CImg.h' (\" ${CIMG_VERSION} \") mismatch\")\n  endif()\nendif()\n\n\noption(PRERELEASE \"Set to ON makes this a prelease build\")\nif (${PRERELEASE})\n    string(TIMESTAMP PRERELEASE_DATE %y%m%d)\n    message(\"Prelease date is \" ${PRERELEASE_DATE})\n    add_definitions(-Dgmic_prerelease=\"${PRERELEASE_DATE}\")\nendif()\n\noption(DRMINGW \"Set to ON enables the drmingw debugger.\")\nif (${DRMINGW})\n    add_definitions(-DDRMINGW)\nendif()\n\n\n# Required packages\n\n#\n# Gmic\n#\nif (ENABLE_SYSTEM_GMIC)\n  find_package(Gmic REQUIRED CONFIG)\nendif (ENABLE_SYSTEM_GMIC)\n\n#\n# Threads\n#\nfind_package(Threads REQUIRED)\n\nif(BUILD_WITH_QT6)\n\n    #\n    # Qt6\n    #\n    find_package(Qt6 ${MIN_QT_VERSION}\n            REQUIRED COMPONENTS\n            Core\n            Gui\n            Widgets\n            Network\n    )\n\n    #\n    # For the translations\n    #\n    find_package(Qt6LinguistTools REQUIRED)\n\n    set(QT_VERSION_MAJOR 6)\n\nelse()\n\n    #\n    # Qt5\n    #\n    find_package(Qt5 ${MIN_QT_VERSION}\n            REQUIRED COMPONENTS\n            Core\n            Gui\n            Widgets\n            Network\n    )\n\n    #\n    # For the translations\n    #\n    find_package(Qt5LinguistTools REQUIRED)\n\n    set(QT_VERSION_MAJOR 5)\n\nendif()\n\n#\n# PNG\n#\nfind_package(PNG REQUIRED)\nadd_definitions(${PNG_DEFINITIONS})\nadd_definitions(-Dcimg_use_png)\ninclude_directories(SYSTEM ${PNG_INCLUDE_DIR})\nif (APPLE)\n    # this is not added correctly on OSX -- see http://forum.kde.org/viewtopic.php?f=139&t=101867&p=221242#p221242\n    include_directories(SYSTEM ${PNG_INCLUDE_DIR})\nendif()\n\n#\n# ZLIB\n#\nfind_package(ZLIB REQUIRED)\nadd_definitions(-Dcimg_use_zlib)\ninclude_directories(SYSTEM ${ZLIB_INCLUDE_DIRS} )\n\n#\n# FFTW3\n#\nif (ENABLE_FFTW3)\n  find_package(FFTW3 REQUIRED)\n  add_definitions(-Dcimg_use_fftw3 )\n  include_directories(${FFTW3_INCLUDE_DIR})\n\n  # Detect\n  include(CheckCXXSourceCompiles)\n  set(CMAKE_REQUIRED_INCLUDES ${FFTW3_INCLUDE_DIR})\n  set(CMAKE_REQUIRED_LIBRARIES ${FFTW3_LIBRARIES})\n  check_cxx_source_compiles(\"\n      #include <fftw3.h>\n\n      int main() {\n          fftw_init_threads();\n      }\n  \" HAVE_FFTW3_THREADS)\n\n  if(HAVE_FFTW3_THREADS)\n    message(STATUS \"FFTW threads Found\")\n    list(APPEND EXTRA_LIBRARIES ${FFTW3_THREADS_LIBRARIES})\n  else()\n    add_definitions(-Dcimg_use_fftw3_singlethread)\n  endif()\nendif()\n\n#\n# CURL\n#\nif(ENABLE_CURL)\n    find_package(CURL)\n    if (CURL_FOUND)\n        add_definitions(-Dcimg_use_curl)\n        include_directories(SYSTEM ${CURL_INCLUDE_DIRS} )\n    endif()\nendif()\n\n#\n# Test for OpenMP\n#\nfind_package(OpenMP 2.0)\nset_package_properties(OpenMP PROPERTIES\n    DESCRIPTION \"A low-level parallel execution library\"\n    URL \"http://openmp.org/wp/\"\n    TYPE OPTIONAL\n    PURPOSE \"Optionally used by gmic-qt\")\n\nif (OpenMP_FOUND)\n    message(STATUS \"G'Mic: using OpenMP ${OpenMP_CXX_VERSION}\")\n    link_libraries(OpenMP::OpenMP_CXX)\n    add_definitions(-Dcimg_use_openmp)\nendif()\n\n#\n# LTO option\n#\n\nif (ENABLE_LTO)\n    message(STATUS \"Link Time Optimizer enabled\")\n    set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)\nendif()\n\n#\n# Enable CFG\n#\nif (MSVC)\n    set(CMAKE_EXE_LINKER_FLAGS \"${CMAKE_EXE_LINKER_FLAGS} /STACK:16777216\")\n    set(CMAKE_SHARED_LINKER_FLAGS \"${CMAKE_SHARED_LINKER_FLAGS} /STACK:16777216\")\n    set(CMAKE_MODULE_LINKER_FLAGS \"${CMAKE_MODULE_LINKER_FLAGS} /STACK:16777216\")\n    if (ENABLE_CFG)\n        add_compile_options(/guard:CF)\n        add_link_options(/GUARD:CF)\n    endif()\nelseif(WIN32)\n    set(CMAKE_EXE_LINKER_FLAGS \"${CMAKE_EXE_LINKER_FLAGS} -Wl,--stack,16777216\")\n    set(CMAKE_SHARED_LINKER_FLAGS \"${CMAKE_SHARED_LINKER_FLAGS} -Wl,--stack,16777216\")\n    set(CMAKE_MODULE_LINKER_FLAGS \"${CMAKE_MODULE_LINKER_FLAGS} -Wl,--stack,16777216\")\nendif()\n\n#\n# add all defines\n#\n\nset(gmic_qt_LIBRARIES\n        Qt${QT_VERSION_MAJOR}::Core\n        Qt${QT_VERSION_MAJOR}::Widgets\n        Qt${QT_VERSION_MAJOR}::Gui\n        Qt${QT_VERSION_MAJOR}::Network\n        ${PNG_LIBRARIES}\n        ${FFTW3_LIBRARIES}\n        ${ZLIB_LIBRARIES}\n        ${EXTRA_LIBRARIES}\n)\n\nif(ENABLE_CURL)\n    if (CURL_FOUND)\n        set(gmic_qt_LIBRARIES\n            ${gmic_qt_LIBRARIES}\n            ${CURL_LIBRARIES}\n        )\n    endif()\nendif()\n\nadd_definitions(-Dgmic_core)\nadd_definitions(-Dgmic_community)\nadd_definitions(-Dcimg_use_abort)\nadd_definitions(-Dgmic_is_parallel)\nadd_definitions(-Dgmic_gui)\nadd_definitions(-Dcimg_use_abort)\nadd_definitions(-Dcimg_appname=\\\"gmic\\\")\n\nif (UNIX)\n    add_definitions(-D_IS_UNIX_)\n    if(ANDROID)\n        add_definitions(-Dcimg_display=0)\n    elseif(NOT APPLE)\n        add_definitions(-Dcimg_display=1)\n        add_definitions(-Dcimg_use_vt100)\n        find_package(X11)\n        set(gmic_qt_LIBRARIES\n            ${gmic_qt_LIBRARIES}\n            ${X11_LIBRARIES} # XXX: Search for X11: Wayland is coming!\n        )\n    endif()\nendif()\n\nif (APPLE)\n    add_definitions(-Dcimg_display=0)\n    add_definitions(-D_IS_MACOS_)\n    set(CMAKE_MACOSX_RPATH 1)\n    set(BUILD_WITH_INSTALL_RPATH 1)\n    add_definitions(-mmacosx-version-min=10.9 -Wno-macro-redefined -Wno-deprecated-register)\nendif()\n\nif (WIN32)\n    add_definitions(-Dcimg_display=2)\n    add_definitions(-DPSAPI_VERSION=1)\n    add_definitions(-D_IS_WINDOWS_)\n    if (MSVC)\n      add_definitions(-D_CRT_SECURE_NO_WARNINGS)\n      add_compile_options(/wd4267)\n    endif()\n    set(gmic_qt_LIBRARIES\n        ${gmic_qt_LIBRARIES}\n        Threads::Threads psapi gdi32\n    )\nendif()\n\nSET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)\nSET(CMAKE_INSTALL_RPATH \"$ORIGIN/\")\n\nif (CMAKE_BUILD_TYPE STREQUAL \"Debug\")\n    add_definitions(-D_GMIC_QT_DEBUG_)\n    if(ENABLE_ASAN)\n      set(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -fsanitize=address\")\n      set(CMAKE_EXE_LINKER_FLAGS \"${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address\")\n    endif(ENABLE_ASAN)\nelseif (CMAKE_BUILD_TYPE STREQUAL \"Release\")\n    add_definitions(-DQT_NO_DEBUG_OUTPUT)\n    if (MSVC)\n      set(CMAKE_CXX_FLAGS_RELEASE \"${CMAKE_CXX_FLAGS_RELEASE} /fp:fast /Oi\")\n    else()\n      string(REPLACE \"-O2\" \"\" CMAKE_CXX_FLAGS_RELEASE \"${CMAKE_CXX_FLAGS_RELEASE}\")\n      string(REPLACE \"-O3\" \"\" CMAKE_CXX_FLAGS_RELEASE \"${CMAKE_CXX_FLAGS_RELEASE}\")\n      set(CMAKE_CXX_FLAGS_RELEASE \"${CMAKE_CXX_FLAGS_RELEASE} -O3\")\n    endif()\n    if (NOT MSVC)\n      set(CMAKE_EXE_LINKER_FLAGS \"${CMAKE_EXE_LINKER_FLAGS} -s\")\n    endif()\n    if (WIN32 AND NOT MSVC)\n      set(CMAKE_EXE_LINKER_FLAGS \"${CMAKE_EXE_LINKER_FLAGS} -mwindows\")\n    endif()\nelseif (CMAKE_BUILD_TYPE STREQUAL \"RelWithDebInfo\")\n    add_definitions(-DQT_NO_DEBUG_OUTPUT)\n    if(MSVC)\n      string(REPLACE \"Ob1\" \"Ob2\" CMAKE_CXX_FLAGS_RELWITHDEBINFO \"${CMAKE_CXX_FLAGS_RELWITHDEBINFO}\")\n      set(CMAKE_CXX_FLAGS_RELWITHDEBINFO \"${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /fp:fast /Oi\")\n    else()\n      string(REPLACE \"-O2\" \"\" CMAKE_CXX_FLAGS_RELWITHDEBINFO \"${CMAKE_CXX_FLAGS_RELWITHDEBINFO}\")\n      string(REPLACE \"-O3\" \"\" CMAKE_CXX_FLAGS_RELWITHDEBINFO \"${CMAKE_CXX_FLAGS_RELWITHDEBINFO}\")\n      if (NOT ENABLE_SYSTEM_GMIC)\n          set_source_files_properties(${GMIC_PATH}/gmic.cpp PROPERTIES COMPILE_FLAGS \"-O3\")\n      endif (NOT ENABLE_SYSTEM_GMIC)\n      set(CMAKE_CXX_FLAGS_RELWITHDEBINFO \"${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2\")\n    endif()\nelse()\n    message(FATAL_ERROR \"Build type not recognized (${CMAKE_BUILD_TYPE})\")\nendif()\n\nif (NOT ENABLE_SYSTEM_GMIC)\n    include_directories(${GMIC_PATH})\nendif (NOT ENABLE_SYSTEM_GMIC)\ninclude_directories(${CMAKE_SOURCE_DIR}/src)\n\nset (gmic_qt_SRCS\n  src/ClickableLabel.h\n  src/Common.h\n  src/CroppedActiveLayerProxy.h\n  src/CroppedImageListProxy.h\n  src/DialogSettings.h\n  src/FilterParameters/AbstractParameter.h\n  src/FilterParameters/BoolParameter.h\n  src/FilterParameters/ButtonParameter.h\n  src/FilterParameters/ChoiceParameter.h\n  src/FilterParameters/ColorParameter.h\n  src/FilterParameters/ConstParameter.h\n  src/FilterParameters/CustomDoubleSpinBox.h\n  src/FilterParameters/CustomSpinBox.h\n  src/FilterParameters/FileParameter.h\n  src/FilterParameters/FilterParametersWidget.h\n  src/FilterParameters/FloatParameter.h\n  src/FilterParameters/FolderParameter.h\n  src/FilterParameters/IntParameter.h\n  src/FilterParameters/LinkParameter.h\n  src/FilterParameters/MultilineTextParameterWidget.h\n  src/FilterParameters/NoteParameter.h\n  src/FilterParameters/PointParameter.h\n  src/FilterParameters/SeparatorParameter.h\n  src/FilterParameters/TextParameter.h\n  src/FilterSelector/FavesModel.h\n  src/FilterSelector/FavesModelReader.h\n  src/FilterSelector/FavesModelWriter.h\n  src/FilterSelector/FiltersModelBinaryReader.h\n  src/FilterSelector/FiltersModelBinaryWriter.h\n  src/FilterSelector/FiltersModel.h\n  src/FilterSelector/FiltersModelReader.h\n  src/FilterSelector/FiltersPresenter.h\n  src/FilterSelector/FiltersView/FiltersView.h\n  src/FilterSelector/FiltersView/FilterTreeAbstractItem.h\n  src/FilterSelector/FiltersView/FilterTreeFolder.h\n  src/FilterSelector/FiltersView/FilterTreeItemDelegate.h\n  src/FilterSelector/FiltersView/FilterTreeItem.h\n  src/FilterSelector/FiltersView/TreeView.h\n  src/FilterSelector/FiltersVisibilityMap.h\n  src/FilterSelector/FilterTagMap.h\n  src/FilterGuiDynamismCache.h\n  src/FilterSyncRunner.h\n  src/FilterTextTranslator.h\n  src/FilterThread.h\n  src/Globals.h\n  src/GmicProcessor.h\n  src/GmicQt.h\n  src/GmicStdlib.h\n  src/HeadlessProcessor.h\n  src/Host/GmicQtHost.h\n  src/HtmlTranslator.h\n  src/IconLoader.h\n  src/ImageTools.h\n  src/InputOutputState.h\n  src/KeypointList.h\n  src/LanguageSettings.h\n  src/LayersExtentProxy.h\n  src/Logger.h\n  src/MainWindow.h\n  src/Misc.h\n  src/OverrideCursor.h\n  src/ParametersCache.h\n  src/PersistentMemory.h\n  src/Settings.h\n  src/SourcesWidget.h\n  src/Tags.h\n  src/TimeLogger.h\n  src/Updater.h\n  src/Utils.h\n  src/Widgets/InOutPanel.h\n  src/Widgets/LanguageSelectionWidget.h\n  src/Widgets/PreviewWidget.h\n  src/Widgets/ProgressInfoWidget.h\n  src/Widgets/ProgressInfoWindow.h\n  src/Widgets/SearchFieldWidget.h\n  src/Widgets/VisibleTagSelector.h\n  src/Widgets/ZoomLevelSelector.h\n  src/ZoomConstraint.h\n)\n\nif (NOT ENABLE_SYSTEM_GMIC)\n    set(gmic_qt_SRCS\n        ${gmic_qt_SRCS}\n        ${GMIC_PATH}/gmic.h\n        ${GMIC_PATH}/CImg.h\n        ${GMIC_PATH}/gmic_stdlib_community.h\n    )\nendif()\n\nset(gmic_qt_SRCS\n  ${gmic_qt_SRCS}\n  src/ClickableLabel.cpp\n  src/Common.cpp\n  src/CroppedActiveLayerProxy.cpp\n  src/CroppedImageListProxy.cpp\n  src/DialogSettings.cpp\n  src/FilterParameters/AbstractParameter.cpp\n  src/FilterParameters/BoolParameter.cpp\n  src/FilterParameters/ButtonParameter.cpp\n  src/FilterParameters/ChoiceParameter.cpp\n  src/FilterParameters/ColorParameter.cpp\n  src/FilterParameters/ConstParameter.cpp\n  src/FilterParameters/CustomDoubleSpinBox.cpp\n  src/FilterParameters/CustomSpinBox.cpp\n  src/FilterParameters/FileParameter.cpp\n  src/FilterParameters/FilterParametersWidget.cpp\n  src/FilterParameters/FloatParameter.cpp\n  src/FilterParameters/FolderParameter.cpp\n  src/FilterParameters/IntParameter.cpp\n  src/FilterParameters/LinkParameter.cpp\n  src/FilterParameters/MultilineTextParameterWidget.cpp\n  src/FilterParameters/NoteParameter.cpp\n  src/FilterParameters/PointParameter.cpp\n  src/FilterParameters/SeparatorParameter.cpp\n  src/FilterParameters/TextParameter.cpp\n  src/FilterSelector/FavesModel.cpp\n  src/FilterSelector/FavesModelReader.cpp\n  src/FilterSelector/FavesModelWriter.cpp\n  src/FilterSelector/FiltersModelBinaryReader.cpp\n  src/FilterSelector/FiltersModelBinaryWriter.cpp\n  src/FilterSelector/FiltersModel.cpp\n  src/FilterSelector/FiltersModelReader.cpp\n  src/FilterSelector/FiltersPresenter.cpp\n  src/FilterSelector/FiltersView/FiltersView.cpp\n  src/FilterSelector/FiltersView/FilterTreeAbstractItem.cpp\n  src/FilterSelector/FiltersView/FilterTreeFolder.cpp\n  src/FilterSelector/FiltersView/FilterTreeItem.cpp\n  src/FilterSelector/FiltersView/FilterTreeItemDelegate.cpp\n  src/FilterSelector/FiltersView/TreeView.cpp\n  src/FilterSelector/FiltersVisibilityMap.cpp\n  src/FilterSelector/FilterTagMap.cpp\n  src/FilterGuiDynamismCache.cpp\n  src/FilterSyncRunner.cpp\n  src/FilterTextTranslator.cpp\n  src/FilterThread.cpp\n  src/Globals.cpp\n  src/GmicProcessor.cpp\n  src/GmicQt.cpp\n  src/GmicStdlib.cpp\n  src/HeadlessProcessor.cpp\n  src/HtmlTranslator.cpp\n  src/IconLoader.cpp\n  src/ImageTools.cpp\n  src/InputOutputState.cpp\n  src/KeypointList.cpp\n  src/LanguageSettings.cpp\n  src/LayersExtentProxy.cpp\n  src/Logger.cpp\n  src/MainWindow.cpp\n  src/Misc.cpp\n  src/OverrideCursor.cpp\n  src/ParametersCache.cpp\n  src/PersistentMemory.cpp\n  src/Settings.cpp\n  src/SourcesWidget.cpp\n  src/Tags.cpp\n  src/TimeLogger.cpp\n  src/Updater.cpp\n  src/Utils.cpp\n  src/Widgets/InOutPanel.cpp\n  src/Widgets/LanguageSelectionWidget.cpp\n  src/Widgets/PreviewWidget.cpp\n  src/Widgets/ProgressInfoWidget.cpp\n  src/Widgets/ProgressInfoWindow.cpp\n  src/Widgets/SearchFieldWidget.cpp\n  src/Widgets/VisibleTagSelector.cpp\n  src/Widgets/ZoomLevelSelector.cpp\n)\n\nset (gmic_qt_FORMS\n  ui/dialogsettings.ui\n  ui/filtersview.ui\n  ui/headlessprogressdialog.ui\n  ui/inoutpanel.ui\n  ui/languageselectionwidget.ui\n  ui/mainwindow.ui\n  ui/multilinetextparameterwidget.ui\n  ui/progressinfowidget.ui\n  ui/progressinfowindow.ui\n  ui/SearchFieldWidget.ui\n  ui/sourceswidget.ui\n  ui/zoomlevelselector.ui\n)\n\nif(ENABLE_DYNAMIC_LINKING)\n  set(CMAKE_SKIP_RPATH TRUE)\n  # G'MIC-Qt needs visibility into the private symbols defined\n  # by the gmic.cpp plugin. However, this is only possible\n  # if the library is static OR if it's dynamic and built by\n  # a compiler that supports .so-style exports.\n  if (TARGET libgmicstatic OR MSVC OR NOT ENABLE_SYSTEM_GMIC)\n    set(gmic_qt_LIBRARIES\n      ${gmic_qt_LIBRARIES}\n      libgmicstatic\n    )\n  elseif(TARGET libgmic)\n    set(gmic_qt_LIBRARIES\n      ${gmic_qt_LIBRARIES}\n      libgmic\n    )\n  elseif(GMIC_LIB_PATH)\n    set(gmic_qt_LIBRARIES\n      ${gmic_qt_LIBRARIES}\n      \"gmic\"\n    )\n  else()\n    message(FATAL_ERROR \"No G'MIC library is available for linking. Please build libgmic as a static library.\")\n  endif()\n  if (NOT ENABLE_SYSTEM_GMIC)\n    if (GMIC_LIB_PATH)\n      link_directories(${GMIC_LIB_PATH})\n      # Inject the G'MIC CImg plugin.\n      include_directories(../src)\n    else()\n      # Mimic an external G'MIC library build for catching link ABI errors.\n      add_library(libgmicstatic STATIC ../src/gmic.cpp)\n      target_include_directories(libgmicstatic PUBLIC ../src)\n      # We need internal access into the gmic-core API.\n      target_compile_definitions(libgmicstatic PUBLIC gmic_core)\n      set_target_properties(libgmicstatic\n        PROPERTIES\n          AUTOMOC OFF\n      )\n      target_link_libraries(libgmicstatic PUBLIC\n        ${PNG_LIBRARIES}\n        ${FFTW3_LIBRARIES}\n        ${ZLIB_LIBRARIES}\n        ${CURL_LIBRARIES}\n        ${EXTRA_LIBRARIES})\n    endif()\n  else()\n    # Inject the G'MIC CImg plugin.\n    include_directories(../src)\n  endif()\nelse(ENABLE_DYNAMIC_LINKING)\n  set(gmic_qt_SRCS\n    ${gmic_qt_SRCS}\n    ${GMIC_PATH}/gmic.cpp\n    )\nendif(ENABLE_DYNAMIC_LINKING)\n\nmessage(\"Producing translation .qm files\")\nexecute_process(COMMAND make WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/translations OUTPUT_QUIET)\nmessage(\"Producing filter translation .qm files\")\nexecute_process(COMMAND make WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/translations/filters OUTPUT_QUIET)\n\nset(gmic_qt_QRC\n    gmic_qt.qrc\n    translations.qrc\n    wip_translations.qrc\n)\n\nif (${GMIC_QT_HOST} STREQUAL \"gimp\" OR ${GMIC_QT_HOST} STREQUAL \"gimp3\")\n    if (${GMIC_QT_HOST} STREQUAL \"gimp3\")\n        set(TARGET_GIMP_VERSION 3)\n    else()\n        set(TARGET_GIMP_VERSION 2)\n    endif()\n\n    find_package(PkgConfig REQUIRED)\n    pkg_check_modules(GIMP REQUIRED gimp-${TARGET_GIMP_VERSION}.0 IMPORTED_TARGET)\n    # CMake does not support passing --define-variable through pkg_get_variable.\n    execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} gimp-${TARGET_GIMP_VERSION}.0 --define-variable=prefix=${CMAKE_INSTALL_PREFIX} --variable gimplibdir OUTPUT_VARIABLE GIMP_PKGLIBDIR OUTPUT_STRIP_TRAILING_WHITESPACE)\n\n    set (gmic_qt_SRCS ${gmic_qt_SRCS} src/Host/Gimp/host_gimp.cpp)\n\n    if(BUILD_WITH_QT6)\n\n        qt6_wrap_ui(gmic_qt_SRCS ${gmic_qt_FORMS})\n\n    else()\n\n        qt5_wrap_ui(gmic_qt_SRCS ${gmic_qt_FORMS})\n\n    endif()\n\n    add_definitions(-DGMIC_HOST=gimp -DGIMP_DISABLE_DEPRECATED)\n    add_executable(gmic_gimp_qt ${gmic_qt_SRCS} ${gmic_qt_QRC})\n    target_link_libraries(\n      gmic_gimp_qt\n      PRIVATE\n      PkgConfig::GIMP\n      ${gmic_qt_LIBRARIES}\n      )\n    install(TARGETS gmic_gimp_qt RUNTIME DESTINATION \"${GIMP_PKGLIBDIR}/plug-ins/gmic_gimp_qt\")\n\nelseif (${GMIC_QT_HOST} STREQUAL \"none\")\n\n  set (gmic_qt_SRCS ${gmic_qt_SRCS}\n    src/Host/None/host_none.cpp\n    src/Host/None/ImageDialog.h\n    src/Host/None/ImageDialog.cpp\n    src/Host/None/JpegQualityDialog.h\n    src/Host/None/JpegQualityDialog.cpp\n    )\n  set(gmic_qt_FORMS ${gmic_qt_FORMS}\n    src/Host/None/jpegqualitydialog.ui\n    )\n\n  if(BUILD_WITH_QT6)\n\n    qt6_wrap_ui(gmic_qt_SRCS ${gmic_qt_FORMS})\n\n  else()\n\n    qt5_wrap_ui(gmic_qt_SRCS ${gmic_qt_FORMS})\n\n  endif()\n\n  add_definitions(-DGMIC_HOST=standalone)\n  add_executable(gmic_qt ${gmic_qt_SRCS} ${gmic_qt_QRC})\n  target_link_libraries(gmic_qt PRIVATE ${gmic_qt_LIBRARIES})\n  install(TARGETS gmic_qt RUNTIME DESTINATION bin)\n\nelseif (${GMIC_QT_HOST} STREQUAL \"paintdotnet\")\n\n  set (gmic_qt_SRCS ${gmic_qt_SRCS} src/Host/PaintDotNet/host_paintdotnet.cpp)\n\n  if(BUILD_WITH_QT6)\n\n    qt6_wrap_ui(gmic_qt_SRCS ${gmic_qt_FORMS})\n\n  else()\n\n    qt5_wrap_ui(gmic_qt_SRCS ${gmic_qt_FORMS})\n\n  endif()\n\n  add_definitions(-DGMIC_HOST=paintdotnet)\n  add_executable(gmic_paintdotnet_qt ${gmic_qt_SRCS} ${gmic_qt_QRC})\n  target_link_libraries(\n    gmic_paintdotnet_qt\n    PRIVATE ${gmic_qt_LIBRARIES}\n    )\n\nelseif (${GMIC_QT_HOST} STREQUAL \"8bf\")\n\n  # Look for a CMake package on MSVC or a PkgConfig file on MinGW etc.\n  if (MSVC)\n    find_package(lcms2 CONFIG REQUIRED)\n    include_directories(${LCMS2_INCLUDE_DIR})\n  else()\n    find_package(PkgConfig REQUIRED)\n    pkg_check_modules(LCMS2 REQUIRED lcms2)\n  endif()\n\n  set (gmic_qt_SRCS ${gmic_qt_SRCS} src/Host/8bf/host_8bf.cpp)\n\n  if(BUILD_WITH_QT6)\n\n    qt6_wrap_ui(gmic_qt_SRCS ${gmic_qt_FORMS})\n\n  else()\n\n    qt5_wrap_ui(gmic_qt_SRCS ${gmic_qt_FORMS})\n\n  endif()\n  add_definitions(-DGMIC_HOST=plugin8bf)\n  add_executable(gmic_8bf_qt ${gmic_qt_SRCS} ${gmic_qt_QRC})\n  target_link_libraries(\n    gmic_8bf_qt\n    PRIVATE\n    ${gmic_qt_LIBRARIES}\n\t${LCMS2_LIBRARIES}\n    )\n\nelse()\n\n  message(FATAL_ERROR \"GMIC_QT_HOST is not defined as gimp, gimp3, none, paintdotnet or 8bf\")\n\nendif()\n\nfeature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)\n"
  },
  {
    "path": "COPYING",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.  We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors.  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights.  Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received.  You must make sure that they, too, receive\nor can get the source code.  And you must show them these terms so they\nknow their rights.\n\n  Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n  For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software.  For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n  Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so.  This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software.  The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable.  Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts.  If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n  Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary.  To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Use with the GNU Affero General Public License.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n    <program>  Copyright (C) <year>  <name of author>\n    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n<http://www.gnu.org/licenses/>.\n\n  The GNU General Public License does not permit incorporating your program\ninto proprietary programs.  If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.  But first, please read\n<http://www.gnu.org/philosophy/why-not-lgpl.html>.\n"
  },
  {
    "path": "NEW_HOST_HOWTO.md",
    "content": "# Contributing - New host HOWTO\n\nThis document describes the architecture of the plugin (especially its link with the host application) and provides guidelines for its adaptation to a new host application.\n\n### Architecture of the plug-in\n\nThe plugin is intended to be a standalone program which communicates with the host application (typically digital painting or photo retouching software) to exchange image data and commands. This architecture, as opposed to a software component fully integrated in the host application process, has been designed like this for several reasons, among which :\n\n* The plugin cannot mess up with the host application process which means in the worst case, make it crash. This would be a responsibility we don't want to endorse. If unfortunately the plugin crashes, the host application does not, and no user data are lost. As long as the host application handles properly its communication with the plugin, nothing bad should ever happen because of a plugin misbehavior.\n* Being based on Qt, the plugin GUI inherits the desktop environment theme but also handles its own custom \"dark theme\" using style sheets in an application-wide way. Consequently, a Qt-based host application could inherit from these modifications with unexpected results (for instance, messing up the whole theme of the host GUI).\n* This plugin architecture has allowed us to define our own and quite simple API made of a few functions (exactly 6) that need to be implemented for the plugin to be able to communicate with the host application. Namely, this API is the interface (in the software engineering sense) of the communication layer between the host and the plugin, from the viewpoint of the latter. Thus, any suitable implementation of this interface should be enough to make the plugin work with a given host. Note that only 4% of the whole \"G'MIC-Qt for Gimp\" source code is host-dependent. The next section gives more details about the work that needs to be done to have a functional plugin for a new host.\n* With a plugin being a self-contained application whose host-related code is clearly identified, we can more easily build the plugin and quickly distribute new versions, thus following the rapid development cycle of G'MIC.\n\n### New host HOWTO: What needs to be done\n\nConsequently, in order to adapt the plug-in to a new host application cleanly, a few things need to be done:\n\n* Provide the host application with a communication system targeted to an external application, if it does not exist yet, so that it supports passing commands and possibly large image data (preferably through memory for improved performances).\n* Write a program:\n  * Which is linked to an implementation of all functions declared and documented in the API header [`Host/GmicQtHost.h`](src/Host/GmicQtHost.h) (implementation usually written, at least in part, in a file named `host_HOSTNAME.cpp`). This is the only place where all the communication between the plugin and the host should occur. The plugin relies only on this interface to be implemented.\n  * Which is linked to the host-agnostic code of the plugin found in this repository. (See [`GmicQt.h`](src/GmicQt.h) for more details about the services offered by this part of the plug-in's code.)\n ![Architecture](architecture.svg)\n  * Which calls the `GmicQt::run()` function provided by the G'MIC-Qt code, once initialisations are done and the communication with the host is established.\n  * It should be noticed that tweaking the API internals to adapt the plugin to a new host is definitely not good practice. It may break the compatibility with the plugin's future versions.\n* Adapt the [qmake](gmic_qt.pro) or [CMake](CMakeLists.txt) project files and follow the [build instructions](README.md#build-instructions) from the README.\n\nIn all these steps, valuable hints may be obtained from the [implementation for the GIMP host](src/Host/Gimp), found in the [src/Host](src/Host) folder, which is where all of a given host related code should go (for the plugin side).\n\nIf you succeed in creating such a file for a new host application, you are welcome to open a [pull request.](https://github.com/c-koi/gmic-qt/pulls)\n\n### Guidelines\n\nFirst, we would like to point out that any contribution in the form of a new host adaptation is very (very) welcome.\n\nHowever, we have decided that contributions will be now accepted in this (upstream) repository only if they respect the architecture described above. It ensures that the plugin executables can be built for these different hosts and that they can be easily updated to the latest G'MIC version.\n\nNote that we do not deny the fact that some other \"tweaked\" versions of the G'MIC-Qt plugin (that do not follow the rules defined above) may work for other host applications. Simply, we cannot guarantee their proper functioning. We will not endorse the responsibility of any crash or data loss that may occur with such implementations. We will probably not help in updating these plugins with the newest G'MIC features either. We let the authors of these alternative implementations deal with these issues.\n\nAnyway, we will be happy to share links to these alternative implementations when we become aware of them, [here](https://github.com/c-koi/gmic-qt/blob/master/README.md) and on the official [G'MIC website](https://gmic.eu).\n"
  },
  {
    "path": "README.md",
    "content": "\n# G'MIC-Qt: a versatile G'MIC plugin\n\n### Purpose\n\n G'MIC-Qt is a versatile front-end to the image processing framework\n [G'MIC](https://gmic.eu).  It is in fact a plugin for\n [GIMP](http://gimp.org), [Krita](https://krita.org), [Paint.NET](https://www.getpaint.net/),\n [digiKam](https://www.digikam.org) and an 8bf filter plugin for Photoshop-compatible software as well as a [standalone application](STANDALONE.md).\n\n### Authors\n\n  * Sébastien Fourey\n  * David Tschumperlé (G'MIC lib & original GTK-based plugin)\n\n### Contributors\n\n * Boudewijn Rempt <boud@valdyas.org> (Krita compatibility layer, later replaced by a native version of the plugin)\n * [amyspark](https://github.com/amyspark) (Krita native version of the plugin, work in progress)\n * [Nicholas Hayes](https://github.com/0xC0000054) (Paint.NET and 8bf filter compatibility layers, work in progress)\n * [Gilles Caulier](https://github.com/cgilles) (digiKam compatibility layer)\n\n\n### Translators\n\n * Jan Helebrant (Czech translation)\n * Frank Tegtmeyer (German translation)\n * chroma_ghost & bazza/pixls.us (Spanish translation)\n * Sébastien Fourey (French translation)\n * Duddy Hadiwido (Indonesian translation)\n * Francesco Riosa (Italian translation)\n * iarga / pixls.us (Dutch translation)\n * Alex Mozheiko (Polish translation)\n * maxr (Portuguese translation)\n * Alex Mozheiko (Russian translation)\n * Andrex Starodubtsev (Ukrainian translation)\n * LinuxToy (https://twitter.com/linuxtoy) (Chinese translation)\n * omiya tou tokyogeometry@github (Japanese translation)\n\n### Official (pre-release) binary packages\n\n * Available at [gmic.eu](https://gmic.eu)\n\n### Travis CI last build status\n\n * Master branch (Linux) [![Build Status](https://api.travis-ci.org/c-koi/gmic-qt.svg?branch=master)](https://travis-ci.org/c-koi/gmic-qt)\n * Devel branch (Linux) [![Build Status](https://api.travis-ci.org/c-koi/gmic-qt.svg?branch=devel)](https://travis-ci.org/c-koi/gmic-qt)\n\n### Build instructions\n\nBy default, the gimp integration plugin is built.\n\n#### QMake\n\nqmake is simple to use but only really works in an environment where bash is available.\n\n```sh\ngit clone https://github.com/GreycLab/gmic.git\ngit clone https://github.com/c-koi/gmic-qt.git\nmake -C gmic/src CImg.h gmic_stdlib_community.h\ncd gmic-qt\nqmake [HOST=none|gimp|paintdotnet|8bf]\nmake\n```\n\n#### CMake\n\ncmake works on all platforms. The first part is the same and requires make and wget to be available. If you don't have all dependencies, cmake will warn you which ones are missing. Note that the minimum cmake version is 3.1.\n\n```sh\ngit clone https://github.com/GreycLab/gmic.git\ngit clone https://github.com/c-koi/gmic-qt.git\nmake -C gmic/src CImg.h gmic_stdlib_community.h\ncd gmic-qt\n```\n\nThen make a build directory:\n\n```sh\nmkdir build\ncd build\n```\n\n```sh\ncmake .. [-DGMIC_QT_HOST=none|gimp|paintdotnet|8bf] [-DGMIC_PATH=/path/to/gmic] [-DCMAKE_BUILD_TYPE=[Debug|Release|RelwithDebInfo]\nmake\n```\n\n### Adapt G'MIC-Qt to new applications\n\nDevelopers will find guidelines and instructions for the adaptation of the plugin to a new host application in the [NEW HOST HOWTO](https://github.com/c-koi/gmic-qt/blob/master/NEW_HOST_HOWTO.md).\n"
  },
  {
    "path": "STANDALONE.md",
    "content": "# G'MIC-Qt standalone version HOWTO\n\nThe G'MIC-Qt GUI accepts several options on its command line, thus allowing simple batch processing.\nIn short, command line usage is as follows:\n\n * `gmic_qt [OPTIONS ...] [INPUT_FILES ...]`\n\nMore than basic single input file name specification, options allow batch processing using the G'MIC filters, with or without the help of the GUI.\n\n## Command line parameters\n\n### Option `-o --output FILE`\n\nInstead of displaying the output image in a dialog with a \"Save as...\" button, the application will save the filter output in the specified file. If multiple input files are provided, it is\nsuggested to include one of the `%b` or `%f` placeholders in the specified filename so that all output images will be written to distinct files :\n\n  - `%b` is the input file basename, that is the filename with no extension and no path.\n  - `%f` is the input file filename (without path).\n\nIf, on the other hand, multiple layers are expected as output, the `%l` placeholder will be replaced by the layer number in each output file (0 is top layer).\n\n#### Examples\n\n```sh\n# Launch the GUI, save output to output.png\n$ ./gmic_qt --output output.png input.png\n# Select a filter and its parameters twice (i.e. once for each input), save each output to a distinct file.\n$ ./gmic_qt --output processed-%f input1.png input2.png\n# Save the expected output layers in layer_0.png, layer_1.png, ...\n$ ./gmic_qt -o /tmp/layer_%l.png -p \"Layers/Tiles to Layers\" gmicky.png\n```\n\n### Option `-q --quality N`\n\nSet the quality of JPEG output files to N (N in 0..100).\n\n#### Example\n\n```sh\n# Select a filter through the GUI and save the result using 85 quality factor.\n$ ./gmic_qt --quality 85 --output blured-gmicky.jpg gmicky.png\n# Select a filter through the GUI, do not ask for JPEG quality when \"Saving as...\"\n$ ./gmic_qt --quality 85  gmicky.png\n```\n\n### Option `-r --repeat`\n\nUse last applied filter and parameters.\n\n#### Example\n\n```sh\n# Select a filter & its parameters from GUI, then apply.\n$ ./gmic_qt gmicky.png\n# Call the GUI with previously applied filter & parameters, output will be written to result.png\n$ ./gmic_qt --repeat --output result.png  hat.png\n```\n\n### Option `-p --path FILTER_PATH|FILTER_NAME`\n\n  - Select filter from a full path in the filter tree or from its name (if unique).\n   A filter path begins with `/`,  like for example `/Black & White/Charcoal`.\n\n#### Example\n\n```sh\n# Launch GUI with selected filter\n$ ./gmic_qt --path \"/Black & White/Charcoal\" gmicky.png\n# Apply Charcoal filter with default parameters to image, then\n# save result to charcoal-gmic.png\n$ ./gmic_qt --path Charcoal --ouput charcoal-%f gmicky.png\n```\n\n### Option `-c --command \"GMIC COMMAND\"`\n\nRun the gmic command on input image(s).\n\nIf a filter name/path is provided (option `-p`) and the command matches with this filter, or no filter name/path is provided and the command matches with some filter, then the parameters are completed using the filter's defaults.\n\nIf the command does not match with a filter, the option `--apply` (see below) is highly recommended as the GUI will not be of any help. Of course, batch processing is possible through the extra option `--output`.\n\n#### Examples\n\n```sh\n# Launch GUI with filter \"/Black & White/Charcoal\", using 30 as its first parameter and default values otherwise.\n$ ./gmic_qt -c \"fx_charcoal 30\" input.png\n# Batch process to blur several images, showing each output with a \"Save as...\" option\n$ ./gmic_qt -c \"blur 10\" images/*.png\n# Batch process to blur several images, writing output images in distinct files\n$ ./gmic_qt -o output/%b-blurred.jpg -c \"blur 10\" images/*.png\n```\n\n### Option `--apply`\n\nApply filter or command without showing the main plugin dialog for filter & parameters selection. One of the following options must therefore be present: `--path`, `--command` or `--repeat`.\n\n#### Examples\n\n```sh\n# Shows up the resulting image dialog (image to be saved).\n$ ./gmic_qt --apply -c \"blur 10\"  input.png\n# Just do the processing, no question asked\n$ ./gmic_qt --apply --path \"Black & White/Charcoal\" --output output.jpg input.jpg\n# Select a filter and parameters through GUI, than batch process\n$ ./gmic_qt --output test.png inputs/input1.png\n$ ./gmic_qt --repeat --apply --ouput output/%f input/*.png\n```\n\nIn fact, there is a command dedicated to the latter sample use case: `--first`\n\n### Option `--reapply-first -R`\n\nLaunch the GUI once for the first input file, then reapply selected filter and parameters to all other files like `--repeat --apply` would do.\n\n#### Examples\n\n```sh\n# Select a filter and parameters through GUI, than batch process to all input files\n$ ./gmic_qt --reapply-first --output output/%f input/*.png\n# Tune the Charcoal filter's parameters through the GUI, than batch process to all input files\n$ ./gmic_qt -R -p \"Charcoal\" -o output/%f input/*.png\n```\n\n### Option `--show-last`\n\nPrint last applied plugin parameters\n\n#### Example\n\n```sh\n$ ./gmic_qt --apply -p \"Charcoal\" -c \"fx_charcoal 56\" input.png\n$ ./gmic_qt --show-last\nPath: /Black & White/Charcoal\nName: Charcoal\nCommand: fx_charcoal 56,70,170,0,1,0,50,70,255,255,255,0,0,0,0,0,50,50\nInputMode: 1\nOutputMode: 0\n```\n\n### Option `--show-last-after`\n\nPrint last applied plugin parameters after filter execution. (Indeed, some filters may change the value of their parameters.)\n\n### Option `--layers`\n\nConsider multiple input files as layers of the same image (first image is the top layer).\n\n```sh\n$ ./gmic_qt -p \"Blend [Average All]\" --layers --apply -o output.png toplayer.png middlelayer.png bottomlayer.png\n```\n"
  },
  {
    "path": "check_versions.sh",
    "content": "#!/bin/bash\nset -o errexit\nfunction usage()\n{\n  echo \"  Usage:\"\n  echo\n  echo \"        check_version.sh GMIC_PATH [gmic|CImg|stdlib]\"\n  echo\n  exit 0\n}\n\nfunction die()\n{\n  local message=\"$1\"\n  >&2 echo \"Error: $*\"\n  exit 1\n}\n\n(( $# == 0 )) && usage\n[[ -d \"$1\" ]] || die \"$1 is not an existing directory\"\n\n# @param folder\nfunction gmic_version()\n{\n  local folder=\"$1\"\n  [[ -e \"${folder}/gmic.h\" ]] || die \"File not found: ${folder}/gmic.h\"\n  local version=$(grep -F \"#define gmic_version \" ${folder}/gmic.h)\n  echo ${version//* }\n}\n\n# @param folder\nfunction cimg_version()\n{\n  local folder=\"$1\"\n  [[ -e \"${folder}/CImg.h\" ]] || die \"File not found: ${folder}/CImg.h\"\n  local version=$(grep -F \"#define cimg_version \" ${folder}/CImg.h)\n  echo ${version//* }\n}\n\n# @param folder\nfunction stdlib_version()\n{\n  local folder=\"$1\"\n  [[ -e \"${folder}/gmic_stdlib_community.h\" ]] || die \"File not found: ${folder}/gmic_stdlib_community.h\"\n  local version=$(grep -E \"File.*gmic_stdlib_community.h.*\\(v.\" ${folder}/gmic_stdlib_community.h)\n  version=${version#*v.}\n  version=${version%)}\n  version=${version//.}\n  echo ${version}\n}\n\nif [[ \"$2\" == gmic ]]; then\n  gmic_version \"$1\"\n  exit 0\nfi\n\nif [[ \"$2\" == CImg ]]; then\n  cimg_version \"$1\"\n  exit 0\nfi\n\nif [[ \"$2\" == stdlib ]]; then\n  stdlib_version \"$1\"\n  exit 0\nfi\n\necho \"Checking G'MIC and CImg versions...\"\n\nGMIC_VERSION=$(gmic_version \"$1\")\nCIMG_VERSION=$(cimg_version \"$1\")\nSTDLIB_VERSION=$(stdlib_version \"$1\")\n\necho \"G'MIC version is .................... $GMIC_VERSION\"\necho \"gmic_stdlib_community.h version is .. $STDLIB_VERSION\"\necho \"CImg version is ..................... $CIMG_VERSION\"\n\nif [[ $GMIC_VERSION != $CIMG_VERSION ]]; then\n  die \"Version numbers of files 'gmic.h' (${GMIC_VERSION}) and 'CImg.h' (${CIMG_VERSION}) mismatch\"\nfi\n\nif [[ $GMIC_VERSION != $STDLIB_VERSION ]]; then\n  die \"Version numbers of files 'gmic.h' (${GMIC_VERSION}) and 'gmic_stdlib_community.h' (${STDLIB_VERSION}) mismatch\"\nfi\n\nexit 0\n"
  },
  {
    "path": "cmake/modules/COPYING-CMAKE-SCRIPTS",
    "content": "Redistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n1. Redistributions of source code must retain the copyright\n   notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the copyright\n   notice, this list of conditions and the following disclaimer in the\n   documentation and/or other materials provided with the distribution.\n3. The name of the author may not be used to endorse or promote products \n   derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\nNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "cmake/modules/FindFFTW3.cmake",
    "content": "# - Try to find the Fftw3 Libraries\n#\n# Once done this will define\n#\n#  FFTW3_FOUND        - system has fftw3\n#  FFTW3_INCLUDE_DIRS - the fftw3 include directories\n#  FFTW3_LIBRARIES    - the libraries needed to use fftw3\n#\n# Redistribution and use is allowed according to the terms of the BSD license.\n# For details see the accompanying COPYING-CMAKE-SCRIPTS file.\n#\n\nif (NOT WIN32)\n\n    include(LibFindMacros)\n    libfind_pkg_check_modules(FFTW3_PKGCONF fftw3>=3.2)\n\n    find_path(FFTW3_INCLUDE_DIR\n        NAMES fftw3.h\n        HINTS ${FFTW3_PKGCONF_INCLUDE_DIRS} ${FFTW3_PKGCONF_INCLUDEDIR}\n        PATH_SUFFIXES fftw3\n    )\n\n    find_library(FFTW3_LIBRARY_CORE\n        NAMES fftw3\n        HINTS ${FFTW3_PKGCONF_LIBRARY_DIRS} ${FFTW3_PKGCONF_LIBDIR}\n    )\n\n    set(FFTW3_CORE_PROCESS_INCLUDES FFTW3_INCLUDE_DIR)\n    set(FFTW3_CORE_PROCESS_LIBS FFTW3_LIBRARY_CORE)\n    libfind_process(FFTW3_CORE)\n\n    if(FFTW3_CORE_FOUND)\n        message(STATUS \"FFTW core Found Libraries: \" ${FFTW3_CORE_LIBRARIES})\n    endif()\n\n    find_library(FFTW3_LIBRARY_THREADS\n        NAMES fftw3_threads\n        HINTS ${FFTW3_PKGCONF_LIBRARY_DIRS} ${FFTW3_PKGCONF_LIBDIR}\n    )\n\n    set(FFTW3_THREADS_PROCESS_INCLUDES FFTW3_INCLUDE_DIR)\n    set(FFTW3_THREADS_PROCESS_LIBS FFTW3_LIBRARY_THREADS)\n    libfind_process(FFTW3_THREADS)\n\n    if(FFTW3_THREADS_FOUND)\n        message(STATUS \"FFTW threads Found Libraries: \" ${FFTW3_THREADS_LIBRARIES})\n    endif()\n\n    if(FFTW3_CORE_FOUND AND FFTW3_THREADS_FOUND)\n        set(FFTW3_FOUND true)\n        set(FFTW3_LIBRARIES ${FFTW3_CORE_LIBRARIES} ${FFTW3_THREADS_LIBRARIES})\n    endif()\n\nelse()\n\n    # TODO: Maybe use fftw3/FFTW3Config.cmake?\n\n    find_path(FFTW3_INCLUDE_DIR\n        NAMES fftw3.h\n    )\n\n    find_library(\n        FFTW3_LIBRARY\n        NAMES libfftw3 libfftw3-3 libfftw3f-3 libfftw3l-3 fftw3\n        DOC \"Libraries to link against for FFT Support\")\n\n    if (FFTW3_LIBRARY)\n        set(FFTW3_LIBRARY_DIR ${FFTW3_LIBRARY})\n    endif()\n\n    set (FFTW3_LIBRARIES ${FFTW3_LIBRARY})\n\n    if(FFTW3_INCLUDE_DIR AND FFTW3_LIBRARY_DIR)\n       set (FFTW3_FOUND true)\n       message(STATUS \"Correctly found FFTW3\")\n    else()\n       message(STATUS \"Could not find FFTW3\")\n    endif()\n\nendif()\n"
  },
  {
    "path": "cmake/modules/LibFindMacros.cmake",
    "content": "# Version 1.0 (2013-04-12)\n# Public Domain, originally written by Lasse Kärkkäinen <tronic@zi.fi>\n# Published at http://www.cmake.org/Wiki/CMake:How_To_Find_Libraries\n\n# If you improve the script, please modify the forementioned wiki page because\n# I no longer maintain my scripts (hosted as static files at zi.fi). Feel free\n# to remove this entire header if you use real version control instead.\n\n# Changelog:\n# 2013-04-12  Added version number (1.0) and this header, no other changes\n# 2009-10-08  Originally published\n\n\n# Works the same as find_package, but forwards the \"REQUIRED\" and \"QUIET\" arguments\n# used for the current package. For this to work, the first parameter must be the\n# prefix of the current package, then the prefix of the new package etc, which are\n# passed to find_package.\nmacro (libfind_package PREFIX)\n  set (LIBFIND_PACKAGE_ARGS ${ARGN})\n  if (${PREFIX}_FIND_QUIETLY)\n    set (LIBFIND_PACKAGE_ARGS ${LIBFIND_PACKAGE_ARGS} QUIET)\n  endif ()\n  if (${PREFIX}_FIND_REQUIRED)\n    set (LIBFIND_PACKAGE_ARGS ${LIBFIND_PACKAGE_ARGS} REQUIRED)\n  endif ()\n  find_package(${LIBFIND_PACKAGE_ARGS})\nendmacro (libfind_package)\n\n# CMake developers made the UsePkgConfig system deprecated in the same release (2.6)\n# where they added pkg_check_modules. Consequently I need to support both in my scripts\n# to avoid those deprecated warnings. Here's a helper that does just that.\n# Works identically to pkg_check_modules, except that no checks are needed prior to use.\nmacro (libfind_pkg_check_modules PREFIX PKGNAME)\n  if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)\n    include(UsePkgConfig)\n    pkgconfig(${PKGNAME} ${PREFIX}_INCLUDE_DIRS ${PREFIX}_LIBRARY_DIRS ${PREFIX}_LDFLAGS ${PREFIX}_CFLAGS)\n  else ()\n    find_package(PkgConfig)\n    if (PKG_CONFIG_FOUND)\n      pkg_check_modules(${PREFIX} QUIET ${PKGNAME})\n    endif ()\n  endif ()\nendmacro (libfind_pkg_check_modules)\n\n# Do the final processing once the paths have been detected.\n# If include dirs are needed, ${PREFIX}_PROCESS_INCLUDES should be set to contain\n# all the variables, each of which contain one include directory.\n# Ditto for ${PREFIX}_PROCESS_LIBS and library files.\n# Will set ${PREFIX}_FOUND, ${PREFIX}_INCLUDE_DIRS and ${PREFIX}_LIBRARIES.\n# Also handles errors in case library detection was required, etc.\nmacro (libfind_process PREFIX)\n  # Skip processing if already processed during this run\n  if (NOT ${PREFIX}_FOUND)\n    # Start with the assumption that the library was found\n    set (${PREFIX}_FOUND TRUE)\n\n    # Process all includes and set _FOUND to false if any are missing\n    foreach (i ${${PREFIX}_PROCESS_INCLUDES})\n      if (${i})\n        set (${PREFIX}_INCLUDE_DIRS ${${PREFIX}_INCLUDE_DIRS} ${${i}})\n        mark_as_advanced(${i})\n      else ()\n        set (${PREFIX}_FOUND FALSE)\n      endif ()\n    endforeach (i)\n\n    # Process all libraries and set _FOUND to false if any are missing\n    foreach (i ${${PREFIX}_PROCESS_LIBS})\n      if (${i})\n        set (${PREFIX}_LIBRARIES ${${PREFIX}_LIBRARIES} ${${i}})\n        mark_as_advanced(${i})\n      else ()\n        set (${PREFIX}_FOUND FALSE)\n      endif ()\n    endforeach (i)\n\n    # Print message and/or exit on fatal error\n    if (${PREFIX}_FOUND)\n      if (NOT ${PREFIX}_FIND_QUIETLY)\n        message (STATUS \"Found ${PREFIX} ${${PREFIX}_VERSION}\")\n      endif ()\n    else ()\n      if (${PREFIX}_FIND_REQUIRED)\n        foreach (i ${${PREFIX}_PROCESS_INCLUDES} ${${PREFIX}_PROCESS_LIBS})\n          message(\"${i}=${${i}}\")\n        endforeach (i)\n        message (FATAL_ERROR \"Required library ${PREFIX} NOT FOUND.\\nInstall the library (dev version) and try again. If the library is already installed, use ccmake to set the missing variables manually.\")\n      endif ()\n    endif ()\n  endif ()\nendmacro (libfind_process)\n\nmacro(libfind_library PREFIX basename)\n  set(TMP \"\")\n  if(MSVC80)\n    set(TMP -vc80)\n  endif()\n  if(MSVC90)\n    set(TMP -vc90)\n  endif()\n  set(${PREFIX}_LIBNAMES ${basename}${TMP})\n  if(${ARGC} GREATER 2)\n    set(${PREFIX}_LIBNAMES ${basename}${TMP}-${ARGV2})\n    string(REGEX REPLACE \"\\\\.\" \"_\" TMP ${${PREFIX}_LIBNAMES})\n    set(${PREFIX}_LIBNAMES ${${PREFIX}_LIBNAMES} ${TMP})\n  endif()\n  find_library(${PREFIX}_LIBRARY\n    NAMES ${${PREFIX}_LIBNAMES}\n    PATHS ${${PREFIX}_PKGCONF_LIBRARY_DIRS}\n  )\nendmacro(libfind_library)\n\n"
  },
  {
    "path": "gmic_qt.desktop",
    "content": "[Desktop Entry]\nVersion=1.0\nType=Application\nName=G'MIC-Qt\nTerminal=false\nComment=Apply G'MIC filters to images\nComment[fr]=Appliquer des filtres G'MIC à des images\nTryExec=gmic_qt\nExec=gmic_qt %F\nIcon=gmic_qt\nCategories=Graphics;\nMimeType=image/jpeg;image/png;image/bmp;image/gif;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-xbitmap;image/x-xpixmap;image/svg;\n"
  },
  {
    "path": "gmic_qt.pro",
    "content": "#\n# Set HOST variable to define target host software.\n# Possible values are \"none\", \"gimp\", \"gimp3\" (experimental), and \"paintdotnet\"\n#\n#\n\n!defined(HOST,var) { HOST = gimp }\n\n!defined(GMIC_DYNAMIC_LINKING,var) { GMIC_DYNAMIC_LINKING = off }\n\n!defined(ASAN,var) { ASAN = off }\n\n!defined(PRERELEASE, var) {\n# calling 'date' directly crashes on MSYS2!\n   PRERELEASE = $$system(bash pre_version.sh)\n}\n\n# Possible values are \"gcc\" or \"clang\"\n!defined(COMPILER,var) { COMPILER = gcc }\n\n# Possible values are \"on\" or \"off\"\n!defined(LTO,var) { LTO=off }\n\n#\n#\n#\n#\n\n# For debugging purpose\n!defined(TIMING,var) { TIMING = off }\n\n# DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0\n\ngreaterThan(QT_MAJOR_VERSION, 5) {\n message(\"Qt version >= 6.0.0\")\n QMAKE_CXXFLAGS += -fPIE\n QMAKE_LFLAGS += -fPIE\n}\n\n#\n# Check Qt version (>= 5.2)\n#\n!greaterThan(QT_MAJOR_VERSION, 4):error(\"You need Qt 5.2 or greater to build this program.\")\nequals(QT_MAJOR_VERSION,5) {\n  !greaterThan(QT_MINOR_VERSION, 1):error(\"You need Qt 5.2 or greater to build this program.\")\n}\n\nDEFINES += QT_DEPRECATED_WARNINGS\n\n#\n# Check that pkg-config is installed (qmake error messages are misleading, if not)\n#\n\n!system(bash pkg-config-check.sh):error(\"pkg-config is not installed\")\n\nTEMPLATE = app\nQT += widgets network\nCONFIG\t+= qt c++17 strict_c++\nCONFIG\t+= warn_on\nQT_CONFIG -= no-pkg-config\nCONFIG += link_pkgconfig\nVERSION = 0.0.0\n\nPKGCONFIG += fftw3 zlib libpng libjpeg libcurl\n\nequals( HOST, \"gimp\" ) {\n  PKGCONFIG += gimp-2.0\n}\n\nequals( HOST, \"gimp3\" ) {\n  PKGCONFIG += gimp-3.0\n}\n\nequals( HOST, \"8bf\") {\n  PKGCONFIG += lcms2\n}\n\nDEFINES += cimg_use_cpp11=1\nDEFINES += cimg_use_fftw3 cimg_use_zlib\nDEFINES += cimg_use_abort gmic_is_parallel cimg_use_curl cimg_use_png cimg_use_jpeg\nDEFINES += cimg_appname=\"\\\\\\\"gmic\\\\\\\"\"\n\nequals(TIMING, \"on\")|equals(TIMING,\"ON\") {\n DEFINES += _TIMING_ENABLED_\n message(Timing is enabled)\n}\n\ndefined(GMIC_PATH, var) {\n  message(\"GMIC_PATH is set (\"$$GMIC_PATH\")\")\n}\n!defined(GMIC_PATH, var):exists(../src/gmic.cpp) {\n  message(GMIC_PATH was not set: Found gmic sources in ../src)\n  GMIC_PATH = ../src\n}\n!defined(GMIC_PATH, var):exists(../gmic/src/gmic.cpp) {\n  message(GMIC_PATH was not set: Found gmic sources in ../gmic/src)\n  GMIC_PATH = ../gmic/src\n}\ndefined(GMIC_PATH, var):!exists( $$GMIC_PATH/gmic.cpp ) {\n error(\"G'MIC repository was not found (\"$$GMIC_PATH\")\")\n}\n!defined(GMIC_PATH, var) {\n error(\"GMIC_PATH variable not set, and no G'MIC source tree found\")\n}\n\nmessage(\"G'MIC repository was found (\"$$GMIC_PATH\")\")\n\nDEPENDPATH += $$GMIC_PATH\n\nCIMG.target = $$GMIC_PATH/CImg.h\nCIMG.commands = \\$(MAKE) -C $$GMIC_PATH CImg.h\nQMAKE_EXTRA_TARGETS += CIMG\n\nGMIC_STDLIB.target = $$GMIC_PATH/gmic_stdlib_community.h\nGMIC_STDLIB.commands = \\$(MAKE) -C $$GMIC_PATH gmic_stdlib_community.h\nQMAKE_EXTRA_TARGETS += GMIC_STDLIB\n\n# $$escape_expand(\\n\\t)\n\n'translations/%.qm'.depends += 'translations/%.ts'\n'translations/%.qm'.commands += './translations/lrelease.sh $<'\n\n'translations/filters/%.qm'.depends += 'translations/filters/%.ts'\n'translations/filters/%.qm'.commands += './translations/lrelease.sh $<'\n\n'translations/filters/%.ts'.depends += 'translations/filters/gmic_qt_%.csv'\n'translations/filters/%.ts'.commands += './translations/filters/csv2ts.sh -o $@ $<'\n\nQMAKE_EXTRA_TARGETS += 'translations/%.qm' \\\n                       'translations/filters/%.qm' \\\n                       'translations/filters/%.ts'\n\nGMIC_VERSION = $$system(bash check_versions.sh $$GMIC_PATH gmic)\nmessage(\"G'MIC version is .................\" $$GMIC_VERSION)\nexists($$GMIC_PATH/CImg.h) {\n CIMG_VERSION = $$system(bash check_versions.sh $$GMIC_PATH CImg)\n message(\"CImg version is ..................\" $$CIMG_VERSION)\n}\nexists($$GMIC_PATH/gmic_stdlib_community.h) {\n STDLIB_VERSION = $$system(bash check_versions.sh $$GMIC_PATH stdlib)\n message(\"gmic_stdlib_community.h version is\" $$STDLIB_VERSION)\n}\nexists($$GMIC_PATH/CImg.h):exists($$GMIC_PATH/gmic_stdlib_community.h) {\n GMIC_VERSION = $$system(bash check_versions.sh $$GMIC_PATH gmic)\n STDLIB_VERSION = $$system(bash check_versions.sh $$GMIC_PATH stdlib)\n CIMG_VERSION = $$system(bash check_versions.sh $$GMIC_PATH CImg)\n !equals(GMIC_VERSION, $$CIMG_VERSION):{\n   error(\"Version numbers of files 'gmic.h' (\" $$GMIC_VERSION \") and 'CImg.h' (\" $$CIMG_VERSION \") mismatch\")\n }\n !equals(GMIC_VERSION, $$STDLIB_VERSION):{\n   error(\"Version numbers of files 'gmic.h' (\" $$GMIC_VERSION \") and 'gmic_stdlib_community.h' (\" $$STDLIB_VERSION \") mismatch\")\n }\n}\n\nQMAKE_DISTCLEAN = \\\n  translations/*.qm \\\n  translations/filters/*.ts \\\n  translations/filters/*.qm\n\nequals( COMPILER, \"clang\" ) {\n message(\"Compiler is clang++\")\n QMAKE_CXX = clang++\n QMAKE_LINK = clang++\n}\n\n!isEmpty(PRERELEASE) {\n  message( Prerelease date is $$PRERELEASE )\n  DEFINES += gmic_prerelease=\"\\\\\\\"$$PRERELEASE\\\\\\\"\"\n}\n\nLIBS += -lfftw3_threads\n\nwin32 {\n  DEFINES += _IS_WINDOWS_\n  DEFINES += cimg_display=2\n  LIBS += -mwindows -lpthread -DPSAPI_VERSION=1 -lpsapi -lgdi32\n  message( Windows/GDI32 platform )\n}\n\nunix:!macx {\n  DEFINES += _IS_UNIX_\n  DEFINES += cimg_display=1\n  PKGCONFIG += x11\n  message( Unix/X11 platform )\n}\n\nmacx {\n  DEFINES += _IS_MACOS_\n  DEFINES += cimg_display=0\n  ICON = icons/application/gmic_qt.icns\n  message( macOS platform )\n}\n\n!win32:!unix:!macx {\n  DEFINES += cimg_display=0\n  message( Unknown platform )\n}\n\nequals( HOST, \"gimp\")|equals( HOST, \"gimp3\") {\n TARGET = gmic_gimp_qt\n SOURCES += src/Host/Gimp/host_gimp.cpp\n DEFINES += GMIC_HOST=gimp\n DEFINES += GIMP_DISABLE_DEPRECATED\n DEPENDPATH += $$PWD/src/Host/Gimp\n message(Target host software is GIMP)\n}\n\nequals( HOST, \"none\") {\n TARGET = gmic_qt\n DEFINES += GMIC_HOST=standalone\n HEADERS += src/Host/None/ImageDialog.h \\\n            src/Host/None/JpegQualityDialog.h\n SOURCES += src/Host/None/host_none.cpp \\\n            src/Host/None/ImageDialog.cpp \\\n            src/Host/None/JpegQualityDialog.cpp\n FORMS += src/Host/None/jpegqualitydialog.ui\n DEPENDPATH += $$PWD/src/Host/None\n message(Building standalone version)\n}\n\nequals( HOST, \"paintdotnet\") {\n TARGET = gmic_paintdotnet_qt\n SOURCES += src/Host/PaintDotNet/host_paintdotnet.cpp\n DEFINES += GMIC_HOST=paintdotnet\n DEPENDPATH += $$PWD/src/Host/PaintDotNet\n message(Target host software is Paint.NET)\n}\n\nequals( HOST, \"8bf\") {\n TARGET = gmic_8bf_qt\n SOURCES += src/Host/8bf/host_8bf.cpp\n DEFINES += GMIC_HOST=plugin8bf\n DEPENDPATH += $$PWD/src/Host/8bf\n message(Target host software is 8bf filter)\n}\n\n# enable OpenMP by default on with g++, except on OS X\n!macx:*g++* {\n    CONFIG += openmp\n}\n!macx:equals(COMPILER,\"clang\") {\n    CONFIG += openmp\n}\n\n# use qmake CONFIG+=openmp ... to force using openmp\n# For example, on OS X with GCC 4.8 installed:\n# qmake -spec unsupported/macx-clang QMAKE_CXX=g++-4.8 QMAKE_LINK=g++-4.8 CONFIG+=openmp\n# Notes:\n#  - the compiler name is g++-4.8 on Homebrew and g++-mp-4.8 on MacPorts\n#  - we use the unsupported/macx-clang config because macx-g++ uses arch flags that are not recognized by GNU GCC\nopenmp:equals(COMPILER,\"gcc\") {\n    message(\"OpenMP enabled, with g++\")\n    DEFINES += cimg_use_openmp\n    QMAKE_CXXFLAGS_DEBUG += -fopenmp\n    QMAKE_CXXFLAGS_RELEASE += -fopenmp\n    QMAKE_LFLAGS_DEBUG += -fopenmp\n    QMAKE_LFLAGS_RELEASE += -fopenmp\n}\n\nopenmp:equals(COMPILER,\"clang\") {\n    message(\"OpenMP enabled, with clang++\")\n    DEFINES += cimg_use_openmp\n    QMAKE_CXXFLAGS_DEBUG += -fopenmp=libomp -I/usr/lib/gcc/x86_64-redhat-linux/7/include/\n    QMAKE_CXXFLAGS_RELEASE += -fopenmp=libomp  -I/usr/lib/gcc/x86_64-redhat-linux/7/include/\n    QMAKE_LFLAGS_DEBUG += -fopenmp=libomp\n    QMAKE_LFLAGS_RELEASE += -fopenmp=libomp\n}\n\nequals(LTO,\"on\") { LTO = ON }\nCONFIG(release, debug|release):gcc|clang:equals(LTO,\"ON\") {\n    message(\"Link Time Optimizer enabled\")\n    QMAKE_CXXFLAGS_RELEASE += -flto\n    QMAKE_LFLAGS_RELEASE += -flto\n}\n\nDEFINES += gmic_gui gmic_core gmic_is_parallel gmic_community cimg_use_abort\n\nINCLUDEPATH\t+= $$PWD $$PWD/src $$GMIC_PATH\nDEPENDPATH += $$PWD/src \\\n              $$PWD/src/Host \\\n              $$PWD/src/FilterParameters \\\n              $$PWD/src/FilterSelector \\\n              $$PWD/src/FilterSelector/FiltersView \\\n\nHEADERS +=  \\\n  src/ClickableLabel.h \\\n  src/Common.h \\\n  src/FilterParameters/CustomSpinBox.h \\\n  src/GmicQt.h \\\n  src/Host/GmicQtHost.h \\\n  src/OverrideCursor.h \\\n  src/DialogSettings.h \\\n  src/FilterParameters/AbstractParameter.h \\\n  src/FilterParameters/BoolParameter.h \\\n  src/FilterParameters/ButtonParameter.h \\\n  src/FilterParameters/ChoiceParameter.h \\\n  src/FilterParameters/ColorParameter.h \\\n  src/FilterParameters/ConstParameter.h \\\n  src/FilterParameters/CustomDoubleSpinBox.h \\\n  src/FilterParameters/FileParameter.h \\\n  src/FilterParameters/FilterParametersWidget.h \\\n  src/FilterParameters/FloatParameter.h \\\n  src/FilterParameters/FolderParameter.h \\\n  src/FilterParameters/IntParameter.h \\\n  src/FilterParameters/LinkParameter.h \\\n  src/FilterParameters/MultilineTextParameterWidget.h \\\n  src/FilterParameters/NoteParameter.h \\\n  src/FilterParameters/PointParameter.h \\\n  src/FilterParameters/SeparatorParameter.h \\\n  src/FilterParameters/TextParameter.h \\\n  src/FilterSelector/FiltersModel.h \\\n  src/FilterSelector/FiltersModelReader.h \\\n  src/FilterSelector/FiltersModelBinaryReader.h \\\n  src/FilterSelector/FiltersModelBinaryWriter.h \\\n  src/FilterSelector/FiltersPresenter.h \\\n  src/FilterSelector/FiltersView/FiltersView.h \\\n  src/FilterSelector/FiltersView/TreeView.h \\\n  src/FilterSelector/FiltersVisibilityMap.h \\\n  src/FilterSelector/FilterTagMap.h \\\n  src/CroppedImageListProxy.h \\\n  src/CroppedActiveLayerProxy.h \\\n  src/FilterGuiDynamismCache.h \\\n  src/FilterSyncRunner.h \\\n  src/FilterThread.h \\\n  src/FilterTextTranslator.h \\\n  src/Globals.h \\\n  src/GmicStdlib.h \\\n  src/GmicProcessor.h \\\n  src/HeadlessProcessor.h \\\n  src/HtmlTranslator.h \\\n  src/IconLoader.h \\\n  src/ImageTools.h \\\n  src/InputOutputState.h \\\n  src/KeypointList.h \\\n  src/LayersExtentProxy.h \\\n  src/Logger.h \\\n  src/LanguageSettings.h \\\n  src/MainWindow.h \\\n  src/Misc.h \\\n  src/ParametersCache.h \\\n  src/PersistentMemory.h \\\n  src/Settings.h \\\n  src/SourcesWidget.h \\\n  src/Tags.h \\\n  src/TimeLogger.h \\\n  src/Updater.h \\\n  src/Utils.h \\\n  src/Widgets/VisibleTagSelector.h \\\n  src/ZoomConstraint.h \\\n  src/FilterSelector/FiltersView/FilterTreeFolder.h \\\n  src/FilterSelector/FiltersView/FilterTreeItem.h \\\n  src/FilterSelector/FavesModel.h \\\n  src/FilterSelector/FavesModelReader.h \\\n  src/FilterSelector/FiltersView/FilterTreeAbstractItem.h \\\n  src/FilterSelector/FiltersView/FilterTreeItemDelegate.h \\\n  src/FilterSelector/FavesModelWriter.h \\\n  src/Widgets/PreviewWidget.h \\\n  src/Widgets/ProgressInfoWidget.h \\\n  src/Widgets/InOutPanel.h \\\n  src/Widgets/ZoomLevelSelector.h \\\n  src/Widgets/SearchFieldWidget.h \\\n  src/Widgets/LanguageSelectionWidget.h \\\n  src/Widgets/ProgressInfoWindow.h\n\nHEADERS += $$GMIC_PATH/gmic.h\n\nSOURCES += \\\n  src/ClickableLabel.cpp \\\n  src/Common.cpp \\\n  src/FilterParameters/CustomSpinBox.cpp \\\n  src/GmicQt.cpp \\\n  src/OverrideCursor.cpp \\\n  src/DialogSettings.cpp \\\n  src/FilterParameters/AbstractParameter.cpp \\\n  src/FilterParameters/BoolParameter.cpp \\\n  src/FilterParameters/ButtonParameter.cpp \\\n  src/FilterParameters/ChoiceParameter.cpp \\\n  src/FilterParameters/ColorParameter.cpp \\\n  src/FilterParameters/ConstParameter.cpp \\\n  src/FilterParameters/CustomDoubleSpinBox.cpp \\\n  src/FilterParameters/FileParameter.cpp \\\n  src/FilterParameters/FilterParametersWidget.cpp \\\n  src/FilterParameters/FloatParameter.cpp \\\n  src/FilterParameters/FolderParameter.cpp \\\n  src/FilterParameters/IntParameter.cpp \\\n  src/FilterParameters/LinkParameter.cpp \\\n  src/FilterParameters/MultilineTextParameterWidget.cpp \\\n  src/FilterParameters/NoteParameter.cpp \\\n  src/FilterParameters/PointParameter.cpp \\\n  src/FilterParameters/SeparatorParameter.cpp \\\n  src/FilterParameters/TextParameter.cpp \\\n  src/FilterSelector/FiltersModel.cpp \\\n  src/FilterSelector/FiltersModelReader.cpp \\\n  src/FilterSelector/FiltersModelBinaryReader.cpp \\\n  src/FilterSelector/FiltersModelBinaryWriter.cpp \\\n  src/FilterSelector/FiltersPresenter.cpp \\\n  src/FilterSelector/FiltersView/FiltersView.cpp \\\n  src/FilterSelector/FiltersView/TreeView.cpp \\\n  src/FilterSelector/FiltersVisibilityMap.cpp \\\n  src/FilterSelector/FilterTagMap.cpp \\\n  src/CroppedImageListProxy.cpp \\\n  src/CroppedActiveLayerProxy.cpp \\\n  src/FilterGuiDynamismCache.cpp \\\n  src/FilterSyncRunner.cpp \\\n  src/FilterThread.cpp \\\n  src/FilterTextTranslator.cpp \\\n  src/Globals.cpp \\\n  src/GmicStdlib.cpp \\\n  src/GmicProcessor.cpp \\\n  src/HeadlessProcessor.cpp \\\n  src/HtmlTranslator.cpp \\\n  src/IconLoader.cpp \\\n  src/ImageTools.cpp \\\n  src/InputOutputState.cpp \\\n  src/KeypointList.cpp \\\n  src/LayersExtentProxy.cpp \\\n  src/LanguageSettings.cpp \\\n  src/Logger.cpp \\\n  src/MainWindow.cpp \\\n  src/ParametersCache.cpp \\\n  src/PersistentMemory.cpp \\\n  src/Settings.cpp \\\n  src/SourcesWidget.cpp \\\n  src/Tags.cpp \\\n  src/TimeLogger.cpp \\\n  src/Updater.cpp \\\n  src/Utils.cpp \\\n  src/Misc.cpp \\\n  src/FilterSelector/FiltersView/FilterTreeItem.cpp \\\n  src/FilterSelector/FiltersView/FilterTreeFolder.cpp \\\n  src/FilterSelector/FavesModel.cpp \\\n  src/FilterSelector/FavesModelReader.cpp \\\n  src/FilterSelector/FiltersView/FilterTreeAbstractItem.cpp \\\n  src/FilterSelector/FiltersView/FilterTreeItemDelegate.cpp \\\n  src/FilterSelector/FavesModelWriter.cpp \\\n  src/Widgets/PreviewWidget.cpp \\\n  src/Widgets/ProgressInfoWidget.cpp \\\n  src/Widgets/InOutPanel.cpp \\\n  src/Widgets/VisibleTagSelector.cpp \\\n  src/Widgets/ZoomLevelSelector.cpp \\\n  src/Widgets/SearchFieldWidget.cpp \\\n  src/Widgets/LanguageSelectionWidget.cpp \\\n  src/Widgets/ProgressInfoWindow.cpp\n\nequals(GMIC_DYNAMIC_LINKING, \"on\" )|equals(GMIC_DYNAMIC_LINKING, \"ON\" ) {\n  message(Dynamic linking with libgmic)\n  LIBS += -Wl,-rpath,. $$GMIC_PATH/libgmic.so\n}\n\nequals(GMIC_DYNAMIC_LINKING, \"off\" )|equals(GMIC_DYNAMIC_LINKING, \"OFF\" ) {\n   SOURCES += $$GMIC_PATH/gmic.cpp\n}\n\n# ALL_FORMS\nFORMS +=  ui/inoutpanel.ui \\\n          ui/sourceswidget.ui \\\n          ui/multilinetextparameterwidget.ui \\\n          ui/progressinfowindow.ui \\\n          ui/dialogsettings.ui \\\n          ui/progressinfowidget.ui \\\n          ui/mainwindow.ui \\\n          ui/SearchFieldWidget.ui \\\n          ui/headlessprogressdialog.ui \\\n          ui/zoomlevelselector.ui \\\n          ui/languageselectionwidget.ui \\\n          ui/filtersview.ui\n\nRESOURCES += gmic_qt.qrc translations.qrc\nequals(HOST, \"none\") {\n RESOURCES += standalone.qrc\n}\n\nTRANSLATIONS = \\\ntranslations/cs.ts \\\ntranslations/de.ts \\\ntranslations/es.ts \\\ntranslations/fr.ts \\\ntranslations/id.ts \\\ntranslations/it.ts \\\ntranslations/ja.ts \\\ntranslations/nl.ts \\\ntranslations/pl.ts \\\ntranslations/pt.ts \\\ntranslations/ru.ts \\\ntranslations/sv.ts \\\ntranslations/uk.ts \\\ntranslations/zh.ts \\\ntranslations/zh_tw.ts\n\nRESOURCES += wip_translations.qrc\n\n# Prevent overwriting of these files by lupdate\n# TRANSLATIONS += translations/filters/fr.ts\n\nQMAKE_CXXFLAGS_RELEASE += -O3\nQMAKE_LFLAGS_RELEASE += -s\nQMAKE_CXXFLAGS_DEBUG += -Dcimg_verbosity=3\n\nunix { DEFINES += cimg_use_vt100 }\n\nCONFIG(release, debug|release) {\n    message(Release build)\n    DEFINES += QT_NO_DEBUG_OUTPUT\n}\n\nCONFIG(debug, debug|release) {\n    message(Debug build)\n    DEFINES += _GMIC_QT_DEBUG_\n#    QMAKE_CXXFLAGS_DEBUG += -Wfatal-errors\n}\n\nequals(ASAN,\"on\")|equals(ASAN,\"ON\") {\n    message(Address sanitizer enabled)\n    QMAKE_CXXFLAGS_DEBUG += -fsanitize=address\n    QMAKE_LFLAGS_DEBUG += -fsanitize=address\n}\n\nUI_DIR = .ui\nMOC_DIR = .moc\nRCC_DIR = .qrc\nOBJECTS_DIR = .obj\n"
  },
  {
    "path": "gmic_qt.qrc",
    "content": "<RCC>\n    <qresource prefix=\"/\">\n        <file>icons/bookmark-add.png</file>\n        <file>icons/bookmark-remove.png</file>\n        <file>icons/cancel.png</file>\n        <file>icons/close.png</file>\n        <file>icons/dark/bookmark-add.png</file>\n        <file>icons/dark/bookmark-remove.png</file>\n        <file>icons/dark/cancel.png</file>\n        <file>icons/dark/close.png</file>\n        <file>icons/dark/document-open.png</file>\n        <file>icons/dark/draw-arrow-down.png</file>\n        <file>icons/dark/draw-arrow-up.png</file>\n        <file>icons/dark/edit-clear.png</file>\n        <file>icons/dark/edit-copy.png</file>\n        <file>icons/dark/edit-find.png</file>\n        <file>icons/dark/folder.png</file>\n        <file>icons/dark/insert-image.png</file>\n        <file>icons/dark/list-add.png</file>\n        <file>icons/dark/list-remove.png</file>\n        <file>icons/dark/package_settings.png</file>\n        <file>icons/dark/rename.png</file>\n        <file>icons/dark/selection_mode.png</file>\n        <file>icons/dark/system-run.png</file>\n        <file>icons/dark/undo.png</file>\n        <file>icons/dark/user-trash.png</file>\n        <file>icons/dark/view-fullscreen.png</file>\n        <file>icons/dark/view-refresh.png</file>\n        <file>icons/dark/zoom-in.png</file>\n        <file>icons/dark/zoom-out.png</file>\n        <file>icons/document-open.png</file>\n        <file>icons/draw-arrow-down.png</file>\n        <file>icons/draw-arrow-up.png</file>\n        <file>icons/edit-clear.png</file>\n        <file>icons/edit-copy.png</file>\n        <file>icons/edit-find.png</file>\n        <file>icons/folder.png</file>\n        <file>icons/insert-image.png</file>\n        <file>icons/list-add.png</file>\n        <file>icons/list-remove.png</file>\n        <file>icons/package_settings.png</file>\n        <file>icons/rename.png</file>\n        <file>icons/selection_mode.png</file>\n        <file>icons/system-run.png</file>\n        <file>icons/undo.png</file>\n        <file>icons/user-trash.png</file>\n        <file>icons/view-fullscreen.png</file>\n        <file>icons/view-refresh.png</file>\n        <file>icons/zoom-in.png</file>\n        <file>icons/zoom-out.png</file>\n        <file>images/no_warning.png</file>\n        <file>images/preview_left.png</file>\n        <file>images/preview_right.png</file>\n        <file>images/warning.png</file>\n        <file>resources/gmic_hat.png</file>\n        <file>resources/logos.png</file>\n        <file>resources/transparency.png</file>\n        <file>icons/color-wheel.png</file>\n        <file>icons/dark/color-wheel.png</file>\n        <file>icons/randomize.png</file>\n    </qresource>\n</RCC>\n"
  },
  {
    "path": "pkg-config-check.sh",
    "content": "#!/bin/bash\nbash -c \"pkg-config --version\" > /dev/null 2>&1\n"
  },
  {
    "path": "pre_version.sh",
    "content": "#!/bin/bash\n# workaround for MSYS2 call of date by qmake.\ndate \"+%y%m%d%H\"\n"
  },
  {
    "path": "scripts/travis_build_cmake.sh",
    "content": "#!/bin/bash\nset -ev\n\nif [ \"${TRAVIS_BRANCH}\" = devel ]; then\n    BUILD_TYPE=Debug\nelse\n    BUILD_TYPE=Release\nfi\n\ncmake --version\n\nGMIC_PATH=$(pwd)/gmic-clone/src\n\nmkdir build\ncd build\ncmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DGMIC_PATH=${GMIC_PATH} -DGMIC_QT_HOST=${GMIC_HOST} ..\nmake VERBOSE=1\n"
  },
  {
    "path": "scripts/travis_build_qmake.sh",
    "content": "#!/bin/bash\nset -ev\n\nif [ \"${TRAVIS_BRANCH}\" = devel ]; then\n    config=debug\nelse\n    config=release\nfi\n\nqmake --version\n\necho \"Building standalone plugin\"\nqmake CONFIG+=${config} HOST=none GMIC_PATH=gmic-clone/src\nmake\n\necho \"Building Gimp plugin\"\nqmake CONFIG+=${config} HOST=gimp GMIC_PATH=gmic-clone/src\nmake\nmake\n"
  },
  {
    "path": "src/ClickableLabel.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ClickableLabel.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"ClickableLabel.h\"\n#include <QMouseEvent>\n\nnamespace GmicQt\n{\n\nClickableLabel::ClickableLabel(QWidget * parent) : QLabel(parent) {}\n\nvoid ClickableLabel::mousePressEvent(QMouseEvent * e)\n{\n  if (e->buttons() & Qt::LeftButton) {\n    emit clicked();\n  }\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/ClickableLabel.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ClickableLabel.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_CLICKABLELABEL_H\n#define GMIC_QT_CLICKABLELABEL_H\n\n#include <QLabel>\n\nclass QMouseEvent;\n\nnamespace GmicQt\n{\n\nclass ClickableLabel : public QLabel {\n  Q_OBJECT\npublic:\n  ClickableLabel(QWidget * parent);\n  void mousePressEvent(QMouseEvent * e) override;\nsignals:\n  void clicked();\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_CLICKABLELABEL_H\n"
  },
  {
    "path": "src/Common.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file Common.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n#include \"Common.h\"\n"
  },
  {
    "path": "src/Common.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file Common.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_COMMON_H\n#define GMIC_QT_COMMON_H\n\n#include <QTime>\n#include <QtGlobal>\n#include <iostream>\n#include \"TimeLogger.h\"\n\n#ifdef _GMIC_QT_DEBUG_\n#define DEBUG_QTIMESTAMP QTime::currentTime().toString(\"[hh:mm:ss]\")\n#define DEBUG_TIMESTAMP QTime::currentTime().toString(\"[hh:mm:ss]\").toStdString()\n#define ENTERING std::cerr << DEBUG_TIMESTAMP << \" [\" << __PRETTY_FUNCTION__ << \"] <<Entering>>\" << std::endl\n#define LEAVING std::cerr << DEBUG_TIMESTAMP << \" [\" << __PRETTY_FUNCTION__ << \"] <<Leaving>>\" << std::endl\n#define TRACE qWarning() << DEBUG_QTIMESTAMP << \"[\" << __PRETTY_FUNCTION__ << \"]\"\n#define TSHOW(V) qWarning() << DEBUG_QTIMESTAMP << \"[\" << __PRETTY_FUNCTION__ << \"]:\" << __LINE__ << \" \" << #V << \"=\" << (V)\n#define SHOW(V) qWarning() << #V << \"=\" << (V)\n#define STDSHOW(V) std::cerr << #V << \" = \" << (V) << std::endl\n#define QSTDSHOW(STR) std::cerr << #STR << \" = \" << (STR).toStdString() << std::endl\n#else\n#define ENTERING while (false)\n#define LEAVING while (false)\n#define TRACE                                                                                                                                                                                          \\\n  while (false)                                                                                                                                                                                        \\\n  qWarning() << \"\"\n#define TSHOW(V)                                                                                                                                                                                       \\\n  while (false)                                                                                                                                                                                        \\\n  qWarning() << \"\"\n#define SHOW(V)                                                                                                                                                                                        \\\n  while (false)                                                                                                                                                                                        \\\n  qWarning() << \"\"\n#define STDSHOW(V)                                                                                                                                                                                     \\\n  while (false)                                                                                                                                                                                        \\\n  std::cerr << \"\"\n#define QSTDSHOW(STR)                                                                                                                                                                                  \\\n  while (false)                                                                                                                                                                                        \\\n  std::cerr << \"\"\n#endif\n\ntemplate <typename T> inline void unused(const T &, ...) {}\n\n#ifdef _TIMING_ENABLED_\n#define TIMING GmicQt::TimeLogger::getInstance()->step(__PRETTY_FUNCTION__, __LINE__, __FILE__)\n#else\n#define TIMING                                                                                                                                                                                         \\\n  if (false)                                                                                                                                                                                           \\\n  std::cout << \"\"\n#endif\n\n#define QT_VERSION_GTE(MAJOR, MINOR, PATCH) (QT_VERSION >= QT_VERSION_CHECK(MAJOR, MINOR, PATCH))\n\n#if QT_VERSION_GTE(5, 14, 0)\n#define QT_SKIP_EMPTY_PARTS Qt::SkipEmptyParts\n#define QT_KEEP_EMPTY_PARTS Qt::KeepEmptyParts\n#else\n#define QT_SKIP_EMPTY_PARTS QString::SkipEmptyParts\n#define QT_KEEP_EMPTY_PARTS QString::KeepEmptyParts\n#endif\n\n#endif // GMIC_QT_COMMON_H\n"
  },
  {
    "path": "src/CroppedActiveLayerProxy.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file CroppedActiveLayerProxy.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n#include \"CroppedActiveLayerProxy.h\"\n#include <QDebug>\n#include \"Common.h\"\n#include \"Host/GmicQtHost.h\"\n#include \"gmic.h\"\n\nnamespace GmicQt\n{\n\ndouble CroppedActiveLayerProxy::_x = -1.0;\ndouble CroppedActiveLayerProxy::_y = -1.0;\ndouble CroppedActiveLayerProxy::_width = -1.0;\ndouble CroppedActiveLayerProxy::_height = -1.0;\nstd::unique_ptr<gmic_library::gmic_image<gmic_pixel_type>> CroppedActiveLayerProxy::_cachedImage(new gmic_library::gmic_image<gmic_pixel_type>);\n\nvoid CroppedActiveLayerProxy::get(gmic_library::gmic_image<gmic_pixel_type> & image, double x, double y, double width, double height)\n{\n  if ((x != _x) || (y != _y) || (width != _width) || (height != _height)) {\n    update(x, y, width, height);\n  }\n  image = *_cachedImage;\n}\n\nQSize CroppedActiveLayerProxy::getSize(double x, double y, double width, double height)\n{\n  if ((x != _x) || (y != _y) || (width != _width) || (height != _height)) {\n    update(x, y, width, height);\n  }\n  return QSize(_cachedImage->width(), _cachedImage->height());\n}\n\nvoid CroppedActiveLayerProxy::clear()\n{\n  _cachedImage->assign();\n  _x = _y = _width = _height = -1.0;\n}\n\nvoid CroppedActiveLayerProxy::update(double x, double y, double width, double height)\n{\n  _x = x;\n  _y = y;\n  _width = width;\n  _height = height;\n\n  gmic_library::gmic_list<gmic_pixel_type> images;\n  gmic_library::gmic_list<char> imageNames;\n  GmicQtHost::getCroppedImages(images, imageNames, _x, _y, _width, _height, InputMode::Active);\n  if (images.size() > 0) {\n    GmicQtHost::applyColorProfile(images.front());\n    _cachedImage->swap(images.front());\n  } else {\n    clear();\n  }\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/CroppedActiveLayerProxy.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file CroppedActiveLayerProxy.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_CROPPEDACTIVELAYERPROXY_H\n#define GMIC_QT_CROPPEDACTIVELAYERPROXY_H\n\n#include <QSize>\n#include <memory>\n#include \"GmicQt.h\"\n\nnamespace gmic_library\n{\ntemplate <typename T> struct gmic_image;\ntemplate <typename T> struct gmic_list;\n} // namespace gmic_library\n\nnamespace GmicQt\n{\nclass CroppedActiveLayerProxy {\npublic:\n  CroppedActiveLayerProxy() = delete;\n\n  static void get(gmic_library::gmic_image<gmic_pixel_type> & image, double x, double y, double width, double height);\n  static QSize getSize(double x, double y, double width, double height);\n  static void clear();\n\nprivate:\n  static void update(double x, double y, double width, double height);\n  static std::unique_ptr<gmic_library::gmic_image<float>> _cachedImage;\n  static double _x;\n  static double _y;\n  static double _width;\n  static double _height;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_CROPPEDACTIVELAYERPROXY_H\n"
  },
  {
    "path": "src/CroppedImageListProxy.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file CroppedImageListProxy.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n#include \"CroppedImageListProxy.h\"\n#include <QDebug>\n#include <cmath>\n#include \"Common.h\"\n#include \"Host/GmicQtHost.h\"\n#include \"gmic.h\"\n\nnamespace GmicQt\n{\n\ndouble CroppedImageListProxy::_x = -1.0;\ndouble CroppedImageListProxy::_y = -1.0;\ndouble CroppedImageListProxy::_width = -1.0;\ndouble CroppedImageListProxy::_height = -1.0;\ndouble CroppedImageListProxy::_zoom = 0.0;\nInputMode CroppedImageListProxy::_inputMode = InputMode::Unspecified;\nstd::unique_ptr<gmic_library::gmic_list<gmic_pixel_type>> CroppedImageListProxy::_cachedImageList(new gmic_library::gmic_list<gmic_pixel_type>);\nstd::unique_ptr<gmic_library::gmic_list<char>> CroppedImageListProxy::_cachedImageNames(new gmic_library::gmic_list<char>);\n\nvoid CroppedImageListProxy::get(gmic_library::gmic_list<gmic_pixel_type> & images, gmic_library::gmic_list<char> & imageNames,\n                                double x, double y, double width, double height, InputMode mode, double zoom)\n{\n  if ((x != _x) || (y != _y) || (width != _width) || (height != _height) || (mode != _inputMode) || (zoom != _zoom)) {\n    update(x, y, width, height, mode, zoom);\n  }\n  images = *_cachedImageList;\n  imageNames = *_cachedImageNames;\n}\n\nvoid CroppedImageListProxy::update(double x, double y, double width, double height, InputMode mode, double zoom)\n{\n  _x = x;\n  _y = y;\n  _width = width;\n  _height = height;\n  _inputMode = mode;\n  _zoom = zoom;\n  GmicQtHost::getCroppedImages(*_cachedImageList, *_cachedImageNames, _x, _y, _width, _height, _inputMode);\n  if (zoom < 1.0) {\n    for (unsigned int i = 0; i < _cachedImageList->size(); ++i) {\n      gmic_image<float> & image = (*_cachedImageList)[i];\n      image.resize(std::round(image.width() * zoom), std::round(image.height() * zoom), 1, -100, 1);\n    }\n  }\n}\n\nvoid CroppedImageListProxy::clear()\n{\n  _cachedImageList->assign();\n  _cachedImageNames->assign();\n  _x = _y = _width = _height = -1.0;\n  _inputMode = InputMode::Unspecified;\n  _zoom = 0.0;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/CroppedImageListProxy.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file CroppedImageListProxy.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_CROPPEDIMAGELISTPROXY_H\n#define GMIC_QT_CROPPEDIMAGELISTPROXY_H\n\n#include <memory>\n#include \"GmicQt.h\"\n\nnamespace gmic_library\n{\ntemplate <typename T> struct gmic_image;\ntemplate <typename T> struct gmic_list;\n} // namespace gmic_library\n\nnamespace GmicQt\n{\n\nclass CroppedImageListProxy {\npublic:\n  CroppedImageListProxy() = delete;\n\n  static void get(gmic_library::gmic_list<gmic_pixel_type> & images, gmic_library::gmic_list<char> & imageNames, double x, double y, double width, double height, InputMode mode, double zoom);\n  static void update(double x, double y, double width, double height, InputMode mode, double zoom);\n  static void clear();\n\nprivate:\n  static std::unique_ptr<gmic_library::gmic_list<float>> _cachedImageList;\n  static std::unique_ptr<gmic_library::gmic_list<char>> _cachedImageNames;\n  static double _x;\n  static double _y;\n  static double _width;\n  static double _height;\n  static InputMode _inputMode;\n  static double _zoom;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_CROPPEDIMAGELISTPROXY_H\n"
  },
  {
    "path": "src/DialogSettings.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file DialogSettings.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"DialogSettings.h\"\n#include <QCloseEvent>\n#include <QSettings>\n#include <limits>\n#include \"Common.h\"\n#include \"Globals.h\"\n#include \"Host/GmicQtHost.h\"\n#include \"IconLoader.h\"\n#include \"Logger.h\"\n#include \"MainWindow.h\"\n#include \"Settings.h\"\n#include \"Updater.h\"\n#include \"ui_dialogsettings.h\"\n\nnamespace GmicQt\n{\nDialogSettings::DialogSettings(QWidget * parent) : QDialog(parent), ui(new Ui::DialogSettings)\n{\n  ui->setupUi(this);\n\n  setWindowTitle(tr(\"Settings\"));\n  setWindowIcon(parent->windowIcon());\n  adjustSize();\n\n  ui->pbUpdate->setIcon(IconLoader::load(\"view-refresh\"));\n\n  ui->cbUpdatePeriodicity->addItem(tr(\"Never\"), QVariant(INTERNET_NEVER_UPDATE_PERIODICITY));\n  ui->cbUpdatePeriodicity->addItem(tr(\"Daily\"), QVariant(ONE_DAY_HOURS));\n  ui->cbUpdatePeriodicity->addItem(tr(\"Weekly\"), QVariant(ONE_WEEK_HOURS));\n  ui->cbUpdatePeriodicity->addItem(tr(\"Every 2 weeks\"), QVariant(TWO_WEEKS_HOURS));\n  ui->cbUpdatePeriodicity->addItem(tr(\"Monthly\"), QVariant(ONE_MONTH_HOURS));\n#ifdef _GMIC_QT_DEBUG_\n  ui->cbUpdatePeriodicity->addItem(tr(\"At launch (debug)\"), QVariant(0));\n#endif\n  for (int i = 0; i < ui->cbUpdatePeriodicity->count(); ++i) {\n    if (Settings::updatePeriodicity() == ui->cbUpdatePeriodicity->itemData(i).toInt()) {\n      ui->cbUpdatePeriodicity->setCurrentIndex(i);\n    }\n  }\n\n  ui->outputMessages->setToolTip(tr(\"Output messages\"));\n  ui->outputMessages->addItem(tr(\"Quiet (default)\"), (int)OutputMessageMode::Quiet);\n  ui->outputMessages->addItem(tr(\"Verbose (console)\"), (int)OutputMessageMode::VerboseConsole);\n  ui->outputMessages->addItem(tr(\"Verbose (log file)\"), (int)OutputMessageMode::VerboseLogFile);\n  ui->outputMessages->addItem(tr(\"Very verbose (console)\"), (int)OutputMessageMode::VeryVerboseConsole);\n  ui->outputMessages->addItem(tr(\"Very verbose (log file)\"), (int)OutputMessageMode::VeryVerboseLogFile);\n  ui->outputMessages->addItem(tr(\"Debug (console)\"), (int)OutputMessageMode::DebugConsole);\n  ui->outputMessages->addItem(tr(\"Debug (log file)\"), (int)OutputMessageMode::DebugLogFile);\n  for (int index = 0; index < ui->outputMessages->count(); ++index) {\n    if (ui->outputMessages->itemData(index) == (int)Settings::outputMessageMode()) {\n      ui->outputMessages->setCurrentIndex(index);\n      break;\n    }\n  }\n\n  ui->sbPreviewTimeout->setRange(0, 999);\n\n  ui->rbLeftPreview->setChecked(Settings::previewPosition() == MainWindow::PreviewPosition::Left);\n  ui->rbRightPreview->setChecked(Settings::previewPosition() == MainWindow::PreviewPosition::Right);\n  const bool savedDarkTheme = QSettings().value(DARK_THEME_KEY, GmicQtHost::DarkThemeIsDefault).toBool();\n  ui->rbDarkTheme->setChecked(savedDarkTheme);\n  ui->rbDefaultTheme->setChecked(!savedDarkTheme);\n  ui->cbNativeColorDialogs->setChecked(Settings::nativeColorDialogs());\n  ui->cbNativeColorDialogs->setToolTip(tr(\"Check to use Native/OS color dialog, uncheck to use Qt's\"));\n  ui->cbNativeFileDialogs->setChecked(Settings::nativeFileDialogs());\n  ui->cbNativeFileDialogs->setToolTip(tr(\"Check to use Native/OS file dialog, uncheck to use Qt's\"));\n  ui->cbShowLogos->setChecked(Settings::visibleLogos());\n  ui->sbPreviewTimeout->setValue(Settings::previewTimeout());\n  ui->cbPreviewZoom->setChecked(Settings::previewZoomAlwaysEnabled());\n  ui->cbNotifyFailedUpdate->setChecked(Settings::notifyFailedStartupUpdate());\n\n  connect(ui->pbOk, &QPushButton::clicked, this, &DialogSettings::onOk);\n  connect(ui->rbLeftPreview, &QRadioButton::toggled, this, &DialogSettings::onRadioLeftPreviewToggled);\n  connect(ui->pbUpdate, &QPushButton::clicked, this, &DialogSettings::onUpdateClicked);\n  connect(ui->cbUpdatePeriodicity, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &DialogSettings::onUpdatePeriodicityChanged);\n  connect(ui->labelPreviewLeft, &ClickableLabel::clicked, ui->rbLeftPreview, &QRadioButton::click);\n  connect(ui->labelPreviewRight, &ClickableLabel::clicked, ui->rbRightPreview, &QRadioButton::click);\n  connect(ui->cbNativeColorDialogs, &QCheckBox::toggled, this, &DialogSettings::onColorDialogsToggled);\n  connect(ui->cbNativeFileDialogs, &QCheckBox::toggled, this, &DialogSettings::onFileDialogsToggled);\n  connect(Updater::getInstance(), &Updater::updateIsDone, this, &DialogSettings::enableUpdateButton);\n  connect(ui->rbDarkTheme, &QRadioButton::toggled, this, &DialogSettings::onDarkThemeToggled);\n  connect(ui->cbShowLogos, &QCheckBox::toggled, this, &DialogSettings::onVisibleLogosToggled);\n  connect(ui->cbPreviewZoom, &QCheckBox::toggled, this, &DialogSettings::onPreviewZoomToggled);\n  connect(ui->sbPreviewTimeout, QOverload<int>::of(&QSpinBox::valueChanged), this, &DialogSettings::onPreviewTimeoutChange);\n  connect(ui->outputMessages, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &DialogSettings::onOutputMessageModeChanged);\n  connect(ui->cbNotifyFailedUpdate, &QCheckBox::toggled, this, &DialogSettings::onNotifyStartupUpdateFailedToggle);\n\n#if QT_VERSION_GTE(6, 0, 0)\n  ui->cbHighDPI->hide();\n  ui->labelHighDPI->hide();\n#else\n  ui->cbHighDPI->setChecked(Settings::highDPIEnabled());\n  connect(ui->cbHighDPI, &QCheckBox::toggled, this, &DialogSettings::onHighDPIToggled);\n#endif\n\n  ui->languageSelector->selectLanguage(Settings::languageCode());\n  ui->languageSelector->enableFilterTranslation(Settings::filterTranslationEnabled());\n\n  if (Settings::darkThemeEnabled()) {\n    QPalette p = ui->cbNativeColorDialogs->palette();\n    p.setColor(QPalette::Text, Settings::CheckBoxTextColor);\n    p.setColor(QPalette::Base, Settings::CheckBoxBaseColor);\n    ui->cbNativeColorDialogs->setPalette(p);\n    ui->cbNativeFileDialogs->setPalette(p);\n    ui->cbPreviewZoom->setPalette(p);\n    ui->cbUpdatePeriodicity->setPalette(p);\n    ui->rbDarkTheme->setPalette(p);\n    ui->rbDefaultTheme->setPalette(p);\n    ui->rbLeftPreview->setPalette(p);\n    ui->rbRightPreview->setPalette(p);\n    ui->cbShowLogos->setPalette(p);\n    ui->cbNotifyFailedUpdate->setPalette(p);\n    ui->cbHighDPI->setPalette(p);\n  }\n  ui->pbOk->setFocus();\n  ui->tabWidget->setCurrentIndex(0);\n}\n\nDialogSettings::~DialogSettings()\n{\n  delete ui;\n}\n\nvoid DialogSettings::sourcesStatus(bool & modified, bool & internetUpdateRequired)\n{\n  modified = ui->sources->sourcesModified(internetUpdateRequired);\n}\n\nvoid DialogSettings::onOk()\n{\n  done(QDialog::Accepted);\n}\n\nvoid DialogSettings::done(int r)\n{\n  QSettings settings;\n  ui->sources->saveSettings();\n  Settings::save(settings);\n  QDialog::done(r);\n}\n\nvoid DialogSettings::onVisibleLogosToggled(bool on)\n{\n  Settings::setVisibleLogos(on);\n}\n\nvoid DialogSettings::onPreviewTimeoutChange(int value)\n{\n  Settings::setPreviewTimeout(value);\n}\n\nvoid DialogSettings::onOutputMessageModeChanged(int)\n{\n  const OutputMessageMode mode = static_cast<OutputMessageMode>(ui->outputMessages->currentData().toInt());\n  Settings::setOutputMessageMode(mode);\n  Logger::setMode(mode);\n}\n\nvoid DialogSettings::onPreviewZoomToggled(bool on)\n{\n  Settings::setPreviewZoomAlwaysEnabled(on);\n}\n\nvoid DialogSettings::onNotifyStartupUpdateFailedToggle(bool on)\n{\n  Settings::setNotifyFailedStartupUpdate(on);\n}\n\nvoid DialogSettings::onHighDPIToggled(bool on)\n{\n  Settings::setHighDPIEnabled(on);\n}\n\nvoid DialogSettings::enableUpdateButton()\n{\n  ui->pbUpdate->setEnabled(true);\n}\n\nvoid DialogSettings::onRadioLeftPreviewToggled(bool on)\n{\n  if (on) {\n    Settings::setPreviewPosition(MainWindow::PreviewPosition::Left);\n  } else {\n    Settings::setPreviewPosition(MainWindow::PreviewPosition::Right);\n  }\n}\n\nvoid DialogSettings::onUpdateClicked()\n{\n  auto mainWindow = dynamic_cast<MainWindow *>(parent());\n  if (mainWindow) {\n    ui->pbUpdate->setEnabled(false);\n    mainWindow->updateFiltersFromSources(0, true);\n  }\n}\n\nvoid DialogSettings::onDarkThemeToggled(bool on)\n{\n  QSettings().setValue(DARK_THEME_KEY, on);\n}\n\nvoid DialogSettings::onUpdatePeriodicityChanged(int)\n{\n  Settings::setUpdatePeriodicity(ui->cbUpdatePeriodicity->currentData().toInt());\n}\n\nvoid DialogSettings::onColorDialogsToggled(bool on)\n{\n  Settings::setNativeColorDialogs(on);\n}\n\nvoid DialogSettings::onFileDialogsToggled(bool on)\n{\n  Settings::setNativeFileDialogs(on);\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/DialogSettings.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file DialogSettings.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_DIALOGSETTINGS_H\n#define GMIC_QT_DIALOGSETTINGS_H\n\n#include <QDialog>\nclass QCloseEvent;\nclass QSettings;\n\nnamespace Ui\n{\nclass DialogSettings;\n}\n\nnamespace GmicQt\n{\n\nclass DialogSettings : public QDialog {\n  Q_OBJECT\n\npublic:\n  explicit DialogSettings(QWidget * parent);\n  ~DialogSettings() override;\n  void sourcesStatus(bool & modified, bool & internetUpdateRequired);\n\npublic slots:\n  void onRadioLeftPreviewToggled(bool);\n  void onDarkThemeToggled(bool on);\n  void onUpdateClicked();\n  void onOk();\n  void enableUpdateButton();\n  void onUpdatePeriodicityChanged(int i);\n  void onColorDialogsToggled(bool);\n  void onFileDialogsToggled(bool);\n  void done(int r) override;\n  void onVisibleLogosToggled(bool);\n  void onPreviewTimeoutChange(int);\n  void onOutputMessageModeChanged(int);\n  void onPreviewZoomToggled(bool);\n  void onNotifyStartupUpdateFailedToggle(bool);\n  void onHighDPIToggled(bool);\n\nprivate:\n  Ui::DialogSettings * ui;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_DIALOGSETTINGS_H\n"
  },
  {
    "path": "src/FilterGuiDynamismCache.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterGuiDynamismCache.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterGuiDynamismCache.h\"\n#include <QBuffer>\n#include <QDataStream>\n#include <QDebug>\n#include <QFile>\n#include <QJsonArray>\n#include <QJsonDocument>\n#include <QJsonObject>\n#include <iostream>\n#include \"Common.h\"\n#include \"Globals.h\"\n#include \"Logger.h\"\n#include \"Utils.h\"\n#include \"gmic.h\"\n\nnamespace GmicQt\n{\nQHash<QString, int> FilterGuiDynamismCache::_dynamismCache;\n\nvoid FilterGuiDynamismCache::load()\n{\n  _dynamismCache.clear();\n  QString jsonFilename = QString(\"%1%2\").arg(gmicConfigPath(true), FILTER_GUI_DYNAMISM_CACHE_FILENAME);\n  QFile jsonFile(jsonFilename);\n  if (!jsonFile.exists()) {\n    return;\n  }\n  if (jsonFile.open(QFile::ReadOnly)) {\n    QJsonDocument jsonDoc;\n    QByteArray allFile = jsonFile.readAll();\n    if (allFile.startsWith(\"{\")) { // Was created in debug mode\n      jsonDoc = QJsonDocument::fromJson(allFile);\n    } else {\n      jsonDoc = QJsonDocument::fromJson(qUncompress(allFile));\n    }\n    if (jsonDoc.isNull()) {\n      Logger::warning(QString(\"Cannot parse \") + jsonFilename);\n      Logger::warning(\"Last filters parameters are lost!\");\n    } else {\n      if (!jsonDoc.isObject()) {\n        Logger::error(QString(\"JSON file format is not correct (\") + jsonFilename + \")\");\n      } else {\n        QJsonObject documentObject = jsonDoc.object();\n        QJsonObject::iterator itFilter = documentObject.begin();\n        while (itFilter != documentObject.end()) {\n          QString hash = itFilter.key();\n          QString status = itFilter.value().toString();\n          if (status == \"Static\") {\n            _dynamismCache.insert(hash, FilterGuiDynamism::Static);\n          } else if (status == \"Dynamic\") {\n            _dynamismCache.insert(hash, FilterGuiDynamism::Dynamic);\n          }\n          ++itFilter;\n        }\n      }\n    }\n  } else {\n    Logger::error(\"Cannot open \" + jsonFilename);\n    Logger::error(\"Parameters cannot be restored\");\n  }\n}\n\nvoid FilterGuiDynamismCache::save()\n{\n  // JSON Document format\n  //\n  // {\n  //  \"51d288e6f1c6e531cc61289f17e34d8a\": {\n  //      \"parameters\": [\n  //          \"6\",\n  //          \"21.06\",\n  //          \"1.36\",\n  //          \"5\",\n  //          \"0\"\n  //      ],\n  //      \"in_out_state\": {\n  //          \"InputLayers\": 1,\n  //          \"OutputMessages\": 5,\n  //          \"OutputMode\": 100,\n  //          \"PreviewMode\": 100\n  //      }\n  //      \"visibility_states\": [\n  //             0,\n  //             1,\n  //             2,\n  //             0\n  //      ]\n  //  }\n  // }\n\n  QJsonObject documentObject;\n  QHash<QString, int>::iterator it = _dynamismCache.begin();\n  while (it != _dynamismCache.end()) {\n    if (it.value() == FilterGuiDynamism::Unknown) {\n      ++it;\n      continue;\n    }\n    QJsonValue status((it.value() == FilterGuiDynamism::Static) ? \"Static\" : \"Dynamic\");\n    documentObject.insert(it.key(), status);\n    ++it;\n  }\n\n  QJsonDocument jsonDoc(documentObject);\n  QString jsonFilename = QString(\"%1%2\").arg(gmicConfigPath(true), FILTER_GUI_DYNAMISM_CACHE_FILENAME);\n#ifdef _GMIC_QT_DEBUG_\n  QByteArray array(jsonDoc.toJson());\n#else\n  QByteArray array(qCompress(jsonDoc.toJson(QJsonDocument::Compact)));\n#endif\n  if (!safelyWrite(array, jsonFilename)) {\n    Logger::error(\"Cannot write \" + jsonFilename);\n    Logger::error(\"Parameters cannot be saved\");\n  }\n}\n\nvoid FilterGuiDynamismCache::setValue(const QString & hash, FilterGuiDynamism dynamism)\n{\n  _dynamismCache.insert(hash, int(dynamism));\n}\n\nFilterGuiDynamism FilterGuiDynamismCache::getValue(const QString & hash)\n{\n  auto it = _dynamismCache.find(hash);\n  if (it != _dynamismCache.end()) {\n    return FilterGuiDynamism(it.value());\n  }\n  return FilterGuiDynamism::Unknown;\n}\n\nvoid FilterGuiDynamismCache::remove(const QString & hash)\n{\n  _dynamismCache.remove(hash);\n}\n\nvoid FilterGuiDynamismCache::clear()\n{\n  _dynamismCache.clear();\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterGuiDynamismCache.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterGuiDynamismCache.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FILTERGUIDYNAMISMCACHE_H\n#define GMIC_QT_FILTERGUIDYNAMISMCACHE_H\n\n#include <QHash>\n#include <QString>\n\nnamespace GmicQt\n{\n\nenum FilterGuiDynamism\n{\n  Unknown = 0,\n  Static = 1,\n  Dynamic = 2\n};\n\nclass FilterGuiDynamismCache {\npublic:\n  static void load();\n  static void save();\n  static void setValue(const QString & hash, FilterGuiDynamism dynamism);\n  static FilterGuiDynamism getValue(const QString & hash);\n  static void remove(const QString & hash);\n  static void clear();\n\nprivate:\n  static QHash<QString, int> _dynamismCache;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FILTERGUIDYNAMISMCACHE_H\n"
  },
  {
    "path": "src/FilterParameters/AbstractParameter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file AbstractParameter.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/AbstractParameter.h\"\n#include <QDebug>\n#include <QGridLayout>\n#include <QLabel>\n#include <QRegularExpression>\n#include <cstring>\n#include \"Common.h\"\n#include \"FilterParameters/BoolParameter.h\"\n#include \"FilterParameters/ButtonParameter.h\"\n#include \"FilterParameters/ChoiceParameter.h\"\n#include \"FilterParameters/ColorParameter.h\"\n#include \"FilterParameters/ConstParameter.h\"\n#include \"FilterParameters/FileParameter.h\"\n#include \"FilterParameters/FloatParameter.h\"\n#include \"FilterParameters/FolderParameter.h\"\n#include \"FilterParameters/IntParameter.h\"\n#include \"FilterParameters/LinkParameter.h\"\n#include \"FilterParameters/NoteParameter.h\"\n#include \"FilterParameters/PointParameter.h\"\n#include \"FilterParameters/SeparatorParameter.h\"\n#include \"FilterParameters/TextParameter.h\"\n#include \"Logger.h\"\n\nnamespace GmicQt\n{\n\nconst QStringList AbstractParameter::NoValueParameters = {\"link\", \"note\", \"separator\"};\n\nAbstractParameter::AbstractParameter(QObject * parent) : QObject(parent)\n{\n  _update = true;\n  _visibilityState = _defaultVisibilityState = VisibilityState::Visible;\n  _visibilityPropagation = VisibilityPropagation::NoPropagation;\n  _row = -1;\n  _grid = nullptr;\n  _acceptRandom = false;\n}\n\nAbstractParameter::~AbstractParameter() {}\n\nbool AbstractParameter::isActualParameter() const\n{\n  return size() > 0;\n}\n\nbool AbstractParameter::isQuoted() const\n{\n  return false;\n}\n\nvoid AbstractParameter::clear()\n{\n  // Used to clear the value of a ButtonParameter\n}\n\nvoid AbstractParameter::randomize()\n{\n  // By default, no effect\n}\n\nvoid AbstractParameter::addToKeypointList(KeypointList &) const {}\n\nvoid AbstractParameter::extractPositionFromKeypointList(KeypointList &) {}\n\nAbstractParameter * AbstractParameter::createFromText(const QString & filterName, const char * text, int & length, QString & error, QObject * parent)\n{\n  AbstractParameter * result = nullptr;\n  QString line = text;\n  error.clear();\n\n#define IS_OF_TYPE(ptype) QRegularExpression(\"^[^=]*\\\\s*=\\\\s*[_~]{0,2}\" ptype, QRegularExpression::CaseInsensitiveOption).match(line).hasMatch()\n\n  if (IS_OF_TYPE(\"int\")) {\n    result = new IntParameter(parent);\n  } else if (IS_OF_TYPE(\"float\")) {\n    result = new FloatParameter(parent);\n  } else if (IS_OF_TYPE(\"bool\")) {\n    result = new BoolParameter(parent);\n  } else if (IS_OF_TYPE(\"choice\")) {\n    result = new ChoiceParameter(parent);\n  } else if (IS_OF_TYPE(\"color\")) {\n    result = new ColorParameter(parent);\n  } else if (IS_OF_TYPE(\"separator\")) {\n    result = new SeparatorParameter(parent);\n  } else if (IS_OF_TYPE(\"note\")) {\n    result = new NoteParameter(parent);\n  } else if (IS_OF_TYPE(\"file\") || IS_OF_TYPE(\"filein\") || IS_OF_TYPE(\"fileout\")) {\n    result = new FileParameter(parent);\n  } else if (IS_OF_TYPE(\"folder\")) {\n    result = new FolderParameter(parent);\n  } else if (IS_OF_TYPE(\"text\")) {\n    result = new TextParameter(parent);\n  } else if (IS_OF_TYPE(\"link\")) {\n    result = new LinkParameter(parent);\n  } else if (IS_OF_TYPE(\"value\")) {\n    result = new ConstParameter(parent);\n  } else if (IS_OF_TYPE(\"button\")) {\n    result = new ButtonParameter(parent);\n  } else if (IS_OF_TYPE(\"point\")) {\n    result = new PointParameter(parent);\n  }\n  if (result) {\n    if (!result->initFromText(filterName, text, length)) {\n      delete result;\n      result = nullptr;\n      if (!line.isEmpty()) {\n        QRegularExpression nameRegExp(\"^([^=]*\\\\s*)=\");\n        QRegularExpressionMatch match = nameRegExp.match(line);\n        if (match.hasMatch()) {\n          QString name = match.captured(1);\n          error = \"Parameter name: \" + name + \"\\n\" + error;\n        }\n      }\n    }\n  } else {\n    if (!line.isEmpty()) {\n      QRegularExpression nameRegExp(\"^([^=]*\\\\s*)=\");\n      QRegularExpressionMatch match = nameRegExp.match(line);\n      if (match.hasMatch()) {\n        QString name = match.captured(1);\n        QRegularExpression typeRegExp(R\"_(^[^=]*\\s*=\\s*[_~]{0,2}([^\\( ]*)\\s*\\()_\");\n        match = typeRegExp.match(line);\n        if (match.hasMatch()) {\n          error = \"Parameter name: \" + name + \"\\n\" + \"Type <\" + match.captured(1) + \"> is not recognized\\n\" + error;\n        } else {\n          error = \"Parameter name: \" + name + \"\\n\" + error;\n        }\n      }\n    }\n  }\n  return result;\n}\n\nAbstractParameter::VisibilityState AbstractParameter::defaultVisibilityState() const\n{\n  return _defaultVisibilityState;\n}\n\nvoid AbstractParameter::hideWidgets()\n{\n  if (!_grid || (_row == -1)) {\n    return;\n  }\n  for (int col = 0; col < 5; ++col) {\n    QLayoutItem * item = _grid->itemAtPosition(_row, col);\n    if (item) {\n      auto widget = item->widget();\n      widget->hide();\n    }\n  }\n}\n\nvoid AbstractParameter::setVisibilityState(AbstractParameter::VisibilityState state)\n{\n  if (state == VisibilityState::Unspecified) {\n    setVisibilityState(defaultVisibilityState());\n    return;\n  }\n  _visibilityState = state;\n  if (!_grid || (_row == -1)) {\n    return;\n  }\n  for (int col = 0; col < 5; ++col) {\n    QLayoutItem * item = _grid->itemAtPosition(_row, col);\n    if (item) {\n      auto widget = item->widget();\n      switch (state) {\n      case VisibilityState::Visible:\n        widget->setEnabled(true);\n        widget->show();\n        break;\n      case VisibilityState::Disabled:\n        widget->setEnabled(false);\n        widget->show();\n        break;\n      case VisibilityState::Hidden:\n        widget->hide();\n        break;\n      case VisibilityState::Unspecified:\n        // Taken care above (if)\n        break;\n      }\n    }\n  }\n}\n\nAbstractParameter::VisibilityState AbstractParameter::visibilityState() const\n{\n  return _visibilityState;\n}\n\nAbstractParameter::VisibilityPropagation AbstractParameter::visibilityPropagation() const\n{\n  return _visibilityPropagation;\n}\n\nbool AbstractParameter::acceptRandom() const\n{\n  return _acceptRandom;\n}\n\nvoid AbstractParameter::setTextSelectable(QLabel * label)\n{\n  Qt::TextInteractionFlags flags = label->textInteractionFlags();\n  flags.setFlag(Qt::TextSelectableByMouse, true);\n  label->setTextInteractionFlags(flags);\n}\n\nQStringList AbstractParameter::parseText(const QString & type, const char * text, int & length)\n{\n  QStringList result;\n  const QString str = text;\n  result << str.left(str.indexOf(\"=\")).trimmed();\n#ifdef _GMIC_QT_DEBUG_\n  _debugName = result.back();\n#endif\n\n  QRegularExpression re(QString(\"^[^=]*\\\\s*=\\\\s*([_~]{0,2})%1\\\\s*(.)\").arg(type), QRegularExpression::CaseInsensitiveOption);\n  QRegularExpressionMatch match = re.match(str);\n  const int prefixLength = match.captured(0).toUtf8().size();\n\n  _update = !match.captured(1).contains(\"_\");\n  _acceptRandom = match.captured(1).contains(\"~\");\n\n  QString open = match.captured(2);\n  const char * end = nullptr;\n  const char * closing = (open == \"(\") ? \")\" : (open == \"{\") ? \"}\" : (open == \"[\") ? \"]\" : nullptr;\n  if (!closing) {\n    Logger::error(QString(\"Parse error in %1 parameter (invalid opening character '%2').\").arg(type).arg(open));\n    length = 1 + prefixLength;\n    return QStringList();\n  }\n  end = strstr(text + prefixLength, closing);\n  if (!end) {\n    Logger::error(QString(\"Parse error in %1 parameter (cannot find closing '%2').\").arg(type).arg(closing));\n    length = 1 + prefixLength;\n    return QStringList();\n  }\n\n  // QString values = str.mid(prefixLength, -1).left(end - (text + prefixLength)).trimmed();\n  QString values = QString::fromUtf8(text + prefixLength, int(end - (text + prefixLength))).trimmed();\n  length = int(1 + end - text);\n\n  if (text[length] == '_' && text[length + 1] >= '0' && text[length + 1] <= '2') {\n    _defaultVisibilityState = static_cast<VisibilityState>(text[length + 1] - '0');\n    _visibilityPropagation = VisibilityPropagation::NoPropagation;\n    switch (text[length + 2]) {\n    case '-':\n      _visibilityPropagation = VisibilityPropagation::Up;\n      length += 3;\n      break;\n    case '+':\n      _visibilityPropagation = VisibilityPropagation::Down;\n      length += 3;\n      break;\n    case '*':\n      _visibilityPropagation = VisibilityPropagation::Down;\n      length += 3;\n      break;\n    default:\n      length += 2;\n      break;\n    }\n    if (NoValueParameters.contains(type)) {\n      Logger::warning(QString(\"Warning: %1 parameter should not define visibility. Ignored.\").arg(result.first()));\n      _defaultVisibilityState = AbstractParameter::VisibilityState::Visible;\n      _visibilityPropagation = VisibilityPropagation::NoPropagation;\n    }\n  }\n  while (text[length] && (text[length] == ',' || QChar(text[length]).isSpace())) {\n    ++length;\n  }\n  result << values;\n  return result;\n}\n\nbool AbstractParameter::matchType(const QString & type, const char * text) const\n{\n  return QString::fromUtf8(text).contains(QRegularExpression(QString(\"^[^=]*\\\\s*=\\\\s*_?%1\\\\s*.\").arg(type), QRegularExpression::CaseInsensitiveOption));\n}\n\nvoid AbstractParameter::notifyIfRelevant()\n{\n  if (_update) {\n    emit valueChanged();\n  }\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/AbstractParameter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file AbstractParameter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_ABSTRACTPARAMETER_H\n#define GMIC_QT_ABSTRACTPARAMETER_H\n\n#include <QObject>\n#include <QStringList>\nclass QGridLayout;\nclass QLabel;\n\nnamespace GmicQt\n{\nclass KeypointList;\n\nclass AbstractParameter : public QObject {\n  Q_OBJECT\n\npublic:\n  AbstractParameter(QObject * parent);\n  virtual ~AbstractParameter() override;\n  bool isActualParameter() const;\n  virtual int size() const = 0;\n  virtual bool addTo(QWidget *, int row) = 0;\n  virtual QString value() const = 0;\n  virtual QString defaultValue() const = 0;\n  virtual bool isQuoted() const;\n  virtual void setValue(const QString & value) = 0;\n  virtual void clear();\n  virtual void reset() = 0;\n  virtual void randomize();\n\n  virtual void addToKeypointList(KeypointList &) const;\n  virtual void extractPositionFromKeypointList(KeypointList &);\n\n  static AbstractParameter * createFromText(const QString & filterName, const char * text, int & length, QString & error, QObject * parent);\n  virtual bool initFromText(const QString & filterName, const char * text, int & textLength) = 0;\n\n  enum class VisibilityState\n  {\n    Unspecified = -1,\n    Hidden = 0,\n    Disabled = 1,\n    Visible = 2,\n  };\n  enum class VisibilityPropagation\n  {\n    NoPropagation = 0,\n    Up = 1,\n    Down = 2,\n    UpDown = 3\n  };\n\n  static const QStringList NoValueParameters;\n\n  void hideWidgets();\n  virtual VisibilityState defaultVisibilityState() const;\n  virtual void setVisibilityState(VisibilityState state);\n  VisibilityState visibilityState() const;\n  VisibilityPropagation visibilityPropagation() const;\n  bool acceptRandom() const;\n\nsignals:\n  void valueChanged();\n\nprotected:\n  static void setTextSelectable(QLabel * label);\n  QStringList parseText(const QString & type, const char * text, int & length);\n  bool matchType(const QString & type, const char * text) const;\n  void notifyIfRelevant();\n  VisibilityState _defaultVisibilityState;\n  QGridLayout * _grid;\n  int _row;\n#ifdef _GMIC_QT_DEBUG_\n  QString _debugName;\n#endif\n\nprivate:\n  bool _update;\n  bool _acceptRandom;\n  VisibilityState _visibilityState;\n  VisibilityPropagation _visibilityPropagation;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_ABSTRACTPARAMETER_H\n"
  },
  {
    "path": "src/FilterParameters/BoolParameter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file BoolParameter.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/BoolParameter.h\"\n#include <QCheckBox>\n#include <QDebug>\n#include <QGridLayout>\n#include <QLabel>\n#include <QPalette>\n#include <QRandomGenerator>\n#include <QWidget>\n#include \"Common.h\"\n#include \"FilterTextTranslator.h\"\n#include \"HtmlTranslator.h\"\n#include \"Settings.h\"\n\nnamespace GmicQt\n{\n\nBoolParameter::BoolParameter(QObject * parent) //\n    : AbstractParameter(parent), _default(false), _value(false), _checkBox(nullptr), _label(nullptr), _connected(false)\n{\n}\n\nBoolParameter::~BoolParameter()\n{\n  delete _checkBox;\n  delete _label;\n}\n\nint BoolParameter::size() const\n{\n  return 1;\n}\n\nbool BoolParameter::addTo(QWidget * widget, int row)\n{\n  _grid = dynamic_cast<QGridLayout *>(widget->layout());\n  Q_ASSERT_X(_grid, __PRETTY_FUNCTION__, \"No grid layout in widget\");\n  _row = row;\n  delete _checkBox;\n  delete _label;\n  _checkBox = new QCheckBox(widget);\n  _checkBox->setChecked(_value);\n  _label = new QLabel(_name, widget);\n  if (Settings::darkThemeEnabled()) {\n    QPalette p = _checkBox->palette();\n    p.setColor(QPalette::Text, Settings::CheckBoxTextColor);\n    p.setColor(QPalette::Base, Settings::CheckBoxBaseColor);\n    _checkBox->setPalette(p);\n  }\n  _grid->addWidget(_label, row, 0, 1, 1);\n  _grid->addWidget(_checkBox, row, 1, 1, 2);\n  connectCheckBox();\n  return true;\n}\n\nQString BoolParameter::value() const\n{\n  return _value ? QString(\"1\") : QString(\"0\");\n}\n\nQString BoolParameter::defaultValue() const\n{\n  return _default ? QString(\"1\") : QString(\"0\");\n}\n\nvoid BoolParameter::setValue(const QString & value)\n{\n  _value = (value == \"1\");\n  if (_checkBox) {\n    disconnectCheckBox();\n    _checkBox->setChecked(_value);\n    connectCheckBox();\n  }\n}\n\nvoid BoolParameter::reset()\n{\n  _checkBox->setChecked(_default);\n  _value = _default;\n}\n\nvoid BoolParameter::randomize()\n{\n  if (acceptRandom()) {\n    _value = QRandomGenerator::global()->bounded(0, 2);\n    disconnectCheckBox();\n    _checkBox->setChecked(_value);\n    connectCheckBox();\n  }\n}\n\nvoid BoolParameter::onCheckBoxChanged(bool on)\n{\n  _value = on;\n  notifyIfRelevant();\n}\n\nvoid BoolParameter::connectCheckBox()\n{\n  if (_connected) {\n    return;\n  }\n  connect(_checkBox, &QCheckBox::toggled, this, &BoolParameter::onCheckBoxChanged);\n  _connected = true;\n}\n\nvoid BoolParameter::disconnectCheckBox()\n{\n  if (!_connected) {\n    return;\n  }\n  _checkBox->disconnect(this);\n  _connected = false;\n}\n\nbool BoolParameter::initFromText(const QString & filterName, const char * text, int & textLength)\n{\n  QList<QString> list = parseText(\"bool\", text, textLength);\n  if (list.isEmpty()) {\n    return false;\n  }\n  _name = HtmlTranslator::html2txt(FilterTextTranslator::translate(list[0], filterName));\n  _value = _default = (list[1].startsWith(\"true\") || list[1].startsWith(\"1\"));\n  return true;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/BoolParameter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file BoolParameter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_BOOLPARAMETER_H\n#define GMIC_QT_BOOLPARAMETER_H\n\n#include <QString>\n#include \"AbstractParameter.h\"\nclass QCheckBox;\nclass QLabel;\n\nnamespace GmicQt\n{\n\nclass BoolParameter : public AbstractParameter {\n  Q_OBJECT\npublic:\n  BoolParameter(QObject * parent);\n  ~BoolParameter() override;\n  virtual int size() const override;\n  bool addTo(QWidget *, int row) override;\n  QString value() const override;\n  QString defaultValue() const override;\n  void setValue(const QString & value) override;\n  void reset() override;\n  void randomize() override;\n  bool initFromText(const QString & filterName, const char * text, int & textLength) override;\npublic slots:\n  void onCheckBoxChanged(bool);\n\nprivate:\n  void connectCheckBox();\n  void disconnectCheckBox();\n  QString _name;\n  bool _default;\n  bool _value;\n  QCheckBox * _checkBox;\n  QLabel * _label;\n  bool _connected;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_BOOLPARAMETER_H\n"
  },
  {
    "path": "src/FilterParameters/ButtonParameter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ButtonParameter.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/ButtonParameter.h\"\n#include <QDebug>\n#include <QGridLayout>\n#include <QLabel>\n#include <QPushButton>\n#include <QRandomGenerator>\n#include <QWidget>\n#include \"FilterTextTranslator.h\"\n#include \"HtmlTranslator.h\"\n\nnamespace GmicQt\n{\n\nButtonParameter::ButtonParameter(QObject * parent) : AbstractParameter(parent), _value(false), _pushButton(nullptr), _alignment(Qt::AlignHCenter) {}\n\nButtonParameter::~ButtonParameter()\n{\n  delete _pushButton;\n}\n\nint ButtonParameter::size() const\n{\n  return 1;\n}\n\nbool ButtonParameter::addTo(QWidget * widget, int row)\n{\n  _grid = dynamic_cast<QGridLayout *>(widget->layout());\n  Q_ASSERT_X(_grid, __PRETTY_FUNCTION__, \"No grid layout in widget\");\n  _row = row;\n  delete _pushButton;\n  _pushButton = new QPushButton(_text, widget);\n  _pushButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);\n  _grid->addWidget(_pushButton, row, 0, 1, 3, _alignment);\n  connectButton();\n  return true;\n}\n\nQString ButtonParameter::value() const\n{\n  return _value ? QString(\"1\") : QString(\"0\");\n}\n\nQString ButtonParameter::defaultValue() const\n{\n  return QString(\"0\");\n}\n\nvoid ButtonParameter::setValue(const QString & s)\n{\n  _value = (s == \"1\");\n}\n\nvoid ButtonParameter::clear()\n{\n  _value = false;\n}\n\nvoid ButtonParameter::reset() {}\n\nvoid ButtonParameter::randomize()\n{\n  if (acceptRandom()) {\n    _value = QRandomGenerator::global()->bounded(0, 2);\n  }\n}\n\nvoid ButtonParameter::onPushButtonClicked(bool /* checked */)\n{\n  _value = true;\n  notifyIfRelevant();\n}\n\nvoid ButtonParameter::connectButton()\n{\n  connect(_pushButton, &QPushButton::clicked, this, &ButtonParameter::onPushButtonClicked);\n}\n\nvoid ButtonParameter::disconnectButton()\n{\n  _pushButton->disconnect(this);\n}\n\nbool ButtonParameter::initFromText(const QString & filterName, const char * text, int & textLength)\n{\n  QList<QString> list = parseText(\"button\", text, textLength);\n  if (list.isEmpty()) {\n    return false;\n  }\n  _text = HtmlTranslator::html2txt(FilterTextTranslator::translate(list[0], filterName));\n  QString & alignment = list[1];\n  if (alignment.isEmpty()) {\n    return true;\n  }\n  float a = alignment.toFloat();\n  if (a == 0.0f) {\n    _alignment = Qt::AlignLeft;\n  } else if (a == 1.0f) {\n    _alignment = Qt::AlignRight;\n  } else {\n    _alignment = Qt::AlignCenter;\n  }\n  return true;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/ButtonParameter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ButtonParameter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_BUTTONPARAMETER_H\n#define GMIC_QT_BUTTONPARAMETER_H\n\n#include <QString>\n#include <Qt>\n#include \"AbstractParameter.h\"\nclass QWidget;\nclass QPushButton;\nclass QLabel;\n\nnamespace GmicQt\n{\n\nclass ButtonParameter : public AbstractParameter {\n  Q_OBJECT\npublic:\n  ButtonParameter(QObject * parent);\n  ~ButtonParameter() override;\n  virtual int size() const override;\n  bool addTo(QWidget *, int row) override;\n  QString value() const override;\n  QString defaultValue() const override;\n  void setValue(const QString &) override;\n  void clear() override;\n  void reset() override;\n  void randomize() override;\n  bool initFromText(const QString & filterName, const char * text, int & textLength) override;\npublic slots:\n  void onPushButtonClicked(bool);\n\nprivate:\n  void connectButton();\n  void disconnectButton();\n  bool _value;\n  QString _text;\n  QPushButton * _pushButton;\n  Qt::AlignmentFlag _alignment;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_BUTTONPARAMETER_H\n"
  },
  {
    "path": "src/FilterParameters/ChoiceParameter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ChoiceParameter.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/ChoiceParameter.h\"\n#include <QComboBox>\n#include <QGridLayout>\n#include <QLabel>\n#include <QRandomGenerator>\n#include <QRegularExpression>\n#include <QStringList>\n#include <QWidget>\n#include \"Common.h\"\n#include \"FilterTextTranslator.h\"\n#include \"HtmlTranslator.h\"\n#include \"Logger.h\"\n\nnamespace GmicQt\n{\nChoiceParameter::ChoiceParameter(QObject * parent) : AbstractParameter(parent), _default(0), _value(0), _label(nullptr), _comboBox(nullptr), _connected(false) {}\n\nChoiceParameter::~ChoiceParameter()\n{\n  delete _comboBox;\n  delete _label;\n}\n\nint ChoiceParameter::size() const\n{\n  return 1;\n}\n\nbool ChoiceParameter::addTo(QWidget * widget, int row)\n{\n  _grid = dynamic_cast<QGridLayout *>(widget->layout());\n  Q_ASSERT_X(_grid, __PRETTY_FUNCTION__, \"No grid layout in widget\");\n  _row = row;\n  delete _comboBox;\n  delete _label;\n\n  _comboBox = new QComboBox(widget);\n  _comboBox->addItems(_choices);\n  _comboBox->setCurrentIndex(_value);\n\n  _grid->addWidget(_label = new QLabel(_name, widget), row, 0, 1, 1);\n  setTextSelectable(_label);\n  _grid->addWidget(_comboBox, row, 1, 1, 2);\n  connectComboBox();\n  return true;\n}\n\nQString ChoiceParameter::value() const\n{\n  return QString(\"%1\").arg(_comboBox->currentIndex());\n}\n\nQString ChoiceParameter::defaultValue() const\n{\n  return QString(\"%1\").arg(_default);\n}\n\nvoid ChoiceParameter::setValue(const QString & value)\n{\n  bool ok = true;\n  const int k = value.toInt(&ok);\n  if (!ok || (k < 0)) {\n    return;\n  }\n  if (_comboBox && (k >= _comboBox->count())) {\n    return;\n  }\n  _value = k;\n  if (_comboBox) {\n    disconnectComboBox();\n    _comboBox->setCurrentIndex(_value);\n    connectComboBox();\n  }\n}\n\nvoid ChoiceParameter::reset()\n{\n  disconnectComboBox();\n  _comboBox->setCurrentIndex(_default);\n  _value = _default;\n  connectComboBox();\n}\n\nvoid ChoiceParameter::randomize()\n{\n  if (acceptRandom()) {\n    disconnectComboBox();\n    _value = QRandomGenerator::global()->bounded(0, _comboBox->count());\n    _comboBox->setCurrentIndex(_value);\n    connectComboBox();\n  }\n}\n\nbool ChoiceParameter::initFromText(const QString & filterName, const char * text, int & textLength)\n{\n  QStringList list = parseText(\"choice\", text, textLength);\n  if (list.isEmpty()) {\n    return false;\n  }\n  _name = HtmlTranslator::html2txt(FilterTextTranslator::translate(list[0], filterName));\n  _choices = list[1].split(QChar(','));\n  bool ok;\n  if (_choices.isEmpty()) {\n    return false;\n  }\n  _default = _choices[0].toInt(&ok);\n  if (!ok) {\n    _default = 0;\n  } else {\n    _choices.pop_front();\n  }\n  QList<QString>::iterator it = _choices.begin();\n  while (it != _choices.end()) {\n    *it = it->trimmed().remove(QRegularExpression(\"^\\\"\")).remove(QRegularExpression(\"\\\"$\"));\n    *it = HtmlTranslator::html2txt(FilterTextTranslator::translate(*it, filterName));\n    ++it;\n  }\n  _value = _default;\n  return true;\n}\n\nvoid ChoiceParameter::onComboBoxIndexChanged(int i)\n{\n  _value = i;\n  notifyIfRelevant();\n}\n\nvoid ChoiceParameter::connectComboBox()\n{\n  if (_connected) {\n    return;\n  }\n  connect(_comboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &ChoiceParameter::onComboBoxIndexChanged);\n  _connected = true;\n}\n\nvoid ChoiceParameter::disconnectComboBox()\n{\n  if (!_connected) {\n    return;\n  }\n  _comboBox->disconnect(this);\n  _connected = false;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/ChoiceParameter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ChoiceParameter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_CHOICEPARAMETER_H\n#define GMIC_QT_CHOICEPARAMETER_H\n\n#include <QList>\n#include <QString>\n#include \"AbstractParameter.h\"\nclass QComboBox;\nclass QLabel;\n\nnamespace GmicQt\n{\n\nclass ChoiceParameter : public AbstractParameter {\n  Q_OBJECT\npublic:\n  ChoiceParameter(QObject * parent);\n  ~ChoiceParameter() override;\n  virtual int size() const override;\n  bool addTo(QWidget *, int row) override;\n  QString value() const override;\n  QString defaultValue() const override;\n  void setValue(const QString &) override;\n  void reset() override;\n  void randomize() override;\n  bool initFromText(const QString & filterName, const char * text, int & textLength) override;\npublic slots:\n  void onComboBoxIndexChanged(int);\n\nprivate:\n  void connectComboBox();\n  void disconnectComboBox();\n  QString _name;\n  int _default;\n  int _value;\n  QLabel * _label;\n  QComboBox * _comboBox;\n  QList<QString> _choices;\n  bool _connected;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_CHOICEPARAMETER_H\n"
  },
  {
    "path": "src/FilterParameters/ColorParameter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ColorParameter.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/ColorParameter.h\"\n#include <QApplication>\n#include <QColorDialog>\n#include <QDebug>\n#include <QFont>\n#include <QFontMetrics>\n#include <QGridLayout>\n#include <QLabel>\n#include <QPainter>\n#include <QPushButton>\n#include <QRandomGenerator>\n#include <QRegularExpression>\n#include <QWidget>\n#include <cstdio>\n#include \"FilterTextTranslator.h\"\n#include \"HtmlTranslator.h\"\n#include \"Logger.h\"\n#include \"Settings.h\"\n\nnamespace GmicQt\n{\n\nColorParameter::ColorParameter(QObject * parent) //\n    : AbstractParameter(parent),                 //\n      _default(0, 0, 0, 0),                      //\n      _value(_default),                          //\n      _alphaChannel(false),                      //\n      _label(nullptr),                           //\n      _button(nullptr),                          //\n      _dialog(nullptr),                          //\n      _size(-1)\n{\n}\n\nColorParameter::~ColorParameter()\n{\n  delete _button;\n  delete _label;\n  delete _dialog;\n}\n\nint ColorParameter::size() const\n{\n  return _size;\n}\n\nbool ColorParameter::addTo(QWidget * widget, int row)\n{\n  _grid = dynamic_cast<QGridLayout *>(widget->layout());\n  Q_ASSERT_X(_grid, __PRETTY_FUNCTION__, \"No grid layout in widget\");\n  _row = row;\n  delete _button;\n  delete _label;\n\n  _button = new QPushButton(widget);\n  _button->setText(\"\");\n\n  QFontMetrics fm(widget->font());\n  QRect r = fm.boundingRect(\"CLR\");\n  _pixmap = QPixmap(r.width(), r.height());\n  _button->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);\n\n  _button->setIconSize(_pixmap.size());\n\n  updateButtonColor();\n\n  _grid->addWidget(_label = new QLabel(_name, widget), row, 0, 1, 1);\n  setTextSelectable(_label);\n  _grid->addWidget(_button, row, 1, 1, 1);\n  connect(_button, &QPushButton::clicked, this, &ColorParameter::onButtonPressed);\n  return true;\n}\n\nQString ColorParameter::value() const\n{\n  const QColor & c = _value;\n  if (_alphaChannel) {\n    return QString(\"%1,%2,%3,%4\").arg(c.red()).arg(c.green()).arg(c.blue()).arg(c.alpha());\n  }\n  return QString(\"%1,%2,%3\").arg(c.red()).arg(c.green()).arg(c.blue());\n}\n\nQString ColorParameter::defaultValue() const\n{\n  const QColor & c = _default;\n  if (_alphaChannel) {\n    return QString(\"%1,%2,%3,%4\").arg(c.red()).arg(c.green()).arg(c.blue()).arg(c.alpha());\n  }\n  return QString(\"%1,%2,%3\").arg(c.red()).arg(c.green()).arg(c.blue());\n}\n\nvoid ColorParameter::setValue(const QString & value)\n{\n  QStringList list = value.split(\",\");\n  if ((list.size() != 3) && (list.size() != 4)) {\n    return;\n  }\n  bool ok = false;\n  const int red = list[0].toInt(&ok);\n  if (!ok) {\n    Logger::warning(QString(\"ColorParameter::setValue(\\\"%1\\\"): bad red channel\").arg(value));\n  }\n  const int green = list[1].toInt(&ok);\n  if (!ok) {\n    Logger::warning(QString(\"ColorParameter::setValue(\\\"%1\\\"): bad green channel\").arg(value));\n  }\n  const int blue = list[2].toInt(&ok);\n  if (!ok) {\n    Logger::warning(QString(\"ColorParameter::setValue(\\\"%1\\\"): bad blue channel\").arg(value));\n  }\n  if ((list.size() == 4) && _alphaChannel) {\n    const int alpha = list[3].toInt(&ok);\n    if (!ok) {\n      Logger::warning(QString(\"ColorParameter::setValue(\\\"%1\\\"): bad alpha channel\").arg(value));\n    }\n    _value = QColor(red, green, blue, alpha);\n  } else {\n    _value = QColor(red, green, blue);\n  }\n  if (_button) {\n    updateButtonColor();\n  }\n}\n\nvoid ColorParameter::reset()\n{\n  _value = _default;\n  updateButtonColor();\n}\n\nvoid ColorParameter::randomize()\n{\n  if (acceptRandom()) {\n    auto generator = QRandomGenerator::global();\n    _value.setRgb(generator->bounded(0, 256), //\n                  generator->bounded(0, 256), //\n                  generator->bounded(0, 256), //\n                  _alphaChannel ? generator->bounded(164, 256) : 255);\n    updateButtonColor();\n  }\n}\n\nbool ColorParameter::initFromText(const QString & filterName, const char * text, int & textLength)\n{\n  QList<QString> list = parseText(\"color\", text, textLength);\n  if (list.isEmpty()) {\n    return false;\n  }\n  _name = HtmlTranslator::html2txt(FilterTextTranslator::translate(list[0], filterName));\n\n  // color(#e9cc00) and color(#e9cc00ff)\n  const QString trimmed = list[1].trimmed();\n  if (QRegularExpression(\"^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$\").match(trimmed).hasMatch()) {\n    _default = QColor(trimmed.left(7));\n    if (trimmed.length() == 9) {\n      _alphaChannel = true;\n      _default.setAlpha(trimmed.right(2).toInt(nullptr, 16));\n    } else {\n      _alphaChannel = false;\n    }\n    _size = 3 + _alphaChannel;\n    _value = _default;\n    return true;\n  }\n\n  // color(120,100,10) and color(120,100,10,128)\n  QList<QString> channels = list[1].split(\",\");\n  const int n = channels.size();\n  bool okR = true, okG = true, okB = true, okA = true;\n  int r = (n > 0) ? channels[0].toInt(&okR) : 0;\n  int g = (n >= 2) ? channels[1].toInt(&okG) : r;\n  int b = (n >= 3) ? channels[2].toInt(&okB) : (n == 1) ? r : 0;\n  if (channels.size() == 4) {\n    int a = channels[3].toInt(&okA);\n    _default = _value = QColor(r, g, b, a);\n    _alphaChannel = true;\n  } else {\n    _default = _value = QColor(r, g, b);\n  }\n  if (okR && okG && okB && okA) {\n    _size = channels.size();\n    return true;\n  }\n  return false;\n}\n\nvoid ColorParameter::onButtonPressed()\n{\n  QColor color = QColorDialog::getColor(_value, QApplication::activeWindow(), tr(\"Select color\"),\n                                        (Settings::nativeColorDialogs() ? QColorDialog::ColorDialogOptions() : QColorDialog::DontUseNativeDialog) |\n                                            (_alphaChannel ? QColorDialog::ShowAlphaChannel : QColorDialog::ColorDialogOptions()));\n  if (color.isValid()) {\n    _value = color;\n    updateButtonColor();\n    notifyIfRelevant();\n  }\n}\n\nvoid ColorParameter::updateButtonColor()\n{\n  QPainter painter(&_pixmap);\n  QColor color(_value);\n  if (_alphaChannel) {\n    painter.drawImage(0, 0, QImage(\":resources/transparency.png\"));\n  }\n  painter.setBrush(color);\n  painter.setPen(Qt::black);\n  painter.drawRect(0, 0, _pixmap.width() - 1, _pixmap.height() - 1);\n  _button->setIcon(_pixmap);\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/ColorParameter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ColorParameter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_COLORPARAMETER_H\n#define GMIC_QT_COLORPARAMETER_H\n\n#include <QColor>\n#include <QColorDialog>\n#include <QPixmap>\n#include <QString>\n#include \"AbstractParameter.h\"\nclass QSpinBox;\nclass QSlider;\nclass QLabel;\nclass QPushButton;\n\nnamespace GmicQt\n{\n\nclass ColorParameter : public AbstractParameter {\n  Q_OBJECT\npublic:\n  ColorParameter(QObject * parent);\n  ~ColorParameter() override;\n  int size() const override;\n  bool addTo(QWidget *, int row) override;\n  QString value() const override;\n  QString defaultValue() const override;\n  void setValue(const QString & value) override;\n  void reset() override;\n  void randomize() override;\n  bool initFromText(const QString & filterName, const char * text, int & textLength) override;\npublic slots:\n  void onButtonPressed();\n\nprivate:\n  void updateButtonColor();\n  QString _name;\n  QColor _default;\n  QColor _value;\n  bool _alphaChannel;\n  QLabel * _label;\n  QPushButton * _button;\n  QPixmap _pixmap;\n  QColorDialog * _dialog;\n  int _size;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_COLORPARAMETER_H\n"
  },
  {
    "path": "src/FilterParameters/ConstParameter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ConstParameter.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/ConstParameter.h\"\n#include <QString>\n#include <QStringList>\n#include \"Common.h\"\n#include \"FilterTextTranslator.h\"\n#include \"HtmlTranslator.h\"\n#include \"Misc.h\"\n\nnamespace GmicQt\n{\n\nConstParameter::ConstParameter(QObject * parent) : AbstractParameter(parent) {}\n\nint ConstParameter::size() const\n{\n  return 1;\n}\n\nConstParameter::~ConstParameter() = default;\n\nbool ConstParameter::addTo(QWidget *, int)\n{\n  return false;\n}\n\nbool ConstParameter::isQuoted() const\n{\n  return true;\n}\n\nQString ConstParameter::value() const\n{\n  return _value;\n}\n\nQString ConstParameter::defaultValue() const\n{\n  return _default;\n}\n\nvoid ConstParameter::setValue(const QString & value)\n{\n  _value = value;\n}\n\nvoid ConstParameter::reset()\n{\n  _value = _default;\n}\n\nbool ConstParameter::initFromText(const QString & filterName, const char * text, int & textLength)\n{\n  QStringList list = parseText(\"value\", text, textLength);\n  if (list.isEmpty()) {\n    return false;\n  }\n  _name = HtmlTranslator::html2txt(FilterTextTranslator::translate(list[0], filterName));\n  _value = _default = unescaped(unquoted(list[1]));\n  return true;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/ConstParameter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ConstParameter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_CONSTPARAMETER_H\n#define GMIC_QT_CONSTPARAMETER_H\n\n#include \"AbstractParameter.h\"\nclass QLabel;\n\nnamespace GmicQt\n{\n\nclass ConstParameter : public AbstractParameter {\n  Q_OBJECT\npublic:\n  ConstParameter(QObject * parent);\n  ~ConstParameter() override;\n  virtual int size() const override;\n  bool addTo(QWidget *, int row) override;\n  bool isQuoted() const override;\n  QString value() const override;\n  QString defaultValue() const override;\n  void setValue(const QString & value) override;\n  void reset() override;\n  bool initFromText(const QString & filterName, const char * text, int & textLength) override;\n\nprivate:\n  QString _name;\n  QString _default;\n  QString _value;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_CONSTPARAMETER_H\n"
  },
  {
    "path": "src/FilterParameters/CustomDoubleSpinBox.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file CustomDoubleSpinBox.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/CustomDoubleSpinBox.h\"\n#include <QFontMetrics>\n#include <QKeyEvent>\n#include <QLineEdit>\n#include <QShowEvent>\n#include <QSizePolicy>\n#include <QString>\n#include <QTimer>\n#include <algorithm>\n#include <cmath>\n#include \"Common.h\"\n#include \"Settings.h\"\n\nnamespace GmicQt\n{\n\nCustomDoubleSpinBox::CustomDoubleSpinBox(QWidget * parent, float min, float max) : QDoubleSpinBox(parent)\n{\n  setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);\n  const int decimals = std::max(2, MAX_DIGITS - std::max(integerPartDigitCount(min), integerPartDigitCount(max)));\n  setDecimals(decimals);\n  setRange(min, max);\n\n  QDoubleSpinBox * dummy = new QDoubleSpinBox(this);\n  dummy->hide();\n  dummy->setRange(min, max);\n  dummy->setDecimals(decimals);\n  _sizeHint = dummy->sizeHint();\n  _minimumSizeHint = dummy->minimumSizeHint();\n  delete dummy;\n  connect(this, &QDoubleSpinBox::editingFinished, [this]() { _unfinishedKeyboardEditing = false; });\n}\n\nCustomDoubleSpinBox::~CustomDoubleSpinBox() {}\n\nQString CustomDoubleSpinBox::textFromValue(double value) const\n{\n  QString text = QString::number(value, 'g', MAX_DIGITS);\n  if (text.contains('e') || text.contains('E')) {\n    text = QString::number(value, 'f', decimals());\n    if (text.contains(Settings::DecimalPoint)) {\n      while (text.endsWith(QChar('0'))) {\n        text.chop(1);\n      }\n      if (text.endsWith(Settings::DecimalPoint)) {\n        text.chop(Settings::DecimalPoint.length());\n      }\n    }\n  }\n  return text;\n}\n\nQSize CustomDoubleSpinBox::sizeHint() const\n{\n  return _sizeHint;\n}\n\nQSize CustomDoubleSpinBox::minimumSizeHint() const\n{\n  return _minimumSizeHint;\n}\n\nvoid CustomDoubleSpinBox::keyPressEvent(QKeyEvent * event)\n{\n  QString text = event->text();\n  if ((text.length() == 1 && text[0].isDigit()) || //\n      (text == Settings::DecimalPoint) ||          //\n      (text == Settings::NegativeSign) ||          //\n      (text == Settings::GroupSeparator) ||        //\n      (event->key() == Qt::Key_Backspace) ||       //\n      (event->key() == Qt::Key_Delete)) {\n    _unfinishedKeyboardEditing = true;\n  }\n  QDoubleSpinBox::keyPressEvent(event);\n}\n\nint CustomDoubleSpinBox::integerPartDigitCount(float value)\n{\n  QString text = QString::number(static_cast<double>(value), 'f', 0);\n  if (text[0] == QChar('-')) {\n    text.remove(0, 1);\n  }\n  return text.length();\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/CustomDoubleSpinBox.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file CustomDoubleSpinBox.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_CUSTOMDOUBLESPINBOX_H\n#define GMIC_QT_CUSTOMDOUBLESPINBOX_H\n\n#include <QDoubleSpinBox>\n#include <QSize>\nclass QShowEvent;\nclass QResizeEvent;\n\nnamespace GmicQt\n{\n\nclass CustomDoubleSpinBox : public QDoubleSpinBox {\n  Q_OBJECT\npublic:\n  CustomDoubleSpinBox(QWidget * parent, float min, float max);\n  ~CustomDoubleSpinBox() override;\n  QString textFromValue(double value) const override;\n  inline bool unfinishedKeyboardEditing() const;\n\nprotected:\n  QSize sizeHint() const override;\n  QSize minimumSizeHint() const override;\n  void keyPressEvent(QKeyEvent *) override;\nsignals:\n  void keyboardNumericalInputOngoing();\n\nprivate:\n  QSize _sizeHint;\n  QSize _minimumSizeHint;\n  bool _unfinishedKeyboardEditing = false;\n  static const int MAX_DIGITS = 5;\n  static int integerPartDigitCount(float value);\n};\n\nbool CustomDoubleSpinBox::unfinishedKeyboardEditing() const\n{\n  return _unfinishedKeyboardEditing;\n}\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_CUSTOMDOUBLESPINBOX_H\n"
  },
  {
    "path": "src/FilterParameters/CustomSpinBox.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file CustomSpinBox.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/CustomSpinBox.h\"\n#include <QFontMetrics>\n#include <QKeyEvent>\n#include <QLineEdit>\n#include <QShowEvent>\n#include <QSizePolicy>\n#include <QString>\n#include <QTimer>\n#include <algorithm>\n#include <cmath>\n#include \"Common.h\"\n#include \"Settings.h\"\n\nnamespace GmicQt\n{\n\nCustomSpinBox::CustomSpinBox(QWidget * parent, int min, int max) : QSpinBox(parent)\n{\n  setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);\n  setRange(min, max);\n\n  QSpinBox * dummy = new QSpinBox(this);\n  dummy->hide();\n  dummy->setRange(min, max);\n  _sizeHint = dummy->sizeHint();\n  _minimumSizeHint = dummy->minimumSizeHint();\n  delete dummy;\n  connect(this, &QSpinBox::editingFinished, [this]() { _unfinishedKeyboardEditing = false; });\n}\n\nCustomSpinBox::~CustomSpinBox() {}\n\nQString CustomSpinBox::textFromValue(int value) const\n{\n  return QString::number(value);\n}\n\nQSize CustomSpinBox::sizeHint() const\n{\n  return _sizeHint;\n}\n\nQSize CustomSpinBox::minimumSizeHint() const\n{\n  return _minimumSizeHint;\n}\n\nvoid CustomSpinBox::keyPressEvent(QKeyEvent * event)\n{\n  QString text = event->text();\n  if ((text.length() == 1 && text[0].isDigit()) || //\n      (text == Settings::NegativeSign) ||          //\n      (text == Settings::GroupSeparator) ||        //\n      (event->key() == Qt::Key_Backspace) ||       //\n      (event->key() == Qt::Key_Delete)) {\n    _unfinishedKeyboardEditing = true;\n  }\n  QSpinBox::keyPressEvent(event);\n}\n\nint CustomSpinBox::integerPartDigitCount(float value)\n{\n  QString text = QString::number(static_cast<double>(value), 'f', 0);\n  if (text[0] == QChar('-')) {\n    text.remove(0, 1);\n  }\n  return text.length();\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/CustomSpinBox.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file CustomSpinBox.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_CUSTOMSPINBOX_H\n#define GMIC_QT_CUSTOMSPINBOX_H\n\n#include <QSize>\n#include <QSpinBox>\nclass QShowEvent;\nclass QResizeEvent;\n\nnamespace GmicQt\n{\n\nclass CustomSpinBox : public QSpinBox {\n  Q_OBJECT\npublic:\n  CustomSpinBox(QWidget * parent, int min, int max);\n  ~CustomSpinBox() override;\n  QString textFromValue(int value) const override;\n  inline bool unfinishedKeyboardEditing() const;\n\nprotected:\n  QSize sizeHint() const override;\n  QSize minimumSizeHint() const override;\n  void keyPressEvent(QKeyEvent *) override;\nsignals:\n  void keyboardNumericalInputOngoing();\n\nprivate:\n  QSize _sizeHint;\n  QSize _minimumSizeHint;\n  bool _unfinishedKeyboardEditing = false;\n  static const int MAX_DIGITS = 5;\n  static int integerPartDigitCount(float value);\n};\n\nbool CustomSpinBox::unfinishedKeyboardEditing() const\n{\n  return _unfinishedKeyboardEditing;\n}\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_CUSTOMSPINBOX_H\n"
  },
  {
    "path": "src/FilterParameters/FileParameter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FileParameter.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/FileParameter.h\"\n#include <QApplication>\n#include <QDebug>\n#include <QFileDialog>\n#include <QFileInfo>\n#include <QFontMetrics>\n#include <QGridLayout>\n#include <QLabel>\n#include <QPushButton>\n#include <QRegularExpression>\n#include <QWidget>\n#include \"FilterTextTranslator.h\"\n#include \"HtmlTranslator.h\"\n#include \"IconLoader.h\"\n#include \"Settings.h\"\n\nnamespace GmicQt\n{\n\nFileParameter::FileParameter(QObject * parent) : AbstractParameter(parent), _label(nullptr), _button(nullptr), _dialogMode(DialogMode::InputOutput) {}\n\nFileParameter::~FileParameter()\n{\n  delete _label;\n  delete _button;\n}\n\nint FileParameter::size() const\n{\n  return 1;\n}\n\nbool FileParameter::addTo(QWidget * widget, int row)\n{\n  _grid = dynamic_cast<QGridLayout *>(widget->layout());\n  Q_ASSERT_X(_grid, __PRETTY_FUNCTION__, \"No grid layout in widget\");\n  _row = row;\n  delete _label;\n  delete _button;\n\n  QString buttonText;\n  if (_value.isEmpty()) {\n    buttonText = \"...\";\n  } else {\n    int w = widget->contentsRect().width() / 3;\n    QFontMetrics fm(widget->font());\n    buttonText = fm.elidedText(QFileInfo(_value).fileName(), Qt::ElideRight, w);\n  }\n  _button = new QPushButton(buttonText, widget);\n  _button->setIcon(IconLoader::load(\"document-open\"));\n  _grid->addWidget(_label = new QLabel(_name, widget), row, 0, 1, 1);\n  setTextSelectable(_label);\n  _grid->addWidget(_button, row, 1, 1, 2);\n  connect(_button, &QPushButton::clicked, this, &FileParameter::onButtonPressed);\n  return true;\n}\n\nQString FileParameter::value() const\n{\n  return _value;\n}\n\nQString FileParameter::defaultValue() const\n{\n  return _default;\n}\n\nvoid FileParameter::setValue(const QString & value)\n{\n  _value = value;\n  if (_button) {\n    if (_value.isEmpty()) {\n      _button->setText(\"...\");\n    } else {\n      int width = _button->contentsRect().width() - 10;\n      QFontMetrics fm(_button->font());\n      _button->setText(fm.elidedText(QFileInfo(_value).fileName(), Qt::ElideRight, width));\n    }\n  }\n}\n\nvoid FileParameter::reset()\n{\n  setValue(_default);\n}\n\nbool FileParameter::initFromText(const QString & filterName, const char * text, int & textLength)\n{\n  QList<QString> list;\n  if (matchType(\"filein\", text)) {\n    list = parseText(\"filein\", text, textLength);\n    _dialogMode = DialogMode::Input;\n  } else if (matchType(\"fileout\", text)) {\n    list = parseText(\"fileout\", text, textLength);\n    _dialogMode = DialogMode::Output;\n  } else {\n    list = parseText(\"file\", text, textLength);\n    _dialogMode = DialogMode::InputOutput;\n  }\n  if (list.isEmpty()) {\n    return false;\n  }\n  _name = HtmlTranslator::html2txt(FilterTextTranslator::translate(list[0], filterName));\n  QRegularExpression re(\"^\\\"(.*)\\\"$\");\n  QRegularExpressionMatch match = re.match(list[1]);\n  if (match.hasMatch()) {\n    list[1] = match.captured(1);\n  }\n  _default = _value = list[1];\n  return true;\n}\n\nbool FileParameter::isQuoted() const\n{\n  return true;\n}\n\nvoid FileParameter::onButtonPressed()\n{\n  QString folder;\n  if (_value.isEmpty()) {\n    folder = Settings::FileParameterDefaultPath;\n  } else {\n    folder = QFileInfo(_value).path();\n  }\n  if (!QFileInfo(folder).isDir()) {\n    folder = QDir::homePath();\n  }\n\n  QString filename;\n  const QFileDialog::Options options = Settings::nativeFileDialogs() ? QFileDialog::Options() : QFileDialog::DontUseNativeDialog;\n\n  switch (_dialogMode) {\n  case DialogMode::Input:\n    filename = QFileDialog::getOpenFileName(QApplication::topLevelWidgets().at(0), tr(\"Select a file\"), folder, QString(), nullptr, options);\n    break;\n  case DialogMode::Output:\n    filename = QFileDialog::getSaveFileName(QApplication::topLevelWidgets().at(0), tr(\"Select a file\"), folder, QString(), nullptr, options);\n    break;\n  case DialogMode::InputOutput: {\n    QFileDialog dialog(dynamic_cast<QWidget *>(parent()), tr(\"Select a file\"), folder, QString());\n    dialog.setOptions(QFileDialog::DontConfirmOverwrite | options);\n    dialog.setFileMode(QFileDialog::AnyFile);\n    if (!_value.isEmpty()) {\n      dialog.selectFile(_value);\n    }\n    dialog.exec();\n    QStringList filenames = dialog.selectedFiles();\n    if (!filenames.isEmpty() && !QFileInfo(filenames.front()).isDir()) {\n      filename = filenames.front();\n    }\n  } break;\n  }\n\n  if (filename.isEmpty()) {\n    _value.clear();\n    _button->setText(\"...\");\n  } else {\n    _value = filename;\n    QFileInfo info(filename);\n    Settings::FileParameterDefaultPath = info.path();\n    int w = _button->contentsRect().width() - 10;\n    QFontMetrics fm(_button->font());\n    _button->setText(fm.elidedText(QFileInfo(_value).fileName(), Qt::ElideRight, w));\n  }\n  notifyIfRelevant();\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/FileParameter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FileParameter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FILEPARAMETER_H\n#define GMIC_QT_FILEPARAMETER_H\n\n#include <QString>\n#include \"AbstractParameter.h\"\nclass QLabel;\nclass QPushButton;\n\nnamespace GmicQt\n{\n\nclass FileParameter : public AbstractParameter {\n  Q_OBJECT\npublic:\n  FileParameter(QObject * parent);\n  ~FileParameter() override;\n  virtual int size() const override;\n  bool addTo(QWidget *, int row) override;\n  QString value() const override;\n  QString defaultValue() const override;\n  void setValue(const QString & value) override;\n  void reset() override;\n  bool initFromText(const QString & filterName, const char * text, int & textLength) override;\n  bool isQuoted() const override;\npublic slots:\n  void onButtonPressed();\n\nprivate:\n  enum class DialogMode\n  {\n    Input,\n    Output,\n    InputOutput\n  };\n  QString _name;\n  QString _default;\n  QString _value;\n  QLabel * _label;\n  QPushButton * _button;\n  DialogMode _dialogMode;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FILEPARAMETER_H\n"
  },
  {
    "path": "src/FilterParameters/FilterParametersWidget.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterParametersWidget.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/FilterParametersWidget.h\"\n#include <QDebug>\n#include <QGridLayout>\n#include <QLabel>\n#include <QVBoxLayout>\n#include \"Common.h\"\n#include \"FilterParameters/AbstractParameter.h\"\n#include \"FilterParameters/PointParameter.h\"\n#include \"Logger.h\"\n#include \"Misc.h\"\n\nnamespace GmicQt\n{\n\nFilterParametersWidget::FilterParametersWidget(QWidget * parent) : QWidget(parent), _valueString(\"\"), _labelNoParams(nullptr), _paddingWidget(nullptr)\n{\n  delete layout();\n  auto grid = new QGridLayout(this);\n  grid->setRowStretch(1, 2);\n  _labelNoParams = new QLabel(tr(\"<i>Select a filter</i>\"), this);\n  _labelNoParams->setAlignment(Qt::AlignHCenter | Qt::AlignCenter);\n  grid->addWidget(_labelNoParams, 0, 0, 4, 3);\n  _actualParametersCount = 0;\n  _acceptRandom = false;\n  _filterHash.clear();\n  _hasKeypoints = false;\n}\n\nQVector<AbstractParameter *> FilterParametersWidget::buildParameters(const QString & filterName, //\n                                                                     const QString & parameters, //\n                                                                     QObject * parent,           //\n                                                                     int * actualParameterCount, //\n                                                                     bool * acceptRandom,        //\n                                                                     QString * error)\n{\n  QVector<AbstractParameter *> result;\n  QByteArray rawText = parameters.toUtf8();\n  const char * cstr = rawText.constData();\n  int length = 0;\n  int localActualParameterCount = 0;\n  bool localAcceptRandom = false;\n  QString localError;\n  if (acceptRandom) {\n    *acceptRandom = false;\n  }\n\n  AbstractParameter * parameter;\n  do {\n    parameter = AbstractParameter::createFromText(filterName, cstr, length, localError, parent);\n    if (parameter) {\n      result.push_back(parameter);\n      if (parameter->isActualParameter()) {\n        localActualParameterCount += 1;\n      }\n      if (parameter->acceptRandom()) {\n        localAcceptRandom = true;\n      }\n    }\n    cstr += length;\n  } while (parameter && localError.isEmpty());\n\n  if (!localError.isEmpty()) {\n    for (AbstractParameter * p : result) {\n      delete p;\n    }\n    result.clear();\n    localError = QString(\"Parameter #%1\\n%2\").arg(localActualParameterCount + 1).arg(localError);\n    localActualParameterCount = 0;\n  }\n  if (actualParameterCount) {\n    *actualParameterCount = localActualParameterCount;\n  }\n  if (acceptRandom) {\n    *acceptRandom = localAcceptRandom;\n  }\n  if (error) {\n    *error = localError;\n  }\n  return result;\n}\n\nQStringList FilterParametersWidget::defaultParameterList(const QVector<AbstractParameter *> & parameters, //\n                                                         QVector<bool> * quoted)\n{\n  if (quoted) {\n    quoted->clear();\n  }\n  QStringList result;\n  for (AbstractParameter * parameter : parameters) {\n    if (parameter->isActualParameter()) {\n      result.push_back(parameter->defaultValue());\n      if (quoted) {\n        quoted->push_back(parameter->isQuoted());\n      }\n    }\n  }\n  return result;\n}\n\nQStringList FilterParametersWidget::defaultParameterList(const QString & parametersDefinition, //\n                                                         QString * error,                      //\n                                                         QVector<bool> * quoted,               //\n                                                         QVector<int> * size)\n{\n  if (error) {\n    error->clear();\n  }\n  QObject parent;\n  QString localError;\n  QVector<AbstractParameter *> v = FilterParametersWidget::buildParameters(\"Dummy filter\", parametersDefinition, &parent, nullptr, nullptr, &localError);\n  if (!localError.isEmpty()) {\n    if (error) {\n      *error = localError;\n    }\n    return QStringList();\n  }\n  QStringList result = defaultParameterList(v, quoted);\n  if (size) {\n    *size = parameterSizes(v);\n  }\n  return result;\n}\n\nQVector<bool> FilterParametersWidget::quotedParameters(const QVector<AbstractParameter *> & parameters)\n{\n  QVector<bool> result;\n  for (AbstractParameter * p : parameters) {\n    result.push_back(p->isQuoted());\n  }\n  return result;\n}\n\nQVector<int> FilterParametersWidget::parameterSizes(const QVector<AbstractParameter *> & parameters)\n{\n  QVector<int> result;\n  for (AbstractParameter * p : parameters) {\n    if (p->isActualParameter()) {\n      result.push_back(p->size());\n    }\n  }\n  return result;\n}\n\nbool FilterParametersWidget::build(const QString & name, const QString & hash, const QString & parameters, const QList<QString> & values, const QList<int> & visibilityStates)\n{\n  _filterName = name;\n  _filterHash = hash;\n  hide();\n  clear();\n  delete layout();\n  auto grid = new QGridLayout(this);\n  grid->setRowStretch(1, 2);\n\n  PointParameter::resetDefaultColorIndex();\n\n  // Build parameters and count actual ones\n  QString error;\n  _parameters = buildParameters(_filterName, parameters, this, &_actualParametersCount, &_acceptRandom, &error);\n  _quotedParameters = quotedParameters(_parameters);\n\n  // Restore saved values\n  if ((!values.isEmpty()) && (_actualParametersCount == values.size())) {\n    QVector<AbstractParameter *>::iterator it = _parameters.begin();\n    QList<QString>::const_iterator itValue = values.cbegin();\n    while (it != _parameters.end()) {\n      if ((*it)->isActualParameter()) {\n        (*it)->setValue(*itValue);\n        ++itValue;\n      }\n      ++it;\n    }\n  }\n\n  // Add to widget and connect\n  int row = 0;\n  QVector<AbstractParameter *>::iterator it = _parameters.begin();\n  while (it != _parameters.end()) {\n    AbstractParameter * parameter = *it;\n    if (parameter->addTo(this, row)) {\n      parameter->hideWidgets();\n      grid->setRowStretch(row, 0);\n      ++row;\n    }\n    connect(parameter, &AbstractParameter::valueChanged, this, &FilterParametersWidget::updateValueStringAndNotify);\n    ++it;\n  }\n\n  if (_actualParametersCount != visibilityStates.size()) {\n    Logger::warning(QString(\"Parameters/SetVisibilities: Wrong number of values %1 (expecting %2)\").arg(visibilityStates.size()).arg(_actualParametersCount));\n  }\n\n  if (_actualParametersCount != visibilityStates.size()) {\n    applyDefaultVisibilityStates();\n  } else {\n    setVisibilityStates(visibilityStates);\n  }\n\n  // Retrieve a dummy keypoint list\n  KeypointList keypoints;\n  it = _parameters.begin();\n  while (it != _parameters.end()) {\n    (*it)->addToKeypointList(keypoints);\n    ++it;\n  }\n  _hasKeypoints = !keypoints.isEmpty();\n\n  if (row > 0) {\n    delete _labelNoParams;\n    _labelNoParams = nullptr;\n    _paddingWidget = new QWidget(this);\n    _paddingWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);\n    grid->addWidget(_paddingWidget, row++, 0, 1, 3);\n    grid->setRowStretch(row - 1, 1);\n  } else {\n    if (error.isEmpty()) {\n      _labelNoParams = new QLabel(tr(\"<i>No parameters</i>\"), this);\n      _labelNoParams->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);\n      _labelNoParams->setTextFormat(Qt::RichText);\n    } else {\n      QString errorMessage;\n      errorMessage += tr(\"Error parsing filter parameters\\n\\n\");\n      QString text = error;\n      if (text.size() > 250) {\n        text.truncate(250);\n        text += \"...\";\n      }\n      errorMessage += text;\n      _labelNoParams = new QLabel(errorMessage, this);\n      _labelNoParams->setToolTip(text);\n      _labelNoParams->setWordWrap(true);\n      _labelNoParams->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);\n      _labelNoParams->setTextFormat(Qt::PlainText);\n    }\n    grid->addWidget(_labelNoParams, 0, 0, 4, 3);\n  }\n  updateValueString(false);\n  show();\n  return error.isEmpty();\n}\n\nvoid FilterParametersWidget::setNoFilter(const QString & message)\n{\n  clear();\n  delete layout();\n  auto grid = new QGridLayout(this);\n  grid->setRowStretch(1, 2);\n\n  if (message.isEmpty()) {\n    _labelNoParams = new QLabel(tr(\"<i>Select a filter</i>\"), this);\n  } else {\n    _labelNoParams = new QLabel(QString(\"<i>%1</i>\").arg(message), this);\n  }\n  _labelNoParams->setAlignment(Qt::AlignHCenter | Qt::AlignCenter);\n  grid->addWidget(_labelNoParams, 0, 0, 4, 3);\n\n  _valueString.clear();\n  _filterHash.clear();\n}\n\nFilterParametersWidget::~FilterParametersWidget()\n{\n  clear();\n}\n\nconst QString & FilterParametersWidget::valueString() const\n{\n  return _valueString;\n}\n\nQStringList FilterParametersWidget::valueStringList() const\n{\n  QStringList list;\n  for (AbstractParameter * param : _parameters) {\n    if (param->isActualParameter()) {\n      list.append(param->value());\n    }\n  }\n  return list;\n}\n\nvoid FilterParametersWidget::setValues(const QStringList & list, bool notify)\n{\n  if (list.isEmpty()) {\n    return;\n  }\n  if (_actualParametersCount != list.size()) {\n    Logger::warning(QString(\"Parameters/SetValues: Wrong number of values %1 (expecting %2)\").arg(list.size()).arg(_actualParametersCount));\n    return;\n  }\n  auto itValue = list.begin();\n  for (AbstractParameter * param : _parameters) {\n    if (param->isActualParameter()) {\n      param->setValue(*itValue++);\n    }\n  }\n  updateValueString(notify);\n}\n\nvoid FilterParametersWidget::setVisibilityStates(QList<int> states)\n{\n  if (states.isEmpty()) {\n    states = defaultVisibilityStates();\n  }\n\n  if (_actualParametersCount != states.size()) {\n    Logger::warning(QString(\"Parameters/SetVisibilities: Wrong number of values %1 (expecting %2)\").arg(states.size()).arg(_actualParametersCount));\n    return;\n  }\n\n  // Fill a table of new states for all parameters, including no-value ones\n  QVector<AbstractParameter::VisibilityState> newVisibilityStates(_parameters.size(), AbstractParameter::VisibilityState::Unspecified);\n  {\n    auto itState = states.begin();\n    for (int n = 0; n < _parameters.size(); ++n) {\n      AbstractParameter * parameter = _parameters[n];\n      if (parameter->isActualParameter()) {\n        newVisibilityStates[n] = static_cast<AbstractParameter::VisibilityState>(*itState);\n        ++itState;\n      }\n    }\n  }\n  // Propagate if necessary\n  for (int n = 0; n < _parameters.size(); ++n) {\n    AbstractParameter * parameter = _parameters[n];\n    if (parameter->isActualParameter()) {\n      AbstractParameter::VisibilityState state = newVisibilityStates[n];\n      if (state == AbstractParameter::VisibilityState::Unspecified) {\n        state = parameter->defaultVisibilityState();\n      }\n      if ((parameter->visibilityPropagation() == AbstractParameter::VisibilityPropagation::Up) || //\n          (parameter->visibilityPropagation() == AbstractParameter::VisibilityPropagation::UpDown)) {\n        int i = n - 1;\n        while ((i >= 0) && !_parameters[i]->isActualParameter()) {\n          newVisibilityStates[i--] = state;\n        }\n      }\n      if ((parameter->visibilityPropagation() == AbstractParameter::VisibilityPropagation::Down) || //\n          (parameter->visibilityPropagation() == AbstractParameter::VisibilityPropagation::UpDown)) {\n        int i = n + 1;\n        while ((i < _parameters.size()) && !_parameters[i]->isActualParameter()) {\n          newVisibilityStates[i++] = state;\n        }\n      }\n    }\n  }\n\n  for (int n = 0; n < _parameters.size(); ++n) {\n    AbstractParameter * const parameter = _parameters[n];\n    parameter->setVisibilityState(newVisibilityStates[n]);\n  }\n}\n\nQList<int> FilterParametersWidget::visibilityStates()\n{\n  QList<int> states;\n  for (const AbstractParameter * const param : _parameters) {\n    if (param->isActualParameter()) {\n      states.push_back((int)param->visibilityState());\n    }\n  }\n  return states;\n}\n\nQList<int> FilterParametersWidget::defaultVisibilityStates()\n{\n  QList<int> states;\n  for (AbstractParameter * param : _parameters) {\n    if (param->isActualParameter()) {\n      states.push_back((int)param->defaultVisibilityState());\n    }\n  }\n  return states;\n}\n\nvoid FilterParametersWidget::reset(bool notify)\n{\n  for (AbstractParameter * param : _parameters) {\n    if (param->isActualParameter()) {\n      param->reset();\n    }\n  }\n  applyDefaultVisibilityStates();\n  updateValueString(notify);\n}\n\nvoid FilterParametersWidget::randomize()\n{\n  for (AbstractParameter * param : _parameters) {\n    if (param->isActualParameter()) {\n      param->randomize();\n    }\n  }\n  updateValueString(false);\n}\n\nQString FilterParametersWidget::filterName() const\n{\n  return _filterName;\n}\n\nint FilterParametersWidget::actualParametersCount() const\n{\n  return _actualParametersCount;\n}\n\nint FilterParametersWidget::acceptRandom() const\n{\n  return _acceptRandom;\n}\n\nQString FilterParametersWidget::filterHash() const\n{\n  return _filterHash;\n}\n\nQString FilterParametersWidget::valueString(const QVector<AbstractParameter *> & parameters)\n{\n  QString result;\n  bool firstParameter = true;\n  for (AbstractParameter * parameter : parameters) {\n    if (parameter->isActualParameter()) {\n      QString str = parameter->isQuoted() ? quotedString(parameter->value()) : parameter->value();\n      if (!str.isNull()) {\n        if (!firstParameter) {\n          result += \",\";\n        }\n        result += str;\n        firstParameter = false;\n      }\n    }\n  }\n  return result;\n}\n\nQString FilterParametersWidget::defaultValueString(const QVector<AbstractParameter *> & parameters)\n{\n  QString result;\n  bool firstParameter = true;\n  for (AbstractParameter * parameter : parameters) {\n    if (parameter->isActualParameter()) {\n      QString str = parameter->isQuoted() ? quotedString(parameter->defaultValue()) : parameter->defaultValue();\n      if (!str.isNull()) {\n        if (!firstParameter) {\n          result += \",\";\n        }\n        result += str;\n        firstParameter = false;\n      }\n    }\n  }\n  return result;\n}\n\nvoid FilterParametersWidget::updateValueString(bool notify)\n{\n  _valueString = valueString(_parameters);\n  if (notify) {\n    emit valueChanged();\n  }\n}\n\nvoid FilterParametersWidget::updateValueStringAndNotify()\n{\n  updateValueString(true);\n}\n\nvoid FilterParametersWidget::clear()\n{\n  QVector<AbstractParameter *>::iterator it = _parameters.begin();\n  while (it != _parameters.end()) {\n    delete *it;\n    ++it;\n  }\n  _parameters.clear();\n  _actualParametersCount = 0;\n\n  delete _labelNoParams;\n  _labelNoParams = nullptr;\n\n  delete _paddingWidget;\n  _paddingWidget = nullptr;\n}\n\nvoid FilterParametersWidget::applyDefaultVisibilityStates()\n{\n  setVisibilityStates(defaultVisibilityStates()); // Will propagate\n}\n\nvoid FilterParametersWidget::clearButtonParameters()\n{\n  for (AbstractParameter * param : _parameters) {\n    if (param->isActualParameter()) {\n      param->clear();\n    }\n  }\n  updateValueString(false);\n}\n\nKeypointList FilterParametersWidget::keypoints() const\n{\n  KeypointList list;\n  if (!_hasKeypoints) {\n    return list;\n  }\n  QVector<AbstractParameter *>::const_iterator it = _parameters.begin();\n  while (it != _parameters.end()) {\n    (*it)->addToKeypointList(list);\n    ++it;\n  }\n  return list;\n}\n\nvoid FilterParametersWidget::setKeypoints(KeypointList list, bool notify)\n{\n  Q_ASSERT_X((list.isEmpty() || _hasKeypoints), __PRETTY_FUNCTION__, \"Keypoint list mismatch\");\n  if (!_hasKeypoints) {\n    return;\n  }\n  QVector<AbstractParameter *>::const_iterator it = _parameters.begin();\n  while (it != _parameters.end()) {\n    (*it)->extractPositionFromKeypointList(list);\n    ++it;\n  }\n  updateValueString(notify);\n}\n\nbool FilterParametersWidget::hasKeypoints() const\n{\n  return _hasKeypoints;\n}\n\nconst QVector<bool> & FilterParametersWidget::quotedParameters() const\n{\n  return _quotedParameters;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/FilterParametersWidget.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterParametersWidget.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FILTERPARAMSWIDGET_H\n#define GMIC_QT_FILTERPARAMSWIDGET_H\n\n#include <QGroupBox>\n#include <QList>\n#include <QModelIndex>\n#include <QPushButton>\n#include <QStringList>\n#include <QVector>\n#include <QWidget>\n#include \"KeypointList.h\"\nclass QLabel;\n\nnamespace GmicQt\n{\nclass AbstractParameter;\n\nclass FilterParametersWidget : public QWidget {\n  Q_OBJECT\n\npublic:\n  FilterParametersWidget(QWidget * parent);\n  bool build(const QString & name, const QString & hash, const QString & parameters, const QList<QString> & values, const QList<int> & visibilityStates);\n  void setNoFilter(const QString & message = QString());\n  ~FilterParametersWidget() override;\n  const QString & valueString() const;\n  QStringList valueStringList() const;\n  void setValues(const QStringList &, bool notify);\n  void setVisibilityStates(QList<int> states);\n  QList<int> visibilityStates();\n  QList<int> defaultVisibilityStates();\n\n  void applyDefaultVisibilityStates();\n  void reset(bool notify);\n  void randomize();\n  QString filterName() const;\n  int actualParametersCount() const;\n  int acceptRandom() const;\n  QString filterHash() const;\n  void clearButtonParameters();\n  KeypointList keypoints() const;\n  void setKeypoints(KeypointList list, bool notify);\n  bool hasKeypoints() const;\n  const QVector<bool> & quotedParameters() const;\n\n  static QString defaultValueString(const QVector<AbstractParameter *> & parameters);\n  static QStringList defaultParameterList(const QString & parameters,       //\n                                          QString * error,                  //\n                                          QVector<bool> * quoted = nullptr, //\n                                          QVector<int> * size = nullptr);\n\npublic slots:\n  void updateValueString(bool notify);\n  void updateValueStringAndNotify();\n\nsignals:\n  void valueChanged();\n\nprivate:\n  static QString valueString(const QVector<AbstractParameter *> & parameters);\n  static QVector<AbstractParameter *> buildParameters(const QString & filterName, //\n                                                      const QString & parameters, //\n                                                      QObject * parent,           //\n                                                      int * actualParameterCount, //\n                                                      bool * acceptRandom,        //\n                                                      QString * error);\n  static QStringList defaultParameterList(const QVector<AbstractParameter *> & parameters, QVector<bool> * quoted);\n  static QVector<bool> quotedParameters(const QVector<AbstractParameter *> & parameters);\n  static QVector<int> parameterSizes(const QVector<AbstractParameter *> & parameters);\n\nprotected:\n  void clear();\n  QVector<AbstractParameter *> _parameters;\n  int _actualParametersCount;\n  bool _acceptRandom;\n  QString _valueString;\n  QLabel * _labelNoParams;\n  QWidget * _paddingWidget;\n  QString _filterName;\n  QString _filterHash;\n  bool _hasKeypoints;\n  QVector<bool> _quotedParameters;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FILTERPARAMSWIDGET_H\n"
  },
  {
    "path": "src/FilterParameters/FloatParameter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FloatParameter.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/FloatParameter.h\"\n#include <QDebug>\n#include <QGridLayout>\n#include <QLabel>\n#include <QLocale>\n#include <QPalette>\n#include <QSlider>\n#include <QString>\n#include <QTimerEvent>\n#include <QWidget>\n#include \"FilterParameters/CustomDoubleSpinBox.h\"\n#include \"FilterTextTranslator.h\"\n#include \"Globals.h\"\n#include \"HtmlTranslator.h\"\n#include \"Logger.h\"\n#include \"Misc.h\"\n#include \"Settings.h\"\n\nnamespace GmicQt\n{\n\nFloatParameter::FloatParameter(QObject * parent) : AbstractParameter(parent), _min(0), _max(0), _default(0), _value(0), _label(nullptr), _slider(nullptr), _spinBox(nullptr)\n{\n  _timerId = 0;\n  _connected = false;\n}\n\nFloatParameter::~FloatParameter()\n{\n  delete _spinBox;\n  delete _slider;\n  delete _label;\n}\n\nint FloatParameter::size() const\n{\n  return 1;\n}\n\nbool FloatParameter::addTo(QWidget * widget, int row)\n{\n  _grid = dynamic_cast<QGridLayout *>(widget->layout());\n  Q_ASSERT_X(_grid, __PRETTY_FUNCTION__, \"No grid layout in widget\");\n  _row = row;\n  delete _spinBox;\n  delete _slider;\n  delete _label;\n  _slider = new QSlider(Qt::Horizontal, widget);\n  _slider->setMinimumWidth(SLIDER_MIN_WIDTH);\n  _slider->setRange(0, SLIDER_MAX_RANGE);\n  _slider->setValue(static_cast<int>(SLIDER_MAX_RANGE * (_value - _min) / (_max - _min)));\n  if (Settings::darkThemeEnabled()) {\n    QPalette p = _slider->palette();\n    p.setColor(QPalette::Button, QColor(100, 100, 100));\n    p.setColor(QPalette::Highlight, QColor(130, 130, 130));\n    _slider->setPalette(p);\n  }\n\n  _spinBox = new CustomDoubleSpinBox(widget, _min, _max);\n  _spinBox->setSingleStep(double(_max - _min) / 100.0);\n  _spinBox->setValue((double)_value);\n  _grid->addWidget(_label = new QLabel(_name, widget), row, 0, 1, 1);\n  setTextSelectable(_label);\n  _grid->addWidget(_slider, row, 1, 1, 1);\n  _grid->addWidget(_spinBox, row, 2, 1, 1);\n\n  connectSliderSpinBox();\n\n  connect(_spinBox, &CustomDoubleSpinBox::editingFinished, [this]() { notifyIfRelevant(); });\n\n  return true;\n}\n\nQString FloatParameter::value() const\n{\n  QLocale currentLocale;\n  QLocale::setDefault(QLocale::c());\n  QString value = QString(\"%1\").arg(_spinBox->value());\n  QLocale::setDefault(currentLocale);\n  return value;\n}\n\nQString FloatParameter::defaultValue() const\n{\n  QLocale currentLocale;\n  QLocale::setDefault(QLocale::c());\n  QString value = QString(\"%1\").arg(static_cast<double>(_default));\n  QLocale::setDefault(currentLocale);\n  return value;\n}\n\nvoid FloatParameter::setValue(const QString & value)\n{\n  bool ok = true;\n  const float x = value.toFloat(&ok);\n  if (!ok) {\n    Logger::warning(QString(\"FloatParameter::setValue(\\\"%1\\\"): bad value\").arg(value));\n    return;\n  }\n  _value = x;\n  if (_slider) {\n    disconnectSliderSpinBox();\n    _slider->setValue(static_cast<int>(SLIDER_MAX_RANGE * (_value - _min) / (_max - _min)));\n    _spinBox->setValue((double)_value);\n    connectSliderSpinBox();\n  }\n}\n\nvoid FloatParameter::reset()\n{\n  disconnectSliderSpinBox();\n  _value = _default;\n  _slider->setValue(static_cast<int>(SLIDER_MAX_RANGE * (_value - _min) / (_max - _min)));\n  _spinBox->setValue((double)_default);\n  connectSliderSpinBox();\n}\n\nvoid FloatParameter::randomize()\n{\n  if (acceptRandom()) {\n    disconnectSliderSpinBox();\n    _value = randomReal(_min, _max);\n    _slider->setValue(static_cast<int>(SLIDER_MAX_RANGE * (_value - _min) / (_max - _min)));\n    _spinBox->setValue(_value);\n    connectSliderSpinBox();\n  }\n}\n\nbool FloatParameter::initFromText(const QString & filterName, const char * text, int & textLength)\n{\n  textLength = 0;\n  QList<QString> list = parseText(\"float\", text, textLength);\n  if (list.isEmpty()) {\n    return false;\n  }\n  _name = HtmlTranslator::html2txt(FilterTextTranslator::translate(list[0], filterName));\n  QList<QString> values = list[1].split(QChar(','));\n  if (values.size() != 3) {\n    return false;\n  }\n  bool ok1, ok2, ok3;\n  _default = values[0].toFloat(&ok1);\n  _min = values[1].toFloat(&ok2);\n  _max = values[2].toFloat(&ok3);\n  _value = _default;\n  return ok1 && ok2 && ok3;\n}\n\nvoid FloatParameter::timerEvent(QTimerEvent * event)\n{\n  killTimer(event->timerId());\n  _timerId = 0;\n  if (!_spinBox->unfinishedKeyboardEditing()) {\n    notifyIfRelevant();\n  }\n}\n\nvoid FloatParameter::onSliderMoved(int value)\n{\n  const float fValue = _min + (float(value) / static_cast<float>(SLIDER_MAX_RANGE)) * (_max - _min);\n  if (fValue != _value) {\n    _spinBox->setValue(_value = fValue);\n  }\n}\n\nvoid FloatParameter::onSliderValueChanged(int value)\n{\n  const float fValue = _min + (float(value) / static_cast<float>(SLIDER_MAX_RANGE)) * (_max - _min);\n  if (fValue != _value) {\n    _spinBox->setValue(_value = fValue);\n  }\n}\n\nvoid FloatParameter::onSpinBoxChanged(double x)\n{\n  _value = float(x);\n  disconnectSliderSpinBox();\n  _slider->setValue(static_cast<int>(SLIDER_MAX_RANGE * (_value - _min) / (_max - _min)));\n  connectSliderSpinBox();\n  if (_timerId) {\n    killTimer(_timerId);\n  }\n  if (_spinBox->unfinishedKeyboardEditing()) {\n    _timerId = 0;\n  } else {\n    _timerId = startTimer(UPDATE_DELAY);\n  }\n}\n\nvoid FloatParameter::connectSliderSpinBox()\n{\n  if (_connected) {\n    return;\n  }\n  connect(_slider, &QSlider::sliderMoved, this, &FloatParameter::onSliderMoved);\n  connect(_slider, &QSlider::valueChanged, this, &FloatParameter::onSliderValueChanged);\n  connect(_spinBox, QOverload<double>::of(&CustomDoubleSpinBox::valueChanged), this, &FloatParameter::onSpinBoxChanged);\n  _connected = true;\n}\n\nvoid FloatParameter::disconnectSliderSpinBox()\n{\n  if (!_connected) {\n    return;\n  }\n  _slider->disconnect(this);\n  _spinBox->disconnect(this);\n  _connected = false;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/FloatParameter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FloatParameter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FLOATPARAMETER_H\n#define GMIC_QT_FLOATPARAMETER_H\n\n#include <QString>\n#include \"AbstractParameter.h\"\nclass QSlider;\nclass QLabel;\n\nnamespace GmicQt\n{\nclass CustomDoubleSpinBox;\n\nclass FloatParameter : public AbstractParameter {\n  Q_OBJECT\npublic:\n  FloatParameter(QObject * parent);\n  ~FloatParameter() override;\n  virtual int size() const override;\n  bool addTo(QWidget *, int row) override;\n  QString value() const override;\n  QString defaultValue() const override;\n  void setValue(const QString & value) override;\n  void reset() override;\n  void randomize() override;\n  bool initFromText(const QString & filterName, const char * text, int & textLength) override;\n\nprotected:\n  void timerEvent(QTimerEvent * event) override;\n\npublic slots:\n  void onSliderMoved(int);\n  void onSliderValueChanged(int);\n  void onSpinBoxChanged(double);\n\nprivate:\n  void connectSliderSpinBox();\n  void disconnectSliderSpinBox();\n  QString _name;\n  float _min;\n  float _max;\n  float _default;\n  float _value;\n  QLabel * _label;\n  QSlider * _slider;\n  CustomDoubleSpinBox * _spinBox;\n  int _timerId;\n  static const int UPDATE_DELAY = 300;\n  static const int SLIDER_MAX_RANGE = 1000;\n  bool _connected;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FLOATPARAMETER_H\n"
  },
  {
    "path": "src/FilterParameters/FolderParameter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FolderParameter.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/FolderParameter.h\"\n#include <QDebug>\n#include <QFileDialog>\n#include <QFileInfo>\n#include <QFontMetrics>\n#include <QGridLayout>\n#include <QLabel>\n#include <QPushButton>\n#include <QRegularExpression>\n#include <QWidget>\n#include \"Common.h\"\n#include \"FilterTextTranslator.h\"\n#include \"HtmlTranslator.h\"\n#include \"IconLoader.h\"\n#include \"Settings.h\"\n\nnamespace GmicQt\n{\n\nFolderParameter::FolderParameter(QObject * parent) : AbstractParameter(parent), _label(nullptr), _button(nullptr) {}\n\nFolderParameter::~FolderParameter()\n{\n  delete _label;\n  delete _button;\n}\n\nint FolderParameter::size() const\n{\n  return 1;\n}\n\nbool FolderParameter::addTo(QWidget * widget, int row)\n{\n  _grid = dynamic_cast<QGridLayout *>(widget->layout());\n  Q_ASSERT_X(_grid, __PRETTY_FUNCTION__, \"No grid layout in widget\");\n  _row = row;\n  delete _label;\n  delete _button;\n\n  _button = new QPushButton(widget);\n  _button->setIcon(IconLoader::load(\"folder\"));\n  _grid->addWidget(_label = new QLabel(_name, widget), row, 0, 1, 1);\n  setTextSelectable(_label);\n  _grid->addWidget(_button, row, 1, 1, 2);\n  setValue(_value);\n  connect(_button, &QPushButton::clicked, this, &FolderParameter::onButtonPressed);\n  return true;\n}\n\nQString FolderParameter::value() const\n{\n  return _value;\n}\n\nQString FolderParameter::defaultValue() const\n{\n  return _default;\n}\n\nvoid FolderParameter::setValue(const QString & value)\n{\n  _value = value;\n  if (_value.isEmpty()) {\n    _value = Settings::FolderParameterDefaultValue;\n  } else if (!QFileInfo(_value).isDir()) {\n    _value = QDir::homePath();\n  }\n  QDir dir(_value);\n  QDir abs(dir.absolutePath());\n  if (_button) {\n    int width = _button->contentsRect().width() - 10;\n    QFontMetrics fm(_button->font());\n    _button->setText(fm.elidedText(abs.dirName(), Qt::ElideRight, width));\n  }\n}\n\nvoid FolderParameter::reset()\n{\n  setValue(_default);\n}\n\nbool FolderParameter::initFromText(const QString & filterName, const char * text, int & textLength)\n{\n  QList<QString> list = parseText(\"folder\", text, textLength);\n  if (list.isEmpty()) {\n    return false;\n  }\n  _name = HtmlTranslator::html2txt(FilterTextTranslator::translate(list[0], filterName));\n  QRegularExpression re(\"^\\\".*\\\"$\");\n  if (re.match(list[1]).hasMatch()) {\n    list[1].chop(1);\n    list[1].remove(0, 1);\n  }\n  if (list[1].isEmpty()) {\n    _default.clear();\n    _value = Settings::FolderParameterDefaultValue;\n  } else {\n    _default = _value = list[1];\n  }\n  return true;\n}\n\nbool FolderParameter::isQuoted() const\n{\n  return true;\n}\n\nvoid FolderParameter::onButtonPressed()\n{\n  QString oldValue = _value;\n  QFileDialog::Options options = Settings::nativeFileDialogs() ? QFileDialog::Options() : QFileDialog::DontUseNativeDialog;\n  options |= QFileDialog::ShowDirsOnly;\n  QString path = QFileDialog::getExistingDirectory(dynamic_cast<QWidget *>(parent()), tr(\"Select a folder\"), _value, options);\n  if (path.isEmpty()) {\n    setValue(oldValue);\n  } else {\n    Settings::FolderParameterDefaultValue = path;\n    setValue(path);\n  }\n  notifyIfRelevant();\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/FolderParameter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FolderParameter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FOLDERPARAMETER_H\n#define GMIC_QT_FOLDERPARAMETER_H\n\n#include <QString>\n#include \"AbstractParameter.h\"\nclass QPushButton;\nclass QLabel;\n\nnamespace GmicQt\n{\n\nclass FolderParameter : public AbstractParameter {\n  Q_OBJECT\npublic:\n  FolderParameter(QObject * parent);\n  ~FolderParameter() override;\n  virtual int size() const override;\n  bool addTo(QWidget *, int row) override;\n  QString value() const override;\n  QString defaultValue() const override;\n  void setValue(const QString & value) override;\n  void reset() override;\n  bool initFromText(const QString & filterName, const char * text, int & textLength) override;\n  bool isQuoted() const override;\npublic slots:\n  void onButtonPressed();\n\nprivate:\n  QString _name;\n  QString _default;\n  QString _value;\n  QLabel * _label;\n  QPushButton * _button;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FOLDERPARAMETER_H\n"
  },
  {
    "path": "src/FilterParameters/IntParameter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file IntParameter.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/IntParameter.h\"\n#include <QGridLayout>\n#include <QLabel>\n#include <QPalette>\n#include <QRandomGenerator>\n#include <QSlider>\n#include <QTimerEvent>\n#include <QWidget>\n#include \"FilterParameters/CustomSpinBox.h\"\n#include \"FilterTextTranslator.h\"\n#include \"Globals.h\"\n#include \"HtmlTranslator.h\"\n#include \"Logger.h\"\n#include \"Settings.h\"\n\nnamespace GmicQt\n{\n\nIntParameter::IntParameter(QObject * parent) : AbstractParameter(parent), _min(0), _max(0), _default(0), _value(0), _label(nullptr), _slider(nullptr), _spinBox(nullptr)\n{\n  _timerId = 0;\n  _connected = false;\n}\n\nIntParameter::~IntParameter()\n{\n  delete _spinBox;\n  delete _slider;\n  delete _label;\n}\n\nint IntParameter::size() const\n{\n  return 1;\n}\n\nbool IntParameter::addTo(QWidget * widget, int row)\n{\n  _grid = dynamic_cast<QGridLayout *>(widget->layout());\n  Q_ASSERT_X(_grid, __PRETTY_FUNCTION__, \"No grid layout in widget\");\n  _row = row;\n  delete _spinBox;\n  delete _slider;\n  delete _label;\n  _slider = new QSlider(Qt::Horizontal, widget);\n  _slider->setMinimumWidth(SLIDER_MIN_WIDTH);\n  _slider->setRange(_min, _max);\n  _slider->setValue(_value);\n\n  const int delta = 1 + _max - _min;\n  if (delta < 20) {\n    _slider->setPageStep(1);\n  } else {\n    const int fact = delta < 100 ? 10 : delta < 1000 ? 100 : delta < 10000 ? 1000 : 10000;\n    _slider->setPageStep(fact * (delta / fact) / 10);\n  }\n\n  _spinBox = new CustomSpinBox(widget, _min, _max);\n  _spinBox->setValue(_value);\n  if (Settings::darkThemeEnabled()) {\n    QPalette p = _slider->palette();\n    p.setColor(QPalette::Button, QColor(100, 100, 100));\n    p.setColor(QPalette::Highlight, QColor(130, 130, 130));\n    _slider->setPalette(p);\n  }\n  _grid->addWidget(_label = new QLabel(_name, widget), row, 0, 1, 1);\n  setTextSelectable(_label);\n  _grid->addWidget(_slider, row, 1, 1, 1);\n  _grid->addWidget(_spinBox, row, 2, 1, 1);\n  connectSliderSpinBox();\n  connect(_spinBox, &CustomSpinBox::editingFinished, [this]() { notifyIfRelevant(); });\n\n  return true;\n}\n\nQString IntParameter::value() const\n{\n  return _spinBox->text();\n}\n\nQString IntParameter::defaultValue() const\n{\n  return QString::number(_default);\n}\n\nvoid IntParameter::setValue(const QString & value)\n{\n  bool ok = true;\n  const int k = value.toInt(&ok);\n  if (!ok) {\n    Logger::warning(QString(\"IntParameter::setValue(\\\"%1\\\"): bad value\").arg(value));\n    return;\n  }\n  _value = k;\n  if (_spinBox) {\n    disconnectSliderSpinBox();\n    _spinBox->setValue(_value);\n    _slider->setValue(_value);\n    connectSliderSpinBox();\n  }\n}\n\nvoid IntParameter::reset()\n{\n  disconnectSliderSpinBox();\n  _slider->setValue(_default);\n  _spinBox->setValue(_default);\n  _value = _default;\n  connectSliderSpinBox();\n}\n\nvoid IntParameter::randomize()\n{\n  if (acceptRandom()) {\n    disconnectSliderSpinBox();\n    _value = QRandomGenerator::global()->bounded(_min, _max + 1);\n    _slider->setValue(_value);\n    _spinBox->setValue(_value);\n    connectSliderSpinBox();\n  }\n}\n\nbool IntParameter::initFromText(const QString & filterName, const char * text, int & textLength)\n{\n  QList<QString> list = parseText(\"int\", text, textLength);\n  if (list.isEmpty()) {\n    return false;\n  }\n  _name = HtmlTranslator::html2txt(FilterTextTranslator::translate(list[0], filterName));\n\n  QList<QString> values = list[1].split(QChar(','));\n  if (values.size() != 3) {\n    return false;\n  }\n  bool ok1, ok2, ok3;\n  _default = values[0].toInt(&ok1);\n  _min = values[1].toInt(&ok2);\n  _max = values[2].toInt(&ok3);\n  _value = _default;\n  return ok1 && ok2 && ok3;\n}\n\nvoid IntParameter::timerEvent(QTimerEvent * e)\n{\n  killTimer(e->timerId());\n  _timerId = 0;\n  if (!_spinBox->unfinishedKeyboardEditing()) {\n    notifyIfRelevant();\n  }\n}\n\nvoid IntParameter::onSliderMoved(int value)\n{\n  if (value != _value) {\n    _spinBox->setValue(_value = value);\n  }\n}\n\nvoid IntParameter::onSliderValueChanged(int value)\n{\n  if (value != _value) {\n    _spinBox->setValue(_value = value);\n  }\n}\n\nvoid IntParameter::onSpinBoxChanged(int i)\n{\n  _value = i;\n  _slider->setValue(i);\n  if (_timerId) {\n    killTimer(_timerId);\n  }\n  if (_spinBox->unfinishedKeyboardEditing()) {\n    _timerId = 0;\n  } else {\n    _timerId = startTimer(UPDATE_DELAY);\n  }\n}\n\nvoid IntParameter::connectSliderSpinBox()\n{\n  if (_connected) {\n    return;\n  }\n  connect(_slider, &QSlider::sliderMoved, this, &IntParameter::onSliderMoved);\n  connect(_slider, &QSlider::valueChanged, this, &IntParameter::onSliderValueChanged);\n  connect(_spinBox, QOverload<int>::of(&CustomSpinBox::valueChanged), this, &IntParameter::onSpinBoxChanged);\n  _connected = true;\n}\n\nvoid IntParameter::disconnectSliderSpinBox()\n{\n  if (!_connected) {\n    return;\n  }\n  _slider->disconnect(this);\n  _spinBox->disconnect(this);\n  _connected = false;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/IntParameter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file IntParameter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_INTPARAMETER_H\n#define GMIC_QT_INTPARAMETER_H\n\n#include <QString>\n#include \"AbstractParameter.h\"\nclass QSlider;\nclass QLabel;\n\nnamespace GmicQt\n{\n\nclass CustomSpinBox;\nclass IntParameter : public AbstractParameter {\n  Q_OBJECT\npublic:\n  IntParameter(QObject * parent);\n  ~IntParameter() override;\n  virtual int size() const override;\n  bool addTo(QWidget *, int row) override;\n  QString value() const override;\n  QString defaultValue() const override;\n  void setValue(const QString & value) override;\n  void reset() override;\n  void randomize() override;\n  bool initFromText(const QString & filterName, const char * text, int & textLength) override;\n\nprotected:\n  void timerEvent(QTimerEvent *) override;\npublic slots:\n  void onSliderMoved(int);\n  void onSliderValueChanged(int value);\n  void onSpinBoxChanged(int);\n\nprivate:\n  void connectSliderSpinBox();\n  void disconnectSliderSpinBox();\n  QString _name;\n  int _min;\n  int _max;\n  int _default;\n  int _value;\n  QLabel * _label;\n  QSlider * _slider;\n  CustomSpinBox * _spinBox;\n  int _timerId;\n  static const int UPDATE_DELAY = 300;\n  bool _connected;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_INTPARAMETER_H\n"
  },
  {
    "path": "src/FilterParameters/LinkParameter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file LinkParameter.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/LinkParameter.h\"\n#include <QDebug>\n#include <QDesktopServices>\n#include <QGridLayout>\n#include <QLabel>\n#include <QRegularExpression>\n#include <QString>\n#include <QUrl>\n#include \"Common.h\"\n#include \"FilterTextTranslator.h\"\n#include \"HtmlTranslator.h\"\n\nnamespace GmicQt\n{\n\nLinkParameter::LinkParameter(QObject * parent) : AbstractParameter(parent), _label(nullptr), _alignment(Qt::AlignLeft) {}\n\nLinkParameter::~LinkParameter()\n{\n  delete _label;\n}\n\nint LinkParameter::size() const\n{\n  return 0;\n}\n\nbool LinkParameter::addTo(QWidget * widget, int row)\n{\n  _grid = dynamic_cast<QGridLayout *>(widget->layout());\n  Q_ASSERT_X(_grid, __PRETTY_FUNCTION__, \"No grid layout in widget\");\n  _row = row;\n  delete _label;\n  _label = new QLabel(QString(\"<a href=\\\"%2\\\">%1</a>\").arg(_text).arg(_url), widget);\n  _label->setAlignment(_alignment);\n  _label->setTextFormat(Qt::RichText);\n  _label->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);\n  setTextSelectable(_label);\n  connect(_label, &QLabel::linkActivated, this, &LinkParameter::onLinkActivated);\n  _grid->addWidget(_label, row, 0, 1, 3);\n  return true;\n}\n\nQString LinkParameter::value() const\n{\n  return QString();\n}\n\nQString LinkParameter::defaultValue() const\n{\n  return QString();\n}\n\nvoid LinkParameter::setValue(const QString &) {}\n\nvoid LinkParameter::reset() {}\n\nbool LinkParameter::initFromText(const QString & filterName, const char * text, int & textLength)\n{\n  QList<QString> list = parseText(\"link\", text, textLength);\n  if (list.isEmpty()) {\n    return false;\n  }\n  QList<QString> values = list[1].split(QChar(','));\n\n  if (values.size() == 3) {\n    bool ok;\n    float a = values[0].toFloat(&ok);\n    if (!ok) {\n      return false;\n    }\n    if (a == 0.0f) {\n      _alignment = Qt::AlignLeft;\n    } else if (a == 1.0f) {\n      _alignment = Qt::AlignRight;\n    } else {\n      _alignment = Qt::AlignCenter;\n    }\n    values.pop_front();\n  } else {\n    _alignment = Qt::AlignCenter;\n  }\n\n  if (values.size() == 2) {\n    _text = values[0].trimmed().remove(QRegularExpression(\"^\\\"\")).remove(QRegularExpression(\"\\\"$\"));\n    _text = HtmlTranslator::html2txt(FilterTextTranslator::translate(_text, filterName));\n    values.pop_front();\n  }\n  if (values.size() == 1) {\n    _url = values[0].trimmed().remove(QRegularExpression(\"^\\\"\")).remove(QRegularExpression(\"\\\"$\"));\n  }\n  if (values.isEmpty()) {\n    return false;\n  }\n  if (_text.isEmpty()) {\n    _text = _url;\n  }\n  return true;\n}\n\nvoid LinkParameter::onLinkActivated(const QString & link)\n{\n  QDesktopServices::openUrl(QUrl(link));\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/LinkParameter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file LinkParameter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_LINKPARAMETER_H\n#define GMIC_QT_LINKPARAMETER_H\n\n#include <Qt>\n#include \"AbstractParameter.h\"\nclass QLabel;\n\nnamespace GmicQt\n{\n\nclass LinkParameter : public AbstractParameter {\n  Q_OBJECT\npublic:\n  LinkParameter(QObject * parent);\n  ~LinkParameter() override;\n  int size() const override;\n  bool addTo(QWidget *, int row) override;\n  QString value() const override;\n  QString defaultValue() const override;\n  void setValue(const QString & value) override;\n  void reset() override;\n  bool initFromText(const QString & filterName, const char * text, int & textLength) override;\npublic slots:\n  void onLinkActivated(const QString & link);\n\nprivate:\n  QLabel * _label;\n  QString _text;\n  QString _url;\n  Qt::AlignmentFlag _alignment;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_LINKPARAMETER_H\n"
  },
  {
    "path": "src/FilterParameters/MultilineTextParameterWidget.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file MultilineTextParameterWidget.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/MultilineTextParameterWidget.h\"\n#include <QDebug>\n#include <QEvent>\n#include <QKeyEvent>\n#include \"Common.h\"\n#include \"ui_multilinetextparameterwidget.h\"\n\nnamespace GmicQt\n{\n\nMultilineTextParameterWidget::MultilineTextParameterWidget(const QString & name, const QString & value, QWidget * parent) : QWidget(parent), ui(new Ui::MultilineTextParameterWidget)\n{\n  ui->setupUi(this);\n  ui->textEdit->document()->setPlainText(value);\n  ui->textEdit->installEventFilter(this);\n  ui->label->setText(name);\n  ui->pbUpdate->setToolTip(tr(\"Ctrl+Return\"));\n  connect(ui->pbUpdate, &QPushButton::clicked, this, &MultilineTextParameterWidget::onUpdate);\n}\n\nMultilineTextParameterWidget::~MultilineTextParameterWidget()\n{\n  delete ui;\n}\n\nQString MultilineTextParameterWidget::text() const\n{\n  return ui->textEdit->document()->toPlainText();\n}\n\nvoid MultilineTextParameterWidget::setText(const QString & text)\n{\n  ui->textEdit->document()->setPlainText(text);\n}\n\nvoid MultilineTextParameterWidget::onUpdate(bool)\n{\n  emit valueChanged();\n}\n\nbool MultilineTextParameterWidget::eventFilter(QObject * obj, QEvent * event)\n{\n  if (event->type() == QEvent::KeyPress) {\n    auto keyEvent = dynamic_cast<QKeyEvent *>(event);\n    if (keyEvent && (keyEvent->modifiers() & Qt::ControlModifier) && (keyEvent->key() == Qt::Key_Enter || keyEvent->key() == Qt::Key_Return)) {\n      onUpdate(true);\n      return true;\n    }\n  }\n  return QObject::eventFilter(obj, event);\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/MultilineTextParameterWidget.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file MultilineTextParameterWidget.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_MULTILINETEXTPARAMETERWIDGET_H\n#define GMIC_QT_MULTILINETEXTPARAMETERWIDGET_H\n\n#include <QWidget>\n\nnamespace Ui\n{\nclass MultilineTextParameterWidget;\n}\n\nnamespace GmicQt\n{\n\nclass MultilineTextParameterWidget : public QWidget {\n  Q_OBJECT\npublic:\n  explicit MultilineTextParameterWidget(const QString & name, const QString & value, QWidget * parent);\n  ~MultilineTextParameterWidget() override;\n  QString text() const;\n  void setText(const QString & text);\nsignals:\n  void valueChanged();\npublic slots:\n  void onUpdate(bool);\n\nprotected:\n  bool eventFilter(QObject * obj, QEvent * event) override;\n\nprivate:\n  Ui::MultilineTextParameterWidget * ui;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_MULTILINETEXTPARAMETERWIDGET_H\n"
  },
  {
    "path": "src/FilterParameters/NoteParameter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file NoteParameter.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/NoteParameter.h\"\n#include <QDebug>\n#include <QDesktopServices>\n#include <QGridLayout>\n#include <QLabel>\n#include <QRegularExpression>\n#include <QUrl>\n#include \"HtmlTranslator.h\"\n#include \"Settings.h\"\n\nnamespace GmicQt\n{\n\nNoteParameter::NoteParameter(QObject * parent) : AbstractParameter(parent), _label(nullptr) {}\n\nNoteParameter::~NoteParameter()\n{\n  delete _label;\n}\n\nint NoteParameter::size() const\n{\n  return 0;\n}\n\nbool NoteParameter::addTo(QWidget * widget, int row)\n{\n  _grid = dynamic_cast<QGridLayout *>(widget->layout());\n  Q_ASSERT_X(_grid, __PRETTY_FUNCTION__, \"No grid layout in widget\");\n  _row = row;\n  delete _label;\n  _label = new QLabel(_text, widget);\n  _label->setTextFormat(Qt::RichText);\n  _label->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);\n  _label->setWordWrap(true);\n  setTextSelectable(_label);\n  connect(_label, &QLabel::linkActivated, this, &NoteParameter::onLinkActivated);\n  _grid->addWidget(_label, row, 0, 1, 3);\n  return true;\n}\n\nQString NoteParameter::value() const\n{\n  return QString();\n}\n\nQString NoteParameter::defaultValue() const\n{\n  return QString();\n}\n\nvoid NoteParameter::setValue(const QString &) {}\n\nvoid NoteParameter::reset() {}\n\nbool NoteParameter::initFromText(const QString & /* filterName */, const char * text, int & textLength)\n{\n  QList<QString> list = parseText(\"note\", text, textLength);\n  if (list.isEmpty()) {\n    return false;\n  }\n\n  _text = list[1].trimmed(); // Notes are never translated\n  _text.remove(QRegularExpression(\"^\\\"\")).remove(QRegularExpression(\"\\\"$\")).replace(QString(\"\\\\\\\"\"), \"\\\"\");\n  _text.replace(QString(\"\\\\n\"), \"<br/>\");\n\n  if (Settings::darkThemeEnabled()) {\n    _text.replace(QRegularExpression(\"color\\\\s*=\\\\s*\\\"purple\\\"\"), QString(\"color=\\\"#ff00ff\\\"\"));\n    _text.replace(QRegularExpression(\"foreground\\\\s*=\\\\s*\\\"purple\\\"\"), QString(\"foreground=\\\"#ff00ff\\\"\"));\n    _text.replace(QRegularExpression(\"color\\\\s*=\\\\s*\\\"blue\\\"\"), QString(\"color=\\\"#9b9bff\\\"\"));\n    _text.replace(QRegularExpression(\"foreground\\\\s*=\\\\s*\\\"blue\\\"\"), QString(\"foreground=\\\"#9b9bff\\\"\"));\n  }\n\n  _text.replace(QRegularExpression(\"color\\\\s*=\\\\s*\\\"\"), QString(\"style=\\\"color:\"));\n  _text.replace(QRegularExpression(\"foreground\\\\s*=\\\\s*\\\"\"), QString(\"style=\\\"color:\"));\n  _text = HtmlTranslator::fromUtf8Escapes(_text);\n  return true;\n}\n\nvoid NoteParameter::onLinkActivated(const QString & link)\n{\n  QDesktopServices::openUrl(QUrl(link));\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/NoteParameter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file NoteParameter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_NOTEPARAMETER_H\n#define GMIC_QT_NOTEPARAMETER_H\n\n#include \"AbstractParameter.h\"\nclass QLabel;\n\nnamespace GmicQt\n{\n\nclass NoteParameter : public AbstractParameter {\n  Q_OBJECT\npublic:\n  NoteParameter(QObject * parent);\n  ~NoteParameter() override;\n  int size() const override;\n  bool addTo(QWidget *, int row) override;\n  QString value() const override;\n  QString defaultValue() const override;\n  void setValue(const QString & value) override;\n  void reset() override;\n  bool initFromText(const QString & filterName, const char * text, int & textLength) override;\npublic slots:\n  void onLinkActivated(const QString & link);\n\nprivate:\n  QLabel * _label;\n  QString _text;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_NOTEPARAMETER_H\n"
  },
  {
    "path": "src/FilterParameters/PointParameter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file PointParameter.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/PointParameter.h\"\n#include <QApplication>\n#include <QColorDialog>\n#include <QDebug>\n#include <QFont>\n#include <QFontMetrics>\n#include <QGridLayout>\n#include <QHBoxLayout>\n#include <QLabel>\n#include <QPainter>\n#include <QPushButton>\n#include <QSpacerItem>\n#include <QWidget>\n#include <cmath>\n#include <cstdio>\n#include <cstdlib>\n#include \"Common.h\"\n#include \"FilterTextTranslator.h\"\n#include \"HtmlTranslator.h\"\n#include \"KeypointList.h\"\n#include \"Misc.h\"\n#include \"Settings.h\"\n\nnamespace GmicQt\n{\n\nint PointParameter::_defaultColorNextIndex = 0;\nunsigned long PointParameter::_randomSeed = 12345;\n\nPointParameter::PointParameter(QObject * parent) : AbstractParameter(parent), _defaultPosition(0, 0), _position(0, 0), _removable(false), _burst(false)\n{\n  _label = nullptr;\n  _colorLabel = nullptr;\n  _labelX = nullptr;\n  _labelY = nullptr;\n  _spinBoxX = nullptr;\n  _spinBoxY = nullptr;\n  _removeButton = nullptr;\n  _rowCell = nullptr;\n  _notificationEnabled = true;\n  _connected = false;\n  _defaultRemovedStatus = false;\n  _radius = KeypointList::Keypoint::DefaultRadius;\n  _keepOpacityWhenSelected = false;\n  _removed = false;\n  setRemoved(false);\n}\n\nPointParameter::~PointParameter()\n{\n  delete _label;\n  delete _rowCell;\n}\n\nint PointParameter::size() const\n{\n  return 2;\n}\n\nbool PointParameter::addTo(QWidget * widget, int row)\n{\n  _grid = dynamic_cast<QGridLayout *>(widget->layout());\n  Q_ASSERT_X(_grid, __PRETTY_FUNCTION__, \"No grid layout in widget\");\n  _row = row;\n  delete _label;\n  delete _rowCell;\n\n  _rowCell = new QWidget(widget);\n  auto hbox = new QHBoxLayout(_rowCell);\n  hbox->setContentsMargins(0, 0, 0, 0);\n  hbox->addWidget(_colorLabel = new QLabel(_rowCell));\n\n  QFontMetrics fm(widget->font());\n  QRect r = fm.boundingRect(\"CLR\");\n  _colorLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);\n  QPixmap pixmap(r.width(), r.height());\n  QPainter painter(&pixmap);\n  painter.setBrush(QColor(_color.red(), _color.green(), _color.blue()));\n  painter.setPen(Qt::black);\n  painter.drawRect(0, 0, pixmap.width() - 1, pixmap.height() - 1);\n  _colorLabel->setPixmap(pixmap);\n\n  hbox->addWidget(_labelX = new QLabel(\"X\", _rowCell));\n  hbox->addWidget(_spinBoxX = new QDoubleSpinBox(_rowCell));\n  hbox->addWidget(_labelY = new QLabel(\"Y\", _rowCell));\n  hbox->addWidget(_spinBoxY = new QDoubleSpinBox(_rowCell));\n  if (_removable) {\n    hbox->addWidget(_removeButton = new QToolButton(_rowCell));\n    _removeButton->setCheckable(true);\n    _removeButton->setChecked(_removed);\n    _removeButton->setIcon(Settings::RemoveIcon);\n  } else {\n    _removeButton = nullptr;\n  }\n  hbox->addSpacerItem(new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Fixed));\n  _spinBoxX->setRange(-200.0, 300.0);\n  _spinBoxY->setRange(-200.0, 300.0);\n  _spinBoxX->setValue(_position.x());\n  _spinBoxY->setValue(_position.y());\n  _grid->addWidget(_label = new QLabel(_name, widget), row, 0, 1, 1);\n  setTextSelectable(_label);\n  _grid->addWidget(_rowCell, row, 1, 1, 2);\n\n#ifdef _GMIC_QT_DEBUG_\n  _label->setToolTip(QString(\"Burst: %1\").arg(_burst ? \"on\" : \"off\"));\n#endif\n\n  setRemoved(_removed);\n  connectSpinboxes();\n  return true;\n}\n\nvoid PointParameter::addToKeypointList(KeypointList & list) const\n{\n  if (_removable && _removed) {\n    list.add(KeypointList::Keypoint(_color, _removable, _burst, _radius, _keepOpacityWhenSelected));\n  } else {\n    list.add(KeypointList::Keypoint(_position.x(), _position.y(), _color, _removable, _burst, _radius, _keepOpacityWhenSelected));\n  }\n}\n\nvoid PointParameter::extractPositionFromKeypointList(KeypointList & list)\n{\n  Q_ASSERT_X(!list.isEmpty(), __PRETTY_FUNCTION__, \"Keypoint list is empty\");\n  enableNotifications(false);\n  KeypointList::Keypoint kp = list.front();\n  if (!kp.isNaN()) {\n    _position.setX(kp.x);\n    _position.setY(kp.y);\n    if (_spinBoxX) {\n      _spinBoxX->setValue(kp.x);\n      _spinBoxY->setValue(kp.y);\n    }\n  }\n  list.pop_front();\n  enableNotifications(true);\n}\n\nQString PointParameter::value() const\n{\n  if (_removed) {\n    return \"nan,nan\";\n  }\n  return QString(\"%1,%2\").arg(_position.x()).arg(_position.y());\n}\n\nQString PointParameter::defaultValue() const\n{\n  return QString(\"%1,%2\").arg(_defaultPosition.x()).arg(_defaultPosition.y());\n}\n\nvoid PointParameter::setValue(const QString & value)\n{\n  QStringList list = value.split(\",\");\n  if (list.size() == 2) {\n    bool ok;\n    float x = list[0].toFloat(&ok);\n    bool xNaN = (list[0].toUpper() == \"NAN\");\n    if (ok && !xNaN) {\n      _position.setX(x);\n    }\n    float y = list[1].toFloat(&ok);\n    bool yNaN = (list[1].toUpper() == \"NAN\");\n    if (ok && !yNaN) {\n      _position.setY(y);\n    }\n    _removed = (_removable && xNaN && yNaN);\n\n    updateView();\n  }\n}\n\nvoid PointParameter::setVisibilityState(AbstractParameter::VisibilityState state)\n{\n  AbstractParameter::setVisibilityState(state);\n  if (state == VisibilityState::Visible) {\n    updateView();\n  }\n}\n\nvoid PointParameter::updateView()\n{\n  if (!_spinBoxX) {\n    return;\n  }\n  disconnectSpinboxes();\n  if (_removeButton) {\n    setRemoved(_removed);\n    _removeButton->setChecked(_removed);\n  }\n  if (!_removed) {\n    _spinBoxX->setValue(_position.x());\n    _spinBoxY->setValue(_position.y());\n  }\n  connectSpinboxes();\n}\n\nvoid PointParameter::reset()\n{\n  _position = _defaultPosition;\n  enableNotifications(false);\n  if (_spinBoxX) {\n    _spinBoxX->setValue(_defaultPosition.rx());\n    _spinBoxY->setValue(_defaultPosition.ry());\n  }\n  if (_removeButton && _removable) {\n    _removeButton->setChecked((_removed = _defaultRemovedStatus));\n  }\n  enableNotifications(true);\n}\n\nvoid PointParameter::randomize()\n{\n  if (acceptRandom()) {\n    _position = QPointF(randomReal(0.0, 100.0), randomReal(0.0, 100.0));\n    if (_spinBoxX) {\n      disconnectSpinboxes();\n      _spinBoxX->setValue(_position.rx());\n      _spinBoxY->setValue(_position.ry());\n      connectSpinboxes();\n    }\n  }\n}\n\n// P = point(x,y,removable{(0),1},burst{(0),1},r,g,b,a{negative->keepOpacityWhenSelected},radius,widget_visible{0|(1)})\nbool PointParameter::initFromText(const QString & filterName, const char * text, int & textLength)\n{\n  QList<QString> list = parseText(\"point\", text, textLength);\n  if (list.isEmpty()) {\n    return false;\n  }\n  _name = HtmlTranslator::html2txt(FilterTextTranslator::translate(list[0], filterName));\n  QList<QString> params = list[1].split(\",\", QT_SKIP_EMPTY_PARTS);\n\n  bool ok = true;\n  _color.setRgb(255, 255, 255, 255);\n  _burst = false;\n  _removable = false;\n  _radius = KeypointList::Keypoint::DefaultRadius;\n  _keepOpacityWhenSelected = false;\n\n  float x = 50.0f;\n  float y = 50.0f;\n  _removed = false;\n  bool xNaN = true;\n  bool yNaN = true;\n\n  if (!params.isEmpty()) {\n    x = params[0].toFloat(&ok);\n    xNaN = (params[0].toUpper() == \"NAN\");\n    if (!ok) {\n      return false;\n    }\n    if (xNaN) {\n      x = 50.0;\n    }\n  }\n\n  if (params.size() >= 2) {\n    y = params[1].toFloat(&ok);\n    yNaN = (params[1].toUpper() == \"NAN\");\n    if (!ok) {\n      return false;\n    }\n    if (yNaN) {\n      y = 50.0;\n    }\n  }\n\n  _defaultPosition.setX(static_cast<qreal>(x));\n  _defaultPosition.setY(static_cast<qreal>(y));\n  _removed = _defaultRemovedStatus = (xNaN || yNaN);\n\n  if (params.size() >= 3) {\n    int removable = params[2].toInt(&ok);\n    if (!ok) {\n      return false;\n    }\n    switch (removable) {\n    case -1:\n      _removable = _removed = _defaultRemovedStatus = true;\n      break;\n    case 0:\n      _removable = _removed = false;\n      break;\n    case 1:\n      _removable = true;\n      _defaultRemovedStatus = _removed = (xNaN && yNaN);\n      break;\n    default:\n      return false;\n    }\n  }\n\n  if (params.size() >= 4) {\n    bool burst = params[3].toInt(&ok);\n    if (!ok) {\n      return false;\n    }\n    _burst = burst;\n  }\n\n  if (params.size() >= 5) {\n    int red = params[4].toInt(&ok);\n    if (!ok) {\n      return false;\n    }\n    _color.setRed(red);\n    _color.setGreen(red);\n    _color.setBlue(red);\n  } else {\n    pickColorFromDefaultColormap();\n  }\n\n  if (params.size() >= 6) {\n    int green = params[5].toInt(&ok);\n    if (!ok) {\n      return false;\n    }\n    _color.setGreen(green);\n    _color.setBlue(0);\n  }\n\n  if (params.size() >= 7) {\n    int blue = params[6].toInt(&ok);\n    if (!ok) {\n      return false;\n    }\n    _color.setBlue(blue);\n  }\n\n  if (params.size() >= 8) {\n    int alpha = params[7].toInt(&ok);\n    if (!ok) {\n      return false;\n    }\n    if (params[7].trimmed().startsWith(\"-\") || (alpha < 0)) {\n      _keepOpacityWhenSelected = true;\n    }\n    _color.setAlpha(std::abs(alpha));\n  }\n\n  if (params.size() >= 9) {\n    QString s = params[8].trimmed();\n    if (s.endsWith(\"%\")) {\n      s.chop(1);\n      _radius = -s.toFloat(&ok);\n    } else {\n      _radius = s.toFloat(&ok);\n    }\n    if (!ok) {\n      return false;\n    }\n  }\n\n  _position = _defaultPosition;\n  return true;\n}\n\nvoid PointParameter::enableNotifications(bool on)\n{\n  _notificationEnabled = on;\n}\n\nvoid PointParameter::onSpinBoxChanged()\n{\n  _position = QPointF(_spinBoxX->value(), _spinBoxY->value());\n  if (_notificationEnabled) {\n    notifyIfRelevant();\n  }\n}\n\nvoid PointParameter::setRemoved(bool on)\n{\n  _removed = on;\n  if (_spinBoxX) {\n    _spinBoxX->setDisabled(on);\n    _spinBoxY->setDisabled(on);\n    _labelX->setDisabled(on);\n    _labelY->setDisabled(on);\n    if (_removeButton) {\n      _removeButton->setIcon(on ? Settings::AddIcon : Settings::RemoveIcon);\n    }\n  }\n}\n\nvoid PointParameter::resetDefaultColorIndex()\n{\n  _defaultColorNextIndex = 0;\n  _randomSeed = 12345;\n}\n\nvoid PointParameter::onRemoveButtonToggled(bool on)\n{\n  setRemoved(on);\n  notifyIfRelevant();\n}\n\nint PointParameter::randomChannel()\n{\n  int value = (_randomSeed / 65536) % 256;\n  _randomSeed = _randomSeed * 1103515245 + 12345;\n  return value;\n}\n\nvoid PointParameter::connectSpinboxes()\n{\n  if (_connected || !_spinBoxX) {\n    return;\n  }\n  connect(_spinBoxX, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &PointParameter::onSpinBoxChanged);\n  connect(_spinBoxY, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &PointParameter::onSpinBoxChanged);\n  if (_removable && _removeButton) {\n    connect(_removeButton, &QToolButton::toggled, this, &PointParameter::onRemoveButtonToggled);\n  }\n  _connected = true;\n}\n\nvoid PointParameter::disconnectSpinboxes()\n{\n  if (!_connected || !_spinBoxX) {\n    return;\n  }\n  _spinBoxX->disconnect(this);\n  _spinBoxY->disconnect(this);\n  if (_removable && _removeButton) {\n    _removeButton->disconnect(this);\n  }\n  _connected = false;\n}\n\nvoid PointParameter::pickColorFromDefaultColormap()\n{\n  switch (_defaultColorNextIndex) {\n  case 0:\n    _color.setRgb(255, 255, 255, 255);\n    break;\n  case 1:\n    _color = Qt::red;\n    break;\n  case 2:\n    _color = Qt::green;\n    break;\n  case 3:\n    _color.setRgb(64, 64, 255, 255);\n    break;\n  case 4:\n    _color = Qt::cyan;\n    break;\n  case 5:\n    _color = Qt::magenta;\n    break;\n  case 6:\n    _color = Qt::yellow;\n    break;\n  default:\n    _color.setRgb(randomChannel(), randomChannel(), randomChannel());\n  }\n  ++_defaultColorNextIndex;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/PointParameter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file PointParameter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_POINTPARAMETER_H\n#define GMIC_QT_POINTPARAMETER_H\n\n#include <QColor>\n#include <QColorDialog>\n#include <QDoubleSpinBox>\n#include <QPixmap>\n#include <QPointF>\n#include <QString>\n#include <QToolButton>\n#include \"AbstractParameter.h\"\nclass QSpinBox;\nclass QSlider;\nclass QLabel;\nclass QPushButton;\n\nnamespace GmicQt\n{\n\nclass PointParameter : public AbstractParameter {\n  Q_OBJECT\npublic:\n  PointParameter(QObject * parent);\n  ~PointParameter() override;\n  int size() const override;\n  bool addTo(QWidget *, int row) override;\n  void addToKeypointList(KeypointList &) const override;\n  void extractPositionFromKeypointList(KeypointList &) override;\n  QString value() const override;\n  QString defaultValue() const override;\n  void setValue(const QString & value) override;\n  void reset() override;\n  void randomize() override;\n  bool initFromText(const QString & filterName, const char * text, int & textLength) override;\n  void setRemoved(bool on);\n\n  static void resetDefaultColorIndex();\n\n  void setVisibilityState(AbstractParameter::VisibilityState state) override;\n\npublic slots:\n  void enableNotifications(bool);\n\nprivate slots:\n  void onSpinBoxChanged();\n  void onRemoveButtonToggled(bool);\n\nprivate:\n  static int randomChannel();\n  void connectSpinboxes();\n  void disconnectSpinboxes();\n  void pickColorFromDefaultColormap();\n  void updateView();\n  QString _name;\n  QPointF _defaultPosition;\n  bool _defaultRemovedStatus;\n  QPointF _position;\n  QColor _color;\n  bool _removable;\n  bool _burst;\n  float _radius;\n  bool _keepOpacityWhenSelected;\n\n  QLabel * _label;\n  QLabel * _colorLabel;\n  QLabel * _labelX;\n  QLabel * _labelY;\n  QDoubleSpinBox * _spinBoxX;\n  QDoubleSpinBox * _spinBoxY;\n  QToolButton * _removeButton;\n  bool _connected;\n  bool _removed;\n  QWidget * _rowCell;\n  bool _notificationEnabled;\n  static int _defaultColorNextIndex;\n  static unsigned long _randomSeed;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_POINTPARAMETER_H\n"
  },
  {
    "path": "src/FilterParameters/SeparatorParameter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file SeparatorParameter.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/SeparatorParameter.h\"\n#include <QFrame>\n#include <QGridLayout>\n#include <QSizePolicy>\n#include \"Common.h\"\n#include \"Settings.h\"\n\nnamespace GmicQt\n{\n\nSeparatorParameter::SeparatorParameter(QObject * parent) : AbstractParameter(parent), _frame(nullptr) {}\n\nSeparatorParameter::~SeparatorParameter()\n{\n  delete _frame;\n}\n\nint SeparatorParameter::size() const\n{\n  return 0;\n}\n\nbool SeparatorParameter::addTo(QWidget * widget, int row)\n{\n  _grid = dynamic_cast<QGridLayout *>(widget->layout());\n  Q_ASSERT_X(_grid, __PRETTY_FUNCTION__, \"No grid layout in widget\");\n  _row = row;\n  delete _frame;\n  _frame = new QFrame(widget);\n  QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);\n  sizePolicy.setHorizontalStretch(0);\n  sizePolicy.setVerticalStretch(0);\n  sizePolicy.setHeightForWidth(_frame->sizePolicy().hasHeightForWidth());\n  _frame->setSizePolicy(sizePolicy);\n  _frame->setFrameShape(QFrame::HLine);\n  _frame->setFrameShadow(QFrame::Sunken);\n  if (Settings::darkThemeEnabled()) {\n    _frame->setStyleSheet(\"QFrame{ border-top: 0px none #a0a0a0; border-bottom: 2px solid rgb(160,160,160);}\");\n  }\n  _grid->addWidget(_frame, row, 0, 1, 3);\n  return true;\n}\n\nQString SeparatorParameter::value() const\n{\n  return QString();\n}\n\nQString SeparatorParameter::defaultValue() const\n{\n  return QString();\n}\n\nvoid SeparatorParameter::setValue(const QString &) {}\n\nvoid SeparatorParameter::reset() {}\n\nbool SeparatorParameter::initFromText(const QString & /* filterName */, const char * text, int & textLength)\n{\n  QStringList list = parseText(\"separator\", text, textLength);\n  unused(list);\n  return true;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/SeparatorParameter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file SeparatorParameter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_SEPARATORPARAMETER_H\n#define GMIC_QT_SEPARATORPARAMETER_H\n\n#include \"AbstractParameter.h\"\nclass QFrame;\n\nnamespace GmicQt\n{\n\nclass SeparatorParameter : public AbstractParameter {\n  Q_OBJECT\npublic:\n  SeparatorParameter(QObject * parent);\n  ~SeparatorParameter() override;\n  int size() const override;\n  bool addTo(QWidget *, int row) override;\n  QString value() const override;\n  QString defaultValue() const override;\n  void setValue(const QString & value) override;\n  void reset() override;\n  bool initFromText(const QString & filterName, const char * text, int & textLength) override;\n\nprivate:\n  QFrame * _frame;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_SEPARATORPARAMETER_H\n"
  },
  {
    "path": "src/FilterParameters/TextParameter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file TextParameter.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterParameters/TextParameter.h\"\n#include <QAction>\n#include <QDebug>\n#include <QGridLayout>\n#include <QIcon>\n#include <QLabel>\n#include <QLineEdit>\n#include <QRandomGenerator>\n#include <QRegularExpression>\n#include <QTextEdit>\n#include <QWidget>\n#include \"Common.h\"\n#include \"FilterParameters/MultilineTextParameterWidget.h\"\n#include \"FilterTextTranslator.h\"\n#include \"HtmlTranslator.h\"\n#include \"IconLoader.h\"\n#include \"Misc.h\"\n\nnamespace GmicQt\n{\n\nTextParameter::TextParameter(QObject * parent) : AbstractParameter(parent), _label(nullptr), _lineEdit(nullptr), _textEdit(nullptr), _multiline(false), _connected(false)\n{\n  _updateAction = nullptr;\n}\n\nTextParameter::~TextParameter()\n{\n  delete _lineEdit;\n  delete _textEdit;\n  delete _label;\n}\n\nint TextParameter::size() const\n{\n  return 1;\n}\n\nbool TextParameter::addTo(QWidget * widget, int row)\n{\n  _grid = dynamic_cast<QGridLayout *>(widget->layout());\n  Q_ASSERT_X(_grid, __PRETTY_FUNCTION__, \"No grid layout in widget\");\n  _row = row;\n  delete _label;\n  delete _lineEdit;\n  delete _textEdit;\n  if (_multiline) {\n    _label = nullptr;\n    _lineEdit = nullptr;\n    _textEdit = new MultilineTextParameterWidget(_name, _value, widget);\n    _grid->addWidget(_textEdit, row, 0, 1, 3);\n  } else {\n    _grid->addWidget(_label = new QLabel(_name, widget), row, 0, 1, 1);\n    setTextSelectable(_label);\n    _lineEdit = new QLineEdit(_value, widget);\n    _textEdit = nullptr;\n    _grid->addWidget(_lineEdit, row, 1, 1, 2);\n#if QT_VERSION_GTE(5, 2, 0)\n    _updateAction = _lineEdit->addAction(IconLoader::load(\"view-refresh\"), QLineEdit::TrailingPosition);\n#endif\n  }\n  connectEditor();\n  return true;\n}\n\nQString TextParameter::value() const\n{\n  return _multiline ? _textEdit->text() : _lineEdit->text();\n}\n\nQString TextParameter::defaultValue() const\n{\n  return _default;\n}\n\nvoid TextParameter::setValue(const QString & value)\n{\n  _value = value;\n  if (_textEdit) {\n    disconnectEditor();\n    _textEdit->setText(_value);\n    connectEditor();\n  } else if (_lineEdit) {\n    disconnectEditor();\n    _lineEdit->setText(_value);\n    connectEditor();\n  }\n}\n\nvoid TextParameter::reset()\n{\n  if (_textEdit) {\n    _textEdit->setText(_default);\n  } else if (_lineEdit) {\n    _lineEdit->setText(_default);\n  }\n  _value = _default;\n}\n\nvoid TextParameter::randomize()\n{\n  if (acceptRandom()) {\n    static QString charset = QString::fromUtf8(\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890      \");\n    disconnectEditor();\n    QRandomGenerator * rng = QRandomGenerator::global();\n    int count = rng->bounded(5, 31);\n    int size = charset.size();\n    QString text;\n    while (count--) {\n      text.append(charset[rng->bounded(size)]);\n    }\n    if (_textEdit) {\n      _textEdit->setText(text);\n    } else if (_lineEdit) {\n      _lineEdit->setText(text);\n    }\n    connectEditor();\n  }\n}\n\nbool TextParameter::initFromText(const QString & filterName, const char * text, int & textLength)\n{\n  QStringList list = parseText(\"text\", text, textLength);\n  if (list.isEmpty()) {\n    return false;\n  }\n  _name = HtmlTranslator::html2txt(FilterTextTranslator::translate(list[0], filterName));\n  QString value = list[1];\n  _multiline = false;\n  QRegularExpression re(\"^\\\\s*(0|1)\\\\s*,\");\n  auto match = re.match(value);\n  if (match.hasMatch()) {\n    _multiline = (match.captured(1).toInt() == 1);\n    value.replace(re, \"\");\n  }\n  _value = _default = unescaped(unquoted(value));\n  return true;\n}\n\nbool TextParameter::isQuoted() const\n{\n  return true;\n}\n\nvoid TextParameter::onValueChanged()\n{\n  notifyIfRelevant();\n}\n\nvoid TextParameter::connectEditor()\n{\n  if (_connected) {\n    return;\n  }\n  if (_textEdit) {\n    connect(_textEdit, &MultilineTextParameterWidget::valueChanged, this, &TextParameter::onValueChanged);\n  } else if (_lineEdit) {\n    connect(_lineEdit, &QLineEdit::editingFinished, this, &TextParameter::onValueChanged);\n#if QT_VERSION_GTE(5, 2, 0)\n    connect(_updateAction, &QAction::triggered, this, &TextParameter::onValueChanged);\n#endif\n  }\n  _connected = true;\n}\n\nvoid TextParameter::disconnectEditor()\n{\n  if (!_connected) {\n    return;\n  }\n  if (_textEdit) {\n    _textEdit->disconnect(this);\n  } else if (_lineEdit) {\n    _lineEdit->disconnect(this);\n#if QT_VERSION_GTE(5, 2, 0)\n    _updateAction->disconnect(this);\n#endif\n  }\n  _connected = false;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterParameters/TextParameter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file TextParameter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_TEXTPARAMETER_H\n#define GMIC_QT_TEXTPARAMETER_H\n\n#include <QString>\n#include \"AbstractParameter.h\"\nclass QLineEdit;\nclass QLabel;\nclass QTextEdit;\nclass QAction;\n\nnamespace GmicQt\n{\nclass MultilineTextParameterWidget;\n\nclass TextParameter : public AbstractParameter {\n  Q_OBJECT\npublic:\n  TextParameter(QObject * parent);\n  ~TextParameter() override;\n  int size() const override;\n  bool addTo(QWidget *, int row) override;\n  QString value() const override;\n  QString defaultValue() const override;\n  void setValue(const QString & value) override;\n  void reset() override;\n  void randomize() override;\n  bool initFromText(const QString & filterName, const char * text, int & textLength) override;\n  bool isQuoted() const override;\n\nprivate slots:\n  void onValueChanged();\n\nprivate:\n  void connectEditor();\n  void disconnectEditor();\n  QString _name;\n  QString _default;\n  QString _value;\n  QLabel * _label;\n  QLineEdit * _lineEdit;\n  MultilineTextParameterWidget * _textEdit;\n  QAction * _updateAction;\n  bool _multiline;\n  bool _connected;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_TEXTPARAMETER_H\n"
  },
  {
    "path": "src/FilterSelector/FavesModel.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FavesModel.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterSelector/FavesModel.h\"\n#include <QCryptographicHash>\n#include <QDebug>\n#include <QRegularExpression>\n#include <QString>\n#include <limits>\n#include \"Globals.h\"\n#include \"HtmlTranslator.h\"\n#include \"Misc.h\"\n\nnamespace GmicQt\n{\n\nconst size_t FavesModel::NoIndex = std::numeric_limits<size_t>::max();\n\nFavesModel::FavesModel() = default;\n\nFavesModel::~FavesModel() = default;\n\nvoid FavesModel::clear()\n{\n  _faves.clear();\n}\n\nvoid FavesModel::addFave(const FavesModel::Fave & fave)\n{\n  _faves[fave.hash()] = fave;\n}\n\nvoid FavesModel::removeFave(const QString & hash)\n{\n  _faves.remove(hash);\n}\n\nbool FavesModel::contains(const QString & hash) const\n{\n  return _faves.find(hash) != _faves.cend();\n}\n\nvoid FavesModel::flush() const\n{\n  qDebug() << \"Faves\\n=======\";\n  for (const Fave & fave : _faves) {\n    qDebug() << fave.name();\n  }\n}\n\nsize_t FavesModel::faveCount() const\n{\n  return _faves.size();\n}\n\nFavesModel::const_iterator FavesModel::findFaveFromHash(const QString & hash) const\n{\n  return {_faves.find(hash)};\n}\n\nFavesModel::const_iterator FavesModel::findFaveFromPlainText(const QString & name) const\n{\n  for (auto it = cbegin(); it != cend(); ++it) {\n    if (it->plainText() == name) {\n      return it;\n    }\n  }\n  return cend();\n}\n\nconst FavesModel::Fave & FavesModel::getFaveFromHash(const QString & hash) const\n{\n  Q_ASSERT_X(_faves.contains(hash), \"getFaveFromHash\", \"Hash not found\");\n  return _faves.find(hash).value();\n}\n\nQString FavesModel::uniqueName(const QString & name, const QString & faveHashToIgnore)\n{\n  QString basename(name);\n  basename.remove(QRegularExpression(R\"~( *\\(\\d+\\)$)~\"));\n  int iMax = -1;\n  bool nameIsUnique = true;\n  QMap<QString, Fave>::const_iterator it = _faves.cbegin();\n  while (it != _faves.cend()) {\n    if (it.key() != faveHashToIgnore) {\n      QString faveName = it.value().name();\n      if (faveName == name) {\n        nameIsUnique = false;\n      }\n      QRegularExpression re(R\"~( *\\((\\d+)\\)$)~\");\n      QRegularExpressionMatch match = re.match(faveName);\n      if (match.hasMatch()) {\n        faveName.remove(re);\n        if (faveName == basename) {\n          iMax = std::max(iMax, match.captured(1).toInt());\n        }\n      } else if ((basename == faveName) && (iMax == -1)) {\n        iMax = 1;\n      }\n    }\n    ++it;\n  }\n  if (nameIsUnique || (iMax == -1)) {\n    return name;\n  }\n  return QString(\"%1 (%2)\").arg(basename).arg(iMax + 1);\n}\n\nFavesModel::Fave & FavesModel::Fave::setName(const QString & name)\n{\n  _name = name;\n  _plainText = HtmlTranslator::html2txt(_name, true);\n  return *this;\n}\n\nFavesModel::Fave & FavesModel::Fave::setOriginalName(const QString & name)\n{\n  _originalName = name;\n  return *this;\n}\n\nFavesModel::Fave & FavesModel::Fave::setCommand(const QString & command)\n{\n  _command = command;\n  return *this;\n}\n\nFavesModel::Fave & FavesModel::Fave::setPreviewCommand(const QString & command)\n{\n  _previewCommand = command;\n  return *this;\n}\n\nFavesModel::Fave & FavesModel::Fave::setOriginalHash(const QString & hash)\n{\n  _originalHash = hash;\n  return *this;\n}\n\nFavesModel::Fave & FavesModel::Fave::setDefaultValues(const QList<QString> & defaultValues)\n{\n  _defaultValues = defaultValues;\n  return *this;\n}\n\nFavesModel::Fave & FavesModel::Fave::setDefaultVisibilities(const QList<int> & defaultVisibilities)\n{\n  _defaultVisibilityStates = defaultVisibilities;\n  return *this;\n}\n\nFavesModel::Fave & FavesModel::Fave::build()\n{\n  QCryptographicHash hash(QCryptographicHash::Md5);\n  hash.addData(\"FAVE/\");\n  hash.addData(_name.toLocal8Bit());\n  hash.addData(_command.toLocal8Bit());\n  hash.addData(_previewCommand.toLocal8Bit());\n  _hash = hash.result().toHex();\n\n  QCryptographicHash originalHash(QCryptographicHash::Md5);\n  originalHash.addData(_originalName.toLocal8Bit());\n  originalHash.addData(_command.toLocal8Bit());\n  originalHash.addData(_previewCommand.toLocal8Bit());\n  _originalHash = originalHash.result().toHex();\n  // TODO : use raw hashes in memory, hex when stored as text\n  return *this;\n}\n\nconst QString & FavesModel::Fave::name() const\n{\n  return _name;\n}\n\nconst QString & FavesModel::Fave::plainText() const\n{\n  return _plainText;\n}\n\nconst QString FavesModel::Fave::absolutePath() const\n{\n  static const QList<QString> FavePath = {HtmlTranslator::removeTags(FAVE_FOLDER_TEXT)};\n  return filterFullPathWithoutTags(FavePath, _name);\n}\n\nconst QString & FavesModel::Fave::originalName() const\n{\n  return _originalName;\n}\n\nconst QString & FavesModel::Fave::originalHash() const\n{\n  return _originalHash;\n}\n\nconst QString & FavesModel::Fave::command() const\n{\n  return _command;\n}\n\nconst QString & FavesModel::Fave::previewCommand() const\n{\n  return _previewCommand;\n}\n\nconst QString & FavesModel::Fave::hash() const\n{\n  return _hash;\n}\n\nconst QList<QString> & FavesModel::Fave::defaultValues() const\n{\n  return _defaultValues;\n}\n\nconst QList<int> & FavesModel::Fave::defaultVisibilityStates() const\n{\n  return _defaultVisibilityStates;\n}\n\nQString FavesModel::Fave::toString() const\n{\n  return QString(\"(name='%1', command='%2', previewCommand='%3',\"\n                 \" hash='%4', originalHash='%5')\")\n      .arg(_name)\n      .arg(_command)\n      .arg(_previewCommand)\n      .arg(_hash)\n      .arg(_originalHash);\n}\n\nbool FavesModel::Fave::matchKeywords(const QList<QString> & keywords) const\n{\n  static const QString faveFolderPlainText = HtmlTranslator::html2txt(QObject::tr(FAVE_FOLDER_TEXT));\n  QList<QString>::const_iterator itKeyword = keywords.cbegin();\n  while (itKeyword != keywords.cend()) {\n    const QString & keyword = *itKeyword;\n    if (!faveFolderPlainText.contains(keyword, Qt::CaseInsensitive) && !_plainText.contains(keyword, Qt::CaseInsensitive)) {\n      return false;\n    }\n    ++itKeyword;\n  }\n  return true;\n}\n\nFavesModel::const_iterator::const_iterator(const QMap<QString, FavesModel::Fave>::const_iterator & iterator)\n{\n  _mapIterator = iterator;\n}\n\nconst FavesModel::Fave & FavesModel::const_iterator::operator*() const\n{\n  return _mapIterator.value();\n}\n\nFavesModel::const_iterator & FavesModel::const_iterator::operator++()\n{\n  ++_mapIterator;\n  return *this;\n}\n\nFavesModel::const_iterator FavesModel::const_iterator::operator++(int)\n{\n  FavesModel::const_iterator current = *this;\n  ++(*this);\n  return current;\n}\n\nconst FavesModel::Fave * FavesModel::const_iterator::operator->() const\n{\n  return &(_mapIterator.value());\n}\n\nbool FavesModel::const_iterator::operator!=(const FavesModel::const_iterator & other) const\n{\n  return _mapIterator != other._mapIterator;\n}\n\nbool FavesModel::const_iterator::operator==(const FavesModel::const_iterator & other) const\n{\n  return _mapIterator == other._mapIterator;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterSelector/FavesModel.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FavesModel.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FAVESMODEL_H\n#define GMIC_QT_FAVESMODEL_H\n#include <QList>\n#include <QMap>\n#include <QString>\n#include <cstddef>\n\nnamespace GmicQt\n{\nclass FavesModel {\npublic:\n  class Fave {\n  public:\n    Fave & setName(const QString & name);\n    Fave & setOriginalName(const QString & name);\n    Fave & setCommand(const QString & command);\n    Fave & setPreviewCommand(const QString & command);\n    Fave & setOriginalHash(const QString & hash);\n    Fave & setDefaultValues(const QList<QString> & defaultValues);\n    Fave & setDefaultVisibilities(const QList<int> & defaultVisibilityStates);\n    Fave & build();\n\n    const QString & name() const;\n    const QString & plainText() const;\n    const QString absolutePath() const;\n    const QString & originalName() const;\n    const QString & originalHash() const;\n    const QString & command() const;\n    const QString & previewCommand() const;\n    const QString & hash() const;\n    const QList<QString> & defaultValues() const;\n    const QList<int> & defaultVisibilityStates() const;\n    QString toString() const;\n    bool matchKeywords(const QList<QString> & keywords) const;\n\n  private:\n    QString _name;\n    QString _plainText;\n    QString _originalName;\n    QString _command;\n    QString _previewCommand;\n    QString _hash;\n    QString _originalHash;\n    QList<QString> _defaultValues;\n    QList<int> _defaultVisibilityStates;\n  };\n\n  class const_iterator {\n  public:\n    const_iterator(const QMap<QString, Fave>::const_iterator & iterator);\n    const Fave & operator*() const;\n    const_iterator & operator++();\n    const_iterator operator++(int);\n    const Fave * operator->() const;\n    bool operator!=(const FavesModel::const_iterator & other) const;\n    bool operator==(const FavesModel::const_iterator & other) const;\n\n  private:\n    QMap<QString, Fave>::const_iterator _mapIterator;\n  };\n\n  FavesModel();\n  ~FavesModel();\n  inline const_iterator begin() const;\n  inline const_iterator end() const;\n  inline const_iterator cbegin() const;\n  inline const_iterator cend() const;\n  void clear();\n  void addFave(const Fave &);\n  void removeFave(const QString & hash);\n  bool contains(const QString & hash) const;\n  void flush() const;\n  size_t faveCount() const;\n  const_iterator findFaveFromHash(const QString &) const;\n  const_iterator findFaveFromPlainText(const QString &) const;\n  const Fave & getFaveFromHash(const QString & hash) const;\n  QString uniqueName(const QString & name, const QString & faveHashToIgnore);\n  static const size_t NoIndex;\n\nprivate:\n  QMap<QString, Fave> _faves;\n};\n\n/*\n * Inline methods\n */\n\nFavesModel::const_iterator FavesModel::cbegin() const\n{\n  return FavesModel::const_iterator(_faves.cbegin());\n}\n\nFavesModel::const_iterator FavesModel::cend() const\n{\n  return FavesModel::const_iterator(_faves.end());\n}\nFavesModel::const_iterator FavesModel::begin() const\n{\n  return FavesModel::const_iterator(_faves.cbegin());\n}\n\nFavesModel::const_iterator FavesModel::end() const\n{\n  return FavesModel::const_iterator(_faves.end());\n}\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FAVESMODEL_H\n"
  },
  {
    "path": "src/FilterSelector/FavesModelReader.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FavesModelReader.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterSelector/FavesModelReader.h\"\n#include <QBuffer>\n#include <QDebug>\n#include <QFileInfo>\n#include <QJsonArray>\n#include <QJsonDocument>\n#include <QJsonValue>\n#include <QList>\n#include <QLocale>\n#include <QRegularExpression>\n#include <QSettings>\n#include <QString>\n#include \"FilterSelector/FavesModel.h\"\n#include \"Logger.h\"\n#include \"Utils.h\"\n#include \"gmic.h\"\n\nnamespace GmicQt\n{\n\nFavesModelReader::FavesModelReader(FavesModel & model) : _model(model) {}\n\nbool FavesModelReader::gmicGTKFaveFileAvailable()\n{\n  QFileInfo info(gmicGTKFavesFilename());\n  return info.isReadable();\n}\n\nFavesModel::Fave FavesModelReader::jsonObjectToFave(const QJsonObject & object)\n{\n  FavesModel::Fave fave;\n  fave.setName(object.value(\"Name\").toString(\"\"));\n  fave.setOriginalName(object.value(\"originalName\").toString(\"\"));\n  fave.setCommand(object.value(\"command\").toString(\"\"));\n  fave.setPreviewCommand(object.value(\"preview\").toString());\n  QStringList defaultParameters;\n  QJsonArray array = object.value(\"defaultParameters\").toArray();\n  for (const QJsonValueRef value : array) {\n    defaultParameters.push_back(value.toString());\n  }\n  fave.setDefaultValues(defaultParameters);\n  QList<int> defaultVisibilities;\n  array = object.value(\"defaultVisibilities\").toArray();\n  for (QJsonValueRef value : array) {\n    defaultVisibilities.push_back(value.toInt());\n  }\n  fave.setDefaultVisibilities(defaultVisibilities);\n  fave.build();\n  return fave;\n}\n\nvoid FavesModelReader::importFavesFromGmicGTK()\n{\n  QString filename = gmicGTKFavesFilename();\n  QFile file(filename);\n  if (file.open(QIODevice::ReadOnly)) {\n    QString line;\n    int lineNumber = 1;\n    while (!(line = file.readLine()).isEmpty()) {\n      line = line.trimmed();\n      line.remove(QRegularExpression(\"^.\")).remove(QRegularExpression(\".$\"));\n      QList<QString> list = line.split(\"}{\");\n      for (QString & str : list) {\n        str.replace(QChar(gmic_lbrace), QString(\"{\"));\n        str.replace(QChar(gmic_rbrace), QString(\"}\"));\n      }\n      if (list.size() >= 4) {\n        FavesModel::Fave fave;\n        fave.setName(list.front());\n        fave.setOriginalName(list[1]);\n        fave.setCommand(list[2].replace(QRegularExpression(\"^gimp_\"), \"fx_\"));\n        fave.setPreviewCommand(list[3].replace(QRegularExpression(\"^gimp_\"), \"fx_\"));\n        list.pop_front();\n        list.pop_front();\n        list.pop_front();\n        list.pop_front();\n        fave.setDefaultValues(list);\n        fave.build();\n        _model.addFave(fave);\n      } else {\n        Logger::error(QString(\"Import failed for fave at %1:%2\").arg(file.fileName()).arg(lineNumber));\n      }\n      ++lineNumber;\n    }\n  } else {\n    Logger::error(\"Import failed. Cannot open \" + filename);\n  }\n}\n\nvoid FavesModelReader::loadFaves()\n{\n  // Read JSON faves if file exists\n  QString jsonFilename(QString(\"%1%2\").arg(gmicConfigPath(false)).arg(\"gmic_qt_faves.json\"));\n  QFile jsonFile(jsonFilename);\n  if (jsonFile.exists()) {\n    if (jsonFile.open(QIODevice::ReadOnly)) {\n      QJsonDocument document;\n      QJsonParseError parseError;\n      document = QJsonDocument::fromJson(jsonFile.readAll(), &parseError);\n      if (parseError.error == QJsonParseError::NoError) {\n        QJsonArray array = document.array();\n        for (const QJsonValueRef & value : array) {\n          _model.addFave(jsonObjectToFave(value.toObject()));\n        }\n      } else {\n        Logger::error(\"Cannot load faves (parse error) : \" + jsonFilename);\n        Logger::error(parseError.errorString());\n      }\n    } else {\n      Logger::log(\"Faves loading failed: Cannot open \" + jsonFilename);\n    }\n    return;\n  }\n\n  // Read old 2.0.0 prerelease file format if no JSON was found\n  QString filename(QString(\"%1%2\").arg(gmicConfigPath(false)).arg(\"gmic_qt_faves\"));\n  QFile file(filename);\n  if (file.exists()) {\n    if (file.open(QIODevice::ReadOnly)) {\n      QString line;\n      int lineNumber = 1;\n      while (!(line = file.readLine()).isEmpty()) {\n        line = line.trimmed();\n        if (line.startsWith(\"{\")) {\n          line.remove(QRegularExpression(\"^.\")).remove(QRegularExpression(\".$\"));\n          QList<QString> list = line.split(\"}{\");\n          for (QString & str : list) {\n            str.replace(QChar(gmic_lbrace), QString(\"{\"));\n            str.replace(QChar(gmic_rbrace), QString(\"}\"));\n            // (29 == gmic_newline) until gmic version 2.7.1\n            str.replace(QChar(29), QString(\"\\n\"));\n          }\n          if (list.size() >= 4) {\n            FavesModel::Fave fave;\n            fave.setName(list.front());\n            fave.setOriginalName(list[1]);\n            fave.setCommand(list[2]);\n            fave.setPreviewCommand(list[3]);\n            list.pop_front();\n            list.pop_front();\n            list.pop_front();\n            list.pop_front();\n            fave.setDefaultValues(list);\n            fave.build();\n            _model.addFave(fave);\n          } else {\n            Logger::log(QString(\"Loading failed for fave at %1:%2\").arg(file.fileName()).arg(lineNumber));\n          }\n        }\n        ++lineNumber;\n      }\n    } else {\n      Logger::error(\"Fave loading failed. Cannot open \" + filename);\n    }\n  }\n}\n\nQString FavesModelReader::gmicGTKFavesFilename()\n{\n  return QString(\"%1%2\").arg(gmicConfigPath(false)).arg(\"gimp_faves\");\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterSelector/FavesModelReader.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FavesModelReader.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FAVESMODELREADER_H\n#define GMIC_QT_FAVESMODELREADER_H\n#include <QJsonObject>\n#include \"FilterSelector/FavesModel.h\"\n\nclass QByteArray;\n\nnamespace GmicQt\n{\n\nclass FavesModelReader {\npublic:\n  FavesModelReader(FavesModel & model);\n  void importFavesFromGmicGTK();\n  void loadFaves();\n  static QString gmicGTKFavesFilename();\n  static bool gmicGTKFaveFileAvailable();\n\nprivate:\n  static FavesModel::Fave jsonObjectToFave(const QJsonObject & object);\n  FavesModel & _model;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FAVESMODELREADER_H\n"
  },
  {
    "path": "src/FilterSelector/FavesModelWriter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FavesModelWriter.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FavesModelWriter.h\"\n#include <QFile>\n#include <QFileInfo>\n#include <QJsonArray>\n#include <QJsonDocument>\n#include <QJsonObject>\n#include <QString>\n#include <QTextStream>\n#include <iostream>\n#include \"Logger.h\"\n#include \"Utils.h\"\n\nnamespace GmicQt\n{\n\nFavesModelWriter::FavesModelWriter(const FavesModel & model) : _model(model) {}\n\nFavesModelWriter::~FavesModelWriter() = default;\n\nvoid FavesModelWriter::writeFaves()\n{\n  QString jsonFilename(QString(\"%1%2\").arg(gmicConfigPath(true)).arg(\"gmic_qt_faves.json\"));\n  // Create JSON array\n  QJsonArray array;\n  FavesModel::const_iterator itFave = _model.cbegin();\n  while (itFave != _model.cend()) {\n    QJsonObject object = faveToJsonObject(*itFave);\n    array.append(object);\n    ++itFave;\n  }\n  if (array.isEmpty() && (QFileInfo(jsonFilename).size() > 10)) { // Backup\n    QFile::copy(jsonFilename, jsonFilename + \".bak\");\n  }\n  // Save JSON array\n  if (safelyWrite(QJsonDocument(array).toJson(), jsonFilename)) {\n    // Cleanup 2.0.0 pre-release files\n    QString obsoleteFilename(QString(\"%1%2\").arg(gmicConfigPath(false)).arg(\"gmic_qt_faves\"));\n    QFile::remove(obsoleteFilename);\n    QFile::remove(obsoleteFilename + \".bak\");\n  } else {\n    Logger::error(\"Cannot write fave file \" + jsonFilename);\n  }\n}\n\nQJsonObject FavesModelWriter::faveToJsonObject(const FavesModel::Fave & fave)\n{\n  QJsonObject object;\n  object[\"Name\"] = fave.name();\n  object[\"originalName\"] = fave.originalName();\n  object[\"command\"] = fave.command();\n  object[\"preview\"] = fave.previewCommand();\n  QJsonArray params;\n  for (const QString & str : fave.defaultValues()) {\n    params.push_back(str);\n  }\n  object[\"defaultParameters\"] = params;\n  QJsonArray visibilities;\n  for (const int & visibility : fave.defaultVisibilityStates()) {\n    visibilities.push_back(visibility);\n  }\n  object[\"defaultVisibilities\"] = visibilities;\n  return object;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterSelector/FavesModelWriter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FavesModelWriter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FAVESMODELWRITER_H\n#define GMIC_QT_FAVESMODELWRITER_H\n#include <QJsonObject>\n#include \"FilterSelector/FavesModel.h\"\nclass QByteArray;\n\nnamespace GmicQt\n{\n\nclass FavesModelWriter {\npublic:\n  FavesModelWriter(const FavesModel & model);\n  ~FavesModelWriter();\n  void writeFaves();\n\nprivate:\n  static QJsonObject faveToJsonObject(const FavesModel::Fave & fave);\n  const FavesModel & _model;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FAVESMODELWRITER_H\n"
  },
  {
    "path": "src/FilterSelector/FilterTagMap.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterTagMap.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterTagMap.h\"\n#include <QBuffer>\n#include <QByteArray>\n#include <QDataStream>\n#include <QDebug>\n#include <QFile>\n#include <QJsonArray>\n#include <QJsonDocument>\n#include <QJsonObject>\n#include <QJsonValue>\n#include <QList>\n#include \"Common.h\"\n#include \"Globals.h\"\n#include \"GmicQt.h\"\n#include \"Logger.h\"\n#include \"Utils.h\"\n\nnamespace GmicQt\n{\n\nQMap<QString, TagColorSet> FiltersTagMap::_hashesToColors;\n\nTagColorSet FiltersTagMap::filterTags(const QString & hash)\n{\n  auto it = _hashesToColors.find(hash);\n  if (it == _hashesToColors.end()) {\n    return TagColorSet::Empty;\n  }\n  return it.value();\n}\n\nvoid FiltersTagMap::setFilterTags(const QString & hash, const TagColorSet & colors)\n{\n  if (colors.isEmpty()) {\n    _hashesToColors.remove(hash);\n    return;\n  }\n  _hashesToColors[hash] = colors;\n}\n\nvoid FiltersTagMap::load()\n{\n  _hashesToColors.clear();\n  QString jsonFilename = QString(\"%1%2\").arg(gmicConfigPath(false), FILTERS_TAGS_FILENAME);\n  QFile jsonFile(jsonFilename);\n  if (!jsonFile.exists()) {\n    return;\n  }\n  if (jsonFile.open(QFile::ReadOnly)) {\n    QJsonDocument jsonDoc;\n    QByteArray allFile = jsonFile.readAll();\n    if (allFile.startsWith(\"{\")) { // Was created in debug mode\n      jsonDoc = QJsonDocument::fromJson(allFile);\n    } else {\n      jsonDoc = QJsonDocument::fromJson(qUncompress(allFile));\n    }\n    if (jsonDoc.isNull()) {\n      Logger::warning(QString(\"Cannot parse \") + jsonFilename);\n      Logger::warning(\"Filter tags are lost!\");\n    } else {\n      if (!jsonDoc.isObject()) {\n        Logger::error(QString(\"JSON file format is not correct (\") + jsonFilename + \")\");\n      } else {\n        QJsonObject documentObject = jsonDoc.object();\n        for (QJsonObject::const_iterator it = documentObject.constBegin(); //\n             it != documentObject.constEnd();                              //\n             ++it) {\n          _hashesToColors[it.key()] = TagColorSet(it.value().toInt());\n        }\n      }\n    }\n  } else {\n    Logger::error(\"Cannot open \" + jsonFilename);\n    Logger::error(\"Tags cannot be restored\");\n  }\n}\n\nvoid FiltersTagMap::save()\n{\n  QJsonObject documentObject;\n  auto it = _hashesToColors.begin();\n  while (it != _hashesToColors.end()) {\n    documentObject.insert(it.key(), QJsonValue(int(it.value().mask())));\n    ++it;\n  }\n  QJsonDocument jsonDoc(documentObject);\n  QString jsonFilename = QString(\"%1%2\").arg(gmicConfigPath(true), FILTERS_TAGS_FILENAME);\n  if (QFile::exists(jsonFilename)) {\n    QString bakFilename = QString(\"%1%2\").arg(gmicConfigPath(false), FILTERS_TAGS_FILENAME \".bak\");\n    QFile::remove(bakFilename);\n    QFile::copy(jsonFilename, bakFilename);\n  }\n\n#ifdef _GMIC_QT_DEBUG_\n  const bool ok = safelyWrite(jsonDoc.toJson(), jsonFilename);\n#else\n  const bool ok = safelyWrite(qCompress(jsonDoc.toJson(QJsonDocument::Compact)), jsonFilename);\n#endif\n  if (!ok) {\n    Logger::error(\"Cannot write \" + jsonFilename);\n    Logger::error(\"Parameters cannot be saved\");\n  }\n}\n\nTagColorSet FiltersTagMap::usedColors(int * count)\n{\n  TagColorSet all;\n  auto it = _hashesToColors.cbegin();\n  if (count) {\n    memset(count, 0, sizeof(int) * int(TagColor::Count));\n    while (it != _hashesToColors.cend()) {\n      TagColorSet colors = it.value();\n      for (TagColor color : colors) {\n        ++count[int(color)];\n      }\n      all |= colors;\n      ++it;\n    }\n  } else {\n    while (it != _hashesToColors.cend()) {\n      all |= it.value();\n      ++it;\n    }\n  }\n  return all;\n}\n\nvoid FiltersTagMap::removeAllTags(TagColor color)\n{\n  QList<QString> toBeRemoved;\n  auto it = _hashesToColors.begin();\n  while (it != _hashesToColors.end()) {\n    it.value() -= color;\n    if (it.value().isEmpty()) {\n      toBeRemoved.push_back(it.key());\n    }\n    ++it;\n  }\n  for (const QString & hash : toBeRemoved) {\n    _hashesToColors.remove(hash);\n  }\n}\n\nvoid FiltersTagMap::clearFilterTag(const QString & hash, TagColor color)\n{\n  auto it = _hashesToColors.find(hash);\n  if (it == _hashesToColors.end()) {\n    return;\n  }\n  it.value() -= color;\n  if (it.value().isEmpty()) {\n    _hashesToColors.erase(it);\n  }\n}\n\nvoid FiltersTagMap::setFilterTag(const QString & hash, TagColor color)\n{\n  _hashesToColors[hash] += color;\n}\n\nvoid FiltersTagMap::toggleFilterTag(const QString & hash, TagColor color)\n{\n  _hashesToColors[hash].toggle(color);\n}\n\nvoid FiltersTagMap::remove(const QString & hash)\n{\n  _hashesToColors.remove(hash);\n}\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterSelector/FilterTagMap.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterTagMap.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FILTERTAGMAP_H\n#define GMIC_QT_FILTERTAGMAP_H\n\n#include <QMap>\n#include <QVector>\n#include <string>\n#include \"Tags.h\"\n\nnamespace GmicQt\n{\nclass FiltersTagMap {\npublic:\n  static TagColorSet filterTags(const QString & hash);\n  static void setFilterTags(const QString & hash, const TagColorSet &);\n  static void load();\n  static void save();\n  static TagColorSet usedColors(int * count = nullptr);\n  static void removeAllTags(TagColor color);\n  static void clearFilterTag(const QString & hash, TagColor color);\n  static void setFilterTag(const QString & hash, TagColor color);\n  static void toggleFilterTag(const QString & hash, TagColor color);\n\nprotected:\nprivate:\n  static QMap<QString, TagColorSet> _hashesToColors; // TODO : Clean non existings hashes\n  static void remove(const QString & hash);\n  FiltersTagMap() = delete;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FILTERTAGMAP_H\n"
  },
  {
    "path": "src/FilterSelector/FiltersModel.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FiltersModel.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterSelector/FiltersModel.h\"\n#include <QCryptographicHash>\n#include <QDebug>\n#include <limits>\n#include \"Common.h\"\n#include \"FilterTextTranslator.h\"\n#include \"Globals.h\"\n#include \"GmicQt.h\"\n#include \"HtmlTranslator.h\"\n#include \"Misc.h\"\n\nnamespace GmicQt\n{\n\nconst size_t FiltersModel::NoIndex = std::numeric_limits<size_t>::max();\n\nvoid FiltersModel::clear()\n{\n  _hash2filter.clear();\n}\n\nvoid FiltersModel::addFilter(const FiltersModel::Filter & filter)\n{\n  _hash2filter[filter.hash()] = filter;\n}\n\nvoid FiltersModel::flush()\n{\n  qDebug() << \"Filters\\n=======\";\n  for (const Filter & filter : (*this)) {\n    qDebug() << \"[\" << filter.path() << \"]\" << filter.name();\n  }\n}\n\nsize_t FiltersModel::filterCount() const\n{\n  return _hash2filter.size();\n}\n\nsize_t FiltersModel::notTestingFilterCount() const\n{\n  const_iterator it = cbegin();\n  size_t result = 0;\n  while (it != cend()) {\n    const QList<QString> & path = it->path();\n    if (!path.startsWith(\"<b>Testing</b>\")) {\n      ++result;\n    }\n    ++it;\n  }\n  return result;\n}\n\nconst FiltersModel::Filter & FiltersModel::getFilterFromHash(const QString & hash) const\n{\n  Q_ASSERT_X(_hash2filter.contains(hash), \"FiltersModel::getFilterFromHash()\", \"Hash not found\");\n  return _hash2filter.find(hash).value();\n}\n\nFiltersModel::const_iterator FiltersModel::findFilterFromAbsolutePath(const QString & path) const\n{\n  QString plainName = filterFullPathBasename(path);\n  for (auto it = cbegin(); it != cend(); ++it) {\n    // First test on plainText as plain(fullPath) is not immediate to compute\n    if ((it->plainText() == plainName) && (HtmlTranslator::html2txt(it->absolutePathNoTags()) == path)) {\n      return it;\n    }\n  }\n  return cend();\n}\n\nbool FiltersModel::contains(const QString & hash) const\n{\n  return (_hash2filter.find(hash) != _hash2filter.cend());\n}\n\nvoid FiltersModel::removePath(const QList<QString> & path)\n{\n  QList<QString> matchingHashes;\n  for (const Filter & filter : (*this)) {\n    if (filter.matchFullPath(path)) {\n      matchingHashes.push_back(filter.hash());\n    }\n  }\n  for (const QString & hash : matchingHashes) {\n    _hash2filter.remove(hash);\n  }\n}\n\nFiltersModel::Filter::Filter()\n{\n  _previewFactor = PreviewFactorAny;\n  _isAccurateIfZoomed = false;\n  _previewFromFullImage = false;\n  _isWarning = false;\n}\n\nFiltersModel::Filter & FiltersModel::Filter::setName(const QString & name)\n{\n  _name = name;\n  _plainText = HtmlTranslator::html2txt(name, true);\n  _translatedPlainText = HtmlTranslator::html2txt(FilterTextTranslator::translate(name));\n  return *this;\n}\n\nFiltersModel::Filter & FiltersModel::Filter::setCommand(const QString & command)\n{\n  _command = command;\n  return *this;\n}\n\nFiltersModel::Filter & FiltersModel::Filter::setPreviewCommand(const QString & previewCommand)\n{\n  _previewCommand = previewCommand;\n  return *this;\n}\n\nFiltersModel::Filter & FiltersModel::Filter::setParameters(const QString & parameters)\n{\n  _parameters = parameters;\n  return *this;\n}\n\nFiltersModel::Filter & FiltersModel::Filter::setPreviewFactor(float factor)\n{\n  _previewFactor = factor;\n  return *this;\n}\n\nFiltersModel::Filter & FiltersModel::Filter::setAccurateIfZoomed(bool accurate)\n{\n  _isAccurateIfZoomed = accurate;\n  return *this;\n}\n\nFiltersModel::Filter & FiltersModel::Filter::setPreviewFromFullImage(bool on)\n{\n  _previewFromFullImage = on;\n  return *this;\n}\n\nFiltersModel::Filter & FiltersModel::Filter::setPath(const QList<QString> & path)\n{\n  _path = path;\n  _plainPath.clear();\n  _translatedPlainPath.clear();\n  for (const QString & str : _path) {\n    _plainPath.push_back(HtmlTranslator::html2txt(str, true));\n    _translatedPlainPath.push_back(HtmlTranslator::html2txt(FilterTextTranslator::translate(str), true));\n  }\n  return *this;\n}\n\nFiltersModel::Filter & FiltersModel::Filter::setWarningFlag(bool flag)\n{\n  _isWarning = flag;\n  return *this;\n}\n\nFiltersModel::Filter & FiltersModel::Filter::setDefaultInputMode(InputMode mode)\n{\n  _defaultInputMode = mode;\n  return *this;\n}\n\nFiltersModel::Filter & FiltersModel::Filter::build()\n{\n  //\n  // Caution : This code is duplicated in FavesModel::Fave::build() to\n  //           compute the originalHash of a Fave.\n  //\n  QCryptographicHash hash(QCryptographicHash::Md5);\n  hash.addData(_name.toLocal8Bit());\n  hash.addData(_command.toLocal8Bit());\n  hash.addData(_previewCommand.toLocal8Bit());\n  _hash = hash.result().toHex();\n  return *this;\n}\n\nconst QString & FiltersModel::Filter::name() const\n{\n  return _name;\n}\n\nconst QString & FiltersModel::Filter::plainText() const\n{\n  return _plainText;\n}\n\nconst QString & FiltersModel::Filter::translatedPlainText() const\n{\n  return _translatedPlainText;\n}\n\nconst QList<QString> & FiltersModel::Filter::path() const\n{\n  return _path;\n}\n\nconst QString FiltersModel::Filter::absolutePathNoTags() const\n{\n  return filterFullPathWithoutTags(_path, _name);\n}\n\nconst QString & FiltersModel::Filter::hash() const\n{\n  return _hash;\n}\n\nQString FiltersModel::Filter::hash236() const\n{\n  QCryptographicHash hash(QCryptographicHash::Md5);\n  QString lowerName(_name);\n  downcaseCommandTitle(lowerName);\n  hash.addData(lowerName.toLocal8Bit());\n  hash.addData(_command.toLocal8Bit());\n  hash.addData(_previewCommand.toLocal8Bit());\n  return hash.result().toHex();\n}\n\nconst QString & FiltersModel::Filter::command() const\n{\n  return _command;\n}\n\nconst QString & FiltersModel::Filter::previewCommand() const\n{\n  return _previewCommand;\n}\n\nconst QString & FiltersModel::Filter::parameters() const\n{\n  return _parameters;\n}\n\nfloat FiltersModel::Filter::previewFactor() const\n{\n  return _previewFactor;\n}\n\nbool FiltersModel::Filter::isAccurateIfZoomed() const\n{\n  return _isAccurateIfZoomed;\n}\n\nbool FiltersModel::Filter::previewFromFullImage() const\n{\n  return _previewFromFullImage;\n}\n\nbool FiltersModel::Filter::isWarning() const\n{\n  return _isWarning;\n}\n\nInputMode FiltersModel::Filter::defaultInputMode() const\n{\n  return _defaultInputMode;\n}\n\nbool FiltersModel::Filter::matchKeywords(const QList<QString> & keywords) const\n{\n  QList<QString>::const_iterator itKeyword = keywords.cbegin();\n  while (itKeyword != keywords.cend()) {\n    // Check that this keyword is present, either in filter name or in its path\n    const QString & keyword = *itKeyword;\n    bool keywordInPath = false;\n    QList<QString>::const_iterator itPath = _translatedPlainPath.cbegin();\n    while (itPath != _translatedPlainPath.cend() && !keywordInPath) {\n      keywordInPath = itPath->contains(keyword, Qt::CaseInsensitive);\n      ++itPath;\n    }\n    if (!keywordInPath && !_translatedPlainText.contains(keyword, Qt::CaseInsensitive)) {\n      return false;\n    }\n    ++itKeyword;\n  }\n  return true;\n}\n\nbool FiltersModel::Filter::matchFullPath(const QList<QString> & pathToMatch) const\n{\n  QList<QString>::const_iterator it = _plainPath.cbegin();\n  QList<QString>::const_iterator itToMatch = pathToMatch.cbegin();\n  while ((it != _plainPath.cend()) && (itToMatch != pathToMatch.cend()) && (*it == *itToMatch)) {\n    ++it;\n    ++itToMatch;\n  }\n  return (itToMatch == pathToMatch.cend()) || ((it == _plainPath.cend()) && (itToMatch != pathToMatch.cend()) && (_plainText == *itToMatch));\n}\n\nFiltersModel::const_iterator::const_iterator(const QMap<QString, Filter>::const_iterator & iterator)\n{\n  _mapIterator = iterator;\n}\n\nconst FiltersModel::Filter & FiltersModel::const_iterator::operator*() const\n{\n  return _mapIterator.value();\n}\n\nFiltersModel::const_iterator & FiltersModel::const_iterator::operator++()\n{\n  ++_mapIterator;\n  return *this;\n}\n\nFiltersModel::const_iterator FiltersModel::const_iterator::operator++(int)\n{\n  FiltersModel::const_iterator current(*this);\n  ++(*this);\n  return current;\n}\n\nconst FiltersModel::Filter * FiltersModel::const_iterator::operator->() const\n{\n  return &(_mapIterator.value());\n}\n\nbool FiltersModel::const_iterator::operator!=(const FiltersModel::const_iterator & other) const\n{\n  return _mapIterator != other._mapIterator;\n}\n\nbool FiltersModel::const_iterator::operator==(const FiltersModel::const_iterator & other) const\n{\n  return _mapIterator == other._mapIterator;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterSelector/FiltersModel.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FiltersModel.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FILTERSMODEL_H\n#define GMIC_QT_FILTERSMODEL_H\n#include <QList>\n#include <QMap>\n#include <QString>\n#include <cstddef>\n#include <vector>\n#include \"GmicQt.h\"\n\nclass FiltersModelBinaryReader;\nclass FiltersModelBinaryWriter;\n\nnamespace GmicQt\n{\nclass FiltersModel {\n  friend class FiltersModelBinaryReader;\n  friend class FiltersModelBinaryWriter;\n\npublic:\n  class Filter {\n    friend class FiltersModelBinaryReader;\n    friend class FiltersModelBinaryWriter;\n\n  public:\n    Filter();\n    Filter & setName(const QString & name);\n    Filter & setCommand(const QString & command);\n    Filter & setPreviewCommand(const QString & previewCommand);\n    Filter & setParameters(const QString & parameters);\n    Filter & setPreviewFactor(float factor);\n    Filter & setAccurateIfZoomed(bool accurate);\n    Filter & setPreviewFromFullImage(bool on);\n    Filter & setPath(const QList<QString> & path);\n    Filter & setWarningFlag(bool flag);\n    Filter & setDefaultInputMode(InputMode);\n    Filter & build();\n\n    const QString & name() const;\n    const QString & plainText() const;\n    const QString & translatedPlainText() const;\n    const QList<QString> & path() const;\n    const QString absolutePathNoTags() const;\n    const QString & hash() const;\n    QString hash236() const;\n    const QString & command() const;\n    const QString & previewCommand() const;\n    const QString & parameters() const;\n    float previewFactor() const;\n    bool isAccurateIfZoomed() const;\n    bool previewFromFullImage() const;\n    bool isWarning() const;\n    InputMode defaultInputMode() const;\n\n    bool matchKeywords(const QList<QString> & keywords) const;\n    bool matchFullPath(const QList<QString> & path) const;\n\n  private:\n    QString _name;\n    QString _plainText;\n    QString _translatedPlainText;\n    QList<QString> _path;\n    QList<QString> _plainPath;\n    QList<QString> _translatedPlainPath;\n    QString _command;\n    QString _previewCommand;\n    InputMode _defaultInputMode;\n    QString _parameters;\n    float _previewFactor;\n    bool _isAccurateIfZoomed;\n    bool _previewFromFullImage;\n    QString _hash;\n    bool _isWarning;\n  };\n\n  FiltersModel() = default;\n  ~FiltersModel() = default;\n\npublic:\n  void clear();\n  void addFilter(const Filter & filter);\n  void flush();\n  size_t filterCount() const;\n  size_t notTestingFilterCount() const;\n  const Filter & getFilterFromHash(const QString & hash) const;\n  bool contains(const QString & hash) const;\n  static const size_t NoIndex;\n\n  void removePath(const QList<QString> & path);\n\n  class const_iterator {\n  public:\n    const_iterator(const QMap<QString, Filter>::const_iterator & iterator);\n    const Filter & operator*() const;\n    const_iterator & operator++();\n    const_iterator operator++(int);\n    const Filter * operator->() const;\n    bool operator!=(const FiltersModel::const_iterator & other) const;\n    bool operator==(const FiltersModel::const_iterator & other) const;\n\n  private:\n    QMap<QString, Filter>::const_iterator _mapIterator;\n  };\n\n  const_iterator begin() const { return _hash2filter.cbegin(); }\n  const_iterator end() const { return _hash2filter.cend(); }\n  const_iterator cbegin() const { return _hash2filter.cbegin(); }\n  const_iterator cend() const { return _hash2filter.cend(); }\n  const_iterator findFilterFromAbsolutePath(const QString & path) const;\n\nprivate:\n  QMap<QString, Filter> _hash2filter;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FILTERSMODEL_H\n"
  },
  {
    "path": "src/FilterSelector/FiltersModelBinaryReader.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FiltersModelBinaryReader.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterSelector/FiltersModelBinaryReader.h\"\n#include <QByteArray>\n#include <QDataStream>\n#include <QDebug>\n#include <QFile>\n#include \"Common.h\"\n#include \"FilterSelector/FiltersModel.h\"\n#include \"Logger.h\"\n\nnamespace GmicQt\n{\n\nFiltersModelBinaryReader::FiltersModelBinaryReader(FiltersModel & model) : _model(model) {}\n\nbool FiltersModelBinaryReader::read(const QString & filename)\n{\n  TIMING;\n  QFile file(filename);\n  if (!file.open(QFile::ReadOnly)) {\n    return false;\n  }\n  QDataStream stream(&file);\n  QByteArray hash;\n\n  if (!readHeader(stream, hash)) {\n    return false;\n  }\n\n#define READ_STRING(STR)                                                                                                                                                                               \\\n  stream >> array;                                                                                                                                                                                     \\\n  STR = QString::fromUtf8(array)\n\n  FiltersModel::Filter filter;\n  QByteArray array;\n  quint8 inputMode;\n  while (!stream.atEnd()) {\n    READ_STRING(filter._name);\n    READ_STRING(filter._plainText);\n    READ_STRING(filter._translatedPlainText);\n    readStringList(stream, filter._path);\n    readStringList(stream, filter._plainPath);\n    readStringList(stream, filter._translatedPlainPath);\n    READ_STRING(filter._command);\n    READ_STRING(filter._previewCommand);\n    stream >> inputMode;\n    filter._defaultInputMode = InputMode(inputMode);\n    READ_STRING(filter._parameters);\n    stream >> filter._previewFactor;\n    stream >> filter._isAccurateIfZoomed;\n    stream >> filter._previewFromFullImage;\n    READ_STRING(filter._hash);\n    stream >> filter._isWarning;\n    _model._hash2filter[filter._hash] = filter;\n  }\n  TIMING;\n  return true;\n}\n\nQByteArray FiltersModelBinaryReader::readHash(const QString & filename)\n{\n  QByteArray hash;\n  QFile file(filename);\n  if (file.open(QFile::ReadOnly)) {\n    QDataStream stream(&file);\n    readHeader(stream, hash);\n  }\n  return hash;\n}\n\nbool FiltersModelBinaryReader::readHeader(QDataStream & stream, QByteArray & hash)\n{\n  quint32 magic;\n  stream >> magic;\n  if (magic != (quint32)0x03300330) {\n    Logger::warning(\"Filters binary cache: wrong magic number\");\n    return false;\n  }\n  quint32 version;\n  stream >> version;\n  if (version <= (quint32)100) {\n    stream.setVersion(QDataStream::Qt_5_0);\n  } else {\n    Logger::warning(\"Filters binary cache: unsupported version\");\n    return false;\n  }\n\n  stream >> hash;\n  if (hash.isEmpty()) {\n    Logger::warning(\"Filters binary cache: cannot read hash\");\n    return false;\n  }\n  return true;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterSelector/FiltersModelBinaryReader.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FiltersModelBinaryReader.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n#include <QByteArray>\n#include <QDataStream>\n#include <QList>\n#include <QString>\n#ifndef GMIC_QT_FILTERSMODELBINARYREADER_H\n#define GMIC_QT_FILTERSMODELBINARYREADER_H\n\nnamespace GmicQt\n{\n\nclass FiltersModel;\n\nclass FiltersModelBinaryReader {\npublic:\n  FiltersModelBinaryReader(FiltersModel & model);\n  bool read(const QString & filename);\n  static QByteArray readHash(const QString & filename);\n\nprivate:\n  FiltersModel & _model;\n  static bool readHeader(QDataStream & stream, QByteArray & hash);\n  inline static void readStringList(QDataStream & stream, QList<QString> & list);\n};\n\nvoid FiltersModelBinaryReader::readStringList(QDataStream & stream, QList<QString> & list)\n{\n  list.clear();\n  quint8 size;\n  stream >> size;\n  QByteArray array;\n  while (size--) {\n    stream >> array;\n    list.push_back(QString::fromUtf8(array));\n  }\n}\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FILTERSMODELBINARYREADER_H\n"
  },
  {
    "path": "src/FilterSelector/FiltersModelBinaryWriter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FiltersModelBinaryReader.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterSelector/FiltersModelBinaryWriter.h\"\n#include \"Common.h\"\n#include \"FilterSelector/FiltersModel.h\"\n#include \"GmicQt.h\"\n\n#include <QDataStream>\n#include <QFile>\n#include <QMap>\n#include <QString>\n\nnamespace GmicQt\n{\n\nFiltersModelBinaryWriter::FiltersModelBinaryWriter(const FiltersModel & model) : _model(model) {}\n\nbool FiltersModelBinaryWriter::write(const QString & filename, const QByteArray & hash)\n{\n  TIMING;\n  QFile file(filename);\n  if (!file.open(QFile::WriteOnly)) {\n    return false;\n  }\n  QDataStream stream(&file);\n\n  stream << (quint32)0x03300330;\n  stream << (quint32)100;\n  stream.setVersion(QDataStream::Qt_5_0);\n\n  stream << hash;\n\n  QMap<QString, FiltersModel::Filter>::const_iterator it = _model._hash2filter.cbegin();\n  const QMap<QString, FiltersModel::Filter>::const_iterator end = _model._hash2filter.cend();\n\n  while (it != end) {\n    stream << it.value()._name.toUtf8();\n    stream << it.value()._plainText.toUtf8();\n    stream << it.value()._translatedPlainText.toUtf8();\n    writeStringList(it.value()._path, stream);\n    writeStringList(it.value()._plainPath, stream);\n    writeStringList(it.value()._translatedPlainPath, stream);\n    stream << it.value()._command.toUtf8();\n    stream << it.value()._previewCommand.toUtf8();\n    stream << quint8(it.value()._defaultInputMode);\n    stream << it.value()._parameters.toUtf8();\n    stream << it.value()._previewFactor;\n    stream << it.value()._isAccurateIfZoomed;\n    stream << it.value()._previewFromFullImage;\n    stream << it.value()._hash.toUtf8();\n    stream << it.value()._isWarning;\n    ++it;\n  }\n\n  TIMING;\n  return true;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterSelector/FiltersModelBinaryWriter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FiltersModelBinaryWriter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FILTERSMODELBINARYWRITER_H\n#define GMIC_QT_FILTERSMODELBINARYWRITER_H\n\nclass QByteArray;\n#include <QDataStream>\n#include <QList>\n#include <QString>\n\nnamespace GmicQt\n{\n\nclass FiltersModel;\n\nclass FiltersModelBinaryWriter {\npublic:\n  FiltersModelBinaryWriter(const FiltersModel & model);\n  bool write(const QString & filename, const QByteArray & hash);\n\nprivate:\n  static inline void writeStringList(const QList<QString> & list, QDataStream & stream);\n  const FiltersModel & _model;\n};\n\nvoid FiltersModelBinaryWriter::writeStringList(const QList<QString> & list, QDataStream & stream)\n{\n  stream << (quint8)list.size();\n  for (const QString & str : list) {\n    stream << str.toUtf8();\n  }\n}\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FILTERSMODELBINARYWRITER_H\n"
  },
  {
    "path": "src/FilterSelector/FiltersModelReader.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FiltersModelReader.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterSelector/FiltersModelReader.h\"\n#include <QBuffer>\n#include <QDebug>\n#include <QFileInfo>\n#include <QList>\n#include <QLocale>\n#include <QRegularExpression>\n#include <QSettings>\n#include <QString>\n#include <cmath>\n#include <cstring>\n#include \"Common.h\"\n#include \"FilterSelector/FiltersModel.h\"\n#include \"Globals.h\"\n#include \"GmicQt.h\"\n#include \"LanguageSettings.h\"\n#include \"Logger.h\"\n\nnamespace\n{\nconst QChar CHAR_OPENING_PARENTHESIS('(');\nconst QChar CHAR_CLOSING_PARENTHESIS(')');\nconst QChar CHAR_SPACE(' ');\nconst QChar CHAR_TAB('\\t');\nconst QChar CHAR_COLON(':');\nconst QChar CHAR_UNDERSCORE('_');\nconst QChar CHAR_CROSS_SIGN('#');\nconst QChar CHAR_NEWLINE('\\n');\nconst QString AT_GUI(\"#@gui\");\n\n#ifdef __GNUC__\ninline bool isSpace(const QChar & c) __attribute__((always_inline));\ninline bool isSpace(const char c) __attribute__((always_inline));\ninline void traverseSpaces(const QChar *& pc, const QChar * limit) __attribute__((always_inline));\ninline void traverseSpaces(const char *& pc, const char * limit) __attribute__((always_inline));\ninline bool traverseOneChar(const QChar *& pc, const QChar * limit, const QChar & c) __attribute__((always_inline));\ninline bool traverseOneChar(const char *& pc, const char * limit, const char c) __attribute__((always_inline));\ninline bool traverseOneCharDifferentFrom(const QChar *& pc, const QChar * limit, const QChar & c) __attribute__((always_inline));\ninline void traverseCharSequenceDifferentFrom(const QChar *& pc, const QChar * limit, const QChar & c) __attribute__((always_inline));\ninline bool equals(const QChar *& pc, const QChar * limit, const QString & text) __attribute__((always_inline));\n#endif\n\ninline bool isSpace(const QChar & c)\n{\n  return (c == CHAR_SPACE) || (c == CHAR_TAB);\n}\n\ninline bool isSpace(const char c)\n{\n  return (c == ' ') || (c == '\\t');\n}\n\ninline void traverseSpaces(const QChar *& pc, const QChar * limit)\n{\n  while ((pc != limit) && isSpace(*pc)) {\n    ++pc;\n  }\n}\n\ninline void traverseSpaces(const char *& pc, const char * limit)\n{\n  while ((pc != limit) && isSpace(*pc)) {\n    ++pc;\n  }\n}\n\ninline bool traverseOneChar(const QChar *& pc, const QChar * limit, const QChar & c)\n{\n  if ((pc != limit) && (*pc == c)) {\n    ++pc;\n    return true;\n  }\n  return false;\n}\n\ninline bool traverseOneChar(const char *& pc, const char * limit, const char c)\n{\n  if ((pc != limit) && (*pc == c)) {\n    ++pc;\n    return true;\n  }\n  return false;\n}\n\ninline bool traverseOneCharDifferentFrom(const QChar *& pc, const QChar * limit, const QChar & c)\n{\n  if ((pc != limit) && (*pc != c)) {\n    ++pc;\n    return true;\n  }\n  return false;\n}\n\ninline void traverseCharSequenceDifferentFrom(const QChar *& pc, const QChar * limit, const QChar & c)\n{\n  while ((pc != limit) && (*pc != c)) {\n    ++pc;\n  }\n}\n\ninline bool traverseOneAlphabeticLetter(const QChar *& pc, const QChar * limit)\n{\n  if (pc != limit) {\n    char c = pc->toLatin1();\n    if (((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z'))) {\n      ++pc;\n      return true;\n    }\n  }\n  return false;\n}\n\ninline bool equals(const QChar *& pc, const QChar * limit, const QString & text)\n{\n  const QChar * textPc = text.constData();\n  const QChar * textLimit = textPc + text.size();\n  while ((pc != limit) && (textPc != textLimit) && (*pc == *textPc)) {\n    ++pc;\n    ++textPc;\n  }\n  return (textPc == textLimit);\n}\n\n// \"^\\\\s*#@gui\"\nbool containsGuiComment(const QString & text)\n{\n  const QChar * pc = text.constData();\n  const QChar * limit = pc + text.size();\n  traverseSpaces(pc, limit);\n  return equals(pc, limit, AT_GUI);\n}\n\n// \"^\\\\s*#@gui[ ][^:]+$\"\nbool isFolderNoLanguage(const QString & text)\n{\n  const QChar * pc = text.constData();\n  const QChar * limit = pc + text.size();\n  traverseSpaces(pc, limit);\n  if (!equals(pc, limit, QString(\"#@gui \"))) {\n    return false;\n  }\n  if (!traverseOneCharDifferentFrom(pc, limit, CHAR_COLON)) {\n    return false;\n  }\n  traverseCharSequenceDifferentFrom(pc, limit, CHAR_COLON);\n  return (pc == limit);\n}\n\n// QString(\"^\\\\s*#@gui_%1[ ][^:]+$\").arg(language);\nbool isFolderLanguage(const QString & text, const QString & language)\n{\n  const QChar * pc = text.constData();\n  const QChar * limit = pc + text.size();\n  traverseSpaces(pc, limit);\n  if (!equals(pc, limit, QString(\"#@gui_\"))) {\n    return false;\n  }\n  if (!equals(pc, limit, language)) {\n    return false;\n  }\n  if (!traverseOneChar(pc, limit, CHAR_SPACE)) {\n    return false;\n  }\n  if (!traverseOneCharDifferentFrom(pc, limit, CHAR_COLON)) {\n    return false;\n  }\n  traverseCharSequenceDifferentFrom(pc, limit, CHAR_COLON);\n  return (pc == limit);\n}\n\n// \"^\\\\s*#@gui[ ][^:]+[ ]*:.*\"\n// Replaced here by \"^\\\\s*#@gui[ ][^:]+:.*\"\nbool isFilterNoLanguage(const QString & text)\n{\n  const QChar * pc = text.constData();\n  const QChar * limit = pc + text.size();\n  traverseSpaces(pc, limit);\n  if (!equals(pc, limit, QString(\"#@gui \"))) {\n    return false;\n  }\n  if (!traverseOneCharDifferentFrom(pc, limit, CHAR_COLON)) {\n    return false;\n  }\n  traverseCharSequenceDifferentFrom(pc, limit, CHAR_COLON);\n  return traverseOneChar(pc, limit, CHAR_COLON);\n}\n\n// QString(\"^\\\\s*#@gui_%1[ ][^:]+[ ]*:.*\").arg(language);\n// Replaced here by \"^\\\\s*#@gui_%1[ ][^:]+:\".arg(language);\nbool isFilterLanguage(const QString & text, const QString & language)\n{\n  const QChar * pc = text.constData();\n  const QChar * limit = pc + text.size();\n  traverseSpaces(pc, limit);\n  if (!equals(pc, limit, QString(\"#@gui_\"))) {\n    return false;\n  }\n  if (!equals(pc, limit, language)) {\n    return false;\n  }\n  if (!traverseOneChar(pc, limit, CHAR_SPACE)) {\n    return false;\n  }\n  if (!traverseOneCharDifferentFrom(pc, limit, CHAR_COLON)) {\n    return false;\n  }\n  traverseCharSequenceDifferentFrom(pc, limit, CHAR_COLON);\n  return traverseOneChar(pc, limit, CHAR_COLON);\n}\n\n// \"\\\\s*:\\\\s*([xX.*+vViI-])\\\\s*$\"\nbool containsInputMode(const QString & text, QString & inputMode)\n{\n  const QChar * pc = text.constData();\n  const QChar * limit = pc + text.size();\n  traverseCharSequenceDifferentFrom(pc, limit, CHAR_COLON);\n  if (!traverseOneChar(pc, limit, CHAR_COLON)) {\n    return false;\n  }\n  traverseSpaces(pc, limit);\n  if (pc != limit) {\n    char c = pc->toLatin1();\n    if (strchr(\"xX.*+vViI-\", c)) {\n      inputMode = *pc;\n      return true;\n    }\n  }\n  return false;\n}\n\n// QString(\"^\\\\s*#@gui_%1[ ]+hide\\\\((.*)\\\\)\").arg(language)); // Capture 'path'\nbool containsHidePath(const QString & text, const QString & language, QString & path)\n{\n  const QChar * begin = text.constData();\n  const QChar * pc = begin;\n  const QChar * limit = pc + text.size();\n  traverseSpaces(pc, limit);\n  if (!equals(pc, limit, AT_GUI)) {\n    return false;\n  }\n  if (!traverseOneChar(pc, limit, CHAR_UNDERSCORE)) {\n    return false;\n  }\n  if (!equals(pc, limit, language)) {\n    return false;\n  }\n  if (!traverseOneChar(pc, limit, CHAR_SPACE)) {\n    return false;\n  }\n  traverseSpaces(pc, limit);\n  if (!equals(pc, limit, QString(\"hide(\"))) {\n    return false;\n  }\n  const QChar * captureBegin = pc;\n  traverseCharSequenceDifferentFrom(pc, limit, CHAR_CLOSING_PARENTHESIS);\n  if ((pc == limit) || (*pc != CHAR_CLOSING_PARENTHESIS)) {\n    return false;\n  }\n  const QChar * captureEnd = pc;\n  path = QString(captureBegin, captureEnd - captureBegin);\n  return true;\n}\n\n// \"^\\\\s*#\"\nbool containsLeadingSpaceAndCrossSign(const char * text, const char * limit)\n{\n  traverseSpaces(text, limit);\n  return traverseOneChar(text, limit, '#');\n}\n\n// Remove \"\\\\s*:.*$\"\nvoid removeColonAndText(QString & text)\n{\n  int i = text.indexOf(':');\n  while ((i > 0) && isSpace(text[i - 1])) {\n    --i;\n  }\n  text.remove(i, text.size() - i);\n}\n\n// Remove \"^\\\\s*#@gui[_a-zA-Z]{0,3}[ ]\"\nvoid removeAtGuiLangPrefix(QString & text)\n{\n  const QChar * begin = text.constData();\n  const QChar * pc = begin;\n  const QChar * limit = pc + text.size();\n  traverseSpaces(pc, limit);\n  if (!equals(pc, limit, AT_GUI)) {\n    return;\n  }\n  if (traverseOneChar(pc, limit, CHAR_UNDERSCORE)) {\n    traverseOneAlphabeticLetter(pc, limit);\n    traverseOneAlphabeticLetter(pc, limit);\n  }\n  if (!traverseOneChar(pc, limit, CHAR_SPACE)) {\n    return;\n  }\n  text.remove(0, pc - begin);\n}\n\n// \"^\\\\s*#@gui[_a-zA-Z]{0,3}[ ][^:]+:[ ]*\"\nvoid removeAtGuiTextAndColon(QString & text)\n{\n  const QChar * begin = text.constData();\n  const QChar * pc = begin;\n  const QChar * limit = pc + text.size();\n  traverseSpaces(pc, limit);\n  if (!equals(pc, limit, AT_GUI)) {\n    return;\n  }\n  if (traverseOneChar(pc, limit, CHAR_UNDERSCORE)) {\n    traverseOneAlphabeticLetter(pc, limit);\n    traverseOneAlphabeticLetter(pc, limit);\n  }\n  if (!traverseOneChar(pc, limit, CHAR_SPACE)) {\n    return;\n  }\n  if (!traverseOneCharDifferentFrom(pc, limit, CHAR_COLON)) {\n    return;\n  }\n  traverseCharSequenceDifferentFrom(pc, limit, CHAR_COLON);\n  if (!traverseOneChar(pc, limit, CHAR_COLON)) {\n    return;\n  }\n  traverseSpaces(pc, limit);\n  text.remove(0, pc - begin);\n}\n\n// \"^\\\\s*#@gui[_a-zA-Z]{0,3}[ ]*:[ ]*\"\nvoid removeAtGuiSpacesAndColon(QString & text)\n{\n  const QChar * begin = text.constData();\n  const QChar * pc = begin;\n  const QChar * limit = pc + text.size();\n  traverseSpaces(pc, limit);\n  if (!equals(pc, limit, AT_GUI)) {\n    return;\n  }\n  if (traverseOneChar(pc, limit, CHAR_UNDERSCORE)) {\n    traverseOneAlphabeticLetter(pc, limit);\n    traverseOneAlphabeticLetter(pc, limit);\n  }\n  traverseSpaces(pc, limit);\n  if (!traverseOneChar(pc, limit, CHAR_COLON)) {\n    return;\n  }\n  traverseSpaces(pc, limit);\n  text.remove(0, pc - begin);\n}\n\n// \"^\\\\s*\"\nvoid removeLeadingSpaces(QString & text)\n{\n  const QChar * begin = text.constData();\n  const QChar * pc = begin;\n  const QChar * limit = pc + text.size();\n  traverseSpaces(pc, limit);\n  if (pc != begin) {\n    text.remove(0, pc - begin);\n  }\n}\n\n// \" .*\"\nvoid removeSpaceAndText(QString & text)\n{\n  int index = text.indexOf(CHAR_SPACE);\n  if (index != -1) {\n    text.remove(index, text.size() - index);\n  }\n}\n\n// \"\\\\s*:\\\\s*([xX.*+vViI-])\\\\s*$\"  // Capture\nvoid removeInputMode(QString & text)\n{\n  int index = text.indexOf(CHAR_COLON);\n  if (index != -1) {\n    while ((index > 0) && (text[index - 1] == CHAR_SPACE)) {\n      --index;\n    }\n    text.remove(index, text.size() - index);\n  }\n}\n\n// Replace QRegExp(\" .*\") by \"[ ]?:\" to obtain #@gui[ ]?: or #@gui_fr[ ]?:\n// then check the regexp \"^\\s*#@gui[ ]?:\" or \"^\\s*#@gui_fr[ ]?:\"\n// Check \\s*PREFIX[ ]?:    (PREFIX is e.g. #@gui or #@gui_fr)\nbool isPrefixAndColon(const QString & text, const QString & prefix)\n{\n  const QChar * begin = text.constData();\n  const QChar * pc = begin;\n  const QChar * limit = pc + text.size();\n  traverseSpaces(pc, limit);\n  if (!equals(pc, limit, prefix)) {\n    return false;\n  }\n  traverseOneChar(pc, limit, CHAR_SPACE);\n  return traverseOneChar(pc, limit, CHAR_COLON);\n}\n\n} // namespace\n\nnamespace GmicQt\n{\n\nFiltersModelReader::FiltersModelReader(FiltersModel & model) : _model(model) {}\n\nvoid FiltersModelReader::parseFiltersDefinitions(const QByteArray & stdlibArray)\n{\n  TIMING;\n  const char * stdlib = stdlibArray.constData();\n  const char * stdLibLimit = stdlib + stdlibArray.size();\n  QList<QString> filterPath;\n\n  QString language = LanguageSettings::configuredTranslator();\n  if (language.isEmpty()) {\n    language = \"void\";\n  }\n\n  // Use _en locale if no localization for the language is found.\n  QByteArray localePrefix = QString(\"#@gui_%1\").arg(language).toLocal8Bit();\n  if (!textIsPrecededBySpacesInSomeLineOfArray(localePrefix, stdlibArray)) {\n    language = \"en\";\n  }\n\n  QString buffer = readBufferLine(stdlib, stdLibLimit);\n  QString line;\n  QVector<QString> hiddenPaths;\n\n  const QChar WarningPrefix('!');\n  do {\n    line = buffer.trimmed();\n    if (containsGuiComment(line)) {\n      QString path;\n      if (containsHidePath(line, language, path)) {\n        hiddenPaths.push_back(path);\n        buffer = readBufferLine(stdlib, stdLibLimit);\n      } else if (isFolderNoLanguage(line) || isFolderLanguage(line, language)) {\n        //\n        // A folder\n        //\n        QString folderName = line;\n        removeAtGuiLangPrefix(folderName);\n\n        while (folderName.startsWith(\"_\") && !filterPath.isEmpty()) {\n          folderName.remove(0, 1);\n          filterPath.pop_back();\n        }\n        while (folderName.startsWith(\"_\")) {\n          folderName.remove(0, 1);\n        }\n        if (!folderName.isEmpty()) {\n          filterPath.push_back(folderName);\n        }\n        buffer = readBufferLine(stdlib, stdLibLimit);\n      } else if (isFilterNoLanguage(line) || isFilterLanguage(line, language)) {\n        //\n        // A filter\n        //\n        QString filterName = line;\n        removeColonAndText(filterName);\n        removeAtGuiLangPrefix(filterName);\n        const bool warning = filterName.startsWith(WarningPrefix);\n        if (warning) {\n          filterName.remove(0, 1);\n        }\n\n        QString filterCommands = line;\n        removeAtGuiTextAndColon(filterCommands);\n\n        // Extract default input mode\n        InputMode defaultInputMode = InputMode::Unspecified;\n        QString inputMode;\n        if (containsInputMode(filterCommands, inputMode)) {\n          removeInputMode(filterCommands);\n          defaultInputMode = symbolToInputMode(inputMode);\n        }\n\n        QList<QString> commands = filterCommands.split(\",\");\n        QString filterCommand = commands[0].trimmed();\n        if (commands.isEmpty()) {\n          commands.push_back(\"_none_\");\n        }\n        if (commands.size() == 1) {\n          commands.push_back(commands.front());\n        }\n        QList<QString> preview = commands[1].trimmed().split(\"(\");\n        float previewFactor = PreviewFactorAny;\n        bool accurateIfZoomed = true;\n        bool previewFromFullImage = false;\n        if (preview.size() >= 2) {\n          if (preview[1].endsWith(\"+\")) {\n            accurateIfZoomed = true;\n            preview[1].chop(1);\n          } else if (preview[1].endsWith(\"*\")) {\n            accurateIfZoomed = true;\n            previewFromFullImage = true;\n            preview[1].chop(1);\n          } else {\n            accurateIfZoomed = false;\n          }\n          bool ok = false;\n          const int closingParenthesisIndex = preview[1].indexOf(QChar(')'));\n          if (closingParenthesisIndex != -1) {\n            preview[1].remove(closingParenthesisIndex, preview[1].size() - closingParenthesisIndex);\n          }\n          previewFactor = preview[1].toFloat(&ok);\n          if (!ok) {\n            Logger::error(QString(\"Cannot parse zoom factor for filter [%1]:\\n%2\").arg(filterName).arg(line));\n            previewFactor = PreviewFactorAny;\n          }\n          previewFactor = std::abs(previewFactor);\n        }\n\n        QString filterPreviewCommand = preview[0].trimmed();\n        QString start = line;\n        removeLeadingSpaces(start);\n        removeSpaceAndText(start); // #@gui or #@gui_fr\n\n        // Read parameters\n        QString parameters;\n        do {\n          buffer = readBufferLine(stdlib, stdLibLimit);\n          if (isPrefixAndColon(buffer, start)) { //\n            QString parameterLine = buffer;\n            removeAtGuiSpacesAndColon(parameterLine);\n            parameters += parameterLine;\n          }\n        } while ((stdlib != stdLibLimit)                //\n                 && !isFolderNoLanguage(buffer)         //\n                 && !isFolderLanguage(buffer, language) //\n                 && !isFilterNoLanguage(buffer)         //\n                 && !isFilterLanguage(buffer, language));\n        FiltersModel::Filter filter;\n        filter.setName(filterName);\n        filter.setCommand(filterCommand);\n        filter.setPreviewCommand(filterPreviewCommand);\n        filter.setDefaultInputMode(defaultInputMode);\n        filter.setPreviewFactor(previewFactor);\n        filter.setAccurateIfZoomed(accurateIfZoomed);\n        filter.setPreviewFromFullImage(previewFromFullImage);\n        filter.setParameters(parameters);\n        filter.setPath(filterPath);\n        filter.setWarningFlag(warning);\n        filter.build();\n        _model.addFilter(filter);\n      } else {\n        buffer = readBufferLine(stdlib, stdLibLimit);\n      }\n    } else {\n      buffer = readBufferLine(stdlib, stdLibLimit);\n    }\n  } while (!buffer.isEmpty());\n\n  // Remove hidden filters from the model\n  for (const QString & path : hiddenPaths) {\n    const size_t count = _model.filterCount();\n    QList<QString> pathList = path.split(\"/\", QT_SKIP_EMPTY_PARTS);\n    _model.removePath(pathList);\n    if (_model.filterCount() == count) {\n      Logger::warning(QString(\"While hiding filter, name or path not found: \\\"%1\\\"\").arg(path));\n    }\n  }\n  TIMING;\n}\n\nbool FiltersModelReader::textIsPrecededBySpacesInSomeLineOfArray(const QByteArray & text, const QByteArray & array)\n{\n  if (text.isEmpty()) {\n    return false;\n  }\n  int from = 0;\n  int position;\n  const char * data = array.constData();\n  while ((position = array.indexOf(text, from)) != -1) {\n    int index = position - 1;\n    while ((index >= 0) && (data[index] != '\\n') && (data[index] <= ' ')) {\n      --index;\n    }\n    if ((index < 0) || (data[index] == '\\n')) {\n      return true;\n    }\n    from = position + 1;\n  }\n  return false;\n}\n\nInputMode FiltersModelReader::symbolToInputMode(const QString & str)\n{\n  if (str.length() != 1) {\n    Logger::warning(QString(\"'%1' is not recognized as a default input mode (should be a single symbol/letter)\").arg(str));\n    return InputMode::Unspecified;\n  }\n  switch (str.toLocal8Bit()[0]) {\n  case 'x':\n  case 'X':\n    return InputMode::NoInput;\n  case '.':\n    return InputMode::Active;\n  case '*':\n    return InputMode::All;\n  case '-':\n    return InputMode::ActiveAndAbove;\n  case '+':\n    return InputMode::ActiveAndBelow;\n  case 'V':\n  case 'v':\n    return InputMode::AllVisible;\n  case 'I':\n  case 'i':\n    return InputMode::AllInvisible;\n  default:\n    Logger::warning(QString(\"'%1' is not recognized as a default input mode\").arg(str));\n    return InputMode::Unspecified;\n  }\n}\n\n// QString FiltersModelReader::readBufferLine(const char * & pc, const char * limit)\n\nQString FiltersModelReader::readBufferLine(const char *& ptr, const char * limit)\n{\n  if (ptr == limit) {\n    return QString();\n  }\n  QString line;\n  const char * eol = strchr(ptr, '\\n');\n  const char * start = ptr;\n  ptr = eol ? (eol + 1) : limit;\n  const int lineSize = int(ptr - start);\n  line = QString::fromUtf8(start, lineSize);\n\n  if (containsLeadingSpaceAndCrossSign(start, start + lineSize)) {\n    while (line.endsWith(\"\\\\\\n\")) {\n      line.chop(2);\n      if (!containsLeadingSpaceAndCrossSign(ptr, limit)) {\n        line.append(CHAR_NEWLINE);\n        break;\n      }\n      while (isSpace(*ptr)) { // Skip spaces\n        ++ptr;\n      }\n      ++ptr; // Skip '#'\n      eol = strchr(ptr, '\\n');\n      start = ptr;\n      ptr = eol ? (eol + 1) : limit;\n      line.append(QString::fromUtf8(start, int(ptr - start)));\n    }\n  }\n  return line;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterSelector/FiltersModelReader.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FiltersModelReader.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FILTERSMODELREADER_H\n#define GMIC_QT_FILTERSMODELREADER_H\n#include <QString>\n#include \"FilterSelector/FiltersModel.h\"\n\nclass QByteArray;\nclass QBuffer;\n\nnamespace GmicQt\n{\n\nclass FiltersModelReader {\npublic:\n  FiltersModelReader(FiltersModel & model);\n  void parseFiltersDefinitions(const QByteArray &stdlibArray);\n\nprivate:\n  FiltersModel & _model;\n  static QString readBufferLine(QBuffer &);\n  static QString readBufferLine(const char *& ptr, const char * limit);\n  static bool textIsPrecededBySpacesInSomeLineOfArray(const QByteArray & text, const QByteArray & array);\n  static InputMode symbolToInputMode(const QString & str);\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FILTERSMODELREADER_H\n"
  },
  {
    "path": "src/FilterSelector/FiltersPresenter.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FiltersPresenter.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterSelector/FiltersPresenter.h\"\n#include <QDebug>\n#include <QSettings>\n#include <QString>\n#include \"Common.h\"\n#include \"FilterGuiDynamismCache.h\"\n#include \"FilterSelector/FavesModelReader.h\"\n#include \"FilterSelector/FavesModelWriter.h\"\n#include \"FilterSelector/FiltersModelBinaryWriter.h\"\n#include \"FilterSelector/FiltersModelReader.h\"\n#include \"FilterTextTranslator.h\"\n#include \"FiltersModelBinaryReader.h\"\n#include \"FiltersVisibilityMap.h\"\n#include \"Globals.h\"\n#include \"GmicStdlib.h\"\n#include \"HtmlTranslator.h\"\n#include \"Logger.h\"\n#include \"ParametersCache.h\"\n#include \"PersistentMemory.h\"\n#include \"Utils.h\"\n#include \"Widgets/InOutPanel.h\"\n#include \"Widgets/SearchFieldWidget.h\"\n\nnamespace GmicQt\n{\n\nFiltersPresenter::FiltersPresenter(QObject * parent) : QObject(parent)\n{\n  _filtersView = nullptr;\n  _searchField = nullptr;\n  _visibleTagSelector = nullptr;\n}\n\nFiltersPresenter::~FiltersPresenter()\n{\n  saveFaves();\n}\n\nvoid FiltersPresenter::setFiltersView(FiltersView * filtersView)\n{\n  if (_filtersView) {\n    _filtersView->disconnect(this);\n  }\n  _filtersView = filtersView;\n  connect(_filtersView, &FiltersView::filterSelected, this, &FiltersPresenter::onFilterChanged);\n  connect(_filtersView, &FiltersView::faveRenamed, this, &FiltersPresenter::onFaveRenamed);\n  connect(_filtersView, &FiltersView::faveRemovalRequested, this, &FiltersPresenter::removeFave);\n  connect(_filtersView, &FiltersView::faveAdditionRequested, this, &FiltersPresenter::faveAdditionRequested);\n  connect(_filtersView, &FiltersView::tagToggled, this, &FiltersPresenter::onTagToggled);\n}\n\nvoid FiltersPresenter::setSearchField(SearchFieldWidget * searchField)\n{\n  _searchField = searchField;\n}\n\nvoid FiltersPresenter::rebuildFilterView()\n{\n  rebuildFilterViewWithSelection(QList<QString>());\n}\n\nvoid FiltersPresenter::rebuildFilterViewWithSelection(const QList<QString> & keywords)\n{\n  if (!_filtersView) {\n    return;\n  }\n  _filtersView->clear();\n  _filtersView->disableModel();\n  for (const FiltersModel::Filter & filter : _filtersModel) {\n    if (filter.matchKeywords(keywords)) {\n      _filtersView->addFilter(filter.name(), filter.hash(), filter.path(), filter.isWarning());\n    }\n  }\n  FavesModel::const_iterator itFave = _favesModel.cbegin();\n  while (itFave != _favesModel.cend()) {\n    if (itFave->matchKeywords(keywords)) {\n      _filtersView->addFave(itFave->name(), itFave->hash());\n    }\n    ++itFave;\n  }\n  _filtersView->sort();\n\n  QString header = QObject::tr(\"Available filters (%1)\").arg(_filtersModel.notTestingFilterCount());\n  _filtersView->setHeader(header);\n  _filtersView->enableModel();\n}\n\nvoid FiltersPresenter::clear()\n{\n  _favesModel.clear();\n  _filtersModel.clear();\n}\n\nvoid FiltersPresenter::readFilters()\n{\n  _filtersModel.clear();\n\n  QString cacheFilename = QString(\"%1%2\").arg(gmicConfigPath(true), FILTERS_CACHE_FILENAME);\n  bool readFromCacheIsOK = false;\n  if (GmicStdLib::hash() == FiltersModelBinaryReader::readHash(cacheFilename)) {\n    readFromCacheIsOK = FiltersModelBinaryReader(_filtersModel).read(cacheFilename);\n  } else {\n    FilterGuiDynamismCache::clear();\n  }\n\n  if (!readFromCacheIsOK) {\n    FiltersModelReader filterModelReader(_filtersModel);\n    filterModelReader.parseFiltersDefinitions(GmicStdLib::Array);\n    // Write cache\n    FiltersModelBinaryWriter writer(_filtersModel);\n    writer.write(cacheFilename, GmicStdLib::hash());\n  }\n}\n\nvoid FiltersPresenter::readFaves()\n{\n  FavesModelReader favesModelReader(_favesModel);\n  favesModelReader.loadFaves();\n}\n\nbool FiltersPresenter::allFavesAreValid() const\n{\n  for (const FavesModel::Fave & fave : _favesModel) {\n    if (!_filtersModel.contains(fave.originalHash())) {\n      return false;\n    }\n  }\n  return true;\n}\n\nvoid FiltersPresenter::restoreFaveHashLinksAfterCaseChange()\n{\n  if (allFavesAreValid()) {\n    return;\n  }\n  FavesModel formerFaveModel = _favesModel;\n  FavesModel::const_iterator itFormerFave = formerFaveModel.cbegin();\n  bool someFavesHaveBeenRelinked = false;\n  while (itFormerFave != formerFaveModel.cend()) {\n    const FavesModel::Fave & fave = *itFormerFave;\n    if (!_filtersModel.contains(fave.originalHash())) {\n      FiltersModel::const_iterator itFilter = _filtersModel.cbegin();\n      while ((itFilter != _filtersModel.cend()) && (itFilter->hash236() != fave.originalHash())) {\n        ++itFilter;\n      }\n      if (itFilter != _filtersModel.cend()) {\n        _favesModel.removeFave(fave.hash());\n        FavesModel::Fave newFave = fave;\n        newFave.setOriginalHash(itFilter->hash());\n        newFave.setOriginalName(itFilter->name());\n        _favesModel.addFave(newFave);\n        QString message = QString(\"Fave '%1' has been relinked to filter '%2'\").arg(fave.name()).arg(itFilter->name());\n        Logger::log(message, \"information\", true);\n        someFavesHaveBeenRelinked = true;\n      } else {\n        QString message = QString(\"Could not associate Fave '%1' to an existing filter\").arg(fave.name());\n        Logger::warning(message, true);\n      }\n    }\n    ++itFormerFave;\n  }\n  if (someFavesHaveBeenRelinked) {\n    saveFaves();\n  }\n}\n\nvoid FiltersPresenter::importGmicGTKFaves()\n{\n  FavesModelReader favesModelReader(_favesModel);\n  favesModelReader.importFavesFromGmicGTK();\n}\n\nvoid FiltersPresenter::saveFaves()\n{\n  FavesModelWriter favesModelWriter(_favesModel);\n  favesModelWriter.writeFaves();\n}\n\nvoid FiltersPresenter::addSelectedFilterAsNewFave(const QList<QString> & defaultValues, const QList<int> & visibilityStates, InputOutputState inOutState)\n{\n  if (_currentFilter.hash.isEmpty() || (!_filtersModel.contains(_currentFilter.hash) && !_favesModel.contains(_currentFilter.hash))) {\n    return;\n  }\n  FavesModel::Fave fave;\n  fave.setDefaultValues(defaultValues);\n  fave.setDefaultVisibilities(visibilityStates);\n\n  bool filterAlreadyHasAFave = false;\n  if (_filtersModel.contains(_currentFilter.hash)) {\n    const FiltersModel::Filter & filter = _filtersModel.getFilterFromHash(_currentFilter.hash);\n    fave.setName(_favesModel.uniqueName(FilterTextTranslator::translate(filter.name()), QString()));\n    fave.setCommand(filter.command());\n    fave.setPreviewCommand(filter.previewCommand());\n    fave.setOriginalHash(filter.hash());\n    fave.setOriginalName(filter.name());\n    filterAlreadyHasAFave = filterExistsAsFave(filter.hash());\n  } else {\n    FavesModel::const_iterator faveIterator = _favesModel.findFaveFromHash(_currentFilter.hash);\n    if (faveIterator != _favesModel.cend()) {\n      const FavesModel::Fave & originalFave = *faveIterator;\n      fave.setName(_favesModel.uniqueName(originalFave.name(), QString()));\n      fave.setCommand(originalFave.command());\n      fave.setPreviewCommand(originalFave.previewCommand());\n      fave.setOriginalHash(originalFave.originalHash());\n      fave.setOriginalName(originalFave.originalName());\n    }\n    filterAlreadyHasAFave = true;\n  }\n\n  fave.build();\n  FiltersVisibilityMap::setVisibility(fave.hash(), true);\n  _favesModel.addFave(fave);\n  ParametersCache::setValues(fave.hash(), defaultValues);\n  ParametersCache::setVisibilityStates(fave.hash(), visibilityStates);\n  ParametersCache::setInputOutputState(fave.hash(), inOutState, _currentFilter.defaultInputMode);\n  if (_filtersView) {\n    _filtersView->addFave(fave.name(), fave.hash());\n    _filtersView->sortFaves();\n    _filtersView->selectFave(fave.hash());\n  }\n  saveFaves();\n  onFilterChanged(fave.hash());\n  if (filterAlreadyHasAFave) {\n    editSelectedFaveName();\n  }\n}\n\nvoid FiltersPresenter::applySearchCriterion(const QString & text)\n{\n  if (!_filtersView) {\n    return;\n  }\n  static QString previousText;\n  if ((!text.isEmpty() && previousText.isEmpty()) || (text.isEmpty() && previousText.isEmpty())) {\n    _filtersView->preserveExpandedFolders();\n  }\n  QList<QString> keywords = text.split(QChar(' '), QT_SKIP_EMPTY_PARTS);\n\n  rebuildFilterViewWithSelection(keywords);\n  if (text.isEmpty() && _filtersView->visibleTagColors().isEmpty()) {\n    _filtersView->restoreExpandedFolders();\n  } else {\n    _filtersView->expandAll();\n  }\n  if (!_currentFilter.hash.isEmpty()) {\n    selectFilterFromHash(_currentFilter.hash, false);\n  }\n  previousText = text;\n}\n\nvoid FiltersPresenter::selectFilterFromHash(QString hash, bool notify)\n{\n  bool hashExists = true;\n  if (_filtersView) {\n    if (_favesModel.contains(hash)) {\n      _filtersView->selectFave(hash);\n    } else if (_filtersModel.contains(hash)) {\n      const FiltersModel::Filter & filter = _filtersModel.getFilterFromHash(hash);\n      _filtersView->selectActualFilter(hash, filter.path());\n    } else {\n      hashExists = false;\n    }\n  }\n  if (!hashExists) {\n    hash.clear();\n  }\n  setCurrentFilter(hash);\n  if (notify) {\n    emit filterSelectionChanged();\n  }\n}\n\nvoid FiltersPresenter::selectFilterFromPlainName(const QString & name)\n{\n  QString faveHash;\n  auto itFave = _favesModel.findFaveFromPlainText(name);\n  if (itFave != _favesModel.cend()) {\n    faveHash = itFave->hash();\n  }\n  QStringList filterHashes;\n  for (const FiltersModel::Filter & filter : _filtersModel) {\n    if (filter.plainText() == name) {\n      filterHashes.push_back(filter.hash());\n    }\n  }\n\n  QString hash;\n  if (((!faveHash.isEmpty()) + filterHashes.size()) == 1) {\n    if (!faveHash.isEmpty()) {\n      hash = faveHash;\n      if (_filtersView) {\n        _filtersView->selectFave(hash);\n      }\n    } else { // filterHashes.size() == 1\n      hash = filterHashes.front();\n      if (_filtersView) {\n        _filtersView->selectFave(hash);\n      }\n    }\n  }\n  setCurrentFilter(hash);\n}\n\nvoid FiltersPresenter::selectFilterFromCommand(const QString & command)\n{\n  // We consider only the first matching filter\n  for (const FiltersModel::Filter & filter : _filtersModel) {\n    if (filter.command() == command) {\n      setCurrentFilter(filter.hash());\n      return;\n    }\n  }\n  setCurrentFilter(QString());\n}\n\nvoid FiltersPresenter::setVisibleTagSelector(VisibleTagSelector * selector)\n{\n  _visibleTagSelector = selector;\n  connect(selector, &VisibleTagSelector::visibleColorsChanged, this, &FiltersPresenter::setVisibleTagColors);\n}\n\nvoid FiltersPresenter::setVisibleTagColors(unsigned int colors)\n{\n  _filtersView->setVisibleTagColors(TagColorSet(colors));\n  applySearchCriterion(_searchField->text());\n}\n\nvoid FiltersPresenter::selectFilterFromAbsolutePath(QString path)\n{\n  QString hash;\n  if (path.startsWith(\"/\")) {\n    static const QString FaveFolderPrefix = \"/\" + HtmlTranslator::html2txt(FAVE_FOLDER_TEXT) + \"/\";\n    if (path.startsWith(FaveFolderPrefix)) {\n      path.remove(0, FaveFolderPrefix.length());\n      auto it = _favesModel.findFaveFromPlainText(path);\n      if (it != _favesModel.cend()) {\n        hash = it->hash();\n        if (_filtersView) {\n          _filtersView->selectFave(hash);\n        }\n      }\n    } else {\n      auto it = _filtersModel.findFilterFromAbsolutePath(path);\n      if (it != _filtersModel.cend()) {\n        hash = it->hash();\n        if (_filtersView) {\n          _filtersView->selectActualFilter(hash, it->path());\n        }\n      }\n    }\n  }\n  setCurrentFilter(hash);\n}\n\nvoid FiltersPresenter::selectFilterFromAbsolutePathOrPlainName(const QString & path)\n{\n  if (path.startsWith(\"/\")) {\n    selectFilterFromAbsolutePath(path);\n  } else {\n    selectFilterFromPlainName(path);\n  }\n}\n\nconst FiltersPresenter::Filter & FiltersPresenter::currentFilter() const\n{\n  return _currentFilter;\n}\n\nvoid FiltersPresenter::loadSettings(const QSettings & settings)\n{\n  if (_filtersView) {\n    _filtersView->loadSettings(settings);\n  }\n}\n\nvoid FiltersPresenter::saveSettings(QSettings & settings)\n{\n  if (_filtersView) {\n    _filtersView->saveSettings(settings);\n  }\n}\n\nvoid FiltersPresenter::setInvalidFilter()\n{\n  _currentFilter.setInvalid();\n}\n\nbool FiltersPresenter::isInvalidFilter() const\n{\n  return _currentFilter.isInvalid();\n}\n\nvoid FiltersPresenter::adjustViewSize()\n{\n  if (_filtersView) {\n    _filtersView->adjustTreeSize();\n  }\n}\n\nvoid FiltersPresenter::expandFaveFolder()\n{\n  if (_filtersView) {\n    _filtersView->expandFaveFolder();\n  }\n}\n\nvoid FiltersPresenter::expandPreviousSessionExpandedFolders()\n{\n  if (_filtersView) {\n    QList<QString> expandedFolderPaths = QSettings().value(\"Config/ExpandedFolders\", QStringList()).toStringList();\n    _filtersView->expandFolders(expandedFolderPaths);\n  }\n}\n\nvoid FiltersPresenter::expandAll()\n{\n  if (_filtersView) {\n    _filtersView->expandAll();\n  }\n}\n\nvoid FiltersPresenter::collapseAll()\n{\n  if (_filtersView) {\n    _filtersView->collapseAll();\n  }\n}\n\nconst QString & FiltersPresenter::errorMessage() const\n{\n  return _errorMessage;\n}\n\nFiltersPresenter::Filter FiltersPresenter::findFilterFromAbsolutePathOrNameInStdlib(const QString & path)\n{\n  FiltersPresenter presenter(nullptr);\n  presenter.readFaves();\n  presenter.readFilters();\n  if (path.startsWith(\"/\")) {\n    presenter.selectFilterFromAbsolutePath(path);\n  } else {\n    presenter.selectFilterFromPlainName(path);\n  }\n  return presenter.currentFilter();\n}\n\nFiltersPresenter::Filter FiltersPresenter::findFilterFromCommandInStdlib(const QString & command)\n{\n  FiltersPresenter presenter(nullptr);\n  // presenter.readFaves();\n  presenter.readFilters();\n  presenter.selectFilterFromCommand(command);\n  return presenter.currentFilter();\n}\n\nvoid FiltersPresenter::removeSelectedFave()\n{\n  if (_filtersView) {\n    QString hash = _filtersView->selectedFilterHash();\n    removeFave(hash);\n  }\n}\n\nvoid FiltersPresenter::editSelectedFaveName()\n{\n  if (_filtersView) {\n    _filtersView->editSelectedFaveName();\n  }\n}\n\nvoid FiltersPresenter::onFaveRenamed(const QString & hash, const QString & name)\n{\n  Q_ASSERT_X(_favesModel.contains(hash), \"onFaveRenamed()\", \"Hash not found\");\n  FavesModel::Fave fave = _favesModel.getFaveFromHash(hash);\n  _favesModel.removeFave(hash);\n\n  InputMode defaultInputMode = InputMode::Unspecified;\n  if (_filtersModel.contains(fave.originalHash())) {\n    const FiltersModel::Filter & originalFilter = _filtersModel.getFilterFromHash(fave.originalHash());\n    defaultInputMode = originalFilter.defaultInputMode();\n  }\n\n  QString newName = name;\n  if (newName.isEmpty()) {\n    if (_filtersModel.contains(fave.originalHash())) {\n      const FiltersModel::Filter & originalFilter = _filtersModel.getFilterFromHash(fave.originalHash());\n      newName = _favesModel.uniqueName(FilterTextTranslator::translate(originalFilter.name()), QString());\n    } else {\n      newName = _favesModel.uniqueName(tr(\"Unknown filter\"), QString());\n    }\n  } else {\n    newName = _favesModel.uniqueName(newName, QString());\n  }\n  fave.setName(newName);\n  fave.build();\n\n  // Move parameters\n  QList<QString> values = ParametersCache::getValues(hash);\n  QList<int> visibilityStates = ParametersCache::getVisibilityStates(hash);\n  InputOutputState inOutState = ParametersCache::getInputOutputState(hash);\n  ParametersCache::remove(hash);\n  ParametersCache::setValues(fave.hash(), values);\n  ParametersCache::setVisibilityStates(fave.hash(), visibilityStates);\n  ParametersCache::setInputOutputState(fave.hash(), inOutState, defaultInputMode);\n\n  _favesModel.addFave(fave);\n  if (_filtersView) {\n    _filtersView->updateFaveItem(hash, fave.hash(), fave.name());\n    _filtersView->sortFaves();\n  }\n  saveFaves();\n  setCurrentFilter(fave.hash());\n  emit faveNameChanged(newName);\n}\n\nvoid FiltersPresenter::toggleSelectionMode(bool on)\n{\n  if (_filtersView) {\n    if (on) {\n      _filtersView->enableSelectionMode();\n    } else {\n      _filtersView->disableSelectionMode();\n    }\n  }\n  applySearchCriterion(_searchField->text());\n}\n\nvoid FiltersPresenter::onFilterChanged(const QString & hash)\n{\n  setCurrentFilter(hash);\n  emit filterSelectionChanged();\n}\n\nvoid FiltersPresenter::removeFave(const QString & hash)\n{\n  if (hash.isEmpty() || !_favesModel.contains(hash)) {\n    return;\n  }\n  ParametersCache::remove(hash);\n  _favesModel.removeFave(hash);\n  if (_filtersView) {\n    _filtersView->removeFave(hash);\n  }\n  saveFaves();\n  if (_filtersView) {\n    onFilterChanged(_filtersView->selectedFilterHash());\n  }\n}\n\nvoid FiltersPresenter::onTagToggled(int)\n{\n  TagColorSet colors = _visibleTagSelector->selectedColors();\n  _visibleTagSelector->updateColors();\n  if (_visibleTagSelector->selectedColors() != colors) {\n    _filtersView->setVisibleTagColors(TagColorSet::Empty);\n    applySearchCriterion(_searchField->text());\n  }\n}\n\nbool FiltersPresenter::danglingFaveIsSelected() const\n{\n  if (!_filtersView || !_filtersView->aFaveIsSelected()) {\n    return false;\n  }\n  QString hash = _filtersView->selectedFilterHash();\n  if (_favesModel.contains(hash)) {\n    return !_filtersModel.contains(_favesModel.getFaveFromHash(hash).originalHash());\n  }\n  return false;\n}\n\nvoid FiltersPresenter::setCurrentFilter(const QString & hash)\n{\n  _errorMessage.clear();\n  PersistentMemory::clear();\n  if (hash.isEmpty()) {\n    _currentFilter.setInvalid();\n  } else if (_favesModel.contains(hash)) {\n    const FavesModel::Fave & fave = _favesModel.getFaveFromHash(hash);\n    const QString & originalHash = fave.originalHash();\n    if (_filtersModel.contains(originalHash)) {\n      const FiltersModel::Filter & filter = _filtersModel.getFilterFromHash(originalHash);\n      _currentFilter.command = fave.command();\n      _currentFilter.defaultParameterValues = fave.defaultValues();\n      _currentFilter.defaultVisibilityStates = fave.defaultVisibilityStates();\n      _currentFilter.defaultInputMode = filter.defaultInputMode();\n      _currentFilter.hash = hash;\n      _currentFilter.isAFave = true;\n      _currentFilter.name = fave.name();\n      _currentFilter.plainTextName = fave.plainText();\n      _currentFilter.fullPath = fave.absolutePath();\n      _currentFilter.parameters = filter.parameters();\n      _currentFilter.previewCommand = fave.previewCommand();\n      _currentFilter.isAccurateIfZoomed = filter.isAccurateIfZoomed();\n      _currentFilter.previewFromFullImage = filter.previewFromFullImage();\n      _currentFilter.previewFactor = filter.previewFactor();\n    } else {\n      setInvalidFilter();\n      _errorMessage = tr(\"Cannot find this fave's original filter\\n\");\n    }\n  } else if (_filtersModel.contains(hash)) {\n    const FiltersModel::Filter & filter = _filtersModel.getFilterFromHash(hash);\n    _currentFilter.command = filter.command();\n    _currentFilter.defaultParameterValues = ParametersCache::getValues(hash); // FIXME : Unused unless it's a fave. Should be renamed.\n    _currentFilter.defaultVisibilityStates = ParametersCache::getVisibilityStates(hash);\n    _currentFilter.defaultInputMode = filter.defaultInputMode();\n    _currentFilter.hash = hash;\n    _currentFilter.isAFave = false;\n    _currentFilter.name = filter.name();\n    _currentFilter.plainTextName = filter.plainText();\n    _currentFilter.fullPath = filter.absolutePathNoTags();\n    _currentFilter.parameters = filter.parameters();\n    _currentFilter.previewCommand = filter.previewCommand();\n    _currentFilter.isAccurateIfZoomed = filter.isAccurateIfZoomed();\n    _currentFilter.previewFromFullImage = filter.previewFromFullImage();\n    _currentFilter.previewFactor = filter.previewFactor();\n  } else {\n    _currentFilter.setInvalid();\n  }\n}\n\nbool FiltersPresenter::filterExistsAsFave(const QString filterHash)\n{\n  for (const FavesModel::Fave & fave : _favesModel) {\n    if (fave.originalHash() == filterHash) {\n      return true;\n    }\n  }\n  return false;\n}\n\nvoid FiltersPresenter::Filter::clear()\n{\n  name.clear();\n  command.clear();\n  previewCommand.clear();\n  parameters.clear();\n  defaultParameterValues.clear();\n  fullPath.clear();\n  hash.clear();\n  plainTextName.clear();\n  previewFactor = PreviewFactorAny;\n  previewFromFullImage = false;\n  defaultInputMode = InputMode::Unspecified;\n  isAFave = false;\n}\n\nvoid FiltersPresenter::Filter::setInvalid()\n{\n  clear();\n  command = \"skip\";\n  previewCommand = \"skip\";\n}\n\nbool FiltersPresenter::Filter::isInvalid() const\n{\n  return hash.isEmpty() && (command == \"skip\") && (previewCommand == \"skip\");\n}\n\nbool FiltersPresenter::Filter::isValid() const\n{\n  return !isInvalid();\n}\n\nbool FiltersPresenter::Filter::isNoApplyFilter() const\n{\n  return hash.isEmpty() || command.isEmpty() || (command == \"_none_\");\n}\n\nbool FiltersPresenter::Filter::isNoPreviewFilter() const\n{\n  return hash.isEmpty() || previewCommand.isEmpty() || (previewCommand == \"_none_\");\n}\n\nconst char * FiltersPresenter::Filter::previewFactorString() const\n{\n  if (previewFactor == PreviewFactorActualSize) {\n    return \"ActualSize\";\n  }\n  if (previewFactor == PreviewFactorAny) {\n    return \"Any\";\n  }\n  if (previewFactor == PreviewFactorFullImage) {\n    return \"FullImage\";\n  }\n  return \"float value\";\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterSelector/FiltersPresenter.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FiltersPresenter.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FILTERSPRESENTER_H\n#define GMIC_QT_FILTERSPRESENTER_H\n#include <QObject>\n#include \"FilterSelector/FavesModel.h\"\n#include \"FilterSelector/FiltersModel.h\"\n#include \"FilterSelector/FiltersView/FiltersView.h\"\n#include \"GmicQt.h\"\n#include \"InputOutputState.h\"\n#include \"Tags.h\"\n#include \"Widgets/VisibleTagSelector.h\"\n\nclass QSettings;\n\nnamespace GmicQt\n{\n\nclass SearchFieldWidget;\n\nclass FiltersPresenter : public QObject {\n  Q_OBJECT\npublic:\n  struct Filter {\n    QString name;\n    QString plainTextName;\n    QString fullPath;\n    QString command;\n    QString previewCommand;\n    QString parameters;\n    QList<QString> defaultParameterValues;\n    QList<int> defaultVisibilityStates;\n    InputMode defaultInputMode;\n    QString hash;\n    bool isAccurateIfZoomed;\n    bool previewFromFullImage;\n    float previewFactor;\n    bool isAFave;\n    void clear();\n    void setInvalid();\n    bool isInvalid() const;\n    bool isValid() const;\n    bool isNoApplyFilter() const;\n    bool isNoPreviewFilter() const;\n    const char * previewFactorString() const;\n  };\n\n  FiltersPresenter(QObject * parent);\n  ~FiltersPresenter() override;\n  void setFiltersView(FiltersView * filtersView);\n  void setSearchField(SearchFieldWidget *);\n  void rebuildFilterView();\n  void rebuildFilterViewWithSelection(const QList<QString> & keywords);\n\n  void clear();\n  void readFilters();\n  void readFaves();\n\n  bool allFavesAreValid() const;\n  bool danglingFaveIsSelected() const;\n\n  /**\n   * @brief restoreFaveHashLinksRelease236\n   * Starting with release 240 of gmic, filter name capitalization has been normalized.\n   * For example : \"Add grain\" became \"Add Grain\"\n   * As a consequence, links between faves and filters based on hashes (computed in part\n   * from the name) were broken.\n   * This method tries to restore the links in the case when 4 faves or more are broken.\n   */\n  void restoreFaveHashLinksAfterCaseChange();\n  void importGmicGTKFaves();\n  void saveFaves();\n  void addSelectedFilterAsNewFave(const QList<QString> & defaultValues, const QList<int> & visibilityStates, InputOutputState inOutState);\n\n  void applySearchCriterion(const QString & text);\n  void selectFilterFromHash(QString hash, bool notify);\n  void selectFilterFromAbsolutePathOrPlainName(const QString & path);\n  void selectFilterFromAbsolutePath(QString path);\n  void selectFilterFromPlainName(const QString & name);\n  void selectFilterFromCommand(const QString & command);\n  void setVisibleTagSelector(VisibleTagSelector * selector);\n  const Filter & currentFilter() const;\n\n  void loadSettings(const QSettings & settings);\n  void saveSettings(QSettings & settings);\n\n  void setInvalidFilter();\n  bool isInvalidFilter() const;\n\n  void adjustViewSize();\n  void expandFaveFolder();\n  void expandPreviousSessionExpandedFolders();\n\n  void expandAll();\n  void collapseAll();\n  const QString & errorMessage() const;\n\n  /**\n   * @brief findFilterFromPlainPathInStdlib\n   * Caution: this function parses the stdlib each time it is called\n   */\n  static Filter findFilterFromAbsolutePathOrNameInStdlib(const QString & path);\n  static Filter findFilterFromCommandInStdlib(const QString & command);\n\nsignals:\n  void filterSelectionChanged();\n  void faveAdditionRequested(QString);\n  void faveNameChanged(QString);\n\npublic slots:\n  void setVisibleTagColors(unsigned int color);\n  void removeSelectedFave();\n  void editSelectedFaveName();\n  void onFaveRenamed(const QString & hash, const QString & name);\n  void toggleSelectionMode(bool on);\n\nprivate slots:\n  void onFilterChanged(const QString & hash);\n  void removeFave(const QString & hash);\n  void onTagToggled(int color);\n\nprivate:\n  void setCurrentFilter(const QString & hash);\n  bool filterExistsAsFave(const QString filterHash);\n\n  FiltersModel _filtersModel;\n  FavesModel _favesModel;\n  FiltersView * _filtersView;\n  SearchFieldWidget * _searchField;\n  VisibleTagSelector * _visibleTagSelector;\n  Filter _currentFilter;\n  QString _errorMessage;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FILTERSPRESENTER_H\n"
  },
  {
    "path": "src/FilterSelector/FiltersView/FilterTreeAbstractItem.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterTreeAbstractItem.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterTreeAbstractItem.h\"\n#include \"FilterTextTranslator.h\"\n#include \"Globals.h\"\n#include \"HtmlTranslator.h\"\n\nnamespace GmicQt\n{\n\nFilterTreeAbstractItem::FilterTreeAbstractItem(QString text)\n{\n  _visibilityItem = nullptr;\n  if (text.startsWith(WarningPrefix)) {\n    text.remove(0, 1);\n    _isWarning = true;\n  } else {\n    _isWarning = false;\n  }\n  setText(FilterTextTranslator::translate(text));\n  _plainText = HtmlTranslator::html2txt(FilterTextTranslator::translate(text), true);\n}\n\nFilterTreeAbstractItem::~FilterTreeAbstractItem() {}\n\nvoid FilterTreeAbstractItem::setVisibilityItem(QStandardItem * item)\n{\n  _visibilityItem = item;\n}\n\nconst QString & FilterTreeAbstractItem::plainText() const\n{\n  return _plainText;\n}\n\nbool FilterTreeAbstractItem::isWarning() const\n{\n  return _isWarning;\n}\n\nbool FilterTreeAbstractItem::isVisible() const\n{\n  if (_visibilityItem) {\n    return _visibilityItem->checkState() == Qt::Checked;\n  }\n  return true;\n}\n\nvoid FilterTreeAbstractItem::setVisibility(bool flag)\n{\n  if (_visibilityItem) {\n    _visibilityItem->setCheckState(flag ? Qt::Checked : Qt::Unchecked);\n  }\n}\n\nQStringList FilterTreeAbstractItem::path() const\n{\n  QStringList result;\n  result.push_back(text());\n  const FilterTreeAbstractItem * parentFolder = dynamic_cast<FilterTreeAbstractItem *>(parent());\n  while (parentFolder) {\n    result.push_front(parentFolder->text());\n    parentFolder = dynamic_cast<FilterTreeAbstractItem *>(parentFolder->parent());\n  }\n  return result;\n}\n\nQString FilterTreeAbstractItem::removeWarningPrefix(QString folderName)\n{\n  if (folderName.startsWith(WarningPrefix)) {\n    folderName.remove(0, 1);\n  }\n  return folderName;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterSelector/FiltersView/FilterTreeAbstractItem.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterTreeAbstractItem.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FILTERTREEABSTRACTITEM_H\n#define GMIC_QT_FILTERTREEABSTRACTITEM_H\n#include <QStandardItem>\n#include <QStringList>\n\nnamespace GmicQt\n{\nclass FilterTreeAbstractItem : public QStandardItem {\npublic:\n  FilterTreeAbstractItem(QString text);\n  ~FilterTreeAbstractItem();\n  void setVisibilityItem(QStandardItem * item);\n  const QString & plainText() const;\n  bool isWarning() const;\n  bool isVisible() const;\n  void setVisibility(bool flag);\n  QStringList path() const;\n  static QString removeWarningPrefix(QString folderName);\n\nprotected:\n  QStandardItem * _visibilityItem;\n\nprivate:\n  QString _plainText;\n  bool _isWarning;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FILTERTREEABSTRACTITEM_H\n"
  },
  {
    "path": "src/FilterSelector/FiltersView/FilterTreeFolder.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterTreeFolder.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterTreeFolder.h\"\n#include <QDebug>\n#include \"FilterSelector/FiltersView/FilterTreeItem.h\"\n#include \"HtmlTranslator.h\"\n\nnamespace GmicQt\n{\n\nFilterTreeFolder::FilterTreeFolder(const QString & text) : FilterTreeAbstractItem(text)\n{\n  setEditable(false);\n  _isFaveFolder = false;\n}\n\nvoid FilterTreeFolder::setFaveFolderFlag(bool flag)\n{\n  _isFaveFolder = flag;\n}\n\nbool FilterTreeFolder::isFullyUnchecked()\n{\n  int count = rowCount();\n  for (int row = 0; row < count; ++row) {\n    auto item = dynamic_cast<FilterTreeAbstractItem *>(child(row));\n    if (item && item->isVisible()) {\n      return false;\n    }\n    auto folder = dynamic_cast<FilterTreeFolder *>(child(row));\n    if (folder && !folder->isFullyUnchecked()) {\n      return false;\n    }\n  }\n  return true;\n}\n\nvoid FilterTreeFolder::applyVisibilityStatusToFolderContents()\n{\n  if (_visibilityItem) {\n    setItemsVisibility(_visibilityItem->checkState() == Qt::Checked);\n  }\n}\n\nvoid FilterTreeFolder::setItemsVisibility(bool visible)\n{\n  int rows = rowCount();\n  for (int row = 0; row < rows; ++row) {\n    auto item = dynamic_cast<FilterTreeAbstractItem *>(child(row));\n    if (item) {\n      item->setVisibility(visible);\n    }\n  }\n}\n\nbool FilterTreeFolder::isFaveFolder() const\n{\n  return _isFaveFolder;\n}\n\nbool FilterTreeFolder::operator<(const QStandardItem & other) const\n{\n  auto otherFolder = dynamic_cast<const FilterTreeFolder *>(&other);\n  auto otherItem = dynamic_cast<const FilterTreeItem *>(&other);\n  Q_ASSERT_X(otherFolder || otherItem, \"FilterTreeItem::operator<\", \"Wrong item types\");\n  bool otherIsWarning = (otherFolder && otherFolder->isWarning()) || (otherItem && otherItem->isWarning());\n  bool otherIsFaveFolder = otherFolder && otherFolder->isFaveFolder();\n\n  // Warnings first\n  if (isWarning() && !otherIsWarning) {\n    return true;\n  }\n  if (!isWarning() && otherIsWarning) {\n    return false;\n  }\n  // Then fave folder\n  if (_isFaveFolder && !otherIsFaveFolder) {\n    return true;\n  }\n  if (!_isFaveFolder && otherIsFaveFolder) {\n    return false;\n  }\n  // Then folders\n  if (!otherFolder) {\n    return true;\n  }\n  // Other cases follow lexicographic order\n  if (otherFolder) {\n    return plainText().localeAwareCompare(otherFolder->plainText()) < 0;\n  }\n  return plainText().localeAwareCompare(otherItem->plainText()) < 0;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterSelector/FiltersView/FilterTreeFolder.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterTreeFolder.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FILTERTREEFOLDER_H\n#define GMIC_QT_FILTERTREEFOLDER_H\n#include <QStandardItem>\n#include <QString>\n#include \"FilterSelector/FiltersView/FilterTreeAbstractItem.h\"\n\nnamespace GmicQt\n{\nclass FilterTreeFolder : public FilterTreeAbstractItem {\npublic:\n  FilterTreeFolder(const QString & text);\n  void setFaveFolderFlag(bool);\n  bool isFullyUnchecked();\n  bool isFaveFolder() const;\n  bool operator<(const QStandardItem & other) const override;\n  void applyVisibilityStatusToFolderContents();\n  void setItemsVisibility(bool visible);\n\nprivate:\n  bool _isFaveFolder;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FILTERTREEFOLDER_H\n"
  },
  {
    "path": "src/FilterSelector/FiltersView/FilterTreeItem.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterTreeItem.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterTreeItem.h\"\n#include <QDebug>\n#include \"Common.h\"\n#include \"FilterSelector/FilterTagMap.h\"\n#include \"FilterSelector/FiltersView/FilterTreeFolder.h\"\n#include \"HtmlTranslator.h\"\n\nnamespace GmicQt\n{\n\nFilterTreeItem::FilterTreeItem(const QString & text) : FilterTreeAbstractItem(text)\n{\n  _isWarning = false;\n  _isFave = false;\n  setEditable(false);\n}\n\nvoid FilterTreeItem::setHash(const QString & hash)\n{\n  _hash = hash;\n}\n\nvoid FilterTreeItem::setWarningFlag(bool flag)\n{\n  _isWarning = flag;\n}\n\nvoid FilterTreeItem::setFaveFlag(bool flag)\n{\n  _isFave = flag;\n  setEditable(flag);\n}\n\nbool FilterTreeItem::isWarning() const\n{\n  return _isWarning;\n}\n\nbool FilterTreeItem::isFave() const\n{\n  return _isFave;\n}\n\nQString FilterTreeItem::hash() const\n{\n  return _hash;\n}\n\nbool FilterTreeItem::operator<(const QStandardItem & other) const\n{\n  auto otherFolder = dynamic_cast<const FilterTreeFolder *>(&other);\n  auto otherItem = dynamic_cast<const FilterTreeItem *>(&other);\n  Q_ASSERT_X(otherFolder || otherItem, \"FilterTreeItem::operator<\", \"Wrong item types\");\n  bool otherIsWarning = (otherFolder && otherFolder->isWarning()) || (otherItem && otherItem->isWarning());\n  bool otherIsFaveFolder = otherFolder && otherFolder->isFaveFolder();\n\n  // Warnings first\n  if (_isWarning && !otherIsWarning) {\n    return true;\n  }\n  if (!_isWarning && otherIsWarning) {\n    return false;\n  }\n  // Then fave folder\n  if (otherIsFaveFolder) {\n    return false;\n  }\n  // Then folders\n  if (otherFolder) {\n    return false;\n  }\n  // Other cases follow lexicographic order\n  if (otherFolder) {\n    return plainText().localeAwareCompare(otherFolder->plainText()) < 0;\n  }\n  return plainText().localeAwareCompare(otherItem->plainText()) < 0;\n}\n\nvoid FilterTreeItem::setTags(const TagColorSet & colors)\n{\n  FiltersTagMap::setFilterTags(_hash, colors);\n}\n\nvoid FilterTreeItem::addTag(TagColor tagColor)\n{\n  FiltersTagMap::setFilterTag(_hash, tagColor);\n}\n\nvoid FilterTreeItem::removeTag(TagColor tagColor)\n{\n  FiltersTagMap::clearFilterTag(_hash, tagColor);\n}\n\nvoid FilterTreeItem::toggleTag(TagColor tagColor)\n{\n  FiltersTagMap::toggleFilterTag(_hash, tagColor);\n}\n\nconst TagColorSet FilterTreeItem::tags() const\n{\n  return FiltersTagMap::filterTags(_hash);\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterSelector/FiltersView/FilterTreeItem.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterTreeItem.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FILTERTREEITEM_H\n#define GMIC_QT_FILTERTREEITEM_H\n#include <QStandardItem>\n#include <QString>\n#include <QVector>\n#include \"FilterSelector/FiltersView/FilterTreeAbstractItem.h\"\n#include \"Tags.h\"\n\nnamespace GmicQt\n{\nclass FilterTreeItem : public FilterTreeAbstractItem {\npublic:\n  FilterTreeItem(const QString & text);\n  void setHash(const QString & hash);\n  void setWarningFlag(bool flag);\n  void setFaveFlag(bool flag);\n  bool isWarning() const;\n  bool isFave() const;\n  QString hash() const;\n  bool operator<(const QStandardItem & other) const override;\n  void setTags(const TagColorSet & colors);\n  void addTag(TagColor tagColor);\n  void removeTag(TagColor tagColor);\n  void toggleTag(TagColor tagColor);\n  const TagColorSet tags() const;\n\nprivate:\n  QString _hash;\n  bool _isFave;\n  bool _isWarning;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FILTERTREEITEM_H\n"
  },
  {
    "path": "src/FilterSelector/FiltersView/FilterTreeItemDelegate.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterTreeItemDelegate.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterTreeItemDelegate.h\"\n#include <QColor>\n#include <QDebug>\n#include <QPainter>\n#include <QPalette>\n#include <QTextDocument>\n#include \"FilterSelector/FiltersView/FilterTreeAbstractItem.h\"\n#include \"FilterSelector/FiltersView/FilterTreeItem.h\"\n#include \"Settings.h\"\n#include \"Tags.h\"\n\nnamespace GmicQt\n{\n\nFilterTreeItemDelegate::FilterTreeItemDelegate(QObject * parent) : QStyledItemDelegate(parent) {}\n\nvoid FilterTreeItemDelegate::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const\n{\n  QStyleOptionViewItem options = option;\n  initStyleOption(&options, index);\n  painter->save();\n\n  auto model = dynamic_cast<const QStandardItemModel *>(index.model());\n  Q_ASSERT_X(model, \"FiltersTreeItemDelegate::paint()\", \"No model\");\n  const QStandardItem * item = model->itemFromIndex(index);\n  Q_ASSERT_X(item, \"FiltersTreeItemDelegate::paint()\", \"No item\");\n  auto filter = dynamic_cast<const FilterTreeItem *>(item);\n  const int height = int(options.rect.height() * 0.4);\n  QString tagString;\n\n  if (filter) {\n    TagColorSet tags = filter->tags();\n    if (!tags.isEmpty()) {\n      tagString = \"&nbsp;&nbsp;\";\n      for (TagColor color : tags) {\n        tagString += QString(\"&nbsp;\") + TagAssets::markerHtml(color, height);\n      }\n    }\n  }\n\n  QTextDocument doc;\n  if (!item->isCheckable() && filter && !filter->isVisible()) {\n    QColor textColor;\n    textColor = Settings::UnselectedFilterTextColor;\n    doc.setHtml(QString(\"<span style=\\\"color:%1\\\">%2</span>&nbsp;%3\").arg(textColor.name()).arg(options.text).arg(tagString));\n  } else {\n    if (filter) {\n      doc.setHtml(options.text + tagString);\n    } else {\n      doc.setHtml(options.text);\n    }\n  }\n  options.text = \"\";\n  options.widget->style()->drawControl(QStyle::CE_ItemViewItem, &options, painter);\n  painter->translate(options.rect.left(), options.rect.top());\n  QRect clip(0, 0, options.rect.width(), options.rect.height());\n  doc.drawContents(painter, clip);\n  painter->restore();\n}\n\nQSize FilterTreeItemDelegate::sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const\n{\n  QStyleOptionViewItem options = option;\n  initStyleOption(&options, index);\n\n  QTextDocument doc;\n  doc.setHtml(options.text);\n  doc.setTextWidth(options.rect.width());\n  return {static_cast<int>(doc.idealWidth()), static_cast<int>(doc.size().height())};\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterSelector/FiltersView/FilterTreeItemDelegate.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterTreeItemDelegate.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FILTERTREEITEMDELEGATE_H\n#define GMIC_QT_FILTERTREEITEMDELEGATE_H\n\n#include <QStyledItemDelegate>\n\nnamespace GmicQt\n{\nclass FilterTreeItemDelegate : public QStyledItemDelegate {\npublic:\n  FilterTreeItemDelegate(QObject * parent);\n\nprotected:\n  void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const;\n  QSize sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FILTERTREEITEMDELEGATE_H\n"
  },
  {
    "path": "src/FilterSelector/FiltersView/FiltersView.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FiltersView.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterSelector/FiltersView/FiltersView.h\"\n#include <QDebug>\n#include <QEvent>\n#include <QKeyEvent>\n#include <QLineEdit>\n#include <QMessageBox>\n#include <QSettings>\n#include <QStandardItem>\n#include <QStringList>\n#include \"Common.h\"\n#include \"FilterSelector/FilterTagMap.h\"\n#include \"FilterSelector/FiltersView/FilterTreeFolder.h\"\n#include \"FilterSelector/FiltersView/FilterTreeItem.h\"\n#include \"FilterSelector/FiltersView/FilterTreeItemDelegate.h\"\n#include \"FilterSelector/FiltersVisibilityMap.h\"\n#include \"FilterTextTranslator.h\"\n#include \"Globals.h\"\n#include \"ui_filtersview.h\"\n\nnamespace GmicQt\n{\n\nconst QString FiltersView::FilterTreePathSeparator(\"\\t\");\n\nFiltersView::FiltersView(QWidget * parent) : QWidget(parent), ui(new Ui::FiltersView), _isInSelectionMode(false)\n{\n  ui->setupUi(this);\n  ui->treeView->setModel(&_emptyModel);\n  _faveFolder = nullptr;\n  _cachedFolder = _model.invisibleRootItem();\n  auto delegate = new FilterTreeItemDelegate(ui->treeView);\n  ui->treeView->setItemDelegate(delegate);\n  ui->treeView->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents);\n  ui->treeView->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);\n\n  connect(delegate, &FilterTreeItemDelegate::commitData, this, &FiltersView::onRenameFaveFinished);\n  connect(ui->treeView, &TreeView::returnKeyPressed, this, &FiltersView::onReturnKeyPressedInFiltersTree);\n  connect(ui->treeView, &TreeView::clicked, this, &FiltersView::onItemClicked);\n  connect(&_model, &QStandardItemModel::itemChanged, this, &FiltersView::onItemChanged);\n\n  ui->treeView->setContextMenuPolicy(Qt::CustomContextMenu);\n  connect(ui->treeView, &TreeView::customContextMenuRequested, this, &FiltersView::onCustomContextMenu);\n  _faveContextMenu = nullptr;\n  _filterContextMenu = nullptr;\n  ui->treeView->installEventFilter(this);\n}\n\nFiltersView::~FiltersView()\n{\n  delete ui;\n}\n\nvoid FiltersView::enableModel()\n{\n  if (_isInSelectionMode) {\n    uncheckFullyUncheckedFolders();\n    _model.setHorizontalHeaderItem(1, new QStandardItem(QObject::tr(\"Visible\")));\n    _model.setColumnCount(2);\n  }\n  ui->treeView->setModel(&_model);\n  if (_isInSelectionMode) {\n    QStandardItem * headerItem = _model.horizontalHeaderItem(1);\n    QString title = QString(\"_%1_\").arg(headerItem->text());\n    QFont font;\n    QFontMetrics fm(font);\n#if QT_VERSION_GTE(5, 11, 0)\n    int w = fm.horizontalAdvance(title);\n#else\n    int w = fm.width(title);\n#endif\n    ui->treeView->setColumnWidth(0, ui->treeView->width() - 2 * w);\n    ui->treeView->setColumnWidth(1, w);\n  }\n}\n\nvoid FiltersView::disableModel()\n{\n  ui->treeView->setModel(&_emptyModel);\n}\n\nvoid FiltersView::createFolder(const QList<QString> & path)\n{\n  createFolder(_model.invisibleRootItem(), path);\n}\n\nvoid FiltersView::addFilter(const QString & text, const QString & hash, const QList<QString> & path, bool warning)\n{\n  const bool filterIsVisible = FiltersVisibilityMap::filterIsVisible(hash);\n  TagColorSet tagColors = FiltersTagMap::filterTags(hash);\n  if (!_isInSelectionMode && !filterIsVisible) {\n    return;\n  }\n  if (!_visibleTagColors.isEmpty() && (tagColors & _visibleTagColors).isEmpty()) {\n    return;\n  }\n  QStandardItem * folder = getFolderFromPath(path);\n  if (!folder) {\n    folder = createFolder(_model.invisibleRootItem(), path);\n  }\n  auto item = new FilterTreeItem(text);\n  item->setHash(hash);\n  item->setWarningFlag(warning);\n  item->setTags(tagColors);\n  if (_isInSelectionMode) {\n    addStandardItemWithCheckbox(folder, item);\n    item->setVisibility(filterIsVisible);\n  } else {\n    folder->appendRow(item);\n  }\n}\n\nvoid FiltersView::addFave(const QString & text, const QString & hash)\n{\n  const bool faveIsVisible = FiltersVisibilityMap::filterIsVisible(hash);\n  TagColorSet tagColors = FiltersTagMap::filterTags(hash);\n  if (!_isInSelectionMode && !faveIsVisible) {\n    return;\n  }\n  if (!_visibleTagColors.isEmpty() && (tagColors & _visibleTagColors).isEmpty()) {\n    return;\n  }\n  if (!_faveFolder) {\n    createFaveFolder();\n  }\n  auto item = new FilterTreeItem(text);\n  item->setHash(hash);\n  item->setWarningFlag(false);\n  item->setFaveFlag(true);\n  item->setTags(tagColors);\n  if (_isInSelectionMode) {\n    addStandardItemWithCheckbox(_faveFolder, item);\n    item->setVisibility(faveIsVisible);\n  } else {\n    _faveFolder->appendRow(item);\n  }\n}\n\nvoid FiltersView::selectFave(const QString & hash)\n{\n  // Select the fave if the model is enabled\n  if (ui->treeView->model() == &_model) {\n    FilterTreeItem * fave = findFave(hash);\n    if (fave) {\n      ui->treeView->setCurrentIndex(fave->index());\n      ui->treeView->scrollTo(fave->index(), QAbstractItemView::PositionAtCenter);\n      updateIndexBeforeClick();\n    }\n  }\n}\n\nvoid FiltersView::selectActualFilter(const QString & hash, const QList<QString> & path)\n{\n  QStandardItem * folder = getFolderFromPath(path);\n  if (folder) {\n    for (int row = 0; row < folder->rowCount(); ++row) {\n      auto filter = dynamic_cast<FilterTreeItem *>(folder->child(row));\n      if (filter && (filter->hash() == hash)) {\n        ui->treeView->setCurrentIndex(filter->index());\n        ui->treeView->scrollTo(filter->index(), QAbstractItemView::PositionAtCenter);\n        updateIndexBeforeClick();\n        return;\n      }\n    }\n  }\n}\n\nvoid FiltersView::removeFave(const QString & hash)\n{\n  FilterTreeItem * fave = findFave(hash);\n  if (fave) {\n    _model.removeRow(fave->row(), fave->index().parent());\n    if (_faveFolder->rowCount() == 0) {\n      removeFaveFolder();\n    }\n  }\n}\n\nvoid FiltersView::clear()\n{\n  removeFaveFolder();\n  _model.invisibleRootItem()->removeRows(0, _model.invisibleRootItem()->rowCount());\n  _model.setColumnCount(1);\n  _cachedFolder = _model.invisibleRootItem();\n  _cachedFolderPath.clear();\n  _indexBeforeClick = QModelIndex{};\n}\n\nvoid FiltersView::sort()\n{\n  _model.invisibleRootItem()->sortChildren(0);\n}\n\nvoid FiltersView::sortFaves()\n{\n  if (_faveFolder) {\n    _faveFolder->sortChildren(0);\n  }\n}\n\nvoid FiltersView::updateFaveItem(const QString & currentHash, const QString & newHash, const QString & newName)\n{\n  FilterTreeItem * item = findFave(currentHash);\n  if (!item) {\n    return;\n  }\n  item->setText(newName);\n  item->setHash(newHash);\n}\n\nvoid FiltersView::setHeader(const QString & header)\n{\n  _model.setHorizontalHeaderItem(0, new QStandardItem(header));\n}\n\nFilterTreeItem * FiltersView::selectedItem() const\n{\n  QModelIndex index = ui->treeView->currentIndex();\n  return filterTreeItemFromIndex(index);\n}\n\nFilterTreeItem * FiltersView::filterTreeItemFromIndex(QModelIndex index) const\n{\n  // Get filter item even if it is the checkbox which is actually selected\n  if (!index.isValid()) {\n    return nullptr;\n  }\n  QStandardItem * item = _model.itemFromIndex(index);\n  if (item) {\n    int row = index.row();\n    QStandardItem * parentFolder = item->parent();\n    // parent is 0 for top level items\n    if (!parentFolder) {\n      parentFolder = _model.invisibleRootItem();\n    }\n    QStandardItem * leftItem = parentFolder->child(row, 0);\n    if (leftItem) {\n      auto item = dynamic_cast<FilterTreeItem *>(leftItem);\n      if (item) {\n        return item;\n      }\n    }\n  }\n  return nullptr;\n}\n\nQString FiltersView::selectedFilterHash() const\n{\n  FilterTreeItem * item = selectedItem();\n  return item ? item->hash() : QString();\n}\n\nbool FiltersView::aFaveIsSelected() const\n{\n  FilterTreeItem * item = selectedItem();\n  return item && item->isFave();\n}\n\nvoid FiltersView::preserveExpandedFolders()\n{\n  if (ui->treeView->model() == &_emptyModel) {\n    return;\n  }\n  _expandedFolderPaths.clear();\n  preserveExpandedFolders(_model.invisibleRootItem(), _expandedFolderPaths);\n}\n\nvoid FiltersView::restoreExpandedFolders()\n{\n  expandFolders(_expandedFolderPaths);\n}\n\nvoid FiltersView::loadSettings(const QSettings &)\n{\n  FiltersVisibilityMap::load();\n  FiltersTagMap::load();\n}\n\nvoid FiltersView::saveSettings(QSettings & settings)\n{\n  if (_isInSelectionMode) {\n    saveFiltersVisibility(_model.invisibleRootItem());\n  }\n  saveFiltersTags(_model.invisibleRootItem());\n  preserveExpandedFolders();\n  settings.setValue(\"Config/ExpandedFolders\", QStringList(_expandedFolderPaths));\n  FiltersVisibilityMap::save();\n  FiltersTagMap::save();\n}\n\nvoid FiltersView::enableSelectionMode()\n{\n  _isInSelectionMode = true;\n}\n\nvoid FiltersView::disableSelectionMode()\n{\n  _model.setHorizontalHeaderItem(1, nullptr);\n  _isInSelectionMode = false;\n  saveFiltersVisibility(_model.invisibleRootItem());\n}\n\nvoid FiltersView::uncheckFullyUncheckedFolders()\n{\n  uncheckFullyUncheckedFolders(_model.invisibleRootItem());\n}\n\nvoid FiltersView::adjustTreeSize()\n{\n  ui->treeView->adjustSize();\n}\n\nvoid FiltersView::expandFolders(QList<QString> & folderPaths)\n{\n  expandFolders(folderPaths, _model.invisibleRootItem());\n}\n\nbool FiltersView::eventFilter(QObject * watched, QEvent * event)\n{\n  if (watched != ui->treeView) {\n    return QObject::eventFilter(watched, event);\n  }\n  if (event->type() == QEvent::KeyPress) {\n    auto keyEvent = dynamic_cast<QKeyEvent *>(event);\n    if (keyEvent && (keyEvent->key() == Qt::Key_Delete)) {\n      FilterTreeItem * item = selectedItem();\n      if (item && item->isFave()) {\n        QMessageBox::StandardButton button;\n        button = QMessageBox::question(this,                                                                                      //\n                                       tr(\"Remove fave\"),                                                                         //\n                                       QString(tr(\"Do you really want to remove the following fave?\\n\\n%1\\n\")).arg(item->text()), //\n                                       QMessageBox::Yes | QMessageBox::No,                                                        //\n                                       QMessageBox::Yes);\n        if (button == QMessageBox::Yes) {\n          emit faveRemovalRequested(item->hash());\n          return true;\n        }\n      }\n    }\n  }\n  return QObject::eventFilter(watched, event);\n}\n\nvoid FiltersView::setVisibleTagColors(const TagColorSet & colors)\n{\n  _visibleTagColors = colors;\n}\n\nTagColorSet FiltersView::visibleTagColors() const\n{\n  return _visibleTagColors;\n}\n\nvoid FiltersView::expandFolders(const QList<QString> & folderPaths, QStandardItem * folder)\n{\n  int rows = folder->rowCount();\n  for (int row = 0; row < rows; ++row) {\n    auto * subFolder = dynamic_cast<FilterTreeFolder *>(folder->child(row));\n    if (subFolder) {\n      if (folderPaths.contains(subFolder->path().join(FilterTreePathSeparator))) {\n        ui->treeView->expand(subFolder->index());\n      } else {\n        ui->treeView->collapse(subFolder->index());\n      }\n      expandFolders(folderPaths, subFolder);\n    }\n  }\n}\n\nvoid FiltersView::editSelectedFaveName()\n{\n  FilterTreeItem * item = selectedItem();\n  if (item && item->isFave()) {\n    ui->treeView->edit(item->index());\n  }\n}\n\nvoid FiltersView::expandAll()\n{\n  auto index = ui->treeView->currentIndex();\n  ui->treeView->expandAll();\n  if (index.isValid()) {\n    ui->treeView->scrollTo(index, QAbstractItemView::PositionAtCenter);\n  }\n}\n\nvoid FiltersView::collapseAll()\n{\n  ui->treeView->collapseAll();\n}\n\nvoid FiltersView::expandFaveFolder()\n{\n  if (_faveFolder) {\n    ui->treeView->expand(_faveFolder->index());\n  }\n}\n\nvoid FiltersView::onCustomContextMenu(const QPoint & point)\n{\n  QModelIndex index = ui->treeView->indexAt(point);\n  if (!index.isValid()) {\n    return;\n  }\n  FilterTreeItem * item = filterTreeItemFromIndex(index);\n  if (!item) {\n    return;\n  }\n  onItemClicked(index);\n  if (item->isFave()) {\n    _faveContextMenu->deleteLater();\n    _faveContextMenu = itemContextMenu(MenuType::Fave, item);\n    _faveContextMenu->exec(ui->treeView->mapToGlobal(point));\n  } else {\n    _filterContextMenu->deleteLater();\n    _filterContextMenu = itemContextMenu(MenuType::Filter, item);\n    _filterContextMenu->exec(ui->treeView->mapToGlobal(point));\n  }\n}\n\nvoid FiltersView::onRenameFaveFinished(QWidget * editor)\n{\n  auto lineEdit = dynamic_cast<QLineEdit *>(editor);\n  Q_ASSERT_X(lineEdit, \"Rename Fave\", \"Editor is not a QLineEdit!\");\n  FilterTreeItem * item = selectedItem();\n  if (!item) {\n    return;\n  }\n  emit faveRenamed(item->hash(), lineEdit->text());\n}\n\nvoid FiltersView::onReturnKeyPressedInFiltersTree()\n{\n  FilterTreeItem * item = selectedItem();\n  if (item) {\n    emit filterSelected(item->hash());\n  } else {\n    QModelIndex index = ui->treeView->currentIndex();\n    QStandardItem * item = _model.itemFromIndex(index);\n    FilterTreeFolder * folder = item ? dynamic_cast<FilterTreeFolder *>(item) : nullptr;\n    if (folder) {\n      if (ui->treeView->isExpanded(index)) {\n        ui->treeView->collapse(index);\n      } else {\n        ui->treeView->expand(index);\n      }\n    }\n    emit filterSelected(QString());\n  }\n}\n\nvoid FiltersView::onItemClicked(QModelIndex index)\n{\n  if (index != _indexBeforeClick) {\n    FilterTreeItem * item = filterTreeItemFromIndex(index);\n    if (item) {\n      emit filterSelected(item->hash());\n    } else {\n      emit filterSelected(QString());\n    }\n  }\n  updateIndexBeforeClick();\n}\n\nvoid FiltersView::onItemChanged(QStandardItem * item)\n{\n  if (!item->isCheckable()) {\n    return;\n  }\n  int row = item->index().row();\n  QStandardItem * parentFolder = item->parent();\n  if (!parentFolder) {\n    // parent is 0 for top level items\n    parentFolder = _model.invisibleRootItem();\n  }\n  QStandardItem * leftItem = parentFolder->child(row);\n  if (!leftItem) {\n    return;\n  }\n  auto folder = dynamic_cast<FilterTreeFolder *>(leftItem);\n  if (folder) {\n    folder->applyVisibilityStatusToFolderContents();\n  }\n  // Force an update of the view by triggering a call of\n  // QStandardItem::emitDataChanged()\n  leftItem->setData(leftItem->data());\n}\n\nvoid FiltersView::onContextMenuRemoveFave()\n{\n  emit faveRemovalRequested(selectedFilterHash());\n}\n\nvoid FiltersView::onContextMenuRenameFave()\n{\n  editSelectedFaveName();\n}\n\nvoid FiltersView::onContextMenuAddFave()\n{\n  emit faveAdditionRequested(selectedFilterHash());\n}\n\nvoid FiltersView::uncheckFullyUncheckedFolders(QStandardItem * folder)\n{\n  int rows = folder->rowCount();\n  for (int row = 0; row < rows; ++row) {\n    auto subFolder = dynamic_cast<FilterTreeFolder *>(folder->child(row));\n    if (subFolder) {\n      uncheckFullyUncheckedFolders(subFolder);\n      if (subFolder->isFullyUnchecked()) {\n        subFolder->setVisibility(false);\n      }\n    }\n  }\n}\n\nvoid FiltersView::preserveExpandedFolders(QStandardItem * folder, QList<QString> & list)\n{\n  int rows = folder->rowCount();\n  for (int row = 0; row < rows; ++row) {\n    auto subFolder = dynamic_cast<FilterTreeFolder *>(folder->child(row));\n    if (subFolder) {\n      if (ui->treeView->isExpanded(subFolder->index())) {\n        list.push_back(subFolder->path().join(FilterTreePathSeparator));\n      }\n      preserveExpandedFolders(subFolder, list);\n    }\n  }\n}\n\nvoid FiltersView::createFaveFolder()\n{\n  if (_faveFolder) {\n    return;\n  }\n  _faveFolder = new FilterTreeFolder(tr(FAVE_FOLDER_TEXT));\n  _faveFolder->setFaveFolderFlag(true);\n  _model.invisibleRootItem()->appendRow(_faveFolder);\n  _model.invisibleRootItem()->sortChildren(0);\n}\n\nvoid FiltersView::removeFaveFolder()\n{\n  if (!_faveFolder) {\n    return;\n  }\n  _model.invisibleRootItem()->removeRow(_faveFolder->row());\n  _faveFolder = nullptr;\n}\n\nvoid FiltersView::addStandardItemWithCheckbox(QStandardItem * folder, FilterTreeAbstractItem * item)\n{\n  QList<QStandardItem *> items;\n  items.push_back(item);\n  auto checkBox = new QStandardItem;\n  checkBox->setCheckable(true);\n  checkBox->setEditable(false);\n  item->setVisibilityItem(checkBox);\n  items.push_back(checkBox);\n  folder->appendRow(items);\n}\n\nQStandardItem * FiltersView::getFolderFromPath(const QList<QString> & path)\n{\n  if (path == _cachedFolderPath) {\n    return _cachedFolder;\n  }\n  _cachedFolder = getFolderFromPath(_model.invisibleRootItem(), path);\n  _cachedFolderPath = path;\n  return _cachedFolder;\n}\n\nQStandardItem * FiltersView::createFolder(QStandardItem * parent, QList<QString> path)\n{\n  Q_ASSERT_X(parent, \"FiltersView\", \"Create folder path in null parent\");\n  if (path.isEmpty()) {\n    return parent;\n  }\n\n  // Look for already existing base folder in parent\n  QString translatedFirstFolderText = FilterTreeAbstractItem::removeWarningPrefix(FilterTextTranslator::translate(path.front()));\n  for (int row = 0; row < parent->rowCount(); ++row) {\n    auto folder = dynamic_cast<FilterTreeFolder *>(parent->child(row));\n    if (folder && (folder->text() == translatedFirstFolderText)) {\n      path.pop_front();\n      return createFolder(folder, path);\n    }\n  }\n  // Folder does not exist, we create it\n  auto folder = new FilterTreeFolder(path.front());\n  path.pop_front();\n  if (_isInSelectionMode) {\n    addStandardItemWithCheckbox(parent, folder);\n    folder->setVisibility(true);\n  } else {\n    parent->appendRow(folder);\n  }\n  return createFolder(folder, path);\n}\n\nQStandardItem * FiltersView::getFolderFromPath(QStandardItem * parent, QList<QString> path)\n{\n  Q_ASSERT_X(parent, \"FiltersView\", \"Get folder path from null parent\");\n  if (path.isEmpty()) {\n    return parent;\n  }\n  QString translatedFirstFolderText = FilterTreeAbstractItem::removeWarningPrefix(FilterTextTranslator::translate(path.front()));\n  for (int row = 0; row < parent->rowCount(); ++row) {\n    auto folder = dynamic_cast<FilterTreeFolder *>(parent->child(row));\n    if (folder && (folder->text() == translatedFirstFolderText)) {\n      path.pop_front();\n      return getFolderFromPath(folder, path);\n    }\n  }\n  return nullptr;\n}\n\nvoid FiltersView::saveFiltersVisibility(QStandardItem * item)\n{\n  if (!item) {\n    return;\n  }\n  auto filterItem = dynamic_cast<FilterTreeItem *>(item);\n  if (filterItem) {\n    FiltersVisibilityMap::setVisibility(filterItem->hash(), filterItem->isVisible());\n    return;\n  }\n  int rows = item->rowCount();\n  for (int row = 0; row < rows; ++row) {\n    saveFiltersVisibility(item->child(row));\n  }\n}\n\nvoid FiltersView::saveFiltersTags(QStandardItem * item)\n{\n  if (!item) {\n    return;\n  }\n  auto filterItem = dynamic_cast<FilterTreeItem *>(item);\n  if (filterItem) {\n    FiltersTagMap::setFilterTags(filterItem->hash(), filterItem->tags());\n    return;\n  }\n  int rows = item->rowCount();\n  for (int row = 0; row < rows; ++row) {\n    saveFiltersTags(item->child(row));\n  }\n}\n\nQMenu * FiltersView::itemContextMenu(MenuType type, FilterTreeItem * item)\n{\n  QMenu * menu = new QMenu(this);\n  QAction * action;\n  switch (type) {\n  case MenuType::Fave:\n    action = menu->addAction(tr(\"Rename Fave\"));\n    connect(action, &QAction::triggered, this, &FiltersView::onContextMenuRenameFave);\n    action = menu->addAction(tr(\"Remove Fave\"));\n    connect(action, &QAction::triggered, this, &FiltersView::onContextMenuRemoveFave);\n    action = menu->addAction(tr(\"Clone Fave\"));\n    connect(action, &QAction::triggered, this, &FiltersView::onContextMenuAddFave);\n    break;\n  case MenuType::Filter:\n    action = menu->addAction(tr(\"Add Fave\"));\n    connect(action, &QAction::triggered, this, &FiltersView::onContextMenuAddFave);\n    break;\n  }\n  TagColorSet tags = item->tags();\n  menu->addSeparator();\n  for (TagColor color : TagColorSet::ActualColors) {\n    QAction * action = TagAssets::action(menu,  //\n                                         color, //\n                                         tags.contains(color) ? TagAssets::IconMark::Check : TagAssets::IconMark::None);\n    connect(action, &QAction::triggered, [this, item, color]() { //\n      toggleItemTag(item, color);\n      emit tagToggled(int(color));\n    });\n    menu->addAction(action);\n  }\n  menu->addSeparator();\n  int tagCount[int(TagColor::Count)];\n  TagColorSet existingColors = FiltersTagMap::usedColors(tagCount);\n  QMenu * removeMenu = menu->addMenu(tr(\"Remove All\"));\n  if (existingColors.isEmpty()) {\n    removeMenu->setEnabled(false);\n  } else {\n    for (TagColor color : existingColors) {\n      int iColor = int(color);\n      removeMenu->addAction(action = TagAssets::action(removeMenu, color, TagAssets::IconMark::None));\n      action->setText(QString(tr(\"%1 (%2 %3)\")).arg(TagAssets::colorName(color)).arg(tagCount[iColor]).arg((tagCount[iColor] != 1) ? tr(\"Filters\") : tr(\"Filter\")));\n      connect(action, &QAction::triggered, [this, color, iColor]() {\n        FiltersTagMap::removeAllTags(color);\n        emit tagToggled(iColor);\n      });\n    }\n  }\n  return menu;\n}\n\nvoid FiltersView::toggleItemTag(FilterTreeItem * item, TagColor color)\n{\n  item->toggleTag(color);\n  if (!_visibleTagColors.contains(color)) {\n    return;\n  }\n  QStandardItem * folder = item->parent();\n  folder->removeRow(item->row());\n  while (folder && (folder != _model.invisibleRootItem()) && (folder->rowCount() == 0)) {\n    QStandardItem * folderParent = folder->parent();\n    if (!folderParent) {\n      folderParent = _model.invisibleRootItem();\n    }\n    const int row = folder->row();\n    folderParent->removeRow(row);\n    folder = folderParent;\n  }\n}\n\nvoid FiltersView::updateIndexBeforeClick()\n{\n  _indexBeforeClick = ui->treeView->currentIndex();\n}\n\nFilterTreeItem * FiltersView::findFave(const QString & hash)\n{\n  const int count = _faveFolder ? _faveFolder->rowCount() : 0;\n  for (int faveIndex = 0; faveIndex < count; ++faveIndex) {\n    auto item = dynamic_cast<FilterTreeItem *>(_faveFolder->child(faveIndex));\n    if (item && (item->hash() == hash)) {\n      return item;\n    }\n  }\n  return nullptr;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterSelector/FiltersView/FiltersView.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FiltersView.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FILTERSVIEW_H\n#define GMIC_QT_FILTERSVIEW_H\n\n#include <QAction>\n#include <QList>\n#include <QMenu>\n#include <QModelIndex>\n#include <QStandardItemModel>\n#include <QString>\n#include <QWidget>\n#include \"Tags.h\"\nclass QSettings;\nclass QEvent;\n\nnamespace Ui\n{\nclass FiltersView;\n}\n\nnamespace GmicQt\n{\n\nclass FilterTreeFolder;\nclass FilterTreeItem;\nclass FilterTreeAbstractItem;\n\nclass FiltersView : public QWidget {\n  Q_OBJECT\npublic:\n  FiltersView(QWidget * parent);\n  ~FiltersView();\n  void enableModel();\n  void disableModel();\n  void createFolder(const QList<QString> & path);\n  void addFilter(const QString & text, const QString & hash, const QList<QString> & path, bool warning);\n  void addFave(const QString & text, const QString & hash);\n  void selectFave(const QString & hash);\n  void selectActualFilter(const QString & hash, const QList<QString> & path);\n  void removeFave(const QString & hash);\n  void clear();\n  void sort();\n  void sortFaves();\n  void updateFaveItem(const QString & currentHash, const QString & newHash, const QString & newName);\n  void setHeader(const QString & header);\n  FilterTreeItem * selectedItem() const;\n  QString selectedFilterHash() const;\n  bool aFaveIsSelected() const;\n\n  void preserveExpandedFolders();\n  void restoreExpandedFolders();\n\n  void loadSettings(const QSettings & settings);\n  void saveSettings(QSettings & settings);\n\n  void enableSelectionMode();\n  void disableSelectionMode();\n\n  void uncheckFullyUncheckedFolders();\n  void adjustTreeSize();\n  void expandFolders(QList<QString> & folderPaths);\n\n  bool eventFilter(QObject * watched, QEvent * event) override;\n\n  void setVisibleTagColors(const TagColorSet & colors);\n  TagColorSet visibleTagColors() const;\n\nsignals:\n  void filterSelected(QString hash);\n  void faveRenamed(QString hash, QString newName);\n  void faveRemovalRequested(QString hash);\n  void faveAdditionRequested(QString hash);\n  void tagToggled(int iColor);\n\npublic slots:\n  void editSelectedFaveName();\n  void expandAll();\n  void collapseAll();\n  void expandFaveFolder();\n  void onCustomContextMenu(const QPoint & point);\n\nprivate slots:\n  void onRenameFaveFinished(QWidget * editor);\n  void onReturnKeyPressedInFiltersTree();\n  void onItemClicked(QModelIndex index);\n  void onItemChanged(QStandardItem * item);\n  void onContextMenuRemoveFave();\n  void onContextMenuRenameFave();\n  void onContextMenuAddFave();\n\nprivate:\n  FilterTreeItem * filterTreeItemFromIndex(QModelIndex index) const;\n  void expandFolders(const QList<QString> & folderPaths, QStandardItem * folder);\n  void uncheckFullyUncheckedFolders(QStandardItem * folder);\n  void preserveExpandedFolders(QStandardItem * folder, QList<QString> & list);\n  void createFaveFolder();\n  void removeFaveFolder();\n  void addStandardItemWithCheckbox(QStandardItem * folder, FilterTreeAbstractItem * item);\n  QStandardItem * getFolderFromPath(const QList<QString> & path);\n  QStandardItem * createFolder(QStandardItem * parent, QList<QString> path);\n  FilterTreeItem * findFave(const QString & hash);\n  static QStandardItem * getFolderFromPath(QStandardItem * parent, QList<QString> path);\n  static void saveFiltersVisibility(QStandardItem * item);\n  static void saveFiltersTags(QStandardItem * item);\n  enum class MenuType\n  {\n    Fave,\n    Filter\n  };\n  QMenu * itemContextMenu(MenuType type, FilterTreeItem * item);\n  void toggleItemTag(FilterTreeItem * item, TagColor color);\n  Ui::FiltersView * ui;\n\n  QStandardItemModel _model;\n  QStandardItemModel _emptyModel;\n  FilterTreeFolder * _faveFolder;\n  QList<QString> _cachedFolderPath;\n  QStandardItem * _cachedFolder;\n  QList<QString> _expandedFolderPaths;\n  static const QString FilterTreePathSeparator;\n  bool _isInSelectionMode;\n  QMenu * _faveContextMenu;\n  QMenu * _filterContextMenu;\n  TagColorSet _visibleTagColors;\n  QModelIndex _indexBeforeClick;\n  void updateIndexBeforeClick();\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FILTERSVIEW_H\n"
  },
  {
    "path": "src/FilterSelector/FiltersView/TreeView.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file TreeView.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"TreeView.h\"\n#include <QKeyEvent>\n\nnamespace GmicQt\n{\n\nTreeView::TreeView(QWidget * parent) : QTreeView(parent) {}\n\nvoid TreeView::keyPressEvent(QKeyEvent * event)\n{\n  if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) {\n    emit returnKeyPressed();\n  }\n  QTreeView::keyPressEvent(event);\n}\n\nTreeView::~TreeView() {}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterSelector/FiltersView/TreeView.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file TreeView.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_TREEVIEW_H\n#define GMIC_QT_TREEVIEW_H\n\n#include <QDebug>\n#include <QTreeView>\n#include <QWidget>\n#include \"Common.h\"\n\nnamespace GmicQt\n{\nclass TreeView : public QTreeView {\n  Q_OBJECT\npublic:\n  TreeView(QWidget * parent);\n  ~TreeView() override;\n  void keyPressEvent(QKeyEvent * event) override;\nsignals:\n  void returnKeyPressed();\n\nprivate:\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_TREEVIEW_H\n"
  },
  {
    "path": "src/FilterSelector/FiltersVisibilityMap.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FiltersVisibilityMap.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FiltersVisibilityMap.h\"\n#include <QBuffer>\n#include <QByteArray>\n#include <QDataStream>\n#include <QDebug>\n#include <QFile>\n#include \"Common.h\"\n#include \"Globals.h\"\n#include \"GmicQt.h\"\n#include \"Logger.h\"\n#include \"Utils.h\"\n\nnamespace GmicQt\n{\n\nQSet<QString> FiltersVisibilityMap::_hiddenFilters;\n\nbool FiltersVisibilityMap::filterIsVisible(const QString & hash)\n{\n  return !_hiddenFilters.contains(hash);\n}\n\nvoid FiltersVisibilityMap::setVisibility(const QString & hash, bool visible)\n{\n  if (visible) {\n    _hiddenFilters.remove(hash);\n  } else {\n    _hiddenFilters.insert(hash);\n  }\n}\n\nvoid FiltersVisibilityMap::load()\n{\n  QString path = QString(\"%1%2\").arg(gmicConfigPath(false), FILTERS_VISIBILITY_FILENAME);\n  QFile file(path);\n  if (file.open(QFile::ReadOnly)) {\n    QString line;\n    do {\n      line = file.readLine();\n    } while (file.bytesAvailable() && line != QString(\"[Hidden filters list (compressed)]\\n\"));\n    QByteArray data = qUncompress(file.readAll());\n    QBuffer buffer(&data);\n    buffer.open(QIODevice::ReadOnly);\n\n    bool ok;\n    qint32 count = buffer.readLine().trimmed().toInt(&ok);\n    if (ok) {\n      QString hash;\n      while (count--) {\n        hash = buffer.readLine().trimmed();\n        _hiddenFilters.insert(hash);\n      }\n    } else {\n      Logger::error(\"Cannot read visibility file (\" + file.fileName() + \")\");\n    }\n  }\n}\n\nvoid FiltersVisibilityMap::save()\n{\n  QByteArray data;\n  QBuffer buffer(&data);\n  buffer.open(QIODevice::WriteOnly);\n  qint32 count = _hiddenFilters.size();\n  buffer.write(QString(\"%1\\n\").arg(count).toLatin1());\n  for (const QString & str : _hiddenFilters) {\n    buffer.write((str + QChar('\\n')).toLatin1());\n  }\n  QString path = QString(\"%1%2\").arg(gmicConfigPath(true), FILTERS_VISIBILITY_FILENAME);\n  QByteArray array = QString(\"Version=%1\\n[Hidden filters list (compressed)]\\n\").arg(gmicVersionString()).toLocal8Bit();\n  array += qCompress(data);\n  if (!safelyWrite(array, path)) {\n    Logger::error(\"Saving filters visibility in \" + path);\n  }\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterSelector/FiltersVisibilityMap.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FiltersVisibilityMap.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FILTERSVISIBILITYMAP_H\n#define GMIC_QT_FILTERSVISIBILITYMAP_H\n\n#include <QSet>\n\nnamespace GmicQt\n{\nclass FiltersVisibilityMap {\npublic:\n  static bool filterIsVisible(const QString & hash);\n  static void setVisibility(const QString & hash, bool visible);\n  static void load();\n  static void save();\n\nprotected:\nprivate:\n  static QSet<QString> _hiddenFilters;\n  FiltersVisibilityMap() = delete;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FILTERSVISIBILITYMAP_H\n"
  },
  {
    "path": "src/FilterSyncRunner.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterSyncRunner.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterSyncRunner.h\"\n#include <QDebug>\n#include <QThread>\n#include <iostream>\n#include \"FilterThread.h\"\n#include \"GmicStdlib.h\"\n#include \"Logger.h\"\n#include \"Misc.h\"\n#include \"PersistentMemory.h\"\n#include \"Settings.h\"\n#include \"gmic.h\"\n\nnamespace GmicQt\n{\n\nFilterSyncRunner::FilterSyncRunner(QObject * parent, const QString & command, const QString & arguments, const QString & environment)\n    : QObject(parent), _command(command), _arguments(arguments), _environment(environment), //\n      _images(new gmic_library::gmic_list<float>),                                          //\n      _imageNames(new gmic_library::gmic_list<char>),                                       //\n      _persistentMemoryOutput(new gmic_library::gmic_image<char>)\n{\n#ifdef _IS_MACOS_\n  static bool stackSize8MB = false;\n  if (!stackSize8MB) {\n    QThread::currentThread()->setStackSize(8 * 1024 * 1024);\n    stackSize8MB = true;\n  }\n#endif\n  _gmicAbort = false;\n  _failed = false;\n  _gmicProgress = 0.0f;\n}\n\nFilterSyncRunner::~FilterSyncRunner()\n{\n  delete _images;\n  delete _imageNames;\n  delete _persistentMemoryOutput;\n}\n\nvoid FilterSyncRunner::setArguments(const QString & str)\n{\n  _arguments = str;\n}\n\nvoid FilterSyncRunner::setImageNames(const gmic_library::gmic_list<char> & imageNames)\n{\n  *_imageNames = imageNames;\n}\n\nvoid FilterSyncRunner::swapImages(gmic_library::gmic_list<float> & images)\n{\n  _images->swap(images);\n}\n\nvoid FilterSyncRunner::setInputImages(const gmic_library::gmic_list<float> & list)\n{\n  *_images = list;\n}\n\nconst gmic_library::gmic_list<float> & FilterSyncRunner::images() const\n{\n  return *_images;\n}\n\nconst gmic_library::gmic_list<char> & FilterSyncRunner::imageNames() const\n{\n  return *_imageNames;\n}\n\ngmic_library::gmic_image<char> & FilterSyncRunner::persistentMemoryOutput()\n{\n  return *_persistentMemoryOutput;\n}\n\nQStringList FilterSyncRunner::gmicStatus() const\n{\n  return FilterThread::status2StringList(_gmicStatus);\n}\n\nQList<int> FilterSyncRunner::parametersVisibilityStates() const\n{\n  return FilterThread::status2Visibilities(_gmicStatus);\n}\n\nQString FilterSyncRunner::errorMessage() const\n{\n  return _errorMessage;\n}\n\nbool FilterSyncRunner::failed() const\n{\n  return _failed;\n}\n\nbool FilterSyncRunner::aborted() const\n{\n  return _gmicAbort;\n}\n\nfloat FilterSyncRunner::progress() const\n{\n  return _gmicProgress;\n}\n\nQString FilterSyncRunner::fullCommand() const\n{\n  QString result = _command;\n  appendWithSpace(result, _arguments);\n  return result;\n}\n\nvoid FilterSyncRunner::setLogSuffix(const QString & text)\n{\n  _logSuffix = text;\n}\n\nvoid FilterSyncRunner::abortGmic()\n{\n  _gmicAbort = true;\n}\n\nvoid FilterSyncRunner::run()\n{\n  _errorMessage.clear();\n  _failed = false;\n  QString fullCommandLine;\n  try {\n    fullCommandLine = commandFromOutputMessageMode(Settings::outputMessageMode());\n    appendWithSpace(fullCommandLine, _command);\n    appendWithSpace(fullCommandLine, _arguments);\n    _gmicAbort = false;\n    _gmicProgress = -1;\n    Logger::log(fullCommandLine, _logSuffix, true);\n    gmic gmicInstance(_environment.isEmpty() ? nullptr : QString(\"%1\").arg(_environment).toLocal8Bit().constData(), GmicStdLib::Array.constData(), true, &_gmicProgress, &_gmicAbort, 0.0f);\n    if (PersistentMemory::image()) {\n      if (*PersistentMemory::image() == gmic_store) {\n        gmicInstance.set_variable(\"_persistent\", PersistentMemory::image());\n      } else {\n        gmicInstance.set_variable(\"_persistent\", '=', PersistentMemory::image());\n      }\n    }\n    gmicInstance.set_variable(\"_host\", '=', GmicQtHost::ApplicationShortname);\n    gmicInstance.set_variable(\"_tk\", '=', \"qt\");\n    gmicInstance.run(fullCommandLine.toLocal8Bit().constData(), *_images, *_imageNames);\n    _gmicStatus = QString::fromLocal8Bit(gmicInstance.status);\n    gmicInstance.get_variable(\"_persistent\").move_to(*_persistentMemoryOutput);\n  } catch (gmic_exception & e) {\n    _images->assign();\n    _imageNames->assign();\n    const char * message = e.what();\n    _errorMessage = message;\n    Logger::error(QString(\"When running command '%1', this error occurred:\\n%2\").arg(fullCommandLine).arg(message), true);\n    _failed = true;\n  }\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterSyncRunner.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterSyncRunner.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_FILTERSYNCRUNNER_H\n#define GMIC_QT_FILTERSYNCRUNNER_H\n\n#include <QObject>\n#include <QString>\n#include <QTime>\n\n#include \"Common.h\"\n#include \"GmicQt.h\"\n#include \"Host/GmicQtHost.h\"\nclass QObject;\n\nnamespace gmic_library\n{\ntemplate <typename T> struct gmic_list;\n}\n\nnamespace GmicQt\n{\n\nclass FilterSyncRunner : public QObject {\n  Q_OBJECT\npublic:\n  FilterSyncRunner(QObject * parent, const QString & command, const QString & arguments, const QString & environment);\n\n  virtual ~FilterSyncRunner();\n  void setArguments(const QString &);\n  void setInputImages(const gmic_library::gmic_list<float> & list);\n  void setImageNames(const gmic_library::gmic_list<char> & imageNames);\n  void swapImages(gmic_library::gmic_list<float> & images);\n  const gmic_library::gmic_list<float> & images() const;\n  const gmic_library::gmic_list<char> & imageNames() const;\n  gmic_library::gmic_image<char> & persistentMemoryOutput();\n  QStringList gmicStatus() const;\n  QList<int> parametersVisibilityStates() const;\n  QString errorMessage() const;\n  bool failed() const;\n  bool aborted() const;\n  float progress() const;\n  QString fullCommand() const;\n  void setLogSuffix(const QString & text);\n  void run();\n  void abortGmic();\n\nprivate:\n  QString _command;\n  QString _arguments;\n  QString _environment;\n  gmic_library::gmic_list<float> * _images;\n  gmic_library::gmic_list<char> * _imageNames;\n  gmic_library::gmic_image<char> * _persistentMemoryOutput;\n  bool _gmicAbort;\n  bool _failed;\n  QString _gmicStatus;\n  float _gmicProgress;\n  QString _errorMessage;\n  QString _name;\n  QString _logSuffix;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FILTERSYNCRUNNER_H\n"
  },
  {
    "path": "src/FilterTextTranslator.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n * @file   FilterTextTranslator.cpp\n * @author Sebastien Fourey\n * @date   Sep 2020\n *\n * @brief  Definition of the class FilterTextTranslator\n *\n * @copyright\n */\n#include \"FilterTextTranslator.h\"\n#include <QDebug>\n#include \"Common.h\"\n\nnamespace GmicQt\n{\nQString FilterTextTranslator::translate(const QString & str)\n{\n  return QCoreApplication::translate(\"FilterTextTranslator\", str.toUtf8().constData());\n}\nQString FilterTextTranslator::translate(const QString & str, const QString & filterName)\n{\n  QByteArray text = str.toUtf8();\n  QByteArray comment = filterName.toUtf8();\n  QString result = QCoreApplication::translate(\"FilterTextTranslator\", text.constData(), comment.constData());\n  if (result == str) {\n    return QCoreApplication::translate(\"FilterTextTranslator\", text);\n  }\n  return result;\n}\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterTextTranslator.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n * @file   FilterTextTranslator.h\n * @author Sebastien Fourey\n * @date   Sep 2020\n *\n * @brief  Declaration of the class FilterTextTranslator\n *\n * @copyright\n */\n#ifndef GMIC_QT_FILTERTEXTTRANSLATOR_H\n#define GMIC_QT_FILTERTEXTTRANSLATOR_H\n\n#include <QByteArray>\n#include <QCoreApplication>\n#include <QDebug>\n#include <QObject>\n#include <QString>\n#include \"Common.h\"\nnamespace GmicQt\n{\n/**\n *  The FilterTextTranslator class.\n */\nclass FilterTextTranslator : public QObject {\n  Q_OBJECT\npublic:\n  FilterTextTranslator() = delete;\n  static QString translate(const QString & str);\n  static QString translate(const QString & str, const QString & filterName);\n\nprotected:\nprivate:\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_FILTERTEXTTRANSLATOR_H\n"
  },
  {
    "path": "src/FilterThread.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterThread.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"FilterThread.h\"\n#include <QDebug>\n#include <QRegularExpression>\n#include <iostream>\n#include \"FilterParameters/AbstractParameter.h\"\n#include \"GmicStdlib.h\"\n#include \"Logger.h\"\n#include \"Misc.h\"\n#include \"PersistentMemory.h\"\n#include \"Settings.h\"\n#include \"gmic.h\"\n\nnamespace GmicQt\n{\n\nFilterThread::FilterThread(QObject * parent, const QString & command, const QString & arguments, const QString & environment)\n    : QThread(parent), _command(command), _arguments(arguments), _environment(environment), //\n      _images(new gmic_library::gmic_list<float>),                                          //\n      _imageNames(new gmic_library::gmic_list<char>),                                       //\n      _persistentMemoryOutput(new gmic_library::gmic_image<char>)\n{\n  _gmicAbort = false;\n  _failed = false;\n  _gmicProgress = 0.0f;\n#ifdef _IS_MACOS_\n  setStackSize(8 * 1024 * 1024);\n#endif\n}\n\nFilterThread::~FilterThread()\n{\n  delete _images;\n  delete _imageNames;\n  delete _persistentMemoryOutput;\n}\n\nvoid FilterThread::setImageNames(const gmic_library::gmic_list<char> & imageNames)\n{\n  *_imageNames = imageNames;\n}\n\nvoid FilterThread::swapImages(gmic_library::gmic_list<float> & images)\n{\n  _images->swap(images);\n}\n\nvoid FilterThread::setInputImages(const gmic_library::gmic_list<float> & list)\n{\n  *_images = list;\n}\n\nconst gmic_library::gmic_list<float> & FilterThread::images() const\n{\n  return *_images;\n}\n\nconst gmic_library::gmic_list<char> & FilterThread::imageNames() const\n{\n  return *_imageNames;\n}\n\ngmic_library::gmic_image<char> & FilterThread::persistentMemoryOutput()\n{\n  return *_persistentMemoryOutput;\n}\n\nQStringList FilterThread::status2StringList(QString status)\n{\n  // Check if status matches something like \"{...}{...}_1{...}_0\"\n  const QChar front = QChar::fromLatin1(gmic_lbrace);\n  QRegularExpression back(QString(\"%1(_[012])?$\").arg(QChar::fromLatin1(gmic_rbrace)));\n  if (!(status.startsWith(front) && status.contains(back))) {\n    return QStringList();\n  }\n  status.remove(0, 1);\n  status.remove(back);\n  QRegularExpression separator(QChar::fromLatin1(gmic_rbrace) + QString(\"(_[012])?\") + QChar::fromLatin1(gmic_lbrace));\n  QStringList list = status.split(separator);\n  QStringList::iterator it = list.begin();\n  while (it != list.end()) {\n    QByteArray array = it->toLocal8Bit();\n    gmic::strreplace_fw(array.data());\n    *it++ = QString::fromLocal8Bit(array);\n  }\n  return list;\n}\n\nQList<int> FilterThread::status2Visibilities(const QString & status)\n{\n  if (status.isEmpty()) {\n    return QList<int>();\n  }\n  // Check if status matches something like \"{...}{...}_1{...}_0\"\n  const QChar front = QChar::fromLatin1(gmic_lbrace);\n  QRegularExpression back(QString(\"%1(_[012])?$\").arg(QChar::fromLatin1(gmic_rbrace)));\n  if (!(status.startsWith(front) && status.contains(back))) {\n    return QList<int>();\n  }\n\n  QByteArray ba = status.toLocal8Bit();\n  const char * pc = ba.constData();\n  const char * limit = pc + ba.size();\n\n  QList<int> result;\n  while (pc < limit) {\n    if (*pc == gmic_rbrace) {\n      if ((pc < limit - 2) && (pc[1] == '_') && (pc[2] >= '0') && (pc[2] <= '2') && (!pc[3] || (pc[3] == gmic_lbrace))) {\n        result.push_back(pc[2] - '0'); // AbstractParameter::VisibilityState\n        pc += 3;\n      } else if (!pc[1] || (pc[1] == gmic_lbrace)) {\n        result.push_back((int)AbstractParameter::VisibilityState::Unspecified);\n        ++pc;\n      } else {\n        return QList<int>();\n      }\n    } else {\n      ++pc;\n    }\n  }\n  return result;\n}\n\nQStringList FilterThread::gmicStatus() const\n{\n  return status2StringList(_gmicStatus);\n}\n\nQList<int> FilterThread::parametersVisibilityStates() const\n{\n  return status2Visibilities(_gmicStatus);\n}\n\nQString FilterThread::errorMessage() const\n{\n  return _errorMessage;\n}\n\nbool FilterThread::failed() const\n{\n  return _failed;\n}\n\nbool FilterThread::aborted() const\n{\n  return _gmicAbort;\n}\n\nint FilterThread::duration() const\n{\n  return static_cast<int>(_startTime.elapsed());\n}\n\nfloat FilterThread::progress() const\n{\n  return _gmicProgress;\n}\n\nQString FilterThread::fullCommand() const\n{\n  QString result = _command;\n  appendWithSpace(result, _arguments);\n  return result;\n}\n\nvoid FilterThread::setLogSuffix(const QString & text)\n{\n  _logSuffix = text;\n}\n\nvoid FilterThread::abortGmic()\n{\n  _gmicAbort = true;\n}\n\nvoid FilterThread::run()\n{\n  _startTime.start();\n  _errorMessage.clear();\n  _failed = false;\n  QString fullCommandLine;\n  try {\n    fullCommandLine = commandFromOutputMessageMode(Settings::outputMessageMode());\n    appendWithSpace(fullCommandLine, _command);\n    appendWithSpace(fullCommandLine, _arguments);\n    _gmicAbort = false;\n    _gmicProgress = -1;\n    Logger::log(fullCommandLine, _logSuffix, true);\n    gmic gmicInstance(_environment.isEmpty() ? nullptr : QString(\"%1\").arg(_environment).toLocal8Bit().constData(), GmicStdLib::Array.constData(), true, &_gmicProgress, &_gmicAbort, 0.0f);\n    if (PersistentMemory::image()) {\n      if (*PersistentMemory::image() == gmic_store) {\n        gmicInstance.set_variable(\"_persistent\", PersistentMemory::image());\n      } else {\n        gmicInstance.set_variable(\"_persistent\", '=', PersistentMemory::image());\n      }\n    }\n    gmicInstance.set_variable(\"_host\", '=', GmicQtHost::ApplicationShortname);\n    gmicInstance.set_variable(\"_tk\", '=', \"qt\");\n    gmicInstance.run(fullCommandLine.toLocal8Bit().constData(), *_images, *_imageNames);\n    _gmicStatus = QString::fromLocal8Bit(gmicInstance.status);\n    gmicInstance.get_variable(\"_persistent\").move_to(*_persistentMemoryOutput);\n  } catch (gmic_exception & e) {\n    _images->assign();\n    _imageNames->assign();\n    const char * message = e.what();\n    _errorMessage = message;\n    Logger::error(QString(\"When running command '%1', this error occurred:\\n%2\").arg(fullCommandLine).arg(message), true);\n    _failed = true;\n  }\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/FilterThread.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file FilterThread.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT__FILTERTHREAD_H\n#define GMIC_QT__FILTERTHREAD_H\n\n#include <QElapsedTimer>\n#include <QString>\n#include <QThread>\n#include \"Common.h\"\n#include \"GmicQt.h\"\n#include \"Host/GmicQtHost.h\"\n\nnamespace gmic_library\n{\ntemplate <typename T> struct gmic_list;\n}\n\nnamespace GmicQt\n{\n\nclass FilterThread : public QThread {\n  Q_OBJECT\n\npublic:\n  FilterThread(QObject * parent, const QString & command, const QString & arguments, const QString & environment);\n\n  ~FilterThread() override;\n  void setInputImages(const gmic_library::gmic_list<float> & list);\n  void setImageNames(const gmic_library::gmic_list<char> & imageNames);\n  void swapImages(gmic_library::gmic_list<float> & images);\n  const gmic_library::gmic_list<float> & images() const;\n  const gmic_library::gmic_list<char> & imageNames() const;\n  gmic_library::gmic_image<char> & persistentMemoryOutput();\n  QStringList gmicStatus() const;\n  QList<int> parametersVisibilityStates() const;\n  QString errorMessage() const;\n  bool failed() const;\n  bool aborted() const;\n  int duration() const;\n  float progress() const;\n  QString fullCommand() const;\n  void setLogSuffix(const QString & text);\n\n  static QStringList status2StringList(QString);\n  static QList<int> status2Visibilities(const QString &);\n\npublic slots:\n  void abortGmic();\n\nsignals:\n  void done();\n\nprotected:\n  void run() override;\n\nprivate:\n  QString _command;\n  const QString _arguments;\n  QString _environment;\n  gmic_library::gmic_list<float> * _images;\n  gmic_library::gmic_list<char> * _imageNames;\n  gmic_library::gmic_image<char> * _persistentMemoryOutput;\n  bool _gmicAbort;\n  bool _failed;\n  QString _gmicStatus;\n  float _gmicProgress;\n  QString _errorMessage;\n  QString _name;\n  QString _logSuffix;\n  QElapsedTimer _startTime;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT__FILTERTHREAD_H\n"
  },
  {
    "path": "src/Globals.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file Globals.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n#include \"Globals.h\"\n\nnamespace GmicQt\n{\n\nconst float PreviewFactorAny = -1.0f;\nconst float PreviewFactorFullImage = 1.0f;\nconst float PreviewFactorActualSize = 0.0f;\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/Globals.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file Globals.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_GLOBALS_H\n#define GMIC_QT_GLOBALS_H\n\n#define GMIC_QT_ORGANISATION_NAME \"GREYC\"\n#define GMIC_QT_ORGANISATION_DOMAIN \"greyc.fr\"\n#define GMIC_QT_APPLICATION_NAME \"gmic_qt\"\n\nnamespace GmicQt\n{\nextern const float PreviewFactorAny;\nextern const float PreviewFactorFullImage;\nextern const float PreviewFactorActualSize;\nconst char WarningPrefix = '!';\n} // namespace GmicQt\n\n#define SLIDER_MIN_WIDTH 60\n#define PARAMETERS_CACHE_FILENAME \"gmic_qt_params.dat\"\n#define FILTER_GUI_DYNAMISM_CACHE_FILENAME \"gmic_qt_dynamism.dat\"\n#define FILTERS_VISIBILITY_FILENAME \"gmic_qt_visibility.dat\"\n#define FILTERS_TAGS_FILENAME \"gmic_qt_tags.dat\"\n#define FILTERS_CACHE_FILENAME \"gmic_qt_filters.dat\"\n\n#define FAVE_FOLDER_TEXT \"<b>Faves</b>\"\n#define FAVES_IMPORT_KEY \"Faves/ImportedGTK179\"\n\n#define DARK_THEME_KEY \"Config/DarkTheme\"\n#define REFRESH_USING_INTERNET_KEY \"Config/RefreshInternetUpdate\"\n#define INTERNET_UPDATE_PERIODICITY_KEY \"Config/UpdatesPeriodicityValue\"\n#define OFFICIAL_FILTER_SOURCE_KEY \"Config/OfficialFilterSource\"\n#define ENABLE_FILTER_TRANSLATION \"Config/FilterTranslation\"\n#define LANGUAGE_CODE_KEY \"Config/LanguageCode\"\n#define HIGHDPI_KEY \"Config/HighDPIEnabled\"\n#define PREVIEW_SPLITTER_KEY \"Config/PreviewSplitterType\"\n#define INTERNET_NEVER_UPDATE_PERIODICITY std::numeric_limits<int>::max()\n#define ONE_DAY_HOURS (24)\n#define ONE_WEEK_HOURS (7 * 24)\n#define TWO_WEEKS_HOURS (14 * 24)\n#define ONE_MONTH_HOURS (30 * 24)\n#define INTERNET_DEFAULT_PERIODICITY ONE_MONTH_HOURS\n\n#define PREVIEW_MAX_ZOOM_FACTOR 40.0\n\n#define KEYPOINTS_INTERACTIVE_LOWER_DELAY_MS 150\n#define KEYPOINTS_INTERACTIVE_UPPER_DELAY_MS 500\n#define KEYPOINTS_INTERACTIVE_MIDDLE_DELAY_MS ((KEYPOINTS_INTERACTIVE_LOWER_DELAY_MS + KEYPOINTS_INTERACTIVE_UPPER_DELAY_MS) / 2)\n#define KEYPOINTS_INTERACTIVE_AVERAGING_COUNT 6\n\n#endif // GMIC_QT_GLOBALS_H\n"
  },
  {
    "path": "src/GmicProcessor.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file GmicProcessor.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n#include \"GmicProcessor.h\"\n#include <QApplication>\n#include <QDebug>\n#include <QPainter>\n#include <QRegularExpression>\n#include <QSize>\n#include <QString>\n#include <cstring>\n#include \"CroppedActiveLayerProxy.h\"\n#include \"CroppedImageListProxy.h\"\n#include \"FilterGuiDynamismCache.h\"\n#include \"FilterSyncRunner.h\"\n#include \"FilterThread.h\"\n#include \"Globals.h\"\n#include \"Host/GmicQtHost.h\"\n#include \"ImageTools.h\"\n#include \"LayersExtentProxy.h\"\n#include \"Logger.h\"\n#include \"Misc.h\"\n#include \"OverrideCursor.h\"\n#include \"PersistentMemory.h\"\n#include \"Settings.h\"\n#include \"gmic.h\"\n\nnamespace GmicQt\n{\n\nGmicProcessor::GmicProcessor(QObject * parent) : QObject(parent)\n{\n  _filterThread = nullptr;\n  _gmicImages = new gmic_library::gmic_list<gmic_pixel_type>;\n  _previewImage = new gmic_library::gmic_image<float>;\n  _waitingCursorTimer.setSingleShot(true);\n  connect(&_waitingCursorTimer, &QTimer::timeout, this, &GmicProcessor::showWaitingCursor);\n  gmic_library::cimg::srand();\n  _previewRandomSeed = gmic_library::cimg::_rand();\n  _lastAppliedCommandInOutState = InputOutputState::Unspecified;\n  _ongoingFilterExecutionTime.start();\n  _completeFullImageProcessingCount = 0;\n}\n\nvoid GmicProcessor::init()\n{\n  abortCurrentFilterThread();\n  _gmicImages->assign();\n}\n\nGmicProcessor::~GmicProcessor()\n{\n  delete _gmicImages;\n  delete _previewImage;\n  if (!_unfinishedAbortedThreads.isEmpty()) {\n    Logger::error(QString(\"~GmicProcessor(): There are %1 unfinished filter threads.\").arg(_unfinishedAbortedThreads.size()));\n    detachAllUnfinishedAbortedThreads();\n  }\n}\n\nvoid GmicProcessor::setContext(const GmicProcessor::FilterContext & context)\n{\n  _filterContext = context;\n}\n\nvoid GmicProcessor::execute()\n{\n  gmic_list<char> imageNames;\n  FilterContext::VisibleRect & rect = _filterContext.visibleRect;\n  _gmicImages->assign();\n  if ((_filterContext.requestType == FilterContext::RequestType::Preview) ||            //\n      (_filterContext.requestType == FilterContext::RequestType::SynchronousPreview) || //\n      (_filterContext.requestType == FilterContext::RequestType::GUIDynamismRun)) {\n    if (_filterContext.previewFromFullImage) {\n      CroppedImageListProxy::get(*_gmicImages, imageNames, 0.0, 0.0, 1.0, 1.0, _filterContext.inputOutputState.inputMode, 1.0);\n      updateImageNames(imageNames);\n    } else {\n      CroppedImageListProxy::get(*_gmicImages, imageNames, rect.x, rect.y, rect.w, rect.h, _filterContext.inputOutputState.inputMode, _filterContext.zoomFactor);\n      updateImageNames(imageNames);\n    }\n  } else {\n    CroppedImageListProxy::get(*_gmicImages, imageNames, rect.x, rect.y, rect.w, rect.h, _filterContext.inputOutputState.inputMode, 1.0);\n  }\n  _waitingCursorTimer.start(WAITING_CURSOR_DELAY);\n  const InputOutputState & io = _filterContext.inputOutputState;\n  QString env = QString(\"_input_layers=%1\").arg(static_cast<int>(io.inputMode));\n  env += QString(\" _output_mode=%1\").arg(static_cast<int>(io.outputMode));\n  env += QString(\" _output_messages=%1\").arg(static_cast<int>(Settings::outputMessageMode()));\n  if ((_filterContext.requestType == FilterContext::RequestType::Preview) || //\n      (_filterContext.requestType == FilterContext::RequestType::SynchronousPreview)) {\n    env += QString(\" _preview_area_width=%1\").arg(_filterContext.previewWindowWidth);\n    env += QString(\" _preview_area_height=%1\").arg(_filterContext.previewWindowHeight);\n    env += QString(\" _preview_timeout=%1\").arg(_filterContext.previewTimeout);\n    env += QString(\" _preview_enabled=%1\").arg(int(_filterContext.previewCheckBox));\n    env += QString(\" _randomized=%1\").arg(int(_filterContext.randomized));\n  }\n  int maxWidth;\n  int maxHeight;\n  int preview_x0;\n  int preview_y0;\n  int preview_x1;\n  int preview_y1;\n  QSize previewSize;\n  LayersExtentProxy::getExtent(_filterContext.inputOutputState.inputMode, maxWidth, maxHeight);\n  if (_filterContext.previewFromFullImage) {\n    preview_x0 = static_cast<int>(rect.x * maxWidth);\n    preview_y0 = static_cast<int>(rect.y * maxHeight);\n    preview_x1 = preview_x0 + std::min(maxWidth, static_cast<int>(1 + std::ceil(maxWidth * rect.w))) - 1;\n    preview_y1 = preview_y0 + std::min(maxHeight, static_cast<int>(1 + std::ceil(maxHeight * rect.h))) - 1;\n    previewSize = QSize(1 + preview_x1 - preview_x0, 1 + preview_y1 - preview_y0);\n    if (_filterContext.zoomFactor < 1.0) {\n      previewSize = QSize(static_cast<int>(std::round(previewSize.width() * _filterContext.zoomFactor)), //\n                          static_cast<int>(std::round(previewSize.height() * _filterContext.zoomFactor)));\n    }\n  } else {\n    if (_filterContext.zoomFactor < 1.0) {\n      maxWidth = static_cast<int>(std::round(maxWidth * _filterContext.zoomFactor));\n      maxHeight = static_cast<int>(std::round(maxHeight * _filterContext.zoomFactor));\n    }\n    preview_x0 = 0;\n    preview_y0 = 0;\n    preview_x1 = std::min(maxWidth, static_cast<int>(1 + std::ceil(maxWidth * rect.w))) - 1;\n    preview_y1 = std::min(maxHeight, static_cast<int>(1 + std::ceil(maxHeight * rect.h))) - 1;\n    previewSize = QSize(1 + preview_x1 - preview_x0, 1 + preview_y1 - preview_y0);\n  }\n  env += QString(\" _preview_x0=%1\").arg(preview_x0);\n  env += QString(\" _preview_y0=%1\").arg(preview_y0);\n  env += QString(\" _preview_x1=%1\").arg(preview_x1);\n  env += QString(\" _preview_y1=%1\").arg(preview_y1);\n  env += QString(\" _preview_width=%1\").arg(previewSize.width());\n  env += QString(\" _preview_height=%1\").arg(previewSize.height());\n  _completedExecutionTime.restart();\n  if (_filterContext.requestType == FilterContext::RequestType::SynchronousPreview) {\n    FilterSyncRunner runner(this, _filterContext.filterCommand, _filterContext.filterArguments, env);\n    runner.swapImages(*_gmicImages);\n    runner.setImageNames(imageNames);\n    runner.setLogSuffix(\"preview\");\n    gmic_library::cimg::srand();\n    _previewRandomSeed = gmic_library::cimg::_rand();\n    _ongoingFilterExecutionTime.restart();\n    runner.run();\n    manageSynchonousRunner(runner);\n    recordPreviewFilterExecutionDurationMS((int)_ongoingFilterExecutionTime.elapsed());\n  } else if ((_filterContext.requestType == FilterContext::RequestType::Preview) || //\n             (_filterContext.requestType == FilterContext::RequestType::GUIDynamismRun)) {\n    _filterThread = new FilterThread(this, _filterContext.filterCommand, _filterContext.filterArguments, env);\n    _filterThread->swapImages(*_gmicImages);\n    _filterThread->setImageNames(imageNames);\n    _filterThread->setLogSuffix(\"preview\");\n    if (_filterContext.requestType == FilterContext::RequestType::Preview) {\n      connect(_filterThread, &FilterThread::finished, this, &GmicProcessor::onPreviewThreadFinished, Qt::QueuedConnection);\n    } else {\n      connect(_filterThread, &FilterThread::finished, this, &GmicProcessor::onGUIDynamismThreadFinished, Qt::QueuedConnection);\n    }\n    gmic_library::cimg::srand();\n    _previewRandomSeed = gmic_library::cimg::_rand();\n    _ongoingFilterExecutionTime.restart();\n    _filterThread->start();\n  } else if (_filterContext.requestType == FilterContext::RequestType::FullImage) {\n    _lastAppliedFilterHash = _filterContext.filterHash;\n    _lastAppliedFilterPath = _filterContext.filterFullPath;\n    _lastAppliedCommand = _filterContext.filterCommand;\n    _lastAppliedCommandArguments = _filterContext.filterArguments;\n    _lastAppliedCommandInOutState = _filterContext.inputOutputState;\n    _filterThread = new FilterThread(this, _filterContext.filterCommand, _filterContext.filterArguments, env);\n    _filterThread->swapImages(*_gmicImages);\n    _filterThread->setImageNames(imageNames);\n    _filterThread->setLogSuffix(\"apply\");\n    connect(_filterThread, &FilterThread::finished, this, &GmicProcessor::onApplyThreadFinished, Qt::QueuedConnection);\n    gmic_library::cimg::srand(_previewRandomSeed);\n    _filterThread->start();\n  }\n}\n\nbool GmicProcessor::isProcessingFullImage() const\n{\n  return _filterThread && (_filterContext.requestType == FilterContext::RequestType::FullImage);\n}\n\nbool GmicProcessor::isProcessing() const\n{\n  return _filterThread;\n}\n\nbool GmicProcessor::isIdle() const\n{\n  return !_filterThread;\n}\n\nint GmicProcessor::duration() const\n{\n  if (_filterThread) {\n    return _filterThread->duration();\n  }\n  return 0;\n}\n\nfloat GmicProcessor::progress() const\n{\n  if (_filterThread) {\n    return _filterThread->progress();\n  }\n  return 0.0f;\n}\n\nint GmicProcessor::lastPreviewFilterExecutionDurationMS() const\n{\n  if (_lastFilterPreviewExecutionDurations.empty()) {\n    return 0;\n  }\n  return _lastFilterPreviewExecutionDurations.back();\n}\n\nvoid GmicProcessor::resetLastPreviewFilterExecutionDurations()\n{\n  _lastFilterPreviewExecutionDurations.clear();\n}\n\nvoid GmicProcessor::recordPreviewFilterExecutionDurationMS(int duration)\n{\n  _lastFilterPreviewExecutionDurations.push_back(duration);\n  while (_lastFilterPreviewExecutionDurations.size() >= KEYPOINTS_INTERACTIVE_AVERAGING_COUNT) {\n    _lastFilterPreviewExecutionDurations.pop_front();\n  }\n}\n\nint GmicProcessor::averagePreviewFilterExecutionDuration() const\n{\n  if (_lastFilterPreviewExecutionDurations.empty()) {\n    return 0;\n  }\n  int count = 0;\n  double sum = 0;\n  for (int duration : _lastFilterPreviewExecutionDurations) {\n    sum += duration;\n    ++count;\n  }\n  return static_cast<int>(sum / count);\n}\n\nint GmicProcessor::completedFullImageProcessingCount() const\n{\n  return _completeFullImageProcessingCount;\n}\n\nqint64 GmicProcessor::lastCompletedExecutionTime() const\n{\n  return _lastCompletedExecutionTime;\n}\n\nvoid GmicProcessor::cancel()\n{\n  abortCurrentFilterThread();\n}\n\nvoid GmicProcessor::detachAllUnfinishedAbortedThreads()\n{\n  for (FilterThread * thread : _unfinishedAbortedThreads) {\n    thread->disconnect(this);\n    thread->setParent(nullptr);\n  }\n  _unfinishedAbortedThreads.clear();\n}\n\nvoid GmicProcessor::terminateAllThreads()\n{\n  if (_filterThread) {\n    _filterThread->disconnect(this);\n    _filterThread->terminate();\n    _filterThread->wait();\n    delete _filterThread;\n  }\n  while (!_unfinishedAbortedThreads.isEmpty()) {\n    _unfinishedAbortedThreads.front()->disconnect(this);\n    _unfinishedAbortedThreads.front()->terminate();\n    _unfinishedAbortedThreads.front()->wait();\n    delete _unfinishedAbortedThreads.front();\n    _unfinishedAbortedThreads.pop_front();\n  }\n  _waitingCursorTimer.stop();\n  OverrideCursor::setNormal();\n}\n\nbool GmicProcessor::hasUnfinishedAbortedThreads() const\n{\n  return !_unfinishedAbortedThreads.isEmpty();\n}\n\nconst gmic_library::gmic_image<float> & GmicProcessor::previewImage() const\n{\n  return *_previewImage;\n}\n\nconst QStringList & GmicProcessor::gmicStatus() const\n{\n  return _gmicStatus;\n}\n\nvoid GmicProcessor::saveSettings(QSettings & settings)\n{\n  if (_lastAppliedCommand.isEmpty()) {\n    const QString empty;\n    settings.setValue(QString(\"LastExecution/host_%1/FilterHash\").arg(GmicQtHost::ApplicationShortname), empty);\n    settings.setValue(QString(\"LastExecution/host_%1/FilterPath\").arg(GmicQtHost::ApplicationShortname), empty);\n    settings.setValue(QString(\"LastExecution/host_%1/Command\").arg(GmicQtHost::ApplicationShortname), empty);\n    settings.setValue(QString(\"LastExecution/host_%1/Arguments\").arg(GmicQtHost::ApplicationShortname), empty);\n    settings.setValue(QString(\"LastExecution/host_%1/GmicStatusString\").arg(GmicQtHost::ApplicationShortname), QString());\n    settings.setValue(QString(\"LastExecution/host_%1/InputMode\").arg(GmicQtHost::ApplicationShortname), 0);\n    settings.setValue(QString(\"LastExecution/host_%1/OutputMode\").arg(GmicQtHost::ApplicationShortname), 0);\n  } else {\n    settings.setValue(QString(\"LastExecution/host_%1/FilterPath\").arg(GmicQtHost::ApplicationShortname), _lastAppliedFilterPath);\n    settings.setValue(QString(\"LastExecution/host_%1/FilterHash\").arg(GmicQtHost::ApplicationShortname), _lastAppliedFilterHash);\n    settings.setValue(QString(\"LastExecution/host_%1/Command\").arg(GmicQtHost::ApplicationShortname), _lastAppliedCommand);\n    settings.setValue(QString(\"LastExecution/host_%1/Arguments\").arg(GmicQtHost::ApplicationShortname), _lastAppliedCommandArguments);\n    QString status = flattenGmicParameterList(_lastAppliedCommandGmicStatus, _gmicStatusQuotedParameters);\n    settings.setValue(QString(\"LastExecution/host_%1/GmicStatusString\").arg(GmicQtHost::ApplicationShortname), status);\n    settings.setValue(QString(\"LastExecution/host_%1/InputMode\").arg(GmicQtHost::ApplicationShortname), (int)_lastAppliedCommandInOutState.inputMode);\n    settings.setValue(QString(\"LastExecution/host_%1/OutputMode\").arg(GmicQtHost::ApplicationShortname), (int)_lastAppliedCommandInOutState.outputMode);\n  }\n}\n\nvoid GmicProcessor::setGmicStatusQuotedParameters(const QVector<bool> & quotedParameters)\n{\n  _gmicStatusQuotedParameters = quotedParameters;\n}\n\nvoid GmicProcessor::onGUIDynamismThreadFinished()\n{\n  Q_ASSERT_X(_filterThread, __PRETTY_FUNCTION__, \"No filter thread\");\n  if (_filterThread->isRunning()) {\n    return;\n  }\n  if (_filterThread->failed()) {\n    _gmicStatus.clear();\n    _parametersVisibilityStates.clear();\n    _gmicImages->assign();\n    QString message = _filterThread->errorMessage();\n    _filterThread->deleteLater();\n    _filterThread = nullptr;\n    hideWaitingCursor();\n    Logger::warning(QString(\"Failed to execute filter: %1\").arg(message));\n    return;\n  }\n  _gmicStatus = _filterThread->gmicStatus();\n  _parametersVisibilityStates = _filterThread->parametersVisibilityStates();\n  _gmicImages->assign();\n  FilterGuiDynamismCache::setValue(_filterContext.filterHash, _gmicStatus.isEmpty() ? FilterGuiDynamism::Static : FilterGuiDynamism::Dynamic);\n  PersistentMemory::move_from(_filterThread->persistentMemoryOutput());\n  _filterThread->deleteLater();\n  _filterThread = nullptr;\n  hideWaitingCursor();\n  emit guiDynamismRunDone();\n}\n\nvoid GmicProcessor::onPreviewThreadFinished()\n{\n  Q_ASSERT_X(_filterThread, __PRETTY_FUNCTION__, \"No filter thread\");\n  if (_filterThread->isRunning()) {\n    return;\n  }\n  _lastCompletedExecutionTime = _completedExecutionTime.elapsed();\n  if (_filterThread->failed()) {\n    _gmicStatus.clear();\n    _parametersVisibilityStates.clear();\n    _gmicImages->assign();\n    QString message = _filterThread->errorMessage();\n    _filterThread->deleteLater();\n    _filterThread = nullptr;\n    hideWaitingCursor();\n    emit previewCommandFailed(message);\n    return;\n  }\n  _gmicStatus = _filterThread->gmicStatus();\n  _parametersVisibilityStates = _filterThread->parametersVisibilityStates();\n  _gmicImages->assign();\n  FilterGuiDynamismCache::setValue(_filterContext.filterHash, _gmicStatus.isEmpty() ? FilterGuiDynamism::Static : FilterGuiDynamism::Dynamic);\n  _filterThread->swapImages(*_gmicImages);\n  PersistentMemory::move_from(_filterThread->persistentMemoryOutput());\n  unsigned int badSpectrumIndex = 0;\n  bool correctSpectrums = checkImageSpectrumAtMost4(*_gmicImages, badSpectrumIndex);\n  if (correctSpectrums) {\n    for (unsigned int i = 0; i < _gmicImages->size(); ++i) {\n      GmicQtHost::applyColorProfile((*_gmicImages)[i]);\n    }\n    buildPreviewImage(*_gmicImages, *_previewImage);\n  }\n  _filterThread->deleteLater();\n  _filterThread = nullptr;\n  hideWaitingCursor();\n  if (correctSpectrums) {\n    emit previewImageAvailable();\n    recordPreviewFilterExecutionDurationMS((int)_ongoingFilterExecutionTime.elapsed());\n  } else {\n    QString message(tr(\"Image #%1 returned by filter has %2 channels (should be at most 4)\"));\n    emit previewCommandFailed(message.arg(badSpectrumIndex).arg((*_gmicImages)[badSpectrumIndex].spectrum()));\n  }\n}\n\nvoid GmicProcessor::onApplyThreadFinished()\n{\n  Q_ASSERT_X(_filterThread, __PRETTY_FUNCTION__, \"No filter thread\");\n  Q_ASSERT_X(!_filterThread->aborted(), __PRETTY_FUNCTION__, \"Aborted thread!\");\n  if (_filterThread->isRunning()) {\n    return;\n  }\n  _lastCompletedExecutionTime = _completedExecutionTime.elapsed();\n  _gmicStatus = _filterThread->gmicStatus();\n  _parametersVisibilityStates = _filterThread->parametersVisibilityStates();\n  hideWaitingCursor();\n\n  if (_filterThread->failed()) {\n    _lastAppliedFilterPath.clear();\n    _lastAppliedCommand.clear();\n    _lastAppliedCommandArguments.clear();\n    QString message = _filterThread->errorMessage();\n    _filterThread->deleteLater();\n    _filterThread = nullptr;\n    emit fullImageProcessingFailed(message);\n  } else {\n    _filterThread->swapImages(*_gmicImages);\n    PersistentMemory::move_from(_filterThread->persistentMemoryOutput());\n    unsigned int badSpectrumIndex = 0;\n    bool correctSpectrums = checkImageSpectrumAtMost4(*_gmicImages, badSpectrumIndex);\n    if (!correctSpectrums) {\n      _lastAppliedFilterPath.clear();\n      _lastAppliedCommand.clear();\n      _lastAppliedCommandArguments.clear();\n      _filterThread->deleteLater();\n      _filterThread = nullptr;\n      QString message(tr(\"Image #%1 returned by filter has %2 channels\\n(should be at most 4)\"));\n      emit fullImageProcessingFailed(message.arg(badSpectrumIndex).arg((*_gmicImages)[badSpectrumIndex].spectrum()));\n    } else {\n      if (GmicQtHost::ApplicationName.isEmpty()) {\n        emit aboutToSendImagesToHost();\n      }\n      GmicQtHost::outputImages(*_gmicImages, _filterThread->imageNames(), _filterContext.inputOutputState.outputMode);\n      _completeFullImageProcessingCount += 1;\n      LayersExtentProxy::clear();\n      CroppedActiveLayerProxy::clear();\n      CroppedImageListProxy::clear();\n      _filterThread->deleteLater();\n      _filterThread = nullptr;\n      _lastAppliedCommandGmicStatus = _gmicStatus; // TODO : save visibility states?\n      emit fullImageProcessingDone();\n    }\n  }\n}\n\nvoid GmicProcessor::onAbortedThreadFinished()\n{\n  auto thread = dynamic_cast<FilterThread *>(sender());\n  if (_unfinishedAbortedThreads.contains(thread)) {\n    _unfinishedAbortedThreads.removeOne(thread);\n    thread->deleteLater();\n  }\n  if (_unfinishedAbortedThreads.isEmpty()) {\n    emit noMoreUnfinishedJobs();\n  }\n}\n\nvoid GmicProcessor::showWaitingCursor()\n{\n  if (_filterThread) {\n    OverrideCursor::set(Qt::WaitCursor);\n  }\n}\n\nvoid GmicProcessor::hideWaitingCursor()\n{\n  _waitingCursorTimer.stop();\n  OverrideCursor::setNormal();\n}\n\nvoid GmicProcessor::updateImageNames(gmic_list<char> & imageNames)\n{\n  const double & xFactor = _filterContext.positionStringCorrection.xFactor;\n  const double & yFactor = _filterContext.positionStringCorrection.yFactor;\n  int maxWidth;\n  int maxHeight;\n  LayersExtentProxy::getExtent(_filterContext.inputOutputState.inputMode, maxWidth, maxHeight);\n  for (size_t i = 0; i < imageNames.size(); ++i) {\n    gmic_image<char> & name = imageNames[i];\n    QString str((const char *)name);\n    QRegularExpression re(R\"_(pos\\((\\d*)([^0-9]*)(\\d*)\\))_\");\n    auto match = re.match(str);\n    if (match.hasMatch() && match.captured(1).size() && match.captured(3).size()) {\n      int xPos = match.captured(1).toInt();\n      int yPos = match.captured(3).toInt();\n      int newXPos = (int)(xPos * (xFactor / (double)maxWidth));\n      int newYPos = (int)(yPos * (yFactor / (double)maxHeight));\n      str.replace(match.captured(0), QString(\"pos(%1%2%3)\").arg(newXPos).arg(match.captured(2)).arg(newYPos));\n      name.resize(str.size() + 1);\n      std::memcpy(name.data(), str.toLatin1().constData(), name.width());\n    }\n  }\n}\n\nvoid GmicProcessor::abortCurrentFilterThread()\n{\n  if (!_filterThread) {\n    return;\n  }\n  _filterThread->disconnect(this);\n  connect(_filterThread, &FilterThread::finished, this, &GmicProcessor::onAbortedThreadFinished);\n  _unfinishedAbortedThreads.push_back(_filterThread);\n  _filterThread->abortGmic();\n  _filterThread = nullptr;\n  _waitingCursorTimer.stop();\n  OverrideCursor::setNormal();\n}\n\nvoid GmicProcessor::manageSynchonousRunner(FilterSyncRunner & runner)\n{\n  _lastCompletedExecutionTime = _completedExecutionTime.elapsed();\n  if (runner.failed()) {\n    _gmicStatus.clear();\n    _gmicImages->assign();\n    QString message = runner.errorMessage();\n    hideWaitingCursor();\n    emit previewCommandFailed(message);\n    return;\n  }\n  _gmicStatus = runner.gmicStatus();\n  _parametersVisibilityStates = runner.parametersVisibilityStates();\n  _gmicImages->assign();\n  runner.swapImages(*_gmicImages);\n  PersistentMemory::move_from(runner.persistentMemoryOutput());\n  for (unsigned int i = 0; i < _gmicImages->size(); ++i) {\n    GmicQtHost::applyColorProfile((*_gmicImages)[i]);\n  }\n  buildPreviewImage(*_gmicImages, *_previewImage);\n  hideWaitingCursor();\n  emit previewImageAvailable();\n}\n\nconst QList<int> & GmicProcessor::parametersVisibilityStates() const\n{\n  return _parametersVisibilityStates;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/GmicProcessor.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file GmicProcessor.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_GMICPROCESSOR_H\n#define GMIC_QT_GMICPROCESSOR_H\n\n#include <QElapsedTimer>\n#include <QList>\n#include <QObject>\n#include <QSettings>\n#include <QSignalMapper>\n#include <QString>\n#include <QStringList>\n#include <QTimer>\n#include <QVector>\n#include <deque>\n#include \"GmicQt.h\"\n#include \"InputOutputState.h\"\n\nnamespace gmic_library\n{\ntemplate <typename T> struct gmic_list;\ntemplate <typename T> struct gmic_image;\n} // namespace gmic_library\n\nnamespace GmicQt\n{\nclass FilterThread;\nclass FilterSyncRunner;\n\nclass GmicProcessor : public QObject {\n  Q_OBJECT\npublic:\n  struct FilterContext {\n    enum class RequestType\n    {\n      SynchronousPreview,\n      Preview,\n      FullImage,\n      GUIDynamismRun\n    };\n    struct VisibleRect {\n      double x, y, w, h;\n    };\n    struct PositionStringCorrection {\n      double xFactor;\n      double yFactor;\n    };\n    RequestType requestType;\n    VisibleRect visibleRect;\n    InputOutputState inputOutputState;\n    PositionStringCorrection positionStringCorrection;\n    double zoomFactor;\n    int previewWindowWidth;\n    int previewWindowHeight;\n    int previewTimeout;\n    bool previewFromFullImage = false;\n    bool previewCheckBox;\n    bool randomized;\n    QString filterName;\n    QString filterCommand;\n    QString filterFullPath;\n    QString filterArguments;\n    QString filterHash;\n  };\n\n  GmicProcessor(QObject * parent = nullptr);\n  ~GmicProcessor() override;\n  void init();\n  void setContext(const FilterContext & context);\n  void execute();\n\n  bool isProcessingFullImage() const;\n  bool isProcessing() const;\n  bool isIdle() const;\n  bool hasUnfinishedAbortedThreads() const;\n\n  const gmic_library::gmic_image<float> & previewImage() const;\n  const QStringList & gmicStatus() const;\n  const QList<int> & parametersVisibilityStates() const;\n  void setGmicStatusQuotedParameters(const QVector<bool> & quotedParameters);\n\n  void saveSettings(QSettings & settings);\n\n  int duration() const;\n  float progress() const;\n  int lastPreviewFilterExecutionDurationMS() const;\n  void resetLastPreviewFilterExecutionDurations();\n  void recordPreviewFilterExecutionDurationMS(int duration);\n  int averagePreviewFilterExecutionDuration() const;\n  int completedFullImageProcessingCount() const;\n  qint64 lastCompletedExecutionTime() const;\n\npublic slots:\n  void cancel();\n  void detachAllUnfinishedAbortedThreads();\n  void terminateAllThreads();\n\nsignals:\n  void previewCommandFailed(QString errorMessage);\n  void fullImageProcessingFailed(QString errorMessage);\n  void previewImageAvailable();\n  void guiDynamismRunDone();\n  void fullImageProcessingDone();\n  void noMoreUnfinishedJobs();\n  void aboutToSendImagesToHost();\n\nprivate slots:\n  void onPreviewThreadFinished();\n  void onApplyThreadFinished();\n  void onGUIDynamismThreadFinished();\n  void onAbortedThreadFinished();\n  void showWaitingCursor();\n  void hideWaitingCursor();\n\nprivate:\n  void updateImageNames(gmic_library::gmic_list<char> & imageNames);\n  void abortCurrentFilterThread();\n  void manageSynchonousRunner(FilterSyncRunner & runner);\n\n  FilterThread * _filterThread;\n  FilterContext _filterContext;\n  gmic_library::gmic_list<float> * _gmicImages;\n  gmic_library::gmic_image<float> * _previewImage;\n  QList<FilterThread *> _unfinishedAbortedThreads;\n\n  unsigned int _previewRandomSeed;\n  QStringList _gmicStatus;\n  QList<int> _parametersVisibilityStates;\n  QTimer _waitingCursorTimer;\n  static const int WAITING_CURSOR_DELAY = 200;\n\n  QString _lastAppliedFilterPath;\n  QString _lastAppliedFilterHash;\n  QString _lastAppliedCommand;\n  QString _lastAppliedCommandArguments;\n  QStringList _lastAppliedCommandGmicStatus;\n  InputOutputState _lastAppliedCommandInOutState;\n  QElapsedTimer _ongoingFilterExecutionTime;\n  QElapsedTimer _completedExecutionTime;\n  qint64 _lastCompletedExecutionTime;\n  std::deque<int> _lastFilterPreviewExecutionDurations;\n  int _completeFullImageProcessingCount;\n  QVector<bool> _gmicStatusQuotedParameters;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_GMICPROCESSOR_H\n"
  },
  {
    "path": "src/GmicQt.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file GmicQt.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"GmicQt.h\"\n#include <QApplication>\n#include <QDebug>\n#include <QImage>\n#include <QList>\n#include <QLocale>\n#include <QSettings>\n#include <QString>\n#include <QThread>\n#include <QTimer>\n#include <cstdlib>\n#include <cstring>\n#include \"Common.h\"\n#include \"Globals.h\"\n#include \"HeadlessProcessor.h\"\n#include \"LanguageSettings.h\"\n#include \"Logger.h\"\n#include \"MainWindow.h\"\n#include \"Misc.h\"\n#include \"Settings.h\"\n#include \"Widgets/InOutPanel.h\"\n#include \"Widgets/ProgressInfoWindow.h\"\n#include \"gmic.h\"\n#ifdef _IS_MACOS_\n#include <libgen.h>\n#include <mach-o/dyld.h>\n#include <stdlib.h>\n#endif\n\nnamespace\n{\nvoid configureApplication();\nvoid disableModes(const std::list<GmicQt::InputMode> & disabledInputModes, //\n                  const std::list<GmicQt::OutputMode> & disabledOutputModes);\n\ninline bool archIsLittleEndian()\n{\n  const int x = 1;\n  return (*reinterpret_cast<const unsigned char *>(&x));\n}\n\ninline unsigned char float2uchar_bounded(const float & in)\n{\n  return (in < 0.0f) ? 0 : ((in > 255.0f) ? 255 : static_cast<unsigned char>(in));\n}\n\n} // namespace\n\nnamespace GmicQt\n{\nInputMode DefaultInputMode = InputMode::Active;\nOutputMode DefaultOutputMode = OutputMode::InPlace;\nconst OutputMessageMode DefaultOutputMessageMode = OutputMessageMode::Quiet;\nconst int GmicVersion = gmic_version;\n\nconst QString & gmicVersionString()\n{\n  static QString value = QString(\"%1.%2.%3\").arg(gmic_version / 100).arg((gmic_version / 10) % 10).arg(gmic_version % 10);\n  return value;\n}\n\nRunParameters lastAppliedFilterRunParameters(ReturnedRunParametersFlag flag)\n{\n  configureApplication();\n  RunParameters parameters;\n  QSettings settings;\n  const QString path = settings.value(QString(\"LastExecution/host_%1/FilterPath\").arg(GmicQtHost::ApplicationShortname)).toString();\n  parameters.filterPath = path.toStdString();\n  QString args = settings.value(QString(\"LastExecution/host_%1/Arguments\").arg(GmicQtHost::ApplicationShortname)).toString();\n  if (flag == ReturnedRunParametersFlag::AfterFilterExecution) {\n    QString lastAppliedCommandGmicStatus = settings.value(QString(\"LastExecution/host_%1/GmicStatusString\").arg(GmicQtHost::ApplicationShortname)).toString();\n    if (!lastAppliedCommandGmicStatus.isEmpty()) {\n      args = lastAppliedCommandGmicStatus;\n    }\n  }\n  QString command = settings.value(QString(\"LastExecution/host_%1/Command\").arg(GmicQtHost::ApplicationShortname)).toString();\n  appendWithSpace(command, args);\n  parameters.command = command.toStdString();\n  parameters.inputMode = (InputMode)settings.value(QString(\"LastExecution/host_%1/InputMode\").arg(GmicQtHost::ApplicationShortname), (int)InputMode::Active).toInt();\n  parameters.outputMode = (OutputMode)settings.value(QString(\"LastExecution/host_%1/OutputMode\").arg(GmicQtHost::ApplicationShortname), (int)OutputMode::InPlace).toInt();\n  return parameters;\n}\n\nint run(UserInterfaceMode interfaceMode,                   //\n        RunParameters parameters,                          //\n        const std::list<InputMode> & disabledInputModes,   //\n        const std::list<OutputMode> & disabledOutputModes, //\n        bool * dialogWasAccepted)\n{\n  int dummy_argc = 1;\n  char dummy_app_name[] = GMIC_QT_APPLICATION_NAME;\n\n#ifdef _IS_WINDOWS_\n  SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX);\n#endif\n\n  char * fullexname = nullptr;\n#ifdef _IS_MACOS_\n  {\n    char exname[2048] = {0};\n    // get the path where the executable is stored\n    uint32_t size = sizeof(exname);\n    if (_NSGetExecutablePath(exname, &size) == 0) {\n      printf(\"Executable path is [%s]\\n\", exname);\n      fullexname = realpath(exname, nullptr);\n      printf(\"Full executable name is [%s]\\n\", fullexname);\n      if (fullexname) {\n        char * fullpath = dirname(fullexname);\n        printf(\"Full executable path is [%s]\\n\", fullpath);\n        if (fullpath) {\n          char pluginpath[2048] = {0};\n          strncpy(pluginpath, fullpath, 2047);\n          strncat(pluginpath, \"/GMIC/plugins/:\", 2047);\n          char * envpath = getenv(\"QT_PLUGIN_PATH\");\n          if (envpath) {\n            strncat(pluginpath, envpath, 2047);\n          }\n          printf(\"Plugins path is [%s]\\n\", pluginpath);\n          setenv(\"QT_PLUGIN_PATH\", pluginpath, 1);\n        }\n      }\n    } else {\n      fprintf(stderr, \"Buffer too small; need size %u\\n\", size);\n    }\n    setenv(\"QT_DEBUG_PLUGINS\", \"1\", 1);\n  }\n#endif\n  if (!fullexname) {\n    fullexname = dummy_app_name;\n  }\n  char * dummy_argv[1] = {fullexname};\n\n  disableModes(disabledInputModes, disabledOutputModes);\n  if (interfaceMode == UserInterfaceMode::Silent) {\n    configureApplication();\n    QCoreApplication app(dummy_argc, dummy_argv);\n    Settings::load(interfaceMode);\n    Logger::setMode(Settings::outputMessageMode());\n    HeadlessProcessor processor(&app);\n    if (!processor.setPluginParameters(parameters)) {\n      Logger::error(processor.error());\n      setValueIfNotNullPointer(dialogWasAccepted, false);\n      return 1;\n    }\n    QTimer::singleShot(0, &processor, &HeadlessProcessor::startProcessing);\n    int status = QCoreApplication::exec();\n    setValueIfNotNullPointer(dialogWasAccepted, processor.processingCompletedProperly());\n    return status;\n  } else if (interfaceMode == UserInterfaceMode::ProgressDialog) {\n    configureApplication();\n    QApplication app(dummy_argc, dummy_argv);\n    QApplication::setWindowIcon(QIcon(\":resources/gmic_hat.png\"));\n    Settings::load(interfaceMode);\n    Logger::setMode(Settings::outputMessageMode());\n    LanguageSettings::installTranslators();\n    HeadlessProcessor processor(&app);\n    if (!processor.setPluginParameters(parameters)) {\n      Logger::error(processor.error());\n      setValueIfNotNullPointer(dialogWasAccepted, false);\n      return 1;\n    }\n    ProgressInfoWindow progressWindow(&processor);\n    unused(progressWindow);\n    processor.startProcessing();\n    int status = QApplication::exec();\n    setValueIfNotNullPointer(dialogWasAccepted, processor.processingCompletedProperly());\n    return status;\n  } else if (interfaceMode == UserInterfaceMode::Full) {\n    configureApplication();\n    QApplication app(dummy_argc, dummy_argv);\n    QApplication::setWindowIcon(QIcon(\":resources/gmic_hat.png\"));\n    Settings::load(interfaceMode);\n    LanguageSettings::installTranslators();\n    MainWindow mainWindow;\n    mainWindow.setPluginParameters(parameters);\n    if (QSettings().value(\"Config/MainWindowMaximized\", false).toBool()) {\n      mainWindow.showMaximized();\n    } else {\n      mainWindow.show();\n    }\n    int status = QApplication::exec();\n    setValueIfNotNullPointer(dialogWasAccepted, mainWindow.isAccepted());\n    return status;\n  }\n  return 0;\n}\n\nstd::string RunParameters::filterName() const\n{\n  auto position = filterPath.rfind(\"/\");\n  if (position == std::string::npos) {\n    return filterPath;\n  }\n  return filterPath.substr(position + 1, filterPath.length() - (position + 1));\n}\n\ntemplate <typename T> //\nvoid calibrateImage(gmic_library::gmic_image<T> & img, const int spectrum, const bool isPreview)\n{\n  if (!img || !spectrum) {\n    return;\n  }\n  switch (spectrum) {\n  case 1: // To GRAY\n    switch (img.spectrum()) {\n    case 1: // from GRAY\n      break;\n    case 2: // from GRAYA\n      if (isPreview) {\n        T *ptr_r = img.data(0, 0, 0, 0), *ptr_a = img.data(0, 0, 0, 1);\n        cimg_forXY(img, x, y)\n        {\n          const unsigned int a = (unsigned int)*(ptr_a++), i = 96 + (((x ^ y) & 8) << 3);\n          *ptr_r = (T)((a * (unsigned int)*ptr_r + (255 - a) * i) >> 8);\n          ++ptr_r;\n        }\n      }\n      img.channel(0);\n      break;\n    case 3: // from RGB\n      (img.get_shared_channel(0) += img.get_shared_channel(1) += img.get_shared_channel(2)) /= 3;\n      img.channel(0);\n      break;\n    case 4: // from RGBA\n      (img.get_shared_channel(0) += img.get_shared_channel(1) += img.get_shared_channel(2)) /= 3;\n      if (isPreview) {\n        T *ptr_r = img.data(0, 0, 0, 0), *ptr_a = img.data(0, 0, 0, 3);\n        cimg_forXY(img, x, y)\n        {\n          const unsigned int a = (unsigned int)*(ptr_a++), i = 96 + (((x ^ y) & 8) << 3);\n          *ptr_r = (T)((a * (unsigned int)*ptr_r + (255 - a) * i) >> 8);\n          ++ptr_r;\n        }\n      }\n      img.channel(0);\n      break;\n    default: // from multi-channel (>4)\n      img.channel(0);\n    }\n    break;\n\n  case 2: // To GRAYA\n    switch (img.spectrum()) {\n    case 1: // from GRAY\n      img.resize(-100, -100, 1, 2, 0).get_shared_channel(1).fill(255);\n      break;\n    case 2: // from GRAYA\n      break;\n    case 3: // from RGB\n      (img.get_shared_channel(0) += img.get_shared_channel(1) += img.get_shared_channel(2)) /= 3;\n      img.channels(0, 1).get_shared_channel(1).fill(255);\n      break;\n    case 4: // from RGBA\n      (img.get_shared_channel(0) += img.get_shared_channel(1) += img.get_shared_channel(2)) /= 3;\n      img.get_shared_channel(1) = img.get_shared_channel(3);\n      img.channels(0, 1);\n      break;\n    default: // from multi-channel (>4)\n      img.channels(0, 1);\n    }\n    break;\n\n  case 3: // to RGB\n    switch (img.spectrum()) {\n    case 1: // from GRAY\n      img.resize(-100, -100, 1, 3);\n      break;\n    case 2: // from GRAYA\n      if (isPreview) {\n        T *ptr_r = img.data(0, 0, 0, 0), *ptr_a = img.data(0, 0, 0, 1);\n        cimg_forXY(img, x, y)\n        {\n          const unsigned int a = (unsigned int)*(ptr_a++), i = 96 + (((x ^ y) & 8) << 3);\n          *ptr_r = (T)((a * (unsigned int)*ptr_r + (255 - a) * i) >> 8);\n          ++ptr_r;\n        }\n      }\n      img.channel(0).resize(-100, -100, 1, 3);\n      break;\n    case 3: // from RGB\n      break;\n    case 4: // from RGBA\n      if (isPreview) {\n        T *ptr_r = img.data(0, 0, 0, 0), *ptr_g = img.data(0, 0, 0, 1), *ptr_b = img.data(0, 0, 0, 2), *ptr_a = img.data(0, 0, 0, 3);\n        cimg_forXY(img, x, y)\n        {\n          const unsigned int a = (unsigned int)*(ptr_a++), i = 96 + (((x ^ y) & 8) << 3);\n          *ptr_r = (T)((a * (unsigned int)*ptr_r + (255 - a) * i) >> 8);\n          *ptr_g = (T)((a * (unsigned int)*ptr_g + (255 - a) * i) >> 8);\n          *ptr_b = (T)((a * (unsigned int)*ptr_b + (255 - a) * i) >> 8);\n          ++ptr_r;\n          ++ptr_g;\n          ++ptr_b;\n        }\n      }\n      img.channels(0, 2);\n      break;\n    default: // from multi-channel (>4)\n      img.channels(0, 2);\n    }\n    break;\n\n  case 4: // to RGBA\n    switch (img.spectrum()) {\n    case 1: // from GRAY\n      img.resize(-100, -100, 1, 4).get_shared_channel(3).fill(255);\n      break;\n    case 2: // from GRAYA\n      img.resize(-100, -100, 1, 4, 0);\n      img.get_shared_channel(3) = img.get_shared_channel(1);\n      img.get_shared_channel(1) = img.get_shared_channel(0);\n      img.get_shared_channel(2) = img.get_shared_channel(0);\n      break;\n    case 3: // from RGB\n      img.resize(-100, -100, 1, 4, 0).get_shared_channel(3).fill(255);\n      break;\n    case 4: // from RGBA\n      break;\n    default: // from multi-channel (>4)\n      img.channels(0, 3);\n    }\n    break;\n  }\n}\n\ntemplate void calibrateImage(gmic_library::gmic_image<gmic_pixel_type> & img, const int spectrum, const bool is_preview);\ntemplate void calibrateImage(gmic_library::gmic_image<unsigned char> & img, const int spectrum, const bool is_preview);\n\nvoid convertGmicImageToQImage(const gmic_library::gmic_image<float> & in, QImage & out)\n{\n  out = QImage(in.width(), in.height(), QImage::Format_RGB888);\n\n  if (in.spectrum() >= 4 && out.format() != QImage::Format_ARGB32) {\n    out = out.convertToFormat(QImage::Format_ARGB32);\n  }\n\n  if (in.spectrum() == 3 && out.format() != QImage::Format_RGB888) {\n    out = out.convertToFormat(QImage::Format_RGB888);\n  }\n\n  if (in.spectrum() == 2 && out.format() != QImage::Format_ARGB32) {\n    out = out.convertToFormat(QImage::Format_ARGB32);\n  }\n\n// Format_Grayscale8 was added in Qt 5.5.\n#if QT_VERSION_GTE(5, 5, 0)\n  if (in.spectrum() == 1 && out.format() != QImage::Format_Grayscale8) {\n    out = out.convertToFormat(QImage::Format_Grayscale8);\n  }\n#else\n  if (in.spectrum() == 1) {\n    out = out.convertToFormat(QImage::Format_RGB888);\n  }\n#endif\n\n  if (in.spectrum() >= 4) {\n    const float * srcR = in.data(0, 0, 0, 0);\n    const float * srcG = in.data(0, 0, 0, 1);\n    const float * srcB = in.data(0, 0, 0, 2);\n    const float * srcA = in.data(0, 0, 0, 3);\n    int height = out.height();\n    if (archIsLittleEndian()) {\n      for (int y = 0; y < height; ++y) {\n        int n = in.width();\n        unsigned char * dst = out.scanLine(y);\n        while (n--) {\n          dst[0] = float2uchar_bounded(*srcB++);\n          dst[1] = float2uchar_bounded(*srcG++);\n          dst[2] = float2uchar_bounded(*srcR++);\n          dst[3] = float2uchar_bounded(*srcA++);\n          dst += 4;\n        }\n      }\n    } else {\n      for (int y = 0; y < height; ++y) {\n        int n = in.width();\n        unsigned char * dst = out.scanLine(y);\n        while (n--) {\n          dst[0] = float2uchar_bounded(*srcA++);\n          dst[1] = float2uchar_bounded(*srcR++);\n          dst[2] = float2uchar_bounded(*srcG++);\n          dst[3] = float2uchar_bounded(*srcB++);\n          dst += 4;\n        }\n      }\n    }\n  } else if (in.spectrum() == 3) {\n    const float * srcR = in.data(0, 0, 0, 0);\n    const float * srcG = in.data(0, 0, 0, 1);\n    const float * srcB = in.data(0, 0, 0, 2);\n    int height = out.height();\n    for (int y = 0; y < height; ++y) {\n      int n = in.width();\n      unsigned char * dst = out.scanLine(y);\n      while (n--) {\n        dst[0] = float2uchar_bounded(*srcR++);\n        dst[1] = float2uchar_bounded(*srcG++);\n        dst[2] = float2uchar_bounded(*srcB++);\n        dst += 3;\n      }\n    }\n  } else if (in.spectrum() == 2) {\n    //\n    // Gray + Alpha\n    //\n    const float * src = in.data(0, 0, 0, 0);\n    const float * srcA = in.data(0, 0, 0, 1);\n    int height = out.height();\n    if (archIsLittleEndian()) {\n      for (int y = 0; y < height; ++y) {\n        int n = in.width();\n        unsigned char * dst = out.scanLine(y);\n        while (n--) {\n          dst[2] = dst[1] = dst[0] = float2uchar_bounded(*src++);\n          dst[3] = float2uchar_bounded(*srcA++);\n          dst += 4;\n        }\n      }\n    } else {\n      for (int y = 0; y < height; ++y) {\n        int n = in.width();\n        unsigned char * dst = out.scanLine(y);\n        while (n--) {\n          dst[1] = dst[2] = dst[3] = float2uchar_bounded(*src++);\n          dst[0] = float2uchar_bounded(*srcA++);\n          dst += 4;\n        }\n      }\n    }\n  } else {\n    //\n    // 8-bits Gray levels\n    //\n    const float * src = in.data(0, 0, 0, 0);\n    int height = out.height();\n    for (int y = 0; y < height; ++y) {\n      int n = in.width();\n      unsigned char * dst = out.scanLine(y);\n#if QT_VERSION_GTE(5, 5, 0)\n      while (n--) {\n        *dst++ = static_cast<unsigned char>(*src++);\n      }\n#else\n      while (n--) {\n        dst[0] = float2uchar_bounded(*src);\n        dst[1] = float2uchar_bounded(*src);\n        dst[2] = float2uchar_bounded(*src);\n        ++src;\n        dst += 3;\n      }\n#endif\n    }\n  }\n}\n\nvoid convertQImageToGmicImage(const QImage & in, gmic_library::gmic_image<float> & out)\n{\n  Q_ASSERT_X(in.format() == QImage::Format_ARGB32 || in.format() == QImage::Format_RGB888, \"convert\", \"bad input format\");\n\n  if (in.format() == QImage::Format_ARGB32) {\n    const int w = in.width();\n    const int h = in.height();\n    out.assign(w, h, 1, 4);\n    float * dstR = out.data(0, 0, 0, 0);\n    float * dstG = out.data(0, 0, 0, 1);\n    float * dstB = out.data(0, 0, 0, 2);\n    float * dstA = out.data(0, 0, 0, 3);\n    if (archIsLittleEndian()) {\n      for (int y = 0; y < h; ++y) {\n        const unsigned char * src = in.scanLine(y);\n        int n = in.width();\n        while (n--) {\n          *dstB++ = static_cast<float>(src[0]);\n          *dstG++ = static_cast<float>(src[1]);\n          *dstR++ = static_cast<float>(src[2]);\n          *dstA++ = static_cast<float>(src[3]);\n          src += 4;\n        }\n      }\n    } else {\n      for (int y = 0; y < h; ++y) {\n        const unsigned char * src = in.scanLine(y);\n        int n = in.width();\n        while (n--) {\n          *dstA++ = static_cast<float>(src[0]);\n          *dstR++ = static_cast<float>(src[1]);\n          *dstG++ = static_cast<float>(src[2]);\n          *dstB++ = static_cast<float>(src[3]);\n          src += 4;\n        }\n      }\n    }\n    return;\n  }\n\n  if (in.format() == QImage::Format_RGB888) {\n    const int w = in.width();\n    const int h = in.height();\n    out.assign(w, h, 1, 3);\n    float * dstR = out.data(0, 0, 0, 0);\n    float * dstG = out.data(0, 0, 0, 1);\n    float * dstB = out.data(0, 0, 0, 2);\n    for (int y = 0; y < h; ++y) {\n      const unsigned char * src = in.scanLine(y);\n      int n = in.width();\n      while (n--) {\n        *dstR++ = static_cast<float>(src[0]);\n        *dstG++ = static_cast<float>(src[1]);\n        *dstB++ = static_cast<float>(src[2]);\n        src += 3;\n      }\n    }\n    return;\n  }\n}\n\n} // namespace GmicQt\n\nnamespace\n{\n\nvoid configureApplication()\n{\n  QCoreApplication::setOrganizationName(GMIC_QT_ORGANISATION_NAME);\n  QCoreApplication::setOrganizationDomain(GMIC_QT_ORGANISATION_DOMAIN);\n  QCoreApplication::setApplicationName(GMIC_QT_APPLICATION_NAME);\n  QCoreApplication::setAttribute(Qt::AA_DontUseNativeMenuBar);\n#if !QT_VERSION_GTE(6, 0, 0)\n  if (QSettings().value(HIGHDPI_KEY, false).toBool()) {\n    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);\n  }\n#endif\n}\n\nvoid disableModes(const std::list<GmicQt::InputMode> & disabledInputModes, //\n                  const std::list<GmicQt::OutputMode> & disabledOutputModes)\n{\n  for (const GmicQt::InputMode & mode : disabledInputModes) {\n    GmicQt::InOutPanel::disableInputMode(mode);\n  }\n  for (const GmicQt::OutputMode & mode : disabledOutputModes) {\n    GmicQt::InOutPanel::disableOutputMode(mode);\n  }\n}\n\n} // namespace\n"
  },
  {
    "path": "src/GmicQt.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file GmicQt.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_GMIC_QT_H\n#define GMIC_QT_GMIC_QT_H\n\nnamespace gmic_library\n{\ntemplate <typename T> struct gmic_image;\ntemplate <typename T> struct gmic_list;\n} // namespace gmic_library\n\n#ifndef gmic_pixel_type\n#define gmic_pixel_type float\n#endif\n\n#define GMIC_QT_STRINGIFY(X) #X\n#define GMIC_QT_XSTRINGIFY(X) GMIC_QT_STRINGIFY(X)\n#define gmic_pixel_type_str GMIC_QT_XSTRINGIFY(gmic_pixel_type)\n\n#include <list>\n#include <string>\nclass QString;\nclass QImage;\n\nnamespace GmicQt\n{\n\nenum class UserInterfaceMode\n{\n  Silent,\n  ProgressDialog,\n  Full\n};\n\nenum class InputMode\n{\n  NoInput,\n  Active,\n  All,\n  ActiveAndBelow,\n  ActiveAndAbove,\n  AllVisible,\n  AllInvisible,\n  AllVisiblesDesc_DEPRECATED,   /* Removed since 2.8.2 */\n  AllInvisiblesDesc_DEPRECATED, /* Removed since 2.8.2 */\n  AllDesc_DEPRECATED,           /* Removed since 2.8.2 */\n  Unspecified = 100\n};\nextern InputMode DefaultInputMode;\n\nenum class OutputMode\n{\n  InPlace,\n  NewLayers,\n  NewActiveLayers,\n  NewImage,\n  Unspecified = 100\n};\nextern OutputMode DefaultOutputMode;\n\nenum class OutputMessageMode\n{\n  Quiet,\n  VerboseLayerName_DEPRECATED = Quiet, /* Removed since 2.9.5 */\n  VerboseConsole = Quiet + 2,\n  VerboseLogFile,\n  VeryVerboseConsole,\n  VeryVerboseLogFile,\n  DebugConsole,\n  DebugLogFile,\n  Unspecified = 100\n};\nextern const OutputMessageMode DefaultOutputMessageMode;\n\nconst QString & gmicVersionString();\n\nextern const int GmicVersion;\n\nstruct RunParameters {\n  std::string command;\n  std::string filterPath;\n  InputMode inputMode = InputMode::Unspecified;\n  OutputMode outputMode = OutputMode::Unspecified;\n  std::string filterName() const;\n};\n\n/**\n * A G'MIC filter may update the parameters it has received. This enum must be\n * used to tell the function lastAppliedFilterRunParameters() whether it\n * should return the parameters as they where supplied to the last applied\n * filter, or as they have been \"returned\" by this filter. If the filter does\n * not update its parameters, then \"After\" means the same as \"Before\".\n */\nenum class ReturnedRunParametersFlag\n{\n  BeforeFilterExecution,\n  AfterFilterExecution\n};\n\nRunParameters lastAppliedFilterRunParameters(ReturnedRunParametersFlag flag);\n\n/**\n * Function that should be called to launch the plugin from the host adaptation code.\n * @return The exit status of Qt's main event loop (QApplication::exec()).\n */\nint run(UserInterfaceMode interfaceMode = UserInterfaceMode::Full,                   //\n        RunParameters parameters = RunParameters(),                                  //\n        const std::list<InputMode> & disabledInputModes = std::list<InputMode>(),    //\n        const std::list<OutputMode> & disabledOutputModes = std::list<OutputMode>(), //\n        bool * dialogWasAccepted = nullptr);\n/*\n * What follows may be helpful for the implementation of a host_something.cpp\n */\n\n/**\n * Calibrate any image to fit the required number of channels (1:GRAY, 2:GRAYA, 3:RGB or 4:RGBA).\n *\n * Instantiated for T in {unsigned char, gmic_pixel_type}\n */\ntemplate <typename T> //\nvoid calibrateImage(gmic_library::gmic_image<T> & img, const int spectrum, const bool isPreview);\n\nvoid convertGmicImageToQImage(const gmic_library::gmic_image<float> & in, QImage & out);\n\nvoid convertQImageToGmicImage(const QImage & in, gmic_library::gmic_image<float> & out);\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_GMIC_QT_H\n"
  },
  {
    "path": "src/GmicStdlib.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file GmicStdlib.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"GmicStdlib.h\"\n#include <QCryptographicHash>\n#include <QDebug>\n#include <QDir>\n#include <QFile>\n#include <QFileInfo>\n#include <QList>\n#include <QRegularExpression>\n#include <QRegularExpressionMatch>\n#include <QString>\n#include <QStringList>\n#include <QtGlobal>\n#include \"Common.h\"\n#include \"GmicQt.h\"\n#include \"Utils.h\"\n#include \"gmic.h\"\n\nnamespace GmicQt\n{\n\nQByteArray GmicStdLib::Array;\n\nvoid GmicStdLib::loadStdLib() // TODO : Remove\n{\n  QString path = QString(\"%1update%2.gmic\").arg(gmicConfigPath(false)).arg(gmic_version);\n  QFileInfo info(path);\n  QFile stdlib(path);\n  if ((info.size() == 0) || !stdlib.open(QFile::ReadOnly)) {\n    gmic_image<char> stdlib_h = gmic::decompress_stdlib();\n    Array = QByteArray::fromRawData(stdlib_h, stdlib_h.size());\n    Array[Array.size() - 1] = '\\n';\n  } else {\n    Array = stdlib.readAll();\n  }\n}\n\nQString GmicStdLib::substituteSourceVariables(QString text)\n{\n  QRegularExpression reVariables[] = {\n#ifdef _IS_WINDOWS_\n      QRegularExpression{\"%([A-Za-z_][A-Za-z0-9_]+)%\"} //\n#else\n      QRegularExpression{\"\\\\$([A-Za-z_][A-Za-z0-9_]+)\"},  //\n      QRegularExpression{\"\\\\${([A-Za-z_][A-Za-z0-9_]+)}\"} //\n#endif\n  };\n\n#ifdef _IS_WINDOWS_\n  text.replace(\"%VERSION%\", QString::number(GmicQt::GmicVersion));\n#else\n  text.replace(\"$VERSION\", QString::number(GmicQt::GmicVersion));\n  text.replace(\"${VERSION}\", QString::number(GmicQt::GmicVersion));\n#endif\n\n  for (QRegularExpression re : reVariables) {\n    QRegularExpressionMatch match;\n    while ((match = re.match(text)).hasMatch()) {\n      QByteArray value = qgetenv(match.captured(1).toLocal8Bit().constData());\n      if (value.isEmpty()) { // Undefined variables should yield an ignored source\n        return {};\n      }\n      text.replace(match.captured(0), QString::fromLocal8Bit(value));\n    }\n  }\n  return text;\n}\n\nQStringList GmicStdLib::substituteSourceVariables(const QStringList & list)\n{\n  QStringList result;\n  for (const QString & str : list) {\n    QString source = substituteSourceVariables(str);\n    if (!source.isEmpty()) {\n      result << source;\n    }\n  }\n  return result;\n}\n\nQByteArray GmicStdLib::hash()\n{\n  return QCryptographicHash::hash(Array, QCryptographicHash::Sha1);\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/GmicStdlib.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file GmicStdlib.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_GMICSTDLIB_H\n#define GMIC_QT_GMICSTDLIB_H\n\n#include <QByteArray>\n#include <QString>\n#include <QStringList>\n\nnamespace GmicQt\n{\n\nclass GmicStdLib {\npublic:\n  GmicStdLib() = delete;\n  static void loadStdLib();\n  static QByteArray Array;\n  static QString substituteSourceVariables(QString text);\n  static QStringList substituteSourceVariables(const QStringList &list);\n  static QByteArray hash();\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_GMICSTDLIB_H\n"
  },
  {
    "path": "src/HeadlessProcessor.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file HeadlessProcessor.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"HeadlessProcessor.h\"\n#include <QDebug>\n#include <QMessageBox>\n#include <QSettings>\n#include <QStringList>\n#include \"Common.h\"\n#include \"FilterParameters/FilterParametersWidget.h\"\n#include \"FilterSelector/FiltersPresenter.h\"\n#include \"FilterTextTranslator.h\"\n#include \"FilterThread.h\"\n#include \"GmicStdlib.h\"\n#include \"HtmlTranslator.h\"\n#include \"Logger.h\"\n#include \"Misc.h\"\n#include \"ParametersCache.h\"\n#include \"Settings.h\"\n#include \"Updater.h\"\n#include \"Widgets/ProgressInfoWindow.h\"\n#include \"gmic.h\"\n\n#ifdef _IS_WINDOWS_\n#include <windows.h>\n#include <process.h>\n#include <psapi.h>\n#endif\n\nnamespace GmicQt\n{\n\n/**\n * @brief HeadlessProcessor::HeadlessProcessor using \"last parameters\" from config file\n * @param parent\n */\nHeadlessProcessor::HeadlessProcessor(QObject * parent) //\n    : QObject(parent), _filterThread(nullptr), _gmicImages(new gmic_library::gmic_list<gmic_pixel_type>)\n{\n  _progressWindow = nullptr;\n  _processingCompletedProperly = false;\n  GmicStdLib::Array = Updater::getInstance()->buildFullStdlib();\n}\n\nHeadlessProcessor::~HeadlessProcessor()\n{\n  delete _gmicImages;\n}\n\nbool HeadlessProcessor::setPluginParameters(const RunParameters & parameters)\n{\n  _path = QString::fromStdString(parameters.filterPath);\n  _inputMode = (parameters.inputMode == InputMode::Unspecified) ? DefaultInputMode : parameters.inputMode;\n  _outputMode = (parameters.outputMode == OutputMode::Unspecified) ? DefaultOutputMode : parameters.outputMode;\n\n  if (_path.isEmpty()) { // A pure command\n    if (parameters.command.empty()) {\n      _errorMessage = tr(\"At least a filter path or a filter command must be provided.\");\n    } else {\n      _filterName = tr(\"Custom command (%1)\").arg(elided(QString::fromStdString(parameters.command), 35));\n      _command = \"skip 0\";\n      _arguments = QString::fromStdString(parameters.command);\n    }\n  } else { // A path is given\n    QString plainPath = HtmlTranslator::html2txt(_path, false);\n    FiltersPresenter::Filter filter = FiltersPresenter::findFilterFromAbsolutePathOrNameInStdlib(plainPath);\n    if (filter.isInvalid()) {\n      _errorMessage = tr(\"Cannot find filter matching path %1\").arg(_path);\n    } else {\n      QString error;\n      QVector<bool> quoted;\n      QVector<int> sizes;\n      QStringList defaultParameters = FilterParametersWidget::defaultParameterList(filter.parameters, &error, &quoted, &sizes);\n      if (!error.isEmpty()) {\n        _errorMessage = tr(\"Error parsing filter parameters definition for filter:\\n\\n%1\\n\\nCannot retrieve default parameters.\\n\\n%2\").arg(_path).arg(error);\n      } else {\n        if (filter.isAFave) {\n          // sizes have been computed, but we replace 'defaults' with Fave's ones.\n          defaultParameters = filter.defaultParameterValues;\n        }\n        if (parameters.command.empty()) {\n          _filterName = FilterTextTranslator::translate(filter.plainTextName);\n          _hash = filter.hash;\n          _command = filter.command;\n          _arguments = flattenGmicParameterList(defaultParameters, quoted);\n          _gmicStatusQuotedParameters = quoted;\n        } else {\n          QString command;\n          QString arguments;\n          QStringList providedParameters;\n          if (!parseGmicUniqueFilterCommand(parameters.command.c_str(), command, arguments) || //\n              !parseGmicFilterParameters(arguments, providedParameters)) {\n            _errorMessage = tr(\"Error parsing supplied command: %1\").arg(QString::fromStdString(parameters.command));\n          } else {\n            if (command != filter.command) {\n              _errorMessage = tr(\"Supplied command (%1) does not match path (%2), (should be %3).\").arg(command).arg(plainPath).arg(filter.command);\n            } else {\n              _filterName = FilterTextTranslator::translate(filter.plainTextName);\n              _hash = filter.hash;\n              _command = command;\n              auto expandedDefaults = expandParameterList(defaultParameters, sizes);\n              auto completed = completePrefixFromFullList(providedParameters, expandedDefaults);\n              _arguments = flattenGmicParameterList(mergeSubsequences(completed, sizes), quoted);\n              _gmicStatusQuotedParameters = quoted;\n            }\n          }\n        }\n      }\n    }\n  }\n  return _errorMessage.isEmpty();\n}\n\nconst QString & HeadlessProcessor::error() const\n{\n  return _errorMessage;\n}\n\nvoid HeadlessProcessor::startProcessing()\n{\n  if (!_errorMessage.isEmpty()) {\n    endApplication(_errorMessage);\n  }\n\n  _singleShotTimer.setInterval(750);\n  _singleShotTimer.setSingleShot(true);\n  connect(&_singleShotTimer, &QTimer::timeout, this, &HeadlessProcessor::progressWindowShouldShow);\n  ParametersCache::load(true);\n\n  _singleShotTimer.start();\n  _gmicImages->assign();\n  gmic_list<char> imageNames;\n  GmicQtHost::getCroppedImages(*_gmicImages, imageNames, -1, -1, -1, -1, _inputMode);\n  if (!_progressWindow) {\n    GmicQtHost::showMessage(QString(\"G'MIC: %1 %2\").arg(_command).arg(_arguments).toUtf8().constData());\n  }\n  QString env = QString(\"_input_layers=%1\").arg((int)_inputMode);\n  env += QString(\" _output_mode=%1\").arg((int)_outputMode);\n  env += QString(\" _output_messages=%1\").arg((int)Settings::outputMessageMode());\n  _filterThread = new FilterThread(this, _command, _arguments, env);\n  _filterThread->swapImages(*_gmicImages);\n  _filterThread->setImageNames(imageNames);\n  _processingCompletedProperly = false;\n  connect(_filterThread, &FilterThread::finished, this, &HeadlessProcessor::onProcessingFinished);\n  _timer.setInterval(250);\n  connect(&_timer, &QTimer::timeout, this, &HeadlessProcessor::sendProgressInformation);\n  _timer.start();\n  _filterThread->start();\n}\n\nQString HeadlessProcessor::command() const\n{\n  return _command;\n}\n\nQString HeadlessProcessor::filterName() const\n{\n  return _filterName;\n}\n\nvoid HeadlessProcessor::setProgressWindow(ProgressInfoWindow * progressInfoWindow)\n{\n  _progressWindow = progressInfoWindow;\n}\n\nbool HeadlessProcessor::processingCompletedProperly()\n{\n  return _processingCompletedProperly;\n}\n\nvoid HeadlessProcessor::sendProgressInformation()\n{\n  if (!_filterThread) {\n    return;\n  }\n  float progress = _filterThread->progress();\n  int ms = _filterThread->duration();\n  unsigned long memory = 0;\n#if defined(_IS_UNIX_)\n  QFile status(\"/proc/self/status\");\n  if (status.open(QFile::ReadOnly)) {\n    QByteArray text = status.readAll();\n    const char * str = strstr(text.constData(), \"VmRSS:\");\n    unsigned int kiB = 0;\n    if (str && sscanf(str + 7, \"%u\", &kiB)) {\n      memory = 1024 * (unsigned long)kiB;\n    }\n  }\n#elif defined(_IS_WINDOWS_)\n  PROCESS_MEMORY_COUNTERS counters;\n  if (GetProcessMemoryInfo(GetCurrentProcess(), &counters, sizeof(counters))) {\n    memory = static_cast<unsigned long>(counters.WorkingSetSize);\n  }\n#else\n// TODO: MACOS\n#endif\n  emit progression(progress, ms, memory);\n}\n\nvoid HeadlessProcessor::onProcessingFinished()\n{\n  _timer.stop();\n  QString errorMessage;\n  QStringList status = _filterThread->gmicStatus();\n  if (_filterThread->failed()) {\n    errorMessage = _filterThread->errorMessage();\n    if (errorMessage.isEmpty()) {\n      errorMessage = tr(\"Filter execution failed, but with no error message.\");\n    }\n  } else {\n    gmic_list<gmic_pixel_type> images = _filterThread->images();\n    if (!_filterThread->aborted()) {\n      GmicQtHost::outputImages(images, _filterThread->imageNames(), _outputMode);\n      _processingCompletedProperly = true;\n    }\n    QSettings settings;\n    if (!status.isEmpty() && !_hash.isEmpty()) {\n      ParametersCache::setValues(_hash, status);\n      ParametersCache::save();\n      QString statusString = flattenGmicParameterList(status, _gmicStatusQuotedParameters);\n      settings.setValue(QString(\"LastExecution/host_%1/GmicStatusString\").arg(GmicQtHost::ApplicationShortname), statusString);\n    }\n    settings.setValue(QString(\"LastExecution/host_%1/FilterPath\").arg(GmicQtHost::ApplicationShortname), _path);\n    settings.setValue(QString(\"LastExecution/host_%1/FilterHash\").arg(GmicQtHost::ApplicationShortname), _hash);\n    settings.setValue(QString(\"LastExecution/host_%1/Command\").arg(GmicQtHost::ApplicationShortname), _command);\n    settings.setValue(QString(\"LastExecution/host_%1/Arguments\").arg(GmicQtHost::ApplicationShortname), _arguments);\n    settings.setValue(QString(\"LastExecution/host_%1/InputMode\").arg(GmicQtHost::ApplicationShortname), (int)_inputMode);\n    settings.setValue(QString(\"LastExecution/host_%1/OutputMode\").arg(GmicQtHost::ApplicationShortname), (int)_outputMode);\n  }\n  _filterThread->deleteLater();\n  _filterThread = nullptr;\n  endApplication(errorMessage);\n}\n\nvoid HeadlessProcessor::cancel()\n{\n  if (_filterThread) {\n    _filterThread->abortGmic();\n  }\n}\n\nvoid HeadlessProcessor::endApplication(const QString & errorMessage)\n{\n  _singleShotTimer.stop();\n  emit done(errorMessage);\n  if (!errorMessage.isEmpty()) {\n    Logger::error(errorMessage);\n  }\n  QCoreApplication::exit(!errorMessage.isEmpty());\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/HeadlessProcessor.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file HeadlessProcessor.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_HEADLESSPROCESSOR_H\n#define GMIC_QT_HEADLESSPROCESSOR_H\n\n#include <QObject>\n#include <QString>\n#include <QTimer>\n#include <QVector>\n#include \"GmicQt.h\"\n\nnamespace gmic_library\n{\ntemplate <typename T> struct gmic_list;\n}\n\nnamespace GmicQt\n{\nclass FilterThread;\nclass ProgressInfoWindow;\n\nclass HeadlessProcessor : public QObject {\n  Q_OBJECT\n\npublic:\n  explicit HeadlessProcessor(QObject * parent);\n  ~HeadlessProcessor() override;\n  QString command() const;\n  QString filterName() const;\n  void setProgressWindow(ProgressInfoWindow *);\n  bool processingCompletedProperly();\n  bool setPluginParameters(const RunParameters & parameters);\n  const QString & error() const;\npublic slots:\n  void startProcessing();\n  void sendProgressInformation();\n  void onProcessingFinished();\n  void cancel();\nsignals:\n  void progressWindowShouldShow();\n  void done(QString errorMessage);\n  void progression(float progress, int duration, unsigned long memory);\n\nprivate:\n  void endApplication(const QString & errorMessage);\n  FilterThread * _filterThread;\n  gmic_library::gmic_list<float> * _gmicImages;\n  ProgressInfoWindow * _progressWindow;\n  QTimer _timer;\n  QString _filterName;\n  QString _path;\n  QString _command;\n  QString _arguments;\n  OutputMode _outputMode;\n  InputMode _inputMode;\n  QTimer _singleShotTimer;\n  bool _processingCompletedProperly;\n  QString _errorMessage;\n  QString _hash;\n  QVector<bool> _gmicStatusQuotedParameters;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_HEADLESSPROCESSOR_H\n"
  },
  {
    "path": "src/Host/8bf/host_8bf.cpp",
    "content": "/*\n*  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n*  editors, offering hundreds of filters thanks to the underlying G'MIC\n*  image processing framework.\n*\n*  Copyright (C) 2020, 2021 Nicholas Hayes\n*\n*  Portions Copyright 2017 Sebastien Fourey\n*\n*  G'MIC-Qt is free software: you can redistribute it and/or modify\n*  it under the terms of the GNU General Public License as published by\n*  the Free Software Foundation, either version 3 of the License, or\n*  (at your option) any later version.\n*\n*  G'MIC-Qt is distributed in the hope that it will be useful,\n*  but WITHOUT ANY WARRANTY; without even the implied warranty of\n*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n*  GNU General Public License for more details.\n*\n*  You should have received a copy of the GNU General Public License\n*  along with this program.  If not, see <http://www.gnu.org/licenses/>.\n*\n*/\n#include <QApplication>\n#include <QImage>\n#include <QString>\n#include <QVector>\n#include <QDebug>\n#include <QDataStream>\n#include <QDateTime>\n#include <QDir>\n#include <QFile>\n#include <qglobal.h>\n#include <QMessageBox>\n#include <QUUid>\n#include <iostream>\n#include <limits>\n#include <memory>\n#include <new>\n#include <list>\n#include \"Common.h\"\n#include \"Host/GmicQtHost.h\"\n#include \"ImageTools.h\"\n#include \"GmicQt.h\"\n#include \"gmic.h\"\n#include <lcms2.h>\n#include <QMainWindow>\n\nstruct Gmic8bfLayer\n{\n    int32_t width;\n    int32_t height;\n    bool visible;\n    QString name;\n    gmic_library::gmic_image<float> imageData;\n};\n\nnamespace host_8bf\n{\n    QString outputDir;\n    QVector<Gmic8bfLayer> layers;\n    int32_t activeLayerIndex;\n    bool grayScale;\n    uint8_t bitsPerChannel;\n    int32_t documentWidth;\n    int32_t documentHeight;\n    int32_t hostTileWidth;\n    int32_t hostTileHeight;\n    cmsContext lcmsContext;\n    cmsHPROFILE imageProfile;\n    cmsHPROFILE displayProfile;\n    bool fetchedDisplayProfileFromQtWidget;\n    cmsHTRANSFORM transform;\n    cmsUInt32Number transformFormat;\n}\n\nnamespace GmicQtHost\n{\n    const QString ApplicationName = QString(\"8bf Hosts\");\n    const char * const ApplicationShortname = GMIC_QT_XSTRINGIFY(GMIC_HOST);\n    const bool DarkThemeIsDefault = true;\n}\n\nnamespace\n{\n    QString ReadUTF8String(QDataStream& dataStream)\n    {\n        int32_t length = 0;\n\n        dataStream >> length;\n\n        if (length == 0)\n        {\n            return QString();\n        }\n        else\n        {\n            QByteArray utf8Bytes(length, '\\0');\n\n            dataStream.readRawData(utf8Bytes.data(), length);\n\n            return QString::fromUtf8(utf8Bytes);\n        }\n    }\n\n    enum class InputFileParseStatus\n    {\n        Ok,\n        FileOpenError,\n        BadFileSignature,\n        UnknownFileVersion,\n        InvalidArgument,\n        OutOfMemory,\n        EndOfFile,\n        PlatformEndianMismatch,\n        FileReadError,\n        IccProfileError\n    };\n\n    InputFileParseStatus FillTileBuffer(\n        QDataStream& dataStream,\n        const size_t& requiredSize,\n        char* buffer)\n    {\n        size_t totalBytesRead = 0;\n\n        while (totalBytesRead < requiredSize)\n        {\n            int bytesToRead = static_cast<int>(std::min(requiredSize - totalBytesRead, static_cast<size_t>(INT_MAX)));\n\n            int bytesRead = dataStream.readRawData(buffer + totalBytesRead, bytesToRead);\n\n            if (bytesRead <= 0)\n            {\n                return InputFileParseStatus::EndOfFile;\n            }\n\n            totalBytesRead += bytesRead;\n        }\n\n        return InputFileParseStatus::Ok;\n    }\n\n    InputFileParseStatus CopyTileToGmicImage8Interleaved(\n        const unsigned char* tileBuffer,\n        size_t tileBufferStride,\n        int left,\n        int top,\n        int right,\n        int bottom,\n        gmic_library::gmic_image<float>& out)\n    {\n        const int imageWidth = out.width();\n        const int numberOfChannels = out.spectrum();\n\n        if (numberOfChannels == 3)\n        {\n            float* rPlane = out.data(0, 0, 0, 0);\n            float* gPlane = out.data(0, 0, 0, 1);\n            float* bPlane = out.data(0, 0, 0, 2);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const unsigned char* src = tileBuffer + ((static_cast<size_t>(y) - top) * tileBufferStride);\n\n                const size_t planeStart = (static_cast<size_t>(y) * imageWidth) + left;\n\n                float* dstR = rPlane + planeStart;\n                float* dstG = gPlane + planeStart;\n                float* dstB = bPlane + planeStart;\n\n                for (int x = left; x < right; x++)\n                {\n                    *dstR++ = static_cast<float>(src[0]);\n                    *dstG++ = static_cast<float>(src[1]);\n                    *dstB++ = static_cast<float>(src[2]);\n                    src += 3;\n                }\n            }\n        }\n        else if (numberOfChannels == 4)\n        {\n            float* rPlane = out.data(0, 0, 0, 0);\n            float* gPlane = out.data(0, 0, 0, 1);\n            float* bPlane = out.data(0, 0, 0, 2);\n            float* aPlane = out.data(0, 0, 0, 3);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const unsigned char* src = tileBuffer + ((static_cast<size_t>(y) - top) * tileBufferStride);\n\n                const size_t planeStart = (static_cast<size_t>(y) * imageWidth) + left;\n\n                float* dstR = rPlane + planeStart;\n                float* dstG = gPlane + planeStart;\n                float* dstB = bPlane + planeStart;\n                float* dstA = aPlane + planeStart;\n\n                for (int x = left; x < right; x++)\n                {\n                    *dstR++ = static_cast<float>(src[0]);\n                    *dstG++ = static_cast<float>(src[1]);\n                    *dstB++ = static_cast<float>(src[2]);\n                    *dstA++ = static_cast<float>(src[3]);\n                    src += 4;\n                }\n            }\n        }\n        else if (numberOfChannels == 2)\n        {\n            float* grayPlane = out.data(0, 0, 0, 0);\n            float* alphaPlane = out.data(0, 0, 0, 1);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const unsigned char* src = tileBuffer + ((static_cast<size_t>(y) - top) * tileBufferStride);\n\n                const size_t planeStart = (static_cast<size_t>(y) * imageWidth) + left;\n\n                float* dstGray = grayPlane + planeStart;\n                float* dstAlpha = alphaPlane + planeStart;\n\n                for (int x = left; x < right; x++)\n                {\n                    *dstGray++ = static_cast<float>(src[0]);\n                    *dstAlpha++ = static_cast<float>(src[1]);\n                    src += 2;\n                }\n            }\n        }\n        else if (numberOfChannels == 1)\n        {\n            float* grayPlane = out.data(0, 0, 0, 0);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const unsigned char* src = tileBuffer + ((static_cast<size_t>(y) - top) * tileBufferStride);\n\n                const size_t planeStart = (static_cast<size_t>(y) * imageWidth) + left;\n\n                float* dstGray = grayPlane + planeStart;\n\n                for (int x = left; x < right; x++)\n                {\n                    *dstGray++ = static_cast<float>(src[0]);\n                    src++;\n                }\n            }\n        }\n        else\n        {\n            return InputFileParseStatus::InvalidArgument;\n        }\n\n        return InputFileParseStatus::Ok;\n    }\n\n    InputFileParseStatus CopyTileToGmicImage8Planar(\n        const unsigned char* tileBuffer,\n        size_t tileBufferStride,\n        int left,\n        int top,\n        int right,\n        int bottom,\n        int channelIndex,\n        gmic_library::gmic_image<float>& image)\n    {\n        const int imageWidth = image.width();\n\n        float* plane = image.data(0, 0, 0, channelIndex);\n\n        for (int y = top; y < bottom; ++y)\n        {\n            const unsigned char* src = tileBuffer + ((static_cast<size_t>(y) - top) * tileBufferStride);\n            float* dst = plane + (static_cast<size_t>(y) * static_cast<size_t>(imageWidth)) + left;\n\n            for (int x = left; x < right; x++)\n            {\n                *dst++ = static_cast<float>(src[0]);\n\n                src++;\n            }\n        }\n\n        return InputFileParseStatus::Ok;\n    }\n\n    InputFileParseStatus ConvertGmic8bfInputToGmicImage8(\n        QDataStream& dataStream,\n        int32_t inTileWidth,\n        int32_t inTileHeight,\n        int32_t inNumberOfChannels,\n        bool planar,\n        gmic_library::gmic_image<float>& image)\n    {\n        int32_t maxTileStride = planar ? inTileWidth : inTileWidth * inNumberOfChannels;\n        size_t tileBufferSize = static_cast<size_t>(maxTileStride) * inTileHeight;\n\n        std::unique_ptr<char[]> tileBuffer(new (std::nothrow) char[tileBufferSize]);\n\n        if (!tileBuffer)\n        {\n            return InputFileParseStatus::OutOfMemory;\n        }\n\n        int width = image.width();\n        int height = image.height();\n\n        if (planar)\n        {\n            for (int i = 0; i < inNumberOfChannels; i++)\n            {\n                for (int y = 0; y < height; y += inTileHeight)\n                {\n                    int top = y;\n                    int bottom = std::min(y + inTileHeight, height);\n\n                    size_t rowCount = static_cast<size_t>(bottom) - top;\n\n                    for (int x = 0; x < width; x += inTileWidth)\n                    {\n                        int left = x;\n                        int right = std::min(x + inTileWidth, width);\n\n                        size_t tileBufferStride = static_cast<size_t>(right) - left;\n                        size_t bytesToRead = tileBufferStride * rowCount;\n\n                        InputFileParseStatus status = FillTileBuffer(dataStream, bytesToRead, tileBuffer.get());\n\n                        if (status != InputFileParseStatus::Ok)\n                        {\n                            return status;\n                        }\n\n                        status = CopyTileToGmicImage8Planar(\n                            reinterpret_cast<const unsigned char*>(tileBuffer.get()),\n                            tileBufferStride,\n                            left,\n                            top,\n                            right,\n                            bottom,\n                            i,\n                            image);\n\n                        if (status != InputFileParseStatus::Ok)\n                        {\n                            return status;\n                        }\n                    }\n                }\n            }\n        }\n        else\n        {\n            for (int y = 0; y < height; y += inTileHeight)\n            {\n                int top = y;\n                int bottom = std::min(y + inTileHeight, height);\n\n                size_t rowCount = static_cast<size_t>(bottom) - top;\n\n                for (int x = 0; x < width; x += inTileWidth)\n                {\n                    int left = x;\n                    int right = std::min(x + inTileWidth, width);\n\n                    size_t columnCount = static_cast<size_t>(right) - left;\n                    size_t tileBufferStride = columnCount * inNumberOfChannels;\n                    size_t bytesToRead = tileBufferStride * rowCount;\n\n                    InputFileParseStatus status = FillTileBuffer(dataStream, bytesToRead, tileBuffer.get());\n\n                    if (status != InputFileParseStatus::Ok)\n                    {\n                        return status;\n                    }\n\n                    status = CopyTileToGmicImage8Interleaved(\n                        reinterpret_cast<const unsigned char*>(tileBuffer.get()),\n                        tileBufferStride,\n                        left,\n                        top,\n                        right,\n                        bottom,\n                        image);\n\n                    if (status != InputFileParseStatus::Ok)\n                    {\n                        return status;\n                    }\n                }\n            }\n        }\n\n        return InputFileParseStatus::Ok;\n    }\n\n    InputFileParseStatus CopyTileToGmicImage16Interleaved(\n        const unsigned short* tileBuffer,\n        size_t tileBufferStride,\n        int left,\n        int top,\n        int right,\n        int bottom,\n        gmic_library::gmic_image<float>& image,\n        const QVector<float>& sixteenBitToEightBitLUT)\n    {\n        const int imageWidth = image.width();\n\n        if (image.spectrum() == 3)\n        {\n            float* rPlane = image.data(0, 0, 0, 0);\n            float* gPlane = image.data(0, 0, 0, 1);\n            float* bPlane = image.data(0, 0, 0, 2);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const unsigned short* src = tileBuffer + ((static_cast<size_t>(y) - top) * tileBufferStride);\n\n                const size_t planeStart = (static_cast<size_t>(y) * imageWidth) + left;\n\n                float* dstR = rPlane + planeStart;\n                float* dstG = gPlane + planeStart;\n                float* dstB = bPlane + planeStart;\n\n                for (int x = left; x < right; x++)\n                {\n                    *dstR++ = sixteenBitToEightBitLUT[src[0]];\n                    *dstG++ = sixteenBitToEightBitLUT[src[1]];\n                    *dstB++ = sixteenBitToEightBitLUT[src[2]];\n                    src += 3;\n                }\n            }\n        }\n        else if (image.spectrum() == 4)\n        {\n            float* rPlane = image.data(0, 0, 0, 0);\n            float* gPlane = image.data(0, 0, 0, 1);\n            float* bPlane = image.data(0, 0, 0, 2);\n            float* aPlane = image.data(0, 0, 0, 3);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const unsigned short* src = tileBuffer + ((static_cast<size_t>(y) - top) * tileBufferStride);\n\n                const size_t planeStart = (static_cast<size_t>(y) * imageWidth) + left;\n\n                float* dstR = rPlane + planeStart;\n                float* dstG = gPlane + planeStart;\n                float* dstB = bPlane + planeStart;\n                float* dstA = aPlane + planeStart;\n\n                for (int x = left; x < right; x++)\n                {\n                    *dstR++ = sixteenBitToEightBitLUT[src[0]];\n                    *dstG++ = sixteenBitToEightBitLUT[src[1]];\n                    *dstB++ = sixteenBitToEightBitLUT[src[2]];\n                    *dstA++ = sixteenBitToEightBitLUT[src[3]];\n                    src += 4;\n                }\n            }\n        }\n        else if (image.spectrum() == 2)\n        {\n            float* grayPlane = image.data(0, 0, 0, 0);\n            float* alphaPlane = image.data(0, 0, 0, 1);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const unsigned short* src = tileBuffer + ((static_cast<size_t>(y) - top) * tileBufferStride);\n\n                const size_t planeStart = (static_cast<size_t>(y) * imageWidth) + left;\n\n                float* dstGray = grayPlane + planeStart;\n                float* dstAlpha = alphaPlane + planeStart;\n\n                for (int x = left; x < right; x++)\n                {\n                    *dstGray++ = sixteenBitToEightBitLUT[src[0]];\n                    *dstAlpha++ = sixteenBitToEightBitLUT[src[1]];\n                    src += 2;\n                }\n            }\n        }\n        else if (image.spectrum() == 1)\n        {\n            float* grayPlane = image.data(0, 0, 0, 0);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const unsigned short* src = tileBuffer + ((static_cast<size_t>(y) - top) * tileBufferStride);\n\n                const size_t planeStart = (static_cast<size_t>(y) * imageWidth) + left;\n\n                float* dstGray = grayPlane + planeStart;\n                for (int x = left; x < right; x++)\n                {\n                    *dstGray++ = sixteenBitToEightBitLUT[src[0]];\n                    src++;\n                }\n            }\n        }\n        else\n        {\n            return InputFileParseStatus::InvalidArgument;\n        }\n\n        return InputFileParseStatus::Ok;\n    }\n\n    InputFileParseStatus CopyTileToGmicImage16Planar(\n        const unsigned short* tileBuffer,\n        size_t tileBufferStride,\n        int left,\n        int top,\n        int right,\n        int bottom,\n        int channelIndex,\n        gmic_library::gmic_image<float>& image,\n        const QVector<float>& sixteenBitToEightBitLUT)\n    {\n        const int imageWidth = image.width();\n\n        float* plane = image.data(0, 0, 0, channelIndex);\n\n        for (int y = top; y < bottom; ++y)\n        {\n            const unsigned short* src = tileBuffer + ((static_cast<size_t>(y) - top) * tileBufferStride);\n            float* dst = plane + (static_cast<size_t>(y) * imageWidth) + left;\n\n            for (int x = left; x < right; x++)\n            {\n                *dst++ = sixteenBitToEightBitLUT[src[0]];\n                src++;\n            }\n        }\n\n        return InputFileParseStatus::Ok;\n    }\n\n    InputFileParseStatus ConvertGmic8bfInputToGmicImage16(\n        QDataStream& dataStream,\n        int32_t inTileWidth,\n        int32_t inTileHeight,\n        int32_t inNumberOfChannels,\n        bool planar,\n        gmic_library::gmic_image<float>& image)\n    {\n        size_t maxTileStride = planar ? inTileWidth : static_cast<size_t>(inTileWidth) * inNumberOfChannels;\n        size_t tileBufferSize = maxTileStride * inTileHeight * 2;\n\n        std::unique_ptr<char[]> tileBuffer(new (std::nothrow) char[tileBufferSize]);\n\n        if (!tileBuffer)\n        {\n            return InputFileParseStatus::OutOfMemory;\n        }\n\n        QVector<float> sixteenBitToEightBitLUT;\n        sixteenBitToEightBitLUT.reserve(65536);\n\n        for (int i = 0; i < sixteenBitToEightBitLUT.capacity(); i++)\n        {\n            // G'MIC expect the input image data to be a floating-point value in the range of [0, 255].\n            // We use a lookup table to avoid having to repeatedly perform division on the same values.\n            sixteenBitToEightBitLUT.push_back(static_cast<float>(i) / 257.0f);\n        }\n\n        int width = image.width();\n        int height = image.height();\n\n        if (planar)\n        {\n            for (int i = 0; i < inNumberOfChannels; i++)\n            {\n                for (int y = 0; y < height; y += inTileHeight)\n                {\n                    int top = y;\n                    int bottom = std::min(y + inTileHeight, height);\n\n                    size_t rowCount = static_cast<size_t>(bottom) - top;\n\n                    for (int x = 0; x < width; x += inTileWidth)\n                    {\n                        int left = x;\n                        int right = std::min(x + inTileWidth, width);\n\n                        size_t tileBufferStride = static_cast<size_t>(right) - left;\n                        size_t bytesToRead = tileBufferStride * rowCount * 2;\n\n                        InputFileParseStatus status = FillTileBuffer(dataStream, bytesToRead, tileBuffer.get());\n\n                        if (status != InputFileParseStatus::Ok)\n                        {\n                            return status;\n                        }\n\n                        status = CopyTileToGmicImage16Planar(\n                            reinterpret_cast<const unsigned short*>(tileBuffer.get()),\n                            tileBufferStride,\n                            left,\n                            top,\n                            right,\n                            bottom,\n                            i,\n                            image,\n                            sixteenBitToEightBitLUT);\n\n                        if (status != InputFileParseStatus::Ok)\n                        {\n                            return status;\n                        }\n                    }\n                }\n            }\n        }\n        else\n        {\n            for (int y = 0; y < height; y += inTileHeight)\n            {\n                int top = y;\n                int bottom = std::min(y + inTileHeight, height);\n\n                size_t rowCount = static_cast<size_t>(bottom) - top;\n\n                for (int x = 0; x < width; x += inTileWidth)\n                {\n                    int left = x;\n                    int right = std::min(x + inTileWidth, width);\n\n                    size_t columnCount = static_cast<size_t>(right) - left;\n                    size_t tileBufferStride = columnCount * inNumberOfChannels;\n                    size_t bytesToRead = tileBufferStride * rowCount * 2;\n\n                    InputFileParseStatus status = FillTileBuffer(dataStream, bytesToRead, tileBuffer.get());\n\n                    if (status != InputFileParseStatus::Ok)\n                    {\n                        return status;\n                    }\n\n                    status = CopyTileToGmicImage16Interleaved(\n                        reinterpret_cast<const unsigned short*>(tileBuffer.get()),\n                        tileBufferStride,\n                        left,\n                        top,\n                        right,\n                        bottom,\n                        image,\n                        sixteenBitToEightBitLUT);\n\n                    if (status != InputFileParseStatus::Ok)\n                    {\n                        return status;\n                    }\n                }\n            }\n        }\n\n        return InputFileParseStatus::Ok;\n    }\n\n    InputFileParseStatus CopyTileToGmicImage32Interleaved(\n        const float* tileBuffer,\n        size_t tileBufferStride,\n        int left,\n        int top,\n        int right,\n        int bottom,\n        gmic_library::gmic_image<float>& out)\n    {\n        const int imageWidth = out.width();\n        const int numberOfChannels = out.spectrum();\n\n        if (numberOfChannels == 3)\n        {\n            float* rPlane = out.data(0, 0, 0, 0);\n            float* gPlane = out.data(0, 0, 0, 1);\n            float* bPlane = out.data(0, 0, 0, 2);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const float* src = tileBuffer + ((static_cast<size_t>(y) - top) * tileBufferStride);\n\n                const size_t planeStart = (static_cast<size_t>(y) * imageWidth) + left;\n\n                float* dstR = rPlane + planeStart;\n                float* dstG = gPlane + planeStart;\n                float* dstB = bPlane + planeStart;\n\n                for (int x = left; x < right; x++)\n                {\n                    *dstR++ = src[0];\n                    *dstG++ = src[1];\n                    *dstB++ = src[2];\n                    src += 3;\n                }\n            }\n        }\n        else if (numberOfChannels == 4)\n        {\n            float* rPlane = out.data(0, 0, 0, 0);\n            float* gPlane = out.data(0, 0, 0, 1);\n            float* bPlane = out.data(0, 0, 0, 2);\n            float* aPlane = out.data(0, 0, 0, 3);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const float* src = tileBuffer + ((static_cast<size_t>(y) - top) * tileBufferStride);\n\n                const size_t planeStart = (static_cast<size_t>(y) * imageWidth) + left;\n\n                float* dstR = rPlane + planeStart;\n                float* dstG = gPlane + planeStart;\n                float* dstB = bPlane + planeStart;\n                float* dstA = aPlane + planeStart;\n\n                for (int x = left; x < right; x++)\n                {\n                    *dstR++ = src[0];\n                    *dstG++ = src[1];\n                    *dstB++ = src[2];\n                    *dstA++ = src[3];\n                    src += 4;\n                }\n            }\n        }\n        else if (numberOfChannels == 2)\n        {\n            float* grayPlane = out.data(0, 0, 0, 0);\n            float* alphaPlane = out.data(0, 0, 0, 1);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const float* src = tileBuffer + ((static_cast<size_t>(y) - top) * tileBufferStride);\n\n                const size_t planeStart = (static_cast<size_t>(y) * imageWidth) + left;\n\n                float* dstGray = grayPlane + planeStart;\n                float* dstAlpha = alphaPlane + planeStart;\n\n                for (int x = left; x < right; x++)\n                {\n                    *dstGray++ = src[0];\n                    *dstAlpha++ = src[1];\n                    src += 2;\n                }\n            }\n        }\n        else if (numberOfChannels == 1)\n        {\n            float* grayPlane = out.data(0, 0, 0, 0);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const float* src = tileBuffer + ((static_cast<size_t>(y) - top) * tileBufferStride);\n\n                const size_t planeStart = (static_cast<size_t>(y) * imageWidth) + left;\n\n                float* dstGray = grayPlane + planeStart;\n\n                for (int x = left; x < right; x++)\n                {\n                    *dstGray++ = src[0];\n                    src++;\n                }\n            }\n        }\n        else\n        {\n            return InputFileParseStatus::InvalidArgument;\n        }\n\n        return InputFileParseStatus::Ok;\n    }\n\n    InputFileParseStatus CopyTileToGmicImage32Planar(\n        const float* tileBuffer,\n        size_t tileBufferStride,\n        int left,\n        int top,\n        int right,\n        int bottom,\n        int channelIndex,\n        gmic_library::gmic_image<float>& image)\n    {\n        const int imageWidth = image.width();\n\n        float* plane = image.data(0, 0, 0, channelIndex);\n\n        for (int y = top; y < bottom; ++y)\n        {\n            const float* src = tileBuffer + ((static_cast<size_t>(y) - top) * tileBufferStride);\n            float* dst = plane + (static_cast<size_t>(y) * static_cast<size_t>(imageWidth)) + left;\n\n            for (int x = left; x < right; x++)\n            {\n                *dst++ = *src++;\n            }\n        }\n\n        return InputFileParseStatus::Ok;\n    }\n\n    InputFileParseStatus ConvertGmic8bfInputToGmicImage32(\n        QDataStream& dataStream,\n        int32_t inTileWidth,\n        int32_t inTileHeight,\n        int32_t inNumberOfChannels,\n        bool planar,\n        gmic_library::gmic_image<float>& image)\n    {\n        int32_t maxTileStride = planar ? inTileWidth : inTileWidth * inNumberOfChannels;\n        size_t tileBufferSize = static_cast<size_t>(maxTileStride) * inTileHeight * 4;\n\n        std::unique_ptr<char[]> tileBuffer(new (std::nothrow) char[tileBufferSize]);\n\n        if (!tileBuffer)\n        {\n            return InputFileParseStatus::OutOfMemory;\n        }\n\n        int width = image.width();\n        int height = image.height();\n\n        if (planar)\n        {\n            for (int i = 0; i < inNumberOfChannels; i++)\n            {\n                for (int y = 0; y < height; y += inTileHeight)\n                {\n                    int top = y;\n                    int bottom = std::min(y + inTileHeight, height);\n\n                    size_t rowCount = static_cast<size_t>(bottom) - top;\n\n                    for (int x = 0; x < width; x += inTileWidth)\n                    {\n                        int left = x;\n                        int right = std::min(x + inTileWidth, width);\n\n                        size_t tileBufferStride = static_cast<size_t>(right) - left;\n                        size_t bytesToRead = tileBufferStride * rowCount * 4;\n\n                        InputFileParseStatus status = FillTileBuffer(dataStream, bytesToRead, tileBuffer.get());\n\n                        if (status != InputFileParseStatus::Ok)\n                        {\n                            return status;\n                        }\n\n                        status = CopyTileToGmicImage32Planar(\n                            reinterpret_cast<const float*>(tileBuffer.get()),\n                            tileBufferStride,\n                            left,\n                            top,\n                            right,\n                            bottom,\n                            i,\n                            image);\n\n                        if (status != InputFileParseStatus::Ok)\n                        {\n                            return status;\n                        }\n                    }\n                }\n            }\n        }\n        else\n        {\n            for (int y = 0; y < height; y += inTileHeight)\n            {\n                int top = y;\n                int bottom = std::min(y + inTileHeight, height);\n\n                size_t rowCount = static_cast<size_t>(bottom) - top;\n\n                for (int x = 0; x < width; x += inTileWidth)\n                {\n                    int left = x;\n                    int right = std::min(x + inTileWidth, width);\n\n                    size_t columnCount = static_cast<size_t>(right) - left;\n                    size_t tileBufferStride = columnCount * inNumberOfChannels;\n                    size_t bytesToRead = tileBufferStride * rowCount * 4;\n\n                    InputFileParseStatus status = FillTileBuffer(dataStream, bytesToRead, tileBuffer.get());\n\n                    if (status != InputFileParseStatus::Ok)\n                    {\n                        return status;\n                    }\n\n                    status = CopyTileToGmicImage32Interleaved(\n                        reinterpret_cast<const float*>(tileBuffer.get()),\n                        tileBufferStride,\n                        left,\n                        top,\n                        right,\n                        bottom,\n                        image);\n\n                    if (status != InputFileParseStatus::Ok)\n                    {\n                        return status;\n                    }\n                }\n            }\n        }\n\n        // Convert the image from [0, 1] t0 [0, 255].\n        image *= 255;\n\n        return InputFileParseStatus::Ok;\n    }\n\n    InputFileParseStatus ReadGmic8bfInput(const QString& path, gmic_library::gmic_image<float>& image, bool isActiveLayer)\n    {\n        QFile file(path);\n\n        if (!file.open(QIODevice::ReadOnly))\n        {\n            return InputFileParseStatus::FileOpenError;\n        }\n\n        QDataStream dataStream(&file);\n\n        char signature[4] = {};\n\n        dataStream.readRawData(signature, 4);\n\n        if (strncmp(signature, \"G8IM\", 4) != 0)\n        {\n            return InputFileParseStatus::BadFileSignature;\n        }\n\n        char endian[4] = {};\n\n        dataStream.readRawData(endian, 4);\n\n#if Q_BYTE_ORDER == Q_BIG_ENDIAN\n        if (strncmp(endian, \"BEDN\", 4) == 0)\n        {\n            dataStream.setByteOrder(QDataStream::BigEndian);\n        }\n#elif Q_BYTE_ORDER == Q_LITTLE_ENDIAN\n        if (strncmp(endian, \"LEDN\", 4) == 0)\n        {\n            dataStream.setByteOrder(QDataStream::LittleEndian);\n        }\n#else\n#error \"Unknown endianness on this platform.\"\n#endif\n        else\n        {\n            return InputFileParseStatus::PlatformEndianMismatch;\n        }\n\n        int32_t fileVersion = 0;\n\n        dataStream >> fileVersion;\n\n        if (fileVersion != 1)\n        {\n            return InputFileParseStatus::UnknownFileVersion;\n        }\n\n        int32_t width = 0;\n\n        dataStream >> width;\n\n        int32_t height = 0;\n\n        dataStream >> height;\n\n        int32_t numberOfChannels = 0;\n\n        dataStream >> numberOfChannels;\n\n        int32_t bitDepth = 0;\n\n        dataStream >> bitDepth;\n\n        int32_t flags = 0;\n\n        dataStream >> flags;\n\n        bool planar = false;\n\n        planar = (flags & 1) != 0;\n\n        int32_t inTileWidth = 0;\n\n        dataStream >> inTileWidth;\n\n        int32_t inTileHeight = 0;\n\n        dataStream >> inTileHeight;\n\n        if (isActiveLayer)\n        {\n            host_8bf::documentWidth = width;\n            host_8bf::documentHeight = height;\n            host_8bf::hostTileWidth = inTileWidth;\n            host_8bf::hostTileHeight = inTileHeight;\n        }\n\n        image.assign(width, height, 1, numberOfChannels);\n\n        InputFileParseStatus status = InputFileParseStatus::Ok;\n\n        switch (bitDepth)\n        {\n        case 8:\n            status = ConvertGmic8bfInputToGmicImage8(dataStream, inTileWidth, inTileHeight, numberOfChannels, planar, image);\n            break;\n        case 16:\n            status = ConvertGmic8bfInputToGmicImage16(dataStream, inTileWidth, inTileHeight, numberOfChannels, planar, image);\n            break;\n        case 32:\n            status = ConvertGmic8bfInputToGmicImage32(dataStream, inTileWidth, inTileHeight, numberOfChannels, planar, image);\n            break;\n        default:\n            status = InputFileParseStatus::InvalidArgument;\n            break;\n        }\n\n        return status;\n    }\n\n    InputFileParseStatus ReadColorProfile(const QString& path, cmsContext context, cmsHPROFILE* outProfile)\n    {\n        QFile file(path);\n\n        if (!file.open(QIODevice::ReadOnly))\n        {\n            return InputFileParseStatus::FileOpenError;\n        }\n\n        QByteArray data = file.readAll();\n\n        if (static_cast<qint64>(data.size()) != file.size())\n        {\n            return InputFileParseStatus::FileReadError;\n        }\n\n        *outProfile = cmsOpenProfileFromMemTHR(context, data.constData(), static_cast<cmsUInt32Number>(data.size()));\n\n        return *outProfile != nullptr ? InputFileParseStatus::Ok : InputFileParseStatus::IccProfileError;\n    }\n\n    InputFileParseStatus ParseInputFileIndex(const QString& indexFilePath)\n    {\n        QFile file(indexFilePath);\n\n        if (!file.open(QIODevice::ReadOnly))\n        {\n            return InputFileParseStatus::FileOpenError;\n        }\n\n        QDataStream dataStream(&file);\n\n        char signature[4] = {};\n\n        dataStream.readRawData(signature, 4);\n\n        if (strncmp(signature, \"G8LI\", 4) != 0)\n        {\n            return InputFileParseStatus::BadFileSignature;\n        }\n\n        char endian[4] = {};\n\n        dataStream.readRawData(endian, 4);\n\n#if Q_BYTE_ORDER == Q_BIG_ENDIAN\n        if (strncmp(endian, \"BEDN\", 4) == 0)\n        {\n            dataStream.setByteOrder(QDataStream::BigEndian);\n        }\n#elif Q_BYTE_ORDER == Q_LITTLE_ENDIAN\n        if (strncmp(endian, \"LEDN\", 4) == 0)\n        {\n            dataStream.setByteOrder(QDataStream::LittleEndian);\n        }\n#else\n#error \"Unknown endianness on this platform.\"\n#endif\n        else\n        {\n            return InputFileParseStatus::PlatformEndianMismatch;\n        }\n\n        int32_t fileVersion = 0;\n\n        dataStream >> fileVersion;\n\n        if (fileVersion != 3)\n        {\n            return InputFileParseStatus::UnknownFileVersion;\n        }\n\n        int32_t layerCount = 0;\n\n        dataStream >> layerCount;\n\n        dataStream >> host_8bf::activeLayerIndex;\n\n        dataStream >> host_8bf::bitsPerChannel;\n\n        uint8_t grayScale;\n\n        dataStream >> grayScale;\n\n        host_8bf::grayScale = grayScale != 0;\n\n        uint8_t haveIccProfiles;\n\n        dataStream >> haveIccProfiles;\n\n        // Skip the padding byte.\n        dataStream.skipRawData(1);\n\n        if (haveIccProfiles != 0)\n        {\n            QString imageColorProfile = ReadUTF8String(dataStream);\n            QString displayColorProfile = ReadUTF8String(dataStream);\n\n            host_8bf::lcmsContext = cmsCreateContext(nullptr, nullptr);\n\n            if (host_8bf::lcmsContext == nullptr)\n            {\n                return InputFileParseStatus::IccProfileError;\n            }\n\n            InputFileParseStatus status = ReadColorProfile(imageColorProfile, host_8bf::lcmsContext, &host_8bf::imageProfile);\n\n            if (status != InputFileParseStatus::Ok)\n            {\n                return status;\n            }\n\n            status = ReadColorProfile(displayColorProfile, host_8bf::lcmsContext, &host_8bf::displayProfile);\n\n            if (status != InputFileParseStatus::Ok)\n            {\n                return status;\n            }\n        }\n\n        host_8bf::layers.reserve(layerCount);\n\n        for (int32_t i = 0; i < layerCount; i++)\n        {\n            int32_t layerWidth = 0;\n\n            dataStream >> layerWidth;\n\n            int32_t layerHeight = 0;\n\n            dataStream >> layerHeight;\n\n            int32_t layerVisible = 0;\n\n            dataStream >> layerVisible;\n\n            QString layerName = ReadUTF8String(dataStream);\n\n            QString filePath = ReadUTF8String(dataStream);\n\n            gmic_library::gmic_image<float> image;\n\n            InputFileParseStatus status = ReadGmic8bfInput(filePath, image, i == host_8bf::activeLayerIndex);\n\n            if (status != InputFileParseStatus::Ok)\n            {\n                return status;\n            }\n\n            Gmic8bfLayer layer{};\n            layer.width = layerWidth;\n            layer.height = layerHeight;\n            layer.visible = layerVisible != 0;\n            layer.name = layerName;\n            layer.imageData = image;\n\n            host_8bf::layers.push_back(layer);\n        }\n\n        if (layerCount > 1)\n        {\n            // The 8bf plug-in sends layers in bottom to top order, whereas the\n            // G'MIC-Qt plug-in for GIMP sends layers in top to bottom order.\n            // So we reverse the layer list to match the behavior of the G'MIC-Qt\n            // plug-in for GIMP.\n\n            host_8bf::activeLayerIndex = layerCount - (1 + host_8bf::activeLayerIndex);\n\n            // Adapted from https://stackoverflow.com/a/20652805\n            for(int k = 0, s = host_8bf::layers.size(), max = (s / 2); k < max; k++)\n            {\n                host_8bf::layers.swapItemsAt(k, s - (1 + k));\n            }\n        }\n\n        return InputFileParseStatus::Ok;\n    }\n\n    QVector<Gmic8bfLayer> FilterLayersForInputMode(GmicQt::InputMode mode)\n    {\n        if (host_8bf::layers.size() == 1 || mode == GmicQt::InputMode::All)\n        {\n            return host_8bf::layers;\n        }\n        else\n        {\n            QVector<Gmic8bfLayer> filteredLayers;\n\n            if (mode == GmicQt::InputMode::Active)\n            {\n                filteredLayers.push_back(host_8bf::layers[host_8bf::activeLayerIndex]);\n            }\n            else if (mode == GmicQt::InputMode::ActiveAndAbove)\n            {\n                const QVector<Gmic8bfLayer>& layers = host_8bf::layers;\n\n                // This case is the opposite of the GIMP plug-in because the layer order has\n                // been reversed to match the top to bottom order that the GIMP plug-in uses.\n                if (host_8bf::activeLayerIndex > 0)\n                {\n                    filteredLayers.push_back(layers[host_8bf::activeLayerIndex - 1]);\n                }\n                filteredLayers.push_back(layers[host_8bf::activeLayerIndex]);\n            }\n            else if (mode == GmicQt::InputMode::ActiveAndBelow)\n            {\n                const QVector<Gmic8bfLayer>& layers = host_8bf::layers;\n\n                // This case is the opposite of the GIMP plug-in because the layer order has\n                // been reversed to match the top to bottom order that the GIMP plug-in uses.\n                filteredLayers.push_back(layers[host_8bf::activeLayerIndex]);\n                if (host_8bf::activeLayerIndex < (layers.size() - 1))\n                {\n                    filteredLayers.push_back(layers[host_8bf::activeLayerIndex + 1]);\n                }\n            }\n            else if (mode == GmicQt::InputMode::AllVisible)\n            {\n                const QVector<Gmic8bfLayer>& layers = host_8bf::layers;\n\n                for (int i = 0; i < layers.size(); i++)\n                {\n                    const Gmic8bfLayer& layer = layers[i];\n                    if (layer.visible)\n                    {\n                        filteredLayers.push_back(layer);\n                    }\n                }\n            }\n            else if (mode == GmicQt::InputMode::AllInvisible)\n            {\n                const QVector<Gmic8bfLayer>& layers = host_8bf::layers;\n\n                for (int i = 0; i < layers.size(); i++)\n                {\n                    const Gmic8bfLayer& layer = layers[i];\n                    if (!layer.visible)\n                    {\n                        filteredLayers.push_back(layer);\n                    }\n                }\n            }\n\n            return filteredLayers;\n        }\n    }\n\n    // The following method was copied from ImageConverter.cpp.\n\n    inline unsigned char float2uchar_bounded(const float& in)\n    {\n        return (in < 0.0f) ? 0 : ((in > 255.0f) ? 255 : static_cast<unsigned char>(in));\n    }\n\n    inline unsigned short float2ushort_bounded(const float& in)\n    {\n        // Scale the value from [0, 255] to [0, 65535].\n        const float fullRangeValue = in * 257.0f;\n\n        return (fullRangeValue < 0.0f) ? 0 : ((fullRangeValue > 65535.0f) ? 65535 : static_cast<unsigned short>(fullRangeValue));\n    }\n\n    void WriteGmic8bfImageHeader(\n        QDataStream& stream,\n        int width,\n        int height,\n        int numberOfChannels,\n        int bitsPerChannel,\n        bool planar,\n        int tileWidth,\n        int tileHeight)\n    {\n        const int fileVersion = 1;\n        const int flags = planar ? 1 : 0;\n\n        stream.writeRawData(\"G8IM\", 4);\n#if Q_BYTE_ORDER == Q_BIG_ENDIAN\n        stream.writeRawData(\"BEDN\", 4);\n        stream.setByteOrder(QDataStream::BigEndian);\n#elif Q_BYTE_ORDER == Q_LITTLE_ENDIAN\n        stream.writeRawData(\"LEDN\", 4);\n        stream.setByteOrder(QDataStream::LittleEndian);\n#else\n#error \"Unknown endianness on this platform.\"\n#endif\n        stream << fileVersion;\n        stream << width;\n        stream << height;\n        stream << numberOfChannels;\n        stream << bitsPerChannel;\n        stream << flags;\n        stream << tileWidth;\n        stream << tileHeight;\n    }\n\n    void WriteGmicOutputTile8Interleaved(\n        QDataStream& dataStream,\n        const gmic_library::gmic_image<float>& in,\n        unsigned char* rowBuffer,\n        int rowBufferLengthInBytes,\n        int left,\n        int top,\n        int right,\n        int bottom)\n    {\n        // The following code has been adapted from ImageConverter.cpp.\n\n        if (in.spectrum() == 3)\n        {\n            const float* rPlane = in.data(0, 0, 0, 0);\n            const float* gPlane = in.data(0, 0, 0, 1);\n            const float* bPlane = in.data(0, 0, 0, 2);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const size_t planeStart = (static_cast<size_t>(y) * in.width()) + left;\n\n                const float* srcR = rPlane + planeStart;\n                const float* srcG = gPlane + planeStart;\n                const float* srcB = bPlane + planeStart;\n                unsigned char* dst = rowBuffer;\n\n                for (int x = left; x < right; ++x)\n                {\n                    dst[0] = float2uchar_bounded(*srcR++);\n                    dst[1] = float2uchar_bounded(*srcG++);\n                    dst[2] = float2uchar_bounded(*srcB++);\n\n                    dst += 3;\n                }\n\n                dataStream.writeRawData(reinterpret_cast<const char*>(rowBuffer), rowBufferLengthInBytes);\n            }\n        }\n        else if (in.spectrum() == 4)\n        {\n            const float* rPlane = in.data(0, 0, 0, 0);\n            const float* gPlane = in.data(0, 0, 0, 1);\n            const float* bPlane = in.data(0, 0, 0, 2);\n            const float* aPlane = in.data(0, 0, 0, 3);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const size_t planeStart = (static_cast<size_t>(y) * in.width()) + left;\n\n                const float* srcR = rPlane + planeStart;\n                const float* srcG = gPlane + planeStart;\n                const float* srcB = bPlane + planeStart;\n                const float* srcA = aPlane + planeStart;\n\n                unsigned char* dst = rowBuffer;\n\n                for (int x = left; x < right; ++x)\n                {\n                    dst[0] = float2uchar_bounded(*srcR++);\n                    dst[1] = float2uchar_bounded(*srcG++);\n                    dst[2] = float2uchar_bounded(*srcB++);\n                    dst[3] = float2uchar_bounded(*srcA++);\n\n                    dst += 4;\n                }\n\n                dataStream.writeRawData(reinterpret_cast<const char*>(rowBuffer), rowBufferLengthInBytes);\n            }\n        }\n        else if (in.spectrum() == 2)\n        {\n            //\n            // Gray + Alpha\n            //\n            const float* grayPlane = in.data(0, 0, 0, 0);\n            const float* alphaPlane = in.data(0, 0, 0, 1);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const size_t planeStart = (static_cast<size_t>(y) * in.width()) + left;\n\n                const float* src = grayPlane + planeStart;\n                const float* srcA = alphaPlane + planeStart;\n\n                unsigned char* dst = rowBuffer;\n\n\n                for (int x = left; x < right; ++x)\n                {\n                    dst[0] = float2uchar_bounded(*src++);\n                    dst[1] = float2uchar_bounded(*srcA++);\n\n                    dst += 2;\n                }\n\n                dataStream.writeRawData(reinterpret_cast<const char*>(rowBuffer), rowBufferLengthInBytes);\n            }\n        }\n        else\n        {\n            //\n            // 8-bits Gray levels\n            //\n            const float* grayPlane = in.data(0, 0, 0, 0);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const size_t planeStart = (static_cast<size_t>(y) * in.width()) + left;\n\n                const float* src = grayPlane + planeStart;\n\n                unsigned char* dst = rowBuffer;\n\n                for (int x = left; x < right; ++x)\n                {\n                    dst[0] = float2uchar_bounded(*src++);\n\n                    dst++;\n                }\n\n                dataStream.writeRawData(reinterpret_cast<const char*>(rowBuffer), rowBufferLengthInBytes);\n            }\n        }\n    }\n\n    void WriteGmicOutputTile8Planar(\n        QDataStream& dataStream,\n        const gmic_library::gmic_image<float>& in,\n        unsigned char* rowBuffer,\n        int rowBufferLengthInBytes,\n        int left,\n        int top,\n        int right,\n        int bottom,\n        int plane)\n    {\n        const float* srcPlane = in.data(0, 0, 0, plane);\n\n        for (int y = top; y < bottom; ++y)\n        {\n            const size_t planeStart = (static_cast<size_t>(y) * in.width()) + left;\n\n            const float* src = srcPlane + planeStart;\n\n            unsigned char* dst = rowBuffer;\n\n            for (int x = left; x < right; ++x)\n            {\n                dst[0] = float2uchar_bounded(*src++);\n\n                dst++;\n            }\n\n            dataStream.writeRawData(reinterpret_cast<const char*>(rowBuffer), rowBufferLengthInBytes);\n        }\n    }\n\n    void WriteGmicOutput8(\n        const QString& outputFilePath,\n        const gmic_library::gmic_image<float>& in,\n        bool planar,\n        int32_t tileWidth,\n        int32_t tileHeight)\n    {\n        QFile file(outputFilePath);\n        file.open(QFile::WriteOnly);\n        QDataStream dataStream(&file);\n        dataStream.setByteOrder(QDataStream::LittleEndian);\n\n        const int width = in.width();\n        const int height = in.height();\n        const int numberOfChannels = in.spectrum();\n\n        WriteGmic8bfImageHeader(dataStream, width, height, numberOfChannels, 8, planar, tileWidth, tileHeight);\n\n        if (planar)\n        {\n            std::vector<unsigned char> rowBuffer(width);\n\n            for (int i = 0; i < numberOfChannels; ++i)\n            {\n                for (int y = 0; y < height; y += tileHeight)\n                {\n                    int top = y;\n                    int bottom = std::min(y + tileHeight, height);\n\n                    for (int x = 0; x < width; x += tileWidth)\n                    {\n                        int left = x;\n                        int right = std::min(x + tileWidth, width);\n\n                        int rowBufferLengthInBytes = right - left;\n\n                        WriteGmicOutputTile8Planar(\n                            dataStream,\n                            in,\n                            rowBuffer.data(),\n                            rowBufferLengthInBytes,\n                            left,\n                            top,\n                            right,\n                            bottom,\n                            i);\n                    }\n                }\n            }\n        }\n        else\n        {\n            std::vector<unsigned char> rowBuffer(static_cast<size_t>(width) * numberOfChannels);\n\n            for (int y = 0; y < height; y += tileHeight)\n            {\n                int top = y;\n                int bottom = std::min(y + tileHeight, height);\n\n                for (int x = 0; x < width; x += tileWidth)\n                {\n                    int left = x;\n                    int right = std::min(x + tileWidth, width);\n\n                    int rowBufferLengthInBytes = (right - left) * numberOfChannels;\n\n                    WriteGmicOutputTile8Interleaved(\n                        dataStream,\n                        in,\n                        rowBuffer.data(),\n                        rowBufferLengthInBytes,\n                        left,\n                        top,\n                        right,\n                        bottom);\n                }\n            }\n        }\n    }\n\n    void WriteGmicOutputTile16Interleaved(\n        QDataStream& dataStream,\n        const gmic_library::gmic_image<float>& in,\n        unsigned short* rowBuffer,\n        int rowBufferLengthInBytes,\n        int left,\n        int top,\n        int right,\n        int bottom)\n    {\n        // The following code has been adapted from ImageConverter.cpp.\n\n        if (in.spectrum() == 3)\n        {\n            const float* rPlane = in.data(0, 0, 0, 0);\n            const float* gPlane = in.data(0, 0, 0, 1);\n            const float* bPlane = in.data(0, 0, 0, 2);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const size_t planeStart = (static_cast<size_t>(y) * in.width()) + left;\n\n                const float* srcR = rPlane + planeStart;\n                const float* srcG = gPlane + planeStart;\n                const float* srcB = bPlane + planeStart;\n                unsigned short* dst = rowBuffer;\n\n                for (int x = left; x < right; ++x)\n                {\n                    dst[0] = float2ushort_bounded(*srcR++);\n                    dst[1] = float2ushort_bounded(*srcG++);\n                    dst[2] = float2ushort_bounded(*srcB++);\n\n                    dst += 3;\n                }\n\n                dataStream.writeRawData(reinterpret_cast<const char*>(rowBuffer), rowBufferLengthInBytes);\n            }\n        }\n        else if (in.spectrum() == 4)\n        {\n            const float* rPlane = in.data(0, 0, 0, 0);\n            const float* gPlane = in.data(0, 0, 0, 1);\n            const float* bPlane = in.data(0, 0, 0, 2);\n            const float* aPlane = in.data(0, 0, 0, 3);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const size_t planeStart = (static_cast<size_t>(y) * in.width()) + left;\n\n                const float* srcR = rPlane + planeStart;\n                const float* srcG = gPlane + planeStart;\n                const float* srcB = bPlane + planeStart;\n                const float* srcA = aPlane + planeStart;\n\n                unsigned short* dst = rowBuffer;\n\n                for (int x = left; x < right; ++x)\n                {\n                    dst[0] = float2ushort_bounded(*srcR++);\n                    dst[1] = float2ushort_bounded(*srcG++);\n                    dst[2] = float2ushort_bounded(*srcB++);\n                    dst[3] = float2ushort_bounded(*srcA++);\n\n                    dst += 4;\n                }\n\n                dataStream.writeRawData(reinterpret_cast<const char*>(rowBuffer), rowBufferLengthInBytes);\n            }\n        }\n        else if (in.spectrum() == 2)\n        {\n            //\n            // Gray + Alpha\n            //\n            const float* grayPlane = in.data(0, 0, 0, 0);\n            const float* alphaPlane = in.data(0, 0, 0, 1);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const size_t planeStart = (static_cast<size_t>(y) * in.width()) + left;\n\n                const float* src = grayPlane + planeStart;\n                const float* srcA = alphaPlane + planeStart;\n\n                unsigned short* dst = rowBuffer;\n\n\n                for (int x = left; x < right; ++x)\n                {\n                    dst[0] = float2ushort_bounded(*src++);\n                    dst[1] = float2ushort_bounded(*srcA++);\n\n                    dst += 2;\n                }\n\n                dataStream.writeRawData(reinterpret_cast<const char*>(rowBuffer), rowBufferLengthInBytes);\n            }\n        }\n        else\n        {\n            //\n            // 16-bits Gray levels\n            //\n            const float* grayPlane = in.data(0, 0, 0, 0);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const size_t planeStart = (static_cast<size_t>(y) * in.width()) + left;\n\n                const float* src = grayPlane + planeStart;\n\n                unsigned short* dst = rowBuffer;\n\n                for (int x = left; x < right; ++x)\n                {\n                    dst[0] = float2ushort_bounded(*src++);\n\n                    dst++;\n                }\n\n                dataStream.writeRawData(reinterpret_cast<const char*>(rowBuffer), rowBufferLengthInBytes);\n            }\n        }\n    }\n\n    void WriteGmicOutputTile16Planar(\n        QDataStream& dataStream,\n        const gmic_library::gmic_image<float>& in,\n        unsigned short* rowBuffer,\n        int rowBufferLengthInBytes,\n        int left,\n        int top,\n        int right,\n        int bottom,\n        int plane)\n    {\n        const float* srcPlane = in.data(0, 0, 0, plane);\n\n        for (int y = top; y < bottom; ++y)\n        {\n            const size_t planeStart = (static_cast<size_t>(y) * in.width()) + left;\n\n            const float* src = srcPlane + planeStart;\n\n            unsigned short* dst = rowBuffer;\n\n            for (int x = left; x < right; ++x)\n            {\n                dst[0] = float2ushort_bounded(*src++);\n\n                dst++;\n            }\n\n            dataStream.writeRawData(reinterpret_cast<const char*>(rowBuffer), rowBufferLengthInBytes);\n        }\n    }\n\n    void WriteGmicOutput16(\n        const QString& outputFilePath,\n        const gmic_library::gmic_image<float>& in,\n        bool planar,\n        int32_t tileWidth,\n        int32_t tileHeight)\n    {\n        QFile file(outputFilePath);\n        file.open(QFile::WriteOnly);\n        QDataStream dataStream(&file);\n        dataStream.setByteOrder(QDataStream::LittleEndian);\n\n        const int width = in.width();\n        const int height = in.height();\n        const int numberOfChannels = in.spectrum();\n\n        WriteGmic8bfImageHeader(dataStream, width, height, numberOfChannels, 16, planar, tileWidth, tileHeight);\n\n        if (planar)\n        {\n            std::vector<unsigned short> rowBuffer(width);\n\n            for (int i = 0; i < numberOfChannels; ++i)\n            {\n                for (int y = 0; y < height; y += tileHeight)\n                {\n                    int top = y;\n                    int bottom = std::min(y + tileHeight, height);\n\n                    for (int x = 0; x < width; x += tileWidth)\n                    {\n                        int left = x;\n                        int right = std::min(x + tileWidth, width);\n\n                        int columnCount = right - left;\n\n                        int rowBufferLengthInBytes = columnCount * 2;\n\n                        WriteGmicOutputTile16Planar(\n                            dataStream,\n                            in,\n                            rowBuffer.data(),\n                            rowBufferLengthInBytes,\n                            left,\n                            top,\n                            right,\n                            bottom,\n                            i);\n                    }\n                }\n            }\n        }\n        else\n        {\n            std::vector<unsigned short> rowBuffer(static_cast<size_t>(width) * numberOfChannels);\n\n            for (int y = 0; y < height; y += tileHeight)\n            {\n                int top = y;\n                int bottom = std::min(y + tileHeight, height);\n\n                for (int x = 0; x < width; x += tileWidth)\n                {\n                    int left = x;\n                    int right = std::min(x + tileWidth, width);\n\n                    int rowBufferLengthInBytes = ((right - left) * numberOfChannels) * 2;\n\n                    WriteGmicOutputTile16Interleaved(\n                        dataStream,\n                        in,\n                        rowBuffer.data(),\n                        rowBufferLengthInBytes,\n                        left,\n                        top,\n                        right,\n                        bottom);\n                }\n            }\n        }\n    }\n\n    void WriteGmicOutputTile32Interleaved(\n        QDataStream& dataStream,\n        const gmic_library::gmic_image<float>& in,\n        float* rowBuffer,\n        int rowBufferLengthInBytes,\n        int left,\n        int top,\n        int right,\n        int bottom)\n    {\n        // The following code has been adapted from ImageConverter.cpp.\n\n        if (in.spectrum() == 3)\n        {\n            const float* rPlane = in.data(0, 0, 0, 0);\n            const float* gPlane = in.data(0, 0, 0, 1);\n            const float* bPlane = in.data(0, 0, 0, 2);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const size_t planeStart = (static_cast<size_t>(y) * in.width()) + left;\n\n                const float* srcR = rPlane + planeStart;\n                const float* srcG = gPlane + planeStart;\n                const float* srcB = bPlane + planeStart;\n                float* dst = rowBuffer;\n\n                for (int x = left; x < right; ++x)\n                {\n                    dst[0] = *srcR++;\n                    dst[1] = *srcG++;\n                    dst[2] = *srcB++;\n\n                    dst += 3;\n                }\n\n                dataStream.writeRawData(reinterpret_cast<const char*>(rowBuffer), rowBufferLengthInBytes);\n            }\n        }\n        else if (in.spectrum() == 4)\n        {\n            const float* rPlane = in.data(0, 0, 0, 0);\n            const float* gPlane = in.data(0, 0, 0, 1);\n            const float* bPlane = in.data(0, 0, 0, 2);\n            const float* aPlane = in.data(0, 0, 0, 3);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const size_t planeStart = (static_cast<size_t>(y) * in.width()) + left;\n\n                const float* srcR = rPlane + planeStart;\n                const float* srcG = gPlane + planeStart;\n                const float* srcB = bPlane + planeStart;\n                const float* srcA = aPlane + planeStart;\n\n                float* dst = rowBuffer;\n\n                for (int x = left; x < right; ++x)\n                {\n                    dst[0] = *srcR++;\n                    dst[1] = *srcG++;\n                    dst[2] = *srcB++;\n                    dst[3] = *srcA++;\n\n                    dst += 4;\n                }\n\n                dataStream.writeRawData(reinterpret_cast<const char*>(rowBuffer), rowBufferLengthInBytes);\n            }\n        }\n        else if (in.spectrum() == 2)\n        {\n            //\n            // Gray + Alpha\n            //\n            const float* grayPlane = in.data(0, 0, 0, 0);\n            const float* alphaPlane = in.data(0, 0, 0, 1);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const size_t planeStart = (static_cast<size_t>(y) * in.width()) + left;\n\n                const float* src = grayPlane + planeStart;\n                const float* srcA = alphaPlane + planeStart;\n\n                float* dst = rowBuffer;\n\n                for (int x = left; x < right; ++x)\n                {\n                    dst[0] = *src++;\n                    dst[1] = *srcA++;\n\n                    dst += 2;\n                }\n\n                dataStream.writeRawData(reinterpret_cast<const char*>(rowBuffer), rowBufferLengthInBytes);\n            }\n        }\n        else\n        {\n            //\n            // 16-bits Gray levels\n            //\n            const float* grayPlane = in.data(0, 0, 0, 0);\n\n            for (int y = top; y < bottom; ++y)\n            {\n                const size_t planeStart = (static_cast<size_t>(y) * in.width()) + left;\n\n                const float* src = grayPlane + planeStart;\n\n                float* dst = rowBuffer;\n\n                for (int x = left; x < right; ++x)\n                {\n                    *dst++ = *src++;\n                }\n\n                dataStream.writeRawData(reinterpret_cast<const char*>(rowBuffer), rowBufferLengthInBytes);\n            }\n        }\n    }\n\n    void WriteGmicOutputTile32Planar(\n        QDataStream& dataStream,\n        const gmic_library::gmic_image<float>& in,\n        float* rowBuffer,\n        int rowBufferLengthInBytes,\n        int left,\n        int top,\n        int right,\n        int bottom,\n        int plane)\n    {\n        const float* srcPlane = in.data(0, 0, 0, plane);\n\n        for (int y = top; y < bottom; ++y)\n        {\n            const size_t planeStart = (static_cast<size_t>(y) * in.width()) + left;\n\n            const float* src = srcPlane + planeStart;\n\n            float* dst = rowBuffer;\n\n            for (int x = left; x < right; ++x)\n            {\n                *dst++ = *src++;\n            }\n\n            dataStream.writeRawData(reinterpret_cast<const char*>(rowBuffer), rowBufferLengthInBytes);\n        }\n    }\n\n    void WriteGmicOutput32(\n        const QString& outputFilePath,\n        gmic_library::gmic_image<float>& in,\n        bool planar,\n        int32_t tileWidth,\n        int32_t tileHeight)\n    {\n        // Convert the image from [0, 255] to [0, 1].\n        in /= 255;\n\n        QFile file(outputFilePath);\n        file.open(QFile::WriteOnly);\n        QDataStream dataStream(&file);\n        dataStream.setByteOrder(QDataStream::LittleEndian);\n\n        const int width = in.width();\n        const int height = in.height();\n        const int numberOfChannels = in.spectrum();\n\n        WriteGmic8bfImageHeader(dataStream, width, height, numberOfChannels, 32, planar, tileWidth, tileHeight);\n\n        if (planar)\n        {\n            std::vector<float> rowBuffer(width);\n\n            for (int i = 0; i < numberOfChannels; ++i)\n            {\n                for (int y = 0; y < height; y += tileHeight)\n                {\n                    int top = y;\n                    int bottom = std::min(y + tileHeight, height);\n\n                    for (int x = 0; x < width; x += tileWidth)\n                    {\n                        int left = x;\n                        int right = std::min(x + tileWidth, width);\n\n                        int rowBufferLengthInBytes = (right - left) * 4;\n\n                        WriteGmicOutputTile32Planar(\n                            dataStream,\n                            in,\n                            rowBuffer.data(),\n                            rowBufferLengthInBytes,\n                            left,\n                            top,\n                            right,\n                            bottom,\n                            i);\n                    }\n                }\n            }\n        }\n        else\n        {\n            std::vector<float> rowBuffer(static_cast<size_t>(width) * numberOfChannels);\n\n            for (int y = 0; y < height; y += tileHeight)\n            {\n                int top = y;\n                int bottom = std::min(y + tileHeight, height);\n\n                for (int x = 0; x < width; x += tileWidth)\n                {\n                    int left = x;\n                    int right = std::min(x + tileWidth, width);\n\n                    int rowBufferLengthInBytes = ((right - left) * numberOfChannels) * 4;\n\n                    WriteGmicOutputTile32Interleaved(\n                        dataStream,\n                        in,\n                        rowBuffer.data(),\n                        rowBufferLengthInBytes,\n                        left,\n                        top,\n                        right,\n                        bottom);\n                }\n            }\n        }\n    }\n\n    void EmptyOutputFolder()\n    {\n        QDir dir(host_8bf::outputDir);\n        dir.setFilter(QDir::NoDotAndDotDot | QDir::Files);\n        foreach(QString dirFile, dir.entryList())\n        {\n            dir.remove(dirFile);\n        }\n    }\n\n    GmicQt::InputMode ReadGmic8bfInputMode(QDataStream& dataStream)\n    {\n        GmicQt::InputMode mode = GmicQt::InputMode::Active;\n\n        QString str = ReadUTF8String(dataStream);\n\n        if (str == \"All Layers\")\n        {\n            mode = GmicQt::InputMode::All;\n        }\n        else if (str == \"Active Layer and Below\")\n        {\n            mode = GmicQt::InputMode::ActiveAndBelow;\n        }\n        else if (str == \"Active Layer and Above\")\n        {\n            mode = GmicQt::InputMode::ActiveAndAbove;\n        }\n        else if (str == \"All Visible Layers\")\n        {\n            mode = GmicQt::InputMode::AllVisible;\n        }\n        else if (str == \"All Hidden Layers\")\n        {\n            mode = GmicQt::InputMode::AllInvisible;\n        }\n\n        return mode;\n    }\n\n    bool ReadGmic8bfFilterParameters(const QString& path, GmicQt::RunParameters& parameters)\n    {\n        QFile file(path);\n\n        if (file.open(QFile::ReadOnly))\n        {\n            QDataStream dataStream(&file);\n\n            char signature[4] = {};\n\n            dataStream.readRawData(signature, 4);\n\n            if (strncmp(signature, \"G8FP\", 4) != 0)\n            {\n                return false;\n            }\n\n            char endian[4] = {};\n\n            dataStream.readRawData(endian, 4);\n\n#if Q_BYTE_ORDER == Q_BIG_ENDIAN\n            if (strncmp(endian, \"BEDN\", 4) == 0)\n            {\n                dataStream.setByteOrder(QDataStream::BigEndian);\n            }\n#elif Q_BYTE_ORDER == Q_LITTLE_ENDIAN\n            if (strncmp(endian, \"LEDN\", 4) == 0)\n            {\n                dataStream.setByteOrder(QDataStream::LittleEndian);\n            }\n#else\n#error \"Unknown endianness on this platform.\"\n#endif\n            else\n            {\n                return false;\n            }\n\n            int32_t fileVersion = 0;\n\n            dataStream >> fileVersion;\n\n            if (fileVersion != 1)\n            {\n                return false;\n            }\n\n            parameters.command = ReadUTF8String(dataStream).toStdString();\n            parameters.filterPath = ReadUTF8String(dataStream).toStdString();\n            parameters.inputMode = ReadGmic8bfInputMode(dataStream);\n        }\n\n        return true;\n    }\n\n    GmicQt::RunParameters GetFilterRunParameters(const QString& path)\n    {\n        GmicQt::RunParameters parameters = GmicQt::lastAppliedFilterRunParameters(GmicQt::ReturnedRunParametersFlag::AfterFilterExecution);\n\n        if (!path.isEmpty())\n        {\n            ReadGmic8bfFilterParameters(path, parameters);\n        }\n\n        return parameters;\n    }\n\n    void WriteGmic8bfInputMode(QDataStream& dataStream, GmicQt::InputMode inputMode)\n    {\n        QString str;\n\n        switch (inputMode)\n        {\n        case GmicQt::InputMode::All:\n            str = \"All Layers\";\n            break;\n        case GmicQt::InputMode::ActiveAndBelow:\n            str = \"Active Layer and Below\";\n            break;\n        case GmicQt::InputMode::ActiveAndAbove:\n            str = \"Active Layer and Above\";\n            break;\n        case GmicQt::InputMode::AllVisible:\n            str = \"All Visible Layers\";\n            break;\n        case GmicQt::InputMode::AllInvisible:\n            str = \"All Hidden Layers\";\n            break;\n        case GmicQt::InputMode::Active:\n        default:\n            str = \"Active Layer\";\n            break;\n        }\n\n        QByteArray utf8Bytes = str.toUtf8();\n\n        dataStream << utf8Bytes.size();\n\n        dataStream.writeRawData(utf8Bytes.constData(), utf8Bytes.size());\n    }\n\n    void WriteUtf8String(QDataStream& dataStream, const std::string& str)\n    {\n        if (str.size() <= INT_MAX)\n        {\n            const int stringLength = static_cast<int>(str.size());\n\n            dataStream << stringLength;\n\n            dataStream.writeRawData(str.c_str(), stringLength);\n        }\n    }\n\n    void WriteGmic8bfFilterParameters(const QString& path, const GmicQt::RunParameters& parameters)\n    {\n        if (path.isEmpty())\n        {\n            return;\n        }\n\n        QFile file(path);\n\n        if (file.open(QFile::WriteOnly))\n        {\n            QDataStream dataStream(&file);\n\n            const int32_t fileVersion = 1;\n\n            dataStream.writeRawData(\"G8FP\", 4);\n#if Q_BYTE_ORDER == Q_BIG_ENDIAN\n            stream.writeRawData(\"BEDN\", 4);\n            dataStream.setByteOrder(QDataStream::BigEndian);\n#elif Q_BYTE_ORDER == Q_LITTLE_ENDIAN\n            dataStream.writeRawData(\"LEDN\", 4);\n            dataStream.setByteOrder(QDataStream::LittleEndian);\n#else\n#error \"Unknown endianness on this platform.\"\n#endif\n            dataStream << fileVersion;\n\n            WriteUtf8String(dataStream, parameters.command);\n            WriteUtf8String(dataStream, parameters.filterPath);\n            WriteGmic8bfInputMode(dataStream, parameters.inputMode);\n            WriteUtf8String(dataStream, parameters.filterName());\n        }\n    }\n\n    QWidget* visibleMainWindow()\n    {\n        for (QWidget* w : QApplication::topLevelWidgets()) {\n\n            if ((dynamic_cast<QMainWindow*>(w) != nullptr) && (w->isVisible())) {\n                return w;\n            }\n        }\n        return nullptr;\n    }\n\n#ifdef Q_OS_WIN\n    void FetchDisplayProfileFromWindowHandle(HWND hwnd)\n    {\n        HMONITOR hMonitor = MonitorFromWindow(hwnd, MONITOR_DEFAULTTONEAREST);\n\n        MONITORINFOEXW monitorInfo{};\n        monitorInfo.cbSize = sizeof(monitorInfo);\n\n        if (GetMonitorInfoW(hMonitor, &monitorInfo))\n        {\n            HDC hdc = CreateDCW(monitorInfo.szDevice, monitorInfo.szDevice, nullptr, nullptr);\n\n            if (hdc != nullptr)\n            {\n                DWORD size = 0;\n\n                GetICMProfileA(hdc, &size, nullptr);\n\n                if (size > 0)\n                {\n                    CHAR* chars = new (std::nothrow) CHAR[size];\n\n                    if (chars != nullptr && GetICMProfileA(hdc, &size, chars))\n                    {\n                        cmsHPROFILE profile = cmsOpenProfileFromFileTHR(host_8bf::lcmsContext, chars, \"rb\");\n\n                        if (profile != nullptr)\n                        {\n                            if (host_8bf::displayProfile != nullptr)\n                            {\n                                cmsCloseProfile(host_8bf::displayProfile);\n                            }\n\n                            host_8bf::displayProfile = profile;\n                        }\n                    }\n\n                    delete[] chars;\n                }\n\n                DeleteDC(hdc);\n            }\n        }\n    }\n#endif\n\n    void FetchDisplayProfileFromQtWidget()\n    {\n#ifdef Q_OS_WIN\n        QWidget* mainWindow = visibleMainWindow();\n\n        if (mainWindow != nullptr)\n        {\n            WId mainWindowHandle = mainWindow->winId();\n\n            if (mainWindowHandle != static_cast<quintptr>(0))\n            {\n                FetchDisplayProfileFromWindowHandle(reinterpret_cast<HWND>(mainWindowHandle));\n            }\n        }\n#endif\n    }\n}\n\nnamespace GmicQtHost {\n\nvoid getLayersExtent(int * width, int * height, GmicQt::InputMode mode)\n{\n    if (mode == GmicQt::InputMode::NoInput)\n    {\n        *width = 0;\n        *height = 0;\n        return;\n    }\n\n    if (host_8bf::layers.size() == 1)\n    {\n        const Gmic8bfLayer& layer = host_8bf::layers[0];\n\n        *width = layer.width;\n        *height = layer.height;\n    }\n    else\n    {\n        QVector<Gmic8bfLayer> filteredLayers = FilterLayersForInputMode(mode);\n\n        for (int i = 0; i < filteredLayers.size(); i++)\n        {\n            Gmic8bfLayer& layer = filteredLayers[i];\n\n            *width = std::max(*width, layer.width);\n            *height = std::max(*height, layer.height);\n        }\n    }\n}\n\nvoid getCroppedImages(gmic_list<float> & images, gmic_list<char> & imageNames, double x, double y, double width, double height, GmicQt::InputMode mode)\n{\n    if (mode == GmicQt::InputMode::NoInput)\n    {\n        images.assign();\n        imageNames.assign();\n        return;\n    }\n\n    const bool entireImage = x < 0 && y < 0 && width < 0 && height < 0;\n    if (entireImage)\n    {\n        x = 0.0;\n        y = 0.0;\n        width = 1.0;\n        height = 1.0;\n    }\n\n    QVector<Gmic8bfLayer> filteredLayers = FilterLayersForInputMode(mode);\n\n    const int layerCount = filteredLayers.size();\n\n    images.assign(layerCount);\n    imageNames.assign(layerCount);\n\n    for (int i = 0; i < layerCount; ++i)\n    {\n        QByteArray layerNameBytes = filteredLayers[i].name.toUtf8();\n        gmic_image<char>::string(layerNameBytes.constData()).move_to(imageNames[i]);\n    }\n\n    int maxWidth = 0;\n    int maxHeight = 0;\n\n    for (int i = 0; i < filteredLayers.size(); i++)\n    {\n        Gmic8bfLayer& layer = filteredLayers[i];\n\n        maxWidth = std::max(maxWidth, layer.width);\n        maxHeight = std::max(maxHeight, layer.height);\n    }\n\n    const int ix = entireImage ? 0 : static_cast<int>(std::floor(x * maxWidth));\n    const int iy = entireImage ? 0 : static_cast<int>(std::floor(y * maxHeight));\n    const int iw = entireImage ? maxWidth : std::min(maxWidth - ix, static_cast<int>(1 + std::ceil(width * maxWidth)));\n    const int ih = entireImage ? maxHeight : std::min(maxHeight - iy, static_cast<int>(1 + std::ceil(height * maxHeight)));\n\n    for (int i = 0; i < layerCount; i++)\n    {\n        if (entireImage)\n        {\n            images[i].assign(filteredLayers.at(i).imageData);\n        }\n        else\n        {\n            images[i].assign(filteredLayers.at(i).imageData.get_crop(ix, iy, ix + iw, iy + ih));\n        }\n    }\n}\n\nvoid outputImages(gmic_list<float> & images, const gmic_list<char> & imageNames, GmicQt::OutputMode /* mode */)\n{\n    unused(imageNames);\n\n    if (images.size() > 0)\n    {\n        // Remove any files that may be present from the last time the user clicked Apply.\n        EmptyOutputFolder();\n\n        QString timestamp = QDateTime::currentDateTime().toString(\"yyyyMMdd-hhmmss\");\n        bool haveMultipleImages = images.size() > 1;\n\n        for (size_t i = 0; i < images.size(); ++i)\n        {\n            QString outputPath;\n\n            if (haveMultipleImages)\n            {\n                outputPath = QString(\"%1/%2-%3.g8i\").arg(host_8bf::outputDir).arg(timestamp).arg(i);\n            }\n            else\n            {\n                outputPath = QString(\"%1/%2.g8i\").arg(host_8bf::outputDir).arg(timestamp);\n            }\n\n            gmic_library::gmic_image<float>& in = images[i];\n\n            const int width = in.width();\n            const int height = in.height();\n            bool planar = false;\n            int tileWidth = width;\n            int tileHeight = height;\n\n            if (host_8bf::grayScale && (in.spectrum() == 3 || in.spectrum() == 4))\n            {\n                // Convert the RGB image to grayscale.\n                GmicQt::calibrateImage(in, in.spectrum() == 4 ? 2 : 1, false);\n            }\n\n            if (i == 0)\n            {\n                // Replace the active layer image with the first output image.\n                // This allows users to \"layer\" multiple effects using the G'MIC-Qt Apply button.\n                //\n                // Note that only the most recently applied effect will be used by the \"Last Filter\"\n                // or \"Repeat Filter\" commands.\n\n                Gmic8bfLayer& active = host_8bf::layers[host_8bf::activeLayerIndex];\n\n                active.width = width;\n                active.height = height;\n                active.imageData.assign(in);\n\n                // If the G'MIC output is a single image that matches the host document size it will be\n                // copied to the active layer when G'MIC exits.\n                if (images.size() == 1 && width == host_8bf::documentWidth && height == host_8bf::documentHeight)\n                {\n                    // The output will be written as a tiled planar image because that is the most\n                    // efficient format for the host to read.\n                    planar = true;\n                    tileWidth = host_8bf::hostTileWidth;\n                    tileHeight = host_8bf::hostTileHeight;\n                }\n            }\n\n\n            switch (host_8bf::bitsPerChannel)\n            {\n            case 8:\n                WriteGmicOutput8(outputPath, in, planar, tileWidth, tileHeight);\n                break;\n            case 16:\n                WriteGmicOutput16(outputPath, in, planar, tileWidth, tileHeight);\n                break;\n            case 32:\n                WriteGmicOutput32(outputPath, in, planar, tileWidth, tileHeight);\n                break;\n            }\n        }\n    }\n}\n\nvoid applyColorProfile(gmic_library::gmic_image<gmic_pixel_type> & image)\n{\n    if (!image || image.spectrum() > 4)\n    {\n        return;\n    }\n\n    const bool performColorCorrection = host_8bf::lcmsContext != nullptr && host_8bf::imageProfile != nullptr && host_8bf::displayProfile != nullptr;\n\n    if (host_8bf::grayScale)\n    {\n        if (image.spectrum() == 3 || image.spectrum() == 4)\n        {\n            // Convert the RGB image to gray scale.\n            GmicQt::calibrateImage(image, image.spectrum() == 4 ? 2 : 1, false);\n        }\n    }\n    else\n    {\n        if (performColorCorrection && (image.spectrum() == 1 || image.spectrum() == 2))\n        {\n            // Convert the gray scale image to RGB.\n            // The color profile of a RGB image may not support gray scale image data.\n            GmicQt::calibrateImage(image, image.spectrum() == 2 ? 4 : 3, false);\n        }\n    }\n\n    if (!performColorCorrection)\n    {\n        return;\n    }\n\n    if (!host_8bf::fetchedDisplayProfileFromQtWidget)\n    {\n        host_8bf::fetchedDisplayProfileFromQtWidget = true;\n\n        FetchDisplayProfileFromQtWidget();\n    }\n\n    gmic_library::gmic_image<gmic_pixel_type> corrected;\n    image.get_permute_axes(\"cxyz\").move_to(corrected) /= 255;\n\n#ifndef TYPE_GRAYA_FLT\n#define TYPE_GRAYA_FLT FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(4)\n#endif\n\n    cmsUInt32Number format = 0;\n    cmsUInt32Number transformFlags = cmsFLAGS_BLACKPOINTCOMPENSATION;\n\n    switch (image.spectrum())\n    {\n    case 1:\n        format = TYPE_GRAY_FLT;\n        break;\n    case 2:\n        format = TYPE_GRAYA_FLT;\n        transformFlags |= cmsFLAGS_COPY_ALPHA;\n        break;\n    case 3:\n        format = TYPE_RGB_FLT;\n        break;\n    case 4:\n        format = TYPE_RGBA_FLT;\n        transformFlags |= cmsFLAGS_COPY_ALPHA;\n        break;\n    }\n\n    if (format != 0)\n    {\n        if (format != host_8bf::transformFormat)\n        {\n            host_8bf::transformFormat = format;\n\n            if (host_8bf::transform != nullptr)\n            {\n                cmsDeleteTransform(host_8bf::transform);\n            }\n\n            host_8bf::transform = cmsCreateTransformTHR(\n                host_8bf::lcmsContext,\n                host_8bf::imageProfile,\n                format,\n                host_8bf::displayProfile,\n                format,\n                INTENT_RELATIVE_COLORIMETRIC,\n                transformFlags);\n        }\n\n        if (host_8bf::transform != nullptr)\n        {\n            const cmsUInt64Number bytesPerLine64 = static_cast<cmsUInt64Number>(image.width()) * image.spectrum() * sizeof(gmic_pixel_type);\n\n            if (bytesPerLine64 <= std::numeric_limits<cmsUInt32Number>::max())\n            {\n                const cmsUInt64Number bytesPerLine = static_cast<cmsUInt32Number>(bytesPerLine64);\n\n                cmsDoTransformLineStride(\n                    host_8bf::transform,\n                    corrected.data(),\n                    corrected.data(),\n                    image.width(),\n                    image.height(),\n                    bytesPerLine,\n                    bytesPerLine,\n                    0,\n                    0);\n            }\n        }\n    }\n\n    (corrected.permute_axes(\"yzcx\") *= 255).cut(0, 255).move_to(image);\n}\n\nvoid showMessage(const char * message)\n{\n    unused(message);\n}\n\n\n} // GmicQtHost\n\n#if defined(_MSC_VER) && defined(_DEBUG)\n#include <sstream>\n\n// Adapted from https://stackoverflow.com/a/20387632\nbool launchDebugger()\n{\n    // Get System directory, typically c:\\windows\\system32\n    std::wstring systemDir(MAX_PATH + 1, '\\0');\n    UINT nChars = GetSystemDirectoryW(&systemDir[0], static_cast<UINT>(systemDir.length()));\n    if (nChars == 0) return false; // failed to get system directory\n    systemDir.resize(nChars);\n\n    // Get process ID and create the command line\n    DWORD pid = GetCurrentProcessId();\n    std::wostringstream s;\n    s << systemDir << L\"\\\\vsjitdebugger.exe -p \" << pid;\n    std::wstring cmdLine = s.str();\n\n    // Start debugger process\n    STARTUPINFOW si;\n    ZeroMemory(&si, sizeof(si));\n    si.cb = sizeof(si);\n\n    PROCESS_INFORMATION pi;\n    ZeroMemory(&pi, sizeof(pi));\n\n    if (!CreateProcessW(NULL, &cmdLine[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) return false;\n\n    // Close debugger process handles to eliminate resource leak\n    CloseHandle(pi.hThread);\n    CloseHandle(pi.hProcess);\n\n    // Wait for the debugger to attach\n    while (!IsDebuggerPresent()) Sleep(100);\n\n    // Stop execution so the debugger can take over\n    DebugBreak();\n    return true;\n}\n#endif // defined(_MSC_VER) && defined(_DEBUG)\n\nvoid DestroyLCMSData()\n{\n    if (host_8bf::imageProfile != nullptr)\n    {\n        cmsCloseProfile(host_8bf::imageProfile);\n    }\n\n    if (host_8bf::displayProfile != nullptr)\n    {\n        cmsCloseProfile(host_8bf::displayProfile);\n    }\n\n    if (host_8bf::transform != nullptr)\n    {\n        cmsDeleteTransform(host_8bf::transform);\n    }\n\n    if (host_8bf::lcmsContext != nullptr)\n    {\n        cmsDeleteContext(host_8bf::lcmsContext);\n    }\n}\n\nint main(int argc, char *argv[])\n{\n#if defined(_MSC_VER) && defined(_DEBUG)\n    launchDebugger();\n#endif\n\n    QString indexFilePath;\n    QString parametersFilePath;\n    bool useLastParameters = false;\n\n    if (argc >= 3)\n    {\n        indexFilePath = argv[1];\n        host_8bf::outputDir = argv[2];\n        if (argc >= 4)\n        {\n            parametersFilePath = argv[3];\n\n            if (argc == 5)\n            {\n                useLastParameters = strcmp(argv[4], \"reapply\") == 0;\n            }\n        }\n    }\n    else\n    {\n        return 1;\n    }\n\n    if (indexFilePath.isEmpty())\n    {\n        return 2;\n    }\n\n    if (host_8bf::outputDir.isEmpty())\n    {\n        return 3;\n    }\n\n    try\n    {\n        host_8bf::lcmsContext = nullptr;\n        host_8bf::imageProfile = nullptr;\n        host_8bf::displayProfile = nullptr;\n        host_8bf::fetchedDisplayProfileFromQtWidget = false;\n        host_8bf::transform = nullptr;\n        host_8bf::transformFormat = 0;\n\n        InputFileParseStatus status = ParseInputFileIndex(indexFilePath);\n\n        // The return value 5 is skipped because it is already being used to\n        // indicate that the user canceled the dialog.\n        if (status != InputFileParseStatus::Ok)\n        {\n            DestroyLCMSData();\n\n            switch (status)\n            {\n            case InputFileParseStatus::InvalidArgument:\n               return 3;\n            case InputFileParseStatus::FileOpenError:\n                return 6;\n            case InputFileParseStatus::BadFileSignature:\n                return 7;\n            case InputFileParseStatus::UnknownFileVersion:\n                return 8;\n            case InputFileParseStatus::OutOfMemory:\n                return 9;\n            case InputFileParseStatus::EndOfFile:\n                return 10;\n            case InputFileParseStatus::PlatformEndianMismatch:\n                return 11;\n            case InputFileParseStatus::FileReadError:\n                return 12;\n            case InputFileParseStatus::IccProfileError:\n                return 13;\n            default:\n                return 4; // Unknown error\n            }\n        }\n    }\n    catch (const std::bad_alloc&)\n    {\n        DestroyLCMSData();\n        return 9;\n    }\n\n    int exitCode = 0;\n    std::list<GmicQt::InputMode> disabledInputModes;\n    disabledInputModes.push_back(GmicQt::InputMode::NoInput);\n    // disabledInputModes.push_back(GmicQt::InputMode::Active);\n    // disabledInputModes.push_back(GmicQt::InputMode::All);\n    // disabledInputModes.push_back(GmicQt::InputMode::ActiveAndBelow);\n    // disabledInputModes.push_back(GmicQt::InputMode::ActiveAndAbove);\n    // disabledInputModes.push_back(GmicQt::InputMode::AllVisible);\n    // disabledInputModes.push_back(GmicQt::InputMode::AllInvisible);\n\n\n    std::list<GmicQt::OutputMode> disabledOutputModes;\n    // disabledOutputModes.push_back(GmicQt::OutputMode::InPlace);\n    disabledOutputModes.push_back(GmicQt::OutputMode::NewImage);\n    disabledOutputModes.push_back(GmicQt::OutputMode::NewLayers);\n    disabledOutputModes.push_back(GmicQt::OutputMode::NewActiveLayers);\n    bool dialogAccepted = true;\n\n    GmicQt::RunParameters parameters = GetFilterRunParameters(parametersFilePath);\n\n    if (useLastParameters)\n    {\n        exitCode = GmicQt::run(GmicQt::UserInterfaceMode::ProgressDialog,\n                               parameters,\n                               disabledInputModes,\n                               disabledOutputModes,\n                               &dialogAccepted);\n\n        if (!dialogAccepted)\n        {\n            exitCode = 5;\n        }\n    }\n    else\n    {\n        exitCode = GmicQt::run(GmicQt::UserInterfaceMode::Full,\n                               parameters,\n                               disabledInputModes,\n                               disabledOutputModes,\n                               &dialogAccepted);\n\n        if (dialogAccepted)\n        {\n            GmicQt::RunParameters currentParameters = GmicQt::lastAppliedFilterRunParameters(GmicQt::ReturnedRunParametersFlag::AfterFilterExecution);\n\n            WriteGmic8bfFilterParameters(parametersFilePath, currentParameters);\n        }\n        else\n        {\n            exitCode = 5;\n        }\n    }\n\n    DestroyLCMSData();\n\n    return exitCode;\n}\n"
  },
  {
    "path": "src/Host/Gimp/host_gimp.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file host_gimp.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include <libgimp/gimp.h>\n#include <QDebug>\n#include <QFileInfo>\n#include <QRegularExpression>\n#include <QString>\n#include <algorithm>\n#include <limits>\n#include <stack>\n#include <vector>\n#ifdef _IS_WINDOWS_\n#include <QTextCodec>\n#endif\n#include \"Common.h\"\n#include \"GmicQt.h\"\n#include \"Host/GmicQtHost.h\"\n#include \"ImageTools.h\"\n#include \"gmic.h\"\n\n/*\n * Part of this code is much inspired by the original source code\n * of the GTK version of the gmic plug-in for GIMP by David Tschumperl\\'e.\n */\n\n#define _gimp_image_get_item_position gimp_image_get_item_position\n\n#if !GIMP_CHECK_VERSION(2, 7, 15)\n#define _gimp_item_get_visible gimp_drawable_get_visible\n#else\n#define _gimp_item_get_visible gimp_item_get_visible\n#endif\n\n#if GIMP_CHECK_VERSION(2, 99, 6)\n#define _gimp_image_get_width gimp_image_get_width\n#define _gimp_image_get_height gimp_image_get_height\n#define _gimp_image_get_base_type gimp_image_get_base_type\n#define _gimp_drawable_get_width gimp_drawable_get_width\n#define _gimp_drawable_get_height gimp_drawable_get_height\n#define _gimp_drawable_get_offsets gimp_drawable_get_offsets\n#else\n#define _gimp_image_get_width gimp_image_width\n#define _gimp_image_get_height gimp_image_height\n#define _gimp_image_get_base_type gimp_image_base_type\n#define _gimp_drawable_get_width gimp_drawable_width\n#define _gimp_drawable_get_height gimp_drawable_height\n#define _gimp_drawable_get_offsets gimp_drawable_offsets\n#endif\n\n#if !GIMP_CHECK_VERSION(2, 99, 0)\n#define _GimpImagePtr int\n#define _GimpLayerPtr int\n#define _GimpItemPtr int\n#define _GIMP_ITEM(item) (item)\n#define _GIMP_DRAWABLE(drawable) (drawable)\n#define _GIMP_LAYER(layer) (layer)\n#define _GIMP_NULL_LAYER -1\n#define _GIMP_LAYER_IS_NOT_NULL(layer) ((layer) >= 0)\n#define _gimp_top_layer 0\n\n#else\n\n#define _GimpImagePtr GimpImage *\n#define _GimpLayerPtr GimpLayer *\n#define _GimpItemPtr GimpItem *\n#define _GIMP_ITEM(item) GIMP_ITEM(item)\n#define _GIMP_DRAWABLE(drawable) GIMP_DRAWABLE(drawable)\n#define _GIMP_LAYER(layer) GIMP_LAYER(layer)\n#define _GIMP_NULL_LAYER NULL\n#define _GIMP_LAYER_IS_NOT_NULL(layer) ((layer) != NULL)\n#define _gimp_top_layer gimp_layer_get_by_id(0)\n\n#define PLUG_IN_PROC \"plug-in-gmic-qt\"\n\ntypedef struct _GmicQtPlugin GmicQtPlugin;\ntypedef struct _GmicQtPluginClass GmicQtPluginClass;\n\nstruct _GmicQtPlugin {\n  GimpPlugIn parent_instance;\n};\n\nstruct _GmicQtPluginClass {\n  GimpPlugInClass parent_class;\n};\n\n#define GMIC_QT_TYPE (gmic_qt_get_type())\n// The object is called GmicQtPlugin to avoid name conflict with the namespace.\n#define GMIC_QT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GMIC_QT_TYPE, GmicQtPlugin))\n\nGType gmic_qt_get_type(void) G_GNUC_CONST;\n\nstatic GList * gmic_qt_query(GimpPlugIn * plug_in);\nstatic GimpProcedure * gmic_qt_create_procedure(GimpPlugIn * plug_in, const gchar * name);\n\n#if !GIMP_CHECK_VERSION(2, 99, 6)\nstatic GimpValueArray * gmic_qt_run(GimpProcedure * procedure, GimpRunMode run_mode, GimpImage * image, GimpDrawable * drawable, const GimpValueArray * args, gpointer run_data);\n#else\n#if !GIMP_CHECK_VERSION(2, 99, 19)\nstatic GimpValueArray * gmic_qt_run(GimpProcedure * procedure, GimpRunMode run_mode, GimpImage * image, gint n_drawables, GimpDrawable ** drawables, const GimpValueArray * args, gpointer run_data);\n#else\nstatic GimpValueArray * gmic_qt_run(GimpProcedure * procedure, GimpRunMode run_mode, GimpImage * image, gint n_drawables, GimpDrawable ** drawables, GimpProcedureConfig *config, gpointer run_data);\n#endif\n#endif\n\nG_DEFINE_TYPE(GmicQtPlugin, gmic_qt, GIMP_TYPE_PLUG_IN)\n\nGIMP_MAIN(GMIC_QT_TYPE)\n\nstatic void gmic_qt_class_init(GmicQtPluginClass * klass)\n{\n  GimpPlugInClass * plug_in_class = GIMP_PLUG_IN_CLASS(klass);\n\n  plug_in_class->query_procedures = gmic_qt_query;\n  plug_in_class->create_procedure = gmic_qt_create_procedure;\n}\n\nstatic void gmic_qt_init(GmicQtPlugin * gmic_qt) {}\n\n#endif\n\nnamespace GmicQtHost\n{\nconst QString ApplicationName = QString(\"GIMP %1.%2\").arg(GIMP_MAJOR_VERSION).arg(GIMP_MINOR_VERSION);\nconst char * const ApplicationShortname = GMIC_QT_XSTRINGIFY(GMIC_HOST);\n#if !GIMP_CHECK_VERSION(2, 9, 0)\nconst bool DarkThemeIsDefault = false;\n#else\nconst bool DarkThemeIsDefault = true;\n#endif\n\n} // namespace GmicQtHost\n\nnamespace\n{\n_GimpImagePtr gmic_qt_gimp_image_id;\n\ngmic_library::gmic_image<int> inputLayerDimensions;\nstd::vector<_GimpLayerPtr> inputLayers;\n\n#if GIMP_CHECK_VERSION(2, 9, 0) && !defined(GIMP_NORMAL_MODE)\ntypedef GimpLayerMode GimpLayerModeEffects;\n#define GIMP_NORMAL_MODE GIMP_LAYER_MODE_NORMAL\nconst QMap<QString, GimpLayerModeEffects> BlendingModesMap = {{QString(\"alpha\"), GIMP_LAYER_MODE_NORMAL},\n                                                              {QString(\"normal\"), GIMP_LAYER_MODE_NORMAL},\n                                                              {QString(\"dissolve\"), GIMP_LAYER_MODE_DISSOLVE},\n                                                              {QString(\"behind\"), GIMP_LAYER_MODE_BEHIND},\n                                                              {QString(\"colorerase\"), GIMP_LAYER_MODE_COLOR_ERASE},\n                                                              {QString(\"erase\"), GIMP_LAYER_MODE_ERASE},\n                                                              {QString(\"merge\"), GIMP_LAYER_MODE_MERGE},\n                                                              {QString(\"split\"), GIMP_LAYER_MODE_SPLIT},\n                                                              {QString(\"lighten\"), GIMP_LAYER_MODE_LIGHTEN_ONLY},\n                                                              {QString(\"lumalighten\"), GIMP_LAYER_MODE_LUMA_LIGHTEN_ONLY},\n                                                              {QString(\"screen\"), GIMP_LAYER_MODE_SCREEN},\n                                                              {QString(\"dodge\"), GIMP_LAYER_MODE_DODGE},\n                                                              {QString(\"addition\"), GIMP_LAYER_MODE_ADDITION},\n                                                              {QString(\"darken\"), GIMP_LAYER_MODE_DARKEN_ONLY},\n                                                              {QString(\"lumadarken\"), GIMP_LAYER_MODE_LUMA_DARKEN_ONLY},\n                                                              {QString(\"multiply\"), GIMP_LAYER_MODE_MULTIPLY},\n                                                              {QString(\"burn\"), GIMP_LAYER_MODE_BURN},\n                                                              {QString(\"overlay\"), GIMP_LAYER_MODE_OVERLAY},\n                                                              {QString(\"softlight\"), GIMP_LAYER_MODE_SOFTLIGHT},\n                                                              {QString(\"hardlight\"), GIMP_LAYER_MODE_HARDLIGHT},\n                                                              {QString(\"vividlight\"), GIMP_LAYER_MODE_VIVID_LIGHT},\n                                                              {QString(\"pinlight\"), GIMP_LAYER_MODE_PIN_LIGHT},\n                                                              {QString(\"linearlight\"), GIMP_LAYER_MODE_LINEAR_LIGHT},\n                                                              {QString(\"hardmix\"), GIMP_LAYER_MODE_HARD_MIX},\n                                                              {QString(\"difference\"), GIMP_LAYER_MODE_DIFFERENCE},\n                                                              {QString(\"subtract\"), GIMP_LAYER_MODE_SUBTRACT},\n                                                              {QString(\"grainextract\"), GIMP_LAYER_MODE_GRAIN_EXTRACT},\n                                                              {QString(\"grainmerge\"), GIMP_LAYER_MODE_GRAIN_MERGE},\n                                                              {QString(\"divide\"), GIMP_LAYER_MODE_DIVIDE},\n                                                              {QString(\"hue\"), GIMP_LAYER_MODE_HSV_HUE},\n                                                              {QString(\"saturation\"), GIMP_LAYER_MODE_HSV_SATURATION},\n                                                              {QString(\"color\"), GIMP_LAYER_MODE_HSL_COLOR},\n                                                              {QString(\"value\"), GIMP_LAYER_MODE_HSV_VALUE},\n                                                              {QString(\"lchhue\"), GIMP_LAYER_MODE_LCH_HUE},\n                                                              {QString(\"lchchroma\"), GIMP_LAYER_MODE_LCH_CHROMA},\n                                                              {QString(\"lchcolor\"), GIMP_LAYER_MODE_LCH_COLOR},\n                                                              {QString(\"lchlightness\"), GIMP_LAYER_MODE_LCH_LIGHTNESS},\n                                                              {QString(\"luminance\"), GIMP_LAYER_MODE_LUMINANCE},\n                                                              {QString(\"exclusion\"), GIMP_LAYER_MODE_EXCLUSION}};\n#else\nconst QMap<QString, GimpLayerModeEffects> BlendingModesMap = {{QString(\"alpha\"), GIMP_NORMAL_MODE},\n                                                              {QString(\"normal\"), GIMP_NORMAL_MODE},\n                                                              {QString(\"dissolve\"), GIMP_DISSOLVE_MODE},\n                                                              {QString(\"lighten\"), GIMP_LIGHTEN_ONLY_MODE},\n                                                              {QString(\"screen\"), GIMP_SCREEN_MODE},\n                                                              {QString(\"dodge\"), GIMP_DODGE_MODE},\n                                                              {QString(\"addition\"), GIMP_ADDITION_MODE},\n                                                              {QString(\"darken\"), GIMP_DARKEN_ONLY_MODE},\n                                                              {QString(\"multiply\"), GIMP_MULTIPLY_MODE},\n                                                              {QString(\"burn\"), GIMP_BURN_MODE},\n                                                              {QString(\"overlay\"), GIMP_OVERLAY_MODE},\n                                                              {QString(\"softlight\"), GIMP_SOFTLIGHT_MODE},\n                                                              {QString(\"hardlight\"), GIMP_HARDLIGHT_MODE},\n                                                              {QString(\"difference\"), GIMP_DIFFERENCE_MODE},\n                                                              {QString(\"subtract\"), GIMP_SUBTRACT_MODE},\n                                                              {QString(\"grainextract\"), GIMP_GRAIN_EXTRACT_MODE},\n                                                              {QString(\"grainmerge\"), GIMP_GRAIN_MERGE_MODE},\n                                                              {QString(\"divide\"), GIMP_DIVIDE_MODE},\n                                                              {QString(\"hue\"), GIMP_HUE_MODE},\n                                                              {QString(\"saturation\"), GIMP_SATURATION_MODE},\n                                                              {QString(\"color\"), GIMP_COLOR_MODE},\n                                                              {QString(\"value\"), GIMP_VALUE_MODE}};\n#endif\n\nQMap<GimpLayerModeEffects, QString> reverseBlendingModeMap(const QMap<QString, GimpLayerModeEffects> & string2mode)\n{\n  QMap<GimpLayerModeEffects, QString> result;\n  QMap<QString, GimpLayerModeEffects>::const_iterator it = string2mode.cbegin();\n  while (it != string2mode.cend()) {\n    result[it.value()] = it.key();\n    ++it;\n  }\n  result[GIMP_NORMAL_MODE] = QString(\"alpha\");\n  return result;\n}\n\nQString blendingMode2String(const GimpLayerModeEffects & blendingMode)\n{\n  static QMap<GimpLayerModeEffects, QString> mode2string = reverseBlendingModeMap(BlendingModesMap);\n  QMap<GimpLayerModeEffects, QString>::const_iterator it = mode2string.find(blendingMode);\n  if (it != mode2string.cend()) {\n    return it.value();\n  } else {\n    return QString(\"alpha\");\n  }\n}\n\n#ifdef _IS_WINDOWS_\nQByteArray mapToASCII(const char * str)\n{\n  static const QTextCodec * codec = QTextCodec::codecForName(\"ASCII\");\n  return codec->fromUnicode(QString::fromUtf8(str));\n}\ninline void _GIMP_ITEM_SET_NAME(_GimpItemPtr item_ID, const gchar * name)\n{\n  gimp_item_set_name(item_ID, mapToASCII(name).constData());\n}\n#else\ninline void _GIMP_ITEM_SET_NAME(_GimpItemPtr item_ID, const gchar * name)\n{\n  gimp_item_set_name(item_ID, name);\n}\n#endif\n\n// Get layer blending mode from string.\n//-------------------------------------\nvoid get_output_layer_props(const char * const s, GimpLayerModeEffects & blendmode, double & opacity, int & posx, int & posy, gmic_library::gmic_image<char> & name)\n{\n  if (!s || !*s)\n    return;\n  QString str(s);\n\n  // Read output blending mode.\n  QRegularExpression modeRe(R\"_(mode\\(\\s*([^)]*)\\s*\\))_\");\n  QRegularExpressionMatch match = modeRe.match(str);\n  if (match.hasMatch()) {\n    QString modeStr = match.captured(1).trimmed();\n    if (BlendingModesMap.find(modeStr) != BlendingModesMap.end()) {\n      blendmode = BlendingModesMap[modeStr];\n    }\n  }\n\n  // Read output opacity.\n  QRegularExpression opacityRe(R\"_(opacity\\(\\s*([^)]*)\\s*\\))_\");\n  match = opacityRe.match(str);\n  if (match.hasMatch()) {\n    QString opacityStr = match.captured(1).trimmed();\n    bool ok = false;\n    double x = opacityStr.toDouble(&ok);\n    if (ok) {\n      opacity = x;\n      if (opacity < 0) {\n        opacity = 0;\n      } else if (opacity > 100) {\n        opacity = 100;\n      }\n    }\n  }\n\n  // Read output positions.\n  QRegularExpression posRe(R\"_(pos\\(\\s*(-?\\d*)[^)](-?\\d*)\\s*\\))_\"); // FIXME : Allow more spaces\n  match = posRe.match(str);\n  if (match.hasMatch()) {\n    QString xStr = match.captured(1);\n    QString yStr = match.captured(2);\n    bool okX = false;\n    bool okY = false;\n    int x = xStr.toInt(&okX);\n    int y = yStr.toInt(&okY);\n    if (okX && okY) {\n      posx = x;\n      posy = y;\n    }\n  }\n\n  // Read output name.\n  const char * S = std::strstr(s, \"name(\");\n  if (S) {\n    const char * ps = S + 5;\n    unsigned int level = 1;\n    while (*ps && level) {\n      if (*ps == '(') {\n        ++level;\n      } else if (*ps == ')') {\n        --level;\n      }\n      ++ps;\n    }\n    if (!level || *(ps - 1) == ')') {\n      name.assign(S + 5, (unsigned int)(ps - S - 5)).back() = 0;\n      cimg_for(name, pn, char)\n      {\n        if (*pn == 21) {\n          *pn = '(';\n        } else if (*pn == 22) {\n          *pn = ')';\n        }\n      }\n    }\n  }\n}\n\n_GimpLayerPtr * get_gimp_layers_flat_list(_GimpImagePtr imageId, int * count)\n{\n  static std::vector<_GimpLayerPtr> layersId;\n  std::stack<_GimpLayerPtr> idStack;\n\n  int layersCount = 0;\n  _GimpLayerPtr * layers = gimp_image_get_layers(imageId, &layersCount);\n  for (int i = layersCount - 1; i >= 0; --i) {\n    idStack.push(layers[i]);\n  }\n\n  layersId.clear();\n  while (!idStack.empty()) {\n    if (gimp_item_is_group(_GIMP_ITEM(idStack.top()))) {\n      int childCount = 0;\n      _GimpItemPtr * children = gimp_item_get_children(_GIMP_ITEM(idStack.top()), &childCount);\n      idStack.pop();\n      for (int i = childCount - 1; i >= 0; --i) {\n        idStack.push(_GIMP_LAYER(children[i])); // TODO: Check if layers can have non-layer children.\n      }\n    } else {\n      layersId.push_back(idStack.top());\n      idStack.pop();\n    }\n  }\n  *count = layersId.size();\n  return layersId.data();\n}\n\ntemplate <typename T> void image2uchar(gmic_library::gmic_image<T> & img)\n{\n  unsigned int len = img.width() * img.height();\n  auto dst = reinterpret_cast<unsigned char *>(img.data());\n  switch (img.spectrum()) {\n  case 1: {\n    const T * src = img.data(0, 0, 0, 0);\n    while (len--) {\n      *dst++ = static_cast<unsigned char>(*src++);\n    }\n  } break;\n  case 2: {\n    const T * srcG = img.data(0, 0, 0, 0);\n    const T * srcA = img.data(0, 0, 0, 1);\n    while (len--) {\n      dst[0] = static_cast<unsigned char>(*srcG++);\n      dst[1] = static_cast<unsigned char>(*srcA++);\n      dst += 2;\n    }\n  } break;\n  case 3: {\n    const T * srcR = img.data(0, 0, 0, 0);\n    const T * srcG = img.data(0, 0, 0, 1);\n    const T * srcB = img.data(0, 0, 0, 2);\n    while (len--) {\n      dst[0] = static_cast<unsigned char>(*srcR++);\n      dst[1] = static_cast<unsigned char>(*srcG++);\n      dst[2] = static_cast<unsigned char>(*srcB++);\n      dst += 3;\n    }\n  } break;\n  case 4: {\n    const T * srcR = img.data(0, 0, 0, 0);\n    const T * srcG = img.data(0, 0, 0, 1);\n    const T * srcB = img.data(0, 0, 0, 2);\n    const T * srcA = img.data(0, 0, 0, 3);\n    while (len--) {\n      dst[0] = static_cast<unsigned char>(*srcR++);\n      dst[1] = static_cast<unsigned char>(*srcG++);\n      dst[2] = static_cast<unsigned char>(*srcB++);\n      dst[3] = static_cast<unsigned char>(*srcA++);\n      dst += 4;\n    }\n  } break;\n  default:\n    return;\n  }\n}\n\n} // namespace\n\nnamespace GmicQtHost\n{\n\nvoid showMessage(const char * message)\n{\n  static bool first = true;\n\n  if (first) {\n    gimp_progress_init(message);\n    first = false;\n  } else {\n    gimp_progress_set_text_printf(\"%s\", message);\n  }\n}\n\nvoid applyColorProfile(gmic_library::gmic_image<float> & image)\n{\n#if !GIMP_CHECK_VERSION(2, 9, 0)\n  unused(image);\n// SWAP RED<->GREEN CHANNELS : FOR TESTING PURPOSE ONLY!\n//  cimg_forXY(image,x,y) {\n//    std::swap(image(x,y,0,0),image(x,y,0,1));\n//  }\n#else\n  unused(image);\n//  GimpColorProfile * const img_profile = gimp_image_get_effective_color_profile(gmic_qt_gimp_image_id);\n//  GimpColorConfig * const color_config = gimp_get_color_configuration();\n//  if (!img_profile || !color_config) {\n//    return;\n//  }\n\n//    if (!image || image.spectrum() < 3 || image.spectrum() > 4 ) {\n//      continue;\n//    }\n//    const Babl *const fmt = babl_format(image.spectrum()==3?\"R'G'B' float\":\"R'G'B'A float\");\n//    GimpColorTransform *const transform = gimp_widget_get_color_transform(gui_preview,\n//                                                                          color_config,\n//                                                                          img_profile,\n//                                                                          fmt,\n//                                                                          fmt);\n//    if (!transform) {\n//      continue;\n//    }\n//    gmic_library::gmic_image<float> corrected;\n//    image.get_permute_axes(\"cxyz\").move_to(corrected) /= 255;\n//    gimp_color_transform_process_pixels(transform,fmt,corrected,fmt,corrected,\n//                                        corrected.height()*corrected.depth());\n//    (corrected.permute_axes(\"yzcx\")*=255).cut(0,255).move_to(image);\n//    g_object_unref(transform);\n#endif\n}\n\nvoid getLayersExtent(int * width, int * height, GmicQt::InputMode mode)\n{\n  int layersCount = 0;\n  // _GimpLayerPtr * begLayers = gimp_image_get_layers(gmic_qt_gimp_image_id, &layersCount);\n  _GimpLayerPtr * begLayers = get_gimp_layers_flat_list(gmic_qt_gimp_image_id, &layersCount);\n  _GimpLayerPtr * endLayers = begLayers + layersCount;\n#if GIMP_CHECK_VERSION(2, 99, 12)\n  GList * selected_layers = gimp_image_list_selected_layers(gmic_qt_gimp_image_id);\n  GList * first_layer = g_list_first(selected_layers);\n  _GimpLayerPtr activeLayerID = (_GimpLayerPtr)first_layer->data;\n#else\n  _GimpLayerPtr activeLayerID = gimp_image_get_active_layer(gmic_qt_gimp_image_id);\n#endif\n\n  // Build list of input layers IDs\n  std::vector<_GimpLayerPtr> layers;\n  switch (mode) {\n  case GmicQt::InputMode::NoInput:\n    break;\n  case GmicQt::InputMode::Active:\n    if (_GIMP_LAYER_IS_NOT_NULL(activeLayerID) && !gimp_item_is_group(_GIMP_ITEM(activeLayerID))) {\n      layers.push_back(activeLayerID);\n    }\n    break;\n  case GmicQt::InputMode::All:\n    layers.assign(begLayers, endLayers);\n    break;\n  case GmicQt::InputMode::ActiveAndBelow:\n    if (_GIMP_LAYER_IS_NOT_NULL(activeLayerID) && !gimp_item_is_group(_GIMP_ITEM(activeLayerID))) {\n      layers.push_back(activeLayerID);\n      _GimpLayerPtr * p = std::find(begLayers, endLayers, activeLayerID);\n      if (p < endLayers - 1) {\n        layers.push_back(*(p + 1));\n      }\n    }\n    break;\n  case GmicQt::InputMode::ActiveAndAbove:\n    if (_GIMP_LAYER_IS_NOT_NULL(activeLayerID) && !gimp_item_is_group(_GIMP_ITEM(activeLayerID))) {\n      _GimpLayerPtr * p = std::find(begLayers, endLayers, activeLayerID);\n      if (p > begLayers) {\n        layers.push_back(*(p - 1));\n      }\n      layers.push_back(activeLayerID);\n    }\n    break;\n  case GmicQt::InputMode::AllVisible:\n  case GmicQt::InputMode::AllInvisible: {\n    bool visibility = (mode == GmicQt::InputMode::AllVisible);\n    for (int i = 0; i < layersCount; ++i) {\n      if (_gimp_item_get_visible(_GIMP_ITEM(begLayers[i])) == visibility) {\n        layers.push_back(begLayers[i]);\n      }\n    }\n  } break;\n  default:\n    break;\n  }\n\n  gint rgn_x, rgn_y, rgn_width, rgn_height;\n  *width = 0;\n  *height = 0;\n  for (_GimpLayerPtr layer : layers) {\n    if (!gimp_item_is_valid(_GIMP_ITEM(layer))) {\n      continue;\n    }\n    if (!gimp_drawable_mask_intersect(_GIMP_DRAWABLE(layer), &rgn_x, &rgn_y, &rgn_width, &rgn_height)) {\n      continue;\n    }\n    *width = std::max(*width, rgn_width);\n    *height = std::max(*height, rgn_height);\n  }\n}\n\nvoid getCroppedImages(gmic_list<float> & images, gmic_list<char> & imageNames, double x, double y, double width, double height, GmicQt::InputMode mode)\n{\n  using gmic_library::gmic_image;\n  using gmic_library::gmic_list;\n  int layersCount = 0;\n  _GimpLayerPtr * layers = get_gimp_layers_flat_list(gmic_qt_gimp_image_id, &layersCount);\n  _GimpLayerPtr * end_layers = layers + layersCount;\n#if GIMP_CHECK_VERSION(2, 99, 12)\n  GList * selected_layers = gimp_image_list_selected_layers(gmic_qt_gimp_image_id);\n  GList * first_layer = g_list_first(selected_layers);\n  _GimpLayerPtr active_layer_id = (_GimpLayerPtr)first_layer->data;\n#else\n  _GimpLayerPtr active_layer_id = gimp_image_get_active_layer(gmic_qt_gimp_image_id);\n#endif\n\n  const bool entireImage = (x < 0 && y < 0 && width < 0 && height < 0) || (x == 0.0 && y == 0 && width == 1 && height == 0);\n  if (entireImage) {\n    x = 0.0;\n    y = 0.0;\n    width = 1.0;\n    height = 1.0;\n  }\n\n  // Build list of input layers IDs\n  inputLayers.clear();\n  switch (mode) {\n  case GmicQt::InputMode::NoInput:\n    break;\n  case GmicQt::InputMode::Active:\n    if (_GIMP_LAYER_IS_NOT_NULL(active_layer_id) && !gimp_item_is_group(_GIMP_ITEM(active_layer_id))) {\n      inputLayers.push_back(active_layer_id);\n    }\n    break;\n  case GmicQt::InputMode::All:\n    inputLayers.assign(layers, end_layers);\n    break;\n  case GmicQt::InputMode::ActiveAndBelow:\n    if (_GIMP_LAYER_IS_NOT_NULL(active_layer_id) && !gimp_item_is_group(_GIMP_ITEM(active_layer_id))) {\n      inputLayers.push_back(active_layer_id);\n      _GimpLayerPtr * p = std::find(layers, end_layers, active_layer_id);\n      if (p < end_layers - 1) {\n        inputLayers.push_back(*(p + 1));\n      }\n    }\n    break;\n  case GmicQt::InputMode::ActiveAndAbove:\n    if (_GIMP_LAYER_IS_NOT_NULL(active_layer_id) && !gimp_item_is_group(_GIMP_ITEM(active_layer_id))) {\n      _GimpLayerPtr * p = std::find(layers, end_layers, active_layer_id);\n      if (p > layers) {\n        inputLayers.push_back(*(p - 1));\n      }\n      inputLayers.push_back(active_layer_id);\n    }\n    break;\n  case GmicQt::InputMode::AllVisible:\n  case GmicQt::InputMode::AllInvisible: {\n    bool visibility = (mode == GmicQt::InputMode::AllVisible);\n    for (int i = 0; i < layersCount; ++i) {\n      if (_gimp_item_get_visible(_GIMP_ITEM(layers[i])) == visibility) {\n        inputLayers.push_back(layers[i]);\n      }\n    }\n  } break;\n  default:\n    break;\n  }\n\n  // Retrieve image list\n  images.assign(inputLayers.size());\n  imageNames.assign(inputLayers.size());\n  inputLayerDimensions.assign(inputLayers.size(), 4);\n  gint rgn_x, rgn_y, rgn_width, rgn_height;\n\n  gboolean isSelection = 0;\n  gint selX1 = 0, selY1 = 0, selX2 = 0, selY2 = 0;\n  if (!gimp_selection_bounds(gmic_qt_gimp_image_id, &isSelection, &selX1, &selY1, &selX2, &selY2)) {\n    isSelection = 0;\n    selX1 = 0;\n    selY1 = 0;\n  }\n\n  cimglist_for(images, l)\n  {\n    if (!gimp_item_is_valid(_GIMP_ITEM(inputLayers[l]))) {\n      continue;\n    }\n    if (!gimp_drawable_mask_intersect(_GIMP_DRAWABLE(inputLayers[l]), &rgn_x, &rgn_y, &rgn_width, &rgn_height)) {\n      inputLayerDimensions(l, 0) = 0;\n      inputLayerDimensions(l, 1) = 0;\n      inputLayerDimensions(l, 2) = 0;\n      inputLayerDimensions(l, 3) = 0;\n      continue;\n    }\n    const int spectrum = (gimp_drawable_is_rgb(_GIMP_DRAWABLE(inputLayers[l])) ? 3 : 1) + (gimp_drawable_has_alpha(_GIMP_DRAWABLE(inputLayers[l])) ? 1 : 0);\n\n    const int dw = static_cast<int>(_gimp_drawable_get_width(_GIMP_DRAWABLE(inputLayers[l])));\n    const int dh = static_cast<int>(_gimp_drawable_get_height(_GIMP_DRAWABLE(inputLayers[l])));\n    const int ix = static_cast<int>(entireImage ? rgn_x : (rgn_x + x * rgn_width));\n    const int iy = static_cast<int>(entireImage ? rgn_y : (rgn_y + y * rgn_height));\n    const int iw = entireImage ? rgn_width : std::min(dw - ix, static_cast<int>(1 + std::ceil(rgn_width * width)));\n    const int ih = entireImage ? rgn_height : std::min(dh - iy, static_cast<int>(1 + std::ceil(rgn_height * height)));\n\n    if (entireImage) {\n      inputLayerDimensions(l, 0) = rgn_width;\n      inputLayerDimensions(l, 1) = rgn_height;\n    } else {\n      inputLayerDimensions(l, 0) = iw;\n      inputLayerDimensions(l, 1) = ih;\n    }\n    inputLayerDimensions(l, 2) = 1;\n    inputLayerDimensions(l, 3) = spectrum;\n\n    const float opacity = gimp_layer_get_opacity(inputLayers[l]);\n    const GimpLayerModeEffects blendMode = gimp_layer_get_mode(inputLayers[l]);\n    int xPos = 0;\n    int yPos = 0;\n    if (isSelection) {\n      xPos = selX1;\n      yPos = selY1;\n    } else {\n      _gimp_drawable_get_offsets(_GIMP_DRAWABLE(inputLayers[l]), &xPos, &yPos);\n    }\n    QString noParenthesisName(gimp_item_get_name(_GIMP_ITEM(inputLayers[l])));\n    noParenthesisName.replace(QChar('('), QChar(21)).replace(QChar(')'), QChar(22));\n\n    QString name = QString(\"mode(%1),opacity(%2),pos(%3,%4),name(%5)\").arg(blendingMode2String(blendMode)).arg(opacity).arg(xPos).arg(yPos).arg(noParenthesisName);\n    QByteArray ba = name.toUtf8();\n    gmic_image<char>::string(ba.constData()).move_to(imageNames[l]);\n#if !GIMP_CHECK_VERSION(2, 9, 0)\n    GimpDrawable * drawable = gimp_drawable_get(inputLayers[l]);\n    GimpPixelRgn region;\n    gimp_pixel_rgn_init(&region, drawable, ix, iy, iw, ih, false, false);\n    gmic_image<unsigned char> img(spectrum, iw, ih);\n    gimp_pixel_rgn_get_rect(&region, img, ix, iy, iw, ih);\n    gimp_drawable_detach(drawable);\n    img.permute_axes(\"yzcx\");\n#else\n    GeglRectangle rect;\n    gegl_rectangle_set(&rect, ix, iy, iw, ih);\n    GeglBuffer * buffer = gimp_drawable_get_buffer(_GIMP_DRAWABLE(inputLayers[l]));\n    const char * const format = spectrum == 1 ? \"Y' \" gmic_pixel_type_str : spectrum == 2 ? \"Y'A \" gmic_pixel_type_str : spectrum == 3 ? \"R'G'B' \" gmic_pixel_type_str : \"R'G'B'A \" gmic_pixel_type_str;\n    gmic_image<float> img(spectrum, iw, ih);\n    gegl_buffer_get(buffer, &rect, 1, babl_format(format), img.data(), 0, GEGL_ABYSS_NONE);\n    (img *= 255).permute_axes(\"yzcx\");\n    g_object_unref(buffer);\n#endif\n    img.move_to(images[l]);\n  }\n}\n\nvoid outputImages(gmic_list<gmic_pixel_type> & images, const gmic_list<char> & imageNames, GmicQt::OutputMode outputMode)\n{\n  // Output modes in original gmic_gimp_gtk : 0/Replace 1/New layer 2/New active layer  3/New image\n\n  // spectrum to GIMP image types conversion table\n  GimpImageType spectrum2gimpImageTypes[5] = {GIMP_INDEXED_IMAGE, // (unused)\n                                              GIMP_GRAY_IMAGE, GIMP_GRAYA_IMAGE, GIMP_RGB_IMAGE, GIMP_RGBA_IMAGE};\n\n  // Get output layers dimensions and check if input/output layers have compatible dimensions.\n  unsigned int max_spectrum = 0;\n  struct Position {\n    gint x, y;\n    Position() : x(0), y(0) {}\n  } top_left, bottom_right;\n  cimglist_for(images, l)\n  {\n    if (images[l].is_empty()) {\n      images.remove(l--);\n      continue;\n    } // Discard possible empty images.\n\n    bottom_right.x = std::max(bottom_right.x, (gint)images[l]._width);\n    bottom_right.y = std::max(bottom_right.y, (gint)images[l]._height);\n    if (images[l]._spectrum > max_spectrum) {\n      max_spectrum = images[l]._spectrum;\n    }\n  }\n\n  int image_nb_layers = 0;\n  get_gimp_layers_flat_list(gmic_qt_gimp_image_id, &image_nb_layers);\n  unsigned int image_width = 0, image_height = 0;\n  if (inputLayers.size()) {\n    image_width = _gimp_image_get_width(gmic_qt_gimp_image_id);\n    image_height = _gimp_image_get_height(gmic_qt_gimp_image_id);\n  }\n\n  int is_selection = 0, sel_x0 = 0, sel_y0 = 0, sel_x1 = 0, sel_y1 = 0;\n  if (!gimp_selection_bounds(gmic_qt_gimp_image_id, &is_selection, &sel_x0, &sel_y0, &sel_x1, &sel_y1)) {\n    is_selection = 0;\n  } else if (outputMode == GmicQt::OutputMode::InPlace || outputMode == GmicQt::OutputMode::NewImage) {\n    sel_x0 = sel_y0 = 0;\n  }\n\n  bool is_compatible_dimensions = (images.size() == inputLayers.size());\n  for (unsigned int p = 0; p < images.size() && is_compatible_dimensions; ++p) {\n    const gmic_library::gmic_image<gmic_pixel_type> & img = images[p];\n    const bool source_is_alpha = (inputLayerDimensions(p, 3) == 2 || inputLayerDimensions(p, 3) >= 4);\n    const bool dest_is_alpha = (img.spectrum() == 2 || img.spectrum() >= 4);\n    if (dest_is_alpha && !source_is_alpha) {\n      gimp_layer_add_alpha(inputLayers[p]);\n      ++inputLayerDimensions(p, 3);\n    }\n    if (img.width() != inputLayerDimensions(p, 0) || img.height() != inputLayerDimensions(p, 1)) {\n      is_compatible_dimensions = false;\n    }\n  }\n\n  // Transfer output layers back into GIMP.\n  GimpLayerModeEffects layer_blendmode = GIMP_NORMAL_MODE;\n  gint layer_posx = 0, layer_posy = 0;\n  double layer_opacity = 100;\n  gmic_library::gmic_image<char> layer_name;\n\n  if (outputMode == GmicQt::OutputMode::InPlace) {\n    gint rgn_x, rgn_y, rgn_width, rgn_height;\n    gimp_image_undo_group_start(gmic_qt_gimp_image_id);\n    if (is_compatible_dimensions) { // Direct replacement of the layer data.\n      for (unsigned int p = 0; p < images.size(); ++p) {\n        layer_blendmode = gimp_layer_get_mode(inputLayers[p]);\n        layer_opacity = gimp_layer_get_opacity(inputLayers[p]);\n        _gimp_drawable_get_offsets(_GIMP_DRAWABLE(inputLayers[p]), &layer_posx, &layer_posy);\n        gmic_library::gmic_image<char>::string(gimp_item_get_name(_GIMP_ITEM(inputLayers[p]))).move_to(layer_name);\n        get_output_layer_props(imageNames[p], layer_blendmode, layer_opacity, layer_posx, layer_posy, layer_name);\n        gmic_library::gmic_image<gmic_pixel_type> & img = images[p];\n        GmicQt::calibrateImage(img, inputLayerDimensions(p, 3), false);\n        if (gimp_drawable_mask_intersect(_GIMP_DRAWABLE(inputLayers[p]), &rgn_x, &rgn_y, &rgn_width, &rgn_height)) {\n#if !GIMP_CHECK_VERSION(2, 9, 0)\n          GimpDrawable * drawable = gimp_drawable_get(inputLayers[p]);\n          GimpPixelRgn region;\n          gimp_pixel_rgn_init(&region, drawable, rgn_x, rgn_y, rgn_width, rgn_height, true, true);\n          image2uchar(img);\n          gimp_pixel_rgn_set_rect(&region, (guchar *)img.data(), rgn_x, rgn_y, rgn_width, rgn_height);\n          gimp_drawable_flush(drawable);\n          gimp_drawable_merge_shadow(inputLayers[p], true);\n          gimp_drawable_update(inputLayers[p], rgn_x, rgn_y, rgn_width, rgn_height);\n          gimp_drawable_detach(drawable);\n#else\n          GeglRectangle rect;\n          gegl_rectangle_set(&rect, rgn_x, rgn_y, rgn_width, rgn_height);\n          GeglBuffer * buffer = gimp_drawable_get_shadow_buffer(_GIMP_DRAWABLE(inputLayers[p]));\n          const char * const format = img.spectrum() == 1 ? \"Y' float\" : img.spectrum() == 2 ? \"Y'A float\" : img.spectrum() == 3 ? \"R'G'B' float\" : \"R'G'B'A float\";\n          (img /= 255).permute_axes(\"cxyz\");\n          gegl_buffer_set(buffer, &rect, 0, babl_format(format), img.data(), 0);\n          g_object_unref(buffer);\n          gimp_drawable_merge_shadow(_GIMP_DRAWABLE(inputLayers[p]), true);\n          gimp_drawable_update(_GIMP_DRAWABLE(inputLayers[p]), 0, 0, img.width(), img.height());\n#endif\n          gimp_layer_set_mode(inputLayers[p], layer_blendmode);\n          gimp_layer_set_opacity(inputLayers[p], layer_opacity);\n          if (!is_selection) {\n            gimp_layer_set_offsets(inputLayers[p], layer_posx, layer_posy);\n          } else {\n#if !GIMP_CHECK_VERSION(2, 9, 0)\n            gimp_layer_translate(inputLayers[p], 0, 0);\n#else\n            gimp_item_transform_translate(_GIMP_ITEM(inputLayers[p]), 0, 0);\n#endif\n          }\n          if (layer_name) {\n            _GIMP_ITEM_SET_NAME(_GIMP_ITEM(inputLayers[p]), layer_name);\n          }\n        }\n        img.assign();\n      }\n    } else { // Indirect replacement: create new layers.\n      gimp_selection_none(gmic_qt_gimp_image_id);\n      const int layer_pos = _gimp_image_get_item_position(gmic_qt_gimp_image_id, _GIMP_ITEM(inputLayers[0]));\n      top_left.x = top_left.y = 0;\n      bottom_right.x = bottom_right.y = 0;\n      for (unsigned int p = 0; p < images.size(); ++p) {\n        if (images[p]) {\n          layer_posx = layer_posy = 0;\n          if (p < inputLayers.size()) {\n            layer_blendmode = gimp_layer_get_mode(inputLayers[p]);\n            layer_opacity = gimp_layer_get_opacity(inputLayers[p]);\n            if (!is_selection) {\n              _gimp_drawable_get_offsets(_GIMP_DRAWABLE(inputLayers[p]), &layer_posx, &layer_posy);\n            }\n            gmic_library::gmic_image<char>::string(gimp_item_get_name(_GIMP_ITEM(inputLayers[p]))).move_to(layer_name);\n            gimp_image_remove_layer(gmic_qt_gimp_image_id, inputLayers[p]);\n          } else {\n            layer_blendmode = GIMP_NORMAL_MODE;\n            layer_opacity = 100;\n            layer_name.assign();\n          }\n          get_output_layer_props(imageNames[p], layer_blendmode, layer_opacity, layer_posx, layer_posy, layer_name);\n          if (is_selection) {\n            layer_posx = 0;\n            layer_posy = 0;\n          }\n          top_left.x = std::min(top_left.x, layer_posx);\n          top_left.y = std::min(top_left.y, layer_posy);\n          bottom_right.x = std::max(bottom_right.x, (gint)(layer_posx + images[p]._width));\n          bottom_right.y = std::max(bottom_right.y, (gint)(layer_posy + images[p]._height));\n          gmic_library::gmic_image<gmic_pixel_type> & img = images[p];\n          if (_gimp_image_get_base_type(gmic_qt_gimp_image_id) == GIMP_GRAY) {\n            GmicQt::calibrateImage(img, (img.spectrum() == 1 || img.spectrum() == 3) ? 1 : 2, false);\n          } else {\n            GmicQt::calibrateImage(img, (img.spectrum() == 1 || img.spectrum() == 3) ? 3 : 4, false);\n          }\n          _GimpLayerPtr layer_id = gimp_layer_new(gmic_qt_gimp_image_id, nullptr, img.width(), img.height(), spectrum2gimpImageTypes[std::min(img.spectrum(), 4)], layer_opacity, layer_blendmode);\n          gimp_layer_set_offsets(layer_id, layer_posx, layer_posy);\n          if (layer_name) {\n            _GIMP_ITEM_SET_NAME(_GIMP_ITEM(layer_id), layer_name);\n          }\n          gimp_image_insert_layer(gmic_qt_gimp_image_id, layer_id, _GIMP_NULL_LAYER, layer_pos + p);\n\n#if !GIMP_CHECK_VERSION(2, 9, 0)\n          GimpDrawable * drawable = gimp_drawable_get(layer_id);\n          GimpPixelRgn region;\n          gimp_pixel_rgn_init(&region, drawable, 0, 0, drawable->width, drawable->height, true, true);\n          image2uchar(img);\n          gimp_pixel_rgn_set_rect(&region, (guchar *)img.data(), 0, 0, img.width(), img.height());\n          gimp_drawable_flush(drawable);\n          gimp_drawable_merge_shadow(layer_id, true);\n          gimp_drawable_update(layer_id, 0, 0, drawable->width, drawable->height);\n          gimp_drawable_detach(drawable);\n#else\n          GeglBuffer * buffer = gimp_drawable_get_shadow_buffer(_GIMP_DRAWABLE(layer_id));\n          const char * const format = img.spectrum() == 1 ? \"Y' float\" : img.spectrum() == 2 ? \"Y'A float\" : img.spectrum() == 3 ? \"R'G'B' float\" : \"R'G'B'A float\";\n          (img /= 255).permute_axes(\"cxyz\");\n          gegl_buffer_set(buffer, NULL, 0, babl_format(format), img.data(), 0);\n          g_object_unref(buffer);\n          gimp_drawable_merge_shadow(_GIMP_DRAWABLE(layer_id), true);\n          gimp_drawable_update(_GIMP_DRAWABLE(layer_id), 0, 0, img.width(), img.height());\n#endif\n          img.assign();\n        }\n      }\n      const unsigned int max_width = bottom_right.x - top_left.x;\n      const unsigned int max_height = bottom_right.y - top_left.y;\n      for (unsigned int p = images._width; p < inputLayers.size(); ++p) {\n        gimp_image_remove_layer(gmic_qt_gimp_image_id, inputLayers[p]);\n      }\n      if ((unsigned int)image_nb_layers == inputLayers.size()) {\n        gimp_image_resize(gmic_qt_gimp_image_id, max_width, max_height, -top_left.x, -top_left.y);\n      } else {\n        gimp_image_resize(gmic_qt_gimp_image_id, std::max(image_width, max_width), std::max(image_height, max_height), 0, 0);\n      }\n    }\n    gimp_image_undo_group_end(gmic_qt_gimp_image_id);\n  } else if (outputMode == GmicQt::OutputMode::NewActiveLayers || outputMode == GmicQt::OutputMode::NewLayers) {\n#if GIMP_CHECK_VERSION(2, 99, 12)\n    GList * selected_layers = gimp_image_list_selected_layers(gmic_qt_gimp_image_id);\n    GList * first_layer = g_list_first(selected_layers);\n    _GimpLayerPtr active_layer_id = (_GimpLayerPtr)first_layer->data;\n#else\n    _GimpLayerPtr active_layer_id = gimp_image_get_active_layer(gmic_qt_gimp_image_id);\n#endif\n    if (_GIMP_LAYER_IS_NOT_NULL(active_layer_id)) {\n      gimp_image_undo_group_start(gmic_qt_gimp_image_id);\n      _GimpLayerPtr top_layer_id = _gimp_top_layer;\n      _GimpLayerPtr layer_id = _gimp_top_layer;\n      top_left.x = top_left.y = 0;\n      bottom_right.x = bottom_right.y = 0;\n      for (unsigned int p = 0; p < images.size(); ++p) {\n        if (images[p]) {\n          layer_blendmode = GIMP_NORMAL_MODE;\n          layer_opacity = 100;\n          layer_posx = layer_posy = 0;\n          if (inputLayers.size() == 1) {\n            if (!is_selection) {\n              _gimp_drawable_get_offsets(_GIMP_DRAWABLE(active_layer_id), &layer_posx, &layer_posy);\n            }\n            gmic_library::gmic_image<char>::string(gimp_item_get_name(_GIMP_ITEM(active_layer_id))).move_to(layer_name);\n          } else {\n            layer_name.assign();\n          }\n          get_output_layer_props(imageNames[p], layer_blendmode, layer_opacity, layer_posx, layer_posy, layer_name);\n          top_left.x = std::min(top_left.x, layer_posx);\n          top_left.y = std::min(top_left.y, layer_posy);\n          bottom_right.x = std::max(bottom_right.x, (gint)(layer_posx + images[p]._width));\n          bottom_right.y = std::max(bottom_right.y, (gint)(layer_posy + images[p]._height));\n\n          gmic_library::gmic_image<gmic_pixel_type> & img = images[p];\n          if (_gimp_image_get_base_type(gmic_qt_gimp_image_id) == GIMP_GRAY) {\n            GmicQt::calibrateImage(img, !is_selection && (img.spectrum() == 1 || img.spectrum() == 3) ? 1 : 2, false);\n          } else {\n            GmicQt::calibrateImage(img, !is_selection && (img.spectrum() == 1 || img.spectrum() == 3) ? 3 : 4, false);\n          }\n          layer_id = gimp_layer_new(gmic_qt_gimp_image_id, nullptr, img.width(), img.height(), spectrum2gimpImageTypes[std::min(img.spectrum(), 4)], layer_opacity, layer_blendmode);\n          if (!p) {\n            top_layer_id = layer_id;\n          }\n          gimp_layer_set_offsets(layer_id, layer_posx, layer_posy);\n          if (layer_name) {\n            _GIMP_ITEM_SET_NAME(_GIMP_ITEM(layer_id), layer_name);\n          }\n          gimp_image_insert_layer(gmic_qt_gimp_image_id, layer_id, _GIMP_NULL_LAYER, p);\n\n#if !GIMP_CHECK_VERSION(2, 9, 0)\n          GimpDrawable * drawable = gimp_drawable_get(layer_id);\n          GimpPixelRgn region;\n          gimp_pixel_rgn_init(&region, drawable, 0, 0, drawable->width, drawable->height, true, true);\n          image2uchar(img);\n          gimp_pixel_rgn_set_rect(&region, (guchar *)img.data(), 0, 0, img.width(), img.height());\n          gimp_drawable_flush(drawable);\n          gimp_drawable_merge_shadow(layer_id, true);\n          gimp_drawable_update(layer_id, 0, 0, drawable->width, drawable->height);\n          gimp_drawable_detach(drawable);\n#else\n          GeglBuffer * buffer = gimp_drawable_get_shadow_buffer(_GIMP_DRAWABLE(layer_id));\n          const char * const format = img.spectrum() == 1 ? \"Y' float\" : img.spectrum() == 2 ? \"Y'A float\" : img.spectrum() == 3 ? \"R'G'B' float\" : \"R'G'B'A float\";\n          (img /= 255).permute_axes(\"cxyz\");\n          gegl_buffer_set(buffer, NULL, 0, babl_format(format), img.data(), 0);\n          g_object_unref(buffer);\n          gimp_drawable_merge_shadow(_GIMP_DRAWABLE(layer_id), true);\n          gimp_drawable_update(_GIMP_DRAWABLE(layer_id), 0, 0, img.width(), img.height());\n#endif\n          img.assign();\n        }\n        const unsigned int max_width = bottom_right.x - top_left.x;\n        const unsigned int max_height = bottom_right.y - top_left.y;\n        const unsigned int Mw = std::max(image_width, max_width);\n        const unsigned int Mh = std::max(image_height, max_height);\n        if (Mw && Mh) {\n          gimp_image_resize(gmic_qt_gimp_image_id, Mw, Mh, -top_left.x, -top_left.y);\n        }\n#if GIMP_CHECK_VERSION(2, 99, 12)\n        GimpLayer * selected_layer;\n        if (outputMode == GmicQt::OutputMode::NewLayers) {\n          selected_layer = active_layer_id;\n        } else {\n          selected_layer = top_layer_id;\n        }\n        gimp_image_set_selected_layers(gmic_qt_gimp_image_id, 1, (const GimpLayer **)&selected_layer);\n#else\n        if (outputMode == GmicQt::OutputMode::NewLayers) {\n          gimp_image_set_active_layer(gmic_qt_gimp_image_id, active_layer_id);\n        } else {\n          gimp_image_set_active_layer(gmic_qt_gimp_image_id, top_layer_id);\n        }\n#endif\n      }\n      gimp_image_undo_group_end(gmic_qt_gimp_image_id);\n    }\n  } else if (outputMode == GmicQt::OutputMode::NewImage && images.size()) {\n#if GIMP_CHECK_VERSION(2, 99, 12)\n    GList * selected_layers = gimp_image_list_selected_layers(gmic_qt_gimp_image_id);\n    GList * first = g_list_first(selected_layers);\n    _GimpLayerPtr active_layer_id = (_GimpLayerPtr)first->data;\n#else\n    _GimpLayerPtr active_layer_id = gimp_image_get_active_layer(gmic_qt_gimp_image_id);\n#endif\n    const unsigned int max_width = (unsigned int)bottom_right.x;\n    const unsigned int max_height = (unsigned int)bottom_right.y;\n    if (_GIMP_LAYER_IS_NOT_NULL(active_layer_id)) {\n#if !GIMP_CHECK_VERSION(2, 9, 0)\n      _GimpImagePtr nimage_id = gimp_image_new(max_width, max_height, max_spectrum <= 2 ? GIMP_GRAY : GIMP_RGB);\n#else\n      _GimpImagePtr nimage_id = gimp_image_new_with_precision(max_width, max_height, max_spectrum <= 2 ? GIMP_GRAY : GIMP_RGB, gimp_image_get_precision(gmic_qt_gimp_image_id));\n#endif\n      gimp_image_undo_group_start(nimage_id);\n      for (unsigned int p = 0; p < images.size(); ++p) {\n        if (images[p]) {\n          layer_blendmode = GIMP_NORMAL_MODE;\n          layer_opacity = 100;\n          layer_posx = layer_posy = 0;\n          if (inputLayers.size() == 1) {\n            if (!is_selection) {\n              _gimp_drawable_get_offsets(_GIMP_DRAWABLE(active_layer_id), &layer_posx, &layer_posy);\n            }\n            gmic_library::gmic_image<char>::string(gimp_item_get_name(_GIMP_ITEM(active_layer_id))).move_to(layer_name);\n          } else {\n            layer_name.assign();\n          }\n          get_output_layer_props(imageNames[p], layer_blendmode, layer_opacity, layer_posx, layer_posy, layer_name);\n          if (is_selection) {\n            layer_posx = 0;\n            layer_posy = 0;\n          }\n          gmic_library::gmic_image<gmic_pixel_type> & img = images[p];\n          if (_gimp_image_get_base_type(nimage_id) != GIMP_GRAY) {\n            GmicQt::calibrateImage(img, (img.spectrum() == 1 || img.spectrum() == 3) ? 3 : 4, false);\n          }\n          _GimpLayerPtr layer_id = gimp_layer_new(nimage_id, nullptr, img.width(), img.height(), spectrum2gimpImageTypes[std::min(img.spectrum(), 4)], layer_opacity, layer_blendmode);\n          gimp_layer_set_offsets(layer_id, layer_posx, layer_posy);\n          if (layer_name) {\n            _GIMP_ITEM_SET_NAME(_GIMP_ITEM(layer_id), layer_name);\n          }\n          gimp_image_insert_layer(nimage_id, layer_id, _GIMP_NULL_LAYER, p);\n\n#if !GIMP_CHECK_VERSION(2, 9, 0)\n          GimpDrawable * drawable = gimp_drawable_get(layer_id);\n          GimpPixelRgn region;\n          gimp_pixel_rgn_init(&region, drawable, 0, 0, drawable->width, drawable->height, true, true);\n          image2uchar(img);\n          gimp_pixel_rgn_set_rect(&region, (guchar *)img.data(), 0, 0, img.width(), img.height());\n          gimp_drawable_flush(drawable);\n          gimp_drawable_merge_shadow(layer_id, true);\n          gimp_drawable_update(layer_id, 0, 0, drawable->width, drawable->height);\n          gimp_drawable_detach(drawable);\n#else\n          GeglBuffer * buffer = gimp_drawable_get_shadow_buffer(_GIMP_DRAWABLE(layer_id));\n          const char * const format = img.spectrum() == 1 ? \"Y' float\" : img.spectrum() == 2 ? \"Y'A float\" : img.spectrum() == 3 ? \"R'G'B' float\" : \"R'G'B'A float\";\n          (img /= 255).permute_axes(\"cxyz\");\n          gegl_buffer_set(buffer, NULL, 0, babl_format(format), img.data(), 0);\n          g_object_unref(buffer);\n          gimp_drawable_merge_shadow(_GIMP_DRAWABLE(layer_id), true);\n          gimp_drawable_update(_GIMP_DRAWABLE(layer_id), 0, 0, img.width(), img.height());\n#endif\n          img.assign();\n        }\n      }\n      gimp_display_new(nimage_id);\n      gimp_image_undo_group_end(nimage_id);\n    }\n  }\n\n  gimp_displays_flush();\n}\n\n} // namespace GmicQtHost\n\n#if !GIMP_CHECK_VERSION(2, 99, 0)\n/*\n * 'Run' function, required by the GIMP plug-in API.\n */\nvoid gmic_qt_run(const gchar * /* name */, gint /* nparams */, const GimpParam * param, gint * nreturn_vals, GimpParam ** return_vals)\n{\n#if GIMP_CHECK_VERSION(2, 9, 0)\n  gegl_init(nullptr, nullptr);\n  gimp_plugin_enable_precision();\n#endif\n\n  GmicQt::RunParameters pluginParameters;\n  bool accepted = true;\n  static GimpParam return_values[1];\n  *return_vals = return_values;\n  *nreturn_vals = 1;\n  return_values[0].type = GIMP_PDB_STATUS;\n  int run_mode = (GimpRunMode)param[0].data.d_int32;\n  switch (run_mode) {\n  case GIMP_RUN_INTERACTIVE:\n    gmic_qt_gimp_image_id = param[1].data.d_drawable;\n    GmicQt::run(GmicQt::UserInterfaceMode::Full, //\n                GmicQt::RunParameters(),         //\n                std::list<GmicQt::InputMode>(),  //\n                std::list<GmicQt::OutputMode>(), //\n                &accepted);\n    break;\n  case GIMP_RUN_WITH_LAST_VALS:\n    gmic_qt_gimp_image_id = param[1].data.d_drawable;\n    GmicQt::run(GmicQt::UserInterfaceMode::ProgressDialog,                                                       //\n                GmicQt::lastAppliedFilterRunParameters(GmicQt::ReturnedRunParametersFlag::AfterFilterExecution), //\n                std::list<GmicQt::InputMode>(),                                                                  //\n                std::list<GmicQt::OutputMode>(),                                                                 //\n                &accepted);\n    break;\n  case GIMP_RUN_NONINTERACTIVE:\n    gmic_qt_gimp_image_id = param[1].data.d_drawable;\n    pluginParameters.command = param[5].data.d_string;\n    pluginParameters.inputMode = static_cast<GmicQt::InputMode>(param[3].data.d_int32 + (int)GmicQt::InputMode::NoInput);\n    pluginParameters.outputMode = static_cast<GmicQt::OutputMode>(param[4].data.d_int32 + (int)GmicQt::OutputMode::InPlace);\n    run(GmicQt::UserInterfaceMode::Silent, //\n        pluginParameters,                  //\n        std::list<GmicQt::InputMode>(),    //\n        std::list<GmicQt::OutputMode>(),   //\n        &accepted);\n    break;\n  }\n  return_values[0].data.d_status = accepted ? GIMP_PDB_SUCCESS : GIMP_PDB_CANCEL;\n}\n\nvoid gmic_qt_query()\n{\n  static const GimpParamDef args[] = {{GIMP_PDB_INT32, (gchar *)\"run_mode\", (gchar *)\"Interactive, non-interactive\"},\n                                      {GIMP_PDB_IMAGE, (gchar *)\"image\", (gchar *)\"Input image\"},\n                                      {GIMP_PDB_DRAWABLE, (gchar *)\"drawable\", (gchar *)\"Input drawable (unused)\"},\n                                      {GIMP_PDB_INT32, (gchar *)\"input\",\n                                       (gchar *)\"Input layers mode, when non-interactive\"\n                                                \" (0=none, 1=active, 2=all, 3=active & below, 4=active & above, 5=all visibles, 6=all invisibles)\"},\n                                      {GIMP_PDB_INT32, (gchar *)\"output\",\n                                       (gchar *)\"Output mode, when non-interactive \"\n                                                \"(0=in place,1=new layers,2=new active layers,3=new image)\"},\n                                      {GIMP_PDB_STRING, (gchar *)\"command\", (gchar *)\"G'MIC command string, when non-interactive\"}};\n\n  const char name[] = \"plug-in-gmic-qt\";\n  QByteArray blurb = QString(\"G'MIC-Qt (%1)\").arg(GmicQt::gmicVersionString()).toLatin1();\n  QByteArray path(\"G'MIC-Qt...\");\n  path.prepend(\"_\");\n  gimp_install_procedure(name,                      // name\n                         blurb.constData(),         // blurb\n                         blurb.constData(),         // help\n                         \"S\\303\\251bastien Fourey\", // author\n                         \"S\\303\\251bastien Fourey\", // copyright\n                         \"2017\",                    // date\n                         path.constData(),          // menu_path\n                         \"RGB*, GRAY*\",             // image_types\n                         GIMP_PLUGIN,               // type\n                         G_N_ELEMENTS(args),        // nparams\n                         0,                         // nreturn_vals\n                         args,                      // params\n                         nullptr);                  // return_vals\n  gimp_plugin_menu_register(name, \"<Image>/Filters\");\n}\n\nGimpPlugInInfo PLUG_IN_INFO = {nullptr, nullptr, gmic_qt_query, gmic_qt_run};\n\nMAIN()\n\n#else\n\nstatic GList * gmic_qt_query(GimpPlugIn * plug_in)\n{\n  return g_list_append(NULL, g_strdup(PLUG_IN_PROC));\n}\n\n/*\n * 'Run' function, required by the GIMP plug-in API.\n */\n#if !GIMP_CHECK_VERSION(2, 99, 7)\nstatic GimpValueArray * gmic_qt_run(GimpProcedure * procedure, GimpRunMode run_mode, GimpImage * image, GimpDrawable * drawable, const GimpValueArray * args, gpointer run_data)\n#else\n#if !GIMP_CHECK_VERSION(2, 99, 19)\nstatic GimpValueArray * gmic_qt_run(GimpProcedure * procedure, GimpRunMode run_mode, GimpImage * image, gint n_drawables, GimpDrawable ** drawables, const GimpValueArray * args, gpointer run_data)\n#else\nstatic GimpValueArray * gmic_qt_run(GimpProcedure * procedure, GimpRunMode run_mode, GimpImage * image, gint n_drawables, GimpDrawable ** drawables, GimpProcedureConfig *config, gpointer run_data)\n#endif\n#endif\n{\n  gegl_init(NULL, NULL);\n  // gimp_plugin_enable_precision(); // what is this?\n  GmicQt::RunParameters pluginParameters;\n  bool accepted = true;\n  switch (run_mode) {\n  case GIMP_RUN_INTERACTIVE:\n    gmic_qt_gimp_image_id = image;\n    GmicQt::run(GmicQt::UserInterfaceMode::Full,\n                GmicQt::RunParameters(),         //\n                std::list<GmicQt::InputMode>(),  //\n                std::list<GmicQt::OutputMode>(), //\n                &accepted);\n    break;\n  case GIMP_RUN_WITH_LAST_VALS:\n    gmic_qt_gimp_image_id = image;\n    GmicQt::run(GmicQt::UserInterfaceMode::ProgressDialog,                                                       //\n                GmicQt::lastAppliedFilterRunParameters(GmicQt::ReturnedRunParametersFlag::AfterFilterExecution), //\n                std::list<GmicQt::InputMode>(),                                                                  //\n                std::list<GmicQt::OutputMode>(),                                                                 //\n                &accepted);\n    break;\n  case GIMP_RUN_NONINTERACTIVE:\n    gmic_qt_gimp_image_id = image;\n#if !GIMP_CHECK_VERSION(2, 99, 19)\n    pluginParameters.command = g_value_get_string(gimp_value_array_index(args, 2));\n    pluginParameters.inputMode = static_cast<GmicQt::InputMode>(g_value_get_int(gimp_value_array_index(args, 0)) + (int)GmicQt::InputMode::NoInput);\n    pluginParameters.outputMode = static_cast<GmicQt::OutputMode>(g_value_get_int(gimp_value_array_index(args, 1)) + (int)GmicQt::OutputMode::InPlace);\n#else\n    char *command;\n    int inputMode;\n    int outputMode;\n    g_object_get(config,\n\t\t \"command\", &command,\n\t\t \"input\", &inputMode,\n\t\t \"output\", &outputMode,\n\t\t NULL);\n    pluginParameters.command = command;\n    pluginParameters.inputMode = (GmicQt::InputMode)inputMode;\n    pluginParameters.outputMode = (GmicQt::OutputMode)outputMode;\n    g_free(command);\n#endif\n    GmicQt::run(GmicQt::UserInterfaceMode::Silent, //\n                pluginParameters,                  //\n                std::list<GmicQt::InputMode>(),    //\n                std::list<GmicQt::OutputMode>(),   //\n                &accepted);\n    break;\n  }\n  return gimp_procedure_new_return_values(procedure, accepted ? GIMP_PDB_SUCCESS : GIMP_PDB_CANCEL, NULL);\n}\n\nstatic GimpProcedure * gmic_qt_create_procedure(GimpPlugIn * plug_in, const gchar * name)\n{\n  GimpProcedure * procedure = NULL;\n\n  if (strcmp(name, PLUG_IN_PROC) == 0) {\n    procedure = gimp_image_procedure_new(plug_in, name, GIMP_PDB_PROC_TYPE_PLUGIN, gmic_qt_run, NULL, NULL);\n\n    gimp_procedure_set_image_types(procedure, \"RGB*, GRAY*\");\n\n    QByteArray path(\"G'MIC-Qt...\");\n    path.prepend(\"_\");\n    gimp_procedure_set_menu_label(procedure, path.constData());\n    gimp_procedure_add_menu_path(procedure, \"<Image>/Filters\");\n\n    QByteArray blurb = QString(\"G'MIC-Qt (%1)\").arg(GmicQt::gmicVersionString()).toLatin1();\n    gimp_procedure_set_documentation(procedure,\n                                     blurb.constData(), // blurb\n                                     blurb.constData(), // help\n                                     name);             // help_id\n    gimp_procedure_set_attribution(procedure,\n                                   \"S\\303\\251bastien Fourey\", // author\n                                   \"S\\303\\251bastien Fourey\", // copyright\n                                   \"2017\");                   // date\n\n#if GIMP_CHECK_VERSION(2, 99, 19)\n   gimp_procedure_add_int_argument(procedure,\n\t\t\t\t   \"input\",                                                                                                                                   // name\n\t\t\t\t   \"input\",                                                                                                                                   // nick\n\t\t\t\t   \"Input layers mode, when non-interactive (0=none, 1=active, 2=all, 3=active & below, 4=active & above, 5=all visibles, 6=all invisibles)\", // blurb\n\t\t\t\t   0,                                                                                                                                         // min\n\t\t\t\t   6,                                                                                                                                         // max\n\t\t\t\t   0,                                                                                                                                         // default\n\t\t\t\t   G_PARAM_READWRITE);                                                                                                                        // flags\n\n    gimp_procedure_add_int_argument(procedure,\n\t\t\t\t    \"output\",                                                                                      // name\n\t\t\t\t    \"output\",                                                                                      // nick\n\t\t\t\t    \"Output mode, when non-interactive (0=in place,1=new layers,2=new active layers,3=new image)\", // blurb\n\t\t\t\t    0,                                                                                             // min\n\t\t\t\t    3,                                                                                             // max\n\t\t\t\t    0,                                                                                             // default\n\t\t\t\t    G_PARAM_READWRITE);                                                                            // flags\n\n    gimp_procedure_add_string_argument(procedure,\n\t\t\t\t       \"command\",                                    // name\n\t\t\t\t       \"command\",                                    // nick\n\t\t\t\t       \"G'MIC command string, when non-interactive\", // blurb\n\t\t\t\t       \"\",                                           // default\n\t\t\t\t       G_PARAM_READWRITE);                           // flags\n#else\n    GIMP_PROC_ARG_INT(procedure,\n                      \"input\",                                                                                                                                   // name\n                      \"input\",                                                                                                                                   // nick\n                      \"Input layers mode, when non-interactive (0=none, 1=active, 2=all, 3=active & below, 4=active & above, 5=all visibles, 6=all invisibles)\", // blurb\n                      0,                                                                                                                                         // min\n                      6,                                                                                                                                         // max\n                      0,                                                                                                                                         // default\n                      G_PARAM_READWRITE);                                                                                                                        // flags\n\n    GIMP_PROC_ARG_INT(procedure,\n                      \"output\",                                                                                      // name\n                      \"output\",                                                                                      // nick\n                      \"Output mode, when non-interactive (0=in place,1=new layers,2=new active layers,3=new image)\", // blurb\n                      0,                                                                                             // min\n                      3,                                                                                             // max\n                      0,                                                                                             // default\n                      G_PARAM_READWRITE);                                                                            // flags\n\n    GIMP_PROC_ARG_STRING(procedure,\n                         \"command\",                                    // name\n                         \"command\",                                    // nick\n                         \"G'MIC command string, when non-interactive\", // blurb\n                         \"\",                                           // default\n                         G_PARAM_READWRITE);                           // flags\n#endif\n  }\n\n  return procedure;\n}\n#endif\n"
  },
  {
    "path": "src/Host/GmicQtHost.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file GmicQtHost.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_HOST_H\n#define GMIC_QT_HOST_H\n#include <QString>\n#include \"GmicQt.h\"\n\nnamespace gmic_library\n{\ntemplate <typename T> struct gmic_image;\ntemplate <typename T> struct gmic_list;\n} // namespace gmic_library\n\nnamespace GmicQtHost\n{\nextern const QString ApplicationName;\nextern const char * const ApplicationShortname;\nextern const bool DarkThemeIsDefault;\n\n/**\n * @brief Get the largest width and largest height among all the layers according to the input mode (\\see GmicQt.h).\n *\n * @param[out] width\n * @param[out] height\n */\nvoid getLayersExtent(int * width, int * height, GmicQt::InputMode);\n\n/**\n * @brief Get a list of (cropped) image layers from host software.\n *\n *  Caution: returned images should contain \"entire pixels\" with respect to\n *  to the normalized coordinates. Hence, integer coordinates should be computed\n *  as (x,y,w,h) with :\n *   x = static_cast<int>(std::floor(x * input_image_width));\n *   w = std::min(input_image_width - x,static_cast<int>(1+std::ceil(width * input_image_width)));\n *\n * @param[out] images list\n * @param[out] imageNames Per layer description strings (position, opacity, etc.)\n * @param x Top-left corner normalized x coordinate w.r.t. image/extends width (i.e., in [0,1])\n * @param y Top-left corner normalized y coordinate w.r.t. image/extends width (i.e., in [0,1])\n * @param width Normalized width of the layers w.r.t. image/extends width\n * @param height Normalized height of the layers w.r.t. image/extends height\n * @param mode Input mode\n */\nvoid getCroppedImages(gmic_library::gmic_list<gmic_pixel_type> & images, //\n                      gmic_library::gmic_list<char> & imageNames,        //\n                      double x,                                         //\n                      double y,                                         //\n                      double width,                                     //\n                      double height,                                    //\n                      GmicQt::InputMode mode);\n\n/**\n * @brief Send a list of new image layers to the host application according to an output mode (\\see GmicQt.h)\n *\n * @param images List of layers to be sent to the host application. May be modified.\n * @param imageNames Layers labels\n * @param mode Output mode (\\see GmicQt.h)\n */\nvoid outputImages(gmic_library::gmic_list<gmic_pixel_type> & images, const gmic_library::gmic_list<char> & imageNames, GmicQt::OutputMode mode);\n\n/**\n * @brief Apply a color profile to a given image\n *\n * @param [in,out] images An image\n */\nvoid applyColorProfile(gmic_library::gmic_image<gmic_pixel_type> & images);\n\n/**\n * @brief Display a message in the host application.\n *        This function is only used if the plugin is launched using the UserInterfaceMode::Silent mode.\n *        If a given plugin implementation never calls the latter function, show_message() can do nothing!\n *\n * @param message A message to be displayed by the host application\n */\nvoid showMessage(const char * message);\n\n} // namespace GmicQtHost\n\n#endif // GMIC_QT_HOST_H\n"
  },
  {
    "path": "src/Host/None/ImageDialog.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ImageDialog.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"Host/None/ImageDialog.h\"\n#include <QDebug>\n#include <QFileDialog>\n#include <QFileInfo>\n#include <QImageWriter>\n#include <QMessageBox>\n#include <QString>\n#include <QStringList>\n#include \"Common.h\"\n#include \"JpegQualityDialog.h\"\n#include \"Settings.h\"\n#include \"gmic.h\"\n\nnamespace gmic_qt_standalone\n{\n\nImageView::ImageView(QWidget * parent) : QWidget(parent) {}\n\nvoid ImageView::setImage(const gmic_library::gmic_image<gmic_pixel_type> & image)\n{\n  GmicQt::convertGmicImageToQImage(image, _image);\n  setMinimumSize(std::min(640, image.width()), std::min(480, image.height()));\n}\n\nvoid ImageView::setImage(const QImage & image)\n{\n  _image = image;\n  setMinimumSize(std::min(640, image.width()), std::min(480, image.height()));\n}\n\nbool ImageView::save(const QString & filename, int quality)\n{\n  QString ext = QFileInfo(filename).suffix().toLower();\n  if ((ext == \"jpg\" || ext == \"jpeg\") && (quality == ImageDialog::UNSPECIFIED_JPEG_QUALITY)) {\n    quality = JpegQualityDialog::ask(dynamic_cast<QWidget *>(parent()), -1);\n    if (quality == ImageDialog::UNSPECIFIED_JPEG_QUALITY) {\n      return false;\n    }\n  }\n  if (!_image.save(filename, nullptr, quality)) {\n    QMessageBox::critical(this, tr(\"Error\"), tr(\"Could not write image file %1\").arg(filename));\n    return false;\n  }\n  return true;\n}\n\nImageDialog::ImageDialog(QWidget * parent) : QDialog(parent)\n{\n  setWindowTitle(tr(\"G'MIC-Qt filter output\"));\n  _jpegQuality = UNSPECIFIED_JPEG_QUALITY;\n  auto vbox = new QVBoxLayout(this);\n\n  _tabWidget = new QTabWidget(this);\n  vbox->addWidget(_tabWidget);\n\n  _tabWidget->setElideMode(Qt::ElideRight);\n\n  auto hbox = new QHBoxLayout;\n  vbox->addLayout(hbox);\n  _closeButton = new QPushButton(tr(\"Close\"));\n  connect(_closeButton, &QPushButton::clicked, this, &ImageDialog::onCloseClicked);\n  hbox->addWidget(_closeButton);\n  _saveButton = new QPushButton(tr(\"Save as...\"));\n  connect(_saveButton, &QPushButton::clicked, this, &ImageDialog::onSaveAs);\n  hbox->addWidget(_saveButton);\n}\n\nvoid ImageDialog::addImage(const gmic_library::gmic_image<float> & image, const QString & name)\n{\n  auto view = new ImageView(_tabWidget);\n  view->setImage(image);\n  _tabWidget->addTab(view, name + \"*\");\n  _tabWidget->setCurrentIndex(_tabWidget->count() - 1);\n  _savedTab.push_back(false);\n}\n\nconst QImage & ImageDialog::currentImage() const\n{\n  QWidget * widget = _tabWidget->currentWidget();\n  auto view = dynamic_cast<ImageView *>(widget);\n  Q_ASSERT_X(view, __FUNCTION__, \"Widget is not an ImageView\");\n  return view->image();\n}\n\nint ImageDialog::currentImageIndex() const\n{\n  return _tabWidget->currentIndex();\n}\n\nvoid ImageDialog::supportedImageFormats(QStringList & extensions, QStringList & filters)\n{\n  extensions.clear();\n  for (const auto & ext : QImageWriter::supportedImageFormats()) {\n    extensions.push_back(QString::fromLatin1(ext).toLower());\n  }\n  filters.clear();\n  for (const auto & extension : extensions) {\n    QString filter = QString(tr(\"%1 file (*.%2 *.%3)\")).arg(extension.toUpper()).arg(extension.toUpper()).arg(extension);\n    if (extension == \"png\" || extension == \"jpg\" || extension == \"jpeg\") {\n      filters.push_front(filter);\n    } else {\n      filters.push_back(filter);\n    }\n  }\n}\n\nvoid ImageDialog::setJPEGQuality(int q)\n{\n  _jpegQuality = q;\n}\n\nvoid ImageDialog::onSaveAs()\n{\n  QSettings settings;\n  QString selectedFilter;\n  selectedFilter = settings.value(\"Standalone/SaveAsSelectedFilter\", QString()).toString();\n  QStringList extensions;\n  QStringList filters;\n  supportedImageFormats(extensions, filters);\n  if (!filters.contains(selectedFilter)) {\n    selectedFilter.clear();\n  }\n  const QFileDialog::Options options = GmicQt::Settings::nativeFileDialogs() ? QFileDialog::Options() : QFileDialog::DontUseNativeDialog;\n  QString filename = QFileDialog::getSaveFileName(this, tr(\"Save image as...\"), QString(), filters.join(\";;\"), &selectedFilter, options);\n  if (!filename.isEmpty()) {\n    settings.setValue(\"Standalone/SaveAsSelectedFilter\", selectedFilter);\n    QString extension = selectedFilter.split(\"*\").back();\n    extension.chop(1);\n    if (!extensions.contains(QFileInfo(filename).suffix())) {\n      filename += extension;\n    }\n    auto view = dynamic_cast<ImageView *>(_tabWidget->currentWidget());\n    int index = _tabWidget->currentIndex();\n    if (view) {\n      if (view->save(filename, _jpegQuality)) {\n        _tabWidget->setTabText(index, QFileInfo(filename).fileName());\n        _tabWidget->setTabToolTip(index, QFileInfo(filename).filePath());\n      }\n    }\n  }\n}\n\nvoid ImageDialog::onCloseClicked(bool)\n{\n  done(0);\n}\n\nvoid ImageView::paintEvent(QPaintEvent *)\n{\n  QPainter p(this);\n  QImage displayed;\n  if ((static_cast<float>(_image.width()) / static_cast<float>(_image.height())) > (static_cast<float>(width()) / static_cast<float>(height()))) {\n    displayed = _image.scaledToWidth(width());\n    p.drawImage(0, (height() - displayed.height()) / 2, displayed);\n  } else {\n    displayed = _image.scaledToHeight(height());\n    p.drawImage((width() - displayed.width()) / 2, 0, displayed);\n  }\n}\n\nconst QImage & ImageView::image() const\n{\n  return _image;\n}\n\n} // namespace gmic_qt_standalone\n"
  },
  {
    "path": "src/Host/None/ImageDialog.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ImageDialog.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_IMAGE_DIALOG_H\n#define GMIC_QT_IMAGE_DIALOG_H\n#include <QApplication>\n#include <QDialog>\n#include <QFileDialog>\n#include <QFileInfo>\n#include <QHBoxLayout>\n#include <QImage>\n#include <QPainter>\n#include <QPushButton>\n#include <QString>\n#include <QTabWidget>\n#include <QVBoxLayout>\n#include <QVector>\n#include \"Common.h\"\n#include \"Globals.h\"\n#include \"GmicQt.h\"\n\nnamespace gmic_library\n{\ntemplate <typename T> struct gmic_image;\n}\n\nnamespace gmic_qt_standalone\n{\n\nclass ImageView : public QWidget {\npublic:\n  ImageView(QWidget * parent);\n  void setImage(const gmic_library::gmic_image<gmic_pixel_type> & image);\n  void setImage(const QImage & image);\n  bool save(const QString & filename, int quality);\n  void paintEvent(QPaintEvent *) override;\n  const QImage & image() const;\n\nprivate:\n  QImage _image;\n};\n\nclass ImageDialog : public QDialog {\n  Q_OBJECT\npublic:\n  ImageDialog(QWidget * parent);\n  void addImage(const gmic_library::gmic_image<gmic_pixel_type> & image, const QString & name);\n  const QImage & currentImage() const;\n  int currentImageIndex() const;\n  static void supportedImageFormats(QStringList & extensions, QStringList &filters);\n  void setJPEGQuality(int);\n  static const int UNSPECIFIED_JPEG_QUALITY = -1;\n\npublic slots:\n  void onSaveAs();\n  void onCloseClicked(bool);\n\nprivate:\n  QPushButton * _closeButton;\n  QPushButton * _saveButton;\n  QTabWidget * _tabWidget;\n  QVector<bool> _savedTab;\n  int _jpegQuality;\n};\n\n} // namespace gmic_qt_standalone\n\n#endif\n"
  },
  {
    "path": "src/Host/None/JpegQualityDialog.cpp",
    "content": "#include \"JpegQualityDialog.h\"\n#include <QSettings>\n#include \"Settings.h\"\n#include \"ui_jpegqualitydialog.h\"\nint JpegQualityDialog::_permanentQuality = -1;\nint JpegQualityDialog::_selectedQuality = -1;\n\n#define JPEG_QUALITY_KEY \"Config/host_standalone/DefaultJpegQuality\"\n\nJpegQualityDialog::JpegQualityDialog(QWidget * parent) : QDialog(parent), ui(new Ui::JpegQualityDialog)\n{\n  ui->setupUi(this);\n  setWindowTitle(tr(\"JPEG Quality\"));\n  ui->slider->setRange(0, 100);\n  ui->spinBox->setRange(0, 100);\n\n  if (_selectedQuality == -1) {\n    _selectedQuality = QSettings().value(JPEG_QUALITY_KEY, 85).toInt();\n  }\n\n  ui->slider->setValue(_selectedQuality);\n  ui->spinBox->setValue(_selectedQuality);\n  ui->pbOk->setDefault(true);\n  connect(ui->slider, &QSlider::valueChanged, ui->spinBox, &QSpinBox::setValue);\n  connect(ui->spinBox, QOverload<int>::of(&QSpinBox::valueChanged), ui->slider, &QSlider::setValue);\n  connect(ui->pbOk, &QPushButton::clicked, [this]() {\n    _selectedQuality = ui->spinBox->value();\n    QSettings().setValue(JPEG_QUALITY_KEY, _selectedQuality);\n  });\n  connect(ui->pbOk, &QPushButton::clicked, this, &QDialog::accept);\n  connect(ui->pbCancel, &QPushButton::clicked, this, &QDialog::reject);\n  connect(ui->makePermanent, &QCheckBox::toggled, this, &JpegQualityDialog::makePermanent);\n\n  if (GmicQt::Settings::darkThemeEnabled()) {\n    QPalette p = ui->makePermanent->palette();\n    p.setColor(QPalette::Text, GmicQt::Settings::CheckBoxTextColor);\n    p.setColor(QPalette::Base, GmicQt::Settings::CheckBoxBaseColor);\n    ui->makePermanent->setPalette(p);\n  }\n}\n\nJpegQualityDialog::~JpegQualityDialog()\n{\n  delete ui;\n}\n\nint JpegQualityDialog::quality() const\n{\n  return ui->slider->value();\n}\n\nvoid JpegQualityDialog::setQuality(int q)\n{\n  if (q != -1) {\n    ui->slider->setValue(q);\n    ui->spinBox->setValue(q);\n  }\n}\n\nint JpegQualityDialog::ask(QWidget * parent, int value)\n{\n  if (_permanentQuality != -1) {\n    return _permanentQuality;\n  }\n  JpegQualityDialog * dialog = new JpegQualityDialog(parent);\n  dialog->setQuality(value);\n  int result = -1;\n  if (dialog->exec() == QDialog::Accepted) {\n    result = dialog->quality();\n  }\n  dialog->deleteLater();\n  return result;\n}\n\nvoid JpegQualityDialog::closeEvent(QCloseEvent * event)\n{\n  return QDialog::closeEvent(event);\n}\n\nvoid JpegQualityDialog::makePermanent(bool on)\n{\n  if (on) {\n    _permanentQuality = ui->spinBox->value();\n  } else {\n    _permanentQuality = -1;\n  }\n}\n"
  },
  {
    "path": "src/Host/None/JpegQualityDialog.h",
    "content": "#ifndef JPEGQUALITYDIALOG_H\n#define JPEGQUALITYDIALOG_H\n\n#include <QDialog>\n\nnamespace Ui\n{\nclass JpegQualityDialog;\n}\n\nclass JpegQualityDialog : public QDialog {\n  Q_OBJECT\n\npublic:\n  explicit JpegQualityDialog(QWidget * parent);\n  ~JpegQualityDialog() override;\n  int quality() const;\n  void setQuality(int quality);\n  static int ask(QWidget * parent, int value = -1);\n\nprotected:\n  void closeEvent(QCloseEvent *) override;\nprivate slots:\n  void makePermanent(bool);\n\nprivate:\n  Ui::JpegQualityDialog * ui;\n  static int _permanentQuality;\n  static int _selectedQuality;\n};\n\n#endif // JPEGQUALITYDIALOG_H\n"
  },
  {
    "path": "src/Host/None/host_none.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file host_none.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include <QApplication>\n#include <QCommandLineParser>\n#include <QDebug>\n#include <QFileDialog>\n#include <QFileInfo>\n#include <QFont>\n#include <QGuiApplication>\n#include <QMainWindow>\n#include <QMessageBox>\n#include <QPainter>\n#include <QRegularExpression>\n#include <QVector>\n#include <algorithm>\n#include <fstream>\n#include <iostream>\n#include \"GmicQt.h\"\n#include \"Host/GmicQtHost.h\"\n#include \"Host/None/ImageDialog.h\"\n#include \"Settings.h\"\n#include \"gmic.h\"\n\n#define STRINGIFY(X) #X\n#define XSTRINGIFY(X) STRINGIFY(X)\n\nnamespace gmic_qt_standalone\n{\n\nQVector<QImage> input_images;\nQVector<QString> current_image_filenames;\nQVector<QString> input_image_filenames;\nQString output_image_filename;\nint jpeg_quality = ImageDialog::UNSPECIFIED_JPEG_QUALITY;\n\nQWidget * visibleMainWindow()\n{\n  for (QWidget * w : QApplication::topLevelWidgets()) {\n    if ((dynamic_cast<QMainWindow *>(w) != nullptr) && (w->isVisible())) {\n      return w;\n    }\n  }\n  return nullptr;\n}\n\nvoid askForInputImageFilename()\n{\n  QWidget * mainWidget = visibleMainWindow();\n  Q_ASSERT_X(mainWidget, __PRETTY_FUNCTION__, \"No top level window yet\");\n  QStringList extensions;\n  QStringList filters;\n  gmic_qt_standalone::ImageDialog::supportedImageFormats(extensions, filters);\n  const QFileDialog::Options options = GmicQt::Settings::nativeFileDialogs() ? QFileDialog::Options() : QFileDialog::DontUseNativeDialog;\n  QString filename = QFileDialog::getOpenFileName(mainWidget, QObject::tr(\"Select an image to open...\"), \".\", filters.join(\";;\"), nullptr, options);\n  input_images.resize(1);\n  current_image_filenames.resize(1);\n  if (!filename.isEmpty() && QFileInfo(filename).isReadable() && input_images.first().load(filename)) {\n    input_images.first() = input_images.first().convertToFormat(QImage::Format_ARGB32);\n    current_image_filenames.first() = QFileInfo(filename).fileName();\n  } else {\n    if (!filename.isEmpty()) {\n      QMessageBox::warning(mainWidget, QObject::tr(\"Error\"), QObject::tr(\"Could not open file.\"));\n    }\n    input_images.first().load(\":/resources/gmicky.png\");\n    input_images.first() = input_images.first().convertToFormat(QImage::Format_ARGB32);\n    current_image_filenames.first() = QObject::tr(\"Default image\");\n  }\n}\nconst QImage & transparentImage()\n{\n  static QImage image;\n  if (image.isNull()) {\n    image = QImage(640, 480, QImage::Format_ARGB32);\n    image.fill(QColor(0, 0, 0, 0));\n  }\n  return image;\n}\nQString imageName(const char * text)\n{\n  QString result;\n  const char * start = std::strstr(text, \"name(\");\n  if (start) {\n    const char * ps = start + 5;\n    unsigned int level = 1;\n    while (*ps && level) {\n      if (*ps == '(') {\n        ++level;\n      } else if (*ps == ')') {\n        --level;\n      }\n      ++ps;\n    }\n    if (!level || (*(ps - 1) == ')')) {\n      result = QString::fromUtf8(start + 5, (unsigned int)(ps - start - 5));\n      result.chop(1);\n      for (QChar & c : result) {\n        if (c == char(21)) {\n          c = '(';\n        } else if (c == char(22)) {\n          c = ')';\n        }\n      }\n    }\n  }\n  return result;\n}\n\nstd::string basename(const std::string & text)\n{\n  std::string::size_type position = text.rfind('/');\n  if (position == std::string::npos) {\n    return text;\n  } else {\n    return text.substr(position + 1, text.size() - (position + 1));\n  }\n}\n\nconst QImage & inputImage(int n)\n{\n  if (n < gmic_qt_standalone::input_images.size() && !gmic_qt_standalone::input_images[n].isNull()) {\n    return gmic_qt_standalone::input_images[n];\n  } else {\n    return gmic_qt_standalone::transparentImage();\n  }\n}\n\n} // namespace gmic_qt_standalone\n\nnamespace GmicQtHost\n{\nconst QString ApplicationName;\nconst char * const ApplicationShortname = XSTRINGIFY(GMIC_HOST);\nconst bool DarkThemeIsDefault = true;\n\nvoid getLayersExtent(int * width, int * height, GmicQt::InputMode)\n{\n  if (gmic_qt_standalone::input_images.isEmpty()) {\n    if (gmic_qt_standalone::visibleMainWindow()) {\n      gmic_qt_standalone::askForInputImageFilename();\n      *width = gmic_qt_standalone::input_images.first().width();\n      *height = gmic_qt_standalone::input_images.first().height();\n    } else {\n      *width = 640;\n      *height = 480;\n    }\n  } else {\n    *width = gmic_qt_standalone::input_images.first().width();\n    *height = gmic_qt_standalone::input_images.first().height();\n  }\n}\n\nvoid getCroppedImages(gmic_library::gmic_list<float> & images, gmic_library::gmic_list<char> & imageNames, double x, double y, double width, double height, GmicQt::InputMode mode)\n{\n  const bool entireImage = x < 0 && y < 0 && width < 0 && height < 0;\n  if (entireImage) {\n    x = 0.0;\n    y = 0.0;\n    width = 1.0;\n    height = 1.0;\n  }\n  if (mode == GmicQt::InputMode::NoInput) {\n    images.assign();\n    imageNames.assign();\n    return;\n  }\n\n  images.assign(gmic_qt_standalone::input_images.size());\n  imageNames.assign(gmic_qt_standalone::input_images.size());\n\n  for (int i = 0; i < gmic_qt_standalone::input_images.size(); ++i) {\n    QString noParenthesisName(gmic_qt_standalone::current_image_filenames[i]);\n    noParenthesisName.replace(QChar('('), QChar(21)).replace(QChar(')'), QChar(22));\n\n    QString name = QString(\"pos(0,0),name(%1)\").arg(noParenthesisName);\n    QByteArray ba = name.toUtf8();\n    gmic_library::gmic_image<char>::string(ba.constData()).move_to(imageNames[i]);\n\n    const QImage & input_image = gmic_qt_standalone::inputImage(i);\n    const int ix = static_cast<int>(entireImage ? 0 : std::floor(x * input_image.width()));\n    const int iy = static_cast<int>(entireImage ? 0 : std::floor(y * input_image.height()));\n    const int iw = entireImage ? input_image.width() : std::min(input_image.width() - ix, static_cast<int>(1 + std::ceil(width * input_image.width())));\n    const int ih = entireImage ? input_image.height() : std::min(input_image.height() - iy, static_cast<int>(1 + std::ceil(height * input_image.height())));\n    GmicQt::convertQImageToGmicImage(input_image.copy(ix, iy, iw, ih), images[i]);\n  }\n}\n\nvoid outputImages(gmic_library::gmic_list<float> & images, const gmic_library::gmic_list<char> & imageNames, GmicQt::OutputMode mode)\n{\n  if (images.size() > 0) {\n    if (gmic_qt_standalone::output_image_filename.isEmpty()) {\n      QWidgetList widgets = QApplication::topLevelWidgets();\n      if (widgets.size()) {\n        auto dialog = new gmic_qt_standalone::ImageDialog(widgets.at(0));\n        dialog->setJPEGQuality(gmic_qt_standalone::jpeg_quality);\n        for (unsigned int i = 0; i < images.size(); ++i) {\n          QString name = gmic_qt_standalone::imageName((const char *)imageNames[i]);\n          dialog->addImage(images[i], name);\n        }\n        dialog->exec();\n        gmic_qt_standalone::input_images.resize(1);\n        gmic_qt_standalone::input_images.first() = dialog->currentImage();\n        gmic_qt_standalone::current_image_filenames.resize(1);\n        gmic_qt_standalone::current_image_filenames.first() = gmic_qt_standalone::imageName((const char *)imageNames[dialog->currentImageIndex()]);\n        delete dialog;\n      }\n    } else {\n      gmic_qt_standalone::input_images.resize(images.size());\n      gmic_qt_standalone::current_image_filenames.resize(images.size());\n      const unsigned int layerLimit = gmic_qt_standalone::output_image_filename.contains(\"%l\") ? images.size() : 1;\n      for (unsigned int layer = 0; layer < layerLimit; ++layer) {\n        GmicQt::convertGmicImageToQImage(images[layer], gmic_qt_standalone::input_images[layer]);\n        QString outputFilename = gmic_qt_standalone::output_image_filename;\n        if (outputFilename.contains(\"%b\")) {\n          const QString basename = QFileInfo(gmic_qt_standalone::input_image_filenames.first()).completeBaseName();\n          outputFilename.replace(\"%b\", basename);\n        }\n        if (outputFilename.contains(\"%f\")) {\n          const QString filename = QFileInfo(gmic_qt_standalone::input_image_filenames.first()).fileName();\n          outputFilename.replace(\"%f\", filename);\n        }\n        outputFilename.replace(\"%l\", QString::number(layer));\n        std::cout << \"[gmic_qt] Writing output file for layer \" << layer << \": \" << outputFilename.toStdString() << std::endl;\n        gmic_qt_standalone::input_images[layer].save(outputFilename, nullptr, gmic_qt_standalone::jpeg_quality);\n        gmic_qt_standalone::current_image_filenames[layer] = gmic_qt_standalone::imageName((const char *)imageNames[layer]);\n      }\n    }\n  }\n  unused(mode);\n}\n\nvoid showMessage(const char * message)\n{\n  std::cout << message << std::endl;\n}\n\nvoid applyColorProfile(gmic_library::gmic_image<gmic_pixel_type> &) {}\n\n} // namespace GmicQtHost\n\nvoid usage(const std::string & argv0)\n{\n  std::cout << \"Usage: \" << argv0 << \" [OPTIONS ...] [INPUT_FILES ...]\" << std::endl;\n  std::cout << \"Launch the G'MIC-Qt plugin as a standalone application.\\n\"\n               \"\\n\"\n               \"Options:\\n\"\n               \"                               -h --help : Display this help\\n\"\n               \"                        -o --output FILE : Write output image to FILE\\n\"\n               \"                                            %b will be replaced by the input file basename (i.e. without path and extension)\\n\"\n               \"                                            %f will be replaced by the input filename (without path)\\n\"\n               \"                                            %l will be replaced by the layer number (0 is top layer)\\n\"\n               \"                        -q --quality NNN : JPEG quality of output file(s) in 0..100\\n\"\n               \"                             -r --repeat : Use last applied filter and parameters\\n\"\n               \"     -p --path FILTER_PATH | FILTER_NAME : Select filter\\n\"\n               \"                                           e.g. \\\"/Black & White/Charcoal\\\"\\n\"\n               \"                                                \\\"Charcoal\\\"\\n\"\n               \"             -c --command \\\"GMIC COMMAND\\\" : Run gmic command. If a filter name or path is provided,\\n\"\n               \"                                           then parameters are completed using filter's defaults.\\n\"\n               \"                              -a --apply : Apply filter or command and quit (requires one of -r -p -c)\\n\"\n               \"                      -R --reapply-first : Launch GUI once for first input file, then apply selected filter\\n\"\n               \"                                           and parameters to all other files\\n\"\n               \"                             -l --layers : Treat multiple input files as layers of a single image (top first)\\n\"\n               \"                             --show-last : Print last applied plugin parameters\\n\"\n               \"                       --show-last-after : Print last applied plugin parameters (after filter execution)\\n\";\n}\n\nnamespace\n{\ninline bool loadImage(QImage & image, const QString & filename, int argc, char * argv[])\n{\n  QGuiApplication app(argc, argv);\n  return image.load(filename);\n}\n} // namespace\n\nint main(int argc, char * argv[])\n{\n  TIMING;\n  int narg = 1;\n  bool repeat = false;\n  bool apply = false;\n  bool reapplyFirst = false;\n  bool printLast = false;\n  bool printLastAfter = false;\n  bool layers = false;\n  std::string filterPath;\n  std::string command;\n  QStringList filenames;\n  while (narg < argc) {\n    QString arg = QString::fromLocal8Bit(argv[narg]);\n    if ((arg == \"--help\") || (arg == \"-h\")) {\n      usage(gmic_qt_standalone::basename(argv[0]));\n      return EXIT_SUCCESS;\n    } else if ((arg == \"--apply\") || (arg == \"-a\")) {\n      apply = true;\n    } else if ((arg == \"--layers\") || (arg == \"-l\")) {\n      layers = true;\n    } else if ((arg == \"--reapply-first\") || (arg == \"-R\")) {\n      reapplyFirst = true;\n    } else if ((arg == \"--output\") || (arg == \"-o\")) {\n      if (narg < argc - 1) {\n        ++narg;\n        gmic_qt_standalone::output_image_filename = argv[narg];\n      } else {\n        std::cerr << \"Missing filename for option \" << arg.toStdString() << std::endl;\n        return EXIT_FAILURE;\n      }\n    } else if ((arg == \"--quality\") || (arg == \"-q\")) {\n      if (narg < argc - 1) {\n        ++narg;\n        gmic_qt_standalone::jpeg_quality = std::max(0, std::min(100, atoi(argv[narg])));\n      } else {\n        std::cerr << \"Missing argument for option \" << arg.toStdString() << std::endl;\n        return EXIT_FAILURE;\n      }\n    } else if ((arg == \"--repeat\") || (arg == \"-r\")) {\n      repeat = true;\n    } else if ((arg == \"--command\") || (arg == \"-c\")) {\n      if (narg < argc - 1) {\n        ++narg;\n        command = argv[narg];\n      } else {\n        std::cerr << \"Missing command for option \" << arg.toStdString() << std::endl;\n        return EXIT_FAILURE;\n      }\n    } else if ((arg == \"--path\") || (arg == \"-p\")) {\n      if (narg < argc - 1) {\n        ++narg;\n        filterPath = argv[narg];\n      } else {\n        std::cerr << \"Missing path for option \" << arg.toStdString() << std::endl;\n        return EXIT_FAILURE;\n      }\n    } else if (arg == \"--show-last\") {\n      printLast = true;\n    } else if (arg == \"--show-last-after\") {\n      printLastAfter = true;\n    } else if (arg.startsWith(\"--\") || arg.startsWith(\"-\")) {\n      std::cerr << \"Unrecognized option \" << arg.toStdString() << std::endl;\n      return EXIT_FAILURE;\n    } else {\n      while (narg < argc) {\n        QString filename = QString::fromLocal8Bit(argv[narg]);\n        if (QFileInfo(filename).isReadable()) {\n          filenames.push_back(filename);\n        } else {\n          std::cerr << \"File cannot be read: \" << argv[narg] << std::endl;\n          return EXIT_FAILURE;\n        }\n        ++narg;\n      }\n    }\n    ++narg;\n  }\n\n  if (apply && (command.empty() && filterPath.empty() && !repeat)) {\n    std::cerr << \"Option --apply requires one of --repeat -path --command\" << std::endl;\n    return EXIT_FAILURE;\n  }\n\n  if (printLast || printLastAfter) {\n    GmicQt::ReturnedRunParametersFlag flag = printLast ? GmicQt::ReturnedRunParametersFlag::BeforeFilterExecution : GmicQt::ReturnedRunParametersFlag::AfterFilterExecution;\n    GmicQt::RunParameters parameters = GmicQt::lastAppliedFilterRunParameters(flag);\n    std::cout << \"Path: \" << parameters.filterPath << std::endl;\n    std::cout << \"Name: \" << parameters.filterName() << std::endl;\n    std::cout << \"Command: \" << parameters.command << std::endl;\n    std::cout << \"InputMode: \" << static_cast<int>(parameters.inputMode) << std::endl;\n    std::cout << \"OutputMode: \" << static_cast<int>(parameters.outputMode) << std::endl;\n    return EXIT_SUCCESS;\n  }\n\n  std::list<GmicQt::InputMode> disabledInputModes;\n  disabledInputModes.push_back(GmicQt::InputMode::NoInput);\n  if (layers && (filenames.size() > 1)) {\n    disabledInputModes.push_back(GmicQt::InputMode::Active);\n  } else {\n    disabledInputModes.push_back(GmicQt::InputMode::All);\n  }\n  disabledInputModes.push_back(GmicQt::InputMode::ActiveAndBelow);\n  disabledInputModes.push_back(GmicQt::InputMode::ActiveAndAbove);\n  disabledInputModes.push_back(GmicQt::InputMode::AllVisible);\n  disabledInputModes.push_back(GmicQt::InputMode::AllInvisible);\n\n  std::list<GmicQt::OutputMode> disabledOutputModes;\n  // disabledOutputModes.push_back(GmicQt::OutputMode::InPlace);\n  disabledOutputModes.push_back(GmicQt::OutputMode::NewImage);\n  disabledOutputModes.push_back(GmicQt::OutputMode::NewLayers);\n  disabledOutputModes.push_back(GmicQt::OutputMode::NewActiveLayers);\n  GmicQt::RunParameters parameters;\n  if (repeat) {\n    parameters = GmicQt::lastAppliedFilterRunParameters(GmicQt::ReturnedRunParametersFlag::AfterFilterExecution);\n    std::cout << \"[gmic_qt] Running with last parameters...\" << std::endl;\n    std::cout << \"Command: \" << parameters.command << std::endl;\n    std::cout << \"Path: \" << parameters.filterPath << std::endl;\n    std::cout << \"Input Mode: \" << (int)parameters.inputMode << std::endl;\n    std::cout << \"Output Mode: \" << (int)parameters.outputMode << std::endl;\n  } else {\n    parameters.filterPath = filterPath;\n    parameters.command = command;\n  }\n\n  if (filenames.isEmpty()) {\n    return GmicQt::run(GmicQt::UserInterfaceMode::Full, parameters, disabledInputModes, disabledOutputModes);\n  }\n  bool firstLaunch = true;\n  if (layers) {\n    gmic_qt_standalone::input_images.resize(filenames.size());\n    gmic_qt_standalone::current_image_filenames.resize(filenames.size());\n    gmic_qt_standalone::input_image_filenames.resize(filenames.size());\n    int n = 0;\n    for (const QString & filename : filenames) {\n      if (loadImage(gmic_qt_standalone::input_images[n], filename, argc, argv)) {\n        gmic_qt_standalone::input_images[n] = gmic_qt_standalone::input_images[n].convertToFormat(QImage::Format_ARGB32);\n        gmic_qt_standalone::current_image_filenames[n] = QFileInfo(filename).fileName();\n        gmic_qt_standalone::input_image_filenames[n] = gmic_qt_standalone::current_image_filenames[n];\n      } else {\n        std::cerr << \"Could not open image file \" << filename.toStdString() << std::endl;\n      }\n      ++n;\n    }\n    GmicQt::UserInterfaceMode uiMode = apply ? GmicQt::UserInterfaceMode::ProgressDialog : GmicQt::UserInterfaceMode::Full;\n    int status = GmicQt::run(uiMode, parameters, disabledInputModes, disabledOutputModes);\n    if (status) {\n      std::cerr << \"GmicQt::launchPlugin() returned status \" << status << std::endl;\n      return status;\n    }\n  } else {\n    for (const QString & filename : filenames) {\n      gmic_qt_standalone::input_images.resize(1);\n      gmic_qt_standalone::current_image_filenames.resize(1);\n      gmic_qt_standalone::input_image_filenames.resize(1);\n      if (loadImage(gmic_qt_standalone::input_images.first(), filename, argc, argv)) {\n        gmic_qt_standalone::input_images.first() = gmic_qt_standalone::input_images.first().convertToFormat(QImage::Format_ARGB32);\n        gmic_qt_standalone::current_image_filenames.first() = QFileInfo(filename).fileName();\n        gmic_qt_standalone::input_image_filenames.first() = gmic_qt_standalone::current_image_filenames.first();\n        GmicQt::UserInterfaceMode uiMode;\n        if (apply || (reapplyFirst && !firstLaunch)) {\n          uiMode = GmicQt::UserInterfaceMode::ProgressDialog;\n        } else {\n          uiMode = GmicQt::UserInterfaceMode::Full;\n        }\n        if (reapplyFirst && !firstLaunch) {\n          parameters = GmicQt::lastAppliedFilterRunParameters(GmicQt::ReturnedRunParametersFlag::BeforeFilterExecution);\n        }\n        int status = GmicQt::run(uiMode, parameters, disabledInputModes, disabledOutputModes);\n        if (status) {\n          std::cerr << \"GmicQt::launchPlugin() returned status \" << status << std::endl;\n          return status;\n        }\n        firstLaunch = false;\n      } else {\n        std::cerr << \"Could not open image file \" << filename.toStdString() << std::endl;\n      }\n    }\n  }\n  return EXIT_SUCCESS;\n}\n"
  },
  {
    "path": "src/Host/None/jpegqualitydialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>JpegQualityDialog</class>\n <widget class=\"QDialog\" name=\"JpegQualityDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>420</width>\n    <height>159</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Dialog</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout_2\">\n   <item>\n    <widget class=\"QGroupBox\" name=\"groupBox\">\n     <property name=\"title\">\n      <string>JPEG Quality</string>\n     </property>\n     <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n      <item>\n       <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n        <item>\n         <widget class=\"QLabel\" name=\"label\">\n          <property name=\"text\">\n           <string>0</string>\n          </property>\n         </widget>\n        </item>\n        <item>\n         <widget class=\"QSlider\" name=\"slider\">\n          <property name=\"orientation\">\n           <enum>Qt::Horizontal</enum>\n          </property>\n         </widget>\n        </item>\n        <item>\n         <widget class=\"QLabel\" name=\"label_2\">\n          <property name=\"text\">\n           <string>100</string>\n          </property>\n         </widget>\n        </item>\n        <item>\n         <widget class=\"QSpinBox\" name=\"spinBox\"/>\n        </item>\n       </layout>\n      </item>\n      <item>\n       <widget class=\"QCheckBox\" name=\"makePermanent\">\n        <property name=\"sizePolicy\">\n         <sizepolicy hsizetype=\"Fixed\" vsizetype=\"Fixed\">\n          <horstretch>0</horstretch>\n          <verstretch>0</verstretch>\n         </sizepolicy>\n        </property>\n        <property name=\"text\">\n         <string>Always use this quality for this execution of G'MIC-Qt</string>\n        </property>\n       </widget>\n      </item>\n     </layout>\n    </widget>\n   </item>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout_2\">\n     <item>\n      <spacer name=\"horizontalSpacer\">\n       <property name=\"orientation\">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name=\"sizeHint\" stdset=\"0\">\n        <size>\n         <width>40</width>\n         <height>20</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n     <item>\n      <widget class=\"QPushButton\" name=\"pbCancel\">\n       <property name=\"text\">\n        <string>&amp;Cancel</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QPushButton\" name=\"pbOk\">\n       <property name=\"text\">\n        <string>&amp;Ok</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <spacer name=\"horizontalSpacer_2\">\n       <property name=\"orientation\">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name=\"sizeHint\" stdset=\"0\">\n        <size>\n         <width>40</width>\n         <height>20</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n    </layout>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "src/Host/PaintDotNet/host_paintdotnet.cpp",
    "content": "/*\n*  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n*  editors, offering hundreds of filters thanks to the underlying G'MIC\n*  image processing framework.\n*\n*  Copyright (C) 2018, 2019, 2020, 2022 Nicholas Hayes\n*\n*  G'MIC-Qt is free software: you can redistribute it and/or modify\n*  it under the terms of the GNU General Public License as published by\n*  the Free Software Foundation, either version 3 of the License, or\n*  (at your option) any later version.\n*\n*  G'MIC-Qt is distributed in the hope that it will be useful,\n*  but WITHOUT ANY WARRANTY; without even the implied warranty of\n*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n*  GNU General Public License for more details.\n*\n*  You should have received a copy of the GNU General Public License\n*  along with this program.  If not, see <http://www.gnu.org/licenses/>.\n*\n*/\n#include <QApplication>\n#include <QString>\n#include <QDebug>\n#include <QDataStream>\n#include <QMessageBox>\n#include <QUUid>\n#include <iostream>\n#include <limits>\n#include <memory>\n#include <vector>\n#include \"Common.h\"\n#include \"Host/GmicQtHost.h\"\n#include \"MainWindow.h\"\n#include \"GmicQt.h\"\n#include \"gmic.h\"\n#include <Windows.h>\n\nstruct KernelHandleCloser\n{\n    void operator()(void* pointer)\n    {\n        if (pointer)\n        {\n            CloseHandle(pointer);\n        }\n    }\n};\n\nstruct MappedFileViewCloser\n{\n    void operator()(void* pointer)\n    {\n        if (pointer)\n        {\n            UnmapViewOfFile(pointer);\n        }\n    }\n};\n\ntypedef std::unique_ptr<void, KernelHandleCloser> ScopedFileMapping;\ntypedef std::unique_ptr<void, MappedFileViewCloser> ScopedFileMappingView;\n\nnamespace host_paintdotnet\n{\n    QString pipeName;\n    std::vector<ScopedFileMapping> sharedMemory;\n}\n\nnamespace GmicQtHost\n{\n    const QString ApplicationName = QString(\"Paint.NET\");\n    const char * const ApplicationShortname = GMIC_QT_XSTRINGIFY(GMIC_HOST);\n    const bool DarkThemeIsDefault = true;\n}\n\nnamespace\n{\n    class ScopedCreateFile : public std::unique_ptr<void, KernelHandleCloser>\n    {\n    public:\n        ScopedCreateFile(HANDLE handle) : std::unique_ptr<void, KernelHandleCloser>(handle == INVALID_HANDLE_VALUE ? nullptr : handle)\n        {\n        }\n    };\n\n    BOOL ReadFileBlocking(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPOVERLAPPED lpOverlapped)\n    {\n        BYTE* bufferStart = static_cast<BYTE*>(lpBuffer);\n        DWORD totalBytesRead = 0;\n        do\n        {\n            if (!ReadFile(hFile, bufferStart + totalBytesRead, nNumberOfBytesToRead - totalBytesRead, nullptr, lpOverlapped))\n            {\n                DWORD error = GetLastError();\n                switch (error)\n                {\n                case ERROR_SUCCESS:\n                case ERROR_IO_PENDING:\n                    break;\n                default:\n                    return FALSE;\n                }\n            }\n\n            DWORD bytesRead = 0;\n\n            if (GetOverlappedResult(hFile, lpOverlapped, &bytesRead, TRUE))\n            {\n                ResetEvent(lpOverlapped->hEvent);\n            }\n            else\n            {\n                return FALSE;\n            }\n\n            totalBytesRead += bytesRead;\n        } while (totalBytesRead < nNumberOfBytesToRead);\n\n        return TRUE;\n    }\n\n    BOOL WriteFileBlocking(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPOVERLAPPED lpOverlapped)\n    {\n        const BYTE* bufferStart = static_cast<const BYTE*>(lpBuffer);\n        DWORD totalBytesWritten = 0;\n        do\n        {\n            if (!WriteFile(hFile, bufferStart + totalBytesWritten, nNumberOfBytesToWrite - totalBytesWritten, nullptr, lpOverlapped))\n            {\n                DWORD error = GetLastError();\n                switch (error)\n                {\n                case ERROR_SUCCESS:\n                case ERROR_IO_PENDING:\n                    break;\n                default:\n                    return FALSE;\n                }\n            }\n\n            DWORD bytesWritten = 0;\n\n            if (GetOverlappedResult(hFile, lpOverlapped, &bytesWritten, TRUE))\n            {\n                ResetEvent(lpOverlapped->hEvent);\n            }\n            else\n            {\n                return FALSE;\n            }\n\n            totalBytesWritten += bytesWritten;\n        } while (totalBytesWritten < nNumberOfBytesToWrite);\n\n        return TRUE;\n    }\n\n    QByteArray SendMessageSynchronously(QByteArray message)\n    {\n        QByteArray reply;\n\n        ScopedCreateFile handle(CreateFileW(reinterpret_cast<LPCWSTR>(host_paintdotnet::pipeName.utf16()),\n                                            GENERIC_READ | GENERIC_WRITE,\n                                            0,\n                                            nullptr,\n                                            OPEN_EXISTING,\n                                            FILE_FLAG_OVERLAPPED,\n                                            nullptr));\n\n        if (!handle)\n        {\n            qWarning() << \"Could not open the Paint.NET pipe handle. GetLastError=\" << GetLastError();\n\n            return reply;\n        }\n\n        OVERLAPPED overlapped = {};\n        overlapped.hEvent = CreateEventW(nullptr, TRUE, FALSE, nullptr);\n\n        if (!overlapped.hEvent)\n        {\n            qWarning() << \"Could not create the overlapped.hEvent handle. GetLastError=\" << GetLastError();\n\n            return reply;\n        }\n\n        // Write the message.\n\n        const int messageLength = message.length();\n\n        if (!WriteFileBlocking(handle.get(), &messageLength, sizeof(int), &overlapped))\n        {\n            qWarning() << \"WriteFileBlocking(1) failed GetLastError=\" << GetLastError();\n\n            CloseHandle(overlapped.hEvent);\n\n            return reply;\n        }\n\n        if (!WriteFileBlocking(handle.get(), message.data(), static_cast<DWORD>(messageLength), &overlapped))\n        {\n            qWarning() << \"WriteFileBlocking(2) failed GetLastError=\" << GetLastError();\n\n            CloseHandle(overlapped.hEvent);\n\n            return reply;\n        }\n\n        // Read the reply.\n\n        int bytesRemaining = 0;\n\n        if (!ReadFileBlocking(handle.get(), &bytesRemaining, sizeof(int), &overlapped))\n        {\n            qWarning() << \"ReadFileBlocking(1) failed GetLastError=\" << GetLastError();\n\n            CloseHandle(overlapped.hEvent);\n\n            return reply;\n        }\n\n        if (bytesRemaining > 0)\n        {\n            reply.resize(bytesRemaining);\n\n            if (!ReadFileBlocking(handle.get(), reply.data(), static_cast<DWORD>(bytesRemaining), &overlapped))\n            {\n                qWarning() << \"ReadFileBlocking(2) failed GetLastError=\" << GetLastError();\n\n                CloseHandle(overlapped.hEvent);\n\n                return reply;\n            }\n        }\n\n        // Send a message to Paint.NET that all data has been read.\n\n        static const char done[] = \"done\";\n        constexpr DWORD doneLength = sizeof(done) / sizeof(done[0]);\n\n        WriteFileBlocking(handle.get(), done, doneLength, &overlapped);\n\n        CloseHandle(overlapped.hEvent);\n\n        return reply;\n    }\n\n    inline quint8 Float2Uint8Clamped(const float& value)\n    {\n        return value < 0.0f ? 0 : value > 255.0f ? 255 : static_cast<quint8>(value);\n    }\n}\n\nnamespace GmicQtHost {\n\nvoid getLayersExtent(int * width, int * height, GmicQt::InputMode mode)\n{\n    if (mode == GmicQt::InputMode::NoInput)\n    {\n        *width = 0;\n        *height = 0;\n        return;\n    }\n\n    QString getMaxLayerSizeCommand = QString(\"command=gmic_qt_get_max_layer_size\\nmode=%1\\n\").arg((int)mode);\n\n    QString reply = QString::fromUtf8(SendMessageSynchronously(getMaxLayerSizeCommand.toUtf8()));\n\n    if (reply.length() > 0)\n    {\n        QStringList items = reply.split(',', QT_SKIP_EMPTY_PARTS);\n\n        if (items.length() == 2)\n        {\n            *width = items[0].toInt();\n            *height = items[1].toInt();\n        }\n    }\n}\n\nvoid getCroppedImages(gmic_list<float> & images, gmic_list<char> & imageNames, double x, double y, double width, double height, GmicQt::InputMode mode)\n{\n    if (mode == GmicQt::InputMode::NoInput)\n    {\n        images.assign();\n        imageNames.assign();\n        return;\n    }\n\n    const bool entireImage = x < 0 && y < 0 && width < 0 && height < 0;\n    if (entireImage)\n    {\n        x = 0.0;\n        y = 0.0;\n        width = 1.0;\n        height = 1.0;\n    }\n\n    QString getImagesCommand = QString(\"command=gmic_qt_get_cropped_images\\nmode=%1\\ncroprect=%2,%3,%4,%5\\n\").arg((int)mode).arg(x).arg(y).arg(width).arg(height);\n\n    QString reply = QString::fromUtf8(SendMessageSynchronously(getImagesCommand.toUtf8()));\n\n    QStringList layers = reply.split('\\n', QT_SKIP_EMPTY_PARTS);\n\n    const int layerCount = layers.length();\n\n    images.assign(layerCount);\n    imageNames.assign(layerCount);\n\n    for (int i = 0; i < layerCount; ++i)\n    {\n        QString layerName = QString(\"layer%1\").arg(i);\n        QByteArray layerNameBytes = layerName.toUtf8();\n        gmic_image<char>::string(layerNameBytes.constData()).move_to(imageNames[i]);\n    }\n\n    for (int i = 0; i < layerCount; ++i)\n    {\n        QStringList layerData = layers[i].split(',', QT_SKIP_EMPTY_PARTS);\n        if (layerData.length() != 4)\n        {\n            return;\n        }\n\n        LPCWSTR fileMappingName = reinterpret_cast<LPCWSTR>(layerData[0].utf16());\n        const qint32 width = layerData[1].toInt();\n        const qint32 height = layerData[2].toInt();\n        const qint32 stride = layerData[3].toInt();\n\n        ScopedFileMapping fileMappingObject(OpenFileMappingW(FILE_MAP_READ, FALSE, fileMappingName));\n\n        if (fileMappingObject)\n        {\n            const size_t imageDataSize = static_cast<size_t>(stride) * static_cast<size_t>(height);\n\n            ScopedFileMappingView mappedData(MapViewOfFile(fileMappingObject.get(), FILE_MAP_READ, 0, 0, imageDataSize));\n\n            if (mappedData)\n            {\n                const quint8* scan0 = static_cast<const quint8*>(mappedData.get());\n                gmic_library::gmic_image<float>& dest = images[i];\n\n                dest.assign(width, height, 1, 4);\n                float* dstR = dest.data(0, 0, 0, 0);\n                float* dstG = dest.data(0, 0, 0, 1);\n                float* dstB = dest.data(0, 0, 0, 2);\n                float* dstA = dest.data(0, 0, 0, 3);\n\n                for (qint32 y = 0; y < height; ++y)\n                {\n                    const quint8* src = scan0 + (y * stride);\n\n                    for (qint32 x = 0; x < width; ++x)\n                    {\n                        *dstB++ = static_cast<float>(src[0]);\n                        *dstG++ = static_cast<float>(src[1]);\n                        *dstR++ = static_cast<float>(src[2]);\n                        *dstA++ = static_cast<float>(src[3]);\n\n                        src += 4;\n                    }\n                }\n            }\n            else\n            {\n                qWarning() << \"MapViewOfFile failed GetLastError=\" << GetLastError();\n                return;\n            }\n        }\n        else\n        {\n            qWarning() << \"OpenFileMappingW failed GetLastError=\" << GetLastError();\n            return;\n        }\n    }\n\n    SendMessageSynchronously(\"command=gmic_qt_release_shared_memory\");\n}\n\nvoid outputImages(gmic_list<float> & images, const gmic_list<char> & imageNames, GmicQt::OutputMode mode)\n{\n    unused(imageNames);\n\n    if (images.size() > 0)\n    {\n        for (size_t i = 0; i < host_paintdotnet::sharedMemory.size(); ++i)\n        {\n            host_paintdotnet::sharedMemory[i].reset();\n        }\n        host_paintdotnet::sharedMemory.clear();\n\n        QString outputImagesCommand = QString(\"command=gmic_qt_output_images\\nmode=%1\\n\").arg((int)mode);\n\n        for (size_t i = 0; i < images.size(); ++i)\n        {\n            QString mappingName = QString(\"pdn_%1\").arg(QUuid::createUuid().toString(QUuid::StringFormat::WithoutBraces));\n\n            const gmic_library::gmic_image<float>& out = images[i];\n\n            const int width = out.width();\n            const int height = out.height();\n\n            const qint64 imageSizeInBytes = static_cast<qint64>(width) * static_cast<qint64>(height) * 4;\n\n            const DWORD capacityHigh = static_cast<DWORD>((imageSizeInBytes >> 32) & 0xFFFFFFFF);\n            const DWORD capacityLow = static_cast<DWORD>(imageSizeInBytes & 0x00000000FFFFFFFF);\n\n            ScopedFileMapping fileMappingObject(CreateFileMappingW(INVALID_HANDLE_VALUE,\n                                                                   nullptr,\n                                                                   PAGE_READWRITE,\n                                                                   capacityHigh,\n                                                                   capacityLow,\n                                                                   reinterpret_cast<LPCWSTR>(mappingName.utf16())));\n            if (fileMappingObject)\n            {\n                ScopedFileMappingView mappedData(MapViewOfFile(fileMappingObject.get(), FILE_MAP_ALL_ACCESS, 0, 0, static_cast<size_t>(imageSizeInBytes)));\n\n                if (mappedData)\n                {\n                    quint8* scan0 = static_cast<quint8*>(mappedData.get());\n                    const int stride = width * 4;\n\n                    if (out.spectrum() == 3)\n                    {\n                        const float* srcR = out.data(0, 0, 0, 0);\n                        const float* srcG = out.data(0, 0, 0, 1);\n                        const float* srcB = out.data(0, 0, 0, 2);\n\n                        for (int y = 0; y < height; ++y)\n                        {\n                            quint8* dst = scan0 + (y * stride);\n\n                            for (int x = 0; x < width; ++x)\n                            {\n                                dst[0] = Float2Uint8Clamped(*srcB++);\n                                dst[1] = Float2Uint8Clamped(*srcG++);\n                                dst[2] = Float2Uint8Clamped(*srcR++);\n                                dst[3] = 255;\n\n                                dst += 4;\n                            }\n                        }\n                    }\n                    else if (out.spectrum() == 4)\n                    {\n                        const float* srcR = out.data(0, 0, 0, 0);\n                        const float* srcG = out.data(0, 0, 0, 1);\n                        const float* srcB = out.data(0, 0, 0, 2);\n                        const float* srcA = out.data(0, 0, 0, 3);\n\n                        for (int y = 0; y < height; ++y)\n                        {\n                            quint8* dst = scan0 + (y * stride);\n\n                            for (int x = 0; x < width; ++x)\n                            {\n                                dst[0] = Float2Uint8Clamped(*srcB++);\n                                dst[1] = Float2Uint8Clamped(*srcG++);\n                                dst[2] = Float2Uint8Clamped(*srcR++);\n                                dst[3] = Float2Uint8Clamped(*srcA++);\n\n                                dst += 4;\n                            }\n                        }\n                    }\n                    else if (out.spectrum() == 2)\n                    {\n                        const float* srcGray = out.data(0, 0, 0, 0);\n                        const float* srcAlpha = out.data(0, 0, 0, 1);\n\n                        for (int y = 0; y < height; ++y)\n                        {\n                            quint8* dst = scan0 + (y * stride);\n\n                            for (int x = 0; x < width; ++x)\n                            {\n                                dst[0] = dst[1] = dst[2] = Float2Uint8Clamped(*srcGray++);\n                                dst[3] = Float2Uint8Clamped(*srcAlpha++);\n\n                                dst += 4;\n                            }\n                        }\n                    }\n                    else if (out.spectrum() == 1)\n                    {\n                        const float* srcGray = out.data(0, 0, 0, 0);\n\n                        for (int y = 0; y < height; ++y)\n                        {\n                            quint8* dst = scan0 + (y * stride);\n\n                            for (int x = 0; x < width; ++x)\n                            {\n                                dst[0] = dst[1] = dst[2] = Float2Uint8Clamped(*srcGray++);\n                                dst[3] = 255;\n\n                                dst += 4;\n                            }\n                        }\n                    }\n                    else\n                    {\n                        qWarning() << \"The image must have between 1 and 4 channels. Actual value=\" << out.spectrum();\n                        return;\n                    }\n\n                    // Manually release the mapped data to ensue it is committed before the parent file mapping handle\n                    // is moved into the host_paintdotnet::sharedMemory vector (which invalidates the previous handle).\n\n                    mappedData.reset();\n\n                    outputImagesCommand += \"layer=\" + mappingName + \",\"\n                        + QString::number(width) + \",\"\n                        + QString::number(height) + \",\"\n                        + QString::number(stride) + \"\\n\";\n\n\n                    host_paintdotnet::sharedMemory.push_back(std::move(fileMappingObject));\n                }\n                else\n                {\n                    qWarning() << \"MapViewOfFile failed GetLastError=\" << GetLastError();\n                    return;\n                }\n            }\n            else\n            {\n                qWarning() << \"CreateFileMappingW failed GetLastError=\" << GetLastError();\n                return;\n            }\n        }\n\n        SendMessageSynchronously(outputImagesCommand.toUtf8());\n    }\n}\n\nvoid applyColorProfile(gmic_library::gmic_image<gmic_pixel_type> & images)\n{\n    unused(images);\n}\n\nvoid showMessage(const char * message)\n{\n    unused(message);\n}\n\n} // namespace GmicQtHost\n\n\nint main(int argc, char *argv[])\n{\n    bool useLastParameters = false;\n\n    if (argc >= 3 && strcmp(argv[1], \".PDN\") == 0)\n    {\n        host_paintdotnet::pipeName = argv[2];\n        if (argc == 4)\n        {\n            useLastParameters = strcmp(argv[3], \"reapply\") == 0;\n        }\n    }\n    else\n    {\n        return 1;\n    }\n\n    if (host_paintdotnet::pipeName.isEmpty())\n    {\n        return 2;\n    }\n\n    int exitCode = 0;\n\n    std::list<GmicQt::InputMode> disabledInputModes;\n    disabledInputModes.push_back(GmicQt::InputMode::NoInput);\n    // disabledInputModes.push_back(GmicQt::InputMode::Active);\n    // disabledInputModes.push_back(GmicQt::InputMode::All);\n    disabledInputModes.push_back(GmicQt::InputMode::ActiveAndBelow);\n    disabledInputModes.push_back(GmicQt::InputMode::ActiveAndAbove);\n    disabledInputModes.push_back(GmicQt::InputMode::AllVisible);\n    disabledInputModes.push_back(GmicQt::InputMode::AllInvisible);\n\n\n    std::list<GmicQt::OutputMode> disabledOutputModes;\n    // disabledOutputModes.push_back(GmicQt::OutputMode::InPlace);\n    disabledOutputModes.push_back(GmicQt::OutputMode::NewImage);\n    disabledOutputModes.push_back(GmicQt::OutputMode::NewLayers);\n    disabledOutputModes.push_back(GmicQt::OutputMode::NewActiveLayers);\n    bool dialogAccepted = true;\n\n    if (useLastParameters)\n    {\n        GmicQt::RunParameters parameters;\n        parameters = GmicQt::lastAppliedFilterRunParameters(GmicQt::ReturnedRunParametersFlag::AfterFilterExecution);\n        exitCode = GmicQt::run(GmicQt::UserInterfaceMode::ProgressDialog,\n                               parameters,\n                               disabledInputModes,\n                               disabledOutputModes,\n                               &dialogAccepted);\n    }\n    else\n    {\n        exitCode = GmicQt::run(GmicQt::UserInterfaceMode::Full,\n                               GmicQt::RunParameters(),\n                               disabledInputModes,\n                               disabledOutputModes,\n                               &dialogAccepted);\n    }\n\n    for (size_t i = 0; i < host_paintdotnet::sharedMemory.size(); ++i)\n    {\n        host_paintdotnet::sharedMemory[i].reset();\n    }\n    host_paintdotnet::sharedMemory.clear();\n\n    if (dialogAccepted)\n    {\n        // Send the G'MIC command name to Paint.NET.\n        // It will be added to the image file names when writing the G'MIC images to an external file.\n        GmicQt::RunParameters parameters = GmicQt::lastAppliedFilterRunParameters(GmicQt::ReturnedRunParametersFlag::AfterFilterExecution);\n        QString gmicCommandName;\n\n        // A G'MIC command consists of a command name that can optionally be followed\n        // by a space and the command arguments.\n        // If a command does not take any arguments only the command name will be present.\n        //\n        // According to the G'MIC Language Reference command names are restricted to a\n        // subset of 7-bit US-ASCII: letters, numbers and underscores.\n        // These restrictions make the command name safe to use in an OS file name.\n        // See https://gmic.eu/reference/adding_custom_commands.html for more information.\n\n        size_t firstSpaceIndex = parameters.command.find_first_of(' ');\n\n        if (firstSpaceIndex != std::string::npos)\n        {\n            gmicCommandName = QString::fromStdString(parameters.command.substr(0, firstSpaceIndex));\n        }\n        else\n        {\n            gmicCommandName = QString::fromStdString(parameters.command);\n        }\n\n        QString message = QString(\"command=gmic_qt_set_gmic_command_name\\n%1\\n\").arg(gmicCommandName);\n\n        SendMessageSynchronously(message.toUtf8());\n    }\n    else\n    {\n        exitCode = 3;\n    }\n\n    return exitCode;\n}\n"
  },
  {
    "path": "src/HtmlTranslator.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file HtmlTranslator.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n#include \"HtmlTranslator.h\"\n#include <QDebug>\n#include <QRegularExpression>\n#include \"Common.h\"\n#include \"gmic.h\"\n\nnamespace GmicQt\n{\n\nQTextDocument HtmlTranslator::_document;\n\nQString HtmlTranslator::removeTags(QString str)\n{\n  return str.remove(QRegularExpression(\"<[^>]*>\"));\n}\n\n// TODO : enum param force + enum param translate\nQString HtmlTranslator::html2txt(const QString & str, bool force)\n{\n  if (force || hasHtmlEntities(str)) {\n    _document.setHtml(str);\n    return fromUtf8Escapes(_document.toPlainText());\n  }\n  return fromUtf8Escapes(str);\n}\n\nbool HtmlTranslator::hasHtmlEntities(const QString & str)\n{\n  return str.contains(QRegularExpression(\"&[a-zA-Z]+;\")) || str.contains(QRegularExpression(\"&#x?[0-9A-Fa-f]+;\")) || str.contains(QRegularExpression(\"</?[a-zA-Z]*>|<[a-zA-Z]*/>\"));\n}\n\nQString HtmlTranslator::fromUtf8Escapes(const QString & str)\n{\n  if (str.isEmpty()) {\n    return str;\n  }\n  QByteArray ba = str.toUtf8();\n  gmic_library::cimg::strunescape(ba.data());\n  return QString::fromUtf8(ba);\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/HtmlTranslator.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file HtmlTranslator.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_HTMLTRANSLATOR_H\n#define GMIC_QT_HTMLTRANSLATOR_H\n\n#include <QString>\n#include <QTextDocument>\n\nnamespace GmicQt\n{\n\nclass HtmlTranslator {\npublic:\n  static QString removeTags(QString str);\n  static QString html2txt(const QString & str, bool force = false);\n  static bool hasHtmlEntities(const QString & str);\n  static QString fromUtf8Escapes(const QString & str);\n\nprivate:\n  static QTextDocument _document;\n};\n\n} // namespace GmicQt\n\n#endif //  GMIC_QT_HTMLTRANSLATOR_H\n"
  },
  {
    "path": "src/IconLoader.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file IconLoader.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n#include \"IconLoader.h\"\n#include <QFileInfo>\n#include <QString>\n\nnamespace GmicQt\n{\n\nQIcon IconLoader::getForDarkTheme(const char * name)\n{\n  QPixmap pixmap(darkIconPath(name));\n  QIcon icon(pixmap);\n  icon.addPixmap(darkerPixmap(pixmap), QIcon::Disabled, QIcon::Off);\n  return icon;\n}\n\nQIcon IconLoader::load(const char * name)\n{\n  if (Settings::darkThemeEnabled()) {\n    return getForDarkTheme(name);\n  } else {\n    return QIcon(QString(\":/icons/%1.png\").arg(name));\n  }\n}\n\nQIcon IconLoader::loadNoDarkened(const char * name)\n{\n  if (Settings::darkThemeEnabled()) {\n    return QIcon(darkIconPath(name));\n  } else {\n    return QIcon(QString(\":/icons/%1.png\").arg(name));\n  }\n}\n\nQPixmap IconLoader::darkerPixmap(const QPixmap & pixmap)\n{\n  QImage image = pixmap.toImage().convertToFormat(QImage::Format_ARGB32);\n  for (int row = 0; row < image.height(); ++row) {\n    auto pixel = reinterpret_cast<QRgb *>(image.scanLine(row));\n    const QRgb * limit = pixel + image.width();\n    while (pixel != limit) {\n      QRgb grayed;\n      if (qAlpha(*pixel) != 0) {\n        grayed = qRgba((int)(0.4 * qRed(*pixel)), (int)(0.4 * qGreen(*pixel)), (int)(0.4 * qBlue(*pixel)), (int)(0.4 * qAlpha((*pixel))));\n      } else {\n        grayed = qRgba(0, 0, 0, 0);\n      }\n      *pixel++ = grayed;\n    }\n  }\n  return QPixmap::fromImage(image);\n}\n\nQString IconLoader::darkIconPath(const char * name)\n{\n  QString darkPath = QString(\":/icons/dark/%1.png\").arg(name);\n  if (QFileInfo(darkPath).exists()) {\n    return darkPath;\n  }\n  return QString(\":/icons/%1.png\").arg(name); // Fallback\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/IconLoader.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file IconLoader.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_ICONLOADER_H\n#define GMIC_QT_ICONLOADER_H\n\n#include <QIcon>\n#include <QPixmap>\n#include \"Settings.h\"\nclass QString;\n\nnamespace GmicQt\n{\n\nclass IconLoader {\npublic:\n  IconLoader() = delete;\n  static QIcon getForDarkTheme(const char * name);\n  static QIcon load(const char * name);\n  static QIcon loadNoDarkened(const char * name);\n\nprivate:\n  static QPixmap darkerPixmap(const QPixmap & pixmap);\n  static QString darkIconPath(const char * name);\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_ICONLOADER_H\n"
  },
  {
    "path": "src/ImageTools.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ImageTools.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"ImageTools.h\"\n#include <QDebug>\n#include <QImage>\n#include <QPainter>\n#include \"GmicStdlib.h\"\n#include \"gmic.h\"\n\n/*\n * Part of this code is much inspired by the original source code\n * of the GTK version of the gmic plug-in for GIMP by David Tschumperl\\'e.\n */\n\nnamespace GmicQt\n{\n\nvoid buildPreviewImage(const gmic_library::gmic_list<float> & images, gmic_library::gmic_image<float> & result)\n{\n  gmic_library::gmic_list<gmic_pixel_type> preview_input_images;\n  if (images.size() > 0) {\n    preview_input_images.push_back(images[0]);\n    int spectrum = 0;\n    cimglist_for(preview_input_images, l) { spectrum = std::max(spectrum, preview_input_images[l].spectrum()); }\n    spectrum += (spectrum == 1 || spectrum == 3);\n    cimglist_for(preview_input_images, l) { calibrateImage(preview_input_images[l], spectrum, true); }\n    result.swap(preview_input_images.front());\n  } else {\n    result.assign();\n  }\n}\n\nbool checkImageSpectrumAtMost4(const gmic_library::gmic_list<float> & images, unsigned int & index)\n{\n  for (unsigned int i = 0; i < images.size(); ++i) {\n    if (images[i].spectrum() > 4) {\n      index = i;\n      return false;\n    }\n  }\n  return true;\n}\n\ntemplate <typename T> bool hasAlphaChannel(const gmic_library::gmic_image<T> & image)\n{\n  return image.spectrum() == 2 || image.spectrum() == 4;\n}\n\ntemplate bool hasAlphaChannel(const gmic_library::gmic_image<float> &);\ntemplate bool hasAlphaChannel(const gmic_library::gmic_image<unsigned char> &);\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/ImageTools.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ImageTools.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_IMAGETOOLS_H\n#define GMIC_QT_IMAGETOOLS_H\n\n#include \"Common.h\"\n#include \"GmicQt.h\"\n\nnamespace gmic_library\n{\ntemplate <typename T> struct gmic_image;\ntemplate <typename T> struct gmic_list;\n} // namespace gmic_library\n\nnamespace GmicQt\n{\n\nbool checkImageSpectrumAtMost4(const gmic_library::gmic_list<float> & images, unsigned int & index);\nvoid buildPreviewImage(const gmic_library::gmic_list<float> & images, gmic_library::gmic_image<float> & result);\n\ntemplate <typename T> bool hasAlphaChannel(const gmic_library::gmic_image<T> & image);\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_IMAGETOOLS_H\n"
  },
  {
    "path": "src/InputOutputState.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file InputOutputState.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n#include \"InputOutputState.h\"\n#include <QJsonObject>\n#include <QString>\n\nnamespace\n{\nvoid filterDeprecatedInputMode(GmicQt::InputMode & mode)\n{\n  switch (mode) {\n  case GmicQt::InputMode::AllDesc_DEPRECATED:\n  case GmicQt::InputMode::AllVisiblesDesc_DEPRECATED:\n  case GmicQt::InputMode::AllInvisiblesDesc_DEPRECATED:\n    mode = GmicQt::InputMode::Unspecified;\n    break;\n  default:\n    break;\n  }\n}\n\n} // namespace\n\nnamespace GmicQt\n{\n\nconst InputOutputState InputOutputState::Default(DefaultInputMode, DefaultOutputMode);\nconst InputOutputState InputOutputState::Unspecified(InputMode::Unspecified, OutputMode::Unspecified);\n\nInputOutputState::InputOutputState() : inputMode(InputMode::Unspecified), outputMode(OutputMode::Unspecified) {}\n\nInputOutputState::InputOutputState(InputMode inputMode, OutputMode outputMode) : inputMode(inputMode), outputMode(outputMode) {}\n\nbool InputOutputState::operator==(const InputOutputState & other) const\n{\n  return inputMode == other.inputMode && outputMode == other.outputMode;\n}\n\nbool InputOutputState::operator!=(const InputOutputState & other) const\n{\n  return inputMode != other.inputMode || outputMode != other.outputMode;\n}\n\nbool InputOutputState::isDefault() const\n{\n  return (inputMode == DefaultInputMode) && (outputMode == DefaultOutputMode);\n}\n\nvoid InputOutputState::toJSONObject(QJsonObject & object) const\n{\n  object = QJsonObject();\n  if (inputMode != InputMode::Unspecified) {\n    object.insert(\"InputLayers\", static_cast<int>(inputMode));\n  }\n  if (outputMode != DefaultOutputMode) {\n    object.insert(\"OutputMode\", static_cast<int>(outputMode));\n  }\n}\n\nInputOutputState InputOutputState::fromJSONObject(const QJsonObject & object)\n{\n  InputOutputState state;\n  state.inputMode = static_cast<InputMode>(object.value(\"InputLayers\").toInt(static_cast<int>(InputMode::Unspecified)));\n  filterDeprecatedInputMode(state.inputMode);\n  state.outputMode = static_cast<OutputMode>(object.value(\"OutputMode\").toInt(static_cast<int>(OutputMode::Unspecified)));\n  return state;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/InputOutputState.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file InputOutputState.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_INPUTOUTPUTSTATE_H\n#define GMIC_QT_INPUTOUTPUTSTATE_H\n\n#include \"GmicQt.h\"\n\nclass QJsonObject;\nclass QString;\n\nnamespace GmicQt\n{\n\nstruct InputOutputState {\n  InputMode inputMode;\n  OutputMode outputMode;\n\n  InputOutputState();\n  InputOutputState(InputMode, OutputMode);\n  bool isDefault() const;\n  void toJSONObject(QJsonObject &) const;\n  static InputOutputState fromJSONObject(const QJsonObject &);\n  static const InputOutputState Default;\n  static const InputOutputState Unspecified;\n  bool operator==(const InputOutputState & other) const;\n  bool operator!=(const InputOutputState & other) const;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_INPUTOUTPUTSTATE_H\n"
  },
  {
    "path": "src/KeypointList.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file KeypointList.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n#include \"KeypointList.h\"\n#include <cmath>\n#include <cstring>\n\nnamespace GmicQt\n{\n\nconst float KeypointList::Keypoint::DefaultRadius = 9.0f;\n\nKeypointList::KeypointList() = default;\n\nvoid KeypointList::add(const KeypointList::Keypoint & keypoint)\n{\n  _keypoints.push_back(keypoint);\n}\n\nbool KeypointList::isEmpty()\n{\n  return _keypoints.empty();\n}\n\nvoid KeypointList::clear()\n{\n  _keypoints.clear();\n}\n\nQPointF KeypointList::position(int n) const\n{\n  const Keypoint & kp = _keypoints[n];\n  return {static_cast<qreal>(kp.x), static_cast<qreal>(kp.y)};\n}\n\nQColor KeypointList::color(int n) const\n{\n  return _keypoints[n].color;\n}\n\nbool KeypointList::isRemovable(int n) const\n{\n  return _keypoints[n].removable;\n}\n\nKeypointList::Keypoint::Keypoint(float x, float y, QColor color, bool removable, bool burst, float radius, bool keepOpacityWhenSelected)\n    : x(x), y(y), color(color), removable(removable), burst(burst), radius(radius), keepOpacityWhenSelected(keepOpacityWhenSelected)\n{\n}\n\nKeypointList::Keypoint::Keypoint(QPointF point, QColor color, bool removable, bool burst, float radius, bool keepOpacityWhenSelected)\n    : x((float)point.x()), y((float)point.y()), color(color), removable(removable), burst(burst), radius(radius), keepOpacityWhenSelected(keepOpacityWhenSelected)\n{\n}\n\nKeypointList::Keypoint::Keypoint(QColor color, bool removable, bool burst, float radius, bool keepOpacityWhenSelected)\n    : color(color), removable(removable), burst(burst), radius(radius), keepOpacityWhenSelected(keepOpacityWhenSelected)\n{\n  setNaN();\n}\n\nbool KeypointList::Keypoint::isNaN() const\n{\n  if (sizeof(float) == 4) {\n    unsigned int ix, iy;\n    std::memcpy(&ix, &x, sizeof(float));\n    std::memcpy(&iy, &y, sizeof(float));\n    return ((ix & 0x7fffffff) > 0x7f800000) || ((iy & 0x7fffffff) > 0x7f800000);\n  }\n#ifdef isnan\n  return (isnan(x) || isnan(y));\n#else\n  return !(x == x) || !(y == y);\n#endif\n}\n\nKeypointList::Keypoint & KeypointList::Keypoint::setNaN()\n{\n#ifdef NAN\n  x = y = (float)NAN;\n#else\n  const double nanValue = -std::sqrt(-1.0);\n  x = y = (float)nanValue;\n#endif\n  return *this;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/KeypointList.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file KeypointList.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_KEYPOINTLIST_H\n#define GMIC_QT_KEYPOINTLIST_H\n\n#include <QColor>\n#include <QDebug>\n#include <QPointF>\n#include <QSize>\n#include <cmath>\n#include <deque>\n#include \"Common.h\"\n\nnamespace GmicQt\n{\n\nclass KeypointList {\npublic:\n  struct Keypoint {\n    float x;\n    float y;\n    QColor color; /* A negative alpha means \"Keep opacity while moved\" */\n    bool removable;\n    bool burst;\n    float radius; /* A negative value is a percentage of the preview diagonal */\n    bool keepOpacityWhenSelected;\n\n    Keypoint(float x, float y, QColor color, bool removable, bool burst, float radius, bool keepOpacityWhenSelected);\n    Keypoint(QPointF point, QColor color, bool removable, bool burst, float radius, bool keepOpacityWhenSelected);\n    Keypoint(QColor color, bool removable, bool burst, float radius, bool keepOpacityWhenSelected);\n    bool isNaN() const;\n    Keypoint & setNaN();\n    inline void setPosition(float x, float y);\n    inline void setPosition(const QPointF & p);\n    static const float DefaultRadius;\n\n    inline int actualRadiusFromPreviewSize(const QSize & size) const;\n  };\n\n  KeypointList();\n  void add(const Keypoint & keypoint);\n  bool isEmpty();\n  void clear();\n  QPointF position(int n) const;\n  QColor color(int n) const;\n  bool isRemovable(int n) const;\n\n  typedef std::deque<Keypoint>::iterator iterator;\n  typedef std::deque<Keypoint>::const_iterator const_iterator;\n  typedef std::deque<Keypoint>::reverse_iterator reverse_iterator;\n  typedef std::deque<Keypoint>::const_reverse_iterator const_reverse_iterator;\n  typedef std::deque<Keypoint>::size_type size_type;\n  typedef std::deque<Keypoint>::reference reference;\n  typedef std::deque<Keypoint>::const_reference const_reference;\n\n  size_type size() const { return _keypoints.size(); }\n  reference operator[](size_type index) { return _keypoints[index]; }\n  const_reference operator[](size_type index) const { return _keypoints[index]; }\n  void pop_front() { _keypoints.pop_front(); }\n  const Keypoint & front() { return _keypoints.front(); }\n  const Keypoint & front() const { return _keypoints.front(); }\n  iterator begin() { return _keypoints.begin(); }\n  iterator end() { return _keypoints.end(); }\n  const_iterator cbegin() const { return _keypoints.cbegin(); }\n  const_iterator cend() const { return _keypoints.cend(); }\n  reverse_iterator rbegin() { return _keypoints.rbegin(); }\n  reverse_iterator rend() { return _keypoints.rend(); }\n  const_reverse_iterator rbegin() const { return _keypoints.crbegin(); }\n  const_reverse_iterator rend() const { return _keypoints.crend(); }\n  const_reverse_iterator crbegin() const { return _keypoints.crbegin(); }\n  const_reverse_iterator crend() const { return _keypoints.crend(); }\n\nprivate:\n  std::deque<Keypoint> _keypoints;\n};\n\nvoid KeypointList::Keypoint::setPosition(float x, float y)\n{\n  KeypointList::Keypoint::x = x;\n  KeypointList::Keypoint::y = y;\n}\n\nvoid KeypointList::Keypoint::setPosition(const QPointF & point)\n{\n  KeypointList::Keypoint::x = (float)point.x();\n  KeypointList::Keypoint::y = (float)point.y();\n}\n\nint KeypointList::Keypoint::actualRadiusFromPreviewSize(const QSize & size) const\n{\n  if (radius >= 0) {\n    return static_cast<int>(radius);\n  } else {\n    return std::max(2, static_cast<int>(std::round(-static_cast<double>(radius) * (std::sqrt(size.width() * size.width() + size.height() * size.height())) / 100.0)));\n  }\n}\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_KEYPOINTLIST_H\n"
  },
  {
    "path": "src/LanguageSettings.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file LanguageSettings.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n#include \"LanguageSettings.h\"\n#include <QApplication>\n#include <QDebug>\n#include <QFileInfo>\n#include <QLibraryInfo>\n#include <QLocale>\n#include <QSettings>\n#include <QTranslator>\n#include \"Common.h\"\n#include \"Globals.h\"\n#include \"Logger.h\"\n#include \"Settings.h\"\n\nnamespace GmicQt\n{\n\nconst QMap<QString, QString> & LanguageSettings::availableLanguages()\n{\n  static QMap<QString, QString> result;\n  if (result.isEmpty()) {\n    result[\"en\"] = QString(\"English\");\n    result[\"cs\"] = QString::fromUtf8(\"\\xc4\\x8c\\x65\\xc5\\xa1\\x74\\x69\\x6e\\x61\");\n    result[\"de\"] = QString(\"Deutsch\");\n    result[\"es\"] = QString::fromUtf8(\"Espa\\xc3\\xb1ol\");\n    result[\"fr\"] = QString::fromUtf8(\"Fran\\xc3\\xa7\"\n                                     \"ais\");\n    result[\"id\"] = QString(\"bahasa Indonesia\");\n    result[\"it\"] = QString(\"Italiano\");\n    result[\"ja\"] = QString::fromUtf8(\"\\xe6\\x97\\xa5\\xe6\\x9c\\xac\\xe8\\xaa\\x9e\");\n    result[\"nl\"] = QString(\"Dutch\");\n    result[\"pl\"] = QString::fromUtf8(\"J\\xc4\\x99zyk polski\");\n    result[\"pt\"] = QString::fromUtf8(\"Portugu\\xc3\\xaas\");\n    result[\"ru\"] = QString::fromUtf8(\"\\xd0\\xa0\\xd1\\x83\\xd1\\x81\\xd1\\x81\\xd0\\xba\\xd0\\xb8\\xd0\\xb9\");\n    result[\"sv\"] = QString::fromUtf8(\"Svenska\");\n    result[\"uk\"] = QString::fromUtf8(\"\\xd0\\xa3\\xd0\\xba\\xd1\\x80\\xd0\\xb0\\xd1\\x97\\xd0\\xbd\\xd1\\x81\\xd1\\x8c\\xd0\\xba\\xd0\\xb0\");\n    result[\"zh\"] = QString::fromUtf8(\"\\xe7\\xae\\x80\\xe5\\x8c\\x96\\xe5\\xad\\x97\");\n    result[\"zh_tw\"] = QString::fromUtf8(\"\\xe6\\xad\\xa3\\xe9\\xab\\x94\\xe5\\xad\\x97\\x2f\\xe7\\xb9\\x81\\xe9\\xab\\x94\\xe5\\xad\\x97\");\n  }\n  return result;\n}\n\nQString LanguageSettings::configuredTranslator()\n{\n  QString code = QSettings().value(LANGUAGE_CODE_KEY, QString()).toString();\n  if (code.isEmpty()) {\n    code = systemDefaultAndAvailableLanguageCode();\n    if (code.isEmpty()) {\n      code = \"en\";\n    }\n  } else {\n    QMap<QString, QString> map = availableLanguages();\n    if (map.find(code) == map.end()) {\n      code = \"en\";\n    }\n  }\n  return code;\n}\n\nQString LanguageSettings::systemDefaultAndAvailableLanguageCode()\n{\n  QList<QString> languages = QLocale().uiLanguages();\n  if (!languages.isEmpty()) {\n    QString lang = languages.front().split(\"-\").front();\n    QMap<QString, QString> map = availableLanguages();\n    // Check for traditional Chinese (following https://stackoverflow.com/a/4894634)\n    if ((lang == \"zh\") && (languages.front().endsWith(\"TW\") || languages.front().endsWith(\"HK\"))) {\n      return QString(\"zh_tw\");\n    }\n    if (map.find(lang) != map.end()) {\n      return lang;\n    }\n  }\n  return QString();\n}\n\n// Translate according to current locale or configured language\nvoid LanguageSettings::installTranslators()\n{\n  QString lang = LanguageSettings::configuredTranslator();\n  if (!lang.isEmpty() && (lang != \"en\")) {\n    installQtTranslator(lang);\n    installTranslator(QString(\":/translations/%1.qm\").arg(lang));\n    if (QSettings().value(ENABLE_FILTER_TRANSLATION, false).toBool()) {\n      installTranslator(QString(\":/translations/filters/%1.qm\").arg(lang));\n    }\n  }\n}\n\nbool LanguageSettings::filterTranslationAvailable(const QString & lang)\n{\n  return QFileInfo(QString(\":/translations/filters/%1.qm\").arg(lang)).isReadable();\n}\n\nvoid LanguageSettings::installTranslator(const QString & qmPath)\n{\n  if (!QFileInfo(qmPath).isReadable()) {\n    return;\n  }\n  auto translator = new QTranslator(qApp);\n  if (translator->load(qmPath)) {\n    if (!QApplication::installTranslator(translator)) {\n      Logger::error(QObject::tr(\"Could not install translator for file %1\").arg(qmPath));\n    }\n  } else {\n    Logger::error(QObject::tr(\"Could not load translation file %1\").arg(qmPath));\n    translator->deleteLater();\n  }\n}\n\nvoid LanguageSettings::installQtTranslator(const QString & lang)\n{\n  auto qtTranslator = new QTranslator(qApp);\n#if QT_VERSION_GTE(6,0,0)\n  QString path = QLibraryInfo::path(QLibraryInfo::TranslationsPath);\n#else\n  QString path = QLibraryInfo::location(QLibraryInfo::TranslationsPath);\n#endif\n  if (qtTranslator->load(QString(\"qt_%1\").arg(lang), path)) {\n    QApplication::installTranslator(qtTranslator);\n  } else {\n    qtTranslator->deleteLater();\n  }\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/LanguageSettings.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file LanguageSettings.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_LANGUAGESETTINGS_H\n#define GMIC_QT_LANGUAGESETTINGS_H\n\n#include <QMap>\n#include <QString>\n\nnamespace GmicQt\n{\n\nclass LanguageSettings {\npublic:\n  LanguageSettings() = delete;\n  static const QMap<QString, QString> & availableLanguages();\n  static QString configuredTranslator();\n  static QString systemDefaultAndAvailableLanguageCode();\n  static void installTranslators();\n  static bool filterTranslationAvailable(const QString & lang);\n\nprivate:\n  static void installTranslator(const QString & qmPath);\n  static void installQtTranslator(const QString & lang);\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_LANGUAGESETTINGS_H\n"
  },
  {
    "path": "src/LayersExtentProxy.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file LayersExtentProxy.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"LayersExtentProxy.h\"\n#include <QDebug>\n#include \"Common.h\"\n#include \"Host/GmicQtHost.h\"\n\nnamespace GmicQt\n{\n\nint LayersExtentProxy::_width = -1;\nint LayersExtentProxy::_height = -1;\nInputMode LayersExtentProxy::_inputMode = InputMode::All;\n\nQSize LayersExtentProxy::getExtent(InputMode mode)\n{\n  QSize size;\n  getExtent(mode, size.rwidth(), size.rheight());\n  return size;\n}\n\nvoid LayersExtentProxy::getExtent(InputMode mode, int & width, int & height)\n{\n  if (mode != _inputMode || _width == -1 || _height == -1) {\n    GmicQtHost::getLayersExtent(&_width, &_height, mode);\n    width = _width;\n    height = _height;\n  } else {\n    width = _width;\n    height = _height;\n  }\n  _inputMode = mode;\n}\n\nvoid LayersExtentProxy::clear()\n{\n  _width = _height = -1;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/LayersExtentProxy.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file LayersExtentProxy.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_LAYERS_EXTENT_PROXY_H\n#define GMIC_QT_LAYERS_EXTENT_PROXY_H\n#include <QSize>\n#include \"GmicQt.h\"\n\nnamespace GmicQt\n{\nclass LayersExtentProxy {\npublic:\n  static void getExtent(InputMode mode, int & width, int & height);\n  static QSize getExtent(InputMode mode);\n  static void clear();\n\nprivate:\n  LayersExtentProxy() = delete;\n  static int _width;\n  static int _height;\n  static InputMode _inputMode;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_LAYERS_EXTENT_PROXY_H\n"
  },
  {
    "path": "src/Logger.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file Logger.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"Logger.h\"\n#include <QDebug>\n#include <QString>\n#include <QStringList>\n#include \"Common.h\"\n#include \"GmicQt.h\"\n#include \"Settings.h\"\n#include \"Utils.h\"\n#include \"gmic.h\"\n\nnamespace GmicQt\n{\n\nFILE * Logger::_logFile = nullptr;\nLogger::Mode Logger::_currentMode = Logger::Mode::StandardOutput;\n\nvoid Logger::setMode(const OutputMessageMode mode)\n{\n  if ((mode == OutputMessageMode::VerboseLogFile) || (mode == OutputMessageMode::VeryVerboseLogFile) || (mode == OutputMessageMode::DebugLogFile)) {\n    setMode(Logger::Mode::File);\n  } else {\n    setMode(Logger::Mode::StandardOutput);\n  }\n}\n\nvoid Logger::setMode(const Logger::Mode mode)\n{\n  if (mode == _currentMode) {\n    return;\n  }\n  if (mode == Mode::StandardOutput) {\n    if (_logFile) {\n      fclose(_logFile);\n    }\n    _logFile = nullptr;\n    gmic_library::cimg::output(stdout);\n  } else {\n    QString filename = QString(\"%1gmic_qt_log\").arg(gmicConfigPath(true));\n    _logFile = fopen(filename.toLocal8Bit().constData(), \"a\");\n    gmic_library::cimg::output(_logFile ? _logFile : stdout);\n  }\n  _currentMode = mode;\n}\n\nvoid Logger::clear()\n{\n  Mode mode = _currentMode;\n  if (mode == Mode::File) {\n    setMode(Mode::StandardOutput);\n  }\n  QString filename = QString(\"%1gmic_qt_log\").arg(gmicConfigPath(true));\n  FILE * dummyFile = fopen(filename.toLocal8Bit().constData(), \"w\");\n  if (dummyFile) {\n    fclose(dummyFile);\n  }\n  setMode(mode);\n}\n\nvoid Logger::log(const QString & message, bool space)\n{\n  log(message, QString(), space);\n}\n\nvoid Logger::log(const QString & message, const QString & hint, bool space)\n{\n  if (Settings::outputMessageMode() == OutputMessageMode::Quiet) {\n    return;\n  }\n  QString text = message;\n  while (!text.isEmpty() && text[text.size() - 1].isSpace()) {\n    text.chop(1);\n  }\n  QStringList lines = text.split(\"\\n\", QT_KEEP_EMPTY_PARTS);\n\n  QString prefix = QString(\"[%1]\").arg(pluginCodeName());\n  prefix += hint.isEmpty() ? \" \" : QString(\"./%1/ \").arg(hint);\n\n  if (space) {\n    std::fprintf(gmic_library::cimg::output(), \"\\n\");\n  }\n  for (const QString & line : lines) {\n    std::fprintf(gmic_library::cimg::output(), \"%s\\n\", (prefix + line).toLocal8Bit().constData());\n  }\n  std::fflush(gmic_library::cimg::output());\n}\n\nvoid Logger::error(const QString & message, bool space)\n{\n  log(message, \"error\", space);\n}\n\nvoid Logger::warning(const QString & message, bool space)\n{\n  log(message, \"warning\", space);\n}\n\nvoid Logger::note(const QString & message, bool space)\n{\n  log(message, \"note\", space);\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/Logger.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file Logger.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_LOGGER_H\n#define GMIC_QT_LOGGER_H\n\n#include <cstdio>\n#include \"GmicQt.h\"\n\nclass QString;\n\nnamespace GmicQt\n{\n\nclass Logger {\npublic:\n  enum class Mode\n  {\n    StandardOutput,\n    File\n  };\n\n  static void setMode(const Mode mode);\n  static void setMode(const OutputMessageMode mode);\n  static void clear();\n  static void close();\n  static void log(const QString & message, const QString & hint, bool space = false);\n  static void error(const QString & message, bool space = false);\n  static void warning(const QString & message, bool space = false);\n  static void note(const QString & message, bool space = false);\n  static void log(const QString & message, bool space = false);\n  Logger() = delete;\n\nprivate:\n  static FILE * _logFile;\n  static Mode _currentMode;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_LOGGER_H\n"
  },
  {
    "path": "src/MainWindow.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file MainWindow.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"MainWindow.h\"\n#include <QAction>\n#include <QClipboard>\n#include <QCursor>\n#include <QDebug>\n#include <QEvent>\n#include <QGuiApplication>\n#include <QKeySequence>\n#include <QMessageBox>\n#include <QPalette>\n#include <QScreen>\n#include <QSettings>\n#include <QShortcut>\n#include <QShowEvent>\n#include <QStringList>\n#include <QStyleFactory>\n#include \"Common.h\"\n#include \"CroppedActiveLayerProxy.h\"\n#include \"CroppedImageListProxy.h\"\n#include \"DialogSettings.h\"\n#include \"FilterGuiDynamismCache.h\"\n#include \"FilterSelector/FavesModelReader.h\"\n#include \"FilterSelector/FiltersPresenter.h\"\n#include \"FilterTextTranslator.h\"\n#include \"Globals.h\"\n#include \"GmicStdlib.h\"\n#include \"HtmlTranslator.h\"\n#include \"IconLoader.h\"\n#include \"LayersExtentProxy.h\"\n#include \"Logger.h\"\n#include \"Misc.h\"\n#include \"ParametersCache.h\"\n#include \"PersistentMemory.h\"\n#include \"Settings.h\"\n#include \"Updater.h\"\n#include \"Utils.h\"\n#include \"Widgets/VisibleTagSelector.h\"\n#include \"ui_mainwindow.h\"\n#include \"gmic.h\"\n\nnamespace\n{\nQString appendShortcutText(const QString & text, const QKeySequence & key)\n{\n  if (text.isRightToLeft()) {\n    return QString(\"(%2) %1\").arg(text).arg(key.toString());\n  } else {\n    return QString(\"%1 (%2)\").arg(text).arg(key.toString());\n  }\n}\n\n} // namespace\n\nnamespace GmicQt\n{\n\nbool MainWindow::_isAccepted = false;\n\n//\n// TODO : Handle window maximization properly (Windows as well as some Linux desktops)\n//\n\nMainWindow::MainWindow(QWidget * parent) : QMainWindow(parent), ui(new Ui::MainWindow)\n{\n  TIMING;\n  ui->setupUi(this);\n  TIMING;\n  _messageTimerID = 0;\n  _gtkFavesShouldBeImported = false;\n\n  _lastExecutionOK = true; // Overwritten by loadSettings()\n  _expandCollapseIcon = nullptr;\n  _newSession = true; // Overwritten by loadSettings()\n\n  setWindowTitle(pluginFullName());\n  QStringList tsp = QIcon::themeSearchPaths();\n  tsp.append(QString(\"/usr/share/icons/gnome\"));\n  QIcon::setThemeSearchPaths(tsp);\n\n  _filterUpdateWidgets = {ui->previewWidget, ui->zoomLevelSelector, ui->filtersView,  ui->filterParams,      ui->tbUpdateFilters, ui->pbFullscreen,         ui->pbSettings,\n                          ui->pbOk,          ui->pbApply,           ui->pbClose,      ui->tbResetParameters, ui->tbCopyCommand,   ui->searchField,          ui->cbPreview,\n                          ui->tbAddFave,     ui->tbRemoveFave,      ui->tbRenameFave, ui->tbExpandCollapse,  ui->tbSelectionMode, ui->tbRandomizeParameters};\n\n  ui->tbAddFave->setToolTip(tr(\"Add fave\"));\n\n  ui->tbResetParameters->setToolTip(tr(\"Reset parameters to default values\"));\n  ui->tbResetParameters->setVisible(false);\n\n  ui->tbRandomizeParameters->setToolTip(tr(\"Randomize parameters\"));\n  ui->tbRandomizeParameters->setVisible(false);\n\n  QShortcut * copyShortcut = new QShortcut(QKeySequence::Copy, this);\n  copyShortcut->setContext(Qt::ApplicationShortcut);\n  connect(copyShortcut, &QShortcut::activated, [this] { ui->tbCopyCommand->animateClick(); });\n  ui->tbCopyCommand->setToolTip(appendShortcutText(tr(\"Copy G'MIC command to clipboard\"), copyShortcut->key()));\n  ui->tbCopyCommand->setVisible(false);\n\n  QShortcut * closeShortcut = new QShortcut(QKeySequence::Close, this);\n  closeShortcut->setContext(Qt::ApplicationShortcut);\n  connect(closeShortcut, &QShortcut::activated, this, &MainWindow::close);\n\n  QShortcut * previewTypeShortcut = new QShortcut(QKeySequence(\"Ctrl+Shift+P\"), this);\n  previewTypeShortcut->setContext(Qt::ApplicationShortcut);\n  connect(previewTypeShortcut, &QShortcut::activated, this, &MainWindow::switchPreviewType);\n\n  ui->tbRenameFave->setToolTip(tr(\"Rename fave\"));\n  ui->tbRenameFave->setEnabled(false);\n  ui->tbRemoveFave->setToolTip(tr(\"Remove fave\"));\n  ui->tbRemoveFave->setEnabled(false);\n  ui->pbFullscreen->setCheckable(true);\n\n  ui->tbExpandCollapse->setToolTip(tr(\"Expand/Collapse all\"));\n\n  ui->logosLabel->setToolTip(tr(\"G'MIC (https://gmic.eu)<br/>\"\n                                \"GREYC (https://www.greyc.fr)<br/>\"\n                                \"CNRS (https://www.cnrs.fr)<br/>\"\n                                \"Normandy University (https://www.unicaen.fr)<br/>\"\n                                \"Ensicaen (https://www.ensicaen.fr)\"));\n  ui->logosLabel->setPixmap(QPixmap(\":resources/logos.png\"));\n\n  ui->tbSelectionMode->setToolTip(tr(\"Selection mode\"));\n  ui->tbSelectionMode->setCheckable(true);\n\n  ui->filterName->setTextFormat(Qt::RichText);\n  ui->filterName->setVisible(false);\n\n  ui->progressInfoWidget->hide();\n  ui->messageLabel->setText(QString());\n  ui->messageLabel->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);\n  ui->rightMessageLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter);\n\n  ui->filterParams->setNoFilter();\n  _pendingActionAfterCurrentProcessing = ProcessingAction::NoAction;\n  ui->inOutSelector->disable();\n  ui->splitter->setChildrenCollapsible(false);\n\n  ui->zoomLevelSelector->setPreviewWidget(ui->previewWidget);\n\n  auto searchAction = new QAction(this);\n  searchAction->setShortcut(QKeySequence::Find);\n  searchAction->setShortcutContext(Qt::ApplicationShortcut);\n  connect(searchAction, &QAction::triggered, ui->searchField, QOverload<>::of(&SearchFieldWidget::setFocus));\n  addAction(searchAction);\n\n  auto togglePreviewAction = new QAction(this);\n  togglePreviewAction->setShortcut(QKeySequence(\"Ctrl+P\"));\n  togglePreviewAction->setShortcutContext(Qt::ApplicationShortcut);\n  connect(togglePreviewAction, &QAction::triggered, ui->cbPreview, &QCheckBox::toggle);\n  addAction(togglePreviewAction);\n\n  searchAction = new QAction(this);\n  searchAction->setShortcut(QKeySequence(\"/\"));\n  searchAction->setShortcutContext(Qt::ApplicationShortcut);\n  connect(searchAction, &QAction::triggered, ui->searchField, QOverload<>::of(&SearchFieldWidget::setFocus));\n  addAction(searchAction);\n\n  {\n    QKeySequence f5(\"F5\");\n    QKeySequence ctrlR(\"Ctrl+R\");\n    QString updateText = tr(\"Update filters\");\n    if (updateText.isRightToLeft()) {\n      updateText = QString(\"(%2 / %3) %1\").arg(updateText).arg(f5.toString()).arg(ctrlR.toString());\n    } else {\n      updateText = QString(\"%1 (%2 / %3)\").arg(updateText).arg(ctrlR.toString()).arg(f5.toString());\n    }\n    QShortcut * updateShortcutF5 = new QShortcut(QKeySequence(\"F5\"), this);\n    updateShortcutF5->setContext(Qt::ApplicationShortcut);\n    QShortcut * updateShortcutCtrlR = new QShortcut(QKeySequence(\"Ctrl+R\"), this);\n    updateShortcutCtrlR->setContext(Qt::ApplicationShortcut);\n    connect(updateShortcutF5, &QShortcut::activated, [this]() { ui->tbUpdateFilters->animateClick(); });\n    connect(updateShortcutCtrlR, &QShortcut::activated, [this]() { ui->tbUpdateFilters->animateClick(); });\n    ui->tbUpdateFilters->setToolTip(updateText);\n  }\n\n  ui->splitter->setHandleWidth(6);\n  ui->verticalSplitter->setHandleWidth(6);\n  ui->verticalSplitter->setStretchFactor(0, 5);\n  ui->verticalSplitter->setStretchFactor(0, 1);\n\n  if (!ui->inOutSelector->hasActiveControls()) {\n    ui->vSplitterLine->hide();\n    ui->inOutSelector->hide();\n  }\n\n  QPalette p = QGuiApplication::palette();\n  Settings::UnselectedFilterTextColor = p.color(QPalette::Disabled, QPalette::WindowText);\n\n  _filtersPresenter = new FiltersPresenter(this);\n  _filtersPresenter->setFiltersView(ui->filtersView);\n  _filtersPresenter->setSearchField(ui->searchField);\n\n  ui->progressInfoWidget->setGmicProcessor(&_processor);\n\n  loadSettings();\n  ParametersCache::load(!_newSession);\n  FilterGuiDynamismCache::load();\n  setIcons();\n  QAction * escAction = new QAction(this);\n  escAction->setShortcut(QKeySequence(Qt::Key_Escape));\n  escAction->setShortcutContext(Qt::ApplicationShortcut);\n  connect(escAction, &QAction::triggered, this, &MainWindow::onEscapeKeyPressed);\n  addAction(escAction);\n\n  CroppedImageListProxy::clear();\n  CroppedActiveLayerProxy::clear();\n  LayersExtentProxy::clear();\n  QSize layersExtent = LayersExtentProxy::getExtent(ui->inOutSelector->inputMode());\n  ui->previewWidget->setFullImageSize(layersExtent);\n  _lastPreviewKeypointBurstUpdateTime = 0;\n  _isAccepted = false;\n\n  ui->tbTags->setToolTip(tr(\"Manage visible tags\\n(Right-click on a fave or a filter to set/remove tags)\"));\n  _visibleTagSelector = new VisibleTagSelector(this);\n  _visibleTagSelector->setToolButton(ui->tbTags);\n  _visibleTagSelector->updateColors();\n  _filtersPresenter->setVisibleTagSelector(_visibleTagSelector);\n\n  _forceQuitText = tr(\"Force &quit\");\n\n  ui->pbCancel->setEnabled(false);\n\n  ui->cbPreviewType->addItem(tr(\"Full\"), int(PreviewWidget::PreviewType::Full));\n  ui->cbPreviewType->addItem(tr(\"Forward Horizontal\"), int(PreviewWidget::PreviewType::ForwardHorizontal));\n  ui->cbPreviewType->addItem(tr(\"Forward Vertical\"), int(PreviewWidget::PreviewType::ForwardVertical));\n  ui->cbPreviewType->addItem(tr(\"Backward Horizontal\"), int(PreviewWidget::PreviewType::BackwardHorizontal));\n  ui->cbPreviewType->addItem(tr(\"Backward Vertical\"), int(PreviewWidget::PreviewType::BackwardVertical));\n  ui->cbPreviewType->addItem(tr(\"Duplicate Top\"), int(PreviewWidget::PreviewType::DuplicateTop));\n  ui->cbPreviewType->addItem(tr(\"Duplicate Left\"), int(PreviewWidget::PreviewType::DuplicateLeft));\n  ui->cbPreviewType->addItem(tr(\"Duplicate Bottom\"), int(PreviewWidget::PreviewType::DuplicateBottom));\n  ui->cbPreviewType->addItem(tr(\"Duplicate Right\"), int(PreviewWidget::PreviewType::DuplicateRight));\n  ui->cbPreviewType->addItem(tr(\"Duplicate Horizontal\"), int(PreviewWidget::PreviewType::DuplicateHorizontal));\n  ui->cbPreviewType->addItem(tr(\"Duplicate Vertical\"), int(PreviewWidget::PreviewType::DuplicateVertical));\n  ui->cbPreviewType->addItem(tr(\"Checkered\"), int(PreviewWidget::PreviewType::Checkered));\n  ui->cbPreviewType->addItem(tr(\"Checkered Inverse\"), int(PreviewWidget::PreviewType::CheckeredInverse));\n  connect(ui->cbPreviewType, QOverload<int>::of(&QComboBox::currentIndexChanged), //\n          [this](int index) {                                                     //\n            ui->previewWidget->setPreviewType(PreviewWidget::PreviewType(ui->cbPreviewType->itemData(index).toInt()));\n          });\n\n  makeConnections();\n}\n\nMainWindow::~MainWindow()\n{\n  saveCurrentParameters();\n  ParametersCache::save();\n  FilterGuiDynamismCache::save();\n  saveSettings();\n  Logger::setMode(Logger::Mode::StandardOutput); // Close log file, if necessary\n  delete ui;\n}\n\nvoid MainWindow::setIcons()\n{\n  ui->tbTags->setIcon(IconLoader::load(\"color-wheel\"));\n  ui->tbRenameFave->setIcon(IconLoader::load(\"rename\"));\n  ui->pbSettings->setIcon(IconLoader::load(\"package_settings\"));\n  ui->pbFullscreen->setIcon(IconLoader::load(\"view-fullscreen\"));\n  ui->tbUpdateFilters->setIcon(IconLoader::loadNoDarkened(\"view-refresh\"));\n  ui->pbApply->setIcon(IconLoader::load(\"system-run\"));\n  ui->pbOk->setIcon(IconLoader::load(\"insert-image\"));\n  ui->tbResetParameters->setIcon(IconLoader::load(\"view-refresh\"));\n  ui->tbRandomizeParameters->setIcon(IconLoader::load(\"randomize\"));\n  ui->tbCopyCommand->setIcon(IconLoader::load(\"edit-copy\"));\n  ui->pbClose->setIcon(IconLoader::load(\"close\"));\n  ui->pbCancel->setIcon(IconLoader::load(\"cancel\"));\n  ui->tbAddFave->setIcon(IconLoader::load(\"bookmark-add\"));\n  ui->tbRemoveFave->setIcon(IconLoader::load(\"bookmark-remove\"));\n  ui->tbSelectionMode->setIcon(IconLoader::load(\"selection_mode\"));\n  _expandIcon = IconLoader::load(\"draw-arrow-down\");\n  _collapseIcon = IconLoader::load(\"draw-arrow-up\");\n  _expandCollapseIcon = &_expandIcon;\n  ui->tbExpandCollapse->setIcon(_expandIcon);\n}\n\nvoid MainWindow::setDarkTheme()\n{\n  // SHOW(QStyleFactory::keys());\n  qApp->setStyle(QStyleFactory::create(\"Fusion\"));\n  QPalette p = qApp->palette();\n  p.setColor(QPalette::Window, QColor(53, 53, 53));\n  p.setColor(QPalette::Button, QColor(73, 73, 73));\n  p.setColor(QPalette::Highlight, QColor(110, 110, 110));\n  p.setColor(QPalette::Text, QColor(255, 255, 255));\n  p.setColor(QPalette::ButtonText, QColor(255, 255, 255));\n  p.setColor(QPalette::WindowText, QColor(255, 255, 255));\n  QColor linkColor(130, 130, 150);\n  linkColor = linkColor.lighter();\n  p.setColor(QPalette::Link, linkColor);\n  p.setColor(QPalette::LinkVisited, linkColor);\n\n  const QColor disabledGray(40, 40, 40);\n  const QColor disabledTextGray(128, 128, 128);\n  p.setColor(QPalette::Disabled, QPalette::Window, disabledGray);\n  p.setColor(QPalette::Disabled, QPalette::Base, disabledGray);\n  p.setColor(QPalette::Disabled, QPalette::AlternateBase, disabledGray);\n  p.setColor(QPalette::Disabled, QPalette::Button, disabledGray);\n  p.setColor(QPalette::Disabled, QPalette::Text, disabledTextGray);\n  p.setColor(QPalette::Disabled, QPalette::ButtonText, disabledTextGray);\n  p.setColor(QPalette::Disabled, QPalette::WindowText, disabledTextGray);\n  qApp->setPalette(p);\n\n  p = ui->cbInternetUpdate->palette();\n  p.setColor(QPalette::Text, Settings::CheckBoxTextColor);\n  p.setColor(QPalette::Base, Settings::CheckBoxBaseColor);\n  ui->cbInternetUpdate->setPalette(p);\n  ui->cbPreview->setPalette(p);\n\n  const QString css = \"QTreeView { background: #505050; }\"\n                      \"QLineEdit { background: #505050; }\"\n                      \"QMenu { background: #505050; border: 1px solid rgb(100,100,100); }\"\n                      \"QMenu::item:selected { background: rgb(110,110,110); }\"\n                      \"QTextEdit { background: #505050; }\"\n                      \"QSpinBox  { background: #505050; }\"\n                      \"QListWidget { background: #505050; }\"\n                      \"QDoubleSpinBox { background: #505050; }\"\n                      \"QToolButton:checked { background: #383838; }\"\n                      \"QToolButton:pressed { background: #383838; }\"\n                      \"QComboBox QAbstractItemView { background: #505050; } \"\n                      \"QGroupBox { border: 1px solid #808080; margin-top: 4ex; } \"\n                      \"QFileDialog QAbstractItemView { background: #505050; } \"\n                      \"QComboBox:editable { background: #505050; } \"\n                      \"QProgressBar { background: #505050; }\";\n  qApp->setStyleSheet(css);\n  ui->inOutSelector->setDarkTheme();\n  ui->vSplitterLine->setStyleSheet(\"QFrame{ border-top: 0px none #a0a0a0; border-bottom: 1px solid rgb(160,160,160);}\");\n  Settings::UnselectedFilterTextColor = Settings::UnselectedFilterTextColor.darker(150);\n}\n\nvoid MainWindow::setPluginParameters(const RunParameters & parameters)\n{\n  _pluginParameters = parameters;\n}\n\nvoid MainWindow::updateFiltersFromSources(int ageLimit, bool useNetwork)\n{\n  if (useNetwork) {\n    ui->progressInfoWidget->startFiltersUpdateAnimationAndShow();\n  }\n  connect(Updater::getInstance(), &Updater::updateIsDone, this, &MainWindow::onUpdateDownloadsFinished, Qt::UniqueConnection);\n  Updater::getInstance()->startUpdate(ageLimit, 60, useNetwork);\n}\n\nvoid MainWindow::onUpdateDownloadsFinished(int status)\n{\n  ui->progressInfoWidget->stopAnimationAndHide();\n\n  buildFiltersTree();\n\n  if (status == (int)Updater::UpdateStatus::SomeFailed) {\n    if (!ui->progressInfoWidget->hasBeenCanceled()) {\n      showUpdateErrors();\n    }\n  } else if (status == (int)Updater::UpdateStatus::Successful) {\n    if (ui->cbInternetUpdate->isChecked()) {\n      QMessageBox::information(this, tr(\"Update completed\"), tr(\"Filter definitions have been updated.\"));\n    } else {\n      showMessage(tr(\"Filter definitions have been updated.\"), 3000);\n    }\n  } else if (status == (int)Updater::UpdateStatus::NotNecessary) {\n    showMessage(tr(\"No download was needed.\"), 3000);\n  }\n\n  ui->tbUpdateFilters->setEnabled(true);\n  if (_filtersPresenter->currentFilter().hash.isEmpty()) {\n    setNoFilter();\n  } else {\n    activateFilter(false);\n  }\n  ui->previewWidget->sendUpdateRequest();\n}\n\nvoid MainWindow::buildFiltersTree()\n{\n  saveCurrentParameters();\n  GmicStdLib::Array = Updater::getInstance()->buildFullStdlib();\n  const bool withVisibility = filtersSelectionMode();\n  _filtersPresenter->clear();\n  _filtersPresenter->readFilters();\n  _filtersPresenter->readFaves();\n  _filtersPresenter->restoreFaveHashLinksAfterCaseChange(); // TODO : Remove, some day!\n  if (_gtkFavesShouldBeImported) {\n    _filtersPresenter->importGmicGTKFaves();\n    _filtersPresenter->saveFaves();\n    _gtkFavesShouldBeImported = false;\n    QSettings().setValue(FAVES_IMPORT_KEY, true);\n  }\n  _filtersPresenter->toggleSelectionMode(withVisibility);\n}\n\nvoid MainWindow::retrieveFilterAndParametersFromPluginParameters(QString & hash, QList<QString> & parameters)\n{\n  if (_pluginParameters.command.empty() && _pluginParameters.filterPath.empty()) {\n    return;\n  }\n  hash.clear();\n  parameters.clear();\n  try {\n    QString plainPath = HtmlTranslator::html2txt(QString::fromStdString(_pluginParameters.filterPath), false);\n    QString command;\n    QString arguments;\n    QStringList providedParameters;\n    const FiltersPresenter::Filter & filter = _filtersPresenter->currentFilter();\n    if (!plainPath.isEmpty()) {\n      _filtersPresenter->selectFilterFromAbsolutePathOrPlainName(plainPath);\n      if (!filter.isValid()) {\n        throw tr(\"Plugin was called with a filter path with no matching filter:\\n\\nPath: %1\").arg(QString::fromStdString(_pluginParameters.filterPath));\n      }\n    }\n    if (_pluginParameters.command.empty()) {\n      if (filter.isValid()) {\n        QString error;\n        parameters = filter.isAFave ? filter.defaultParameterValues : FilterParametersWidget::defaultParameterList(filter.parameters, &error, nullptr, nullptr);\n        if (notEmpty(error)) {\n          throw tr(\"Error parsing filter parameters definition for filter:\\n\\n%1\\n\\nCannot retrieve default parameters.\\n\\n%2\").arg(filter.fullPath).arg(error);\n        }\n        hash = filter.hash;\n      }\n    } else {\n      // A command (and maybe a path) is provided\n      if (!parseGmicUniqueFilterCommand(_pluginParameters.command.c_str(), command, arguments) //\n          || !parseGmicFilterParameters(arguments, providedParameters)) {\n        throw tr(\"Plugin was called with a command that cannot be parsed:\\n\\n%1\").arg(elided80(_pluginParameters.command));\n      }\n      if (plainPath.isEmpty()) {\n        _filtersPresenter->selectFilterFromCommand(command);\n        if (filter.isInvalid()) {\n          throw tr(\"Plugin was called with a command that cannot be recognized as a filter:\\n\\nCommand: %1\").arg(elided80(_pluginParameters.command));\n        }\n      } else { // Filter has already been selected (above) from its path\n        if (filter.command != command) {\n          throw tr(\"Plugin was called with a command that does not match the provided path:\\n\\nPath: %1\\nCommand: %2\\nCommand found for this path : %3\") //\n              .arg(elided80(_pluginParameters.filterPath))\n              .arg(QString::fromStdString(_pluginParameters.command))\n              .arg(filter.command);\n        }\n      }\n      QString error;\n      QVector<int> lengths;\n      auto defaults = FilterParametersWidget::defaultParameterList(filter.parameters, &error, nullptr, &lengths);\n      if (notEmpty(error)) {\n        throw tr(\"Error parsing filter parameters definition for filter:\\n\\n%1\\n\\nCannot retrieve default parameters.\\n\\n%2\").arg(filter.fullPath).arg(error);\n      }\n      if (filter.isAFave) {\n        // lengths have been computed, but we replace 'defaults' with Fave's ones.\n        defaults = filter.defaultParameterValues;\n      }\n      hash = filter.hash;\n      auto expandedDefaults = expandParameterList(defaults, lengths);\n      auto completed = completePrefixFromFullList(providedParameters, expandedDefaults);\n      parameters = mergeSubsequences(completed, lengths);\n    }\n  } catch (const QString & errorMessage) {\n    hash.clear();\n    parameters.clear();\n    QMessageBox::critical(this, \"Error with plugin arguments\", errorMessage);\n  }\n}\n\nQString MainWindow::screenGeometries()\n{\n  QList<QScreen *> screens = QGuiApplication::screens();\n  QStringList geometries;\n  for (QScreen * screen : screens) {\n    QRect geometry = screen->geometry();\n    geometries.push_back(QString(\"(%1,%2,%3,%4)\").arg(geometry.x()).arg(geometry.y()).arg(geometry.width()).arg(geometry.height()));\n  }\n  return geometries.join(QString());\n}\n\nvoid MainWindow::updateFilters(bool internet)\n{\n  ui->tbUpdateFilters->setEnabled(false);\n  updateFiltersFromSources(0, internet);\n}\n\nvoid MainWindow::onStartupFiltersUpdateFinished(int status)\n{\n  bool ok = QObject::disconnect(Updater::getInstance(), &Updater::updateIsDone, this, &MainWindow::onStartupFiltersUpdateFinished);\n  Q_ASSERT_X(ok, __PRETTY_FUNCTION__, \"Cannot disconnect Updater::updateIsDone from MainWindow::onStartupFiltersUpdateFinished\");\n\n  ui->progressInfoWidget->stopAnimationAndHide();\n  if (status == (int)Updater::UpdateStatus::SomeFailed) {\n    if (Settings::notifyFailedStartupUpdate()) {\n      showMessage(tr(\"Filters update could not be achieved\"), 3000);\n    }\n  } else if (status == (int)Updater::UpdateStatus::Successful) {\n    if (Updater::getInstance()->someNetworkUpdateAchieved()) {\n      showMessage(tr(\"Filter definitions have been updated.\"), 4000);\n    }\n  } else if (status == (int)Updater::UpdateStatus::NotNecessary) {\n  }\n\n  if (QSettings().value(FAVES_IMPORT_KEY, false).toBool() || !FavesModelReader::gmicGTKFaveFileAvailable()) {\n    _gtkFavesShouldBeImported = false;\n  } else {\n    _gtkFavesShouldBeImported = askUserForGTKFavesImport();\n  }\n\n  buildFiltersTree();\n  ui->searchField->setFocus();\n\n  // Let the standalone version load an image, if necessary (not pretty)\n  if (GmicQtHost::ApplicationName.isEmpty()) {\n    LayersExtentProxy::clear();\n    QSize extent = LayersExtentProxy::getExtent(ui->inOutSelector->inputMode());\n    ui->previewWidget->setFullImageSize(extent);\n    ui->previewWidget->update();\n  }\n\n  // Retrieve and select previously selected filter\n  QString hash = QSettings().value(\"SelectedFilter\", QString()).toString();\n  if (_newSession || !_lastExecutionOK) {\n    hash.clear();\n  }\n\n  // If plugin was called with parameters\n  QList<QString> pluginParametersCommandArguments;\n  retrieveFilterAndParametersFromPluginParameters(hash, pluginParametersCommandArguments);\n\n  _filtersPresenter->selectFilterFromHash(hash, false);\n  if (_filtersPresenter->currentFilter().hash.isEmpty()) {\n    _filtersPresenter->expandFaveFolder();\n    _filtersPresenter->adjustViewSize();\n    ui->previewWidget->setPreviewFactor(PreviewFactorFullImage, true);\n    setNoFilter();\n  } else {\n    _filtersPresenter->adjustViewSize();\n    activateFilter(true, pluginParametersCommandArguments);\n  }\n  ui->previewWidget->sendUpdateRequest();\n  // Preview update is also triggered when PreviewWidget receives\n  // the WindowActivate Event (while pendingResize is true\n  // after the very first resize event).\n}\n\nvoid MainWindow::showZoomWarningIfNeeded()\n{\n  const FiltersPresenter::Filter & currentFilter = _filtersPresenter->currentFilter();\n  ui->zoomLevelSelector->showWarning(!currentFilter.hash.isEmpty() && !currentFilter.isAccurateIfZoomed && !ui->previewWidget->isAtDefaultZoom());\n}\n\nvoid MainWindow::updateZoomLabel(double zoom)\n{\n  ui->zoomLevelSelector->display(zoom);\n}\n\nvoid MainWindow::onFiltersSelectionModeToggled(bool on)\n{\n  _filtersPresenter->toggleSelectionMode(on);\n}\n\nvoid MainWindow::onPreviewCheckBoxToggled(bool on)\n{\n  if (!on) {\n    _processor.cancel();\n  }\n  ui->previewWidget->onPreviewToggled(on);\n}\n\nvoid MainWindow::onFilterSelectionChanged()\n{\n  activateFilter(false);\n  ui->previewWidget->sendUpdateRequest();\n}\n\nvoid MainWindow::onEscapeKeyPressed()\n{\n  ui->searchField->clear();\n  if (_processor.isProcessing()) {\n    if (_processor.isProcessingFullImage()) {\n      ui->progressInfoWidget->cancel();\n      ui->pbCancel->animateClick();\n    } else {\n      _processor.cancel();\n      ui->previewWidget->displayOriginalImage();\n      ui->tbUpdateFilters->setEnabled(true);\n    }\n  }\n}\n\nvoid MainWindow::clearMessage()\n{\n  ui->messageLabel->setText(QString());\n  if (!_messageTimerID) {\n    return;\n  }\n  killTimer(_messageTimerID);\n  _messageTimerID = 0;\n}\n\nvoid MainWindow::clearRightMessage()\n{\n  ui->rightMessageLabel->hide();\n  ui->rightMessageLabel->clear();\n}\n\nvoid MainWindow::showRightMessage(const QString & text)\n{\n  ui->rightMessageLabel->setText(text);\n  ui->rightMessageLabel->show();\n}\n\nvoid MainWindow::timerEvent(QTimerEvent * e)\n{\n  if (e->timerId() == _messageTimerID) {\n    clearMessage();\n    e->accept();\n  }\n  e->ignore();\n}\n\nvoid MainWindow::showMessage(const QString & text, int ms)\n{\n  clearMessage();\n  if (!text.isEmpty()) {\n    ui->messageLabel->setText(text);\n    if (ms) {\n      _messageTimerID = startTimer(ms);\n    }\n  }\n}\n\nvoid MainWindow::showUpdateErrors()\n{\n  QString message(tr(\"The update could not be achieved<br>\"\n                     \"because of the following errors:<br>\"));\n  QList<QString> errors = Updater::getInstance()->errorMessages();\n  for (const QString & s : errors) {\n    message += QString(\"<br/>%1\").arg(s);\n  }\n  QMessageBox::information(this, tr(\"Update error\"), message);\n}\n\nvoid MainWindow::makeConnections()\n{\n  connect(ui->zoomLevelSelector, &ZoomLevelSelector::valueChanged, ui->previewWidget, &PreviewWidget::setZoomLevel);\n\n  connect(ui->previewWidget, &PreviewWidget::zoomChanged, this, &MainWindow::showZoomWarningIfNeeded);\n  connect(ui->previewWidget, &PreviewWidget::zoomChanged, this, &MainWindow::updateZoomLabel);\n  connect(ui->previewWidget, &PreviewWidget::previewVisibleRectIsChanging, &_processor, &GmicProcessor::cancel);\n  connect(_filtersPresenter, &FiltersPresenter::filterSelectionChanged, this, &MainWindow::onFilterSelectionChanged);\n  connect(ui->pbOk, &QPushButton::clicked, this, &MainWindow::onOkClicked);\n  connect(ui->pbClose, &QPushButton::clicked, this, &MainWindow::close);\n  connect(ui->pbApply, &QPushButton::clicked, this, &MainWindow::onApplyClicked);\n  connect(ui->tbResetParameters, &QToolButton::clicked, this, &MainWindow::onReset);\n  connect(ui->tbRandomizeParameters, &QToolButton::clicked, this, &MainWindow::onRandomizeParameters);\n  connect(ui->tbCopyCommand, &QToolButton::clicked, this, &MainWindow::onCopyGMICCommand);\n  connect(ui->tbUpdateFilters, &QToolButton::clicked, this, &MainWindow::onUpdateFiltersClicked);\n  connect(ui->pbSettings, &QPushButton::clicked, this, &MainWindow::onSettingsClicked);\n  connect(ui->pbFullscreen, &QPushButton::toggled, this, &MainWindow::onToggleFullScreen);\n  connect(ui->filterParams, &FilterParametersWidget::valueChanged, this, &MainWindow::onParametersChanged);\n  connect(ui->previewWidget, &PreviewWidget::previewUpdateRequested, this, QOverload<>::of(&MainWindow::onPreviewUpdateRequested));\n  connect(ui->previewWidget, &PreviewWidget::keypointPositionsChanged, this, &MainWindow::onPreviewKeypointsEvent);\n  connect(ui->zoomLevelSelector, &ZoomLevelSelector::zoomIn, ui->previewWidget, QOverload<>::of(&PreviewWidget::zoomIn));\n  connect(ui->zoomLevelSelector, &ZoomLevelSelector::zoomOut, ui->previewWidget, QOverload<>::of(&PreviewWidget::zoomOut));\n  connect(ui->zoomLevelSelector, &ZoomLevelSelector::zoomReset, this, &MainWindow::onPreviewZoomReset);\n  connect(ui->tbAddFave, &QToolButton::clicked, this, &MainWindow::onAddFave);\n  connect(_filtersPresenter, &FiltersPresenter::faveAdditionRequested, this, &MainWindow::onAddFave);\n  connect(ui->tbRemoveFave, &QToolButton::clicked, this, &MainWindow::onRemoveFave);\n  connect(ui->tbRenameFave, &QToolButton::clicked, this, &MainWindow::onRenameFave);\n  connect(ui->inOutSelector, &InOutPanel::inputModeChanged, this, &MainWindow::onInputModeChanged);\n  connect(ui->cbPreview, &QCheckBox::toggled, this, &MainWindow::onPreviewCheckBoxToggled);\n  connect(ui->searchField, &SearchFieldWidget::textChanged, this, &MainWindow::search);\n  connect(ui->tbExpandCollapse, &QToolButton::clicked, this, &MainWindow::expandOrCollapseFolders);\n  connect(ui->pbCancel, &QPushButton::clicked, this, &MainWindow::onCancelClicked);\n  connect(ui->progressInfoWidget, &ProgressInfoWidget::canceled, this, &MainWindow::onProgressionWidgetCancelClicked);\n  connect(ui->tbSelectionMode, &QToolButton::toggled, this, &MainWindow::onFiltersSelectionModeToggled);\n  connect(&_processor, &GmicProcessor::previewImageAvailable, this, &MainWindow::onPreviewImageAvailable);\n  connect(&_processor, &GmicProcessor::guiDynamismRunDone, this, &MainWindow::onGUIDynamismRunDone);\n  connect(&_processor, &GmicProcessor::previewCommandFailed, this, &MainWindow::onPreviewError);\n  connect(&_processor, &GmicProcessor::fullImageProcessingFailed, this, &MainWindow::onFullImageProcessingError);\n  connect(&_processor, &GmicProcessor::fullImageProcessingDone, this, &MainWindow::onFullImageProcessingDone);\n  connect(&_processor, &GmicProcessor::aboutToSendImagesToHost, ui->progressInfoWidget, &ProgressInfoWidget::stopAnimationAndHide);\n  connect(_filtersPresenter, &FiltersPresenter::faveNameChanged, this, &MainWindow::setFilterName);\n}\n\nvoid MainWindow::onPreviewUpdateRequested()\n{\n  clearMessage();\n  clearRightMessage();\n  onPreviewUpdateRequested(false);\n}\n\nvoid MainWindow::onPreviewUpdateRequested(bool synchronous, bool randomized)\n{\n  const FiltersPresenter::Filter currentFilter = _filtersPresenter->currentFilter();\n  if (currentFilter.isNoPreviewFilter()) {\n    ui->previewWidget->displayOriginalImage();\n    return;\n  }\n  FilterGuiDynamism dynamism = FilterGuiDynamismCache::getValue(currentFilter.hash);\n  if (!ui->cbPreview->isChecked() && (dynamism == FilterGuiDynamism::Static)) {\n    ui->previewWidget->invalidateSavedPreview();\n    return;\n  }\n  ui->tbUpdateFilters->setEnabled(false);\n  _processor.init();\n  GmicProcessor::FilterContext context;\n  if (!ui->cbPreview->isChecked()) {\n    context.requestType = GmicProcessor::FilterContext::RequestType::GUIDynamismRun;\n  } else {\n    context.requestType = synchronous ? GmicProcessor::FilterContext::RequestType::SynchronousPreview : GmicProcessor::FilterContext::RequestType::Preview;\n  }\n  GmicProcessor::FilterContext::VisibleRect & rect = context.visibleRect;\n  ui->previewWidget->normalizedVisibleRect(rect.x, rect.y, rect.w, rect.h);\n\n  context.inputOutputState = ui->inOutSelector->state();\n  ui->previewWidget->getPositionStringCorrection(context.positionStringCorrection.xFactor, context.positionStringCorrection.yFactor);\n  context.zoomFactor = ui->previewWidget->currentZoomFactor();\n  context.previewWindowWidth = ui->previewWidget->width();\n  context.previewWindowHeight = ui->previewWidget->height();\n  context.previewTimeout = Settings::previewTimeout();\n  // context.filterName = currentFilter.plainTextName; // Unused in this context\n  context.filterHash = currentFilter.hash;\n  context.filterCommand = currentFilter.previewCommand;\n  context.filterArguments = ui->filterParams->valueString();\n  context.previewFromFullImage = currentFilter.previewFromFullImage;\n  context.previewCheckBox = ui->cbPreview->isChecked();\n  context.randomized = randomized;\n  _processor.setContext(context);\n  _processor.execute();\n\n  ui->filterParams->clearButtonParameters();\n  _okButtonShouldApply = true;\n}\n\nvoid MainWindow::onPreviewKeypointsEvent(unsigned int flags, unsigned long time)\n{\n  if (flags & PreviewWidget::KeypointMouseReleaseEvent) {\n    if (flags & PreviewWidget::KeypointBurstEvent) {\n      // Notify the filter twice (synchronously) so that it can guess that the button has been released\n      ui->filterParams->setKeypoints(ui->previewWidget->keypoints(), false);\n      onPreviewUpdateRequested(true);\n      onPreviewUpdateRequested(true);\n    } else {\n      ui->filterParams->setKeypoints(ui->previewWidget->keypoints(), true);\n    }\n    _lastPreviewKeypointBurstUpdateTime = 0;\n  } else {\n    ui->filterParams->setKeypoints(ui->previewWidget->keypoints(), false);\n    if ((flags & PreviewWidget::KeypointBurstEvent)) {\n      const auto t = static_cast<ulong>(_processor.lastPreviewFilterExecutionDurationMS());\n      const bool keypointBurstEnabled = (t <= KEYPOINTS_INTERACTIVE_LOWER_DELAY_MS) ||\n                                        ((t <= KEYPOINTS_INTERACTIVE_UPPER_DELAY_MS) && ((ulong)_processor.averagePreviewFilterExecutionDuration() <= KEYPOINTS_INTERACTIVE_MIDDLE_DELAY_MS));\n      ulong msSinceLastBurstEvent = time - _lastPreviewKeypointBurstUpdateTime;\n      if (keypointBurstEnabled && (msSinceLastBurstEvent >= (ulong)_processor.lastPreviewFilterExecutionDurationMS())) {\n        onPreviewUpdateRequested(true);\n        _lastPreviewKeypointBurstUpdateTime = time;\n      }\n    }\n  }\n}\n\nvoid MainWindow::onPreviewImageAvailable()\n{\n  ui->filterParams->setValues(_processor.gmicStatus(), false);\n  ui->filterParams->setVisibilityStates(_processor.parametersVisibilityStates());\n  // Make sure keypoint positions are synchronized with gmic status\n  if (ui->filterParams->hasKeypoints()) {\n    ui->previewWidget->setKeypoints(ui->filterParams->keypoints());\n  }\n  ui->previewWidget->setPreviewImage(_processor.previewImage());\n  ui->previewWidget->enableRightClick();\n  ui->tbUpdateFilters->setEnabled(true);\n}\n\nvoid MainWindow::onGUIDynamismRunDone()\n{\n  ui->filterParams->setValues(_processor.gmicStatus(), false);\n  ui->filterParams->setVisibilityStates(_processor.parametersVisibilityStates());\n  if (ui->filterParams->hasKeypoints()) {\n    ui->previewWidget->setKeypoints(ui->filterParams->keypoints());\n  }\n  ui->tbUpdateFilters->setEnabled(true);\n}\n\nvoid MainWindow::onPreviewError(const QString & message)\n{\n  ui->previewWidget->setPreviewErrorMessage(message);\n  ui->previewWidget->enableRightClick();\n  ui->tbUpdateFilters->setEnabled(true);\n}\n\nvoid MainWindow::onParametersChanged()\n{\n  if (ui->filterParams->hasKeypoints()) {\n    ui->previewWidget->setKeypoints(ui->filterParams->keypoints());\n  }\n  ui->previewWidget->sendUpdateRequest();\n}\n\nbool MainWindow::isAccepted()\n{\n  return _isAccepted;\n}\n\nvoid MainWindow::setFilterName(const QString & text)\n{\n  ui->filterName->setText(QString(\"<b>%1</b>\").arg(text));\n}\n\nvoid MainWindow::processImage()\n{\n  // Abort any already running thread\n  _processor.init();\n  const FiltersPresenter::Filter currentFilter = _filtersPresenter->currentFilter();\n  if (currentFilter.isNoApplyFilter()) {\n    return;\n  }\n\n  ui->progressInfoWidget->startFilterThreadAnimationAndShow();\n  enableWidgetList(false);\n  ui->pbCancel->setEnabled(true);\n\n  GmicProcessor::FilterContext context;\n  context.requestType = GmicProcessor::FilterContext::RequestType::FullImage;\n  GmicProcessor::FilterContext::VisibleRect & rect = context.visibleRect;\n  rect.x = rect.y = rect.w = rect.h = -1;\n  context.inputOutputState = ui->inOutSelector->state();\n  context.filterName = currentFilter.plainTextName;\n  context.filterFullPath = currentFilter.fullPath;\n  context.filterHash = currentFilter.hash;\n  context.filterCommand = currentFilter.command;\n  context.previewCheckBox = ui->cbPreview->isChecked();\n  context.randomized = false;\n  ui->filterParams->updateValueString(false); // Required to get up-to-date values of text parameters\n  context.filterArguments = ui->filterParams->valueString();\n  context.previewFromFullImage = false;\n  _processor.setGmicStatusQuotedParameters(ui->filterParams->quotedParameters());\n  ui->filterParams->clearButtonParameters();\n  _processor.setContext(context);\n  _processor.execute();\n}\n\nvoid MainWindow::onFullImageProcessingError(const QString & message)\n{\n  ui->progressInfoWidget->stopAnimationAndHide();\n  QMessageBox::warning(this, tr(\"Error\"), message, QMessageBox::Close);\n  enableWidgetList(true);\n  ui->pbCancel->setEnabled(false);\n  if ((_pendingActionAfterCurrentProcessing == ProcessingAction::Ok) || (_pendingActionAfterCurrentProcessing == ProcessingAction::Close)) {\n    close();\n  }\n}\n\nvoid MainWindow::onInputModeChanged(InputMode mode)\n{\n  PersistentMemory::clear();\n  ui->previewWidget->setFullImageSize(LayersExtentProxy::getExtent(mode));\n  ui->previewWidget->sendUpdateRequest();\n}\n\nvoid MainWindow::onVeryFirstShowEvent()\n{\n  adjustVerticalSplitter();\n  if (_newSession) {\n    Logger::clear();\n  }\n  QObject::connect(Updater::getInstance(), &Updater::updateIsDone, this, &MainWindow::onStartupFiltersUpdateFinished);\n  Logger::setMode(Settings::outputMessageMode());\n  Updater::setOutputMessageMode(Settings::outputMessageMode());\n  int ageLimit;\n  {\n    QSettings settings;\n    ageLimit = settings.value(INTERNET_UPDATE_PERIODICITY_KEY, INTERNET_DEFAULT_PERIODICITY).toInt();\n  }\n  const bool useNetwork = (ageLimit != INTERNET_NEVER_UPDATE_PERIODICITY);\n  ui->progressInfoWidget->startFiltersUpdateAnimationAndShow();\n  Updater::getInstance()->startUpdate(ageLimit, 4, useNetwork);\n}\n\nvoid MainWindow::setZoomConstraint()\n{\n  const FiltersPresenter::Filter & currentFilter = _filtersPresenter->currentFilter();\n  ZoomConstraint constraint;\n  if (currentFilter.hash.isEmpty() || currentFilter.isAccurateIfZoomed || Settings::previewZoomAlwaysEnabled() || (currentFilter.previewFactor == PreviewFactorAny)) {\n    constraint = ZoomConstraint::Any;\n  } else if (currentFilter.previewFactor == PreviewFactorActualSize) {\n    constraint = ZoomConstraint::OneOrMore;\n  } else {\n    constraint = ZoomConstraint::Fixed;\n  }\n  showZoomWarningIfNeeded();\n  ui->zoomLevelSelector->setZoomConstraint(constraint);\n  ui->previewWidget->setZoomConstraint(constraint);\n}\n\nvoid MainWindow::onFullImageProcessingDone()\n{\n  ui->progressInfoWidget->stopAnimationAndHide();\n  enableWidgetList(true);\n  ui->pbCancel->setEnabled(false);\n  ui->previewWidget->update();\n  ui->filterParams->setValues(_processor.gmicStatus(), false);\n  ui->filterParams->setVisibilityStates(_processor.parametersVisibilityStates());\n  if ((_pendingActionAfterCurrentProcessing == ProcessingAction::Ok || _pendingActionAfterCurrentProcessing == ProcessingAction::Close)) {\n    _isAccepted = (_pendingActionAfterCurrentProcessing == ProcessingAction::Ok);\n    close();\n  } else {\n    // Extent cache has been cleared by the GmicProcessor\n    QSize extent = LayersExtentProxy::getExtent(ui->inOutSelector->inputMode());\n    ui->previewWidget->updateFullImageSizeIfDifferent(extent);\n    ui->previewWidget->sendUpdateRequest();\n    _okButtonShouldApply = false;\n    if (_pendingActionAfterCurrentProcessing == ProcessingAction::Apply) {\n      showRightMessage(QString(tr(\"[Elapsed time: %1]\")).arg(readableDuration(_processor.lastCompletedExecutionTime())));\n    }\n  }\n}\n\nvoid MainWindow::expandOrCollapseFolders()\n{\n  if (_expandCollapseIcon == &_expandIcon) {\n    _filtersPresenter->expandAll();\n    ui->tbExpandCollapse->setIcon(_collapseIcon);\n    _expandCollapseIcon = &_collapseIcon;\n  } else {\n    ui->tbExpandCollapse->setIcon(_expandIcon);\n    _filtersPresenter->collapseAll();\n    _expandCollapseIcon = &_expandIcon;\n  }\n}\n\nvoid MainWindow::search(const QString & text)\n{\n  _filtersPresenter->applySearchCriterion(text);\n}\n\nvoid MainWindow::onApplyClicked()\n{\n  clearMessage();\n  clearRightMessage();\n  _pendingActionAfterCurrentProcessing = ProcessingAction::Apply;\n  processImage();\n}\n\nvoid MainWindow::onOkClicked()\n{\n  if (_filtersPresenter->currentFilter().isNoApplyFilter()) {\n    _isAccepted = _processor.completedFullImageProcessingCount();\n    close();\n    return;\n  }\n  if (_okButtonShouldApply) {\n    clearMessage();\n    clearRightMessage();\n    _pendingActionAfterCurrentProcessing = ProcessingAction::Ok;\n    processImage();\n  } else {\n    _isAccepted = _processor.completedFullImageProcessingCount();\n    close();\n  }\n}\n\nvoid MainWindow::onReset()\n{\n  if (!_filtersPresenter->currentFilter().hash.isEmpty() && _filtersPresenter->currentFilter().isAFave) {\n    PersistentMemory::clear();\n    ui->filterParams->setVisibilityStates(_filtersPresenter->currentFilter().defaultVisibilityStates);\n    ui->filterParams->setValues(_filtersPresenter->currentFilter().defaultParameterValues, true);\n    return;\n  }\n  if (!_filtersPresenter->currentFilter().isNoPreviewFilter()) {\n    PersistentMemory::clear();\n    ui->filterParams->reset(true);\n  }\n}\n\nvoid MainWindow::onRandomizeParameters()\n{\n  if (_filtersPresenter->currentFilter().isNoPreviewFilter()) {\n    return;\n  }\n  ui->filterParams->randomize();\n  if (ui->filterParams->hasKeypoints()) {\n    ui->previewWidget->setKeypoints(ui->filterParams->keypoints());\n  }\n  ui->previewWidget->invalidateSavedPreview();\n  clearMessage();\n  clearRightMessage();\n  onPreviewUpdateRequested(false, true);\n}\n\nvoid MainWindow::onCopyGMICCommand()\n{\n  QClipboard * clipboard = QGuiApplication::clipboard();\n  QString fullCommand = _filtersPresenter->currentFilter().command;\n  fullCommand += \" \";\n  fullCommand += ui->filterParams->valueString();\n  clipboard->setText(fullCommand, QClipboard::Clipboard);\n}\n\nvoid MainWindow::onPreviewZoomReset()\n{\n  if (!_filtersPresenter->currentFilter().hash.isEmpty()) {\n    ui->previewWidget->setPreviewFactor(_filtersPresenter->currentFilter().previewFactor, true);\n    ui->previewWidget->sendUpdateRequest();\n    ui->zoomLevelSelector->showWarning(false);\n  }\n}\n\nvoid MainWindow::onUpdateFiltersClicked()\n{\n  updateFilters(ui->cbInternetUpdate->isChecked());\n}\n\nvoid MainWindow::saveCurrentParameters()\n{\n  QString hash = ui->filterParams->filterHash();\n  if (!hash.isEmpty()) {\n    ParametersCache::setValues(hash, ui->filterParams->valueStringList());\n    ParametersCache::setVisibilityStates(hash, ui->filterParams->visibilityStates());\n    ParametersCache::setInputOutputState(hash, ui->inOutSelector->state(), _filtersPresenter->currentFilter().defaultInputMode);\n  }\n}\n\nvoid MainWindow::saveSettings()\n{\n  QSettings settings;\n\n  _filtersPresenter->saveSettings(settings);\n\n  // Cleanup obsolete keys\n  settings.remove(\"OutputMessageModeIndex\");\n  settings.remove(\"OutputMessageModeValue\");\n  settings.remove(\"InputLayers\");\n  settings.remove(\"OutputMode\");\n  settings.remove(\"PreviewMode\");\n  settings.remove(\"Config/VerticalSplitterSize0\");\n  settings.remove(\"Config/VerticalSplitterSize1\");\n  settings.remove(\"Config/VerticalSplitterSizeTop\");\n  settings.remove(\"Config/VerticalSplitterSizeBottom\");\n\n  // Save all settings\n\n  Settings::save(settings);\n  settings.setValue(\"LastExecution/gmic_version\", gmic_version);\n  _processor.saveSettings(settings);\n  settings.setValue(\"SelectedFilter\", _filtersPresenter->currentFilter().hash);\n  settings.setValue(\"Config/MainWindowPosition\", frameGeometry().topLeft());\n  settings.setValue(\"Config/MainWindowRect\", rect());\n  settings.setValue(\"Config/MainWindowMaximized\", isMaximized());\n  settings.setValue(\"Config/ScreenGeometries\", screenGeometries());\n  settings.setValue(\"Config/PreviewEnabled\", ui->cbPreview->isChecked());\n  settings.setValue(\"LastExecution/ExitedNormally\", true);\n  settings.setValue(\"LastExecution/HostApplicationID\", host_app_pid());\n  QList<int> splitterSizes = ui->splitter->sizes();\n  for (int i = 0; i < splitterSizes.size(); ++i) {\n    settings.setValue(QString(\"Config/PanelSize%1\").arg(i), splitterSizes.at(i));\n  }\n  splitterSizes = ui->verticalSplitter->sizes();\n  if (!_filtersPresenter->currentFilter().hash.isEmpty() && !_filtersPresenter->currentFilter().isInvalid()) {\n    settings.setValue(QString(\"Config/ParamsVerticalSplitterSizeTop\"), splitterSizes.at(0));\n    settings.setValue(QString(\"Config/ParamsVerticalSplitterSizeBottom\"), splitterSizes.at(1));\n  }\n  settings.setValue(REFRESH_USING_INTERNET_KEY, ui->cbInternetUpdate->isChecked());\n}\n\nvoid MainWindow::loadSettings()\n{\n  QSettings settings;\n  _filtersPresenter->loadSettings(settings);\n  _lastExecutionOK = settings.value(\"LastExecution/ExitedNormally\", true).toBool();\n  _newSession = host_app_pid() != settings.value(\"LastExecution/HostApplicationID\", 0).toUInt();\n  settings.setValue(\"LastExecution/ExitedNormally\", false);\n  ui->inOutSelector->reset();\n\n  bool previewEnabled = settings.value(\"Config/PreviewEnabled\", true).toBool();\n  ui->cbPreview->setChecked(previewEnabled);\n  ui->previewWidget->setPreviewEnabled(previewEnabled);\n\n  // Preview position\n  if (settings.value(\"Config/PreviewPosition\", \"Left\").toString() == \"Left\") {\n    setPreviewPosition(PreviewPosition::Left);\n  }\n  if (Settings::darkThemeEnabled()) {\n    setDarkTheme();\n  }\n  if (!Settings::visibleLogos()) {\n    ui->logosLabel->hide();\n  }\n\n  // Mainwindow geometry\n  QPoint position = settings.value(\"Config/MainWindowPosition\", QPoint(20, 20)).toPoint();\n  QRect r = settings.value(\"Config/MainWindowRect\", QRect()).toRect();\n  const bool sameScreenGeometries = (settings.value(\"Config/ScreenGeometries\", QString()).toString() == screenGeometries());\n  if (settings.value(\"Config/MainWindowMaximized\", false).toBool()) {\n    ui->pbFullscreen->setChecked(true);\n  } else {\n    if (r.isValid() && sameScreenGeometries) {\n      if ((r.width() < 640) || (r.height() < 400)) {\n        r.setSize(QSize(640, 400));\n      }\n      setGeometry(r);\n      move(position);\n    } else {\n      QList<QScreen *> screens = QGuiApplication::screens();\n      if (!screens.isEmpty()) {\n        QRect screenSize = screens.front()->geometry();\n        screenSize.setWidth(static_cast<int>(screenSize.width() * 0.66));\n        screenSize.setHeight(static_cast<int>(screenSize.height() * 0.66));\n        screenSize.moveCenter(screens.front()->geometry().center());\n        setGeometry(screenSize);\n        int w = screenSize.width();\n        ui->splitter->setSizes(QList<int>() << static_cast<int>(w * 0.4) << static_cast<int>(w * 0.2) << static_cast<int>(w * 0.4));\n      }\n    }\n  }\n\n  // Splitter sizes\n  QList<int> sizes;\n  for (int i = 0; i < 3; ++i) {\n    int s = settings.value(QString(\"Config/PanelSize%1\").arg(i), 0).toInt();\n    if (s) {\n      sizes.push_back(s);\n    }\n  }\n  if (sizes.size() == 3) {\n    ui->splitter->setSizes(sizes);\n  }\n\n  ui->cbInternetUpdate->setChecked(settings.value(\"Config/RefreshInternetUpdate\", true).toBool());\n}\n\nvoid MainWindow::setPreviewPosition(MainWindow::PreviewPosition position)\n{\n  if (position == _previewPosition) {\n    return;\n  }\n  _previewPosition = position;\n\n  auto layout = dynamic_cast<QHBoxLayout *>(ui->belowPreviewWidget->layout());\n  if (layout) {\n    layout->removeWidget(ui->belowPreviewPadding);\n    layout->removeWidget(ui->logosLabel);\n    if (position == MainWindow::PreviewPosition::Left) {\n      layout->addWidget(ui->logosLabel);\n      layout->addWidget(ui->belowPreviewPadding);\n    } else {\n      layout->addWidget(ui->belowPreviewPadding);\n      layout->addWidget(ui->logosLabel);\n    }\n  }\n\n  // Swap splitter widgets\n  QWidget * preview;\n  QWidget * list;\n  QWidget * params;\n  if (position == MainWindow::PreviewPosition::Right) {\n    ui->messageLabel->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);\n    preview = ui->splitter->widget(0);\n    list = ui->splitter->widget(1);\n    params = ui->splitter->widget(2);\n  } else {\n    ui->messageLabel->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);\n    list = ui->splitter->widget(0);\n    params = ui->splitter->widget(1);\n    preview = ui->splitter->widget(2);\n  }\n  preview->hide();\n  list->hide();\n  params->hide();\n  preview->setParent(this);\n  list->setParent(this);\n  params->setParent(this);\n  if (position == MainWindow::PreviewPosition::Right) {\n    ui->splitter->addWidget(list);\n    ui->splitter->addWidget(params);\n    ui->splitter->addWidget(preview);\n  } else {\n    ui->splitter->addWidget(preview);\n    ui->splitter->addWidget(list);\n    ui->splitter->addWidget(params);\n  }\n  preview->show();\n  list->show();\n  params->show();\n  ui->logosLabel->setAlignment(Qt::AlignVCenter | ((_previewPosition == PreviewPosition::Right) ? Qt::AlignRight : Qt::AlignLeft));\n}\n\nvoid MainWindow::adjustVerticalSplitter()\n{\n  QList<int> sizes;\n  QSettings settings;\n  sizes.push_back(settings.value(QString(\"Config/ParamsVerticalSplitterSizeTop\"), -1).toInt());\n  sizes.push_back(settings.value(QString(\"Config/ParamsVerticalSplitterSizeBottom\"), -1).toInt());\n  const int splitterHeight = ui->verticalSplitter->height();\n  if ((sizes.front() != -1) && (sizes.back() != -1) && (sizes.front() + sizes.back() <= splitterHeight)) {\n    ui->verticalSplitter->setSizes(sizes);\n  } else {\n    const int inOutHeight = std::max(ui->inOutSelector->sizeHint().height(), 75);\n    if (splitterHeight > inOutHeight) {\n      sizes.clear();\n      sizes.push_back(splitterHeight - inOutHeight);\n      sizes.push_back(inOutHeight);\n      ui->verticalSplitter->setSizes(sizes);\n    }\n  }\n}\n\nbool MainWindow::filtersSelectionMode()\n{\n  return ui->tbSelectionMode->isChecked();\n}\n\nvoid MainWindow::activateFilter(bool resetZoom, const QList<QString> & values)\n{\n  saveCurrentParameters();\n  const FiltersPresenter::Filter & filter = _filtersPresenter->currentFilter();\n  _processor.resetLastPreviewFilterExecutionDurations();\n  if (filter.hash.isEmpty()) {\n    setNoFilter();\n    return;\n  }\n\n  QList<QString> savedValues = values.isEmpty() ? ParametersCache::getValues(filter.hash) : values;\n  if (savedValues.isEmpty() && filter.isAFave) {\n    savedValues = filter.defaultParameterValues;\n  }\n  QList<int> savedVisibilityStates = ParametersCache::getVisibilityStates(filter.hash);\n  if (savedVisibilityStates.isEmpty() && filter.isAFave) {\n    savedVisibilityStates = filter.defaultVisibilityStates;\n  }\n  if (!ui->filterParams->build(filter.name, filter.hash, filter.parameters, savedValues, savedVisibilityStates)) {\n    _filtersPresenter->setInvalidFilter();\n    ui->previewWidget->setKeypoints(KeypointList());\n  } else {\n    ui->previewWidget->setKeypoints(ui->filterParams->keypoints());\n    ui->tbRandomizeParameters->setEnabled(ui->filterParams->acceptRandom());\n  }\n  setFilterName(FilterTextTranslator::translate(filter.name));\n  ui->inOutSelector->enable();\n  if (ui->inOutSelector->hasActiveControls()) {\n    ui->inOutSelector->show();\n  } else {\n    ui->inOutSelector->hide();\n  }\n\n  InputOutputState inOutState = ParametersCache::getInputOutputState(filter.hash);\n  if (inOutState.inputMode == InputMode::Unspecified) {\n    if ((filter.defaultInputMode != InputMode::Unspecified)) {\n      inOutState.inputMode = filter.defaultInputMode;\n    } else {\n      inOutState.inputMode = DefaultInputMode;\n    }\n  }\n\n  // Take plugin parameters into account\n  if (_pluginParameters.inputMode != InputMode::Unspecified) {\n    inOutState.inputMode = _pluginParameters.inputMode;\n    _pluginParameters.inputMode = InputMode::Unspecified;\n  }\n  if (_pluginParameters.outputMode != OutputMode::Unspecified) {\n    inOutState.outputMode = _pluginParameters.outputMode;\n    _pluginParameters.outputMode = OutputMode::Unspecified;\n  }\n\n  ui->inOutSelector->setState(inOutState, false);\n  ui->previewWidget->updateFullImageSizeIfDifferent(LayersExtentProxy::getExtent(ui->inOutSelector->inputMode()));\n  ui->filterName->setVisible(true);\n  ui->tbAddFave->setEnabled(true);\n  ui->previewWidget->setPreviewFactor(filter.previewFactor, resetZoom);\n  setZoomConstraint();\n  _okButtonShouldApply = true;\n  ui->tbResetParameters->setVisible(true);\n  ui->tbRandomizeParameters->setVisible(true);\n  ui->tbCopyCommand->setVisible(true);\n  ui->tbRemoveFave->setEnabled(filter.isAFave);\n  ui->tbRenameFave->setEnabled(filter.isAFave);\n}\n\nvoid MainWindow::setNoFilter()\n{\n  PersistentMemory::clear();\n  ui->filterParams->setNoFilter(_filtersPresenter->errorMessage());\n  ui->previewWidget->disableRightClick();\n  ui->previewWidget->setKeypoints(KeypointList());\n  ui->inOutSelector->hide();\n  ui->inOutSelector->setState(InputOutputState::Default, false);\n  ui->filterName->setVisible(false);\n  ui->tbAddFave->setEnabled(false);\n  ui->tbCopyCommand->setVisible(false);\n  ui->tbResetParameters->setVisible(false);\n  ui->tbRandomizeParameters->setVisible(false);\n  ui->zoomLevelSelector->showWarning(false);\n  _okButtonShouldApply = false;\n  ui->tbRemoveFave->setEnabled(_filtersPresenter->danglingFaveIsSelected());\n  ui->tbRenameFave->setEnabled(false);\n}\n\nvoid MainWindow::showEvent(QShowEvent * event)\n{\n  TIMING;\n  event->accept();\n  if (!_showEventReceived) {\n    _showEventReceived = true;\n    onVeryFirstShowEvent();\n  }\n}\n\nvoid MainWindow::resizeEvent(QResizeEvent * e)\n{\n  // Check if size is reducing\n  if ((e->size().width() < e->oldSize().width() || e->size().height() < e->oldSize().height()) && ui->pbFullscreen->isChecked() && (windowState() & Qt::WindowMaximized)) {\n    ui->pbFullscreen->toggle();\n  }\n}\n\nbool MainWindow::askUserForGTKFavesImport()\n{\n  QMessageBox messageBox(QMessageBox::Question, tr(\"Import faves\"), QString(tr(\"Do you want to import faves from file below?<br/>%1\")).arg(FavesModelReader::gmicGTKFavesFilename()),\n                         QMessageBox::Yes | QMessageBox::No, this);\n  messageBox.setDefaultButton(QMessageBox::Yes);\n  QCheckBox * cb = new QCheckBox(tr(\"Don't ask again\"));\n  if (Settings::darkThemeEnabled()) {\n    QPalette p = cb->palette();\n    p.setColor(QPalette::Text, Settings::CheckBoxTextColor);\n    p.setColor(QPalette::Base, Settings::CheckBoxBaseColor);\n    cb->setPalette(p);\n  }\n  messageBox.setCheckBox(cb);\n  int choice = messageBox.exec();\n  if (choice != QMessageBox::Yes) {\n    if (cb->isChecked()) {\n      QSettings().setValue(FAVES_IMPORT_KEY, true);\n    }\n    return false;\n  }\n  return true;\n}\n\nvoid MainWindow::onAddFave()\n{\n  if (_filtersPresenter->currentFilter().hash.isEmpty()) {\n    return;\n  }\n  saveCurrentParameters();\n  _filtersPresenter->addSelectedFilterAsNewFave(ui->filterParams->valueStringList(), ui->filterParams->visibilityStates(), ui->inOutSelector->state());\n}\nvoid MainWindow::onRemoveFave()\n{\n  _filtersPresenter->removeSelectedFave();\n}\n\nvoid MainWindow::onRenameFave()\n{\n  _filtersPresenter->editSelectedFaveName();\n}\n\nvoid MainWindow::onToggleFullScreen(bool on)\n{\n  if (on && !(windowState() & Qt::WindowMaximized)) {\n    showMaximized();\n  }\n  if (!on && (windowState() & Qt::WindowMaximized)) {\n    showNormal();\n  }\n}\n\nvoid MainWindow::onSettingsClicked()\n{\n  QList<int> splitterSizes = ui->splitter->sizes();\n\n  int previewWidth;\n  int paramsWidth;\n  int treeWidth;\n  if (_previewPosition == PreviewPosition::Left) {\n    previewWidth = splitterSizes.at(0);\n    paramsWidth = splitterSizes.at(2);\n    treeWidth = splitterSizes.at(1);\n  } else {\n    previewWidth = splitterSizes.at(2);\n    paramsWidth = splitterSizes.at(1);\n    treeWidth = splitterSizes.at(0);\n  }\n\n  DialogSettings dialog(this);\n  dialog.exec();\n  bool previewPositionChanged = (_previewPosition != Settings::previewPosition());\n  setPreviewPosition(Settings::previewPosition());\n  if (previewPositionChanged) {\n    splitterSizes.clear();\n    if (_previewPosition == PreviewPosition::Left) {\n      splitterSizes.push_back(previewWidth);\n      splitterSizes.push_back(treeWidth);\n      splitterSizes.push_back(paramsWidth);\n    } else {\n      splitterSizes.push_back(treeWidth);\n      splitterSizes.push_back(paramsWidth);\n      splitterSizes.push_back(previewWidth);\n    }\n    ui->splitter->setSizes(splitterSizes);\n  }\n  bool shouldUpdatePreview = false;\n  if (Settings::visibleLogos()) {\n    if (!ui->logosLabel->isVisible()) {\n      shouldUpdatePreview = true;\n      ui->logosLabel->show();\n    }\n  } else {\n    if (ui->logosLabel->isVisible()) {\n      shouldUpdatePreview = true;\n      ui->logosLabel->hide();\n    }\n  }\n  if (shouldUpdatePreview) {\n    ui->previewWidget->sendUpdateRequest();\n  }\n  // Manage zoom constraints\n  setZoomConstraint();\n  if (!Settings::previewZoomAlwaysEnabled()) {\n    const FiltersPresenter::Filter & filter = _filtersPresenter->currentFilter();\n    if (((ui->previewWidget->zoomConstraint() == ZoomConstraint::Fixed) && (ui->previewWidget->defaultZoomFactor() != ui->previewWidget->currentZoomFactor())) ||\n        ((ui->previewWidget->zoomConstraint() == ZoomConstraint::OneOrMore) && (ui->previewWidget->currentZoomFactor() < 1.0))) {\n      ui->previewWidget->setPreviewFactor(filter.previewFactor, true);\n      if (ui->cbPreview->isChecked()) {\n        ui->previewWidget->sendUpdateRequest();\n      }\n    }\n  }\n  showZoomWarningIfNeeded();\n  // Sources modification may require an update\n  bool sourcesModified = false;\n  bool sourcesRequireInternetUpdate = false;\n  dialog.sourcesStatus(sourcesModified, sourcesRequireInternetUpdate);\n  if (sourcesModified) {\n    updateFilters(sourcesRequireInternetUpdate && ui->cbInternetUpdate->isChecked());\n  }\n}\n\nbool MainWindow::confirmAbortProcessingOnCloseRequest()\n{\n  int button = QMessageBox::question(this, tr(\"Confirmation\"), tr(\"A gmic command is running.<br>Do you really want to close the plugin?\"), QMessageBox::Yes, QMessageBox::No);\n  return (button == QMessageBox::Yes);\n}\n\nvoid MainWindow::enableWidgetList(bool on)\n{\n  for (QWidget * w : _filterUpdateWidgets) {\n    w->setEnabled(on);\n  }\n  ui->inOutSelector->setEnabled(on);\n}\n\nvoid MainWindow::onProgressionWidgetCancelClicked()\n{\n  if (ui->progressInfoWidget->mode() == ProgressInfoWidget::Mode::FiltersUpdate) {\n    Updater::getInstance()->cancelAllPendingDownloads();\n  }\n}\n\nvoid MainWindow::abortProcessingOnCloseRequest()\n{\n  _pendingActionAfterCurrentProcessing = ProcessingAction::Close;\n  connect(&_processor, &GmicProcessor::noMoreUnfinishedJobs, this, &MainWindow::close);\n  ui->progressInfoWidget->showBusyIndicator();\n  ui->previewWidget->setOverlayMessage(tr(\"Waiting for cancelled jobs...\"));\n  enableWidgetList(false);\n  ui->pbCancel->setEnabled(false);\n  ui->pbClose->setEnabled(false);\n\n  QTimer::singleShot(2000, [this]() {\n    _pendingActionAfterCurrentProcessing = ProcessingAction::ForceQuit;\n    ui->pbClose->setText(_forceQuitText);\n    ui->pbClose->setEnabled(true);\n  });\n\n  _processor.detachAllUnfinishedAbortedThreads(); // Keep only one thread in list after next line\n  _processor.cancel();\n}\n\nvoid MainWindow::selectPreviewType(PreviewWidget::PreviewType previewType)\n{\n\n  if (ui->previewWidget->previewType() == PreviewWidget::PreviewType::Full) {\n    for (int index = 0; index < ui->cbPreviewType->count(); ++index) {\n      if (previewType == static_cast<PreviewWidget::PreviewType>(ui->cbPreviewType->itemData(index).toInt())) {\n        ui->cbPreviewType->setCurrentIndex(index);\n        return;\n      }\n    }\n  } else {\n    for (int index = 0; index < ui->cbPreviewType->count(); ++index) {\n      if (PreviewWidget::PreviewType::Full == static_cast<PreviewWidget::PreviewType>(ui->cbPreviewType->itemData(index).toInt())) {\n        ui->cbPreviewType->setCurrentIndex(index);\n        return;\n      }\n    }\n  }\n}\n\nvoid MainWindow::switchPreviewType()\n{\n  ui->cbPreview->setChecked(true);\n  if (ui->previewWidget->previewType() == PreviewWidget::PreviewType::Full) {\n    selectPreviewType(ui->previewWidget->savedPreviewType());\n  } else {\n    selectPreviewType(PreviewWidget::PreviewType::Full);\n  }\n}\n\nvoid MainWindow::onCancelClicked()\n{\n  ui->progressInfoWidget->cancel();\n  if (_processor.isProcessing()) {\n    _pendingActionAfterCurrentProcessing = ProcessingAction::NoAction;\n    _processor.cancel();\n    ui->progressInfoWidget->stopAnimationAndHide();\n    enableWidgetList(true);\n    ui->pbCancel->setEnabled(false);\n  }\n}\n\nvoid MainWindow::closeEvent(QCloseEvent * e)\n{\n  if (_pendingActionAfterCurrentProcessing == ProcessingAction::ForceQuit) {\n    _processor.disconnect(this);\n    _processor.cancel();\n    _processor.detachAllUnfinishedAbortedThreads();\n    e->accept();\n    return;\n  }\n\n  if (_processor.isProcessing() && (_pendingActionAfterCurrentProcessing != ProcessingAction::Close)) {\n    if (confirmAbortProcessingOnCloseRequest()) {\n      abortProcessingOnCloseRequest();\n    }\n    e->ignore();\n    return;\n  }\n  e->accept();\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/MainWindow.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file MainWindow.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_MAINWINDOW_H\n#define GMIC_QT_MAINWINDOW_H\n\n#include <QIcon>\n#include <QList>\n#include <QMainWindow>\n#include <QString>\n#include <QTimer>\n#include <QWidget>\n#include \"Common.h\"\n#include \"GmicProcessor.h\"\n#include \"Widgets/PreviewWidget.h\"\nclass QResizeEvent;\n\nnamespace Ui\n{\nclass MainWindow;\n}\n\nnamespace gmic_library\n{\ntemplate <typename T> struct gmic_list;\n}\n\nnamespace GmicQt\n{\n\nclass FiltersTreeFolderItem;\nclass FiltersTreeFilterItem;\nclass FiltersTreeAbstractFilterItem;\nclass FiltersTreeFaveItem;\nclass Updater;\nclass FilterThread;\nclass FiltersPresenter;\nclass VisibleTagSelector;\n\nclass MainWindow : public QMainWindow {\n  Q_OBJECT\n\npublic:\n  enum class PreviewPosition\n  {\n    Left,\n    Right\n  };\n\n  explicit MainWindow(QWidget * parent = nullptr);\n  ~MainWindow() override;\n  void updateFiltersFromSources(int ageLimit, bool useNetwork);\n  void setDarkTheme();\n  void setPluginParameters(const RunParameters & parameters);\n\npublic slots:\n  void onUpdateDownloadsFinished(int status);\n  void onApplyClicked();\n  void onProgressionWidgetCancelClicked();\n  void onPreviewUpdateRequested(bool synchronous, bool randomized = false);\n  void onPreviewUpdateRequested();\n  void onPreviewKeypointsEvent(unsigned int flags, unsigned long time);\n  void onFullImageProcessingDone();\n  void expandOrCollapseFolders();\n  void search(const QString &);\n  void onOkClicked();\n  void onCancelClicked();\n  void onReset();\n  void onRandomizeParameters();\n  void onCopyGMICCommand();\n  void onPreviewZoomReset();\n  void onUpdateFiltersClicked();\n  void saveCurrentParameters();\n  void onAddFave();\n  void onRemoveFave();\n  void onRenameFave();\n  void onToggleFullScreen(bool on);\n  void onSettingsClicked();\n  void onStartupFiltersUpdateFinished(int);\n  void showZoomWarningIfNeeded();\n  void updateZoomLabel(double);\n  void onFiltersSelectionModeToggled(bool);\n  void onPreviewCheckBoxToggled(bool);\n  void onFilterSelectionChanged();\n  void onEscapeKeyPressed();\n  void onPreviewImageAvailable();\n  void onGUIDynamismRunDone();\n  void onPreviewError(const QString & message);\n  void onParametersChanged();\n  static bool isAccepted();\n  void setFilterName(const QString & text);\n\nprotected:\n  void timerEvent(QTimerEvent *) override;\n  void closeEvent(QCloseEvent * e) override;\n  void showEvent(QShowEvent *) override;\n  void resizeEvent(QResizeEvent *) override;\n  void saveSettings();\n  void loadSettings();\n  void showUpdateErrors();\n  void makeConnections();\n  void processImage();\n  void activateFilter(bool resetZoom, const QList<QString> & values = QList<QString>());\n  void setNoFilter();\n  void setPreviewPosition(PreviewPosition position);\n  void adjustVerticalSplitter();\n\nprivate slots:\n\n  void onFullImageProcessingError(const QString & message);\n  void onInputModeChanged(InputMode);\n\nprivate:\n  void onVeryFirstShowEvent();\n  void setZoomConstraint();\n  bool filtersSelectionMode();\n  void clearMessage();\n  void clearRightMessage();\n  void showRightMessage(const QString & text);\n  void showMessage(const QString & text, int ms = 2000);\n  void setIcons();\n  bool confirmAbortProcessingOnCloseRequest();\n  void enableWidgetList(bool on);\n  bool askUserForGTKFavesImport();\n  void buildFiltersTree();\n  void retrieveFilterAndParametersFromPluginParameters(QString & hash, QList<QString> & parameters);\n  static QString screenGeometries();\n  void updateFilters(bool internet);\n  void abortProcessingOnCloseRequest();\n  void selectPreviewType(PreviewWidget::PreviewType previewType);\n  void switchPreviewType();\n  enum class ProcessingAction\n  {\n    NoAction,\n    Ok,\n    Apply,\n    Close,\n    ForceQuit\n  };\n\n  Ui::MainWindow * ui;\n  ProcessingAction _pendingActionAfterCurrentProcessing;\n  PreviewPosition _previewPosition = PreviewPosition::Right;\n  bool _showEventReceived = false;\n  bool _okButtonShouldApply = false;\n  QIcon _expandIcon;\n  QIcon _collapseIcon;\n  QIcon * _expandCollapseIcon;\n  int _messageTimerID;\n  bool _lastExecutionOK;\n  bool _newSession;\n  bool _gtkFavesShouldBeImported;\n  QVector<QWidget *> _filterUpdateWidgets;\n  FiltersPresenter * _filtersPresenter;\n  GmicProcessor _processor;\n  ulong _lastPreviewKeypointBurstUpdateTime;\n  static bool _isAccepted;\n  RunParameters _pluginParameters;\n  VisibleTagSelector * _visibleTagSelector;\n  QString _forceQuitText;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_MAINWINDOW_H\n"
  },
  {
    "path": "src/Misc.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file Misc.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n#include \"Misc.h\"\n#include <QByteArray>\n#include <QChar>\n#include <QDebug>\n#include <QMap>\n#include <QRandomGenerator>\n#include <QRegularExpression>\n#include <QString>\n#include <QStringList>\n#include <QTextStream>\n#include <algorithm>\n#include <cctype>\n#include \"Common.h\"\n#include \"Globals.h\"\n#include \"HtmlTranslator.h\"\n#include \"Logger.h\"\n#include \"gmic.h\"\n\nnamespace\n{\ninline void skipSpaces(const char *& pc)\n{\n  while (isspace(*pc)) {\n    ++pc;\n  }\n}\ninline bool isEmptyOrSpaceSequence(const char * pc)\n{\n  while (*pc) {\n    if (!isspace(*pc)) {\n      return false;\n    }\n    ++pc;\n  }\n  return true;\n}\n} // namespace\n\nnamespace GmicQt\n{\n\nQString commandFromOutputMessageMode(OutputMessageMode mode)\n{\n  switch (mode) {\n  case OutputMessageMode::Quiet:\n  case OutputMessageMode::VerboseConsole:\n  case OutputMessageMode::VerboseLogFile:\n  case OutputMessageMode::Unspecified:\n    return \"\";\n  case OutputMessageMode::VeryVerboseConsole:\n  case OutputMessageMode::VeryVerboseLogFile:\n    return \"v 3\";\n  case OutputMessageMode::DebugConsole:\n  case OutputMessageMode::DebugLogFile:\n    return \"debug\";\n  }\n  return \"\";\n}\n\nvoid appendWithSpace(QString & str, const QString & other)\n{\n  if (str.isEmpty() || other.isEmpty()) {\n    str += other;\n    return;\n  }\n  str += QChar(' ');\n  str += other;\n}\n\nvoid downcaseCommandTitle(QString & title)\n{\n  QMap<int, QString> acronyms;\n  // Acronyms\n  QRegularExpression re(\"([A-Z0-9]{2,255})\");\n  int index = 0;\n  QRegularExpressionMatch match = re.match(title, index);\n  while (match.hasMatch()) {\n    QString pattern = match.captured(0);\n    acronyms[match.capturedStart(0)] = pattern;\n    index = match.capturedStart(0) + pattern.length();\n    match = re.match(title, index);\n  }\n\n  // 3D\n  re.setPattern(\"([1-9])[dD] \");\n  match = re.match(title);\n  if (match.hasMatch()) {\n    acronyms[match.capturedStart(0)] = match.captured(1) + \"d \";\n  }\n\n  // B&amp;W [Lab [YCbCr\n  re.setPattern(\"(B&amp;W|[ \\\\[]Lab|[ \\\\[]YCbCr)\");\n  index = 0;\n  match = re.match(title, index);\n  while ((index = match.capturedStart(0)) != -1) {\n    acronyms[index] = match.captured(1);\n    index += match.capturedLength(1);\n    match = re.match(title, index);\n  }\n\n  // Uppercase letter in last position, after a space\n  re.setPattern(\" ([A-Z])$\");\n  match = re.match(title);\n  if (match.hasMatch()) {\n    acronyms[match.capturedStart()] = match.captured(0);\n  }\n  title = title.toLower();\n  QMap<int, QString>::const_iterator it = acronyms.cbegin();\n  while (it != acronyms.cend()) {\n    title.replace(it.key(), it.value().length(), it.value());\n    ++it;\n  }\n  title[0] = title[0].toUpper();\n}\n\nbool parseGmicFilterParameters(const QString & text, QStringList & args)\n{\n  return parseGmicFilterParameters(text.toUtf8().constData(), args);\n}\n\nbool parseGmicFilterParameters(const char * text, QStringList & args)\n{\n  args.clear();\n  if (!text) {\n    return false;\n  }\n  skipSpaces(text);\n  const char * pc = text;\n  bool quoted = false;\n  bool escaped = false;\n  bool meaningfulSpaceFound = false;\n  char * buffer = new char[strlen(pc)]();\n  char * output = buffer;\n  while (*pc && !((meaningfulSpaceFound = (!quoted && !escaped && isspace(*pc))))) {\n    if (escaped) {\n      *output++ = *pc++;\n      escaped = false;\n    } else if (*pc == '\\\\') {\n      escaped = true;\n      ++pc;\n    } else if (*pc == '\"') {\n      quoted = !quoted;\n      ++pc;\n    } else if (!quoted && !escaped && (*pc == ',')) {\n      *output = '\\0';\n      args.push_back(QString::fromUtf8(buffer));\n      output = buffer;\n      ++pc;\n    } else {\n      *output++ = *pc++;\n    }\n  }\n  const bool endsWidthComma = (output == buffer) && (pc > text) && (!quoted && !escaped && (pc[-1] == ','));\n  if ((output != buffer) || endsWidthComma) {\n    *output = '\\0';\n    args.push_back(QString::fromUtf8(buffer));\n  }\n  delete[] buffer;\n  if (quoted || (meaningfulSpaceFound && !isEmptyOrSpaceSequence(pc))) {\n    args.clear();\n    return false;\n  }\n  return true;\n}\n\nbool parseGmicUniqueFilterCommand(const char * text, QString & command, QString & arguments)\n{\n  arguments.clear();\n  command.clear();\n  if (!text) {\n    return false;\n  }\n  const char * commandBegin = text;\n  skipSpaces(commandBegin);\n  if (*commandBegin == '\\0') {\n    return false;\n  }\n  const char * pc = commandBegin;\n  while (isalnum(*pc) || (*pc == '_')) {\n    ++pc;\n  }\n  if ((*pc != '\\0') && !isspace(*pc)) {\n    return false;\n  }\n  const char * const commandEnd = pc;\n  skipSpaces(pc);\n\n  bool quoted = false;\n  bool escaped = false;\n  bool meaningfulSpaceFound = false;\n  const char * argumentStart = pc;\n  while (*pc && !((meaningfulSpaceFound = (!quoted && !escaped && isspace(*pc))))) {\n    if (escaped) {\n      escaped = false;\n    } else if (*pc == '\\\\') {\n      escaped = true;\n    } else if (*pc == '\"') {\n      quoted = !quoted;\n    }\n    ++pc;\n  }\n  if (quoted || (meaningfulSpaceFound && !isEmptyOrSpaceSequence(pc))) {\n    return false;\n  }\n  command = QString::fromUtf8(commandBegin, static_cast<int>(commandEnd - commandBegin));\n  arguments = QString::fromUtf8(argumentStart, static_cast<int>(pc - argumentStart));\n  return true;\n}\n\nQString escapeUnescapedQuotes(const QString & text)\n{\n  std::string source_str = text.toStdString();\n  const char * pc = source_str.c_str();\n  std::vector<char> output_str(2 * source_str.size() + 1, static_cast<char>(0));\n  char * out = output_str.data();\n  bool escaped = false;\n  while (*pc) {\n    if (escaped) {\n      escaped = false;\n    } else if (*pc == '\\\\') {\n      escaped = true;\n    } else if (*pc == '\"') {\n      *out++ = '\\\\';\n    }\n    *out++ = *pc++;\n  }\n  QString result = QString::fromUtf8(output_str.data());\n  return result;\n}\n\nQString filterFullPathWithoutTags(const QList<QString> & path, const QString & name)\n{\n  QStringList noTags = {QString()};\n  for (QString str : path) {\n    if (str.startsWith(WarningPrefix)) {\n      str.remove(0, 1);\n    }\n    noTags.push_back(HtmlTranslator::removeTags(str));\n  }\n  noTags.push_back(HtmlTranslator::removeTags(name));\n  return noTags.join('/');\n}\n\nQString filterFullPathBasename(const QString & path)\n{\n  QString result = path;\n  result.remove(QRegularExpression(\"^.*/\"));\n  return result;\n}\n\nQString flattenGmicParameterList(const QList<QString> & list, const QVector<bool> & quotedParameters)\n{\n  QString result;\n  if (list.isEmpty()) {\n    return result;\n  }\n  QList<QString>::const_iterator itList = list.constBegin();\n  QVector<bool>::const_iterator itQuoting = quotedParameters.constBegin();\n  result += (*itQuoting++) ? quotedString(*itList++) : (*itList++);\n  while (itList != list.end()) {\n    result += QString(\",%1\").arg((*itQuoting++) ? quotedString(*itList++) : (*itList++));\n  }\n  return result;\n}\n\nQString mergedWithSpace(const QString & prefix, const QString & suffix)\n{\n  if (prefix.isEmpty() || suffix.isEmpty()) {\n    return prefix + suffix;\n  }\n  return prefix + QChar(' ') + suffix;\n}\n\nQString elided(const QString & text, int width)\n{\n  if (text.length() <= width) {\n    return text;\n  }\n  return text.left(std::max(0, width - 3)) + \"...\";\n}\n\nQVector<bool> quotedParameters(const QList<QString> & parameters)\n{\n  QVector<bool> result;\n  for (const auto & str : parameters) {\n    result.push_back(str.startsWith(\"\\\"\"));\n  }\n  return result;\n}\n\nQStringList mergeSubsequences(const QStringList & sequence, const QVector<int> & subSequenceLengths)\n{\n  QStringList result;\n  QVector<int> lengths = subSequenceLengths;\n  QStringList::const_iterator itInput = sequence.constBegin();\n  QVector<int>::iterator itLength = lengths.begin();\n  while ((itInput != sequence.constEnd()) && (itLength != lengths.end())) {\n    if (*itLength <= 0) {\n      ++itLength;\n      continue;\n    }\n    QString text = *itInput++;\n    --(*itLength);\n    while (*itLength > 0) {\n      text += QString(\",%1\").arg(*itInput++);\n      --(*itLength);\n    }\n    result.push_back(text);\n    ++itLength;\n  }\n  if ((itInput != sequence.constEnd()) || (itLength != lengths.end())) {\n    Logger::warning(QObject::tr(\"List %1 cannot be merged considering these runs: %2\").arg(stringify(sequence)).arg(stringify(subSequenceLengths)));\n    return QStringList();\n  }\n  return result;\n}\n\nQStringList completePrefixFromFullList(const QStringList & prefix, const QStringList & fullList)\n{\n  if (fullList.size() <= prefix.size()) {\n    return prefix;\n  }\n  QStringList result = prefix;\n  QStringList::const_iterator it = fullList.constBegin();\n  it += prefix.size();\n  while (it != fullList.constEnd()) {\n    result.push_back(*it++);\n  }\n  return result;\n}\n\nQString quotedString(QString text)\n{\n  return QString(\"\\\"%1\\\"\").arg(escapeUnescapedQuotes(text));\n}\n\nQStringList quotedStringList(const QStringList & stringList)\n{\n  QStringList result;\n  for (const auto & text : stringList) {\n    result.push_back(quotedString(text));\n  }\n  return result;\n}\n\nQString unescaped(const QString & text)\n{\n  QByteArray ba = text.toUtf8();\n  gmic_library::cimg::strunescape(ba.data());\n  return QString::fromUtf8(ba.data());\n}\n\nQString unquoted(const QString & text)\n{\n  QRegularExpression re(\"^\\\\s*\\\"(.*)\\\"\\\\s*$\");\n  auto match = re.match(text);\n  if (match.hasMatch()) {\n    return match.captured(1);\n  } else {\n    return text.trimmed();\n  }\n}\n\nQStringList expandParameterList(const QStringList & parameters, const QVector<int> & sizes)\n{\n  // FIXME : Handle errors here\n  QStringList result;\n  Q_ASSERT_X(parameters.size() == sizes.size(), __PRETTY_FUNCTION__, QString(\"Sizes are different (parameters: %1, sizes: %2)\").arg(parameters.size()).arg(sizes.size()).toStdString().c_str());\n  QStringList::const_iterator itParam = parameters.constBegin();\n  auto itSize = sizes.constBegin();\n  while (itParam != parameters.constEnd() && itSize != sizes.constEnd()) {\n    if (*itSize > 1) {\n      result.append(itParam->split(\",\"));\n    } else if (*itSize == 1) {\n      result.push_back(*itParam);\n    } else {\n      Q_ASSERT_X((*itSize >= 1), __PRETTY_FUNCTION__, QString(\"Parameter size should be at least 1 (it is %1)\").arg(*itSize).toStdString().c_str());\n    }\n    ++itParam;\n    ++itSize;\n  }\n  return result;\n}\n\nQString readableDuration(qint64 ms)\n{\n  const qint64 HOUR = 3600000;\n  const qint64 MINUTE = 60000;\n  const qint64 SECOND = 1000;\n  if (ms < SECOND) {\n    return QString(\"%1 ms\").arg(ms);\n  }\n  if (ms < MINUTE) {\n    return QString(\"%1 s %2 ms\").arg(ms / SECOND).arg(ms % SECOND);\n  }\n  const int hours = ms / HOUR;\n  return QString(\"%1:%2:%3.%4\")                             //\n      .arg(ms / HOUR, (hours < 10) ? 2 : 0, 10, QChar('0')) // Hours\n      .arg((ms % HOUR) / MINUTE, 2, 10, QChar('0'))         // Minutes\n      .arg((ms % MINUTE) / 1000, 2, 10, QChar('0'))         // Seconds\n      .arg(ms % SECOND, 3, 10, QChar('0'));                 // Milliseconds\n}\n\nQString readableSize(quint64 n)\n{\n  if (n >= (1ul << 30)) {\n    return QString(QObject::tr(\"%1 GiB\")).arg(n / (double)(1 << 30), 0, 'f', 1);\n  } else if (n >= (1ul << 20)) {\n    return QString(QObject::tr(\"%1 MiB\")).arg(n / (double)(1 << 20), 0, 'f', 1);\n  } else if (n >= (1ul << 10)) {\n    return QString(QObject::tr(\"%1 KiB\")).arg(n / (double)(1 << 10), 0, 'f', 1);\n  } else {\n    return QString(QObject::tr(\"%1 B\")).arg(n);\n  }\n}\n\nqreal randomReal(qreal lowest, qreal highest)\n{\n  QRandomGenerator * rng = QRandomGenerator::global();\n  auto min = rng->min();\n  auto max = rng->max();\n  auto t = (rng->generate() - min) / double(max - min);\n  return (1 - t) * lowest + t * highest;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/Misc.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file Utils.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_MISC_H\n#define GMIC_QT_MISC_H\n\n#include <QDebug>\n#include <QList>\n#include <QString>\n#include <QStringList>\n#include \"GmicQt.h\"\n\nnamespace GmicQt\n{\n\nQString commandFromOutputMessageMode(OutputMessageMode mode);\n\nvoid appendWithSpace(QString & str, const QString & other);\n\nQString mergedWithSpace(const QString & prefix, const QString & suffix);\n\nvoid downcaseCommandTitle(QString & title);\n\nbool parseGmicFilterParameters(const char * text, QStringList & args);\n\nbool parseGmicFilterParameters(const QString & text, QStringList & args);\n\nbool parseGmicUniqueFilterCommand(const char * text, QString & command, QString & arguments);\n\nQString escapeUnescapedQuotes(const QString & text);\n\nQString filterFullPathWithoutTags(const QList<QString> & path, const QString & name);\n\nQString filterFullPathBasename(const QString & path);\n\nQString flattenGmicParameterList(const QList<QString> & list, const QVector<bool> & quotedParameters);\n\nQStringList expandParameterList(const QStringList & parameters, const QVector<int> & sizes);\n\nQString elided(const QString & text, int width);\n\nQVector<bool> quotedParameters(const QList<QString> & parameters);\n\nQString quotedString(QString text);\n\nQStringList quotedStringList(const QStringList & stringList);\n\nQString unescaped(const QString & text);\n\nQStringList mergeSubsequences(const QStringList & sequence, const QVector<int> & subSequenceLengths);\n\nQStringList completePrefixFromFullList(const QStringList & prefix, const QStringList & fullList);\n\nQString unquoted(const QString & text);\n\ninline QString elided80(const std::string & text)\n{\n  return elided(QString::fromStdString(text), 80);\n}\n\nqreal randomReal(qreal lowest, qreal highest);\n\nQString readableDuration(qint64 ms);\n\nQString readableSize(quint64);\n\ntemplate <typename T> //\nQString stringify(const T & value)\n{\n  QString result;\n  QDebug(&result) << value;\n  return result;\n}\n\ntemplate <typename T> //\ninline void setValueIfNotNullPointer(T * pointer, const T & value)\n{\n  if (pointer) {\n    *pointer = value;\n  }\n}\n\ninline bool notEmpty(const QString & text)\n{\n  return !text.isEmpty();\n}\n\ninline bool notEmpty(const std::string & text)\n{\n  return !text.empty();\n}\n\ntemplate <typename T> T clamped(const T & value, const T & min, const T & max)\n{\n  return (value < min) ? min : (value > max) ? max : value;\n}\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_MISC_H\n"
  },
  {
    "path": "src/OverrideCursor.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file OverrideCursor.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n#include \"OverrideCursor.h\"\n#include <QApplication>\n\nnamespace GmicQt\n{\n\nvoid OverrideCursor::set(Qt::CursorShape shape)\n{\n  if (QApplication::overrideCursor() && QApplication::overrideCursor()->shape() == shape) {\n    return;\n  }\n  while (QApplication::overrideCursor()) {\n    QApplication::restoreOverrideCursor();\n  }\n  QApplication::setOverrideCursor(shape);\n}\n\nvoid OverrideCursor::setNormal()\n{\n  while (QApplication::overrideCursor()) {\n    QApplication::restoreOverrideCursor();\n  }\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/OverrideCursor.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file OverrideCursor.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_OVERRIDECURSOR_H\n#define GMIC_QT_OVERRIDECURSOR_H\n\n#include <QCursor>\n\nnamespace GmicQt\n{\n\nclass OverrideCursor {\npublic:\n  OverrideCursor() = delete;\n\n  static void set(Qt::CursorShape shape);\n  static void setNormal();\n\nprivate:\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_OVERRIDECURSOR_H\n"
  },
  {
    "path": "src/ParametersCache.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ParametersCache.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"ParametersCache.h\"\n#include <QBuffer>\n#include <QDataStream>\n#include <QDebug>\n#include <QFile>\n#include <QJsonArray>\n#include <QJsonDocument>\n#include <QJsonObject>\n#include <iostream>\n#include \"Common.h\"\n#include \"Globals.h\"\n#include \"Logger.h\"\n#include \"Utils.h\"\n#include \"gmic.h\"\n\nnamespace GmicQt\n{\nQHash<QString, QList<QString>> ParametersCache::_parametersCache;\nQHash<QString, InputOutputState> ParametersCache::_inOutPanelStates;\nQHash<QString, QList<int>> ParametersCache::_visibilityStates;\n\nvoid ParametersCache::load(bool loadFiltersParameters)\n{\n  // Load JSON file\n  _parametersCache.clear();\n  _inOutPanelStates.clear();\n  _visibilityStates.clear();\n\n  QString jsonFilename = QString(\"%1%2\").arg(gmicConfigPath(true), PARAMETERS_CACHE_FILENAME);\n  QFile jsonFile(jsonFilename);\n  if (!jsonFile.exists()) {\n    return;\n  }\n  if (jsonFile.open(QFile::ReadOnly)) {\n    QJsonDocument jsonDoc;\n    QByteArray allFile = jsonFile.readAll();\n    if (allFile.startsWith(\"{\")) { // Was created in debug mode\n      jsonDoc = QJsonDocument::fromJson(allFile);\n    } else {\n      jsonDoc = QJsonDocument::fromJson(qUncompress(allFile));\n    }\n    if (jsonDoc.isNull()) {\n      Logger::warning(QString(\"Cannot parse \") + jsonFilename);\n      Logger::warning(\"Last filters parameters are lost!\");\n    } else {\n      if (!jsonDoc.isObject()) {\n        Logger::error(QString(\"JSON file format is not correct (\") + jsonFilename + \")\");\n      } else {\n        QJsonObject documentObject = jsonDoc.object();\n        QJsonObject::iterator itFilter = documentObject.begin();\n        while (itFilter != documentObject.end()) {\n          QString hash = itFilter.key();\n          QJsonObject filterObject = itFilter.value().toObject();\n          // Retrieve parameters\n          if (loadFiltersParameters) {\n            QJsonValue parameters = filterObject.value(\"parameters\");\n            if (!parameters.isUndefined()) {\n              QJsonArray array = parameters.toArray();\n              QStringList values;\n              for (const QJsonValueRef v : array) {\n                values.push_back(v.toString());\n              }\n              _parametersCache[hash] = values;\n            }\n            QJsonValue visibilityStates = filterObject.value(\"visibility_states\");\n            if (!visibilityStates.isUndefined()) {\n              QJsonArray array = visibilityStates.toArray();\n              QList<int> values;\n              for (const QJsonValueRef v : array) {\n                values.push_back(v.toInt());\n              }\n              _visibilityStates[hash] = values;\n            }\n          }\n          QJsonValue state = filterObject.value(\"in_out_state\");\n          // Retrieve Input/Output state\n          if (!state.isUndefined()) {\n            QJsonObject stateObject = state.toObject();\n            _inOutPanelStates[hash] = InputOutputState::fromJSONObject(stateObject);\n          }\n          ++itFilter;\n        }\n      }\n    }\n  } else {\n    Logger::error(\"Cannot open \" + jsonFilename);\n    Logger::error(\"Parameters cannot be restored\");\n  }\n}\n\nvoid ParametersCache::save()\n{\n  // JSON Document format\n  //\n  // {\n  //  \"51d288e6f1c6e531cc61289f17e34d8a\": {\n  //      \"parameters\": [\n  //          \"6\",\n  //          \"21.06\",\n  //          \"1.36\",\n  //          \"5\",\n  //          \"0\"\n  //      ],\n  //      \"in_out_state\": {\n  //          \"InputLayers\": 1,\n  //          \"OutputMessages\": 5,\n  //          \"OutputMode\": 100,\n  //          \"PreviewMode\": 100\n  //      }\n  //      \"visibility_states\": [\n  //             0,\n  //             1,\n  //             2,\n  //             0\n  //      ]\n  //  }\n  // }\n\n  QJsonObject documentObject;\n\n  // Add Input/Output states\n  QHash<QString, InputOutputState>::iterator itState = _inOutPanelStates.begin();\n  while (itState != _inOutPanelStates.end()) {\n    QJsonObject filterObject;\n    QJsonObject jsonState;\n    itState.value().toJSONObject(jsonState);\n    filterObject.insert(\"in_out_state\", jsonState);\n    documentObject.insert(itState.key(), filterObject);\n    ++itState;\n  }\n\n  // Add filters parameters\n\n  QHash<QString, QList<QString>>::iterator itParams = _parametersCache.begin();\n  while (itParams != _parametersCache.end()) {\n    QJsonObject filterObject;\n    QJsonObject::iterator entry = documentObject.find(itParams.key());\n    if (entry != documentObject.end()) {\n      filterObject = entry.value().toObject();\n    }\n    // Add the parameters list\n    QJsonArray array;\n    QStringList list = itParams.value();\n    for (const QString & str : list) {\n      array.push_back(str);\n    }\n    filterObject.insert(\"parameters\", array);\n    documentObject.insert(itParams.key(), filterObject);\n    ++itParams;\n  }\n\n  // Add visibility states\n\n  QHash<QString, QList<int>>::iterator itVisibilities = _visibilityStates.begin();\n  while (itVisibilities != _visibilityStates.end()) {\n    QJsonObject filterObject;\n    QJsonObject::iterator entry = documentObject.find(itVisibilities.key());\n    if (entry != documentObject.end()) {\n      filterObject = entry.value().toObject();\n    }\n    // Add the parameters list\n    QJsonArray array;\n    QList<int> states = itVisibilities.value();\n    for (const int & state : states) {\n      array.push_back(state);\n    }\n    filterObject.insert(\"visibility_states\", array);\n    documentObject.insert(itVisibilities.key(), filterObject);\n    ++itVisibilities;\n  }\n\n  QJsonDocument jsonDoc(documentObject);\n  QString jsonFilename = QString(\"%1%2\").arg(gmicConfigPath(true), PARAMETERS_CACHE_FILENAME);\n#ifdef _GMIC_QT_DEBUG_\n  QByteArray array(jsonDoc.toJson());\n#else\n  QByteArray array(qCompress(jsonDoc.toJson(QJsonDocument::Compact)));\n#endif\n  if (safelyWrite(array, jsonFilename)) {\n    // Remove obsolete 2.0.0 pre-release files\n    const QString & path = gmicConfigPath(true);\n    QFile::remove(path + \"gmic_qt_parameters.dat\");\n    QFile::remove(path + \"gmic_qt_parameters.json\");\n    QFile::remove(path + \"gmic_qt_parameters.json.bak\");\n    QFile::remove(path + \"gmic_qt_parameters_json.dat\");\n  } else {\n    Logger::error(\"Cannot write \" + jsonFilename);\n    Logger::error(\"Parameters cannot be saved\");\n  }\n}\n\nvoid ParametersCache::setValues(const QString & hash, const QList<QString> & values)\n{\n  _parametersCache[hash] = values;\n}\n\nQList<QString> ParametersCache::getValues(const QString & hash)\n{\n  if (_parametersCache.contains(hash)) {\n    return _parametersCache[hash];\n  }\n  return QList<QString>();\n}\n\nvoid ParametersCache::setVisibilityStates(const QString & hash, const QList<int> & states)\n{\n  _visibilityStates[hash] = states;\n}\n\nQList<int> ParametersCache::getVisibilityStates(const QString & hash)\n{\n  if (_visibilityStates.contains(hash)) {\n    return _visibilityStates[hash];\n  }\n  return QList<int>();\n}\n\nvoid ParametersCache::remove(const QString & hash)\n{\n  _parametersCache.remove(hash);\n  _inOutPanelStates.remove(hash);\n  _visibilityStates.remove(hash);\n}\n\nInputOutputState ParametersCache::getInputOutputState(const QString & hash)\n{\n  if (_inOutPanelStates.contains(hash)) {\n    return _inOutPanelStates[hash];\n  }\n  return {InputMode::Unspecified, DefaultOutputMode};\n}\n\nvoid ParametersCache::setInputOutputState(const QString & hash, const InputOutputState & state, const InputMode defaultInputMode)\n{\n  if ((state == InputOutputState(defaultInputMode, DefaultOutputMode)) //\n      || (state == InputOutputState(InputMode::Unspecified, DefaultOutputMode))) {\n    _inOutPanelStates.remove(hash);\n    return;\n  }\n  _inOutPanelStates[hash] = state;\n}\n\nvoid ParametersCache::cleanup(const QSet<QString> & hashesToKeep)\n{\n  QSet<QString> obsoleteHashes;\n\n  // Build set of no longer used parameters\n  QHash<QString, QList<QString>>::iterator itParam = _parametersCache.begin();\n  while (itParam != _parametersCache.end()) {\n    if (!hashesToKeep.contains(itParam.key())) {\n      obsoleteHashes.insert(itParam.key());\n    }\n    ++itParam;\n  }\n  for (const QString & h : obsoleteHashes) {\n    _parametersCache.remove(h);\n  }\n  obsoleteHashes.clear();\n\n  // Build set of no longer used In/Out states\n  QHash<QString, InputOutputState>::iterator itState = _inOutPanelStates.begin();\n  while (itState != _inOutPanelStates.end()) {\n    if (!hashesToKeep.contains(itState.key())) {\n      obsoleteHashes.insert(itState.key());\n    }\n    ++itState;\n  }\n  for (const QString & h : obsoleteHashes) {\n    _inOutPanelStates.remove(h);\n  }\n  obsoleteHashes.clear();\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/ParametersCache.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ParametersCache.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_PARAMETERSCACHE_H\n#define GMIC_QT_PARAMETERSCACHE_H\n\n#include <QHash>\n#include <QList>\n#include <QString>\n#include \"InputOutputState.h\"\n\nnamespace GmicQt\n{\n\nclass ParametersCache {\npublic:\n  static void load(bool loadFiltersParameters);\n  static void save();\n  static void setValues(const QString & hash, const QList<QString> & values);\n  static QList<QString> getValues(const QString & hash);\n  static void setVisibilityStates(const QString & hash, const QList<int> & states);\n  static QList<int> getVisibilityStates(const QString & hash);\n  static void remove(const QString & hash);\n\n  static InputOutputState getInputOutputState(const QString & hash);\n  static void setInputOutputState(const QString & hash, const InputOutputState & state, const InputMode defaultInputMode);\n\n  static void cleanup(const QSet<QString> & hashesToKeep);\n\nprivate:\n  static QHash<QString, QList<QString>> _parametersCache;\n  static QHash<QString, InputOutputState> _inOutPanelStates;\n  static QHash<QString, QList<int>> _visibilityStates;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_PARAMETERSCACHE_H\n"
  },
  {
    "path": "src/PersistentMemory.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file PersistentMemory.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"PersistentMemory.h\"\n#include \"gmic.h\"\n\nnamespace GmicQt\n{\n\nstd::unique_ptr<gmic_library::gmic_image<char>> PersistentMemory::_image;\n\ngmic_library::gmic_image<char> & PersistentMemory::image()\n{\n  if (!_image) {\n    _image.reset(new gmic_library::gmic_image<char>);\n  }\n  return *_image;\n}\n\nvoid PersistentMemory::clear()\n{\n  image().assign();\n}\n\nvoid PersistentMemory::move_from(gmic_library::gmic_image<char> & buffer)\n{\n  buffer.move_to(image());\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/PersistentMemory.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file PersistentMemory.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT__PERSISTENTMEMORY_H\n#define GMIC_QT__PERSISTENTMEMORY_H\n#include <memory>\nnamespace gmic_library\n{\ntemplate <typename T> struct gmic_image;\n}\n\nnamespace GmicQt\n{\n\nclass PersistentMemory {\npublic:\n  static gmic_library::gmic_image<char> & image();\n  static void clear();\n  static void move_from(gmic_library::gmic_image<char> & buffer);\n\nprivate:\n  static std::unique_ptr<gmic_library::gmic_image<char>> _image;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT__PERSISTENTMEMORY_H\n"
  },
  {
    "path": "src/Settings.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file Settings.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"Settings.h\"\n#include \"Globals.h\"\n#include \"GmicStdlib.h\"\n#include \"Host/GmicQtHost.h\"\n#include \"IconLoader.h\"\n#include \"SourcesWidget.h\"\n\n#include <QDir>\n#include <QLocale>\n#include <QRegularExpression>\nnamespace\n{\nGmicQt::OutputMessageMode filterDeprecatedOutputMessageMode(const GmicQt::OutputMessageMode & mode)\n{\n  if (mode == GmicQt::OutputMessageMode::VerboseLayerName_DEPRECATED) {\n    return GmicQt::DefaultOutputMessageMode;\n  }\n  return mode;\n}\n} // namespace\n\nnamespace GmicQt\n{\n\nbool Settings::_visibleLogos;\nbool Settings::_darkThemeEnabled;\nQString Settings::_languageCode;\nbool Settings::_filterTranslationEnabled = false;\nMainWindow::PreviewPosition Settings::_previewPosition;\nbool Settings::_nativeColorDialogs;\nbool Settings::_nativeFileDialogs;\nint Settings::_updatePeriodicity;\nint Settings::_previewTimeout = 16;\nOutputMessageMode Settings::_outputMessageMode;\nbool Settings::_previewZoomAlwaysEnabled = false;\nbool Settings::_notifyFailedStartupUpdate = true;\nbool Settings::_highDPI = false;\nQStringList Settings::_filterSources;\nSourcesWidget::OfficialFilters Settings::_officialFilterSource;\n\nconst QColor Settings::CheckBoxBaseColor(83, 83, 83);\nconst QColor Settings::CheckBoxTextColor(255, 255, 255);\nQColor Settings::UnselectedFilterTextColor;\n\nQString Settings::FolderParameterDefaultValue;\nQString Settings::FileParameterDefaultPath;\n\nQIcon Settings::AddIcon;\nQIcon Settings::RemoveIcon;\nQString Settings::GroupSeparator;\nQString Settings::DecimalPoint('.');\nQString Settings::NegativeSign('-');\n\nvoid Settings::load(UserInterfaceMode userInterfaceMode)\n{\n  QSettings settings;\n  _visibleLogos = settings.value(\"LogosAreVisible\", true).toBool();\n  _darkThemeEnabled = settings.value(DARK_THEME_KEY, GmicQtHost::DarkThemeIsDefault).toBool();\n  _languageCode = settings.value(LANGUAGE_CODE_KEY, QString()).toString();\n\n  if (settings.value(\"Config/PreviewPosition\", \"Right\").toString() == \"Left\") {\n    _previewPosition = MainWindow::PreviewPosition::Left;\n  } else {\n    _previewPosition = MainWindow::PreviewPosition::Right;\n  }\n  _filterTranslationEnabled = settings.value(ENABLE_FILTER_TRANSLATION, false).toBool();\n  _nativeColorDialogs = settings.value(\"Config/NativeColorDialogs\", false).toBool();\n  _nativeFileDialogs = settings.value(\"Config/NativeFileDialogs\", false).toBool();\n  _updatePeriodicity = settings.value(INTERNET_UPDATE_PERIODICITY_KEY, INTERNET_DEFAULT_PERIODICITY).toInt();\n  FolderParameterDefaultValue = settings.value(\"FolderParameterDefaultValue\", QDir::homePath()).toString();\n  FileParameterDefaultPath = settings.value(\"FileParameterDefaultPath\", QDir::homePath()).toString();\n  _previewTimeout = settings.value(\"PreviewTimeout\", 16).toInt();\n  _previewZoomAlwaysEnabled = settings.value(\"AlwaysEnablePreviewZoom\", false).toBool();\n  _outputMessageMode = filterDeprecatedOutputMessageMode((GmicQt::OutputMessageMode)settings.value(\"OutputMessageMode\", static_cast<int>(GmicQt::DefaultOutputMessageMode)).toInt());\n  _notifyFailedStartupUpdate = settings.value(\"Config/NotifyIfStartupUpdateFails\", true).toBool();\n  _highDPI = settings.value(HIGHDPI_KEY, false).toBool();\n  _filterSources = settings.value(\"Config/FilterSources\", SourcesWidget::defaultList()).toStringList();\n\n  QString officialFilterSource = settings.value(OFFICIAL_FILTER_SOURCE_KEY, QString(\"EnabledWithUpdates\")).toString();\n  if (officialFilterSource == QString(\"Disable\")) {\n    _officialFilterSource = SourcesWidget::OfficialFilters::Disabled;\n  } else if (officialFilterSource == QString(\"EnabledWithoutUpdates\")) {\n    _officialFilterSource = SourcesWidget::OfficialFilters::EnabledWithoutUpdates;\n  } else if (officialFilterSource == QString(\"EnabledWithUpdates\")) {\n    _officialFilterSource = SourcesWidget::OfficialFilters::EnabledWithUpdates;\n  }\n\n  if (userInterfaceMode != UserInterfaceMode::Silent) {\n    AddIcon = IconLoader::load(\"list-add\");\n    RemoveIcon = IconLoader::load(\"list-remove\");\n  }\n  QLocale locale;\n  GroupSeparator = locale.groupSeparator();\n  DecimalPoint = locale.decimalPoint();\n  NegativeSign = locale.negativeSign();\n}\n\nbool Settings::visibleLogos()\n{\n  return _visibleLogos;\n}\n\nvoid Settings::setVisibleLogos(bool on)\n{\n  _visibleLogos = on;\n}\n\nbool Settings::darkThemeEnabled()\n{\n  return _darkThemeEnabled;\n}\n\nvoid Settings::setDarkThemeEnabled(bool on)\n{\n  _darkThemeEnabled = on;\n}\n\nQString Settings::languageCode()\n{\n  return _languageCode;\n}\n\nvoid Settings::setLanguageCode(const QString & code)\n{\n  _languageCode = code;\n}\n\nbool Settings::filterTranslationEnabled()\n{\n  return _filterTranslationEnabled;\n}\n\nvoid Settings::setFilterTranslationEnabled(bool on)\n{\n  _filterTranslationEnabled = on;\n}\n\nMainWindow::PreviewPosition Settings::previewPosition()\n{\n  return _previewPosition;\n}\n\nvoid Settings::setPreviewPosition(MainWindow::PreviewPosition position)\n{\n  _previewPosition = position;\n}\n\nbool Settings::nativeColorDialogs()\n{\n  return _nativeColorDialogs;\n}\n\nvoid Settings::setNativeColorDialogs(bool on)\n{\n  _nativeColorDialogs = on;\n}\n\nbool Settings::nativeFileDialogs()\n{\n  return _nativeFileDialogs;\n}\n\nvoid Settings::setNativeFileDialogs(bool on)\n{\n  _nativeFileDialogs = on;\n}\n\nint Settings::updatePeriodicity()\n{\n  return _updatePeriodicity;\n}\n\nvoid Settings::setUpdatePeriodicity(int hours)\n{\n  _updatePeriodicity = hours;\n}\n\nint Settings::previewTimeout()\n{\n  return _previewTimeout;\n}\n\nvoid Settings::setPreviewTimeout(int seconds)\n{\n  _previewTimeout = seconds;\n}\n\nOutputMessageMode Settings::outputMessageMode()\n{\n  return _outputMessageMode;\n}\n\nvoid Settings::setOutputMessageMode(OutputMessageMode mode)\n{\n  _outputMessageMode = mode;\n}\n\nbool Settings::previewZoomAlwaysEnabled()\n{\n  return _previewZoomAlwaysEnabled;\n}\n\nvoid Settings::setPreviewZoomAlwaysEnabled(bool on)\n{\n  _previewZoomAlwaysEnabled = on;\n}\n\nbool Settings::notifyFailedStartupUpdate()\n{\n  return _notifyFailedStartupUpdate;\n}\n\nvoid Settings::setNotifyFailedStartupUpdate(bool on)\n{\n  _notifyFailedStartupUpdate = on;\n}\n\nbool Settings::highDPIEnabled()\n{\n  return _highDPI;\n}\n\nvoid Settings::setHighDPIEnabled(bool on)\n{\n  _highDPI = on;\n}\n\nconst QStringList & Settings::filterSources()\n{\n  return _filterSources;\n}\n\nvoid Settings::setFilterSources(const QStringList & sources)\n{\n  _filterSources = sources;\n}\n\nSourcesWidget::OfficialFilters Settings::officialFilterSource()\n{\n  return _officialFilterSource;\n}\n\nvoid Settings::setOfficialFilterSource(SourcesWidget::OfficialFilters status)\n{\n  _officialFilterSource = status;\n}\n\nvoid Settings::save(QSettings & settings)\n{\n  removeObsoleteKeys(settings);\n  settings.setValue(\"LogosAreVisible\", _visibleLogos);\n  settings.setValue(LANGUAGE_CODE_KEY, _languageCode);\n  settings.setValue(ENABLE_FILTER_TRANSLATION, _filterTranslationEnabled);\n  settings.setValue(\"Config/PreviewPosition\", (_previewPosition == MainWindow::PreviewPosition::Left) ? \"Left\" : \"Right\");\n\n  settings.setValue(\"Config/NativeColorDialogs\", _nativeColorDialogs);\n  settings.setValue(\"Config/NativeFileDialogs\", _nativeFileDialogs);\n  settings.setValue(INTERNET_UPDATE_PERIODICITY_KEY, _updatePeriodicity);\n  settings.setValue(\"FolderParameterDefaultValue\", FolderParameterDefaultValue);\n  settings.setValue(\"FileParameterDefaultPath\", FileParameterDefaultPath);\n  settings.setValue(\"PreviewTimeout\", _previewTimeout);\n  settings.setValue(\"OutputMessageMode\", (int)_outputMessageMode);\n  settings.setValue(\"AlwaysEnablePreviewZoom\", _previewZoomAlwaysEnabled);\n  settings.setValue(\"Config/NotifyIfStartupUpdateFails\", _notifyFailedStartupUpdate);\n  settings.setValue(HIGHDPI_KEY, _highDPI);\n  settings.setValue(\"Config/FilterSources\", _filterSources);\n\n  switch (_officialFilterSource) {\n  case SourcesWidget::OfficialFilters::Disabled:\n    settings.setValue(OFFICIAL_FILTER_SOURCE_KEY, \"Disable\");\n    break;\n  case SourcesWidget::OfficialFilters::EnabledWithoutUpdates:\n    settings.setValue(OFFICIAL_FILTER_SOURCE_KEY, \"EnabledWithoutUpdates\");\n    break;\n  case SourcesWidget::OfficialFilters::EnabledWithUpdates:\n    settings.setValue(OFFICIAL_FILTER_SOURCE_KEY, \"EnabledWithUpdates\");\n    break;\n  }\n\n  // Remove obsolete keys (2.0.0 pre-release)\n  settings.remove(\"Config/UseFaveInputMode\");\n  settings.remove(\"Config/UseFaveOutputMode\");\n  settings.remove(\"Config/UseFaveOutputMessages\");\n  settings.remove(\"Config/UseFavePreviewMode\");\n}\n\nvoid Settings::removeObsoleteKeys(QSettings & settings)\n{\n  settings.remove(QString(\"LastExecution/host_%1/PreviewMode\").arg(GmicQtHost::ApplicationShortname));\n  settings.remove(QString(\"LastExecution/host_%1/GmicEnvironment\").arg(GmicQtHost::ApplicationShortname));\n  settings.remove(QString(\"LastExecution/host_%1/QuotedParameters\").arg(GmicQtHost::ApplicationShortname));\n  settings.remove(QString(\"LastExecution/host_%1/GmicStatus\").arg(GmicQtHost::ApplicationShortname));\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/Settings.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file Settings.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_SETTINGS_H\n#define GMIC_QT_SETTINGS_H\n\n#include <QColor>\n#include <QIcon>\n#include <QObject>\n#include <QString>\n#include <QStringList>\n#include \"GmicQt.h\"\n#include \"MainWindow.h\"\n#include \"SourcesWidget.h\"\nclass QSettings;\n\nnamespace GmicQt\n{\n\nclass Settings {\n\npublic:\n  Settings() = delete;\n  static void setVisibleLogos(bool);\n  static bool visibleLogos();\n  static bool darkThemeEnabled();\n  static void setDarkThemeEnabled(bool);\n  static QString languageCode();\n  static void setLanguageCode(const QString &);\n  static bool filterTranslationEnabled();\n  static void setFilterTranslationEnabled(bool);\n  static MainWindow::PreviewPosition previewPosition();\n  static void setPreviewPosition(MainWindow::PreviewPosition);\n  static bool nativeColorDialogs();\n  static void setNativeColorDialogs(bool);\n  static bool nativeFileDialogs();\n  static void setNativeFileDialogs(bool);\n  static int updatePeriodicity();\n  static void setUpdatePeriodicity(int hours);\n  static int previewTimeout();\n  static void setPreviewTimeout(int seconds);\n  static OutputMessageMode outputMessageMode();\n  static void setOutputMessageMode(OutputMessageMode mode);\n  static bool previewZoomAlwaysEnabled();\n  static void setPreviewZoomAlwaysEnabled(bool);\n  static bool notifyFailedStartupUpdate();\n  static void setNotifyFailedStartupUpdate(bool);\n  static bool highDPIEnabled();\n  static void setHighDPIEnabled(bool);\n  static const QStringList & filterSources();\n  static void setFilterSources(const QStringList &);\n  static SourcesWidget::OfficialFilters officialFilterSource();\n  static void setOfficialFilterSource(SourcesWidget::OfficialFilters);\n\n  static void save(QSettings &);\n  static void load(UserInterfaceMode userInterfaceMode);\n\n  static const QColor CheckBoxTextColor;\n  static const QColor CheckBoxBaseColor;\n  static QColor UnselectedFilterTextColor;\n  static QString FolderParameterDefaultValue;\n  static QString FileParameterDefaultPath;\n  static QIcon AddIcon;\n  static QIcon RemoveIcon;\n  static QString GroupSeparator;\n  static QString DecimalPoint;\n  static QString NegativeSign;\n\nprivate:\n  static void removeObsoleteKeys(QSettings &);\n  static bool _visibleLogos;\n  static bool _darkThemeEnabled;\n  static QString _languageCode;\n  static bool _filterTranslationEnabled;\n  static MainWindow::PreviewPosition _previewPosition;\n  static bool _nativeColorDialogs;\n  static bool _nativeFileDialogs;\n  static int _updatePeriodicity;\n  static int _previewTimeout;\n  static OutputMessageMode _outputMessageMode;\n  static bool _previewZoomAlwaysEnabled;\n  static bool _notifyFailedStartupUpdate;\n  static bool _highDPI;\n  static QStringList _filterSources;\n  static SourcesWidget::OfficialFilters _officialFilterSource;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_SETTINGS_H\n"
  },
  {
    "path": "src/SourcesWidget.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file SourcesWidget.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"SourcesWidget.h\"\n#include <QAction>\n#include <QCryptographicHash>\n#include <QDir>\n#include <QFileDialog>\n#include <QListWidget>\n#include <QListWidgetItem>\n#include <QPushButton>\n#include <QSet>\n#include <QToolTip>\n#include <QVector>\n#include <algorithm>\n#include \"GmicStdlib.h\"\n#include \"IconLoader.h\"\n#include \"Settings.h\"\n#include \"ui_sourceswidget.h\"\n\nnamespace GmicQt\n{\n\nSourcesWidget::SourcesWidget(QWidget * parent) : QWidget(parent), ui(new Ui::SourcesWidget)\n{\n  ui->setupUi(this);\n\n  QAction * removeAction = new QAction(this);\n  removeAction->setIcon(IconLoader::load(\"user-trash\"));\n  removeAction->setShortcutContext(Qt::WindowShortcut);\n  removeAction->setShortcut(Qt::Key_Delete);\n  removeAction->setToolTip(tr(\"Remove source (Delete)\"));\n  connect(removeAction, &QAction::triggered, this, &SourcesWidget::removeCurrentSource);\n  ui->tbTrash->setDefaultAction(removeAction);\n\n  ui->tbUp->setIcon(IconLoader::load(\"draw-arrow-up\"));\n  ui->tbUp->setToolTip(tr(\"Move source up\"));\n  ui->tbDown->setIcon(IconLoader::load(\"draw-arrow-down\"));\n  ui->tbDown->setToolTip(tr(\"Move source down\"));\n  ui->tbOpen->setIcon(IconLoader::load(\"folder\"));\n  ui->tbOpen->setToolTip(tr(\"Add local file (dialog)\"));\n  ui->tbReset->setIcon(IconLoader::load(\"view-refresh\"));\n  ui->tbReset->setToolTip(tr(\"Reset filter sources\"));\n  connect(ui->tbOpen, &QPushButton::clicked, this, &SourcesWidget::onOpenFile);\n  connect(ui->tbNew, &QPushButton::clicked, this, &SourcesWidget::onAddNew);\n  connect(ui->tbReset, &QPushButton::clicked, this, &SourcesWidget::setToDefault);\n  connect(ui->tbUp, &QPushButton::clicked, this, &SourcesWidget::onMoveUp);\n  connect(ui->tbDown, &QPushButton::clicked, this, &SourcesWidget::onMoveDown);\n  connect(ui->list, &QListWidget::currentItemChanged, this, &SourcesWidget::onSourceSelected);\n  connect(ui->leURL, &QLineEdit::textChanged, [this](QString text) { //\n    QListWidgetItem * item = ui->list->currentItem();\n    if (item) {\n      ui->list->currentItem()->setText(text);\n    }\n  });\n  ui->list->addItems(_sourcesAtOpening = Settings::filterSources());\n\n#ifdef _IS_WINDOWS_\n  ui->labelVariables->setText(tr(\"Macros: $HOME %USERPROFILE% $VERSION\"));\n#else\n  ui->labelVariables->setText(tr(\"Macros: $HOME $VERSION\"));\n#endif\n\n  ui->cbOfficialFilters->addItem(tr(\"Disable\"), int(OfficialFilters::Disabled));\n  ui->cbOfficialFilters->addItem(tr(\"Enable without updates\"), int(OfficialFilters::EnabledWithoutUpdates));\n  ui->cbOfficialFilters->addItem(tr(\"Enable with updates (recommended)\"), int(OfficialFilters::EnabledWithUpdates));\n\n  switch (_officialFiltersAtOpening = Settings::officialFilterSource()) {\n  case OfficialFilters::Disabled:\n    ui->cbOfficialFilters->setCurrentIndex(0);\n    break;\n  case OfficialFilters::EnabledWithoutUpdates:\n    ui->cbOfficialFilters->setCurrentIndex(1);\n    break;\n  case OfficialFilters::EnabledWithUpdates:\n    ui->cbOfficialFilters->setCurrentIndex(2);\n    break;\n  }\n\n#ifdef _IS_WINDOWS_\n  ui->labelVariables->setText(tr(\"Environment variables (e.g. %USERPROFILE% or %HOMEDIR%) are substituted in sources.\\n\"\n                                 \"VERSION is also a predefined variable that stands for the G'MIC version number (currently %1).\")\n                                  .arg(GmicQt::GmicVersion));\n#else\n  ui->labelVariables->setText(tr(\"Environment variables (e.g. $HOME or ${HOME} for your home directory) are substituted in sources.\\n\"\n                                 \"VERSION is also a predefined variable that stands for the G'MIC version number (currently %1).\")\n                                  .arg(GmicQt::GmicVersion));\n#endif\n\n  _newItemText = tr(\"New source\");\n  enableButtons();\n}\n\nSourcesWidget::~SourcesWidget()\n{\n  delete ui;\n}\n\nQStringList SourcesWidget::list() const\n{\n  QStringList result;\n  const int count = ui->list->count();\n  for (int row = 0; row < count; ++row) {\n    QString text = ui->list->item(row)->text();\n    if (!text.isEmpty() && (text != _newItemText)) {\n      result.push_back(text);\n    }\n  }\n  return result;\n}\n\nQStringList SourcesWidget::defaultList()\n{\n  QStringList result;\n#ifdef _IS_WINDOWS_\n  result << QString(\"%GMIC_PATH%%1user.gmic\").arg(QDir::separator());\n  result << QString(\"%USERPROFILE%%1user.gmic\").arg(QDir::separator());\n#else\n  result << \"${GMIC_PATH}/.gmic\";\n  result << \"${HOME}/.gmic\";\n#endif\n  return result;\n}\n\nvoid SourcesWidget::saveSettings()\n{\n  Settings::setFilterSources(list());\n  Settings::setOfficialFilterSource((OfficialFilters)ui->cbOfficialFilters->currentData().toInt());\n}\n\nbool SourcesWidget::sourcesModified(bool & internetUpdateRequired)\n{\n  internetUpdateRequired = false;\n  const QStringList currentSourceList = list();\n  const OfficialFilters currentOfficialFilters = OfficialFilters(ui->cbOfficialFilters->currentData().toInt());\n  if ((currentSourceList == _sourcesAtOpening) && (_officialFiltersAtOpening == currentOfficialFilters)) {\n    return false;\n  }\n  QSet<QString> remoteSourcesBefore;\n  for (const QString & source : _sourcesAtOpening) {\n    if (source.startsWith(\"http://\") || source.startsWith(\"https://\")) {\n      remoteSourcesBefore.insert(source);\n    }\n  }\n  QSet<QString> remoteSourcesAfter;\n  for (const QString & source : currentSourceList) {\n    if (source.startsWith(\"http://\") || source.startsWith(\"https://\")) {\n      remoteSourcesAfter.insert(source);\n    }\n  }\n  if (!(remoteSourcesAfter - remoteSourcesBefore).isEmpty()) {\n    internetUpdateRequired = true;\n  }\n  if ((currentOfficialFilters == OfficialFilters::EnabledWithUpdates) //\n      && (currentOfficialFilters != _officialFiltersAtOpening)) {\n    internetUpdateRequired = true;\n  }\n  return true;\n}\n\nvoid SourcesWidget::onOpenFile()\n{\n  const QFileDialog::Options options = Settings::nativeFileDialogs() ? QFileDialog::Options() : QFileDialog::DontUseNativeDialog;\n  QString url = ui->leURL->text();\n  QString folder;\n  if (!url.isEmpty() && !url.startsWith(\"http://\") && !url.startsWith(\"https://\")) {\n    folder = QFileInfo(url).absoluteDir().absolutePath();\n  } else {\n    folder = QDir::homePath();\n  }\n  QString filename = QFileDialog::getOpenFileName(this, tr(\"Select a file\"), folder, QString(), nullptr, options);\n  if (!filename.isEmpty()) {\n    if (ui->leURL->text() == _newItemText) {\n      ui->leURL->setText(filename);\n    } else {\n      ui->list->addItem(filename);\n      ui->list->setCurrentRow(ui->list->count() - 1);\n      enableButtons();\n    }\n  }\n}\n\nvoid SourcesWidget::onAddNew()\n{\n  ui->list->addItem(_newItemText);\n  ui->list->setCurrentRow(ui->list->count() - 1);\n  ui->leURL->selectAll();\n  ui->leURL->setFocus();\n}\n\nvoid SourcesWidget::setToDefault()\n{\n  ui->list->clear();\n  ui->list->addItems(defaultList());\n  for (int i = 0; i < ui->cbOfficialFilters->count(); ++i) {\n    if (ui->cbOfficialFilters->itemData(i).toInt() == int(OfficialFilters::EnabledWithUpdates)) {\n      ui->cbOfficialFilters->setCurrentIndex(i);\n      break;\n    }\n  }\n}\n\nvoid SourcesWidget::enableButtons()\n{\n  int index = ui->list->currentRow();\n  if (index == -1) {\n    ui->tbUp->setEnabled(false);\n    ui->tbDown->setEnabled(false);\n    ui->tbTrash->defaultAction()->setEnabled(false);\n    ui->leURL->clear();\n    ui->leURL->setEnabled(false);\n    return;\n  }\n  ui->tbUp->setEnabled(index > 0);\n  ui->tbDown->setEnabled(index < ui->list->count() - 1);\n  ui->tbTrash->defaultAction()->setEnabled(true);\n  ui->leURL->setEnabled(true);\n}\n\nvoid SourcesWidget::removeCurrentSource()\n{\n  QListWidgetItem * item = ui->list->currentItem();\n  int row = ui->list->currentRow();\n  if (item) {\n    disconnect(ui->list, &QListWidget::currentItemChanged, this, nullptr);\n    ui->list->removeItemWidget(item);\n    delete item;\n    connect(ui->list, &QListWidget::currentItemChanged, this, &SourcesWidget::onSourceSelected, Qt::UniqueConnection);\n    if (ui->list->count()) {\n      ui->list->setCurrentRow(std::min(ui->list->count() - 1, row));\n      onSourceSelected();\n    }\n    enableButtons();\n  }\n}\n\nvoid SourcesWidget::onMoveDown()\n{\n  int row = ui->list->currentRow();\n  if (row >= ui->list->count() - 1) {\n    return;\n  }\n  QString textDown = ui->list->item(row + 1)->text();\n  ui->list->item(row + 1)->setText(ui->list->item(row)->text());\n  ui->list->item(row)->setText(textDown);\n  ui->list->setCurrentRow(row + 1);\n}\n\nvoid SourcesWidget::onMoveUp()\n{\n  int row = ui->list->currentRow();\n  if (row < 1) {\n    return;\n  }\n  QString textUp = ui->list->item(row - 1)->text();\n  ui->list->item(row - 1)->setText(ui->list->item(row)->text());\n  ui->list->item(row)->setText(textUp);\n  ui->list->setCurrentRow(row - 1);\n}\n\nvoid SourcesWidget::onSourceSelected()\n{\n  enableButtons();\n  cleanupEmptySources();\n  QListWidgetItem * item = ui->list->currentItem();\n  if (item) {\n    ui->leURL->setText(item->text());\n  }\n}\n\nvoid SourcesWidget::cleanupEmptySources()\n{\n  QListWidgetItem * currentItem = ui->list->currentItem();\n  QVector<QListWidgetItem *> removableItems;\n  for (int row = 0; row < ui->list->count(); ++row) {\n    QListWidgetItem * item = ui->list->item(row);\n    if (item && (item != currentItem) && (item->text().isEmpty() || (item->text() == _newItemText))) {\n      removableItems.push_back(item);\n    }\n  }\n  for (QListWidgetItem * item : removableItems) {\n    ui->list->removeItemWidget(item);\n    delete item;\n  }\n  if (currentItem) {\n    for (int row = 0; row < ui->list->count(); ++row) {\n      if (ui->list->item(row) == currentItem) {\n        ui->list->setCurrentRow(row);\n        break;\n      }\n    }\n  }\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/SourcesWidget.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file SourcesWidget.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_SOURCESWIDGET_H\n#define GMIC_QT_SOURCESWIDGET_H\n\n#include <QString>\n#include <QStringList>\n#include <QWidget>\n\nnamespace Ui\n{\nclass SourcesWidget;\n}\n\nclass QSettings;\n\nnamespace GmicQt\n{\n\nclass SourcesWidget : public QWidget {\n  Q_OBJECT\n\npublic:\n  enum class OfficialFilters\n  {\n    Disabled,\n    EnabledWithoutUpdates,\n    EnabledWithUpdates\n  };\n\n  explicit SourcesWidget(QWidget * parent = nullptr);\n  ~SourcesWidget() override;\n\n  QStringList list() const;\n  static QStringList defaultList();\n  void saveSettings();\n  bool sourcesModified(bool & internetUpdateRequired);\n\nprivate slots:\n  void onOpenFile();\n  void onAddNew();\n  void setToDefault();\n  void enableButtons();\n  void removeCurrentSource();\n  void onMoveDown();\n  void onMoveUp();\n  void onSourceSelected();\n\nprivate:\n  void cleanupEmptySources();\n  Ui::SourcesWidget * ui;\n  QString _newItemText;\n  QStringList _sourcesAtOpening;\n  OfficialFilters _officialFiltersAtOpening;\n};\n\n} // namespace GmicQt\n#endif // GMIC_QT_SOURCESWIDGET_H\n"
  },
  {
    "path": "src/Tags.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file Tags.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"Tags.h\"\n#include <QAction>\n#include <QBuffer>\n#include <QByteArray>\n#include <QDebug>\n#include <QIcon>\n#include <QImage>\n#include <QObject>\n#include <QPainter>\n#include <QPixmap>\n#include <QStringList>\n#include \"Common.h\"\n#include \"Settings.h\"\n\nnamespace GmicQt\n{\n\nconst TagColorSet TagColorSet::Full(TagColorSet::_fullMask);\nconst TagColorSet TagColorSet::ActualColors(TagColorSet::_fullMask &(~1u));\nconst TagColorSet TagColorSet::Empty(0);\n\nQString TagAssets::_markerHtml[static_cast<unsigned int>(TagColor::Count)];\nQIcon TagAssets::_menuIcons[static_cast<unsigned int>(TagColor::Count)];\nQIcon TagAssets::_menuIconsWithCheck[static_cast<unsigned int>(TagColor::Count)];\nQIcon TagAssets::_menuIconsWithDisk[static_cast<unsigned int>(TagColor::Count)];\nunsigned int TagAssets::_markerSideSize[static_cast<unsigned int>(TagColor::Count)];\nQColor TagAssets::colors[static_cast<unsigned int>(TagColor::Count)] = {QColor(0, 0, 0, 0),    QColor(250, 68, 113),  QColor(179, 228, 59), QColor(121, 171, 255),\n                                                                        QColor(117, 225, 242), QColor(188, 154, 234), QColor(236, 224, 105)};\n\nconst QString & TagAssets::markerHtml(const TagColor color, unsigned int height)\n{\n  if (!(height % 2)) {\n    ++height;\n  }\n  const int iColor = (int)color;\n  if (!_markerHtml[iColor].isEmpty() && _markerSideSize[iColor] == height) {\n    return _markerHtml[iColor];\n  }\n  QImage image(height, height, QImage::Format_RGBA8888);\n  image.fill(QColor(0, 0, 0, 0));\n  if (color != TagColor::None) {\n    QPainter painter(&image);\n    painter.setRenderHint(QPainter::Antialiasing, true);\n    QPen pen = painter.pen();\n    pen.setWidth(1);\n    pen.setColor(QColor(0, 0, 0, 128));\n    painter.setPen(pen);\n    painter.setBrush(colors[iColor]);\n    painter.drawEllipse(1, 1, height - 2, height - 2);\n  }\n  QByteArray ba;\n  QBuffer buffer(&ba);\n  image.save(&buffer, \"png\");\n  _markerSideSize[iColor] = height;\n  _markerHtml[iColor] = QString(\"<img style=\\\"vertical-align: baseline\\\" src=\\\"data:image/png;base64,%1\\\"/>\").arg(QString(ba.toBase64()));\n  return _markerHtml[iColor];\n}\n\nconst QIcon & TagAssets::menuIcon(TagColor color, IconMark mark)\n{\n  const int iColor = (int)color;\n  if (_menuIcons[iColor].isNull()) {\n    QPixmap bg(64, 64);\n    QFont font;\n    font.setPixelSize(60);\n    {\n      bg.fill(QColor(0, 0, 0, 0));\n      QPainter p(&bg);\n      p.setRenderHint(QPainter::Antialiasing, true);\n      if (color == TagColor::None) {\n        QPen pen;\n        pen.setWidth(3);\n        if (Settings::darkThemeEnabled()) {\n          pen.setColor(QColor(40, 40, 40));\n          p.setBrush(Settings::CheckBoxBaseColor);\n        } else {\n          QPalette palette;\n          pen.setColor(palette.text().color());\n          p.setBrush(palette.window().color());\n        }\n        p.setPen(pen);\n        p.drawEllipse(bg.rect().adjusted(2, 2, -2, -2));\n      } else {\n        p.setBrush(colors[iColor]);\n        p.drawRoundedRect(bg.rect(), 15, 15);\n      }\n      _menuIcons[iColor] = QIcon(bg);\n    }\n    QColor markColor = Qt::black;\n    if (color == TagColor::None) {\n      markColor = Settings::darkThemeEnabled() ? QColor(170, 170, 170) : QPalette().text().color();\n    }\n    QPixmap pixmap(bg);\n    {\n      QPainter p(&pixmap);\n      p.setFont(font);\n      p.setPen(markColor);\n      p.setRenderHint(QPainter::Antialiasing, true);\n      p.drawText(pixmap.rect(), Qt::AlignCenter | Qt::AlignVCenter, \"\\xE2\\x9C\\x93\"); // CHECK MARK\n      _menuIconsWithCheck[iColor] = QIcon(pixmap);\n    }\n    pixmap = bg;\n    {\n      QPainter p(&pixmap);\n      p.setFont(font);\n      p.setPen(markColor);\n      p.setRenderHint(QPainter::Antialiasing, true);\n      p.drawText(pixmap.rect(), Qt::AlignCenter | Qt::AlignVCenter, \"\\xE2\\x9A\\xAB\"); // MEDIUM BLACK CIRCLE\n      _menuIconsWithDisk[iColor] = QIcon(pixmap);\n    }\n  }\n  switch (mark) {\n  case IconMark::Check:\n    return _menuIconsWithCheck[iColor];\n  case IconMark::Disk:\n    return _menuIconsWithDisk[iColor];\n  default:\n    return _menuIcons[iColor];\n  }\n}\n\nQAction * TagAssets::action(QObject * parent, TagColor color, IconMark mark)\n{\n  if ((color == TagColor::None) || (color == TagColor::Count)) {\n    return nullptr;\n  }\n  return new QAction(menuIcon(color, mark), QObject::tr(\"%1 Tag\").arg(colorName(color)), parent);\n}\n\nQString TagAssets::colorName(TagColor color)\n{\n  Q_ASSERT_X(((unsigned int)color < (unsigned int)TagColor::Count), __PRETTY_FUNCTION__, \"Invalid color\");\n  static QStringList names = {QObject::tr(\"None\"),    //\n                              QObject::tr(\"Red\"),     //\n                              QObject::tr(\"Green\"),   //\n                              QObject::tr(\"Blue\"),    //\n                              QObject::tr(\"Cyan\"),    //\n                              QObject::tr(\"Magenta\"), //\n                              QObject::tr(\"Yellow\")};\n  return names.at(int(color));\n}\n\nstd::ostream & operator<<(std::ostream & out, const TagColorSet & colors)\n{\n  out << \"{\";\n  bool first = true;\n  for (TagColor color : colors) {\n    if (first) {\n      first = false;\n    } else {\n      out << \",\";\n    }\n    out << TagAssets::colorName(color).toStdString();\n  }\n  out << \"}\";\n  return out;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/Tags.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file Tags.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_TAGS_H\n#define GMIC_QT_TAGS_H\n\n#include <QColor>\n#include <QDebug>\n#include <QIcon>\n#include <QString>\n#include <QVector>\n#include \"Common.h\"\nclass QAction;\nclass QObject;\n\nnamespace GmicQt\n{\n\nenum class TagColor\n{\n  None = 0,\n  Red,\n  Green,\n  Blue,\n  Cyan,\n  Magenta,\n  Yellow,\n  Count\n};\n\nclass TagAssets {\npublic:\n  enum class IconMark\n  {\n    None,\n    Check,\n    Disk\n  };\n  static const QString & markerHtml(TagColor color, unsigned int sideSize);\n  static const QIcon & menuIcon(TagColor color, IconMark mark);\n  static QAction * action(QObject * parent, TagColor color, IconMark mark);\n  static QColor colors[static_cast<unsigned int>(TagColor::Count)];\n  static QString colorName(TagColor color);\n\nprivate:\n  static QString _markerHtml[static_cast<unsigned int>(TagColor::Count)];\n  static QIcon _menuIcons[static_cast<unsigned int>(TagColor::Count)];\n  static QIcon _menuIconsWithCheck[static_cast<unsigned int>(TagColor::Count)];\n  static QIcon _menuIconsWithDisk[static_cast<unsigned int>(TagColor::Count)];\n  static unsigned int _markerSideSize[static_cast<unsigned int>(TagColor::Count)];\n};\n\nclass TagColorSet {\npublic:\n  inline void toggle(TagColor color);\n  inline void insert(TagColor color);\n  inline bool contains(TagColor color) const;\n  inline bool isEmpty() const;\n  inline void clear();\n  inline bool operator==(const TagColorSet & other) const;\n  inline bool operator!=(const TagColorSet & other) const;\n  inline TagColorSet operator+(TagColor color) const;\n  inline TagColorSet & operator+=(TagColor color);\n  inline TagColorSet & operator-=(TagColor color);\n  inline TagColorSet operator-(TagColor color) const;\n  inline TagColorSet operator|(const TagColorSet & other) const;\n  inline TagColorSet & operator|=(const TagColorSet & other);\n  inline TagColorSet operator&(const TagColorSet & other) const;\n  inline TagColorSet & operator&=(const TagColorSet & other);\n  inline unsigned int mask() const;\n  static const TagColorSet Full;\n  static const TagColorSet ActualColors;\n  static const TagColorSet Empty;\n  friend class const_iterator;\n  class const_iterator {\n  public:\n    inline const_iterator(const TagColorSet & set);\n    inline bool isAtEnd() const;\n    inline const_iterator & operator++();\n    inline const_iterator operator++(int);\n    inline TagColor operator*() const;\n    inline bool operator!=(const const_iterator & other) const;\n    inline bool operator==(const const_iterator & other) const;\n\n  private:\n    int _position;\n    const TagColorSet & _set;\n  };\n  inline const_iterator begin() const;\n  inline const_iterator end() const;\n\n  TagColorSet() : _mask(0u) {}\n  TagColorSet(const TagColorSet & other) : _mask(other._mask) {}\n  TagColorSet & operator=(const TagColorSet & other);\n  inline explicit TagColorSet(unsigned int mask);\n\nprivate:\n  unsigned int _mask;\n  static const unsigned int _fullMask = ((1 << int(TagColor::Count)) - 1);\n};\n\nstd::ostream & operator<<(std::ostream & out, const TagColorSet & colors);\n\nTagColorSet::TagColorSet(unsigned int mask) : _mask(mask & _fullMask) {}\n\ninline void TagColorSet::toggle(TagColor color)\n{\n  Q_ASSERT_X((color != TagColor::Count), __PRETTY_FUNCTION__, QString(\"Inavild color (%1)\").arg(int(color)).toLocal8Bit().constData());\n  _mask ^= (1u << int(color));\n}\n\nvoid TagColorSet::insert(TagColor color)\n{\n  Q_ASSERT_X((color != TagColor::Count), __PRETTY_FUNCTION__, QString(\"Inavild color (%1)\").arg(int(color)).toLocal8Bit().constData());\n  _mask |= (1u << int(color));\n}\n\nbool TagColorSet::contains(TagColor color) const\n{\n  Q_ASSERT_X((color != TagColor::Count), __PRETTY_FUNCTION__, QString(\"Inavild color (%1)\").arg(int(color)).toLocal8Bit().constData());\n  return _mask & (1u << int(color));\n}\n\nbool TagColorSet::isEmpty() const\n{\n  return !_mask;\n}\n\nvoid TagColorSet::clear()\n{\n  _mask = 0;\n}\n\nbool TagColorSet::operator==(const TagColorSet & other) const\n{\n  return _mask == other._mask;\n}\n\nbool TagColorSet::operator!=(const TagColorSet & other) const\n{\n  return _mask != other._mask;\n}\n\nTagColorSet & TagColorSet::operator+=(TagColor color)\n{\n  insert(color);\n  return *this;\n}\n\nTagColorSet TagColorSet::operator+(TagColor color) const\n{\n  TagColorSet result(*this);\n  result.insert(color);\n  return result;\n}\n\nTagColorSet & TagColorSet::operator-=(TagColor color)\n{\n  _mask &= ~(1u << int(color));\n  return *this;\n}\n\nTagColorSet TagColorSet::operator-(TagColor color) const\n{\n  TagColorSet result(*this);\n  result -= color;\n  return result;\n}\n\nTagColorSet TagColorSet::operator|(const TagColorSet & other) const\n{\n  return TagColorSet(_mask | other._mask);\n}\n\nTagColorSet & TagColorSet::operator|=(const TagColorSet & other)\n{\n  _mask |= other._mask;\n  return *this;\n}\n\nTagColorSet TagColorSet::operator&(const TagColorSet & other) const\n{\n  return TagColorSet(_mask & other._mask);\n}\n\nTagColorSet & TagColorSet::operator&=(const TagColorSet & other)\n{\n  _mask &= other._mask;\n  return *this;\n}\n\nunsigned int TagColorSet::mask() const\n{\n  return _mask;\n}\n\nTagColorSet::const_iterator::const_iterator(const TagColorSet & set) : _position(0), _set(set)\n{\n  while (!isAtEnd() && !(_set._mask & (1 << _position))) {\n    ++_position;\n  }\n}\n\nbool TagColorSet::const_iterator::isAtEnd() const\n{\n  return (_position == int(TagColor::Count));\n}\n\nTagColorSet::const_iterator & TagColorSet::const_iterator::operator++()\n{\n  while (!isAtEnd()) {\n    ++_position;\n    if (_set._mask & (1 << _position)) {\n      break;\n    }\n  }\n  return *this;\n}\n\nTagColor TagColorSet::const_iterator::operator*() const\n{\n  Q_ASSERT_X(!isAtEnd(), __PRETTY_FUNCTION__, \"Should not dereference end() iterator\");\n  Q_ASSERT_X((_set._mask & (1 << _position)), __PRETTY_FUNCTION__, \"Current TagColor but is not set\");\n  return TagColor(_position);\n}\n\nTagColorSet::const_iterator TagColorSet::const_iterator::operator++(int)\n{\n  auto current = *this;\n  ++(*this);\n  return current;\n}\n\nbool TagColorSet::const_iterator::operator!=(const TagColorSet::const_iterator & other) const\n{\n  return (&_set != &other._set) || (_position != other._position);\n}\n\nbool TagColorSet::const_iterator::operator==(const TagColorSet::const_iterator & other) const\n{\n  return (&_set == &other._set) && (_position == other._position);\n}\n\nTagColorSet::const_iterator TagColorSet::begin() const\n{\n  return const_iterator(*this);\n}\n\nTagColorSet::const_iterator TagColorSet::end() const\n{\n  const_iterator it(*this);\n  while (!it.isAtEnd()) {\n    ++it;\n  }\n  return it;\n}\n\ninline TagColorSet & TagColorSet::operator=(const TagColorSet & other)\n{\n  _mask = other._mask;\n  return *this;\n}\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_TAGS_H\n"
  },
  {
    "path": "src/TimeLogger.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file TimeLogger.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n#include \"TimeLogger.h\"\n#include <QDebug>\n#include <QString>\n#include <cassert>\n#include \"Common.h\"\n#include \"Utils.h\"\n#include \"gmic.h\"\n\nnamespace GmicQt\n{\nstd::unique_ptr<TimeLogger> TimeLogger::_instance = nullptr;\n\nTimeLogger::TimeLogger()\n{\n  QString filename = gmicConfigPath(true) + \"timing_log.txt\";\n  _file = fopen(filename.toLocal8Bit().constData(), \"w\");\n  Q_ASSERT_X(_file, __PRETTY_FUNCTION__, \"Cannot open log file\");\n}\n\nTimeLogger::~TimeLogger()\n{\n  fclose(_file);\n}\n\nTimeLogger * TimeLogger::getInstance()\n{\n  if (!_instance) {\n    _instance = std::unique_ptr<TimeLogger>(new TimeLogger);\n  }\n  return _instance.get();\n}\n\nvoid TimeLogger::step(const char * function, int line, const char * filename)\n{\n  static cimg_ulong first = 0;\n  static cimg_ulong last = 0;\n  static unsigned int count = 0;\n  const cimg_ulong now = gmic_library::cimg::time();\n  if (!last) {\n    last = first = now;\n  }\n  double elapsed = (now - last) / 1000.0;\n  const double total = (now - first) / 1000.0;\n  printf(\"%02d @%2.3f +%2.3f %s <%s:%d>\\n\", count, total, elapsed, function, filename, line);\n  fprintf(_file, \"%02d @%2.3f +%2.3f %s <%s:%d>\\n\", count, total, elapsed, function, filename, line);\n  ++count;\n  last = now;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/TimeLogger.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file TimeLogger.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_TIMELOGGER_H\n#define GMIC_QT_TIMELOGGER_H\n\n#include <cstdio>\n#include <memory>\n\nnamespace GmicQt\n{\n\nclass TimeLogger {\npublic:\n  ~TimeLogger();\n  static TimeLogger * getInstance();\n  void step(const char * function, int line, const char * filename);\n\nprivate:\n  TimeLogger();\n  TimeLogger(const TimeLogger &) = delete;\n  TimeLogger & operator=(const TimeLogger &) = delete;\n  FILE * _file;\n  static std::unique_ptr<TimeLogger> _instance;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_TIMELOGGER_H\n"
  },
  {
    "path": "src/Updater.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file Updater.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"Updater.h\"\n#include <QByteArray>\n#include <QDebug>\n#include <QFile>\n#include <QFileInfo>\n#include <QNetworkRequest>\n#include <QTextStream>\n#include <QUrl>\n#include <iostream>\n#include \"Common.h\"\n#include \"GmicStdlib.h\"\n#include \"Logger.h\"\n#include \"Misc.h\"\n#include \"Settings.h\"\n#include \"Utils.h\"\n#include \"gmic.h\"\n\nnamespace GmicQt\n{\nstd::unique_ptr<Updater> Updater::_instance = std::unique_ptr<Updater>(nullptr);\nOutputMessageMode Updater::_outputMessageMode = OutputMessageMode::Quiet;\n\nconst char * Updater::OfficialFilterSourceURL = \"https://gmic.eu/update\" GMIC_QT_XSTRINGIFY(gmic_version) \".gmic\";\n\nUpdater::Updater(QObject * parent) : QObject(parent)\n{\n  _networkAccessManager = nullptr;\n  _someNetworkUpdatesAchieved = false;\n}\n\nbool Updater::isCImgCompressed(const QByteArray & data)\n{\n  return data.startsWith(\"1 uint8 \");\n}\n\nUpdater * Updater::getInstance()\n{\n  if (!_instance) {\n    _instance = std::unique_ptr<Updater>(new Updater(nullptr));\n  }\n  return _instance.get();\n}\n\nUpdater::~Updater() = default;\n\nvoid Updater::startUpdate(int ageLimit, int timeout, bool useNetwork)\n{\n  TIMING;\n  QStringList sources = GmicStdLib::substituteSourceVariables(Settings::filterSources());\n  prependOfficialSourceIfRelevant(sources);\n  SHOW(sources);\n  _errorMessages.clear();\n  _networkAccessManager = new QNetworkAccessManager(this);\n  connect(_networkAccessManager, &QNetworkAccessManager::finished, this, &Updater::onNetworkReplyFinished);\n  _someNetworkUpdatesAchieved = false;\n  if (useNetwork) {\n    QDateTime limit = QDateTime::currentDateTime().addSecs(-3600 * (qint64)ageLimit);\n    for (const QString & str : sources) {\n      if (str.startsWith(\"http://\") || str.startsWith(\"https://\")) {\n        QString filename = localFilename(str);\n        QFileInfo info(filename);\n        if (!info.exists() || (info.lastModified() < limit)) {\n          TRACE << \"Downloading\" << str << \"to\" << filename;\n          QUrl url(str);\n          QNetworkRequest request(url);\n          request.setHeader(QNetworkRequest::UserAgentHeader, pluginFullName());\n          // PRIVACY NOTICE (to be displayed in one of the \"About\" filters of the plugin\n          //\n          // PRIVACY NOTICE\n          // This plugin may download up-to-date filter definitions from the gmic.eu server.\n          // It is the case when first launched after a fresh installation, and periodically\n          // with a frequency which can be set in the settings dialog.\n          // The user should be aware that the following information may be retrieved\n          // from the server logs: IP address of the client; date and time of the request;\n          // as well as a short string, supplied through the HTTP protocol \"User Agent\" header\n          // field, which describes the full plugin version as shown in the window title\n          // (e.g. \"G'MIC-Qt for GIMP 2.8 - Linux 64 bits - 2.2.1_pre#180301\").\n          //\n          // Note that this information may solely be used for purely anonymous\n          // statistical purposes.\n          _pendingReplies.insert(_networkAccessManager->get(request));\n        }\n      }\n    }\n  }\n  if (_pendingReplies.isEmpty()) {\n    QTimer::singleShot(0, this, &Updater::onUpdateNotNecessary); // While GUI is Idle\n    _networkAccessManager->deleteLater();\n  } else {\n    QTimer::singleShot(timeout * 1000, this, &Updater::cancelAllPendingDownloads);\n  }\n  TIMING;\n}\n\nQList<QString> Updater::errorMessages()\n{\n  return _errorMessages;\n}\n\nbool Updater::allDownloadsOk() const\n{\n  return _errorMessages.isEmpty();\n}\n\nvoid Updater::processReply(QNetworkReply * reply)\n{\n  QString url = reply->request().url().toString();\n  if (!reply->bytesAvailable()) {\n    return;\n  }\n  QByteArray array = reply->readAll();\n  if (array.isNull()) {\n    _errorMessages << QString(tr(\"Error downloading %1 (empty file?)\")).arg(url);\n    return;\n  }\n  if (isCImgCompressed(array)) {\n    TRACE << QString(\"Decompressing reply from\") << url;\n    QByteArray tmp = cimgzDecompress(array);\n    array = tmp;\n  }\n  if (array.isNull() || !array.contains(\"#@gui\")) {\n    _errorMessages << QString(tr(\"Could not read/decompress %1\")).arg(url);\n    return;\n  }\n  QString filename = localFilename(url);\n  if (!safelyWrite(array, filename)) {\n    _errorMessages << QString(tr(\"Error writing file %1\")).arg(filename);\n    return;\n  }\n  _someNetworkUpdatesAchieved = true;\n}\n\nvoid Updater::onNetworkReplyFinished(QNetworkReply * reply)\n{\n  TIMING;\n  QNetworkReply::NetworkError error = reply->error();\n  if (error == QNetworkReply::NoError) {\n    processReply(reply);\n  } else {\n    QString str;\n    QDebug d(&str);\n    d << error;\n    str = str.trimmed();\n    _errorMessages << tr(\"Error downloading %1<br/>Error %2: %3\").arg(reply->request().url().toString()).arg(static_cast<int>(error)).arg(str);\n    Logger::error(\"Update failed\");\n    Logger::note(QString(\"Error string: %1\").arg(reply->errorString()));\n    Logger::note(\"******* Full reply contents ******\\n\");\n    Logger::note(reply->readAll());\n    Logger::note(QString(\"******** HTTP Status: %1\").arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()));\n    // We either create an empty local file or 'touch' the existing one to prevent a systematic update on next startups\n    // Instead, usual delay will occur before next try\n    touchFile(localFilename(reply->url().toString()));\n  }\n  _pendingReplies.remove(reply);\n  if (_pendingReplies.isEmpty()) {\n    if (_errorMessages.isEmpty()) {\n      emit updateIsDone((int)UpdateStatus::Successful);\n    } else {\n      emit updateIsDone((int)UpdateStatus::SomeFailed);\n    }\n    _networkAccessManager->deleteLater();\n    _networkAccessManager = nullptr;\n  }\n  reply->deleteLater();\n}\n\nvoid Updater::notifyAllDownloadsOK()\n{\n  _errorMessages.clear();\n  emit updateIsDone((int)UpdateStatus::Successful);\n}\n\nvoid Updater::cancelAllPendingDownloads()\n{\n  TIMING;\n  // Make a copy because aborting will call onNetworkReplyFinished, and\n  // thus modify the _pendingReplies set.\n  QSet<QNetworkReply *> replies = _pendingReplies;\n  for (QNetworkReply * reply : replies) {\n    _errorMessages << QString(tr(\"Download timeout: %1\")).arg(reply->request().url().toString());\n    reply->abort();\n  }\n}\n\nvoid Updater::onUpdateNotNecessary()\n{\n  emit updateIsDone((int)UpdateStatus::NotNecessary);\n}\n\nQByteArray Updater::cimgzDecompress(const QByteArray & array)\n{\n  try {\n    gmic_library::gmic_image<char> buffer(array.constData(), array.size(), 1, 1, 1, true);\n    gmic_library::gmic_list<char> list = gmic_library::gmic_list<char>::get_unserialize(buffer);\n    if (list.size() == 1) {\n      return {list[0].data(), int(list[0].size())};\n    }\n  } catch (...) {\n    Logger::warning(\"Updater::cimgzDecompress(): Error decompressing data\");\n  }\n  return {};\n}\n\nQByteArray Updater::cimgzDecompressFile(const QString & filename)\n{\n  gmic_library::gmic_image<unsigned char> buffer;\n  try {\n    buffer.load_cimg(filename.toLocal8Bit().constData());\n  } catch (...) {\n    Logger::warning(\"Updater::cimgzDecompressFile(): gmic_image<>::load_cimg error for file \" + filename);\n    return QByteArray();\n  }\n  return QByteArray((char *)buffer.data(), (int)buffer.size());\n}\n\nQString Updater::localFilename(QString url)\n{\n  if (url.startsWith(\"http://\") || url.startsWith(\"https://\")) {\n    QUrl u(url);\n    return QString(\"%1%2\").arg(gmicConfigPath(true)).arg(u.fileName());\n  }\n  return url;\n}\n\nbool Updater::appendLocalGmicFile(QByteArray & array, QString filename) const\n{\n  QFileInfo info(filename);\n  if (!info.exists() || !info.size()) {\n    return false;\n  }\n  QFile file(filename);\n  if (!file.open(QIODevice::ReadOnly)) {\n    Logger::error(\"Error opening file: \" + filename);\n    return false;\n  }\n  QByteArray fileData;\n  if (isCImgCompressed(file.peek(10))) {\n    file.close();\n    TRACE << \"Appending compressed file:\" << filename;\n    fileData = cimgzDecompressFile(filename);\n    if (!fileData.size()) {\n      return false;\n    }\n  } else {\n    TRACE << \"Appending:\" << filename;\n    fileData = file.readAll();\n  }\n  array.append(fileData);\n  array.append('\\n');\n  return true;\n}\n\nvoid Updater::prependOfficialSourceIfRelevant(QStringList & list)\n{\n  if (Settings::officialFilterSource() == SourcesWidget::OfficialFilters::EnabledWithUpdates) {\n    list.push_front(QString::fromUtf8(OfficialFilterSourceURL));\n  }\n}\n\nQByteArray Updater::buildFullStdlib() const\n{\n  QByteArray result;\n  const QByteArray ToTopLevelSeparator = QString(\"#@gui %1\\n\").arg(QString(\"_\").repeated(80)).toUtf8();\n\n  QStringList sources = GmicStdLib::substituteSourceVariables(Settings::filterSources());\n\n  switch (Settings::officialFilterSource()) {\n  case SourcesWidget::OfficialFilters::Disabled:\n    // No stdlib included\n    break;\n  case SourcesWidget::OfficialFilters::EnabledWithoutUpdates:\n    appendBuiltinGmicStdlib(result);\n    result.append(ToTopLevelSeparator);\n    break;\n  case SourcesWidget::OfficialFilters::EnabledWithUpdates:\n    if (!appendLocalGmicFile(result, localFilename(QString::fromUtf8(OfficialFilterSourceURL)))) {\n      // Fallback on builtin stdlib\n      appendBuiltinGmicStdlib(result);\n    }\n    result.append(ToTopLevelSeparator);\n    break;\n  }\n\n  for (const QString & source : sources) {\n    QString filename = localFilename(source);\n    if (appendLocalGmicFile(result, filename)) {\n      result.append(ToTopLevelSeparator);\n    }\n  }\n  return result;\n}\n\nbool Updater::someNetworkUpdateAchieved() const\n{\n  return _someNetworkUpdatesAchieved;\n}\n\nvoid Updater::setOutputMessageMode(OutputMessageMode mode)\n{\n  _outputMessageMode = mode;\n}\n\nvoid Updater::appendBuiltinGmicStdlib(QByteArray & array) const\n{\n  gmic_image<char> stdlib_h = gmic::decompress_stdlib();\n  if (!stdlib_h.size() || (stdlib_h.size() == 1)) {\n    Logger::error(\"Could not decompress gmic builtin stdlib\");\n    return;\n  }\n  QByteArray tmp(stdlib_h, int(stdlib_h.size() - 1));\n  array.append(tmp);\n  array.append('\\n');\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/Updater.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file Updater.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_UPDATER_H\n#define GMIC_QT_UPDATER_H\n\n#include <QApplication>\n#include <QDateTime>\n#include <QDir>\n#include <QFile>\n#include <QFileInfo>\n#include <QList>\n#include <QMap>\n#include <QNetworkAccessManager>\n#include <QNetworkReply>\n#include <QObject>\n#include <QSet>\n#include <QSettings>\n#include <QString>\n#include <QTemporaryFile>\n#include <QTimer>\n#include <memory>\n#include \"GmicQt.h\"\n\nnamespace GmicQt\n{\nclass Updater : public QObject {\n  Q_OBJECT\n\npublic:\n  enum class UpdateStatus\n  {\n    Successful,\n    SomeFailed,\n    NotNecessary\n  };\n\n  static Updater * getInstance();\n  static void setOutputMessageMode(OutputMessageMode mode);\n  ~Updater() override;\n\n  /**\n   * @brief Launch download of files that are either not present locally, or\n   *        older than the given age limit (in hours). To force download\n   *        of all the sources, set the age limit to zero.\n   *\n   * @param ageLimit Delay between 2 network updates in hours\n   * @param timeout in seconds before aborting downloads\n   * @param useNetwork Enable internet access\n   */\n  void startUpdate(int ageLimit, int timeout, bool useNetwork);\n\n  QList<QString> errorMessages();\n  bool allDownloadsOk() const;\n  QByteArray buildFullStdlib() const;\n\n  bool someNetworkUpdateAchieved() const;\n\nsignals:\n  void updateIsDone(int status);\n\npublic slots:\n  void onNetworkReplyFinished(QNetworkReply *);\n  void notifyAllDownloadsOK();\n  void cancelAllPendingDownloads();\n  void onUpdateNotNecessary();\n\nprotected:\n  void processReply(QNetworkReply * reply);\n\nprivate:\n  static QString localFilename(QString url);\n  void appendBuiltinGmicStdlib(QByteArray & array) const;\n  bool appendLocalGmicFile(QByteArray & array, QString filename) const;\n  void prependOfficialSourceIfRelevant(QStringList & list);\n  explicit Updater(QObject * parent);\n  static bool isCImgCompressed(const QByteArray & data);\n  static QByteArray cimgzDecompress(const QByteArray & array);\n  static QByteArray cimgzDecompressFile(const QString & filename);\n  static std::unique_ptr<Updater> _instance;\n  static OutputMessageMode _outputMessageMode;\n  static const char * OfficialFilterSourceURL;\n\n  QNetworkAccessManager * _networkAccessManager;\n  QSet<QNetworkReply *> _pendingReplies;\n  QList<QString> _errorMessages;\n  bool _someNetworkUpdatesAchieved;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_UPDATER_H\n"
  },
  {
    "path": "src/Utils.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file Utils.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n#include \"Utils.h\"\n#include <QByteArray>\n#include <QDebug>\n#include <QDir>\n#include <QFile>\n#include <QFileInfo>\n#include <QStandardPaths>\n#include <QString>\n#include <QTemporaryFile>\n#include \"Common.h\"\n#include \"Host/GmicQtHost.h\"\n#include \"Logger.h\"\n#include \"gmic.h\"\n\n#ifdef _IS_WINDOWS_\n#include <windows.h>\n#include <tlhelp32.h>\n#endif\n#ifdef _IS_UNIX_\n#include <unistd.h>\n#endif\n\nnamespace GmicQt\n{\n\nconst QString & gmicConfigPath(bool create)\n{\n#if defined(Q_OS_ANDROID)\n  QString baseAppPath = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);\n  const QString qpath = QString::fromUtf8(gmic::path_rc(qPrintable(baseAppPath)));\n#elif defined(_IS_WINDOWS_)\n  const QString qpath = QString::fromUtf8(gmic::path_rc());\n#else\n  const QString qpath = QString::fromLocal8Bit(gmic::path_rc());\n#endif\n  static QString result;\n  QFileInfo pathInfo(qpath);\n  if (pathInfo.isDir() || (create && gmic::init_rc())) {\n    result = qpath;\n  } else {\n    result.clear();\n  }\n  return result;\n}\n\nunsigned int host_app_pid()\n{\n#if defined(_IS_UNIX_)\n  return static_cast<int>(getppid());\n#elif defined(_IS_WINDOWS_)\n  HANDLE h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);\n  PROCESSENTRY32 pe;\n  memset(&pe, 0, sizeof(PROCESSENTRY32));\n  pe.dwSize = sizeof(PROCESSENTRY32);\n  DWORD pid = GetCurrentProcessId();\n  if (Process32First(h, &pe)) {\n    do {\n      if (pe.th32ProcessID == pid) {\n        CloseHandle(h);\n        return static_cast<unsigned int>(pe.th32ParentProcessID);\n      }\n    } while (Process32Next(h, &pe));\n  }\n  CloseHandle(h);\n  return static_cast<unsigned int>(pid); // Process own id if no parent was found\n#else\n  return 0;\n#endif\n}\n\nconst QString & pluginFullName()\n{\n#ifdef gmic_prerelease\n#define BETA_SUFFIX \"_pre#\" gmic_prerelease\n#else\n#define BETA_SUFFIX \"\"\n#endif\n  static QString result;\n  if (result.isEmpty()) {\n    result = QString(\"G'MIC-Qt %1- %2 %3 bits - %4\" BETA_SUFFIX)\n                 .arg(GmicQtHost::ApplicationName.isEmpty() ? QString() : QString(\"for %1 \").arg(GmicQtHost::ApplicationName))\n                 .arg(gmic_library::cimg::stros())\n                 .arg(sizeof(void *) == 8 ? 64 : 32)\n                 .arg(gmicVersionString());\n  }\n  return result;\n}\n\nconst QString & pluginCodeName()\n{\n  static QString result;\n  if (result.isEmpty()) {\n    result = GmicQtHost::ApplicationName.isEmpty() ? QString(\"gmic_qt\") : QString(\"gmic_%1_qt\").arg(QString(GmicQtHost::ApplicationShortname).toLower());\n  }\n  return result;\n}\n\nbool touchFile(const QString & path)\n{\n  QFile file(path);\n  if (!file.open(QFile::ReadWrite)) {\n    return false;\n  }\n  const auto size = file.size();\n  file.resize(size + 1);\n  file.resize(size);\n  return true;\n}\n\nbool writeAll(const QByteArray & array, QFile & file)\n{\n  qint64 toBeWritten = array.size();\n  qint64 totalWritten = 0;\n  qint64 writtenByCall = 0;\n  qint64 maxBytesPerWrite = 10l << 20;\n  const char * data = array.constData();\n  do {\n    writtenByCall = file.write(data, std::min(toBeWritten, maxBytesPerWrite));\n    if (writtenByCall == -1) {\n      Logger::error(QString(\"Could not properly write file %1 (%2/%3 bytes written)\") //\n                        .arg(file.fileName())\n                        .arg(totalWritten)\n                        .arg(array.size()));\n      return false;\n    }\n    data += writtenByCall;\n    totalWritten += writtenByCall;\n    toBeWritten -= writtenByCall;\n  } while (toBeWritten);\n  file.flush();\n  return true;\n}\n\nbool safelyWrite(const QByteArray & array, const QString & filename)\n{\n  QString directory = QFileInfo(filename).absoluteDir().absolutePath();\n  if (!QFileInfo(directory).isWritable()) {\n    Logger::error(QString(\"Folder is not writable (%1)\").arg(directory));\n    return false;\n  }\n  QTemporaryFile temporary;\n  temporary.setAutoRemove(false);\n  const bool ok = temporary.open()                                              //\n                  && writeAll(array, temporary)                                 //\n                  && (!QFileInfo(filename).exists() || QFile::remove(filename)) //\n                  && temporary.copy(filename);\n  temporary.remove();\n  return ok;\n}\n} // namespace GmicQt\n"
  },
  {
    "path": "src/Utils.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file Utils.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_UTILS_H\n#define GMIC_QT_UTILS_H\n\n#include \"GmicQt.h\"\nclass QFile;\nclass QByteArray;\nclass QString;\n\nnamespace GmicQt\n{\nconst QString & gmicConfigPath(bool create);\nunsigned int host_app_pid();\nconst QString & pluginFullName();\nconst QString & pluginCodeName();\nbool touchFile(const QString & path);\nbool writeAll(const QByteArray & array, QFile & file);\nbool safelyWrite(const QByteArray & array, const QString & filename);\n} // namespace GmicQt\n\n#endif // GMIC_QT_UTILS_H\n"
  },
  {
    "path": "src/Widgets/InOutPanel.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file InOutPanel.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"Widgets/InOutPanel.h\"\n#include <QDebug>\n#include <QPalette>\n#include <QSettings>\n#include <cstdio>\n#include \"IconLoader.h\"\n#include \"ui_inoutpanel.h\"\n\nnamespace GmicQt\n{\n\nQList<InputMode> InOutPanel::_enabledInputModes = { //\n    InputMode::NoInput,                             //\n    InputMode::Active,                              //\n    InputMode::All,                                 //\n    InputMode::ActiveAndBelow,                      //\n    InputMode::ActiveAndAbove,                      //\n    InputMode::AllVisible,                          //\n    InputMode::AllInvisible};\n\nQList<OutputMode> InOutPanel::_enabledOutputModes = { //\n    OutputMode::InPlace,                              //\n    OutputMode::NewLayers,                            //\n    OutputMode::NewActiveLayers,                      //\n    OutputMode::NewImage};\n\n/*\n * InOutPanel methods\n */\n\nInOutPanel::InOutPanel(QWidget * parent) : QWidget(parent), ui(new Ui::InOutPanel)\n{\n  ui->setupUi(this);\n\n  ui->topLabel->setStyleSheet(\"QLabel { font-weight: bold }\");\n  ui->tbReset->setIcon(IconLoader::load(\"view-refresh\"));\n\n  ui->inputLayers->setToolTip(tr(\"Input layers\"));\n\n#define ADD_INPUT_IF_ENABLED(MODE, TEXT)                                                                                                                                                               \\\n  if (_enabledInputModes.contains(MODE))                                                                                                                                                               \\\n  ui->inputLayers->addItem(TEXT, static_cast<int>(MODE))\n\n  ADD_INPUT_IF_ENABLED(InputMode::NoInput, tr(\"None\"));\n  ADD_INPUT_IF_ENABLED(InputMode::Active, tr(\"Active (default)\"));\n  ADD_INPUT_IF_ENABLED(InputMode::All, tr(\"All\"));\n  ADD_INPUT_IF_ENABLED(InputMode::ActiveAndBelow, tr(\"Active and below\"));\n  ADD_INPUT_IF_ENABLED(InputMode::ActiveAndAbove, tr(\"Active and above\"));\n  ADD_INPUT_IF_ENABLED(InputMode::AllVisible, tr(\"All visible\"));\n  ADD_INPUT_IF_ENABLED(InputMode::AllInvisible, tr(\"All invisible\"));\n  // \"decr.\" input mode have been removed (since 2.8.2)\n  //  ui->inputLayers->addItem(tr(\"All visible (decr.)\"), AllVisiblesDesc);\n  //  ui->inputLayers->addItem(tr(\"All invisible (decr.)\"), AllInvisiblesDesc);\n  //  ui->inputLayers->addItem(tr(\"All (decr.)\"), AllDesc);\n\n  if (ui->inputLayers->count() == 1) {\n    ui->labelInputLayers->hide();\n    ui->inputLayers->hide();\n  }\n\n  ui->outputMode->setToolTip(tr(\"Output mode\"));\n\n#define ADD_OUTPUT_IF_ENABLED(MODE, TEXT)                                                                                                                                                              \\\n  if (_enabledOutputModes.contains(MODE))                                                                                                                                                              \\\n  ui->outputMode->addItem(TEXT, static_cast<int>(MODE))\n\n  ADD_OUTPUT_IF_ENABLED(OutputMode::InPlace, tr(\"In place (default)\"));\n  ADD_OUTPUT_IF_ENABLED(OutputMode::NewLayers, tr(\"New layer(s)\"));\n  ADD_OUTPUT_IF_ENABLED(OutputMode::NewActiveLayers, tr(\"New active layer(s)\"));\n  ADD_OUTPUT_IF_ENABLED(OutputMode::NewImage, tr(\"New image\"));\n\n  if (ui->outputMode->count() == 1) {\n    ui->labelOutputMode->hide();\n    ui->outputMode->hide();\n  }\n\n  setTopLabel();\n  updateLayoutIfUniqueRow();\n\n  connect(ui->inputLayers, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &InOutPanel::onInputModeSelected);\n  connect(ui->outputMode, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &InOutPanel::onOutputModeSelected);\n  connect(ui->tbReset, &QToolButton::clicked, this, &InOutPanel::onResetButtonClicked);\n\n  _notifyValueChange = true;\n}\n\nInOutPanel::~InOutPanel()\n{\n  delete ui;\n}\n\nInputMode InOutPanel::inputMode() const\n{\n  int mode = ui->inputLayers->currentData().toInt();\n  return static_cast<InputMode>(mode);\n}\n\nOutputMode InOutPanel::outputMode() const\n{\n  int mode = ui->outputMode->currentData().toInt();\n  return static_cast<OutputMode>(mode);\n}\n\nvoid InOutPanel::setInputMode(InputMode mode)\n{\n  int index = ui->inputLayers->findData(static_cast<int>(mode));\n  ui->inputLayers->setCurrentIndex((index == -1) ? ui->inputLayers->findData(static_cast<int>(DefaultInputMode)) : index);\n}\n\nvoid InOutPanel::setOutputMode(OutputMode mode)\n{\n  int index = ui->outputMode->findData(static_cast<int>(mode));\n  ui->outputMode->setCurrentIndex((index == -1) ? ui->outputMode->findData(static_cast<int>(DefaultOutputMode)) : index);\n}\n\nvoid InOutPanel::reset()\n{\n  ui->inputLayers->setCurrentIndex(ui->inputLayers->findData(static_cast<int>(DefaultInputMode)));\n  ui->outputMode->setCurrentIndex(ui->outputMode->findData(static_cast<int>(DefaultOutputMode)));\n}\n\nvoid InOutPanel::onInputModeSelected(int)\n{\n  if (_notifyValueChange) {\n    emit inputModeChanged(inputMode());\n  }\n}\n\nvoid InOutPanel::onOutputModeSelected(int) {}\n\nvoid InOutPanel::onResetButtonClicked()\n{\n  setState(InputOutputState::Default, true);\n}\n\nvoid InOutPanel::setDarkTheme()\n{\n  ui->tbReset->setIcon(IconLoader::load(\"view-refresh\"));\n}\n\nvoid InOutPanel::setDefaultInputMode()\n{\n  if (_enabledInputModes.contains(DefaultInputMode)) {\n    return;\n  }\n  const int start = static_cast<int>(InputMode::Active);\n  const int stop = static_cast<int>(InputMode::AllInvisible);\n  for (int m = start; m <= stop; ++m) {\n    const auto mode = static_cast<InputMode>(m);\n    if (_enabledInputModes.contains(mode)) {\n      DefaultInputMode = mode;\n      return;\n    }\n  }\n  Q_ASSERT_X(_enabledInputModes.contains(InputMode::NoInput), __FUNCTION__, \"No input mode left by host settings. Default mode cannot be determined.\");\n  DefaultInputMode = InputMode::NoInput;\n}\n\nvoid InOutPanel::setDefaultOutputMode()\n{\n  if (_enabledOutputModes.contains(DefaultOutputMode)) {\n    return;\n  }\n  Q_ASSERT_X(!_enabledOutputModes.isEmpty(), __FUNCTION__, \"No output mode left by host settings. Default mode cannot be determined.\");\n  const int start = (int)OutputMode::InPlace;\n  const int stop = (int)OutputMode::NewImage;\n  for (int m = start; m <= stop; ++m) {\n    const auto mode = static_cast<OutputMode>(m);\n    if (_enabledOutputModes.contains(mode)) {\n      DefaultOutputMode = mode;\n      return;\n    }\n  }\n}\n\nvoid InOutPanel::setTopLabel()\n{\n  const bool input = ui->inputLayers->count() > 1;\n  const bool output = ui->outputMode->count() > 1;\n  if (input && output) {\n    ui->topLabel->setText(tr(\"Input / Output\"));\n  } else if (input) {\n    ui->topLabel->setText(tr(\"Input\"));\n  } else if (output) {\n    ui->topLabel->setText(tr(\"Output\"));\n  }\n}\n\nvoid InOutPanel::updateLayoutIfUniqueRow()\n{\n  const bool input = ui->inputLayers->count() > 1;\n  const bool output = ui->outputMode->count() > 1;\n  if ((input + output) > 1) {\n    return;\n  }\n  if (input) {\n    ui->topLabel->setText(ui->labelInputLayers->text());\n    ui->horizontalLayout->insertWidget(1, ui->inputLayers);\n  } else if (output) {\n    ui->topLabel->setText(ui->labelOutputMode->text());\n    ui->horizontalLayout->insertWidget(1, ui->outputMode);\n  }\n  ui->topLabel->setStyleSheet(\"QLabel { font-weight: normal }\");\n  ui->scrollArea->hide();\n}\n\nvoid InOutPanel::disableNotifications()\n{\n  _notifyValueChange = false;\n}\n\nvoid InOutPanel::enableNotifications()\n{\n  _notifyValueChange = true;\n}\n\n/*\n * InOutPanel::state methods\n */\n\nInputOutputState InOutPanel::state() const\n{\n  return {inputMode(), outputMode()};\n}\n\nvoid InOutPanel::setState(const InputOutputState & state, bool notify)\n{\n  bool savedNotificationStatus = _notifyValueChange;\n  if (notify) {\n    enableNotifications();\n  } else {\n    disableNotifications();\n  }\n\n  setInputMode(state.inputMode);\n  setOutputMode(state.outputMode);\n\n  if (savedNotificationStatus) {\n    enableNotifications();\n  } else {\n    disableNotifications();\n  }\n}\n\nvoid InOutPanel::setEnabled(bool on)\n{\n  ui->inputLayers->setEnabled(on);\n  ui->outputMode->setEnabled(on);\n}\n\nvoid InOutPanel::disable()\n{\n  setEnabled(false);\n}\n\nvoid InOutPanel::enable()\n{\n  setEnabled(true);\n}\n\nvoid InOutPanel::disableInputMode(InputMode mode)\n{\n  const bool isDefault = (mode == DefaultInputMode);\n  _enabledInputModes.removeOne(mode);\n  if (isDefault) {\n    setDefaultInputMode();\n  }\n}\n\nvoid InOutPanel::disableOutputMode(OutputMode mode)\n{\n  const bool isDefault = (mode == DefaultOutputMode);\n  _enabledOutputModes.removeOne(mode);\n  if (isDefault) {\n    setDefaultOutputMode();\n  }\n}\n\nbool InOutPanel::hasActiveControls()\n{\n  const bool input = ui->inputLayers->count() > 1;\n  const bool output = ui->outputMode->count() > 1;\n  return input || output;\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/Widgets/InOutPanel.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file InOutPanel.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_INOUTPANEL_H\n#define GMIC_QT_INOUTPANEL_H\n\n#include <QWidget>\n#include \"GmicQt.h\"\n#include \"Host/GmicQtHost.h\"\n#include \"InputOutputState.h\"\nclass QSettings;\nclass QPalette;\n\nnamespace Ui\n{\nclass InOutPanel;\n}\n\nnamespace GmicQt\n{\n\nclass FilterThread;\n\nclass InOutPanel : public QWidget {\n  Q_OBJECT\n\npublic:\n  explicit InOutPanel(QWidget * parent);\n  ~InOutPanel() override;\n\npublic:\n  InputMode inputMode() const;\n  OutputMode outputMode() const;\n  OutputMessageMode outputMessageMode() const;\n  void reset();\n\n  void disableNotifications();\n  void enableNotifications();\n  void setInputMode(InputMode mode);\n  void setOutputMode(OutputMode mode);\n\n  InputOutputState state() const;\n  void setState(const InputOutputState & state, bool notify);\n\n  void setEnabled(bool);\n  void disable();\n  void enable();\n\n  static void disableInputMode(InputMode mode);\n  static void disableOutputMode(OutputMode mode);\n\n  bool hasActiveControls();\n\nsignals:\n  void inputModeChanged(InputMode);\n\npublic slots:\n  void onInputModeSelected(int);\n  void onOutputModeSelected(int);\n  void onResetButtonClicked();\n  void setDarkTheme();\n\nprivate:\n  static void setDefaultInputMode();\n  static void setDefaultOutputMode();\n  void setTopLabel();\n  void updateLayoutIfUniqueRow();\n  bool _notifyValueChange;\n  Ui::InOutPanel * ui;\n  static const int NoSelection = -1;\n  static QList<InputMode> _enabledInputModes;\n  static QList<OutputMode> _enabledOutputModes;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_INOUTPANEL_H\n"
  },
  {
    "path": "src/Widgets/LanguageSelectionWidget.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file LanguageSelectionWidget.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"Widgets/LanguageSelectionWidget.h\"\n#include <QDebug>\n#include <QSettings>\n#include <QStringList>\n#include \"Common.h\"\n#include \"Globals.h\"\n#include \"LanguageSettings.h\"\n#include \"Settings.h\"\n#include \"ui_languageselectionwidget.h\"\n\nnamespace GmicQt\n{\n\nLanguageSelectionWidget::LanguageSelectionWidget(QWidget * parent) //\n    : QWidget(parent),                                             //\n      ui(new Ui::LanguageSelectionWidget),                         //\n      _code2name(LanguageSettings::availableLanguages())\n{\n  ui->setupUi(this);\n  QMap<QString, QString>::const_iterator it = _code2name.begin();\n  while (it != _code2name.end()) {\n    ui->comboBox->addItem(*it, QVariant(it.key()));\n    ++it;\n  }\n\n  QString lang = LanguageSettings::systemDefaultAndAvailableLanguageCode();\n  _systemDefaultIsAvailable = !lang.isEmpty();\n  if (_systemDefaultIsAvailable) {\n    ui->comboBox->insertItem(0, QString(tr(\"System default (%1)\")).arg(_code2name[lang]), QVariant(QString()));\n  }\n\n  if (Settings::darkThemeEnabled()) {\n    QPalette p = ui->cbTranslateFilters->palette();\n    p.setColor(QPalette::Text, Settings::CheckBoxTextColor);\n    p.setColor(QPalette::Base, Settings::CheckBoxBaseColor);\n    ui->cbTranslateFilters->setPalette(p);\n  }\n  ui->cbTranslateFilters->setToolTip(tr(\"Translations are very likely to be incomplete.\"));\n\n  connect(ui->comboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &LanguageSelectionWidget::onLanguageSelectionChanged);\n  connect(ui->cbTranslateFilters, &QCheckBox::toggled, this, &LanguageSelectionWidget::onCheckboxToggled);\n}\n\nLanguageSelectionWidget::~LanguageSelectionWidget()\n{\n  delete ui;\n}\n\nbool LanguageSelectionWidget::translateFiltersEnabled() const\n{\n  return ui->cbTranslateFilters->isChecked();\n}\n\nvoid LanguageSelectionWidget::enableFilterTranslation(bool on)\n{\n  ui->cbTranslateFilters->setChecked(on);\n}\n\nvoid LanguageSelectionWidget::selectLanguage(const QString & code)\n{\n  QString lang;\n  // Empty code means \"system default\"\n  if (code.isEmpty()) {\n    if (_systemDefaultIsAvailable) {\n      ui->comboBox->setCurrentIndex(0);\n      return;\n    }\n    lang = \"en\";\n  } else {\n    if (_code2name.find(code) != _code2name.end()) {\n      lang = code;\n    } else {\n      lang = \"en\";\n    }\n  }\n  const int count = ui->comboBox->count();\n  for (int i = _systemDefaultIsAvailable ? 1 : 0; i < count; ++i) {\n    if (ui->comboBox->itemData(i).toString() == lang) {\n      ui->comboBox->setCurrentIndex(i);\n      return;\n    }\n  }\n}\n\nvoid LanguageSelectionWidget::onLanguageSelectionChanged(int index)\n{\n  QString lang = ui->comboBox->itemData(index).toString();\n  Settings::setLanguageCode(lang);\n  if (lang.isEmpty()) {\n    lang = LanguageSettings::systemDefaultAndAvailableLanguageCode();\n  }\n  if (LanguageSettings::filterTranslationAvailable(lang)) {\n    ui->cbTranslateFilters->setEnabled(true);\n  } else {\n    ui->cbTranslateFilters->setChecked(false);\n    ui->cbTranslateFilters->setEnabled(false);\n  }\n}\n\nvoid LanguageSelectionWidget::onCheckboxToggled(bool on)\n{\n  Settings::setFilterTranslationEnabled(on);\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/Widgets/LanguageSelectionWidget.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file LanguageSelectionWidget.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef LANGUAGESELECTIONWIDGET_H\n#define LANGUAGESELECTIONWIDGET_H\n\n#include <QMap>\n#include <QString>\n#include <QWidget>\nnamespace Ui\n{\nclass LanguageSelectionWidget;\n}\n\nnamespace GmicQt\n{\n\nclass LanguageSelectionWidget : public QWidget {\n  Q_OBJECT\npublic:\n  explicit LanguageSelectionWidget(QWidget * parent);\n  ~LanguageSelectionWidget();\n  bool translateFiltersEnabled() const;\n  void enableFilterTranslation(bool on);\n\npublic slots:\n  void selectLanguage(const QString & code);\nprivate slots:\n  void onLanguageSelectionChanged(int index);\n  void onCheckboxToggled(bool);\n\nprivate:\n  Ui::LanguageSelectionWidget * ui;\n  const QMap<QString, QString> & _code2name;\n  bool _systemDefaultIsAvailable;\n};\n\n} // namespace GmicQt\n\n#endif // LANGUAGESELECTIONWIDGET_H\n"
  },
  {
    "path": "src/Widgets/PreviewWidget.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file PreviewWidget.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"Widgets/PreviewWidget.h\"\n#include <QApplication>\n#include <QComboBox>\n#include <QDebug>\n#include <QEvent>\n#include <QMouseEvent>\n#include <QPainter>\n#include <QPointF>\n#include <algorithm>\n#include \"Common.h\"\n#include \"CroppedActiveLayerProxy.h\"\n#include \"Globals.h\"\n#include \"GmicStdlib.h\"\n#include \"ImageTools.h\"\n#include \"Misc.h\"\n#include \"OverrideCursor.h\"\n#include \"Settings.h\"\n#include \"gmic.h\"\n\nnamespace GmicQt\n{\n\nconst PreviewWidget::PreviewRect PreviewWidget::PreviewRect::Full{0.0, 0.0, 1.0, 1.0};\n\nPreviewWidget::PreviewWidget(QWidget * parent) : QWidget(parent)\n{\n  setAutoFillBackground(false);\n  _image = new gmic_library::gmic_image<float>;\n  _image->assign();\n  _savedPreview = new gmic_library::gmic_image<float>;\n  _savedPreview->assign();\n  _transparency.load(\":resources/transparency.png\");\n\n  _visibleRect = PreviewRect::Full;\n  saveVisibleCenter();\n\n  _pendingResize = false;\n  _previewEnabled = true;\n  _currentZoomFactor = 1.0;\n  _zoomConstraint = ZoomConstraint::Any;\n  _timerID = 0;\n  _savedPreviewIsValid = false;\n  _paintOriginalImage = true;\n  qApp->installEventFilter(this);\n  _rightClickEnabled = false;\n  _originalImageSize = QSize(-1, -1);\n  _movedKeypointOrigin = QPoint(-1, -1);\n  _movedKeypointIndex = -1;\n  _previewType = PreviewType::Full;\n  setMouseTracking(false);\n  _xPreviewSplit = 0.5f;\n  _yPreviewSplit = 0.5f;\n  _draggingMode = DraggingMode::Inactive;\n  _savedPreviewType = static_cast<PreviewType>(QSettings().value(PREVIEW_SPLITTER_KEY, int(PreviewType::ForwardVertical)).toInt());\n}\n\nPreviewWidget::~PreviewWidget()\n{\n  QSettings().setValue(PREVIEW_SPLITTER_KEY, static_cast<int>(_savedPreviewType));\n  delete _image;\n  delete _savedPreview;\n}\n\nconst gmic_library::gmic_image<float> & PreviewWidget::image() const\n{\n  return *_image;\n}\n\nvoid PreviewWidget::setPreviewImage(const gmic_library::gmic_image<float> & image)\n{\n  _errorMessage.clear();\n  _errorImage = QImage();\n  _overlayMessage.clear();\n  *_image = image;\n  *_savedPreview = image;\n  _savedPreviewIsValid = true;\n  updateOriginalImagePosition();\n  _paintOriginalImage = false;\n  if (isAtFullZoom()) {\n    if (_fullImageSize.isNull()) {\n      _currentZoomFactor = 1.0;\n    } else {\n      _currentZoomFactor = std::min(width() / (double)_fullImageSize.width(), height() / (double)_fullImageSize.height());\n    }\n    emit zoomChanged(_currentZoomFactor);\n  }\n  update();\n}\n\nvoid PreviewWidget::setOverlayMessage(const QString & message)\n{\n  _overlayMessage = message;\n  _paintOriginalImage = false;\n  update();\n}\n\nvoid PreviewWidget::clearOverlayMessage()\n{\n  _overlayMessage.clear();\n  _paintOriginalImage = false;\n  update();\n}\n\nvoid PreviewWidget::setPreviewErrorMessage(const QString & message)\n{\n  _errorMessage = message;\n  _errorImage = QImage();\n  updateErrorImage();\n  _paintOriginalImage = false;\n  update();\n}\n\nvoid PreviewWidget::setFullImageSize(const QSize & size)\n{\n  _fullImageSize = size;\n  CroppedActiveLayerProxy::clear();\n  updateVisibleRect();\n  saveVisibleCenter();\n}\n\nvoid PreviewWidget::updateFullImageSizeIfDifferent(const QSize & size)\n{\n  if (size != _fullImageSize) {\n    setFullImageSize(size);\n  } else {\n    CroppedActiveLayerProxy::clear();\n  }\n}\n\nvoid PreviewWidget::updateVisibleRect()\n{\n  if (_fullImageSize.isNull()) {\n    _visibleRect = PreviewRect::Full;\n  } else {\n    _visibleRect.w = std::min(1.0, (width() / (_currentZoomFactor * _fullImageSize.width())));\n    _visibleRect.h = std::min(1.0, (height() / (_currentZoomFactor * _fullImageSize.height())));\n    _visibleRect.x = std::min(_visibleRect.x, 1.0 - _visibleRect.w);\n    _visibleRect.y = std::min(_visibleRect.y, 1.0 - _visibleRect.h);\n  }\n}\n\nvoid PreviewWidget::centerVisibleRect()\n{\n  _visibleRect.moveToCenter();\n}\n\nvoid PreviewWidget::updateOriginalImagePosition()\n{\n  if (_fullImageSize.isNull()) {\n    _originalImageSize = QSize(0, 0);\n    _originalImageScaledSize = QSize(0, 0);\n    _imagePosition = rect();\n    return;\n  }\n  _originalImageSize = originalImageCropSize();\n\n  if (isAtFullZoom()) {\n    double correctZoomFactor = std::min(width() / (double)_originalImageSize.width(), height() / (double)_originalImageSize.height());\n    if (correctZoomFactor != _currentZoomFactor) {\n      _currentZoomFactor = correctZoomFactor;\n      emit zoomChanged(_currentZoomFactor);\n    }\n  }\n\n  if (_currentZoomFactor > 1.0) {\n    _originalImageScaledSize = _originalImageSize;\n    QSize imageSize(std::round(_originalImageSize.width() * _currentZoomFactor), std::round(_originalImageSize.height() * _currentZoomFactor));\n    int left, top;\n    if (imageSize.height() > height()) {\n      top = -(int)(((_visibleRect.y * _fullImageSize.height()) - std::floor(_visibleRect.y * _fullImageSize.height())) * _currentZoomFactor);\n    } else {\n      top = (height() - imageSize.height()) / 2;\n    }\n    if (imageSize.width() > width()) {\n      left = -(int)(((_visibleRect.x * _fullImageSize.width()) - std::floor(_visibleRect.x * _fullImageSize.width())) * _currentZoomFactor);\n    } else {\n      left = (width() - imageSize.width()) / 2;\n    }\n    _imagePosition = QRect(QPoint(left, top), imageSize);\n  } else {\n    _originalImageScaledSize = QSize(static_cast<int>(std::round(_originalImageSize.width() * _currentZoomFactor)), //\n                                     static_cast<int>(std::round(_originalImageSize.height() * _currentZoomFactor)));\n    _imagePosition = QRect(QPoint(std::max(0, (width() - _originalImageScaledSize.width()) / 2), //\n                                  std::max(0, (height() - _originalImageScaledSize.height()) / 2)),\n                           _originalImageScaledSize);\n  }\n}\n\nvoid PreviewWidget::updatePreviewImagePosition()\n{\n  /*  If preview image has a size different from the original image crop, or\n   *  we are at \"full image\" zoom of an image smaller than the widget,\n   *  then the image should fit the widget size.\n   */\n  const QSize previewImageSize(_image->width(), _image->height());\n  if ((previewImageSize != _originalImageScaledSize) || (isAtFullZoom() && (_currentZoomFactor > 1.0))) {\n    QSize imageSize;\n    if (previewImageSize != _originalImageScaledSize) {\n      imageSize = previewImageSize.scaled(width(), height(), Qt::KeepAspectRatio);\n    } else {\n      imageSize = QSize(static_cast<int>(std::round(_originalImageSize.width() * _currentZoomFactor)), //\n                        static_cast<int>(std::round(_originalImageSize.height() * _currentZoomFactor)));\n    }\n    _imagePosition = QRect(QPoint(std::max(0, (width() - imageSize.width()) / 2), //\n                                  std::max(0, (height() - imageSize.height()) / 2)),\n                           imageSize);\n    _originalImageScaledSize = QSize(-1, -1); // Make sure next preview update will not consider originaImageScaledSize\n  }\n  /*\n   *  Otherwise : Preview size == Original scaled size and image position is therefore unchanged\n   */\n}\n\nQRect PreviewWidget::splittedPreviewPosition()\n{\n  updateOriginalImagePosition();\n  QRect original = _imagePosition;\n  updatePreviewImagePosition();\n  QRect preview = _imagePosition;\n  int x1 = std::max(0, std::min(original.left(), preview.left()));\n  int y1 = std::max(0, std::min(original.top(), preview.top()));\n  int x2 = std::min(width() - 1, std::max(original.left() + original.width(), preview.left() + preview.width()));\n  int y2 = std::min(height() - 1, std::max(original.top() + original.height(), preview.top() + preview.height()));\n  return QRect(x1, y1, 1 + x2 - x1, 1 + y2 - y1);\n}\n\nvoid PreviewWidget::updateErrorImage()\n{\n  gmic_library::gmic_list<float> images;\n  gmic_library::gmic_list<char> imageNames;\n  images.assign();\n  imageNames.assign();\n  gmic_image<float> image;\n  getOriginalImageCrop(image);\n  image.move_to(images);\n  QString fullCommandLine = commandFromOutputMessageMode(Settings::outputMessageMode());\n  fullCommandLine += QString(\" _host=%1 _tk=qt\").arg(GmicQtHost::ApplicationShortname);\n  fullCommandLine += QString(\" _preview_area_width=%1\").arg(width());\n  fullCommandLine += QString(\" _preview_area_height=%1\").arg(height());\n  fullCommandLine += QString(\" gui_error_preview \\\"%2\\\"\").arg(_errorMessage);\n  try {\n    gmic(fullCommandLine.toLocal8Bit().constData(), images, imageNames, GmicStdLib::Array.constData(), true);\n  } catch (...) {\n    images.assign();\n    imageNames.assign();\n  }\n  if (!images.size() || !images.front()) {\n    _errorImage = QImage(size(), QImage::Format_ARGB32);\n    _errorImage.fill(QColor(40, 40, 40));\n    QPainter painter(&_errorImage);\n    painter.setPen(Qt::green);\n    painter.drawText(QRect(0, 0, _errorImage.width(), _errorImage.height()), Qt::AlignCenter | Qt::TextWordWrap, _errorMessage);\n    return;\n  }\n  QImage qimage;\n  convertGmicImageToQImage(images.front(), qimage);\n  if (qimage.size() != size()) {\n    _errorImage = qimage.scaled(size());\n  } else {\n    _errorImage = qimage;\n  }\n}\n\nvoid PreviewWidget::paintKeypoints(QPainter & painter)\n{\n  QPen pen;\n  pen.setColor(Qt::black);\n  pen.setWidth(2);\n  painter.setRenderHint(QPainter::Antialiasing, true);\n  painter.setPen(pen);\n\n  QRect visibleRect = rect() & _imagePosition;\n  KeypointList::reverse_iterator it = _keypoints.rbegin();\n  int index = static_cast<int>(_keypoints.size() - 1);\n  while (it != _keypoints.rend()) {\n    if (!it->isNaN()) {\n      const KeypointList::Keypoint & kp = *it;\n      const int & radius = kp.actualRadiusFromPreviewSize(_imagePosition.size());\n      QPoint visibleCenter = keypointToVisiblePointInWidget(kp);\n      QPoint realCenter = keypointToPointInWidget(kp);\n      QRect r(visibleCenter.x() - radius, visibleCenter.y() - radius, 2 * radius, 2 * radius);\n      QColor brushColor = kp.color;\n      if ((index == _movedKeypointIndex) && !kp.keepOpacityWhenSelected) {\n        brushColor.setAlpha(255);\n      }\n      if (visibleRect.contains(realCenter, false)) {\n        painter.setBrush(brushColor);\n        pen.setStyle(Qt::SolidLine);\n      } else {\n        painter.setBrush(brushColor.darker(150));\n        pen.setStyle(Qt::DotLine);\n      }\n      pen.setColor(QColor(0, 0, 0, brushColor.alpha()));\n      painter.setPen(pen);\n      painter.drawEllipse(r);\n    }\n    ++it;\n    --index;\n  }\n}\n\nint PreviewWidget::keypointUnderMouse(const QPoint & p)\n{\n  KeypointList::iterator it = _keypoints.begin();\n  int index = 0;\n  while (it != _keypoints.end()) {\n    if (!it->isNaN()) {\n      const KeypointList::Keypoint & kp = *it;\n      QPoint center = keypointToVisiblePointInWidget(kp);\n      if (roundedDistance(center, p) <= (kp.actualRadiusFromPreviewSize(_imagePosition.size()) + 2)) {\n        return index;\n      }\n    }\n    ++it;\n    ++index;\n  }\n  return -1;\n}\n\nQPoint PreviewWidget::keypointToPointInWidget(const KeypointList::Keypoint & kp) const\n{\n  return QPoint(static_cast<int>(std::round(_imagePosition.left() + (_imagePosition.width() - 1) * (kp.x / 100.0f))),\n                static_cast<int>(std::round(_imagePosition.top() + (_imagePosition.height() - 1) * (kp.y / 100.0f))));\n}\n\nQPoint PreviewWidget::keypointToVisiblePointInWidget(const KeypointList::Keypoint & kp) const\n{\n  QPoint p = keypointToPointInWidget(kp);\n  p.rx() = std::max(std::max(_imagePosition.left(), 0), std::min(p.x(), std::min(rect().left() + rect().width(), _imagePosition.left() + _imagePosition.width())));\n  p.ry() = std::max(std::max(_imagePosition.top(), 0), std::min(p.y(), std::min(rect().top() + rect().height(), _imagePosition.top() + _imagePosition.height())));\n  return p;\n}\n\nQPointF PreviewWidget::pointInWidgetToKeypointPosition(const QPoint & p) const\n{\n  QPointF result(100.0 * (p.x() - _imagePosition.left()) / (float)(_imagePosition.width() - 1), 100.0 * (p.y() - _imagePosition.top()) / (float)(_imagePosition.height() - 1));\n  result.rx() = std::min(300.0, std::max(-200.0, result.x()));\n  result.ry() = std::min(300.0, std::max(-200.0, result.y()));\n  return result;\n}\n\nPreviewWidget::DraggingMode PreviewWidget::splitterDraggingModeFromMousePosition(const QPoint & p)\n{\n  if (_previewType == PreviewType::Full) {\n    return DraggingMode::Inactive;\n  }\n  int x = (_imagePosition.left() <= 0) ? (_xPreviewSplit * width()) : (_imagePosition.left() + _xPreviewSplit * _imagePosition.width());\n  int y = (_imagePosition.top() <= 0) ? (_yPreviewSplit * height()) : (_imagePosition.top() + _yPreviewSplit * _imagePosition.height());\n  switch (_previewType) {\n  case PreviewType::ForwardHorizontal:\n  case PreviewType::BackwardHorizontal:\n  case PreviewType::DuplicateTop:\n  case PreviewType::DuplicateBottom:\n  case PreviewType::DuplicateHorizontal:\n    return (std::abs(p.y() - y) < (2 * _SplitterButtonWidth + _SplitterButtonMargin)) ? DraggingMode::Y : DraggingMode::Inactive;\n    break;\n  case PreviewType::ForwardVertical:\n  case PreviewType::BackwardVertical:\n  case PreviewType::DuplicateLeft:\n  case PreviewType::DuplicateRight:\n  case PreviewType::DuplicateVertical:\n    return (std::abs(p.x() - x) < (2 * _SplitterButtonWidth + _SplitterButtonMargin)) ? DraggingMode::X : DraggingMode::Inactive;\n    break;\n  case PreviewType::Checkered:\n  case PreviewType::CheckeredInverse: {\n    int flag = 0;\n    flag |= (std::abs(p.x() - x) < (2 * _SplitterButtonWidth + _SplitterButtonMargin)) ? DraggingMode::X : 0;\n    flag |= (std::abs(p.y() - y) < (2 * _SplitterButtonWidth + _SplitterButtonMargin)) ? DraggingMode::Y : 0;\n    return DraggingMode(flag);\n  } break;\n  case PreviewType::Full:\n    return DraggingMode::Inactive;\n    break;\n  }\n  return DraggingMode::Inactive;\n}\n\nvoid PreviewWidget::paintPreview(QPainter & painter)\n{\n  if (!_overlayMessage.isEmpty()) {\n    paintOriginalImage(painter);\n    painter.fillRect(_imagePosition, QColor(40, 40, 40, 150));\n    painter.setPen(Qt::green);\n    painter.drawText(_imagePosition, Qt::AlignCenter | Qt::TextWordWrap, _overlayMessage);\n    return;\n  }\n  if (!_errorMessage.isEmpty()) {\n    if (_errorImage.isNull() || (_errorImage.size() != size())) {\n      updateErrorImage();\n    }\n    painter.drawImage(0, 0, _errorImage);\n    paintKeypoints(painter);\n    return;\n  }\n\n  if (!_image->width() && !_image->height()) {\n    painter.fillRect(rect(), QBrush(_transparency));\n    paintKeypoints(painter);\n    return;\n  }\n\n  updatePreviewImagePosition();\n\n  if (hasAlphaChannel(*_image)) {\n    painter.fillRect(_imagePosition, QBrush(_transparency));\n  }\n  QImage qimage;\n  convertGmicImageToQImage(_image->get_resize(_imagePosition.width(), _imagePosition.height(), 1, -100, 1), qimage);\n  painter.drawImage(_imagePosition, qimage);\n  paintKeypoints(painter);\n}\n\nvoid PreviewWidget::paintOriginalImage(QPainter & painter)\n{\n  gmic_image<float> image;\n  getOriginalImageCrop(image);\n  updateOriginalImagePosition();\n  if (!image.width() && !image.height()) {\n    painter.fillRect(rect(), QBrush(_transparency));\n  } else {\n    image.resize(_imagePosition.width(), _imagePosition.height(), 1, -100, 1);\n    if (hasAlphaChannel(image)) {\n      painter.fillRect(_imagePosition, QBrush(_transparency));\n    }\n    QImage qimage;\n    convertGmicImageToQImage(image, qimage);\n    painter.drawImage(_imagePosition, qimage);\n    paintKeypoints(painter);\n  }\n}\n\nvoid PreviewWidget::paintSplittedPreview(QPainter & painter)\n{\n  QRect position = splittedPreviewPosition();\n  // int x = (_imagePosition.left() <= 0) ? (_xPreviewSplit * width()) : (_imagePosition.left() + _xPreviewSplit * _imagePosition.width());\n  // int y = (_imagePosition.top() <= 0) ? (_yPreviewSplit * height()) : (_imagePosition.top() + _yPreviewSplit * _imagePosition.height());\n  int x = (position.left() + _xPreviewSplit * position.width());\n  int y = (position.top() + _yPreviewSplit * position.height());\n\n  switch (_previewType) {\n  case PreviewType::Full:\n    break;\n  case PreviewType::ForwardHorizontal:\n    paintOriginalImage(painter);\n    painter.save();\n    painter.setClipRect(position.left(), y, position.width(), 1 + position.bottom() - y);\n    paintPreview(painter);\n    painter.restore();\n    break;\n  case PreviewType::ForwardVertical:\n    paintOriginalImage(painter);\n    painter.save();\n    painter.setClipRect(x, position.top(), 1 + position.right() - x, position.height());\n    paintPreview(painter);\n    painter.restore();\n    break;\n  case PreviewType::BackwardHorizontal:\n    paintPreview(painter);\n    painter.save();\n    painter.setClipRect(position.left(), y, position.width(), 1 + position.bottom() - y);\n    paintOriginalImage(painter);\n    painter.restore();\n    break;\n  case PreviewType::BackwardVertical:\n    paintPreview(painter);\n    painter.save();\n    painter.setClipRect(x, position.top(), 1 + position.right() - x, position.height());\n    paintOriginalImage(painter);\n    painter.restore();\n    break;\n  case PreviewType::DuplicateTop:\n    paintOriginalImage(painter);\n    painter.save();\n    painter.setClipRect(position.left(), y, position.width(), 1 + position.bottom() - y);\n    painter.translate(QPoint(0, y - position.top()));\n    paintPreview(painter);\n    painter.restore();\n    break;\n  case PreviewType::DuplicateBottom:\n    paintOriginalImage(painter);\n    painter.save();\n    painter.setClipRect(0, position.top(), width(), y);\n    painter.translate(QPoint(0, y - position.bottom()));\n    paintPreview(painter);\n    painter.restore();\n    break;\n  case PreviewType::DuplicateLeft:\n    paintOriginalImage(painter);\n    painter.save();\n    painter.setClipRect(x, position.top(), 1 + position.right() - x, position.height());\n    painter.translate(QPoint(x - position.left(), 0));\n    paintPreview(painter);\n    painter.restore();\n    break;\n  case PreviewType::DuplicateRight:\n    paintOriginalImage(painter);\n    painter.save();\n    painter.setClipRect(position.left(), position.top(), x, position.height());\n    painter.translate(QPoint(x - position.right(), 0));\n    paintPreview(painter);\n    painter.restore();\n    break;\n  case PreviewType::DuplicateHorizontal:\n    // Centered crop with corresponding height\n    painter.save();\n    painter.save();\n    painter.setClipRect(position);\n    painter.translate(QPoint(0, (y - position.bottom()) / 2));\n    paintOriginalImage(painter);\n    painter.restore();\n    painter.setClipRect(position.left(), y, position.width(), 1 + position.bottom() - y);\n    painter.translate(QPoint(0, (y - position.top()) / 2));\n    paintPreview(painter);\n    painter.restore();\n    break;\n  case PreviewType::DuplicateVertical:\n    // Centered crop with corresponding width\n    painter.save();\n    painter.save();\n    painter.setClipRect(position);\n    painter.translate(QPoint((x - position.right()) / 2, 0));\n    paintOriginalImage(painter);\n    painter.restore();\n    painter.setClipRect(x, position.top(), 1 + position.right() - x, position.height());\n    painter.translate(QPoint((x - position.left()) / 2, 0));\n    paintPreview(painter);\n    painter.restore();\n    break;\n  case PreviewType::Checkered:\n    painter.save();\n    paintOriginalImage(painter);\n    painter.setClipRect(x, position.top(), 1 + position.right() - x, 1 + y - position.top());\n    paintPreview(painter);\n    painter.setClipRect(position.left(), y, 1 + x - position.left(), 1 + position.bottom() - y);\n    paintPreview(painter);\n    painter.restore();\n    break;\n  case PreviewType::CheckeredInverse:\n    painter.save();\n    paintOriginalImage(painter);\n    painter.setClipRect(position.left(), position.top(), 1 + x - position.left(), 1 + y - position.top());\n    paintPreview(painter);\n    painter.setClipRect(x, y, 1 + position.right() - x, 1 + position.bottom() - y);\n    paintPreview(painter);\n    painter.restore();\n    break;\n  }\n  painter.setClipping(false);\n}\n\nvoid PreviewWidget::paintEvent(QPaintEvent * e)\n{\n  QPainter painter(this);\n  if (_paintOriginalImage) {\n    paintOriginalImage(painter);\n  } else {\n    if ((_previewType == PreviewType::Full) || !_errorMessage.isEmpty()) {\n      paintPreview(painter);\n    } else {\n      paintSplittedPreview(painter);\n    }\n  }\n  if (_previewEnabled && (_previewType != PreviewType::Full) && _errorMessage.isEmpty()) {\n    paintPreviewSplitter(painter);\n  }\n  e->accept();\n}\n\nvoid PreviewWidget::paintPreviewSplitter(QPainter & painter)\n{\n  painter.end();\n  painter.begin(this);\n  QPen pen(QColor(0, 0, 0, 164));\n  pen.setWidth(1);\n  painter.setPen(pen);\n\n  QRect position = splittedPreviewPosition();\n  int x = (position.left() + _xPreviewSplit * position.width());\n  int y = (position.top() + _yPreviewSplit * position.height());\n  QPolygon leftTriangle;\n  QPolygon topTriangle;\n  QPolygon bottomTriangle;\n  QPolygon rightTriangle;\n\n  switch (_previewType) {\n  case PreviewType::Full:\n    break;\n  case PreviewType::ForwardHorizontal:\n  case PreviewType::BackwardHorizontal:\n  case PreviewType::DuplicateTop:\n  case PreviewType::DuplicateBottom:\n  case PreviewType::DuplicateHorizontal:\n    x = width() / 2;\n    // int y = (_imagePosition.top() <= 0) ? (_yPreviewSplit * height()) : (_imagePosition.top() + _yPreviewSplit * _imagePosition.height()); // FIXME Remove\n    topTriangle << QPoint(x - _SplitterButtonWidth, y - _SplitterButtonMargin) << QPoint(x, y - (_SplitterButtonMargin + _SplitterButtonWidth))\n                << QPoint(x + _SplitterButtonWidth, y - _SplitterButtonMargin);\n    bottomTriangle << QPoint(x - _SplitterButtonWidth, y + _SplitterButtonMargin) << QPoint(x, y + (_SplitterButtonMargin + _SplitterButtonWidth))\n                   << QPoint(x + _SplitterButtonWidth, y + _SplitterButtonMargin);\n    painter.setBrush(QColor(255, 255, 255, 164));\n    painter.drawPolygon(topTriangle);\n    painter.drawPolygon(bottomTriangle);\n    pen.setColor(Qt::black);\n    painter.setPen(pen);\n    painter.drawLine(std::max(0, _imagePosition.left()), y, _imagePosition.right(), y);\n    pen.setDashPattern(QVector<qreal>() << 4.0 << 4.0);\n    pen.setStyle(Qt::CustomDashLine);\n    pen.setColor(Qt::white);\n    painter.setPen(pen);\n    painter.drawLine(std::max(0, _imagePosition.left()), y, _imagePosition.right(), y);\n    break;\n  case PreviewType::ForwardVertical:\n  case PreviewType::BackwardVertical:\n  case PreviewType::DuplicateLeft:\n  case PreviewType::DuplicateRight:\n  case PreviewType::DuplicateVertical:\n    // int x = (_imagePosition.left() <= 0) ? (_xPreviewSplit * width()) : (_imagePosition.left() + _xPreviewSplit * _imagePosition.width());\n    y = height() / 2;\n    leftTriangle << QPoint(x - _SplitterButtonMargin, y - _SplitterButtonWidth) << QPoint(x - (_SplitterButtonMargin + _SplitterButtonWidth), y)\n                 << QPoint(x - _SplitterButtonMargin, y + _SplitterButtonWidth);\n    rightTriangle << QPoint(x + _SplitterButtonMargin, y - _SplitterButtonWidth) << QPoint(x + (_SplitterButtonMargin + _SplitterButtonWidth), y)\n                  << QPoint(x + _SplitterButtonMargin, y + _SplitterButtonWidth);\n    painter.setBrush(QColor(255, 255, 255, 164));\n    painter.drawPolygon(leftTriangle);\n    painter.drawPolygon(rightTriangle);\n    pen.setColor(Qt::black);\n    painter.setPen(pen);\n    painter.drawLine(x, std::max(0, _imagePosition.top()), x, _imagePosition.bottom());\n    pen.setDashPattern(QVector<qreal>() << 4.0 << 4.0);\n    pen.setStyle(Qt::CustomDashLine);\n    pen.setColor(Qt::white);\n    painter.setPen(pen);\n    painter.drawLine(x, std::max(0, _imagePosition.top()), x, _imagePosition.bottom());\n    break;\n  case PreviewType::Checkered:\n  case PreviewType::CheckeredInverse:\n    // int x = (_imagePosition.left() <= 0) ? (_xPreviewSplit * width()) : (_imagePosition.left() + _xPreviewSplit * _imagePosition.width());\n    // int y = (_imagePosition.top() <= 0) ? (_yPreviewSplit * height()) : (_imagePosition.top() + _yPreviewSplit * _imagePosition.height());\n    pen.setColor(Qt::black);\n    painter.setPen(pen);\n    painter.drawLine(std::max(0, _imagePosition.left()), y, _imagePosition.right(), y);\n    painter.drawLine(x, std::max(0, _imagePosition.top()), x, _imagePosition.bottom());\n    pen.setDashPattern(QVector<qreal>() << 4.0 << 4.0);\n    pen.setStyle(Qt::CustomDashLine);\n    pen.setColor(Qt::white);\n    painter.setPen(pen);\n    painter.drawLine(std::max(0, _imagePosition.left()), y, _imagePosition.right(), y);\n    painter.drawLine(x, std::max(0, _imagePosition.top()), x, _imagePosition.bottom());\n    topTriangle << QPoint(x - _SplitterButtonWidth, y - _SplitterButtonMargin) << QPoint(x, y - (_SplitterButtonMargin + _SplitterButtonWidth))\n                << QPoint(x + _SplitterButtonWidth, y - _SplitterButtonMargin);\n    bottomTriangle << QPoint(x - _SplitterButtonWidth, y + _SplitterButtonMargin) << QPoint(x, y + (_SplitterButtonMargin + _SplitterButtonWidth))\n                   << QPoint(x + _SplitterButtonWidth, y + _SplitterButtonMargin);\n    pen.setColor(QColor(0, 0, 0, 164));\n    pen.setStyle(Qt::SolidLine);\n    painter.setPen(pen);\n    painter.setBrush(QColor(255, 255, 255, 164));\n    painter.drawPolygon(topTriangle);\n    painter.drawPolygon(bottomTriangle);\n    break;\n  }\n}\n\nvoid PreviewWidget::resizeEvent(QResizeEvent * e)\n{\n  if (isVisible()) {\n    _pendingResize = true;\n  }\n  e->accept();\n  if (!e->size().width() || !e->size().height()) {\n    return;\n  }\n  if (isAtFullZoom()) {\n    if (_fullImageSize.isNull()) {\n      _currentZoomFactor = 1.0;\n    } else {\n      _currentZoomFactor = std::min(e->size().width() / (double)_fullImageSize.width(), e->size().height() / (double)_fullImageSize.height());\n    }\n    emit zoomChanged(_currentZoomFactor);\n  } else {\n    updateVisibleRect();\n    saveVisibleCenter();\n  }\n  if (!QApplication::topLevelWidgets().isEmpty() && QApplication::topLevelWidgets().at(0)->isMaximized()) {\n    sendUpdateRequest();\n  } else {\n    displayOriginalImage();\n  }\n}\n\nvoid PreviewWidget::normalizedVisibleRect(double & x, double & y, double & width, double & height) const\n{\n  x = _visibleRect.x;\n  y = _visibleRect.y;\n  width = _visibleRect.w;\n  height = _visibleRect.h;\n}\n\nvoid PreviewWidget::sendUpdateRequest()\n{\n  invalidateSavedPreview();\n  emit previewUpdateRequested();\n}\n\nbool PreviewWidget::isAtDefaultZoom() const\n{\n  return (_previewFactor == PreviewFactorAny) || (std::abs(_currentZoomFactor - defaultZoomFactor()) < 0.05) || ((_previewFactor == PreviewFactorActualSize) && (_currentZoomFactor >= 1.0));\n}\n\ndouble PreviewWidget::currentZoomFactor() const\n{\n  return _currentZoomFactor;\n}\n\nbool PreviewWidget::event(QEvent * event)\n{\n  if ((event->type() == QEvent::WindowActivate) && _pendingResize) {\n    _pendingResize = false;\n    if (width() && height()) {\n      updateVisibleRect();\n      saveVisibleCenter();\n      sendUpdateRequest();\n    }\n  }\n  return QWidget::event(event);\n}\n\nbool PreviewWidget::eventFilter(QObject *, QEvent * event)\n{\n  if (((event->type() == QEvent::MouseButtonRelease) || (event->type() == QEvent::NonClientAreaMouseButtonRelease)) && _pendingResize) {\n    _pendingResize = false;\n    if (width() && height()) {\n      updateVisibleRect();\n      saveVisibleCenter();\n      sendUpdateRequest();\n    }\n  }\n  return false;\n}\n\nvoid PreviewWidget::leaveEvent(QEvent *) {}\n\n#if QT_VERSION_GTE(6, 0, 0)\nvoid PreviewWidget::enterEvent(QEnterEvent *) {}\n#else\nvoid PreviewWidget::enterEvent(QEvent *) {}\n#endif\n\nvoid PreviewWidget::wheelEvent(QWheelEvent * event)\n{\n  double degrees = event->angleDelta().y() / 8.0;\n  int steps = static_cast<int>(std::fabs(degrees) / 15.0);\n#if QT_VERSION_GTE(5, 14, 0)\n  const QPoint position = event->position().toPoint();\n#else\n  const QPoint position = event->pos();\n#endif\n  if (degrees > 0.0) {\n    zoomIn(position - _imagePosition.topLeft(), steps);\n  } else {\n    zoomOut(position - _imagePosition.topLeft(), steps);\n  }\n  event->accept();\n}\n\nvoid PreviewWidget::mousePressEvent(QMouseEvent * e)\n{\n  if (e->button() == Qt::LeftButton || e->button() == Qt::MiddleButton) {\n    int index = keypointUnderMouse(e->pos());\n    if (index != -1) {\n      _movedKeypointIndex = index;\n      _keypointTimestamp = e->timestamp();\n      abortUpdateTimer();\n      _mousePosition = QPoint(-1, -1);\n      if (!_keypoints[index].keepOpacityWhenSelected) {\n        update();\n      }\n    } else if ((_draggingMode = splitterDraggingModeFromMousePosition(e->pos())) != DraggingMode::Inactive) {\n    } else if (_imagePosition.contains(e->pos())) {\n      _mousePosition = e->pos();\n      abortUpdateTimer();\n    } else {\n      _mousePosition = QPoint(-1, -1);\n    }\n    e->accept();\n    return;\n  }\n\n  if (_rightClickEnabled && (e->button() == Qt::RightButton)) {\n    if (_imagePosition.contains(e->pos())) {\n      _movedKeypointIndex = keypointUnderMouse(e->pos());\n      _movedKeypointOrigin = e->pos();\n    }\n    if (_previewEnabled) {\n      displayOriginalImage();\n    }\n    e->accept();\n    return;\n  }\n\n  e->ignore();\n}\n\nvoid PreviewWidget::mouseReleaseEvent(QMouseEvent * e)\n{\n  if (e->button() == Qt::LeftButton || e->button() == Qt::MiddleButton) {\n    if (_draggingMode != DraggingMode::Inactive) {\n      _draggingMode = DraggingMode::Inactive;\n    } else if (!isAtFullZoom() && _mousePosition != QPoint(-1, -1)) {\n      QPoint move = _mousePosition - e->pos();\n      onMouseTranslationInImage(move);\n      sendUpdateRequest();\n      _mousePosition = QPoint(-1, -1);\n    } else if (_movedKeypointIndex != -1) {\n      QPointF p = pointInWidgetToKeypointPosition(e->pos());\n      KeypointList::Keypoint & kp = _keypoints[_movedKeypointIndex];\n      kp.setPosition(p);\n      _movedKeypointIndex = -1;\n      const unsigned char flags = KeypointMouseReleaseEvent | (kp.burst ? KeypointBurstEvent : 0);\n      emit keypointPositionsChanged(flags, e->timestamp());\n    }\n    e->accept();\n    return;\n  }\n\n  if (e->button() == Qt::RightButton) {\n    if (_movedKeypointIndex != -1 && (_movedKeypointOrigin != e->pos())) {\n      emit keypointPositionsChanged(KeypointMouseReleaseEvent, e->timestamp());\n    }\n    _movedKeypointIndex = -1;\n    _movedKeypointOrigin = QPoint(-1, -1);\n  }\n\n  if (_rightClickEnabled && _paintOriginalImage && (e->button() == Qt::RightButton)) {\n    if (_previewEnabled) {\n      if (!_errorImage.isNull()) {\n        _paintOriginalImage = false;\n        update();\n      } else if (_savedPreviewIsValid) {\n        restorePreview();\n        _paintOriginalImage = false;\n        update();\n      } else {\n        displayOriginalImage();\n      }\n    }\n    e->accept();\n    return;\n  }\n} // namespace GmicQt\n\nvoid PreviewWidget::mouseMoveEvent(QMouseEvent * e)\n{\n  if (hasMouseTracking() && (_movedKeypointIndex == -1)) {\n    DraggingMode mode = splitterDraggingModeFromMousePosition(e->pos());\n    if ((_mousePosition == QPoint(-1, -1)) && (keypointUnderMouse(e->pos()) != -1)) {\n      OverrideCursor::set(Qt::PointingHandCursor);\n    } else if (mode == DraggingMode::X) {\n      OverrideCursor::set(Qt::SplitHCursor);\n    } else if (mode == DraggingMode::Y) {\n      OverrideCursor::set(Qt::SplitVCursor);\n    } else if (mode == DraggingMode::XY) {\n      OverrideCursor::set(Qt::SizeAllCursor);\n    } else {\n      OverrideCursor::setNormal();\n    }\n  }\n  if (e->buttons() & (Qt::LeftButton | Qt::MiddleButton)) {\n    if (_draggingMode != DraggingMode::Inactive) {\n      if (_draggingMode & DraggingMode::X) {\n        if (_imagePosition.left() <= 0) {\n          _xPreviewSplit = clamped(e->pos().x() / float(width()), 0.0f, 1.0f);\n        } else {\n          _xPreviewSplit = clamped((e->pos().x() - _imagePosition.left()) / float(_imagePosition.width()), 0.0f, 1.0f);\n        }\n      }\n      if (_draggingMode & DraggingMode::Y) {\n        if (_imagePosition.top() <= 0) {\n          _yPreviewSplit = clamped(e->pos().y() / float(height()), 0.0f, 1.0f);\n        } else {\n          _yPreviewSplit = clamped((e->pos().y() - _imagePosition.top()) / float(_imagePosition.height()), 0.0f, 1.0f);\n        }\n      }\n      update();\n    } else if (!isAtFullZoom() && (_mousePosition != QPoint(-1, -1))) {\n      QPoint move = _mousePosition - e->pos();\n      if (move.manhattanLength()) {\n        onMouseTranslationInImage(move);\n        _mousePosition = e->pos();\n      }\n    } else if (_movedKeypointIndex != -1) {\n      QPointF p = pointInWidgetToKeypointPosition(e->pos());\n      KeypointList::Keypoint & kp = _keypoints[_movedKeypointIndex];\n      kp.setPosition(p);\n      repaint();\n      if (kp.burst) {\n        unsigned char flags = 0;\n        if (e->timestamp() - _keypointTimestamp > 15) {\n          flags |= KeypointBurstEvent;\n        }\n        emit keypointPositionsChanged(flags, e->timestamp());\n        _keypointTimestamp = e->timestamp();\n      } else {\n        emit keypointPositionsChanged(0, e->timestamp());\n      }\n    }\n    e->accept();\n  } else if (e->buttons() & Qt::RightButton) {\n    if (_movedKeypointIndex != -1) {\n      QPointF p = pointInWidgetToKeypointPosition(e->pos());\n      KeypointList::Keypoint & kp = _keypoints[_movedKeypointIndex];\n      kp.setPosition(p);\n      update();\n      emit keypointPositionsChanged(0, e->timestamp());\n    }\n  } else {\n    e->ignore();\n  }\n}\n\nbool PreviewWidget::isAtFullZoom() const\n{\n  return _visibleRect.isFull();\n}\n\nvoid PreviewWidget::abortUpdateTimer()\n{\n  if (_timerID) {\n    killTimer(_timerID);\n    _timerID = 0;\n  }\n}\n\nvoid PreviewWidget::getPositionStringCorrection(double & xFactor, double & yFactor) const\n{\n  xFactor = _currentZoomFactor * (_visibleRect.w * _fullImageSize.width());\n  yFactor = _currentZoomFactor * (_visibleRect.h * _fullImageSize.height());\n}\n\nvoid PreviewWidget::onMouseTranslationInImage(QPoint shift)\n{\n  if (shift.manhattanLength()) {\n    emit previewVisibleRectIsChanging();\n    translateFullImage(shift.x() / _currentZoomFactor, shift.y() / _currentZoomFactor);\n    displayOriginalImage();\n  }\n}\n\nvoid PreviewWidget::translateFullImage(double dx, double dy)\n{\n  PreviewPoint previousPosition = _visibleRect.topLeft();\n  if (!_fullImageSize.isNull()) {\n    translateNormalized(dx / _fullImageSize.width(), dy / _fullImageSize.height());\n    if (_visibleRect.topLeft() != previousPosition) {\n      saveVisibleCenter();\n    }\n  }\n}\n\nvoid PreviewWidget::translateNormalized(double dx, double dy)\n{\n  _visibleRect.x = std::max(0.0, std::min(1.0 - _visibleRect.w, _visibleRect.x + dx));\n  _visibleRect.y = std::max(0.0, std::min(1.0 - _visibleRect.h, _visibleRect.y + dy));\n}\n\nvoid PreviewWidget::zoomIn()\n{\n  zoomIn(_imagePosition.center(), 1);\n}\n\nvoid PreviewWidget::zoomOut()\n{\n  zoomOut(_imagePosition.center(), 1);\n}\n\nvoid PreviewWidget::zoomFullImage()\n{\n  _visibleRect = PreviewRect::Full;\n  if (_fullImageSize.isNull()) {\n    _currentZoomFactor = 1.0;\n  } else {\n    _currentZoomFactor = std::min(width() / (double)_fullImageSize.width(), height() / (double)_fullImageSize.height());\n  }\n  onPreviewParametersChanged();\n  emit zoomChanged(_currentZoomFactor);\n}\n\nvoid PreviewWidget::zoomIn(QPoint p, int steps)\n{\n  if (_fullImageSize.isNull() || (_zoomConstraint == ZoomConstraint::Fixed)) {\n    return;\n  }\n  double previousZoomFactor = _currentZoomFactor;\n  if (_currentZoomFactor >= PREVIEW_MAX_ZOOM_FACTOR) {\n    return;\n  }\n  double mouseX = p.x() / (_currentZoomFactor * _fullImageSize.width()) + _visibleRect.x;\n  double mouseY = p.y() / (_currentZoomFactor * _fullImageSize.height()) + _visibleRect.y;\n  while (steps--) {\n    _currentZoomFactor *= 1.2;\n  }\n  if (_currentZoomFactor >= PREVIEW_MAX_ZOOM_FACTOR) {\n    _currentZoomFactor = PREVIEW_MAX_ZOOM_FACTOR;\n  }\n  if (_currentZoomFactor == previousZoomFactor) {\n    return;\n  }\n  updateVisibleRect();\n  double newMouseX = p.x() / (_currentZoomFactor * _fullImageSize.width()) + _visibleRect.x;\n  double newMouseY = p.y() / (_currentZoomFactor * _fullImageSize.height()) + _visibleRect.y;\n  translateNormalized(mouseX - newMouseX, mouseY - newMouseY);\n  saveVisibleCenter();\n  onPreviewParametersChanged();\n  emit zoomChanged(_currentZoomFactor);\n}\n\nvoid PreviewWidget::zoomOut(QPoint p, int steps)\n{\n  if ((_zoomConstraint == ZoomConstraint::Fixed) || ((_zoomConstraint == ZoomConstraint::OneOrMore) && (_currentZoomFactor <= 1.0)) || isAtFullZoom() || _fullImageSize.isNull()) {\n    return;\n  }\n  double mouseX = p.x() / (_currentZoomFactor * _fullImageSize.width()) + _visibleRect.x;\n  double mouseY = p.y() / (_currentZoomFactor * _fullImageSize.height()) + _visibleRect.y;\n  while (steps--) {\n    _currentZoomFactor /= 1.2;\n  }\n  if ((_zoomConstraint == ZoomConstraint::OneOrMore) && (_currentZoomFactor <= 1.0)) {\n    _currentZoomFactor = 1.0;\n  }\n  updateVisibleRect();\n  if (isAtFullZoom()) {\n    _currentZoomFactor = std::min(width() / (double)_fullImageSize.width(), height() / (double)_fullImageSize.height());\n  }\n  double newMouseX = p.x() / (_currentZoomFactor * _fullImageSize.width()) + _visibleRect.x;\n  double newMouseY = p.y() / (_currentZoomFactor * _fullImageSize.height()) + _visibleRect.y;\n  translateNormalized(mouseX - newMouseX, mouseY - newMouseY);\n  saveVisibleCenter();\n  onPreviewParametersChanged();\n  emit zoomChanged(_currentZoomFactor);\n}\n\nvoid PreviewWidget::setZoomLevel(double zoom)\n{\n  if ((zoom == _currentZoomFactor) || _fullImageSize.isNull()) {\n    return;\n  }\n  if ((_zoomConstraint == ZoomConstraint::OneOrMore) && (zoom <= 1.0)) {\n    zoom = 1.0;\n  }\n  if ((zoom > PREVIEW_MAX_ZOOM_FACTOR) || (isAtFullZoom() && (zoom < _currentZoomFactor))) {\n    emit zoomChanged(_currentZoomFactor);\n    return;\n  }\n  double previousZoomFactor = _currentZoomFactor;\n  QPoint p = _imagePosition.center();\n  double mouseX = p.x() / (_currentZoomFactor * _fullImageSize.width()) + _visibleRect.x;\n  double mouseY = p.y() / (_currentZoomFactor * _fullImageSize.height()) + _visibleRect.y;\n  _currentZoomFactor = zoom;\n  updateVisibleRect();\n  if (isAtFullZoom()) {\n    _currentZoomFactor = std::min(width() / (double)_fullImageSize.width(), height() / (double)_fullImageSize.height());\n  }\n  if (_currentZoomFactor == previousZoomFactor) {\n    return;\n  }\n  double newMouseX = p.x() / (_currentZoomFactor * _fullImageSize.width()) + _visibleRect.x;\n  double newMouseY = p.y() / (_currentZoomFactor * _fullImageSize.height()) + _visibleRect.y;\n  translateNormalized(mouseX - newMouseX, mouseY - newMouseY);\n  saveVisibleCenter();\n  onPreviewParametersChanged();\n  emit zoomChanged(_currentZoomFactor);\n}\n\ndouble PreviewWidget::defaultZoomFactor() const\n{\n  if (_fullImageSize.isNull()) {\n    return 1.0;\n  }\n  if (_previewFactor == PreviewFactorFullImage) {\n    return std::min(width() / static_cast<double>(_fullImageSize.width()), height() / static_cast<double>(_fullImageSize.height()));\n  }\n  if (_previewFactor > 1.0f) {\n    return _previewFactor * std::min(width() / (double)_fullImageSize.width(), height() / (double)_fullImageSize.height());\n  }\n  return 1.0; // We suppose PreviewFactorActualSize\n}\n\nvoid PreviewWidget::saveVisibleCenter()\n{\n  _savedVisibleCenter = _visibleRect.center();\n}\n\nint PreviewWidget::roundedDistance(const QPoint & p1, const QPoint & p2)\n{\n  const double dx = p1.x() - p2.x();\n  const double dy = p1.y() - p2.y();\n  return static_cast<int>(std::round(std::sqrt(dx * dx + dy * dy)));\n}\n\nvoid PreviewWidget::setPreviewFactor(float filterFactor, bool reset)\n{\n  _previewFactor = filterFactor;\n  if (_fullImageSize.isNull()) {\n    _visibleRect = PreviewRect::Full;\n    _currentZoomFactor = 1.0;\n    emit zoomChanged(_currentZoomFactor);\n    return;\n  }\n  if ((_previewFactor == PreviewFactorFullImage) || ((_previewFactor == PreviewFactorAny) && reset)) {\n    _currentZoomFactor = std::min(width() / (double)_fullImageSize.width(), height() / (double)_fullImageSize.height());\n    _visibleRect = PreviewRect::Full;\n    if (reset) {\n      saveVisibleCenter();\n    }\n  } else if ((_previewFactor == PreviewFactorAny) && !reset) {\n    updateVisibleRect();\n    _visibleRect.moveCenter(_savedVisibleCenter);\n  } else {\n    _currentZoomFactor = defaultZoomFactor();\n    updateVisibleRect();\n    if (reset) {\n      _visibleRect.moveToCenter();\n      saveVisibleCenter();\n    } else {\n      _visibleRect.moveCenter(_savedVisibleCenter);\n    }\n  }\n  emit zoomChanged(_currentZoomFactor);\n}\n\nvoid PreviewWidget::displayOriginalImage()\n{\n  _paintOriginalImage = true;\n  update();\n}\n\nQSize PreviewWidget::originalImageCropSize()\n{\n  return CroppedActiveLayerProxy::getSize(_visibleRect.x, _visibleRect.y, _visibleRect.w, _visibleRect.h);\n}\n\nvoid PreviewWidget::getOriginalImageCrop(gmic_library::gmic_image<float> & image)\n{\n  CroppedActiveLayerProxy::get(image, _visibleRect.x, _visibleRect.y, _visibleRect.w, _visibleRect.h);\n}\n\nvoid PreviewWidget::onPreviewParametersChanged()\n{\n  emit previewVisibleRectIsChanging();\n  if (_timerID) {\n    killTimer(_timerID);\n  }\n  displayOriginalImage();\n  _timerID = startTimer(RESIZE_DELAY);\n  _savedPreviewIsValid = false;\n}\n\nvoid PreviewWidget::timerEvent(QTimerEvent * e)\n{\n  killTimer(e->timerId());\n  _timerID = 0;\n  sendUpdateRequest();\n}\n\nvoid PreviewWidget::onPreviewToggled(bool on)\n{\n  _previewEnabled = on;\n  if (on) {\n    if (_savedPreviewIsValid) {\n      restorePreview();\n      _paintOriginalImage = false;\n      update();\n    } else {\n      emit previewUpdateRequested();\n    }\n  } else {\n    displayOriginalImage();\n  }\n}\n\nvoid PreviewWidget::setPreviewType(PreviewType previewType)\n{\n  _previewType = previewType;\n  if (previewType != PreviewType::Full) {\n    _savedPreviewType = previewType;\n  }\n  setMouseTracking(previewType != PreviewType::Full);\n  update();\n}\n\nvoid PreviewWidget::setPreviewEnabled(bool on)\n{\n  _previewEnabled = on;\n}\n\nconst KeypointList & PreviewWidget::keypoints() const\n{\n  return _keypoints;\n}\n\nvoid PreviewWidget::setKeypoints(const KeypointList & keypoints)\n{\n  _keypoints = keypoints;\n  setMouseTracking(_keypoints.size());\n  update();\n}\n\nvoid PreviewWidget::setZoomConstraint(const ZoomConstraint & constraint)\n{\n  _zoomConstraint = constraint;\n}\n\nZoomConstraint PreviewWidget::zoomConstraint() const\n{\n  return _zoomConstraint;\n}\n\nPreviewWidget::PreviewType PreviewWidget::previewType() const\n{\n  return _previewType;\n}\n\nPreviewWidget::PreviewType PreviewWidget::savedPreviewType() const\n{\n  return _savedPreviewType;\n}\n\nvoid PreviewWidget::invalidateSavedPreview()\n{\n  _savedPreviewIsValid = false;\n}\n\nvoid PreviewWidget::restorePreview()\n{\n  *_image = *_savedPreview;\n}\n\nvoid PreviewWidget::enableRightClick()\n{\n  _rightClickEnabled = true;\n}\n\nvoid PreviewWidget::disableRightClick()\n{\n  _rightClickEnabled = false;\n}\n\nbool PreviewWidget::PreviewRect::operator!=(const PreviewRect & other) const\n{\n  return (x != other.x) || (y != other.y) || (w != other.w) || (h != other.h);\n}\n\nbool PreviewWidget::PreviewRect::operator==(const PreviewRect & other) const\n{\n  return (x == other.x) && (y == other.y) && (w == other.w) && (h == other.h);\n}\n\nbool PreviewWidget::PreviewRect::isFull() const\n{\n  return (*this) == PreviewRect::Full;\n}\n\nPreviewWidget::PreviewPoint PreviewWidget::PreviewRect::center() const\n{\n  return {x + w / 2.0, y + h / 2.0};\n}\n\nPreviewWidget::PreviewPoint PreviewWidget::PreviewRect::topLeft() const\n{\n  return {x, y};\n}\n\nvoid PreviewWidget::PreviewRect::moveCenter(const PreviewWidget::PreviewPoint & p)\n{\n  const double halfWidth = w / 2.0;\n  const double halfHeight = h / 2.0;\n  x = std::min(std::max(0.0, p.x - halfWidth), 1.0 - w);\n  y = std::min(std::max(0.0, p.y - halfHeight), 1.0 - h);\n}\n\nvoid PreviewWidget::PreviewRect::moveToCenter()\n{\n  x = std::max(0.0, (1.0 - w) / 2.0);\n  y = std::max(0.0, (1.0 - h) / 2.0);\n}\n\nbool PreviewWidget::PreviewPoint::isValid() const\n{\n  return (x >= 0.0) && (x <= 1.0) && (y >= 0.0) && (y <= 1.0);\n}\n\nbool PreviewWidget::PreviewPoint::operator!=(const PreviewWidget::PreviewPoint & other) const\n{\n  return (x != other.x) || (y != other.y);\n}\n\nbool PreviewWidget::PreviewPoint::operator==(const PreviewWidget::PreviewPoint & other) const\n{\n  return (x == other.x) && (y == other.y);\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/Widgets/PreviewWidget.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file PreviewWidget.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_PREVIEWWIDGET_H\n#define GMIC_QT_PREVIEWWIDGET_H\n\n#include <QFocusEvent>\n#include <QImage>\n#include <QMutex>\n#include <QPixmap>\n#include <QPointF>\n#include <QRect>\n#include <QRectF>\n#include <QSize>\n#include <QWidget>\n#include \"Host/GmicQtHost.h\"\n#include \"KeypointList.h\"\n#include \"ZoomConstraint.h\"\n\nnamespace gmic_library\n{\ntemplate <typename T> struct gmic_list;\ntemplate <typename T> struct gmic_image;\n} // namespace gmic_library\n\nnamespace GmicQt\n{\n\nclass PreviewWidget : public QWidget {\n  Q_OBJECT\n\npublic:\n  explicit PreviewWidget(QWidget * parent);\n  ~PreviewWidget() override;\n  void setFullImageSize(const QSize &);\n  void updateFullImageSizeIfDifferent(const QSize &);\n  void normalizedVisibleRect(double & x, double & y, double & width, double & height) const;\n  bool isAtDefaultZoom() const;\n  bool isAtFullZoom() const;\n  void getPositionStringCorrection(double & xFactor, double & yFactor) const;\n  double currentZoomFactor() const;\n  double defaultZoomFactor() const;\n  void updateVisibleRect();\n  void centerVisibleRect();\n  void setPreviewImage(const gmic_library::gmic_image<float> & image);\n  void setOverlayMessage(const QString &);\n  void clearOverlayMessage();\n  void setPreviewErrorMessage(const QString &);\n  const gmic_library::gmic_image<float> & image() const;\n  void translateNormalized(double dx, double dy);\n  void translateFullImage(double dx, double dy);\n  void setPreviewEnabled(bool on);\n\n  const KeypointList & keypoints() const;\n  void setKeypoints(const KeypointList &);\n\n  void setZoomConstraint(const ZoomConstraint & constraint);\n  ZoomConstraint zoomConstraint() const;\n\n  enum KeypointMotionFlags\n  {\n    KeypointBurstEvent = 1,\n    KeypointMouseReleaseEvent = 2\n  };\n\n  enum class PreviewType\n  {\n    Full,\n    ForwardHorizontal,\n    ForwardVertical,\n    BackwardHorizontal,\n    BackwardVertical,\n    DuplicateTop,\n    DuplicateLeft,\n    DuplicateBottom,\n    DuplicateRight,\n    DuplicateHorizontal,\n    DuplicateVertical,\n    Checkered,\n    CheckeredInverse\n  };\n\n  PreviewType previewType() const;\n  PreviewType savedPreviewType() const;\n\nprotected:\n  void resizeEvent(QResizeEvent *) override;\n  void timerEvent(QTimerEvent *) override;\n  bool event(QEvent * event) override;\n  void wheelEvent(QWheelEvent * event) override;\n  void mouseMoveEvent(QMouseEvent * e) override;\n  void mouseReleaseEvent(QMouseEvent * e) override;\n  void mousePressEvent(QMouseEvent * e) override;\n  void paintEvent(QPaintEvent * e) override;\n  bool eventFilter(QObject *, QEvent * event) override;\n  void leaveEvent(QEvent *) override;\n\n#if QT_VERSION_GTE(6, 0, 0)\n  void enterEvent(QEnterEvent *) override;\n#else\n  void enterEvent(QEvent *) override;\n#endif\n\nsignals:\n  void previewVisibleRectIsChanging();\n  void previewUpdateRequested();\n  void keypointPositionsChanged(unsigned int flags, unsigned long time);\n  void zoomChanged(double zoom);\n\npublic slots:\n  void abortUpdateTimer();\n  void sendUpdateRequest();\n  void onMouseTranslationInImage(QPoint shift);\n  void zoomIn();\n  void zoomOut();\n  void zoomFullImage();\n  void zoomIn(QPoint, int steps);\n  void zoomOut(QPoint, int steps);\n  void setZoomLevel(double zoom);\n  /**\n   * @brief setPreviewFactor\n   * @param filterFactor\n   * @param reset If true, zoomFactor is set to \"Full Image\" if\n   *              filterFactor is PreviewFactorAny\n   */\n  void setPreviewFactor(float filterFactor, bool reset);\n  void displayOriginalImage();\n  void onPreviewParametersChanged();\n  void invalidateSavedPreview();\n  void restorePreview();\n  void enableRightClick();\n  void disableRightClick();\n  void onPreviewToggled(bool on);\n  void setPreviewType(PreviewType previewType);\n\nprivate:\n  void paintPreview(QPainter &);\n  void paintOriginalImage(QPainter &);\n  void paintSplittedPreview(QPainter &);\n  void getOriginalImageCrop(gmic_library::gmic_image<float> & image);\n  void updateOriginalImagePosition();\n  void updatePreviewImagePosition();\n  QRect splittedPreviewPosition();\n  void updateErrorImage();\n  void paintPreviewSplitter(QPainter & painter);\n\n  void paintKeypoints(QPainter & painter);\n  int keypointUnderMouse(const QPoint & p);\n  QPoint keypointToPointInWidget(const KeypointList::Keypoint & kp) const;\n  QPoint keypointToVisiblePointInWidget(const KeypointList::Keypoint & kp) const;\n  QPointF pointInWidgetToKeypointPosition(const QPoint &) const;\n\n  enum DraggingMode\n  {\n    Inactive = 0,\n    X = 1,\n    Y = 2,\n    XY = 3\n  };\n  DraggingMode splitterDraggingModeFromMousePosition(const QPoint & p);\n\n  QSize originalImageCropSize();\n  void saveVisibleCenter();\n  gmic_library::gmic_image<float> * _image;\n  gmic_library::gmic_image<float> * _savedPreview;\n  QSize _fullImageSize;\n  double _currentZoomFactor;\n  ZoomConstraint _zoomConstraint;\n\n  /*\n   * (0) for a 1:1 preview (PreviewFactorActualSize)\n   * (1) for previewing the whole image (PreviewFactorFullImage)\n   * (2) for 1/2 image\n   * GmigQt::PreviewFactorAny\n   */\n  float _previewFactor;\n  int _timerID;\n  bool _previewEnabled;\n\n  struct PreviewPoint {\n    double x, y;\n    bool isValid() const;\n    bool operator!=(const PreviewPoint &) const;\n    bool operator==(const PreviewPoint &) const;\n    QPointF toPointF() const { return QPointF((qreal)x, (qreal)y); }\n  };\n\n  struct PreviewRect {\n    double x;\n    double y;\n    double w;\n    double h;\n    bool operator!=(const PreviewRect &) const;\n    bool operator==(const PreviewRect &) const;\n    bool isFull() const;\n    PreviewPoint center() const;\n    PreviewPoint topLeft() const;\n    void moveCenter(const PreviewPoint & p);\n    void moveToCenter();\n    QRectF toRectF() const { return QRectF((qreal)x, (qreal)y, (qreal)w, (qreal)h); }\n    static const PreviewRect Full;\n  };\n\n  static const int RESIZE_DELAY = 400;\n  static int roundedDistance(const QPoint & p1, const QPoint & p2);\n  PreviewRect _visibleRect;\n  PreviewPoint _savedVisibleCenter;\n\n  bool _pendingResize;\n  QPixmap _transparency;\n  bool _savedPreviewIsValid;\n  QRect _imagePosition;\n  QPoint _mousePosition;\n  QPixmap _transparentBackground;\n  bool _paintOriginalImage;\n  QSize _originalImageSize;\n  QSize _originalImageScaledSize;\n  bool _rightClickEnabled;\n  QString _errorMessage;\n  QString _overlayMessage;\n  QImage _errorImage;\n  KeypointList _keypoints;\n  int _movedKeypointIndex;\n  QPoint _movedKeypointOrigin;\n  unsigned long _keypointTimestamp;\n  PreviewType _previewType;\n  PreviewType _savedPreviewType;\n  float _xPreviewSplit;\n  float _yPreviewSplit;\n  static const int _SplitterButtonWidth = 10;\n  static const int _SplitterButtonMargin = 2;\n  DraggingMode _draggingMode;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_PREVIEWWIDGET_H\n"
  },
  {
    "path": "src/Widgets/ProgressInfoWidget.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ProgressInfoWidget.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"Widgets/ProgressInfoWidget.h\"\n#include <QFile>\n#include <QFontMetrics>\n#include <QGuiApplication>\n#include <QScreen>\n#include \"GmicProcessor.h\"\n#include \"IconLoader.h\"\n#include \"Misc.h\"\n#include \"ui_progressinfowidget.h\"\n\n#ifdef _IS_WINDOWS_\n#include <windows.h>\n#include <process.h>\n#include <psapi.h>\n#endif\n\nnamespace GmicQt\n{\n\nProgressInfoWidget::ProgressInfoWidget(QWidget * parent) : QWidget(parent), ui(new Ui::ProgressInfoWidget), _gmicProcessor(nullptr)\n{\n  ui->setupUi(this);\n  _mode = Mode::GmicProcessing;\n  _canceled = false;\n  _growing = true;\n  setWindowTitle(tr(\"G'MIC-Qt Plug-in progression\"));\n  ui->progressBar->setRange(0, 100);\n  ui->tbCancel->setIcon(IconLoader::load(\"cancel\"));\n  ui->tbCancel->setToolTip(tr(\"Abort\"));\n  connect(&_timer, &QTimer::timeout, this, &ProgressInfoWidget::onTimeOut);\n  connect(ui->tbCancel, &QToolButton::clicked, this, &ProgressInfoWidget::cancel);\n  if (!parent) {\n    QRect position = frameGeometry();\n    QList<QScreen *> screens = QGuiApplication::screens();\n    if (!screens.isEmpty()) {\n      position.moveCenter(screens.front()->geometry().center());\n      move(position.topLeft());\n    }\n  }\n\n  _showingTimer.setSingleShot(true);\n  _showingTimer.setInterval(500);\n  connect(&_showingTimer, &QTimer::timeout, this, &ProgressInfoWidget::onTimeOut);\n  connect(&_showingTimer, &QTimer::timeout, &_timer, QOverload<>::of(&QTimer::start));\n  connect(&_showingTimer, &QTimer::timeout, this, &ProgressInfoWidget::show);\n}\n\nProgressInfoWidget::~ProgressInfoWidget()\n{\n  delete ui;\n}\n\nProgressInfoWidget::Mode ProgressInfoWidget::mode() const\n{\n  return _mode;\n}\n\nbool ProgressInfoWidget::hasBeenCanceled() const\n{\n  return _canceled;\n}\n\nvoid ProgressInfoWidget::setGmicProcessor(const GmicProcessor * processor)\n{\n  _gmicProcessor = processor;\n}\n\nvoid ProgressInfoWidget::onTimeOut()\n{\n  if (_mode == Mode::GmicProcessing) {\n    updateThreadInformation();\n  } else if (_mode == Mode::FiltersUpdate) {\n    updateFilterUpdateProgression();\n  }\n}\n\nvoid ProgressInfoWidget::cancel()\n{\n  _canceled = true;\n  emit canceled();\n}\n\nvoid ProgressInfoWidget::stopAnimationAndHide()\n{\n  _timer.stop();\n  _showingTimer.stop();\n  hide();\n}\n\nvoid ProgressInfoWidget::startFilterThreadAnimationAndShow()\n{\n  layout()->removeWidget(ui->tbCancel);\n  layout()->removeWidget(ui->progressBar);\n  layout()->removeWidget(ui->label);\n  layout()->addWidget(ui->progressBar);\n  layout()->addWidget(ui->label);\n  ui->tbCancel->hide();\n\n  ui->label->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);\n  ui->label->setAlignment(Qt::AlignRight);\n#if defined(_IS_UNIX_) || defined(_IS_WINDOWS_)\n  QString largestText(tr(\"[Processing 88:00:00.888 | 888.9 GiB]\"));\n#else\n  QString largestText(tr(\"[Processing 88:00:00.888]\"));\n#endif\n  QFontMetrics fm(ui->label->font());\n  ui->label->setMinimumWidth(fm.horizontalAdvance(largestText));\n\n  _canceled = false;\n  _mode = Mode::GmicProcessing;\n  ui->progressBar->setRange(0, 100);\n  ui->progressBar->setValue(0);\n  ui->progressBar->setInvertedAppearance(false);\n  onTimeOut();\n  _timer.setInterval(250);\n  _timer.start();\n  show();\n}\n\nvoid ProgressInfoWidget::startFiltersUpdateAnimationAndShow()\n{\n\n  layout()->removeWidget(ui->tbCancel);\n  layout()->removeWidget(ui->progressBar);\n  layout()->removeWidget(ui->label);\n  layout()->addWidget(ui->label);\n  layout()->addWidget(ui->tbCancel);\n  layout()->addWidget(ui->progressBar);\n\n  _mode = Mode::FiltersUpdate;\n  _canceled = false;\n  // ui->progressBar->setRange(0, 0);\n  ui->progressBar->setValue(AnimationStep);\n  ui->progressBar->setTextVisible(false);\n  ui->progressBar->setInvertedAppearance(false);\n  ui->label->setText(tr(\"Updating filters...\"));\n  ui->label->setMinimumWidth(0);\n  ui->label->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);\n  ui->label->setAlignment(Qt::AlignLeft);\n  _timer.setInterval(75);\n\n  _growing = true;\n  ui->tbCancel->setVisible(true);\n\n  _showingTimer.start();\n  // Connected to :\n  // 1. onTimeOut();\n  // 2. _timer.start();\n  // 3. show();\n}\n\nvoid ProgressInfoWidget::showBusyIndicator()\n{\n  ui->progressBar->setRange(0, 0);\n}\n\nvoid ProgressInfoWidget::updateThreadInformation()\n{\n  int ms = _gmicProcessor->duration();\n  float progress = _gmicProcessor->progress();\n  if (progress >= 0) {\n    ui->progressBar->setInvertedAppearance(false);\n    ui->progressBar->setTextVisible(true);\n    ui->progressBar->setValue((int)progress);\n  } else {\n    ui->progressBar->setTextVisible(false);\n    int value = ui->progressBar->value();\n    value += 20;\n    if (value > 100) {\n      ui->progressBar->setValue(value - 100);\n      ui->progressBar->setInvertedAppearance(!ui->progressBar->invertedAppearance());\n    } else {\n      ui->progressBar->setValue(value);\n    }\n  }\n  QString durationStr = readableDuration(ms);\n#ifdef _IS_UNIX_\n  // Get memory usage\n  QString memoryStr(\"? KiB\");\n  QFile status(\"/proc/self/status\");\n  if (status.open(QFile::ReadOnly)) {\n    QByteArray text = status.readAll();\n    const char * str = strstr(text.constData(), \"VmRSS:\");\n    quint64 kiB;\n    if (str && sscanf(str + 7, \"%llu\", &kiB)) {\n      memoryStr = readableSize(kiB * 1024);\n    }\n  }\n  ui->label->setText(QString(tr(\"[Processing %1 | %2]\")).arg(durationStr).arg(memoryStr));\n#elif defined(_IS_WINDOWS_)\n  PROCESS_MEMORY_COUNTERS counters;\n  quint64 kiB = 0;\n  if (GetProcessMemoryInfo(GetCurrentProcess(), &counters, sizeof(counters))) {\n    kiB = static_cast<quint64>(counters.WorkingSetSize / 1024);\n  }\n  QString memoryStr = readableSize(kiB * 1024);\n  ui->label->setText(QString(tr(\"[Processing %1 | %2]\")).arg(durationStr).arg(memoryStr));\n#else\n  ui->label->setText(QString(tr(\"[Processing %1]\")).arg(durationStr));\n#endif\n}\n\nvoid ProgressInfoWidget::updateFilterUpdateProgression()\n{\n  int value = ui->progressBar->value();\n  if (_growing) {\n    value += AnimationStep;\n    if (value >= 100) {\n      value = 100 - AnimationStep;\n      ui->progressBar->setInvertedAppearance(!ui->progressBar->invertedAppearance());\n      ui->progressBar->setValue(value);\n      _growing = false;\n    } else {\n      ui->progressBar->setValue(value);\n    }\n  } else {\n    value -= AnimationStep;\n    if (value <= 0) {\n      value = AnimationStep;\n      ui->progressBar->setValue(value);\n      _growing = true;\n    } else {\n      ui->progressBar->setValue(value);\n    }\n  }\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/Widgets/ProgressInfoWidget.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ProgressInfoWidget.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_PROGRESSINFOWIDGET_H\n#define GMIC_QT_PROGRESSINFOWIDGET_H\n#include <QMainWindow>\n#include <QTimer>\n\nnamespace Ui\n{\nclass ProgressInfoWidget;\n}\n\nnamespace GmicQt\n{\nclass GmicProcessor;\n\nclass ProgressInfoWidget : public QWidget {\n  Q_OBJECT\n\npublic:\n  explicit ProgressInfoWidget(QWidget * parent);\n  ~ProgressInfoWidget();\n\n  enum class Mode\n  {\n    GmicProcessing,\n    FiltersUpdate\n  };\n\n  Mode mode() const;\n\n  bool hasBeenCanceled() const;\n  void setGmicProcessor(const GmicProcessor * processor);\n\npublic slots:\n  void cancel();\n  void onTimeOut();\n  void stopAnimationAndHide();\n  void startFilterThreadAnimationAndShow();\n  void startFiltersUpdateAnimationAndShow();\n  void showBusyIndicator();\nsignals:\n  void canceled();\n\nprivate:\n  void updateThreadInformation();\n  void updateFilterUpdateProgression();\n\n  Ui::ProgressInfoWidget * ui;\n  const GmicProcessor * _gmicProcessor;\n  QTimer _timer;\n  QTimer _showingTimer;\n  Mode _mode;\n  bool _canceled;\n  bool _growing;\n  static const int AnimationStep = 10;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_PROGRESSINFOWIDGET_H\n"
  },
  {
    "path": "src/Widgets/ProgressInfoWindow.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ProgressInfoWindow.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"ProgressInfoWindow.h\"\n#include <QApplication>\n#include <QCloseEvent>\n#include <QGuiApplication>\n#include <QMessageBox>\n#include <QScreen>\n#include <QSettings>\n#include <QStyleFactory>\n#include \"Common.h\"\n#include \"FilterThread.h\"\n#include \"Globals.h\"\n#include \"GmicStdlib.h\"\n#include \"HeadlessProcessor.h\"\n#include \"Settings.h\"\n#include \"Updater.h\"\n#include \"ui_progressinfowindow.h\"\n#include \"gmic.h\"\n\nnamespace GmicQt\n{\n\nProgressInfoWindow::ProgressInfoWindow(HeadlessProcessor * processor) : QMainWindow(nullptr), ui(new Ui::ProgressInfoWindow), _processor(processor)\n{\n  ui->setupUi(this);\n  setWindowTitle(tr(\"G'MIC-Qt Plug-in progression\"));\n  processor->setProgressWindow(this);\n\n  ui->label->setText(QString(\"%1\").arg(processor->filterName()));\n  ui->progressBar->setRange(0, 100);\n  ui->progressBar->setValue(100);\n  ui->info->setText(\"\");\n  connect(processor, &HeadlessProcessor::progressWindowShouldShow, this, &ProgressInfoWindow::show);\n  connect(ui->pbCancel, &QPushButton::clicked, this, &ProgressInfoWindow::onCancelClicked);\n  connect(processor, &HeadlessProcessor::progression, this, &ProgressInfoWindow::onProgress);\n  connect(processor, &HeadlessProcessor::done, this, &ProgressInfoWindow::onProcessingFinished);\n  _isShown = false;\n\n  if (Settings::darkThemeEnabled()) {\n    setDarkTheme();\n  }\n}\n\nProgressInfoWindow::~ProgressInfoWindow()\n{\n  delete ui;\n}\n\nvoid ProgressInfoWindow::showEvent(QShowEvent *)\n{\n  QRect position = frameGeometry();\n  QList<QScreen *> screens = QGuiApplication::screens();\n  if (!screens.isEmpty()) {\n    position.moveCenter(screens.front()->geometry().center());\n    move(position.topLeft());\n  }\n  _isShown = true;\n}\n\nvoid ProgressInfoWindow::closeEvent(QCloseEvent * event)\n{\n  event->accept();\n}\n\nvoid ProgressInfoWindow::setDarkTheme()\n{\n  qApp->setStyle(QStyleFactory::create(\"Fusion\"));\n  QPalette p = qApp->palette();\n  p.setColor(QPalette::Window, QColor(53, 53, 53));\n  p.setColor(QPalette::Button, QColor(73, 73, 73));\n  p.setColor(QPalette::Highlight, QColor(110, 110, 110));\n  p.setColor(QPalette::Text, QColor(255, 255, 255));\n  p.setColor(QPalette::ButtonText, QColor(255, 255, 255));\n  p.setColor(QPalette::WindowText, QColor(255, 255, 255));\n  QColor linkColor(100, 100, 100);\n  linkColor = linkColor.lighter();\n  p.setColor(QPalette::Link, linkColor);\n  p.setColor(QPalette::LinkVisited, linkColor);\n\n  p.setColor(QPalette::Disabled, QPalette::Button, QColor(53, 53, 53));\n  p.setColor(QPalette::Disabled, QPalette::Window, QColor(53, 53, 53));\n  p.setColor(QPalette::Disabled, QPalette::Text, QColor(110, 110, 110));\n  p.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(110, 110, 110));\n  p.setColor(QPalette::Disabled, QPalette::WindowText, QColor(110, 110, 110));\n  qApp->setPalette(p);\n}\n\nvoid ProgressInfoWindow::onCancelClicked(bool)\n{\n  ui->pbCancel->setEnabled(false);\n  _processor->cancel();\n}\n\nvoid ProgressInfoWindow::onProgress(float progress, int duration, unsigned long memory)\n{\n  if (!_isShown) {\n    return;\n  }\n  if (progress >= 0) {\n    ui->progressBar->setInvertedAppearance(false);\n    ui->progressBar->setTextVisible(true);\n    ui->progressBar->setValue((int)progress);\n  } else {\n    ui->progressBar->setTextVisible(false);\n    int value = ui->progressBar->value();\n    value += 20;\n    if (value > 100) {\n      ui->progressBar->setValue(value - 100);\n      ui->progressBar->setInvertedAppearance(!ui->progressBar->invertedAppearance());\n    } else {\n      ui->progressBar->setValue(value);\n    }\n  }\n  QString durationStr;\n  if (duration >= 60000) {\n    durationStr = QTime::fromMSecsSinceStartOfDay(duration).toString(\"HH:mm:ss\");\n  } else {\n    durationStr = QString(tr(\"%1 seconds\")).arg(duration / 1000);\n  }\n  QString memoryStr;\n  unsigned long kiB = memory / 1024;\n  if (kiB >= 1024) {\n    memoryStr = QString(\"%1 MiB\").arg(kiB / 1024);\n  } else {\n    memoryStr = QString(\"%1 KiB\").arg(kiB);\n  }\n  if (kiB) {\n    ui->info->setText(QString(tr(\"[Processing %1 | %2]\")).arg(durationStr).arg(memoryStr));\n  } else {\n    ui->info->setText(QString(tr(\"[Processing %1]\")).arg(durationStr));\n  }\n}\n\nvoid ProgressInfoWindow::onInfo(QString text)\n{\n  ui->info->setText(text);\n}\n\nvoid ProgressInfoWindow::onProcessingFinished(const QString & errorMessage)\n{\n  if (!errorMessage.isEmpty()) {\n    QMessageBox::critical(this, \"Error\", errorMessage, QMessageBox::Close);\n  }\n  close();\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/Widgets/ProgressInfoWindow.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ProgressInfoWindow.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_PROGRESSINFOWINDOW_H\n#define GMIC_QT_PROGRESSINFOWINDOW_H\n\n#include <QMainWindow>\n#include <QString>\n#include <QTimer>\n#include \"GmicQt.h\"\n\nnamespace Ui\n{\nclass ProgressInfoWindow;\n}\n\nnamespace gmic_library\n{\ntemplate <typename T> struct gmic_list;\n}\n\nnamespace GmicQt\n{\n\nclass FilterThread;\n\nclass HeadlessProcessor;\n\nclass ProgressInfoWindow : public QMainWindow {\n  Q_OBJECT\n\npublic:\n  explicit ProgressInfoWindow(HeadlessProcessor * processor);\n  ~ProgressInfoWindow() override;\n\nprotected:\n  void showEvent(QShowEvent *) override;\n  void closeEvent(QCloseEvent *) override;\n  void setDarkTheme();\n\npublic slots:\n  void onCancelClicked(bool);\n  void onProgress(float progress, int duration, unsigned long memory);\n  void onInfo(QString text);\n  void onProcessingFinished(const QString & errorMessage);\n\nprivate:\n  Ui::ProgressInfoWindow * ui;\n  bool _isShown;\n  HeadlessProcessor * _processor;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_PROGRESSINFOWINDOW_H\n"
  },
  {
    "path": "src/Widgets/SearchFieldWidget.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file SearchFieldWidget.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"Widgets/SearchFieldWidget.h\"\n#include <QAction>\n#include <QFrame>\n#include <QHBoxLayout>\n#include <QIcon>\n#include <QLineEdit>\n#include <QPalette>\n#include <QRegularExpression>\n#include <QRegularExpressionValidator>\n#include <QToolButton>\n#include \"Common.h\"\n#include \"IconLoader.h\"\n#include \"Settings.h\"\n#include \"ui_SearchFieldWidget.h\"\n\nnamespace GmicQt\n{\n\nSearchFieldWidget::SearchFieldWidget(QWidget * parent) : QWidget(parent), ui(new Ui::SearchFieldWidget)\n{\n  ui->setupUi(this);\n  _clearIcon = IconLoader::load(\"edit-clear\");\n  _findIcon = IconLoader::load(\"edit-find\");\n  _empty = true;\n\n#if QT_VERSION_GTE(5, 2, 0)\n  auto hbox = dynamic_cast<QHBoxLayout *>(layout());\n  if (hbox) {\n    hbox->setContentsMargins(0, 0, 0, 0);\n    hbox->setSpacing(0);\n    hbox->addWidget(_lineEdit = new QLineEdit(this));\n    _action = _lineEdit->addAction(IconLoader::load(\"edit-find\"), QLineEdit::TrailingPosition);\n    connect(_action, &QAction::triggered, _lineEdit, &QLineEdit::clear);\n  }\n#else\n  QFrame * frame = new QFrame(this);\n  layout()->addWidget(frame);\n  frame->setFrameShape(QFrame::StyledPanel);\n  frame->setStyleSheet(QString(\"background:%1\").arg(frame->palette().base().color().name()));\n  QHBoxLayout * hbox = new QHBoxLayout;\n  frame->setLayout(hbox);\n  hbox->setMargin(2);\n\n  _lineEdit = new QLineEdit(frame);\n  hbox->addWidget(_lineEdit);\n  _button = new QToolButton(frame);\n  hbox->addWidget(_button);\n\n  _button->setStyleSheet(\"border:none\");\n  _lineEdit->setFrame(false);\n  _button->setIcon(_findIcon);\n  connect(_button, &QToolButton::clicked, _lineEdit, &QLineEdit::clear);\n#endif\n  connect(_lineEdit, &QLineEdit::textChanged, this, &SearchFieldWidget::textChanged);\n  connect(_lineEdit, &QLineEdit::textChanged, this, &SearchFieldWidget::onTextChanged);\n  _lineEdit->setPlaceholderText(tr(\"Search\"));\n  _lineEdit->setToolTip(tr(\"Search in filters list (%1)\").arg(QKeySequence(QKeySequence::Find).toString()));\n  setFocusProxy(_lineEdit);\n#if QT_VERSION_GTE(5, 12, 0)\n  if (Settings::darkThemeEnabled()) {\n    QPalette palette = _lineEdit->palette();\n    palette.setColor(QPalette::PlaceholderText, Qt::gray);\n    _lineEdit->setPalette(palette);\n  }\n#endif\n  auto validator = new QRegularExpressionValidator(QRegularExpression(\"[^/].*\"), this);\n  _lineEdit->setValidator(validator);\n}\n\nSearchFieldWidget::~SearchFieldWidget()\n{\n  delete ui;\n}\n\nQString SearchFieldWidget::text() const\n{\n  return _lineEdit->text();\n}\n\nvoid SearchFieldWidget::onTextChanged(const QString & str)\n{\n#if QT_VERSION_GTE(5, 2, 0)\n  if (str.isEmpty()) {\n    _empty = true;\n    _action->setIcon(_findIcon);\n  } else {\n    if (_empty) {\n      _action->setIcon(_clearIcon);\n    }\n    _empty = false;\n  }\n#else\n  if (str.isEmpty()) {\n    _empty = true;\n    _button->setIcon(_findIcon);\n  } else {\n    if (_empty) {\n      _button->setIcon(_clearIcon);\n      _empty = false;\n    }\n  }\n#endif\n}\n\nvoid SearchFieldWidget::clear()\n{\n  _lineEdit->clear();\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/Widgets/SearchFieldWidget.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file SearchFieldWidget.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_SEARCHFIELDWIDGET_H\n#define GMIC_QT_SEARCHFIELDWIDGET_H\n#include <QIcon>\n#include <QWidget>\n#include \"Common.h\"\nclass QAction;\nclass QLineEdit;\nclass QToolButton;\n\nnamespace Ui\n{\nclass SearchFieldWidget;\n}\n\nnamespace GmicQt\n{\n\nclass SearchFieldWidget : public QWidget {\n  Q_OBJECT\npublic:\n  explicit SearchFieldWidget(QWidget * parent);\n  ~SearchFieldWidget() override;\n  QString text() const;\npublic slots:\n  void clear();\nsignals:\n  void textChanged(QString);\nprivate slots:\n  void onTextChanged(const QString &);\n\nprivate:\n  Ui::SearchFieldWidget * ui;\n  bool _empty;\n  QIcon _clearIcon;\n  QIcon _findIcon;\n  QLineEdit * _lineEdit;\n#if QT_VERSION_GTE(5, 2, 0)\n  QAction * _action;\n#else\n  QToolButton * _button;\n#endif\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_SEARCHFIELDWIDGET_H\n"
  },
  {
    "path": "src/Widgets/VisibleTagSelector.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file VisibleTagSelector.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"Widgets/VisibleTagSelector.h\"\n\n#include <QActionGroup>\n#include <QDebug>\n#include <QToolButton>\n#include \"Common.h\"\n#include \"FilterSelector/FilterTagMap.h\"\n#include \"Tags.h\"\nnamespace GmicQt\n{\n\nVisibleTagSelector::VisibleTagSelector(QWidget * parent) : QMenu(parent)\n{\n  _toolButton = nullptr;\n}\n\nvoid VisibleTagSelector::setToolButton(QToolButton * button)\n{\n  _toolButton = button;\n  connect(button, &QToolButton::clicked, [this]() {\n    updateColors();\n    exec(_toolButton->mapToGlobal(_toolButton->rect().center()));\n    emit visibleColorsChanged((unsigned int)_selectedColors.mask());\n  });\n}\n\nvoid VisibleTagSelector::updateColors()\n{\n  TagColorSet used = FiltersTagMap::usedColors();\n  clear();\n  QAction * action = addAction(tr(\"Show All Filters\"));\n  action->setIcon(TagAssets::menuIcon(TagColor::None, _selectedColors.isEmpty() ? TagAssets::IconMark::Disk : TagAssets::IconMark::None));\n  connect(action, &QAction::triggered, [this]() { _selectedColors.clear(); });\n  for (TagColor color : used) {\n    QAction * action = addAction(tr(\"Show %1 Tags\").arg(TagAssets::colorName(color)));\n    action->setIcon(TagAssets::menuIcon(color, (_selectedColors.contains(color)) ? TagAssets::IconMark::Check : TagAssets::IconMark::None));\n    connect(action, &QAction::triggered, [this, color](bool) { // TODO : Check\n      _selectedColors.toggle(color);\n    });\n  }\n  _selectedColors = _selectedColors & used;\n\n  if (_toolButton) {\n    _toolButton->setEnabled(!used.isEmpty());\n  }\n}\n\nTagColorSet VisibleTagSelector::selectedColors() const\n{\n  return _selectedColors;\n}\n\nVisibleTagSelector::~VisibleTagSelector() {}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/Widgets/VisibleTagSelector.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file VisibleTagSelector.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_VISIBLETAGSELECTOR_H\n#define GMIC_QT_VISIBLETAGSELECTOR_H\n\n#include <QActionGroup>\n#include <QMenu>\n#include \"Tags.h\"\n\nclass QToolButton;\n\nnamespace GmicQt\n{\n\nclass VisibleTagSelector : public QMenu {\n  Q_OBJECT\n\npublic:\n  explicit VisibleTagSelector(QWidget * parent);\n  void setToolButton(QToolButton * button);\n  TagColorSet selectedColors() const;\n  ~VisibleTagSelector() override;\n\npublic slots:\n  void updateColors();\nsignals:\n  void visibleColorsChanged(unsigned int);\n\nprivate:\n  QToolButton * _toolButton;\n  QVector<TagColor> _colors;\n  TagColorSet _selectedColors;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_VISIBLETAGSELECTOR_H\n"
  },
  {
    "path": "src/Widgets/ZoomLevelSelector.cpp",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ZoomLevelSelector.cpp\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#include \"Widgets/ZoomLevelSelector.h\"\n#include <QDebug>\n#include <QLineEdit>\n#include <QRegularExpression>\n#include <cmath>\n#include \"Common.h\"\n#include \"Globals.h\"\n#include \"IconLoader.h\"\n#include \"PreviewWidget.h\"\n#include \"ui_zoomlevelselector.h\"\n\nnamespace GmicQt\n{\n\nZoomLevelSelector::ZoomLevelSelector(QWidget * parent) : QWidget(parent), ui(new Ui::ZoomLevelSelector)\n{\n  ui->setupUi(this);\n  _previewWidget = nullptr;\n\n  ui->comboBox->setEditable(true);\n\n  ui->comboBox->setInsertPolicy(QComboBox::NoInsert);\n  ui->comboBox->setValidator(new ZoomLevelValidator(ui->comboBox));\n  ui->comboBox->setCompleter(nullptr);\n  _notificationsEnabled = true;\n\n  ui->labelWarning->setPixmap(QPixmap(\":/images/no_warning.png\"));\n  ui->labelWarning->setToolTip(QString());\n\n  ui->tbZoomIn->setToolTip(tr(\"Zoom in\"));\n  ui->tbZoomOut->setToolTip(tr(\"Zoom out\"));\n  ui->tbZoomReset->setToolTip(tr(\"Reset zoom\"));\n\n  ui->tbZoomIn->setIcon(IconLoader::load(\"zoom-in\"));\n  ui->tbZoomOut->setIcon(IconLoader::load(\"zoom-out\"));\n  ui->tbZoomReset->setIcon(IconLoader::load(\"view-refresh\"));\n\n  connect(ui->comboBox->lineEdit(), &QLineEdit::editingFinished, this, &ZoomLevelSelector::onComboBoxEditingFinished);\n  connect(ui->comboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &ZoomLevelSelector::onComboIndexChanged);\n  connect(ui->tbZoomIn, &QToolButton::clicked, this, &ZoomLevelSelector::zoomIn);\n  connect(ui->tbZoomOut, &QToolButton::clicked, this, &ZoomLevelSelector::zoomOut);\n  connect(ui->tbZoomReset, &QToolButton::clicked, this, &ZoomLevelSelector::zoomReset);\n  setZoomConstraint(ZoomConstraint::Any);\n}\n\nZoomLevelSelector::~ZoomLevelSelector()\n{\n  delete ui;\n}\n\nvoid ZoomLevelSelector::setZoomConstraint(const ZoomConstraint & constraint)\n{\n  _zoomConstraint = constraint;\n  _notificationsEnabled = false;\n  setEnabled(_zoomConstraint != ZoomConstraint::Fixed);\n  double currentValue = currentZoomValue();\n\n  QStringList values = {\"1000 %\", \"800 %\", \"400 %\", \"200 %\", \"150 %\", \"100 %\", \"66.7 %\", \"50 %\", \"25 %\", \"12.5 %\"};\n  if (_zoomConstraint == ZoomConstraint::OneOrMore) {\n    values.pop_back();\n    values.pop_back();\n    values.pop_back();\n    values.pop_back();\n    if (currentValue <= 1.0) {\n      currentValue = 1.0;\n    }\n  }\n  QString maxStr = values.front();\n  maxStr.remove(\" %\");\n  int max = maxStr.toInt();\n  double previewMax = PREVIEW_MAX_ZOOM_FACTOR;\n  while (max < previewMax * 100) {\n    max += 1000;\n    values.push_front(QString::number(max) + \" %\");\n  }\n  ui->comboBox->clear();\n  ui->comboBox->addItems(values);\n\n  display(currentValue);\n\n  _notificationsEnabled = true;\n}\n\nvoid ZoomLevelSelector::setPreviewWidget(const PreviewWidget * widget)\n{\n  _previewWidget = widget;\n}\n\nvoid ZoomLevelSelector::display(const double zoom)\n{\n  bool decimals = static_cast<int>(zoom * 10000) % 100;\n  QString text;\n  if (decimals && zoom < 1) {\n    text = QString(\"%L1 %\").arg(zoom * 100.0, 0, 'f', 2);\n  } else {\n    text = QString(\"%1 %\").arg(static_cast<int>(zoom * 100));\n  }\n\n  // Get closest proposed value in list\n  double distanceMin = std::numeric_limits<double>::max();\n  int iMin = 0;\n  int count = ui->comboBox->count();\n  for (int i = 0; i < count; ++i) {\n    QString str = ui->comboBox->itemText(i);\n    str.chop(2);\n    double value = str.toDouble();\n    double distance = std::fabs(value / 100.0 - zoom);\n    if (distance < distanceMin) {\n      distanceMin = distance;\n      iMin = i;\n    }\n  }\n\n  ui->tbZoomOut->setEnabled((!_previewWidget || !_previewWidget->isAtFullZoom()) && (((_zoomConstraint == ZoomConstraint::OneOrMore) && (zoom > 1.0)) || (_zoomConstraint == ZoomConstraint::Any)));\n\n  if (_zoomConstraint == ZoomConstraint::Any || _zoomConstraint == ZoomConstraint::OneOrMore) {\n    ui->tbZoomIn->setEnabled(zoom != PREVIEW_MAX_ZOOM_FACTOR);\n  }\n\n  _notificationsEnabled = false;\n  ui->comboBox->setCurrentIndex(iMin);\n  ui->comboBox->setEditText(text);\n  _currentText = text;\n  _notificationsEnabled = true;\n}\n\nvoid ZoomLevelSelector::showWarning(bool on)\n{\n  if (on) {\n    ui->labelWarning->setPixmap(QPixmap(\":/images/warning.png\"));\n    ui->labelWarning->setToolTip(tr(\"Warning: Preview may be inaccurate (zoom factor has been modified)\"));\n  } else {\n    ui->labelWarning->setPixmap(QPixmap(\":/images/no_warning.png\"));\n    ui->labelWarning->setToolTip(QString());\n  }\n}\n\nvoid ZoomLevelSelector::onComboBoxEditingFinished()\n{\n  QString text = ui->comboBox->lineEdit()->text();\n  if (text == _currentText) {\n    // This is required because opening the combobox sends\n    // an editingFinished() signal ;-(\n    return;\n  }\n  if (!text.endsWith(\" %\")) {\n    text.remove(QRegularExpression(\" ?%?$\"));\n    text += \" %\";\n  }\n  QString digits = text;\n  digits.remove(\" %\");\n  double value = digits.toDouble();\n  if ((_zoomConstraint == ZoomConstraint::OneOrMore) && (value < 100.0)) {\n    ui->comboBox->lineEdit()->setText(_currentText = \"100 %\");\n  } else {\n    ui->comboBox->lineEdit()->setText(_currentText = text);\n  }\n  if (_notificationsEnabled) {\n    emit valueChanged(currentZoomValue());\n  }\n}\n\nvoid ZoomLevelSelector::onComboIndexChanged(int)\n{\n  _currentText = ui->comboBox->currentText();\n  if (_notificationsEnabled) {\n    emit valueChanged(currentZoomValue());\n  }\n}\n\ndouble ZoomLevelSelector::currentZoomValue()\n{\n  QString text = ui->comboBox->currentText();\n  text.remove(\" %\");\n  return text.toDouble() / 100.0;\n}\n\nZoomLevelValidator::ZoomLevelValidator(QObject * parent) : QValidator(parent)\n{\n  _doubleValidator = new QDoubleValidator(1e-10, PREVIEW_MAX_ZOOM_FACTOR * 100.0, 3, parent);\n  _doubleValidator->setNotation(QDoubleValidator::StandardNotation);\n}\n\nQValidator::State ZoomLevelValidator::validate(QString & input, int & pos) const\n{\n  QString str = input;\n  str.remove(QRegularExpression(\" ?%?$\"));\n  return _doubleValidator->validate(str, pos);\n}\n\n} // namespace GmicQt\n"
  },
  {
    "path": "src/Widgets/ZoomLevelSelector.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ZoomLevelSelector.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_ZOOMLEVELSELECTOR_H\n#define GMIC_QT_ZOOMLEVELSELECTOR_H\n\n#include <QDoubleValidator>\n#include <QPalette>\n#include <QWidget>\n#include \"ZoomConstraint.h\"\nnamespace Ui\n{\nclass ZoomLevelSelector;\n}\n\nnamespace GmicQt\n{\n\nclass PreviewWidget;\n\nclass ZoomLevelSelector : public QWidget {\n  Q_OBJECT\n\npublic:\n  explicit ZoomLevelSelector(QWidget * parent);\n  ~ZoomLevelSelector();\n\n  void setZoomConstraint(const ZoomConstraint & constraint);\n\n  void setPreviewWidget(const PreviewWidget *);\n\npublic slots:\n  void display(const double zoom);\n  void showWarning(bool on);\n\nprivate slots:\n  void onComboBoxEditingFinished();\n  void onComboIndexChanged(int);\n\nsignals:\n  void valueChanged(double);\n  void zoomIn();\n  void zoomOut();\n  void zoomReset();\n\nprivate:\n  Ui::ZoomLevelSelector * ui;\n  bool _notificationsEnabled;\n  double currentZoomValue();\n  QString _currentText;\n  ZoomConstraint _zoomConstraint;\n  const PreviewWidget * _previewWidget;\n};\n\nclass ZoomLevelValidator : public QValidator {\n\npublic:\n  ZoomLevelValidator(QObject * parent);\n  QValidator::State validate(QString & input, int & pos) const override;\n\nprivate:\n  QDoubleValidator * _doubleValidator;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_ZOOMLEVELSELECTOR_H\n"
  },
  {
    "path": "src/ZoomConstraint.h",
    "content": "/** -*- mode: c++ ; c-basic-offset: 2 -*-\n *\n *  @file ZoomConstraint.h\n *\n *  Copyright 2017 Sebastien Fourey\n *\n *  This file is part of G'MIC-Qt, a generic plug-in for raster graphics\n *  editors, offering hundreds of filters thanks to the underlying G'MIC\n *  image processing framework.\n *\n *  gmic_qt is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  gmic_qt is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with gmic_qt.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n#ifndef GMIC_QT_ZOOMCONSTRAINT_H\n#define GMIC_QT_ZOOMCONSTRAINT_H\n\nnamespace GmicQt\n{\n\nstruct ZoomConstraint {\n  enum Constraint\n  {\n    Fixed,\n    Any,\n    OneOrMore\n  };\n  ZoomConstraint() : _value(Any) {}\n  ZoomConstraint(Constraint value) : _value(value) {}\n  ZoomConstraint(const ZoomConstraint & other) : _value(other._value) {}\n  ZoomConstraint & operator=(const ZoomConstraint & other)\n  {\n    _value = other._value;\n    return *this;\n  }\n  bool operator==(const ZoomConstraint & other) const { return _value == other._value; }\n  bool operator!=(const ZoomConstraint & other) const { return _value != other._value; }\n\nprivate:\n  Constraint _value;\n};\n\n} // namespace GmicQt\n\n#endif // GMIC_QT_ZOOMCONSTRAINT_H\n"
  },
  {
    "path": "standalone.qrc",
    "content": "<RCC>\n    <qresource prefix=\"/\">\n        <file>resources/gmicky.png</file>\n    </qresource>\n</RCC>\n"
  },
  {
    "path": "translations/authors/cs.txt",
    "content": "<!-- Original Czech translation done by Jan Helebrant -->\n"
  },
  {
    "path": "translations/authors/de.txt",
    "content": "<!-- Original German translation done by Frank Tegtmeyer -->\n"
  },
  {
    "path": "translations/authors/es.txt",
    "content": "<!-- Original Spanish translation done by chroma_ghost & bazza/pixls.us -->\n"
  },
  {
    "path": "translations/authors/fr.txt",
    "content": "<!-- Original French translation done by Sébastien Fourey -->\n"
  },
  {
    "path": "translations/authors/id.txt",
    "content": "<!-- Original Indonesian translation done by Duddy Hadiwido -->\n"
  },
  {
    "path": "translations/authors/it.txt",
    "content": "<!-- Original Italian translation done by Francesco Riosa -->\n"
  },
  {
    "path": "translations/authors/ja.txt",
    "content": "<!-- Original Japanese translation done by omiya tou (tokyogeometry / github) -->\n"
  },
  {
    "path": "translations/authors/nl.txt",
    "content": "<!-- Original Dutch translation done by iarga / pixls.us -->\n"
  },
  {
    "path": "translations/authors/pl.txt",
    "content": "<!-- Original Polish translation done by Alex Mozheiko -->\n"
  },
  {
    "path": "translations/authors/pt.txt",
    "content": "<!-- Original Portuguese translation done by maxr -->\n"
  },
  {
    "path": "translations/authors/ru.txt",
    "content": "<!-- Original Russian translation by Alex Mozheiko -->\n"
  },
  {
    "path": "translations/authors/sv.txt",
    "content": "<!-- Original Swedish translation done by starinspace@github -->\n"
  },
  {
    "path": "translations/authors/uk.txt",
    "content": "<!-- Original Ukrainian translation done by Andrex Starodubtsev -->\n"
  },
  {
    "path": "translations/authors/zh.txt",
    "content": "<!-- Original Chinese translation done by LinuxToy (https://twitter.com/linuxtoy) -->\n"
  },
  {
    "path": "translations/authors/zh_tw.txt",
    "content": "<!-- Original traditional Chinese translation done by ZX-WT (https://github.com/ZX-WT) -->\n"
  },
  {
    "path": "translations/cs.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- Original Czech translation done by Jan Helebrant -->\n\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"cs_CZ\">\n<context>\n    <name>DialogSettings</name>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Dialog</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"250\"/>\n        <source>Internet updates</source>\n        <translation>Online aktualizace</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"259\"/>\n        <source>Update now</source>\n        <translation>Aktualizovat nyní</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"30\"/>\n        <source>Layout</source>\n        <translation>Rozvržení</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"24\"/>\n        <source>Interface</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"64\"/>\n        <source>Preview on the &amp;left</source>\n        <translation>Náhled &amp;vlevo</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"94\"/>\n        <source>Pre&amp;view on right side</source>\n        <translation>Náhled &amp;vpravo</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"113\"/>\n        <source>Theme</source>\n        <translation>Téma</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"119\"/>\n        <source>&amp;Default</source>\n        <translation>&amp;Výchozí</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"126\"/>\n        <source>Dar&amp;k</source>\n        <translation>&amp;Tmavé</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"139\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/I&gt;</source>\n        <translation>&lt;i&gt;(vyžaduje restart)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"149\"/>\n        <source>Language</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"179\"/>\n        <source>Always enable preview zooming</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"186\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Warning: preview may be inaccurate&lt;br/&gt;if checked.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"196\"/>\n        <source>Misc</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"209\"/>\n        <source>Use native file dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"216\"/>\n        <source>&amp;Enable High-DPI support</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"223\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation type=\"unfinished\">&lt;i&gt;(Vyžaduje restart)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"239\"/>\n        <source>Filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"244\"/>\n        <source>Other</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"282\"/>\n        <source>Output messages</source>\n        <translation>Výstupní zprávy</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"202\"/>\n        <source>&amp;Use native color dialog</source>\n        <translation>&amp;Použít nativní dialog barev</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"163\"/>\n        <source>Preview</source>\n        <translation>Náhled</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"169\"/>\n        <source>Timeout (seconds)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"36\"/>\n        <source>Show institution logos</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"291\"/>\n        <source>Notify when scheduled update fails</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"333\"/>\n        <source>&amp;Ok</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>FiltersView</name>\n    <message>\n        <location filename=\"../ui/filtersview.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ColorParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/ColorParameter.cpp\" line=\"213\"/>\n        <source>Select color</source>\n        <translation>Vyberte barvu</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::DialogSettings</name>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"45\"/>\n        <source>Settings</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"51\"/>\n        <source>Never</source>\n        <translation>Nikdy</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"52\"/>\n        <source>Daily</source>\n        <translation>Denně</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"53\"/>\n        <source>Weekly</source>\n        <translation>Týdně</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"54\"/>\n        <source>Every 2 weeks</source>\n        <translation>Každé 2 týdny</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"55\"/>\n        <source>Monthly</source>\n        <translation>Měsíčně</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"57\"/>\n        <source>At launch (debug)</source>\n        <translation>Při startu (ladění)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"65\"/>\n        <source>Output messages</source>\n        <translation>Výstupní zprávy</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"66\"/>\n        <source>Quiet (default)</source>\n        <translation>Tichý (výchozí)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"67\"/>\n        <source>Verbose (console)</source>\n        <translation>Upovídaný (konzole)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"68\"/>\n        <source>Verbose (log file)</source>\n        <translation>Upovídaný (soubor záznamů)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"69\"/>\n        <source>Very verbose (console)</source>\n        <translation>Velmi upovídaný (konzole)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"70\"/>\n        <source>Very verbose (log file)</source>\n        <translation>Velmi upovídaný (soubor záznamů)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"71\"/>\n        <source>Debug (console)</source>\n        <translation>Ladění (konzole)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"72\"/>\n        <source>Debug (log file)</source>\n        <translation>Ladění (soubor záznamů)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"88\"/>\n        <source>Check to use Native/OS color dialog, uncheck to use Qt&apos;s</source>\n        <translation>Zaškrtněte pro použití nativního/OS dialogu barev, odškrtněte pro použití Qt dialogu</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"90\"/>\n        <source>Check to use Native/OS file dialog, uncheck to use Qt&apos;s</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FileParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"159\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"162\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"165\"/>\n        <source>Select a file</source>\n        <translation>Vyberte soubor</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FilterParametersWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"44\"/>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"273\"/>\n        <source>&lt;i&gt;Select a filter&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Vyberte filtr&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"240\"/>\n        <source>&lt;i&gt;No parameters&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Žádné parametry&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"245\"/>\n        <source>Error parsing filter parameters\n\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersPresenter</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"513\"/>\n        <source>Unknown filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"623\"/>\n        <source>Cannot find this fave&apos;s original filter\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersView</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"353\"/>\n        <source>Remove fave</source>\n        <translation>Odstranit oblíbený</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"680\"/>\n        <source>Rename Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"682\"/>\n        <source>Remove Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"684\"/>\n        <source>Clone Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"688\"/>\n        <source>Add Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"707\"/>\n        <source>Remove All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>%1 (%2 %3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"354\"/>\n        <source>Do you really want to remove the following fave?\n\n%1\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FolderParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FolderParameter.cpp\" line=\"138\"/>\n        <source>Select a folder</source>\n        <translation>Vyberte složku</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::GmicProcessor</name>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"416\"/>\n        <source>Image #%1 returned by filter has %2 channels (should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"452\"/>\n        <source>Image #%1 returned by filter has %2 channels\n(should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::HeadlessProcessor</name>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"79\"/>\n        <source>At least a filter path or a filter command must be provided.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"81\"/>\n        <source>Custom command (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"89\"/>\n        <source>Cannot find filter matching path %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"96\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"114\"/>\n        <source>Error parsing supplied command: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"117\"/>\n        <source>Supplied command (%1) does not match path (%2), (should be %3).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"229\"/>\n        <source>Filter execution failed, but with no error message.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::InOutPanel</name>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"62\"/>\n        <source>Input layers</source>\n        <translation>Vstupní vrstvy</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"68\"/>\n        <source>None</source>\n        <translation>Žádné</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"69\"/>\n        <source>Active (default)</source>\n        <translation>Aktivní (výchozí)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"70\"/>\n        <source>All</source>\n        <translation>Vše</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"71\"/>\n        <source>Active and below</source>\n        <translation>Aktivní a níže</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"72\"/>\n        <source>Active and above</source>\n        <translation>Aktivní a výše</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"73\"/>\n        <source>All visible</source>\n        <translation>Všechny viditelné</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"74\"/>\n        <source>All invisible</source>\n        <translation>Všechny neviditelné</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"85\"/>\n        <source>Output mode</source>\n        <translation>Režim výstupu</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"91\"/>\n        <source>In place (default)</source>\n        <translation>V místě (výchozí)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"92\"/>\n        <source>New layer(s)</source>\n        <translation>Nová vrstva(y)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"93\"/>\n        <source>New active layer(s)</source>\n        <translation>Nová aktivní vrstva(y)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"94\"/>\n        <source>New image</source>\n        <translation>Nový obrázek</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"205\"/>\n        <source>Input / Output</source>\n        <translation>Vstup / Výstup</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"207\"/>\n        <source>Input</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"209\"/>\n        <source>Output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"53\"/>\n        <source>System default (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"62\"/>\n        <source>Translations are very likely to be incomplete.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MainWindow</name>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"108\"/>\n        <source>Add fave</source>\n        <translation>Přidat oblíbený</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"110\"/>\n        <source>Reset parameters to default values</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"113\"/>\n        <source>Randomize parameters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"119\"/>\n        <source>Copy G&apos;MIC command to clipboard</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"126\"/>\n        <source>Rename fave</source>\n        <translation>Přejmenovat oblíbený</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"128\"/>\n        <source>Remove fave</source>\n        <translation>Odstranit oblíbený</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"132\"/>\n        <source>Expand/Collapse all</source>\n        <translation>Rozbalit/Sbalit vše</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"134\"/>\n        <source>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandy University (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</source>\n        <translation>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandy University (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"141\"/>\n        <source>Selection mode</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"180\"/>\n        <source>Update filters</source>\n        <translation>Aktualizovat filtry</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"232\"/>\n        <source>Manage visible tags\n(Right-click on a fave or a filter to set/remove tags)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"238\"/>\n        <source>Force &amp;quit</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"242\"/>\n        <source>Full</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"243\"/>\n        <source>Forward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"244\"/>\n        <source>Forward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"245\"/>\n        <source>Backward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"246\"/>\n        <source>Backward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"247\"/>\n        <source>Duplicate Top</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"248\"/>\n        <source>Duplicate Left</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"249\"/>\n        <source>Duplicate Bottom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"250\"/>\n        <source>Duplicate Right</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"251\"/>\n        <source>Duplicate Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"252\"/>\n        <source>Duplicate Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"253\"/>\n        <source>Checkered</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"254\"/>\n        <source>Checkered Inverse</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <source>Update completed</source>\n        <translation>Aktualizace dokončena</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"378\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"509\"/>\n        <source>Filter definitions have been updated.</source>\n        <translation>Definice filtrů byly aktualizovány.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"381\"/>\n        <source>No download was needed.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"427\"/>\n        <source>Plugin was called with a filter path with no matching filter:\n\nPath: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"435\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"462\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"448\"/>\n        <source>Plugin was called with a command that cannot be recognized as a filter:\n\nCommand: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"927\"/>\n        <source>[Elapsed time: %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"443\"/>\n        <source>Plugin was called with a command that cannot be parsed:\n\n%1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"452\"/>\n        <source>Plugin was called with a command that does not match the provided path:\n\nPath: %1\nCommand: %2\nCommand found for this path : %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"505\"/>\n        <source>Filters update could not be achieved</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"646\"/>\n        <source>The update could not be achieved&lt;br&gt;because of the following errors:&lt;br&gt;</source>\n        <translation>Aktualizace nemohla být provedena&lt;br/&gt;kvůli následujícím chybám:&lt;br/&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"652\"/>\n        <source>Update error</source>\n        <translation>Chyba aktualizace</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"859\"/>\n        <source>Error</source>\n        <translation>Chyba</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1478\"/>\n        <source>Waiting for cancelled jobs...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Import faves</source>\n        <translation>Importovat oblíbené</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Do you want to import faves from file below?&lt;br/&gt;%1</source>\n        <translation>Chcete importovat oblíbené ze souboru níže?&lt;br/&gt;%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1335\"/>\n        <source>Don&apos;t ask again</source>\n        <translation>Znovu už se neptat</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>Confirmation</source>\n        <translation>Potvrzení</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>A gmic command is running.&lt;br&gt;Do you really want to close the plugin?</source>\n        <translation>Gmic příkaz stále běží.&lt;br&gt;Opravdu chcete zavřít plugin?</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/MultilineTextParameterWidget.cpp\" line=\"41\"/>\n        <source>Ctrl+Return</source>\n        <translation>Ctrl+Enter</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"50\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"53\"/>\n        <source>Abort</source>\n        <translation>Zrušit</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"126\"/>\n        <source>[Processing 88:00:00.888 | 888.9 GiB]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"128\"/>\n        <source>[Processing 88:00:00.888]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"160\"/>\n        <source>Updating filters...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"213\"/>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"221\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Zpracování %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"223\"/>\n        <source>[Processing %1]</source>\n        <translation>[Zpracování %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"49\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"141\"/>\n        <source>%1 seconds</source>\n        <translation>%1 sekund</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"151\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Zpracování %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"153\"/>\n        <source>[Processing %1]</source>\n        <translation>[Zpracování %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SearchFieldWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"80\"/>\n        <source>Search</source>\n        <translation>Hledat</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"81\"/>\n        <source>Search in filters list (%1)</source>\n        <translation>Hledat v seznamu filtrů (%1)</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SourcesWidget</name>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"58\"/>\n        <source>Move source up</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"60\"/>\n        <source>Move source down</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"62\"/>\n        <source>Add local file (dialog)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"64\"/>\n        <source>Reset filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"80\"/>\n        <source>Macros: $HOME %USERPROFILE% $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"102\"/>\n        <source>Environment variables (e.g. %USERPROFILE% or %HOMEDIR%) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"82\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"53\"/>\n        <source>Remove source (Delete)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"85\"/>\n        <source>Disable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"86\"/>\n        <source>Enable without updates</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"87\"/>\n        <source>Enable with updates (recommended)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"106\"/>\n        <source>Environment variables (e.g. $HOME or ${HOME} for your home directory) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"111\"/>\n        <source>New source</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"192\"/>\n        <source>Select a file</source>\n        <translation type=\"unfinished\">Vyberte soubor</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::Updater</name>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"137\"/>\n        <source>Error downloading %1 (empty file?)</source>\n        <translation>Chyba stahování %1 (prázdný soubor?)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"146\"/>\n        <source>Could not read/decompress %1</source>\n        <translation>Nemohu přečíst/dekomprimovat %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"151\"/>\n        <source>Error writing file %1</source>\n        <translation>Chyba zapisování souboru %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"168\"/>\n        <source>Error downloading %1&lt;br/&gt;Error %2: %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"204\"/>\n        <source>Download timeout: %1</source>\n        <translation>Stahování zrušeno (časový limit překročen): %1</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::VisibleTagSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"55\"/>\n        <source>Show All Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"59\"/>\n        <source>Show %1 Tags</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"54\"/>\n        <source>Zoom in</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"55\"/>\n        <source>Zoom out</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"56\"/>\n        <source>Reset zoom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"155\"/>\n        <source>Warning: Preview may be inaccurate (zoom factor has been modified)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>HeadlessProgressDialog</name>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Dialog</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"68\"/>\n        <source>Cancel</source>\n        <translation>Storno</translation>\n    </message>\n</context>\n<context>\n    <name>InOutPanel</name>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"40\"/>\n        <source>Input / Output</source>\n        <translation>Vstup / Výstup</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"47\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"92\"/>\n        <source>Input layers</source>\n        <translation>Vstupní vrstvy</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"115\"/>\n        <source>Output mode</source>\n        <translation>Režim výstupu</translation>\n    </message>\n</context>\n<context>\n    <name>JpegQualityDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation type=\"unfinished\">Dialog</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"20\"/>\n        <location filename=\"../src/Host/None/JpegQualityDialog.cpp\" line=\"13\"/>\n        <source>JPEG Quality</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"28\"/>\n        <source>0</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"42\"/>\n        <source>100</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"60\"/>\n        <source>Always use this quality for this execution of G&apos;MIC-Qt</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"85\"/>\n        <source>&amp;Cancel</source>\n        <translation type=\"unfinished\">&amp;Storno</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"92\"/>\n        <source>&amp;Ok</source>\n        <translation type=\"unfinished\">&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"35\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation>&lt;i&gt;(Vyžaduje restart)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"48\"/>\n        <source>Translate filters (WIP)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"18\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"176\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Download filter definitions from remote sources&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Stáhnout definice filtrů ze vzdálených zdrojů&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"179\"/>\n        <source>Internet</source>\n        <translation>Internet</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"418\"/>\n        <source>Preview type (Ctrl+Shift+P)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"509\"/>\n        <source>&amp;Settings...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"525\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"532\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"248\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"255\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"262\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation type=\"unfinished\">MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"408\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable/disable preview&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(right click on preview image for instant swapping)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"411\"/>\n        <source>Preview</source>\n        <translation>Náhled</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"558\"/>\n        <source>&amp;Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"571\"/>\n        <source>&amp;Cancel</source>\n        <translation>&amp;Storno</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"545\"/>\n        <source>&amp;Fullscreen</source>\n        <translation>&amp;Celá obrazovka</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"584\"/>\n        <source>&amp;Apply</source>\n        <translation>&amp;Použít</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"597\"/>\n        <source>&amp;OK</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"29\"/>\n        <source>Update</source>\n        <translation>Aktualizovat</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"48\"/>\n        <source>Abort</source>\n        <translation>Zrušit</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"55\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"30\"/>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"50\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"72\"/>\n        <source>Cancel</source>\n        <translation>Storno</translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"76\"/>\n        <source>Select an image to open...</source>\n        <translation>Vyberte obrázek k otevření...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Error</source>\n        <translation>Chyba</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Could not open file.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"88\"/>\n        <source>Default image</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"81\"/>\n        <source>Visible</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"107\"/>\n        <source>Available filters (%1)</source>\n        <translation>Dostupných filtrů (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"151\"/>\n        <source>%1 Tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"157\"/>\n        <source>None</source>\n        <translation type=\"unfinished\">Žádné</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"158\"/>\n        <source>Red</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"159\"/>\n        <source>Green</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"160\"/>\n        <source>Blue</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"161\"/>\n        <source>Cyan</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"162\"/>\n        <source>Magenta</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"163\"/>\n        <source>Yellow</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"127\"/>\n        <source>Could not install translator for file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"130\"/>\n        <source>Could not load translation file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"337\"/>\n        <source>List %1 cannot be merged considering these runs: %2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"432\"/>\n        <source>%1 GiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"434\"/>\n        <source>%1 MiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"436\"/>\n        <source>%1 KiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"438\"/>\n        <source>%1 B</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>SearchFieldWidget</name>\n    <message>\n        <location filename=\"../ui/SearchFieldWidget.ui\" line=\"20\"/>\n        <source>Frame</source>\n        <translation>Frame</translation>\n    </message>\n</context>\n<context>\n    <name>SourcesWidget</name>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\">GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"136\"/>\n        <source>Official filters:</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"22\"/>\n        <source>File / URL</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"32\"/>\n        <source>Add new</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"39\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"55\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"62\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"85\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"92\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"118\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../ui/zoomlevelselector.ui\" line=\"20\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"73\"/>\n        <source>G&apos;MIC-Qt filter output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"84\"/>\n        <source>Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"87\"/>\n        <source>Save as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"122\"/>\n        <source>%1 file (*.%2 *.%3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"148\"/>\n        <source>Save image as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageView</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\">Chyba</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Could not write image file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "translations/de.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- Original German translation done by Frank Tegtmeyer -->\n\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"de\">\n<context>\n    <name>DialogSettings</name>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translatorcomment>not sure about the use</translatorcomment>\n        <translation>Einstellungen</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"250\"/>\n        <source>Internet updates</source>\n        <translation>Aktualisierungen über Internet</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"259\"/>\n        <source>Update now</source>\n        <translation>Jetzt aktualisieren</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"30\"/>\n        <source>Layout</source>\n        <translation>Anordnung</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"24\"/>\n        <source>Interface</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"64\"/>\n        <source>Preview on the &amp;left</source>\n        <translation>Vorschau auf &amp;linker Seite</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"94\"/>\n        <source>Pre&amp;view on right side</source>\n        <translation>Vorschau auf &amp;rechter Seite</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"113\"/>\n        <source>Theme</source>\n        <translation>Thema</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"119\"/>\n        <source>&amp;Default</source>\n        <translation>&amp;Standard</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"126\"/>\n        <source>Dar&amp;k</source>\n        <translation>&amp;Dunkel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"139\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/I&gt;</source>\n        <translation>&lt;i&gt;(Neustart erforderlich)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"149\"/>\n        <source>Language</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"179\"/>\n        <source>Always enable preview zooming</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"186\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Warning: preview may be inaccurate&lt;br/&gt;if checked.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"196\"/>\n        <source>Misc</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"209\"/>\n        <source>Use native file dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"216\"/>\n        <source>&amp;Enable High-DPI support</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"223\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation type=\"unfinished\">&lt;i&gt;(Neustart erforderlich)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"239\"/>\n        <source>Filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"244\"/>\n        <source>Other</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"282\"/>\n        <source>Output messages</source>\n        <translation>Ausgabe der Meldungen</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"202\"/>\n        <source>&amp;Use native color dialog</source>\n        <translation>&amp;System-Farbwähler verwenden</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"163\"/>\n        <source>Preview</source>\n        <translation>Vorschau</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"169\"/>\n        <source>Timeout (seconds)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"36\"/>\n        <source>Show institution logos</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"291\"/>\n        <source>Notify when scheduled update fails</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"333\"/>\n        <source>&amp;Ok</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>FiltersView</name>\n    <message>\n        <location filename=\"../ui/filtersview.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ColorParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/ColorParameter.cpp\" line=\"213\"/>\n        <source>Select color</source>\n        <translation>Farb-Auswahl</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::DialogSettings</name>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"45\"/>\n        <source>Settings</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"51\"/>\n        <source>Never</source>\n        <translation>Niemals</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"52\"/>\n        <source>Daily</source>\n        <translation>Täglich</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"53\"/>\n        <source>Weekly</source>\n        <translation>Wöchentlich</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"54\"/>\n        <source>Every 2 weeks</source>\n        <translation>Alle zwei Wochen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"55\"/>\n        <source>Monthly</source>\n        <translation>Monatlich</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"57\"/>\n        <source>At launch (debug)</source>\n        <translation>Beim Starten (Debug)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"65\"/>\n        <source>Output messages</source>\n        <translation>Ausgabe der Meldungen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"66\"/>\n        <source>Quiet (default)</source>\n        <translation>Keine Ausgabe (Standard)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"67\"/>\n        <source>Verbose (console)</source>\n        <translation>Ausführlich (Konsole)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"68\"/>\n        <source>Verbose (log file)</source>\n        <translation>Ausführlich (Log-Datei)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"69\"/>\n        <source>Very verbose (console)</source>\n        <translation>Sehr ausführlich (Konsole)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"70\"/>\n        <source>Very verbose (log file)</source>\n        <translation>Sehr ausführlich (Log-Datei)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"71\"/>\n        <source>Debug (console)</source>\n        <translation>Debuggen (Konsole)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"72\"/>\n        <source>Debug (log file)</source>\n        <translation>Debuggen (Log-Datei)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"88\"/>\n        <source>Check to use Native/OS color dialog, uncheck to use Qt&apos;s</source>\n        <translation>Auswählen, um System-Farbwähler zu nutzen, aus für Qt-Farbwähler</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"90\"/>\n        <source>Check to use Native/OS file dialog, uncheck to use Qt&apos;s</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FileParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"159\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"162\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"165\"/>\n        <source>Select a file</source>\n        <translation>Datei auswählen</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FilterParametersWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"44\"/>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"273\"/>\n        <source>&lt;i&gt;Select a filter&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Filter auswählen&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"240\"/>\n        <source>&lt;i&gt;No parameters&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Keine Parameter anzugeben&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"245\"/>\n        <source>Error parsing filter parameters\n\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersPresenter</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"513\"/>\n        <source>Unknown filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"623\"/>\n        <source>Cannot find this fave&apos;s original filter\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersView</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"353\"/>\n        <source>Remove fave</source>\n        <translation>Kein Favorit mehr</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"680\"/>\n        <source>Rename Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"682\"/>\n        <source>Remove Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"684\"/>\n        <source>Clone Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"688\"/>\n        <source>Add Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"707\"/>\n        <source>Remove All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>%1 (%2 %3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"354\"/>\n        <source>Do you really want to remove the following fave?\n\n%1\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FolderParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FolderParameter.cpp\" line=\"138\"/>\n        <source>Select a folder</source>\n        <translation>Ordner wählen</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::GmicProcessor</name>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"416\"/>\n        <source>Image #%1 returned by filter has %2 channels (should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"452\"/>\n        <source>Image #%1 returned by filter has %2 channels\n(should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::HeadlessProcessor</name>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"79\"/>\n        <source>At least a filter path or a filter command must be provided.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"81\"/>\n        <source>Custom command (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"89\"/>\n        <source>Cannot find filter matching path %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"96\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"114\"/>\n        <source>Error parsing supplied command: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"117\"/>\n        <source>Supplied command (%1) does not match path (%2), (should be %3).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"229\"/>\n        <source>Filter execution failed, but with no error message.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::InOutPanel</name>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"62\"/>\n        <source>Input layers</source>\n        <translation>Ursprungs-Ebenen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"68\"/>\n        <source>None</source>\n        <translation>Keine</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"69\"/>\n        <source>Active (default)</source>\n        <translation>Aktive (Standard)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"70\"/>\n        <source>All</source>\n        <translation>Alle</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"71\"/>\n        <source>Active and below</source>\n        <translation>Aktive und darunter liegende</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"72\"/>\n        <source>Active and above</source>\n        <translation>Aktive und darüber liegende</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"73\"/>\n        <source>All visible</source>\n        <translation>Alle sichtbaren</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"74\"/>\n        <source>All invisible</source>\n        <translation>Alle nicht sichtbaren</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"85\"/>\n        <source>Output mode</source>\n        <translation>Ziel</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"91\"/>\n        <source>In place (default)</source>\n        <translation>Ebene ersetzen (Standard)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"92\"/>\n        <source>New layer(s)</source>\n        <translation>Neue Ebene(n)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"93\"/>\n        <source>New active layer(s)</source>\n        <translation>Neue aktive Ebene(n)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"94\"/>\n        <source>New image</source>\n        <translation>Neues Bild</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"205\"/>\n        <source>Input / Output</source>\n        <translation>Quellen und Ziel</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"207\"/>\n        <source>Input</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"209\"/>\n        <source>Output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"53\"/>\n        <source>System default (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"62\"/>\n        <source>Translations are very likely to be incomplete.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MainWindow</name>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"108\"/>\n        <source>Add fave</source>\n        <translation>Als Favorit merken</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"110\"/>\n        <source>Reset parameters to default values</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"113\"/>\n        <source>Randomize parameters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"119\"/>\n        <source>Copy G&apos;MIC command to clipboard</source>\n        <translation>G&apos;MIC-Befehl in die Zwischenablage kopieren</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"126\"/>\n        <source>Rename fave</source>\n        <translation>Favorit umbenennen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"128\"/>\n        <source>Remove fave</source>\n        <translation>Kein Favorit mehr</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"132\"/>\n        <source>Expand/Collapse all</source>\n        <translation>Alles aufklappen/einklappen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"134\"/>\n        <source>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandy University (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</source>\n        <translation>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandie Université (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"141\"/>\n        <source>Selection mode</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"180\"/>\n        <source>Update filters</source>\n        <translation>Filter aktualisieren</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"232\"/>\n        <source>Manage visible tags\n(Right-click on a fave or a filter to set/remove tags)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"238\"/>\n        <source>Force &amp;quit</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"242\"/>\n        <source>Full</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"243\"/>\n        <source>Forward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"244\"/>\n        <source>Forward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"245\"/>\n        <source>Backward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"246\"/>\n        <source>Backward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"247\"/>\n        <source>Duplicate Top</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"248\"/>\n        <source>Duplicate Left</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"249\"/>\n        <source>Duplicate Bottom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"250\"/>\n        <source>Duplicate Right</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"251\"/>\n        <source>Duplicate Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"252\"/>\n        <source>Duplicate Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"253\"/>\n        <source>Checkered</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"254\"/>\n        <source>Checkered Inverse</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <source>Update completed</source>\n        <translation>Aktualisierung ist durchgeführt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"378\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"509\"/>\n        <source>Filter definitions have been updated.</source>\n        <translation>Die Filter-Definitionen wurden aktualisiert.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"381\"/>\n        <source>No download was needed.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"427\"/>\n        <source>Plugin was called with a filter path with no matching filter:\n\nPath: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"435\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"462\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"448\"/>\n        <source>Plugin was called with a command that cannot be recognized as a filter:\n\nCommand: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"927\"/>\n        <source>[Elapsed time: %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"443\"/>\n        <source>Plugin was called with a command that cannot be parsed:\n\n%1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"452\"/>\n        <source>Plugin was called with a command that does not match the provided path:\n\nPath: %1\nCommand: %2\nCommand found for this path : %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"505\"/>\n        <source>Filters update could not be achieved</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"646\"/>\n        <source>The update could not be achieved&lt;br&gt;because of the following errors:&lt;br&gt;</source>\n        <translation>Wegen der folgenden Fehler konnte&lt;br/&gt;die Aktualisierung nicht durchgeführt werden:&lt;br/&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"652\"/>\n        <source>Update error</source>\n        <translation>Fehler bei der Aktualisierung</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"859\"/>\n        <source>Error</source>\n        <translation>Fehler</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1478\"/>\n        <source>Waiting for cancelled jobs...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Import faves</source>\n        <translation>Favoriten importieren</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Do you want to import faves from file below?&lt;br/&gt;%1</source>\n        <translation>Möchten Sie Favoriten aus dieser Datei importieren?&lt;br/&gt;%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1335\"/>\n        <source>Don&apos;t ask again</source>\n        <translation>Nicht mehr fragen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>Confirmation</source>\n        <translation>Bestätigung</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>A gmic command is running.&lt;br&gt;Do you really want to close the plugin?</source>\n        <translation>Ein GMIC-Kommando ist aktiv.&lt;br&gt;Wollen Sie das Plugin wirklich schließen?</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/MultilineTextParameterWidget.cpp\" line=\"41\"/>\n        <source>Ctrl+Return</source>\n        <translation>Strg+Enter</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"50\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"53\"/>\n        <source>Abort</source>\n        <translation>Abbrechen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"126\"/>\n        <source>[Processing 88:00:00.888 | 888.9 GiB]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"128\"/>\n        <source>[Processing 88:00:00.888]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"160\"/>\n        <source>Updating filters...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"213\"/>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"221\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"223\"/>\n        <source>[Processing %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"49\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"141\"/>\n        <source>%1 seconds</source>\n        <translation>%1 Sekunden</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"151\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"153\"/>\n        <source>[Processing %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SearchFieldWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"80\"/>\n        <source>Search</source>\n        <translation>Suchen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"81\"/>\n        <source>Search in filters list (%1)</source>\n        <translation>In Filter-Liste suchen (%1)</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SourcesWidget</name>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"58\"/>\n        <source>Move source up</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"60\"/>\n        <source>Move source down</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"62\"/>\n        <source>Add local file (dialog)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"64\"/>\n        <source>Reset filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"80\"/>\n        <source>Macros: $HOME %USERPROFILE% $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"102\"/>\n        <source>Environment variables (e.g. %USERPROFILE% or %HOMEDIR%) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"82\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"53\"/>\n        <source>Remove source (Delete)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"85\"/>\n        <source>Disable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"86\"/>\n        <source>Enable without updates</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"87\"/>\n        <source>Enable with updates (recommended)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"106\"/>\n        <source>Environment variables (e.g. $HOME or ${HOME} for your home directory) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"111\"/>\n        <source>New source</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"192\"/>\n        <source>Select a file</source>\n        <translation type=\"unfinished\">Datei auswählen</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::Updater</name>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"137\"/>\n        <source>Error downloading %1 (empty file?)</source>\n        <translation>Fehler beim Laden von %1 (Leere Datei?)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"146\"/>\n        <source>Could not read/decompress %1</source>\n        <translation>%1 ist nicht lesbar oder kann nicht entpackt werden</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"151\"/>\n        <source>Error writing file %1</source>\n        <translation>Fehler beim Schreiben der Datei %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"168\"/>\n        <source>Error downloading %1&lt;br/&gt;Error %2: %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"204\"/>\n        <source>Download timeout: %1</source>\n        <translation>Zeitüberschreitung beim Herunterladen : %1</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::VisibleTagSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"55\"/>\n        <source>Show All Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"59\"/>\n        <source>Show %1 Tags</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"54\"/>\n        <source>Zoom in</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"55\"/>\n        <source>Zoom out</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"56\"/>\n        <source>Reset zoom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"155\"/>\n        <source>Warning: Preview may be inaccurate (zoom factor has been modified)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>HeadlessProgressDialog</name>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translatorcomment>guessed from french translation</translatorcomment>\n        <translation>Fortschritt</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"68\"/>\n        <source>Cancel</source>\n        <translation>Abbrechen</translation>\n    </message>\n</context>\n<context>\n    <name>InOutPanel</name>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"40\"/>\n        <source>Input / Output</source>\n        <translation>Quellen und Ziel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"47\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"92\"/>\n        <source>Input layers</source>\n        <translation>Ursprungs-Ebenen</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"115\"/>\n        <source>Output mode</source>\n        <translation>Ziel</translation>\n    </message>\n</context>\n<context>\n    <name>JpegQualityDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"20\"/>\n        <location filename=\"../src/Host/None/JpegQualityDialog.cpp\" line=\"13\"/>\n        <source>JPEG Quality</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"28\"/>\n        <source>0</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"42\"/>\n        <source>100</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"60\"/>\n        <source>Always use this quality for this execution of G&apos;MIC-Qt</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"85\"/>\n        <source>&amp;Cancel</source>\n        <translation type=\"unfinished\">&amp;Abbruch</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"92\"/>\n        <source>&amp;Ok</source>\n        <translation type=\"unfinished\">&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"35\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation>&lt;i&gt;(Neustart erforderlich)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"48\"/>\n        <source>Translate filters (WIP)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"18\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"176\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Download filter definitions from remote sources&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Filter-Definitionen von externen Quellen laden&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"179\"/>\n        <source>Internet</source>\n        <translation>Internet</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"418\"/>\n        <source>Preview type (Ctrl+Shift+P)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"509\"/>\n        <source>&amp;Settings...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"525\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"532\"/>\n        <source>TextLabel</source>\n        <translatorcomment>why empty?</translatorcomment>\n        <translation>TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"248\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"255\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"262\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation type=\"unfinished\">MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"408\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable/disable preview&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(right click on preview image for instant swapping)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"411\"/>\n        <source>Preview</source>\n        <translation>Vorschau</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"558\"/>\n        <source>&amp;Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"571\"/>\n        <source>&amp;Cancel</source>\n        <translation>&amp;Abbruch</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"545\"/>\n        <source>&amp;Fullscreen</source>\n        <translation>&amp;Vollbild</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"584\"/>\n        <source>&amp;Apply</source>\n        <translation>&amp;Anwenden</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"597\"/>\n        <source>&amp;OK</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"29\"/>\n        <source>Update</source>\n        <translation>Aktualisieren</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"48\"/>\n        <source>Abort</source>\n        <translation>Abbrechen</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"55\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"30\"/>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"50\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"72\"/>\n        <source>Cancel</source>\n        <translation>Abbrechen</translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"76\"/>\n        <source>Select an image to open...</source>\n        <translation>Bild zum Laden auswählen...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Error</source>\n        <translation>Fehler</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Could not open file.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"88\"/>\n        <source>Default image</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"81\"/>\n        <source>Visible</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"107\"/>\n        <source>Available filters (%1)</source>\n        <translation>Verfügbare Filter (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"151\"/>\n        <source>%1 Tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"157\"/>\n        <source>None</source>\n        <translation type=\"unfinished\">Keine</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"158\"/>\n        <source>Red</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"159\"/>\n        <source>Green</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"160\"/>\n        <source>Blue</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"161\"/>\n        <source>Cyan</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"162\"/>\n        <source>Magenta</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"163\"/>\n        <source>Yellow</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"127\"/>\n        <source>Could not install translator for file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"130\"/>\n        <source>Could not load translation file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"337\"/>\n        <source>List %1 cannot be merged considering these runs: %2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"432\"/>\n        <source>%1 GiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"434\"/>\n        <source>%1 MiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"436\"/>\n        <source>%1 KiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"438\"/>\n        <source>%1 B</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>SearchFieldWidget</name>\n    <message>\n        <location filename=\"../ui/SearchFieldWidget.ui\" line=\"20\"/>\n        <source>Frame</source>\n        <translation>Frame</translation>\n    </message>\n</context>\n<context>\n    <name>SourcesWidget</name>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\">GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"136\"/>\n        <source>Official filters:</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"22\"/>\n        <source>File / URL</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"32\"/>\n        <source>Add new</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"39\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"55\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"62\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"85\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"92\"/>\n        <source>...</source>\n        <translation type=\"unfinished\">...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"118\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../ui/zoomlevelselector.ui\" line=\"20\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"73\"/>\n        <source>G&apos;MIC-Qt filter output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"84\"/>\n        <source>Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"87\"/>\n        <source>Save as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"122\"/>\n        <source>%1 file (*.%2 *.%3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"148\"/>\n        <source>Save image as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageView</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\">Fehler</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Could not write image file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "translations/es.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- Original Spanish translation done by chroma_ghost & bazza/pixls.us -->\n\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"es\">\n<context>\n    <name>DialogSettings</name>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Diálogo</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"250\"/>\n        <source>Internet updates</source>\n        <translation>Actualizaciones de internet</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"259\"/>\n        <source>Update now</source>\n        <translation>Actualizar ahora</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"30\"/>\n        <source>Layout</source>\n        <translation>Disposición</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"24\"/>\n        <source>Interface</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"64\"/>\n        <source>Preview on the &amp;left</source>\n        <translation>Previsualizar a la &amp;izquierda</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"94\"/>\n        <source>Pre&amp;view on right side</source>\n        <translation>Previsualizar a la &amp;derecha</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"113\"/>\n        <source>Theme</source>\n        <translation>Tema</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"119\"/>\n        <source>&amp;Default</source>\n        <translation>&amp;Valor predeterminado</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"126\"/>\n        <source>Dar&amp;k</source>\n        <translation>&amp;Oscuro</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"139\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/I&gt;</source>\n        <translation>&lt;i&gt;(Reinicio necesario)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"149\"/>\n        <source>Language</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"179\"/>\n        <source>Always enable preview zooming</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"186\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Warning: preview may be inaccurate&lt;br/&gt;if checked.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"196\"/>\n        <source>Misc</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"209\"/>\n        <source>Use native file dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"216\"/>\n        <source>&amp;Enable High-DPI support</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"223\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation type=\"unfinished\">&lt;i&gt;(Reinicio necesario)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"239\"/>\n        <source>Filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"244\"/>\n        <source>Other</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"282\"/>\n        <source>Output messages</source>\n        <translation>Mensages de salida</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"202\"/>\n        <source>&amp;Use native color dialog</source>\n        <translation>&amp;Usar color nativo en los diálogos</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"163\"/>\n        <source>Preview</source>\n        <translation>Previsualización</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"169\"/>\n        <source>Timeout (seconds)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"36\"/>\n        <source>Show institution logos</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"291\"/>\n        <source>Notify when scheduled update fails</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"333\"/>\n        <source>&amp;Ok</source>\n        <translation>&amp;Aceptar</translation>\n    </message>\n</context>\n<context>\n    <name>FiltersView</name>\n    <message>\n        <location filename=\"../ui/filtersview.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ColorParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/ColorParameter.cpp\" line=\"213\"/>\n        <source>Select color</source>\n        <translation>Seleccionar color</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::DialogSettings</name>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"45\"/>\n        <source>Settings</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"51\"/>\n        <source>Never</source>\n        <translation>Nunca</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"52\"/>\n        <source>Daily</source>\n        <translation>Diariamente</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"53\"/>\n        <source>Weekly</source>\n        <translation>Semanalmente</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"54\"/>\n        <source>Every 2 weeks</source>\n        <translation>Cada 2 semanas</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"55\"/>\n        <source>Monthly</source>\n        <translation>Mensualmente</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"57\"/>\n        <source>At launch (debug)</source>\n        <translation>Al iniciar (depurar)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"65\"/>\n        <source>Output messages</source>\n        <translation>Mensages de salida</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"66\"/>\n        <source>Quiet (default)</source>\n        <translation>Silencioso (por defecto)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"67\"/>\n        <source>Verbose (console)</source>\n        <translation>Modo verborraico (consola)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"68\"/>\n        <source>Verbose (log file)</source>\n        <translation>Modo verborraico (archivo de registro)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"69\"/>\n        <source>Very verbose (console)</source>\n        <translation>Modo muy verborraico (consola)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"70\"/>\n        <source>Very verbose (log file)</source>\n        <translation>Modo muy verborraico (archivo de registro)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"71\"/>\n        <source>Debug (console)</source>\n        <translation>Depurar errores (consola)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"72\"/>\n        <source>Debug (log file)</source>\n        <translation>Depurar errores (archivo de registro)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"88\"/>\n        <source>Check to use Native/OS color dialog, uncheck to use Qt&apos;s</source>\n        <translation>Seleccionar para usar el diálogo de color nativo/SO,  deseleccionar para usar el de Qt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"90\"/>\n        <source>Check to use Native/OS file dialog, uncheck to use Qt&apos;s</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FileParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"159\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"162\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"165\"/>\n        <source>Select a file</source>\n        <translation>Seleccionar un archivo</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FilterParametersWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"44\"/>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"273\"/>\n        <source>&lt;i&gt;Select a filter&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Seleccionar un filtro&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"240\"/>\n        <source>&lt;i&gt;No parameters&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Sin parámetros&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"245\"/>\n        <source>Error parsing filter parameters\n\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersPresenter</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"513\"/>\n        <source>Unknown filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"623\"/>\n        <source>Cannot find this fave&apos;s original filter\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersView</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"353\"/>\n        <source>Remove fave</source>\n        <translation>Eliminar un favorito</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"680\"/>\n        <source>Rename Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"682\"/>\n        <source>Remove Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"684\"/>\n        <source>Clone Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"688\"/>\n        <source>Add Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"707\"/>\n        <source>Remove All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>%1 (%2 %3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"354\"/>\n        <source>Do you really want to remove the following fave?\n\n%1\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FolderParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FolderParameter.cpp\" line=\"138\"/>\n        <source>Select a folder</source>\n        <translation>Seleccionar una carpeta</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::GmicProcessor</name>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"416\"/>\n        <source>Image #%1 returned by filter has %2 channels (should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"452\"/>\n        <source>Image #%1 returned by filter has %2 channels\n(should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::HeadlessProcessor</name>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"79\"/>\n        <source>At least a filter path or a filter command must be provided.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"81\"/>\n        <source>Custom command (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"89\"/>\n        <source>Cannot find filter matching path %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"96\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"114\"/>\n        <source>Error parsing supplied command: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"117\"/>\n        <source>Supplied command (%1) does not match path (%2), (should be %3).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"229\"/>\n        <source>Filter execution failed, but with no error message.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::InOutPanel</name>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"62\"/>\n        <source>Input layers</source>\n        <translation>Capas de entrada</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"68\"/>\n        <source>None</source>\n        <translation>Ninguna</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"69\"/>\n        <source>Active (default)</source>\n        <translation>Activa (por defecto)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"70\"/>\n        <source>All</source>\n        <translation>Todas</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"71\"/>\n        <source>Active and below</source>\n        <translation>Activa e inferiores</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"72\"/>\n        <source>Active and above</source>\n        <translation>Activa y superiores</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"73\"/>\n        <source>All visible</source>\n        <translation>Todas las visibles</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"74\"/>\n        <source>All invisible</source>\n        <translation>Todas las invisibles</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"85\"/>\n        <source>Output mode</source>\n        <translation>Modo de salida</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"91\"/>\n        <source>In place (default)</source>\n        <translation>In situ (por defecto)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"92\"/>\n        <source>New layer(s)</source>\n        <translation>Nueva(s) capa(s)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"93\"/>\n        <source>New active layer(s)</source>\n        <translation>Nueva(s) capa(s) activa(s)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"94\"/>\n        <source>New image</source>\n        <translation>Nueva imagen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"205\"/>\n        <source>Input / Output</source>\n        <translation>Entrada / Salida</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"207\"/>\n        <source>Input</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"209\"/>\n        <source>Output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"53\"/>\n        <source>System default (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"62\"/>\n        <source>Translations are very likely to be incomplete.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MainWindow</name>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"108\"/>\n        <source>Add fave</source>\n        <translation>Adicionar un favorito</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"110\"/>\n        <source>Reset parameters to default values</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"113\"/>\n        <source>Randomize parameters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"119\"/>\n        <source>Copy G&apos;MIC command to clipboard</source>\n        <translation>Copiar el comando G&apos;MIC al portapapeles</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"126\"/>\n        <source>Rename fave</source>\n        <translation>Renombrar un favorito</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"128\"/>\n        <source>Remove fave</source>\n        <translation>Eliminar un favorito</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"132\"/>\n        <source>Expand/Collapse all</source>\n        <translation>Expandir/Colapsar todos</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"134\"/>\n        <source>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandy University (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</source>\n        <translation>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Universidad de Normandía (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"141\"/>\n        <source>Selection mode</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"180\"/>\n        <source>Update filters</source>\n        <translation>Actualizar filtros</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"232\"/>\n        <source>Manage visible tags\n(Right-click on a fave or a filter to set/remove tags)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"238\"/>\n        <source>Force &amp;quit</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"242\"/>\n        <source>Full</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"243\"/>\n        <source>Forward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"244\"/>\n        <source>Forward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"245\"/>\n        <source>Backward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"246\"/>\n        <source>Backward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"247\"/>\n        <source>Duplicate Top</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"248\"/>\n        <source>Duplicate Left</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"249\"/>\n        <source>Duplicate Bottom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"250\"/>\n        <source>Duplicate Right</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"251\"/>\n        <source>Duplicate Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"252\"/>\n        <source>Duplicate Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"253\"/>\n        <source>Checkered</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"254\"/>\n        <source>Checkered Inverse</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <source>Update completed</source>\n        <translation>Actualización completa</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"378\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"509\"/>\n        <source>Filter definitions have been updated.</source>\n        <translation>Las definiciones de filtros han sido actualizadas.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"381\"/>\n        <source>No download was needed.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"427\"/>\n        <source>Plugin was called with a filter path with no matching filter:\n\nPath: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"435\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"462\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"448\"/>\n        <source>Plugin was called with a command that cannot be recognized as a filter:\n\nCommand: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"927\"/>\n        <source>[Elapsed time: %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"443\"/>\n        <source>Plugin was called with a command that cannot be parsed:\n\n%1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"452\"/>\n        <source>Plugin was called with a command that does not match the provided path:\n\nPath: %1\nCommand: %2\nCommand found for this path : %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"505\"/>\n        <source>Filters update could not be achieved</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"646\"/>\n        <source>The update could not be achieved&lt;br&gt;because of the following errors:&lt;br&gt;</source>\n        <translation>La actualización no ha sido posible&lt;br&gt; debido a los siguientes errores :&lt;br/&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"652\"/>\n        <source>Update error</source>\n        <translation>Error en la actualización</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"859\"/>\n        <source>Error</source>\n        <translation>Error</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1478\"/>\n        <source>Waiting for cancelled jobs...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Import faves</source>\n        <translation>Importar favoritos</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Do you want to import faves from file below?&lt;br/&gt;%1</source>\n        <translation>¿Quieres importar favoritos del archivo de abajo?&lt;br/&gt;%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1335\"/>\n        <source>Don&apos;t ask again</source>\n        <translation>No volver a preguntar</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>Confirmation</source>\n        <translation>Confirmar</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>A gmic command is running.&lt;br&gt;Do you really want to close the plugin?</source>\n        <translation>Se está ejecutando un comando de gmic.&lt;br&gt;¿Seguro que quieres cerrar el plugin?</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/MultilineTextParameterWidget.cpp\" line=\"41\"/>\n        <source>Ctrl+Return</source>\n        <translation>Ctrl+Enter</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"50\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"53\"/>\n        <source>Abort</source>\n        <translation>Abortar</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"126\"/>\n        <source>[Processing 88:00:00.888 | 888.9 GiB]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"128\"/>\n        <source>[Processing 88:00:00.888]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"160\"/>\n        <source>Updating filters...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"213\"/>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"221\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Procesando %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"223\"/>\n        <source>[Processing %1]</source>\n        <translation>[Procesando %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"49\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"141\"/>\n        <source>%1 seconds</source>\n        <translation>%1 segundos</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"151\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Procesando %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"153\"/>\n        <source>[Processing %1]</source>\n        <translation>[Procesando %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SearchFieldWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"80\"/>\n        <source>Search</source>\n        <translation>Buscar</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"81\"/>\n        <source>Search in filters list (%1)</source>\n        <translation>Buscar en la lista de filtros (%1)</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SourcesWidget</name>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"58\"/>\n        <source>Move source up</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"60\"/>\n        <source>Move source down</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"62\"/>\n        <source>Add local file (dialog)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"64\"/>\n        <source>Reset filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"80\"/>\n        <source>Macros: $HOME %USERPROFILE% $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"102\"/>\n        <source>Environment variables (e.g. %USERPROFILE% or %HOMEDIR%) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"82\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"53\"/>\n        <source>Remove source (Delete)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"85\"/>\n        <source>Disable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"86\"/>\n        <source>Enable without updates</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"87\"/>\n        <source>Enable with updates (recommended)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"106\"/>\n        <source>Environment variables (e.g. $HOME or ${HOME} for your home directory) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"111\"/>\n        <source>New source</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"192\"/>\n        <source>Select a file</source>\n        <translation type=\"unfinished\">Seleccionar un archivo</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::Updater</name>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"137\"/>\n        <source>Error downloading %1 (empty file?)</source>\n        <translation>Error al descargar %1 (archivo vacío?)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"146\"/>\n        <source>Could not read/decompress %1</source>\n        <translation>Impossible de leer/descomprimir %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"151\"/>\n        <source>Error writing file %1</source>\n        <translation>Error al escribir el archivo %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"168\"/>\n        <source>Error downloading %1&lt;br/&gt;Error %2: %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"204\"/>\n        <source>Download timeout: %1</source>\n        <translation>Descarga anulada (tiempo límite) : %1</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::VisibleTagSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"55\"/>\n        <source>Show All Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"59\"/>\n        <source>Show %1 Tags</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"54\"/>\n        <source>Zoom in</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"55\"/>\n        <source>Zoom out</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"56\"/>\n        <source>Reset zoom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"155\"/>\n        <source>Warning: Preview may be inaccurate (zoom factor has been modified)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>HeadlessProgressDialog</name>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Diálogo</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"68\"/>\n        <source>Cancel</source>\n        <translation>Cancelar</translation>\n    </message>\n</context>\n<context>\n    <name>InOutPanel</name>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"40\"/>\n        <source>Input / Output</source>\n        <translation>Entrada / Salida</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"47\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"92\"/>\n        <source>Input layers</source>\n        <translation>Capas de entrada</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"115\"/>\n        <source>Output mode</source>\n        <translation>Modo de salida</translation>\n    </message>\n</context>\n<context>\n    <name>JpegQualityDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation type=\"unfinished\">Diálogo</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"20\"/>\n        <location filename=\"../src/Host/None/JpegQualityDialog.cpp\" line=\"13\"/>\n        <source>JPEG Quality</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"28\"/>\n        <source>0</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"42\"/>\n        <source>100</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"60\"/>\n        <source>Always use this quality for this execution of G&apos;MIC-Qt</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"85\"/>\n        <source>&amp;Cancel</source>\n        <translation type=\"unfinished\">&amp;Cancelar</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"92\"/>\n        <source>&amp;Ok</source>\n        <translation type=\"unfinished\">&amp;Aceptar</translation>\n    </message>\n</context>\n<context>\n    <name>LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"35\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation>&lt;i&gt;(Reinicio necesario)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"48\"/>\n        <source>Translate filters (WIP)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"18\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"176\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Download filter definitions from remote sources&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Descargar las definiciones del filtro de fuentes remotas&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"179\"/>\n        <source>Internet</source>\n        <translation>Internet</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"418\"/>\n        <source>Preview type (Ctrl+Shift+P)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"509\"/>\n        <source>&amp;Settings...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"525\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"532\"/>\n        <source>TextLabel</source>\n        <translation>Etiqueta de Texto</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"248\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"255\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"262\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation type=\"unfinished\">Ventana Principal</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"408\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable/disable preview&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(right click on preview image for instant swapping)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"411\"/>\n        <source>Preview</source>\n        <translation>Previsualización</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"558\"/>\n        <source>&amp;Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"571\"/>\n        <source>&amp;Cancel</source>\n        <translation>&amp;Cancelar</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"545\"/>\n        <source>&amp;Fullscreen</source>\n        <translation>&amp;Pantalla completa</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"584\"/>\n        <source>&amp;Apply</source>\n        <translation>&amp;Aplicar</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"597\"/>\n        <source>&amp;OK</source>\n        <translation>&amp;Aceptar</translation>\n    </message>\n</context>\n<context>\n    <name>MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"29\"/>\n        <source>Update</source>\n        <translation>Actualizar</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"48\"/>\n        <source>Abort</source>\n        <translation>Abortar</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"55\"/>\n        <source>TextLabel</source>\n        <translation>Etiqueta de texto</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>Ventana Principal</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"30\"/>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"50\"/>\n        <source>TextLabel</source>\n        <translation>Etiqueta de Texto</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"72\"/>\n        <source>Cancel</source>\n        <translation>Cancelar</translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"76\"/>\n        <source>Select an image to open...</source>\n        <translation>Seleccionar una imagen para abrir...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Error</source>\n        <translation>Error</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Could not open file.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"88\"/>\n        <source>Default image</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"81\"/>\n        <source>Visible</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"107\"/>\n        <source>Available filters (%1)</source>\n        <translation>Filtros disponibles (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"151\"/>\n        <source>%1 Tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"157\"/>\n        <source>None</source>\n        <translation type=\"unfinished\">Ninguna</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"158\"/>\n        <source>Red</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"159\"/>\n        <source>Green</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"160\"/>\n        <source>Blue</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"161\"/>\n        <source>Cyan</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"162\"/>\n        <source>Magenta</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"163\"/>\n        <source>Yellow</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"127\"/>\n        <source>Could not install translator for file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"130\"/>\n        <source>Could not load translation file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"337\"/>\n        <source>List %1 cannot be merged considering these runs: %2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"432\"/>\n        <source>%1 GiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"434\"/>\n        <source>%1 MiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"436\"/>\n        <source>%1 KiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"438\"/>\n        <source>%1 B</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>SearchFieldWidget</name>\n    <message>\n        <location filename=\"../ui/SearchFieldWidget.ui\" line=\"20\"/>\n        <source>Frame</source>\n        <translation>Marco</translation>\n    </message>\n</context>\n<context>\n    <name>SourcesWidget</name>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\">GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"136\"/>\n        <source>Official filters:</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"22\"/>\n        <source>File / URL</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"32\"/>\n        <source>Add new</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"39\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"55\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"62\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"85\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"92\"/>\n        <source>...</source>\n        <translation type=\"unfinished\">...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"118\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../ui/zoomlevelselector.ui\" line=\"20\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"73\"/>\n        <source>G&apos;MIC-Qt filter output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"84\"/>\n        <source>Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"87\"/>\n        <source>Save as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"122\"/>\n        <source>%1 file (*.%2 *.%3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"148\"/>\n        <source>Save image as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageView</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\">Error</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Could not write image file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "translations/filters/HOWTO.md",
    "content": "# G'MIC-Qt: Contribute to filters translation\n\nWe describe here the steps you should follow\nif you want to help with the *Italian* translation of the filters\n(names, parameters, etc.).\n\n## Step 1: Edit the `it.csv` file\n\n* The `.csv` files are located in the\n[translations/filters](https://github.com/c-koi/gmic-qt/tree/master/translations/filters)\nfolder.\n\n* They contain only automatic translations for now (except for French and Chinese).\nTherefore they really need some editing!\n\n* Editing can be done using a simple text editor.\n\n* The CSV file contains up to 3 columns :\n\n```txt\nOriginal text , Translation [, Filter name] \n```\n \nFilter name may be used to disambiguate the translation by providing a context.\n\n## Step 2: Enable the language in `translations/filters/Makefile`\n\n* Edit the `Makefile` to add the `.qm` file to the list.\n\n```txt\n QM = fr.qm zh.qm it.qm\n```\n\n* In the `translations/filters` folder, run make:\n\n```shell\n$ make\n```\n\n* Check that this indeed produced the file `it.qm`.\n\n## Step 3: Test it!\n* If not already there, add your `it.qm` file in the *work in progress* set of translations.\n For this, add a line in the file `wip_translations.qrc` in the root folder.\n\n```xml\n<RCC>\n    <qresource prefix=\"/\">\n       <file>translations/filters/fr.qm</file>\n       <file>translations/filters/zh.qm</file>\n       <file>translations/filters/it.qm</file>\n    </qresource>\n</RCC>\n```\n* Caution : you need to check \"Translate filters (WIP)\" in the settings dialog.\nAs a WIP, it is disabled by default.\n\n## Step 4: Submit a Pull Request\n\n* Your PR should only include the `it.csv`, the `Makefile`, and the updated\n `wip_translations.qrc`."
  },
  {
    "path": "translations/filters/csv2ts.sh",
    "content": "#!/usr/bin/env bash\nfunction usage()\n{\n  cat <<EOF\nUsage:\n       `basename $0` -o output.ts file.csv\n\nEOF\n  exit 0\n}\n\noutput=/dev/stdout\nwhile getopts o: opt ; do\n  case $opt in\n    o) output=$OPTARG ;;\n    *) die \"Command line parsing failed\"\n  esac\ndone\n\nn=$(( OPTIND - 1  ))\nwhile [[ $n -gt 0 ]]; do\n  shift\n  n=$((n - 1))\ndone\n\nfunction die()\n{\n  local message=\"$@\"\n  >&2 echo \"$message\"\n  exit 1\n}\n\nfunction requires()\n{\n  type \"$1\" >& /dev/null || die \"Command '$1' not found.\"\n}\n\nrequires sed\n\ninput=\"$1\"\n[[ -z \"$input\" ]] && usage\n[[ ! -e \"$input\" ]] && die \"File not found: $input\"\n[[ ! $input =~ .*\\.csv$  ]] && die \"Not a csv file: $input\"\n\nif [[ $input =~ gmic_qt.*\\.csv ]]; then\n  language=${input%%.csv}\n  language=${language##*_}\nelse\n  language=${input%%.csv}\n  language=${language%%_*}\nfi\n\ncat <<EOF > $output\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"${language}\">\n<context>\n  <name>FilterTextTranslator</name>\nEOF\n\n# @param name\n# @param text\nfunction xml_tag()\n{\n  local name=\"$1\"\n  local text=\"$2\"\n  text=${text//&/\\&amp;}\n  text=${text//\\\"/\\&quot;}\n  text=${text//\\'/\\&apos;}\n  text=${text//</\\&lt;}\n  text=${text//>/\\&gt;}\n  text=${text# }\n  echo \"      <${name}>${text}</$name>\"\n}\n\n# @param source\n# @param translation\n# @param comment (optionnal)\nfunction message()\n{\n  local source=\"$1\"\n  local translation=\"$2\"\n  local comment=\"$3\"\n  echo -e \"\\n    <message>\"\n  xml_tag source \"$source\"\n  [[ -n \"$comment\" ]] && xml_tag comment \"$comment\"\n  xml_tag translation \"$translation\"\n  echo \"    </message>\"\n}\n\nwhile IFS=$'\\t' read -r -a columns ; do\n  count=${#columns[@]}\n  if (( count > 2 )); then\n    i=2\n    while (( i < count )); do\n      message \"${columns[0]}\" \"${columns[1]}\" \"${columns[$i]}\"  >> $output\n      i=$((i+1))\n    done\n  elif (( count == 2 )); then\n    message \"${columns[0]}\" \"${columns[1]}\" >> $output\n  fi\ndone < <(sed -e 's/ , /\\t/g' \"$input\")\n\ncat <<EOF >> $output\n\n</context>\n</TS>\nEOF\n"
  },
  {
    "path": "translations/filters/gmic_qt_de.csv",
    "content": "<b>Arrays & Tiles</b> , <b>Arrays und Kacheln</b>\n<b>Artistic</b> , <b>Künstlerisch</b>\n<b>Black & White</b> , <b>Schwarz-Weiß</b>\n<b>Colors</b> , <b>Farben</b>\n<b>Contours</b> , <b>Konturen</b>\n<b>Deformations</b> , <b>Verformungen</b>\n<b>Degradations</b> , <b>Degradierungen</b>\n<b>Details</b> , <b>Einzelheiten</b>\n<b>Testing</b> , <b>Prüfung</b>\n<b>Frames</b> , <b>Rahmen</b>\n<b>Frequencies</b> , <b>Frequenzen</b>\n<b>Layers</b> , <b>Schichten</b>\n<b>Lights & Shadows</b> , <b>Lichter & Schatten</b>\n<b>Patterns</b> , <b>Muster</b>\n<b>Rendering</b> , <b>Rendering</b>\n<b>Repair</b> , <b>Reparatur</b>\n<b>Sequences</b> , <b>Sequenzen</b>\n<b>Silhouettes</b> , <b>Silhouetten</b>\n<b>Icons</b> , <b>Ikonen</b>\n<b>Misc</b> , <b>Sonstiges</b>\n<b>Nature</b> , <b>Natur</b>\n<b>Others</b> , <b>Andere</b>\n<b>Stereoscopic 3D</b> , <b>Stereoskopisches 3D</b>\n&#9829; Support Us ! &#9829; , ♥ Unterstützen Sie uns! ♥\n*Colors Doping , *Farben Doping\n*Colors Doping* , *Farben Doping*\n*Dark Edges* , *Dunkle Ränder*\n*Dark Screen* , *Dunkeler Bildschirm*\n*Graphix Colors , *Graphix-Farben\n*Vivid Edges* , *Leidende Kanten*\n*Vivid Screen* , *Lebendiger Bildschirm*\n+180 Deg. , +180 Grad.\n- NO - , - NEIN -\n-1. Value Action , -1. Wert Aktion\n-2. Overall Channel(s) , -2. Kanal(e) insgesamt\n-3. Normalisation Channel(s) , -3. Normalisierung Kanal(e)\n-4. Normalise , -4. normalisieren.\n0 Deg. , 0 Grad.\n0.  Recompute , 0. erneut berechnen\n1 Levels , 1 Ebenen\n1.  Plasma Texture [Discards Input Image] , 1. Plasma-Textur [Verwirft Eingabebild]\n10.  Quadtree Max Precision , 10. Quadtree Max Präzision\n10th , 10.\n10th Color , 10. Farbe\n11.  Quadtree Min Homogeneity , 11. Quadtree Min Homogenität\n11th , 11.\n12 Colors , 12 Farben\n12 Grays , 12 Grautöne\n12.  Quadtree Max Homogeneity , 12. Quadtree Max Homogenität\n125 Keypoints , 125 Schlüsselpunkte\n12th , 12.\n13. Noise Type , 13. Art der Geräusche\n13th , 13.\n14. Minimum Noise , 14. Minimaler Lärm\n14th , 14.\n15. Maximum Noise , 15. Maximaler Lärm\n15th , 15.\n16 Colors , 16 Farben\n16 Grays , 16 Grautöne\n16. Noise Channel(s) , 16. Lärm-Kanal(e)\n16th , 16.\n17. Warp Iterations , 17. Warp-Iterationen\n18. Warp Intensity , 18. Warp-Intensität\n180 Deg. , 180 Grad.\n19. Warp Offset , 19. Kettversatz\n1st , 1.\n1st Additional Palette (.Gpl) , 1. zusätzliche Palette (.Gpl)\n1st Color , 1. Farbe\n1st Parameter , 1. Parameter\n1st Text , 1. Text\n1st Tone , 1. Ton\n1st Variance , 1. Abweichung\n1st X-Coord , 1. X-Kordel\n1st Y-Coord , 1. Y-Schnur\n2 Colors , 2 Farben\n2 Grays , 2 Grautöne\n2 Noise , 2 Lärm\n2-Strip Process , 2-Streifen-Verfahren\n2.  Plasma Scale , 2. Plasma-Skala\n20. Scale to Width , 20. Auf Breite skalieren\n21. Scale to Height , 21. Auf Höhe skalieren\n216 Keypoints , 216 Schlüsselpunkte\n22. Correlated Channels , 22. Korrelierte Kanäle\n22.5 Deg. , 22,5 Grad.\n23. Boundary , 23. Grenze\n24. Warp Channel(s) , 24. Warp-Kanal(e)\n25. Random Negation , 25. Zufällige Verneinung\n26. Random Negation Channel(s) , 26. Zufällige(r) Negationskanal(e)\n27 Keypoints , 27 Schlüsselpunkte\n27. Gamma Offset , 27. Gamma-Versatz\n270 Deg. , 270 Grad.\n28. Hue Offset , 28. Farbton-Versatz\n29. Normalise , 29. normalisieren.\n2nd , 2.\n2nd Additional Palette (.Gpl) , 2. zusätzliche Palette (.Gpl)\n2nd Color , 2. Farbe\n2nd Parameter , 2. Parameter\n2nd Text , 2. Text\n2nd Tone , 2. Ton\n2nd Variance , 2. Abweichung\n2nd X-Coord , 2. X-Kordel\n2nd Y-Coord , 2. Y-Schnur\n2x Type , 2x Typ\n2XY Mirror , 2XY-Spiegel\n2xy-Axes , 2xy-Achsen\n3 Colors , 3 Farben\n3 Grays , 3 Grautöne\n3 Mix , 3 Mischung\n3.  Plasma Alpha Channel , 3. Plasma-Alpha-Kanal\n30. Minimum Hue , 30. Minimaler Farbton\n31. Maximum Hue , 31. Maximaler Farbton\n32. Minimum Saturation , 32. Minimale Sättigung\n33. Maximum Saturation , 33. Maximale Sättigung\n34. Minimum Value , 34. Minimaler Wert\n343 Keypoints , 343 Schlüsselpunkte\n35. Maximum Value , 35. Maximaler Wert\n36. Hue Offset , 36. Farbton-Versatz\n37. Saturation Offset , 37. Sättigungs-Offset\n38. Value Offset , 38. Wert Offset\n3D Blocks , 3D-Blöcke\n3D CLUT (Fast) , 3D-CLUT (schnell)\n3D CLUT (Precise) , 3D-KLUG (Präzise)\n3D Colored Object , Farbiges 3D-Objekt\n3D Conversion , 3D-Konvertierung\n3D Elevation , 3D-Erhöhung\n3D Elevation [Animated] , 3D-Erhöhung [animiert]\n3D Extrusion , 3D-Extrusion\n3D Extrusion [Animated] , 3D-Extrusion [animiert]\n3D Image Object , 3D-Bildobjekt\n3D Image Object [Animated] , 3D-Bildobjekt [animiert]\n3D Image Type , 3D-Bildtyp\n3D Lathing , 3D-Drehen\n3D Metaballs , 3D-Metabälle\n3D Random Objects , Zufällige 3D-Objekte\n3D Reflection , 3D-Reflexion\n3D Rubber Object , 3D-Gummi-Objekt\n3D Starfield , 3D-Sternenfeld\n3D Text Pointcloud , 3D-Text-Punktwolke\n3D Tiles , 3D-Kacheln\n3D Video Conversion , 3D-Video-Konvertierung\n3D Waves , 3D-Wellen\n3rd , 3.\n3rd Color , 3. Farbe\n3rd Parameter , 3. Parameter\n3rd Tone , 3. Ton\n3rd X-Coord , 3. X-Kordel\n3rd Y-Coord , 3. Y-Schnur\n4 Colors , 4 Farben\n4 Grays , 4 Grautöne\n4.  Segmentation [No Alpha Channel] , 4. Segmentierung [Kein Alphakanal]\n4096x4096 Layer , 4096x4096 Ebene\n4th , 4.\n4th Color , 4. Farbe\n4th Tone , 4. Ton\n5.  Edge Threshold , 5. Randschwelle\n512x512 Layer , 512x512 Schicht\n5th , 5.\n5th Color , 5. Farbe\n5th Tone , 5. Ton\n6.  Smoothness , 6. Geschmeidigkeit\n60's (faded Alt) , 60er Jahre (verblasstes Alt)\n60's (faded) , 60er Jahre (verblasst)\n64 (Faster) , 64 (Schneller)\n64 Keypoints , 64 Schlüsselpunkte\n67.5 Deg. , 67,5 Grad.\n6th , 6.\n6th Color , 6. Farbe\n6th Tone , 6. Ton\n7.  Blur , 7. Unschärfe\n7th , 7.\n7th Color , 7. Farbe\n7th Tone , 7. Ton\n8 Colors , 8 Farben\n8 Grays , 8 Grautöne\n8 Keypoints (RGB Corners) , 8 Schlüsselpunkte (RGB-Ecken)\n8.  Quadtree Pixelisation [No Alpha Channel] , 8. Quadtree Pixelisierung [Kein Alphakanal]\n8th , 8.\n8th Color , 8. Farbe\n8th Tone , 8. Ton\n9.  Quadtree Min Precision , 9. Quadtree Min Präzision\n90 Deg. , 90 Grad.\n9th , 9.\n9th Color , 9. Farbe\nA Lot of Cyan , Viel Cyan\nA Lot of Key , Eine Menge Schlüssel\nA Lot of Magenta , Viel Magenta\nA Lot of Yellow , Viel Gelb\nA-Color Factor , A-Farb-Faktor\nA-Color Shift , A-Farben-Verschiebung\nA-Color Smoothness , A-Farbe Glätte\nA-Component , A-Komponente\nA-Value , A-Wert\nA4 / 100 PPI (Recommended) , A4 / 100 PPI (empfohlen)\nAbout G'MIC , Über G'MIC\nAbsolute Brightness , Absolute Helligkeit\nAbsolute Value , Absoluter Wert\nAbstraction , Abstraktion\nAcceleration , Beschleunigung\nAchromatomaly , Achromatomie\nAchromatopsia , Achromatopsie\nAcros , Akros\nAcros+G , Akros+G\nAcros+R , Akros+R\nAcros+Ye , Akros+Ja\nAction , Aktion\nAction #1 , Aktion #1\nAction #10 , Aktion #10\nAction #11 , Aktion #11\nAction #12 , Aktion #12\nAction #13 , Aktion Nr. 13\nAction #14 , Aktion #14\nAction #15 , Aktion #15\nAction #16 , Aktion #16\nAction #17 , Aktion #17\nAction #18 , Aktion Nr. 18\nAction #19 , Aktion Nr. 19\nAction #2 , Aktion #2\nAction #20 , Aktion #20\nAction #21 , Aktion #21\nAction #22 , Aktion #22\nAction #23 , Aktion #23\nAction #24 , Aktion #24\nAction #3 , Aktion #3\nAction #4 , Aktion #4\nAction #5 , Aktion #5\nAction #6 , Aktion #6\nAction #7 , Aktion Nr. 7\nAction #8 , Aktion Nr. 8\nAction #9 , Aktion #9\nAction Magenta 01 , Aktion Magenta 01\nAction Red 01 , Aktion Rot 01\nActivate 'Pencil Smoother' , Aktivieren Sie 'Bleistiftglätter'.\nActivate Color Enhancement , Farbverbesserung aktivieren\nActivate Colors Geometric Shapes , Aktivieren von Farben Geometrische Formen\nActivate Custom Filter , Benutzerdefinierten Filter aktivieren\nActivate Lizards , Echsen aktivieren\nActivate Mirror , Spiegelung aktivieren\nActivate Pink Elephants , Rosa Elefanten aktivieren\nActivate Second Direction , Zweite Richtung aktivieren\nActivate Shakes , Schütteln aktivieren\nActivate Slice 1 , Aktivieren von Slice 1\nActivate Slice 2 , Aktivieren von Slice 2\nActivate Slice 3 , Aktivieren Sie Slice 3\nActivate Slice 4 , Aktivieren von Slice 4\nActiver Symmetrizoscope , Aktives Symmetrizoskop\nAdaptive , Anpassungsfähig\nAdd , hinzufügen\nAdd 1px Outline , 1px Gliederung hinzufügen\nAdd Alpha Channels to Detail Scale Layers , Hinzufügen von Alphakanälen zu Detailskalierungsebenen\nAdd as a New Layer , Als neue Ebene hinzufügen\nAdd Chalk Highlights , Kreide-Highlights hinzufügen\nAdd Color Background , Farbhintergrund hinzufügen\nAdd Comment Area in HTML Page , Kommentarfeld in HTML-Seite hinzufügen\nAdd Grain , Korn hinzufügen\nAdd Image Label , Bildbeschriftung hinzufügen\nAdd Painter's Touch , Painter's Touch hinzufügen\nAdd User-Defined Constraints (Interactive) , Benutzerdefinierte Einschränkungen hinzufügen (interaktiv)\nAdditional Duplicates Count , Zählung zusätzlicher Duplikate\nAdditional Outline , Zusätzliche Gliederung\nAdditive , Zusatzstoff\nAdjust Background Reconstruction , Hintergrund-Rekonstruktion anpassen\nAdventure 1453 , Abenteuer 1453\nAgfa Ultra Color 100 , Agfa Ultra Farbe 100\nAggresive , Aggressiv\nAggressive Highlights Recovery 5 , Aggressive Highlights Erholung 5\nAlgorithm , Algorithmus\nAlien Green , Ausländisches Grün\nAlign Image Streams , Ausrichten von Bildströmen\nAlign Layers , Ebenen ausrichten\nAligned , Ausgerichtet\nAlignment Type , Ausrichtungstyp\nAll , Alle\nAll 45° Rotations , Alle 45° Rotationen\nAll 90° Rotations , Alle 90° Rotationen\nAll [Collage] , Alle [Collage]\nAll but Reference Color , Alle außer Referenzfarbe\nAll Layers and Masks , Alle Ebenen und Masken\nAll Tones , Alle Töne\nAll XY-Flips , Alle XY-Flips\nAllow Angle , Winkel zulassen\nAllow Outer Blending , Äußere Vermischung zulassen\nAllow Self Intersections , Selbstüberschneidungen zulassen\nAlpha Channel , Alphakanal\nAlpha Mode , Alpha-Modus\nAlso Match Gradients , Auch Übereinstimmungsgradienten\nAmbient (%) , Umgebung (%)\nAmbient Lightness , Umgebungshelligkeit\nAmount , Betrag\nAmplitude / Angle , Amplitude / Winkel\nAnaglypgh Green/magenta Optimized , Anaglypgh Grün/Magenta Optimiert\nAnaglyph Blue/yellow , Anaglyphen Blau/Gelb\nAnaglyph Blue/yellow Optimized , Anaglyphen Blau/Gelb Optimiert\nAnaglyph Glasses Adjustment , Anpassung der Anaglyphenbrille\nAnaglyph Green/magenta , Anaglyphe Grün/Magenta\nAnaglyph Green/magenta Optimized , Anaglyph Grün/Magenta Optimiert\nAnaglyph Reconstruction , Anaglyphen-Wiederaufbau\nAnaglyph Red/cyan , Anaglyphen Rot/Cyan\nAnaglyph Red/cyan Optimized , Anaglyphen Rot/Cyan Optimiert\nAnaglyph: Red/Cyan , Anaglyphen: Rot/Cyan\nAnalogFX - Anno 1870 Color , AnalogFX - Anno 1870 Farbe\nAnalogFX - Old Style I , AnalogFX - Alter Stil I\nAnalogFX - Old Style II , AnalogFX - Alter Stil II\nAnalogFX - Old Style III , AnalogFX - Alter Stil III\nAnalogFX - Sepia Color , AnalogFX - Sepia-Farbe\nAnalogFX - Soft Sepia I , AnalogFX - Weiche Sepia I\nAnalogFX - Soft Sepia II , AnalogFX - Weiche Sepia II\nAnalysis Scale , Analyse-Skala\nAnalysis Smoothness , Analyse-Glätte\nAnd , Und\nAngle , Winkel\nAngle (%) , Winkel (%)\nAngle (deg) , Winkel (Grad)\nAngle (deg.) , Winkel (Grad)\nAngle / Size , Winkel / Größe\nAngle Cut , Winkel-Schnitt\nAngle Dispersion , Winkel-Dispersion\nAngle Image Contour , Winkel Bildkontur\nAngle of Disturbance Surface , Winkel der Störungsfläche\nAngle of Main Nebulous Surface , Winkel der nebulösen Hauptfläche\nAngle Range , Winkelbereich\nAngle Range (deg.) , Winkelbereich (Grad)\nAngle Tilt , Winkel Neigung\nAngle Variations , Winkel-Variationen\nAnguish , Qualen\nAngular , Winkelig\nAngular Precision , Winkel-Präzision\nAngular Tiles , Eckige Kacheln\nAnisotropic , Anisotrop\nAnisotropy , Anisotropie\nAnnular Steiner Chain Round Tiles , Ringförmige Steiner-Ketten-Rundplatten\nAnti Alias , Anti-Alias\nAntisymmetry , Antisymmetrie\nAny , Jede\nApocalypse This Very Moment , Die Apokalypse in diesem Augenblick\nApples , Äpfel\nApply Adjustments On , Anpassungen anwenden auf\nApply Color Balance , Farbbalance anwenden\nApply External CLUT , Externen CLUT anwenden\nApply Mask , Maske anwenden\nApply Skin Tone Mask , Hauttonmaske anwenden\nApply Transformation From , Transformation anwenden von\nAqua and Orange Dark , Aqua und Orange Dunkel\nArea , Bereich\nArea Smoothness , Flächenglätte\nAreas Light Adjustment , Einstellung der Flächenbeleuchtung\nAreas Smoothness , Bereiche Glätte\nArray [Faded] , Array [Verblasst]\nArray [Mirrored] , Array [Gespiegelt]\nArray [Random Colors] , Array [Zufallsfarben]\nArray [Random] , Array [Zufällig]\nArray [Regular] , Array [Regulär]\nArray Mode , Array-Modus\nArrows , Pfeile\nArrows (Outline) , Pfeile (Umriss)\nArtistic  Modern , Künstlerische Moderne\nArtistic Hard , Künstlerisch hart\nArtistic Round , Künstlerische Runde\nAscii Art , Ascii-Kunst\nAspect , Aspekt\nAspect Ratio , Seitenverhältnis\nAssociated Color , Zugehörige Farbe\nAttenuation , Dämpfung\nAustralia , Australien\nAuto Balance , Automatischer Abgleich\nAuto Crop , Automatischer Zuschnitt\nAuto Reduce Level (Level Slider Is Disabled) , Automatisches Reduzieren des Pegels (Pegelschieber ist deaktiviert)\nAuto Set Hue Inverse (Hue Slider Is Disabled) , Farbton automatisch invers einstellen (Farbton-Schieberegler ist deaktiviert)\nAuto-Clean Bottom Color Layer , Automatische Reinigung der unteren Farbebene\nAuto-Reduce Number of Frames , Auto-Reduzierung der Anzahl von Frames\nAuto-Set Periodicity , Automatisch eingestellte Periodizität\nAuto-Threshold , Auto-Schwellenwert\nAutocrop Output Layers , Autocrop-Ausgabe-Ebenen\nAutomatic , Automatisch\nAutomatic & Contrast Mask , Automatik & Kontrastmaske\nAutomatic [Scan All Hues] , Automatisch [Alle Farbtöne scannen]\nAutomatic Color Balance , Automatische Farbbalance\nAutomatic Depth Estimation , Automatische Schätzung der Tiefe\nAutomatic Upscale for Optimum Results , Automatische Hochskalierung für optimale Ergebnisse\nAutumn , Herbst\nAvalanche , Lawine\nAverage , Durchschnitt\nAverage 3x3 , Durchschnittlich 3x3\nAverage 5x5 , Durchschnittlich 5x5\nAverage 7x7 , Durchschnittlich 7x7\nAverage 9x9 , Durchschnittlich 9x9\nAverage RGB , Durchschnittliches RGB\nAverage Smoothness , Durchschnittliche Glätte\nAvg / Max Weight , Avg / Maximales Gewicht\nAvg Branching , Avg Verzweigung\nAvg Left Angle (deg.) , Avg Linker Winkel (Grad)\nAvg Length Factor (%) , Avg-Längenfaktor (%)\nAvg Right Angle (deg.) , Avg Rechter Winkel (deg.)\nAvg Thickness Factor (%) , Avg-Dicke-Faktor (%)\nAxis , Achse\nAzimuth , Azimut\nB&W , SCHWARZ-WEISS\nB&W Pencil [Animated] , B&W-Bleistift [animiert]\nB&W Photograph , Schwarzweiß-Fotografie\nB&W Stencil , S/W-Schablone\nB&W Stencil [Animated] , Schwarzweiß-Schablone [animiert]\nB-Color Factor , B-Farb-Faktor\nB-Color Shift , B-Farbverschiebung\nB-Color Smoothness , B-Farbe Glätte\nB-Component , B-Komponente\nBackground , Hintergrund\nBackground Color , Hintergrundfarbe\nBackground Intensity , Hintergrund-Intensität\nBackground Point (%) , Hintergrundpunkt (%)\nBackward , Rückwärts\nBackward Horizontal , Horizontal rückwärts\nBackward Vertical , Vertikal rückwärts\nBalance , Bilanz\nBalance Color , Balance-Farbe\nBalance SRGB , Bilanz SRGB\nBalloons , Luftballons\nBalls , Bälle\nBand Width , Bandbreite\nBandwidth , Bandbreite\nBarbed Wire , Stacheldraht\nBarnsley Fern , Gerstenfarn\nBars , Stäbe\nBase Reference Dimension , Basis-Referenzmaß\nBase Scale , Basis-Skala\nBase Thickness (%) , Dicke der Basis (%)\nBasic Adjustments , Grundlegende Anpassungen\nBatch Processing , Batch-Verarbeitung\nBayer Filter , Bayer-Filter\nBayer Reconstruction , Bayer-Wiederaufbau\nBehind , Hinter\nBelow , Unten\nBerlin Sky , Berliner Himmel\nBest Match , Beste Übereinstimmung\nBG Textured , BG Texturiert\nBi-Directional , Bidirektional\nBias , Voreingenommenheit\nBicubic , Bikubisch\nBidirectional [Sharp] , Bidirektional [Scharf]\nBidirectional [Smooth] , Bidirektional [Glatt]\nBidirectional Rendering , Bidirektionales Rendering\nBilateral Radius , Bilateraler Radius\nBinary , Binär\nBinary Digits , Binärziffern\nBit Masking (End) , Bit-Maskierung (Ende)\nBit Masking (Start) , Bit-Maskierung (Start)\nBlack , Schwarz\nBlack & White , Schwarz-Weiß\nBlack & White (25) , Schwarz-Weiß (25)\nBlack & White-1 , Schwarz-Weiß-1\nBlack & White-10 , Schwarz-Weiß-10\nBlack & White-2 , Schwarz-Weiß-2\nBlack & White-3 , Schwarz-Weiß-3\nBlack & White-4 , Schwarz-Weiß-4\nBlack & White-5 , Schwarz-Weiß-5\nBlack & White-6 , Schwarz-Weiß-6\nBlack & White-7 , Schwarz-Weiß-7\nBlack & White-8 , Schwarz-Weiß-8\nBlack & White-9 , Schwarz-Weiß-9\nBlack Crayon Graffiti , Schwarzstift-Graffiti\nBlack Dices , Schwarze Würfel\nBlack Level , Schwarze Wasserwaage\nBlack on Transparent , Schwarz auf Transparent\nBlack on Transparent White , Schwarz auf transparentem Weiß\nBlack on White , Schwarz auf Weiß\nBlack Point , Schwarzpunkt\nBlack Star , Schwarzer Stern\nBlack to White , Schwarz-Weiß\nBlacks , Schwarze\nBlade Runner , Klingen-Läufer\nBlank , Leere\nBleach Bypass , Bleichmittel-Bypass\nBleach Bypass 1 , Bleichmittel-Bypass 1\nBleach Bypass 2 , Bleichmittel-Bypass 2\nBleach Bypass 3 , Bleichmittel-Bypass 3\nBleach Bypass 4 , Bleichmittel-Bypass 4\nBleech Bypass Green , Bleiche Umgehung Grün\nBleech Bypass Yellow 01 , Bleech Bypass Gelb 01\nBlend , Mischung\nBlend [Average All] , Blend [Durchschnittlich alle]\nBlend [Edges] , Blend [Kanten]\nBlend [Fade] , Blenden [Ausblenden]\nBlend [Median] , Mischung [Median]\nBlend [Seamless] , Blend [Nahtlos]\nBlend [Standard] , Mischung [Standard]\nBlend All Layers , Alle Ebenen ausblenden\nBlend Decay , Verblendungszerfall\nBlend Mode , Blend-Modus\nBlend Rays , Blend-Strahlen\nBlend Scales , Blend-Skalen\nBlend Size , Mischungsgröße\nBlend Threshold , Blend-Schwelle\nBlending Mode , Blending-Modus\nBlending Size , Mischungsgröße\nBlindness Type , Blindheit Typ\nBlob 1 , Klecks 1\nBlob 1 Color , Blob 1 Farbe\nBlob 10 , Klecks 10\nBlob 10 Color , Blob 10 Farbe\nBlob 11 , Klecks 11\nBlob 11 Color , Blob 11 Farbe\nBlob 12 , Klecks 12\nBlob 12 Color , Blob 12 Farbe\nBlob 2 Color , Blob 2 Farbe\nBlob 3 , Klecks 3\nBlob 3 Color , Blob 3 Farbe\nBlob 4 , Klecks 4\nBlob 4 Color , Blob 4 Farbe\nBlob 5 , Klecks 5\nBlob 5 Color , Blob 5 Farbe\nBlob 6 , Klecks 6\nBlob 6 Color , Blob 6 Farbe\nBlob 7 , Klecks 7\nBlob 7 Color , Blob 7 Farbe\nBlob 8 , Klecks 8\nBlob 8 Color , Blob 8 Farbe\nBlob 9 , Klecks 9\nBlob 9 Color , Blob 9 Farbe\nBlob Size , Blob-Größe\nBlob2 , Klecks2\nBlobs Editor , Blobs-Editor\nBloc , Block\nBloc Size (%) , Blockgröße (%)\nBlockism , Blockismus\nBloom , Blume\nBlue , Blau\nBlue & Red Chrominances , Blaue und rote Chrominanzen\nBlue Chroma Factor , Blauer Chroma-Faktor\nBlue Chroma Shift , Blaue Chroma-Verschiebung\nBlue Chroma Smoothness , Blaue Chroma-Glätte\nBlue Chrominance , Blaue Chrominanz\nBlue Cold Fade , Blau-Kalt-Verblassen\nBlue Dark , Blau-Dunkel\nBlue Factor , Blauer Faktor\nBlue House , Blaues Haus\nBlue Ice , Blaues Eis\nBlue Level , Blaue Stufe\nBlue Mono , Blaue Mono\nBlue Rotations , Blaue Rotationen\nBlue Screen Mode , Blauer Bildschirm-Modus\nBlue Shadows 01 , Blaue Schatten 01\nBlue Shift , Blaue Verschiebung\nBlue Smoothness , Blaue Glätte\nBlue Steel , Blauer Stahl\nBlue Wavelength , Blaue Wellenlänge\nBlue-Green , Blau-Grün\nBlur , Unschärfe\nBlur [Angular] , Unschärfe [Winkel]\nBlur [Bloom] , Unschärfe [Blüte]\nBlur [Depth-Of-Field] , Unschärfe [Tiefenschärfe]\nBlur [Gaussian] , Unschärfe [Gauß]\nBlur [Glow] , Unschärfe [Glühen]\nBlur [Linear] , Unschärfe [Linear]\nBlur [Multidirectional] , Unschärfe [Multidirektional]\nBlur [Radial] , Unschärfe [Radial]\nBlur Alpha , Unschärfe Alpha\nBlur Amount , Unscharfer Betrag\nBlur Amplitude , Unschärfe-Amplitude\nBlur Dodge and Burn Layer , Unscharfes Abwedeln und Brennschicht\nBlur Factor , Unschärfe-Faktor\nBlur Frame , Rahmen verwischen\nBlur Percentage , Unschärfe-Prozentsatz\nBlur Precision , Unschärfe-Präzision\nBlur Shade , Unschärfe\nBlur Standard Deviation , Standardabweichung der Unschärfe\nBlur Strength , Stärke der Unschärfe\nBlur the Mask , Die Maske verwischen\nBoats , Boote\nBoost , Verstärken Sie\nBoost Chromaticity , Verstärkung der Chromatizität\nBoost Contrast , Kontrast verstärken\nBoost Smooth , Glätten verstärken\nBoost Stroke , Schlaganfall verstärken\nBorder Color , Randfarbe\nBorder Opacity , Grenztransparenz\nBorder Outline , Umriss der Grenze\nBorder Smoothness , Glattheit der Grenze\nBorder Thickness (%) , Grenzdicke (%)\nBorder Width , Randbreite\nBoth , Beide\nBottles , Flaschen\nBottom , Unten\nBottom and Left Foreground , Unten und links vorne\nBottom and Right Foreground , Unten und rechts vorne\nBottom and Top Foreground , Unten und oben im Vordergrund\nBottom Layer , Untere Schicht\nBottom Left , Unten links\nBottom Right , Unten rechts\nBottom Size , Untere Größe\nBottom-Left , Unten links\nBottom-Left Vertex (%) , Unterer linker Scheitelpunkt (%)\nBottom-Right , Unten-rechts\nBottom-Right Vertex (%) , Unterer rechter Scheitelpunkt (%)\nBouncing Balls , Aufprallende Bälle\nBoundaries (%) , Grenzen (%)\nBoundary , Grenze\nBoundary Condition , Randbedingung\nBoundary Conditions , Randbedingungen\nBox , Kasten\nBox Fitting , Kasten-Einbau\nBox2x , Kasten2x\nBranches , Zweigstellen\nBraque: Landscape near Antwerp , Braque: Landschaft bei Antwerpen\nBraque: Little Bay at La Ciotat , Braque: Kleine Bucht bei La Ciotat\nBraque: The Mandola , Braque: Die Mandola\nBrighness , Brillianz\nBright , Helle\nBright Green , Leuchtendes Grün\nBright Green 01 , Leuchtendes Grün 01\nBright Length , Hell Länge\nBright Pixels , Helle Pixel\nBright Teal Orange , Leuchtende Krickente Orange\nBright Warm , Hell-Warm\nBrighter , Heller\nBrightness , Helligkeit\nBrightness (%) , Helligkeit (%)\nBristle Size , Größe der Borsten\nBrownish , Bräunlich\nBrushify , Bürsten\nBuilt-in Gray , Eingebaut Grau\nBump Factor , Bump-Faktor\nBump Map , Bump-Map\nBurn , verbrennen\nBurn Blur , Verbrennungsunschärfe\nBurn Strength , Stärke der Verbrennung\nButterfly , Schmetterling\nBy Blue Chrominance , Nach blauer Chrominanz\nBy Blue Component , Nach blauer Komponente\nBy Custom Expression , Nach benutzerdefiniertem Ausdruck\nBy Green Component , Nach grüner Komponente\nBy Iteration , Durch Iteration\nBy Lightness , Durch Leichtigkeit\nBy Luminance , Nach Leuchtdichte\nBy Red Chrominance , Nach Roter Chrominanz\nBy Red Component , Nach roter Komponente\nBy Value , Nach Wert\nCamera Motion Only , Nur Kamerabewegung\nCamera X , Kamera X\nCamera Y , Kamera Y\nCameraman , Kameramann\nCamouflage , Tarnung\nCandle Light , Kerzenlicht\nCanvas , Leinwand\nCanvas Brightness , Helligkeit der Leinwand\nCanvas Color , Leinwandfarbe\nCanvas Darkness , Leinwand-Dunkelheit\nCanvas Texture , Leinwand-Textur\nCar , Auto\nCard Suits , Karten-Anzüge\nCaribe , Karibik\nCartesian Transform , Kartesische Transformation\nCartoon , Zeichentrickfilm\nCartoon [Animated] , Zeichentrickfilm [animiert]\nCat , Katze\nCategory , Kategorie\nCell Size , Größe der Zelle\nCenter , Zentrum\nCenter (%) , Zentrum (%)\nCenter Background , Hintergrund des Zentrums\nCenter Foreground , Zentrum Vordergrund\nCenter Help , Hilfe zum Zentrum\nCenter Size , Größe der Mitte\nCenter Smoothness , Glattheit der Mitte\nCenter X , Zentrum X\nCenter X-Shift , X-Verschiebung zentrieren\nCenter Y , Mitte Y\nCenter Y-Shift , Y-Verschiebung zentrieren\nCentering (%) , Zentrierung (%)\nCentering / Scale , Zentrierung/Skalierung\nCenters Color , Zentren Farbe\nCenters Radius , Zentren Radius\nCentimeter , Zentimeter\nCentral  Perspective Outdoor , Zentralperspektive Außen\nCentral Perspective Indoor , Zentralperspektive Innen\nCentral Perspective Outdoor , Zentralperspektive Außen\nCentre , Zentrum\nChalk It Up , Kreide es ein\nChannel #1 , Kanal 1\nChannel #2 , Kanal 2\nChannel #3 , Kanal #3\nChannel Processing , Kanal-Verarbeitung\nChannel(s) , Kanal(e)\nChannels , Kanäle\nChannels to Layers , Kanäle zu Ebenen\nCharcoal , Holzkohle\nCharset , Zeichensatz\nChebyshev , Tschebyschow\nCheckered , Geprüft\nCheckered Inverse , Geprüfte Inverse\nChemical 168 , Chemikalie 168\nChessboard , Schachbrett\nChick , Küken\nChroma Noise , Chroma-Lärm\nChromatic Aberrations , Chromatische Aberrationen\nChromaticity From , Chromatizität von\nChrome 01 , Chrom 01\nChrominances Only (ab) , Nur Chrominanzen (ab)\nChrominances Only (CbCr) , Nur Chrominanzen (CbCr)\nCine Drama , Filmdrama\nCine Teal Orange 1 , Krickentee Orange 1\nCine Teal Orange 2 , Krickentee Orange 2\nCine Vibrant , Lebendiger Cine\nCinema , Kino\nCinema 2 , Kino 2\nCinema 3 , Kino 3\nCinema 4 , Kino 4\nCinema 5 , Kino 5\nCinematic (8) , Kinematografisch (8)\nCinematic for Flog , Cinematic für Flog\nCinematic Lady Bird , Cinematischer Frauenvogel\nCinematic Mexico , Cinematisches Mexiko\nCinematic Travel (29) , Kinematografische Reisen (29)\nCinematic-1 , Kinematografisch-1\nCircle , Kreis\nCircle (Inv.) , Kreis (Inv.)\nCircle 1 , Kreis 1\nCircle 2 , Kreis 2\nCircle Abstraction , Kreis-Abstraktion\nCircle Art , Kreis-Kunst\nCircle to Square , Vom Kreis zum Quadrat\nCircle Transform , Kreis-Transformation\nCircles , Kreise\nCircles (Outline) , Kreise (Umriss)\nCircles 1 , Kreise 1\nCircles 2 , Kreise 2\nCircular , Rundschreiben\nCity 7 , Stadt 7\nClarity , Klarheit\nClassic Chrome , Klassisches Chrom\nClassic Teal and Orange , Klassische Krickente und Orange\nClean , Sauber\nClean Text , Text bereinigen\nClear Control Points , Kontrollpunkte löschen\nClear Teal Fade , Krickende Krickente löschen\nCliff , Klippe\nClip , Ausschnitt\nClip CMYK , Ausschnitt CMYK\nClip RGB , Ausschnitt RGB\nCloseup , Nahaufnahme\nClosing , Schließung\nClosing - Opening , Schliessen - Öffnen\nClosing - Original , Schließung - Original\nClouds , Wolken\nCLUT from After - Before Layers , CLUT von danach - vor Schichten\nCLUT Opacity , CLUT-Trübung\nCM[Yellow]K , CM[Gelb]K\nCMY[Key] , CMY[Schlüssel]\nCMYK [cyan] , CMYK [Zyan]\nCMYK [Key] , CMYK [Schlüssel]\nCMYK [Yellow] , CMYK [Gelb]\nCMYK Tone , CMYK-Ton\nCoarse , Grob\nCoarsest (faster) , Am gröbsten (schneller)\nCoefficients , Koeffizienten\nCoffee 44 , Kaffee 44\nCoherence , Kohärenz\nCold Clear Blue , Kaltes klares Blau\nCold Clear Blue 1 , Kaltes klares Blau 1\nCold Simplicity 2 , Kalte Einfachheit 2\nColor , Farbe\nColor (rich) , Farbe (reichhaltig)\nColor 1 , Farbe 1\nColor 1 (Up/Left Corner) , Farbe 1 (obere/linke Ecke)\nColor 2 , Farbe 2\nColor 2 (Up/Right Corner) , Farbe 2 (oben/rechte Ecke)\nColor 3 , Farbe 3\nColor 3 (Bottom/Left Corner) , Farbe 3 (Untere / Linke Ecke)\nColor 4 , Farbe 4\nColor 4 (Bottom/Right Corner) , Farbe 4 (unten/rechte Ecke)\nColor A , Farbe A\nColor Abstraction Opacity , Deckkraft der Farbabstraktion\nColor Abstraction Paint , Farbe Abstraktionsmalerei\nColor B , Farbe B\nColor Balance , Farbbalance\nColor Basis , Farbe Basis\nColor Blending , Farbmischung\nColor Blindness , Farbenblindheit\nColor Blue-Yellow , Farbe Blau-Gelb\nColor Boost , Farbverstärkung\nColor Burn , Farbverbrennung\nColor C , Farbe C\nColor Channel  Smoothing , Farbkanal-Glättung\nColor Channels , Farb-Kanäle\nColor D , Farbe D\nColor Dispersion , Farbverteilung\nColor Doping , Farb-Doping\nColor E , Farbe E\nColor Effect Mode , Farbeffekt-Modus\nColor F , Farbe F\nColor G , Farbe G\nColor Gamma , Farbe Gamma\nColor Grading , Farbgradierung\nColor Green-Magenta , Farbe Grün-Magenta\nColor Highlights , Farbliche Highlights\nColor Image , Farbbild\nColor Intensity , Farbintensität\nColor Mask , Farbmaske\nColor Mask [Interactive] , Farbmaske [Interaktiv]\nColor Median , Farbe Median\nColor Metric , Farbe Metrisch\nColor Midtones , Farbe Mitteltöne\nColor Mode , Farbmodus\nColor Model , Farbmodell\nColor Negative , Farbnegativ\nColor on White , Farbe auf Weiß\nColor Overall Effect , Farbe Gesamteffekt\nColor Presets , Farbvoreinstellungen\nColor Quantization , Farbquantisierung\nColor Rendering , Farbwiedergabe\nColor Shading (%) , Farbschattierung (%)\nColor Shadows , Farbschatten\nColor Smoothness , Farbe Glätte\nColor Space , Farbraum\nColor Spots + Extrapolated Colors + Lineart , Farbflecken + extrapolierte Farben + Lineart\nColor Spots + Lineart , Farbflecken + Lineart\nColor Strength , Farbstärke\nColor Temperature , Farbtemperatur\nColor Tolerance , Farb-Toleranz\nColor Variation [Random -1] , Farbvariation [Zufall -1]\nColorbase , Farbbasis\nColorburn , Farbverbrennung\nColored Geometry , Farbige Geometrie\nColored Grain , Gefärbtes Korn\nColored Lineart , Farbige Lineart\nColored on Black , Farbig auf Schwarz\nColored on Transparent , Farbig auf Transparent\nColored Outline , Farbiger Umriss\nColored Pencils , Farbstifte\nColored Regions , Farbige Regionen\nColorful , Farbenfroh\nColorful 0209 , Farbenfroh 0209\nColorful Blobs , Bunte Kleckse\nColoring , Farbgebung\nColorize [Interactive] , Einfärben [Interaktiv]\nColorize [Photographs] , Kolorieren [Fotografien]\nColorize [with Colormap] , Einfärben [mit Colormap]\nColorize Lineart [Auto-Fill] , Lineart einfärben [Automatisches Ausfüllen]\nColorize Lineart [Propagation] , Lineart einfärben [Ausbreitung]\nColorize Lineart [Smart Coloring] , Lineart einfärben [Smart Coloring]\nColorize Mode , Einfärben-Modus\nColorized Image (1 Layer) , Eingefärbtes Bild (1 Ebene)\nColormap , Farbkarte\nColormap Type , Farbkarten-Typ\nColors , Farben\nColors A , Farben A\nColors B , Farben B\nColors Only , Nur Farben\nColors Only (1 Layer) , Nur Farben (1 Ebene)\nColors to Layers , Farben zu Ebenen\nColorspace , Farbraum\nColour , Farbe\nColour Channels , Farb-Kanäle\nColour Model , Farbmodell\nColour Smoothing , Farbglättung\nColour Space Mode , Farbraum-Modus\nColumn by Column , Kolumne für Kolumne\nComic Style , Comic-Stil\nComix Colors , Comix-Farben\nComponents , Komponenten\nComposed Layers , Zusammengesetzte Schichten\nCompress Highlights , Highlights komprimieren\nCompression Blur , Komprimierungsunschärfe\nCompression Filter , Kompressionsfilter\nComputation Mode , Berechnungsmodus\nCone , Kegel\nConflict 01 , Konflikt 01\nConformal Maps , Konforme Karten\nConnect-Four , Connect-Vier\nConnectivity , Konnektivität\nConnectors Centering , Verbinder Zentrierung\nConnectors Variability , Variabilität von Verbindern\nConstrain Image Size , Bildgröße einschränken\nConstrain Values , Werte einschränken\nConstrained Sharpen , Eingeschränktes Schärfen\nConstraint Radius , Einschränkungsradius\nContinuous Droste , Kontinuierliche Droste\nContour Coherence , Kontur-Kohärenz\nContour Detection (%) , Kontur-Erkennung (%)\nContour Normalization , Kontur-Normalisierung\nContour Precision , Kontur-Präzision\nContour Threshold , Kontur-Schwellenwert\nContour Threshold (%) , Kontur-Schwellenwert (%)\nContours , Konturen\nContours + Flocon/Snowflake , Konturen + Flöckchen/Schneeflocke\nContours Recursion , Konturen-Rekursion\nContrail 35 , Kondensstreifen 35\nContrast , Kontrast\nContrast (%) , Kontrast (%)\nContrast Smoothness , Kontrast Glätte\nContrast Swiss Mask , Kontrast Schweizer Maske\nContrast with Highlights Protection , Kontrast mit Highlights Schutz\nContrasty Afternoon , Kontrastierender Nachmittag\nContrasty Green , Kontrastierendes Grün\nContributors , Mitwirkende\nControl Point 1 , Kontrollpunkt 1\nControl Point 2 , Kontrollpunkt 2\nControl Point 3 , Kontrollpunkt 3\nControl Point 4 , Kontrollpunkt 4\nControl Point 5 , Kontrollpunkt 5\nControl Point 6 , Kontrollpunkt 6\nConvolve , zusammenfalten\nCool (256) , Kühl (256)\nCool / Warm , Kalt / Warm\nCopper , Kupfer\nCorner Brightness , Helligkeit der Ecke\nCorrelated Channels , Korrelierte Kanäle\nCos(z) , Kos(z)\nCounter Clockwise , Gegen den Uhrzeigersinn\nCourse 4 , Kurs 4\nCracks , Risse\nCrease , Falte\nCreative Pack (33) , Kreativ-Paket (33)\nCrip Winter , Krippe Winter\nCrisp Romance , Knackige Romantik\nCrisp Warm , Knusprig Warm\nCriterion , Kriterium\nCrop , Ernte\nCrop (%) , Ernte (%)\nCross Process CP 130 , Prozessübergreifend CP 130\nCross Process CP 14 , Prozessübergreifend CP 14\nCross Process CP 15 , Prozessübergreifend CP 15\nCross Process CP 16 , Prozessübergreifend CP 16\nCross Process CP 18 , Prozessübergreifend CP 18\nCross Process CP 3 , Prozessübergreifend CP 3\nCross Process CP 4 , Prozessübergreifend CP 4\nCross Process CP 6 , Prozessübergreifend CP 6\nCross-Hatch Amount , Betrag der Kreuzschraffur\nCrossed , Überquert\nCrosses 1 , Kreuze 1\nCrosses 2 , Kreuze 2\nCrosshair , Fadenkreuz\nCRT Sub-Pixels , CRT-Sub-Pixel\nCrystal , Kristall\nCrystal Background , Kristall-Hintergrund\nCube , Würfel\nCube (256) , Würfel (256)\nCubic , Kubisch\nCubicle 99 , Kabine 99\nCubism , Kubismus\nCubism on Color Abstraction , Kubismus auf Farbabstraktion\nCup , Pokal\nCupid , Amor\nCurvature , Krümmung\nCurvature Shadow , Krümmungs-Schatten\nCurve Amount , Betrag der Kurve\nCurve Angle , Kurven-Winkel\nCurve Length , Länge der Kurve\nCurved , Gebogen\nCurved Stroke , Gekrümmter Hub\nCurves , Kurven\nCurves Previously Defined , Zuvor definierte Kurven\nCustom , Benutzerdefiniert\nCustom Code [Global] , Benutzerdefinierter Code [Global]\nCustom Code [Local] , Benutzerdefinierter Code [Lokal]\nCustom Correction Map , Benutzerdefinierte Korrekturkarte\nCustom Depth Correction , Benutzerdefinierte Tiefenkorrektur\nCustom Depth Maps Stream , Stream mit benutzerdefinierten Tiefenkarten\nCustom Dictionary , Benutzerdefiniertes Wörterbuch\nCustom Filter Code , Benutzerdefinierter Filter-Code\nCustom Formula , Benutzerdefinierte Formel\nCustom Kernel , Benutzerdefinierter Kernel\nCustom Layers , Benutzerdefinierte Ebenen\nCustom Layout , Benutzerdefiniertes Layout\nCustom Style (Bottom Layer) , Benutzerdefinierter Stil (unterste Ebene)\nCustom Style (Top Layer) , Benutzerdefinierter Stil (oberste Ebene)\nCustom Transform , Benutzerdefinierte Transformation\nCustomize CLUT , CLUT anpassen\nCut , ausschneiden\nCut & Normalize , Ausschneiden & Normalisieren\nCut High , Hoch schneiden\nCut Low , Niedrig schneiden\nCutout , Ausschnitt\nCyan Factor , Cyan-Faktor\nCyan Shift , Zyan-Verschiebung\nCyan Smoothness , Cyan-Glätte\nCycle Layers , Zyklus-Schichten\nCycles , Zyklen\nCylinder , Zylinder\nD and O 1 , D und O 1\nDamping per Octave , Dämpfung pro Oktave\nDark  Motive , Dunkles Motiv\nDark Blues in Sunlight , Dunkles Blau im Sonnenlicht\nDark Boost , Dunkle Verstärkung\nDark Color , Dunkle Farbe\nDark Edges , Dunkle Ränder\nDark Green 02 , Dunkelgrün 02\nDark Green 1 , Dunkelgrün 1\nDark Grey , Dunkelgrau\nDark Length , Dunkle Länge\nDark Motive , Dunkles Motiv\nDark Pixels , Dunkle Pixel\nDark Place 01 , Dunkler Ort 01\nDark Screen , Dunkler Bildschirm\nDark Sky , Dunkler Himmel\nDark Walls , Dunkle Mauern\nDarken , Verdunkeln\nDarker , Dunkler\nDarkness , Dunkelheit\nDarkness Level , Dunkelheitsgrad\nDate 39 , Datum 39\nDay for Night , Tag für Nacht\nDay4Nite , Tag4Nite\nDaylight Scene , Tageslicht-Szene\nDebug Font Size , Schriftgröße debuggen\nDecagon , Zehneck\nDecompose , zerlegen\nDecompose Channels , Kanäle zersetzen\nDecoration , Dekoration\nDecreasing , Abnehmend\nDeep , Tief\nDeep Blue , Tiefblau\nDeep Dark Warm , Tiefdunkel-Warm\nDeep High Contrast , Tief Hoher Kontrast\nDeep Teal Fade , Tiefes Kricken der Krickente\nDeep Warm Fade , Tiefes warmes Fading\nDefault , Standardmäßig\nDefects Contrast , Defekte Kontrast\nDefects Density , Dichte der Defekte\nDefects Size , Defekte Größe\nDefects Smoothness , Defekte Glätte\nDeform , verformen\nDelaunay-Oriented , Delaunay-orientiert\nDelaunay: Portrait De Metzinger , Delaunay: Porträt De Metzinger\nDelaunay: Windows Open Simultaneously , Delaunay: Fenster gleichzeitig geöffnet\nDelete Layer Source , Layer-Quelle löschen\nDelicatessen , Feinkostladen\nDenoise Simple 40 , Denoise einfach 40\nDensity , Dichte\nDensity (%) , Dichte (%)\nDepth , Tiefe\nDepth Fade In Frames , Tiefeneinblendung von Frames\nDepth Fade Out Frames , Tiefenausblendungs-Rahmen\nDepth Field Control , Tiefenfeldsteuerung\nDepth Map , Tiefenkarte\nDepth Map Construction , Konstruktion der Tiefenkarte\nDepth Map Only , Nur Tiefenkarte\nDepth Map Reconstruction , Rekonstruktion der Tiefenkarte\nDepth Maps Only , Nur Tiefenkarten\nDepth-Of-Field Type , Schärfentiefe-Typ\nDesaturate , Entsättigen\nDesaturate (%) , Entsättigt (%)\nDesaturate Norm , Entsättigungs-Norm\nDescent Method , Abstammungsmethode\nDescreen , Bildschirm\nDesert Gold 37 , Wüstengold 37\nDestination (%) , Reiseziel (%)\nDestination X-Tiles , Zielort X-Tiles\nDestination Y-Tiles , Ziel Y-Kacheln\nDetail , Einzelheiten\nDetail Level , Detail-Ebene\nDetail Reconstruction Detection , Detail-Rekonstruktions-Erkennung\nDetail Reconstruction Smoothness , Detail Glattheit der Rekonstruktion\nDetail Reconstruction Strength , Detail Stärke des Wiederaufbaus\nDetail Reconstruction Style , Detail Rekonstruktionsstil\nDetail Scale , Detail-Skala\nDetail Strength , Detail Stärke\nDetails , Einzelheiten\nDetails Amount , Details Betrag\nDetails Equalizer , Details Entzerrer\nDetails Scale , Details Skala\nDetails Smoothness , Details Glätte\nDetails Strength (%) , Details Stärke (%)\nDetect Skin , Haut erkennen\nDeuteranomaly , Deuteranomalie\nDeuteranopia , Deuteranopie\nDeviation , Abweichung\nDiamond , Diamant\nDiamond (Inv.) , Diamant (Inv.)\nDiamonds , Diamanten\nDiamonds (Outline) , Diamanten (Umriss)\nDices , Würfel\nDices with Colored Numbers , Würfel mit farbigen Zahlen\nDices with Colored Sides , Würfel mit farbigen Seiten\nDifference , Unterschied\nDifference Mixing , Unterschied Mischen\nDifference of Gaussians , Unterschied der Gaußianer\nDifferent Axis , Andere Achse\nDiffuse (%) , Diffus (%)\nDiffuse Shadow , Diffuser Schatten\nDiffusion , Verbreitung\nDiffusion Tensors , Diffusions-Tensoren\nDiffusivity , Diffusität\nDigits , Ziffern\nDilate , Dilatieren\nDilation , Dilatation\nDilation - Original , Dilatation - Original\nDilation / Erosion , Dilatation/Erosion\nDimensions (%) , Abmessungen (%)\nDimensions Pixels , Abmessungen Pixel\nDipole: 1/(4*z^2-1) , Dipol: 1/(4*z^2-1)\nDirect , Direkt\nDirection , Wegbeschreibung\nDirections 23 , Wegbeschreibung 23\nDirty , Schmutzig\nDisable , Deaktivieren Sie\nDisabled , Behinderte\nDiscard Contour Guides , Konturenführungen verwerfen\nDiscard Transparency , Transparenz verwerfen\nDisco , Diskothek\nDisplay , anzeigen\nDisplay Blob Controls , Blob-Steuerelemente anzeigen\nDisplay Color Axes , Farbachsen anzeigen\nDisplay Contours , Konturen anzeigen\nDisplay Coordinates , Koordinaten anzeigen\nDisplay Coordinates on Preview Window , Koordinaten im Vorschaufenster anzeigen\nDisplay Debug Info on Preview , Debug-Informationen in der Vorschau anzeigen\nDistance , Entfernung\nDistance (Fast) , Entfernung (schnell)\nDistance Transform , Entfernungstransformation\nDistort Lens , Verzerrte Linse\nDistortion Factor , Verzerrungsfaktor\nDistortion Surface Angle , Verzerrungsflächenwinkel\nDistortion Surface Position , Position der Verzerrungsfläche\nDisturbance Scale-By-Factor , Störungs-Skala-nach-Faktor\nDisturbance X , Störung X\nDisturbance Y , Störung Y\nDither Output , Dither-Ausgabe\nDivide , Teilt\nDo Not Flatten Transparency , Transparenz nicht verflachen\nDodge , Ausweichen\nDodge and Burn , Ausweichen und Verbrennen\nDodge Blur , Unscharf ausweichen\nDodge Strength , Stärke des Ausweichens\nDOF Analyzer , DOF-Analysator\nDog , Hund\nDon't Sort , Nicht sortieren\nDoNothing , Nichts tun\nDot Size , Punktgröße\nDots , Punkte\nDownload External Data , Externe Daten herunterladen\nDragon Curve , Drachen-Kurve\nDragonfly , Libelle\nDrawing Mode , Zeichnen-Modus\nDrawn Montage , Gezeichnete Montage\nDream , Traum\nDream 1 , Traum 1\nDream 85 , Traum 85\nDream Smoothing , Traum-Glättung\nDrop Blues , Blues fallen lassen\nDrop Green Tint 14 , Tropfen Grüner Farbton 14\nDrop Shadow , Schlagschatten\nDrop Shadow 3D , Schlagschatten 3D\nDrop Water , Tropfen Wasser\nDuck , Ente\nDuplicate Bottom , Unten duplizieren\nDuplicate Horizontal , Horizontal duplizieren\nDuplicate Left , Links duplizieren\nDuplicate Right , Recht duplizieren\nDuplicate Top , Duplizieren Oben\nDuplicate Vertical , Duplikat Vertikal\nDuration , Dauer\nDusty , Verstaubt\nDynamic Range Increase , Erhöhung des Dynamikbereichs\nEagle , Adler\nEarth , Erde\nEarth Tone Boost , Verstärkung des Erdtons\nEasy Skin Retouch , Einfache Hautretusche\nEdge , Rand\nEdge Antialiasing , Kanten-Antialiasing\nEdge Attenuation , Kantendämpfung\nEdge Behavior X , Kantenverhalten X\nEdge Behavior Y , Kantenverhalten Y\nEdge Detect Includes Chroma , Randerkennung schließt Chroma ein\nEdge Exponent , Randexponent\nEdge Fidelity , Kante Treue\nEdge Influence , Randbeeinflussung\nEdge Mask , Randmaske\nEdge Sensitivity , Empfindlichkeit der Kante\nEdge Shade , Kantenschattierung\nEdge Simplicity , Einfachheit am Rand\nEdge Smoothness , Kantenglätte\nEdge Thickness , Dicke der Kante\nEdge Threshold , Randschwelle\nEdge Threshold (%) , Randschwelle (%)\nEdge-Oriented , Kantenorientiert\nEdges , Kanten\nEdges (%) , Ränder (%)\nEdges [Animated] , Ränder [animiert]\nEdges Offsets , Randverschiebungen\nEdges on Fire , Ränder in Brand\nEdges-0.5 (beware: Memory-Consuming!) , Kanten-0,5 (Vorsicht: Speicherfressend!)\nEdges-1 (beware: Memory-Consuming!) , Ränder-1 (Vorsicht: Speicherfressend!)\nEdges-2 (beware: Memory-Consuming!) , Ränder-2 (Vorsicht: Speicherfressend!)\nEffect Strength , Stärke der Wirkung\nEffect X-Axis Scaling , Effekt X-Achsenskalierung\nEffect Y-Axis Scaling , Wirkung Y-Achsenskalierung\nEight Layers , Acht Schichten\nEight Threads , Acht Fäden\nElegance 38 , Eleganz 38\nElephant , Elefant\nElevation , Höhe\nElevation (%) , Höhe (%)\nEllipse Painting , Ellipsen-Malerei\nEllipse Ratio , Ellipsen-Verhältnis\nEllipsionism , Ellipsionismus\nEllipsionism Opacity , Ellipsionismus-Trübung\nEmboss , Prägen\nEnable Antialiasing , Antialiasing aktivieren\nEnable Interpolated Motion , Interpolierte Bewegung aktivieren\nEnable Morphology , Morphologie aktivieren\nEnable Paintstroke , Farbschlag aktivieren\nEnable Segmentation , Segmentierung aktivieren\nEnchanted , Verzaubert\nEnd Color , Endfarbe\nEnd Frame Number , End-Rahmennummer\nEnd of Mid-Tones , Ende der Mitteltöne\nEnd Point Connectivity , Endpunkt-Konnektivität\nEnd Point Rate (%) , Endpunkt-Rate (%)\nEnding Angle , Endwinkel\nEnding Color , Endfarbe\nEnding Feathering , Federung beenden\nEnding Point (%) , Endpunkt (%)\nEnding Scale (%) , Endwert-Skala (%)\nEnding Value , Endwert\nEnding X-Centering , Beenden der X-Zentrierung\nEnding Y-Centering , Y-Zentrierung beenden\nEngrave , Gravieren Sie\nEnhance Detail , Detail verbessern\nEnhance Details , Details verbessern\nEqualization , Gleichstellung\nEqualization (%) , Gleichstellung (%)\nEqualize , Ausgleichen\nEqualize and Normalize , Ausgleichen und Normalisieren\nEqualize at Each Step , Bei jedem Schritt ausgleichen\nEqualize HSI-HSL-HSV , HSI-HSL-HSV ausgleichen\nEqualize HSV , HSV ausgleichen\nEqualize Light , Licht ausgleichen\nEqualize Local Histograms , Lokale Histogramme ausgleichen\nEqualize Shadow , Schatten ausgleichen\nEquation Plot [Parametric] , Gleichungsdiagramm [Parametrisch]\nEquation Plot [Y=f(X)] , Gleichungsdiagramm [Y=f(X)]\nEquirectangular to Nadir-Zenith , Gleichschenklig zu Nadir-Zenit\nErosion / Dilation , Erosion / Dilatation\nEtch Tones , Ätz-Töne\nEterna for Flog , Eterna für Flog\nEuclidean , Euklidisch\nEuclidean - Polar , Euklidisch - Polar\nExclusion , Ausschluss\nExpand , Erweitern Sie\nExpand Background Reconstruction , Hintergrund-Wiederaufbau erweitern\nExpand Shadows , Schatten ausdehnen\nExpand Size , Größe erweitern\nExpanding Mirrors , Expandierende Spiegel\nExpired (fade) , Abgelaufen (verblassen)\nExpired (polaroid) , Abgelaufen (Polaroid)\nExpired 69 , Abgelaufen 69\nExponent (Imaginary) , Exponent (imaginär)\nExponential , Exponentiell\nExport RGB-565 File , RGB-565-Datei exportieren\nExposure , Exposition\nExpression , Ausdruck\nExtend 1px , Erweitern 1px\nExternal Transparency , Externe Transparenz\nExtra  Smooth , Extra glatt\nExtract Foreground [Interactive] , Auszug Vordergrund [Interaktiv]\nExtract Objects , Objekte extrahieren\nExtrapolate Color Spots on Transparent Top Layer , Farbflecken auf transparenter oberer Ebene extrapolieren\nExtrapolate Colors As , Farben extrapolieren als\nExtrapolated Colors + Lineart , Hochgerechnete Farben + Lineart\nExtreme , Extrem\nFactor , Faktor\nFade , verblassen\nFade End , Ende ausblenden\nFade End (%) , Ende ausblenden (%)\nFade Layers , Ebenen ausblenden\nFade Start , Start ausblenden\nFade Start (%) , Beginn ausblenden (%)\nFade to Green , Auf Grün überblenden\nFaded , Verblasst\nFaded (alt) , Verblasst (alt)\nFaded (analog) , Verblasst (analog)\nFaded (extreme) , Verblasst (extrem)\nFaded (vivid) , Verblasst (lebendig)\nFaded 47 , Verblasst 47\nFaded Green , Verblasstes Grün\nFaded Look , Verblasster Look\nFaded Print , Verblasster Druck\nFaded Retro 01 , Verblasstes Retro 01\nFaded Retro 02 , Verblasstes Retro 02\nFading , Verblassen\nFading Shape , Verblassende Form\nFall Colors , Herbstfarben\nFar Point Deviation , Fernpunkt-Abweichung\nFast , Schnell\nFast &#40;Approx.&#41; , Schnell (Ungefähr.)\nFast (Low Precision) Preview , Schnelle (niedrige Präzision) Vorschau\nFast Approximation , Schnelle Annäherung\nFast Blend , Schnelle Mischung\nFast Blend Preview , Schnelle Blend-Vorschau\nFast Recovery , Schnelle Wiederherstellung\nFast Resize , Schnelle Größenänderung\nFaux Infrared , Faux-Infrarot\nFeathering , Federn\nFeature Analyzer Smoothness , Feature Analyzer Glätte\nFeature Analyzer Threshold , Schwelle des Feature-Analysators\nFelt Pen , Filzstift\nFFT Preview , FFT-Vorschau\nFibers , Fasern\nFibers Amplitude , Fasern Amplitude\nFibers Smoothness , Fasern Glätte\nFibrousness , Fasrigkeit\nFidelity Chromaticity , Farbtreue\nFidelity Smoothness (Coarsest) , Treue Glätte (am gröbsten)\nFidelity Smoothness (Finest) , Treue Glätte (feinste)\nFidelity to Target (Coarsest) , Zieltreue (am gröbsten)\nFidelity to Target (Finest) , Zieltreue (vom Feinsten)\nFilename , Dateiname\nFill Holes , Füllen von Löchern\nFill Holes % , Füllen Löcher %\nFill Transparent Holes , Transparente Löcher füllen\nFilled , Gefüllt\nFilled Circles , Gefüllte Kreise\nFilling , Füllung\nFilm Highlight Contrast , Filmhighlight-Kontrast\nFilm Print 01 , Filmkopie 01\nFilm Print 02 , Filmkopie 02\nFilmic , Filmisch\nFilter Design , Filter-Entwurf\nFinal Image , Endgültiges Bild\nFine , Gut\nFine 2 , Bußgeld 2\nFine Details Smoothness , Feine Details Glätte\nFine Details Threshold , Schwelle für feine Details\nFine Noise , Feiner Lärm\nFine Scale , Feine Skala\nFinest (slower) , Feinste (langsamer)\nFinger Paint , Fingerfarbe\nFinger Size , Fingergröße\nFire Effect , Feuer-Effekt\nFireworks , Feuerwerk\nFirst , Erste\nFirst Color , Erste Farbe\nFirst Frame , Erster Rahmen\nFirst Offset , Erster Offset\nFirst Radius , Erster Radius\nFirst Size , Erste Größe\nFish-Eye , Fischauge\nFish-Eye Effect , Fischaugen-Effekt\nFitting Function , Anpassungsfunktion\nFive Layers , Fünf Schichten\nFlag , Flagge\nFlag (256) , Flagge (256)\nFlat , Wohnung\nFlat 30 , Wohnung 30\nFlat Color , Flache Farbe\nFlat Regions Removal , Entfernung flacher Regionen\nFlat-Shaded , Flachschattiert\nFlatness , Ebenheit\nFlip & Rotate Blocs , Blöcke spiegeln und drehen\nFlip Cross-Hatch , Flip-Kreuzschraffur\nFlip Left / Right , Links/Rechts spiegeln\nFlip Left/Right , Links/Rechts spiegeln\nFlip The Pattern , Das Muster umdrehen\nFlip Tolerance , Flip-Toleranz\nFlower , Blume\nFocale , Schwerpunkt\nFoggy Night , Neblige Nacht\nFolder Name , Name des Ordners\nFont Colors , Schriftfarben\nFont Height (px) , Schrifthöhe (px)\nForce Gray , Kraft Grau\nForce Re-Download from Scratch , Erneutes Herunterladen von Scratch erzwingen\nForce Tiles to Have Same Size , Gleiche Größe der Fliesen erzwingen\nForce Transparency , Transparenz erzwingen\nForeground Color , Vordergrundfarbe\nForm , Formular\nFormula , Formel\nForward , Vorwärts\nForward  Horizontal , Horizontal vorwärts\nForward Horizontal , Horizontal vorwärts\nForward Vertical , Vorwärts vertikal\nFour Layers , Vier Schichten\nFour Threads , Vier Fäden\nFourier Analysis , Fourier-Analyse\nFourier Filtering , Fourier-Filterung\nFourier Transform , Fourier-Transformation\nFourier Watermark , Fourier-Wasserzeichen\nFractal Noise , Fraktales Rauschen\nFractal Points , Fraktale Punkte\nFractal Set , Fraktaler Satz\nFractal Whirl , Fraktaler Wirbel\nFractalize , Fraktalisieren\nFractured Clouds , Zerklüftete Wolken\nFragment Blur , Fragment-Unschärfe\nFrame (px) , Rahmen (px)\nFrame [Blur] , Rahmen [Unschärfe]\nFrame [Cube] , Rahmen [Würfel]\nFrame [Fuzzy] , Rahmen [Fuzzy]\nFrame [Mirror] , Rahmen [Spiegel]\nFrame [Painting] , Rahmen [Malerei]\nFrame [Pattern] , Rahmen [Muster]\nFrame [Regular] , Rahmen [Regulär]\nFrame [Round] , Rahmen [Rund]\nFrame [Smooth] , Rahmen [Glatt]\nFrame as a New Layer , Rahmen als neue Ebene\nFrame Color , Rahmenfarbe\nFrame Files Format , Format der Rahmendateien\nFrame Format , Rahmen-Format\nFrame Size , Rahmengröße\nFrame Skip , Rahmen überspringen\nFrame Type , Rahmentyp\nFrame Width , Rahmenbreite\nFrames , Rahmen\nFrames Offset , Frames versetzt\nFreaky B&W , Verrücktes S/W\nFreaky Details , Verrückte Details\nFreeze , einfrieren\nFrench Comedy , Französische Komödie\nFrequency , Häufigkeit\nFrequency (%) , Häufigkeit (%)\nFrequency Analyzer , Frequenz-Analysator\nFrequency Range , Frequenzbereich\nFreqy Pattern , Freqy-Muster\nFriends Hall of Fame , Ruhmeshalle der Freunde\nFrom Input , Von Eingabe\nFrom Reference Color , Von Referenzfarbe\nFrosted , Gefrostete\nFrosted Beach Picnic , Picknick am gefrosteten Strand\nFruits , Früchte\nFuji 3510 (Cuspclip) , Fuji 3510 (Muschelklemme)\nFuji 3513 (Cuspclip) , Fuji 3513 (Muschelklemme)\nFuji FP-100c Cool , Fuji FP-100c Kühl\nFuji FP-100c Cool + , Fuji FP-100c Kühl +\nFuji FP-100c Cool ++ , Fuji FP-100c Kühl ++\nFuji FP-100c Negative , Fuji FP-100c Negativ\nFuji FP-100c Negative + , Fuji FP-100c Negativ +\nFuji FP-100c Negative ++ , Fuji FP-100c Negativ ++\nFuji FP-100c Negative +++ , Fuji FP-100c Negativ +++\nFuji FP-100c Negative ++a , Fuji FP-100c Negativ ++a\nFuji FP-100c Negative - , Fuji FP-100c Negativ -\nFuji FP-100c Negative -- , Fuji FP-100c Negativ --\nFuji FP-3000b Negative , Fuji FP-3000b Negativ\nFuji FP-3000b Negative + , Fuji FP-3000b Negativ +\nFuji FP-3000b Negative ++ , Fuji FP-3000b Negativ ++\nFuji FP-3000b Negative +++ , Fuji FP-3000b Negativ +++\nFuji FP-3000b Negative - , Fuji FP-3000b Negativ -\nFuji FP-3000b Negative -- , Fuji FP-3000b Negativ --\nFuji FP-3000b Negative Early , Fuji FP-3000b Negativ früh\nFuji Superia 100 , Fuji-Superia 100\nFuji Superia 200 , Fuji-Superia 200\nFull , Vollständig\nFull (Allows Multi-Layers) , Vollständig (erlaubt Multi-Layer)\nFull (Slower) , Voll (langsamer)\nFull Bottom/top , Vollständig Unten/oben\nFull Colors , Volle Farben\nFull HD Frame Packing , Vollständige HD-Frame-Verpackung\nFull Layer Stack -Slow!- , Voller Lagenstapel -langsam!-\nFull Side by Side Keep Uncompressed , Vollständig Seite an Seite unkomprimiert halten\nFull Side by Side Keep Width , Volle Seite an Seite Breite beibehalten\nFull Side by Uncompressed , Vollständig Seite für Seite unkomprimiert\nFuturistic Bleak 1 , Futuristisch düster 1\nFuturistic Bleak 2 , Futuristisch düster 2\nFuturistic Bleak 3 , Futuristisch düster 3\nFuturistic Bleak 4 , Futuristisch düster 4\nFuzzyness , Unschärfe\nG'MIC Operator , G'MIC-Bediener\nG/M Smoothness , G/M Glattheit\nGain , Gewinnen\nGames & Demos , Spiele und Demos\nGamma Balance , Gamma-Balance\nGamma Compensation , Gamma-Kompensation\nGamma Equalizer , Gamma-Entzerrer\nGaussian , Gauß\nGear , Zahnrad\nGenerate Random-Colors Layer , Zufallsfarbschicht erzeugen\nGeneric Fuji Astia 100 , Generisches Fuji Astia 100\nGeneric Fuji Provia 100 , Generisches Fuji Provia 100\nGeneric Fuji Velvia 100 , Generisches Fuji Velvia 100\nGeneric Kodachrome 64 , Generisches Kodachrome 64\nGeneric Kodak Ektachrome 100 VS , Generisches Kodak Ektachrome 100 VS\nGeneric Skin Structure , Generische Hautstruktur\nGentle Mode (overrides Minimum Brightness and Minimun Red:Blue Ratio) , Sanfter Modus (setzt Mindesthelligkeit und minimales Rot:Blau-Verhältnis außer Kraft)\nGeometry , Geometrie\nGlamour Glow , Glamour-Glanz\nGlobal Mapping , Globale Kartierung\nGlow , Glühen\nGmicky & Wilber (by Mahvin) , Gmicky & Wilber (von Mahvin)\nGmicky (by Deevad) , Gmicky (von Deevad)\nGmicky (by Mahvin) , Gmicky (von Mahvin)\nGmicky (Deevad) , Gmicky (Tot)\nGoing for a Walk , Spazieren gehen\nGolden , Goldene\nGolden (bright) , Golden (hell)\nGolden (fade) , Golden (verblassen)\nGolden (vibrant) , Golden (lebhaft)\nGolden Gate , Goldene Pforte\nGolden Night Softner 43 , Goldene Nacht Weicher 43\nGolden Sony 37 , Goldene Sony 37\nGoldFX - Bright Spring Breeze , GoldFX - Helle Frühlingsbrise\nGoldFX - Bright Summer Heat , GoldFX - Helle Sommerhitze\nGoldFX - Hot Summer Heat , GoldFX - Heiße Sommerhitze\nGoldFX - Perfect Sunset 01min , GoldFX - Perfekter Sonnenuntergang 01min\nGoldFX - Perfect Sunset 05min , GoldFX - Perfekter Sonnenuntergang 05min\nGoldFX - Perfect Sunset 10min , GoldFX - Perfekter Sonnenuntergang 10min\nGoldFX - Spring Breeze , GoldFX - Frühlingsbrise\nGoldFX - Summer Heat , GoldFX - Sommerhitze\nGood Morning , Guten Morgen\nGradienNormLinearity , GradienNormLinearität\nGradienNormSmoothness , GradienNormGlätte\nGradient , Steigung\nGradient [Corners] , Steigung [Ecken]\nGradient [Custom Shape] , Farbverlauf [Benutzerdefinierte Form]\nGradient [from Line] , Steigung [von der Linie]\nGradient [Radial] , Steigung [Radial]\nGradient [Random] , Gradient [Zufällig]\nGradient Norm , Gradienten-Norm\nGradient Preset , Gradienten-Voreinstellung\nGradient RGB , Farbverlauf RGB\nGradient Smoothness , Gradienten-Glätte\nGradient Values , Gradienten-Werte\nGrain , Getreide\nGrain (Highlights) , Getreide (Highlights)\nGrain (Midtones) , Korn (Mitteltöne)\nGrain (Shadows) , Korn (Schatten)\nGrain Extract , Getreide-Extrakt\nGrain Merge , Getreide-Zusammenführung\nGrain Only , Nur Korn\nGrain Scale , Korn-Skala\nGrain Tone Fading , Korntonverblassung\nGrain Type , Getreideart\nGrainextract , Getreide-Extrakt\nGrainmerge , Getreidemüllerei\nGranularity , Granularität\nGraphic Boost , Grafische Verstärkung\nGraphic Colours , Grafische Farben\nGraphic Novel , Graphischer Roman\nGraphix Colors , Graphix-Farben\nGrayscale , Graustufen\nGreece , Griechenland\nGreen , Grün\nGreen 15 , Grün 15\nGreen 2025 , Grün 2025\nGreen Action , Grüne Aktion\nGreen Afternoon , Grüner Nachmittag\nGreen Blues , Grün Blau\nGreen Conflict , Grüner Konflikt\nGreen Day 01 , Grüner Tag 01\nGreen Day 02 , Grüner Tag 02\nGreen Factor , Grüner Faktor\nGreen G09 , Grün G09\nGreen Indoor , Grün Innen\nGreen Level , Grüne Ebene\nGreen Light , Grünes Licht\nGreen Mono , Grüner Mono\nGreen Rotations , Grüne Rotationen\nGreen Shift , Grüne Verschiebung\nGreen Smoothness , Grüne Glätte\nGreen Wavelength , Grüne Wellenlänge\nGreen Yellow , Grün Gelb\nGreen-Blue , Grün-Blau\nGreen-Red , Grün-Rot\nGreenish Contrasty , Grünliche Kontraste\nGreenish Fade , Grünliches Verblassen\nGreenish Fade 1 , Grünliche Verblassung 1\nGrey , Grau\nGreyscale , Graustufen\nGrid , Raster\nGrid [Cartesian] , Gitter [kartesisch]\nGrid [Hexagonal] , Gitter [Sechseckig]\nGrid [Triangular] , Gitter [Dreieckig]\nGrid Divisions , Gitternetz-Abteilungen\nGrid Smoothing , Gitterglättung\nGrid Width , Breite des Gitters\nGritty , Düster\nGrow Alpha , Alpha wachsen lassen\nGuide As , Leitfaden als\nGuide Mix , Leitfaden-Mix\nGuide Recovery , Leitfaden Wiederherstellung\nGum Leaf , Zahnfleisch-Blatt\nGyroid , Kreisel\nH Cutoff , H-Abschaltung\nHackmanite , Hackmanit\nHair Locks , Haarschlösser\nHaldCLUT Filename , HaldCLUT-Dateiname\nHalf Bottom/top , Halb Unten/Oben\nHalf Side  by Side , Halbe Seite an Seite\nHalftone , Halbton\nHalftone Shapes , Halbton-Formen\nHanoi Tower , Hanoi-Turm\nHappyness 133 , Fröhlichkeit 133\nHard , Hart\nHard Dark , Harte Dunkelheit\nHard Light , Hartes Licht\nHard Mix , Harte Mischung\nHard Sketch , Harte Skizze\nHard Teal Orange , Harte Krickente Orange\nHardlight , Hartes Licht\nHarsh Day , Harter Tag\nHarsh Sunset , Harter Sonnenuntergang\nHDR Effect (Tone Map) , HDR-Effekt (Tone Map)\nHeart , Herz\nHearts , Herzen\nHearts (Outline) , Herzen (Umriss)\nHedcut (Experimental) , Heckenschnitt (experimentell)\nHeight , Höhe\nHeight (%) , Höhe (%)\nHerderite , Herderit\nHexagon , Sechseck\nHexagonal , Sechseckig\nHiddenite , Versteckte Seite\nHigh , Hoch\nHigh (Slower) , Hoch (langsamer)\nHigh Frequency , Hohe Frequenz\nHigh Frequency Layer , Hochfrequenzschicht\nHigh Key , Hohe Tonart\nHigh Pass , Hoher Pass\nHigh Quality , Hohe Qualität\nHigh Scale , Hohe Skala\nHigh Speed , Hohe Geschwindigkeit\nHigh Value , Hoher Wert\nHigher Mask Threshold (%) , Höhere Maskenschwelle (%)\nHighlight , Hervorheben\nHighlight (%) , Hervorhebung (%)\nHighlight Bloom , Blüte hervorheben\nHighlights , Höhepunkte\nHighlights Abstraction , Highlights Abstraktion\nHighlights Brightness , Highlights Helligkeit\nHighlights Color Intensity , Highlights Farbintensität\nHighlights Crossover Point , Highlights Kreuzungspunkt\nHighlights Hue , Highlights Farbton\nHighlights Lightness , Highlights Leichtigkeit\nHighlights Protection , Highlights Schutz\nHighlights Selection , Auswahl der Highlights\nHighlights Threshold , Highlights Schwelle\nHighlights Zone , Höhepunkte Zone\nHistogram , Histogramm\nHistogram Analysis , Histogramm-Analyse\nHistogram Transfer , Histogramm-Übertragung\nHokusai: The Great Wave , Hokusai: Die Große Welle\nHomogeneity , Homogenität\nHong Kong , Hongkong\nHope Poster , Poster Hoffnung\nHorisontal Length , Horisontale Länge\nHorizon Leveling (deg) , Horizontnivellierung (Grad)\nHorizontal Amount , Horizontaler Betrag\nHorizontal Array , Horizontale Anordnung\nHorizontal Blur , Horizontale Unschärfe\nHorizontal Length , Horizontale Länge\nHorizontal Size (%) , Horizontale Größe (%)\nHorizontal Stripes , Horizontale Streifen\nHorizontal Tiles , Horizontale Kacheln\nHorizontal Warp Only , Nur Horizontalkette\nHorror Blue , Schreckensblau\nHot , Aktuell\nHot (256) , Heiß (256)\nHough Sketch , Hough-Skizze\nHough Transform , Hough-Transformation\nHouse , Haus\nHouseholder , Hausbesitzer\nHSI [all] , HSI [alle]\nHSI [Intensity] , HSI [Intensität]\nHSL [all] , HSL [alle]\nHSL [Lightness] , HSL [Leichtigkeit]\nHSL Adjustment , HSL-Anpassung\nHSV [all] , HSV [alle]\nHSV [Hue] , HSV [Farbton]\nHSV [Saturation] , HSV [Sättigung]\nHSV [Value] , HSV [Wert]\nHSV Select , HSV-Auswahl\nHue , Farbton\nHue (%) , Farbton (%)\nHue Band , Farbton-Band\nHue Factor , Farbton-Faktor\nHue Lighten-Darken , Farbton Aufhellen-Dunkeln\nHue Max (%) , Farbton Max (%)\nHue Min (%) , Farbton Min (%)\nHue Offset , Farbton-Versatz\nHue Range , Farbton-Bereich\nHue Shift , Farbton-Verschiebung\nHue Smoothness , Farbton Glätte\nHuman  2 , Menschlich 2\nHuman 1 , Mensch 1\nHuman 2 , Menschlich 2\nHybrid Median - Medium Speed Softest Output , Hybrid Median - mittlere Geschwindigkeit - weichster Ausgang\nHypnosis , Hypnose\nIain Noise Reduction 2019 , Iain Lärmreduzierung 2019\nIain's Fast Denoise , Iains schnelle Denoise\nIdentity , Identität\nIgnore , Ignorieren Sie\nIgnore Current Aspect , Aktuellen Aspekt ignorieren\nIlford Delta 100 , Ilford-Delta 100\nIlford Delta 3200 , Ilford-Delta 3200\nIlford Delta 400 , Ilford-Delta 400\nIlluminate 2D Shape , 2D-Form ausleuchten\nIllustration Look , Illustration Aussehen\nImage , Bild\nImage + Background , Bild + Hintergrund\nImage + Colors (2 Layers) , Bild + Farben (2 Ebenen)\nImage + Colors (Multi-Layers) , Bild + Farben (mehrschichtig)\nImage Contour Dimensions , Abmessungen der Bildkontur\nImage Smoothness , Bildglätte\nImage to Grab Color from (.Png) , Bild zum Farbabzug aus (.Png)\nImage Weight , Bildgewicht\nImport Data , Daten importieren\nImport RGB-565 File , RGB-565-Datei importieren\nImpulses 5x5 , Impulse 5x5\nImpulses 7x7 , Impulse 7x7\nImpulses 9x9 , Impulse 9x9\nInch , Zoll\nInclude Opacity Layer , Deckkraft-Ebene einschließen\nIncreaseChroma1 , ZunahmeChroma1\nIncreasing , Zunehmend\nIndoor Blue , Innenbereich Blau\nIndustrial 33 , Industrielle 33\nInfluence of Color Samples (%) , Einfluss von Farbmustern (%)\nInformation , Informationen\nInit. Resolution , Init. Entschließung\nInit. Type , Init. Geben Sie  ein.\nInit. With High Gradients Only , Init. Nur mit hohen Gradienten\nInitial Density , Anfangs-Dichte\nInitialization , Initialisierung\nInk Wash , Tintenwäsche\nInner Fading , Inneres Verblassen\nInner Length , Innere Länge\nInner Radius , Innerer Radius\nInner Radius (%) , Innerer Radius (%)\nInner Shade , Innere Schattierung\nInpaint [Holes] , Farbe [Löcher]\nInpaint [Morphological] , Farbe [Morphologisch]\nInpaint [Multi-Scale] , Farbe [Multi-Scale]\nInpaint [Patch-Based] , Farbe [Patch-basiert]\nInpaint [Transport-Diffusion] , Farbe [Transport-Diffusion]\nInput , Eingabe\nInput Folder , Eingabe-Ordner\nInput Frame Files Name , Name der Eingabe-Rahmendateien\nInput Guide Color , Farbe der Eingabehilfe\nInput Layers , Eingabe-Ebenen\nInput Transparency , Eingabe-Transparenz\nInput Type , Eingabe-Typ\nInsert New CLUT Layer , Neue CLUT-Schicht einfügen\nInside , Innenseite\nInside Color , Innenfarbe\nInside-Out , Innen-Außen\nInstant [Consumer] (54) , Sofort [Verbraucher] (54)\nInstant [Pro] (68) , Sofort [Pro] (68)\nIntarsia , Intarsien\nIntensity , Intensität\nIntensity of Purple Fringe , Intensität des Purpursaums\nInterlace Horizontal , Horizontal verschachteln\nInterlace Vertical , Vertikal verschachteln\nInterpolate , Interpolieren Sie\nInterpolation Type , Interpolationstyp\nInverse , Umgekehrt\nInverse Depth Map , Karte der inversen Tiefe\nInverse Radius , Inverser Radius\nInverse Transform , Inverse Transformation\nInversions , Umkehrungen\nInvert Background / Foreground , Hintergrund / Vordergrund umkehren\nInvert Blur , Unschärfe umkehren\nInvert Canvas Colors , Leinwandfarben umkehren\nInvert Colors , Farben umkehren\nInvert Image Colors , Bildfarben umkehren\nInvert Luminance , Leuchtdichte umkehren\nInvert Mask , Maske umkehren\nInward , Einwärts\nIsophotes , Isophoten\nIsotropic , Isotropisch\nIterations , Iterationen\nJapanese Maple Leaf , Japanisches Ahornblatt\nJawbreaker , Kieferbrecher\nJet (256) , Strahl (256)\nJPEG Artefacts , JPEG-Artefakte\nJPEG Smooth , JPEG-glatt\nJust Peachy , Nur Pfirsich\nK-Factor , K-Faktor\nK-Tone Vintage Kodachrome , K-Ton-Vintage-Kodachrome\nKaleidoscope [Blended] , Kaleidoskop [gemischt]\nKaleidoscope [Polar] , Kaleidoskop [Polar]\nKaleidoscope [Symmetry] , Kaleidoskop [Symmetrie]\nKandinsky: Squares with Concentric Circles , Kandinsky: Quadrate mit konzentrischen Kreisen\nKandinsky: Yellow-Red-Blue , Kandinsky: Gelb-Rot-Blau\nKeep , behalten\nKeep Aspect Ratio , Aspect Ratio beibehalten\nKeep Base Layer as Input Background , Basisschicht als Eingabehintergrund beibehalten\nKeep Borders Square , Grenzen im Quadrat halten\nKeep Color Channels , Farbkanäle beibehalten\nKeep Colors , Farben behalten\nKeep Detail , Details behalten\nKeep Detail Layer Separate , Detailebene getrennt halten\nKeep Iterations as Different Layers , Iterationen als verschiedene Schichten beibehalten\nKeep Layers Separate , Ebenen getrennt halten\nKeep Original Image Size , Originalbildgröße beibehalten\nKeep Original Layer , Originalebene beibehalten\nKeep Tiles Square , Fliesen quadratisch halten\nKeep Transparency in Output , Transparenz bei der Ausgabe bewahren\nKernel Multiplier , Kernel-Vervielfacher\nKernel Type , Kernel-Typ\nKey Factor , Schlüsselfaktor\nKey Frame Rate , Schlüssel-Bildfrequenz\nKey Shift , Taste Shift\nKey Smoothness , Schlüssel-Glätte\nKeypoint Influence (%) , Schlüsselfaktor Einfluss (%)\nKitaoka Spin Illusion , Kitaoka-Spin-Illusion\nKlee: Death and Fire , Klee: Tod und Feuer\nKlee: In the Style of Kairouan , Klee: Im Stil von Kairouan\nKlee: Oriental Pleasure Garden Anagoria , Klee: Orientalischer Lustgarten Anagoria\nKlee: Polyphony 2 , Klee: Polyphonie 2\nKlee: Red Waistcoat , Klee: Rote Weste\nKlimt: The Kiss , Klimt: Der Kuss\nKodak 2383 (Cuspclip) , Kodak 2383 (Halsklemme)\nKodak Elite Color 200 , Kodak Elite-Farbe 200\nKodak HIE (HS Infra) , Kodak HIE (HS-Infra)\nKodak Portra 160 , Kodak-Portrait 160\nKodak Portra 160 + , Kodak-Porträt 160 +\nKodak Portra 160 ++ , Kodak-Porträt 160 ++\nKodak Portra 160 - , Kodak-Portrait 160 -\nKodak Portra 160 NC , Kodak Hochformat 160 NC\nKodak Portra 160 NC + , Kodak Hochformat 160 NC +\nKodak Portra 160 NC ++ , Kodak Hochformat 160 NC ++\nKodak Portra 160 NC - , Kodak Portrait 160 NC -\nKodak Portra 160 VC , Kodak Hochformat 160 VC\nKodak Portra 160 VC + , Kodak Portrait 160 VC +\nKodak Portra 160 VC ++ , Kodak Hochformat 160 VC ++\nKodak Portra 160 VC - , Kodak Portrait 160 VC -\nKodak Portra 400 , Kodak-Portrait 400\nKodak Portra 400 + , Kodak-Portrait 400 +\nKodak Portra 400 ++ , Kodak-Portrait 400 ++\nKodak Portra 400 - , Kodak-Portrait 400 -\nKodak Portra 400 NC , Kodak Hochformat 400 NC\nKodak Portra 400 NC + , Kodak Hochformat 400 NC +\nKodak Portra 400 NC ++ , Kodak Hochformat 400 NC ++\nKodak Portra 400 NC - , Kodak Portrait 400 NC -\nKodak Portra 400 UC , Kodak Hochformat 400 UC\nKodak Portra 400 UC + , Kodak Portrait 400 UC +\nKodak Portra 400 UC ++ , Kodak Portrait 400 UC ++\nKodak Portra 400 UC - , Kodak Portrait 400 UC -\nKodak Portra 400 VC , Kodak Hochformat 400 VC\nKodak Portra 400 VC + , Kodak-Portrait 400 VC +\nKodak Portra 400 VC ++ , Kodak Hochformat 400 VC ++\nKodak Portra 400 VC - , Kodak Portrait 400 VC -\nKodak Portra 800 , Kodak-Portrait 800\nKodak Portra 800 + , Kodak-Portrait 800 +\nKodak Portra 800 ++ , Kodak-Portrait 800 ++\nKodak Portra 800 - , Kodak Portrait 800 -\nKodak Portra 800 HC , Kodak Hochformat 800 HC\nKuwahara on Painting , Kuwahara über Malerei\nLab , Labor\nLab (Chroma Only) , Labor (nur Chroma)\nLab (Distinct) , Labor (unterscheidbar)\nLab (Luma Only) , Labor (nur Luma)\nLab (Luma/Chroma) , Labor (Luma/Chroma)\nLab (Mixed) , Labor (gemischt)\nLab [a-Chrominance] , Labor [a-Chrominance]\nLab [ab-Chrominances] , Labor [ab-Chrominanzen]\nLab [all] , Labor [alle]\nLab [b-Chrominance] , Labor [b-Chrominance]\nLab [Lightness] , Labor [Leichtigkeit]\nLAB-Lightness , LAB-Leichtigkeit\nLandscape , Landschaft\nLandscape-1 , Landschaft-1\nLandscape-10 , Landschaft-10\nLandscape-2 , Landschaft-2\nLandscape-3 , Landschaft-3\nLandscape-4 , Landschaft-4\nLandscape-5 , Landschaft-5\nLandscape-6 , Landschaft-6\nLandscape-7 , Landschaft-7\nLandscape-8 , Landschaft-8\nLandscape-9 , Landschaft-9\nLaplacian , Laplacianisch\nLarge , Groß\nLarge Noise , Großer Lärm\nLast , Letzte\nLast Frame , Letzter Frame\nLate Afternoon Wanderlust , Fernweh am späten Nachmittag\nLate Sunset , Später Sonnenuntergang\nLava Lamp , Lava-Lampe\nLayer , Schicht\nLayer Processing , Verarbeitung von Schichten\nLayers to Tiles , Ebenen zu Kacheln\nLch [all] , Lch [alle]\nLch [ch-Chrominances] , Lch [ch-Chrominanzen]\nLch [h-Chrominance] , Lch [h-Chrominanz]\nLeaf , Blatt\nLeaf Color , Blattfarbe\nLeaf Opacity (%) , Blatttrübung (%)\nLeak Type , Leck-Typ\nLeft , Links\nLeft  Foreground , Links Vordergrund\nLeft / Right Blur (%) , Links / Rechts Unschärfe (%)\nLeft and Right Background , Linker und rechter Hintergrund\nLeft and Right Foreground , Linker und rechter Vordergrund\nLeft and Right Image Streams , Linker und rechter Bildstrom\nLeft Diagonal Foreground , Links Diagonal Vordergrund\nLeft Foreground , Links Vordergrund\nLeft Position , Linke Position\nLeft Side Orientation , Orientierung auf der linken Seite\nLeft Slope , Linke Neigung\nLeft Stream Only , Nur linker Stream\nLength , Länge\nLenticular Density LPI , Linsenraster-Dichte LPI\nLenticular Orientation , Lentikulare Orientierung\nLenticular Print , Lentikulardruck\nLevel , Ebene\nLevel Frequency , Niveau Häufigkeit\nLevels , Ebenen\nLife Giving Tree , Lebensspendender Baum\nLifestyle & Commercial-1 , Lebensstil & Kommerziell-1\nLifestyle & Commercial-10 , Lifestyle & Kommerziell-10\nLifestyle & Commercial-2 , Lifestyle & Kommerziell-2\nLifestyle & Commercial-3 , Lifestyle & Kommerziell-3\nLifestyle & Commercial-4 , Lifestyle & Kommerziell-4\nLifestyle & Commercial-5 , Lifestyle & Kommerziell-5\nLifestyle & Commercial-6 , Lifestyle & Kommerziell-6\nLifestyle & Commercial-7 , Lifestyle & Kommerziell-7\nLifestyle & Commercial-8 , Lifestyle & Kommerziell-8\nLifestyle & Commercial-9 , Lifestyle & Kommerziell-9\nLight , Licht\nLight (blown) , Licht (geblasen)\nLight Angle , Lichtwinkel\nLight Color , Helle Farbe\nLight Direction , Licht-Richtung\nLight Effect , Lichtwirkung\nLight Glow , Lichtglühen\nLight Grey , Hellgrau\nLight Leaks , Leichte Lecks\nLight Motive , Licht-Motiv\nLight Patch , Leichter Fleck\nLight Rays , Lichtstrahlen\nLight Smoothness , Leichte Glätte\nLight Strength , Lichtfestigkeit\nLight Type , Lichttyp\nLight-X , Licht-X\nLight-Y , Hell-Y\nLight-Z , Licht-Z\nLighten , aufhellen\nLighten Edges , Kanten aufhellen\nLighter , Leichter\nLighting , Beleuchtung\nLighting Angle , Beleuchtungswinkel\nLightness , Leichtigkeit\nLightness (%) , Helligkeit (%)\nLightness Factor , Helligkeits-Faktor\nLightness Level , Helligkeitsstufe\nLightness Max (%) , Helligkeit Max (%)\nLightness Min (%) , Helligkeit Min (%)\nLightness Shift , Helligkeits-Verschiebung\nLightness Smoothness , Leichtigkeit Glätte\nLightning , Blitz\nLighty Smooth , Leicht glatt\nLimit Hue Range , Farbtonbereich begrenzen\nLine , Zeile\nLine Opacity , Linien-Opazität\nLine Precision , Linienpräzision\nLinear Burn , Lineare Verbrennung\nLinear Light , Lineares Licht\nLinear RGB [All] , Linear RGB [Alle]\nLinear RGB [Blue] , Linear RGB [Blau]\nLinear RGB [Green] , Linear RGB [Grün]\nLinear RGB [Red] , Linear RGB [Rot]\nLinearity , Linearität\nLineart , Linienart\nLineart + Color Spots , Lineart + Farbflecken\nLineart + Color Spots + Extrapolated Colors , Lineart + Farbflecken + extrapolierte Farben\nLineart + Colors , Lineart + Farben\nLineart + Extrapolated Colors , Lineart + extrapolierte Farben\nLines , Zeilen\nLines (256) , Zeilen (256)\nLinify , Linifizieren\nLion , Löwe\nLissajous [Animated] , Lissajous [animiert]\nLissajous Spiral , Lissajous-Spirale\nLittle , Kleine\nLittle Blue , Klein Blau\nLittle Cyan , Kleines Zyan\nLittle Green , Kleines Grün\nLittle Key , Kleiner Schlüssel\nLittle Magenta , Kleines Magenta\nLittle Red , Kleiner Roter\nLittle Yellow , Kleines Gelb\nLN Amplititude , LN-Amplitude\nLN Amplitude , LN-Amplitude\nLN Average-Smoothness , LN Durchschnitts-Glätte\nLN Neightborhood-Smoothness , LN-Nachbarschaft-Glätte\nLN Size , LN Größe\nLocal  Normalisation , Lokale Normalisierung\nLocal Contrast , Lokaler Kontrast\nLocal Contrast Effect , Lokaler Kontrast-Effekt\nLocal Contrast Enhance , Lokale Kontrastverstärkung\nLocal Contrast Enhancement , Lokale Kontrastverbesserung\nLocal Contrast Style , Lokaler Kontraststil\nLocal Detail Enhancer , Lokale Detailverbesserung\nLocal Normalization , Lokale Normalisierung\nLocal Orientation , Lokale Orientierung\nLocal Processing , Lokale Verarbeitung\nLocal Similarity Mask , Maske für lokale Ähnlichkeit\nLocal Variance Normalization , Normalisierung der lokalen Varianz\nLock Return Scaling to Source Layer , Sperre Rückgabe Skalierung zur Quellschicht\nLock Source , Quelle sperren\nLock Uniform Sampling , Einheitliche Probenahme sperren\nLog(z) , Protokoll(z)\nLogarithmic Distortion , Logarithmische Verzerrung\nLogarithmic Distortion Axis Combination for X-Axis , Logarithmische Verzerrungsachsenkombination für die X-Achse\nLogarithmic Distortion Axis Combination for Y-Axis , Logarithmische Verzerrungsachsenkombination für die Y-Achse\nLogarithmic Distortion X-Axis Direction , Logarithmische Verzerrung X-Achsen-Richtung\nLogarithmic Distortion Y-Axis Direction , Logarithmische Verzerrung Y-Achsenrichtung\nLomography Redscale 100 , Lomographie Neuskalierung 100\nLomography X-Pro Slide 200 , Lomographie X-Pro-Dia 200\nLookup , Nachschlagen\nLookup Factor , Lookup-Faktor\nLookup Size , Lookup-Größe\nLoop Method , Schleifen-Methode\nLow , Niedrig\nLow Bias , Niedrige Verzerrung\nLow Contrast Blue , Blau mit niedrigem Kontrast\nLow Frequency , Niedrige Frequenz\nLow Frequency Layer , Niederfrequenz-Schicht\nLow Key , Niedrige Tonart\nLow Key 01 , Niedriger Schlüssel 01\nLow Scale , Niedrige Skala\nLow Value , Niedriger Wert\nLower Layer Is the Bottom Layer for All Blends , Die untere Schicht ist die unterste Schicht für alle Mischungen\nLower Mask Threshold (%) , Unterer Masken-Schwellenwert (%)\nLower Side Orientation , Orientierung auf der unteren Seite\nLowercase Letters , Kleinbuchstaben\nLowlights Crossover Point , Lowlights-Übergabepunkt\nLowres CLUT , Lowres-CLUT\nLucky 64 , Glückliche 64\nLuma Noise , Luma-Lärm\nLuminance , Leuchtdichte\nLuminance Factor , Leuchtdichte-Faktor\nLuminance Level , Leuchtdichtepegel\nLuminance Only , Nur Leuchtdichte\nLuminance Only (Lab) , Nur Leuchtdichte (Labor)\nLuminance Only (YCbCr) , Nur Leuchtdichte (YCbCr)\nLuminance Shift , Luminanzverschiebung\nLuminance Smoothness , Leuchtdichte-Glätte\nLuminosity from Color , Leuchtkraft aus Farbe\nLuminosity Type , Leuchtkraft-Typ\nLush Green Summer , Üppig grüner Sommer\nLUTs Pack , LUTs-Paket\nLylejk's Painting , Lylejks Gemälde\nMagenta Coffee , Magenta-Kaffee\nMagenta Day , Magenta-Tag\nMagenta Day 01 , Magenta Tag 01\nMagenta Dream , Magenta-Traum\nMagenta Factor , Magenta-Faktor\nMagenta Shift , Magenta-Verschiebung\nMagenta Smoothness , Magenta-Glätte\nMagenta Yellow , Magenta Gelb\nMagenta-Yellow , Magenta-Gelb\nMagic Details , Magische Details\nMagnitude / Phase , Ausmaß/Phase\nMail , E-Mail\nMake Hue Depends on Region Size , Farbton von der Größe der Region abhängig machen\nMake Seamless [Diffusion] , Nahtlos machen [Diffusion]\nMake Seamless [Patch-Based] , Nahtlos machen [Patch-basiert]\nMake Squiggly , Schnörkel machen\nMake Up , Make-up\nMandelbrot - Julia Sets , Mandelbrot - Julia-Mengen\nMandelbrot Explorer , Mandelbrot-Explorer\nManual , Handbuch\nManual Controls , Manuelle Steuerung\nMap , Karte\nMap Tones , Karten-Töne\nMapping , Kartierung\nMarble , Marmor\nMargin (%) , Marge (%)\nMascot Image , Maskottchen-Bild\nMasculine , Männlich\nMask , Maske\nMask + Background , Maske + Hintergrund\nMask as Bottom Layer , Maske als unterste Schicht\nMask By , Maske von\nMask Color , Maskenfarbe\nMask Contrast , Masken-Kontrast\nMask Creator , Masken-Schöpfer\nMask Dilation , Masken-Dilatation\nMask Size , Maskengröße\nMask Smoothness (%) , Maske Glätte (%)\nMask Type , Maskentyp\nMasked Image , Maskiertes Bild\nMasking , Maskierung\nMatch Colors With , Farben abgleichen mit\nMatching Precision (Smaller Is Faster) , Matching-Präzision (kleiner ist schneller)\nMath Symbols , Mathematische Symbole\nMax Angle , Max Winkel\nMax Angle Deviation (deg) , Maximale Winkelabweichung (Grad)\nMax Area , Max Bereich\nMax Curve , Max-Kurve\nMax Cut (%) , Max Schnitt (%)\nMax Iterations , Max Iterationen\nMax Length (%) , Maximale Länge (%)\nMax Offset (%) , Maximale Verrechnung (%)\nMax Threshold , Max Schwelle\nMaximal Area , Maximale Fläche\nMaximal Color Saturation , Maximale Farbsättigung\nMaximal Highlights , Maximale Höhepunkte\nMaximal Radius , Maximaler Radius\nMaximal Seams per Iteration (%) , Maximale Nähte pro Iteration (%)\nMaximal Size , Maximale Größe\nMaximal Value , Maximaler Wert\nMaximum Dimension , Maximale Abmessung\nMaximum Image Size , Maximale Bildgröße\nMaximum Number of Image Colors , Maximale Anzahl von Bildfarben\nMaximum Number of Output Layers , Maximale Anzahl von Ausgabeschichten\nMaximum Red:Blue Ratio in the Fringe , Maximales Rot-Blau-Verhältnis im Randbereich\nMaximum Saturation , Maximale Sättigung\nMaximum Size Factor , Maximaler Größenfaktor\nMaximum Value , Maximaler Wert\nMaze , Labyrinth\nMaze Type , Labyrinth-Typ\nMean Color , Mittlere Farbe\nMean Curvature , Mittlere Krümmung\nMedian (beware: Memory-Consuming!) , Median (Vorsicht: speicherfressend!)\nMedian Radius , Medianer Radius\nMedium 3 , Mittel 3\nMedium Details Smoothness , Mittlere Details Glätte\nMedium Details Threshold , Schwelle für mittlere Details\nMedium Frequency Layer , Mittelfrequenz-Schicht\nMedium Scale (Original) , Mittlere Skala (Original)\nMedium Scale (Smoothed) , Mittlere Skala (geglättet)\nMemories , Erinnerungen\nMerge Brightness / Colors , Helligkeit/Farben zusammenführen\nMerge Layers? , Schichten zusammenführen?\nMerging Mode , Zusammenführungsmodus\nMerging Option , Zusammenführungs-Option\nMerging Steps , Schritte zusammenführen\nMess with Bits , Mit Bits verwirren\nMetal , Metall\nMetallic Look , Metallisches Aussehen\nMethod , Methode\nMetric , Metrisch\nMetropolis , Metropole\nMicro/macro Details  Adjusted , Mikro/Makro-Details angepasst\nMid , Mitte\nMid Grey , Mittelgrau\nMid Noise , Mittleres Rauschen\nMid Offset , Mittlerer Versatz\nMid Tone Contrast , Mittelton-Kontrast\nMid-Dark Grey , Mittel-Dunkelgrau\nMid-Light Grey , Mittel-Hellgrau\nMid-Tones , Mitteltöne\nMiddle Grey , Mittelgrau\nMiddle Scale , Mittlere Skala\nMidpoint , Mittelpunkt\nMidtones Brightness , Helligkeit der Mitteltöne\nMidtones Color Intensity , Mitteltöne Farbintensität\nMidtones Hue , Mitteltöne Farbton\nMighty Details , Mächtige Details\nMin Angle Deviation (deg) , Min. Winkelabweichung (Grad)\nMin Area % , Min Bereich %\nMin Cut (%) , Min Schnitt (%)\nMin Length (%) , Min Länge (%)\nMin Offset (%) , Min-Versatz (%)\nMin Threshold , Min-Schwelle\nMineral Mosaic , Mineral-Mosaik\nMinesweeper , Minensucher\nMinimal Area , Minimale Fläche\nMinimal Area (%) , Minimale Fläche (%)\nMinimal Color Intensity , Minimale Farbintensität\nMinimal Highlights , Minimale Höhepunkte\nMinimal Path , Minimaler Pfad\nMinimal Radius , Minimaler Radius\nMinimal Region Area , Minimales Gebiet der Region\nMinimal Scale (%) , Minimale Skala (%)\nMinimal Shape Area , Minimaler Formbereich\nMinimal Size , Minimale Größe\nMinimal Size (%) , Minimale Größe (%)\nMinimal Stroke Length , Minimale Hublänge\nMinimal Value , Minimaler Wert\nMinimalist Caffeination , Minimalistische Koffeinierung\nMinimum Brightness , Minimale Helligkeit\nMinimum Red:Blue Ratio in the Fringe , Mindestverhältnis Rot:Blau im Randbereich\nMirror , Spiegel\nMirror Effect , Spiegeleffekt\nMirror X , Spiegel X\nMirror Y , Spiegel Y\nMirror-X , Spiegel-X\nMirror-XY , Spiegel-XY\nMirror-Y , Spiegel-Y\nMix , Mischen\nMixed Mode , Gemischter Modus\nMixer [CMYK] , Mischpult [CMYK]\nMixer [HSV] , Mischpult [HSV]\nMixer [Lab] , Mischer [Labor]\nMixer [PCA] , Mischpult [PCA]\nMixer [RGB] , Mischpult [RGB]\nMixer [YCbCr] , Mischpult [YCbCr]\nMixer Mode , Mischer-Modus\nMixer Style , Mischpult-Stil\nMode , Modus\nModern Film , Moderner Film\nModulo Value , Modulo-Wert\nMoire Removal , Entfernung von Moiré\nMoire Removal Method , Methode zur Entfernung von Moiré\nMondrian: Composition in Red-Yellow-Blue , Mondrian: Komposition in Rot-Gelb-Blau\nMondrian: Evening; Red Tree , Mondrian: Abend; Roter Baum\nMondrian: Gray Tree , Mondrian: Grauer Baum\nMonet: San Giorgio Maggiore at Dusk , Monet: San Giorgio Maggiore in der Abenddämmerung\nMonet: Water-Lily Pond , Monet: Seerosenteich\nMonet: Wheatstacks - End of Summer , Monet: Weizenstapel - Ende des Sommers\nMonkey , Affe\nMono Tinted , Mono Getönt\nMono+Ye , Mono+Ja\nMono-Directional , Monodirektional\nMonochrome , Monochrom\nMonochrome 1 , Monochrom 1\nMonochrome 2 , Monochrom 2\nMontage Type , Montage-Typ\nMoody , Launisch\nMoody-1 , Launisch-1\nMoody-10 , Stimmung - 10\nMoody-2 , Launisch-2\nMoody-3 , Stimmung-3\nMoody-4 , Stimmung - 4\nMoody-5 , Stimmung-5\nMoody-6 , Stimmung - 6\nMoody-7 , Stimmung - 7\nMoody-8 , Stimmung - 8\nMoody-9 , Stimmung-9\nMoon2panorama , Mond2Panorama\nMoonlight , Mondschein\nMoonlight 01 , Mondschein 01\nMoonrise , Mondaufgang\nMorning 6 , Vormittag 6\nMorph [Interactive] , Morph [Interaktiv]\nMorph Layers , Morph-Ebenen\nMorphological - Fastest Sharpest Output , Morphologisch - schnellste und schärfste Ausgabe\nMorphological Closing , Morphologischer Abschluss\nMorphological Filter , Morphologischer Filter\nMorphology Painting , Morphologie-Malerei\nMorphology Strength , Morphologie-Stärke\nMorphoStrenght , MorphoStärke\nMosaic , Mosaik\nMost , Die meisten\nMostly Blue , Meistens blau\nMotion Analyzer , Bewegungs-Analysator\nMotion-Compensated , Bewegungskompensiert\nMuch , Vieles\nMuch Blue , Viel Blau\nMuch Green , Viel Grün\nMuch Red , Viel Rot\nMulti-Layer Etch , Mehrschicht-Ätzen\nMultiple Colored Shapes Over Transp. BG , Mehrere farbige Formen über Transp. BG\nMultiple Layers , Mehrere Schichten\nMultiplier , Multiplikator\nMultiply , Vervielfachen Sie\nMultiscale Operator , Multiskalen-Operator\nMunch: The Scream , Munch: Der Schrei\nMute Shift , Stumme Verschiebung\nMuted 01 , Gedämpft 01\nMuted Fade , Stummes Ausblenden\nMystic Purple Sunset , Mystischer violetter Sonnenuntergang\nNatural (vivid) , Natürlich (lebendig)\nNature & Wildlife-1 , Natur und Tierwelt-1\nNature & Wildlife-10 , Natur und Tierwelt - 10\nNature & Wildlife-2 , Natur und Tierwelt-2\nNature & Wildlife-3 , Natur und Tierwelt-3\nNature & Wildlife-4 , Natur und Tierwelt-4\nNature & Wildlife-5 , Natur und Tierwelt - 5\nNature & Wildlife-6 , Natur und Tierwelt - 6\nNature & Wildlife-7 , Natur und Tierwelt - 7\nNature & Wildlife-8 , Natur und Tierwelt - 8\nNature & Wildlife-9 , Natur und Tierwelt - 9\nNb Circles Surrounding , Nb Umgebende Kreise\nNear Black , Bei Schwarz\nNearest , Nächste\nNearest Neighbor , Nächster Nachbar\nNeat Merge , Sauber zusammenführen\nNebulous , Nebulös\nNegate , verneinen\nNegation , Verneinung\nNegative , Negativ\nNegative [Color] (13) , Negativ [Farbe] (13)\nNegative [New] (39) , Negativ [Neu] (39)\nNegative [Old] (44) , Negativ [alt] (44)\nNegative Color Abstraction , Negative Farbabstraktion\nNegative Colors , Negative Farben\nNegative Effect , Negative Auswirkung\nNeighborhood Size (%) , Größe der Nachbarschaft (%)\nNeighborhood Smoothness , Glätte in der Nachbarschaft\nNeon Lightning , Neon-Blitz\nNeutral Color , Neutrale Farbe\nNeutral Teal Orange , Neutrale Krickente Orange\nNeutral Warm Fade , Neutrales Warm-Fading\nNew Curves [Interactive] , Neue Kurven [Interaktiv]\nNewspaper , Zeitung\nNewton Fractal , Newton-Fraktal\nNight 01 , Nacht 01\nNight Blade 4 , Nachtblatt 4\nNight From Day , Nacht vom Tag\nNight King 141 , Nachtkönig 141\nNight Spy , Nacht-Spion\nNine Layers , Neun Schichten\nNo Masking , Keine Maskierung\nNo Recovery , Keine Wiederherstellung\nNo Rescaling , Keine Neuskalierung\nNo Transparency , Keine Transparenz\nNo-Skip , Kein Überspringen\nNoise , Lärm\nNoise [Additive] , Lärm [Zusatzstoff]\nNoise [Perlin] , Lärm [Perlin]\nNoise [Spread] , Lärm [Ausbreitung]\nNoise A , Lärm A\nNoise B , Lärm B\nNoise C , Lärm C\nNoise D , Lärm D\nNoise Level , Lärmpegel\nNoise Scale , Lärm-Skala\nNoise Type , Lärm-Typ\nNon / No , Nicht / Nein\nNon-Linearity , Nicht-Linearität\nNon-Rigid , Nicht starr\nNone , Keine\nNone (Allows Multi-Layers) , Keine (erlaubt Multi-Layer)\nNone- Skip , Nicht- Überspringen\nNorm Type , Norm-Typ\nNormal Map , Normale Karte\nNormal Output , Normale Ausgabe\nNormalization , Normalisierung\nNormalize , normalisieren\nNormalize Brightness , Helligkeit normalisieren\nNormalize Colors , Farben normalisieren\nNormalize Illumination , Beleuchtung normalisieren\nNormalize Input , Eingabe normalisieren\nNormalize Luma , Luma normalisieren\nNormalize Scales , Skalen normalisieren\nNostalgia Honey , Nostalgie-Honig\nNostalgic , Nostalgisch\nNothing , Nichts\nNumber , Nummer\nNumber of Added Frames , Anzahl der hinzugefügten Frames\nNumber of Angles , Anzahl von Winkeln\nNumber of Clusters , Anzahl von Clustern\nNumber of Colors , Anzahl der Farben\nNumber of Frames , Anzahl der Frames\nNumber of Inter-Frames , Anzahl der Inter-Frames\nNumber of Iterations per Scale , Anzahl der Iterationen pro Skala\nNumber of Key-Frames , Anzahl von Key-Frames\nNumber of Levels , Anzahl der Ebenen\nNumber of Matches (Coarsest) , Anzahl der Spiele (gröbste)\nNumber of Matches (Finest) , Anzahl der Spiele (feinste)\nNumber of Orientations , Anzahl der Orientierungen\nNumber Of Rays , Anzahl der Strahlen\nNumber of Scales , Anzahl der Skalen\nNumber of Sizes , Anzahl der Größen\nNumber of Streaks , Anzahl der Streifen\nNumber of Teeth , Anzahl der Zähne\nNumber of Tones , Anzahl der Töne\nObject Animation , Objekt-Animation\nObject Ratio , Objekt-Verhältnis\nObject Tolerance , Objekt-Toleranz\nOctagon , Achteck\nOctagonal , Achteckig\nOctaves , Oktaven\nOctogon , Oktogon\nOddness (%) , Seltsamkeit (%)\nOff , Aus\nOffset (%) , Aufrechnung (%)\nOffset Angle Rays Layer 1 , Versetzte Winkelstrahlen Schicht 1\nOffset Angle Rays Layer 2 , Versetzte Winkelstrahlen Schicht 2\nOld Method - Slowest , Alte Methode - Langsamste\nOld Photograph , Alte Fotografie\nOld West , Alter Westen\nOld-Movie Stripes , Alt-Film-Streifen\nON1 Photography (90) , ON1 Fotografie (90)\nOnce Upon a Time , Es war einmal\nOne Layer , Eine Schicht\nOne Layer (Horizontal) , Eine Schicht (horizontal)\nOne Layer (Vertical) , Eine Schicht (vertikal)\nOne Layer per Single Color , Eine Schicht pro Einzelfarbe\nOne Layer per Single Region , Eine Schicht pro einzelne Region\nOne Thread , Ein Faden\nOnly Leafs , Nur Blätter\nOnly Red , Nur Rot\nOnly Red and Blue , Nur Rot und Blau\nOpacity , Deckkraft\nOpacity (%) , Opazität (%)\nOpacity as Heightmap , Opazität als Höhenkarte\nOpacity Contours , Deckkraft-Konturen\nOpacity Factor , Opazitätsfaktor\nOpacity Gain , Opazitätsgewinn\nOpacity Gamma , Opazität Gamma\nOpacity Snowflake , Opazität Schneeflocke\nOpacity Threshold (%) , Opazitäts-Schwellenwert (%)\nOpaque Pixels , Undurchsichtige Pixel\nOpaque Regions on Top Layer , Opake Regionen auf der obersten Ebene\nOpaque Skin , Undurchsichtige Haut\nOpen Interactive Preview , Interaktive Vorschau öffnen\nOpening , Eröffnung\nOperation Yellow , Operation Gelb\nOperator , Betreiber\nOpposing , Gegenüber\nOptimized Lateral Inhibition , Optimierte seitliche Hemmung\nOrange Dark 4 , Orange-Dunkel 4\nOrange Dark 7 , Orange-Dunkel 7\nOrange Dark Look , Orange-Dunkel-Look\nOrange Tone , Orange-Ton\nOrange Underexposed , Orange Unterbelichtet\nOranges , Orangen\nOrder , Bestellung\nOrder By , Bestellen nach\nOrientation , Orientierung\nOrientation Coherence , Orientierungskohärenz\nOrientation Only , Nur Orientierung\nOrientations , Orientierungen\nOriginal - (Opening + Closing)/2 , Original - (Eröffnung + Schließung)/2\nOriginal - Opening , Original - Eröffnung\nOrthogonal Radius , Orthogonaler Radius\nOrton Glow , Orton-Glühen\nOrwo NP20-GDR , Orwo NP20-DDR\nOthers (69) , Andere (69)\nOuline Color , Ouline Farbe\nOuter , Äußeres\nOuter Fading , Äußeres Verblassen\nOuter Length , Äußere Länge\nOuter Radius , Äußerer Radius\nOutline , Gliederung\nOutline (%) , Gliederung (%)\nOutline Color , Umrissfarbe\nOutline Contrast , Umriss-Kontrast\nOutline Opacity , Umriss-Opazität\nOutline Size , Umriss-Größe\nOutline Smoothness , Glattheit des Umrisses\nOutline Thickness , Dicke der Kontur\nOutlined , Umriss\nOutput , Ausgabe\nOutput As , Ausgabe als\nOutput as Files , Ausgabe als Dateien\nOutput as Frames , Ausgabe als Frames\nOutput as Multiple Layers , Ausgabe als mehrere Ebenen\nOutput as Separate Layers , Ausgabe als getrennte Ebenen\nOutput Ascii File , Ascii-Datei ausgeben\nOutput Chroma NR , Ausgabe Chroma NR\nOutput CLUT , Ausgabe CLUT\nOutput CLUT Resolution , Ausgabe CLUT Auflösung\nOutput Coordinates File , Ausgabe-Koordinaten-Datei\nOutput Corresponding CLUT , Ausgabe Entsprechende CLUT\nOutput Directory , Ausgabe-Verzeichnis\nOutput Each Piece on a Different Layer , Ausgabe jedes Teils auf einer anderen Ebene\nOutput Filename , Ausgabe-Dateiname\nOutput Files , Ausgabe-Dateien\nOutput Folder , Ausgabe-Ordner\nOutput Format , Ausgabeformat\nOutput Frames , Ausgabe-Frames\nOutput Height , Ausgabe-Höhe\nOutput HTML File , HTML-Datei ausgeben\nOutput Layers , Ausgabe-Ebenen\nOutput Mode , Ausgabe-Modus\nOutput Multiple Layers , Mehrere Ebenen ausgeben\nOutput Preset as a HaldCLUT Layer , Ausgabevoreinstellung als HaldCLUT-Schicht\nOutput Region Delimiters , Ausgabe-Regionsbegrenzer\nOutput Saturation , Ausgabe-Sättigung\nOutput Sharpening , Schärfen der Ausgabe\nOutput Stroke Layer On , Ausgabestroke-Ebene Ein\nOutput to Folder , Ausgabe in Ordner\nOutput Type , Ausgabe-Typ\nOutput Width , Ausgabe-Breite\nOutside , Außerhalb\nOutside Color , Außenfarbe\nOutside-In , Außen-Innen\nOutward , Auswärts\nOverall Blur , Allgemeine Unschärfe\nOverall Contrast , Gesamtkontrast\nOverall Lightness , Allgemeine Leichtigkeit\nOverlap (%) , Überlappung (%)\nOverlay , Überlagerung\nOversample , Überbeispiel\nOvershoot , Überschwingen\nP''(z) , P'''(z)\nPadding (px) , Polsterung (px)\nPaint , Malen\nPaint Daub , Farbe Daub\nPaint Effect , Farbeffekt\nPaint Splat , Streichen Splat\nPainter's Edge Protection Flow , Malerischer Kantenschutz-Fluss\nPainter's Smoothness , Geschmeidigkeit des Malers\nPainter's Touch Sharpness , Berührungsschärfe des Malers\nPainting , Malerei\nPainting Opacity , Deckkraft von Gemälden\nPaintstroke , Farbschlag\nPaper Texture , Papier-Textur\nParallel Processing , Parallele Verarbeitung\nParrots , Papageien\nPassing By , Vorübergehend\nPastell Art , Pastell-Kunst\nPatch , Aufnäher\nPatch Measure , Patch-Maß\nPatch Size , Patch-Größe\nPatch Size for Analysis , Patch-Größe für die Analyse\nPatch Size for Synthesis , Patch-Größe für Synthese\nPatch Size for Synthesis (Final) , Patch-Größe für Synthese (endgültig)\nPatch Smoothness , Patch-Glätte\nPatch Variance , Patch-Abweichung\nPattern , Muster\nPattern Angle , Muster-Winkel\nPattern Height , Muster-Höhe\nPattern Type , Muster-Typ\nPattern Variation 1 , Muster-Variation 1\nPattern Variation 2 , Muster-Variation 2\nPattern Variation 3 , Muster-Variation 3\nPattern Weight , Gewicht des Musters\nPattern Width , Breite des Musters\nPaw , Pfote\nPCA Transfer , PCA-Übertragung\nPea Soup , Erbsensuppe\nPen Drawing , Stift-Zeichnung\nPenalize Patch Repetitions , Patch-Wiederholungen bestrafen\nPencil , Bleistift\nPencil Amplitude , Bleistift-Amplitude\nPencil Portrait , Bleistift-Portrait\nPencil Size , Bleistift-Größe\nPencil Smoother Edge Protection , Kantenschutz mit Bleistiftglätter\nPencil Smoother Sharpness , Bleistift Glättende Schärfe\nPencil Smoother Smoothness , Bleistift Glättende Glätte\nPencil Type , Bleistift-Typ\nPencils , Stifte\nPeppers , Paprika\nPercent of Image Half-Hypotenuse (%) , Prozent der Bild-Halb-Hypotenuse (%)\nPeriodic , Periodisch\nPeriodic Dots , Periodische Punkte\nPeriodicity , Periodizität\nPerserve Luminance , Luminanz erhalten\nPerspective , Perspektive\nPerturbation , Störeinflüsse\nPetals , Blütenblätter\nPhone , Telefon\nPhotoComix Preset , PhotoComix-Voreinstellung\nPhotoillustration , Fotoillustration\nPicasso: Seated Woman , Picasso: Sitzende Frau\nPicasso: The Reservoir - Horta De Ebro , Picasso: Der Stausee - Horta De Ebro\nPictureFX (19) , BildFX (19)\nPiece Complexity , Komplexität des Stücks\nPiece Size (px) , Stückgröße (px)\nPin Light , Pin-Licht\nPink Fade , Rosa Verblassen\nPixel Sort , Pixel-Sortierung\nPixel Values , Pixel-Werte\nPlacement , Platzierung\nPlane , Flugzeug\nPlasma Effect , Plasma-Effekt\nPlot Type , Parzellentyp\nPoint #0 , Punkt #0\nPoint #1 , Punkt #1\nPoint #2 , Punkt #2\nPoint #3 , Punkt #3\nPoint 1 , Punkt 1\nPoint 2 , Punkt 2\nPoints , Punkte\nPolar Transform , Polartransformation\nPolaroid 665 Negative , Polaroid 665 Negativ\nPolaroid 665 Negative + , Polaroid 665 Negativ +\nPolaroid 665 Negative - , Polaroid 665 Negativ -\nPolaroid 665 Negative HC , Polaroid 665 Negativ HC\nPolaroid 669 Cold , Polaroid 669 Kalt\nPolaroid 669 Cold + , Polaroid 669 Kalt +\nPolaroid 669 Cold - , Polaroid 669 Kalt -\nPolaroid 669 Cold -- , Polaroid 669 Kalt --\nPolaroid 690 Cold , Polaroid 690 Kalt\nPolaroid 690 Cold + , Polaroid 690 Kalt +\nPolaroid 690 Cold ++ , Polaroid 690 Kalt ++\nPolaroid 690 Cold - , Polaroid 690 Kalt -\nPolaroid 690 Cold -- , Polaroid 690 Kalt --\nPolaroid Polachrome , Polaroid-Polachrom\nPolaroid PX-100UV+ Cold , Polaroid PX-100UV+ Kalt\nPolaroid PX-100UV+ Cold + , Polaroid PX-100UV+ Kalt +\nPolaroid PX-100UV+ Cold ++ , Polaroid PX-100UV+ Kalt ++\nPolaroid PX-100UV+ Cold +++ , Polaroid PX-100UV+ Kalt +++\nPolaroid PX-100UV+ Cold - , Polaroid PX-100UV+ Kalt -\nPolaroid PX-100UV+ Cold -- , Polaroid PX-100UV+ Kalt --\nPolaroid PX-680 Cold , Polaroid PX-680 Kalt\nPolaroid PX-680 Cold + , Polaroid PX-680 Kalt +\nPolaroid PX-680 Cold ++ , Polaroid PX-680 Kalt ++\nPolaroid PX-680 Cold ++a , Polaroid PX-680 Kalt ++a\nPolaroid PX-680 Cold - , Polaroid PX-680 Kalt -\nPolaroid PX-680 Cold -- , Polaroid PX-680 Kalt --\nPolaroid PX-70 Cold , Polaroid PX-70 Kalt\nPolaroid PX-70 Cold + , Polaroid PX-70 Kalt +\nPolaroid PX-70 Cold ++ , Polaroid PX-70 Kalt ++\nPolaroid PX-70 Cold - , Polaroid PX-70 Kalt -\nPolaroid PX-70 Cold -- , Polaroid PX-70 Kalt --\nPolaroid Time Zero (Expired) , Polaroid-Zeit Null (abgelaufen)\nPolaroid Time Zero (Expired) + , Polaroidzeit Null (abgelaufen) +\nPolaroid Time Zero (Expired) ++ , Polaroid-Zeit Null (abgelaufen) ++\nPolaroid Time Zero (Expired) - , Polaroid-Zeit Null (abgelaufen) -\nPolaroid Time Zero (Expired) -- , Polaroid Time Zero (abgelaufen) --\nPolaroid Time Zero (Expired) --- , Polaroid Time Zero (abgelaufen) ---\nPolaroid Time Zero (Expired) Cold , Polaroid Zeit Null (abgelaufen) Kalt\nPolaroid Time Zero (Expired) Cold - , Polaroid Time Zero (abgelaufen) Kalt -\nPolaroid Time Zero (Expired) Cold -- , Polaroid Time Zero (Abgelaufen) Kalt --\nPolaroid Time Zero (Expired) Cold --- , Polaroid Time Zero (abgelaufen) Kalt ---\nPole Long , Pole lang\nPole Rotation , Pol-Drehung\nPolka Dots , Polka-Punkte\nPollock: Convergence , Pollack: Konvergenz\nPollock: Summertime Number 9A , Pollack: Sommerzeit Nummer 9A\nPolygonize [Delaunay] , Polygonisieren [Delaunay]\nPolygonize [Energy] , Polygonisieren [Energie]\nPop Shadows , Pop-Schatten\nPortrait , Porträt\nPortrait Retouching , Porträt-Retusche\nPortrait-1 , Porträt-1\nPortrait-2 , Porträt-2\nPortrait-3 , Porträt-3\nPortrait-4 , Porträt-4\nPortrait-5 , Porträt-5\nPortrait-6 , Porträt-6\nPortrait-7 , Porträt-7\nPortrait-8 , Porträt-8\nPortrait-9 , Porträt-9\nPortrait0 , Porträt0\nPortrait1 , Porträt1\nPortrait10 , Porträt10\nPortrait2 , Porträt2\nPortrait3 , Porträt3\nPortrait4 , Porträt4\nPortrait5 , Porträt5\nPortrait6 , Porträt6\nPortrait7 , Porträt7\nPortrait8 , Porträt8\nPortrait9 , Porträt9\nPosition , Standpunkt\nPosition X Origin (%) , Position X Ursprung (%)\nPosition Y Origin (%) , Position Y Ursprung (%)\nPositive , Positiv\nPost-Normalize , Post-Normalisierung\nPost-Process , Post-Prozess\nPoster Edges , Poster Ränder\nPosterization Antialiasing , Posterisierung Antialiasing\nPosterization Level , Posterisierungsgrad\nPosterize , Plakatieren Sie\nPosterized Dithering , Posterisiertes Dithering\nPow , Zuständigkeit\nPower , Macht\nPre-Defined , Vordefiniert\nPre-Defined Colormap , Vordefinierte Farbkarte\nPre-Gamma , Vor-Gamma\nPre-Normalize , Vor-Normalisierung\nPre-Normalize Image , Bild vornormalisieren\nPre-Process , Vor-Prozess\nPrecision , Präzision\nPrecision (%) , Genauigkeit (%)\nPreliminary Surface Shift , Vorläufige Oberflächenverschiebung\nPreliminary X-Axis Scaling , Vorläufige X-Achsen-Skalierung\nPreliminary Y-Axis Scaling , Vorläufige Y-Achsen-Skalierung\nPreprocessor Power , Leistung des Präprozessors\nPreprocessor Radius , Präprozessor-Radius\nPreserve Canvas for Post Bump Mapping , Leinwand für Post-Bump-Mapping konservieren\nPreserve Edges , Kanten konservieren\nPreserve Image Dimension , Bilddimension erhalten\nPreserve Initial Brightness , Ursprüngliche Helligkeit beibehalten\nPreserve Luminance , Leuchtdichte erhalten\nPreset , Voreingestellt\nPreview , Vorschau\nPreview All Outputs , Vorschau aller Ausgaben\nPreview Bands , Vorschau Bands\nPreview Brush , Vorschau-Pinsel\nPreview Data , Vorschau von Daten\nPreview Detected Shapes , Vorschau erkannter Formen\nPreview Frame Selection , Vorschau der Rahmenauswahl\nPreview Gradient , Vorschau-Farbverlauf\nPreview Grain Alone , Vorschau Grain Alone\nPreview Grid , Vorschau-Raster\nPreview Guides , Vorschau-Anleitungen\nPreview Mapping , Vorschau-Mapping\nPreview Mask , Vorschau-Maske\nPreview Only Shadow , Vorschau nur Schatten\nPreview Opacity (%) , Vorschau-Durchsichtigkeit (%)\nPreview Original , Vorschau Original\nPreview Precision , Vorschau Präzision\nPreview Progress (%) , Vorschau Fortschritt (%)\nPreview Progression While Running , Vorschau des Fortschritts während der Ausführung\nPreview Ref Point , Vorschau Ref-Punkt\nPreview Reference Circle , Vorschau Referenzkreis\nPreview Selection , Vorschau-Auswahl\nPreview Shape , Vorschau Form\nPreview Shows , Vorschau-Shows\nPreview Split , Vorschau-Split\nPreview Subsampling , Vorschau Subsampling\nPreview Time , Vorschau-Zeit\nPreview Tones Map , Vorschau der Töne Karte\nPreview Type , Vorschau-Typ\nPreview Without Alpha , Vorschau ohne Alpha\nPrimary Angle , Primärer Winkel\nPrimary Color , Primärfarbe\nPrimary Factor , Primärer Faktor\nPrimary Gamma , Primäres Gamma\nPrimary Radius , Primärer Radius\nPrimary Shift , Primäre Schicht\nPrimary Twist , Primäre Drehung\nPrint Adjustment Marks , Druckanpassungs-Markierungen\nPrint Films (12) , Filme drucken (12)\nPrint Frame Numbers , Nummern der Druckrahmen\nPrint Size Unit , Einheit der Druckgröße\nPrint Size Width , Druckgröße Breite\nPrivacy Notice , Hinweis zum Datenschutz\nPro Neg Hi , Pro Neg Hallo\nPro Neg Std , Pro Neg Std.\nProbability Map , Wahrscheinlichkeitskarte\nProcedural , Verfahrensfragen\nProcess As , Prozess als\nProcess by Blocs of Size , Prozess nach Größenblöcken\nProcess Channels Individually , Kanäle einzeln verarbeiten\nProcess Top Layer Only , Nur obere Schicht verarbeiten\nProcess Transparency , Prozess-Transparenz\nProcessing Mode , Verarbeitungs-Modus\nProgressen , Fortschritt\nPropagation , Ausbreitung\nProportion , Anteil\nProtanomaly , Protanomalie\nProtanopia , Protanopie\nProtect Highlights 01 , Highlights schützen 01\nPrussian Blue , Preußisch Blau\nPseudo-Gray Dithering , Pseudo-Grau-Dithering\nPurple , Violett\nPurple11 (12) , Violett11 (12)\nPuzzle , Rätsel\nPyramid , Pyramide\nPyramid Processing , Pyramiden-Verarbeitung\nPythagoras Tree , Pythagoras-Baum\nQuadrangle , Viereck\nQuadratic , Quadratisch\nQuadtree Variations , Quadtree Variationen\nQuality , Qualität\nQuality (%) , Qualität (%)\nQuantization , Quantifizierung\nQuantize Colors , Farben quantisieren\nQuasi-Gaussian , Quasi-gaußisch\nQuick , Schnell\nQuick Copyright , Schnell Copyright\nQuick Enlarge , Schnell vergrößern\nR/B Smoothness (Principal) , R/B Glätte (Prinzipal)\nR/B Smoothness (Secondary) , R/B-Glätte (sekundär)\nRadius / Angle , Radius/Winkel\nRadius [Manual] , Radius [Manuell]\nRadius Cut , Radius-Schnitt\nRadius Middle Circle , Radius Mittelkreis\nRadius Outer Circle A (>0 W%) (<0 H%) , Radius Außenkreis A (>0 W%) (<0 H%)\nRain & Snow , Regen und Schnee\nRainbow , Regenbogen\nRaindrops , Regentropfen\nRandom , Zufällig\nRandom [non-Transparent] , Zufällig [nicht-transparent]\nRandom Angle , Zufälliger Winkel\nRandom Color Ellipses , Zufällige Farb-Ellipsen\nRandom Colors , Zufällige Farben\nRandom Seed , Zufälliges Saatgut\nRandom Shade Stripes , Zufällige Farbstreifen\nRandomize , Randomisieren Sie\nRandomized , Randomisiert\nRandomness , Zufälligkeit\nRange , Bereich\nRatio , Verhältnis\nRaw , Roh\nRays , Rochen\nRays Colors AB , Rochen-Farben AB\nRays Colors ABC , Rochenfarben ABC\nRays Colors ABCD , Strahlen-Farben ABCD\nRays Colors ABCDE , Rochen-Farben ABCDE\nRays Colors ABCDEF , Rochen-Farben ABCDEF\nRays Colors ABCDEFG , Rochen-Farben ABCDEFG\nRebuild From Similar Blocs , Neuaufbau aus ähnlichen Blöcken\nRecompose , neu verfassen\nReconstruct From Previous Frames , Aus früheren Frames rekonstruieren\nRecover , wiederherstellen\nRecover Highlights , Höhepunkte der Erholung\nRecover Shadows , Schatten wiederherstellen\nRecovery , Wiederherstellung\nRectangle , Rechteck\nRecursion Depth , Rekursionstiefe\nRecursions , Rekursionen\nRecursive Median , Rekursiver Median\nRed , Rot\nRed - Green - Blue , Rot - Grün - Blau\nRed - Green - Blue - Alpha , Rot - Grün - Blau - Alpha\nRed Afternoon 01 , Roter Nachmittag 01\nRed Blue Yellow , Rot Blau Gelb\nRed Chroma Factor , Roter Chroma-Faktor\nRed Chroma Shift , Rot-Chroma-Verschiebung\nRed Chroma Smoothness , Rot-Chroma-Glätte\nRed Chrominance , Rote Chrominanz\nRed Day 01 , Roter Tag 01\nRed Dream 01 , Roter Traum 01\nRed Factor , Roter Faktor\nRed Level , Rote Stufe\nRed Rotations , Rot Rotationen\nRed Shift , Rotverschiebung\nRed Smoothness , Rote Glätte\nRed Wavelength , Rote Wellenlänge\nRed-Eye Attenuation , Rote-Augen-Abschwächung\nRed-Green , Rot-Grün\nReds , Rote\nReds Oranges Yellows , Rot Orangen Gelb\nReduce Halos , Halos reduzieren\nReduce Noise , Lärm reduzieren\nReduce RAM , RAM verkleinern\nReduce Redness , Rötung reduzieren\nReference , Referenz\nReference Angle (deg.) , Referenzwinkel (Grad)\nReference Color , Referenzfarbe\nReference Colors , Referenz-Farben\nReflect , Nachdenken\nReflection , Reflexion\nRefraction , Refraktion\nRegular Grid , Reguläres Gitter\nRegularity , Regelmäßigkeit\nRegularity (%) , Regelmässigkeit (%)\nRegularization , Regularisierung\nRegularization (%) , Regularisierung (%)\nRegularization Factor , Regularisierungs-Faktor\nRegularization Iterations , Regularisierungs-Iterationen\nReject , ablehnen\nRejected Colors , Abgelehnte Farben\nRejected Mask , Abgelehnte Maske\nRelative Block Count , Relative Block-Anzahl\nRelative Size , Relative Größe\nRelative Warping , Relative Verwölbung\nRelease Notes , Anmerkungen zur Veröffentlichung\nRelief , Erleichterung\nRelief Amplitude , Entlastungsamplitude\nRelief Contrast , Relief Kontrast\nRelief Light , Relief-Licht\nRelief Size , Größe des Reliefs\nRelief Smoothness , Relief Glätte\nRemove Artifacts From Micro/Macro Detail , Artefakte aus Mikro-/Makro-Details entfernen\nRemove Hot Pixels , Hot Pixels entfernen\nRemove Tile , Kachel entfernen\nRender Multiple Frames , Rendern mehrerer Frames\nRender on Dark Areas , Darstellung in dunklen Bereichen\nRender on White Areas , Darstellung auf weißen Flächen\nRender Routine for Wiggle Animations , Render-Routine für Wackelanimationen\nRendering Mode , Rendering-Modus\nRepair Scanned Document , Gescanntes Dokument reparieren\nRepeat , Wiederholen Sie\nRepeat [Memory Consuming!] , Wiederholen Sie [Speicherfresser!]\nRepeats , Wiederholt\nReplace , Ersetze\nReplace (Sharpest) , Ersetzen (Schärfste)\nReplace Layer with CLUT , Schicht durch CLUT ersetzen\nReplace Source by Target , Quelle durch Ziel ersetzen\nReplace With White , Ersetzen durch Weiß\nReplaced Color , Ersetzte Farbe\nReplacement Color , Ersatzfarbe\nReptile , Reptil\nRescaling , Neuskalierung\nReset View , Ansicht zurücksetzen\nResize Image for Optimum Effect , Bildgröße für optimalen Effekt ändern\nResolution , Entschließung\nResolution (%) , Entschließung (%)\nResolution (px) , Auflösung (px)\nResult Image , Ergebnis Bild\nResult Type , Ergebnis-Typ\nResynthetize Texture [FFT] , Textur resynthetisieren [FFT]\nResynthetize Texture [Patch-Based] , Textur resynthetisieren [Patch-basiert]\nRetouch Layer , Retusche-Ebene\nRetouched and Sharpened Areas , Retuschierte und geschärfte Bereiche\nRetouched Areas Only , Nur retuschierte Bereiche\nRetouched Image , Retuschiertes Bild\nRetouched Image Basic , Retuschiertes Bild Basic\nRetouched Image Final , Retuschiertes Bild Finale\nRetouching Style , Retusche-Stil\nRetro Brown 01 , Retro-Braun 01\nRetro Fade , Rückblende\nRetro Magenta 01 , Retro-Magenta 01\nRetro Summer 3 , Retro-Sommer 3\nRetro Yellow 01 , Retro-Gelb 01\nReturn Scaling , Rückgabe Skalierung\nReverse Bits , Bits umkehren\nReverse Bytes , Umgekehrte Bytes\nReverse Effect , Umgekehrte Wirkung\nReverse Endianness , Umgekehrte Endianness\nReverse Flip , Rückwärts spiegeln\nReverse Frame Stack , Umgekehrter Rahmenstapel\nReverse Gradient , Umgekehrter Gradient\nReverse Mod , Rückwärts-Mod\nReverse Motion , Rückwärtsbewegung\nReverse Order , Umgekehrte Reihenfolge\nReverse Pow , Umgekehrte Kraft\nReversing , Umkehrung\nRevert Layer Order , Reihenfolge der Schichten umkehren\nRevert Layers , Ebenen umkehren\nRGB [All] , RGB [Alle]\nRGB [Blue] , RGB [Blau]\nRGB [Green] , RGB [Grün]\nRGB [red] , RGB [rot]\nRGB Image + Binary Mask (2 Layers) , RGB-Bild + Binärmaske (2 Ebenen)\nRGB Quantization , RGB-Quantisierung\nRGB Tone , RGB-Ton\nRGBA [All] , RGBA [Alle]\nRGBA Foreground + Background (2 Layers) , RGBA Vordergrund + Hintergrund (2 Ebenen)\nRGBA Image (Full-Transparency / 1 Layer) , RGBA-Bild (Voll-Transparenz / 1 Ebene)\nRGBA Image (Updatable / 1 Layer) , RGBA-Bild (aktualisierbar / 1 Ebene)\nRice , Reis\nRight , Rechts\nRight Diagonal  Foreground , Rechte Diagonale im Vordergrund\nRight Diagonal Foreground , Rechte Diagonale im Vordergrund\nRight Eye View , Ansicht des rechten Auges\nRight Foreground , Rechter Vordergrund\nRight Position , Rechte Position\nRight Side Orientation , Orientierung auf der rechten Seite\nRight Slope , Rechte Neigung\nRight Stream Only , Nur rechter Stream\nRigid , Starr\nRipple , Welligkeit\nRobert Cross 2 , Robert-Kreuz 2\nRoddy (by Mahvin) , Roddy (von Mahvin)\nRodilius [Animated] , Rodilius [animiert]\nRollei Retro 80s , Rollei Retro 80er Jahre\nRooster , Hahn\nRotate , Rotieren\nRotate (muted) , Rotieren (stumm)\nRotate (vibrant) , Rotieren (lebhaft)\nRotate 180 Deg. , Um 180 Grad drehen.\nRotate 270 Deg. , Drehen Sie 270 Grad.\nRotate 90 Deg. , Um 90 Grad drehen.\nRotate Hue Bands , Farbtonbänder drehen\nRotate Tree , Baum drehen\nRotated , Gedreht\nRotated (crush) , Gedreht (zerkleinern)\nRotations , Rotationen\nRound , Runde\nRoundness , Rundheit\nRow by Row , Reihe für Reihe\nRYB [All] , RYB [Alle]\nRYB [Blue] , RYB [Blau]\nRYB [Red] , RYB [Rot]\nRYB [Yellow] , RYB [Gelb]\nS-Curve Contrast , S-Kurven-Kontrast\nSalt and Pepper , Salz und Pfeffer\nSame as Input , Dasselbe wie Eingabe\nSame Axis , Gleiche Achse\nSample Image , Beispielbild\nSampling , Bemusterung\nSat Bottom , Sat Unten\nSat Range , Sat-Bereich\nSaturated Blue , Gesättigtes Blau\nSaturation , Sättigung\nSaturation (%) , Sättigung (%)\nSaturation Channel Gamma , Sättigungskanal-Gamma\nSaturation Correction , Sättigungs-Korrektur\nSaturation EQ , Sättigung EQ\nSaturation Factor , Sättigungs-Faktor\nSaturation Offset , Sättigungs-Offset\nSaturation Shift , Sättigungs-Verschiebung\nSaturation Smoothness , Sättigung Glätte\nSave CLUT as .Cube or .Png File , CLUT als .Cube- oder .Png-Datei speichern\nSave Gradient As , Farbverlauf speichern unter\nSaving Private Damon , Private Damon retten\nScalar , Skalar\nScale , Skala\nScale (%) , Skala (%)\nScale 1 , Skala 1\nScale 2 , Skala 2\nScale CMYK , CMYK skalieren\nScale Factor , Skalenfaktor\nScale Output , Ausgabe skalieren\nScale Plasma , Schuppenplasma\nScale RGB , RGB skalieren\nScale Style to Fit Target Resolution , Skalierungsstil zur Anpassung an die Zielauflösung\nScale Variations , Skalen-Variationen\nScaled , Skaliert\nScales , Skalen\nScaling Factor , Skalierungsfaktor\nScene Selector , Szenen-Wahlschalter\nScreen , Bildschirm\nScreen Border , Bildschirmrand\nSeamcarve , Nahtschnitzerei\nSeamless Deco , Nahtlose Dekoration\nSeamless Turbulence , Nahtlose Turbulenz\nSecant , Sekante\nSecond Color , Zweite Farbe\nSecond Offset , Zweiter Versatz\nSecond Radius , Zweiter Radius\nSecond Size , Zweite Größe\nSecondary Color , Sekundäre Farbe\nSecondary Factor , Sekundärer Faktor\nSecondary Gamma , Sekundäres Gamma\nSecondary Radius , Sekundärer Radius\nSecondary Shift , Sekundäre Schicht\nSecondary Twist , Sekundäre Drehung\nSectors , Sektoren\nSeed , Saatgut\nSegment Max Length (px) , Maximale Länge des Segments (px)\nSegmentation , Segmentierung\nSegmentation Edge Threshold , Segmentierungskanten-Schwelle\nSegmentation Smoothness , Segmentierungs-Glätte\nSegments , Segmente\nSegments Strength , Stärke der Segmente\nSelect By , Auswählen nach\nSelect-Replace Color , Wählen-Ersetzen-Farbe\nSelected Color , Ausgewählte Farbe\nSelected Colors , Ausgewählte Farben\nSelected Frame , Ausgewählter Rahmen\nSelected Mask , Ausgewählte Maske\nSelection , Auswahl\nSelective Desaturation , Selektive Entsättigung\nSelective Gaussian , Selektiver Gauß\nSelf , Selbst\nSelf Glitching , Selbstglitching\nSelf Image , Selbstbild\nSensitivity , Empfindlichkeit\nSequence X4 , Sequenz X4\nSequence X6 , Sequenz X6\nSequence X8 , Sequenz X8\nSerenity , Gelassenheit\nSerial Number , Seriennummer\nSerpent , Schlange\nSet Aspect Only , Nur Aspekt einstellen\nSet Frame Format , Rahmenformat festlegen\nSeven Layers , Sieben Schichten\nSeventies Magazine , Zeitschrift der siebziger Jahre\nShade , Farbton\nShade Angle , Schatten-Winkel\nShade Back to First Color , Farbton Zurück zur ersten Farbe\nShade Bobs , Schatten Bobs\nShade Strength , Farbton-Stärke\nShading , Schattierung\nShading (%) , Schattierung (%)\nShadow , Schatten\nShadow Contrast , Schatten-Kontrast\nShadow Intensity , Schatten-Intensität\nShadow King 39 , Schattenkönig 39\nShadow Offset X , Schattenversatz X\nShadow Offset Y , Schattenversatz Y\nShadow Patch , Schatten-Patch\nShadow Size , Größe des Schattens\nShadow Smoothness , Schattenglätte\nShadows , Schatten\nShadows Abstraction , Schatten-Abstraktion\nShadows Brightness , Schatten-Helligkeit\nShadows Color Intensity , Schatten Farbintensität\nShadows Hue Shift , Schatten-Farbverschiebung\nShadows Lightness , Schatten-Helligkeit\nShadows Selection , Auswahl der Schatten\nShadows Threshold , Schatten-Schwellenwert\nShadows Zone , Schatten-Zone\nShamoon Abbasi (25) , Schamun Abbasi (25)\nShape , Form\nShape Area Max , Form Fläche Max\nShape Area Max0 , Formfläche Max0\nShape Area Min , Form Bereich Min\nShape Area Min0 , Formfläche Min0\nShape Average , Form Durchschnitt\nShape Average0 , Form Durchschnitt0\nShape Max , Form Max\nShape Max0 , Form Max0\nShape Median , Form Median\nShape Median0 , Form Median0\nShape Min , Form Min\nShape Min0 , Form Min0\nShapeism , Shapeismus\nShapes , Formen\nSharp Abstract , Scharfer Abstrakter\nSharpen , Schärfen\nSharpen [Deblur] , Schärfen [Entgraten]\nSharpen [Gold-Meinel] , Schärfen [Gold-Meinel]\nSharpen [Gradient] , Schärfen [Gradient]\nSharpen [Hessian] , Schärfen [hessisch]\nSharpen [Inverse Diffusion] , Schärfen [Inverse Diffusion]\nSharpen [Multiscale] , Schärfen [Multiskala]\nSharpen [Octave Sharpening] , Schärfen [Oktav-Schärfung]\nSharpen [Richardson-Lucy] , Schärfen [Richardson-Lucy]\nSharpen [Shock Filters] , Schärfen [Stoßfilter]\nSharpen [Texture] , Schärfen [Textur]\nSharpen [Tones] , Schärfen [Töne]\nSharpen [Unsharp Mask] , Schärfen [Unscharfe Maske]\nSharpen [Whiten] , Schärfen [Weiß]\nSharpen Details in Preview , Details in der Vorschau schärfen\nSharpen Edges Only , Nur Kanten schärfen\nSharpen Object , Objekt schärfen\nSharpen Radius , Radius schärfen\nSharpen Shades , Schärfen von Schattierungen\nSharpened Areas Only , Nur geschärfte Bereiche\nSharpening , Schärfen\nSharpening Layer , Schärfungsschicht\nSharpening Radius , Schärf-Radius\nSharpening Strength , Schärfen der Stärke\nSharpening Type , Schärfender Typ\nSharpest , Schärfste\nSharpness , Schärfe\nShift Linear Interpolation? , Lineare Verschiebungsinterpolation?\nShift Point , Verschiebungspunkt\nShift X , Verschiebung X\nShift Y , Verschiebung Y\nShininess , Glanz\nShivers , Schüttelfrost\nShock Waves , Schockwellen\nShopping Cart , Der Warenkorb\nShow Both Poles , Beide Polen anzeigen\nShow Difference , Unterschied anzeigen\nShow Frame , Frame anzeigen\nShow Grid , Gitter anzeigen\nShow Watershed , Wassereinzugsgebiet anzeigen\nShrink , Schrumpfen\nShuffle Pieces , Mischen von Stücken\nSide by Side , Seite an Seite\nSierpinksi Design , Sierpinksi-Entwurf\nSierpinski Triangle , Sierpinski-Dreieck\nSilver , Silber\nSimilarity Space , Ähnlichkeitsraum\nSimple Local Contrast , Einfacher lokaler Kontrast\nSimple Noise Canvas , Einfache Lärm-Leinwand\nSimulate Film , Film simulieren\nSine , Sinus\nSine+ , Sinus+\nSingle (Merged) , Einzeln (verschmolzen)\nSingle Custom Depth Map , Einzelne benutzerdefinierte Tiefenkarte\nSingle Image Stereogram , Einzelbild-Stereogramm\nSingle Layer , Einzelne Schicht\nSingle Opaque Shapes Over Transp. BG , Einzelne opake Formen über Transp. BG\nSix Layers , Sechs Schichten\nSixteen Threads , Sechzehn Fäden\nSize , Größe\nSize (%) , Größe (%)\nSize for Bright Tones , Größe für helle Töne\nSize for Dark Tones , Größe für dunkle Töne\nSize of Frame Numbers (%) , Größe der Rahmennummern (%)\nSize Variance , Größenabweichung\nSize-1 , Größe-1\nSize-2 , Größe 2\nSize-3 , Größe 3\nSkeleton , Skelett\nSketch , Skizze\nSkin Estimation , Schätzung der Haut\nSkin Mask , Hautmaske\nSkin Tone Colors , Hautton-Farben\nSkin Tone Mask , Hautton-Maske\nSkin Tone Protection , Hautton-Schutz\nSkip All Other Steps , Alle anderen Schritte überspringen\nSkip Finest Scales , Feinste Skalen überspringen\nSkip Others Steps , Andere Schritte überspringen\nSkip This Step , Diesen Schritt überspringen\nSkip to Use the Mask to Boost , Überspringen, um die Maske zum Verstärken zu verwenden\nSlice Luminosity , Schicht-Leuchtkraft\nSlide [Color] (26) , Dia [Farbe] (26)\nSlow &#40;Accurate&#41; , Langsam (Akkurat)\nSlow Recovery , Langsame Erholung\nSmall , Klein\nSmall (Faster) , Klein (Schneller)\nSmallHD Movie Look (7) , SmallHD-Film-Look (7)\nSmart , Clever\nSmart Contrast , Intelligenter Kontrast\nSmart Threshold , Intelligente Schwelle\nSmooth , Glatt\nSmooth [Anisotropic] , Glatt [Anisotrop]\nSmooth [Antialias] , Glatt [Antialias]\nSmooth [Bilateral] , Glatt [Bilateral]\nSmooth [Block PCA] , Glätten [Block PCA]\nSmooth [Diffusion] , Glatt [Diffusion]\nSmooth [Geometric-Median] , Glatt [Geometrisch-medianisch]\nSmooth [Guided] , Glatt [Geführt]\nSmooth [IUWT] , Glatt [IUWT]\nSmooth [Mean-Curvature] , Glatt [Mittlere Krümmung]\nSmooth [Median] , Glatt [Median]\nSmooth [NL-Means] , Glatt [NL-Mittel]\nSmooth [Patch-Based] , Glatt [Patch-basiert]\nSmooth [Patch-PCA] , Glatt [Patch-PCA]\nSmooth [Perona-Malik] , Glatt [Perona-Malik]\nSmooth [Selective Gaussian] , Glatt [Selektives Gaußsches]\nSmooth [Skin] , Glatt [Haut]\nSmooth [Thin Brush] , Glatt [Dünne Bürste]\nSmooth [Total Variation] , Glatt [Gesamtvariation]\nSmooth [Wavelets] , Glatt [Wavelets]\nSmooth [Wiener] , Glatt [Wiener]\nSmooth Abstract , Glatter Abstrakt\nSmooth Amount , Glatter Betrag\nSmooth Clear , Glatt klar\nSmooth Colors , Glatte Farben\nSmooth Crome-Ish , Glattes Chrom-Isch\nSmooth Dark , Glatt dunkel\nSmooth Fade , Glattes Ausblenden\nSmooth Green Orange , Glattes Grün Orange\nSmooth Light , Sanftes Licht\nSmooth Looping , Glatte Schleife\nSmooth Only , Nur glatt\nSmooth Sailing , Reibungsloses Segeln\nSmooth Teal Orange , Glatte Krickente Orange\nSmoothen Background Reconstruction , Hintergrund-Rekonstruktion glätten\nSmoother Edge Protection , Glatterer Kantenschutz\nSmoother Sharpness , Geschmeidigere Schärfe\nSmoother Softness , Geschmeidigere Weichheit\nSmoothing , Glätten\nSmoothing Style , Glättender Stil\nSmoothing Type , Glättungstyp\nSmoothness , Glätte\nSmoothness (%) , Glätte (%)\nSmoothness (px) , Glätte (px)\nSmoothness Shadow , Glattheit Schatten\nSmoothness Type , Glätte-Typ\nSnowflake , Schneeflocke\nSnowflake 2 , Schneeflocke 2\nSnowflake Recursion , Schneeflocken-Rekursion\nSoft , Weich\nSoft  Light , Weiches Licht\nSoft Burn , Weiche Verbrennung\nSoft Dodge , Weiches Ausweichen\nSoft Fade , Weiches Überblenden\nSoft Glow , Sanftes Glühen\nSoft Glow [Animated] , Sanftes Glühen [animiert]\nSoft Light , Weiches Licht\nSoft Random Shades , Weiche Zufallsschattierungen\nSoft Warming , Sanfte Erwärmung\nSoften , Aufweichen\nSoften All Channels , Alle Kanäle aufweichen\nSoften Guide , Anleitung zum Weichmachen\nSoftlight , Weiches Licht\nSolarize , Solarisieren\nSolarize Color , Farbe solarisieren\nSolarized Color2 , Solarisierte Farbe2\nSolidify , Verfestigen\nSolve Maze , Labyrinth lösen\nSome , Einige\nSome Blue , Etwas Blau\nSome Cyan , Etwas Cyan\nSome Green , Einige Grüne\nSome Key , Einige Schlüssel\nSome Magenta , Etwas Magenta\nSome Red , Etwas Rot\nSome Yellow , Etwas Gelb\nSort Colors , Farben sortieren\nSorting Criterion , Sortierkriterium\nSource (%) , Quelle (%)\nSource Color #1 , Quellfarbe #1\nSource Color #10 , Quellfarbe #10\nSource Color #11 , Quellfarbe #11\nSource Color #12 , Quellfarbe #12\nSource Color #13 , Quellfarbe #13\nSource Color #14 , Quellfarbe #14\nSource Color #15 , Quellfarbe #15\nSource Color #16 , Quellfarbe #16\nSource Color #17 , Quellfarbe #17\nSource Color #18 , Quellfarbe #18\nSource Color #19 , Quellfarbe #19\nSource Color #2 , Quellfarbe #2\nSource Color #20 , Quellfarbe #20\nSource Color #21 , Quellfarbe #21\nSource Color #22 , Quellfarbe #22\nSource Color #23 , Quellfarbe #23\nSource Color #24 , Quellfarbe #24\nSource Color #3 , Quellfarbe #3\nSource Color #4 , Quellfarbe #4\nSource Color #5 , Quellfarbe #5\nSource Color #6 , Quellfarbe #6\nSource Color #7 , Quellfarbe #7\nSource Color #8 , Quellfarbe #8\nSource Color #9 , Quellfarbe #9\nSource X-Tiles , Quelle X-Tiles\nSource Y-Tiles , Quelle Y-Kacheln\nSpace , Weltraum\nSpacing , Abstände\nSpan , Spanne\nSpatial Bandwidth , Räumliche Bandbreite\nSpatial Metric , Räumliche Metrik\nSpatial Overlap , Räumliche Überlappung\nSpatial Precision , Räumliche Präzision\nSpatial Radius , Räumlicher Radius\nSpatial Regularization , Räumliche Regularisierung\nSpatial Sampling , Räumliche Probenahme\nSpatial Scale , Räumliche Skala\nSpatial Tolerance , Räumliche Toleranz\nSpatial Transition , Räumlicher Übergang\nSpatial Variance , Räumliche Varianz\nSpecial Effects , Besondere Effekte\nSpecific Saturation , Spezifische Sättigung\nSpecify Different Output Size , Unterschiedliche Ausgabegröße angeben\nSpecify HaldCLUT As , HaldCLUT angeben als\nSpecular , Spezielles\nSpecular (%) , Spiegel (%)\nSpecular Centering , Spiegelzentrierung\nSpecular Intensity , Spiegel-Intensität\nSpecular Light , Spiegelndes Licht\nSpecular Lightness , Spiegelnde Helligkeit\nSpecular Shininess , Glänzender Glanz\nSpecular Size , Spezielle Größe\nSpeed , Geschwindigkeit\nSphere , Bereich\nSpherize , Sphärisieren\nSpiral , Spirale\nSpiral RGB , Spirale RGB\nSpline Editor , Spline-Editor\nSpline Max Angle (deg) , Spline-Max-Winkel (Grad)\nSpline Max Length (px) , Maximale Spline-Länge (px)\nSpline Roundness , Spline-Rundheit\nSplit Base and Detail Output , Geteilte Basis- und Detailausgabe\nSplit Brightness / Colors , Geteilte Helligkeit/Farben\nSplit Details [Alpha] , Details aufteilen [Alpha]\nSplit Details [Gaussian] , Details aufspalten [Gauß]\nSplit Details [Wavelets] , Details aufspalten [Wavelets]\nSponge , Schwamm\nSpread , Verbreiten\nSpread Amount , Spread-Betrag\nSpread Angles , Spreizwinkel\nSpread Noise Amount , Ausbreitung Lärmpegel\nSpreading , Verbreitung\nSpring Morning , Frühlingsmorgen\nSprocket 231 , Zahnkranz 231\nSpy 29 , Spion 29\nSquare , Quadratisch\nSquare (Inv.) , Quadrat (Inv.)\nSquare 1 , Quadrat 1\nSquare 2 , Quadrat 2\nSquare to Circle , Quadrat zu Kreis\nSquared-Euclidean , Quadratisch-euklidisch\nSquares , Quadrate\nSquares (Outline) , Quadrate (Umriss)\nSRGB Conversion , SRGB-Umwandlung\nStabilizer , Stabilisator\nStained Glass , Buntes Glas\nStamp , Briefmarke\nStandard (256) , Norm (256)\nStandard [No Scan] , Standard [Kein Scan]\nStandard Deviation , Standard-Abweichung\nStar , Stern\nStar: -5*(z^3/3-Z/4)/2 , Stern: -5*(z^3/3-Z/4)/2\nStars , Sterne\nStars (Outline) , Sterne (Umriss)\nStart Angle , Startwinkel\nStart Color , Startfarbe\nStart Frame Number , Start-Rahmennummer\nStart of Mid-Tones , Beginn der Mitteltöne\nStarting Angle , Startwinkel\nStarting Color , Startfarbe\nStarting Feathering , Beginnende Befiederung\nStarting Frame , Startbild\nStarting Level , Ausgangsniveau\nStarting Pattern , Start-Muster\nStarting Point , Ausgangspunkt\nStarting Point (%) , Ausgangspunkt (%)\nStarting Scale (%) , Ausgangs-Skala (%)\nStarting Value , Anfangswert\nStationary Frames , Stationäre Rahmen\nStd Angle (deg.) , Std. Winkel (Grad)\nStd Branching , Std-Verzweigung\nStd Length Factor (%) , Std. Längenfaktor (%)\nStd Thickness Factor (%) , Std-Dicke-Faktor (%)\nStencil , Schablone\nStencil Type , Schablonentyp\nStep , Schritt\nStep (%) , Schritt (%)\nSteps , Schritte\nStereo Image , Stereo-Bild\nStereo Window Position , Stereo-Fensterposition\nStereographic Projection , Stereographische Projektion\nStereoscopic Image Alignment , Stereoskopische Bildausrichtung\nStereoscopic Window Position , Position des stereoskopischen Fensters\nStraight , Gerade\nStrands , Stränge\nStreak , Streifen\nStreet , Straße\nStrength , Stärke\nStrength (%) , Stärke (%)\nStrength Effect , Kraft-Wirkung\nStrength Highlights , Stärke-Highlights\nStrength Midtones , Stärke Mitteltöne\nStrength Shadows , Stärke Schatten\nStretch , Dehnen\nStretch Colors , Stretch-Farben\nStretch Contrast , Dehnungskontrast\nStretch Factor , Dehnungsfaktor\nStrip , Streifen\nStripe Orientation , Streifen-Orientierung\nStroke , Schlaganfall\nStroke Angle , Hubwinkel\nStroke Length , Hublänge\nStroke Strength , Schlaganfall-Stärke\nStrong , Stark\nStructure Smoothness , Glattheit der Struktur\nStudio , Atelier\nStyle , Stil\nStyle Variations , Stil-Variationen\nStylize , stilisieren\nSubdivisions , Unterdivisionen\nSubpixel Interpolation , Subpixel-Interpolation\nSubpixel Level , Subpixel-Ebene\nSubsampling (%) , Unterstichprobe (%)\nSubtle Blue , Zartes Blau\nSubtle Green , Subtiles Grün\nSubtle Yellow , Subtiles Gelb\nSubtract , Subtrahieren\nSubtractive , Subtraktiv\nSummer , Sommer\nSummer (alt) , Sommer (alt)\nSunny , Sonnig\nSunny (alt) , Sonnig (alt)\nSunny (rich) , Sonnig (reich)\nSunny (warm) , Sonnig (warm)\nSuper Warm (rich) , Super Warm (reichhaltig)\nSuper-Pixels , Super-Pixel\nSuperformula , Superformel\nSuperimpose with Original? , Mit Original überlagern?\nSurface Disturbance , Oberflächenstörung\nSurface Disturbance Multiplier , Oberflächenstörungsmultiplikator\nSwan , Schwan\nSwap , Tausch\nSwap Colors , Farben tauschen\nSwap Layers , Ebenen austauschen\nSwap Radius / Angle , Radius/Winkel vertauschen\nSwap Sides , Seiten tauschen\nSweet Bubblegum , Süßer Bubblegum\nSweet Gelatto , Süßes Gelatto\nSymmetric 2D Shape , Symmetrische 2D-Form\nSymmetry , Symmetrie\nSymmetry Sides , Symmetrie-Seiten\nSynthesis Scale , Synthese-Skala\nTangent Radius , Tangentialer Radius\nTarget Color #1 , Zielfarbe #1\nTarget Color #10 , Zielfarbe #10\nTarget Color #11 , Zielfarbe #11\nTarget Color #12 , Zielfarbe #12\nTarget Color #13 , Zielfarbe #13\nTarget Color #14 , Zielfarbe #14\nTarget Color #15 , Zielfarbe #15\nTarget Color #16 , Zielfarbe #16\nTarget Color #17 , Zielfarbe #17\nTarget Color #18 , Zielfarbe #18\nTarget Color #19 , Zielfarbe #19\nTarget Color #2 , Zielfarbe #2\nTarget Color #20 , Zielfarbe #20\nTarget Color #21 , Zielfarbe #21\nTarget Color #22 , Zielfarbe #22\nTarget Color #23 , Zielfarbe #23\nTarget Color #24 , Zielfarbe #24\nTarget Color #3 , Zielfarbe #3\nTarget Color #4 , Zielfarbe #4\nTarget Color #5 , Zielfarbe #5\nTarget Color #6 , Zielfarbe #6\nTarget Color #7 , Zielfarbe #7\nTarget Color #8 , Zielfarbe #8\nTarget Color #9 , Zielfarbe #9\nTeal Fade , Krickende Krickente\nTeal Magenta Gold , Krickente Magenta Gold\nTeal Moonlight , Tee-Mondlicht\nTeal Orange , Krickentee Orange\nTeal Orange 1 , Krickentee Orange 1\nTeal Orange 2 , Krickentee Orange 2\nTeal Orange 3 , Krickentee Orange 3\nTechnicalFX - Backlight Filter , TechnicalFX - Filter für Hintergrundbeleuchtung\nTemperature Balance , Temperatur-Gleichgewicht\nTen Layers , Zehn Schichten\nTends to Be Square , Neigt zur Quadratur\nTension Green 1 , Spannung Grün 1\nTension Green 2 , Spannung Grün 2\nTension Green 3 , Spannung Grün 3\nTension Green 4 , Spannung Grün 4\nTensor Smoothness , Tensor-Glätte\nTertiary Factor , Tertiärer Faktor\nTertiary Gamma , Tertiäres Gamma\nTertiary Shift , Tertiäre Schicht\nTertiary Twist , Tertiäre Drehung\nTexture , Beschaffenheit\nTexture Enhance , Textur verbessern\nTextured Glass , Strukturiertes Glas\nThe Game of Life , Das Spiel des Lebens\nThe Matrices , Die Matrizen\nThickness , Dicke\nThickness (%) , Dicke (%)\nThickness (px) , Dicke (px)\nThickness Factor , Dicke-Faktor\nThin Edges , Dünne Ränder\nThin Separators , Dünne Separatoren\nThinness , Schlankheit\nThinning , Ausdünnung\nThinning (Slow) , Ausdünnung (langsam)\nThree Layers , Drei Schichten\nThreshold , Schwelle\nThreshold (%) , Schwellenwert (%)\nThreshold Etch , Schwellenwert-Ätzung\nThreshold High , Schwelle Hoch\nThreshold Low , Schwellenwert Niedrig\nThreshold Max , Schwelle Max\nThreshold Mid , Schwelle Mitte\nThreshold On , Schwelle Ein\nThriller 2 , Krimi 2\nThumbnail Size , Größe der Miniaturansicht\nTikhonov , Tichonow\nTile Poles , Fliesenpfähle\nTile Size , Kachel-Größe\nTileable Rotation , Kachelbare Rotation\nTiled Isolation , Gekachelte Isolation\nTiled Normalization , Kachel-Normalisierung\nTiled Parameterization , Gekachelte Parametrisierung\nTiled Preview , Gekachelte Vorschau\nTiled Random Shifts , Gekachelte Zufallsverschiebungen\nTiled Rotation , Kachel-Rotation\nTiles , Kacheln\nTiles to Layers , Kacheln zu Ebenen\nTilt , Kippen Sie\nTime , Zeit\nTime Step , Zeitschritt\nTimed Image , Zeitgesteuertes Bild\nTiny , Winzig\nTo Equirectangular , Zu gleichschenklig\nTo Nadir / Zenith , Nach Nadir / Zenith\nToasted Garden , Getoasteter Garten\nToes , Zehen\nToggle to View Base Image , Umschalten zur Ansicht des Basisbildes\nTolerance , Toleranz\nTolerance to Gaps , Toleranz gegenüber Lücken\nTonal Bandwidth , Ton-Bandbreite\nTone Blur , Unscharfe Töne\nTone Enhance , Tonwertverbesserung\nTone Gamma , Ton-Gamma\nTone Mapping , Tone-Mapping\nTone Mapping (%) , Tone-Mapping (%)\nTone Mapping [Fast] , Tone-Mapping [Schnell]\nTone Mapping Fast , Tone-Mapping schnell\nTone Mapping Soft , Tone-Mapping weich\nTone Presets , Ton-Voreinstellungen\nTone Threshold , Ton-Schwellenwert\nTones Range , Tone-Bereich\nTones Smoothness , Töne Glätte\nTones to Layers , Töne zu Ebenen\nTop , Nach oben\nTop Layer , Obere Schicht\nTop Left , Oben links\nTop Right , Oben rechts\nTop-Left Vertex (%) , Scheitelpunkt oben links (%)\nTop-Right Vertex (%) , Scheitelpunkt oben rechts (%)\nTotal Layers , Total Schichten\nTotal Variation , Gesamte Variation\nTransfer Colors [Histogram] , Farben übertragen [Histogramm]\nTransfer Colors [Patch-Based] , Farben übertragen [Patch-basiert]\nTransfer Colors [PCA] , Farben übertragen [PCA]\nTransfer Colors [Variational] , Farben übertragen [Variational]\nTransform , Verwandeln\nTransition Map , Übergangs-Karte\nTransition Shape , Form des Übergangs\nTransition Smoothness , Glattheit des Übergangs\nTransmittance Map , Übertragungskarte\nTransparency , Transparenz\nTransparent , Transparente\nTransparent Background , Transparenter Hintergrund\nTransparent Black & White , Transparentes Schwarz-Weiß\nTransparent Color , Transparente Farbe\nTransparent on Black , Transparent auf Schwarz\nTransparent on White , Transparent auf Weiß\nTransparent Skin , Transparente Haut\nTree , Baum\nTrent 18 , Trient 18\nTriangle , Dreieck\nTriangles , Dreiecke\nTriangles (Outline) , Dreiecke (Umriss)\nTriangular Ha , Dreieckig Ha\nTriangular Hb , Dreieckig Hb\nTriangular Va , Dreieckig Va\nTriangular Vb , Dreieckig Vb\nTritanomaly , Tritanomalie\nTritanopia , Tritanopie\nTrue Colors 8 , Wahre Farben 8\nTrunk Color , Farbe des Stammes\nTrunk Opacity (%) , Trübung des Rumpfes (%)\nTrunks , Stämme\nTulips , Tulpen\nTurbulence , Turbulenzen\nTurbulence 2 , Turbulenz 2\nTurbulent Halftone , Turbulenter Halbton\nTurkiest 42 , Türkischste 42\nTurn on Rotate and Twirl , Drehen und Drehen einschalten\nTwirl , Wirbeln Sie\nTwisted Rays , Verdrehte Strahlen\nTwo Layers , Zwei Schichten\nTwo Threads , Zwei Fäden\nTwo-By-Two , Zwei-zu-Zwei\nType , Geben Sie  ein.\nType Snowflake , Typ Schneeflocke\nUltra Water , Ultra Wasser\nUnaligned Images , Nicht ausgerichtete Bilder\nUndeniable , Unbestreitbar\nUndeniable 2 , Unbestreitbar 2\nUnderwater , Unterwasser\nUndo Anaglyph , Anaglyphen rückgängig machen\nUnknown , Unbekannt\nUnquantize [JPEG Smooth] , Unquantisieren [JPEG glätten]\nUnsharp Mask , Unscharfe Maske\nUnstrip , Entstrippen\nUntwist , Aufdrehen\nUp-Left , Links oben\nUp-Right , Aufwärts-Rechts\nUpper Layer Is the Top Layer for All Blends , Obere Schicht ist die oberste Schicht für alle Mischungen\nUpper Side Orientation , Orientierung auf der Oberseite\nUppercase Letters , Großbuchstaben\nUpscale [DCCI2x] , Hochskala [DCCI2x]\nUpscale [Diffusion] , Hochskala [Diffusion]\nUpscale [Scale2x] , Hochskalierung [Skalierung2x]\nUrban Cowboy , Städtischer Cowboy\nUse as Hue , Als Farbton verwenden\nUse as Saturation , Verwendung als Sättigung\nUse Individual Depth Map , Individuelle Tiefenkarte verwenden\nUse Light , Licht verwenden\nUse Maximum Tones , Maximale Töne verwenden\nUse Top Layer as a Priority Mask , Obere Ebene als Prioritätsmaske verwenden\nUser-Defined , Benutzerdefiniert\nUser-Defined (Bottom Layer) , Benutzerdefiniert (unterste Schicht)\nUzbek Bukhara , Usbekisch Buchara\nUzbek Marriage , Usbekisch Heirat\nUzbek Samarcande , Usbekisch-Samarcande\nV Cutoff , V-Abschaltung\nVal Range , Val-Bereich\nValue , Wert\nValue Action , Wert-Aktion\nValue Blending , Wert-Mischung\nValue Bottom , Wert Unten\nValue Correction , Wert-Korrektur\nValue Factor , Wert-Faktor\nValue Normalization , Wert-Normalisierung\nValue Offset , Wert-Offset\nValue Precision , Wert-Präzision\nValue Range , Wertebereich\nValue Scale , Werteskala\nValue Shift , Wert-Verschiebung\nValue Smoothness , Wert Glätte\nValue Top , Wert Oben\nValue Variance , Wert-Varianz\nValues , Werte\nVan Gogh: Almond Blossom , Van Gogh: Mandelblüte\nVan Gogh: Irises , Van Gogh: Schwertlilien\nVan Gogh: The Starry Night , Van Gogh: Die sternenklare Nacht\nVan Gogh: Wheat Field with Crows , Van Gogh: Weizenfeld mit Krähen\nVariability , Variabilität\nVariance , Abweichung\nVariation A , Variante A\nVariation B , Variante B\nVariation C , Variante C\nVector Painting , Vektor-Malerei\nVelocity , Geschwindigkeit\nVelvetia , Velvetien\nVertex Type , Vertex-Typ\nVertical , Vertikal\nVertical (%) , Vertikal (%)\nVertical 1 Amount , Vertikal 1 Betrag\nVertical 1 Length , Vertikal 1 Länge\nVertical 2 Amount , Vertikal 2 Betrag\nVertical 2 Length , Vertikal 2 Länge\nVertical Amount , Vertikaler Betrag\nVertical Array , Vertikale Anordnung\nVertical Blur , Vertikale Unschärfe\nVertical Length , Vertikale Länge\nVertical Size (%) , Vertikale Größe (%)\nVertical Stripes , Vertikale Streifen\nVertical Tiles , Vertikale Kacheln\nVery Course 5 , Sehr Kurs 5\nVery Fine , Sehr fein\nVery High , Sehr hoch\nVery High (Even Slower) , Sehr hoch (noch langsamer)\nVery Warm Greenish , Sehr warm grünlich\nVibrant , Lebendig\nVibrant (alien) , Lebendig (Ausländer)\nVibrant (contrast) , Lebendig (Kontrast)\nVibrant (crome-Ish) , Lebendig (Crome-Ish)\nVictory , Sieg\nView Outlines Only , Nur Umrisse anzeigen\nView Resolution , Auflösung anzeigen\nVignette Contrast , Vignetten-Kontrast\nVignette Size , Größe der Vignette\nVignette Strength , Stärke der Vignette\nVignette Strenth , Vignette Stärke\nVintage , Jahrgang\nVintage (alt) , Jahrgang (alt)\nVintage (brighter) , Jahrgang (heller)\nVintage 163 , Jahrgang 163\nVintage Chrome , Vintage-Chrom\nVintage Style , Vintage-Stil\nVintage Tone (%) , Vintage-Ton (%)\nVintage Warmth 1 , Vintage-Wärme 1\nVirtual Landscape , Virtuelle Landschaft\nVisible Watermark , Sichtbares Wasserzeichen\nVivid Edges , Lebendige Ränder\nVivid Edges* , Lebendige Ränder*\nVivid Light , Lebendiges Licht\nVivid Screen , Anschaulicher Bildschirm\nWall , Wand\nWarm (highlight) , Warm (markieren)\nWarm (yellow) , Warm (gelb)\nWarm Dark Contrasty , Warm-Dunkel-Kontrast\nWarm Fade , Warmes Fade\nWarm Fade 1 , Warme Blende 1\nWarm Sunset Red , Warmes Sonnenuntergangsrot\nWarm Teal , Warme Krickente\nWarm Vintage , Warme Weinlese\nWarp [Interactive] , Warp [Interaktiv]\nWarp by Intensity , Verwerfung nach Intensität\nWater , Wasser\nWaterfall , Wasserfall\nWave , Welle\nWave(s) , Welle(n)\nWavelength , Wellenlänge\nWaves Amplitude , Wellen-Amplitude\nWaves Smoothness , Glätte der Wellen\nWe'll See , Wir werden sehen.\nWeave , Weben\nWeird , Seltsam\nWhirl Drawing , Wirbel-Zeichnung\nWhirls , Wirbelt\nWhite , Weiß\nWhite Dices , Weiße Würfel\nWhite Layers , Weiße Schichten\nWhite Level , Weiß Level\nWhite on Black , Weiß auf Schwarz\nWhite on Transparent , Weiß auf Transparent\nWhite on Transparent Black , Weiß auf transparentem Schwarz\nWhite Point , Weißer Punkt\nWhite to Black , Weiß bis Schwarz\nWhite Walls , Weiße Wände\nWhitening , Bleichmittel\nWhiter Whites , Weißer Weißer\nWhites , Weiße\nWidth , Breite\nWidth (%) , Breite (%)\nWinter Lighthouse , Winter-Leuchtturm\nWipe , Wischen Sie\nWireframe , Drahtgitter\nWiremap , Übersichtskarte\nWithout , Ohne\nWooden Gold 20 , Hölzernes Gold 20\nWork on Frameset , Arbeit am Frameset\nWrap , einwickeln\nX Center , X-Zentrum\nX Origine , X Ursprung\nX-Angle , X-Winkel\nX-Axis , X-Achse\nX-Axis Then Y-Axis , X-Achse dann Y-Achse\nX-Border , X-Grenze\nX-Centering , X-Zentrierung\nX-Centering (%) , X-Zentrierung (%)\nX-Coordinate , X-Koordinate\nX-Coordinate [Manual] , X-Koordinate [Manuell]\nX-Curvature , X-Krümmung\nX-End (%) , X-Ende (%)\nX-Factor , X-Faktor\nX-Factor (%) , X-Faktor (%)\nX-Multiplier , X-Multiplikator\nX-Offset , X-Versatz\nX-Offset (%) , X-Versatz (%)\nX-Scale , X-Skala\nX-Shadow , X-Schatten\nX-Shift (%) , X-Verschiebung (%)\nX-Shift (px) , X-Verschiebung (px)\nX-Size , X-Größe\nX-Size (px) , X-Größe (px)\nX-Smoothness , X-Glätte\nX-Tiles , X-Kacheln\nX-Variations , X-Varianten\nX/Y-Ratio , X/Y-Verhältnis\nX1 (none) , X1 (keine)\nXY Mirror , XY-Spiegel\nXY-Axes , XY-Achsen\nXY-Axis , XY-Achse\nXY-Coordinates (%) , XY-Koordinaten (%)\nXY-Factor , XY-Faktor\nXY-Light , XY-Licht\nY Center , Y Mitte\nY Origine , Y Ursprung\nY-Angle , Y-Winkel\nY-Axis , Y-Achse\nY-Axis Then X-Axis , Y-Achse dann X-Achse\nY-Border , Y-Grenze\nY-Center , Y-Zentrum\nY-Centering , Y-Zentrierung\nY-Centering (%) , Y-Zentrierung (%)\nY-Coordinate , Y-Koordination\nY-Coordinate [Manual] , Y-Koordinate [Handbuch]\nY-Curvature , Y-Krümmung\nY-End (%) , Y-Ende (%)\nY-Factor , Y-Faktor\nY-Factor (%) , Y-Faktor (%)\nY-Light , Y-Licht\nY-Motion , Y-Bewegung\nY-Multiplier , Y-Multiplikator\nY-Offset , Y-Versatz\nY-Offset (%) , Y-Versatz (%)\nY-Ratio , Y-Verhältnis\nY-Scale , Y-Skala\nY-Seed (Julia) , Y-Samen (Julia)\nY-Shadow , Y-Schatten\nY-Shift , Y-Schicht\nY-Shift (%) , Y-Verschiebung (%)\nY-Shift (px) , Y-Verschiebung (px)\nY-Size , Y-Größe\nY-Size (px) , Y-Größe (px)\nY-Smoothness , Y-Glätte\nY-Tiles , Y-Kacheln\nY-Variations , Y-Varianten\nYAG Effect , YAG-Effekt\nYCbCr (Chroma Only) , YCbCr (nur Chroma)\nYCbCr (Distinct) , YCbCr (unterscheidbar)\nYCbCr (Luma Only) , YCbCr (nur Luma)\nYCbCr (Mixed) , YCbCr (gemischt)\nYCbCr [Blue Chrominance] , YCbCr [Blaue Chrominanz]\nYCbCr [Blue-Red Chrominances] , YCbCr [Blau-Rot-Chrominanzen]\nYCbCr [Green Chrominance] , YCbCr [Grüne Chrominanz]\nYCbCr [Luminance] , YCbCr [Leuchtdichte]\nYCbCr [Red Chrominance] , YCbCr [Rote Chrominanz]\nYellow , Gelb\nYellow 55B , Gelb 55B\nYellow Factor , Gelb-Faktor\nYellow Film 01 , Gelber Film 01\nYellow Shift , Gelb-Verschiebung\nYellow Smoothness , Gelb Glätte\nYES8 , JA8\nYou Can Do It , Sie können es tun\nZ-Angle , Z-Winkel\nZ-Motion , Z-Bewegung\nZ-Multiplier , Z-Multiplikator\nZ-Range , Z-Bereich\nZ-Scale , Z-Skala\nZ-Size , Z-Größe\nZ^^6 + Z^^3 - 1 , Z^^^6 + Z^^3 - 1\nZ^^8 + 15*z^^4 - 1 , Z^^^8 + 15*z^^^4 - 1\nZero , Null\nZilverFX - B&W Solarization , ZilverFX - Schwarz-Weiß-Solarisation\nZilverFX - InfraRed , ZilverFX - InfraRot\nZilverFX - Vintage B&W , ZilverFX - Jahrgangs-S&W\nZone System , Zonensystem\nZoom , vergrößern\nZoom (%) , Vergrößern (%)\nZoom Center , Zoom-Zentrum\nZoom Factor , Zoom-Faktor\nZoom In , Vergrößern\nZoom Out , Verkleinern\n"
  },
  {
    "path": "translations/filters/gmic_qt_es.csv",
    "content": "<b>Arrays & Tiles</b> , <b>Matrices y azulejos</b>\n<b>Artistic</b> , <b>Artístico</b>\n<b>Black & White</b> , <b>Blanco y negro</b>\n<b>Colors</b> , <b>Colores</b>\n<b>Contours</b> , <b>Contornos</b>\n<b>Deformations</b> , <b>Deformaciones</b>\n<b>Degradations</b> , <b>Degradaciones</b>\n<b>Details</b> , <b>Detalles</b>\n<b>Testing</b> , <b>Prueba</b>\n<b>Frames</b> , <b>Marcos</b>\n<b>Frequencies</b> , <b>Frecuencias</b>\n<b>Layers</b> , <b>Capas</b>\n<b>Lights & Shadows</b> , <b>Luces y sombras</b>\n<b>Patterns</b> , <b>Patrones</b>\n<b>Rendering</b> , <b>Renderización</b>\n<b>Repair</b> , <b>Reparación</b>\n<b>Sequences</b> , <b>Secuencias</b>\n<b>Silhouettes</b> , <b>Siluetas</b>\n<b>Icons</b> , <b>Iconos</b>\n<b>Misc</b> , <b>Misc</b>\n<b>Nature</b> , <b>Naturaleza</b>\n<b>Others</b> , <b>Otros</b>\n<b>Stereoscopic 3D</b> , <b>3D estereoscópico</b>\n&#9829; Support Us ! &#9829; , ¡ Apóyanos !\n*Colors Doping , *Colores Dopaje\n*Colors Doping* , *Colores Dopaje*\n*Comix Colors* , *Combinación de colores*\n*Dark Edges* , *Bordes oscuros*\n*Dark Screen* , *Pantalla oscura*\n*Graphix Colors , *Colores del gráfix\n*Vivid Edges* , *Bordes vivos*\n*Vivid Screen* , *Pantalla viva*\n+180 Deg. , +180 grados.\n+90 Deg. , +90 grados.\n-1. Value Action , -1. Valor Acción\n-2. Overall Channel(s) , -2. Canal(es) general(es)\n-3. Normalisation Channel(s) , -3. Canal(es) de normalización\n-4. Normalise , -4. Normaliza\n-90 Deg. , -90 grados.\n.Bmp , ...Bmp.\n.Png , ...Png.\n0.  Recompute , 0. Recompute\n1 Levels , 1 Niveles\n1.  Plasma Texture [Discards Input Image] , 1. Textura de plasma [Descarta la imagen de entrada]\n10.  Quadtree Max Precision , 10. Quadtree Max Precision\n10th , 10º.\n10th Color , 10º Color\n11.  Quadtree Min Homogeneity , 11. Homogeneidad de Quadtree Min\n11th , 11º.\n12 Colors , 12 colores\n12 Grays , 12 Grises\n12.  Quadtree Max Homogeneity , 12. Homogeneidad de Quadtree Max\n125 Keypoints , 125 puntos clave\n12th , 12º.\n13. Noise Type , 13. Tipo de ruido\n13th , 13º.\n14. Minimum Noise , 14. Ruido mínimo\n14th , 14º.\n15. Maximum Noise , 15. Ruido máximo\n15th , 15º.\n16 Colors , 16 Colores\n16 Grays , 16 Grises\n16. Noise Channel(s) , 16. Canal(es) de ruido\n16th , 16º.\n17. Warp Iterations , 17. Iteraciones de la urdimbre\n18. Warp Intensity , 18. Intensidad de la urdimbre\n180 Deg. , 180 grados.\n19. Warp Offset , 19. Compensación de la urdimbre\n1st , 1er.\n1st Additional Palette (.Gpl) , 1ª Paleta adicional (.Gpl)\n1st Color , 1er Color\n1st Parameter , 1er parámetro\n1st Text , 1er Texto\n1st Tone , 1er Tono\n1st Variance , 1ª Variación\n1st X-Coord , 1er X-Coord\n1st Y-Coord , 1a Y-Coordinación\n2 Colors , 2 colores\n2 Grays , 2 Grises\n2 Noise , 2 Ruido\n2-Strip Process , Proceso de 2 tiras\n2.  Plasma Scale , 2. Escala de plasma\n20. Scale to Width , 20. Escala a la anchura\n21. Scale to Height , 21. Escala a la altura\n216 Keypoints , 216 Puntos clave\n22. Correlated Channels , 22. Canales correlacionados\n22.5 Deg. , 22,5 grados.\n23. Boundary , 23. Límite\n24. Warp Channel(s) , 24. Canal(es) de la urdimbre\n25. Random Negation , 25. Negación aleatoria\n26. Random Negation Channel(s) , 26. Canal(es) de negación aleatoria\n27 Keypoints , 27 Puntos clave\n27. Gamma Offset , 27. Compensación Gamma\n270 Deg. , 270 grados.\n28. Hue Offset , 28. Compensación de tonalidad\n29. Normalise , 29. Normalización\n2nd , 2º.\n2nd Additional Palette (.Gpl) , 2ª Paleta adicional (.Gpl)\n2nd Color , 2º Color\n2nd Parameter , 2º parámetro\n2nd Text , 2º Texto\n2nd Tone , 2º Tono\n2nd Variance , 2ª Variación\n2nd X-Coord , 2º X-Coord\n2nd Y-Coord , 2º Y-Coord\n2x Type , 2x Tipo\n2XY Mirror , Espejo 2XY\n3 Colors , 3 colores\n3 Grays , 3 Grises\n3 Mix , 3 Mezcla\n3.  Plasma Alpha Channel , 3. Canal Alfa de Plasma\n30. Minimum Hue , 30. Tono mínimo\n31. Maximum Hue , 31. Tono máximo\n32. Minimum Saturation , 32. Saturación mínima\n33. Maximum Saturation , 33. Saturación máxima\n34. Minimum Value , 34. Valor mínimo\n343 Keypoints , 343 Puntos clave\n35. Maximum Value , 35. Valor máximo\n36. Hue Offset , 36. Compensación de tonalidad\n37. Saturation Offset , 37. Compensación de saturación\n38. Value Offset , 38. Compensación del valor\n3D Blocks , Bloques 3D\n3D CLUT (Fast) , 3D CLUT (Rápido)\n3D CLUT (Precise) , CLUT 3D (Preciso)\n3D Colored Object , Objeto coloreado en 3D\n3D Conversion , Conversión 3D\n3D Elevation , Elevación 3D\n3D Elevation [Animated] , Elevación 3D [Animado]\n3D Extrusion , Extrusión 3D\n3D Extrusion [Animated] , Extrusión 3D [Animado]\n3D Image Object , Objeto de imagen 3D\n3D Image Object [Animated] , Objeto de imagen 3D [Animado]\n3D Image Type , Tipo de imagen 3D\n3D Lathing , Torneado 3D\n3D Metaballs , Metabolas 3D\n3D Random Objects , Objetos aleatorios en 3D\n3D Reflection , Reflexión 3D\n3D Rubber Object , Objeto de goma 3D\n3D Starfield , Campo estelar en 3D\n3D Text Pointcloud , Nube de puntos de texto en 3D\n3D Tiles , Azulejos 3D\n3D Video Conversion , Conversión de video 3D\n3D Waves , Ondas 3D\n3rd , Tercero.\n3rd Color , 3er Color\n3rd Parameter , 3er parámetro\n3rd Tone , 3er Tono\n3rd X-Coord , 3ª X-Coord\n3rd Y-Coord , 3ª cuerda en Y\n4 Colors , 4 colores\n4 Grays , 4 Grises\n4.  Segmentation [No Alpha Channel] , 4. Segmentación [Sin canal alfa]\n4096x4096 Layer , 4096x4096 Capa\n45 Deg. , 45 grados.\n4th , 4º.\n4th Color , 4º Color\n4th Tone , 4º Tono\n5.  Edge Threshold , 5. Umbral del borde\n512x512 Layer , 512x512 Capa\n5th , 5º.\n5th Color , 5º Color\n5th Tone , 5º Tono\n6.  Smoothness , 6. Suavidad\n60's (faded Alt) , 60's (Alt descolorido)\n60's (faded) , 60's (descolorido)\n64 (Faster) , 64 (Más rápido)\n64 Keypoints , 64 Puntos clave\n67.5 Deg. , 67,5 grados.\n6th , 6º.\n6th Color , 6º Color\n6th Tone , 6º Tono\n7.  Blur , 7. Blur\n7th , 7º.\n7th Color , 7º Color\n7th Tone , 7º Tono\n8 Colors , 8 Colores\n8 Grays , 8 Grises\n8 Keypoints (RGB Corners) , 8 Puntos clave (Esquinas RGB)\n8.  Quadtree Pixelisation [No Alpha Channel] , 8. Pixelización cuádruple [Sin canal alfa]\n8th , 8º.\n8th Color , 8º Color\n8th Tone , 8º Tono\n9.  Quadtree Min Precision , 9. Precisión mínima de un cuadrípode\n90 Deg. , 90 grados.\n9th , 9º.\n9th Color , 9º Color\n[Cyan]MYK , MYK\nA Lot of Cyan , Mucho cian\nA Lot of Key , Un montón de llave\nA Lot of Magenta , Mucho magenta\nA Lot of Yellow , Un montón de amarillo\nA-Color Factor , Factor A-Color\nA-Color Shift , Cambio de color A\nA-Color Smoothness , Suavidad de color A\nA-Component , Componente A\nA-Value , Valor A\nA4 / 100 PPI (Recommended) , A4 / 100 PPI (Recomendado)\nAbigail Gonzalez (21) , Abigail González (21)\nAbout G'MIC , Acerca de G'MIC\nAbsolute Brightness , Brillo absoluto\nAbsolute Value , Valor absoluto\nAbstraction , Abstracción\nAcceleration , Aceleración\nAchromatomaly , Acromatomía\nAchromatopsia , Acromatopsia\nAcros , A través de\nAction , Acción\nAction #1 , Acción #1\nAction #10 , Acción #10\nAction #11 , Acción #11\nAction #12 , Acción #12\nAction #13 , Acción #13\nAction #14 , Acción #14\nAction #15 , Acción #15\nAction #16 , Acción #16\nAction #17 , Acción #17\nAction #18 , Acción #18\nAction #19 , Acción #19\nAction #2 , Acción #2\nAction #20 , Acción #20\nAction #21 , Acción #21\nAction #22 , Acción #22\nAction #23 , Acción #23\nAction #24 , Acción #24\nAction #3 , Acción #3\nAction #4 , Acción #4\nAction #5 , Acción #5\nAction #6 , Acción #6\nAction #7 , Acción #7\nAction #8 , Acción #8\nAction #9 , Acción #9\nAction Red 01 , Acción Roja 01\nActivate 'Pencil Smoother' , Activar el \"Alisador de lápices\nActivate Color Enhancement , Activar la mejora del color\nActivate Colors Geometric Shapes , Activar los colores de las formas geométricas\nActivate Custom Filter , Activar el filtro personalizado\nActivate Lizards , Activar los lagartos\nActivate Mirror , Activar el espejo\nActivate Pink Elephants , Activar los elefantes rosados\nActivate Second Direction , Activar la segunda dirección\nActivate Shakes , Activar los batidos\nActivate Slice 1 , Activar la rebanada 1\nActivate Slice 2 , Activar la rebanada 2\nActivate Slice 3 , Activar la rebanada 3\nActivate Slice 4 , Activar la rebanada 4\nAdaptive , Adaptable\nAdd , Añade\nAdd 1px Outline , Agregar 1px Esquema\nAdd Alpha Channels to Detail Scale Layers , Añadir los canales alfa a las capas de escala de detalle\nAdd as a New Layer , Añadir como una nueva capa\nAdd Chalk Highlights , Agregar puntos destacados de tiza\nAdd Color Background , Añadir fondo de color\nAdd Comment Area in HTML Page , Agregar área de comentarios en la página HTML\nAdd Grain , Añade el grano\nAdd Image Label , Añadir etiqueta de imagen\nAdd Painter's Touch , Añadir el toque de pintor\nAdd User-Defined Constraints (Interactive) , Añadir restricciones definidas por el usuario (interactivo)\nAdditional Duplicates Count , Los duplicados adicionales cuentan\nAdditional Outline , Esquema adicional\nAdditive , Aditivo\nAdjust Background Reconstruction , Ajustar la reconstrucción del fondo\nAdventure 1453 , Aventura 1453\nAggresive , Agresivo\nAggressive Highlights Recovery 5 , Agresivo destaca la recuperación 5\nAlgorithm , Algoritmo\nAlign Image Streams , Alinear los flujos de imágenes\nAlign Layers , Alinear las capas\nAligned , Alineado\nAlignment Type , Tipo de alineación\nAll , Todos\nAll 45° Rotations , Todos los 45° Rotaciones\nAll 90° Rotations , Todos los 90° Rotaciones\nAll [Collage] , Todos [Collage]\nAll but Reference Color , Todo menos el color de referencia\nAll Layers and Masks , Todas las capas y máscaras\nAll Tones , Todos los tonos\nAll XY-Flips , Todos los XY-Flips\nAllow Angle , Permitir el ángulo\nAllow Outer Blending , Permitir la mezcla externa\nAllow Self Intersections , Permitir las intersecciones de sí mismo\nAlpha , Alfa\nAlpha Channel , Canal Alfa\nAlpha Mode , Modo Alfa\nAlso Match Gradients , También se ajustan a los gradientes\nAmbient (%) , Ambiente (%)\nAmbient Lightness , La ligereza del ambiente\nAmount , Cantidad\nAmplitude , Amplitud\nAmplitude (%) , Amplitud (%)\nAmplitude / Angle , Amplitud/ángulo\nAmstragram , Amstragrama\nAnaglypgh Green/magenta Optimized , Anaglypgh Green/magenta Optimizado\nAnaglyph Blue/yellow , Anaglifo Azul/amarillo\nAnaglyph Blue/yellow Optimized , Anaglifo Azul/amarillo Optimizado\nAnaglyph Glasses Adjustment , Ajuste de las gafas de anaglifo\nAnaglyph Green/magenta , Verde anaglifo/magenta\nAnaglyph Green/magenta Optimized , Verde anaglifo/magenta optimizado\nAnaglyph Reconstruction , Reconstrucción de anaglifos\nAnaglyph Red/cyan , Anaglifo Rojo/cyan\nAnaglyph Red/cyan Optimized , Anaglifo rojo/cyan optimizado\nAnaglyph: Red/Cyan , Anaglifo: Rojo/Cyan\nAnalogFX - Sepia Color , AnalogFX - Color Sepia\nAnalysis Scale , Escala de análisis\nAnalysis Smoothness , Análisis Suavidad\nAnd , Y\nAngle , Ángulo\nAngle (%) , Ángulo (%)\nAngle (deg) , Ángulo (deg)\nAngle (deg.) , Ángulo (deg.)\nAngle / Size , Ángulo / Tamaño\nAngle Cut , Corte de ángulo\nAngle Dispersion , Dispersión del ángulo\nAngle Image Contour , Contorno de la imagen en ángulo\nAngle of Disturbance Surface , Ángulo de la superficie de la perturbación\nAngle of Main Nebulous Surface , Ángulo de la superficie nebulosa principal\nAngle Range , Rango de ángulo\nAngle Range (deg.) , Rango de ángulo (deg.)\nAngle Tilt , Inclinación del ángulo\nAngle Variations , Variaciones de ángulo\nAnguish , Angustia\nAngular Precision , Precisión angular\nAngular Tiles , Baldosas angulares\nAnisotropic , Anisótropo\nAnisotropy , Anisotropía\nAnnular Steiner Chain Round Tiles , Cadena anular Steiner Baldosas redondas\nAntisymmetry , Antisimetría\nAny , Cualquier\nApocalypse This Very Moment , Apocalipsis en este mismo momento\nApples , Manzanas\nApply Adjustments On , Aplicar los ajustes en\nApply Color Balance , Aplicar el balance de color\nApply External CLUT , Aplicar CLUT externo\nApply Mask , Aplicar la máscara\nApply Skin Tone Mask , Aplicar la máscara de tono de piel\nApply Transformation From , Aplicar la transformación de\nAqua and Orange Dark , Aqua y Naranja oscuro\nArea , Área\nArea Smoothness , Suavidad de la zona\nAreas Light Adjustment , Ajuste de la luz de las áreas\nAreas Smoothness , Suavidad de las áreas\nArray [Faded] , Array [descolorido]\nArray [Mirrored] , Array [Espejo]\nArray [Random Colors] , Array [Colores aleatorios]\nArray [Random] , Array [Aleatorio]\nArray Mode , Modo de arreglo...\nArrows , Flechas\nArrows (Outline) , Flechas (Esquema)\nArtistic  Modern , Artístico Moderno\nArtistic Hard , Artístico Duro\nArtistic Round , Ronda artística\nAscii Art , Arte Ascii\nAspect , Aspecto\nAspect Ratio , Relación de aspecto\nAssociated Color , Color asociado\nAttenuation , Atenuación\nAuto Reduce Level (Level Slider Is Disabled) , Nivel de reducción automática (el deslizador de nivel está desactivado)\nAuto Set Hue Inverse (Hue Slider Is Disabled) , Auto Set Hue Inverse (Hue Slider está deshabilitado)\nAuto-Clean Bottom Color Layer , Capa de color de fondo de limpieza automática\nAuto-Reduce Number of Frames , Auto-reducción del número de cuadros\nAuto-Set Periodicity , Periodicidad del Auto-Set\nAutocrop Output Layers , Capas de salida de autocorte\nAutomatic , Automático\nAutomatic & Contrast Mask , Máscara automática y de contraste\nAutomatic [Scan All Hues] , Automático [Escanea todas las tonalidades]\nAutomatic Color Balance , Balance de color automático\nAutomatic Depth Estimation , Estimación automática de la profundidad\nAutomatic Upscale for Optimum Results , Aumento automático de la escala para obtener resultados óptimos\nAutumn , Otoño\nAvalanche , Avalancha\nAverage , Promedio\nAverage 3x3 , Promedio 3x3\nAverage 5x5 , Promedio 5x5\nAverage 7x7 , Promedio 7x7\nAverage 9x9 , Promedio 9x9\nAverage RGB , Promedio RGB\nAverage Smoothness , Suavidad media\nAvg / Max Weight , Peso medio/máximo\nAvg Left Angle (deg.) , Ángulo izquierdo medio (deg.)\nAvg Length Factor (%) , Factor de longitud media (%)\nAvg Right Angle (deg.) , Ángulo recto medio (deg.)\nAvg Thickness Factor (%) , Factor de espesor medio (%)\nAxis , Eje\nAzimuth , Azimut\nB&W , EN BLANCO Y NEGRO\nB&W Pencil [Animated] , Lápiz en blanco y negro [Animación]\nB&W Photograph , Fotografía en blanco y negro\nB&W Stencil , Plantilla en blanco y negro\nB&W Stencil [Animated] , B&W Stencil [Animado]\nB-Color Factor , Factor B-Color\nB-Color Shift , Cambio de color B\nB-Color Smoothness , Suavidad del color B\nB-Component , Componente B\nBackground , Antecedentes\nBackground Color , Color de fondo\nBackground Intensity , Intensidad de fondo\nBackground Point (%) , Punto de fondo (%)\nBackward , Retrocede\nBackward Horizontal , Horizontal hacia atrás\nBackward Vertical , Vertical hacia atrás\nBalance Color , Equilibrar el color\nBall , Bola\nBalloons , Globos\nBalls , Bolas\nBand Width , Ancho de banda\nBandwidth , Ancho de banda\nBarbed Wire , Alambre de púas\nBars , Bares\nBase Reference Dimension , Dimensión de referencia de la base\nBase Scale , Escala de la base\nBase Thickness (%) , Espesor de la base (%)\nBasic Adjustments , Ajustes básicos\nBatch Processing , Procesamiento por lotes\nBayer Filter , Filtro Bayer\nBayer Reconstruction , Reconstrucción de Bayer\nBehind , Detrás de\nBelow , Debajo de\nBerlin Sky , El cielo de Berlín\nBest Match , Mejor partido\nBG Textured , BG Texturizado\nBi-Directional , Bi-Direccional\nBicubic , Bicúbico\nBidirectional [Sharp] , Bidireccional [Sharp]\nBidirectional [Smooth] , Bidireccional [Suave]\nBidirectional Rendering , Renderización bidireccional\nBilateral Radius , Radio bilateral\nBinary , Binario\nBinary Digits , Cifras binarias\nBit Masking (End) , Enmascaramiento de bits (Fin)\nBit Masking (Start) , Enmascaramiento de bits (Inicio)\nBlack , Negro\nBlack & White , Blanco y negro\nBlack & White (25) , Blanco y negro (25)\nBlack & White-1 , Blanco y Negro-1\nBlack & White-10 , Blanco y Negro-10\nBlack & White-2 , Blanco y Negro-2\nBlack & White-3 , Blanco y Negro-3\nBlack & White-4 , Blanco y Negro-4\nBlack & White-5 , Blanco y Negro-5\nBlack & White-6 , Blanco y Negro-6\nBlack & White-7 , Blanco y Negro-7\nBlack & White-8 , Blanco y Negro-8\nBlack & White-9 , Blanco y Negro-9\nBlack Crayon Graffiti , Graffiti de lápiz negro\nBlack Dices , Dados negros\nBlack Level , Nivel de negro\nBlack on Transparent , Negro sobre transparente\nBlack on Transparent White , Negro sobre blanco transparente\nBlack on White , Negro sobre blanco\nBlack Point , Punto Negro\nBlack Star , Estrella Negra\nBlack to White , Negro a Blanco\nBlacks , Negros\nBlank , En blanco\nBleach Bypass , Bypass de blanqueo\nBleach Bypass 1 , Bypass de blanqueo 1\nBleach Bypass 2 , Bypass de blanqueo 2\nBleach Bypass 3 , Bypass de blanqueo 3\nBleach Bypass 4 , Bypass de blanqueo 4\nBleech Bypass Green , Bleech Bypass Verde\nBleech Bypass Yellow 01 , Bleech Bypass Amarillo 01\nBlend , Mezcla\nBlend [Average All] , Mezcla [Promedio de todos]\nBlend [Edges] , Mezclar [Bordes]\nBlend [Fade] , Mezcla [Fade]\nBlend [Median] , Mezcla [Mediana]\nBlend [Seamless] , Mezcla [sin costura]\nBlend [Standard] , Mezcla [Estándar]\nBlend All Layers , Mezclar todas las capas\nBlend Decay , La mezcla decadencia\nBlend Mode , Modo de mezcla\nBlend Rays , Mezclar los rayos\nBlend Scales , Escalas de mezcla\nBlend Size , Tamaño de la mezcla\nBlend Threshold , Umbral de mezcla\nBlending Mode , Modo de mezcla\nBlending Size , Tamaño de la mezcla\nBlindness Type , Tipo de ceguera\nBlob Size , Tamaño de la mancha\nBlobs Editor , Editor de Blobs\nBloc Size (%) , Tamaño del bloque (%)\nBlockism , Bloqueo\nBlue , Azul\nBlue & Red Chrominances , Crominanzas Azul y Roja\nBlue Chroma Factor , Factor de croma azul\nBlue Chroma Shift , Cambio de croma azul\nBlue Chroma Smoothness , Suavidad del croma azul\nBlue Chrominance , Crominancia azul\nBlue Dark , Azul oscuro\nBlue Factor , Factor Azul\nBlue House , La Casa Azul\nBlue Ice , Hielo azul\nBlue Level , Nivel Azul\nBlue Mono , Mono Azul\nBlue Rotations , Rotaciones azules\nBlue Screen Mode , Modo de pantalla azul\nBlue Shadows 01 , Sombras Azules 01\nBlue Shift , Turno azul\nBlue Smoothness , Suavidad azul\nBlue Steel , Acero Azul\nBlue Wavelength , Longitud de Onda Azul\nBlue-Green , Azul-Verde\nBlur [Angular] , Borrón [Angular]\nBlur [Bloom] , Borrón [Bloom]\nBlur [Depth-Of-Field] , Blur [Profundidad de campo]\nBlur [Gaussian] , Borrón [gaussiano]\nBlur [Glow] , Borrón y cuenta nueva\nBlur [Linear] , Borrón [Lineal]\nBlur [Multidirectional] , Blur [Multidireccional]\nBlur [Radial] , Borrón [Radial]\nBlur Alpha , Borrar Alfa\nBlur Amount , Cantidad de borrosidad\nBlur Amplitude , Amplitud de la borrosidad\nBlur Dodge and Burn Layer , Desenfocar Dodge y Burn Layer\nBlur Factor , Factor de borrosidad\nBlur Frame , Marco borroso\nBlur Percentage , Borrón Porcentaje\nBlur Precision , Precisión de la borrosidad\nBlur Standard Deviation , Desviación estándar de la borrosidad\nBlur Strength , Fuerza de la borrosidad\nBlur the Mask , Desenfocar la máscara\nBoats , Barcos\nBoost , Impulso\nBoost Chromaticity , Aumentar la cromaticidad\nBoost Contrast , Aumentar el contraste\nBoost Smooth , Impulso Suave\nBoost Stroke , Impulso de la apoplejía\nBorder Color , Color del borde\nBorder Opacity , Opacidad de la frontera\nBorder Outline , Esquema de la frontera\nBorder Smoothness , Suavidad de la frontera\nBorder Thickness (%) , Espesor de la frontera (%)\nBorder Width , Ancho de la frontera\nBoth , Ambos\nBottles , Botellas\nBottom , Abajo\nBottom and Left Foreground , Abajo y a la izquierda en primer plano\nBottom and Right Foreground , Fondo y primer plano a la derecha\nBottom and Top Foreground , En primer plano, abajo y arriba\nBottom Layer , Capa inferior\nBottom Left , Abajo a la izquierda\nBottom Right , Abajo a la derecha\nBottom Size , El tamaño del fondo\nBottom-Left , Abajo a la izquierda\nBottom-Left Vertex (%) , Vértice inferior izquierdo (%)\nBottom-Right , Abajo-Derecha\nBottom-Right Vertex (%) , Vértice inferior derecho (%)\nBouncing Balls , Bolas que rebotan\nBoundaries (%) , Límites (%)\nBoundary , Límite\nBoundary Condition , Condición de los límites\nBoundary Conditions , Condiciones límites\nBox Fitting , Ajuste de la caja\nBranches , Ramas\nBraque: Landscape near Antwerp , Braque: Paisaje cerca de Amberes\nBraque: Little Bay at La Ciotat , Braque: Pequeña bahía en La Ciotat\nBraque: The Mandola , Braque: La Mandola\nBrighness , Brigada\nBright , Brillante\nBright Green , Verde brillante\nBright Green 01 , Verde brillante 01\nBright Length , Longitud brillante\nBright Pixels , Píxeles brillantes\nBright Teal Orange , Naranja Cerceta Brillante\nBright Warm , Brillante Caliente\nBrighter , Más brillante\nBrightness , Brillo\nBrightness (%) , Brillo (%)\nBristle Size , El tamaño de las cerdas\nBronze , Bronce\nBrownish , Marrón\nBrushify , Cepillar\nBuilt-in Gray , Gris incorporado\nBump Factor , Factor de choque\nBurn , Quemar\nBurn Strength , Fuerza de la quemadura\nButterfly , Mariposa\nBy Blue Chrominance , Por Blue Chrominance\nBy Blue Component , Por el Componente Azul\nBy Custom Expression , Por expresión personalizada\nBy Green Component , Por el Componente Verde\nBy Iteration , Por Iteración\nBy Lightness , Por la ligereza\nBy Luminance , Por la luminancia\nBy Red Chrominance , Por Crominancia Roja\nBy Red Component , Por el componente rojo\nBy Value , Por valor\nCamera Motion Only , Sólo el movimiento de la cámara\nCamera X , Cámara X\nCamera Y , Cámara Y\nCameraman , Camarógrafo\nCamouflage , Camuflaje\nCandle Light , La luz de las velas\nCanvas , Lienzo\nCanvas Brightness , Brillo del lienzo\nCanvas Color , Color del lienzo\nCanvas Darkness , Lienzo Oscuridad\nCanvas Texture , Textura del lienzo\nCar , Coche\nCard Suits , Trajes de cartas\nCartesian Transform , Transformación cartesiana\nCartoon , Caricatura\nCartoon [Animated] , Caricatura [Animada]\nCat , Gato\nCategory , Categoría\nCell Size , Tamaño de la célula\nCenter , Centro\nCenter (%) , Centro (%)\nCenter Background , Fondo del Centro\nCenter Foreground , Primer plano central\nCenter Help , Ayuda del Centro\nCenter Size , Tamaño del centro\nCenter Smoothness , Suavidad del centro\nCenter X , Centro X\nCenter X-Shift , Centro X-Shift\nCenter Y , Centro Y\nCenter Y-Shift , Desplazamiento Y central\nCentering (%) , Centrado (%)\nCentering / Scale , Centrado / Escala\nCenters Color , Centros de color\nCenters Radius , Radio de los centros\nCentimeter , Centímetros\nCentral  Perspective Outdoor , Perspectiva central en el exterior\nCentral Perspective Indoor , Perspectiva central en interiores\nCentral Perspective Outdoor , Perspectiva central en el exterior\nCentre , Centro\nChalk It Up , Anota...\nChannel #1 , Canal 1\nChannel #2 , Canal 2\nChannel #3 , Canal 3\nChannel Processing , Procesamiento del canal\nChannel(s) , Canal(es)\nChannels , Canales\nChannels to Layers , Canales a las capas\nCharcoal , Carbón vegetal\nCheckered , A cuadros\nCheckered Inverse , A cuadros invertidos\nChemical 168 , Química 168\nChessboard , Tablero de ajedrez\nChroma Noise , Ruido cromático\nChromatic Aberrations , Aberraciones cromáticas\nChromaticity From , La cromaticidad de\nChrome 01 , Cromo 01\nChrominances Only (ab) , Sólo crominanzas (ab)\nChrominances Only (CbCr) , Sólo crominanzas (CbCr)\nCinema , Cine\nCinema 2 , Cine 2\nCinema 3 , Cine 3\nCinema 4 , Cine 4\nCinema 5 , Cine 5\nCinema Noir , Cine Negro\nCinematic (8) , Cinematográfico (8)\nCinematic for Flog , Cine para Flog\nCinematic Lady Bird , La Dama Pájaro Cinematográfica\nCinematic Mexico , El México cinematográfico\nCinematic Travel (29) , Viajes al cine (29)\nCinematic-01 , Cinemática-01\nCinematic-03 , Cinemática-03\nCinematic-1 , Cinemático-1\nCinematic-5 , Cinemático-5\nCinematic-6 , Cinemático-6\nCinematic-8 , Cinemático-8\nCircle , Círculo\nCircle (Inv.) , Círculo (Inv.)\nCircle 1 , Círculo 1\nCircle 2 , Círculo 2\nCircle Abstraction , Abstracción del círculo\nCircle Art , Arte en círculo\nCircle to Square , Círculo a cuadrado\nCircle Transform , Transformación del círculo\nCircles , Círculos\nCircles (Outline) , Círculos (Esquema)\nCircles 1 , Círculos 1\nCircles 2 , Círculos 2\nCity 7 , Ciudad 7\nClarity , Claridad\nClassic Chrome , Cromo clásico\nClassic Teal and Orange , Clásico Teal y Orange\nClean , Limpia\nClean Text , Texto limpio\nClear Control Points , Despejar los puntos de control\nClear Teal Fade , Desvanecimiento de la cerceta clara\nCliff , Acantilado\nCloseup , Primer plano\nClosing , Cierre\nClosing - Opening , Cierre - Apertura\nClosing - Original , Cierre - Original\nClouds , Nubes\nCLUT from After - Before Layers , CLUT de Después - Antes de las capas\nCLUT Opacity , Opacidad del CLUT\nCM[Yellow]K , CM[Amarillo]K\nCMY[Key] , CMY [Clave]\nCMYK [cyan] , CMYK [cian]\nCMYK [Key] , CMYK [Clave]\nCMYK [Yellow] , CMYK [Amarillo]\nCMYK Tone , Tono CMYK\nCoarse , Grueso\nCoarsest (faster) , Más grueso (más rápido)\nCode , Código\nCoefficients , Coeficientes\nCoffee 44 , Café 44\nCoherence , Coherencia\nCold Clear Blue , Azul claro y frío\nCold Clear Blue 1 , Azul claro y frío 1\nCold Simplicity 2 , Fría Simplicidad 2\nColor (rich) , Color (rico)\nColor 1 (Up/Left Corner) , Color 1 (arriba/izquierda)\nColor 2 (Up/Right Corner) , Color 2 (Arriba/A la derecha)\nColor 3 (Bottom/Left Corner) , Color 3 (Esquina inferior/izquierda)\nColor 4 (Bottom/Right Corner) , Color 4 (Esquina inferior/derecha)\nColor Abstraction Opacity , Opacidad de Abstracción de Color\nColor Abstraction Paint , Pintura de Abstracción de Color\nColor Balance , Equilibrio de color\nColor Basis , Base de color\nColor Blending , Mezcla de colores\nColor Blindness , El daltonismo\nColor Blue-Yellow , Color Azul-Amarillo\nColor Boost , Aumento del color\nColor Burn , Quemadura de color\nColor Channel  Smoothing , Suavizar el canal de color\nColor Channels , Canales de color\nColor Dispersion , Dispersión del color\nColor Doping , Dopaje de color\nColor Effect Mode , Modo de efecto de color\nColor Grading , Gradación de color\nColor Green-Magenta , Color Verde-Magenta\nColor Highlights , Los colores más destacados\nColor Image , Imagen de color\nColor Intensity , Intensidad de color\nColor Mask , Máscara de color\nColor Mask [Interactive] , Máscara de color [Interactivo]\nColor Median , Mediana de color\nColor Metric , Color Métrico\nColor Midtones , Tonos medios de color\nColor Mode , Modo de color\nColor Model , Modelo de color\nColor Negative , Color Negativo\nColor on White , Color sobre blanco\nColor Overall Effect , Efecto general del color\nColor Presets , Preselecciones de color\nColor Quantization , Cuantificación del color\nColor Rendering , Rendimiento de color\nColor Shading (%) , Sombreado de color (%)\nColor Shadows , Sombras de color\nColor Smoothness , Suavidad de color\nColor Space , Espacio de color\nColor Spots + Extrapolated Colors + Lineart , Manchas de color + Colores extrapolados + Lineal\nColor Spots + Lineart , Manchas de color + Lineal\nColor Strength , La fuerza del color\nColor Temperature , La temperatura del color\nColor Tolerance , Tolerancia de color\nColor Variation [Random -1] , Variación de color [Aleatorio -1]\nColored Geometry , La geometría de color\nColored Grain , Grano de color\nColored Lineart , Lineart de color\nColored on Black , Coloreado en negro\nColored on Transparent , Coloreado en transparente\nColored Outline , Esquema de color\nColored Pencils , Lápices de color\nColored Regions , Regiones de color\nColorful , Colorido\nColorful 0209 , Colorido 0209\nColorful Blobs , Glóbulos de colores\nColoring , Coloración\nColorize [Interactive] , Colorear [Interactivo]\nColorize [Photographs] , Colorear [Fotografías]\nColorize [with Colormap] , Colorear [con Colormap]\nColorize Lineart [Auto-Fill] , Colorear Lineart [Auto-llenado]\nColorize Lineart [Propagation] , Colorear Lineart [Propagación]\nColorize Lineart [Smart Coloring] , Colorear Lineart [Coloración inteligente]\nColorize Mode , Modo de coloración\nColorized Image (1 Layer) , Imagen coloreada (1 capa)\nColormap Type , Tipo de Colormap\nColors , Colores\nColors A , Colores A\nColors B , Colores B\nColors Only , Sólo colores\nColors Only (1 Layer) , Sólo colores (1 capa)\nColors to Layers , Colores a capas\nColorspace , Espacio de color\nColour , Color\nColour Channels , Canales de color\nColour Model , Modelo de color\nColour Smoothing , Suavizar los colores\nColour Space Mode , Modo de espacio de color\nColumn by Column , Columna por columna\nComic Style , Estilo Cómic\nComponents , Componentes\nComposed Layers , Capas compuestas\nCompress Highlights , Comprimir lo más destacado\nCompression Blur , Borrón de compresión\nCompression Filter , Filtro de compresión\nComputation Mode , Modo de cálculo\nCone , Cono\nConflict 01 , Conflicto 01\nConformal Maps , Mapas conformes\nConnectivity , Conectividad\nConnectors Centering , Centrado de los conectores\nConnectors Variability , Variabilidad de los conectores\nConstrain Image Size , Limitar el tamaño de la imagen\nConstrain Values , Limitar los valores\nConstrained Sharpen , Afilado restringido\nConstraint Radius , Radio de restricción\nContinuous Droste , Droste continuo\nContour Coherence , Coherencia del contorno\nContour Detection (%) , Detección de contorno (%)\nContour Normalization , Normalización del contorno\nContour Precision , Precisión del contorno\nContour Threshold , Umbral del contorno\nContour Threshold (%) , Umbral del contorno (%)\nContours , Contornos\nContours + Flocon/Snowflake , Contornos + Flocon/Snowflake\nContours Recursion , Recursión de los contornos\nContrast , Contraste\nContrast (%) , Contraste (%)\nContrast Smoothness , Suavidad de contraste\nContrast Swiss Mask , Contraste de la máscara suiza\nContrast with Highlights Protection , Contrasta con la protección de los Highlights\nContrasty Afternoon , Contraste de la tarde\nContrasty Green , Contraste Verde\nContributors , Colaboradores\nControl Point 1 , Punto de control 1\nControl Point 2 , Punto de control 2\nControl Point 3 , Punto de control 3\nControl Point 4 , Punto de control 4\nControl Point 5 , Punto de control 5\nControl Point 6 , Punto de control 6\nConvolve , Involucrar\nCool , Genial\nCool (256) , Genial (256)\nCool / Warm , Frío / Caliente\nCopper , Cobre\nCorner Brightness , Brillo de la esquina\nCorrelated Channels , Canales correlacionados\nCounter Clockwise , En el sentido contrario a las agujas del reloj\nCourse 4 , Curso 4\nCracks , Grietas\nCrease , Pliegue\nCreative Pack (33) , Paquete creativo (33)\nCrisp Romance , Romance nítido\nCrisp Warm , Caliente y crujiente\nCriterion , Criterio\nCrop (%) , Cultivo (%)\nCross Process CP 130 , Proceso cruzado CP 130\nCross Process CP 14 , Proceso cruzado CP 14\nCross Process CP 15 , Proceso cruzado CP 15\nCross Process CP 16 , Proceso cruzado CP 16\nCross Process CP 18 , Proceso cruzado CP 18\nCross Process CP 3 , Proceso cruzado CP 3\nCross Process CP 4 , Proceso cruzado CP 4\nCross Process CP 6 , Proceso cruzado CP 6\nCross-Hatch Amount , Cantidad de la escotilla cruzada\nCrossed , Cruzó\nCrosses 1 , Cruces 1\nCrosses 2 , Cruces 2\nCRT Sub-Pixels , Sub-píxeles del CRT\nCrystal , Cristal\nCrystal Background , Fondo de cristal\nCube , Cubo\nCube (256) , Cubo (256)\nCubic , Cúbico\nCubicle 99 , Cubículo 99\nCubism , Cubismo\nCubism on Color Abstraction , El cubismo en la abstracción del color\nCup , Copa\nCupid , Cupido\nCurvature , Curvatura\nCurvature Shadow , Sombra de curvatura\nCurve Amount , Cantidad de la curva\nCurve Angle , Ángulo de la curva\nCurve Length , Longitud de la curva\nCurved , Curva\nCurved Stroke , Trazo curvo\nCurves , Curvas\nCurves Previously Defined , Curvas previamente definidas\nCustom , Personalizado\nCustom Code [Global] , Código personalizado [Global]\nCustom Code [Local] , Código personalizado [Local]\nCustom Correction Map , Mapa de corrección personalizado\nCustom Depth Correction , Corrección de profundidad personalizada\nCustom Depth Maps Stream , Flujo de mapas de profundidad personalizados\nCustom Dictionary , Diccionario personalizado\nCustom Filter Code , Código de filtro personalizado\nCustom Formula , Fórmula personalizada\nCustom Kernel , Kernel personalizado\nCustom Layers , Capas personalizadas\nCustom Layout , Diseño personalizado\nCustom Style (Bottom Layer) , Estilo personalizado (capa inferior)\nCustom Style (Top Layer) , Estilo personalizado (capa superior)\nCustom Transform , Transformación personalizada\nCustomize CLUT , Personalizar CLUT\nCut , Cortar\nCut & Normalize , Cortar y normalizar\nCut High , Cortar en alto\nCut Low , Cortar bajo...\nCutout , Recorte\nCyan Factor , Factor Cian\nCyan Shift , Cambio de Cian\nCyan Smoothness , Suavidad del cian\nCycle Layers , Capas de ciclo\nCycles , Ciclos\nCylinder , Cilindro\nD and O 1 , D y O 1\nDamping per Octave , Amortiguación por octava\nDark  Motive , Motivo oscuro\nDark Blues in Sunlight , Los azules oscuros a la luz del sol\nDark Color , Color oscuro\nDark Edges , Bordes oscuros\nDark Green 02 , Verde oscuro 02\nDark Green 1 , Verde oscuro 1\nDark Grey , Gris oscuro\nDark Length , Longitud de la oscuridad\nDark Motive , Motivo oscuro\nDark Pixels , Píxeles oscuros\nDark Place 01 , Lugar oscuro 01\nDark Screen , Pantalla oscura\nDark Sky , Cielo oscuro\nDark Walls , Paredes oscuras\nDarker , Más oscuro\nDarkness , Oscuridad\nDarkness Level , Nivel de oscuridad\nDate 39 , Fecha 39\nDay for Night , El día por la noche\nDaylight Scene , Escena de luz diurna\nDe-Anaglyph , De-Anaglifo\nDebug Font Size , Tamaño de la fuente de depuración\nDecagon , Decágono\nDecompose , Descomponer\nDecompose Channels , Descomponer los canales\nDecoration , Decoración\nDecreasing , Disminuyendo\nDeep , Profundo\nDeep Dark Warm , Calor profundo y oscuro\nDeep High Contrast , Contraste profundo y alto\nDeep Teal Fade , Desvanecimiento de la cerceta profunda\nDefault , Por defecto\nDefects Contrast , Contraste de defectos\nDefects Density , Densidad de defectos\nDefects Size , Tamaño de los defectos\nDefects Smoothness , Defectos Suavidad\nDeform , Deformar\nDeinterlace2x , Desentrelazar2x\nDelaunay: Portrait De Metzinger , Delaunay: Retrato de Metzinger\nDelaunay: Windows Open Simultaneously , Delaunay: Las ventanas se abren simultáneamente\nDelete Layer Source , Borrar la fuente de la capa\nDensity , Densidad\nDensity (%) , Densidad (%)\nDepth , Profundidad\nDepth Fade In Frames , La profundidad se desvanece en los marcos\nDepth Fade Out Frames , Los marcos de profundidad se desvanecen\nDepth Field Control , Control del campo de profundidad\nDepth Map , Mapa de profundidad\nDepth Map Construction , Construcción del mapa de profundidad\nDepth Map Only , Sólo el mapa de profundidad\nDepth Map Reconstruction , Reconstrucción del mapa de profundidad\nDepth Maps Only , Sólo mapas de profundidad\nDepth-Of-Field Type , Tipo de profundidad de campo\nDesaturate , Desaturación\nDesaturate (%) , Desaturación (%)\nDesaturate Norm , Norma de Desaturación\nDescent Method , Método de descenso\nDesert Gold 37 , Oro del Desierto 37\nDestination (%) , Destino (%)\nDestination X-Tiles , Destino X-Tiles\nDestination Y-Tiles , Destino Y-Tiles\nDetail , Detalle\nDetail Level , Nivel de detalle\nDetail Reconstruction Detection , Detalle de la detección de la reconstrucción\nDetail Reconstruction Smoothness , Detalle Reconstrucción Suavidad\nDetail Reconstruction Strength , Detalle de la fuerza de reconstrucción\nDetail Reconstruction Style , Detalle del estilo de reconstrucción\nDetail Scale , Escala de detalles\nDetail Strength , Fuerza de detalle\nDetails , Detalles\nDetails Amount , Detalles Cantidad\nDetails Equalizer , Detalles Ecualizador\nDetails Scale , Detalles Escala\nDetails Smoothness , Detalles Suavidad\nDetails Strength (%) , Detalles Fuerza (%)\nDetect Skin , Detectar la piel\nDeuteranomaly , Deuteranomalía\nDeuteranopia , Deuteranopía\nDeviation , Desviación\nDiamond , Diamante\nDiamond (Inv.) , Diamante (Inv.)\nDiamonds , Diamantes\nDiamonds (Outline) , Diamantes (Esquema)\nDices with Colored Numbers , Dados con números de color\nDices with Colored Sides , Dados con lados de color\nDifference , Diferencia\nDifference Mixing , Mezcla de diferencias\nDifference of Gaussians , Diferencia de los gausianos\nDifferent Axis , Eje diferente\nDiffuse (%) , Difuso (%)\nDiffuse Shadow , Sombra difusa\nDiffusion , Difusión\nDiffusion Tensors , Tensores de difusión\nDiffusivity , Difusividad\nDigits , Cifras\nDilatation , Dilatación\nDilate , Dilata\nDilation , Dilatación\nDilation - Original , Dilatación - Original\nDilation / Erosion , Dilatación / Erosión\nDimension , Dimensión\nDimension [Diff] , Dimensión [Diff]\nDimension A , Dimensión A\nDimensions (%) , Dimensiones (%)\nDimensions Pixels , Dimensiones Píxeles\nDipole: 1/(4*z^2-1) , Dipolo: 1/(4*z^2-1)\nDirect , Directo\nDirection , Dirección\nDirections 23 , Direcciones 23\nDirty , Sucio\nDisable , Desactivar\nDisabled , Discapacitados\nDiscard Contour Guides , Desechar las guías de contorno\nDiscard Transparency , Desechar la transparencia\nDisco , Discoteca\nDisplay , Pantalla\nDisplay Blob Controls , Mostrar los controles de manchas\nDisplay Color Axes , Mostrar los ejes de color\nDisplay Contours , Contornos de la pantalla\nDisplay Coordinates , Mostrar las coordenadas\nDisplay Coordinates on Preview Window , Mostrar las coordenadas en la ventana de vista previa\nDisplay Debug Info on Preview , Mostrar información de depuración en la vista previa\nDistance , Distancia\nDistance (Fast) , Distancia (Rápido)\nDistance Transform , Transformación de la distancia\nDistort Lens , Distorsionar la lente\nDistortion Factor , Factor de distorsión\nDistortion Surface Angle , Ángulo de la superficie de distorsión\nDistortion Surface Position , Posición de la superficie de distorsión\nDisturbance Scale-By-Factor , Escala de perturbaciones según el factor\nDisturbance X , Perturbación X\nDisturbance Y , Perturbación Y\nDither Output , Salida de Dither\nDivide , Dividir\nDo Not Flatten Transparency , No aplastar la transparencia\nDodge and Burn , Esquivar y quemar\nDodge Strength , Fuerza de Esquivar\nDOF Analyzer , Analizador DOF\nDog , Perro\nDon't Sort , No lo clasifiques.\nDot Size , Tamaño de punto\nDots , Puntos\nDownload External Data , Descarga de datos externos\nDragon Curve , Curva del Dragón\nDragonfly , Libélula\nDrawing Mode , Modo de dibujo\nDrawn Montage , Dibujó Montage\nDream , Sueño\nDream 1 , Sueño 1\nDream 85 , Sueño 85\nDream Smoothing , Suavizar los sueños\nDrop Green Tint 14 , Tinte verde de la gota 14\nDrop Water , Gota de agua\nDuck , Pato\nDuplicate Bottom , Duplicar el fondo\nDuplicate Horizontal , Duplicar Horizontal\nDuplicate Left , Duplicar a la izquierda\nDuplicate Right , Duplicar a la derecha\nDuplicate Top , Duplicar la parte superior\nDuplicate Vertical , Duplicar la vertical\nDuration , Duración\nDynamic Range Increase , Aumento del rango dinámico\nEarth , Tierra\nEarth Tone Boost , Aumento del tono de la Tierra\nEasy Skin Retouch , Retoque fácil de la piel\nEdge Antialiasing , Antialiasing de bordes\nEdge Attenuation , Atenuación del borde\nEdge Behavior X , Comportamiento del borde X\nEdge Behavior Y , Comportamiento del borde Y\nEdge Detect Includes Chroma , La detección de bordes incluye el croma\nEdge Fidelity , Fidelidad al borde\nEdge Influence , Influencia del borde\nEdge Mask , Máscara de borde\nEdge Sensitivity , Sensibilidad de los bordes\nEdge Simplicity , Simplicidad del borde\nEdge Smoothness , Suavidad de los bordes\nEdge Thickness , Espesor del borde\nEdge Threshold , Umbral del borde\nEdge Threshold (%) , Umbral del borde (%)\nEdges , Bordes\nEdges (%) , Bordes (%)\nEdges [Animated] , Bordes [Animado]\nEdges Offsets , Compensación de bordes\nEdges on Fire , Bordes en llamas\nEdges-0.5 (beware: Memory-Consuming!) , Edges-0.5 (cuidado: ¡consumo de memoria!)\nEdges-1 (beware: Memory-Consuming!) , Edges-1 (cuidado: ¡consumo de memoria!)\nEdges-2 (beware: Memory-Consuming!) , Edges-2 (cuidado: ¡consumo de memoria!)\nEffect Strength , Fuerza del efecto\nEffect X-Axis Scaling , Escalado de efecto en el eje X\nEffect Y-Axis Scaling , Efecto Escalado del eje Y\nEight Layers , Ocho capas\nEight Threads , Ocho hilos\nElegance 38 , Elegancia 38\nElephant , Elefante\nElevation , Elevación\nElevation (%) , Elevación (%)\nEllipse Painting , La pintura de la Elipse\nEllipse Ratio , Relación de Elipse\nEllipsionism , Elipsionismo\nEllipsionism Opacity , Opacidad del elipsionismo\nEllipsoid , Elipsoide\nEnable Antialiasing , Habilitar el antialiasing\nEnable Interpolated Motion , Habilitar el movimiento interpolado\nEnable Morphology , Habilitar la morfología\nEnable Paintstroke , Activar Paintstroke\nEnable Segmentation , Habilitar la segmentación\nEnchanted , Encantado\nEnd Color , Color final\nEnd Frame Number , Número de cuadro final\nEnd of Mid-Tones , Fin de los tonos medios\nEnd Point Connectivity , Conectividad del punto final\nEnd Point Rate (%) , Tasa de punto final (%)\nEnding Angle , Ángulo final\nEnding Color , Color final\nEnding Feathering , Terminar de emplumar\nEnding Point (%) , Punto final (%)\nEnding Scale (%) , Escala final (%)\nEnding Value , Valor final\nEnding X-Centering , Terminando el X-Centrado\nEnding Y-Centering , Terminar el centrado en Y\nEngrave , Grabar\nEnhance Detail , Mejorar el detalle\nEnhance Details , Mejorar los detalles\nEqualization , Ecualización\nEqualization (%) , Igualación (%)\nEqualize , Iguala\nEqualize and Normalize , Igualar y normalizar\nEqualize at Each Step , Igualar en cada paso\nEqualize HSI-HSL-HSV , Igualar HSI-HSL-HSV\nEqualize HSV , Igualar el HSV\nEqualize Light , Igualar la luz\nEqualize Local Histograms , Igualar los histogramas locales\nEqualize Shadow , Igualar la Sombra\nEquation Plot [Parametric] , Gráfica de la ecuación [paramétrica]\nEquation Plot [Y=f(X)] , Gráfica de la ecuación [Y=f(X)]\nEquirectangular to Nadir-Zenith , Equivalente al Nadir-Zenith\nErosion , Erosión\nErosion / Dilation , Erosión / Dilatación\nEtch Tones , Tonos de grabado\nEterna for Flog , Eterna para Flog\nEuclidean , Euclidiano\nEuclidean - Polar , Euclidiano - Polar\nExclusion , Exclusión\nExpand , Ampliar\nExpand Background Reconstruction , Ampliar Reconstrucción del fondo\nExpand Shadows , Expandir las sombras\nExpand Size , Ampliar el tamaño\nExpanding Mirrors , Espejos en expansión\nExpired (fade) , Caducado (desvanecerse)\nExpired (polaroid) , Caducado (polaroid)\nExpired 69 , Expiró 69\nExponent , Exponente\nExponent (Imaginary) , Exponente (imaginario)\nExponent (Real) , Exponente (Real)\nExponential , Exponencial\nExport RGB-565 File , Exportar el archivo RGB-565\nExposure , Exposición\nExpression , Expresión\nExtend 1px , Extender 1px\nExternal Transparency , Transparencia externa\nExtra  Smooth , Extra Suave\nExtract Foreground [Interactive] , Extraer el primer plano [Interactivo]\nExtract Objects , Extraer objetos\nExtrapolate Color Spots on Transparent Top Layer , Extrapolar las manchas de color en la capa superior transparente\nExtrapolate Colors As , Extrapolar los colores como\nExtrapolated Colors + Lineart , Colores extrapolados + Lineal\nExtreme , Extremo\nFade End (%) , Fin del desvanecimiento (%)\nFade Layers , Capas de desvanecimiento\nFade Start , Inicio del desvanecimiento\nFade Start (%) , Inicio del desvanecimiento (%)\nFade to Green , Desaparecer a Verde\nFaded , Desaparecido\nFaded (alt) , Descolorido (alt)\nFaded (analog) , Desvanecido (analógico)\nFaded (extreme) , Desaparecido (extremo)\nFaded (vivid) , Desvanecido (vívido)\nFaded 47 , Desvanecido 47\nFaded Green , Verde apagado\nFaded Look , Mirada descolorida\nFaded Print , Impresión descolorida\nFaded Retro 01 , Retro 01 descolorido\nFaded Retro 02 , Retro 02 descolorido\nFading , Desapareciendo\nFading Shape , Forma de desvanecimiento\nFall Colors , Colores de otoño\nFar Point Deviation , Desviación del punto lejano\nFast , Rápido\nFast &#40;Approx.&#41; , Rápido... 40... aprox... 41..;\nFast (Low Precision) Preview , Previsión rápida (baja precisión)\nFast Approximation , Aproximación rápida\nFast Blend , Mezcla rápida\nFast Blend Preview , Vista previa de Fast Blend\nFast Recovery , Rápida recuperación\nFast Resize , Cambio rápido de tamaño\nFaux Infrared , Infrarrojo falso\nFeathering , Plumas\nFeature Analyzer Smoothness , Características del analizador Suavidad\nFeature Analyzer Threshold , Umbral del analizador de características\nFelt Pen , Pluma de fieltro\nFFT Preview , Vista previa de la FFT\nFibers , Fibras\nFibers Amplitude , Amplitud de las fibras\nFibers Smoothness , Suavidad de las fibras\nFibrousness , Fibrosidad\nFidelity Chromaticity , Fidelidad Cromaticidad\nFidelity Smoothness (Coarsest) , Fidelidad Suavidad (más gruesa)\nFidelity Smoothness (Finest) , Fidelidad Suavidad (Finest)\nFidelity to Target (Coarsest) , Fidelidad al objetivo (más grueso)\nFidelity to Target (Finest) , Fidelidad al objetivo (Finest)\nFilename , Nombre de archivo\nFill Holes , Llenar los agujeros\nFill Holes % , Rellenar agujeros %\nFill Transparent Holes , Rellenar los agujeros transparentes\nFilled , Llenado\nFilled Circles , Círculos llenos\nFilling , Llenando\nFilm 0987 , Película 0987\nFilm 9879 , Película 9879\nFilm Highlight Contrast , Contraste de la película\nFilmic , Película\nFilter Design , Diseño del filtro\nFinal Image , Imagen final\nFine , Bien\nFine 2 , Bien 2\nFine Details Smoothness , Detalles finos Suavidad\nFine Details Threshold , Detalles finos Umbral\nFine Noise , Ruido fino\nFine Scale , Escala fina\nFinest (slower) , Más fino (más lento)\nFinger Paint , Pintura de dedos\nFinger Size , El tamaño de los dedos\nFire Effect , Efecto del fuego\nFireworks , Fuegos artificiales\nFirst , Primero\nFirst Color , Primer color\nFirst Frame , Primer cuadro\nFirst Offset , Primera compensación\nFirst Radius , Primer radio\nFirst Size , Primer tamaño\nFish-Eye , Ojo de pez\nFish-Eye Effect , Efecto ojo de pez\nFitting Function , Función de ajuste\nFive Layers , Cinco capas\nFlag , Bandera\nFlag (256) , Bandera (256)\nFlat , Piso\nFlat 30 , Piso 30\nFlat Color , Color plano\nFlat Regions Removal , Eliminación de regiones planas\nFlat-Shaded , Sombra plana\nFlatness , Planitud\nFlip & Rotate Blocs , Voltear y rotar los bloques\nFlip Cross-Hatch , Voltear la escotilla cruzada\nFlip Left / Right , Voltear a la izquierda/derecha\nFlip Left/Right , Voltear a la izquierda/derecha\nFlip The Pattern , Voltear el patrón\nFlip Tolerance , Tolerancia a la voltereta\nFlower , Flor\nFoggy Night , Noche de niebla\nFolder Name , Nombre de la carpeta\nFont Colors , Colores de las fuentes\nFont Height (px) , Altura de la fuente (px)\nForce Gray , Fuerza Gris\nForce Re-Download from Scratch , Forzar la descarga desde cero\nForce Tiles to Have Same Size , Forzar a los azulejos a tener el mismo tamaño\nForce Transparency , Fuerza Transparencia\nForeground Color , Color de primer plano\nForm , Formulario\nFormula , Fórmula\nForward , Adelante\nForward  Horizontal , Horizontal hacia adelante\nForward Horizontal , Horizontal hacia adelante\nForward Vertical , Vertical hacia adelante\nFour Layers , Cuatro capas\nFour Threads , Cuatro hilos\nFourier Analysis , Análisis de Fourier\nFourier Filtering , Filtro de Fourier\nFourier Transform , Transformación de Fourier\nFourier Watermark , Marca de agua de Fourier\nFractal Noise , Ruido fractal\nFractal Points , Puntos fractales\nFractal Set , Conjunto fractal\nFractal Whirl , Remolino fractal\nFractalize , Fracturar\nFractured Clouds , Nubes fracturadas\nFragment Blur , Desenfoque de fragmentos\nFrame (px) , Marco (px)\nFrame [Blur] , Marco [Borrón]\nFrame [Cube] , Marco [Cubo]\nFrame [Fuzzy] , Marco [Fuzzy]\nFrame [Mirror] , Marco [Espejo]\nFrame [Painting] , Marco [Pintura]\nFrame [Pattern] , Marco [Patrón]\nFrame [Regular] , Marco [Regular]\nFrame [Round] , Marco [Redondo]\nFrame [Smooth] , Marco [Suave]\nFrame as a New Layer , Enmarcar como una nueva capa\nFrame Color , Color del marco\nFrame Files Format , Formato de los archivos del marco\nFrame Format , Formato del marco\nFrame Size , Tamaño del cuadro\nFrame Skip , Saltar marco\nFrame Type , Tipo de cuadro\nFrame Width , Ancho del marco\nFrames , Marcos\nFrames Offset , Compensación de cuadros\nFreaky Details , Detalles extraños\nFreeze , Congelar\nFrench Comedy , Comedia francesa\nFrequency , Frecuencia\nFrequency (%) , Frecuencia (%)\nFrequency Analyzer , Analizador de frecuencia\nFrequency Range , Gama de frecuencias\nFreqy Pattern , Patrón de frecuencia\nFriends Hall of Fame , Salón de la Fama de los Amigos\nFrom Input , De la entrada\nFrom Reference Color , Desde el color de referencia\nFrosted Beach Picnic , Picnic en la playa de Frosted\nFruits , Frutas\nFuji FP-100c -- , Fuji FP-100c...\nFuji FP-100c Negative , Fuji FP-100c Negativo\nFuji FP-100c Negative + , Fuji FP-100c Negativo +\nFuji FP-100c Negative ++ , Fuji FP-100c Negativo ++\nFuji FP-100c Negative +++ , Fuji FP-100c Negativo +++\nFuji FP-100c Negative ++a , Fuji FP-100c Negativo ++a\nFuji FP-100c Negative - , Fuji FP-100c Negativo -\nFuji FP-100c Negative -- , Fuji FP-100c Negativo...\nFuji FP-3000b -- , Fuji FP-3000b...\nFuji FP-3000b Negative , Fuji FP-3000b Negativo\nFuji FP-3000b Negative + , Fuji FP-3000b Negativo +\nFuji FP-3000b Negative ++ , Fuji FP-3000b Negativo ++\nFuji FP-3000b Negative +++ , Fuji FP-3000b Negativo +++\nFuji FP-3000b Negative - , Fuji FP-3000b Negativo -\nFuji FP-3000b Negative -- , Fuji FP-3000b Negativo...\nFuji FP-3000b Negative Early , Fuji FP-3000b Negativo Temprano\nFull , Completo\nFull (Allows Multi-Layers) , Completo (permite multicapas)\nFull (Slower) , Lleno (más lento)\nFull Bottom/top , Completo Abajo/arriba\nFull Colors , A todo color\nFull HD Frame Packing , Paquete de marcos Full HD\nFull Layer Stack -Slow!- , Pila de capas completas -¡Lento!-\nFull Side by Side Keep Uncompressed , Completamente de lado a lado, manténganse descomprimidos\nFull Side by Side Keep Width , Completo Lado a lado Mantener el ancho\nFull Side by Uncompressed , Lado completo por Uncompressed\nFusion 88 , Fusión 88\nG'MIC Operator , Operador G'MIC\nG/M Smoothness , Suavidad G/M\nGain , Gane\nGames & Demos , Juegos y demostraciones\nGamma Balance , Balance Gamma\nGamma Compensation , Compensación Gamma\nGamma Equalizer , Ecualizador Gamma\nGaussian , Gaussiano\nGear , Engranaje\nGenerate Random-Colors Layer , Generar una capa de colores aleatorios\nGeneric Fuji Astia 100 , Genérico Fuji Astia 100\nGeneric Fuji Provia 100 , Genérico Fuji Provia 100\nGeneric Fuji Velvia 100 , Genérico Fuji Velvia 100\nGeneric Kodachrome 64 , Genérico Kodachrome 64\nGeneric Kodak Ektachrome 100 VS , Genérico Kodak Ektachrome 100 VS\nGeneric Skin Structure , Estructura genérica de la piel\nGentle Mode (overrides Minimum Brightness and Minimun Red:Blue Ratio) , Modo Suave (anula el Brillo Mínimo y la Relación Mínima Rojo:Azul)\nGeometry , Geometría\nGlobal Mapping , Cartografía mundial\nGmicky & Wilber (by Mahvin) , Gmicky & Wilber (por Mahvin)\nGmicky (by Deevad) , Gmicky (por Deevad)\nGmicky (by Mahvin) , Gmicky (por Mahvin)\nGoing for a Walk , Salir a pasear\nGold , Oro\nGolden (bright) , Dorado (brillante)\nGolden (fade) , Dorado (se desvanece)\nGolden (mono) , Dorado (mono)\nGolden (vibrant) , Dorado (vibrante)\nGoldFX - Bright Spring Breeze , GoldFX - Brisa brillante de primavera\nGoldFX - Bright Summer Heat , GoldFX - Brillante calor de verano\nGoldFX - Hot Summer Heat , GoldFX - Calor de verano\nGoldFX - Perfect Sunset 01min , GoldFX - Atardecer perfecto 01min\nGoldFX - Perfect Sunset 05min , GoldFX - Atardecer perfecto 05min\nGoldFX - Perfect Sunset 10min , GoldFX - Atardecer perfecto 10min\nGoldFX - Spring Breeze , GoldFX - Brisa de Primavera\nGoldFX - Summer Heat , GoldFX - El calor del verano\nGood Morning , Buenos días.\nGradient , Gradiente\nGradient [Corners] , Gradiente [Esquinas]\nGradient [Custom Shape] , Gradiente [Forma personalizada]\nGradient [from Line] , Gradiente [de la línea]\nGradient [Linear] , Gradiente [Lineal]\nGradient [Radial] , Gradiente [Radial]\nGradient [Random] , Gradiente [Aleatorio]\nGradient Norm , Norma de gradiente\nGradient Preset , Gradiente preestablecido\nGradient RGB , Gradiente RGB\nGradient Smoothness , Suavidad gradual\nGradient Values , Valores graduales\nGrain , Grano\nGrain (Highlights) , Grano (Highlights)\nGrain (Midtones) , Grano (Midtones)\nGrain (Shadows) , Grano (Sombras)\nGrain Extract , Extracto de grano\nGrain Merge , Fusión de granos\nGrain Only , Sólo grano\nGrain Scale , Escala del grano\nGrain Tone Fading , Desvanecimiento del tono del grano\nGrain Type , Tipo de grano\nGrainextract , Extracto de grano\nGranularity , Granularidad\nGraphic Boost , Aumento de la gráfica\nGraphic Colours , Colores de los gráficos\nGraphic Novel , Novela gráfica\nGraphix Colors , Colores de Grafito\nGrayscale , Escala de grises\nGreece , Grecia\nGreen , Verde\nGreen 15 , Verde 15\nGreen 2025 , Verde 2025\nGreen Action , Acción Verde\nGreen Afternoon , Tarde verde\nGreen Blues , Green Blues...\nGreen Conflict , Conflicto verde\nGreen Day 01 , Día verde 01\nGreen Day 02 , Día Verde 02\nGreen Factor , Factor verde\nGreen G09 , Verde G09\nGreen Indoor , Verde Interior\nGreen Level , Nivel verde\nGreen Light , Luz verde\nGreen Mono , Mono verde\nGreen Rotations , Rotaciones verdes\nGreen Shift , Cambio verde\nGreen Smoothness , Suavidad verde\nGreen Wavelength , Longitud de Onda Verde\nGreen Yellow , Verde Amarillo\nGreen-Blue , Verde-Azul\nGreen-Red , Verde-Rojo\nGreenish Contrasty , Contraste verdoso\nGreenish Fade , Desvanecimiento verdoso\nGreenish Fade 1 , Desvanecimiento verdoso 1\nGrey , Gris\nGreyscale , Escala de grises\nGrid , Cuadrícula\nGrid [Cartesian] , Rejilla [cartesiana]\nGrid [Hexagonal] , Rejilla [Hexagonal]\nGrid [Triangular] , Rejilla [Triangular]\nGrid Divisions , Divisiones de la red\nGrid Smoothing , Suavizado de la red\nGrid Width , Ancho de la red\nGrow Alpha , Crece Alfa\nGuide As , Guía como\nGuide Mix , Guía Mixta\nGuide Recovery , Guía de recuperación\nGum Leaf , Hoja de goma de mascar\nH Cutoff , Corte H\nHair Locks , Rizos de pelo\nHaldCLUT Filename , HaldCLUT Nombre de archivo\nHalf Bottom/top , Medio abajo/arriba\nHalf Side  by Side , Medio lado a lado\nHalftone , Medio tono\nHalftone Shapes , Formas de medios tonos\nHanoi Tower , Torre de Hanoi\nHappyness 133 , Felicidad 133\nHard , Duro\nHard Light , Luz dura\nHard Mix , Mezcla dura\nHard Sketch , Bosquejo duro\nHard Teal Orange , Naranja de la cerceta dura\nHardlight , Harddlight\nHarsh Day , Un día duro\nHarsh Sunset , Atardecer duro...\nHDR Effect (Tone Map) , Efecto HDR (Mapa de tonos)\nHeart , Corazón\nHearts , Corazones\nHearts (Outline) , Corazones (Resumen)\nHeight , Altura\nHeight (%) , Altura (%)\nHexagon , Hexágono\nHigh , Alto\nHigh (Slower) , Alto (más lento)\nHigh Frequency , Alta frecuencia\nHigh Frequency Layer , Capa de alta frecuencia\nHigh Pass , Paso alto\nHigh Quality , Alta calidad\nHigh Scale , Escala alta\nHigh Speed , Alta velocidad...\nHigh Value , Alto valor\nHigher Mask Threshold (%) , Umbral de máscara más alto (%)\nHighlight , Destacar\nHighlight (%) , Destacar (%)\nHighlight Bloom , Destacar a Bloom\nHighlights , Lo más destacado\nHighlights Abstraction , Destaca la abstracción\nHighlights Brightness , Destaca el brillo\nHighlights Color Intensity , Destaca la intensidad del color\nHighlights Crossover Point , Destaca el punto de cruce\nHighlights Hue , Destaca el tono\nHighlights Lightness , Destaca la ligereza\nHighlights Protection , Destaca la protección\nHighlights Selection , Selección de destacados\nHighlights Threshold , Destaca Umbral\nHighlights Zone , Zona de Highlights\nHighres CLUT , Altas CLUT\nHistogram , Histograma\nHistogram Analysis , Análisis de Histograma\nHistogram Transfer , Transferencia de Histograma\nHokusai: The Great Wave , Hokusai: La Gran Ola\nHomogeneity , Homogeneidad\nHope Poster , Cartel de la esperanza\nHorisontal Length , Longitud horizontal\nHorizon Leveling (deg) , Nivelación del horizonte (deg)\nHorizontal Amount , Cantidad horizontal\nHorizontal Array , Conjunto Horizontal\nHorizontal Blur , Desenfoque horizontal\nHorizontal Length , Longitud horizontal\nHorizontal Size (%) , Tamaño horizontal (%)\nHorizontal Stripes , Rayas horizontales\nHorizontal Tiles , Baldosas horizontales\nHorizontal Warp Only , Sólo la urdimbre horizontal\nHot , Caliente\nHot (256) , Caliente (256)\nHough Sketch , Bosquejo de Hough\nHough Transform , Transformación de la dureza\nHouse , Casa\nHouseholder , Ama de casa\nHSI [all] , HSI [todos]\nHSI [Intensity] , HSI [Intensidad]\nHSL [all] , HSL [todo]\nHSL [Lightness] , HSL [Ligereza]\nHSL Adjustment , Ajuste del HSL\nHSV [all] , VHS [todo]\nHSV [Hue] , HSV [Tono]\nHSV [Saturation] , HSV [Saturación]\nHSV [Value] , HSV [Valor]\nHue (%) , Tono (%)\nHue Band , Banda de Hue\nHue Factor , Factor de tonalidad\nHue Offset , Compensación del tono\nHue Range , Rango de tonalidades\nHue Shift , Cambio de tono\nHue Smoothness , Tono Suavidad\nHuman  2 , Humano 2\nHuman 1 , Humano 1\nHuman 2 , Humano 2\nHybrid Median - Medium Speed Softest Output , Híbrido Mediano - Velocidad Media Salida Suave\nHypersthene , Hipersthene\nHypnosis , Hipnosis\nIain Noise Reduction 2019 , Reducción de ruido Iain 2019\nIdentity , Identidad\nIgnore Current Aspect , Ignorar el aspecto actual\nIlluminate 2D Shape , Iluminar la forma 2D\nIllumination , Iluminación\nIllustration Look , Ilustración Mira\nImage , Imagen\nImage + Background , Imagen + Fondo\nImage + Colors (2 Layers) , Imagen + Colores (2 Capas)\nImage + Colors (Multi-Layers) , Imagen + Colores (Multi-capas)\nImage Contour Dimensions , Dimensiones del contorno de la imagen\nImage Smoothness , Suavidad de la imagen\nImage to Grab Color from (.Png) , Imagen para captar el color de (.Png)\nImage Weight , Peso de la imagen\nImport Data , Importar datos\nImport RGB-565 File , Importar el archivo RGB-565\nImpulses 5x5 , Impulsos 5x5\nImpulses 7x7 , Impulsos 7x7\nImpulses 9x9 , Impulsos 9x9\nInclude Opacity Layer , Incluir la capa de opacidad\nIncreaseChroma1 , AumentarCroma1\nIncreasing , Aumentando\nIndoor Blue , Azul interior\nInfluence of Color Samples (%) , Influencia de las muestras de color (%)\nInformation , Información\nInit. Resolution , Init. Resolución\nInit. Type , Init. Escriba\nInit. With High Gradients Only , Init. Sólo con altos gradientes\nInitial Density , Densidad inicial\nInitialization , Inicialización\nInk Wash , Lavado de tinta\nInner , Interior\nInner Fading , Desvanecimiento interno\nInner Length , Longitud interior\nInner Radius , Radio interno\nInner Radius (%) , Radio interno (%)\nInner Shade , Sombra interior\nInpaint [Holes] , Pintura [Agujeros]\nInpaint [Morphological] , Pintura [Morfológica]\nInpaint [Multi-Scale] , Pintura [Multi-escala]\nInpaint [Patch-Based] , Pintura [a base de parches]\nInpaint [Transport-Diffusion] , Pintura [Transporte-Difusión]\nInput , Entrada\nInput Folder , Carpeta de entrada\nInput Frame Files Name , Nombre de los archivos del marco de entrada\nInput Guide Color , Guía de entrada Color\nInput Layers , Capas de entrada\nInput Transparency , Transparencia de la entrada\nInput Type , Tipo de entrada\nInsert New CLUT Layer , Insertar la nueva capa de CLUT\nInside , Dentro de\nInside Color , Color interior\nInstant [Consumer] (54) , Instantánea [Consumidor] (54)\nInstant [Pro] (68) , Instantánea [Pro] (68)\nIntensity , Intensidad\nIntensity of Purple Fringe , Intensidad de la franja púrpura\nInterlace Horizontal , Entrelazado Horizontal\nInterlace Vertical , Entrelazado Vertical\nInterpolate , Interpolar\nInterpolation , Interpolación\nInterpolation Type , Tipo de interpolación\nInverse , Invertir\nInverse Depth Map , Mapa de profundidad inversa\nInverse Radius , Radio inverso\nInverse Transform , Transformación inversa\nInversions , Inversiones\nInvert Background / Foreground , Invertir el fondo/primer plano\nInvert Blur , Invertir el borrón\nInvert Canvas Colors , Invertir los colores del lienzo\nInvert Colors , Invertir los colores\nInvert Image Colors , Invertir los colores de la imagen\nInvert Luminance , Invertir la luminancia\nInvert Mask , Invertir la máscara\nInward , Hacia adentro\nIsophotes , Isótopos\nIsotropic , Isótropo\nIteration , Iteración\nIterations , Iteraciones\nJapanese Maple Leaf , Hoja de arce japonés\nJPEG Artefacts , Artefactos JPEG\nJPEG Smooth , JPEG Suave\nJust Peachy , Sólo Peachy\nK-Factor , Factor K\nKaleidoscope [Blended] , Caleidoscopio [Mezcla]\nKaleidoscope [Polar] , Caleidoscopio [Polar]\nKaleidoscope [Symmetry] , Caleidoscopio [Simetría]\nKandinsky: Squares with Concentric Circles , Kandinsky: Cuadrados con círculos concéntricos\nKandinsky: Yellow-Red-Blue , Kandinsky: Amarillo-Rojo-Azul\nKeep , Manténgase en\nKeep Aspect Ratio , Mantener la relación de aspecto\nKeep Base Layer as Input Background , Mantener la capa base como fondo de entrada\nKeep Borders Square , Mantén los límites cuadrados\nKeep Color Channels , Mantener los canales de color\nKeep Colors , Mantener los colores\nKeep Detail , Mantén el detalle\nKeep Detail Layer Separate , Mantenga la capa de detalles separada\nKeep Iterations as Different Layers , Mantener las iteraciones como diferentes capas\nKeep Layers Separate , Mantener las capas separadas\nKeep Original Image Size , Mantener el tamaño original de la imagen\nKeep Original Layer , Mantener la capa original\nKeep Tiles Square , Mantén los azulejos cuadrados\nKeep Transparency in Output , Mantener la transparencia en la salida\nKernel , Núcleo\nKernel Multiplier , Multiplicador del núcleo\nKernel Type , Tipo de núcleo\nKey Factor , Factor clave\nKey Frame Rate , Velocidad de fotogramas clave\nKey Shift , Cambio de tecla\nKey Smoothness , Suavidad de la clave\nKeypoint Influence (%) , Influencia del punto clave (%)\nKlee: Death and Fire , Klee: Muerte y fuego\nKlee: In the Style of Kairouan , Klee: En el estilo de Kairouan\nKlee: Oriental Pleasure Garden Anagoria , Klee: Jardín de Placer Oriental Anagoria\nKlee: Polyphony 2 , Klee: Polifonía 2\nKlee: Red Waistcoat , Klee: Chaleco rojo\nKlimt: The Kiss , Klimt: El beso\nKodak 2393 (Cuspclip) , Kodak 2393 (Clavija)\nKodak Portra 160 , Retrato de Kodak 160\nKodak Portra 160 + , Retrato de Kodak 160 +\nKodak Portra 160 ++ , Retrato de Kodak 160 ++\nKodak Portra 160 - , Retrato de Kodak 160 -\nKodak Portra 400 , Retrato de Kodak 400\nKodak Portra 400 - , Retrato de Kodak 400 -\nKodak Portra 800 , Retrato de Kodak 800\nKodak Portra 800 - , Retrato de Kodak 800 -\nKuwahara on Painting , Kuwahara sobre la pintura\nL1-Norm , Norma L1\nL2-Norm , L2-Norma\nLab , Laboratorio\nLab (Chroma Only) , Laboratorio (sólo croma)\nLab (Distinct) , Laboratorio (Distinto)\nLab (Luma Only) , Laboratorio (Sólo Luma)\nLab (Luma/Chroma) , Laboratorio (Luma/Croma)\nLab (Mixed) , Laboratorio (Mixto)\nLab [a-Chrominance] , Laboratorio [a-Crominancia]\nLab [ab-Chrominances] , Laboratorio [ab-Crominanzas]\nLab [all] , Laboratorio [todos]\nLab [b-Chrominance] , Laboratorio [b-Crominancia]\nLab [Lightness] , Laboratorio [Ligereza]\nLandscape , Paisaje\nLandscape-1 , Paisaje-1\nLandscape-10 , Paisaje-10\nLandscape-2 , Paisaje-2\nLandscape-3 , Paisaje-3\nLandscape-4 , Paisaje-4\nLandscape-5 , Paisaje-5\nLandscape-6 , Paisaje-6\nLandscape-7 , Paisaje-7\nLandscape-8 , Paisaje-8\nLandscape-9 , Paisaje-9\nLarge , Gran\nLarge Noise , Ruido grande\nLast , Último\nLast Frame , Último cuadro\nLate Afternoon Wanderlust , La tarde Wanderlust\nLate Sunset , Atardecer tardío\nLava Lamp , Lámpara de lava\nLayer , Capa\nLayer Processing , Procesamiento de la capa\nLayers to Tiles , De las capas a los azulejos\nLch [all] , Lch [todos]\nLch [c-Chrominance] , Lch [c-Crominancia]\nLch [ch-Chrominances] , Lch [ch-Crominanzas]\nLch [h-Chrominance] , Lch [h-Crominancia]\nLeaf , Hoja\nLeaf Color , Color de la hoja\nLeaf Opacity (%) , Opacidad de la hoja (%)\nLeak Type , Tipo de fuga\nLeft , Izquierda\nLeft  Foreground , Primer plano izquierdo\nLeft / Right Blur (%) , Borrón izquierdo / derecho (%)\nLeft and Right Background , Fondo izquierdo y derecho\nLeft and Right Foreground , Primer plano a la izquierda y a la derecha\nLeft and Right Image Streams , Corrientes de imágenes de izquierda y derecha\nLeft Diagonal Foreground , Diagonal izquierda en primer plano\nLeft Foreground , Primer plano izquierdo\nLeft Position , Posición izquierda...\nLeft Side Orientation , Orientación del lado izquierdo\nLeft Slope , Pendiente izquierda\nLeft Stream Only , Sólo el arroyo izquierdo\nLength , Longitud\nLenticular Density LPI , Densidad lenticular LPI\nLenticular Orientation , Orientación lenticular\nLenticular Print , Impresión lenticular\nLevel , Nivel\nLevel Frequency , Nivel Frecuencia\nLevels , Niveles\nLife Giving Tree , Árbol de la vida\nLifestyle & Commercial-1 , Estilo de vida y comercial-1\nLifestyle & Commercial-10 , Estilo de vida y comercial-10\nLifestyle & Commercial-2 , Estilo de vida y comercial-2\nLifestyle & Commercial-3 , Estilo de vida y comercial-3\nLifestyle & Commercial-4 , Estilo de vida y comercial-4\nLifestyle & Commercial-5 , Estilo de vida y comercial-5\nLifestyle & Commercial-6 , Estilo de vida y comercial-6\nLifestyle & Commercial-7 , Estilo de vida y comercial-7\nLifestyle & Commercial-8 , Estilo de vida y comercial-8\nLifestyle & Commercial-9 , Estilo de vida y comercial-9\nLight , Luz\nLight (blown) , Luz (soplado)\nLight Angle , Ángulo de luz\nLight Color , Color de la luz\nLight Direction , Dirección de la luz\nLight Effect , Efecto de la luz\nLight Glow , Luz Brillante\nLight Grey , Gris claro\nLight Leaks , Fugas de luz\nLight Motive , Motivo de la luz\nLight Patch , Parche de luz\nLight Rays , Los rayos de luz\nLight Smoothness , Suavidad ligera\nLight Strength , Fuerza de la luz\nLight Type , Tipo de luz\nLighten , Aligera\nLighten Edges , Aligerar los bordes\nLighter , Encendedor\nLighting , Iluminación\nLighting Angle , Ángulo de iluminación\nLightness , Ligereza\nLightness (%) , Ligereza (%)\nLightness Factor , Factor de ligereza\nLightness Level , Nivel de luminosidad\nLightness Max (%) , Ligereza Máxima (%)\nLightness Min (%) , Ligereza Mínimo (%)\nLightness Shift , Cambio de la ligereza\nLightness Smoothness , Ligereza Suavidad\nLightning , Relámpago\nLighty Smooth , Ligero Suave\nLimit Hue Range , Limitar el rango de tonalidades\nLine , Línea\nLine Opacity , Opacidad de la línea\nLine Precision , Precisión de la línea\nLinear , Lineal\nLinear Burn , Quemadura lineal\nLinear Light , Luz lineal\nLinear RGB , RGB lineal\nLinear RGB [All] , RGB lineal [Todos]\nLinear RGB [Blue] , RGB lineal [Azul]\nLinear RGB [Green] , RGB lineal [Verde]\nLinear RGB [Red] , RGB lineal [Rojo]\nLinearity , Linealidad\nLineart + Color Spots , Lineal + manchas de color\nLineart + Color Spots + Extrapolated Colors , Lineal + manchas de color + colores extrapolados\nLineart + Colors , Lineal + Colores\nLineart + Extrapolated Colors , Lineal + Colores extrapolados\nLines , Líneas\nLines (256) , Líneas (256)\nLinify , Linifica\nLion , León\nLissajous [Animated] , Lissajous [Animado]\nLissajous Spiral , Espiral de Lissajous\nLittle , Pequeño\nLittle Cyan , El pequeño Cyan\nLittle Key , Pequeña Llave\nLittle Magenta , Pequeño Magenta\nLittle Red , Pequeño Rojo\nLittle Yellow , Pequeño Amarillo\nLN Amplititude , LN Amplititud\nLN Amplitude , Amplitud LN\nLN Average-Smoothness , LN Promedio-Suavidad\nLN Size , Tamaño LN\nLocal  Normalisation , Normalización local\nLocal Contrast , Contraste local\nLocal Contrast Effect , Efecto de contraste local\nLocal Contrast Enhance , Mejora del contraste local\nLocal Contrast Enhancement , Mejoramiento del contraste local\nLocal Contrast Style , Estilo de contraste local\nLocal Detail Enhancer , Mejorador de detalles locales\nLocal Normalization , Normalización local\nLocal Orientation , Orientación local\nLocal Processing , Procesamiento local\nLocal Similarity Mask , Máscara de similitud local\nLocal Variance Normalization , Normalización de la variación local\nLock Return Scaling to Source Layer , Bloquear la escala de retorno a la capa de la fuente\nLock Source , Bloquea la fuente\nLock Uniform Sampling , Bloquee el muestreo uniforme\nLogarithmic Distortion , Distorsión logarítmica\nLogarithmic Distortion Axis Combination for X-Axis , Combinación de ejes de distorsión logarítmica para el eje X\nLogarithmic Distortion Axis Combination for Y-Axis , Combinación de eje de distorsión logarítmica para el eje Y\nLogarithmic Distortion X-Axis Direction , Distorsión logarítmica Dirección del eje X\nLogarithmic Distortion Y-Axis Direction , Distorsión logarítmica Dirección del eje Y\nLomography Redscale 100 , Lomografía Escala Roja 100\nLomography X-Pro Slide 200 , Lomografía X-Pro Diapositiva 200\nLookup , Busca\nLookup Factor , Factor de búsqueda\nLookup Size , Tamaño de la búsqueda\nLoop Method , Método de bucle\nLow , Bajo\nLow Bias , Bajo sesgo...\nLow Contrast Blue , Azul de bajo contraste\nLow Frequency , Baja frecuencia\nLow Frequency Layer , Capa de baja frecuencia\nLow Scale , Escala baja\nLow Value , Bajo valor...\nLower Layer Is the Bottom Layer for All Blends , La capa inferior es la capa inferior para todas las mezclas\nLower Mask Threshold (%) , Umbral inferior de la máscara (%)\nLower Side Orientation , Orientación del lado inferior\nLowercase Letters , Cartas en minúsculas\nLowlights Crossover Point , Punto de cruce de luces bajas\nLowres CLUT , Los bajos CLUT\nLucky 64 , Afortunado 64\nLuma Noise , Ruido de luma\nLuminance , Luminancia\nLuminance Factor , Factor de luminancia\nLuminance Level , Nivel de luminancia\nLuminance Only , Sólo la luminancia\nLuminance Only (Lab) , Sólo luminancia (laboratorio)\nLuminance Only (YCbCr) , Sólo luminancia (YCbCr)\nLuminance Shift , Cambio de luminancia\nLuminance Smoothness , Luminancia Suavidad\nLuminosity from Color , La luminosidad del color\nLuminosity Type , Tipo de luminosidad\nLush Green Summer , El exuberante verano verde\nLylejk's Painting , La pintura de Lylejk\nMagenta Coffee , Café Magenta\nMagenta Day , Día de Magenta\nMagenta Day 01 , Día Magenta 01\nMagenta Dream , Sueño Magenta\nMagenta Factor , Factor Magenta\nMagenta Shift , Cambio de Magenta\nMagenta Smoothness , Suavidad del magenta\nMagenta Yellow , Amarillo Magenta\nMagenta-Yellow , Magenta-amarillo\nMagic Details , Detalles mágicos\nMagnitude / Phase , Magnitud / Fase\nMail , Correo electrónico\nMake Hue Depends on Region Size , Hacer que el tono dependa del tamaño de la región\nMake Seamless [Diffusion] , Hacer que la [difusión] sin fisuras\nMake Seamless [Patch-Based] , Hacer que el [Patch-Based] sin fisuras\nMake Squiggly , Hacer Garabatos\nMake Up , Maquillaje\nMandelbrot Explorer , Explorador de Mandelbrot\nMandrill , Mandril\nManual Controls , Controles manuales\nMap , Mapa\nMap Tones , Tonos de mapa\nMapping , Mapeo\nMarble , Mármol\nMargin (%) , Margen (%)\nMascot Image , Imagen de la mascota\nMasculine , Masculino\nMask , Máscara\nMask + Background , Máscara + Fondo\nMask as Bottom Layer , La máscara como capa inferior\nMask By , Máscara de\nMask Color , Color de la máscara\nMask Contrast , Contraste de la máscara\nMask Creator , Creador de la máscara\nMask Dilation , Dilatación de la máscara\nMask Size , Tamaño de la máscara\nMask Smoothness (%) , Suavidad de la máscara (%)\nMask Type , Tipo de máscara\nMasked Image , Imagen Enmascarada\nMasking , Enmascaramiento\nMatch Colors With , Combina los colores con\nMatching Precision (Smaller Is Faster) , Precisión de la coincidencia (Más pequeño es más rápido)\nMath Symbols , Símbolos matemáticos\nMatrix , Matriz\nMax Angle , Ángulo máximo\nMax Angle Deviation (deg) , Desviación del ángulo máximo (deg)\nMax Area , Área máxima\nMax Curve , Curva Max\nMax Cut (%) , Corte máximo (%)\nMax Iterations , Iteraciones máximas\nMax Length (%) , Longitud máxima (%)\nMax Offset (%) , Compensación máxima (%)\nMax Radius , Radio máximo\nMax Threshold , Umbral máximo\nMaximal Area , Área máxima\nMaximal Color Saturation , Máxima saturación de color\nMaximal Highlights , Máximos resultados\nMaximal Radius , Radio máximo\nMaximal Seams per Iteration (%) , Costuras máximas por iteración (%)\nMaximal Size , Tamaño máximo\nMaximal Value , Valor máximo\nMaximum , Máximo\nMaximum Dimension , Dimensión máxima\nMaximum Image Size , Tamaño máximo de la imagen\nMaximum Number of Image Colors , Número máximo de colores de la imagen\nMaximum Number of Output Layers , Número máximo de capas de salida\nMaximum Red:Blue Ratio in the Fringe , Máxima proporción rojo-azul en el margen\nMaximum Saturation , Saturación máxima\nMaximum Size Factor , Factor de tamaño máximo\nMaximum Value , Valor máximo\nMaze , Laberinto\nMaze Type , Tipo de laberinto\nMean Color , Color medio\nMean Curvature , Curvatura media\nMedian , Mediana\nMedian (beware: Memory-Consuming!) , Mediana (cuidado: ¡consumo de memoria!)\nMedian Radius , Radio medio\nMedium , Medio\nMedium 3 , Medio 3\nMedium Details Smoothness , Detalles medios Suavidad\nMedium Details Threshold , Detalles medios Umbral\nMedium Frequency Layer , Capa de frecuencia media\nMedium Scale (Original) , Escala media (original)\nMedium Scale (Smoothed) , Escala media (Suavizado)\nMemories , Recuerdos\nMerge Brightness / Colors , Fusionar brillo / colores\nMerge Layers? , ¿Fusionar capas?\nMerging Mode , Modo de fusión\nMerging Option , Opción de fusión\nMerging Steps , Fusión de pasos\nMess with Bits , Meterse con las mordeduras\nMetallic Look , Mirada metálica\nMethod , Método\nMetric , Métrico\nMetropolis , Metrópolis\nMicro/macro Details  Adjusted , Detalles de micro/macro ajustados\nMid Grey , Gris medio\nMid Noise , Ruido medio\nMid Tone Contrast , Contraste de los tonos medios\nMid-Dark Grey , Gris oscuro medio\nMid-Light Grey , Gris de media luz\nMiddle Grey , Gris medio\nMiddle Scale , Escala media\nMidpoint , Punto medio\nMidtones Brightness , Brillo de los tonos medios\nMidtones Color Intensity , Intensidad de color de los tonos medios\nMidtones Hue , Tono de tonos medios\nMighty Details , Detalles poderosos\nMin Angle Deviation (deg) , Desviación del ángulo mínimo (deg)\nMin Area % , Área mínima\nMin Cut (%) , Corte mínimo (%)\nMin Length (%) , Longitud mínima (%)\nMin Offset (%) , Compensación mínima (%)\nMin Radius , Radio mínimo\nMin Threshold , Umbral mínimo\nMineral Mosaic , Mosaico mineral\nMinesweeper , Barredor de minas\nMinimal Area , Área mínima\nMinimal Area (%) , Área mínima (%)\nMinimal Color Intensity , Mínima intensidad de color\nMinimal Highlights , Mínimos destacados\nMinimal Path , Camino mínimo\nMinimal Radius , Radio mínimo\nMinimal Region Area , Área de la región mínima\nMinimal Scale (%) , Escala mínima (%)\nMinimal Shape Area , Área de forma mínima\nMinimal Size , Tamaño mínimo\nMinimal Size (%) , Tamaño mínimo (%)\nMinimal Stroke Length , Longitud mínima de la apoplejía\nMinimal Value , Valor mínimo\nMinimalist Caffeination , La cafeína minimalista\nMinimum , Mínimo\nMinimum Brightness , Brillo mínimo\nMinimum Red:Blue Ratio in the Fringe , Mínima proporción rojo-azul en el margen\nMirror , Espejo\nMirror Effect , Efecto espejo\nMirror X , Espejo X\nMirror Y , Espejo Y\nMix , Mezcla\nMixed Mode , Modo mixto\nMixer [CMYK] , Mezclador [CMYK]\nMixer [HSV] , Mezclador [HSV]\nMixer [Lab] , Mezclador [Laboratorio]\nMixer [PCA] , Mezclador [PCA]\nMixer [RGB] , Mezclador [RGB]\nMixer [YCbCr] , Mezclador [YCbCr]\nMixer Mode , Modo mezclador\nMixer Style , Estilo mezclador\nMode , Modo\nModern Film , Película moderna\nModulo Value , Valor del módulo\nMoir&eacute; Animation , Moir&eacutea; Animación\nMoire Removal , Eliminación del moiré\nMoire Removal Method , Método de eliminación de mohos\nMondrian: Composition in Red-Yellow-Blue , Mondrian: Composición en Rojo-Amarillo-Azul\nMondrian: Evening; Red Tree , Noche; Árbol rojo\nMondrian: Gray Tree , Mondrian: Árbol gris\nMonet: San Giorgio Maggiore at Dusk , Monet: San Giorgio Maggiore al anochecer\nMonet: Water-Lily Pond , Monet: Estanque de nenúfares\nMonet: Wheatstacks - End of Summer , Monet: Wheatstacks - Fin del verano\nMonkey , Mono\nMono Tinted , Mono Teñido\nMono-Directional , Mono-Direccional\nMonochrome , Monocromo\nMonochrome 1 , Monocromo 1\nMonochrome 2 , Monocromo 2\nMontage , Montaje\nMontage Type , Tipo de montaje\nMoonlight , Luz de Luna\nMoonlight 01 , Luz de Luna 01\nMoonrise , Salida de la Luna\nMorning 6 , Mañana 6...\nMorph [Interactive] , Morph [Interactivo]\nMorph Layers , Capas de morfología\nMorphological - Fastest Sharpest Output , Morfológico - La salida más rápida y aguda\nMorphological Closing , Cierre morfológico\nMorphological Filter , Filtro morfológico\nMorphology Painting , Morfología Pintura\nMorphology Strength , Morfología Fuerza\nMorroco 16 , Marruecos 16\nMosaic , Mosaico\nMost , La mayoría\nMostly Blue , Mayormente Azul\nMotion Analyzer , Analizador de movimiento\nMotion-Compensated , Movimiento compensado\nMuch , Mucho\nMuch Green , Mucho verde\nMuch Red , Mucho rojo\nMulti-Layer Etch , Grabado multicapa\nMultiple Colored Shapes Over Transp. BG , Múltiples formas de color sobre el transporte. BG\nMultiple Layers , Múltiples capas\nMultiplier , Multiplicador\nMultiply , Multiplicar\nMultiscale Operator , Operador multiescala\nMunch: The Scream , Munch: El grito\nMute Shift , Cambio de silencio\nMuted 01 , Silenciado 01\nMuted Fade , Desvanecimiento apagado\nName , Nombre\nNatural (vivid) , Natural (vívido)\nNature & Wildlife-1 , Naturaleza y Vida Silvestre-1\nNature & Wildlife-10 , Naturaleza y Vida Silvestre-10\nNature & Wildlife-2 , Naturaleza y Vida Silvestre-2\nNature & Wildlife-3 , Naturaleza y Vida Silvestre-3\nNature & Wildlife-4 , Naturaleza y Vida Silvestre-4\nNature & Wildlife-5 , Naturaleza y Vida Silvestre-5\nNature & Wildlife-6 , Naturaleza y Vida Silvestre-6\nNature & Wildlife-7 , Naturaleza y Vida Silvestre-7\nNature & Wildlife-8 , Naturaleza y Vida Silvestre-8\nNature & Wildlife-9 , Naturaleza y Vida Silvestre-9\nNb Circles Surrounding , Nb Círculos alrededor\nNear Black , Cerca de Black\nNearest , El más cercano\nNearest Neighbor , El vecino más cercano\nNeat Merge , Fusión limpia\nNebulous , Nebuloso\nNegate , Negar\nNegation , Negación\nNegative , Negativo\nNegative [Color] (13) , Negativo [Color] (13)\nNegative [New] (39) , Negativo [Nuevo] (39)\nNegative [Old] (44) , Negativo [Antiguo] (44)\nNegative Color Abstraction , Abstracción de color negativo\nNegative Colors , Colores negativos\nNegative Effect , Efecto negativo\nNeighborhood Size (%) , Tamaño del vecindario (%)\nNeighborhood Smoothness , Suavidad del vecindario\nNemesis , Némesis\nNeon 770 , Neón 770\nNeon Lightning , Relámpago de neón\nNeutral Color , Color neutro\nNeutral Teal Orange , Naranja neutro\nNeutral Warm Fade , Desvanecimiento del calor neutral\nNew Curves [Interactive] , Nuevas Curvas [Interactivo]\nNewspaper , Periódico\nNight 01 , Noche 01\nNight Blade 4 , Cuchilla Nocturna 4\nNight From Day , Noche desde el día\nNight King 141 , Rey de la Noche 141\nNight Spy , Espía nocturno\nNine Layers , Nueve capas\nNo Masking , No hay máscaras\nNo Recovery , No hay recuperación\nNo Rescaling , No hay reescalado\nNo Transparency , No hay transparencia\nNoise , Ruido\nNoise [Additive] , Ruido [Aditivo]\nNoise [Perlin] , Ruido [Perlin]\nNoise [Spread] , Ruido [Propagación]\nNoise A , Ruido A\nNoise B , Ruido B\nNoise C , Ruido C\nNoise D , Ruido D\nNoise Level , Nivel de ruido\nNoise Scale , Escala de ruido\nNoise Type , Tipo de ruido\nNon / No , No / No\nNon-Linearity , No linealidad\nNon-Rigid , No Rígido\nNone , Ninguno\nNone (Allows Multi-Layers) , Ninguno (permite multicapas)\nNone- Skip , No... Saltar...\nNorm Type , Tipo de norma\nNormal Map , Mapa normal\nNormal Output , Salida normal\nNormalization , Normalización\nNormalize , Normalizar\nNormalize Brightness , Normalizar el brillo\nNormalize Colors , Normalizar los colores\nNormalize Illumination , Normalizar la iluminación\nNormalize Input , Normalizar la entrada\nNormalize Luma , Normalizar la Luma\nNormalize Scales , Normalizar las escalas\nNostalgia Honey , Nostalgia Miel\nNostalgic , Nostálgico\nNothing , Nada\nNumber , Número\nNumber of Added Frames , Número de cuadros añadidos\nNumber of Angles , Número de ángulos\nNumber of Clusters , Número de grupos\nNumber of Colors , Número de colores\nNumber of Frames , Número de cuadros\nNumber of Inter-Frames , Número de Inter-Frames\nNumber of Iterations per Scale , Número de iteraciones por escala\nNumber of Key-Frames , Número de fotogramas clave\nNumber of Levels , Número de niveles\nNumber of Matches (Coarsest) , Número de cerillas (más gruesas)\nNumber of Matches (Finest) , Número de cerillas (mejor)\nNumber of Orientations , Número de orientaciones\nNumber Of Rays , Número de rayos\nNumber of Scales , Número de escalas\nNumber of Sizes , Número de tamaños\nNumber of Streaks , Número de rayas\nNumber of Teeth , Número de dientes\nNumber of Tones , Número de tonos\nObject Animation , Animación de objetos\nObject Ratio , Relación de objetos\nObject Tolerance , Tolerancia a los objetos\nOctagon , Octágono\nOctaves , Octavas\nOctogon , Octogono\nOddness (%) , Rareza (%)\nOff , Fuera de\nOffset (%) , Compensación (%)\nOffset Angle Rays Layer 1 , Rayos de ángulo compensado de la capa 1\nOffset Angle Rays Layer 2 , Rayos de ángulo compensado de la capa 2\nOld Method - Slowest , El método antiguo - el más lento\nOld Photograph , Fotografía antigua\nOld West , El viejo oeste\nON1 Photography (90) , ON1 Fotografía (90)\nOnce Upon a Time , Érase una vez\nOne Layer , Una capa\nOne Layer (Horizontal) , Una capa (horizontal)\nOne Layer (Vertical) , Una capa (vertical)\nOne Layer per Single Color , Una capa por cada color\nOne Layer per Single Region , Una capa por cada región\nOne Thread , Un hilo\nOnly Leafs , Sólo las hojas\nOnly Red , Sólo el rojo\nOnly Red and Blue , Sólo el rojo y el azul\nOpacity , Opacidad\nOpacity (%) , Opacidad (%)\nOpacity as Heightmap , Opacidad como mapa de altura\nOpacity Contours , Contornos de Opacidad\nOpacity Factor , Factor de Opacidad\nOpacity Gain , Ganancia de opacidad\nOpacity Gamma , Opacidad Gamma\nOpacity Snowflake , Opacidad Copo de nieve\nOpacity Threshold (%) , Umbral de Opacidad (%)\nOpaque Pixels , Píxeles opacos\nOpaque Regions on Top Layer , Regiones opacas en la capa superior\nOpaque Skin , Piel opaca\nOpen Interactive Preview , Abrir la vista previa interactiva\nOpening , Apertura\nOperation Yellow , Operación Amarillo\nOperator , Operador\nOpposing , Oponiéndose a\nOptimized Lateral Inhibition , Inhibición lateral optimizada\nOrange Dark 4 , Naranja oscuro 4\nOrange Dark 7 , Naranja oscuro 7\nOrange Dark Look , Naranja oscuro...\nOrange Tone , Tono de naranja\nOrange Underexposed , Naranja Subexpuesto\nOranges , Naranjas\nOrder , Pedido\nOrder By , Ordenar por\nOrientation , Orientación\nOrientation Coherence , Orientación Coherencia\nOrientation Only , Sólo orientación\nOrientations , Orientaciones\nOriginal - (Opening + Closing)/2 , Original - (Apertura + Cierre)/2\nOriginal - Erosion , Original - Erosión\nOriginal - Opening , Original - Apertura\nOrthogonal Radius , Radio ortogonal\nOthers (69) , Otros (69)\nOuline Color , Color Ouline\nOuter , Exterior\nOuter Fading , Desvanecimiento exterior\nOuter Length , Longitud exterior\nOuter Radius , Radio exterior\nOutline , Esquema\nOutline (%) , Esquema (%)\nOutline Color , Color del contorno\nOutline Contrast , Contraste del contorno\nOutline Opacity , Reseña de la opacidad\nOutline Size , Tamaño del contorno\nOutline Smoothness , Suavidad del contorno\nOutline Thickness , Espesor del contorno\nOutlined , Resumido\nOutput , Salida\nOutput As , Salida como\nOutput as Files , Salida como archivos\nOutput as Frames , Salida como marcos\nOutput as Multiple Layers , Salida como múltiples capas\nOutput as Separate Layers , Salida como capas separadas\nOutput Ascii File , Salida del archivo Ascii\nOutput Chroma NR , Salida Croma NR\nOutput CLUT , Salida CLUT\nOutput CLUT Resolution , Resolución de salida CLUT\nOutput Coordinates File , Archivo de coordenadas de salida\nOutput Corresponding CLUT , Salida correspondiente CLUT\nOutput Directory , Directorio de salida\nOutput Each Piece on a Different Layer , La salida de cada pieza en una capa diferente\nOutput Filename , Nombre de archivo de salida\nOutput Files , Archivos de salida\nOutput Folder , Carpeta de salida\nOutput Format , Formato de salida\nOutput Frames , Marcos de salida\nOutput Height , Altura de salida\nOutput HTML File , Archivo HTML de salida\nOutput Layers , Capas de salida\nOutput Mode , Modo de salida\nOutput Multiple Layers , Salida de múltiples capas\nOutput Preset as a HaldCLUT Layer , La salida preestablecida como una capa de HaldCLUT\nOutput Region Delimiters , Delimitadores de la región de salida\nOutput Saturation , Saturación de salida\nOutput Sharpening , Afilado de salida\nOutput Stroke Layer On , Capa de golpe de salida activada\nOutput to Folder , Salida a la carpeta\nOutput Type , Tipo de salida\nOutput Width , Ancho de salida\nOutside , Fuera de\nOutside Color , Color exterior\nOutside-In , Afuera-En\nOutward , Exterior\nOverall Blur , Desenfoque total\nOverall Contrast , Contraste general\nOverall Lightness , Ligereza general\nOverlap (%) , Superposición (%)\nOverlay , Superposición\nOversample , Sobremuestreo\nOvershoot , Sobregiro\nPadding (px) , Acolchado (px)\nPaint , Pinta\nPaint Daub , Pinta a Daub\nPaint Effect , Efecto de la pintura\nPaint Splat , Splat de pintura\nPainter's Edge Protection Flow , Flujo de protección del borde del pintor\nPainter's Smoothness , La suavidad del pintor\nPainter's Touch Sharpness , La nitidez del toque del pintor\nPainting , Pintura\nPainting Opacity , Opacidad de la pintura\nPaladin , Paladín\nPaladin 1875 , Paladín 1875\nPaper Texture , Textura del papel\nParallel Processing , Procesamiento paralelo\nParrots , Loros\nPassing By , Pasando\nPastell Art , Arte Pastel\nPatch , Parche\nPatch Measure , Medida del parche\nPatch Size , Tamaño del parche\nPatch Size for Analysis , Tamaño del parche para el análisis\nPatch Size for Synthesis , Tamaño del parche para la síntesis\nPatch Size for Synthesis (Final) , Tamaño del parche para la síntesis (Final)\nPatch Smoothness , Suavidad del parche\nPatch Variance , Variación del parche\nPattern , Patrón\nPattern Angle , Ángulo del patrón\nPattern Height , Patrón de altura\nPattern Type , Tipo de patrón\nPattern Variation 1 , Variación del patrón 1\nPattern Variation 2 , Variación del patrón 2\nPattern Variation 3 , Variación del patrón 3\nPattern Weight , Patrón de peso\nPattern Width , Ancho del patrón\nPCA Transfer , Transferencia de PCA\nPea Soup , Sopa de guisantes\nPen Drawing , Dibujo a pluma\nPenalize Patch Repetitions , Penalizar las repeticiones de parches\nPencil , Lápiz\nPencil Amplitude , Amplitud del lápiz\nPencil Portrait , Retrato a lápiz\nPencil Size , El tamaño del lápiz\nPencil Smoother Edge Protection , Protección de bordes más lisos del lápiz\nPencil Smoother Sharpness , La nitidez del lápiz es más suave\nPencil Smoother Smoothness , Lápiz Suavizante Suavidad\nPencil Type , Tipo de lápiz\nPencils , Lápices\nPentagon , Pentágono\nPeppers , Pimientos\nPercent of Image Half-Hypotenuse (%) , Porcentaje de imagen media hipotenusa (%)\nPeriodic , Periódico\nPeriodic Dots , Puntos periódicos\nPeriodicity , Periodicidad\nPerserve Luminance , Perseverar en la luminancia\nPerspective , Perspectiva\nPerturbation , Perturbación\nPetals , Pétalos\nPhase , Fase\nPhone , Teléfono\nPhotoillustration , Fotoilustración\nPicasso: Seated Woman , Picasso: Mujer sentada\nPicasso: The Reservoir - Horta De Ebro , Picasso: El Embalse - Horta De Ebro\nPiece Complexity , Complejidad de la pieza\nPiece Size (px) , Tamaño de la pieza (px)\nPin Light , Luz de alfiler\nPixel Values , Valores de los píxeles\nPlacement , Colocación\nPlaid , Tartán\nPlane , Avión\nPlasma Effect , El efecto del plasma\nPlot Type , Tipo de parcela\nPoint #0 , Punto #0\nPoint #1 , Punto 1\nPoint #2 , Punto #2\nPoint #3 , Punto 3\nPoint 1 , Punto 1\nPoint 2 , Punto 2\nPoints , Puntos\nPolar Transform , Transformación polar\nPolaroid 665 -- , Polaroid 665...\nPolaroid 665 Negative , Polaroid 665 Negativo\nPolaroid 665 Negative + , Polaroid 665 Negativo +\nPolaroid 665 Negative - , Polaroid 665 Negativo -\nPolaroid 665 Negative HC , Polaroid 665 Negativo HC\nPolaroid 669 -- , Polaroid 669...\nPolaroid 669 Cold -- , Polaroid 669 Cold...\nPolaroid 690 -- , Polaroid 690...\nPolaroid 690 Cold -- , Polaroid 690 Cold...\nPolaroid PX-100UV+ Cold , Polaroid PX-100UV+ Frío\nPolaroid PX-100UV+ Cold + , Polaroid PX-100UV+ Frío +\nPolaroid PX-100UV+ Cold ++ , Polaroid PX-100UV+ Frío ++\nPolaroid PX-100UV+ Cold +++ , Polaroid PX-100UV+ Frío +++\nPolaroid PX-100UV+ Cold - , Polaroid PX-100UV+ Frío -\nPolaroid PX-100UV+ Cold -- , Polaroid PX-100UV+ Frío...\nPolaroid PX-100UV+ Warm ++ , Polaroid PX-100UV+ Caliente ++\nPolaroid PX-680 -- , Polaroid PX-680...\nPolaroid PX-680 Cold ++a , Polaroid PX-680 Frío ++a\nPolaroid PX-680 Cold -- , Polaroid PX-680 Cold...\nPolaroid PX-70 -- , Polaroid PX-70...\nPolaroid Time Zero (Expired) , Polaroid Tiempo Cero (Expirado)\nPolaroid Time Zero (Expired) + , Polaroid Time Zero (Expirado) +\nPolaroid Time Zero (Expired) ++ , Polaroid Tiempo Cero (Expirado) ++\nPolaroid Time Zero (Expired) - , Polaroid Time Zero (Expirado) -\nPolaroid Time Zero (Expired) -- , Polaroid Tiempo Cero (Expirado) --\nPolaroid Time Zero (Expired) --- , Polaroid Tiempo Cero (Expirado) ---\nPolaroid Time Zero (Expired) Cold , Polaroid Tiempo Cero (Expirado) Frío\nPolaroid Time Zero (Expired) Cold - , Polaroid Tiempo Cero (Expirado) Frío -\nPolaroid Time Zero (Expired) Cold -- , Polaroid Time Zero (Expirado) Cold --\nPolaroid Time Zero (Expired) Cold --- , Polaroid Tiempo Cero (Expirado) Frío ---\nPole Long , Polo Largo\nPole Rotation , Rotación de los polos\nPolka Dots , Lunares\nPollock: Convergence , Pollock: Convergencia\nPollock: Summertime Number 9A , Pollock: Número de verano 9A\nPolygonize [Delaunay] , Poligonizar [Delaunay]\nPolygonize [Energy] , Poligonizar [Energía]\nPop Shadows , Sombras Pop\nPortrait , Retrato\nPortrait Retouching , Retoque de retratos\nPortrait-1 , Retrato-1\nPortrait-2 , Retrato-2\nPortrait-3 , Retrato-3\nPortrait-4 , Retrato-4\nPortrait-5 , Retrato-5\nPortrait-6 , Retrato-6\nPortrait-7 , Retrato-7\nPortrait-8 , Retrato-8\nPortrait-9 , Retrato-9\nPortrait0 , Retrato.\nPortrait1 , Retrato1\nPortrait10 , Retrato10\nPortrait2 , Retrato2\nPortrait3 , Retrato3\nPortrait4 , Retrato4\nPortrait5 , Retrato5\nPortrait6 , Retrato6\nPortrait7 , Retrato7\nPortrait8 , Retrato8\nPortrait9 , Retrato9\nPosition , Posición\nPosition X (%) , Posición X (%)\nPosition X Origin (%) , Posición X Origen (%)\nPosition Y (%) , Posición Y (%)\nPosition Y Origin (%) , Posición Y Origen (%)\nPositive , Positivo\nPost-Normalize , Post-Normalizar\nPost-Process , Post-Proceso\nPoster Edges , Bordes de carteles\nPosterization Antialiasing , Posterización Antialiasing\nPosterization Level , Nivel de posterización\nPosterize , Póster\nPosterized Dithering , Dithering postergado\nPower , Poder\nPre-Defined , Pre-definido\nPre-Defined Colormap , Colormap predefinido\nPre-Normalize , Pre-Normalizar\nPre-Normalize Image , Pre-Normalizar la imagen\nPre-Process , Pre-proceso\nPrecision , Precisión\nPrecision (%) , Precisión (%)\nPreliminary Surface Shift , Desplazamiento superficial preliminar\nPreliminary X-Axis Scaling , Escalado preliminar del eje X\nPreliminary Y-Axis Scaling , Escalado preliminar del eje Y\nPreprocessor Power , Potencia del preprocesador\nPreprocessor Radius , Radio del preprocesador\nPreserve Canvas for Post Bump Mapping , Preservar el lienzo para el mapeo post bump\nPreserve Edges , Preservar los bordes\nPreserve Image Dimension , Preservar la dimensión de la imagen\nPreserve Initial Brightness , Preservar el brillo inicial\nPreserve Luminance , Preservar la luminancia\nPreview , Vista previa\nPreview All Outputs , Vista previa de todas las salidas\nPreview Bands , Previsualización de bandas\nPreview Brush , Previsualización de la brocha\nPreview Data , Vista previa de los datos\nPreview Detected Shapes , Vista previa de las formas detectadas\nPreview Frame Selection , Selección del cuadro de vista previa\nPreview Gradient , Vista previa del gradiente\nPreview Grain Alone , Previsualización del grano solo\nPreview Grid , Cuadrícula de vista previa\nPreview Guides , Guías de Previsualización\nPreview Mapping , Vista previa de la cartografía\nPreview Mask , Máscara de vista previa\nPreview Opacity (%) , Previsión de Opacidad (%)\nPreview Original , Previsualización Original\nPreview Precision , Previsión Precisión\nPreview Progress (%) , Avance de la previsión (%)\nPreview Progression While Running , Previsualizar la progresión mientras se ejecuta\nPreview Ref Point , Vista previa Punto de referencia\nPreview Reference Circle , Círculo de referencia de vista previa\nPreview Selection , Selección de la vista previa\nPreview Shape , Vista previa de la forma\nPreview Shows , Previsualización de espectáculos\nPreview Split , Previsualización de Split\nPreview Subsampling , Previsión de submuestreo\nPreview Time , Tiempo de Previsión\nPreview Tones Map , Vista previa del mapa de tonos\nPreview Type , Tipo de vista previa\nPreview Without Alpha , Previsión sin Alfa\nPrimary Angle , Ángulo primario\nPrimary Color , Color primario\nPrimary Factor , Factor primario\nPrimary Gamma , Gamma primario\nPrimary Radius , Radio primario\nPrimary Shift , Cambio primario\nPrimary Twist , Giro primario\nPrint Adjustment Marks , Imprimir las marcas de ajuste\nPrint Films (12) , Películas impresas (12)\nPrint Frame Numbers , Imprimir los números del marco\nPrint Size Unit , Unidad de tamaño de impresión\nPrint Size Width , Tamaño de la impresión Ancho\nPrivacy Notice , Aviso de privacidad\nProbability Map , Mapa de probabilidad\nProcedural , Procedimiento\nProcess As , Procesar como\nProcess by Blocs of Size , Proceso por bloques de tamaño\nProcess Channels Individually , Canales de proceso individualmente\nProcess Top Layer Only , Procesar sólo la capa superior\nProcess Transparency , Transparencia del proceso\nProcessing Mode , Modo de procesamiento\nPropagation , Propagación\nProportion , Proporción\nProtanomaly , Protanomalía\nProtect Highlights 01 , Proteger lo más destacado 01\nPrussian Blue , Azul de Prusia\nPseudo-Gray Dithering , Pseudo-blanqueo gris\nPurple , Púrpura\nPurple11 (12) , Púrpura11 (12)\nPuzzle , Rompecabezas\nPyramid , Pirámide\nPyramid Processing , Procesamiento de la pirámide\nPythagoras Tree , El árbol de Pitágoras\nQuadrangle , Cuadrangular\nQuadratic , Cuadrática\nQuadtree Variations , Variaciones de los cuatro árboles\nQuality , Calidad\nQuality (%) , Calidad (%)\nQuantization , Cuantificación\nQuantize Colors , Cuantificar los colores\nQuasi-Gaussian , Cuasi-Gaussiano\nQuick , Rápido\nQuick Copyright , Rápido Copyright\nQuick Enlarge , Ampliación rápida\nR/B Smoothness (Principal) , R/B Suavidad (Principal)\nR/B Smoothness (Secondary) , R/B Suavidad (Secundaria)\nRadius , Radio\nRadius (%) , Radio (%)\nRadius / Angle , Radio / ángulo\nRadius [Manual] , Radio [Manual]\nRadius Cut , Corte de radio\nRadius Middle Circle , Radio Círculo Medio\nRadius Outer Circle A (>0 W%) (<0 H%) , Círculo exterior del radio A (>0 W%) (<0 H%)\nRain & Snow , Lluvia y Nieve\nRaindrops , Gotas de lluvia\nRandom , Al azar\nRandom [non-Transparent] , Aleatorio [no transparente]\nRandom Angle , Ángulo aleatorio\nRandom Color Ellipses , Elipses de color al azar\nRandom Colors , Colores aleatorios\nRandom Shade Stripes , Rayas de sombra aleatorias\nRandomize , Aleatorizar\nRandomized , Aleatorio\nRandomness , Aleatoriedad\nRange , Rango\nRays , Rayos\nRays Colors AB , Rayos Colores AB\nRays Colors ABC , Los rayos colorean el ABC\nRays Colors ABCD , Los rayos colorean el ABCD\nRays Colors ABCDE , Los rayos colorean ABCDE\nRays Colors ABCDEF , Rayos Colores ABCDEF\nRays Colors ABCDEFG , Rayos Colores ABCDEFG\nRebuild From Similar Blocs , Reconstruir desde bloques similares\nRecompose , Recomponer\nReconstruct From Previous Frames , Reconstruir a partir de marcos anteriores\nRecover , Recuperar\nRecover Highlights , Recuperar lo más destacado\nRecover Shadows , Recuperar las sombras\nRecovery , Recuperación\nRectangle , Rectángulo\nRecursion Depth , Profundidad de recursividad\nRecursions , Recursiones\nRecursive Median , Mediana recursiva\nRed , Rojo\nRed - Green - Blue , Rojo - Verde - Azul\nRed - Green - Blue - Alpha , Rojo - Verde - Azul - Alfa\nRed Afternoon 01 , Tarde Roja 01\nRed Blue Yellow , Rojo Azul Amarillo\nRed Chroma Factor , Factor de croma rojo\nRed Chroma Shift , Cambio de Croma Rojo\nRed Chroma Smoothness , Suavidad del croma rojo\nRed Chrominance , Crominancia Roja\nRed Day 01 , Día rojo 01\nRed Dream 01 , Sueño Rojo 01\nRed Factor , Factor rojo\nRed Level , Nivel Rojo\nRed Rotations , Rotaciones en rojo\nRed Shift , Turno rojo\nRed Smoothness , Suavidad roja\nRed Wavelength , Longitud de Onda Roja\nRed-Eye Attenuation , Atenuación de Ojos Rojos\nRed-Green , Rojo-Verde\nReds , Rojos\nReds Oranges Yellows , Rojos Naranjas Amarillos\nReduce Halos , Reducir los halos\nReduce Noise , Reducir el ruido\nReduce RAM , Reducir la RAM\nReduce Redness , Reducir el enrojecimiento\nReference , Referencia\nReference Angle (deg.) , Ángulo de referencia (deg.)\nReference Color , Color de referencia\nReference Colors , Colores de referencia\nReflect , Refleja\nReflection , Reflexión\nRefraction , Refracción\nRegular Grid , Rejilla regular\nRegularity , Regularidad\nRegularity (%) , Regularidad (%)\nRegularization , Regularización\nRegularization (%) , Regularización (%)\nRegularization Factor , Factor de regularización\nRegularization Iterations , Iteraciones de regularización\nReject , Rechazar\nRejected Colors , Colores rechazados\nRejected Mask , Máscara rechazada\nRelative Block Count , Recuento relativo de bloqueos\nRelative Size , Tamaño relativo\nRelative Warping , Deformación relativa\nRelease Notes , Notas de lanzamiento\nRelief , Socorro\nRelief Amplitude , Amplitud del alivio\nRelief Contrast , Contraste del alivio\nRelief Light , La luz de alivio\nRelief Size , Tamaño del relieve\nRelief Smoothness , Alivio Suavidad\nRemove Artifacts From Micro/Macro Detail , Eliminar los artefactos de los detalles del micro/macro\nRemove Hot Pixels , Eliminar los píxeles calientes\nRemove Tile , Quitar las baldosas\nRender Multiple Frames , Renderizar múltiples cuadros\nRender on Dark Areas , Renderización de las áreas oscuras\nRender on White Areas , Renderización de las áreas blancas\nRender Routine for Wiggle Animations , Rutina de Renderización para las animaciones de Wiggle\nRendering , Renderización\nRendering Mode , Modo de representación\nRepair Scanned Document , Reparar el documento escaneado\nRepeat , Repita\nRepeat [Memory Consuming!] , Repite [¡consumo de memoria!]\nRepeats , Repite\nReplace , Reemplazar\nReplace (Sharpest) , Reemplazar (más agudo)\nReplace Layer with CLUT , Reemplazar la capa con CLUT\nReplace Source by Target , Reemplazar la fuente por el objetivo\nReplace With White , Reemplazar con blanco\nReplaced Color , Color reemplazado\nReplacement Color , Color de reemplazo\nReptile , Reptil\nRescaling , Rescatar\nReset View , Restablecer la vista\nResize Image for Optimum Effect , Cambiar el tamaño de la imagen para un efecto óptimo\nResolution , Resolución\nResolution (%) , Resolución (%)\nResolution (px) , Resolución (px)\nRest 33 , El resto 33...\nResult Image , Imagen del resultado\nResult Type , Tipo de resultado\nResynthetize Texture [FFT] , Resintetizar la textura [FFT]\nResynthetize Texture [Patch-Based] , Resintetizar la textura [a base de parches]\nRetouch Layer , Capa de Retoque\nRetouched and Sharpened Areas , Áreas retocadas y afiladas\nRetouched Areas Only , Sólo las áreas retocadas\nRetouched Image , Imagen retocada\nRetouched Image Basic , Retocado de la imagen básica\nRetouched Image Final , Imagen Retocada Final\nRetouching Style , Estilo de retoque\nRetro Summer 3 , Retro Verano 3\nRetro Yellow 01 , Retro Amarillo 01\nReturn Scaling , Volver a la escala\nReverse Bits , Bits invertidos\nReverse Bytes , Invertir los bytes\nReverse Effect , Efecto inverso\nReverse Endianness , Endianidad inversa\nReverse Flip , Vuelta inversa\nReverse Frame Stack , Revertir la pila de cuadros\nReverse Gradient , Gradiente inverso\nReverse Mod , Modalidad de reversa\nReverse Motion , Movimiento de reversa\nReverse Order , Orden inverso\nReverse Pow , Polvo invertido\nReversing , Invirtiendo\nRevert Layer Order , Revertir el orden de la capa\nRevert Layers , Revertir las capas\nRGB [All] , RGB [Todos]\nRGB [Blue] , RGB [Azul]\nRGB [Green] , RGB [Verde]\nRGB [red] , RGB [rojo]\nRGB Image + Binary Mask (2 Layers) , Imagen RGB + Máscara Binaria (2 Capas)\nRGB Quantization , Cuantificación RGB\nRGB Tone , Tono RGB\nRGBA [All] , RGBA [Todos]\nRGBA [Alpha] , RGBA [Alfa]\nRGBA Foreground + Background (2 Layers) , RGBA primer plano + fondo (2 capas)\nRGBA Image (Full-Transparency / 1 Layer) , Imagen RGBA (Transparencia total / 1 capa)\nRGBA Image (Updatable / 1 Layer) , Imagen RGBA (Actualizable / 1 Capa)\nRice , Arroz\nRight , Derecho\nRight Diagonal  Foreground , Primer plano diagonal derecho\nRight Diagonal Foreground , Primer plano diagonal derecho\nRight Eye View , Vista del ojo derecho\nRight Foreground , Primer plano derecho\nRight Position , Posición correcta\nRight Side Orientation , Orientación del lado derecho\nRight Slope , Pendiente derecha\nRight Stream Only , Sólo la corriente derecha\nRigid , Rígido\nRoddy (by Mahvin) , Roddy (por Mahvin)\nRodilius [Animated] , Rodilius [Animado]\nRollei Retro 80s , Rollei Retro 80\nRooster , Gallo\nRotate , Gire\nRotate (muted) , Rotar (mudo)\nRotate (vibrant) , Rotar (vibrante)\nRotate 180 Deg. , Gire 180 grados.\nRotate 270 Deg. , Gire 270 grados.\nRotate 90 Deg. , Gire 90 grados.\nRotate Hue Bands , Rotar las bandas de tonalidad\nRotate Tree , Rotar el árbol\nRotated , Girado\nRotated (crush) , Rotación (aplastamiento)\nRotations , Rotaciones\nRound , Ronda\nRoundness , Redondez\nRow by Row , Fila por fila\nRYB [All] , RYB [Todos]\nRYB [Blue] , RYB [Azul]\nRYB [Red] , RYB [Rojo]\nRYB [Yellow] , RYB [Amarillo]\nS-Curve Contrast , Contraste de la curva S\nSalt and Pepper , Sal y pimienta\nSame as Input , Igual que la entrada\nSame Axis , El mismo eje\nSample Image , Imagen de muestra\nSampling , Muestreo\nSat Bottom , Satélite de fondo\nSat Range , Rango de Saturación\nSatin , Satén\nSaturated Blue , Azul saturado\nSaturation , Saturación\nSaturation (%) , Saturación (%)\nSaturation Channel Gamma , Canal de Saturación Gamma\nSaturation Correction , Corrección de la saturación\nSaturation EQ , Saturación EQ\nSaturation Factor , Factor de saturación\nSaturation Offset , Compensación de saturación\nSaturation Shift , Cambio de saturación\nSaturation Smoothness , Saturación Suavidad\nSave CLUT as .Cube or .Png File , Guarda CLUT como un archivo .Cube o .Png\nSave Gradient As , Guardar el gradiente como\nSaving Private Damon , Salvar al soldado Damon\nScale , Escala\nScale (%) , Escala (%)\nScale 1 , Escala 1\nScale 2 , Escala 2\nScale CMYK , Escala CMYK\nScale Factor , Factor de escala\nScale Output , Salida de la escala\nScale Plasma , Plasma a escala\nScale RGB , Escala RGB\nScale Style to Fit Target Resolution , Estilo de escala para ajustarse a la resolución del objetivo\nScale Variations , Variaciones de escala\nScaled , Escala\nScales , Escalas\nScaling Factor , Factor de escala\nScene Selector , Selector de Escena\nScience Fiction , Ciencia Ficción\nScreen , Pantalla\nScreen Border , Pantalla Borde\nSeamless Deco , Deco sin fisuras\nSeamless Turbulence , Turbulencia sin fisuras\nSecond Color , Segundo color\nSecond Offset , Segunda compensación\nSecond Radius , Segundo radio\nSecond Size , Segundo tamaño\nSecondary Color , Color secundario\nSecondary Factor , Factor secundario\nSecondary Gamma , Gamma secundario\nSecondary Radius , Radio secundario\nSecondary Shift , Turno secundario\nSecondary Twist , Giro secundario\nSectors , Sectores\nSeed , Semilla\nSegment Max Length (px) , Longitud máxima del segmento (px)\nSegmentation , Segmentación\nSegmentation Edge Threshold , Segmentación Umbral de borde\nSegmentation Smoothness , Suavidad de la segmentación\nSegments , Segmentos\nSegments Strength , Segmentos Fuerza\nSelect By , Seleccione por\nSelect-Replace Color , Selecciona y reemplaza el color\nSelected Color , Color seleccionado\nSelected Colors , Colores seleccionados\nSelected Frame , Marco seleccionado\nSelected Mask , Máscara seleccionada\nSelection , Selección\nSelective Desaturation , Desaturación selectiva\nSelective Gaussian , Gaussiano selectivo\nSelf , Auto\nSelf Glitching , Auto-registrarse.\nSelf Image , Imagen propia\nSensitivity , Sensibilidad\nSequence X4 , Secuencia X4\nSequence X6 , Secuencia X6\nSequence X8 , Secuencia X8\nSerenity , Serenidad\nSerial Number , Número de serie\nSerpent , Serpiente\nSet Aspect Only , Sólo el aspecto del conjunto\nSet Frame Format , Formato del marco del set\nSeven Layers , Siete capas\nSeventies Magazine , Revista Seventies\nShade , Sombra\nShade Angle , Ángulo de sombra\nShade Back to First Color , Sombra Volver al primer color\nShade Bobs , Bobs de sombra\nShade Strength , Fuerza de la sombra\nShading , Sombreado\nShading (%) , Sombreado (%)\nShadow , Sombra\nShadow Contrast , Contraste de sombras\nShadow Intensity , Intensidad de la sombra\nShadow King 39 , Rey de las Sombras 39\nShadow Offset X , Desplazamiento de la sombra X\nShadow Offset Y , Desplazamiento de la sombra Y\nShadow Patch , Parche de sombra\nShadow Size , El tamaño de la sombra\nShadow Smoothness , Suavidad de la sombra\nShadows , Sombras\nShadows Abstraction , Abstracción de las sombras\nShadows Brightness , Sombras Brillo\nShadows Color Intensity , Intensidad de color de las sombras\nShadows Hue Shift , Sombras Cambio de Tono\nShadows Lightness , Sombras Luz\nShadows Selection , Selección de sombras\nShadows Threshold , Sombras Umbral\nShadows Zone , Zona de Sombras\nShape , Forma\nShape Area Max , Forma Área Máxima\nShape Area Max0 , Área de la forma Max0\nShape Area Min , Forma Área Min.\nShape Area Min0 , Área de la forma Min0\nShape Average , Forma Promedio\nShape Average0 , Promedio de forma0\nShape Max0 , Forma Max0\nShape Median , Forma Mediana\nShape Median0 , Mediana de la forma.\nShape Min0 , Forma Min0\nShapes , Formas\nSharpen , Afila\nSharpen [Deblur] , Afila [Deblur]\nSharpen [Gold-Meinel] , Afila [Gold-Meinel]\nSharpen [Gradient] , Afila [Gradiente]\nSharpen [Hessian] , Afila [Hessian]\nSharpen [Inverse Diffusion] , Agudizar [Difusión inversa]\nSharpen [Multiscale] , Agudizar [Multi-escala]\nSharpen [Octave Sharpening] , Afila [Afilado de octava]\nSharpen [Richardson-Lucy] , Afila [Richardson-Lucy]\nSharpen [Shock Filters] , Afila [Filtros de choque]\nSharpen [Texture] , Afila [Textura]\nSharpen [Tones] , Afila [Tonos]\nSharpen [Unsharp Mask] , Afila [Máscara de desenfoque]\nSharpen [Whiten] , Afila [Blanquear]\nSharpen Details in Preview , Agudizar los detalles en la vista previa\nSharpen Edges Only , Sólo los bordes afilados\nSharpen Object , Objeto afilado\nSharpen Radius , Radio de agudeza\nSharpen Shades , Agudizar las sombras\nSharpened Areas Only , Sólo las áreas afiladas\nSharpening , Afilado\nSharpening Layer , Capa de afilado\nSharpening Radius , Radio de afilado\nSharpening Strength , Fuerza de afilado\nSharpening Type , Tipo de afilado\nSharpest , El más agudo\nSharpness , Nitidez\nShift Linear Interpolation? , ¿Interpolación Lineal de Cambio?\nShift Point , Punto de cambio\nShift X , Cambio X\nShift Y , Cambio Y...\nShivers , Escalofríos\nShock Waves , Ondas de choque\nShopping Cart , Carro de la compra\nShow Both Poles , Mostrar ambos polos\nShow Difference , Mostrar la diferencia\nShow Frame , Marco del espectáculo...\nShow Grid , Mostrar la cuadrícula\nShow Watershed , Mostrar Cuenca\nShrink , Retracción\nShuffle Pieces , Barajar las piezas\nSide by Side , Lado a lado\nSierpinksi Design , Diseño Sierpinksi\nSierpinski Triangle , Triángulo de Sierpinski\nSilver , Plata\nSimilarity Space , Espacio de similitud\nSimple Local Contrast , Contraste local simple\nSimple Noise Canvas , Lienzo de Ruido Simple\nSimulate Film , Simular la película\nSine+ , Seno+\nSingle (Merged) , Único (Fusionado)\nSingle Custom Depth Map , Mapa de profundidad único y personalizado\nSingle Image Stereogram , Estereograma de imagen única\nSingle Layer , Una sola capa\nSingle Opaque Shapes Over Transp. BG , Formas simples y opacas sobre el transporte. BG\nSix Layers , Seis capas\nSixteen Threads , Dieciséis hilos\nSize , Tamaño\nSize (%) , Tamaño (%)\nSize for Bright Tones , Tamaño para los tonos brillantes\nSize for Dark Tones , Tamaño para los tonos oscuros\nSize of Frame Numbers (%) , Tamaño de los números de cuadro (%)\nSize Variance , Variación de tamaño\nSize-1 , Talla-1\nSize-2 , Tamaño 2\nSize-3 , Talla 3\nSkeleton , Esqueleto\nSketch , Boceto\nSkin Estimation , Estimación de la piel\nSkin Mask , Máscara de la piel\nSkin Tone Colors , Colores del tono de la piel\nSkin Tone Mask , Máscara del tono de la piel\nSkin Tone Protection , Protección del tono de la piel\nSkip All Other Steps , Saltar todos los demás pasos\nSkip Finest Scales , Saltar las escalas más finas\nSkip Others Steps , Saltar otros pasos\nSkip This Step , Sáltese este paso\nSkip to Use the Mask to Boost , Saltar a usar la máscara para impulsar\nSlice Luminosity , Luminosidad de la rebanada\nSlide [Color] (26) , Diapositiva [Color] (26)\nSlow &#40;Accurate&#41; , Lento... 40... Preciso... 41..;\nSlow Recovery , Recuperación lenta\nSmall , Pequeño\nSmall (Faster) , Pequeño (más rápido)\nSmart , Inteligente\nSmart Contrast , Contraste inteligente\nSmart Threshold , Umbral inteligente\nSmooth , Suave\nSmooth [Anisotropic] , Suave [Anisótropo]\nSmooth [Antialias] , Suave [Antialias]\nSmooth [Bilateral] , Suave [Bilateral]\nSmooth [Block PCA] , Suave [Bloquear PCA]\nSmooth [Diffusion] , Suave [Difusión]\nSmooth [Geometric-Median] , Suave [Geométrico-Mediano]\nSmooth [Guided] , Suave [Guiado]\nSmooth [IUWT] , Suave [IUWT]\nSmooth [Mean-Curvature] , Suave [Curvatura media]\nSmooth [Median] , Suave [Mediana]\nSmooth [NL-Means] , Suave [NL-Means]\nSmooth [Patch-Based] , Suave [Patch-Based]\nSmooth [Patch-PCA] , Suave [Patch-PCA]\nSmooth [Perona-Malik] , Suave [Perona-Malik]\nSmooth [Selective Gaussian] , Suave [Gausiano selectivo]\nSmooth [Skin] , Suave [Piel]\nSmooth [Thin Brush] , Suave [cepillo fino]\nSmooth [Total Variation] , Suave [Variación total]\nSmooth [Wavelets] , Suave [Ondas]\nSmooth [Wiener] , Suave [Salchicha]\nSmooth Abstract , Resumen de Smooth\nSmooth Amount , Suave Cantidad\nSmooth Clear , Suave claro\nSmooth Colors , Colores suaves\nSmooth Crome-Ish , Suave Crome-Ish\nSmooth Dark , Suave oscuro\nSmooth Green Orange , Suave Verde Naranja\nSmooth Light , Luz suave\nSmooth Looping , Suave giro\nSmooth Only , Sólo liso\nSmooth Sailing , Navegación suave\nSmooth Teal Orange , Naranja de cerceta lisa\nSmoothen Background Reconstruction , Suavizar la reconstrucción del fondo\nSmoother Edge Protection , Protección de bordes más suave\nSmoother Sharpness , Más suave y nítido\nSmoother Softness , Suavidad más suave\nSmoothing , Suavizar\nSmoothing Style , Estilo de alisado\nSmoothing Type , El tipo de alisado\nSmoothness , Suavidad\nSmoothness (%) , Suavidad (%)\nSmoothness (px) , Suavidad (px)\nSmoothness Shadow , Sombra de suavidad\nSmoothness Type , Tipo de suavidad\nSnowflake , Copo de nieve\nSnowflake 2 , Copo de nieve 2\nSnowflake Recursion , Recursión del copo de nieve\nSoft , Suave\nSoft  Light , Luz suave\nSoft Burn , Quemadura suave\nSoft Fade , Desvanecimiento suave\nSoft Glow , Brillo suave\nSoft Glow [Animated] , Brillo Suave [Animado]\nSoft Light , Luz suave\nSoft Random Shades , Suaves tonos aleatorios\nSoft Warming , Calentamiento suave\nSoften , Suavizar\nSoften All Channels , Suavizar todos los canales\nSoften Guide , Guía de la suavidad\nSolarize , Solarice\nSolarize Color , Solarizar el color\nSolarized Color2 , Color Solarizado2\nSolidify , Solidificar\nSolve Maze , Resuelve el laberinto\nSome , Algunos\nSome Blue , Algo de azul\nSome Cyan , Algo de Cian\nSome Green , Algo de verde\nSome Key , Alguna llave\nSome Magenta , Algo de Magenta\nSome Red , Un poco de rojo\nSome Yellow , Un poco de amarillo\nSort Colors , Ordenar los colores\nSorting Criterion , Criterio de clasificación\nSource (%) , Fuente (%)\nSource Color #1 , Color de la fuente #1\nSource Color #10 , Color de la fuente #10\nSource Color #11 , Color de la fuente #11\nSource Color #12 , Color de la fuente #12\nSource Color #13 , Color de la fuente #13\nSource Color #14 , Color de la fuente #14\nSource Color #15 , Color de la fuente #15\nSource Color #16 , Color de la fuente #16\nSource Color #17 , Color de la fuente #17\nSource Color #18 , Color de la fuente #18\nSource Color #19 , Color de la fuente #19\nSource Color #2 , Color de la fuente #2\nSource Color #20 , Color de la fuente #20\nSource Color #21 , Color de la fuente #21\nSource Color #22 , Color de la fuente #22\nSource Color #23 , Color de la fuente #23\nSource Color #24 , Color de la fuente #24\nSource Color #3 , Color de la fuente #3\nSource Color #4 , Color de la fuente #4\nSource Color #5 , Color de la fuente #5\nSource Color #6 , Color de la fuente #6\nSource Color #7 , Color de la fuente #7\nSource Color #8 , Color de la fuente #8\nSource Color #9 , Color de la fuente #9\nSource X-Tiles , Fuente X-Tiles\nSource Y-Tiles , Fuente Y-Tiles\nSpace , Espacio\nSpacing , Espaciamiento\nSpatial Bandwidth , Ancho de banda espacial\nSpatial Metric , Métrica espacial\nSpatial Overlap , Superposición espacial\nSpatial Precision , Precisión espacial\nSpatial Radius , Radio espacial\nSpatial Regularization , Regularización espacial\nSpatial Sampling , Muestreo espacial\nSpatial Scale , Escala espacial\nSpatial Tolerance , Tolerancia espacial\nSpatial Transition , Transición espacial\nSpatial Variance , Variación espacial\nSpecial Effects , Efectos especiales\nSpecific Saturation , Saturación específica\nSpecify Different Output Size , Especificar un tamaño de salida diferente\nSpecify HaldCLUT As , Especifique HaldCLUT como\nSpecular , Especular\nSpecular (%) , Especular (%)\nSpecular Centering , Centrado especular\nSpecular Intensity , Intensidad especular\nSpecular Light , La Luz Especular\nSpecular Lightness , Ligereza especular\nSpecular Shininess , Brillo Especular\nSpecular Size , El tamaño molecular...\nSpeed , Velocidad\nSphere , Esfera\nSpiral , Espiral\nSpiral RGB , Espiral RGB\nSpline Editor , Editor de Spline\nSpline Max Angle (deg) , Ángulo máximo del spline (deg)\nSpline Max Length (px) , Longitud máxima del spline (px)\nSpline Roundness , Redondez de la estría\nSplines , Estrías\nSplit Base and Detail Output , Base dividida y salida de detalles\nSplit Brightness / Colors , Brillo y colores divididos\nSplit Details [Alpha] , Detalles de la división [Alfa]\nSplit Details [Gaussian] , Detalles de la división [gaussiana]\nSplit Details [Wavelets] , Detalles de la división [Ondas]\nSponge , Esponja\nSpread , Difundir\nSpread Amount , Cantidad esparcida\nSpread Angles , Ángulos de propagación\nSpread Noise Amount , Ruido de propagación Cantidad\nSpreading , Difusión\nSpring Morning , Mañana de primavera\nSprocket 231 , Piñón 231\nSpy 29 , Espía 29\nSquare , Cuadrado\nSquare (Inv.) , Cuadrado (Inv.)\nSquare 1 , Cuadrado 1\nSquare 2 , Cuadrado 2\nSquare to Circle , Cuadrado a Círculo\nSquared-Euclidean , Cuadrado-Euclidiano\nSquares , Cuadrados\nSquares (Outline) , Cuadrados (Esquema)\nSRGB Conversion , Conversión SRGB\nStabilizer , Estabilizador\nStained Glass , Vidrios de colores\nStamp , Sello\nStandard , Estándar\nStandard (256) , Estándar (256)\nStandard [No Scan] , Estándar [Sin Escaneo]\nStandard Deviation , Desviación estándar\nStar , Estrella\nStar: -5*(z^3/3-Z/4)/2 , Estrella: -5*(z^3/3-Z/4)/2\nStardust , Polvo de estrellas\nStars , Estrellas\nStars (Outline) , Estrellas (Esquema)\nStart Angle , Ángulo de inicio\nStart Color , Color de inicio\nStart Frame Number , Número de cuadro inicial\nStart of Mid-Tones , Inicio de los tonos medios\nStarting Angle , Ángulo de partida\nStarting Color , Color de inicio\nStarting Feathering , Empezando a emplumar\nStarting Frame , Marco inicial\nStarting Level , Nivel de inicio\nStarting Pattern , Patrón de partida\nStarting Point , Punto de partida\nStarting Point (%) , Punto de partida (%)\nStarting Scale (%) , Escala inicial (%)\nStarting Value , Valor inicial\nStationary Frames , Marcos estacionarios\nStd Angle (deg.) , Ángulo estándar (deg.)\nStd Branching , Rama Std\nStd Length Factor (%) , Factor de longitud estándar (%)\nStd Thickness Factor (%) , Factor de Espesor Std (%)\nStencil Type , Tipo de plantilla\nStep , Paso\nStep (%) , Paso (%)\nSteps , Pasos\nStereo Image , Imagen Estéreo\nStereo Window Position , Posición de la ventana del estéreo\nStereographic Projection , Proyección estereográfica\nStereoscopic Image Alignment , Alineación de imágenes estereoscópicas\nStereoscopic Window Position , Posición de la ventana estereoscópica\nStraight , Recto\nStreet , Calle\nStrength , Fuerza\nStrength (%) , Fuerza (%)\nStrength Effect , Efecto de fuerza\nStrength Highlights , Lo más destacado de la fuerza\nStrength Midtones , Fuerza Midtones\nStrength Shadows , Fuerza Sombras\nStretch , Estira\nStretch Colors , Estirar los colores\nStretch Contrast , Estirar el contraste\nStretch Factor , Factor de estiramiento\nStrip , Desnúdate\nStripe Orientation , Orientación de las rayas\nStroke , Golpe\nStroke Angle , Ángulo de la embolia\nStroke Length , Longitud de la carrera\nStroke Strength , Fuerza del golpe\nStrong , Fuerte\nStructure Smoothness , Suavidad de la estructura\nStudio , Estudio\nStyle , Estilo\nStyle Variations , Variaciones de estilo\nStylize , Estilizar\nSubdivisions , Subdivisiones\nSubpixel Interpolation , Interpolación de subpíxeles\nSubpixel Level , Nivel de subpíxel\nSubsampling (%) , Submuestreo (%)\nSubtle Blue , Azul sutil\nSubtle Green , Verde sutil\nSubtle Yellow , Amarillo sutil\nSubtract , Reste\nSubtractive , Sustracción\nSummer , Verano\nSummer (alt) , Verano (alt)\nSunny (alt) , Soleado (alt)\nSunny (rich) , Sunny (rico)\nSunny (warm) , Soleado (caliente)\nSuper Warm , Súper Caliente\nSuper Warm (rich) , Súper Caliente (rico)\nSuper-Pixels , Super-Píxeles\nSuperformula , Superfórmula\nSuperimpose with Original? , ¿Superponer con Original?\nSurface Disturbance , Perturbación de la superficie\nSurface Disturbance Multiplier , Multiplicador de perturbaciones de la superficie\nSwan , Cisne\nSwap , Intercambio\nSwap Colors , Intercambio de colores\nSwap Layers , Intercambiar capas\nSwap Radius / Angle , Intercambio de radio/ángulo\nSwap Sides , Intercambie los lados\nSweet Bubblegum , Bomba de Chicle Dulce\nSweet Gelatto , Dulce Gelatto\nSymmetric 2D Shape , Forma 2D simétrica\nSymmetrize , Simetrizar\nSymmetry , Simetría\nSymmetry Sides , Lados de simetría\nSynthesis Scale , Escala de síntesis\nTangent Radius , El radio de la tangente\nTarget Color #1 , Color del objetivo #1\nTarget Color #10 , Color del objetivo #10\nTarget Color #11 , Color del objetivo #11\nTarget Color #12 , Color del objetivo #12\nTarget Color #13 , Color del objetivo #13\nTarget Color #14 , Color del objetivo #14\nTarget Color #15 , Color del objetivo #15\nTarget Color #16 , Color del objetivo #16\nTarget Color #17 , Color del objetivo #17\nTarget Color #18 , Color del objetivo #18\nTarget Color #19 , Color del objetivo #19\nTarget Color #2 , Color del objetivo #2\nTarget Color #20 , Color del objetivo #20\nTarget Color #21 , Color del objetivo #21\nTarget Color #22 , Color del objetivo #22\nTarget Color #23 , Color del objetivo #23\nTarget Color #24 , Color del objetivo #24\nTarget Color #3 , Color del objetivo #3\nTarget Color #4 , Color del objetivo #4\nTarget Color #5 , Color del objetivo #5\nTarget Color #6 , Color del objetivo #6\nTarget Color #7 , Color del blanco #7\nTarget Color #8 , Color del objetivo #8\nTarget Color #9 , Color del objetivo #9\nTeal Moonlight , Luz de Luna Teal\nTechnicalFX - Backlight Filter , TechnicalFX - Filtro de luz de fondo\nTemperature Balance , El equilibrio de la temperatura\nTen Layers , Diez capas\nTends to Be Square , Tiende a ser cuadrado\nTension Green 1 , Tensión Verde 1\nTension Green 2 , Tensión Verde 2\nTension Green 3 , Tensión Verde 3\nTension Green 4 , Tensión Verde 4\nTensor Smoothness , Suavidad del tensor\nTertiary Factor , Factor Terciario\nTertiary Gamma , Terciario Gamma\nTertiary Shift , Cambio Terciario\nTertiary Twist , Giro terciario\nText , Texto\nTexture , Textura\nTexture Enhance , Mejora de la textura\nTextured Glass , Vidrio texturizado\nThe Game of Life , El juego de la vida\nThe Matrices , Las matrices\nThickness , Espesor\nThickness (%) , Espesor (%)\nThickness (px) , Espesor (px)\nThickness Factor , Factor de espesor\nThin Edges , Bordes delgados\nThin Separators , Separadores delgados\nThinness , Delgadez\nThinning , Adelgazamiento\nThinning (Slow) , Adelgazamiento (Lento)\nThree Layers , Tres capas\nThreshold , Umbral\nThreshold (%) , Umbral (%)\nThreshold Etch , Grabado de umbral\nThreshold High , Umbral alto\nThreshold Low , Umbral bajo\nThreshold Max , Umbral máximo\nThreshold Mid , Umbral medio\nThreshold On , Umbral de\nThumbnail Size , El tamaño de la miniatura\nTiger , Tigre\nTile Poles , Polos de azulejos\nTile Size , Tamaño de las baldosas\nTileable Rotation , Rotación de la baldosa\nTiled Isolation , Aislamiento de azulejos\nTiled Normalization , Normalización de los azulejos\nTiled Parameterization , Parametrización de los azulejos\nTiled Preview , Vista previa en mosaico\nTiled Random Shifts , Cambios aleatorios en mosaico\nTiled Rotation , Rotación de los azulejos\nTiles , Baldosas\nTiles to Layers , Azulejos a las capas\nTime , Tiempo\nTime Step , Paso de tiempo\nTimed Image , Imagen cronometrada\nTiny , Pequeño\nTo Equirectangular , a la equidistancia\nTo Nadir / Zenith , A Nadir / Zenith\nToasted Garden , Jardín tostado\nToes , Dedos de los pies\nToggle to View Base Image , Cambiar a ver la imagen de la base\nTolerance , Tolerancia\nTolerance to Gaps , Tolerancia a las diferencias\nTonal Bandwidth , Ancho de banda tonal\nTone Blur , Borrón de Tono\nTone Enhance , Mejora del tono\nTone Gamma , Tono Gamma\nTone Mapping , Mapeo de Tonos\nTone Mapping (%) , Mapeo de tonos (%)\nTone Mapping [Fast] , Mapeo de Tonos [Rápido]\nTone Mapping Fast , Mapeo de tonos rápido\nTone Mapping Soft , Mapeo de Tono Suave\nTone Presets , Preselecciones de tono\nTone Threshold , Umbral de tono\nTones Range , Rango de tonos\nTones Smoothness , Tonos Suavidad\nTones to Layers , Tonos a las capas\nTop Layer , Capa superior\nTop Left , Arriba a la izquierda\nTop Right , Arriba a la derecha\nTop-Left Vertex (%) , Vértice superior izquierdo (%)\nTop-Right Vertex (%) , Vértice superior derecho (%)\nTotal Layers , Capas totales\nTotal Variation , Variación total\nTransfer Colors [Histogram] , Transferencia de colores [Histograma]\nTransfer Colors [Patch-Based] , Transferir colores [Patch-Based]\nTransfer Colors [PCA] , Transferencia de colores [PCA]\nTransfer Colors [Variational] , Transferencia de colores [Variación]\nTransform , Transformar\nTransition Map , Mapa de transición\nTransition Shape , Forma de transición\nTransition Smoothness , Suavidad de la transición\nTransmittance Map , Mapa de transmisión\nTransparency , Transparencia\nTransparent , Transparente\nTransparent Background , Fondo transparente\nTransparent Black & White , Blanco y negro transparente\nTransparent Color , Color transparente\nTransparent on Black , Transparente sobre Negro\nTransparent on White , Transparente sobre el blanco\nTransparent Skin , Piel transparente\nTree , Árbol\nTriangle , Triángulo\nTriangles , Triángulos\nTriangles (Outline) , Triángulos (Esquema)\nTriangular Va , Va triangular\nTritanomaly , Tritanomalía\nTrue Colors 8 , Colores verdaderos 8\nTrunk Color , Color del tronco\nTrunk Opacity (%) , Opacidad del tronco (%)\nTrunks , Troncos\nTulips , Tulipanes\nTunnel , Túnel\nTurbulence , Turbulencia\nTurbulence 2 , Turbulencia 2\nTurbulent Halftone , Medio tono turbulento\nTurkiest 42 , El 42 más turco\nTurn on Rotate and Twirl , Enciende la rotación y el giro...\nTwirl , Giro\nTwisted Rays , Rayos torcidos\nTwo Layers , Dos capas\nTwo Threads , Dos hilos\nType , Escriba\nType Snowflake , Tipo Copo de Nieve\nUltra Water , Ultra Agua\nUnaligned Images , Imágenes no alineadas\nUndeniable , Innegable\nUndeniable 2 , Innegable 2\nUnderwater , Bajo el agua\nUndo Anaglyph , Deshacer el anaglifo\nUniform , Uniforme\nUnknown , Desconocido\nUnquantize [JPEG Smooth] , Unquantize [JPEG Suave]\nUnsharp Mask , Máscara de la Unsharp\nUnstrip , Desenvuelva\nUp-Left , Arriba a la izquierda\nUp-Right , Arriba-Derecha\nUpper Layer Is the Top Layer for All Blends , La capa superior es la capa superior para todas las mezclas\nUpper Side Orientation , Orientación del lado superior\nUppercase Letters , Cartas en mayúsculas\nUpscale [Diffusion] , Difusión a gran escala\nUse as Hue , Usar como Tono\nUse as Saturation , Uso como saturación\nUse Individual Depth Map , Usar el mapa de profundidad individual\nUse Light , Usar la luz\nUse Maximum Tones , Usar los tonos máximos\nUse Top Layer as a Priority Mask , Usar la capa superior como una máscara de prioridad\nUser-Defined , Definido por el usuario\nUser-Defined (Bottom Layer) , Definido por el usuario (capa inferior)\nUzbek Bukhara , Bukhara de Uzbekistán\nUzbek Marriage , Matrimonio uzbeko\nUzbek Samarcande , Samarcande de Uzbekistán\nV Cutoff , Corte V\nVal Range , Rango de Val\nValue , Valor\nValue Action , Valor Acción\nValue Blending , Mezcla de valores\nValue Bottom , Valor inferior\nValue Correction , Corrección del valor\nValue Factor , Factor de valor\nValue Normalization , Normalización de valores\nValue Offset , Compensación del valor\nValue Precision , Precisión del valor\nValue Range , Rango de valores\nValue Scale , Escala de valores\nValue Shift , Cambio de valor\nValue Smoothness , Valorar la suavidad\nValue Top , Valor máximo\nValue Variance , Variación del valor\nValues , Valores\nVan Gogh: Almond Blossom , Van Gogh: Flor de almendro\nVan Gogh: Irises , Van Gogh: Lirios\nVan Gogh: The Starry Night , Van Gogh: La noche estrellada\nVan Gogh: Wheat Field with Crows , Van Gogh: Campo de trigo con cuervos\nVariability , Variabilidad\nVariance , Variación\nVariation A , Variación A\nVariation B , Variación B\nVariation C , Variación C\nVector Painting , Pintura vectorial\nVelocity , Velocidad\nVertex Type , Tipo de vértice\nVertical 1 Amount , Vertical 1 Cantidad\nVertical 1 Length , Vertical 1 Longitud\nVertical 2 Amount , Vertical 2 Cantidad\nVertical 2 Length , Vertical 2 Longitud\nVertical Amount , Cantidad vertical\nVertical Array , Conjunto vertical\nVertical Blur , Borrón vertical\nVertical Length , Longitud vertical\nVertical Size (%) , Tamaño vertical (%)\nVertical Stripes , Rayas verticales\nVertical Tiles , Baldosas verticales\nVery Course 5 , Muy Curso 5\nVery Fine , Muy bien.\nVery High , Muy alto\nVery High (Even Slower) , Muy alto (aún más lento)\nVery Warm Greenish , Muy caliente verdoso\nVibrant , Vibrante\nVibrant (alien) , Vibrante (alienígena)\nVibrant (contrast) , Vibrante (contraste)\nVibrant (crome-Ish) , Vibrante (crome-Ish)\nVictory , Victoria\nView Outlines Only , Ver sólo los esquemas\nView Resolution , Ver Resolución\nVignette Contrast , Contraste de la viñeta\nVignette Size , Tamaño de la viñeta\nVignette Strength , Fuerza de la viñeta\nVintage (brighter) , Vintage (más brillante)\nVintage Chrome , Cromo antiguo\nVintage Style , Estilo Vintage\nVintage Tone (%) , Tono antiguo (%)\nVirtual Landscape , Paisaje virtual\nVisible Watermark , Marca de agua visible\nVivid Edges , Bordes vivos\nVivid Light , Luz Viva\nVivid Screen , Pantalla Vívida\nVorono&#239; , Vorono... 239;\nWall , Muro\nWarm , Caliente\nWarm (highlight) , Caliente (destacar)\nWarm (yellow) , Caliente (amarillo)\nWarm Dark Contrasty , Contraste cálido y oscuro\nWarm Neutral , Caliente Neutral\nWarm Sunset Red , Rojo cálido del atardecer\nWarm Teal , Cerceta caliente\nWarm Vintage , Vintage cálido\nWarp [Interactive] , Warp [Interactivo]\nWarp by Intensity , La urdimbre por la intensidad\nWater , Agua\nWaterfall , Cascada\nWave(s) , Onda(s)\nWavelength , Longitud de onda\nWaves Amplitude , La amplitud de las ondas\nWaves Smoothness , Suavidad de las olas\nWe'll See , Ya veremos.\nWeave , Tejido\nWeird , Raro\nWhirl Drawing , Dibujo de torbellino\nWhirls , Remolinos\nWhite , Blanco\nWhite Dices , Dados blancos\nWhite Layers , Capas blancas\nWhite Level , Nivel de blanco\nWhite on Black , Blanco sobre Negro\nWhite on Transparent , Blanco sobre Transparente\nWhite on Transparent Black , Blanco sobre negro transparente\nWhite Point , Punto Blanco\nWhite to Black , De blanco a negro\nWhite Walls , Paredes blancas\nWhitening , Blanqueamiento\nWhiter Whites , Blancos más blancos\nWhites , Blancos\nWidth , Ancho\nWidth (%) , Anchura (%)\nWind , Viento\nWinter Lighthouse , Faro de invierno\nWipe , Limpia\nWithout , Sin\nWooden Gold 20 , Oro de madera 20\nWork on Frameset , Trabajo en Frameset\nWrap , Envoltura\nX Center , Centro X\nX Origine , X Origen\nX-Angle , Ángulo X\nX-Axis Then Y-Axis , Eje X y luego eje Y\nX-Border , Frontera X\nX-Centering (%) , Centrado X (%)\nX-Coordinate [Manual] , X-Coordenada [Manual]\nX-Curvature , Curvatura X\nX-Dispersion , Dispersión X\nX-Factor , Factor X\nX-Factor (%) , Factor X (%)\nX-Multiplier , X-Multiplicador\nX-Ratio , Relación X\nX-Resolution , Resolución X\nX-Rotation , X-Rotación\nX-Size (px) , Tamaño X (px)\nX-Variations , X-Variaciones\nX/Y-Ratio , Relación X/Y\nX1 (none) , X1 (ninguno)\nXY Mirror , Espejo XY\nXY-Axes , Ejes XY\nXY-Axis , Eje XY\nXY-Coordinates (%) , Coordenadas XY (%)\nXY-Factor , Factor XY\nY Center , Centro Y\nY-Axis , Eje Y\nY-Axis Then X-Axis , Eje Y y luego eje X\nY-Border , Frontera Y\nY-Centering (%) , Centrado en Y (%)\nY-Coordinate , Y-Coordinación\nY-Coordinate [Manual] , Coordenadas Y [Manual]\nY-Curvature , Curvatura Y\nY-Dispersion , Dispersión en Y\nY-Factor , Factor Y\nY-Factor (%) , Factor Y (%)\nY-Multiplier , Y-Multiplicador\nY-Ratio , Relación Y\nY-Resolution , Resolución Y\nY-Rotation , Rotación Y\nY-Scale , Escala Y\nY-Shift (%) , Desplazamiento Y (%)\nY-Shift (px) , Desplazamiento Y (px)\nY-Size , Tamaño Y\nY-Size (px) , Tamaño Y (px)\nY-Variations , Variaciones Y\nYAG Effect , Efecto YAG\nYCbCr (Chroma Only) , YCbCr (Sólo Chroma)\nYCbCr (Distinct) , YCbCr (Distinto)\nYCbCr (Luma Only) , YCbCr (Sólo Luma)\nYCbCr (Mixed) , YCbCr (Mixto)\nYCbCr [Blue Chrominance] , YCbCr [Crominancia Azul]\nYCbCr [Blue-Red Chrominances] , YCbCr [Crominanzas Rojo-Azul]\nYCbCr [Green Chrominance] , YCbCr [Crominancia Verde]\nYCbCr [Luminance] , YCbCr [Luminancia]\nYCbCr [Red Chrominance] , YCbCr [Crominancia Roja]\nYellow , Amarillo\nYellow 55B , Amarillo 55B\nYellow Factor , Factor amarillo\nYellow Film 01 , Película amarilla 01\nYellow Shift , Turno amarillo\nYellow Smoothness , Suavidad amarilla\nYES8 , SÍ8\nYIQ [chromas] , YIQ [cromas]\nYou Can Do It , Puedes hacerlo\nZ-Angle , Ángulo Z\nZ-Multiplier , Z-Multiplicador\nZ-Rotation , Z-Rotación\nZ-Scale , Escala Z\nZ-Size , Tamaño Z\nZero , Cero\nZilverFX - B&W Solarization , ZilverFX - Solarización en blanco y negro\nZilverFX - InfraRed , ZilverFX - Infrarrojo\nZone System , Sistema de zonas\nZoom Factor , Factor de Zoom\nZoom In , Acercamiento\nZoom Out , Aleja el zoom\n"
  },
  {
    "path": "translations/filters/gmic_qt_fr.csv",
    "content": "Light , Légère , Comicbook\nNone , Aucune , Comicbook\nFor edges: , Pour les bords :\nLine Strength , Dose de lignes , Comicbook\nFor colors: , Pour les couleurs :\nColors to Black or White , Transformer en noir et blanc , Comicbook\n<b>Faves</b> , <b>Favoris</b>\n<i>About</i> , <i>A propos</i>\n<b>Arrays & Tiles</b> , <b>Tableaux & tuiles</b>\n<b>Artistic</b> , <b>Artistique</b>\n<b>Black & White</b> , <b>Noir & blanc</b>\n<b>Colors</b> , <b>Couleurs</b>\n<b>Deformations</b> , <b>Déformations</b>\n<b>Degradations</b> , <b>Dégradations</b>\n<b>Details</b> , <b>Détails</b>\n<b>Frames</b> , <b>Cadres</b>\n<b>Frequencies</b> , <b>Fréquences</b>\n<b>Layers</b> , <b>Calques</b>\n<b>Lights & Shadows</b> , <b>Ombres & lumières</b>\n<b>Patterns</b> , <b>Motifs</b>\n<b>Rendering</b> , <b>Rendu</b>\n<b>Repair</b> , <b>Réparation</b>\n<b>Sequences</b> , <b>Séquences</b>\n<b>Stereoscopic 3D</b> , <b>Stéréoscopie 3D</b>\n<b>Testing</b> , <b>En test</b>\n<b>Various</b> , <b>Divers</b>\nPreview Type , Type de prévisualisation\nBackward Horizontal , Séparation horizontale arrière\nForward Vertical , Séparation verticale avant\nBackward Vertical , Séparation verticale arrière\nFull , Entier\nForward Horizontal , Séparation horizontale avant\nDuplicate Right , Copie à droite\nDuplicate Left , Copie à gauche\nDuplicate Bottom , Copie en bas\nDuplicate Top , Copie en haut\nDuplicate Vertical , Copie verticale\nDuplicate Horizontal , Copie horizontale\nCheckered Inverse , En damier inversé\nCheckered , En damier\nPreview Split , Découpage de la prévisualisation\nSmoothness , Régularité\nNone , Aucun\nLab [ab-Chrominances] , Lab [Chrominances-ab]\nLab [b-Chrominance] , Lab [Chrominance-b]\nLab [a-Chrominance] , Lab [Chrominance-a]\nLch [h-Chrominance] , Lch [Chrominance-h]\nLch [c-Chrominance] , Lch [Chrominance-c]\nLch [ch-Chrominances] , Lch [Chrominance-ch]\nAll , Tous\nChannel(s) , Canaux\nYCbCr [Blue-Red Chrominances] , YCbCr [Chrominances bleu-rouge]\nYCbCr [Blue Chrominance] , YCbCr [Chrominance bleue]\nLinear RGB [All] , RVB Linéaire [Tous]\nLinear RGB [Blue] , RVB Linéaire [Bleu]\nLinear RGB [Green] , RVB Linéaire [Vert]\nLinear RGB [Red] , RVB Linéaire [Rouge]\nRGB [All] , RVB [Tous]\nRGB [Blue] , RVB [Bleu]\nRGB [Red] , RVB [Rouge]\nRGB [Green] , RVB [Vert]\nCMYK [Magenta] , CMJN [Magenta]\nCMYK [Key] , CMJN [Noir]\nCMYK [Cyan] , CMJN [Cyan]\nHSL [Lightness] , HSL [Luminosité]\nCMYK [Yellow] , CMJN [Jaune]\nLab [Lightness] , Lab [Luminosité]\nHSI [Intensity] , HSI [Intensité]\nHSV [Value] , HSV [Valeur]\nYCbCr [Green Chrominance] , YCbCr [Chrominance verte]\nYCbCr [Red Chrominance] , YCbCr [Chrominance rouge]\nHSV [Hue] , HSV [Teinte]\nRGBA [All] , RGBA [Tous]\nRYB [Yellow] , RJB [Jaune]\nRYB [Blue] , RJB [Bleu]\nRYB [All] , RJB [Tous]\nRYB [Red] , RJB [Rouge]\nColor , Couleur\nRadius , Rayon\nIterations , Itérations\nPreset , Préréglage\nNormalize , Normalise\nCut , Coupe\nOpacity , Opacité\nMirror , Mirroir\nAll [Collage] , Tous [Collage]\nDensity , Densité\nSize , Taille\nThreshold , Seuil\nAntialiasing , Anticrénelage\nNearest , Plus proche voisin\nPeriodic , Périodique\nBoundary , Bord\nRGB , RVB\nLock Source , Vérouille la source\nReplace Source by Target , Replace la source par la cible\nValue Action , Action sur la valeur\nScale , Échelle\nSharpness , Netteté\nParallel Processing , Calcul parallèle\nCenter (%) , Centre (%)\nSize (%) , Taille (%)\nLinear , Linéaire\nLightness , Luminosité\nRandom , Hasard\nHue , Teinte\nValue , Valeur\nGaussian , Gaussien\nThickness , Épaisseur\nX-Angle , Angle-X\nContrast (%) , Contraste (%)\nY-Angle , Angle-Y\nDarken , Plus sombre\nCMYK [magenta] , CMJN [magenta]\nCMYK [key] , CMJN [noir]\nCMYK [yellow] , CMJN [jaune]\nHSV [value] , HSV [valeur]\nHSI [intensity] , HSI [intensité]\nHSV [hue] , HSV [teinte]\nHSL [lightness] , HSL [luminosité]\nBrightness (%) , Luminosité\nCMYK [cyan] , CMJN [cyan]\nYCbCr [green Chrominance] , YCbCr [Chrominance verte]\nYCbCr [red Chrominance] , YCbCr [Chrominance rouge]\nResolution , Résolution\nLab [lightness] , Lab [Luminosité]\nMultiply , Multiplication\nLinear RGB [red] , RVB Linéaire [rouge]\nLinear RGB [green] , RVB Linéaire [verte]\nContrast , Contraste\nYCbCr [blue-Red Chrominances] , YCbCr [Chrominance bleu-rouge]\nZ-Angle , Angle-Z\nRGBA [all] , RGBA [tous]\nHeight , Hauteur\nYCbCr [blue Chrominance] , YCbCr [Chrominance bleue]\nRGB [all] , RVB [tous]\nRGB [green] , RVB [vert]\nRGB [blue] , RVB [bleu]\nOverlay , Superposition\nAverage , Moyenne\nRGB [red] , RVB [rouge]\nLinear RGB [blue] , RVB linéaire [bleu]\nLinear RGB [all] , RVB Linéaire [tous]\nColorspace , Espace de couleur\nEdges , Bords\nWidth , Largeur\nAmount , Quantité\nFour Threads , Quatre fils\nFlat , Plat\nSixteen Threads , Seize threads\nEight Threads , Huit threads\nTwo Threads , Deux threads\nOne Thread , Un thread\nSpatial Overlap , Superposition spatiale\nSpecular Lightness , Luminosité spéculaire\nZ-Light , Lumière-Z\nSpecular Shininess , Brillance spéculaire\nNegative , Négatif\nGrain Merge , Fusion de grain\nLinear RGB , RVB linéaire\nY-Light , Lumière-Y\nX-Light , Lumière-X\nRed , Rouge\nY-Tiles , Tuiles-Y\nOutput Folder , Répertoire de destination\nX-Tiles , Tuiles-X\nBlue , Bleu\nFrames , Cadres\nHard Light , Lumière dure\nAdd , Addition\nLighten , Plus clair\nEdge Threshold , Seuil de contours\nReflect , Réflexion\nGreen , Vert\nStrength , Force\nSoft Light , Lumière douce\nDifference , Différence\nNegation , Négation\nNegative Colors , Couleurs négatives\nOpacity (%) , Opacité (%)\nTangent , Tangente\nAnisotropy , Anisotropie\nAnti-Aliasing , Anti-crénelage\nBurn , Brûler\nRendering , Rendu\nSinusoidal , Sinusoïdale\nDodge , Esquisse\nValue Offset , Décalage de valeur\nOff , Éteint\nScreen , Écran\nStamp , Tampon\nHue (%) , Teinte (%)\nShape , Forme\nNumber of Scales , Nombre d'échelles\nArc-Tangent , Arc-tangente\nX-Axis , Axe-X\nHue Offset , Décalage de teinte\nTarget Value (%) , Valeur cible (%)\nTarget Saturation (%) , Saturation cible (%)\nTarget Hue (%) , Teinte cible (%)\nWireframe , Fil de fer\nOffset , Décalage\nNearest Neighbor , Plus proche voisin\nLock , Vérouiller\nTop Layer , Calque supérieur\nBottom Layer , Calque inférieur\nPrecision , Précision\nSmooth , Régulier\nFlat-Shaded , Éclairage plat\nFreeze , Geler\nDots , Points\nRemap , Reprojette\nSaturation Offset , Décalage de saturation\nCosinusoidal , Cosinusoïdal\nDepth , Profondeur\nY-Axis , Axe-Y\nPositive , Positif\nStrength (%) , Force (%)\nOutline Color , Couleur de liseret\nCustom Formula , Formule personnalisée\nShadows , Ombres\nBlack , Noir\nCustom , Personnalisé\nDensity (%) , Densité (%)\nBilateral , Bilatéral\nBlack & White , Noir & Blanc\nRandom Seed , Graine aléatoire\nHighlights , Tons clairs\nPatch Size , Taille de patch\nRegularization , Régularisation\nRotate , Tourne\nOutput , Sortie\nTones Smoothness , Régularité des tons\nInvert , Inversion\nFactor , Facteur\nSmoothness (%) , Régularité (%)\nAnd , Et\nOutput Mode , Mode de sortie\nEqualize , Égalise\nChannels , Canaux\nSalt and Pepper , Poivre et sel\nDivide , Division\nDilation , Dilatation\nX-Offset , Décalage-X\nY-Offset , Décalage-Y\nY-Size , Taille-Y\nSubtract , Soustraction\nNumber of Colors , Nombre de couleurs\nTones Range , Intervalle de tons\nSeed , Graine\nTime Step , Pas de temps\nDetails Scale , Échelle de détails\nCoherence , Cohérence\nBlack on White , Noir sur blanc\nGrain Extract , Extraction de grain\nGradient Smoothness , Régularité du gradient\nBicubic , Bicubique\nSoftlight , Lumière douce\nTolerance , Tolérance\nXY-Axes , Axes-XY\nWhite on Black , Blanc sur noir\nX-Size , Taille-X\nAll Tones , Tous les tons\nOutput as Files , Sauve sous forme de fichiers\nOutput as Frames , Sauve sous forme de trames\nUniform , Uniforme\nTransparency , Transparence\nSquare , Carré\nPreserve , Préserve\nMid-Tones , Tons médians\nWhite , Blanc\nColors , Couleurs\nFine , Fin\nBlend Mode , Mode de fusion\nNormalize Colors , Normalise les couleurs\nPost-Normalize , Post-normalise\nLandscape , Paysage\nY-Shadow , Ombre-Y\nFrequency , Fréquence\nEdge , Bord\nBase Scale , Échelle de base\nMin Threshold , Seuil min\nMask Color , Couleur de masque\nEqualize Light , Égalise la lumière\nRepeat , Répète\nValues , Valeurs\nMax Threshold , Seuil max\nMerging Option , Option de fusion\nPreview Progression While Running , Prévisualise la progression pendant le calcul\nFast Approximation , Approximation rapide\nOutline , Liseret\nSmoothness Type , Type de régularisation\nColor Mode , Mode de couleur\nGrainmerge , Fusion de grain\nBlur , Lissage\nShading , Ombrage\nCenter , Centre\nX-Shadow , Ombre-X\nX-Offset (%) , Décalage-X (%)\nCMYK , CMNJ\nDarker , Plus sombre\nScales , Échelles\nTensor Smoothness , Régularité des tenseurs\nDiamond , Diamant\nY-Offset (%) , Décalage-Y (%)\nDarkness , Obscurité\nLevels , Niveaux\nOutput Frames , Génère des trames\nColor Strength , Force de la couleur\nHardlight , Lumière dure\nSome Magenta , Un peu de magenta\nSome Key , Un peu de noir\nEnding Value , Valeur de fin\nStarting Feathering , Adoucissement de départ\nAutomatic , Automatique\nSkip All Other Steps , Ignore toutes les autres étapes\nOutput Files , Sauve fichiers\nAttenuation , Atténuation\nSoftburn , Brûlure douce\nColor Boost , Renforcement des couleurs\nLength , Longueur\nSoftdodge , Esquive douce\nFilename , Nom de fichier\nCircular , Circulaire\nSphere , Sphère\nSome Yellow , Un peu de jaune\nArea , Aire\nSome Cyan , Un peu de cyan\nHue Shift , Décalage de teinte\nFrame Size , Taille du cadre\nColor Model , Modèle de couleurs\nTorus , Tore\nBrightness , Luminosité\nGrayscale , Niveaux de gris\nCurvature , Courbure\nBackground Color , Couleur de fond\nGrainextract , Exttraction de grain\nDisable , Désactiver\nNumber of Tones , Nombre de tons\nScale (%) , Échelle (%)\nBlank , Vierge\nPre-Normalize , Pré-normalise\nBoth , Les deux\nOutline (%) , Liseret (%)\nOutput As , Sauve comme\nEdge Thickness , Épaisseur du bord\nPreview Shows , La prévisualisation montre\nStarting Value , Valeur de départ\nAutomatic Depth Estimation , Estimation automatique de la profondeur\nEnding Feathering , Fin d'adoucissement\nPreview Guides , Guides sur la prévisualisation\nIntensity , Intensité\nBackground , Fond\nCMY , CMJ\nSharpening , Renforcement de la netteté\nCubic , Cubique\nRevert Layers , Inverse les calques\nReverse Order , Inverse l'ordre\nMinimal Area , Aire minimale\nA Lot of Cyan , Beaucoup de Cyan\nMirror-Y , Mirroir-Y\nMirror-XY , Mirroir-XY\nLittle Cyan , Un peu de Cyan\nX/Y-Ratio , Ratio-X/Y\nX-Amplitude , Amplitude-X\nMask Dilation , Dilatation du masque\nLittle Yellow , Un peu de jaune\nY-Amplitude , Amplitude-Y\nLight , Lumière\nA Lot of Magenta , Beaucoup de magenta\nA Lot of Yellow , Beaucoup de jaune\nMirror-X , Mirroir-X\nLittle Key , Un peu de noir\nLittle Magenta , Un peu de magenta\nA Lot of Key , Beaucoup de noir\nLines , Lignes\nMethod , Méthode\nMedium , Médium\nMaximal Size , Taille maximale\nColor Dispersion , Dispersion couleur\nColor Doping , Dopage couleur\nLow , Bas\nColor Balance , Balance des couleurs\nColor 2 , Couleur 2\nSoft , Doux\nColor 1 , Couleur 1\nOutput Format , Format de sortie\nX-Factor , Facteur-X\nStars , Étoiles\nRadius (%) , Rayon (%)\nCentral Perspective Indoor , Perspective centrale intérieure\nStar , Étoile\nSpread , Propagation\nHuman 1 , Humain 1\nCoarse , Grossier\nSpecular Size , Taille spéculaire\nHue Band , Bande de teinte\nClosing , Fermeture\nCircles , Cercles\nSpacing , Espacement\nSome Blue , Un peu de bleu\nSquares , Carrés\nLookup Size , Taille de la recherche\nSome Green , Un peu de vert\nOutput as Separate Layers , Génère des calques séparés\nSome Red , Un peu de rouge\nOpening , Ouverture\nKeep Iterations as Different Layers , Garde les itérations comme des calques différents\nLinearlight , Lumière linéaire\nLinearity , Linéarité\nLinearburn , Brûlure linéaire\nBottom and Top Foreground , Avant-plan du haut et du bas\nBottom and Right Foreground , Avant-plan du bas et de droite\nBottom and Left Foreground , Avant-plan du bas et de gauche\nBottom Right , En bas à droite\nBottom Left , En bas à gauche\nBlue & Red Chrominances , Chrominances bleues et rouges\nBlend Size , Taille du mélange\nThreshold (%) , Seuil (%)\nBlack on Transparent White , Noir sur blanc transparent\nNoise Type , Type de bruit\nVignette Size , Taille de vignette\nVividlight , Lumière vive\nKernel , Noyau\nNumber of Orientations , Nombre d'orientations\nNumber of Levels , Numbre de niveaux\nText , Texte\nStencil Type , Type de pochoir\nInput , Entrée\nWhite on Transparent Black , Blanc sur noir transparent\nLittle Red , Un peu de rouge\nLittle Green , Un peu de vert\nStarting Color , Couleur de départ\nLocal Detail Enhancer , Rehausseur de détails local\nCenter Foreground , Centre l'avant-plan\nCenter Background , Centre l'arrière-plan\nWidth (%) , Largeur (%)\nLittle Blue , Un peu de bleu\nInterlace Vertical , Entrelace verticalement\nInterpolate , Interpole\nIsotropic , Isotrope\nBoundary Condition , Conditions aux bords\nOptimized Lateral Inhibition , Inhibition latérale optimisée\nStroke Length , Longueur du trait\nWeird , Étrange\nInter-Frames , Inter-Trames\nInterlace Horizontal , Entrelace horizontalement\nColor Temperature , Température couleur\nMask , Masque\nDithering , Tramage\nY-Shift , Décalage-Y\nY-Multiplier , Multiplicateur-Y\nEdge-Oriented , Orienté contours\nPreview Ref Point , Prévisualise point de réf\n1st Color , 1ère couleur\nRight Foreground , Avant-plan de droite\nSaturation Correction , Correction de saturation\nDeviation , Déviation\nDetails , Détails\nGamma Compensation , Compensation gamma\nScene Selector , Sélecteur de scènes\nMinimal Size , Taille minimale\nFull Bottom/top , Entier en haut/bas\n2nd Color , 2ème couleur\nY-Factor , Facteur-Y\nFlower , Fleur\nRecursions , Récursions\nForward , En avant\nZ-Size , Taille-Z\nZoom Factor , Facteur de zoom\nFlip Left / Right , Basculement gauche/droite\nFeature Analyzer Threshold , Seuil de l'analyseur de caractéristiques\nFeature Analyzer Smoothness , Régularité de l'analyseur de caractéristiques\nReference Colors , Couleurs de référence\nEnding Color , Couleur de fin\nYellow , Jaune\nFrequency Analyzer , Analyseur de fréquence\nResolution (%) , Résolution (%)\nZ-Offset , Décalage-Z\nPyramid , Pyramide\nZ-Multiplier , Multiplicateur-Z\nRegularization Iterations , Itérations de régularisation\nErosion , Érosion\nSkip Others Steps , Passer les autres étapes\nPinlight , Lumière d'épingle\nX-Shift , Décalage-X\nHalf Bottom/top , A moitié en haut/bas\nHalf Side  by Side , A moitié côte à côte\nPlane , Avion\nGyroid , Gyroïde\nContour Threshold , Seuil de contour\nX-Multiplier , Multiplicateur-X\nHexagon , Hexagone\nHigh , Haut\nSmoothing , Lissage\nColor on White , Couleur sur blanc\nColor Tolerance , Tolérance couleur\nColormap , Carte de couleurs\nHardmix , Mélange dur\nHeart , Cœur\nHearts , Cœurs\nHeight (%) , Hauteur (%)\nDelaunay-Guided , Guidé par Delaunay\nSepia , Sépia\nDaylight Scene , Scène de jour\nDetail , Détail\nDepth Field Control , Contrôle du champ de profondeurs\nShadow , Ombre\nCup , Coupe\nShift , Décalage\nGrid , Grille\nDOF Analyzer , Analyseur DOF\nShadow Smoothness , Régularité de l'ombre\nShapeaverage , Moyenne sur la forme\nSharpen , Rendre net\nAnaglyph Blue/yellow , Anaglyphe bleu/jaune\nUser-Defined , Définir par l'utilisateur\nLeft and Right Foreground , Avant-plan gauche et droite\nLight Color , Couleur lumineuse\nTop Left , Haut gauche\nTop Right , Haut droite\nAnaglyph Red/cyan , Anaglyphe rouge/cyan\nAnaglyph Red/cyan Optimized , Anaglyphe rouge/cyan optimisé\nLevel , Niveau\nTwirl , Tourbillon\nMuch Blue , Beaucoup de bleu\nAngular , Anuglaire\nValue Correction , Correction de valeur\nMuch Red , Beaucoup de rouge\nMuch Green , Beaucoup de vert\nLighter , Plus lumineux\nBand Width , Largeur de bande\nAnaglyph Green/magenta , Anaglyphe vert/magenta\nAnaglyph Blue/yellow Optimized , Anaglyphe bleu/jaune optimisé\nTop Layer Defines Object Texture , Le calque supérieur définit la texture de l'objet\nLight Motive , Mobile léger\nAllow Angle , Autorise un angle\nLeft and Right Background , Arrière-plan gauche et droite\nBackward , En arrière\nMultiplier , Multiplicateur\nAnaglyph Glasses Adjustment , Ajustement des lunettes anaglyphes\nUnderwater , Sous l'eau\nLeft Diagonal Foreground , Avant-plan diagonal gauche\nUnknown , Inconnu\nX-Variations , Variations-X\nSimilarity Space , Espace de similarité\nSine , Sinus\nSine+ , Sinus+\nLaplacian , Laplacien\nModern Film , Film moderne\nSkin Estimation , Estimation de la peau\nSmall , Petit\nConnectivity , Connectivité\nX-Scale , Échelle-X\n3rd Color , 3ème couleur\nSkeleton , Squelette\nSmall (Faster) , Petit (plus rapide)\nLuminance Factor , Facteur de luminance\nCustom Layout , Disposition personnalisée\nShape Max0 , Max0 de forme\nShape Max , Max de forme\nShape Average0 , Moyenne de forme\nCustom Kernel , Noyau personnalisé\nShape Min0 , Min0 de forme\nShape Min , Min de forme\nVector Painting , Peinture vectorielle\nShadows Threshold , Seuil des ombres\nShape Area Max , Aire max de forme\nShape Average , Moyenne de forme\nShape Area Min0 , Aire min0 de forme\nShape Area Min , Aire min de forme\nShape Area Max0 , Aire max0 de forme\nSharpen Details in Preview , Détails nets dans la prévisualisation\nSharpening Strength , Force de netteté\nSharpening Radius , Rayon de netteté\nShrink , Rétracte\nCrop , Couper\nGreen Smoothness , Réularité verte\nMixer Mode , Mode de mixage\nGray , Gris\nGraphic Colours , Couleurs graphiques\nArray Mode , Mode de tableau\nCoarsest (faster) , Plus grossier (rapide)\n5th Color , 5ème couleur\nHighlights Threshold , Seuil des tons clairs\nHorizontal Amount , Quantité horizontale\nClosing - Original , Fermeture - Original\nLight Grey , Gris clair\nX-Centering , Centrage-X\nPencil Amplitude , Amplitude du crayon\nSoften , Plus doux\nColor Burn , Brulûre des couleurs\nPea Soup , Soupe de pois\nAlternating , En alternance\nSome , Un peu\nColor 3 , Couleur 3\nColor 4 , Couleur 4\nHorizontal Size (%) , Taille horizontale (%)\nHue Randomness (%) , Aléa de teinte (%)\nSpecular , Spéculaire\nSpatial Variance , Variance spatiale\nPaint , Peinture\nVertical Size (%) , Taille verticale (%)\nOversample , Sur-échantillonne\nHuman  2 , Humain 2\n7th Color , 7ème couleur\nSpace , Espace\nAllow Outer Blending , Autorise le mélange extérieur\nHot , Chaud\n6th Color , 6ème couleur\nCircle , Cercle\nSpatial Scale , Echelle spatiale\nSpatial Radius , Rayon spatial\nSpatial Precision , Précision spatiale\nColor Channels , Canaux couleurs\nHigh (Slower) , Haut (plus lent)\nPeriods , Périodes\n4th Color , 4ème couleur\nTwo Layers , Deux calques\nAttenuation Near Center (%) , Atténuation près du centre (%)\nAttenuation Decay , Décroissance de l'atténuation\nAspect Ratio , Rapport d'aspect\nPin Light , Lumière d'épingle\n4096x4096 Layer , Calque 4096x4096\nSmooth [Antialias] , Lisse [Anticrénelage]\nPerserve Luminance , Préserve la luminance\nHard Mix , Mélange dur\nPentagon , Pentagone\nSoft Dodge , Esquive douce\nSoft Burn , Brûlure douce\nColor Metric , Métrique couleur\nColor Intensity , Intensité de couleur\n512x512 Layer , Calque 512x512\nColor Grading , Étalonnage couleur\nPencil Size , Taille du crayon\nHighlight , Tons clairs\nHigh Pass , Passe-haut\nColor Smoothness , Régularité des couleurs\nColor Space , Espace de couleurs\nColor Spots + Extrapolated Colors + Lineart , Taches de couleurs + Couleurs extrapolées\nColor Quantization , Quantification couleur\nPencil Smoother Sharpness , Netteté du lisseur de crayon\nLow Frequency , Fréquence basse\nAuto Balance , Balance automatique\nPencil Type , Type de crayon\nRepeat [Memory Consuming!] , Répète [coûteux en mémoire!]\nFrequency (%) , Fréquence (%)\nEnding Point (%) , Point de fin\nEnhance Details , Renforce les détails\nEmboss , Gaufrage\nEffect Strength , Force de l'effet\nAngle Cut , Coupure d'angle\nPrimary Radius , Rayon primaire\nPurple , Violet\nFractured Clouds , Nuages fragmentés\nExponential , Exponentiel\nExpand , Étend\nEqualize and Normalize , Égalise et normalise\nEuclidean , Euclidéen\nPreview Gradient , Prévisualise le gradient\nReverse Endianness , Inverse l'endianness\nMasked Image , Image masquée\nMasking , Masquage\nDynamic Range Increase , Augmente l'intervalle dynamique\nEdge Sensitivity , Sensibilité au contours\nEdge Threshold (%) , Seuil de contours (%)\nPreview Precision , Précision de la prévisualisation\nEdge Behavior X , Comportement du contour en X\nEdge Behavior Y , Comportement du contour en Y\nPreview Original , Prévisualise l'original\nReference Color , Couleur de référence\nRange , Intervalle\nFilling , Remplissage\nAnaglyph Green/magenta Optimized , Anaglyphe vert/magenta optimisé\nRGB[A] , RVB[A]\nMedian , Médian\nValue Scale , Échelle de valeurs\nFlip , Renverse\nMaze Type , Type de labyrinthe\nFine Scale , Échelle fine\nFinest (slower) , Le plus fin possible (plus lent)\nRadius Cut , Coupe de rayon\nPencil Smoother Smoothness , Régularité du lisseur de crayon\nFirst Offset , Premier décalage\nFlag , Drapeau\nZoom Center , Centre du zoom\nZoom In , Zoome\nZoom Out , Dézoome\nRed Smoothness , Régularité rouge\nFade End , Fin du fondu\nForward  Horizontal , Horizontal en avant\nFade Start , Début du fondu\nMaximal Radius , Rayon maximal\nFractal Noise , Bruit fractal\nQuadratic , Quadratique\nReduce Halos , Réduit les halos\nQuantization , Quantification\nValue Randomness (%) , Aléa des valeurs (%)\nMaximum Dimension , Dimension maximale\nRecovery , Récupération\nFast Resize , Redimensionnement rapide\nFar Point Deviation , Déviation du point éloigné\nValue Precision , Précision de la valeur\nQuantize Colors , Quantifie les couleurs\nFormula , Formule\nFaded Print , Impression décolorée\nDepth (%) , Profondeur ()\nAny , N'importe lequel\nSecondary Radius , Rayon secondaire\nSecond Offset , Second décalage\nY-Centering , Centrage-Y\nDeformation Type , Type de déformation\nSelected Color , Couleur sélectionnée\nMuch , Beaucoup\nMinimal Region Area , Aire minimale de région\nFuzzyness , Fugacité\nScale Factor , Facteur d'échelle\nDesaturate , Désature\nAnti Alias , Anti-crénelage\nLeft  Foreground , Avant-plan gauche\nShade , Nuance\nDark Walls , Murs sombres\nDarkness Level , Niveau d'obscurité\nDark Grey , Gris foncé\nDark  Motive , Motif obscur\nDark Color , Couleur sombre\nDark Edges , Contours sombres\nSelf , Soi\nDefault , Défaut\nDecreasing , Décroissant\nSeventies Magazine , Magazine 70's\nDebug Font Size , Taille de la fonte de débogage\nAnisotropic , Anisotrope\nAngle Range , Intervalle d'angle\nPrecision (%) , Précision (%)\nRooster , Coq\nPreprocessor Power , Puissance du préprocesseur\nPre-Normalize Image , Pré-normalise l'image\nDisplay Debug Info on Preview , Affiche des infos de débogage sur la prévisualisation\nRoundness , Rondeur\nPower , Puissance\nAngle Variations , Variations d'angle\nAngle Inclinaison / Tilt , Inclinaison d'angle\nRight Diagonal  Foreground , Avant-plan diagonal droit\nDrawing Mode , Mode de dessin\nY-Variations , Variations-Y\nPreprocessor Radius , Rayon du préprocesseur\nPreserve Edges , Préserve les contours\nAngular Precision , Précision angulaire\nFull (Allows Multi-Layers) , Tous (autorise le multi-calques)\nSaturation Randomness (%) , Aléa de la saturation (%)\nManual , Manuel\nSave Gradient As , Sauve le gradient comme\nDifferent Axis , Axe différent\nSame Axis , Même axe\nY-Scale , Échelle-Y\nDilation - Original , Dilaté - Original\nMap Tones , Projette les tons\nStardust , Poussière d'étoiles\nIncreasing , Augmentation\nBlack Point , Point noir\nCentral  Perspective Outdoor , Perspective centrale extérieure\nBalance Color , Équilibre les couleurs\nStarting Angle , Angle de départ\nBlacks , Noirs\nWave , Vague\nVivid Light , Lumière vive\nVignette Max Radius , Rayon max de la vignette\nLN Size , Taille LN\nTiles , Tuiles\nNormalize Luma , Normalise la Luma\nVivid Edges , Contours vifs\nBottom , Bas\nOperator , Opérateur\nOriginal - Opening , Original - Ouverture\nOriginal - Erosion , Original - Érosion\nNone (Allows Multi-Layers) , Aucun (autorise le multi-calques)\nWhite Walls , Murs blancs\nBlue Smoothness , Régularité bleue\nTiled Preview , Prévisualisation en tuiles\nWhiter Whites , Blancs plus blancs\nMost , Plus\nOutline Size , Taille du liseret\nActivate 'Pencil Smoother' , Active le 'Lisseur de crayon'\nNight 01 , Nuit 01\nWavelet , Ondelette\nNormalization , Normalisation\nInner Shade , Teinte intérieure\nInner Radius (%) , Rayon intérieur (%)\nInner Radius , Rayon intérieur\nView Resolution , Résolution de la vue\nVery High (Even Slower) , Très haut (encore plus lent)\nStarting Point (%) , Point de départ (%)\nBox , Boîte\nOutput Filename , Nom du fichier de sortie\nBrighter , Plus lumineux\nThumbnail Size , Taille des vignettes\nBalance , Équilibre\nLine , Ligne\nNormal Map , Carte normale\nOctogon , Octogone\nLocal Contrast , Contraste local\nBandwidth , Largeur de bande\nAbsolute Value , Valeur absolue\nBrush Diameter (px) , Diamètre de brosse (px)\nThinness , Finesse\nSymmetry Sides , Cotés symétriques\nOutput Type , Type de sortie\nLineart + Color Spots + Extrapolated Colors , Lineart + Taches de couleurs + Couleurs extrapolées\nBoost Contrast , Booste le contraste\nInside , A l'intérieur\nSquare to Circle , Carré en cercle\nThickness (%) , Épaisseur (%)\nBidirectional Rendering , Rendu bidirectionnel\nThickness (px) , Épaisseur (px)\nLightness Level , Niveau de luminosité\nSymmetry , Symétrie\nInput Type , Type d'entrée\n8th Color , 8ème couleur\nStretch , Étire\nLittle , Petit\nBump Map , Carte d'élévation\nNumber , Nombre\nVignette Strength , Force de la vignette\nImage Smoothness , Réularité de l'image\nStretch Contrast , Étire le contraste\nOuter Radius , Rayon extérieur\nStroke Length (px) , Longueur de trait (px)\nAliasing , Crénelage\nTiny , Minuscule\nVignette Min Radius , Rayon min de la vignette\nBlur Amplitude , Amplitude du lissage\nSwap , Échange\nLinear Light , Lumière linéaire\nNumber of Frames , Nombre de trames\nWarm Vintage , Vintage chaud\nSwap Colors , Échange les couleurs\nSwap Layers , Échange les calques\nWhirls , Tourbillons\nTone Mapping , Projection des tons\nLinear Burn , Brûlure linéaire\nNumber of Key-Frames , Nombre de trames clés\nPosterized Dithering , Tramage postérisé\nNumber of Iterations per Scale , Nombre d'itérations par échelle\nPrécision Détails / Details Scale , Détail/Échelle des précisions\nPreview Frame Selection , Prévisualise la sélection des trames\nMineral Mosaic , Mosaïque minérale\nPreview Detected Shapes , Prévisualise les formes détectées\nPre Normalize , Pré-normalise\nPow , Puissance\nPre-Defined Colormap , Palette de couleurs pré-définie\nPreview Brush , Prévisualise la brosse\nNumber of Matches (Coarsest) , Nombre de correspondances (grossier)\nPreview Color Mapping , Prévisualise la projection de couleurs\nPre-Gamma , Pré-Gamma\nPreview Data , Prévisualise les données\nPre-Defined , Pré-défini\nObject Animation , Animation de l'objet\nPreview , Prévisualisation\nPreliminary Y-Axis Scaling , Mise à l'échelle préliminaire selon l'axe Y\nObject Tolerance , Tolérance de l'objet\nPreview All Outputs , Prévisualise toutes les sorties\nObject Ratio , Rapport d'aspect de l'objet\nPreserve Alpha? , Préserve l'Alpha ?\nPreserve Image Dimension , Préserve la dimension de l'image\nPreserve Initial Brightness , Préserve la luminosité initiale\nNumber of Streaks , Nombre de traces\nPreserve Range , Préserve l'intervalle\nPreserve Canvas for Post Bump Mapping , Préserve le canvas pour l'après bump mapping\nPreserve Covariance , Préserve la covariance\nNumber of Sizes , Nombre de tailles\nNumber of Teeth , Nombre de dents\nPreliminary X-Axis Scaling , Mise à l'échelle préliminaire suivant l'axe X\nMinesweeper , Démineur\nPreserve Luminance , Préserve la luminance\nMin Length (%) , Longueur min (%)\nMin Offset (%) , Décalage min (%)\nMin Detail Level , Niveau de détail min\nPre-Process , Pré-calcule\nNumber of Matches (Finest) , Nombre de correspondances (le plus fin)\nNight 02 , Nuit 02\nPreview Bands , Prévisualise les bandes\nOctagon , Octagone\nPreview Background , Prévisualise l'arrière plan\nPreliminary Surface Shift , Décalage préliminaire de la surface\nPredefined Formula , Formule pré-définie\nMinRGB , MinRVB\nPredefined Style , Style pré-defini\nMin Radius , Rayon min\nMinimal Shape Area , Aire minimale de forme\nOne Layer per Single Color , Un calque par couleur différente\nOne Layer (Vertical) , Un calque (vertical)\nOne Layer per Single Region , Un calque par région différente\nMinimal Size (%) , Taille minimale (%)\nOnly Leafs , Seulement les feuilles\nOne Layer , Un calque\nOnce Upon a Time , Il était une fois\nMinimal Scale (%) , Échelle minimale (%)\nOne Layer (Horizontal) , Un calque (horizontal)\nPolygonize [Delaunay] , Polygonise [Delaunay]\nPolygonize [Energy] , Polygonise [Énergie]\nPop Shadows , Fait ressortir les ombres\nMinimal Stroke Length , Longueur minimale de trait\nPopcorn Fractal , Fractales Popcorn\nOnly Red and Blue , Seulement rouge et bleu\nOnly Red , Seulement rouge\nPortrait Retouching , Retouche de portrait\nMinimal Color Intensity , Intensité minimale de couleur\nNewspaper , Papier journal\nMinimal Area (%) , Aire minimale (%)\nOffset Y-Transformation , Transformation du décalage-Y\nMinimal Highlights , Ton clairs minimaux\nMorphological Filter , Filtre morphologique\nOddness (%) , Étrangeté (%)\nNewton Fractal , Fractale de Newton\nPosterization Level , Niveau de postérisation\nPosterize , Postérise\nPosterization Antialiasing , Anti-crénelage de postérisation\nPost-Process , Post-traitement\nOffset X-Transformation , Transformation du décalage-X\nOffset (%) , Décalage (%)\nPoster Edges , Contours de poster\nMinimal Radius , Rayon minimal\nOld-Movie Stripes , Rayures de vieux film\nOld West , Vieil Ouest\nMorphological Closing , Fermeture morphologique\nOffsets , Décalages\nNew Filters , Nouveaux filtres\nMinimal Path , Chemin minimal\nOld Photograph , Vieille photographie\nOld Method - Slowest , Ancienne méthode - la plus lente\nQuick Enlarge , Aggrandissement rapide\nQuick Tonemap , Projection des tons rapides\nR/B Smoothness (Principal) , Régularité R/B (principal)\nQuick Copyright , Copyright rapide\nQuick , Rapide\nNoise [Perlin] , Bruit [Perlin]\nRGB Tone , Ton RVB\nNoise [Additive] , Bruit [Additif]\nRGB Quantization , Quantification RVB\nR/B Smoothness (Secondary) , Régularité R/B (secondaire)\nNoise [Spread] , Bruit [dispersé]\nMid , Moyen\nRGB Image + Binary Mask (2 Layers) , Image RVB + Masque binaire (2 calques)\nMicro/macro Details  Adjusted , Ajustement des micro/macro détails\nNon-Linearity , Non-linéarité\nMotion Analyzer , Analyseur de mouvement\nMotion-Compensated , Compensé en mouvement\nPyramid Processing , Traitement pyramidal\nPseudorandom Noise , Bruit pseudo-aléatoire\nPush Point , Point de pression\nNormal Inverted , Nomales inversées\nMid Noise , Bruit moyen\nMid Grey , Gris moyen\nMoving Leaf , Feuille mouvante\nNon-Rigid , Non-rigide\nQuality (%) , Qualité (%)\nPythagoras Tree , Arbre de Pythagore\nNorm Type , Type de norme\nQuadtree Variations , Variations d'abres quaternaires\nQuality , Qualité\nRYB , RJB\nMedium Scale (Smoothed) , Échelle moyenne (lissée)\nMedium Scale (Original) , Échelle moyenne (originale)\nMedium Frequency Layer , Calque de fréquence moyenne\nNight 04 , Nuit 04\nNine Layers , Neuf calques\nMerge Brightness / Colors , Fusionner luminosité/couleurs\nNo Rescaling , Pas de redimensionnement\nNo Recovery , Pas de récupération\nMemories , Mémoires\nNo Masking , Pas de masquage\nRadioactive Flower , Fleur radioactive\nNight From Day , Nuit à partir du jour\nNight 05 , Nuit 05\nRYB8 , RJB8\nRadial Edge Behaviour , Comportement de contour radial\nRadial Influence , Influence radiale\nNo Transparency , Pas de transparence\nNoise , Bruit\nMetallic Look , Look métallique\nMetal , Métal\nNoise Level , Niveau de bruit\nNight 03 , Nuit 03\nMetropolis , Métropolis\nNoise Scale , Échelle de bruit\nMetric , Métrique\nRGBA Image (Updatable / 1 Layer) , Image RVBA (modifiable / 1 calque)\nMerging Steps , Étapes de fusion\nMerging Mode , Mode de fusion\nMerge Layers? , Fusionne les calques ?\nRGBA Image (Full-Transparency / 1 Layer) , Image RVBA (En transparence / 1 calque)\nMess with Bits , S'amuser avec les bits\nRGB8 , RVB8\nRGBA , RVBA\nNo-Skip , Pas de saut\nRGBA Foreground + Background (2 Layers) , Avant-plan RVBA + Arrière plan (2 calques)\nPseudo-Gray Dithering , Tramage en pseudo-gris\nNostalgia Honey , Miel de nostalgie\nNormalize Scales , Normalise les échelles\nPreview Without Alpha , Prévisualise sans le Alpha\nPreview Tones Map , Prévisualise la carte des tons\nPreview Shape , Prévisualise la forme\nMin Angle Deviation (deg) ,\nMoviz 34 ,\nPreview Subsampling ,\nPreview Time ,\nNormalize Input ,\nPrimary Radius (%) ,\nMighty Details ,\nMorroco 16 ,\nPrimary Shift ,\nPrimary Gamma ,\nMoviz 44 ,\nPrewitt-Y ,\nPrimary Angle ,\nPrimary Color ,\nPrimary Factor ,\nPreview Selection ,\nPreview Light Shape ,\nPreview Mapping ,\nPreview Mask ,\nNumber of Clusters ,\nPreview Only Shadow ,\nMorphology Strength ,\nNumber of Iterations ,\nPreview Grain Alone ,\nNumber of Inter-Frames ,\nPreview Grid ,\nMorphology Painting ,\nMin Cut (%) ,\nNostalgic ,\nMoviz 45 ,\nMin Area % ,\nPreview Reference Circle ,\nMoviz 46 ,\nPreview Opacity (%) ,\nNumber of Angles ,\nNumber of Added Frames ,\nPreview Progress (%) ,\nNothing ,\nNormal Output ,\nProcess by Blocs of Size ,\nProcessing Mode ,\nProgressen ,\nPropagation ,\nProcess Transparency ,\nProcess Channels Individually ,\nMiddle Grey ,\nProcess Top Layer Only ,\nMid-Light Grey ,\nMid-Dark Grey ,\nMid Tone Contrast ,\nPrussian Blue ,\nMid Offset ,\nMostly Blue ,\nMoviz 37 ,\nProvia ,\nMoviz 36 ,\nProportion ,\nProtanomaly ,\nProtanopia ,\nProtect Highlights 01 ,\nMiddle Scale ,\nPrint Size Unit ,\nPrint Size Width ,\nPrivacy Notice ,\nPro Neg Hi ,\nMoviz 43 ,\nPrint Frame Numbers ,\nPrimary Twist ,\nPrint Adjustment Marks ,\nPrint Films (12) ,\nNormalize Illumination ,\nMidtones Hue ,\nMidpoint Shift ,\nMidpoint ,\nProbability Map ,\nProcedural ,\nProcess As ,\nPro Neg Std ,\nMosaic ,\nMidtones Color Intensity ,\nMoviz 35 ,\nMidtones Brightness ,\nNormalize Brightness ,\nMinimal Value ,\nOutput CLUT Resolution ,\nMoire Removal Method ,\nOutput CLUT ,\nOutput Ascii File ,\nMoviz 26 ,\nOutput Chroma NR ,\nMona Lisa ,\nOutput Each Piece on a Different Layer ,\nOutput Directory ,\nOutput Corresponding CLUT ,\nOutput Coordinates File ,\nOutline Smoothness ,\nPeppers ,\nOutline Opacity ,\nOutline Contrast ,\nNegative Effect ,\nMoire Removal ,\nMoody-5 ,\nPencils ,\nNature & Wildlife-5 ,\nOutlined ,\nOutline Thickness ,\nMoody-4 ,\nMoviz 18 ,\nPaw ,\nMoody-2 ,\nPen Drawing ,\nPenalize Patch Repetitions ,\nPattern Width ,\nNb Branches / Rays ,\nMondrian: Gray Tree ,\nOutput HTML File ,\nMoviz 19 ,\nNature & Wildlife-9 ,\nMoviz 17 ,\nNature & Wildlife-7 ,\nNature & Wildlife-6 ,\nMoody-3 ,\nPencil Portrait ,\nNature & Wildlife-8 ,\nNegative Color Abstraction ,\nMoviz 25 ,\nPencil ,\nMondrian: Evening; Red Tree ,\nMondrian: Composition in Red-Yellow-Blue ,\nPictureFX - Faux Infrared Color P2 ,\nPictureFX - Faux Infrared Color P3 ,\nNegative [Old] (44) ,\nPictureFX - Faux Infrared R0a ,\nPictureFX - Faux Infrared R0b ,\nPictureFX - Faux Infrared B&W1 ,\nModern Films 06 ,\nPicabia: Udnie ,\nPicasso: Seated Woman ,\nPicasso: The Reservoir - Horta De Ebro ,\nPictureFX (25) ,\nNeighborhood Smoothness ,\nModern Films 04 ,\nNemesis ,\nNeon 770 ,\nMoviz 16 ,\nNeighborhood Size (%) ,\nName ,\nPictureFX - Faux Infrared YP1 ,\nPiece Complexity ,\nModern Films 05 ,\nPiece Size (px) ,\nModern Films 07 ,\nMoir&eacute; Animation ,\nPerturbation ,\nPetallian ,\nPetals ,\nPhase ,\nMoviz 27 ,\nMoody-6 ,\nPeriodic Dots ,\nPeriodicity ,\nNature & Wildlife-4 ,\nNegative [Color] (13) ,\nMoody-7 ,\nNatural (vivid) ,\nPhotoComix Preset ,\nPhotoillustration ,\nNegative [New] (39) ,\nNature & Wildlife-1 ,\nNature & Wildlife-3 ,\nNature & Wildlife-2 ,\nPhone ,\nModulo Value ,\nNature & Wildlife-10 ,\nMonet: San Giorgio Maggiore at Dusk ,\nMoody ,\nMono-Directional ,\nMono+Ye ,\nOutput Width ,\nMoviz 20 ,\nPadding (px) ,\nPIXLS.US (31) ,\nPack ,\nPack Sprites ,\nPacman ,\nMoviz 22 ,\nOutput Stroke Layer On ,\nOutput Sharpening ,\nMono+G ,\nOutput Saturation ,\nPainting Order ,\nPainting Opacity ,\nPaint Effect ,\nMono+R ,\nPaint Splat ,\nPaint With Brush ,\nPainting ,\nPI-Based Scaling ,\nOutside-In ,\nOutward ,\nOverall Blur ,\nOverall Contrast ,\nOverall Lightness ,\nOutside Color ,\nMontage ,\nNear Black ,\nMoviz 21 ,\nOutput to Folder ,\nOutside ,\nMontage Type ,\nOvershoot ,\nP''(z) ,\nP(z) ,\nPCA Transfer ,\nOverload Y ,\nOverlap (%) ,\nMonochrome 2 ,\nOverload Count** ,\nOverload X ,\nMonochrome 1 ,\nPatch Size for Synthesis (Final) ,\nPatch Smoothness ,\nPatch Variance ,\nPattern ,\nPattern Angle ,\nPatch Size for Synthesis ,\nMono ,\nPatch ,\nPatch Measure ,\nMonkey ,\nPatch Size for Analysis ,\nNegate ,\nPattern Weight ,\nMonet: Wheatstacks - End of Summer ,\nMoviz 24 ,\nMonet: Water-Lily Pond ,\nPattern Variation 3 ,\nPattern Height ,\nPattern Type ,\nMoviz 23 ,\nPattern Variation 1 ,\nPattern Variation 2 ,\nOutput Height ,\nPaladin 1875 ,\nPaper Texture ,\nNb Cercles Extérieurs / Circles Surrounding ,\nParabolic ,\nOutput Preset as a HaldCLUT Layer ,\nMoody-10 ,\nPaintstroke ,\nNeat Merge ,\nOutput Region Delimiters ,\nMoody-1 ,\nPaladin ,\nMoviz 2 ,\nPasadena 21 ,\nPassing By ,\nPastell Art ,\nOutput Layers ,\nParrots ,\nOutput Multiple Layers ,\nNebulous ,\nParabolic Chaos ,\nMono Tinted ,\nParameter Settings ,\nOpposing ,\nPolaroid PX-100UV+ Warm ,\nPolaroid PX-100UV+ Warm + ,\nMirror Effect ,\nMultiple Colored Shapes Over Transp. BG ,\nNeutral Pump ,\nMirror X ,\nMoviz 12 ,\nNeutral Color ,\nPolaroid PX-100UV+ Cold ++ ,\nPolaroid PX-100UV+ Cold +++ ,\nPolaroid PX-680 + ,\nMorph [Interactive] ,\nMul ,\nOperation Yellow ,\nMinisteck ,\nPolaroid PX-680 ,\nPolaroid PX-100UV+ Warm ++ ,\nMulti-Layer Etch ,\nPolaroid PX-100UV+ Warm +++ ,\nNeutral Teal Orange ,\nNeutral Warm Fade ,\nMirror Y ,\nMoviz 28 ,\nPolaroid 690 Warm + ,\nPolaroid 690 Warm ++ ,\nOrange Underexposed ,\nMultipliers ,\nOranges ,\nOrder By ,\nOrder ,\nPolaroid 690 Warm ,\nMixed Mode ,\nMix ,\nMorning 6 ,\nOrange Dark 4 ,\nMorph Layers ,\nMoviz 29 ,\nMultiple Layers ,\nMoviz 13 ,\nOrange Tone ,\nOrange Dark Look ,\nPolaroid PX-100UV+ Cold ,\nOrange Dark 7 ,\nPolaroid PX-100UV+ Cold + ,\nPolaroid PX-70 Warm + ,\nPolaroid PX-70 Warm ++ ,\nPolaroid Polachrome ,\nOpacity Gamma ,\nOpacity Gain ,\nPolaroid PX-70 Warm ,\nPolaroid PX-70 Cold ,\nPolaroid PX-70 Cold + ,\nPolaroid PX-70 Cold ++ ,\nOpacity as Heightmap ,\nOpacity Threshold (%) ,\nMorphological - Fastest Sharpest Output ,\nPole Lat ,\nMinimalist Caffeination ,\nPole Long ,\nPole Rotation ,\nPolaroid Time Zero (Expired) Cold ,\nPolaroid Time Zero (Expired) ,\nOpacity Factor ,\nPolaroid Time Zero (Expired) + ,\nPolaroid Time Zero (Expired) ++ ,\nMorphoStrenght ,\nOpaque Pixels ,\nPolaroid PX-680 Cold ++a ,\nMinimum Red:Blue Ratio in the Fringe ,\nMinimum Dimension ,\nMinimum Brightness ,\nMinimum ,\nOpen Interactive Preview ,\nPolaroid PX-680 ++ ,\nNew Curves [Interactive] ,\nPolaroid PX-680 Cold ,\nPolaroid PX-680 Cold + ,\nPolaroid PX-680 Cold ++ ,\nOutput as Multiple Layers ,\nPolaroid PX-70 + ,\nPolaroid PX-70 ++ ,\nPolaroid PX-70 +++ ,\nMoviz 30 ,\nOpaque Regions on Top Layer ,\nOpaque Skin ,\nPolaroid PX-680 Warm ,\nMoviz 3 ,\nPolaroid PX-680 Warm + ,\nPolaroid PX-680 Warm ++ ,\nPolaroid 690 Cold ++ ,\nPlacement ,\nOrthogonal Radius ,\nPlacement of Distortion ,\nPlaid ,\nMoviz 14 ,\nMixer [YCbCr] ,\nMod ,\nPixel Values ,\nOrwo NP20-GDR ,\nPixelmator (45) ,\nOrton Glow ,\nPoint #2 ,\nNetteté / Sharpness ,\nPoint #3 ,\nPoint 1 ,\nMuted 01 ,\nPoint #1 ,\nMixer [RGB] ,\nNeon Lightning ,\nPlasma Effect ,\nPlot Type ,\nPoint #0 ,\nMode 0 ,\nOuter Radius (%) ,\nPitaya 15 ,\nModern Films 01 ,\nPixel Denoise ,\nMystic Purple Sunset ,\nNah ,\nMoviz 15 ,\nPink Fade ,\nModern Films 03 ,\nNaif ,\nModern Films 02 ,\nOuline Color ,\nOthers (69) ,\nPixel Size ,\nPixel Sort ,\nMode 1 ,\nMuted Fade ,\nOuter Length ,\nOuter Fading ,\nModeler / Shape ,\nOuter ,\nPixel Push ,\nPolaroid 669 Cold ,\nOrigin ,\nPolaroid 669 Cold + ,\nMoonlight ,\nOrientation Only ,\nMoon2panorama ,\nMixer [HSV] ,\nPolaroid 669 +++ ,\nMixer [CMYK] ,\nOriginal ,\nMoody-9 ,\nPolaroid 690 Cold ,\nMixer ,\nMultiscale Operator ,\nMoonrise ,\nPolaroid 690 Cold + ,\nOrientation Coherence ,\nMixer Style ,\nPolaroid 672 ,\nPolaroid 690 + ,\nPolaroid 690 ++ ,\nMoonlight 01 ,\nPolaroid 669 ++ ,\nPoisson + Gaussian ,\nPolar Transform ,\nPolaroid ,\nMoody-8 ,\nPolaroid 664 ,\nMixer [Lab] ,\nPoint 2 ,\nPoint Warp ,\nMixer [PCA] ,\nPoint Width ,\nMute Shift ,\nPolaroid 665 Negative HC ,\nPolaroid 667 ,\nOriginal - (Opening + Closing)/2 ,\nPolaroid 669 + ,\nMunch: The Scream ,\nPolaroid 665 Negative - ,\nPolaroid 665 ,\nPolaroid 665 + ,\nPolaroid 665 ++ ,\nPolaroid 665 Negative ,\nPolaroid 665 Negative + ,\nTones to Layers ,\nTone Threshold ,\nTone Presets ,\nTone Mapping [Fast] ,\nTotal Layers ,\nTop-Right Vertex (%) ,\nTop-Left Vertex (%) ,\nTop ,\nTone Enhance ,\nTone Blur ,\nTonal Bandwidth ,\nTolerance to Gaps ,\nTone Mapping Soft ,\nTone Mapping Fast ,\nTone Mapping (%) ,\nTone Gamma ,\nTotal Variation ,\nTransparent Background ,\nTransmittance Map ,\nTransition Smoothness ,\nTransition Shape ,\nTransparent on Black ,\nTransparent Skin ,\nTransparent Color ,\nTransparent Black & White ,\nTransfer Colors [Patch-Based] ,\nTransfer Colors [PCA] ,\nTransfer Colors [Histogram] ,\nTout ,\nTransition Map ,\nTransformer ,\nTransform ,\nTransfer Colors [Variational] ,\nToggle to View Base Image ,\nThreshold Mid ,\nThreshold Max ,\nThreshold Low ,\nThreshold High ,\nTiger ,\nTic-Tac-Toe ,\nThriller 2 ,\nThreshold On ,\nThorn Fractal - Secant Sea ,\nThinning (Slow) ,\nThinning ,\nThin Separators ,\nThreshold Etch ,\nThree Layers ,\nThorny Petal 2 ,\nThorny Petal 1 ,\nTikhonov ,\nTimed Image ,\nTime ,\nTilt ,\nTiles to Layers ,\nToes ,\nToasted Garden ,\nTo Nadir / Zenith ,\nTo Equirectangular ,\nTiled Isolation ,\nTileable Rotation ,\nTile Size ,\nTile Poles ,\nTiled Rotation ,\nTiled Random Shifts ,\nTiled Parameterization ,\nTiled Normalization ,\nUnquantize [JPEG Smooth] ,\nUnpurple ,\nUnearthing Origami ,\nUndo Anaglyph ,\nUp-Left ,\nUntwist ,\nUnstrip ,\nUnsharp Mask ,\nUltraWarp++++ ,\nUltra Water ,\nType Flocon / Snowflake ,\nType Aperçu ,\nUndeniable 2 ,\nUndeniable ,\nUnbounded ,\nUnaligned Images ,\nUp-Right ,\nUrban 04 ,\nUrban 03 ,\nUrban 02 ,\nUrban 01 ,\nUse Individual Depth Map ,\nUse Bi-Sided Convolution? ,\nUrban Cowboy ,\nUrban 05 ,\nUppercase Letters ,\nUpper Side Orientation ,\nUpper Layer Is the Top Layer for All Blends ,\nUpdate Neural Network ,\nUpscale [Scale2x] ,\nUpscale [Edge] ,\nUpscale [Diffusion] ,\nUpscale [DCCI2x] ,\nTwo-By-Two ,\nTrig-6 ,\nTrig-4 ,\nTriangular Vb ,\nTriangular Va ,\nTrunk Color ,\nTrue Colors 8 ,\nTritanopia ,\nTritanomaly ,\nTriangles (Outline) ,\nTrent 18 ,\nTree ,\nTransparent on White ,\nTriangular Pattern ,\nTriangular Interweaving ,\nTriangular Hb ,\nTriangular Ha ,\nTrunk Opacity (%) ,\nTwist Strength (%) ,\nTwist Angle (°) ,\nTweed 71 ,\nTurn on Rotate and Twirl ,\nTwisted Tunnel ,\nTwisted Rays ,\nTwisted Heart 2 ,\nTwisted Heart ,\nTune HSV Colors ,\nTulips ,\nTubular Waves ,\nTrunks ,\nTurkiest 42 ,\nTuring ,\nTurbulent Halftone ,\nTunnel ,\nSummer (alt) ,\nSummer ,\nSubtractive ,\nSubtle Yellow ,\nSunny (rich) ,\nSunny (alt) ,\nSunny ,\nSunlight Love ,\nSubpixel Level ,\nSubpixel Interpolation ,\nSublevel ,\nSubdivisions ,\nSubtle Green ,\nSubtle Blue ,\nSubsampling Level ,\nSubsampling (%) ,\nSunny (warm) ,\nSutro FX ,\nSurface Disturbance Multiplier ,\nSurface Disturbance ,\nSurface Angle ,\nSweet Bubblegum ,\nSwap Sides ,\nSwap Radius / Angle ,\nSwan ,\nSuper Warm ,\nSunset Violet Mood ,\nSunset Intense Violet Blue ,\nSunset Aqua Orange ,\nSuperimpose with Original? ,\nSuperformula ,\nSuper-Pixels ,\nSuper Warm (rich) ,\nStylize ,\nStereoscopic Window Position ,\nStereoscopic Image Alignment ,\nStereographic Projection ,\nStereo Window Position ,\nStreet ,\nStreak ,\nStrands ,\nStraight ,\nStencil ,\nStd Thickness Factor (%) ,\nStd Length Factor (%) ,\nStd Branching ,\nStereo Image ,\nSteps ,\nStep (%) ,\nStep ,\nStrength Effect ,\nStrong Antialias ,\nStrong ,\nStroke Strength ,\nStroke Angle ,\nStyle Variations ,\nStyle ,\nStudio Skin Tone Shaper ,\nStructure Smoothness ,\nStretch Colors ,\nStrength Shadows ,\nStrength Midtones ,\nStrength Highlights ,\nStroke ,\nStripe Orientation ,\nStrip ,\nStretch Factor ,\nTemperature Balance ,\nTeigen 28 ,\nTeddy ,\nTechnicalFX - Backlight Filter ,\nTension Green 2 ,\nTension Green 1 ,\nTends to Be Square ,\nTen Layers ,\nTeal Moonlight ,\nTeal Magenta Gold ,\nTeal Fade ,\nTarraco ,\nTeal Orange 3 ,\nTeal Orange 2 ,\nTeal Orange 1 ,\nTeal Orange ,\nTension Green 3 ,\nThelypteridaceae ,\nThe Matrices ,\nThe Game of Life ,\nTextured Glass ,\nThin Edges ,\nThin Brush ,\nThickness(%) ,\nThickness Factor ,\nTertiary Gamma ,\nTertiary Factor ,\nTerra 4 ,\nTension Green 4 ,\nTexture Enhance ,\nTexture ,\nTertiary Twist ,\nTertiary Shift ,\nTarget Color #9 ,\nTarget Color #10 ,\nTarget Color #1 ,\nTaquin ,\nTanh Stroke ,\nTarget Color #14 ,\nTarget Color #13 ,\nTarget Color #12 ,\nTarget Color #11 ,\nSynthesis Scale ,\nSymmetrize ,\nSymmetric 2D Shape ,\nSweet Gelatto ,\nTangent Radius ,\nTan(z) ,\nTaille / Size ,\nTaiga ,\nTarget Color #15 ,\nTarget Color #4 ,\nTarget Color #3 ,\nTarget Color #24 ,\nTarget Color #23 ,\nTarget Color #8 ,\nTarget Color #7 ,\nTarget Color #6 ,\nTarget Color #5 ,\nTarget Color #19 ,\nTarget Color #18 ,\nTarget Color #17 ,\nTarget Color #16 ,\nTarget Color #22 ,\nTarget Color #21 ,\nTarget Color #20 ,\nTarget Color #2 ,\nXb-Multiplier ,\nXb-Exponent ,\nXa/Xb ,\nXa-Sign ,\nY Center ,\nXy-Axes ,\nXb-Sign ,\nXb-Offset (deg.) ,\nXY-Factor ,\nXY-Coordinates (%) ,\nXY-Axis Mode? ,\nXY-Axis Formula U ,\nXa-Offset (deg.) ,\nXa-Multiplier ,\nXa-Exponent ,\nXY-Light ,\nY Origine ,\nY-Coordinate [Manual] ,\nY-Coordinate ,\nY-Centering (%) ,\nY-Center ,\nY-Factor (%) ,\nY-End (%) ,\nY-Dispersion ,\nY-Curvature ,\nY-Axis Formula T ,\nY-Axis Formula S ,\nY-Angle (deg.) ,\nY(t) ,\nY-Border ,\nY-Balance ,\nY-Axis Then X-Axis ,\nY-Axis Formula U ,\nXY-Axis Formula T ,\nX-Dispersion ,\nX-Curvature ,\nX-Coordinate [Manual] ,\nX-Coordinate ,\nX-Min ,\nX-Max ,\nX-Factor (%) ,\nX-End (%) ,\nX-Axis Then Y-Axis ,\nX-Axis Formula U ,\nX-Axis Formula T ,\nX-Axis Formula S ,\nX-Centering (%) ,\nX-Center ,\nX-Border ,\nX-Balance ,\nX-Motion ,\nX1 (none) ,\nX-Warping ,\nX-Start (%) ,\nX-Smoothness ,\nXY-Axis Formula S ,\nXY-Axis ,\nXY-Amplitude ,\nXY Mirror ,\nX-Rotation ,\nX-Resolution ,\nX-Ratio ,\nX-Ombre X-Shadow ,\nX-Size (px) ,\nX-Shift (px) ,\nX-Shift (%) ,\nX-Seed (Julia) ,\nZ^^3 - 1 ,\nZ^^2 - 1 ,\nZ-Scale ,\nZ-Rotation ,\nZa-Exponent ,\nZ^^8 + 15*z^^4 - 1 ,\nZ^^6 + Z^^3 - 1 ,\nZ^^5 - 1 ,\nYou Can Do It ,\nYellowstone ,\nYellow Smoothness ,\nYellow Shift ,\nZ-Range ,\nZ-Motion ,\nZ-Angle (deg.) ,\nYoussef Hossam (5) ,\nZa-Multiplier ,\nZilverFX - B&W Solarization ,\nZero ,\nZelda ,\nZeke 39 ,\nZoom (%) ,\nZone System ,\nZilverFX - Vintage B&W ,\nZilverFX - InfraRed ,\nZb-Exponent ,\nZa/Zb ,\nZa-Sign ,\nZa-Offset (deg.) ,\nZed 32 ,\nZb-Sign ,\nZb-Offset (deg.) ,\nZb-Multiplier ,\nYellow Film 01 ,\nY-Warping ,\nY-Start (%) ,\nY-Smoothness ,\nY-Size (px) ,\nYCbCr (Luma Only) ,\nYCbCr (Distinct) ,\nYCbCr (Chroma Only) ,\nYAG Effect ,\nY-Resolution ,\nY-Ratio ,\nY-Ombre Y-Shadow ,\nY-Motion ,\nY-Shift (px) ,\nY-Shift (%) ,\nY-Seed (Julia) ,\nY-Rotation ,\nYCbCr (Luma/Chroma) ,\nYb-Offset (deg.) ,\nYb-Multiplier ,\nYb-Exponent ,\nYa/Yb ,\nYellow Factor ,\nYellow Color ,\nYellow 55B ,\nYb-Sign ,\nYES8 ,\nYCbCrJPEG ,\nYCbCrGLIC ,\nYCbCr (Mixed) ,\nYa-Sign ,\nYa-Offset (deg.) ,\nYa-Multiplier ,\nYa-Exponent ,\nVertical Tiles ,\nVertical Stripes ,\nVertical Length ,\nVertical Blur ,\nVery Warm Greenish ,\nVery High ,\nVery Fine ,\nVery Course 5 ,\nVertical 1 Length ,\nVertical 1 Amount ,\nVertex Type ,\nVelvia ,\nVertical Array ,\nVertical Amount ,\nVertical 2 Length ,\nVertical 2 Amount ,\nVibrant ,\nVintage 01 ,\nVintage (brighter) ,\nVintage (alt) ,\nVintage ,\nVintage 05 ,\nVintage 04 ,\nVintage 03 ,\nVintage 02 ,\nVictory ,\nVibrant (crome-Ish) ,\nVibrant (contrast) ,\nVibrant (alien) ,\nVignette Strenth ,\nVignette Contrast ,\nVignette ,\nView Outlines Only ,\nVelocity ,\nV Cutoff ,\nUzbek Samarcande ,\nUzbek Marriage ,\nUzbek Bukhara ,\nValue Bottom ,\nValue Blending ,\nVal Range ,\nVFB 21 ,\nUse Top Layer as a Priority Mask ,\nUse Negative Overload ,\nUse Maximum Tones ,\nUse Light ,\nUsure [bruit/noise] ,\nUser-Defined (Bottom Layer) ,\nUse as Saturation ,\nUse as Hue ,\nValue Factor ,\nVariability ,\nVan Gogh: Wheat Field with Crows ,\nVan Gogh: The Starry Night ,\nVan Gogh: Irises ,\nVariation C ,\nVariation B ,\nVariation A ,\nVariance ,\nValue Shift ,\nValue Range ,\nValue Randomness ,\nValue Normalization ,\nVan Gogh: Almond Blossom ,\nValue Variance ,\nValue Top ,\nValue Smoothness ,\nWhitening ,\nWhite to Black ,\nWhite on Transparent ,\nWhite Point ,\nWipe ,\nWinter Lighthouse ,\nWind ,\nWhites ,\nWestern Lut 2 ,\nWestern ,\nWebbing Cubic Unearthing ,\nWeave ,\nWhite Level ,\nWhite Layers ,\nWhite Dices ,\nWhirl Drawing ,\nWiremap ,\nX 9 ,\nX 8 ,\nX 6 ,\nX 4 ,\nX-Angle (deg.) ,\nX(t) ,\nX Origine ,\nX Center ,\nX 16 ,\nX 12 ,\nWork on Frameset ,\nWooden Gold 20 ,\nX 3 ,\nX 27 ,\nX 2 ,\nX 18 ,\nWavy ,\nVivid Screen ,\nVivid Edges* ,\nVisible Watermark ,\nVirtual Landscape ,\nWarm ,\nWarhol ,\nWall ,\nVoronoi ,\nVintage Style ,\nVintage Mob ,\nVintage Chrome ,\nVintage 163 ,\nVireo 37 ,\nViolet Taste ,\nVintage Warmth 1 ,\nVintage Tone (%) ,\nWarm (highlight) ,\nWaterslide ,\nWaterfall ,\nWater ,\nWarp by Intensity ,\nWaves Smoothness ,\nWaves Amplitude ,\nWavelength ,\nWave(s) ,\nWarm Fade 1 ,\nWarm Fade ,\nWarm Dark Contrasty ,\nWarm (yellow) ,\nWarp [Interactive] ,\nWarm Teal ,\nWarm Sunset Red ,\nWarm Neutral ,\nRotations ,\nRotated (crush) ,\nRotated ,\nRotate Tree ,\nRow by Row ,\nRound ,\nRotinv-Y ,\nRotinv-X ,\nRotate (vibrant) ,\nRotate (muted) ,\nRose ,\nRosace ,\nRotate Hue Bands ,\nRotate 90 Deg. ,\nRotate 270 Deg. ,\nRotate 180 Deg. ,\nS-Curve Contrast ,\nSaturation EQ ,\nSaturation Channel Gamma ,\nSaturated Blue ,\nSatin ,\nSaturation Randomness ,\n[Cyan]MYK ,\nSaturation Increase ,\nSaturation Factor ,\nSampling ,\nSample Image ,\nSame as Input ,\nSRGB Conversion ,\nSat Top ,\nSat Range ,\nSat Bottom ,\nSans ,\nRorschach ,\nRevert Layer Order ,\nReversing ,\nReverse Tangent Division ,\nReverse Pow ,\nRight Eye View ,\nRight Diagonal Foreground ,\nRight ,\nRice ,\nReverse Flip ,\nReverse Effect ,\nReverse Bytes ,\nReverse Bits ,\nReverse Motion ,\nReverse Mod ,\nReverse Gradient ,\nReverse Frame Stack ,\nRight Position ,\nRodilius [Animated] ,\nRodilius ,\nRoddy (by Mahvin) ,\nRoddy ,\nRollei Retro 80s ,\nRollei Retro 100 Tonal ,\nRollei Ortho 25 ,\nRollei IR 400 ,\nRigid ,\nRight Stream Only ,\nRight Slope ,\nRight Side Orientation ,\nRocketStock (35) ,\nRobert Cross 2 ,\nRobert Cross 1 ,\nRipple ,\nSelected Frame ,\nSelected Colors ,\nSelect-Replace Color ,\nSelect By ,\nSelective Gaussian ,\nSelective Desaturation ,\nSelection ,\nSelected Mask ,\nSegment Max Length (px) ,\nSectors ,\nSecondary Twist ,\nSecondary Shift ,\nSegments Strength ,\nSegments ,\nSegmentation Smoothness ,\nSegmentation Edge Threshold ,\nSelf Glitching ,\nSet Frame Format ,\nSet Aspect Only ,\nSerpent ,\nSeringe 4 ,\nShade Back to First Color ,\nShade Angle ,\nSevsuz ,\nSeven Layers ,\nSequence X4 ,\nSensitivity ,\nSemi-Thorny Petallian ,\nSelf Image ,\nSerial Number ,\nSerenity ,\nSequence X8 ,\nSequence X6 ,\nSecondary Radius (%) ,\nScale Style to Fit Target Resolution ,\nScale RGB ,\nScale Plasma ,\nScale Output ,\nScaling X-Axis ,\nScaling Factor ,\nScaled ,\nScale Variations ,\nSaving Private Damon ,\nSave CLUT as .Cube or .Png File ,\nSaturation Smoothness ,\nSaturation Shift ,\nScale CMYK ,\nScale 2 ,\nScale 1 ,\nScalar ,\nScaling XY-Axis ,\nSecond Radius ,\nSecond Color ,\nSecant ,\nSeamless Turbulence ,\nSecondary Gamma ,\nSecondary Factor ,\nSecondary Color ,\nSecond Size ,\nScr ,\nScience Fiction ,\nScanlines ,\nScaling Y-Axis ,\nSeamless Deco ,\nSeamcarve ,\nSea ,\nScreen Border ,\nRed Chroma Smoothness ,\nRed Chroma Shift ,\nRed Chroma Factor ,\nRed Blue Yellow ,\nRed Dream 01 ,\nRed Day 01 ,\nRed Color ,\nRed Chrominance ,\nRecursions Flocon / Snowflake ,\nRecursion Depth ,\nRectangle ,\nRecover Shadows ,\nRed Afternoon 01 ,\nRed - Green - Blue - Alpha ,\nRed - Green - Blue ,\nRecursive Median ,\nRed Factor ,\nReeve 38 ,\nReduce Redness ,\nReduce RAM ,\nReduce Noise ,\nRefraction ,\nReflection ,\nReference Angle (deg.) ,\nReference ,\nRed Wavelength ,\nRed Shift ,\nRed Rotations ,\nRed Level ,\nReds Oranges Yellows ,\nReds ,\nRed-Green ,\nRed-Eye Attenuation ,\nRecover Highlights ,\nRandom [non-Transparent] ,\nRandom Shade Stripes ,\nRandom Pattern ,\nRandom Colors ,\nRandomness ,\nRandomized ,\nRandomize Seed ,\nRandomize ,\nRainbow ,\nRain & Snow ,\nRadius [Manual] ,\nRadius / Angle ,\nRandom Color Map ,\nRandom Color Ellipses ,\nRandom Angle ,\nRaindrops ,\nRatios ,\nRcx ,\nRays ,\nRayons Couleurs ABCDEFG ,\nRayons Couleurs ABCDEF ,\nRecover ,\nReconstruct From Previous Frames ,\nRecompose ,\nRebuild From Similar Blocs ,\nRayon Cercle Milieu / Radius Middle Circle ,\nRayon Cercle Extérieur / Radius Outer Circle A (>0 W%) (<0 H%) ,\nRay Length ,\nRaw ,\nRayons Couleurs ABCDE ,\nRayons Couleurs ABCD ,\nRayons Couleurs ABC ,\nRayons Couleurs AB ,\nResolution (px) ,\nResize Image for Optimum Effect ,\nReset View ,\nRescaling ,\nResynthetize Texture [FFT] ,\nResult Type ,\nResult Image ,\nRest 33 ,\nReplace Layer with CLUT ,\nReplace (Sharpest) ,\nReplace ,\nRepeats ,\nReptile ,\nReplacement Color ,\nReplaced Color ,\nReplace With White ,\nResynthetize Texture [Patch-Based] ,\nRetro Fade ,\nRetro Brown 01 ,\nRetro ,\nRetourner Motif / Flip Pattern ,\nReturn Scaling ,\nRetro Yellow 01 ,\nRetro Summer 3 ,\nRetro Magenta 01 ,\nRetouched Image ,\nRetouched Areas Only ,\nRetouch Layer ,\nRetinex ,\nRetouching Style ,\nRetouched and Sharpened Areas ,\nRetouched Image Final ,\nRetouched Image Basic ,\nRepair Scanned Document ,\nRelative Warping ,\nRelative Size ,\nRelative Block Count ,\nRejected Mask ,\nRelief Light ,\nRelief Contrast ,\nRelief Amplitude ,\nRelease Notes ,\nRegularity (%) ,\nRegularity ,\nRegular Grid ,\nRefractive Space ,\nRejected Colors ,\nReject ,\nRegularization Factor ,\nRegularization (%) ,\nRelief Size ,\nRendu ,\nRendering Mode ,\nRender on White Areas ,\nRender on Dark Areas ,\nRendu a Gauche ,\nRendu a Droite ,\nRendu En Haut ,\nRendu En Bas ,\nRemove Tile ,\nRemove Hot Pixels ,\nRemove Artifacts From Micro/Macro Detail ,\nRelief Smoothness ,\nRender Routine for Wiggle Animations ,\nRender Multiple Frames ,\nRemy 24 ,\nRemoved Filters ,\nSource Color #20 ,\nSource Color #2 ,\nSource Color #19 ,\nSource Color #18 ,\nSource Color #24 ,\nSource Color #23 ,\nSource Color #22 ,\nSource Color #21 ,\nSource Color #13 ,\nSource Color #12 ,\nSource Color #11 ,\nSource Color #10 ,\nSource Color #17 ,\nSource Color #16 ,\nSource Color #15 ,\nSource Color #14 ,\nSource Color #3 ,\nSpatial Metric ,\nSpatial Bandwidth ,\nSpan ,\nSpaceship ,\nSpatial Tolerance ,\nSpatial Step ,\nSpatial Sampling ,\nSpatial Regularization ,\nSource Color #7 ,\nSource Color #6 ,\nSource Color #5 ,\nSource Color #4 ,\nSource Y-Tiles ,\nSource X-Tiles ,\nSource Color #9 ,\nSource Color #8 ,\nSource Color #1 ,\nSmoothing Type ,\nSmoothing Style ,\nSmoother Softness ,\nSmoother Sharpness ,\nSobel-X ,\nSnowflake 2 ,\nSnowflake ,\nSmoothness (px) ,\nSmooth [Wavelets] ,\nSmooth [Total Variation] ,\nSmooth [Thin Brush] ,\nSmooth [Skin] ,\nSmoother Edge Protection ,\nSmoothen Background Reconstruction ,\nSmooth-Artistry ,\nSmooth [Wiener] ,\nSobel-Y ,\nSolidify ,\nSolarized Color2 ,\nSolarize Color ,\nSolarize ,\nSource (%) ,\nSorting Criterion ,\nSort Colors ,\nSolve Maze ,\nSoft Glow [Animated] ,\nSoft Glow ,\nSoft Fade ,\nSoft  Light ,\nSoften Guide ,\nSoften All Channels ,\nSoft Warming ,\nSoft Random Shades ,\nSquare 1 ,\nSquare (Inv.) ,\nSpy 29 ,\nSprocket 231 ,\nStabilizer ,\nSquares (Outline) ,\nSquared-Euclidean ,\nSquare 2 ,\nSpread Amount ,\nSpotify ,\nSponge ,\nSplit Type-5 ,\nSpring Morning ,\nSpreading ,\nSpread Noise Amount ,\nSpread Angles ,\nStained Glass ,\nStarting Pattern ,\nStarting Level ,\nStarting Frame ,\nStart of Mid-Tones ,\nStd Angle (deg.) ,\nStationary Frames ,\nStarting Scale (%) ,\nStarting Point ,\nStar: -5*(z^3/3-Z/4)/2 ,\nStandard [No Scan] ,\nStandard Deviation ,\nStandard (256) ,\nStart Frame Number ,\nStart Color ,\nStart Angle ,\nStars (Outline) ,\nSplit Type-4 ,\nSpiderweb-Diamond ,\nSpherize ,\nSpeed ,\nSpecular Light ,\nSpline B2 ,\nSpline B1 ,\nSpiral RGB ,\nSpiral ,\nSpecify Different Output Size ,\nSpecific Saturation ,\nSpecial Effects ,\nSpatial Transition ,\nSpecular Intensity ,\nSpecular Centering ,\nSpecular (%) ,\nSpecify HaldCLUT As ,\nSpline B3 ,\nSplit Details [Gaussian] ,\nSplit Details [Alpha] ,\nSplit Brightness / Colors ,\nSplit Base and Detail Output ,\nSplit Type-3 ,\nSplit Type-2 ,\nSplit Type-1 ,\nSplit Details [Wavelets] ,\nSpline Editor ,\nSpline B6 ,\nSpline B5 ,\nSpline B4 ,\nSplines ,\nSpline Roundness ,\nSpline Max Length (px) ,\nSpline Max Angle (deg) ,\nShift Point ,\nShift Linear Interpolation? ,\nSharpness (%) ,\nSharpest ,\nShininess ,\nShine ,\nShift Y ,\nShift X ,\nSharpen [Unsharp Mask] ,\nSharpen [Tones] ,\nSharpen [Texture] ,\nSharpen [Shock Filters] ,\nSharpening Type ,\nSharpening Layer ,\nSharpened Areas Only ,\nSharpen [Whiten] ,\nShivers ,\nSierpinksi Design ,\nSide by Side ,\nShuffle Pieces ,\nShow Watershed ,\nSigns ,\nSigma 2 ,\nSigma 1 ,\nSierpinski Triangle ,\nShow Both Poles ,\nShort ,\nShopping Cart ,\nShock Waves ,\nShow Grid ,\nShow Frame ,\nShow Fill Ratio? ,\nShow Difference ,\nSharpen [Richardson-Lucy] ,\nShadows Color Intensity ,\nShadows Brightness ,\nShadows Abstraction ,\nShadow Size ,\nShadows Zone ,\nShadows Selection ,\nShadows Lightness ,\nShadows Hue Shift ,\nShading (%) ,\nShadebobs ,\nShade Strength ,\nShade Bobs ,\nShadow Patch ,\nShadow King 39 ,\nShadow Intensity ,\nShadow Contrast ,\nShamoon Abbasi (25) ,\nSharpen [Gradient] ,\nSharpen [Gold-Meinel] ,\nSharpen [Deblur] ,\nSharpen Shades ,\nSharpen [Octave Sharpening] ,\nSharpen [Multiscale] ,\nSharpen [Inverse Diffusion] ,\nSharpen [Hessian] ,\nShapes ,\nShapeism ,\nShape Median0 ,\nShape Median ,\nSharpen Radius ,\nSharpen Object ,\nSharpen Edges Only ,\nSharp Abstract ,\nSmooth Dark ,\nSmooth Crome-Ish ,\nSmooth Colors ,\nSmooth Clear ,\nSmooth Looping ,\nSmooth Light ,\nSmooth Green Orange ,\nSmooth Fade ,\nSmart Contrast ,\nSmart ,\nSmallHD Movie Look (7) ,\nSlow Recovery ,\nSmooth Amount ,\nSmooth Abstract ,\nSmokey ,\nSmart Threshold ,\nSmooth Only ,\nSmooth [NL-Means] ,\nSmooth [Median] ,\nSmooth [Mean-Curvature] ,\nSmooth [IUWT] ,\nSmooth [Selective Gaussian] ,\nSmooth [Perona-Malik] ,\nSmooth [Patch-PCA] ,\nSmooth [Patch-Based] ,\nSmooth [Bilateral] ,\nSmooth [Anisotropic] ,\nSmooth Teal Orange ,\nSmooth Sailing ,\nSmooth [Guided] ,\nSmooth [Geometric-Median] ,\nSmooth [Diffusion] ,\nSmooth [Block PCA] ,\nSlow &#40;Accurate&#41; ,\nSingle Opaque Shapes Over Transp. BG ,\nSingle Layer ,\nSingle Image Stereogram ,\nSingle Custom Depth Map ,\nSize Variance ,\nSix Layers ,\nSinusoidal Water Distortion ,\nSinusoidal Liquid ,\nSimplification ,\nSimple Noise Canvas ,\nSimple Local Contrast ,\nSilver ,\nSingle (Merged) ,\nSine Curve ,\nSin(z) ,\nSimulate Film ,\nSize for Bright Tones ,\nSkip Finest Scales ,\nSkin Tone Protection ,\nSkin Tone Mask ,\nSkin Tone Colors ,\nSlide [Color] (26) ,\nSlice Luminosity ,\nSkip to Use the Mask to Boost ,\nSkip This Step ,\nSize-2 ,\nSize-1 ,\nSize of Frame Numbers (%) ,\nSize for Dark Tones ,\nSkin Mask ,\nSketch ,\nSkeletik ,\nSize-3 ,\nChroma Noise ,\nChroma ,\nChristine Garner: Willow Charcoal ,\nChristine Garner: Sketching Pastel ,\nChrominances Only (CbCr) ,\nChrome 01 ,\nChromaticity From ,\nChromatic Aberrations ,\nChristine Garner: Pencil ,\nChessboard ,\nChemical 168 ,\nCharset ,\nCharcoal ,\nChristine Garner: Dark Coloured Pencil ,\nChristine Garner: Colour Pencil Sepia ,\nChristine Garner: Black Colour Pencil ,\nChick ,\nCinema 2 ,\nCinema ,\nCine Warm ,\nCine Vibrant ,\nCinema Noir ,\nCinema 5 ,\nCinema 4 ,\nCinema 3 ,\nCine Teal Orange 2 ,\nCine Blue ,\nCine Basic ,\nCine BM4k ,\nChrominances Only (ab) ,\nCine Teal Orange 1 ,\nCine Drama ,\nCine Cold ,\nCine Bright ,\nChaotic Tangent ,\nCenter Y ,\nCenter X-Shift ,\nCenter X ,\nCenter Smoothness ,\nCenters Color ,\nCentering / Scale ,\nCentering (%) ,\nCenter Y-Shift ,\nCenter Size ,\nCat ,\nCartoon [Animated] ,\nCartoon ,\nCartesian Transform ,\nCenter Help ,\nCell Size ,\nCategory ,\nCat Pad ,\nChaos Spacetime ,\nChaos Deep-Vibrato ,\nChannels to Layers ,\nChannel Processing ,\nChaotic Hooks Unearthing ,\nChaotic Hooks ,\nChaotic Creation ,\nChaos-Vibrato ,\nChannel #3 ,\nCercle / Circle C ,\nCentral Perspective Outdoor ,\nCentimeter ,\nCenters Radius ,\nChannel #2 ,\nChannel #1 ,\nChalk It Up [Fr] ,\nCercle / Circle D ,\nCinematic (8) ,\nClear Control Points ,\nClean Text ,\nClean ,\nClayton 33 ,\nClip CMYK ,\nClip ,\nCliff ,\nClear Teal Fade ,\nClassic Teal and Orange ,\nClassic Films 01 ,\nClassic Chrome ,\nClarity ,\nCity Dust ,\nClassic Films 05 ,\nClassic Films 04 ,\nClassic Films 03 ,\nClassic Films 02 ,\nCold Simplicity 2 ,\nCold Ice ,\nCold Clear Blue 1 ,\nCold Clear Blue ,\nColor 3 (Bottom/Left Corner) ,\nColor 2 (Up/Right Corner) ,\nColor 1 (Up/Left Corner) ,\nColor (rich) ,\nCoffee 44 ,\nClouds ,\nClosing - Opening ,\nCloseup ,\nClip RGB ,\nCoefficients ,\nCobi 3 ,\nCoarse to Fine ,\nClouseau 54 ,\nCity 7 ,\nCinematic-01 ,\nCinematic for Flog ,\nCinematic Travel (29) ,\nCinematic Mexico ,\nCinematic-10 ,\nCinematic-1 ,\nCinematic-03 ,\nCinematic-02 ,\nCinematic Lady Bird ,\nCinematic 04 ,\nCinematic 03 ,\nCinematic 02 ,\nCinematic 01 ,\nCinematic Forest ,\nCinematic 07 ,\nCinematic 06 ,\nCinematic 05 ,\nCircle to Square ,\nCircle Transform ,\nCircle Art ,\nCircle Abstraction ,\nCity ,\nCircles 2 ,\nCircles 1 ,\nCircles (Outline) ,\nCircle (Inv.) ,\nCinematic-5 ,\nCinematic-4 ,\nCinematic-3 ,\nCinematic-2 ,\nCinematic-9 ,\nCinematic-8 ,\nCinematic-7 ,\nCinematic-6 ,\nCarnivorous Plant ,\nBlur [Gaussian] ,\nBlur [Depth-Of-Field] ,\nBlur [Bloom] ,\nBlur [Angular] ,\nBlur [Radial] ,\nBlur [Multidirectional] ,\nBlur [Linear] ,\nBlur [Glow] ,\nBlur Strength ,\nBlur Frame ,\nBlur Factor ,\nBlur Dodge and Burn Layer ,\nBlur Amount ,\nBlur Standard Deviation ,\nBlur Shade ,\nBlur Precision ,\nBlur Percentage ,\nBorder Outline ,\nBorder Opacity ,\nBorder Color ,\nBoost-Fade ,\nBottles ,\nBorder Width ,\nBorder Thickness (%) ,\nBorder Smoothness ,\nBoost Stroke ,\nBob Ford ,\nBoats ,\nBlur the Mask ,\nBlur [Splinter] ,\nBoost Smooth ,\nBoost Chromaticity ,\nBoost ,\nBokeh ,\nBlur Alpha ,\nBlockism ,\nBloc Size (%) ,\nBlobs Editor ,\nBlob2 ,\nBlue Chroma Smoothness ,\nBlue Chroma Shift ,\nBlue Chroma Factor ,\nBloom ,\nBlob Size ,\nBlob 7 Color ,\nBlob 7 ,\nBlob 6 Color ,\nBlob 6 ,\nBlob 9 Color ,\nBlob 9 ,\nBlob 8 Color ,\nBlob 8 ,\nBlue Shift ,\nBlue Shadows 01 ,\nBlue Screen Mode ,\nBlue Rotations ,\nBlues ,\nBlue-Green ,\nBlue Wavelength ,\nBlue Steel ,\nBlue Mono ,\nBlue Dark ,\nBlue Color ,\nBlue Cold Fade ,\nBlue Chrominance ,\nBlue Level ,\nBlue Ice ,\nBlue House ,\nBlue Factor ,\nBottom Size ,\nCFB-[cfb] ,\nCFA-[cfa] ,\nC-Line ,\nByers 11 ,\nCMY[Key] ,\nCMYK Tone ,\nCLUT from After - Before Layers ,\nCLUT Opacity ,\nBy Value ,\nBy Iteration ,\nBy Green Component ,\nBy Custom Expression ,\nBy Blue Component ,\nBy Red Component ,\nBy Red Chrominance ,\nBy Luminance ,\nBy Lightness ,\nCanvas Darkness ,\nCanvas Color ,\nCanvas Brightness ,\nCandle Light ,\nCaribe ,\nCard Suits ,\nCar ,\nCanvas Texture ,\nCanal Alpha ,\nCamera Motion Only ,\nC[Magenta]YK ,\nCRT Sub-Pixels ,\nCM[Yellow]K ,\nCamouflage ,\nCameraman ,\nCamera Y ,\nCamera X ,\nBy Blue Chrominance ,\nBreaks ,\nBraque: The Mandola ,\nBraque: Little Bay at La Ciotat ,\nBraque: Landscape near Antwerp ,\nBright Green 01 ,\nBright Green ,\nBright ,\nBrighness ,\nBox Fitting ,\nBottom-Right Vertex (%) ,\nBottom-Right ,\nBottom-Left Vertex (%) ,\nBottom-Left ,\nBourbon 64 ,\nBoundary Conditions ,\nBoundaries (%) ,\nBouncing Balls ,\nBuilt-in Gray ,\nBrushify ,\nBrush Diameter ,\nBruit / Noise ,\nButterfly ,\nBurn Strength ,\nBurn Blur ,\nBump Factor ,\nBrownish ,\nBright Warm ,\nBright Teal Orange ,\nBright Pixels ,\nBright Length ,\nBrown Mobster ,\nBrown BM ,\nBronze ,\nBristle Size ,\nCut & Normalize ,\nCustomize CLUT ,\nCustom Transform ,\nCustom Style (Top Layer) ,\nCyan Color ,\nCutout ,\nCut Low ,\nCut High ,\nCustom Style (Bottom Layer) ,\nCustom Dictionary ,\nCustom Depth Maps Stream ,\nCustom Depth Correction ,\nCustom D-Y-[vy] ,\nCustom Layers ,\nCustom Filter Code ,\nCustom E-Y-[vy] ,\nCustom E-X-[vx] ,\nDCP Dehaze ,\nDCCI2x ,\nD and O 1 ,\nDéformation 2 ,\nDark Boost ,\nDark Blues in Sunlight ,\nDark ,\nDamping per Octave ,\nDéformation 1 ,\nCycle Layers ,\nCyan Smoothness ,\nCyan Shift ,\nCyan Factor ,\nDéformation ,\nDécalage Ombre Y / Shadow Offset Y ,\nDécalage Ombre X / Shadow Offset X ,\nCylinder ,\nCustom D-X-[vx] ,\nCubic Unearthing ,\nCube (256) ,\nCrystal Background ,\nCrystal ,\nCubism on Color Abstraction ,\nCubism ,\nCubicle 99 ,\nCubic-Diamond Chaos ,\nCrushin ,\nCross-Hatch Amount ,\nCross Process CP 6 ,\nCross Process CP 4 ,\nCross Process CP 3 ,\nCrosshair ,\nCrosses 2 ,\nCrosses 1 ,\nCrossed ,\nCustom C-X-[vx] ,\nCustom B-Y-[vy] ,\nCustom B-X-[vx] ,\nCustom A-Y-[vy] ,\nCustom Correction Map ,\nCustom Code [Local] ,\nCustom Code [Global] ,\nCustom C-Y-[vy] ,\nCustom A-X-[vx] ,\nCurve Length ,\nCurve Angle ,\nCurve Amount ,\nCupid ,\nCurves Previously Defined ,\nCurves ,\nCurved Stroke ,\nCurved ,\nDark Green 02 ,\nDepth Map Construction ,\nDepth Map ,\nDepth Fade Out Frames ,\nDepth Fade In Frames ,\nDepth-Of-Field Type ,\nDepth Maps Only ,\nDepth Map Reconstruction ,\nDepth Map Only ,\nDense ,\nDenim [bruit/noise] ,\nDenim Texture ,\nDelicatessen ,\nDelaunay: Windows Open Simultaneously ,\nDenoise Smooth Alt ,\nDenoise Smooth ,\nDenoise Simple 40 ,\nDenoise ,\nDetail Reconstruction Strength ,\nDetail Reconstruction Smoothness ,\nDetail Reconstruction Detection ,\nDetail Level ,\nDetails (%) ,\nDetail Strength ,\nDetail Scale ,\nDetail Reconstruction Style ,\nDestination Y-Tiles ,\nDescent Method ,\nDesaturate Norm ,\nDesaturate (%) ,\nDeriche ,\nDestination X-Tiles ,\nDestination (%) ,\nDesert Gold 37 ,\nDescreen ,\nDelaunay: Portrait De Metzinger ,\nDay4Nite ,\nDay for Night ,\nDavid ,\nDate 39 ,\nDecompose Channels ,\nDecompose ,\nDecagon ,\nDe-Anaglyph ,\nDark Sky ,\nDark Motive ,\nDark Man X ,\nDark Length ,\nDark Green 1 ,\nDark Screen ,\nDark Place 01 ,\nDark Pixels ,\nDark Orange Teal ,\nDefects Size ,\nDefects Density ,\nDefects Contrast ,\nDefault (Circle) ,\nDeinterlace2x ,\nDeinterlace ,\nDeform ,\nDefects Smoothness ,\nDeep Warm Fade ,\nDeep Dark Warm ,\nDeep Blue ,\nDeep ,\nDecoration ,\nDeep Teal Fade ,\nDeep Skin Tones 3 ,\nDeep Skin Tones 2 ,\nDeep High Contrast ,\nCross Process CP 18 ,\nColorize [with Colormap] ,\nColorize [Photographs] ,\nColorize [Interactive] ,\nColorize Mode ,\nColors Only (1 Layer) ,\nColors Only ,\nColormap Type ,\nColorized Image (1 Layer) ,\nColorize Lineart [Smart Coloring] ,\nColorful 0209 ,\nColorful ,\nColored on Transparent ,\nColored on Black ,\nColorize Lineart [Propagation] ,\nColorize Lineart [Auto-Fill] ,\nColoring ,\nColorful Blobs ,\nComix Colors ,\nComic Style ,\nComicbook ,\nColumn by Column ,\nCompression Blur ,\nCompress Highlights ,\nComposed Layers ,\nComponents ,\nColours ,\nColour Channels ,\nColour ,\nColors to Layers ,\nColors to Black or White ,\nColour Space Mode ,\nColour Smoothing ,\nColour Model ,\nColour Generation Seed ,\nColored Regions ,\nColor Highlights ,\nColor Green-Magenta ,\nColor Gamma ,\nColor Effect Mode ,\nColor Median ,\nColor Mask [Interactive] ,\nColor Mask ,\nColor Image ,\nColor Channel  Smoothing ,\nColor Angle ,\nColor Abstraction Paint ,\nColor Abstraction Opacity ,\nColor 4 (Bottom/Right Corner) ,\nColor Blue-Yellow ,\nColor Blindness ,\nColor Blending ,\nColor Basis ,\nColored Geometry ,\nColored Edges ,\nColorburn ,\nColorbase ,\nColored Pencils ,\nColored Outline ,\nColored Lineart ,\nColored Grain ,\nColor Variation [Random -1] ,\nColor Presets ,\nColor Overall Effect ,\nColor Negative ,\nColor Midtones ,\nColor Spots + Lineart ,\nColor Shadows ,\nColor Shading (%) ,\nColor Rendering ,\nCompression Filter ,\nCouleur / Color D ,\nCouleur / Color C ,\nCouleur / Color B ,\nCouleur / Color A ,\nCouleur Denim ,\nCouleur / Color G ,\nCouleur / Color F ,\nCouleur / Color E ,\nCouleur / Color ,\nCopper ,\nCool / Warm ,\nCool (256) ,\nConvolve ,\nCosinusoidal Liquid ,\nCos(z) ,\nCorrelated Channels ,\nCorner Brightness ,\nCrop (%) ,\nCriterion ,\nCrisp Warm ,\nCrisp Romance ,\nCross Process CP 16 ,\nCross Process CP 15 ,\nCross Process CP 14 ,\nCross Process CP 130 ,\nCrip Winter ,\nCourbure Ombre / Curvature Shadow ,\nCounter Clockwise ,\nCouleurs B ,\nCouleurs A ,\nCreative Pack (33) ,\nCrease ,\nCracks ,\nCourse 4 ,\nControl Point 6 ,\nConstruction Material Texture ,\nConstraint Radius ,\nConstrained Sharpen ,\nConstrain Values ,\nContour Detection (%) ,\nContour Coherence ,\nContour Chaos ,\nContinuous Droste ,\nConstrain Image Size ,\nConformal Maps ,\nConflict 01 ,\nCone ,\nComputation Mode ,\nConnectors Variability ,\nConnectors Centering ,\nConnect-Four ,\nConical Start at 0? ,\nControl Point 1 ,\nContributors ,\nContrasty Green ,\nContrasty Afternoon ,\nControl Point 5 ,\nControl Point 4 ,\nControl Point 3 ,\nControl Point 2 ,\nContrast(%) ,\nContours + Flocon/Snowflake ,\nContour Threshold (%) ,\nContour Precision ,\nContour Normalization ,\nContrast with Highlights Protection ,\nContrast Swiss Mask ,\nContrast Smoothness ,\nContrail 35 ,\nBlob 5 Color ,\n50. Activate Relief Processing ,\n5. Octaves ,\n5.  Edge Threshold ,\n4th Tone ,\n54. Blending Mode ,\n53. Smoothness ,\n52. Depth (%) ,\n51. Angle ,\n4th ,\n45. HP Order Cube Root ,\n45 Deg. ,\n44. HP Frequency Power ,\n43. LP Resonance ,\n49. Makeup Gain ,\n48. Absolute ,\n47. Colour Space ,\n46. HP Resonance ,\n7.  Blur ,\n6th Tone ,\n6th ,\n67.5 Deg. ,\n7th Tone ,\n7th ,\n7Drk21 ,\n7. Mode ,\n64px ,\n5th Tone ,\n5th ,\n5:4 ,\n55. Blending Opacity (%) ,\n64 Keypoints ,\n64 (Faster) ,\n6. Damping per Octave ,\n6.  Smoothness ,\n42. LP Order Cube Root ,\n3D Image Type ,\n3D Image Object [Animated] ,\n3D Image Object ,\n3D Extrusion [Animated] ,\n3D Reflection ,\n3D Random Objects ,\n3D Metaballs ,\n3D Lathing ,\n3D Extrusion ,\n3D CLUT (Precise) ,\n3D CLUT (Fast) ,\n3D Blocks ,\n3D Angles ,\n3D Elevation [Animated] ,\n3D Elevation ,\n3D Conversion ,\n3D Colored Object ,\n4 Grays ,\n4 Colors ,\n3rd Y-Coord ,\n3rd X-Coord ,\n41. LP Frequency Power ,\n40. Create Copy? ,\n4. Radius ,\n4.  Segmentation [No Alpha Channel] ,\n3rd Tone ,\n3D Tiles ,\n3D Text Pointcloud ,\n3D Starfield ,\n3D Rubber Object ,\n3rd Parameter ,\n3rd ,\n3D Waves ,\n3D Video Conversion ,\n8 Colors ,\nAction #24 ,\nAction #23 ,\nAction #22 ,\nAction #21 ,\nAction #6 ,\nAction #5 ,\nAction #4 ,\nAction #3 ,\nAction #20 ,\nAction #16 ,\nAction #15 ,\nAction #14 ,\nAction #13 ,\nAction #2 ,\nAction #19 ,\nAction #18 ,\nAction #17 ,\nActivate Second Direction ,\nActivate Pink Elephants ,\nActivate Overload Functions ,\nActivate Mirror ,\nActivate Slice 3 ,\nActivate Slice 2 ,\nActivate Slice 1 ,\nActivate Shakes ,\nActivate Lizards ,\nAction Magenta 01 ,\nAction #9 ,\nAction #8 ,\nAction #7 ,\nActivate Grid? ,\nActivate Custom Filter ,\nActivate Color Enhancement ,\nAction Red 01 ,\nAction #12 ,\nA-Color Smoothness ,\nA-Color Shift ,\nA-Color Factor ,\n9th Color ,\nA4 / 150 PPI ,\nA4 / 100 PPI (Recommended) ,\nA-Value ,\nA-Component ,\n9th ,\n8.  Quadtree Pixelisation [No Alpha Channel] ,\n8-10. Color Balance ,\n8 Keypoints (RGB Corners) ,\n8 Grays ,\n9.  Quadtree Min Precision ,\n8th Tone ,\n8th ,\n8px ,\nAcrylic Earthing ,\nAcros+Ye ,\nAcros+R ,\nAcros+G ,\nAction #11 ,\nAction #10 ,\nAction #1 ,\nAcrylica ,\nAcros ,\nAbsolute Brightness ,\nAbigail Gonzalez (21) ,\nA4 / 75 PPI ,\nA4 / 300 PPI ,\nAchromatopsia ,\nAchromatomaly ,\nAccentuation Nuances / Sharpen Shades ,\nAcceleration ,\n3:2 ,\n15. Maximum Noise ,\n15. Colour Space ,\n15. Channel 1 ,\n14th ,\n16. Channel 2 ,\n16 Grays ,\n16 Colors ,\n15th ,\n14. Value Action ,\n12th ,\n128px ,\n125 Keypoints ,\n12. Noise Type ,\n14. Minimum Noise ,\n13th ,\n13. Noise Type ,\n13. Channel(s) ,\n1st Additional Palette (.Gpl) ,\n1st ,\n1:1 ,\n19. Warp Offset ,\n1st Variance ,\n1st Tone ,\n1st Text ,\n1st Parameter ,\n19. Desaturation (%) ,\n16th ,\n16px ,\n16:10 ,\n16. Noise Channel(s) ,\n18. Warp Intensity ,\n18. Normalise ,\n17. Warp Iterations ,\n17. Channel 3 ,\n12.  Quadtree Max Homogeneity ,\n*Vivid Screen* ,\n*Vivid Edges* ,\n*Graphix Colors ,\n*Dark Screen* ,\n-1. Value Action ,\n- NON / NO - ,\n+90 Deg. ,\n+180 Deg. ,\n*Dark Edges* ,\n× 3 ,\n× 2 ,\n× 1.5 ,\n× 1.25 ,\n*Comix Colors* ,\n*Colors Doping* ,\n*Colors Doping ,\n♥ Support Us ! ♥ ,\n11.  Quadtree Min Homogeneity ,\n10th Color ,\n10th ,\n10.  Quadtree Max Precision ,\n12 Grays ,\n12 Colors ,\n11th ,\n11. Amplitude ,\n1.85:1 ,\n.Bmp ,\n-4. Normalise ,\n-3. Normalisation Channel(s) ,\n-2. Overall Channel(s) ,\n1.  Plasma Texture [Discards Input Image] ,\n1 Levels ,\n0.  Recompute ,\n.Png ,\n1st X-Coord ,\n3.  Plasma Alpha Channel ,\n3 Mix ,\n3 Grays ,\n3 Colors ,\n31. Y-Factor ,\n31. Maximum Hue ,\n30. X-Factor ,\n30. Minimum Hue ,\n2xy-Axes ,\n2nd Tone ,\n2nd Text ,\n2nd Parameter ,\n2nd Additional Palette (.Gpl) ,\n2x Type ,\n2nd Y-Coord ,\n2nd X-Coord ,\n2nd Variance ,\n37. Channel(s) ,\n36. Hue Offset ,\n36. Boundary ,\n35. Maximum Value ,\n39. Activate Butterworth Bandpass Processing ,\n38. Value Offset ,\n38. Blur Original ,\n37. Saturation Offset ,\n35. Interpolation ,\n33. Maximum Saturation ,\n32px ,\n32. X-Offset ,\n32. Minimum Saturation ,\n343 Keypoints ,\n34. Y-Offset ,\n34. Minimum Value ,\n34. Correlated Channels ,\n2nd ,\n22. Correlated Channels ,\n21:9 ,\n216 Keypoints ,\n21. Self-Blending ,\n23. Self-Blending V. Original Blending ,\n23. Boundary ,\n22.5 Deg. ,\n22. Self-Blending Opacity (%) ,\n21. Scale to Height ,\n2 Noise ,\n2 Grays ,\n2 Colors ,\n1st Y-Coord ,\n20. Scale to Width ,\n2.35:1 ,\n2.  Plasma Scale ,\n2-Strip Process ,\n29. Negate? ,\n28. Hue Offset ,\n28. Equalize? ,\n27. Number #2 ,\n2XY-Axes ,\n2XY Mirror ,\n2:1 ,\n29. Normalise ,\n27. Gamma Offset ,\n25. Value Action ,\n25. Random Negation ,\n24. Warp Channel(s) ,\n24. Self-Blend V. Original Opacity (%) ,\n27 Keypoints ,\n26. Random Negation Channel(s) ,\n26. Number #1 ,\n256px ,\nBalloons ,\nBall ,\nBalance(%) ,\nBalance SRGB ,\nBarbara ,\nBandpass ,\nBanding Denoise ,\nBalls ,\nBackground Point (%) ,\nBC Darkum ,\nB-Component ,\nB-Color Smoothness ,\nB-Color Shift ,\nBackground Intensity ,\nBackground (%) ,\nBW but Yellow ,\nBG Textured ,\nBeach Faded Analog ,\nBeach Aqua Orange ,\nBayer Reconstruction ,\nBayer Filter ,\nBerlin Sky ,\nBerat (10) ,\nBelow ,\nBehind ,\nBayer ,\nBars ,\nBarnsley Fern ,\nBarbouillage Paint Daub ,\nBarbed Wire ,\nBatch Processing ,\nBasic Adjustments ,\nBase Thickness (%) ,\nBase Reference Dimension ,\nB-Color Factor ,\nAverage 5x5 ,\nAverage 3x3 ,\nAvalanche ,\nAva 614 ,\nAverage RGB ,\nAverage Color ,\nAverage 9x9 ,\nAverage 7x7 ,\nAutumn ,\nAutocrop Output Layers ,\nAuto-Threshold ,\nAuto-Set Periodicity ,\nAuto-Reduce Number of Frames ,\nAutomatic [Scan All Hues] ,\nAutomatic Upscale for Optimum Results ,\nAutomatic Color Balance ,\nAutomatic & Contrast Mask ,\nB&W Pencil [Animated] ,\nB&W ,\nAzrael 93 ,\nAzimuth ,\nB-Boyz 2 ,\nB&W Stencil [Animated] ,\nB&W Stencil ,\nB&W Photograph ,\nAxis ,\nAvg Branching ,\nAvg / Max Weight ,\nAvg ,\nAverage Smoothness ,\nAvg Thickness Factor (%) ,\nAvg Right Angle (deg.) ,\nAvg Length Factor (%) ,\nAvg Left Angle (deg.) ,\nBest Match ,\nBlend [Fade] ,\nBlend [Edges] ,\nBlend [Average All] ,\nBlend Threshold ,\nBlending Mode ,\nBlend [Standard] ,\nBlend [Seamless] ,\nBlend [Median] ,\nBlend Scales ,\nBleech Bypass Green ,\nBleach Bypass 4 ,\nBleach Bypass 3 ,\nBleach Bypass 2 ,\nBlend Decay ,\nBlend All Layers ,\nBlend ,\nBleech Bypass Yellow 01 ,\nBlob 3 ,\nBlob 2 Color ,\nBlob 12 Color ,\nBlob 12 ,\nBlob 5 ,\nBlob 4 Color ,\nBlob 4 ,\nBlob 3 Color ,\nBlob 11 Color ,\nBlob 1 ,\nBlindness Type ,\nBlending Size ,\nBlending Opacity (%) ,\nBlob 11 ,\nBlob 10 Color ,\nBlob 10 ,\nBlob 1 Color ,\nBleach Bypass 1 ,\nBlack & White 03 ,\nBlack & White 02 ,\nBlack & White 01 ,\nBlack & White (25) ,\nBlack & White-1 ,\nBlack & White 06 ,\nBlack & White 05 ,\nBlack & White 04 ,\nBit Masking (Start) ,\nBidirectional [Smooth] ,\nBidirectional [Sharp] ,\nBias ,\nBi-Directional ,\nBit Masking (End) ,\nBinary Digits ,\nBinary ,\nBilateral Radius ,\nBlack Star ,\nBlack Level ,\nBlack Dices ,\nBlack Crayon Graffiti ,\nBleach Bypass ,\nBlade Runner ,\nBlack to White ,\nBlack on Transparent ,\nBlack & White-9 ,\nBlack & White-4 ,\nBlack & White-3 ,\nBlack & White-2 ,\nBlack & White-10 ,\nBlack & White-8 ,\nBlack & White-7 ,\nBlack & White-6 ,\nBlack & White-5 ,\nAuto-Clean Bottom Color Layer ,\nAlternating Chaos 2 ,\nAlternating Chaos 1 [Legacy] ,\nAlternating Chaos 1 ,\nAlternating Chaos 0 ,\nAlternating Chaos 4 ,\nAlternating Chaos 3 [Legacy] ,\nAlternating Chaos 3 ,\nAlternating Chaos 2 [Legacy] ,\nAlso Match Gradients ,\nAll Round ,\nAll Layers and Masks ,\nAll 90&deg; Rotations ,\nAll 45&deg; Rotations ,\nAlpha Mode ,\nAllow Self Intersections ,\nAll but Reference Color ,\nAll XY-Flips ,\nAmstragram+ ,\nAmstragram ,\nAmplitude / Angle ,\nAmount (%) ,\nAnalog Film 1 ,\nAnaglyph: Red/Cyan ,\nAnaglyph Reconstruction ,\nAnaglypgh Green/magenta Optimized ,\nAmbient Lightness ,\nAlternating Custom Formula Level 1 ,\nAlternating Chaos 5 [Legacy] ,\nAlternating Chaos 5 ,\nAlternating Chaos 4 [Legacy] ,\nAmbient (%) ,\nAlternative Custom Formula Level 3 ,\nAlternating Custom Formula Level 4 ,\nAlternating Custom Formula Level 2 ,\nAlignment Type ,\nAdd Image Label ,\nAdd Grain ,\nAdd Comment Area in HTML Page ,\nAdd Colors ,\nAdditional Outline ,\nAdditional Duplicates Count ,\nAdd as a New Layer ,\nAdd User-Defined Constraints (Interactive) ,\nAdd Color Background ,\nAdapt Luminance ,\nActiver Symmetrizoscope ,\nActiver Couleurs Formes ,\nActivate Slice 4 ,\nAdd Chalk Highlights ,\nAdd Alpha Channels to Detail Scale Layers ,\nAdd 1px Outline ,\nAdaptive ,\nAlien Green ,\nAlgorithm ,\nAlex Jordan (81) ,\nAggressive Highlights Recovery 5 ,\nAligned ,\nAlign Layers ,\nAlign Image Streams ,\nAlien Rasta ,\nAggresive ,\nAgfa APX 100 ,\nAdventure 1453 ,\nAdjust Background Reconstruction ,\nAdditive ,\nAgfa Vista 200 ,\nAgfa Ultra Color 100 ,\nAgfa Precisa 100 ,\nAgfa APX 25 ,\nAnalogFX - Anno 1870 Color ,\nArray [Regular] ,\nArray [Random] ,\nArray [Random Colors] ,\nArray [Mirrored] ,\nArtistic Hard ,\nArtistic  Modern ,\nArrows (Outline) ,\nArrows ,\nArray [Faded] ,\nArabica 12 ,\nAqua and Orange Dark ,\nAqua ,\nApply Transformation From ,\nAreas Smoothness ,\nAreas Light Adjustment ,\nArea Smoothness ,\nArctangent ,\nAurora ,\nAtomic Pink ,\nAsymphological Vibrato ,\nAsymphological Basic 2 ,\nAuto Set Hue Inverse (Hue Slider Is Disabled) ,\nAuto Reduce Level (Level Slider Is Disabled) ,\nAuto Crop ,\nAustralia ,\nAsymphological Basic ,\nAspect ,\nAscii Art ,\nAscii ,\nArtistic Round ,\nAsymphochaos ,\nAstia ,\nAssociated Color ,\nAsplenium Adiantum-Nigrum ,\nApply Skin Tone Mask ,\nAngle Décalage Des Couleurs A / Offset ,\nAngle / Size ,\nAngle (deg.) ,\nAngle (deg) ,\nAngle Edge Behaviour ,\nAngle Dispersion ,\nAngle Décalage Image Contour ,\nAngle Décalage Des Couleurs B / Offset ,\nAngle (%) ,\nAnalogFX - Sepia Color ,\nAnalogFX - Old Style III ,\nAnalogFX - Old Style II ,\nAnalogFX - Old Style I ,\nAnalysis Smoothness ,\nAnalysis Scale ,\nAnalogFX - Soft Sepia II ,\nAnalogFX - Soft Sepia I ,\nApply Adjustments On ,\nApples ,\nApocalypse This Very Moment ,\nAntisymmetry ,\nApply Relief? ,\nApply Mask ,\nApply External CLUT ,\nApply Color Balance ,\nAnnular Steiner Chain Round Tile ,\nAngoisse Anguish ,\nAngle of Main Nebulous Surface ,\nAngle of Disturbance Surface ,\nAngle Range (deg.) ,\nAnisotropy (%) ,\nAnime ,\nAngular Tiles ,\nAngular Step (°) ,\nK-2 ,\nK-1 ,\nK Variable ,\nK Mode ,\nKH 10 ,\nKH 1 ,\nK-Tone Vintage Kodachrome ,\nK-Factor ,\nJust Peachy ,\nJPEG Smooth ,\nJPEG Artefacts ,\nJ.T. Semple (14) ,\nJ. Wick 21 ,\nJulia ,\nJet (256) ,\nJawbreaker ,\nJapanese Maple Leaf ,\nKandinsky: Squares with Concentric Circles ,\nKaleidoscope [Symmetry] ,\nKaleidoscope [Reptorian-Polar] ,\nKaleidoscope [Polar] ,\nKeep Base Layer as Input Background ,\nKeep Aspect Ratio ,\nKeep ,\nKandinsky: Yellow-Red-Blue ,\nKaleidoscope [Blended] ,\nKH 5 ,\nKH 4 ,\nKH 3 ,\nKH 2 ,\nKH 9 ,\nKH 8 ,\nKH 7 ,\nKH 6 ,\nIuwt ,\nInstant [Consumer] (54) ,\nInside-Out ,\nInside Color ,\nInsert New CLUT Layer ,\nIntensity of Purple Fringe ,\nIntarsia ,\nInstant-C ,\nInstant [Pro] (68) ,\nInput Transparency ,\nInpaint [Transport-Diffusion] ,\nInpaint [Patch-Based] ,\nInpaint [Multi-Scale] ,\nInpaint [Morphological] ,\nInput Layers ,\nInput Guide Color ,\nInput Frame Files Name ,\nInput Folder ,\nInvert Luminance ,\nInvert Image Colors ,\nInvert Embossing? ,\nInvert Canvas Colors ,\nIteration ,\nIsophotes ,\nInward ,\nInvert Mask ,\nInvert Blur ,\nInverse Radius ,\nInverse Depth Map ,\nInterpolation Type ,\nInterp ,\nInvert Background / Foreground ,\nInversions ,\nInversion Couleurs / Invert Colors ,\nInverse Transform ,\nKeep Borders Square ,\nKodak Portra 160 + ,\nKodak Portra 160 ,\nKodak Kodachrome 64 ,\nKodak Kodachrome 25 ,\nKodak Portra 160 NC ++ ,\nKodak Portra 160 NC + ,\nKodak Portra 160 - ,\nKodak Portra 160 ++ ,\nKodak Kodachrome 200 ,\nKodak Elite Chrome 400 ,\nKodak Elite Chrome 200 ,\nKodak Elite 100 XPRO ,\nKodak Ektar 100 ,\nKodak HIE (HS Infra) ,\nKodak Elite ExtraColor 100 ,\nKodak Elite Color 400 ,\nKodak Elite Color 200 ,\nKodak Portra 400 UC ,\nKodak Portra 400 NC - ,\nKodak Portra 400 NC ++ ,\nKodak Portra 400 NC + ,\nKodak Portra 400 VC ,\nKodak Portra 400 UC - ,\nKodak Portra 400 UC ++ ,\nKodak Portra 400 UC + ,\nKodak Portra 400 NC ,\nKodak Portra 160 VC - ,\nKodak Portra 160 VC ++ ,\nKodak Portra 160 VC + ,\nKodak Portra 160 NC - ,\nKodak Portra 400 - ,\nKodak Portra 400 ++ ,\nKodak Portra 400 + ,\nKodak Portra 400 ,\nKodak Ektachrome 100 VS ,\nKey Factor ,\nKernel Type ,\nKernel Multiplier ,\nKeftales ,\nKeypoint Influence (%) ,\nKey Smoothness ,\nKey Shift ,\nKey Frame Rate ,\nKeep Transparency in Output ,\nKeep Detail Layer Separate ,\nKeep Detail ,\nKeep Colors ,\nKeep Color Channels ,\nKeep Tiles Square ,\nKeep Original Layer ,\nKeep Original Image Size ,\nKeep Layers Separate ,\nKodak 2393 (Constlclip) ,\nKodak 2383 (Cuspclip) ,\nKodak 2383 (Constlmap) ,\nKodak 2383 (Constlclip) ,\nKodak E-100 GX Ektachrome 100 ,\nKodak BW 400 CN ,\nKodak 2393 (Cuspclip) ,\nKodak 2393 (Constlmap) ,\nKodak 1-8 ,\nKlee: In the Style of Kairouan ,\nKlee: Death and Fire ,\nKitaoka Spin Illusion ,\nKillstreak ,\nKlimt: The Kiss ,\nKlee: Red Waistcoat ,\nKlee: Polyphony 2 ,\nKlee: Oriental Pleasure Garden Anagoria ,\nInpaint [Holes] ,\nHighlights Protection ,\nHighlights Lightness ,\nHighlights Hue ,\nHighlights Crossover Point ,\nHilutite ,\nHighres CLUT ,\nHighlights Zone ,\nHighlights Selection ,\nHighlights Color Intensity ,\nHigher Mask Threshold (%) ,\nHigh Value ,\nHigh Speed ,\nHigh Scale ,\nHighlights Brightness ,\nHighlights Abstraction ,\nHighlight Bloom ,\nHighlight (%) ,\nHorizontal Array ,\nHorizon Leveling (deg) ,\nHorisontal Length ,\nHope Poster ,\nHorizontal Tiles ,\nHorizontal Stripes ,\nHorizontal Length ,\nHorizontal Blur ,\nHong Kong ,\nHitman ,\nHistogram Transfer ,\nHistogram Analysis ,\nHistogram ,\nHoney Light ,\nHomogeneity ,\nHoles Probability (Type-5) (%) ,\nHokusai: The Great Wave ,\nHigh Quality ,\nHalftone Shapes ,\nHalftone ,\nHalf Image-Diagonal(%) ,\nHalf Image-Diagonal (%) ,\nHard ,\nHappyness 133 ,\nHanoi Tower ,\nHallowen Dark ,\nHaldCLUT Filename ,\nHSV Select ,\nHSV (256) ,\nHSL [all] ,\nHSL Adjustment ,\nHaldCLUT ,\nHair Locks ,\nHackmanite ,\nHSV [all] ,\nHexagonal ,\nHeulandite ,\nHerderite ,\nHelios ,\nHigh Key ,\nHigh Frequency Layer ,\nHigh Frequency ,\nHiddenite ,\nHedcut (Experimental) ,\nHarsh Day ,\nHard Teal Orange ,\nHard Sketch ,\nHard Dark ,\nHeavy (Faster) ,\nHeavy ,\nHearts (Outline) ,\nHarsh Sunset ,\nHorizontal Warp Only ,\nImpulses 9x9 ,\nImpulses 7x7 ,\nImpulses 5x5 ,\nImport RGB-565 File ,\nIncreaseChroma1 ,\nInclude Opacity Layer ,\nInch ,\nInAvision (15) ,\nImport Data ,\nImage + Colors (2 Layers) ,\nImage + Background ,\nIllustration Look ,\nIllumination ,\nImage to Grab Color from (.Png) ,\nImage Weight ,\nImage Contour Dimension ,\nImage + Colors (Multi-Layers) ,\nInitialization ,\nInitial Density ,\nInit. With High Gradients Only ,\nInit. Type ,\nInner Length ,\nInner Fading ,\nInner ,\nInk Wash ,\nInit. Resolution ,\nInflation 2 ,\nInflation ,\nIndustrial 33 ,\nIndoor Blue ,\nInit Canvas ,\nInfrared - Dust Pink ,\nInformation ,\nInfluence of Color Samples (%) ,\nIlluminate 2D Shape ,\nHue Range ,\nHue Randomness ,\nHue Min (%) ,\nHue Max (%) ,\nHydracore ,\nHybrid Median - Medium Speed Softest Output ,\nHuman 2 ,\nHue Smoothness ,\nHue Lighten-Darken ,\nHough Transform ,\nHough Sketch ,\nHot (256) ,\nHorror Blue ,\nHue Factor ,\nHowlite ,\nHouseholder ,\nHouse ,\nIlford FP4 Plus 125 ,\nIlford Delta 400 ,\nIlford Delta 3200 ,\nIlford Delta 100 ,\nIlford XP2 ,\nIlford Pan F Plus 50 ,\nIlford HPS 800 ,\nIlford HP5 Plus 400 ,\nIgnore Current Aspect ,\nHypnosis ,\nHypersthene ,\nHyper Droste ,\nHyla 68 ,\nIdentity ,\nIain Noise Reduction 2019 ,\nHypressen ,\nHypotrochoid ,\nLowlights Crossover Point ,\nLowercase Letters ,\nLower Side Orientation ,\nLower Mask Threshold (%) ,\nLuminance Level ,\nLuma Noise ,\nLucky 64 ,\nLowres CLUT ,\nLower Layer Is the Bottom Layer for All Blends ,\nLow Frequency Layer ,\nLow Contrast Blue ,\nLow Bias ,\nLouetta ,\nLow Value ,\nLow Scale ,\nLow Key 01 ,\nLow Key ,\nMagenta Coffee ,\nMIxer ,\nMélanges Rayons / Blend Rays ,\nLutify.Me (7) ,\nMagenta Dream ,\nMagenta Day 01 ,\nMagenta Day ,\nMagenta Color ,\nLush Green Summer ,\nLuminance Shift ,\nLuminance Only (YCbCr) ,\nLuminance Only (Lab) ,\nLuminance Only ,\nLuminosity from Color ,\nLuminosity Type ,\nLuminosity Increase ,\nLuminance Smoothness ,\nLoop Method ,\nLocal Contrast Enhancement ,\nLocal Contrast Enhance ,\nLocal Contrast Effect ,\nLocal  Normalisation ,\nLocal Processing ,\nLocal Orientation ,\nLocal Normalization ,\nLocal Contrast Style ,\nLissajous [Animated] ,\nLinify ,\nLinf-Norm ,\nLines Antialias ,\nLines (256) ,\nLissajous Spiral ,\nLissajous ,\nLiquid Parabolic ,\nLion ,\nLondon Nights ,\nLomography X-Pro Slide 200 ,\nLomography Redscale 100 ,\nLogarithmic Distortion Y-Axis Direction ,\nLoop Limitation ,\nLookup Factor ,\nLookup ,\nLong ,\nLogarithmic Distortion X-Axis Direction ,\nLock Uniform Sampling ,\nLock Return Scaling to Source Layer ,\nLocal Variance Normalization ,\nLocal Similarity Mask ,\nLogarithmic Distortion Axis Combination for Y-Axis ,\nLogarithmic Distortion Axis Combination for X-Axis ,\nLogarithmic Distortion ,\nLog(z) ,\nMagenta Factor ,\nMaximal Area ,\nMaxRGB ,\nMax-T ,\nMax Radius ,\nMaximal Value ,\nMaximal Seams per Iteration (%) ,\nMaximal Highlights ,\nMaximal Color Saturation ,\nMax Offset (%) ,\nMax Area ,\nMax Angle Deviation (deg) ,\nMax Angle ,\nMatrix ,\nMax Length (%) ,\nMax Iterations ,\nMax Cut (%) ,\nMax Curve ,\nMedian (beware: Memory-Consuming!) ,\nMean Curvature ,\nMean Color ,\nMcKinnon 75 ,\nMedium Details Threshold ,\nMedium Details Smoothness ,\nMedium 3 ,\nMedian Radius ,\nMaze ,\nMaximum Number of Output Layers ,\nMaximum Number of Image Colors ,\nMaximum Image Size ,\nMaximum ,\nMaximum Value ,\nMaximum Size Factor ,\nMaximum Saturation ,\nMaximum Red:Blue Ratio in the Fringe ,\nMath Symbols ,\nMandelbrot ,\nMake Up ,\nMake Squiggly ,\nMake Seamless [Patch-Based] ,\nManual Controls ,\nMandrill ,\nMandelbrot Explorer ,\nMandelbrot - Julia Sets ,\nMake Seamless [Diffusion] ,\nMagenta-Yellow ,\nMagenta Yellow ,\nMagenta Smoothness ,\nMagenta Shift ,\nMake Hue Depends on Region Size ,\nMail ,\nMagnitude / Phase ,\nMagic Details ,\nMask Type ,\nMask Smoothness (%) ,\nMask Size ,\nMask Creator ,\nMatching Precision (Smaller Is Faster) ,\nMatch Colors With ,\nMasterOpacity ,\nMask as Bottom Layer ,\nMask Contrast ,\nMargin (%) ,\nMarble ,\nMapping ,\nMap ,\nMask By ,\nMask + Background ,\nMasculine ,\nMascot Image ,\nLineart + Extrapolated Colors ,\nLanczsos ,\nLab8 ,\nLab [all] ,\nLab (Mixed) ,\nLandscape 04 ,\nLandscape 03 ,\nLandscape 02 ,\nLandscape 01 ,\nLab (Luma/Chroma) ,\nLN Amplitude ,\nLN Amplititude ,\nLMS Adjustment ,\nLAB8 ,\nLab (Luma Only) ,\nLab (Distinct) ,\nLab (Chroma Only) ,\nLUTs Pack ,\nLast ,\nLarge Noise ,\nLandscape-9 ,\nLandscape-8 ,\nLava ,\nLate Sunset ,\nLate Afternoon Wanderlust ,\nLast Frame ,\nLandscape-7 ,\nLandscape-2 ,\nLandscape-10 ,\nLandscape-1 ,\nLandscape 05 ,\nLandscape-6 ,\nLandscape-5 ,\nLandscape-4 ,\nLandscape-3 ,\nLAB-Lightness ,\nKodak T-MAX 3200 - ,\nKodak T-MAX 3200 ++ ,\nKodak T-MAX 3200 + ,\nKodak T-MAX 3200 (alt) ,\nKodak TMAX 3200 ,\nKodak T-Max 400 ,\nKodak T-Max 3200 ,\nKodak T-Max 100 ,\nKodak T-MAX 3200 ,\nKodak Portra 800 ,\nKodak Portra 400 VC - ,\nKodak Portra 400 VC ++ ,\nKodak Portra 400 VC + ,\nKodak Portra 800 HC ,\nKodak Portra 800 - ,\nKodak Portra 800 ++ ,\nKodak Portra 800 + ,\nL1-Norm ,\nKyler Holland (10) ,\nKuwahara on Painting ,\nKorben 214 ,\nLAB-B ,\nLAB-A ,\nLAB ,\nL2-Norm ,\nKookaburra ,\nKodak TRI-X 400 (alt) ,\nKodak TRI-X 400 ,\nKodak TRI-X 1600 ,\nKodak TMAX 400 ,\nKodak Tri-X 400 ,\nKodak TRI-X 400 - ,\nKodak TRI-X 400 ++ ,\nKodak TRI-X 400 + ,\nLava Lamp ,\nLight-X ,\nLight Type ,\nLight Strength ,\nLight Smoothness ,\nLighting ,\nLighten Edges ,\nLight-Z ,\nLight-Y ,\nLight Rays ,\nLight Effect ,\nLight Direction ,\nLight Antialias ,\nLight Angle ,\nLight Position ,\nLight Patch ,\nLight Leaks ,\nLight Glow ,\nLine Strength ,\nLine Precision ,\nLine Opacity ,\nLimit Hue Range ,\nLineart + Colors ,\nLineart + Color Spots ,\nLineart ,\nLine Thickness ,\nLighty Smooth ,\nLightness Max (%) ,\nLightness Factor ,\nLightness (%) ,\nLighting Angle ,\nLightning ,\nLightness Smoothness ,\nLightness Shift ,\nLightness Min (%) ,\nLight (blown) ,\nLeft Side Orientation ,\nLeft Position ,\nLeft Foreground ,\nLeft / Right Blur (%) ,\nLena ,\nLeft and Right Image Streams ,\nLeft Stream Only ,\nLeft Slope ,\nLeft ,\nLch [all] ,\nLayers to Tiles ,\nLayer Processing ,\nLayer ,\nLeak Type ,\nLeaf Opacity (%) ,\nLeaf Color ,\nLeaf ,\nLifestyle & Commercial-5 ,\nLifestyle & Commercial-4 ,\nLifestyle & Commercial-3 ,\nLifestyle & Commercial-2 ,\nLifestyle & Commercial-9 ,\nLifestyle & Commercial-8 ,\nLifestyle & Commercial-7 ,\nLifestyle & Commercial-6 ,\nLifestyle & Commercial-10 ,\nLenticular Orientation ,\nLenticular Density LPI ,\nLenox 340 ,\nLeno ,\nLifestyle & Commercial-1 ,\nLife Giving Tree ,\nLevel Frequency ,\nLenticular Print ,\nHSI [all] ,\nExternal Transparency ,\nExtend 1px ,\nExpression ,\nExposure ,\nExtrapolate Color Spots on Transparent Top Layer ,\nExtract Objects ,\nExtract Foreground [Interactive] ,\nExtra  Smooth ,\nExport RGB-565 File ,\nExpired (polaroid) ,\nExpired (fade) ,\nExpanding Mirrors ,\nExpand Size ,\nExponents ,\nExponent (Real) ,\nExponent (Imaginary) ,\nExponent ,\nFaded (alt) ,\nFaded ,\nFade to Green ,\nFade Start (%) ,\nFaded 47 ,\nFaded (vivid) ,\nFaded (extreme) ,\nFaded (analog) ,\nFade Layers ,\nF(X) ,\nExtreme ,\nExtrapolated Colors + Lineart ,\nExtrapolate Colors As ,\nFade End (%) ,\nFade ,\nFabric Chaos ,\nFFT Preview ,\nExpand Shadows ,\nEnding Y-Centering ,\nEnding X-Centering ,\nEnding Scale (%) ,\nEnding Angle ,\nEqualization (%) ,\nEqualization ,\nEnhance Detail ,\nEngrave ,\nEnd of Mid-Tones ,\nEnchanted ,\nEnable Segmentation ,\nEnable Paintstroke ,\nEnable Morphology ,\nEnd Point Rate (%) ,\nEnd Point Connectivity ,\nEnd Frame Number ,\nEnd Color ,\nEterna for Flog ,\nEtch Tones ,\nEscape Value ,\nErosion / Dilation ,\nExpand Background Reconstruction ,\nExp(z) ,\nExp ,\nEuclidean - Polar ,\nEric Ellerbrock (14) ,\nEqualize Shadow ,\nEqualize Local Histograms ,\nEqualize HSV ,\nEqualize HSI-HSL-HSV ,\nEquirectangular to Nadir-Zenith ,\nEquation Plot [Y=f(X)] ,\nEquation Plot [Parametric] ,\nEqualize at Each Step ,\nFaded Green ,\nFine Noise ,\nFine Details Threshold ,\nFine Details Smoothness ,\nFine 2 ,\nFire Effect ,\nFinger Size ,\nFinger Paint ,\nFine to Coarse ,\nFinal Image ,\nFilm Print 02 ,\nFilm Print 01 ,\nFilm Highlight Contrast ,\nFilm GB-19 ,\nFinal Flattening (bilateral) ,\nFilterGrade Cinematic (8) ,\nFilter Design ,\nFilmic ,\nFlat 30 ,\nFlag (256) ,\nFive Layers ,\nFitting Function ,\nFlatness ,\nFlat Regions Removal ,\nFlat Color ,\nFlat Blue Moon ,\nFit Radial End to Min/Max Dimension ,\nFirst Frame ,\nFirst Color ,\nFirst ,\nFireworks ,\nFish-Eye Effect ,\nFish-Eye ,\nFirst Size ,\nFirst Radius ,\nFilm 9879 ,\nFast Recovery ,\nFast Blend Preview ,\nFast Blend ,\nFast (Low Precision) Preview ,\nFelt Spots ,\nFelt Pen ,\nFeathering ,\nFaux Infrared ,\nFast &#40;Approx.&#41; ,\nFaded Retro 02 ,\nFaded Retro 01 ,\nFaded Pink-Ish ,\nFaded Look ,\nFast ,\nFall Colors ,\nFading Shape ,\nFading ,\nFill Transparent Holes ,\nFill Holes % ,\nFill Holes ,\nFidelity to Target (Finest) ,\nFilm 0987 ,\nFilling Opacity (%) ,\nFilled Circles ,\nFilled ,\nFidelity to Target (Coarsest) ,\nFibers Smoothness ,\nFibers Amplitude ,\nFibers ,\nFerrofluid ,\nFidelity Smoothness (Finest) ,\nFidelity Smoothness (Coarsest) ,\nFidelity Chromaticity ,\nFibrousness ,\nEnable Interpolated Motion ,\nDistance to Center (%) ,\nDistance Transform ,\nDistance (Fast) ,\nDisplay Coordinates on Preview Window ,\nDistortion Surface Angle ,\nDistortion Factor ,\nDistortion Angle ,\nDistort Lens ,\nDisplay Coordinates ,\nDiscard Contour Guides ,\nDisabled ,\nDirty ,\nDirections 23 ,\nDisplay Color Axes ,\nDisplay Blob Controls ,\nDisco ,\nDiscard Transparency ,\nDodge Strength ,\nDodge Blur ,\nDoNothing ,\nDoNotMergeLayers ,\nDoodle ,\nDomingo 145 ,\nDog ,\nDodge and Burn ,\nDo Not Flatten Transparency ,\nDisturbance Scale-By-Factor ,\nDistortion Y-[dy] ,\nDistortion X-[dx] ,\nDistortion Surface Position ,\nDjango 25 ,\nDither Output ,\nDisturbance Y ,\nDisturbance X ,\nDirection ,\nDices with Colored Sides ,\nDices with Colored Numbers ,\nDices ,\nDiamonds (Outline) ,\nDiff. of Median ,\nDiff. of Gauss. ,\nDiff. of BoxBlur ,\nDif ,\nDiamonds ,\nDetails Strength (%) ,\nDetails Smoothness ,\nDetails Equalizer ,\nDetails Amount ,\nDiamond (Inv.) ,\nDeuteranopia ,\nDeuteranomaly ,\nDetect Skin ,\nDimension (%) ,\nDimension ,\nDilation / Erosion ,\nDilate Contours ,\nDirect ,\nDipole: 1/(4*z^2-1) ,\nDimension [Diff] ,\nDimension Motif Base ,\nDilatation Motif / Pattern ,\nDiffuse Shadow ,\nDiffuse (%) ,\nDifference of Gaussians ,\nDifference Mixing ,\nDilatation ,\nDigits ,\nDiffusivity ,\nDiffusion Tensors ,\nDot Size ,\nEdges on Fire ,\nEdges [Animated] ,\nEdges Offsets ,\nEdges (%) ,\nEdgy Ember ,\nEdges-2 (beware: Memory-Consuming!) ,\nEdges-1 (beware: Memory-Consuming!) ,\nEdges-0.5 (beware: Memory-Consuming!) ,\nEdge Smoothness ,\nEdge Influence ,\nEdge Fidelity ,\nEdge Exponent ,\nEdge Detect Includes Chroma ,\nEdge Simplicity ,\nEdge Shade ,\nEdge Method ,\nEdge Mask ,\nEllipsoid ,\nEllipsionism Opacity ,\nEllipsionism ,\nEllipse Ratio ,\nEnable Extreme Emboss or Relief? ,\nEnable CFA/CFB* Formulas for OVX and OVY Formulas? ,\nEnable Antialiasing ,\nEmboss-Relief ,\nEllipse Painting ,\nElegance 38 ,\nEight Layers ,\nEffect Y-Axis Scaling ,\nEffect X-Axis Scaling ,\nEllipse ,\nElevation (%) ,\nElevation ,\nElephant ,\nEdge Desaturation Method ,\nDrop Blues ,\nDreamy ,\nDream Smoothing ,\nDream 85 ,\nDrop Water ,\nDrop Shadow 3D ,\nDrop Shadow ,\nDrop Green Tint 14 ,\nDream 1 ,\nDownload External Data ,\nDouceur Ombre / Smoothness Shadow ,\nDouceur / Smoothness ,\nDouble Pixel Axis? ,\nDream ,\nDrawn Montage ,\nDragonfly ,\nDragon Curve ,\nEcho Hall 2 ,\nEcho Hall ,\nEasy Skin Retouch ,\nEarthing ,\nEdge Attenuation ,\nEdge Antialiasing ,\nEcho Wide ,\nEcho Squircle ,\nEarth Tone Boost ,\nDuplicates ,\nDuoTone Blue Red ,\nDuck ,\nDroste ,\nEarth ,\nEagle ,\nDusty ,\nDuration ,\nGold ,\nGoing for a Walk ,\nGmicky - Roddy ,\nGmicky (by Mahvin) ,\nGoldFX - Perfect Sunset 01min ,\nGoldFX - Hot Summer Heat ,\nGoldFX - Bright Summer Heat ,\nGoldFX - Bright Spring Breeze ,\nGmicky (by Deevad) ,\nGlow ,\nGlobal Mapping ,\nGlobal ,\nGlamour Glow ,\nGmicky (Mahvin) ,\nGmicky (Deevad) ,\nGmicky & Wilber (by Mahvin) ,\nGmicky & Wilber ,\nGolden Time ,\nGolden Sony 37 ,\nGolden Night Softner 43 ,\nGolden Gate ,\nGradienNormSmoothness ,\nGradienNormLinearity ,\nGot It! ,\nGood Morning ,\nGolden (vibrant) ,\nGoldFX - Summer Heat ,\nGoldFX - Spring Breeze ,\nGoldFX - Perfect Sunset 10min ,\nGoldFX - Perfect Sunset 05min ,\nGolden (mono) ,\nGolden (fade) ,\nGolden (bright) ,\nGolden ,\nGhost ,\nFull Side by Uncompressed ,\nFull Layer Stack -Slow!- ,\nFull Colors ,\nFull (Slower) ,\nFuturistic Bleak 2 ,\nFuturistic Bleak 1 ,\nFusion 88 ,\nFunction Angle ,\nFuji XTrans III (15) ,\nFuji Superia 800 - ,\nFuji Superia 800 ++ ,\nFuji Superia 800 + ,\nFuji Superia 800 ,\nFuji Velvia 50 ,\nFuji Superia X-Tra 800 ,\nFuji Superia Reala 100 ,\nFuji Superia HG 1600 ,\nGeneric Kodachrome 64 ,\nGeneric Fuji Velvia 100 ,\nGeneric Fuji Provia 100 ,\nGeneric Fuji Astia 100 ,\nGeometry ,\nGentle Mode (overrides Minimum Brightness and Minimun Red:Blue Ratio) ,\nGeneric Skin Structure ,\nGeneric Kodak Ektachrome 100 VS ,\nGenerate Random-Colors Layer ,\nG/M Smoothness ,\nFuzzy ,\nFuturistic Bleak 4 ,\nFuturistic Bleak 3 ,\nGear ,\nGamma Equalizer ,\nGamma Balance ,\nGames & Demos ,\nGradient ,\nGreenish Fade 1 ,\nGreenish Fade ,\nGreenish Contrasty ,\nGreen-Red ,\nGrid Divisions ,\nGreyscale ,\nGrey ,\nGremerta ,\nGreen-Blue ,\nGreen Rotations ,\nGreen Mono ,\nGreen Light ,\nGreen Level ,\nGreen and Orange ,\nGreen Yellow ,\nGreen Wavelength ,\nGreen Shift ,\nGummy ,\nGum Leaf ,\nGuided Light Rays ,\nGuide Recovery ,\nHLG 1 ,\nHDR Effect (Tone Map) ,\nH Variable ,\nH Cutoff ,\nGuide Mix ,\nGrid [Hexagonal] ,\nGrid [Cartesian] ,\nGrid Width ,\nGrid Smoothing ,\nGuide As ,\nGrow Alpha ,\nGritty ,\nGrid [Triangular] ,\nGreen Indoor ,\nGrain (Shadows) ,\nGrain (Midtones) ,\nGrain (Highlights) ,\nGradient [from Line] ,\nGrain Type ,\nGrain Tone Fading ,\nGrain Scale ,\nGrain Only ,\nGradient [Random] ,\nGradient Values ,\nGradient RGB ,\nGradient Preset ,\nGradient Norm ,\nGradient [Radial] ,\nGradient [Linear] ,\nGradient [Custom Shape] ,\nGradient [Corners] ,\nGreen Conflict ,\nGreen Color ,\nGreen Blues ,\nGreen Afternoon ,\nGreen G09 ,\nGreen Factor ,\nGreen Day 02 ,\nGreen Day 01 ,\nGreen Action ,\nGraphic Novel ,\nGraphic Boost ,\nGranularity ,\nGrainext ,\nGreen 2025 ,\nGreen 15 ,\nGreece ,\nGraphix Colors ,\nFuji Superia 400 - ,\nFrame [Painting] ,\nFrame [Mirror] ,\nFrame [Fuzzy] ,\nFrame [Cube] ,\nFrame [Smooth] ,\nFrame [Round] ,\nFrame [Regular] ,\nFrame [Pattern] ,\nFrame [Blur] ,\nFrame Files Format ,\nFrame Color ,\nFrame (px) ,\nFragment Blur ,\nFrame Width ,\nFrame Type ,\nFrame Skip ,\nFrame Format ,\nFruits ,\nFrosted Beach Picnic ,\nFrosted ,\nFrom Reference Color ,\nFuji 160C - ,\nFuji 160C ++ ,\nFuji 160C + ,\nFuji 160C ,\nFrom Input ,\nFreaky Details ,\nFreaky B&W ,\nFrames Offset ,\nFrame as a New Layer ,\nFriends Hall of Fame ,\nFreqy Pattern ,\nFrequency Range ,\nFrench Comedy ,\nFractalize ,\nFly Karateka ,\nFlower Cushion ,\nFlou / Blur Contours ,\nFlou / Blur ,\nFont Colors ,\nFolger 50 ,\nFolder Name ,\nFoggy Night ,\nFlocon / Snowflake ,\nFlip Angle Direction? ,\nFlip & Rotate Blocs ,\nFlavin ,\nFlattening for Edge (bilateral) ,\nFlip Tolerance ,\nFlip Radial Direction? ,\nFlip Left/Right ,\nFlip Cross-Hatch ,\nFourier Watermark ,\nFourier Transform ,\nFourier Filtering ,\nFourier Analysis ,\nFractal Whirl ,\nFractal Set ,\nFractal Points ,\nFractal Mapping ,\nFour Layers ,\nForce Tiles to Have Same Size ,\nForce Re-Download from Scratch ,\nForce Gray ,\nFont Height (px) ,\nFormula B ,\nForme ,\nForeground Color ,\nForce Transparency ,\nFuji 3510 (Constlclip) ,\nFuji Ilford HP5 - ,\nFuji Ilford HP5 ++ ,\nFuji Ilford HP5 + ,\nFuji Ilford HP5 ,\nFuji Neopan Acros 100 ,\nFuji Neopan 1600 - ,\nFuji Neopan 1600 ++ ,\nFuji Neopan 1600 + ,\nFuji Ilford Delta 3200 - ,\nFuji FP-3000b Negative Early ,\nFuji FP-3000b Negative +++ ,\nFuji FP-3000b Negative ++ ,\nFuji FP-3000b Negative + ,\nFuji Ilford Delta 3200 ++ ,\nFuji Ilford Delta 3200 + ,\nFuji Ilford Delta 3200 ,\nFuji HDR ,\nFuji Superia 200 ,\nFuji Superia 1600 - ,\nFuji Superia 1600 ++ ,\nFuji Superia 1600 + ,\nFuji Superia 400 ++ ,\nFuji Superia 400 + ,\nFuji Superia 400 ,\nFuji Superia 200 XPRO ,\nFuji Superia 1600 ,\nFuji Sensia 100 ,\nFuji Provia 400X ,\nFuji Provia 400F ,\nFuji Provia 100F ,\nFuji Superia 100 - ,\nFuji Superia 100 ++ ,\nFuji Superia 100 + ,\nFuji Superia 100 ,\nFuji FP-3000b Negative ,\nFuji 800Z - ,\nFuji 800Z ++ ,\nFuji 800Z + ,\nFuji 800Z ,\nFuji FP-100c (alt) ,\nFuji FP-100c ,\nFuji FP 100C ,\nFuji Astia 100F ,\nFuji 400H - ,\nFuji 3513 (Constlmap) ,\nFuji 3513 (Constlclip) ,\nFuji 3510 (Cuspclip) ,\nFuji 3510 (Constlmap) ,\nFuji 400H ++ ,\nFuji 400H + ,\nFuji 400H ,\nFuji 3513 (Cuspclip) ,\nFuji FP-3000b ,\nFuji FP-100c Negative ++a ,\nFuji FP-100c Negative +++ ,\nFuji FP-100c Negative ++ ,\nFuji FP-3000b HC ,\nFuji FP-3000b +++ ,\nFuji FP-3000b ++ ,\nFuji FP-3000b + ,\nFuji FP-100c Negative + ,\nFuji FP-100c ++a ,\nFuji FP-100c +++ ,\nFuji FP-100c ++ ,\nFuji FP-100c + ,\nFuji FP-100c Negative ,\nFuji FP-100c Cool ++ ,\nFuji FP-100c Cool + ,\nFuji FP-100c Cool ,\n"
  },
  {
    "path": "translations/filters/gmic_qt_it.csv",
    "content": "<b>Arrays & Tiles</b> , <b>Array e piastrelle</b>\n<b>Artistic</b> , <b>Artistico</b>\n<b>Black & White</b> , <b>Bianco e nero</b>\n<b>Colors</b> , <b>Colori</b>\n<b>Contours</b> , <b>Contorni</b>\n<b>Deformations</b> , <b>Deformazioni</b>\n<b>Degradations</b> , <b>Degradazioni</b>\n<b>Details</b> , <b>Dettagli</b>\n<b>Testing</b> , <b>Test</b>\n<b>Frames</b> , <b>Cornici</b>\n<b>Frequencies</b> , <b>Frequenze</b>\n<b>Layers</b> , <b>Strati</b>\n<b>Lights & Shadows</b> , <b>Luci e ombre</b>\n<b>Patterns</b> , <b>Modelli</b>\n<b>Rendering</b> , <b>Rendering</b>\n<b>Repair</b> , <b>Riparazione</b>\n<b>Sequences</b> , <b>Sequenze</b>\n<b>Silhouettes</b> , <b>Silhouette</b>\n<b>Icons</b> , <b>Icone</b>\n<b>Misc</b> , <b>Varie</b>\n<b>Nature</b> , <b>Natura</b>\n<b>Others</b> , <b>Altri</b>\n<b>Stereoscopic 3D</b> , <b>3D stereoscopico</b>\n&#9829; Support Us ! &#9829; , ♥ Sostienici! ♥\n*Colors Doping , *Colori Doping\n*Colors Doping* , *Colori Doping*\n*Comix Colors* , *Comix Colori*\n*Dark Edges* , *Bordi scuri\n*Dark Screen* , *Schermo oscuro*\n*Graphix Colors , *Colori Graphix\n*Vivid Edges* , *Bordi vivi\n*Vivid Screen* , *Schermo vivido*\n+180 Deg. , +180 gradi.\n+90 Deg. , +90 gradi.\n-1. Value Action , -1. Valore Azione\n-2. Overall Channel(s) , -2. Canale(i) complessivo(i)\n-3. Normalisation Channel(s) , -3. Canale(i) di normalizzazione\n-4. Normalise , -4. Normalizzare\n-90 Deg. , -90 gradi.\n0.  Recompute , 0. Ricalcolare\n1 Levels , 1 Livelli\n1.  Plasma Texture [Discards Input Image] , 1. 2. Texture del plasma [Scarta l'immagine in ingresso].\n10.  Quadtree Max Precision , 10. 11. Quadrilatero di massima precisione\n10th , 10\n10th Color , 10° Colore\n11.  Quadtree Min Homogeneity , 11. 12. Omogeneità minima dei quadrupedi\n11th , 11\n12 Colors , 12 colori\n12 Grays , 12 Grigi\n12.  Quadtree Max Homogeneity , 12. 12. Omogeneità massima del quadrupede\n125 Keypoints , 125 punti chiave\n12th , 12\n13. Noise Type , 13. 13. Tipo di rumore\n13th , XIII\n14. Minimum Noise , 14. 14. Rumore minimo\n14th , 14\n15. Maximum Noise , 15. 15. Rumore massimo\n15th , 15\n16 Colors , 16 colori\n16 Grays , 16 Grigi\n16. Noise Channel(s) , 16. 17. Canale(i) del rumore\n16th , 16°.\n17. Warp Iterations , 17. Iterazioni d'ordito\n18. Warp Intensity , 18. 18. Intensità di curvatura\n180 Deg. , 180 gradi.\n19. Warp Offset , 19. Offset di ordito\n1st , 1º\n1st Additional Palette (.Gpl) , 1° Paletta aggiuntiva (.Gpl)\n1st Color , 1° Colore\n1st Parameter , 1° parametro\n1st Text , 1° Testo\n1st Tone , 1° Tono\n1st Variance , 1ª variante\n1st X-Coord , 1° X-Coord\n1st Y-Coord , 1a Y-Coord\n2 Colors , 2 colori\n2 Grays , 2 Grigi\n2 Noise , 2 Rumore\n2-Strip Process , Processo 2-Strip\n2.  Plasma Scale , 2. 2. Scala al plasma\n20. Scale to Width , 20. Scala alla larghezza\n21. Scale to Height , 21. Scala ad altezza\n216 Keypoints , 216 punti chiave\n22. Correlated Channels , 22. 22. Canali correlati\n22.5 Deg. , 22,5 Deg.\n23. Boundary , 23. Confine\n24. Warp Channel(s) , 24. 24. Canale(i) di curvatura\n25. Random Negation , 25. 25. Negazione casuale\n26. Random Negation Channel(s) , 26. 26. Canale(i) di negazione casuale\n27 Keypoints , 27 punti chiave\n27. Gamma Offset , 27. 27. Offset gamma\n270 Deg. , 270 gradi.\n28. Hue Offset , 28. 28. Sfasamento della tinta\n29. Normalise , 29. Normalizzare\n2nd , 2º\n2nd Additional Palette (.Gpl) , 2a Paletta aggiuntiva (.Gpl)\n2nd Color , 2° Colore\n2nd Parameter , 2° parametro\n2nd Text , 2° Testo\n2nd Tone , 2° Tono\n2nd Variance , 2a Varianza\n2nd X-Coord , 2° X-Coord\n2nd Y-Coord , 2a Y-Coord\n2x Type , 2x Tipo\n2XY Mirror , Specchio 2XY\n2xy-Axes , 2xy-assi\n3 Colors , 3 colori\n3 Grays , 3 Grigi\n3 Mix , 3 Mescola\n3.  Plasma Alpha Channel , 3. 3. Canale alfa del plasma\n30. Minimum Hue , 30. Tinta minima\n31. Maximum Hue , 31. 31. Tinta massima\n32. Minimum Saturation , 32. 32. Saturazione minima\n33. Maximum Saturation , 33. 33. Saturazione massima\n34. Minimum Value , 34. 34. Valore minimo\n343 Keypoints , 343 punti chiave\n35. Maximum Value , 35. Valore massimo\n36. Hue Offset , 36. Sfasamento della tinta\n37. Saturation Offset , 37. 37. Offset di saturazione\n38. Value Offset , 38. 38. Compensazione del valore\n3D Blocks , Blocchi 3D\n3D CLUT (Fast) , 3D CLUT (Veloce)\n3D CLUT (Precise) , CLUT 3D (Preciso)\n3D Colored Object , Oggetto colorato in 3D\n3D Conversion , Conversione 3D\n3D Elevation , Elevazione 3D\n3D Elevation [Animated] , Elevazione 3D [Animato]\n3D Extrusion , Estrusione 3D\n3D Extrusion [Animated] , Estrusione 3D [Animato]\n3D Image Object , Oggetto immagine 3D\n3D Image Object [Animated] , Oggetto immagine 3D [Animato]\n3D Image Type , Tipo di immagine 3D\n3D Lathing , Tornitura 3D\n3D Metaballs , Metaballe 3D\n3D Random Objects , Oggetti casuali 3D\n3D Reflection , Riflessione 3D\n3D Rubber Object , Oggetto in gomma 3D\n3D Text Pointcloud , Pointcloud di testo 3D\n3D Tiles , Piastrelle 3D\n3D Video Conversion , Conversione video 3D\n3D Waves , Onde 3D\n3rd , Terzo\n3rd Color , 3° Colore\n3rd Parameter , 3° parametro\n3rd Tone , 3° Tono\n3rd X-Coord , 3° X-Coord\n3rd Y-Coord , 3a Y-Coord\n4 Colors , 4 colori\n4 Grays , 4 Grigi\n4.  Segmentation [No Alpha Channel] , 4. 4. Segmentazione [Nessun canale alfa]\n4096x4096 Layer , 4096x4096 Strato\n45 Deg. , 45 gradi.\n4th , Quarto\n4th Color , 4° Colore\n4th Tone , 4° Tono\n5.  Edge Threshold , 5. 5. Soglia del bordo\n512x512 Layer , 512x512 Strato\n5th , 5\n5th Color , 5° Colore\n5th Tone , 5° Tono\n6.  Smoothness , 6. 7. Liscio come l'olio\n60's (faded Alt) , Anni '60 (Alt sbiadito)\n60's (faded) , Anni '60 (sbiadito)\n64 (Faster) , 64 (Più veloce)\n64 Keypoints , 64 punti chiave\n67.5 Deg. , 67,5 Deg.\n6th , 6\n6th Color , 6° Colore\n6th Tone , 6° Tono\n7.  Blur , 7. 8. Sfocatura\n7th , 7\n7th Color , 7° Colore\n7th Tone , 7° Tono\n8 Colors , 8 colori\n8 Grays , 8 Grigi\n8 Keypoints (RGB Corners) , 8 punti chiave (angoli RGB)\n8.  Quadtree Pixelisation [No Alpha Channel] , 8. 8. Pixelizzazione a quadrilatero [Nessun canale alfa]\n8th , ottavo\n8th Color , 8° Colore\n8th Tone , 8° Tono\n9.  Quadtree Min Precision , 9. Precisione minima dei quadrupedi\n90 Deg. , 90 gradi.\n9th , 9a\n9th Color , 9° Colore\n[Cyan]MYK , [Ciano]MYK\nA Lot of Cyan , Un sacco di ciano\nA Lot of Key , Un sacco di chiave\nA Lot of Magenta , Un sacco di Magenta\nA Lot of Yellow , Un sacco di giallo\nA-Color Factor , Fattore A-Color\nA-Color Shift , Spostamento A-Color\nA-Color Smoothness , A-Color scorrevolezza\nA-Component , A-Componente\nA-Value , Valore A\nA4 / 100 PPI (Recommended) , A4 / 100 PPI (consigliato)\nAbout G'MIC , Informazioni su G'MIC\nAbsolute Brightness , Luminosità assoluta\nAbsolute Value , Valore assoluto\nAbstraction , Astrazione\nAcceleration , Accelerazione\nAction , Azione\nAction #1 , Azione #1\nAction #10 , Azione #10\nAction #11 , Azione #11\nAction #12 , Azione #12\nAction #13 , Azione #13\nAction #14 , Azione #14\nAction #15 , Azione #15\nAction #16 , Azione #16\nAction #17 , Azione #17\nAction #18 , Azione #18\nAction #19 , Azione #19\nAction #2 , Azione #2\nAction #20 , Azione #20\nAction #21 , Azione #21\nAction #22 , Azione #22\nAction #23 , Azione #23\nAction #24 , Azione #24\nAction #3 , Azione #3\nAction #4 , Azione #4\nAction #5 , Azione #5\nAction #6 , Azione #6\nAction #7 , Azione #7\nAction #8 , Azione #8\nAction #9 , Azione #9\nAction Magenta 01 , Azione Magenta 01\nAction Red 01 , Azione Rosso 01\nActivate 'Pencil Smoother' , Attivare 'lisciatrice di matite'.\nActivate Color Enhancement , Attivare il miglioramento del colore\nActivate Colors Geometric Shapes , Attivare i colori Forme geometriche\nActivate Custom Filter , Attivare il filtro personalizzato\nActivate Lizards , Attivare le lucertole\nActivate Mirror , Attivare Specchio\nActivate Pink Elephants , Attivare gli elefanti rosa\nActivate Second Direction , Attivare la seconda direzione\nActivate Shakes , Attivare i frullati\nActivate Slice 1 , Attivare Fetta 1\nActivate Slice 2 , Attivare Slice 2\nActivate Slice 3 , Attivare Slice 3\nActivate Slice 4 , Attivare Slice 4\nAdaptive , Adattabile\nAdd , Aggiungi\nAdd 1px Outline , Aggiungi 1px Contorno\nAdd Alpha Channels to Detail Scale Layers , Aggiungere i canali alfa ai livelli della scala di dettaglio\nAdd as a New Layer , Aggiungi come nuovo livello\nAdd Chalk Highlights , Aggiungi i punti salienti del gesso\nAdd Color Background , Aggiungi colore di sfondo\nAdd Comment Area in HTML Page , Aggiungi un'area commenti nella pagina HTML\nAdd Grain , Aggiungi il grano\nAdd Image Label , Aggiungi etichetta immagine\nAdd Painter's Touch , Aggiungi il tocco del pittore\nAdd User-Defined Constraints (Interactive) , Aggiungere vincoli definiti dall'utente (interattivo)\nAdditional Duplicates Count , Conteggio supplementare dei duplicati\nAdditional Outline , Schema aggiuntivo\nAdditive , Additivo\nAdjust Background Reconstruction , Regolare la ricostruzione dello sfondo\nAdventure 1453 , Avventura 1453\nAggresive , Aggressivo\nAggressive Highlights Recovery 5 , Aggressivo evidenzia il recupero 5\nAlgorithm , Algoritmo\nAlien Green , Verde alieno\nAlign Image Streams , Allineare i flussi di immagini\nAlign Layers , Allineare gli strati\nAligned , Allineato\nAlignment Type , Tipo di allineamento\nAll , Tutti\nAll 45° Rotations , Tutti i 45° Rotazioni\nAll 90° Rotations , Tutti i 90° Rotazioni\nAll [Collage] , Tutti [Collage]\nAll but Reference Color , Tutti tranne il colore di riferimento\nAll Layers and Masks , Tutti gli strati e le maschere\nAll Tones , Tutti i toni\nAll XY-Flips , Tutti gli XY-Flips\nAllow Angle , Permettere l'angolo\nAllow Outer Blending , Consentire la miscelazione esterna\nAllow Self Intersections , Consentire l'auto-intersezione\nAlpha Channel , Canale Alfa\nAlpha Mode , Modalità Alfa\nAlso Match Gradients , Anche i gradienti della partita\nAmbient (%) , Ambiente (%)\nAmbient Lightness , Leggerezza ambientale\nAmount , Importo\nAmplitude , Ampiezza\nAmplitude (%) , Ampiezza (%)\nAmplitude / Angle , Ampiezza / Angolo\nAnaglypgh Green/magenta Optimized , Anaglypgh Verde/magenta Ottimizzato\nAnaglyph Blue/yellow , Anaglifo Blu/giallo\nAnaglyph Blue/yellow Optimized , Anaglifo Blu/giallo ottimizzato\nAnaglyph Glasses Adjustment , Regolazione degli occhiali anaglifi\nAnaglyph Green/magenta , Anaglifo Verde/magenta\nAnaglyph Green/magenta Optimized , Anaglifo Verde/magenta Ottimizzato\nAnaglyph Reconstruction , Ricostruzione anaglifi\nAnaglyph Red/cyan , Anaglifo Rosso/ciano\nAnaglyph Red/cyan Optimized , Anaglifo Rosso/ciano ottimizzato\nAnaglyph: Red/Cyan , Anaglifo: Rosso/Cyan\nAnalogFX - Anno 1870 Color , AnalogFX - Anno 1870 Colore\nAnalogFX - Old Style I , AnalogFX - Vecchio stile I\nAnalogFX - Old Style II , AnalogFX - Vecchio stile II\nAnalogFX - Old Style III , AnalogFX - Vecchio stile III\nAnalogFX - Sepia Color , AnalogFX - Colore seppia\nAnalogFX - Soft Sepia I , AnalogFX - Seppia morbida I\nAnalogFX - Soft Sepia II , AnalogFX - Soft Seppia II\nAnalysis Scale , Scala di analisi\nAnalysis Smoothness , Analisi scorrevolezza\nAnd , E\nAngle , Angolo\nAngle (%) , Angolo (%)\nAngle (deg) , Angolo (deg)\nAngle (deg.) , Angolo (deg.)\nAngle / Size , Angolo / Dimensione\nAngle Cut , Taglio ad angolo\nAngle Dispersion , Dispersione angolare\nAngle Image Contour , Contorno dell'immagine angolare\nAngle of Disturbance Surface , Angolo della superficie di disturbo\nAngle of Main Nebulous Surface , Angolo della superficie nebulosa principale\nAngle Range , Gamma di angoli\nAngle Range (deg.) , Angolo di campo (gradi)\nAngle Tilt , Angolo di inclinazione\nAngle Variations , Variazioni di angolo\nAnguish , Angoscia\nAngular , Angolare\nAngular Precision , Precisione angolare\nAngular Tiles , Piastrelle angolari\nAnisotropic , Anisotropa\nAnisotropy , Anisotropia\nAnnular Steiner Chain Round Tiles , Piastrelle circolari per catene anulare Steiner\nAntisymmetry , Antisimmetria\nAny , Qualsiasi\nApocalypse This Very Moment , Apocalisse questo momento\nApples , Mele\nApply Adjustments On , Applicare gli aggiustamenti su\nApply Color Balance , Applicare il bilanciamento del colore\nApply External CLUT , Applicare CLUT esterno\nApply Mask , Applicare la maschera\nApply Skin Tone Mask , Applicare la maschera di tono della pelle\nApply Transformation From , Applicare la trasformazione da\nAqua and Orange Dark , Acqua e arancione scuro\nArea Smoothness , Area scorrevolezza\nAreas Light Adjustment , Aree di regolazione della luce\nAreas Smoothness , Aree levigatezza\nArray [Faded] , Array [Svanito]\nArray [Mirrored] , Array [Specchio]\nArray [Random Colors] , Array [Colori casuali]\nArray [Random] , Array [Casuale]\nArray [Regular] , Array [Regolare]\nArray Mode , Modalità Array\nArrows , Frecce\nArrows (Outline) , Frecce (Contorno)\nArtistic  Modern , Artistico Moderno\nArtistic Hard , Duro Artistico\nArtistic Round , Giro artistico\nAscii Art , Arte Ascii\nAspect , Aspetto\nAspect Ratio , Rapporto di aspetto\nAsplenium Adiantum-Nigrum , Asplenio Adiantum-Nigrum\nAssociated Color , Colore associato\nAttenuation , Attenuazione\nAuto Reduce Level (Level Slider Is Disabled) , Auto Reduce Level (il cursore di livello è disabilitato)\nAuto Set Hue Inverse (Hue Slider Is Disabled) , Auto Set Hue Inverse (il cursore della tinta è disabilitato)\nAuto-Reduce Number of Frames , Auto-Ridurre il numero di fotogrammi\nAuto-Set Periodicity , Periodicità Auto-Set\nAuto-Threshold , Auto-soglia\nAutocrop Output Layers , Livelli di uscita Autocrop\nAutomatic , Automatico\nAutomatic & Contrast Mask , Maschera automatica e di contrasto\nAutomatic [Scan All Hues] , Automatico [Scansione di tutte le tinte]\nAutomatic Color Balance , Bilanciamento automatico del colore\nAutomatic Depth Estimation , Stima automatica della profondità\nAutomatic Upscale for Optimum Results , Upscale automatico per risultati ottimali\nAutumn , Autunno\nAvalanche , Valanga\nAverage , Media\nAverage 3x3 , Media 3x3\nAverage 5x5 , Media 5x5\nAverage 7x7 , Media 7x7\nAverage 9x9 , Media 9x9\nAverage RGB , RGB medio\nAverage Smoothness , Levigatezza media\nAvg / Max Weight , Peso medio / massimo\nAvg Left Angle (deg.) , Angolo medio a sinistra (deg.)\nAvg Length Factor (%) , Fattore di lunghezza media (%)\nAvg Right Angle (deg.) , Angolo retto medio (deg.)\nAvg Thickness Factor (%) , Fattore di spessore medio (%)\nAxis , Asse\nAzimuth , Azimut\nB&W , B&N\nB&W Pencil [Animated] , Matita B/N [Animato]\nB&W Photograph , Fotografia in bianco e nero\nB&W Stencil , Stencil B/N\nB&W Stencil [Animated] , Stencil in bianco e nero [Animato]\nB-Color Factor , Fattore B-Colore\nB-Color Shift , Spostamento B-Colore\nB-Color Smoothness , B-Colore scorrevolezza\nB-Component , Componente B\nBackground Color , Colore di sfondo\nBackground Intensity , Intensità di fondo\nBackground Point (%) , Punto di fondo (%)\nBackward , Indietro\nBackward Horizontal , Orizzontale all'indietro\nBackward Vertical , Verticale all'indietro\nBalance , Saldo\nBalance Color , Equilibrio del colore\nBalance SRGB , Saldo SRGB\nBall , Palla\nBalloons , Palloncini\nBalls , Palle\nBand Width , Larghezza di banda\nBanding Denoise , Banda Denoise\nBandpass , Passo di banda\nBandwidth , Larghezza di banda\nBarbed Wire , Filo spinato\nBarnsley Fern , Felce d'orzo\nBars , Bar\nBase Reference Dimension , Dimensione di riferimento di base\nBase Scale , Scala di base\nBase Thickness (%) , Spessore di base (%)\nBasic Adjustments , Regolazioni di base\nBatch Processing , Elaborazione in lotti\nBayer Filter , Filtro Bayer\nBayer Reconstruction , Ricostruzione Bayer\nBehind , Dietro\nBelow , Sotto\nBerlin Sky , Cielo di Berlino\nBest Match , Migliore partita\nBG Textured , BG Strutturato\nBi-Directional , Bi-direzionale\nBias , Sbilanciamento\nBicubic , Bicubico\nBidirectional [Sharp] , Bidirezionale [Sharp]\nBidirectional [Smooth] , Bidirezionale [Liscio]\nBidirectional Rendering , Rendering bidirezionale\nBilateral , Bilaterale\nBilateral Radius , Raggio bilaterale\nBinary , Binario\nBinary Digits , Cifre binarie\nBit Masking (End) , Mascheramento bit (Fine)\nBit Masking (Start) , Mascheramento bit (Inizio)\nBlack , Nero\nBlack & White , Bianco e nero\nBlack & White (25) , Bianco e nero (25)\nBlack & White-1 , Bianco e Nero-1\nBlack & White-10 , Bianco e nero - 10\nBlack & White-2 , Bianco e Nero-2\nBlack & White-3 , Bianco e Nero-3\nBlack & White-4 , Bianco e nero - 4\nBlack & White-5 , Bianco e nero - 5\nBlack & White-6 , Bianco e Nero6\nBlack & White-7 , Bianco e nero - 7\nBlack & White-8 , Bianco e nero - 8\nBlack & White-9 , Bianco e nero -9\nBlack Crayon Graffiti , Graffiti a pastello nero\nBlack Dices , Dadi neri\nBlack Level , Livello nero\nBlack on Transparent , Nero su trasparente\nBlack on Transparent White , Nero su bianco trasparente\nBlack on White , Nero su bianco\nBlack Point , Punto nero\nBlack Star , Stella nera\nBlack to White , Da nero a bianco\nBlacks , Neri\nBlank , Vuoto\nBleech Bypass Green , Bleech Bypass verde\nBleech Bypass Yellow 01 , Bleech Bypass Giallo 01\nBlend , Miscela\nBlend [Average All] , Miscela [Media Tutti]\nBlend [Edges] , Miscela [Bordi]\nBlend [Fade] , Miscela [Dissolvenza]\nBlend [Median] , Miscela [Mediana]\nBlend [Seamless] , Miscela [Senza soluzione di continuità]\nBlend [Standard] , Miscela [Standard]\nBlend All Layers , Miscelare tutti gli strati\nBlend Decay , Decadimento della miscela\nBlend Mode , Modalità di miscelazione\nBlend Rays , Raggi di miscelazione\nBlend Scales , Bilance di miscelazione\nBlend Size , Dimensione della miscela\nBlend Threshold , Soglia di miscelazione\nBlending Mode , Modalità di miscelazione\nBlending Size , Dimensione di miscelazione\nBlindness Type , Tipo di cecità\nBlob 1 Color , Blob 1 Colore\nBlob 10 Color , Blob 10 Colore\nBlob 11 Color , Blob 11 Colore\nBlob 12 Color , Blob 12 Colore\nBlob 2 Color , Blob 2 Colore\nBlob 3 Color , Blob 3 Colore\nBlob 4 Color , Blob 4 Colore\nBlob 5 Color , Blob 5 Colore\nBlob 6 Color , Blob 6 Colore\nBlob 7 Color , Blob 7 Colore\nBlob 8 Color , Blob 8 Colore\nBlob 9 Color , Blob 9 Colore\nBlob Size , Dimensione del blob\nBlobs Editor , Redattore di blob\nBloc , Blocco\nBloc Size (%) , Dimensione del blocco (%)\nBlockism , Bloccismo\nBlue , Blu\nBlue & Red Chrominances , Cromanze blu e rosse\nBlue Chroma Factor , Fattore di croma blu\nBlue Chroma Shift , Spostamento del croma blu\nBlue Chroma Smoothness , Blu Croma Levigatezza del croma\nBlue Chrominance , Crominanza blu\nBlue Cold Fade , Dissolvenza a freddo blu\nBlue Dark , Blu scuro\nBlue Factor , Fattore blu\nBlue House , Casa Blu\nBlue Ice , Ghiaccio blu\nBlue Level , Livello Blu\nBlue Mono , Blu Mono\nBlue Rotations , Rotazioni blu\nBlue Screen Mode , Modalità schermo blu\nBlue Shadows 01 , Ombre blu 01\nBlue Shift , Turno Blu\nBlue Smoothness , Blu scorrevolezza\nBlue Steel , Acciaio blu\nBlue Wavelength , Lunghezza d'onda blu\nBlue-Green , Blu-verde\nBlur , Sfocatura\nBlur [Angular] , Sfocatura [Angolare]\nBlur [Bloom] , Sfocatura [Bloom]\nBlur [Depth-Of-Field] , Sfocatura [Profondità di campo]\nBlur [Gaussian] , Sfocatura [Gaussiano]\nBlur [Glow] , Sfocatura [Bagliore]\nBlur [Linear] , Sfocatura [Lineare]\nBlur [Multidirectional] , Sfocatura [Multidirezionale]\nBlur [Radial] , Sfocatura [Radiale]\nBlur Alpha , Sfocatura Alfa\nBlur Amount , Importo sfocato\nBlur Amplitude , Ampiezza della sfocatura\nBlur Dodge and Burn Layer , Sfocatura Dodge e strato di bruciato\nBlur Factor , Fattore di sfocatura\nBlur Frame , Telaio sfocatura\nBlur Percentage , Percentuale di sfocatura\nBlur Precision , Precisione della sfocatura\nBlur Shade , Sfocatura Ombra\nBlur Standard Deviation , Deviazione standard della sfocatura\nBlur Strength , Forza della sfocatura\nBlur the Mask , Sfocatura della maschera\nBoats , Barche\nBoost Chromaticity , Aumentare la cromaticità\nBoost Contrast , Aumentare il contrasto\nBoost Smooth , Aumenta liscio\nBoost Stroke , Aumentare la corsa\nBorder Color , Colore del confine\nBorder Opacity , Opacità al confine\nBorder Outline , Contorno del confine\nBorder Smoothness , Lisciozza del confine\nBorder Thickness (%) , Spessore del bordo (%)\nBorder Width , Larghezza del confine\nBoth , Entrambi\nBottles , Bottiglie\nBottom , In basso\nBottom and Left Foreground , In basso e primo piano a sinistra\nBottom and Right Foreground , In basso e a destra in primo piano\nBottom and Top Foreground , In basso e in primo piano\nBottom Layer , Strato inferiore\nBottom Left , In basso a sinistra\nBottom Right , In basso a destra\nBottom Size , Dimensione del fondo\nBottom-Left , In basso a sinistra\nBottom-Left Vertex (%) , Vertice in basso a sinistra (%)\nBottom-Right , In basso a destra\nBottom-Right Vertex (%) , Vertice in basso a destra (%)\nBouncing Balls , Palle rimbalzanti\nBoundaries (%) , Confini (%)\nBoundary , Confine\nBoundary Condition , Condizione di confine\nBoundary Conditions , Condizioni di confine\nBox Fitting , Montaggio della scatola\nBranches , Filiali\nBraque: Landscape near Antwerp , Braque: Paesaggio vicino ad Anversa\nBraque: Little Bay at La Ciotat , Braque: Piccola baia a La Ciotat\nBraque: The Mandola , Braque: La Mandola\nBrighness , Luminosità\nBright , Luminoso\nBright Green , Verde brillante\nBright Green 01 , Verde brillante 01\nBright Length , Lunghezza luminosa\nBright Pixels , Pixel luminosi\nBright Teal Orange , Alzavola brillante arancione\nBright Warm , Luminoso Caldo\nBrighter , Più luminoso\nBrightness , Luminosità\nBrightness (%) , Luminosità (%)\nBristle Size , Dimensione setole\nBronze , Bronzo\nBuilt-in Gray , Grigio incorporato\nBump Factor , Fattore di urto\nBump Map , Mappa d'urto\nBurn , Masterizzare\nBurn Blur , Sfocatura da ustione\nBurn Strength , Forza di combustione\nButterfly , Farfalla\nBy Blue Chrominance , Di Blue Chrominance\nBy Blue Component , Da Blue Component\nBy Custom Expression , Per espressione personalizzata\nBy Green Component , Per componente verde\nBy Iteration , Per Iterazione\nBy Lightness , Per leggerezza\nBy Luminance , Per Luminanza\nBy Red Chrominance , Di Red Chrominance\nBy Red Component , Da Red Component\nBy Value , Per valore\nCamera Motion Only , Solo movimento della telecamera\nCamera X , Macchina fotografica X\nCamera Y , Macchina fotografica Y\nCandle Light , Candela a lume di candela\nCanvas , Tela\nCanvas Brightness , Luminosità della tela\nCanvas Color , Colore della tela\nCanvas Darkness , Tela Oscura\nCanvas Texture , Struttura della tela\nCar , Auto\nCard Suits , Tute per carte\nCartesian Transform , Trasformazione cartesiana\nCartoon , Cartone animato\nCartoon [Animated] , Cartone animato\nCategory , Categoria\nCell Size , Dimensione della cella\nCenter , Centro\nCenter (%) , Centro (%)\nCenter Background , Sfondo del centro\nCenter Foreground , Primo piano del centro\nCenter Help , Aiuto del centro\nCenter Size , Dimensione del centro\nCenter Smoothness , Levigatezza del centro\nCenter X , Centro X\nCenter X-Shift , Centro X-Shift\nCenter Y , Centro Y\nCenter Y-Shift , Turno di centro a Y\nCentering (%) , Centraggio (%)\nCentering / Scale , Centraggio / Scala\nCenters Color , Centri Colore\nCenters Radius , Raggio dei centri\nCentimeter , Centimetro\nCentral  Perspective Outdoor , Prospettiva centrale all'aperto\nCentral Perspective Indoor , Prospettiva centrale al coperto\nCentral Perspective Outdoor , Prospettiva centrale all'aperto\nCentre , Centro\nChalk It Up , Gesso in su\nChannel #1 , Canale #1\nChannel #2 , Canale #2\nChannel #3 , Canale #3\nChannel Processing , Elaborazione dei canali\nChannel(s) , Canale(i)\nChannels , Canali\nChannels to Layers , Canali a strati\nCharcoal , Carboncino\nCheckered , A scacchi\nCheckered Inverse , Invertito a scacchi\nChemical 168 , Chimica 168\nChessboard , Scacchiera\nChroma Noise , Rumore di croma\nChromatic Aberrations , Aberrazioni cromatiche\nChromaticity From , Cromaticità Da\nChrome 01 , Cromo 01\nChrominances Only (ab) , Solo crominanze (ab)\nChrominances Only (CbCr) , Solo crominanze (CbCr)\nCine Cold , Cine freddo\nCine Teal Orange 1 , Cine Teal Teal Orange 1\nCine Teal Orange 2 , Cine Teal Teal Orange 2\nCine Vibrant , Cine Vibrante\nCine Warm , Cigna calda\nCinematic (8) , Cinematografico (8)\nCinematic for Flog , Cinematic per Flog\nCinematic Lady Bird , Cinematografica Lady Bird\nCinematic Mexico , Messico cinematografico\nCinematic Travel (29) , Viaggio al cinema (29)\nCircle , Cerchio\nCircle (Inv.) , Cerchio (Inv.)\nCircle 1 , Cerchio 1\nCircle 2 , Cerchio 2\nCircle Art , Arte del Cerchio\nCircle to Square , Da cerchio a quadrato\nCircle Transform , Trasformazione del cerchio\nCircles , Circoli\nCircles (Outline) , Cerchi (Schema)\nCircles 1 , Cerchi 1\nCircles 2 , Cerchi 2\nCircular , Circolare\nCity 7 , Città 7\nClarity , Chiarezza\nClassic Chrome , Cromo classico\nClassic Teal and Orange , Alzavola classica e arancia\nClean , Pulire\nClean Text , Testo pulito\nClear Control Points , Cancella i punti di controllo\nClear Teal Fade , Sfuma l'alzavola trasparente\nCliff , Scogliera\nCloseup , Primo piano\nClosing , Chiusura\nClosing - Opening , Chiusura - Apertura\nClosing - Original , Chiusura - Originale\nClouds , Nuvole\nCLUT from After - Before Layers , CLUT da Dopo - Prima degli strati\nCLUT Opacity , CLUT Opacità\nCM[Yellow]K , CM[Giallo]K\nCMY[Key] , CMY[Chiave]\nCMYK [cyan] , CMYK [ciano]\nCMYK [Key] , CMYK [Chiave]\nCMYK [Yellow] , CMYK [Giallo]\nCMYK Tone , Tono CMYK\nCoarse , Ruvido\nCoarsest (faster) , Più grossolano (più veloce)\nCode , Codice\nCoefficients , Coefficienti\nCoffee 44 , Caffè 44\nCoherence , Coerenza\nCold Clear Blue , Azzurro freddo\nCold Clear Blue 1 , Azzurro freddo 1\nCold Simplicity 2 , Semplicità a freddo 2\nColor , Colore\nColor (rich) , Colore (ricco)\nColor 1 , Colore 1\nColor 1 (Up/Left Corner) , Colore 1 (Angolo su/sinistra)\nColor 2 , Colore 2\nColor 2 (Up/Right Corner) , Colore 2 (angolo in alto/angolo destro)\nColor 3 , Colore 3\nColor 3 (Bottom/Left Corner) , Colore 3 (angolo in basso a sinistra)\nColor 4 , Colore 4\nColor 4 (Bottom/Right Corner) , Colore 4 (angolo inferiore/destro)\nColor A , Colore A\nColor Abstraction Opacity , Opacità dell'astrazione del colore\nColor Abstraction Paint , Pittura astratta a colori\nColor B , Colore B\nColor Balance , Bilanciamento del colore\nColor Basis , Base di colore\nColor Blending , Miscelazione dei colori\nColor Blindness , Cecità di colore\nColor Blue-Yellow , Colore Blu-Giallo\nColor Boost , Aumento del colore\nColor Burn , Colore Bruciare\nColor C , Colore C\nColor Channel  Smoothing , Canale dei colori lisciatura\nColor Channels , Canali di colore\nColor D , Colore D\nColor Dispersion , Dispersione del colore\nColor Doping , Doping a colori\nColor E , Colore E\nColor Effect Mode , Modalità effetto colore\nColor F , Colore F\nColor G , Colore G\nColor Gamma , Gamma di colore\nColor Grading , Classificazione del colore\nColor Green-Magenta , Colore Verde-Magenta\nColor Highlights , Colori in evidenza\nColor Image , Immagine a colori\nColor Intensity , Intensità del colore\nColor Mask , Maschera di colore\nColor Mask [Interactive] , Maschera di colore [Interattivo]\nColor Median , Colore Mediano\nColor Metric , Colore Metrico\nColor Midtones , Colore Midtones\nColor Mode , Modalità colore\nColor Model , Modello a colori\nColor Negative , Colore Negativo\nColor on White , Colore su bianco\nColor Overall Effect , Effetto complessivo del colore\nColor Presets , Preimpostazioni di colore\nColor Quantization , Quantizzazione del colore\nColor Rendering , Rendering del colore\nColor Shading (%) , Sfumatura del colore (%)\nColor Shadows , Ombre di colore\nColor Smoothness , Colore Levigatezza del colore\nColor Space , Spazio di colore\nColor Spots + Extrapolated Colors + Lineart , Punti di colore + Colori estrapolati + Lineart\nColor Spots + Lineart , Punti di colore + Lineart\nColor Strength , Forza del colore\nColor Temperature , Temperatura di colore\nColor Tolerance , Tolleranza di colore\nColor Variation [Random -1] , Variazione di colore [Casuale -1]\nColored Geometry , Geometria colorata\nColored Grain , Grana colorata\nColored Lineart , Lineart colorato\nColored on Black , Colorato su nero\nColored on Transparent , Colorato su Trasparente\nColored Outline , Contorno colorato\nColored Pencils , Matite colorate\nColored Regions , Regioni colorate\nColorful , Colorato\nColorful 0209 , Colorato 0209\nColorful Blobs , Blob colorate\nColoring , Colorare\nColorize [Interactive] , Colorare [Interattivo]\nColorize [Photographs] , Colorare [Fotografie]\nColorize [with Colormap] , Colorare [con Colormap]\nColorize Lineart [Auto-Fill] , Colorare Lineart [Auto-Fill]\nColorize Lineart [Propagation] , Colorare Lineart [Propagazione]\nColorize Lineart [Smart Coloring] , Colorare Lineart [Colorazione intelligente]\nColorize Mode , Modalità Colorazione\nColorized Image (1 Layer) , Immagine colorata (1 strato)\nColormap Type , Tipo Colormap\nColors , Colori\nColors A , Colori A\nColors B , Colori B\nColors Only , Solo colori\nColors Only (1 Layer) , Solo colori (1 strato)\nColors to Layers , Colori a strati\nColorspace , Spazio colore\nColour , Colore\nColour Channels , Canali di colore\nColour Model , Modello di colore\nColour Smoothing , Lisciatura del colore\nColour Space Mode , Modalità Spazio Colore\nColumn by Column , Colonna per colonna\nComic Style , Stile comico\nComix Colors , Colori Comix\nComponents , Componenti\nComposed Layers , Strati composti\nCompress Highlights , Caratteristiche principali del compressore\nCompression Blur , Sfocatura a compressione\nCompression Filter , Filtro a compressione\nComputation Mode , Modalità di calcolo\nCone , Cono\nConflict 01 , Conflitto 01\nConformal Maps , Mappe conformi\nConnectivity , Connettività\nConnectors Centering , Centraggio dei connettori\nConnectors Variability , Variabilità dei connettori\nConstrain Image Size , Dimensioni dell'immagine\nConstrain Values , Valori limite\nConstrained Sharpen , Aguzza la vista\nConstraint Radius , Raggio di restrizione\nContinuous Droste , Droste continua\nContour Coherence , Coerenza dei contorni\nContour Detection (%) , Rilevamento del contorno (%)\nContour Normalization , Normalizzazione dei contorni\nContour Precision , Precisione del contorno\nContour Threshold , Soglia di contorno\nContour Threshold (%) , Soglia di contorno (%)\nContours , Contorni\nContours + Flocon/Snowflake , Contorni + Flocon/Fiocco di neve\nContours Recursion , Ricorsione dei contorni\nContrast , Contrasto\nContrast (%) , Contrasto (%)\nContrast Smoothness , Contrasto Levigatezza\nContrast Swiss Mask , Maschera svizzera a contrasto\nContrast with Highlights Protection , Contrasto con la protezione delle alte luci\nContrasty Afternoon , Pomeriggio di contrasto\nContrasty Green , Verde a contrasto\nContributors , Collaboratori\nControl Point 1 , Punto di controllo 1\nControl Point 2 , Punto di controllo 2\nControl Point 3 , Punto di controllo 3\nControl Point 4 , Punto di controllo 4\nControl Point 5 , Punto di controllo 5\nControl Point 6 , Punto di controllo 6\nConvolve , Convolgere\nCool (256) , Fresco (256)\nCool / Warm , Fresco / Caldo\nCopper , Rame\nCorner Brightness , Luminosità d'angolo\nCorrelated Channels , Canali correlati\nCounter Clockwise , In senso antiorario\nCourse 4 , Corso 4\nCracks , Crepe\nCrease , Piega\nCreative Pack (33) , Pacchetto creativo (33)\nCrip Winter , Inverno Crip\nCrisp Romance , Romanticismo frizzante\nCrisp Warm , Caldo e frizzante\nCriterion , Criterio\nCrop , Ritaglio\nCrop (%) , Raccolto (%)\nCross Process CP 130 , Processo incrociato CP 130\nCross Process CP 14 , Processo incrociato CP 14\nCross Process CP 15 , Processo incrociato CP 15\nCross Process CP 16 , Processo incrociato CP 16\nCross Process CP 18 , Processo incrociato CP 18\nCross Process CP 3 , Processo incrociato CP 3\nCross Process CP 4 , Processo incrociato CP 4\nCross Process CP 6 , Processo incrociato CP 6\nCross-Hatch Amount , Importo del portellone trasversale\nCrossed , Attraversato\nCrosses 1 , Croci 1\nCrosses 2 , Croci 2\nCRT Sub-Pixels , Sub-Pixel CRT\nCrystal Background , Sfondo di cristallo\nCube , Cubo\nCube (256) , Cubo (256)\nCubicle 99 , Cubicolo 99\nCubism , Cubismo\nCubism on Color Abstraction , Cubismo sull'astrazione del colore\nCup , Coppa\nCupid , Cupido\nCurvature , Curvatura\nCurvature Shadow , Ombra a curvatura\nCurve Amount , Curva Importo\nCurve Angle , Angolo di curvatura\nCurve Length , Lunghezza della curva\nCurved , Curvo\nCurved Stroke , Corsa curva\nCurves , Curve\nCurves Previously Defined , Curve definite in precedenza\nCustom , Personalizzato\nCustom Code [Global] , Codice personalizzato [Globale]\nCustom Code [Local] , Codice personalizzato [Locale]\nCustom Correction Map , Mappa di correzione personalizzata\nCustom Depth Correction , Correzione di profondità personalizzata\nCustom Depth Maps Stream , Flusso di mappe di profondità personalizzate\nCustom Dictionary , Dizionario personalizzato\nCustom Filter Code , Codice filtro personalizzato\nCustom Formula , Formula personalizzata\nCustom Kernel , Kernel personalizzato\nCustom Layers , Strati personalizzati\nCustom Layout , Layout personalizzato\nCustom Style (Bottom Layer) , Stile personalizzato (strato inferiore)\nCustom Style (Top Layer) , Stile personalizzato (strato superiore)\nCustom Transform , Trasformazione personalizzata\nCustomize CLUT , Personalizza CLUT\nCut , Taglia\nCut & Normalize , Taglia e normalizza\nCut High , Taglio alto\nCut Low , Taglio basso\nCutout , Ritaglio\nCyan , Ciano\nCyan Factor , Fattore Ciano\nCyan Shift , Turno Ciano\nCyan Smoothness , Ciano scorrevolezza\nCycle Layers , Strati di ciclo\nCycles , Cicli\nCylinder , Cilindro\nD and O 1 , D e O 1\nDamping per Octave , Smorzamento per ottava\nDark  Motive , Motivo scuro\nDark Blues in Sunlight , Blu scuro alla luce del sole\nDark Boost , Scuro Boost\nDark Color , Colore scuro\nDark Edges , Bordi scuri\nDark Green 02 , Verde scuro 02\nDark Green 1 , Verde scuro 1\nDark Grey , Grigio scuro\nDark Length , Lunghezza scura\nDark Motive , Motivo scuro\nDark Pixels , Pixel scuri\nDark Place 01 , Posto scuro 01\nDark Screen , Schermo scuro\nDark Sky , Cielo scuro\nDark Walls , Muri scuri\nDarken , Scurire\nDarker , Più scuro\nDarkness , Buio\nDarkness Level , Livello di oscurità\nDate 39 , Data 39\nDay for Night , Giorno per la notte\nDaylight Scene , Scena alla luce del giorno\nDe-Anaglyph , De-Analisi\nDebug Font Size , Dimensione del carattere di debug\nDecompose , Decomporre\nDecompose Channels , Decomporre i canali\nDecoration , Decorazione\nDecreasing , In diminuzione\nDeep , Profondo\nDeep Blue , Blu profondo\nDeep Dark Warm , Caldo scuro profondo\nDeep High Contrast , Profondo Alto contrasto\nDeep Teal Fade , Dissolvenza alzavola profonda\nDeep Warm Fade , Dissolvenza calda e profonda\nDefault , Predefinito\nDefects Contrast , Difetti Contrasto\nDefects Density , Difetti Densità\nDefects Size , Dimensione dei difetti\nDefects Smoothness , Difetti Lisciozza\nDeform , Deformare\nDelaunay: Portrait De Metzinger , Delaunay: Ritratto De Metzinger\nDelaunay: Windows Open Simultaneously , Delaunay: finestre aperte contemporaneamente\nDelete Layer Source , Cancellare la fonte del livello\nDensity , Densità\nDensity (%) , Densità (%)\nDepth , Profondità\nDepth Fade In Frames , Dissolvenza di profondità nei frame\nDepth Fade Out Frames , Profondità Dissolvenza cornici\nDepth Field Control , Controllo di profondità del campo\nDepth Map , Mappa della profondità\nDepth Map Construction , Costruzione della mappa della profondità\nDepth Map Only , Solo mappa della profondità\nDepth Map Reconstruction , Ricostruzione della mappa della profondità\nDepth Maps Only , Solo mappe di profondità\nDepth-Of-Field Type , Tipo di profondità di campo\nDesaturate (%) , Desaturato (%)\nDesaturate Norm , Norma desaturata\nDescent Method , Metodo della discesa\nDestination (%) , Destinazione (%)\nDestination X-Tiles , Destinazione X-Tiles\nDestination Y-Tiles , Destinazione Y-Tiles\nDetail , Dettaglio\nDetail Level , Livello di dettaglio\nDetail Reconstruction Detection , Rilevamento della ricostruzione di dettaglio\nDetail Reconstruction Smoothness , Dettaglio Ricostruzione Levigatezza\nDetail Reconstruction Strength , Dettaglio Forza di ricostruzione\nDetail Reconstruction Style , Dettaglio Stile di ricostruzione\nDetail Scale , Scala di dettaglio\nDetail Strength , Dettaglio Forza\nDetails , Dettagli\nDetails Amount , Dettagli Importo\nDetails Equalizer , Dettagli Equalizzatore\nDetails Scale , Dettagli Scala\nDetails Smoothness , Dettagli Levigatezza\nDetails Strength (%) , Dettagli Forza (%)\nDetect Skin , Rilevamento della pelle\nDeuteranomaly , Deuteranomalia\nDeviation , Deviazione\nDiamond , Diamante\nDiamond (Inv.) , Diamante (Inv.)\nDiamonds , Diamanti\nDiamonds (Outline) , Diamanti (Schema)\nDices , Dadi\nDices with Colored Numbers , Dadi con numeri colorati\nDices with Colored Sides , Dadi con i lati colorati\nDifference , Differenza\nDifference Mixing , Differenza di miscelazione\nDifference of Gaussians , Differenza dei gaussiani\nDifferent Axis , Asse diverso\nDiffuse (%) , Diffuso (%)\nDiffuse Shadow , Ombra diffusa\nDiffusion , Diffusione\nDiffusion Tensors , Tensori di diffusione\nDiffusivity , Diffusione\nDigits , Cifre\nDilatation , Dilatazione\nDilate , Dilata\nDilation , Dilatazione\nDilation - Original , Dilatazione - Originale\nDilation / Erosion , Dilatazione / Erosione\nDimension , Dimensione\nDimension [Diff] , Dimensione [Diff]\nDimension A , Dimensione A\nDimensions (%) , Dimensioni (%)\nDimensions Pixels , Dimensioni Pixel\nDipole: 1/(4*z^2-1) , Dipolo: 1/(4*z^2-1)\nDirect , Diretta\nDirection , Direzione\nDirections 23 , Indicazioni stradali 23\nDisable , Disattivare\nDisabled , Disabili\nDiscard Contour Guides , Scartare le guide di contorno\nDiscard Transparency , Scartare la trasparenza\nDisco , Discoteca\nDisplay , Visualizzare\nDisplay Color Axes , Assi dei colori del display\nDisplay Contours , Visualizzare i contorni\nDisplay Coordinates , Coordinate del display\nDisplay Coordinates on Preview Window , Visualizzare le coordinate sulla finestra di anteprima\nDisplay Debug Info on Preview , Visualizzare le informazioni di debug sull'anteprima\nDistance , Distanza\nDistance (Fast) , Distanza (Veloce)\nDistance Transform , Trasformazione a distanza\nDistort Lens , Obiettivo distorto\nDistortion Factor , Fattore di distorsione\nDistortion Surface Angle , Angolo di superficie di distorsione\nDistortion Surface Position , Posizione della superficie di distorsione\nDisturbance Scale-By-Factor , Disturbo Scala per Fattore\nDisturbance X , Disturbo X\nDisturbance Y , Disturbo Y\nDither Output , Uscita Dither\nDivide , Dividere\nDo Not Flatten Transparency , Non appiattire la trasparenza\nDodge and Burn , Schivare e bruciare\nDodge Blur , Schivare la sfocatura\nDodge Strength , Schivare la forza\nDOF Analyzer , Analizzatore DOF\nDog , Cane\nDon't Sort , Non ordinare\nDot Size , Dimensione del punto\nDots , Puntini\nDownload External Data , Scarica i dati esterni\nDragon Curve , Curva del Drago\nDragonfly , Libellula\nDrawing Mode , Modalità di disegno\nDrawn Montage , Montaggio disegnato\nDream , Sogno\nDream 1 , Sogno 1\nDream 85 , Sogno 85\nDream Smoothing , Lisciatura dei sogni\nDrop Green Tint 14 , Goccia Verde Tinta 14\nDrop Shadow , Ombra a goccia\nDrop Water , Goccia d'acqua\nDuck , Anatra\nDuplicate Bottom , Duplicare il fondo\nDuplicate Horizontal , Duplicare orizzontale\nDuplicate Left , Duplicare a sinistra\nDuplicate Right , Duplicare il diritto\nDuplicate Top , Duplicare Top\nDuplicate Vertical , Duplicazione verticale\nDuration , Durata\nDynamic Range Increase , Aumento della gamma dinamica\nEagle , Aquila\nEarth , Terra\nEarth Tone Boost , Boost del tono di terra\nEasy Skin Retouch , Ritocco facile della pelle\nEdge Antialiasing , Bordo Antialiasing\nEdge Attenuation , Attenuazione dei bordi\nEdge Behavior X , Comportamento al bordo X\nEdge Behavior Y , Comportamento al bordo Y\nEdge Detect Includes Chroma , Edge Detect include il croma\nEdge Exponent , Esponente di bordo\nEdge Fidelity , Fedeltà di bordo\nEdge Influence , Influenza del bordo\nEdge Mask , Bordo maschera\nEdge Sensitivity , Sensibilità ai bordi\nEdge Shade , Ombra del bordo\nEdge Simplicity , Semplicità del bordo\nEdge Smoothness , Levigatezza del bordo\nEdge Thickness , Spessore del bordo\nEdge Threshold , Soglia del bordo\nEdge Threshold (%) , Soglia del bordo (%)\nEdges , Bordi\nEdges (%) , Bordi (%)\nEdges [Animated] , Bordi [Animato]\nEdges Offsets , Offset di bordi\nEdges on Fire , Bordi sul fuoco\nEdges-0.5 (beware: Memory-Consuming!) , Edges-0.5 (attenzione: Consumo di memoria!)\nEdges-1 (beware: Memory-Consuming!) , Edges-1 (attenzione: Consumo di memoria!)\nEdges-2 (beware: Memory-Consuming!) , Edges-2 (attenzione: Consumo di memoria!)\nEdgy Ember , Ambra tagliente\nEffect Strength , Forza dell'effetto\nEffect X-Axis Scaling , Scalatura dell'asse X ad effetto\nEffect Y-Axis Scaling , Scalatura dell'asse Y dell'effetto\nEight Layers , Otto strati\nEight Threads , Otto fili\nElegance 38 , Eleganza 38\nElephant , Elefante\nElevation , Elevazione\nElevation (%) , Elevazione (%)\nEllipse , Ellisse\nEllipse Painting , Pittura di ellissi\nEllipse Ratio , Rapporto di ellisse\nEllipsionism , Ellitsionismo\nEllipsionism Opacity , Opacità dell'ellisse\nEllipsoid , Ellissoide\nEmboss , Goffratura\nEnable Antialiasing , Attivare Antialiasing\nEnable Interpolated Motion , Attivare il movimento interpolato\nEnable Morphology , Attivare la morfologia\nEnable Paintstroke , Abilita Paintstroke\nEnable Segmentation , Attivare la segmentazione\nEnchanted , Incantato\nEnd Color , Colore finale\nEnd Frame Number , Numero di telaio finale\nEnd of Mid-Tones , Fine dei toni medi\nEnd Point Connectivity , Connettività del punto finale\nEnd Point Rate (%) , Tasso del punto finale (%)\nEnding Angle , Angolo finale\nEnding Color , Colore finale\nEnding Feathering , Piumaggio finale\nEnding Point (%) , Punto finale (%)\nEnding Scale (%) , Scala finale (%)\nEnding Value , Valore finale\nEnding X-Centering , Fine X-Centering\nEnding Y-Centering , Fine del centraggio a Y\nEngrave , Incidi\nEnhance Detail , Migliora il dettaglio\nEnhance Details , Migliora i dettagli\nEqualization , Perequazione\nEqualization (%) , Perequazione (%)\nEqualize , Equalizzare\nEqualize and Normalize , Equalizzare e Normalizzare\nEqualize at Each Step , Pareggiare ad ogni passo\nEqualize HSI-HSL-HSV , Equalizzare HSI-HSL-HSV\nEqualize HSV , Equalizzare HSV\nEqualize Light , Equalizzare la luce\nEqualize Local Histograms , Equalizzare gli istogrammi locali\nEqualize Shadow , Equalizzare l'ombra\nEquation Plot [Parametric] , Grafico delle equazioni [Parametrico]\nEquation Plot [Y=f(X)] , Trama dell'equazione [Y=f(X)\nEquirectangular to Nadir-Zenith , Equirettangolare a Nadir-Zenith\nErosion , Erosione\nErosion / Dilation , Erosione / Dilatazione\nEtch Tones , Toni dell'acquaforte\nEterna for Flog , Eterna per Flog\nEuclidean , Euclidea\nEuclidean - Polar , Euclidea - Polare\nExclusion , Esclusione\nExpand , Espandere\nExpand Background Reconstruction , Espandere la ricostruzione di sfondo\nExpand Shadows , Espandere le ombre\nExpand Size , Espandere le dimensioni\nExpanding Mirrors , Specchietti espandibili\nExpired (fade) , Scaduto (dissolvenza)\nExpired (polaroid) , Scaduto (polaroid)\nExpired 69 , Scaduto 69\nExponent , Esponente\nExponent (Imaginary) , Esponente (Immaginario)\nExponent (Real) , Esponente (reale)\nExponential , Esponenziale\nExport RGB-565 File , Esportazione del file RGB-565\nExposure , Esposizione\nExpression , Espressione\nExtend 1px , Estendere 1px\nExternal Transparency , Trasparenza esterna\nExtra  Smooth , Extra liscio\nExtract Foreground [Interactive] , Estrarre il primo piano [Interattivo]\nExtract Objects , Estrarre oggetti\nExtrapolate Color Spots on Transparent Top Layer , Estrapolare le macchie di colore sullo strato superiore trasparente\nExtrapolate Colors As , Estrapolare i colori come\nExtrapolated Colors + Lineart , Colori estrapolati + Lineart\nExtreme , Estremo\nFactor , Fattore\nFade , Dissolvenza\nFade End , Dissolvenza Fine\nFade End (%) , Fine dissolvenza (%)\nFade Layers , Strati di dissolvenza\nFade Start , Inizio dissolvenza\nFade Start (%) , Inizio dissolvenza (%)\nFade to Green , Dissolvenza al verde\nFaded , Svanito\nFaded (alt) , Sbiadito (alt)\nFaded (analog) , Sbiadito (analogico)\nFaded (extreme) , Sbiadito (estremo)\nFaded (vivid) , Sbiadito (vivido)\nFaded 47 , Svanito 47\nFaded Green , Verde sbiadito\nFaded Look , Sguardo sbiadito\nFaded Print , Stampa sbiadita\nFaded Retro 01 , Retrò sbiadito 01\nFaded Retro 02 , Retrò sbiadito 02\nFading , Dissolvenza\nFading Shape , Forma di dissolvenza\nFall Colors , Colori d'autunno\nFar Point Deviation , Deviazione del punto lontano\nFast , Veloce\nFast &#40;Approx.&#41; , Veloce (Circa.)\nFast (Low Precision) Preview , Anteprima veloce (bassa precisione)\nFast Approximation , Ravvicinamento rapido\nFast Blend , Miscela veloce\nFast Blend Preview , Anteprima della miscela veloce\nFast Recovery , Recupero rapido\nFast Resize , Ridimensionamento rapido\nFaux Infrared , Finto infrarosso\nFeathering , Piumaggio\nFeature Analyzer Smoothness , Funzione Analyzer Smoothness\nFeature Analyzer Threshold , Soglia dell'analizzatore delle caratteristiche\nFelt Pen , Penna di feltro\nFFT Preview , Anteprima FFT\nFibers , Fibre\nFibers Amplitude , Ampiezza delle fibre\nFibers Smoothness , Fibre Liscio come l'olio\nFibrousness , Fibrosità\nFidelity Chromaticity , Fedeltà Cromaticità\nFidelity Smoothness (Coarsest) , Fidelity Smoothness (più grossolana)\nFidelity to Target (Coarsest) , Fedeltà al bersaglio (più grossolana)\nFidelity to Target (Finest) , Fedeltà all'obiettivo (Finest)\nFilename , Nome del file\nFill Holes , Riempire i fori\nFill Holes % , Riempire i fori\nFill Transparent Holes , Riempire i fori trasparenti\nFilled , Compilato\nFilled Circles , Cerchi riempiti\nFilling , Riempimento\nFilm Highlight Contrast , Contrasto del film in evidenza\nFilm Print 01 , Stampa pellicola 01\nFilm Print 02 , Stampa Film 02\nFilter Design , Design del filtro\nFilterGrade Cinematic (8) , FilterGrade cinematografico (8)\nFinal Image , Immagine finale\nFine , Bene\nFine 2 , Bene 2\nFine Details Smoothness , Dettagli fini Lisciozza\nFine Details Threshold , Soglia dei dettagli\nFine Noise , Rumore fine\nFine Scale , Scala fine\nFinest (slower) , Finest (più lento)\nFinger Paint , Vernice a dito\nFinger Size , Dimensione del dito\nFire Effect , Effetto Fuoco\nFireworks , Fuochi d'artificio\nFirst , Prima\nFirst Color , Primo colore\nFirst Frame , Primo fotogramma\nFirst Offset , Primo Offset\nFirst Radius , Primo raggio\nFirst Size , Prima dimensione\nFish-Eye Effect , Effetto occhio di pesce\nFitting Function , Funzione di montaggio\nFive Layers , Cinque strati\nFlag , Bandiera\nFlag (256) , Bandiera (256)\nFlat , Appartamento\nFlat 30 , Appartamento 30\nFlat Color , Colore piatto\nFlat Regions Removal , Rimozione di regioni pianeggianti\nFlatness , Piattezza\nFlip & Rotate Blocs , Capovolgere e ruotare i blocchi\nFlip Left / Right , Capovolgere a sinistra / destra\nFlip Left/Right , Capovolgere a sinistra/destra\nFlip The Pattern , Capovolgere il modello\nFlip Tolerance , Tolleranza al ribaltamento\nFlower , Fiore\nFoggy Night , Notte nebbiosa\nFolder Name , Nome della cartella\nFont Colors , Colori dei caratteri\nFont Height (px) , Altezza del carattere (px)\nForce Gray , Forza Grigio\nForce Re-Download from Scratch , Forza Re-Download da Gratta e Vinci\nForce Tiles to Have Same Size , Forzare le piastrelle ad avere la stessa dimensione\nForce Transparency , Forza la trasparenza\nForeground Color , Colore di primo piano\nForm , Modulo\nForward , Inoltrare\nForward  Horizontal , Avanti Orizzontale\nForward Horizontal , Avanti Orizzontale\nForward Vertical , Avanti verticale\nFour Layers , Quattro strati\nFour Threads , Quattro fili\nFourier Analysis , Analisi di Fourier\nFourier Filtering , Filtraggio di Fourier\nFourier Transform , Trasformazione di Fourier\nFourier Watermark , Filigrana di Fourier\nFractal Noise , Rumore frattale\nFractal Points , Punti frattali\nFractal Set , Set frattale\nFractal Whirl , Vortice frattale\nFractured Clouds , Nuvole fratturate\nFragment Blur , Sfocatura del frammento\nFrame (px) , Telaio (px)\nFrame [Blur] , Telaio [Sfocatura]\nFrame [Cube] , Telaio [Cube]\nFrame [Fuzzy] , Telaio [Fuzzy]\nFrame [Mirror] , Telaio [Specchio]\nFrame [Painting] , Telaio [Pittura]\nFrame [Pattern] , Telaio [Modello]\nFrame [Regular] , Telaio [Regolare]\nFrame [Round] , Telaio [Rotondo]\nFrame [Smooth] , Telaio [liscio]\nFrame as a New Layer , Telaio come nuovo strato\nFrame Color , Colore del telaio\nFrame Files Format , Formato dei file frame\nFrame Format , Formato del telaio\nFrame Size , Dimensione del telaio\nFrame Skip , Salto del telaio\nFrame Type , Tipo di telaio\nFrame Width , Larghezza del telaio\nFrames , Cornici\nFrames Offset , Offset di cornici\nFreaky B&W , B&N bizzarro\nFreaky Details , Dettagli stravaganti\nFreeze , Congelare\nFrench Comedy , Commedia francese\nFrequency , Frequenza\nFrequency (%) , Frequenza (%)\nFrequency Analyzer , Analizzatore di frequenza\nFrequency Range , Gamma di frequenza\nFreqy Pattern , Modello Freqy\nFriends Hall of Fame , Amici Hall of Fame\nFrom Input , Da ingresso\nFrom Reference Color , Dal colore di riferimento\nFrosted , Glassato\nFrosted Beach Picnic , Picnic sulla spiaggia ghiacciata\nFruits , Frutta\nFuji FP-100c +++ , Fuji FP-100c ++++\nFuji FP-100c Negative , Fuji FP-100c Negativo\nFuji FP-100c Negative + , Fuji FP-100c Negativo +\nFuji FP-100c Negative ++ , Fuji FP-100c Negativo ++\nFuji FP-100c Negative +++ , Fuji FP-100c Negativo ++++\nFuji FP-100c Negative ++a , Fuji FP-100c Negativo ++a\nFuji FP-100c Negative - , Fuji FP-100c negativo -\nFuji FP-100c Negative -- , Fuji FP-100c negativo --\nFuji FP-3000b +++ , Fuji FP-3000b ++++\nFuji FP-3000b Negative , Fuji FP-3000b negativo\nFuji FP-3000b Negative + , Fuji FP-3000b Negativo +\nFuji FP-3000b Negative ++ , Fuji FP-3000b Negativo ++\nFuji FP-3000b Negative +++ , Fuji FP-3000b Negativo ++++\nFuji FP-3000b Negative - , Fuji FP-3000b negativo -\nFuji FP-3000b Negative -- , Fuji FP-3000b negativo --\nFuji FP-3000b Negative Early , Fuji FP-3000b negativo precocemente\nFull , Completo\nFull (Allows Multi-Layers) , Completo (consente di utilizzare più strati)\nFull (Slower) , Pieno (più lento)\nFull Colors , Colori completi\nFull HD Frame Packing , Imballaggio Full HD Frame Packing\nFull Layer Stack -Slow!- , Strato completo di pile -Lenta!\nFull Side by Side Keep Uncompressed , Completo fianco a fianco Mantenere non compresso\nFull Side by Side Keep Width , Larghezza di mantenimento completo fianco a fianco\nFull Side by Uncompressed , Full Side di Uncompressed\nFusion 88 , Fusione 88\nFuturistic Bleak 1 , Futuristico Bleak 1\nFuturistic Bleak 2 , Futuristico Bleak 2\nFuturistic Bleak 3 , Futuristico Bleak 3\nFuturistic Bleak 4 , Futuristico Bleak 4\nG'MIC Operator , Operatore G'MIC\nG/M Smoothness , G/M scorrevolezza\nGain , Guadagnare\nGames & Demos , Giochi e demo\nGamma Balance , Equilibrio Gamma\nGamma Compensation , Compensazione gamma\nGamma Equalizer , Equalizzatore gamma\nGaussian , Gaussiano\nGear , Ingranaggi\nGenerate Random-Colors Layer , Genera strato di colori casuali\nGeneric Fuji Astia 100 , Generico Fuji Astia 100\nGeneric Fuji Provia 100 , Generico Fuji Provia 100\nGeneric Fuji Velvia 100 , Generico Fuji Velvia 100\nGeneric Kodachrome 64 , Generico Kodachrome 64\nGeneric Kodak Ektachrome 100 VS , Generico Kodak Ektachrome 100 VS\nGeneric Skin Structure , Generico Struttura della pelle\nGentle Mode (overrides Minimum Brightness and Minimun Red:Blue Ratio) , Modalità Gentle (ignora la luminosità minima e il rapporto Rosso Minimo:Blu)\nGeometry , Geometria\nGlobal , Globale\nGlobal Mapping , Mappatura globale\nGmicky & Wilber (by Mahvin) , Gmicky & Wilber (di Mahvin)\nGmicky (by Deevad) , Gmicky (di Deevad)\nGmicky (by Mahvin) , Gmicky (di Mahvin)\nGoing for a Walk , Andare a fare una passeggiata\nGold , Oro\nGolden , Oro\nGolden (bright) , Dorato (brillante)\nGolden (fade) , Dorato (dissolvenza)\nGolden (mono) , Oro (mono)\nGolden (vibrant) , Dorato (vibrante)\nGolden Sony 37 , Sony d'oro 37\nGoldFX - Bright Spring Breeze , GoldFX - Brezza primaverile brillante\nGoldFX - Bright Summer Heat , GoldFX - Calore estivo brillante\nGoldFX - Hot Summer Heat , GoldFX - Caldo caldo estivo\nGoldFX - Perfect Sunset 01min , GoldFX - Tramonto perfetto 01min\nGoldFX - Perfect Sunset 05min , GoldFX - Tramonto perfetto 05min\nGoldFX - Perfect Sunset 10min , GoldFX - Tramonto perfetto 10min\nGoldFX - Spring Breeze , GoldFX - Brezza di Primavera\nGoldFX - Summer Heat , GoldFX - Calore estivo\nGood Morning , Buongiorno\nGradienNormLinearity , GradienNormLinearità\nGradient , Gradiente\nGradient [Corners] , Gradiente [Angoli]\nGradient [Custom Shape] , Gradiente [Forma personalizzata]\nGradient [from Line] , Gradiente [da Line]\nGradient [Linear] , Gradiente [Lineare]\nGradient [Radial] , Gradiente [Radiale]\nGradient [Random] , Gradiente [Casuale]\nGradient Norm , Norma di Gradiente\nGradient Preset , Gradiente Preset\nGradient RGB , Gradiente RGB\nGradient Smoothness , Gradiente scorrevolezza\nGradient Values , Valori gradienti\nGrain , Grano\nGrain (Highlights) , Grano (In evidenza)\nGrain (Midtones) , Grano (Midtones)\nGrain (Shadows) , Grano (Ombre)\nGrain Extract , Estratto di grano\nGrain Merge , Fusione di grani\nGrain Only , Solo cereali\nGrain Scale , Bilancia a grani\nGrain Tone Fading , Sbiadimento del tono del grano\nGrain Type , Tipo di grano\nGranularity , Granularità\nGraphic Boost , Boost Grafico\nGraphic Colours , Colori grafici\nGraphic Novel , Romanzo grafico\nGraphix Colors , Colori Graphix\nGrayscale , Scala di grigi\nGreece , Grecia\nGreen , Verde\nGreen 15 , Verde 15\nGreen 2025 , Verde 2025\nGreen Action , Azione verde\nGreen Afternoon , Pomeriggio verde\nGreen Blues , Blues verde\nGreen Conflict , Conflitto verde\nGreen Day 01 , Giorno verde 01\nGreen Day 02 , Giorno verde 02\nGreen Factor , Fattore verde\nGreen G09 , Verde G09\nGreen Indoor , Verde Indoor\nGreen Level , Livello verde\nGreen Light , Luce verde\nGreen Mono , Verde Mono\nGreen Rotations , Rotazioni verdi\nGreen Shift , Turno verde\nGreen Smoothness , Verde Liscio come l'olio\nGreen Wavelength , Lunghezza d'onda verde\nGreen Yellow , Verde Giallo\nGreen-Blue , Verde-Blu\nGreen-Red , Verde-Rosso\nGreenish Contrasty , Contrasto verdastro\nGreenish Fade , Dissolvenza verdastra\nGreenish Fade 1 , Dissolvenza verdastra 1\nGrey , Grigio\nGreyscale , Scala di grigi\nGrid , Griglia\nGrid [Cartesian] , Griglia [cartesiana]\nGrid [Hexagonal] , Griglia [esagonale]\nGrid [Triangular] , Griglia [Triangolare]\nGrid Divisions , Divisioni della griglia\nGrid Smoothing , Lisciatura della griglia\nGrid Width , Larghezza della griglia\nGritty , Grintoso\nGrow Alpha , Crescere Alfa\nGuide As , Guida Come\nGuide Mix , Guida Mix\nGuide Recovery , Guida al recupero\nGum Leaf , Foglia di gomma\nGummy , Gommoso\nH Cutoff , H Taglio\nHair Locks , Serrature per capelli\nHaldCLUT Filename , HaldCLUT Nome del file\nHalf Bottom/top , Metà fondo/sopra\nHalf Side  by Side , Fianco a fianco\nHalftone , Mezzitoni\nHalftone Shapes , Forme mezzitoni\nHanoi Tower , Torre di Hanoi\nHappyness 133 , Felicità 133\nHard Dark , Duro scuro\nHard Light , Luce dura\nHard Sketch , Schizzo duro\nHard Teal Orange , Alzavola dura Arancione\nHarsh Day , Giornata difficile\nHarsh Sunset , Duro tramonto\nHDR Effect (Tone Map) , Effetto HDR (Mappa del tono)\nHeart , Cuore\nHearts , Cuori\nHearts (Outline) , Cuori (Schema)\nHedcut (Experimental) , Hedcut (Sperimentale)\nHeight , Altezza\nHeight (%) , Altezza (%)\nHexagon , Esagono\nHexagonal , Esagonale\nHigh , Alto\nHigh (Slower) , Alto (più lento)\nHigh Frequency , Alta frequenza\nHigh Frequency Layer , Strato ad alta frequenza\nHigh Key , Chiave alta\nHigh Pass , Passaporto alto\nHigh Quality , Alta qualità\nHigh Scale , Scala alta\nHigh Speed , Alta velocità\nHigh Value , Alto valore\nHigher Mask Threshold (%) , Soglia della maschera più alta (%)\nHighlight , Evidenziare\nHighlight (%) , Evidenziare (%)\nHighlight Bloom , Evidenziare Bloom\nHighlights , In evidenza\nHighlights Abstraction , In evidenza l'astrazione\nHighlights Brightness , Evidenzia la luminosità\nHighlights Color Intensity , Evidenzia l'intensità del colore\nHighlights Crossover Point , In evidenza Crossover Point\nHighlights Hue , Caratteristiche principali Tonalità\nHighlights Lightness , Evidenzia la leggerezza\nHighlights Protection , Evidenzia la protezione\nHighlights Selection , Selezione dei punti salienti\nHighlights Threshold , Soglia in evidenza\nHighlights Zone , Zone in evidenza\nHighres CLUT , CLUT ad alta risoluzione\nHistogram , Istogramma\nHistogram Analysis , Analisi dell'istogramma\nHistogram Transfer , Trasferimento dell'istogramma\nHokusai: The Great Wave , Hokusai: La Grande Onda\nHomogeneity , Omogeneità\nHope Poster , Poster della speranza\nHorisontal Length , Lunghezza orizzontale\nHorizon Leveling (deg) , Livellamento all'orizzonte (deg)\nHorizontal , Orizzontale\nHorizontal (%) , Orizzontale (%)\nHorizontal Amount , Importo orizzontale\nHorizontal Array , Array orizzontale\nHorizontal Blur , Sfocatura orizzontale\nHorizontal Length , Lunghezza orizzontale\nHorizontal Size (%) , Dimensione orizzontale (%)\nHorizontal Stripes , Strisce orizzontali\nHorizontal Tiles , Piastrelle orizzontali\nHorizontal Warp Only , Solo ordito orizzontale\nHorror Blue , Horror Blu\nHot , Caldo\nHot (256) , Caldo (256)\nHough Sketch , Schizzo di Hough\nHough Transform , Trasformazione del ramo\nHouse , Casa\nHouseholder , Proprietario di casa\nHSI [all] , HSI [tutti]\nHSI [Intensity] , HSI [Intensità]\nHSL [all] , HSL [tutti]\nHSL [Lightness] , HSL [Leggerezza]\nHSL Adjustment , Regolazione HSL\nHSV [all] , HSV [tutti]\nHSV [Hue] , HSV [Tinta]\nHSV [Saturation] , HSV [Saturazione]\nHSV [Value] , HSV [Valore]\nHSV Select , HSV Seleziona\nHue , Tinta\nHue (%) , Tonalità (%)\nHue Band , Tinta Band\nHue Factor , Fattore di tinta\nHue Lighten-Darken , Tinta Alleggerisci-Schiarisci-Schiarisci\nHue Max (%) , Tinta Max (%)\nHue Min (%) , Tinta Min (%)\nHue Offset , Tinta Offset\nHue Range , Gamma di tinte\nHue Shift , Spostamento della tonalità\nHue Smoothness , Tonalità L'uniformità della tinta\nHuman  2 , Umano 2\nHuman 1 , Umano 1\nHuman 2 , Umano 2\nHybrid Median - Medium Speed Softest Output , Mediana ibrida - Uscita morbida a media velocità\nHyper Droste , Iper Droste\nHypnosis , Ipnosi\nIain Noise Reduction 2019 , Iain Riduzione del rumore 2019\nIain's Fast Denoise , Lain's Fast Denoise\nIdentity , Identità\nIgnore , Ignora\nIgnore Current Aspect , Ignora l'aspetto corrente\nIlluminate 2D Shape , Illuminate la forma 2D\nIllumination , Illuminazione\nIllustration Look , Illustrazione Guarda\nImage , Immagine\nImage + Background , Immagine + Sfondo\nImage + Colors (2 Layers) , Immagine + colori (2 strati)\nImage + Colors (Multi-Layers) , Immagine + colori (Multi-Layers)\nImage Contour Dimensions , Dimensioni del contorno dell'immagine\nImage Smoothness , Immagine scorrevolezza\nImage to Grab Color from (.Png) , Immagine per prendere il colore da (.Png)\nImage Weight , Peso dell'immagine\nImport Data , Importazione dei dati\nImport RGB-565 File , Importare il file RGB-565\nImpulses 5x5 , Impulsi 5x5\nImpulses 7x7 , Impulsi 7x7\nImpulses 9x9 , Impulsi 9x9\nInch , Pollici\nInclude Opacity Layer , Includere lo strato di opacità\nIncreasing , Aumentare\nIndoor Blue , Blu interno\nIndustrial 33 , Industriale 33\nInfluence of Color Samples (%) , Influenza dei campioni di colore (%)\nInformation , Informazioni\nInit. Resolution , Init. Risoluzione\nInit. Type , Init. Tipo\nInit. With High Gradients Only , Init. Solo con gradienti alti\nInitial Density , Densità iniziale\nInitialization , Inizializzazione\nInk Wash , Lavaggio a inchiostro\nInner , Interno\nInner Fading , Dissolvenza interna\nInner Length , Lunghezza interna\nInner Radius , Raggio interno\nInner Radius (%) , Raggio interno (%)\nInner Shade , Ombra interna\nInpaint [Holes] , Vernice [Fori]\nInpaint [Morphological] , Vernice [Morfologica]\nInpaint [Multi-Scale] , Vernice [Multi-scala]\nInpaint [Patch-Based] , Verniciatura [Patch-Based]\nInpaint [Transport-Diffusion] , Vernice [Trasportazione-diffusione]\nInput , Ingresso\nInput Folder , Cartella di ingresso\nInput Frame Files Name , Nome del file del fotogramma in ingresso\nInput Guide Color , Guida all'ingresso Colore\nInput Layers , Strati di ingresso\nInput Transparency , Trasparenza degli input\nInput Type , Tipo di ingresso\nInsert New CLUT Layer , Inserire il nuovo strato CLUT\nInside , All'interno\nInside Color , Colore interno\nInside-Out , Dentro-Esterno\nInstant [Consumer] (54) , Istante [Consumatore] (54)\nInstant [Pro] (68) , Istantanea [Pro] (68)\nIntensity , Intensità\nIntensity of Purple Fringe , Intensità della frangia viola\nInter-Frames , Inter-Frame\nInterlace Horizontal , Interlacciamento orizzontale\nInterlace Vertical , Intreccio verticale\nInterpolation , Interpolazione\nInterpolation Type , Tipo di interpolazione\nInverse , Inversa\nInverse Depth Map , Mappa profondità inversa\nInverse Radius , Raggio inverso\nInverse Transform , Trasformazione inversa\nInversions , Inversioni\nInvert Background / Foreground , Invertire lo sfondo / Primo piano\nInvert Blur , Invertire la sfocatura\nInvert Canvas Colors , Invertire i colori della tela\nInvert Colors , Invertire i colori\nInvert Image Colors , Invertire i colori delle immagini\nInvert Luminance , Invertire la luminanza\nInvert Mask , Invertire la maschera\nIsophotes , Isofotografie\nIsotropic , Isotropo\nIteration , Iterazione\nIterations , Iterazioni\nJapanese Maple Leaf , Foglia d'acero giapponese\nJet (256) , Getto (256)\nJPEG Artefacts , Artefatti JPEG\nJPEG Smooth , JPEG Liscio\nJust Peachy , Solo Peachy\nK-Factor , Fattore K\nK-Tone Vintage Kodachrome , K-Tone Kodachrome d'epoca\nKaleidoscope [Blended] , Caleidoscopio [Blended]\nKaleidoscope [Polar] , Caleidoscopio [Polare]\nKaleidoscope [Symmetry] , Caleidoscopio [Simmetria]\nKandinsky: Squares with Concentric Circles , Kandinsky: Quadrati con cerchi concentrici\nKandinsky: Yellow-Red-Blue , Kandinsky: Giallo-Rosso-Blu\nKeep , Conservare\nKeep Aspect Ratio , Mantenere il rapporto di aspetto\nKeep Base Layer as Input Background , Mantenere lo strato di base come sfondo di ingresso\nKeep Borders Square , Mantenere la piazza dei confini\nKeep Color Channels , Mantenere i canali di colore\nKeep Colors , Conservare i colori\nKeep Detail , Conservare il dettaglio\nKeep Detail Layer Separate , Tenere separato lo strato di dettaglio\nKeep Iterations as Different Layers , Mantenere le iterazioni come strati diversi\nKeep Layers Separate , Mantenere gli strati separati\nKeep Original Image Size , Mantenere la dimensione originale dell'immagine\nKeep Original Layer , Mantenere lo strato originale\nKeep Tiles Square , Mantenere la piazza delle piastrelle\nKeep Transparency in Output , Mantenere la trasparenza nella produzione\nKernel Multiplier , Moltiplicatore del kernel\nKernel Type , Tipo di kernel\nKey Factor , Fattore chiave\nKey Frame Rate , Frame rate chiave\nKey Shift , Spostamento dei tasti\nKey Smoothness , Principale scorrevolezza\nKeypoint Influence (%) , Influenza dei punti chiave (%)\nKlee: Death and Fire , Klee: Morte e fuoco\nKlee: In the Style of Kairouan , Klee: Nello stile di Kairouan\nKlee: Polyphony 2 , Klee: Polifonia 2\nKlee: Red Waistcoat , Klee: Gilet rosso\nKlimt: The Kiss , Klimt: Il bacio\nKuwahara on Painting , Kuwahara sulla pittura\nKyler Holland (10) , Kyler Olanda (10)\nLab , Laboratorio\nLab (Chroma Only) , Laboratorio (solo croma)\nLab (Distinct) , Laboratorio (Distinto)\nLab (Luma Only) , Laboratorio (Solo Luma)\nLab (Luma/Chroma) , Laboratorio (Luma/Chroma)\nLab (Mixed) , Laboratorio (Misto)\nLab [a-Chrominance] , Laboratorio [a-Chrominance]\nLab [ab-Chrominances] , Laboratorio [ab-Crominanze]\nLab [all] , Laboratorio [tutti]\nLab [b-Chrominance] , Laboratorio [b-Crominanza]\nLab [Lightness] , Laboratorio [Leggerezza]\nLandscape , Paesaggio\nLandscape-1 , Paesaggio-1\nLandscape-10 , Paesaggio-10\nLandscape-2 , Paesaggio-2\nLandscape-3 , Paesaggio-3\nLandscape-4 , Paesaggio-4\nLandscape-5 , Paesaggio-5\nLandscape-6 , Paesaggio-6\nLandscape-7 , Paesaggio-7\nLandscape-8 , Paesaggio-8\nLandscape-9 , Paesaggio-9\nLaplacian , Laplaciano\nLarge , Grande\nLarge Noise , Rumore grande\nLast , Ultimo\nLast Frame , Ultimo fotogramma\nLate Afternoon Wanderlust , Voglia di passeggiare nel tardo pomeriggio\nLate Sunset , Tramonto tardivo\nLava Lamp , Lampada di lava\nLayer , Strato\nLayer Processing , Elaborazione dello strato\nLayers to Tiles , Strati a Piastrelle\nLch [all] , Lch [tutti]\nLch [c-Chrominance] , Lch [c-Crominanza]\nLch [ch-Chrominances] , Lch [ch-Crominanze]\nLch [h-Chrominance] , Lch [h-Crominanza]\nLeaf , Foglia\nLeaf Color , Colore della foglia\nLeaf Opacity (%) , Opacità della foglia (%)\nLeak Type , Tipo di perdita\nLeft , A sinistra\nLeft  Foreground , Primo piano a sinistra\nLeft / Right Blur (%) , Sfocatura sinistra / destra (%)\nLeft and Right Background , Sfondo sinistro e destro\nLeft and Right Foreground , Primo piano a sinistra e a destra\nLeft and Right Image Streams , Flussi di immagini a sinistra e a destra\nLeft Diagonal Foreground , Primo piano diagonale a sinistra\nLeft Foreground , Primo piano a sinistra\nLeft Position , Posizione di sinistra\nLeft Side Orientation , Orientamento a sinistra\nLeft Slope , Pendenza a sinistra\nLeft Stream Only , Solo flusso a sinistra\nLength , Lunghezza\nLenticular Density LPI , Densità lenticolare LPI\nLenticular Orientation , Orientamento lenticolare\nLenticular Print , Stampa lenticolare\nLevel , Livello\nLevel Frequency , Livello Frequenza\nLevels , Livelli\nLife Giving Tree , Albero della vita\nLifestyle & Commercial-1 , Stile di vita e commerciale-1\nLifestyle & Commercial-10 , Stile di vita e commerciale-10\nLifestyle & Commercial-2 , Stile di vita e commerciale-2\nLifestyle & Commercial-3 , Stile di vita e commerciale-3\nLifestyle & Commercial-4 , Stile di vita e commerciale-4\nLifestyle & Commercial-5 , Stile di vita e commerciale-5\nLifestyle & Commercial-6 , Stile di vita e commerciale-6\nLifestyle & Commercial-7 , Stile di vita e commerciale-7\nLifestyle & Commercial-8 , Stile di vita e commerciale-8\nLifestyle & Commercial-9 , Stile di vita e commerciale - 9\nLight , Luce\nLight (blown) , Luce (soffiato)\nLight Angle , Angolo di luce\nLight Color , Colore della luce\nLight Direction , Direzione della luce\nLight Effect , Effetto luce\nLight Glow , Bagliore luminoso\nLight Grey , Grigio chiaro\nLight Leaks , Perdite di luce\nLight Motive , Motivo della luce\nLight Patch , Toppa di luce\nLight Rays , Raggi di luce\nLight Smoothness , Leggera scorrevolezza\nLight Strength , Forza della luce\nLight Type , Tipo di luce\nLighten , Alleggerisci\nLighten Edges , Alleggerire i bordi\nLighter , Accendino\nLighting , Illuminazione\nLighting Angle , Angolo di illuminazione\nLightness , Leggerezza\nLightness (%) , Leggerezza (%)\nLightness Factor , Fattore di leggerezza\nLightness Level , Livello di leggerezza\nLightness Max (%) , Leggerezza Max (%)\nLightness Min (%) , Leggerezza Min (%)\nLightness Shift , Spostamento della luminosità\nLightness Smoothness , Leggerezza Lussureggiante\nLightning , Fulmine\nLighty Smooth , Leggero Liscio\nLimit Hue Range , Gamma di tonalità limite\nLine , Linea\nLine Opacity , Opacità della linea\nLine Precision , Precisione di linea\nLinear , Lineare\nLinear Burn , Bruciatura lineare\nLinear Light , Luce lineare\nLinear RGB , RGB lineare\nLinear RGB [All] , RGB lineare [Tutti]\nLinear RGB [Blue] , RGB lineare [Blu]\nLinear RGB [Green] , RGB lineare [Verde]\nLinear RGB [Red] , RGB lineare [Rosso]\nLinearity , Linearità\nLineart + Color Spots , Lineart + macchie di colore\nLineart + Color Spots + Extrapolated Colors , Lineart + macchie di colore + colori estrapolati\nLineart + Colors , Lineart + Colori\nLineart + Extrapolated Colors , Lineart + colori estrapolati\nLines , Linee\nLines (256) , Linee (256)\nLion , Leone\nLissajous [Animated] , Lissajous [Animato]\nLissajous Spiral , Spirale di Lissajous\nLittle , Piccolo\nLittle Blue , Piccolo Blu\nLittle Cyan , Il piccolo Ciano\nLittle Green , Piccolo verde\nLittle Key , Piccola chiave\nLittle Magenta , Il piccolo Magenta\nLittle Red , Piccolo rosso\nLittle Yellow , Piccolo Giallo\nLN Amplititude , LN Amplificazione\nLN Amplitude , LN Ampiezza\nLN Average-Smoothness , LN Media-levigatezza\nLN Size , Dimensione LN\nLocal  Normalisation , Normalizzazione locale\nLocal Contrast , Contrasto locale\nLocal Contrast Effect , Effetto di contrasto locale\nLocal Contrast Enhance , Miglioramento del contrasto locale\nLocal Contrast Enhancement , Miglioramento del contrasto locale\nLocal Contrast Style , Stile di contrasto locale\nLocal Detail Enhancer , Miglioratore di dettaglio locale\nLocal Normalization , Normalizzazione locale\nLocal Orientation , Orientamento locale\nLocal Processing , Elaborazione locale\nLocal Similarity Mask , Maschera di somiglianza locale\nLocal Variance Normalization , Normalizzazione delle varianti locali\nLock Return Scaling to Source Layer , Bloccare la scala di ritorno al livello di origine\nLock Source , Bloccare la fonte\nLock Uniform Sampling , Bloccare il campionamento uniforme\nLogarithmic Distortion , Distorsione logaritmica\nLogarithmic Distortion Axis Combination for X-Axis , Combinazione di assi di distorsione logaritmica per l'asse X\nLogarithmic Distortion Axis Combination for Y-Axis , Combinazione di assi di distorsione logaritmica per l'asse Y\nLogarithmic Distortion X-Axis Direction , Distorsione logaritmica Direzione asse X\nLogarithmic Distortion Y-Axis Direction , Distorsione logaritmica Direzione asse Y\nLookup , Cerca su\nLookup Factor , Fattore di ricerca\nLookup Size , Dimensione di ricerca\nLoop Method , Metodo del ciclo\nLow , Basso\nLow Bias , Bassa polarizzazione\nLow Contrast Blue , Blu a basso contrasto\nLow Frequency , Bassa frequenza\nLow Frequency Layer , Strato a bassa frequenza\nLow Key , Tasto basso\nLow Key 01 , Tasto basso 01\nLow Scale , Scala bassa\nLow Value , Basso valore\nLower Layer Is the Bottom Layer for All Blends , Lo strato inferiore è lo strato inferiore per tutte le miscele\nLower Mask Threshold (%) , Soglia inferiore della maschera (%)\nLower Side Orientation , Orientamento laterale inferiore\nLowercase Letters , Lettere minuscole\nLowlights Crossover Point , Punto di incrocio dei fari bassi\nLucky 64 , Fortunato 64\nLuma Noise , Rumore di Luma\nLuminance , Luminanza\nLuminance Factor , Fattore di luminanza\nLuminance Level , Livello di luminanza\nLuminance Only , Solo luminanza\nLuminance Only (Lab) , Solo luminanza (laboratorio)\nLuminance Only (YCbCr) , Solo luminanza (YCbCr)\nLuminance Shift , Spostamento di luminanza\nLuminance Smoothness , Luminanza Levigatezza\nLuminosity from Color , Luminosità da Colore\nLuminosity Type , Tipo di luminosità\nLush Green Summer , Estate verde e rigogliosa\nLUTs Pack , Pacchetto LUTs\nLylejk's Painting , La pittura di Lylejk\nMagenta Coffee , Caffè Magenta\nMagenta Day , Giorno di Magenta\nMagenta Day 01 , Magenta Giorno 01\nMagenta Dream , Sogno Magenta\nMagenta Factor , Fattore Magenta\nMagenta Smoothness , Levigatezza magenta\nMagenta Yellow , Giallo magenta\nMagenta-Yellow , Magenta-giallo\nMagic Details , Dettagli magici\nMagnitude / Phase , Magnitudine / Fase\nMail , Posta\nMake Hue Depends on Region Size , La tonalità dipende dalla dimensione della regione\nMake Seamless [Diffusion] , Fare senza soluzione di continuità [Diffusione]\nMake Seamless [Patch-Based] , Fare senza soluzione di continuità [Patch-Based]\nMake Squiggly , Fai Squiggly\nMake Up , Trucco\nManual , Manuale\nManual Controls , Controlli manuali\nMap , Mappa\nMap Tones , Toni della mappa\nMapping , Mappatura\nMarble , Marmo\nMargin (%) , Margine (%)\nMascot Image , Mascotte Immagine\nMasculine , Maschile\nMask , Maschera\nMask + Background , Maschera + Sfondo\nMask as Bottom Layer , Maschera come strato inferiore\nMask By , Maschera di\nMask Color , Colore della maschera\nMask Contrast , Contrasto della maschera\nMask Creator , Creatore di maschere\nMask Dilation , Dilatazione della maschera\nMask Size , Dimensione della maschera\nMask Smoothness (%) , Levigatezza della maschera (%)\nMask Type , Tipo di maschera\nMasked Image , Immagine mascherata\nMasking , Mascheramento\nMasterOpacity , MasterOpacità\nMatch Colors With , Abbina i colori con\nMatching Precision (Smaller Is Faster) , Precisione di corrispondenza (più piccolo è più veloce)\nMath Symbols , Simboli matematici\nMatrix , Matrice\nMax Angle , Angolo massimo\nMax Angle Deviation (deg) , Deviazione massima dell'angolo (deg)\nMax Area , Area massima\nMax Curve , Curva massima\nMax Cut (%) , Taglio massimo (%)\nMax Iterations , Iterazioni massime\nMax Length (%) , Lunghezza massima (%)\nMax Offset (%) , Offset massimo (%)\nMax Radius , Raggio massimo\nMax Threshold , Soglia massima\nMaximal Area , Area massima\nMaximal Color Saturation , Saturazione massima del colore\nMaximal Highlights , Massima evidenza\nMaximal Radius , Raggio massimo\nMaximal Seams per Iteration (%) , Cuciture massime per ogni iterazione (%)\nMaximal Size , Dimensione massima\nMaximal Value , Valore massimo\nMaximum , Massimo\nMaximum Dimension , Dimensione massima\nMaximum Image Size , Dimensione massima dell'immagine\nMaximum Number of Image Colors , Numero massimo di colori dell'immagine\nMaximum Number of Output Layers , Numero massimo di strati di uscita\nMaximum Red:Blue Ratio in the Fringe , Rapporto massimo Rosso:Blu nella frangia\nMaximum Saturation , Saturazione massima\nMaximum Size Factor , Fattore di dimensione massima\nMaximum Value , Valore massimo\nMaze , Labirinto\nMaze Type , Tipo di labirinto\nMean Color , Colore medio\nMean Curvature , Curvatura media\nMedian , Mediana\nMedian (beware: Memory-Consuming!) , Mediana (attenzione: Consumo di memoria!)\nMedian Radius , Raggio mediano\nMedium , Medio\nMedium 3 , Medio 3\nMedium Details Smoothness , Medio Dettagli Liscio\nMedium Details Threshold , Medio Dettagli Soglia\nMedium Frequency Layer , Strato a media frequenza\nMedium Scale (Original) , Scala media (originale)\nMedium Scale (Smoothed) , Scala media (levigato)\nMemories , Ricordi\nMerge Brightness / Colors , Unire Luminosità / Colori\nMerge Layers? , Unire gli strati?\nMerging Mode , Modalità di fusione\nMerging Option , Opzione di fusione\nMerging Steps , Fasi di fusione\nMess with Bits , Giochi con i bit\nMetal , Metallo\nMetallic Look , Look metallico\nMethod , Metodo\nMetric , Metrico\nMicro/macro Details  Adjusted , Dettagli Micro/macro regolati\nMid , Metà\nMid Grey , Grigio medio\nMid Noise , Rumore medio\nMid Offset , Offset medio\nMid Tone Contrast , Contrasto di tono medio\nMid-Dark Grey , Grigio scuro\nMid-Light Grey , Grigio Medio-Luce\nMiddle Grey , Grigio Medio\nMiddle Scale , Scala media\nMidtones Brightness , Midtones Luminosità\nMidtones Color Intensity , Intensità del colore dei mezzitoni\nMidtones Hue , Tonalità Midtones\nMighty Details , Dettagli\nMin Angle Deviation (deg) , Deviazione minima dell'angolo (deg)\nMin Area % , Area min.\nMin Cut (%) , Taglio minimo (%)\nMin Length (%) , Lunghezza minima (%)\nMin Offset (%) , Offset minimo (%)\nMin Radius , Raggio minimo\nMin Threshold , Soglia minima\nMineral Mosaic , Mosaico minerale\nMinesweeper , Spazzacamino\nMinimal Area , Area minima\nMinimal Area (%) , Area minima (%)\nMinimal Color Intensity , Intensità di colore minima\nMinimal Path , Percorso minimo\nMinimal Radius , Raggio minimo\nMinimal Region Area , Area geografica minima\nMinimal Scale (%) , Scala minima (%)\nMinimal Shape Area , Area di forma minima\nMinimal Size , Dimensione minima\nMinimal Size (%) , Dimensione minima (%)\nMinimal Stroke Length , Lunghezza minima della corsa\nMinimal Value , Valore minimo\nMinimalist Caffeination , Caffeinazione minimalista\nMinimum , Minimo\nMinimum Brightness , Luminosità minima\nMinimum Red:Blue Ratio in the Fringe , Rapporto minimo Rosso:Blu nella frangia\nMirror , Specchio\nMirror Effect , Effetto Specchio\nMirror X , Specchio X\nMirror Y , Specchio Y\nMirror-X , Specchio-X\nMirror-XY , Specchio-XY\nMixed Mode , Modo misto\nMixer [CMYK] , Miscelatore [CMYK]\nMixer [HSV] , Miscelatore [HSV]\nMixer [Lab] , Miscelatore [Lab]\nMixer [PCA] , Miscelatore [PCA]\nMixer [RGB] , Miscelatore [RGB]\nMixer [YCbCr] , Miscelatore [YCbCr]\nMixer Mode , Modalità Mixer\nMixer Style , Stile Mixer\nMode , Modalità\nModern Film , Film moderno\nModulo Value , Modulo Valore\nMoir&eacute; Animation , Moir&eacute; Animazione\nMoire Removal , Rimozione di Moire\nMoire Removal Method , Metodo di rimozione della moiré\nMona Lisa , Monna Lisa\nMondrian: Composition in Red-Yellow-Blue , Mondrian: Composizione in rosso-giallo-blu\nMondrian: Evening; Red Tree , Mondrian: Sera; Albero Rosso\nMondrian: Gray Tree , Mondrian: Albero grigio\nMonet: San Giorgio Maggiore at Dusk , Monet: San Giorgio Maggiore al crepuscolo\nMonet: Water-Lily Pond , Monet: Stagno delle ninfee\nMonet: Wheatstacks - End of Summer , Monet: Pagliacci di grano - Fine estate\nMonkey , Scimmia\nMono Tinted , Mono Tinto\nMono+Ye , Mono+Sì\nMono-Directional , Mono-Direzionale\nMonochrome , Monocromatico\nMonochrome 1 , Monocromatico 1\nMonochrome 2 , Monocromatico 2\nMontage , Montaggio\nMontage Type , Tipo di montaggio\nMoonlight 01 , Chiaro di luna 01\nMorning 6 , Mattina 6\nMorph [Interactive] , Morph [Interattivo]\nMorph Layers , Strati morfici\nMorphological - Fastest Sharpest Output , Morfologico - Uscita più veloce e più nitida\nMorphological Closing , Chiusura morfologica\nMorphological Filter , Filtro morfologico\nMorphology Painting , Morfologia Pittura\nMorphology Strength , Morfologia Forza\nMosaic , Mosaico\nMost , La maggior parte\nMostly Blue , Per lo più blu\nMotion Analyzer , Analizzatore di movimento\nMotion-Compensated , Compensati dal movimento\nMuch , Molto\nMuch Blue , Molto blu\nMuch Green , Molto verde\nMuch Red , Molto rosso\nMulti-Layer Etch , Acquaforte a più strati\nMultiple Colored Shapes Over Transp. BG , Forme multiple colorate su Transp. BG\nMultiple Layers , Strati multipli\nMultiplier , Moltiplicatore\nMultiply , Moltiplicare\nMultiscale Operator , Operatore multiscala\nMunch: The Scream , Munch: L'urlo\nMuted 01 , Silenzioso 01\nMuted Fade , Dissolvenza silenziosa\nMystic Purple Sunset , Tramonto Mistico Viola\nName , Nome\nNatural (vivid) , Naturale (vivido)\nNature & Wildlife-1 , Natura e fauna selvatica-1\nNature & Wildlife-10 , Natura e fauna selvatica-10\nNature & Wildlife-2 , Natura e fauna selvatica-2\nNature & Wildlife-3 , Natura e fauna selvatica-3\nNature & Wildlife-4 , Natura e fauna selvatica-4\nNature & Wildlife-5 , Natura e fauna selvatica-5\nNature & Wildlife-6 , Natura e fauna selvatica6\nNature & Wildlife-7 , Natura e fauna selvatica-7\nNature & Wildlife-8 , Natura e fauna selvatica-8\nNature & Wildlife-9 , Natura e fauna selvatica-9\nNb Circles Surrounding , Nb Circoli circostanti\nNear Black , Vicino al Nero\nNearest , Il più vicino\nNearest Neighbor , Vicino più vicino\nNeat Merge , Fusione ordinata\nNebulous , Nebuloso\nNegate , Negare\nNegation , Negazione\nNegative , Negativo\nNegative [Color] (13) , Negativo [Colore] (13)\nNegative [New] (39) , Negativo [Nuovo] (39)\nNegative [Old] (44) , Negativo [Vecchio] (44)\nNegative Color Abstraction , Astrazione del colore negativo\nNegative Colors , Colori negativi\nNegative Effect , Effetto negativo\nNeighborhood Size (%) , Dimensioni del quartiere (%)\nNeighborhood Smoothness , Quartiere Smoothness\nNeon Lightning , Fulmini al neon\nNeutral Color , Colore neutro\nNeutral Teal Orange , Alzavola neutra arancione\nNeutral Warm Fade , Neutro Caldo Dissolvenza\nNew Curves [Interactive] , Nuove curve [Interattivo]\nNewspaper , Giornale\nNewton Fractal , Newton Frattale\nNight 01 , Notte 01\nNight Blade 4 , Lama da notte 4\nNight From Day , Notte dal giorno\nNight King 141 , Notte Re 141\nNight Spy , Spia notturna\nNine Layers , Nove strati\nNo Masking , No Mascheramento\nNo Recovery , Nessun recupero\nNo Rescaling , Nessun ridimensionamento\nNo Transparency , Nessuna trasparenza\nNoise , Rumore\nNoise [Additive] , Rumore [Additivo]\nNoise [Perlin] , Rumore [Perlin]\nNoise [Spread] , Rumore [Diffusione]\nNoise A , Rumore A\nNoise B , Rumore B\nNoise C , Rumore C\nNoise D , Rumore D\nNoise Level , Livello di rumore\nNoise Scale , Scala del rumore\nNoise Type , Tipo di rumore\nNon-Linearity , Non linearità\nNon-Rigid , Non-Rigido\nNone , Nessuno\nNone (Allows Multi-Layers) , Nessuno (Consente Multi-Layers)\nNone- Skip , None- Salta\nNorm Type , Tipo di norma\nNormal , Normale\nNormal Map , Mappa normale\nNormal Output , Uscita normale\nNormalization , Normalizzazione\nNormalize , Normalizzare\nNormalize Brightness , Normalizzare la luminosità\nNormalize Colors , Normalizzare i colori\nNormalize Illumination , Normalizzare l'illuminazione\nNormalize Input , Normalizzare l'ingresso\nNormalize Luma , Normalizzare Luma\nNormalize Scales , Normalizzare le scale\nNostalgia Honey , Nostalgia Miele\nNostalgic , Nostalgico\nNothing , Niente\nNumber , Numero\nNumber of Added Frames , Numero di fotogrammi aggiunti\nNumber of Angles , Numero di angoli\nNumber of Clusters , Numero di cluster\nNumber of Colors , Numero di colori\nNumber of Frames , Numero di fotogrammi\nNumber of Inter-Frames , Numero di Inter-Frame\nNumber of Iterations per Scale , Numero di iterazioni per scala\nNumber of Key-Frames , Numero di fotogrammi chiave\nNumber of Levels , Numero di livelli\nNumber of Matches (Coarsest) , Numero di partite (più grossolano)\nNumber of Matches (Finest) , Numero di partite (Finest)\nNumber of Orientations , Numero di Orientamenti\nNumber Of Rays , Numero di raggi\nNumber of Scales , Numero di Bilance\nNumber of Sizes , Numero di dimensioni\nNumber of Streaks , Numero di strisce\nNumber of Teeth , Numero di denti\nNumber of Tones , Numero di toni\nObject Animation , Animazione dell'oggetto\nObject Ratio , Rapporto oggetto\nObject Tolerance , Tolleranza dell'oggetto\nOctagon , Ottagono\nOctagonal , Ottagonale\nOctaves , Ottave\nOddness (%) , Stranezza (%)\nOffset Angle Rays Layer 1 , Offset Angolo Raggi Offset Layer 1\nOffset Angle Rays Layer 2 , Offset Angolo Raggi Offset Layer 2\nOld Method - Slowest , Vecchio metodo - Il più lento\nOld Photograph , Vecchia fotografia\nOld West , Vecchio West\nOld-Movie Stripes , Strisce di vecchi film\nON1 Photography (90) , ON1 Fotografia (90)\nOnce Upon a Time , C'era una volta\nOne Layer , Uno strato\nOne Layer (Horizontal) , Uno strato (orizzontale)\nOne Layer (Vertical) , Uno strato (verticale)\nOne Layer per Single Color , Uno strato per ogni singolo colore\nOne Layer per Single Region , Un solo strato per singola regione\nOne Thread , Un filo\nOnly Leafs , Solo Foglie\nOnly Red , Solo rosso\nOnly Red and Blue , Solo rosso e blu\nOpacity , Opacità\nOpacity (%) , Opacità (%)\nOpacity as Heightmap , Opacità come mappa delle altezze\nOpacity Contours , Contorni di opacità\nOpacity Factor , Fattore di opacità\nOpacity Gain , Guadagno di opacità\nOpacity Gamma , Opacità Gamma\nOpacity Snowflake , Opacità Fiocco di neve\nOpacity Threshold (%) , Soglia di opacità (%)\nOpaque Pixels , Pixel opachi\nOpaque Regions on Top Layer , Regioni opache sullo strato superiore\nOpaque Skin , Pelle opaca\nOpen Interactive Preview , Apri l'intervista interattiva\nOpening , Apertura\nOperation Yellow , Operazione Giallo\nOperator , Operatore\nOpposing , Contrariamente a\nOptimized Lateral Inhibition , Inibizione laterale ottimizzata\nOrange Dark 4 , Arancione scuro 4\nOrange Dark 7 , Arancione scuro 7\nOrange Dark Look , Arancione scuro\nOrange Tone , Tono arancione\nOrange Underexposed , Arancione Sottoesposto\nOranges , Arance\nOrder , Ordine\nOrder By , Ordina per\nOrientation , Orientamento\nOrientation Coherence , Coerenza di orientamento\nOrientation Only , Solo orientamento\nOrientations , Orientamenti\nOriginal , Originale\nOriginal - (Opening + Closing)/2 , Originale - (Apertura + Chiusura)/2\nOriginal - Erosion , Originale - Erosione\nOriginal - Opening , Originale - Apertura\nOrthogonal Radius , Raggio ortogonale\nOthers (69) , Altri (69)\nOuline Color , Colore Oulina\nOuter , Esterno\nOuter Fading , Dissolvenza esterna\nOuter Length , Lunghezza esterna\nOuter Radius , Raggio esterno\nOutline (%) , Schema (%)\nOutline Color , Colore del contorno\nOutline Contrast , Contorno Contrasto\nOutline Opacity , Opacità del contorno\nOutline Size , Dimensione del contorno\nOutline Smoothness , Contorno Liscio come l'olio\nOutline Thickness , Spessore del contorno\nOutlined , In evidenza\nOutput , Uscita\nOutput As , Uscita come\nOutput as Files , Output come file\nOutput as Frames , Uscita come Frame\nOutput as Multiple Layers , Uscita come strati multipli\nOutput as Separate Layers , Uscita come strati separati\nOutput Ascii File , Uscita File Ascii\nOutput Chroma NR , Uscita Chroma NR\nOutput CLUT , Uscita CLUT\nOutput CLUT Resolution , Risoluzione CLUT in uscita\nOutput Coordinates File , File delle coordinate di uscita\nOutput Corresponding CLUT , Uscita corrispondente CLUT\nOutput Directory , Elenco delle uscite\nOutput Each Piece on a Different Layer , Uscita ogni pezzo su un diverso strato\nOutput Filename , Nome del file in uscita\nOutput Files , File di output\nOutput Folder , Cartella di uscita\nOutput Format , Formato di uscita\nOutput Frames , Cornici di uscita\nOutput Height , Altezza di uscita\nOutput HTML File , File HTML in uscita\nOutput Layers , Strati di uscita\nOutput Mode , Modalità di uscita\nOutput Multiple Layers , Uscita a più strati\nOutput Preset as a HaldCLUT Layer , Uscita preimpostata come strato HaldCLUT\nOutput Region Delimiters , Delimitatori della regione di uscita\nOutput Saturation , Saturazione dell'uscita\nOutput Sharpening , Affilatura in uscita\nOutput Stroke Layer On , Corsa in uscita Layer On\nOutput to Folder , Uscita alla cartella\nOutput Type , Tipo di uscita\nOutput Width , Larghezza di uscita\nOutside , Fuori\nOutside Color , Colore esterno\nOutward , Verso l'esterno\nOverall Blur , Sfocatura globale\nOverall Contrast , Contrasto complessivo\nOverall Lightness , Leggerezza complessiva\nOverlap (%) , Sovrapposizione (%)\nOverlay , Sovrapposizione\nOvershoot , Sovrascatto\nPadding (px) , Imbottitura (px)\nPaint , Dipingere\nPaint Daub , Dipingere Daub\nPaint Effect , Effetto vernice\nPaint Splat , Vernice Splat\nPainter's Edge Protection Flow , Flusso di protezione del bordo del pittore\nPainter's Smoothness , La levigatezza del pittore\nPainter's Touch Sharpness , Nitidezza del tocco del pittore\nPainting , Pittura\nPainting Opacity , Opacità della pittura\nPaladin , Paladino\nPaladin 1875 , Paladino 1875\nPaper Texture , Struttura della carta\nParallel Processing , Elaborazione parallela\nParrots , Pappagalli\nPassing By , Passando\nPastell Art , Arte pastello\nPatch Measure , Misura della toppa\nPatch Size , Dimensione della toppa\nPatch Size for Analysis , Dimensione della toppa per l'analisi\nPatch Size for Synthesis , Dimensione della patch per la sintesi\nPatch Size for Synthesis (Final) , Patch Size per la sintesi (finale)\nPatch Smoothness , Lisciozza della toppa\nPatch Variance , Varianza delle toppe\nPattern , Modello\nPattern Angle , Angolo del modello\nPattern Height , Altezza del modello\nPattern Type , Tipo di modello\nPattern Variation 1 , Modello Variazione 1\nPattern Variation 2 , Variazione di modello 2\nPattern Variation 3 , Variazione di modello 3\nPattern Weight , Peso del modello\nPattern Width , Larghezza del modello\nPaw , Zampa\nPCA Transfer , Trasferimento PCA\nPea Soup , Zuppa di piselli\nPen Drawing , Disegno a penna\nPenalize Patch Repetitions , Penalizzare le ripetizioni di patch\nPencil , Matita\nPencil Amplitude , Ampiezza della matita\nPencil Portrait , Ritratto a matita\nPencil Size , Dimensione matita\nPencil Smoother Edge Protection , Matita più liscia Protezione del bordo della matita\nPencil Smoother Sharpness , Matita più liscia e nitida\nPencil Smoother Smoothness , Matita più liscia liscia\nPencil Type , Tipo di matita\nPencils , Matite\nPentagon , Pentagono\nPeppers , Peperoni\nPercent of Image Half-Hypotenuse (%) , Percentuale di mezza ipotenusa dell'immagine (%)\nPeriodic , Periodico\nPeriodic Dots , Puntini periodici\nPeriodicity , Periodicità\nPerserve Luminance , Perservare la luminanza\nPerspective , Prospettiva\nPerturbation , Perturbazione\nPetals , Petali\nPhase , Fase\nPhone , Telefono\nPhotoComix Preset , Preset PhotoComix\nPhotoillustration , Fotoillustrazione\nPicasso: Seated Woman , Picasso: Donna seduta\nPicasso: The Reservoir - Horta De Ebro , Picasso: Il serbatoio - Horta De Ebro\nPictureFX (19) , ImmagineFX (19)\nPiece Complexity , Complessità del pezzo\nPiece Size (px) , Dimensione del pezzo (px)\nPin Light , Spinotto Luce\nPink Fade , Dissolvenza rosa\nPixel Sort , Tipo di pixel\nPixel Values , Valori dei pixel\nPlacement , Posizionamento\nPlane , Aereo\nPlasma Effect , Effetto plasma\nPlot Type , Tipo di appezzamento\nPoint #0 , Punto n. 0\nPoint #1 , Punto n. 1\nPoint #2 , Punto n. 2\nPoint #3 , Punto 3\nPoint 1 , Punto 1\nPoint 2 , Punto 2\nPoints , Punti\nPolar Transform , Trasformazione polare\nPolaroid 665 Negative , Polaroid 665 Negativo\nPolaroid 665 Negative + , Polaroid 665 Negativo +\nPolaroid 665 Negative - , Polaroid 665 Negativo -\nPolaroid 665 Negative HC , Polaroid 665 HC negativo\nPolaroid 669 +++ , Polaroid 669 ++++\nPolaroid 669 Cold , Polaroid 669 a freddo\nPolaroid 690 Warm , Polaroid 690 Caldo\nPolaroid 690 Warm ++ , Polaroid 690 Caldo ++\nPolaroid Polachrome , Polachrome polaroid\nPolaroid PX-100UV+ Cold , Polaroid PX-100UV+ a freddo\nPolaroid PX-100UV+ Cold + , Polaroid PX-100UV+ freddo +\nPolaroid PX-100UV+ Cold ++ , Polaroid PX-100UV+ freddo ++\nPolaroid PX-100UV+ Cold +++ , Polaroid PX-100UV+ a freddo ++++\nPolaroid PX-100UV+ Cold - , Polaroid PX-100UV+ a freddo -\nPolaroid PX-100UV+ Cold -- , Polaroid PX-100UV+ a freddo --\nPolaroid PX-100UV+ Warm , Polaroid PX-100UV+ Caldo\nPolaroid PX-100UV+ Warm + , Polaroid PX-100UV+ Caldo +\nPolaroid PX-100UV+ Warm ++ , Polaroid PX-100UV+ Caldo ++\nPolaroid PX-100UV+ Warm +++ , Polaroid PX-100UV+ Caldo ++++\nPolaroid PX-100UV+ Warm - , Polaroid PX-100UV+ Caldo -\nPolaroid PX-100UV+ Warm -- , Polaroid PX-100UV+ Caldo --\nPolaroid PX-680 Warm , Polaroid PX-680 Caldo\nPolaroid PX-680 Warm ++ , Polaroid PX-680 Caldo ++\nPolaroid PX-70 +++ , Polaroid PX-70 ++++\nPolaroid PX-70 Warm , Polaroid PX-70 Caldo\nPolaroid PX-70 Warm ++ , Polaroid PX-70 Caldo ++\nPolaroid Time Zero (Expired) , Polaroid Time Zero (Scaduto)\nPolaroid Time Zero (Expired) + , Polaroid Time Zero (scaduto) +\nPolaroid Time Zero (Expired) ++ , Polaroid Time Zero (scaduto) ++\nPolaroid Time Zero (Expired) - , Polaroid Time Zero (scaduto) -\nPolaroid Time Zero (Expired) -- , Polaroid Time Zero (scaduto) --\nPolaroid Time Zero (Expired) --- , Polaroid Time Zero (scaduto) ---\nPolaroid Time Zero (Expired) Cold , Polaroid Time Zero (scaduto) a freddo\nPolaroid Time Zero (Expired) Cold - , Polaroid Time Zero (scaduto) a freddo -\nPolaroid Time Zero (Expired) Cold -- , Polaroid Time Zero (scaduto) a freddo --\nPolaroid Time Zero (Expired) Cold --- , Polaroid Time Zero (scaduto) a freddo ---\nPole Lat , Polo Lat\nPole Long , Polo lungo\nPole Rotation , Rotazione del palo\nPolka Dots , Puntini a polka\nPollock: Convergence , Pollock: Convergenza\nPollock: Summertime Number 9A , Pollock: Estate numero 9A\nPolygonize [Delaunay] , Poligonare [Delaunay]\nPolygonize [Energy] , Poligonare [Energia]\nPop Shadows , Ombre Pop\nPortrait , Ritratto\nPortrait Retouching , Ritocco di ritratti\nPortrait-1 , Ritratto-1\nPortrait-2 , Ritratto-2\nPortrait-3 , Ritratto-3\nPortrait-4 , Ritratto-4\nPortrait-5 , Ritratto-5\nPortrait-6 , Ritratto-6\nPortrait-7 , Ritratto-7\nPortrait-8 , Ritratto-8\nPortrait-9 , Ritratto-9\nPortrait0 , Ritratto0\nPortrait1 , Ritratto1\nPortrait10 , Ritratto10\nPortrait2 , Ritratto2\nPortrait3 , Ritratto3\nPortrait4 , Ritratto4\nPortrait5 , Ritratto5\nPortrait6 , Ritratto6\nPortrait7 , Ritratto7\nPortrait8 , Ritratto8\nPortrait9 , Ritratto9\nPosition , Posizione\nPosition X (%) , Posizione X (%)\nPosition X Origin (%) , Posizione X Origine (%)\nPosition Y (%) , Posizione Y (%)\nPosition Y Origin (%) , Posizione Y Origine (%)\nPositive , Positivo\nPost-Normalize , Post-Normalizzare\nPost-Process , Post-Processo\nPoster Edges , Bordi dei poster\nPosterization Antialiasing , Posterizzazione Antialiasing\nPosterization Level , Livello di posterizzazione\nPosterize , Posterizza\nPosterized Dithering , Dithering posterizzato\nPower , Potenza\nPre-Defined , Predefinito\nPre-Defined Colormap , Colormap predefiniti\nPre-Normalize , Pre-Normalizzare\nPre-Normalize Image , Pre-Normalizzare l'immagine\nPre-Process , Pre-processo\nPrecision , Precisione\nPrecision (%) , Precisione (%)\nPreliminary Surface Shift , Spostamento di superficie preliminare\nPreliminary X-Axis Scaling , Scalatura preliminare dell'asse X\nPreliminary Y-Axis Scaling , Scalatura preliminare dell'asse Y\nPreprocessor Power , Potenza del preprocessore\nPreprocessor Radius , Raggio del preprocessore\nPreserve Canvas for Post Bump Mapping , Conservare la tela per la mappatura degli urti\nPreserve Edges , Conservare i bordi\nPreserve Image Dimension , Conservare la dimensione dell'immagine\nPreserve Initial Brightness , Conservare la luminosità iniziale\nPreserve Luminance , Conservare la luminanza\nPreview , Anteprima\nPreview All Outputs , Anteprima di tutte le uscite\nPreview Bands , Anteprima Bande\nPreview Brush , Anteprima Pennello\nPreview Data , Anteprima dati\nPreview Detected Shapes , Anteprima forme rilevate\nPreview Frame Selection , Anteprima della selezione del telaio\nPreview Gradient , Anteprima Gradiente\nPreview Grain Alone , Anteprima Grano da solo\nPreview Grid , Anteprima Griglia\nPreview Guides , Anteprima Guide\nPreview Mapping , Anteprima Mappatura\nPreview Mask , Maschera di anteprima\nPreview Only Shadow , Anteprima solo ombra\nPreview Opacity (%) , Anteprima Opacità (%)\nPreview Original , Anteprima originale\nPreview Precision , Anteprima Precisione\nPreview Progress (%) , Anteprima Progressi (%)\nPreview Progression While Running , Anteprima Progressione durante l'esecuzione\nPreview Ref Point , Anteprima Ref Point\nPreview Reference Circle , Anteprima Cerchio di riferimento\nPreview Selection , Anteprima selezione\nPreview Shape , Anteprima Forma\nPreview Shows , Anteprima\nPreview Split , Anteprima Split\nPreview Subsampling , Anteprima Sottocampionamento\nPreview Time , Tempo di anteprima\nPreview Tones Map , Anteprima Toni Mappa\nPreview Type , Tipo di anteprima\nPreview Without Alpha , Anteprima senza Alpha\nPrimary Angle , Angolo primario\nPrimary Color , Colore primario\nPrimary Factor , Fattore primario\nPrimary Gamma , Gamma primaria\nPrimary Radius , Raggio primario\nPrimary Shift , Turno primario\nPrimary Twist , Torsione primaria\nPrint Adjustment Marks , Stampa Marchi di regolazione\nPrint Films (12) , Pellicole di stampa (12)\nPrint Frame Numbers , Numeri del telaio di stampa\nPrint Size Unit , Unità di misura per la stampa\nPrint Size Width , Dimensione di stampa Larghezza\nPrivacy Notice , Avviso sulla privacy\nProbability Map , Mappa delle probabilità\nProcedural , Procedurale\nProcess As , Processo Come\nProcess by Blocs of Size , Processo per blocchi di dimensioni\nProcess Channels Individually , Canali di processo individuali\nProcess Top Layer Only , Solo strato superiore del processo\nProcess Transparency , Trasparenza del processo\nProcessing Mode , Modalità di elaborazione\nPropagation , Propagazione\nProportion , Proporzione\nProtanomaly , Protanomalia\nProtect Highlights 01 , Proteggere i punti salienti 01\nPrussian Blue , Blu di Prussia\nPseudo-Gray Dithering , Dithering pseudo-grigio\nPurple , Viola\nPurple11 (12) , Viola11 (12)\nPyramid , Piramide\nPyramid Processing , Elaborazione della piramide\nPythagoras Tree , Albero di Pitagora\nQuadrangle , Quadrangolo\nQuadtree Variations , Variazioni dei quadrupedi\nQuality , Qualità\nQuality (%) , Qualità (%)\nQuantization , Quantizzazione\nQuantize Colors , Colori Quantize\nQuasi-Gaussian , Quasi-Gaussiano\nQuick , Veloce\nQuick Copyright , Copyright rapido\nQuick Enlarge , Ingrandisci rapidamente\nR/B Smoothness (Principal) , R/B scorrevolezza (Principale)\nR/B Smoothness (Secondary) , R/B scorrevolezza (secondario)\nRadial , Radiale\nRadius , Raggio\nRadius (%) , Raggio (%)\nRadius / Angle , Raggio / Angolo\nRadius [Manual] , Raggio [Manuale]\nRadius Cut , Raggio di taglio\nRadius Middle Circle , Raggio Cerchio centrale\nRadius Outer Circle A (>0 W%) (<0 H%) , Raggio Cerchio esterno A (>0 W%) (<0 H%)\nRain & Snow , Pioggia e neve\nRaindrops , Gocce di pioggia\nRandom , Casuale\nRandom [non-Transparent] , Casuale [non-trasparente]\nRandom Angle , Angolo casuale\nRandom Color Ellipses , Ellissi di colore casuale\nRandom Colors , Colori casuali\nRandom Seed , Seme casuale\nRandom Shade Stripes , Strisce d'ombra casuali\nRandomness , Casualità\nRange , Gamma\nRatio , Rapporto\nRaw , Crudo\nRays , Raggi\nRays Colors AB , Raggi Colori AB\nRays Colors ABC , Raggi Colori ABC\nRays Colors ABCD , Raggi Colori ABCD\nRays Colors ABCDE , Raggi Colori ABCDE\nRays Colors ABCDEF , Raggi Colori ABCDEF\nRays Colors ABCDEFG , Raggi Colori ABCDEFG\nRebuild From Similar Blocs , Ricostruire da blocchi simili\nRecompose , Ricomporre\nReconstruct From Previous Frames , Ricostruire dai fotogrammi precedenti\nRecover , Recupera\nRecover Highlights , Recupera i punti salienti\nRecover Shadows , Recuperare le ombre\nRecovery , Recupero\nRectangle , Rettangolo\nRecursion Depth , Profondità di ricorsione\nRecursions , Ricorrenze\nRecursive Median , Mediana ricorsiva\nRed , Rosso\nRed - Green - Blue , Rosso - Verde - Blu\nRed - Green - Blue - Alpha , Rosso - Verde - Blu - Alfa\nRed Afternoon 01 , Pomeriggio rosso 01\nRed Blue Yellow , Rosso Blu Giallo\nRed Chroma Factor , Fattore di croma rosso\nRed Chroma Shift , Spostamento del croma rosso\nRed Chroma Smoothness , Rosso Croma Levigatezza\nRed Chrominance , Crominanza rossa\nRed Day 01 , Giorno rosso 01\nRed Dream 01 , Sogno rosso 01\nRed Factor , Fattore rosso\nRed Level , Livello Rosso\nRed Rotations , Rotazioni rosse\nRed Shift , Spostamento rosso\nRed Smoothness , Rosso Lisciozza\nRed Wavelength , Lunghezza d'onda rossa\nRed-Eye Attenuation , Attenuazione occhi rossi\nRed-Green , Rosso-verde\nReds , Rosso\nReds Oranges Yellows , Arance rosse Arance gialle\nReduce Halos , Ridurre gli aloni\nReduce Noise , Ridurre il rumore\nReduce RAM , Ridurre la RAM\nReduce Redness , Ridurre la riduzione\nReference , Riferimento\nReference Angle (deg.) , Angolo di riferimento (gradi)\nReference Color , Colore di riferimento\nReference Colors , Colori di riferimento\nReflect , Rifletti\nReflection , Riflessione\nRefraction , Rifrazione\nRegular Grid , Griglia regolare\nRegularity , Regolarità\nRegularity (%) , Regolarità (%)\nRegularization , Regolarizzazione\nRegularization (%) , Regolarizzazione (%)\nRegularization Factor , Fattore di regolarizzazione\nRegularization Iterations , Iterazioni di regolarizzazione\nReject , Rifiuta\nRejected Colors , Colori rifiutati\nRejected Mask , Maschera respinta\nRelative Block Count , Conteggio dei blocchi relativi\nRelative Size , Dimensione relativa\nRelative Warping , Orditura relativa\nRelease Notes , Note di rilascio\nRelief , Rilievo\nRelief Amplitude , Ampiezza del rilievo\nRelief Contrast , Rilievo Contrasto\nRelief Light , Luce a rilievo\nRelief Size , Dimensione del rilievo\nRelief Smoothness , Rilievo Levigatezza\nRemove Artifacts From Micro/Macro Detail , Rimuovere gli artefatti da Micro/Macro Detail\nRemove Hot Pixels , Rimuovere i pixel caldi\nRemove Tile , Rimuovere la piastrella\nRender Multiple Frames , Renderizzare più fotogrammi\nRender on Dark Areas , Render su aree buie\nRender on White Areas , Render su aree bianche\nRender Routine for Wiggle Animations , Routine di rendering per le animazioni Wiggle\nRendering Mode , Modalità di rendering\nRepair Scanned Document , Riparazione del documento scansionato\nRepeat , Ripetere\nRepeat [Memory Consuming!] , Ripetere [Consumo di memoria!]\nRepeats , Ripetizioni\nReplace , Sostituire\nReplace (Sharpest) , Sostituire (più nitido)\nReplace Layer with CLUT , Sostituire lo strato con CLUT\nReplace Source by Target , Sostituire la fonte con l'obiettivo\nReplace With White , Sostituire con il bianco\nReplaced Color , Colore sostituito\nReplacement Color , Colore di ricambio\nReptile , Rettile\nReset View , Ripristina vista\nResize Image for Optimum Effect , Ridimensionare l'immagine per un effetto ottimale\nResolution , Risoluzione\nResolution (%) , Risoluzione (%)\nResolution (px) , Risoluzione (px)\nRest 33 , Riposo 33\nResult Image , Risultato Immagine\nResult Type , Tipo di risultato\nResynthetize Texture [FFT] , Sintetizzare la trama [FFT].\nResynthetize Texture [Patch-Based] , Sintetizzare la texture [Patch-Based].\nRetouch Layer , Ritocco strato\nRetouched and Sharpened Areas , Aree ritoccate e affilate\nRetouched Areas Only , Solo aree ritoccate\nRetouched Image , Immagine ritoccata\nRetouched Image Basic , Immagine ritoccata Basic\nRetouched Image Final , Immagine ritoccata finale\nRetouching Style , Stile di fotoritocco\nRetro , Retrò\nRetro Brown 01 , Retrò marrone 01\nRetro Fade , Dissolvenza retrò\nRetro Magenta 01 , Magenta retrò 01\nRetro Summer 3 , Estate retrò 3\nRetro Yellow 01 , Retrò Giallo 01\nReturn Scaling , Scala di ritorno\nReverse Bits , Bit inversi\nReverse Bytes , Byte inversi\nReverse Effect , Effetto inverso\nReverse Endianness , Endiannità inversa\nReverse Flip , Capovolgimento inverso\nReverse Gradient , Gradiente invertito\nReverse Mod , Mod. retromarcia\nReverse Motion , Inversione del movimento\nReverse Order , Ordine inverso\nReverse Pow , Polvere inversa\nReversing , Inversione\nRevert Layer Order , Invertire l'ordine dei livelli\nRevert Layers , Invertire gli strati\nRGB [All] , RGB [Tutti]\nRGB [Blue] , RGB [Blu]\nRGB [Green] , RGB [Verde]\nRGB [red] , RGB [rosso]\nRGB Image + Binary Mask (2 Layers) , Immagine RGB + maschera binaria (2 strati)\nRGB Quantization , Quantizzazione RGB\nRGB Tone , Tono RGB\nRGBA [All] , RGBA [Tutti]\nRGBA [Alpha] , RGBA [Alfa]\nRGBA Foreground + Background (2 Layers) , RGBA Primo piano + sfondo (2 strati)\nRGBA Image (Full-Transparency / 1 Layer) , Immagine RGBA (Trasparenza completa / 1 livello)\nRGBA Image (Updatable / 1 Layer) , Immagine RGBA (aggiornabile / 1 livello)\nRice , Riso\nRight , A destra\nRight Diagonal  Foreground , Primo piano diagonale destro\nRight Diagonal Foreground , Primo piano diagonale destro\nRight Eye View , Vista dall'occhio destro\nRight Foreground , Primo piano a destra\nRight Position , Posizione corretta\nRight Side Orientation , Orientamento a destra\nRight Slope , Pendenza a destra\nRight Stream Only , Solo Stream Right Stream\nRigid , Rigido\nRipple , Ondulazione\nRoddy (by Mahvin) , Roddy (di Mahvin)\nRodilius [Animated] , Rodilio [Animato]\nRollei Retro 80s , Rollei Retro anni '80\nRooster , Gallo\nRose , Rosa\nRotate , Ruota\nRotate (muted) , Ruotare (silenzioso)\nRotate (vibrant) , Ruotare (vibrante)\nRotate 180 Deg. , Ruotare di 180 gradi.\nRotate 270 Deg. , Ruotare di 270 gradi.\nRotate 90 Deg. , Ruotare di 90 gradi.\nRotate Hue Bands , Ruotare le bande di tonalità\nRotate Tree , Ruotare l'albero\nRotated , Ruotato\nRotated (crush) , Ruotato (schiacciamento)\nRotations , Rotazioni\nRoundness , Rotondità\nRow by Row , Fila per Fila\nRYB [All] , RYB [Tutti]\nRYB [Blue] , RYB [Blu]\nRYB [Red] , RYB [Rosso]\nRYB [Yellow] , RYB [Giallo]\nS-Curve Contrast , Contrasto della curva a S\nSalt and Pepper , Sale e pepe\nSame as Input , Uguale a Input\nSame Axis , Stesso asse\nSample Image , Immagine campione\nSampling , Campionamento\nSat Bottom , Fondo Sat\nSat Range , Gamma Sat\nSatin , Raso\nSaturated Blue , Blu saturo\nSaturation , Saturazione\nSaturation (%) , Saturazione (%)\nSaturation Channel Gamma , Canale di saturazione Gamma\nSaturation Correction , Correzione della saturazione\nSaturation EQ , Saturazione EQ\nSaturation Factor , Fattore di saturazione\nSaturation Offset , Offset di saturazione\nSaturation Shift , Saturazione\nSaturation Smoothness , Saturazione L'uniformità della saturazione\nSave CLUT as .Cube or .Png File , Salva CLUT come file .Cube o .Png\nSave Gradient As , Salva gradiente come\nSaving Private Damon , Salvataggio del soldato Damon\nScalar , Scalare\nScale , Scala\nScale (%) , Scala (%)\nScale 1 , Scala 1\nScale 2 , Scala 2\nScale CMYK , Scala CMYK\nScale Factor , Fattore di scala\nScale Output , Scala di uscita\nScale Plasma , Scala al plasma\nScale RGB , Scala RGB\nScale Style to Fit Target Resolution , Stile di scala per adattarsi alla risoluzione del bersaglio\nScale Variations , Variazioni di scala\nScaled , In scala\nScales , Bilancia\nScaling Factor , Fattore di scala\nScene Selector , Selettore di scena\nScience Fiction , Fantascienza\nScreen , Schermo\nScreen Border , Schermo Confine\nSeamless Deco , Deco senza soluzione di continuità\nSeamless Turbulence , Turbolenza senza soluzione di continuità\nSecond Color , Secondo colore\nSecond Offset , Secondo offset\nSecond Radius , Secondo raggio\nSecond Size , Seconda dimensione\nSecondary Color , Colore secondario\nSecondary Factor , Fattore secondario\nSecondary Gamma , Gamma secondaria\nSecondary Radius , Raggio secondario\nSecondary Shift , Turno secondario\nSecondary Twist , Torsione secondaria\nSectors , Settori\nSeed , Seme\nSegment Max Length (px) , Lunghezza massima del segmento (px)\nSegmentation , Segmentazione\nSegmentation Edge Threshold , Soglia di segmentazione del bordo\nSegmentation Smoothness , Segmentazione Levigatezza della segmentazione\nSegments , Segmenti\nSegments Strength , Segmenti Forza\nSelect By , Seleziona per\nSelect-Replace Color , Seleziona-Sostituisci colore\nSelected Color , Colore selezionato\nSelected Colors , Colori selezionati\nSelected Frame , Telaio selezionato\nSelected Mask , Maschera selezionata\nSelection , Selezione\nSelective Desaturation , Desaturazione selettiva\nSelective Gaussian , Gaussiano selettivo\nSelf Glitching , Autoscalfittura\nSelf Image , Immagine di sé\nSensitivity , Sensibilità\nSepia , Seppia\nSequence X4 , Sequenza X4\nSequence X6 , Sequenza X6\nSequence X8 , Sequenza X8\nSerial Number , Numero di serie\nSerpent , Serpente\nSet Aspect Only , Imposta solo l'aspetto\nSet Frame Format , Imposta il formato del telaio\nSeven Layers , Sette strati\nSeventies Magazine , Rivista Seventies\nShade , Ombra\nShade Angle , Angolo d'ombra\nShade Back to First Color , Ombra Torna al primo colore\nShade Strength , Forza dell'ombra\nShading , Ombreggiatura\nShading (%) , Ombreggiatura (%)\nShadow , Ombra\nShadow Contrast , Contrasto d'ombra\nShadow Intensity , Intensità dell'ombra\nShadow King 39 , Re delle ombre 39\nShadow Offset X , Ombra Offset X\nShadow Offset Y , Ombra Offset Y\nShadow Patch , Ombra Patch\nShadow Size , Dimensione dell'ombra\nShadow Smoothness , Ombra Levigatezza\nShadows , Ombre\nShadows Abstraction , Astrazione delle Ombre\nShadows Brightness , Ombre Luminosità\nShadows Color Intensity , Ombre Intensità del colore\nShadows Hue Shift , Spostamento della tonalità delle ombre\nShadows Lightness , Ombre Leggerezza\nShadows Selection , Selezione delle ombre\nShadows Threshold , Soglia delle ombre\nShadows Zone , Zona d'ombra\nShape , Forma\nShape Area Max , Area di forma Max\nShape Area Max0 , Area di forma Max0\nShape Area Min , Forma Area Min\nShape Area Min0 , Area di forma Min0\nShape Average , Forma Media\nShape Average0 , Forma Media0\nShape Max , Forma Max\nShape Max0 , Forma Max0\nShape Median , Forma Mediana\nShape Median0 , Forma Mediana0\nShape Min , Forma Min\nShape Min0 , Forma Min0\nShapes , Forme\nSharp Abstract , Astratto affilato\nSharpen , Affilare\nSharpen [Deblur] , Affilare [Deblur]\nSharpen [Gold-Meinel] , Affilare [Gold-Meinel]\nSharpen [Gradient] , Affilare [Gradiente]\nSharpen [Hessian] , Affilare [Assia]\nSharpen [Inverse Diffusion] , Affilare [Diffusione inversa]\nSharpen [Multiscale] , Affilare [Multiscala]\nSharpen [Octave Sharpening] , Affilare [Affilatura dell'ottava]\nSharpen [Shock Filters] , Affilare [Filtri d'urto]\nSharpen [Texture] , Affilare [Texture]\nSharpen [Tones] , Affilare [Toni]\nSharpen [Unsharp Mask] , Affilare [Maschera non affilata]\nSharpen [Whiten] , Affilare [Sbiancare]\nSharpen Details in Preview , Affila i dettagli in Anteprima\nSharpen Edges Only , Affilare solo i bordi\nSharpen Object , Affilare l'oggetto\nSharpen Radius , Raggio d'azione\nSharpen Shades , Affilare le sfumature\nSharpened Areas Only , Solo aree affilate\nSharpening , Affilatura\nSharpening Layer , Strato di affilatura\nSharpening Radius , Raggio di affilatura\nSharpening Strength , Forza di affilatura\nSharpening Type , Tipo di affilatura\nSharpness , Nitidezza\nShift Linear Interpolation? , Interpolazione lineare a turni?\nShift Point , Punto di spostamento\nShift X , Spostamento X\nShift Y , Spostamento Y\nShivers , Brividi\nShock Waves , Onde d'urto\nShopping Cart , Carrello\nShow Both Poles , Mostra entrambi i poli\nShow Difference , Mostra la differenza\nShow Frame , Mostra telaio\nShow Grid , Mostra griglia\nShow Watershed , Mostra spartiacque\nShuffle Pieces , Shuffle Pezzi\nSide by Side , Fianco a fianco\nSierpinski Triangle , Triangolo di Sierpinski\nSilver , Argento\nSimilarity Space , Spazio di somiglianza\nSimple Local Contrast , Semplice contrasto locale\nSimple Noise Canvas , Tela semplice per il rumore\nSimulate Film , Simulare il film\nSin(z) , Peccato(z)\nSine+ , Seno+\nSingle (Merged) , Singola (Fusa)\nSingle Custom Depth Map , Singola mappa di profondità personalizzata\nSingle Image Stereogram , Stereogramma a immagine singola\nSingle Layer , Singolo strato\nSingle Opaque Shapes Over Transp. BG , Forme opache singole su Trasp. BG\nSix Layers , Sei strati\nSixteen Threads , Sedici fili\nSize , Dimensione\nSize (%) , Dimensione (%)\nSize for Bright Tones , Dimensione per i toni luminosi\nSize for Dark Tones , Dimensione per i toni scuri\nSize of Frame Numbers (%) , Dimensione dei numeri di telaio (%)\nSize Variance , Varianza di dimensione\nSize-1 , Dimensione-1\nSize-2 , Misura-2\nSize-3 , Dimensione-3\nSkeleton , Scheletro\nSketch , Schizzo\nSkin Estimation , Stima della pelle\nSkin Mask , Maschera di pelle\nSkin Tone Colors , Colori della pelle\nSkin Tone Mask , Maschera del tono della pelle\nSkin Tone Protection , Protezione del tono della pelle\nSkip All Other Steps , Salta tutti gli altri passi\nSkip Finest Scales , Salta le scale più fini\nSkip Others Steps , Salta altri passi\nSkip This Step , Salta questo passo\nSkip to Use the Mask to Boost , Salta per usare la maschera per potenziare\nSlice Luminosity , Luminosità a fette\nSlide [Color] (26) , Diapositiva [Colore] (26)\nSlow &#40;Accurate&#41; , Lento (Accurato)\nSlow Recovery , Recupero lento\nSmall , Piccolo\nSmall (Faster) , Piccolo (Più veloce)\nSmart Contrast , Contrasto intelligente\nSmart Threshold , Soglia intelligente\nSmooth , Liscio\nSmooth [Anisotropic] , Liscio [Anisotropo]\nSmooth [Antialias] , Liscio [Antialias]\nSmooth [Bilateral] , Liscio [Bilaterale]\nSmooth [Block PCA] , Liscio [Blocco PCA]\nSmooth [Diffusion] , Liscio [Diffusione]\nSmooth [Geometric-Median] , Liscio [Geometrico-Mediano]\nSmooth [Guided] , Liscio [Guidato]\nSmooth [IUWT] , Liscio [IUWT]\nSmooth [Mean-Curvature] , Liscio [Curvatura media]\nSmooth [Median] , Liscio [Mediano]\nSmooth [NL-Means] , Liscio [NL-Means]\nSmooth [Patch-Based] , Liscio [Patch-Based]\nSmooth [Patch-PCA] , Liscio [Patch-PCA]\nSmooth [Perona-Malik] , Liscio [Perona-Malik]\nSmooth [Selective Gaussian] , Liscio [Gaussiano selettivo]\nSmooth [Skin] , Liscio [Pelle]\nSmooth [Thin Brush] , Liscio [Spazzola sottile]\nSmooth [Total Variation] , Liscio [Variazione totale]\nSmooth [Wavelets] , Liscio [Onde ondulatorie]\nSmooth [Wiener] , Liscio [Wiener]\nSmooth Abstract , Astratto liscio\nSmooth Amount , Importo liscio\nSmooth Clear , Liscio e chiaro\nSmooth Colors , Colori lisci\nSmooth Crome-Ish , Crome-Ish liscio\nSmooth Dark , Scuro liscio\nSmooth Fade , Dissolvenza liscia\nSmooth Green Orange , Verde Liscio Arancione\nSmooth Light , Luce liscia\nSmooth Looping , Looping liscio\nSmooth Only , Solo liscio\nSmooth Sailing , Vela liscia\nSmooth Teal Orange , Arancione alzavola liscio\nSmoothen Background Reconstruction , Lisciare la ricostruzione dello sfondo\nSmoother Edge Protection , Protezione dei bordi più liscia\nSmoother Sharpness , Maggiore nitidezza\nSmoother Softness , Morbidezza più morbida\nSmoothing , Lisciatura\nSmoothing Style , Stile lisciante\nSmoothing Type , Tipo di lisciatura\nSmoothness , Liscio come l'olio\nSmoothness (%) , Levigatezza (%)\nSmoothness (px) , Levigatezza (px)\nSmoothness Shadow , Ombra di levigatezza\nSmoothness Type , Tipo di levigatezza\nSnowflake , Fiocco di neve\nSnowflake 2 , Fiocco di neve 2\nSnowflake Recursion , Ricorsione del fiocco di neve\nSoft  Light , Luce soffusa\nSoft Burn , Bruciatura morbida\nSoft Fade , Dissolvenza morbida\nSoft Glow , Bagliore morbido\nSoft Glow [Animated] , Bagliore morbido [Animato]\nSoft Light , Luce soffusa\nSoft Random Shades , Sfumature casuali morbide\nSoft Warming , Riscaldamento dolce\nSoften , Ammorbidire\nSoften All Channels , Ammorbidire tutti i canali\nSoften Guide , Ammorbidire la guida\nSolarize Color , Solarizzare il colore\nSolarized Color2 , Colore Solarizzato2\nSolidify , Solidificare\nSolve Maze , Risolvere il labirinto\nSome , Alcuni\nSome Blue , Un po' di blu\nSome Cyan , Alcuni ciano\nSome Green , Un po' di verde\nSome Key , Alcune chiavi\nSome Magenta , Alcuni Magenta\nSome Red , Un po' di rosso\nSome Yellow , Un po' di giallo\nSort Colors , Ordina colori\nSorting Criterion , Criterio di ordinamento\nSource (%) , Fonte (%)\nSource Color #1 , Colore sorgente #1\nSource Color #10 , Colore sorgente #10\nSource Color #11 , Colore sorgente #11\nSource Color #12 , Colore sorgente #12\nSource Color #13 , Colore sorgente #13\nSource Color #14 , Colore sorgente #14\nSource Color #15 , Colore sorgente #15\nSource Color #16 , Colore sorgente #16\nSource Color #17 , Colore sorgente #17\nSource Color #18 , Colore sorgente #18\nSource Color #19 , Colore sorgente #19\nSource Color #2 , Colore sorgente #2\nSource Color #20 , Colore sorgente #20\nSource Color #21 , Colore sorgente #21\nSource Color #22 , Colore sorgente #22\nSource Color #23 , Colore sorgente #23\nSource Color #24 , Colore sorgente #24\nSource Color #3 , Colore sorgente #3\nSource Color #4 , Colore sorgente #4\nSource Color #5 , Colore sorgente #5\nSource Color #6 , Colore sorgente #6\nSource Color #7 , Colore sorgente #7\nSource Color #8 , Colore sorgente #8\nSource Color #9 , Colore sorgente #9\nSource X-Tiles , Fonte X-Tiles\nSource Y-Tiles , Fonte Y-Tiles\nSpace , Spazio\nSpacing , Spaziatura\nSpatial Bandwidth , Larghezza di banda spaziale\nSpatial Metric , Metrico spaziale\nSpatial Overlap , Sovrapposizione spaziale\nSpatial Precision , Precisione spaziale\nSpatial Radius , Raggio spaziale\nSpatial Regularization , Regolarizzazione spaziale\nSpatial Sampling , Campionamento spaziale\nSpatial Scale , Scala spaziale\nSpatial Tolerance , Tolleranza spaziale\nSpatial Transition , Transizione spaziale\nSpatial Variance , Varianza spaziale\nSpecial Effects , Effetti speciali\nSpecific Saturation , Saturazione specifica\nSpecify Different Output Size , Specificare le diverse dimensioni di uscita\nSpecify HaldCLUT As , Specificare HaldCLUT come\nSpecular , Speculare\nSpecular (%) , Speculare (%)\nSpecular Centering , Centraggio speculare\nSpecular Intensity , Intensità speculare\nSpecular Light , Luce speculare\nSpecular Lightness , Leggerezza speculare\nSpecular Shininess , Lucentezza speculare\nSpecular Size , Dimensione speculare\nSpeed , Velocità\nSphere , Sfera\nSpiral , Spirale\nSpiral RGB , Spirale RGB\nSpline Max Angle (deg) , Angolo massimo della scanalatura (gradi)\nSpline Max Length (px) , Lunghezza massima della scanalatura (px)\nSpline Roundness , Rotondità della scanalatura\nSplit Base and Detail Output , Dividere la base e l'uscita di dettaglio\nSplit Brightness / Colors , Split Luminosità / Colori\nSplit Details [Alpha] , Dividere i dettagli [Alpha]\nSplit Details [Gaussian] , Dividere i dettagli [Gaussiano]\nSplit Details [Wavelets] , Dettagli di divisione [Wavelets] [Wavelets]\nSponge , Spugna\nSpread , Diffondi\nSpread Amount , Importo dello spread\nSpread Angles , Angoli di diffusione\nSpread Noise Amount , Importo del rumore diffuso\nSpreading , Diffusione\nSpring Morning , Primavera Mattina\nSprocket 231 , Pignone 231\nSpy 29 , Spia 29\nSquare , Piazza\nSquare (Inv.) , Piazza (Inv.)\nSquare 1 , Piazza 1\nSquare 2 , Piazza 2\nSquare to Circle , Da piazza a cerchio\nSquared-Euclidean , Quadrato euclideo\nSquares , Piazze\nSquares (Outline) , Quadrati (Schema)\nSRGB Conversion , Conversione SRGB\nStabilizer , Stabilizzatore\nStained Glass , Vetro colorato\nStamp , Timbro\nStandard [No Scan] , Standard [Nessuna scansione]\nStandard Deviation , Deviazione standard\nStar , Stella\nStar: -5*(z^3/3-Z/4)/2 , Stella: -5*(z^3/3-Z/4)/2\nStardust , Polvere di stelle\nStars , Stelle\nStars (Outline) , Stelle (Contorno)\nStart Angle , Angolo di partenza\nStart Color , Inizio Colore\nStart Frame Number , Numero di telaio di partenza\nStart of Mid-Tones , Inizio dei toni medi\nStarting Angle , Angolo di partenza\nStarting Color , Colore di partenza\nStarting Feathering , Piuma di partenza\nStarting Frame , Telaio di partenza\nStarting Level , Livello di partenza\nStarting Pattern , Schema di partenza\nStarting Point , Punto di partenza\nStarting Point (%) , Punto di partenza (%)\nStarting Scale (%) , Scala di partenza (%)\nStarting Value , Valore di partenza\nStationary Frames , Cornici stazionarie\nStd Angle (deg.) , Angolo Std (deg.)\nStd Branching , Filiale Std\nStd Length Factor (%) , Fattore di lunghezza Std (%)\nStd Thickness Factor (%) , Fattore di spessore Std (%)\nStencil Type , Tipo di stencil\nStep , Passo\nStep (%) , Passo (%)\nSteps , Passi\nStereo Image , Immagine stereo\nStereo Window Position , Posizione della finestra stereo\nStereographic Projection , Proiezione stereografica\nStereoscopic Image Alignment , Allineamento dell'immagine stereoscopica\nStereoscopic Window Position , Posizione della finestra stereoscopica\nStraight , Dritto\nStrands , Fili\nStreet , Via\nStrength , Forza\nStrength (%) , Forza (%)\nStrength Effect , Effetto di forza\nStrength Highlights , Punti di forza\nStrength Midtones , Forza Midtones\nStrength Shadows , Forza Ombre\nStretch , Allungamento\nStretch Colors , Colori estensibili\nStretch Contrast , Contrasto di allungamento\nStretch Factor , Fattore di allungamento\nStrip , Striscia\nStripe Orientation , Orientamento a strisce\nStroke , Corsa\nStroke Angle , Angolo della corsa\nStroke Length , Lunghezza della corsa\nStroke Strength , Forza del colpo\nStrong , Forte\nStructure Smoothness , Struttura scorrevolezza\nStyle , Stile\nStyle Variations , Variazioni di stile\nStylize , Stilizzare\nSubdivisions , Suddivisioni\nSubpixel Interpolation , Interpolazione subpixel\nSubpixel Level , Livello Subpixel\nSubsampling (%) , Sottocampionamento (%)\nSubtle Blue , Sottile Blu\nSubtle Green , Sottile verde\nSubtle Yellow , Sottile Giallo\nSubtract , Sottrarre\nSubtractive , Sottrattivo\nSummer , Estate\nSummer (alt) , Estate (alt)\nSunny (alt) , Soleggiato (alt)\nSunny (rich) , Soleggiato (ricco)\nSunny (warm) , Soleggiato (caldo)\nSuper Warm , Super Caldo\nSuper Warm (rich) , Super caldo (ricco)\nSuper-Pixels , Super-Pixel\nSuperimpose with Original? , Sovrapporre l'originale?\nSurface Disturbance , Disturbo della superficie\nSurface Disturbance Multiplier , Moltiplicatore di Disturbi di Superficie\nSwan , Cigno\nSwap , Scambiare\nSwap Colors , Scambia colori\nSwap Layers , Scambiare gli strati\nSwap Radius / Angle , Raggio di scambio / Angolo\nSwap Sides , Scambiare i lati\nSweet Bubblegum , Gomma da masticare dolce\nSweet Gelatto , Gelatto dolce\nSymmetric 2D Shape , Forma simmetrica 2D\nSymmetry , Simmetria\nSymmetry Sides , Fianchi di simmetria\nSynthesis Scale , Scala di sintesi\nTan(z) , Abbronzatura(z)\nTangent Radius , Raggio tangente\nTarget Color #1 , Colore target #1\nTarget Color #10 , Colore target #10\nTarget Color #11 , Colore target #11\nTarget Color #12 , Colore target #12\nTarget Color #13 , Colore target #13\nTarget Color #14 , Colore target #14\nTarget Color #15 , Colore target #15\nTarget Color #16 , Colore target #16\nTarget Color #17 , Colore target #17\nTarget Color #18 , Colore target #18\nTarget Color #19 , Colore target #19\nTarget Color #2 , Colore target #2\nTarget Color #20 , Colore target #20\nTarget Color #21 , Colore target #21\nTarget Color #22 , Colore target #22\nTarget Color #23 , Colore target #23\nTarget Color #24 , Colore target #24\nTarget Color #3 , Colore target #3\nTarget Color #4 , Colore target #4\nTarget Color #5 , Colore target #5\nTarget Color #6 , Colore target #6\nTarget Color #7 , Colore target #7\nTarget Color #8 , Colore target #8\nTarget Color #9 , Colore target #9\nTeal Fade , Dissolvenza alzavola\nTeal Magenta Gold , Alzavola Magenta Oro\nTeal Moonlight , Alzavola al chiaro di luna\nTeal Orange , Arancia alzavola\nTeal Orange 1 , Alzavola arancione 1\nTeal Orange 2 , Alzavola arancione 2\nTeal Orange 3 , Alzavola arancione 3\nTechnicalFX - Backlight Filter , TechnicalFX - Filtro retroilluminazione\nTemperature Balance , Bilanciamento della temperatura\nTen Layers , Dieci strati\nTends to Be Square , Tende ad essere quadrato\nTension Green 1 , Tensione Verde 1\nTension Green 2 , Tensione verde 2\nTension Green 3 , Tensione verde 3\nTension Green 4 , Tensione verde 4\nTensor Smoothness , Lisciozza della trazione\nTertiary Factor , Fattore terziario\nTertiary Gamma , Gamma Terziario\nTertiary Shift , Spostamento terziario\nTertiary Twist , Torsione terziaria\nText , Testo\nTexture Enhance , Miglioramento della struttura\nTextured Glass , Vetro strutturato\nThe Game of Life , Il gioco della vita\nThe Matrices , Le matrici\nThickness , Spessore\nThickness (%) , Spessore (%)\nThickness (px) , Spessore (px)\nThickness Factor , Fattore di spessore\nThin Edges , Bordi sottili\nThin Separators , Separatori sottili\nThinness , Sottigliezza\nThinning , Diradamento\nThinning (Slow) , Diradamento (lento)\nThree Layers , Tre strati\nThreshold , Soglia\nThreshold (%) , Soglia (%)\nThreshold Etch , Incisione della soglia\nThreshold High , Soglia Alta\nThreshold Low , Soglia bassa\nThreshold Max , Soglia Max\nThreshold Mid , Soglia Media\nThreshold On , Soglia On\nThumbnail Size , Dimensione dell'immagine in miniatura\nTiger , Tigre\nTile Poles , Pali per piastrelle\nTile Size , Dimensione della piastrella\nTileable Rotation , Rotazione piastrellabile\nTiled Isolation , Isolamento piastrellato\nTiled Normalization , Normalizzazione piastrellata\nTiled Parameterization , Parametrizzazione piastrellata\nTiled Preview , Anteprima piastrellata\nTiled Random Shifts , Turni casuali piastrellati\nTiled Rotation , Rotazione piastrellata\nTiles , Piastrelle\nTiles to Layers , Piastrelle a strati\nTilt , Inclinazione\nTime , Tempo\nTime Step , Passo di tempo\nTimed Image , Immagine temporizzata\nTiny , Piccolo\nTo Equirectangular , A Equirettangolare\nTo Nadir / Zenith , A Nadir / Zenith\nToasted Garden , Giardino tostato\nToggle to View Base Image , Passa a visualizzare l'immagine di base\nTolerance , Tolleranza\nTolerance to Gaps , Tolleranza alle lacune\nTonal Bandwidth , Larghezza di banda tonale\nTone Blur , Sfocatura del tono\nTone Enhance , Miglioramento del tono\nTone Gamma , Tono Gamma\nTone Mapping , Mappatura del tono\nTone Mapping (%) , Mappatura del tono (%)\nTone Mapping [Fast] , Mappatura del tono [Veloce]\nTone Mapping Fast , Mappatura del tono veloce\nTone Presets , Preselezioni di tono\nTone Threshold , Soglia di tono\nTones Range , Gamma di toni\nTones Smoothness , Toni morbidezza\nTones to Layers , Toni a strati\nTop Layer , Strato superiore\nTop Left , In alto a sinistra\nTop Right , In alto a destra\nTop-Left Vertex (%) , Vertice in alto a sinistra (%)\nTop-Right Vertex (%) , Vertice in alto a destra (%)\nTotal Layers , Strati totali\nTotal Variation , Totale Variazione\nTransfer Colors [Histogram] , Colori di trasferimento [Istogramma]\nTransfer Colors [Patch-Based] , Colori di trasferimento [Patch-Based]\nTransfer Colors [PCA] , Colori di trasferimento [PCA]\nTransfer Colors [Variational] , Colori di trasferimento [variabile]\nTransform , Trasformare\nTransition Map , Mappa di transizione\nTransition Shape , Forma di transizione\nTransition Smoothness , Transizione scorrevolezza\nTransmittance Map , Mappa della trasmissione\nTransparency , Trasparenza\nTransparent , Trasparente\nTransparent Background , Sfondo trasparente\nTransparent Black & White , Bianco e nero trasparente\nTransparent Color , Colore trasparente\nTransparent on Black , Trasparente su nero\nTransparent on White , Trasparente su bianco\nTransparent Skin , Pelle trasparente\nTree , Albero\nTrent 18 , Trento 18\nTriangle , Triangolo\nTriangles , Triangoli\nTriangles (Outline) , Triangoli (Schema)\nTriangular Ha , Ha triangolare\nTriangular Hb , Triangolare Hb\nTriangular Va , Va triangolare\nTriangular Vb , Vb triangolare\nTritanomaly , Tritanomalia\nTrue Colors 8 , Colori veri 8\nTrunk Color , Colore del tronco\nTrunk Opacity (%) , Opacità del tronco (%)\nTrunks , Tronchi\nTulips , Tulipani\nTurbulence , Turbolenza\nTurbulence 2 , Turbolenza 2\nTurbulent Halftone , Mezzitoni turbolenti\nTurkiest 42 , Il più turchese 42\nTurn on Rotate and Twirl , Accendere Ruotare e roteare\nTwisted Rays , Raggi contorti\nTwo Layers , Due strati\nTwo Threads , Due fili\nTwo-By-Two , Due per due\nType , Tipo\nType Snowflake , Tipo Fiocco di neve\nUltra Water , Ultra Acqua\nUltraWarp++++ , UltraWarp+++++\nUnaligned Images , Immagini non allineate\nUndeniable , Indiscutibile\nUndeniable 2 , Indiscutibile 2\nUnderwater , Sott'acqua\nUndo Anaglyph , Annulla Anaglifo\nUniform , Uniforme\nUnknown , Sconosciuto\nUnsharp Mask , Maschera non tagliente\nUp-Left , Su-Sinistra\nUp-Right , A destra\nUpper Layer Is the Top Layer for All Blends , Lo strato superiore è lo strato superiore per tutte le miscele\nUpper Side Orientation , Orientamento lato superiore\nUppercase Letters , Lettere maiuscole\nUpscale [DCCI2x] , In alto [DCCI2x]\nUpscale [Diffusion] , Alta scala [Diffusione]\nUpscale [Scale2x] , In alto [Scala2x]\nUrban Cowboy , Cowboy Urbano\nUse as Hue , Utilizzo come Tonalità\nUse as Saturation , Uso come saturazione\nUse Individual Depth Map , Usa la mappa di profondità individuale\nUse Light , Utilizzare la luce\nUse Maximum Tones , Utilizzare i toni massimi\nUse Top Layer as a Priority Mask , Utilizzare lo strato superiore come maschera di priorità\nUser-Defined , Definito dall'utente\nUser-Defined (Bottom Layer) , Definito dall'utente (strato inferiore)\nUzbek Bukhara , Bukhara uzbeco\nUzbek Marriage , Matrimonio uzbeco\nUzbek Samarcande , Samarcande uzbeco\nV Cutoff , V Taglio\nVal Range , Gamma Val\nValue , Valore\nValue Action , Azione di valore\nValue Blending , Miscelazione di valore\nValue Bottom , Valore in basso\nValue Correction , Correzione del valore\nValue Factor , Fattore di valore\nValue Normalization , Normalizzazione del valore\nValue Offset , Offset di valore\nValue Precision , Precisione del valore\nValue Range , Gamma di valori\nValue Scale , Scala del valore\nValue Shift , Spostamento del valore\nValue Smoothness , Valore Levigatezza\nValue Top , Valore Top\nValue Variance , Variazione del valore\nValues , Valori\nVan Gogh: Almond Blossom , Van Gogh: Mandorlo in fiore\nVan Gogh: Irises , Van Gogh: Iris\nVan Gogh: The Starry Night , Van Gogh: La notte stellata\nVan Gogh: Wheat Field with Crows , Van Gogh: Campo di grano con i corvi\nVariability , Variabilità\nVariance , Varianza\nVariation A , Variazione A\nVariation B , Variazione B\nVariation C , Variazione C\nVector Painting , Pittura vettoriale\nVelocity , Velocità\nVertex Type , Tipo di testo\nVertical , Verticale\nVertical (%) , Verticale (%)\nVertical 1 Amount , Verticale 1 Importo\nVertical 1 Length , Verticale 1 Lunghezza\nVertical 2 Amount , Verticale 2 Importo\nVertical 2 Length , Verticale 2 Lunghezza\nVertical Amount , Importo verticale\nVertical Array , Array verticale\nVertical Blur , Sfocatura verticale\nVertical Length , Lunghezza verticale\nVertical Size (%) , Dimensione verticale (%)\nVertical Stripes , Strisce verticali\nVertical Tiles , Piastrelle verticali\nVery Course 5 , Molto Corso 5\nVery Fine , Molto bene\nVery High , Molto alto\nVery High (Even Slower) , Molto alto (anche più lento)\nVery Warm Greenish , Molto caldo verdastro\nVibrant , Vibrante\nVibrant (alien) , Vibrante (alieno)\nVibrant (contrast) , Vibrante (contrasto)\nVibrant (crome-Ish) , Vibrante (crome-Ish)\nVictory , Vittoria\nView Outlines Only , Visualizza solo i contorni\nView Resolution , Visualizza risoluzione\nVignette , Vignetta\nVignette Contrast , Vignetta Contrasto\nVignette Max Radius , Vignetta Raggio massimo\nVignette Min Radius , Vignetta meno raggio\nVignette Size , Dimensione della vignetta\nVignette Strength , Forza della vignetta\nVignette Strenth , Vignetta Strenth\nVintage (alt) , Annata (alt)\nVintage (brighter) , Vintage (più luminoso)\nVintage 163 , Annata 163\nVintage Chrome , Cromo d'epoca\nVintage Style , Stile vintage\nVintage Tone (%) , Tono d'epoca (%)\nVintage Warmth 1 , Calore d'annata 1\nVirtual Landscape , Paesaggio virtuale\nVisible Watermark , Filigrana visibile\nVivid Edges , Bordi vivi\nVivid Edges* , Bordi vivi*\nVivid Light , Luce vivida\nVivid Screen , Schermo vivido\nWall , Muro\nWarm , Caldo\nWarm (highlight) , Caldo (in evidenza)\nWarm (yellow) , Caldo (giallo)\nWarm Dark Contrasty , Caldo contrasto scuro\nWarm Fade , Dissolvenza calda\nWarm Fade 1 , Dissolvenza calda 1\nWarm Neutral , Neutro caldo\nWarm Sunset Red , Caldo rosso tramonto\nWarm Teal , Alzavola calda\nWarm Vintage , Vendemmia calda\nWarp [Interactive] , Ordito [Interattivo]\nWarp by Intensity , Ordito per intensità\nWater , Acqua\nWaterfall , Cascata\nWave , Onda\nWave(s) , Onda(e)\nWavelength , Lunghezza d'onda\nWaves Amplitude , Ampiezza delle onde\nWaves Smoothness , Onde Levigatezza\nWe'll See , Vedremo\nWeave , Tessitura\nWeird , Strano\nWhirl Drawing , Disegno a gorgo\nWhirls , Vortice\nWhite , Bianco\nWhite Dices , Dadi bianchi\nWhite Layers , Strati bianchi\nWhite Level , Livello del bianco\nWhite on Black , Bianco su nero\nWhite on Transparent , Bianco su trasparente\nWhite on Transparent Black , Bianco su nero trasparente\nWhite Point , Punto Bianco\nWhite to Black , Da bianco a nero\nWhite Walls , Pareti bianche\nWhitening , Sbiancamento\nWhiter Whites , Bianchi più bianchi\nWhites , Bianchi\nWidth , Larghezza\nWidth (%) , Larghezza (%)\nWind , Vento\nWinter Lighthouse , Faro d'inverno\nWipe , Pulire\nWithout , Senza\nWooden Gold 20 , Oro di legno 20\nWork on Frameset , Lavoro su Frameset\nWrap , Avvolgere\nX Center , X Centro\nX-Angle , X-Angolo\nX-Axis , Asse X\nX-Axis Then Y-Axis , Asse X e poi asse Y\nX-Centering (%) , X-Centraggio (%)\nX-Coordinate , Coordinate X\nX-Coordinate [Manual] , Coordinate X [Manuale]\nX-Dispersion , Dispersione X\nX-Factor (%) , Fattore X (%)\nX-Ratio , Rapporto X\nX-Resolution , Risoluzione X\nX-Scale , Scala X\nX-Size (px) , Dimensione X (px)\nX-Variations , X-Variazioni\nX/Y-Ratio , Rapporto X/Y\nX1 (none) , X1 (nessuno)\nXY Mirror , XY Specchio\nXY-Axes , XY-Assi\nXY-Coordinates (%) , Coordinate XY (%)\nY Center , Centro Y\nY-Angle , Angolo Y\nY-Axis , Asse Y\nY-Axis Then X-Axis , Asse Y e poi asse X\nY-Centering (%) , Centratura a Y (%)\nY-Coordinate , Coordinata Y\nY-Coordinate [Manual] , Coordinata Y [Manuale]\nY-Dispersion , Dispersione a Y\nY-Factor , Fattore Y\nY-Factor (%) , Fattore Y (%)\nY-Multiplier , Y-Moltiplicatore\nY-Ratio , Rapporto a Y\nY-Resolution , Risoluzione Y\nY-Scale , Scala Y\nY-Size , Dimensione a Y\nY-Size (px) , Dimensione Y (px)\nY-Variations , Y-Variazioni\nYAG Effect , Effetto YAG\nYCbCr (Chroma Only) , YCbCr (Solo croma)\nYCbCr (Distinct) , YCbCr (Distinto)\nYCbCr (Luma Only) , YCbCr (Solo Luma)\nYCbCr (Mixed) , YCbCr (Misto)\nYCbCr [Blue Chrominance] , YCbCr [Crominanza Blu]\nYCbCr [Blue-Red Chrominances] , YCbCr [Cromanze Blu-Rosso]\nYCbCr [Green Chrominance] , YCbCr [Crominanza verde]\nYCbCr [Luminance] , YCbCr [Luminanza]\nYCbCr [Red Chrominance] , YCbCr [Crominanza Rossa]\nYellow , Giallo\nYellow 55B , Giallo 55B\nYellow Factor , Fattore Giallo\nYellow Film 01 , Film giallo 01\nYellow Shift , Spostamento giallo\nYellow Smoothness , Levigatezza gialla\nYES8 , SÌ8\nYIQ [chromas] , YIQ [cromas]\nYou Can Do It , Si può fare\nZ-Angle , Angolo Z\nZ-Multiplier , Z-Moltiplicatore\nZ-Scale , Scala Z\nZ-Size , Dimensione Z\nZ^^8 + 15*z^^4 - 1 , Z^^8 + 15*z^4 - 1\nZilverFX - B&W Solarization , ZilverFX - Solarizzazione in bianco e nero\nZilverFX - InfraRed , ZilverFX - Infrarosso\nZilverFX - Vintage B&W , ZilverFX - B/N d'epoca\nZone System , Sistema a zone\nZoom Center , Centro Zoom\nZoom Factor , Fattore di zoom\nZoom In , Ingrandisci\nZoom Out , Ingrandisci\n"
  },
  {
    "path": "translations/filters/gmic_qt_ja.csv",
    "content": "<b>Arrays & Tiles</b> , <b>アレイとタイル</b>\n<b>Artistic</b> , <b>芸術的な</b>\n<b>Black & White</b> , <b>ブラック＆ホワイト</b>\n<b>Colors</b> , <b>色</b>\n<b>Contours</b> , <b>輪郭</b>\n<b>Deformations</b> , <b>変形</b>\n<b>Degradations</b> , <b>分解</b>\n<b>Details</b> , <b>詳細</b>\n<b>Testing</b> , <b>テスト</b>\n<b>Frames</b> , <b>フレーム</b>\n<b>Frequencies</b> , <b>周波数</b>\n<b>Layers</b> , <b>レイヤー</b>\n<b>Lights & Shadows</b> , <b>光と影</b>\n<b>Patterns</b> , <b>パターン</b>\n<b>Rendering</b> , <b>レンダリング</b>\n<b>Repair</b> , <b>補修</b>\n<b>シーケンス</b> , <b>Séquences</b>\n<b>Silhouettes</b> , <b>シルエット</b>\n<b>Icons</b> , <b>アイコン</b>\n<b>Misc</b> , <b>その他</b>\n<b>Nature</b> , <b>自然</b>\n<b>Others</b> , <b>その他</b>\n<b>Stereoscopic 3D</b> , <b>立体視3D</b>\n&#9829; Support Us ! &#9829; , サポートしてください！ &#9829.\n*Colors Doping , *カラーズドーピング\n*Colors Doping* , *カラーズドーピング★★★★★★★★★★★★★★★★★★★★★★★★☆彡\n*Comix Colors* , *コミックスカラーズ\n*Dark Edges* , *ダークエッジ*\n*Dark Screen* , *ダークスクリーン*\n*Graphix Colors , *グラフィックスカラーズ\n*Vivid Edges* , *ビビッドエッジ\n*Vivid Screen* , *ビビッドスクリーン\n+180 Deg. , +180度\n+90 Deg. , +90度\n- NO - , - 否\n-1. Value Action , -1.値 アクション\n-2. Overall Channel(s) , -2.全体のチャンネル\n-3. Normalisation Channel(s) , -3.正規化チャンネル\n-4. Normalise , -4.ノーマライズ\n-90 Deg. , -90度\n.Bmp , ビーエムピー\n.Png , ピーエヌジー\n0 Deg. , 0度\n0.  Recompute , 0.再計算\n1 Levels , 1 レベル\n1.  Plasma Texture [Discards Input Image] , 1.プラズマテクスチャ [入力画像を破棄する]\n10.  Quadtree Max Precision , 10.Quadtreeの最大の精度\n10th , 十番\n10th Color , 10色目\n11.  Quadtree Min Homogeneity , 11.クワッドツリーの最小均質性\n11th , 十一日\n12 Colors , 12色\n12 Grays , 12 グレイズ\n12.  Quadtree Max Homogeneity , 12.Quadtreeの最大均質性\n125 Keypoints , 125のキーポイント\n128px , 一二八px\n12th , 十二日\n13. Noise Type , 13.ノイズの種類\n13th , 十三日\n14. Minimum Noise , 14.最小ノイズ\n14th , 十四日\n15. Maximum Noise , 15.最大ノイズ\n15th , 十五日\n16 Colors , 16色\n16 Grays , 16 グレイズ\n16. Noise Channel(s) , 16.ノイズチャンネル\n16th , 十六日\n17. Warp Iterations , 17.ワープ反復\n18. Warp Intensity , 18.ワープ強度\n180 Deg. , 180度\n19. Warp Offset , 19.ワープオフセット\n1st , 第一\n1st Additional Palette (.Gpl) , 第1回追加パレット(.Gpl)\n1st Color , 1色目\n1st Parameter , 第1パラメータ\n1st Text , 第1テキスト\n1st Tone , 第一音\n1st Variance , 第1変動\n1st Y-Coord , 第1回Yコード\n2 Colors , 2色\n2 Grays , 2 グレイズ\n2 Noise , 2 ノイズ\n2-Strip Process , 2-ストリッププロセス\n2.  Plasma Scale , 2.プラズマスケール\n20. Scale to Width , 20.幅へのスケール\n21. Scale to Height , 21.高さまでのスケール\n216 Keypoints , 216 キーポイント\n22. Correlated Channels , 22.関連するチャンネル\n22.5 Deg. , 22.5度\n23. Boundary , 23.境界線\n24. Warp Channel(s) , 24.ワープチャンネル\n25. Random Negation , 25.ランダム否定\n256px , 二百五十六平方センチメートル\n26. Random Negation Channel(s) , 26.ランダム否定チャンネル\n27 Keypoints , 27のポイント\n27. Gamma Offset , 27.ガンマオフセット\n270 Deg. , 270度\n28. Hue Offset , 28.色相オフセット\n29. Normalise , 29.ノーマライズ\n2nd , 第二\n2nd Additional Palette (.Gpl) , 第2回追加パレット(.Gpl)\n2nd Color , 2ndカラー\n2nd Parameter , 第2パラメータ\n2nd Text , 第2テキスト\n2nd Tone , セカンドトーン\n2nd Variance , 第2回目の変動\n2nd Y-Coord , 第2回Yコード\n2x Type , 2xタイプ\n2XY Mirror , 2XYミラー\n2xy-Axes , 二軸\n3 Colors , 3色\n3 Grays , 3 グレイズ\n3 Mix , 3 ミックス\n3.  Plasma Alpha Channel , 3.プラズマアルファチャンネル\n30. Minimum Hue , 30.最小色相\n31. Maximum Hue , 31.最大色相\n32. Minimum Saturation , 32.最小飽和度\n32px , 三十二倍\n33. Maximum Saturation , 33.最大飽和度\n34. Minimum Value , 34.最小値\n343 Keypoints , 343 キーポイント\n35. Maximum Value , 35.最大値\n36. Hue Offset , 36.色相オフセット\n37. Saturation Offset , 37.彩度オフセット\n38. Value Offset , 38.値オフセット\n3D Blocks , 3Dブロック\n3D CLUT (Fast) , 3D CLUT（高速\n3D CLUT (Precise) , 3D CLUT (精密)\n3D Colored Object , 3Dカラーオブジェクト\n3D Conversion , 3D変換\n3D Elevation , 3Dエレベーション\n3D Elevation [Animated] , 3Dエレベーション [アニメーション]\n3D Extrusion , 3D押出\n3D Extrusion [Animated] , 3D押出し【アニメ化\n3D Image Object , 3D画像オブジェクト\n3D Image Object [Animated] , 3Dイメージオブジェクト[アニメーション]\n3D Image Type , 3D画像タイプ\n3D Lathing , 3D旋盤加工\n3D Metaballs , 3Dメタボール\n3D Random Objects , 3Dランダムオブジェクト\n3D Reflection , 3D反射\n3D Rubber Object , 3Dラバーオブジェクト\n3D Starfield , 3Dスターフィールド\n3D Text Pointcloud , 3Dテキストポイントクラウド\n3D Tiles , 3Dタイル\n3D Video Conversion , 3D動画変換\n3D Waves , 3次元波\n3rd , 第三\n3rd Color , 3色目\n3rd Parameter , 第3パラメータ\n3rd Tone , サードトーン\n3rd X-Coord , 第3回エックスコード\n3rd Y-Coord , 第3回Yコード\n4 Colors , 4色\n4 Grays , 4 グレイズ\n4.  Segmentation [No Alpha Channel] , 4.セグメンテーション【アルファチャンネルなし\n4096x4096 Layer , 4096x4096 レイヤ\n45 Deg. , 45度\n4th , 第四回\n4th Color , 4色目\n4th Tone , 第四音\n5.  Edge Threshold , 5.エッジしきい値\n512x512 Layer , 512x512層\n5th , 第五\n5th Color , 第5色\n5th Tone , 五調\n6.  Smoothness , 6.6.滑らかさ\n60's (faded Alt) , 60年代\n60's (faded) , 六十年代\n64 (Faster) , 64 (高速)\n64 Keypoints , 64のキーポイント\n64px , 六十四px\n67.5 Deg. , 67.5度\n6th , 第六\n6th Color , 第6色\n6th Tone , 六調\n7.  Blur , 7.ぼかし\n7th , 七\n7th Color , 七色\n7th Tone , 七音\n8 Colors , 8色\n8 Grays , 8 グレイズ\n8 Keypoints (RGB Corners) , 8つのキーポイント（RGBコーナー\n8.  Quadtree Pixelisation [No Alpha Channel] , 8.クワッドツリーピクセル化 [アルファチャンネルなし]\n8px , 八px\n8th , 八\n8th Color , 8色目\n8th Tone , はちと\n9.  Quadtree Min Precision , 9.Quadtreeの最小精度\n90 Deg. , 90度\n9th , 九日\n9th Color , 9色目\n[Cyan]MYK , シアン]MYK\nA Lot of Key , 多くのキー\nA Lot of Magenta , マゼンタがたくさん\nA Lot of Yellow , 黄色がいっぱい\nA-Color Factor , エーカラーファクター\nA-Color Shift , Aカラーシフト\nA-Color Smoothness , A色の滑らかさ\nA-Component , Ａ成分\nA-Value , A値\nA4 / 100 PPI (Recommended) , A4 / 100 PPI（推奨\nAbigail Gonzalez (21) , アビゲイル・ゴンザレス（21\nAbout G'MIC , G'MICについて\nAbsolute Brightness , 絶対的な明るさ\nAbsolute Value , 絶対値\nAbstraction , 抽象化\nAcceleration , 加速\nAchromatomaly , アクロマトンもく\nAchromatopsia , 無色症\nAcros , アクロス\nAcros+G , アクロス+G\nAcros+R , アクロス+R\nAcros+Ye , アクロス＋イェ\nAction , アクション\nAction #1 , アクション#1\nAction #10 , アクション＃10\nAction #11 , アクション＃11\nAction #12 , アクション#12\nAction #13 , アクション#13\nAction #14 , アクション#14\nAction #15 , アクション#15\nAction #16 , アクション#16\nAction #17 , アクション#17\nAction #18 , アクション＃18\nAction #19 , アクション#19\nAction #2 , アクション#2\nAction #20 , アクション＃20\nAction #21 , アクション＃21\nAction #22 , アクション＃22\nAction #23 , アクション＃23\nAction #24 , アクション＃24\nAction #3 , アクション＃3\nAction #4 , アクション＃4\nAction #5 , アクション#5\nAction #6 , アクション#6\nAction #7 , アクション#7\nAction #8 , アクション#8\nAction #9 , アクション#9\nAction Magenta 01 , アクションマゼンタ01\nAction Red 01 , アクションレッド01\nActivate 'Pencil Smoother' , ペンシルスムーサー」を有効にする\nActivate Color Enhancement , カラーエンハンスメントを有効にする\nActivate Colors Geometric Shapes , 色を活性化させる 幾何学的な図形\nActivate Custom Filter , カスタムフィルタを有効にする\nActivate Lizards , トカゲを起動する\nActivate Mirror , ミラーをアクティブにする\nActivate Pink Elephants , ピンクの象を活性化させる\nActivate Second Direction , 第二の方向をアクティブにする\nActivate Shakes , シェイクをアクティブにする\nActivate Slice 1 , スライス1をアクティブにする\nActivate Slice 2 , スライス2を起動\nActivate Slice 3 , スライス3をアクティブにする\nActivate Slice 4 , スライス4をアクティブにする\nActiver Symmetrizoscope , アクティバーシンメトリゾスコープ\nAdaptive , 適応的\nAdd , 追加\nAdd 1px Outline , 1px追加 アウトライン\nAdd Alpha Channels to Detail Scale Layers , 詳細スケールレイヤーにアルファチャンネルを追加\nAdd as a New Layer , 新規レイヤーとして追加\nAdd Chalk Highlights , 白亜のハイライトを追加\nAdd Color Background , 色の背景を追加\nAdd Comment Area in HTML Page , HTMLページにコメントエリアを追加する\nAdd Grain , 穀物を追加\nAdd Image Label , 画像ラベルの追加\nAdd Painter's Touch , ペインターズタッチを追加\nAdd User-Defined Constraints (Interactive) , ユーザー定義制約の追加（インタラクティブ\nAdditional Duplicates Count , 追加の重複数\nAdditional Outline , 追加の概要\nAdditive , 添加剤\nAdjust Background Reconstruction , 背景の再構成を調整する\nAdventure 1453 , アドベンチャー1453\nAgfa Ultra Color 100 , アグファ ウルトラカラー100\nAgfa Vista 200 , アグファビスタ200\nAggresive , 積極的\nAggressive Highlights Recovery 5 , アグレッシブハイライト回復5\nAlex Jordan (81) , アレックス・ジョーダン (81)\nAlgorithm , アルゴリズム\nAliasing , エイリアス\nAlien Green , エイリアングリーン\nAlign Image Streams , 画像ストリームを整列させる\nAlign Layers , レイヤーを整列させる\nAligned , アライメント\nAlignment Type , アライメントタイプ\nAll , すべての\nAll 45° Rotations , すべての45°回転\nAll 90° Rotations , すべての90°回転\nAll [Collage] , すべての[コラージュ]\nAll but Reference Color , リファレンスカラー以外はすべて\nAll Layers and Masks , すべてのレイヤーとマスク\nAll Tones , オールトーン\nAll XY-Flips , すべてのXYフリップ\nAllow Angle , 角度を許可する\nAllow Outer Blending , 外側のブレンドを許可する\nAllow Self Intersections , 自己交差を許す\nAlpha , アルファ\nAlpha Channel , アルファチャンネル\nAlpha Mode , アルファモード\nAlso Match Gradients , グラデーションにも対応\nAmbient (%) , 周囲温度(%)\nAmbient Lightness , 周囲の明るさ\nAmount , 金額\nAmplitude , 振幅\nAmplitude (%) , 振幅(%)\nAmplitude / Angle , 振幅・角度\nAmstragram , アムストラグラム\nAmstragram+ , アムストラグラムプラス\nAnaglypgh Green/magenta Optimized , アナグリフ グリーン/マゼンタ オプティマイズ\nAnaglyph Blue/yellow , アナグリフ ブルー/イエロー\nAnaglyph Blue/yellow Optimized , アナグリフブルー/イエロー最適化\nAnaglyph Glasses Adjustment , アナグリフメガネの調整\nAnaglyph Green/magenta , アナグリフ グリーン/マゼンタ\nAnaglyph Green/magenta Optimized , アナグリフ グリーン/マゼンタ 最適化\nAnaglyph Reconstruction , アナグリフの復元\nAnaglyph Red/cyan , アナグリフ レッド/シアン\nAnaglyph Red/cyan Optimized , アナグリフ レッド/シアン最適化\nAnaglyph: Red/Cyan , アナグリフ：レッド/シアン\nAnalogFX - Anno 1870 Color , AnalogFX - Anno 1870 カラー\nAnalogFX - Old Style I , AnalogFX - オールドスタイルI\nAnalogFX - Old Style II , AnalogFX - オールドスタイルII\nAnalogFX - Old Style III , AnalogFX - オールド・スタイルIII\nAnalogFX - Sepia Color , AnalogFX - セピアカラー\nAnalogFX - Soft Sepia I , AnalogFX - ソフトセピアI\nAnalogFX - Soft Sepia II , AnalogFX - ソフトセピアII\nAnalysis Scale , 分析規模\nAnalysis Smoothness , 分析の滑らかさ\nAnd , そして\nAngle , 角度\nAngle (%) , 角度(%)\nAngle (deg) , 角度(deg)\nAngle (deg.) , 角度(deg.)\nAngle / Size , 角度・サイズ\nAngle Cut , アングルカット\nAngle Dispersion , 角度分散\nAngle Image Contour , 角度画像の輪郭\nAngle of Disturbance Surface , 撹乱面の角度\nAngle of Main Nebulous Surface , 主な星雲面の角度\nAngle Range , 角度範囲\nAngle Range (deg.) , 角度範囲（deg.\nAngle Tilt , 角度チルト\nAngle Variations , 角度の変化\nAnguish , 苦悩\nAngular , アンギュラー\nAngular Precision , 角精度\nAngular Tiles , アンギュラータイル\nAnime , アニメ\nAnisotropic , 異方性\nAnisotropy , 異方性\nAnnular Steiner Chain Round Tiles , アンニュラーシュタイナーチェーン丸型タイル\nAnti Alias , アンチエイリアス\nAnti-Aliasing , アンチエイリアシング\nAnti-Ghosting , アンチゴースト\nAntialiasing , アンチエイリアシング\nAntisymmetry , 反対称性\nAny , 何れかの\nApocalypse This Very Moment , 黙示録この瞬間\nApples , りんご\nApply Adjustments On , 調整の適用\nApply Color Balance , カラーバランスを適用する\nApply External CLUT , 外部CLUTの適用\nApply Mask , マスクを適用する\nApply Skin Tone Mask , スキントーンマスクを塗る\nApply Transformation From , トランスフォーメーションを適用する\nAqua , アクア\nAqua and Orange Dark , アクア＆オレンジダーク\nArabica 12 , アラビカ12\nArea , エリア\nArea Smoothness , 面積平滑度\nAreas Light Adjustment , エリアライト調整\nAreas Smoothness , エリアの滑らかさ\nArray [Faded] , 配列 [フェード]\nArray [Mirrored] , 配列 [ミラーリング]\nArray [Random Colors] , 配列 [ランダムカラー]\nArray [Random] , 配列 [ランダム]\nArray [Regular] , 行列 [正規]\nArray Mode , 配列モード\nArrows , 矢印\nArrows (Outline) , 矢印（アウトライン\nArtistic  Modern , アーティスティック・モダン\nArtistic Hard , 芸術的なハード\nArtistic Round , アーティスティックラウンド\nAscii , アスキー\nAscii Art , アスキーアート\nAspect , アスペクト\nAspect Ratio , アスペクト比\nAsplenium Adiantum-Nigrum , 藍藻\nAssociated Color , 関連色\nAstia , アスティア属\nAttenuation , 減衰\nAurora , オーロラ\nAustralia , オーストラリア\nAuto , オート\nAuto Balance , オートバランス\nAuto Crop , オートクロップ\nAuto Reduce Level (Level Slider Is Disabled) , レベルを自動で下げる（レベルスライダは無効\nAuto Set Hue Inverse (Hue Slider Is Disabled) , 色相を逆に自動設定（色相スライダーは無効\nAuto-Clean Bottom Color Layer , オートクリーンボトムカラーレイヤー\nAuto-Reduce Number of Frames , フレーム数の自動削減\nAuto-Set Periodicity , 自動設定周期性\nAuto-Threshold , オートスレッショルド\nAutocrop , オートクロップ\nAutocrop Output Layers , オートクロップ出力レイヤ\nAutomatic , 自動\nAutomatic & Contrast Mask , オートマチック＆コントラストマスク\nAutomatic [Scan All Hues] , 自動 [すべての色相をスキャン]\nAutomatic Color Balance , 自動カラーバランス\nAutomatic Depth Estimation , 自動深度推定\nAutomatic Upscale for Optimum Results , 最適な結果を得るための自動アップスケール\nAutumn , 秋\nAva 614 , エヴァ614\nAvalanche , 雪崩\nAverage , 平均値\nAverage 3x3 , 平均3x3\nAverage 5x5 , 平均5x5\nAverage 7x7 , 平均7x7\nAverage 9x9 , 平均9x9\nAverage RGB , 平均RGB\nAverage Smoothness , 平均平滑度\nAvg , 平均\nAvg / Max Weight , 平均/最大重量\nAvg Branching , 平均支店数\nAvg Left Angle (deg.) , 平均左角（deg.\nAvg Length Factor (%) , 平均長さ係数(%)\nAvg Right Angle (deg.) , 平均直角（deg.\nAvg Thickness Factor (%) , 平均厚さ係数(%)\nAxis , 軸\nAzimuth , 方位角\nAzrael 93 , アズラエル93\nB&W , 白黒\nB&W Pencil [Animated] , 白黒鉛筆 [アニメーション]\nB&W Photograph , 白黒写真\nB&W Stencil , 白黒ステンシル\nB&W Stencil [Animated] , 白黒ステンシル[アニメーション]\nB-Color Factor , Bカラーファクター\nB-Color Shift , Bカラーシフト\nB-Color Smoothness , B色の滑らかさ\nB-Component , B成分\nBackground , 背景\nBackground Color , 背景色\nBackground Intensity , 背景強度\nBackground Point (%) , バックグラウンドポイント(%)\nBackward , 後方\nBackward Horizontal , 後方水平\nBackward Vertical , 後方垂直\nBalance , バランス\nBalance Color , バランスカラー\nBalance SRGB , バランスSRGB\nBall , ボール\nBalloons , 風船\nBalls , ボール\nBand Width , バンド幅\nBanding Denoise , バンディングデノワーズ\nBandpass , バンドパス\nBandwidth , 帯域幅\nBarbara , バーバラ\nBarbed Wire , 有刺鉄線\nBarnsley Fern , バーンズリーファーン\nBars , バー\nBase Reference Dimension , 基本基準寸法\nBase Scale , ベーススケール\nBase Thickness (%) , ベース厚さ(%)\nBasic Adjustments , 基本的な調整\nBatch Processing , バッチ処理\nBayer Filter , バイエルフィルター\nBayer Reconstruction , バイエル復興\nBehind , 後ろ\nBelow , 以下\nBerlin Sky , ベルリンの空\nBest Match , ベストマッチ\nBeta , ベータ\nBG Textured , BG テクスチャ\nBi-Directional , 双方向\nBias , バイアス\nBicubic , バイキュービック\nBidirectional [Sharp] , 双方向 [シャープ]\nBidirectional [Smooth] , 双方向 [スムース]\nBidirectional Rendering , 双方向レンダリング\nBilateral , 二国間\nBilateral Radius , 両側半径\nBinary , バイナリ\nBinary Digits , 二進数\nBit Masking (End) , ビットマスキング（終了\nBit Masking (Start) , ビットマスキング（開始\nBlack , ブラック\nBlack & White , ブラック＆ホワイト\nBlack & White (25) , ブラック＆ホワイト (25)\nBlack & White-1 , ブラック＆ホワイト-1\nBlack & White-10 , ブラック＆ホワイト10\nBlack & White-2 , ブラック＆ホワイト2\nBlack & White-3 , ブラック＆ホワイト3\nBlack & White-4 , ブラック＆ホワイト4\nBlack & White-5 , ブラック＆ホワイト5\nBlack & White-6 , ブラック＆ホワイト6\nBlack & White-7 , ブラック＆ホワイト7\nBlack & White-8 , ブラック＆ホワイト8\nBlack & White-9 , ブラック＆ホワイト9\nBlack Crayon Graffiti , ブラッククレヨングラフィティ\nBlack Dices , ブラックダイス\nBlack Level , ブラックレベル\nBlack on Transparent , 透明な上に黒\nBlack on Transparent White , 透明な白地に黒\nBlack on White , 白地に黒\nBlack Point , ブラックポイント\nBlack Star , ブラックスター\nBlack to White , 黒から白へ\nBlacks , 黒子\nBlade Runner , ブレードランナー\nBlank , ブランク\nBleach Bypass , ブリーチバイパス\nBleach Bypass 1 , 漂白剤バイパス1\nBleach Bypass 2 , 漂白剤バイパス2\nBleach Bypass 3 , ブリーチバイパス3\nBleach Bypass 4 , 漂白剤バイパス4\nBleech Bypass Green , ブリーチバイパスグリーン\nBleech Bypass Yellow 01 , ブリーチバイパス黄色 01\nBlend , ブレンド\nBlend [Average All] , ブレンド [すべて平均]\nBlend [Edges] , ブレンド [エッジ]\nBlend [Fade] , ブレンド [フェード]\nBlend [Median] , ブレンド [中央値]\nBlend [Seamless] , ブレンド【シームレス\nBlend [Standard] , ブレンド [スタンダード]\nBlend All Layers , すべてのレイヤーをブレンド\nBlend Decay , ブレンドディケイ\nBlend Mode , ブレンドモード\nBlend Rays , ブレンドレイ\nBlend Scales , ブレンドスケール\nBlend Size , ブレンドサイズ\nBlend Threshold , ブレンドしきい値\nBlending Mode , ブレンドモード\nBlending Size , ブレンドサイズ\nBlindness Type , 盲目のタイプ\nBlob 1 , ブロブ1\nBlob 1 Color , ブロブ1色\nBlob 10 , ブロブ10\nBlob 10 Color , ブロブ10色\nBlob 11 , ブロブ11\nBlob 11 Color , ブロブ11色\nBlob 12 , ブロブ12\nBlob 12 Color , ブロブ12色\nBlob 2 Color , ブロブ2色\nBlob 3 , ブロブ3\nBlob 3 Color , ブロブ3色\nBlob 4 , ブロブ4\nBlob 4 Color , ブロブ4色\nBlob 5 , ブロブ5\nBlob 5 Color , ブロブ5色\nBlob 6 , ブロブ6\nBlob 6 Color , ブロブ6色\nBlob 7 , ブロブ7\nBlob 7 Color , ブロブ7色\nBlob 8 , ブロブ8\nBlob 8 Color , ブロブ8色\nBlob 9 , ブロブ9\nBlob 9 Color , ブロブ9色\nBlob Size , ブロブサイズ\nBlob2 , ブロブ2\nBlobs Editor , ブロブエディタ\nBloc , ブロック\nBloc Size (%) , ブロックサイズ(%)\nBlockism , ブロッキング\nBloom , ブルーム\nBlue , 青色\nBlue & Red Chrominances , ブルー＆レッドクロミナンス\nBlue Chroma Factor , ブルークロマファクター\nBlue Chroma Shift , ブルークロマシフト\nBlue Chroma Smoothness , ブルークロマスムースネス\nBlue Chrominance , ブルークロミナンス\nBlue Cold Fade , ブルーコールドフェード\nBlue Dark , ブルーダーク\nBlue Factor , ブルーファクター\nBlue House , ブルーハウス\nBlue Ice , ブルーアイス\nBlue Level , ブルーレベル\nBlue Mono , ブルーモノ\nBlue Rotations , ブルーローテーション\nBlue Screen Mode , ブルースクリーンモード\nBlue Shadows 01 , 青い影 01\nBlue Shift , ブルーシフト\nBlue Smoothness , ブルーの滑らかさ\nBlue Steel , ブルースチール\nBlue Wavelength , 青色の波長\nBlue-Green , ブルーグリーン\nBlues , ブルース\nBlur , ぼかし\nBlur [Angular] , ぼかし [Angular]\nBlur [Bloom] , ぼかし [ブルーム]\nBlur [Depth-Of-Field] , ぼかし [被写界深度]\nBlur [Gaussian] , ぼかし [ガウシアン]\nBlur [Glow] , ぼかし[グロー]\nBlur [Linear] , ぼかし [リニア]\nBlur [Multidirectional] , ぼかし [多方向]\nBlur [Radial] , ぼかし [放射状]\nBlur Alpha , ぼかしアルファ\nBlur Amount , ぼかし量\nBlur Amplitude , ぼかしの振幅\nBlur Dodge and Burn Layer , ダッジとバーンのレイヤーをぼかす\nBlur Factor , ぼかし要素\nBlur Frame , ぼかしフレーム\nBlur Percentage , ぼかし率\nBlur Precision , ぼかし精度\nBlur Shade , ぼかしシェード\nBlur Standard Deviation , ぼかし標準偏差\nBlur Strength , ぼかしの強さ\nBlur the Mask , マスクをぼかす\nBoats , ボート\nBob Ford , ボブ・フォード\nBokeh , ボケ\nBoost , ブースト\nBoost Chromaticity , ブースト色度\nBoost Contrast , ブーストコントラスト\nBoost Smooth , ブーストスムース\nBoost Stroke , ブーストストローク\nBoost-Fade , ブーストフェード\nBorder Color , ボーダーカラー\nBorder Opacity , ボーダー不透明度\nBorder Outline , ボーダーの概要\nBorder Smoothness , ボーダーの滑らかさ\nBorder Thickness (%) , 境界厚さ(%)\nBorder Width , ボーダー幅\nBoth , 両方とも\nBottles , ボトル\nBottom , 底部\nBottom and Left Foreground , 底面と左前景\nBottom and Right Foreground , 底面と右前景\nBottom and Top Foreground , 底面と上面の前景\nBottom Layer , 底面層\nBottom Left , 左下\nBottom Right , 右下\nBottom Size , 底面サイズ\nBottom-Left , 左下\nBottom-Left Vertex (%) , 左下頂点 (%)\nBottom-Right , 右下\nBottom-Right Vertex (%) , 右下頂点(%)\nBouncing Balls , 跳ねるボール\nBoundaries (%) , 境界線(%)\nBoundary , 境界線\nBoundary Condition , 境界条件\nBoundary Conditions , 境界条件\nBourbon 64 , バーボン64\nBox , ボックス\nBox Fitting , ボックスフィッティング\nBox2x , ボックス2x\nBranches , 枝\nBraque: Landscape near Antwerp , ブラクアントワープ近郊の風景\nBraque: Le Viaduc à L'Estaque , ブラクル・ヴィアドゥック＆グラーヴ; L'Estaque\nBraque: Little Bay at La Ciotat , ブラクラ・ジョタのリトルベイ\nBraque: The Mandola , ブラクマンドラ\nBrighness , 厳しさ\nBright , 明るい\nBright Green , ブライトグリーン\nBright Green 01 , ブライトグリーン01\nBright Length , 明るい長さ\nBright Pixels , 明るいピクセル\nBright Teal Orange , ブライトティールオレンジ\nBright Warm , 明るい暖かさ\nBrighter , より明るく\nBrightness , 明るさ\nBrightness (%) , 輝度(%)\nBristle Size , ブリストルサイズ\nBronze , ブロンズ\nBrownish , 茶色っぽい\nBrushify , ブラッシフィ\nBuilt-in Gray , 内蔵グレー\nBump Factor , バンプファクター\nBump Map , バンプマップ\nBurn , バーン\nBurn Blur , バーンブラー\nBurn Strength , バーンの強さ\nButterfly , 蝶\nBy Blue Chrominance , ブルークロミナンスで\nBy Blue Component , ブルーコンポーネント\nBy Custom Expression , カスタム表現で\nBy Green Component , グリーンコンポーネント\nBy Iteration , イテレーション\nBy Lightness , 軽さで\nBy Luminance , ルミナンスで\nBy Red Chrominance , 赤色のクロミナンス\nBy Red Component , レッドコンポーネント\nBy Value , 金額別\nByers 11 , バイヤーズ11\nC[Magenta]YK , C[マゼンタ]YK\nCamera Motion Only , カメラモーションのみ\nCamera X , カメラX\nCamera Y , カメラY\nCameraman , カメラマン\nCamouflage , カモフラージュ\nCandle Light , キャンドルライト\nCanvas , キャンバス\nCanvas Brightness , キャンバスの明るさ\nCanvas Color , キャンバスカラー\nCanvas Darkness , キャンバスの闇\nCanvas Texture , キャンバスのテクスチャ\nCar , 車\nCard Suits , カードスーツ\nCaribe , カリベ\nCartesian Transform , デカルト変換\nCartoon , 漫画\nCartoon [Animated] , 漫画 [アニメ]\nCat , 猫\nCategory , カテゴリー\nCell Size , セルサイズ\nCenter , センター\nCenter (%) , センター(%)\nCenter Background , センター背景\nCenter Foreground , 中央前景\nCenter Help , センターヘルプ\nCenter Size , センターサイズ\nCenter Smoothness , センター平滑度\nCenter X , センターX\nCenter X-Shift , センターXシフト\nCenter Y , センターY\nCenter Y-Shift , センターYシフト\nCentering (%) , センタリング(%)\nCentering / Scale , センタリング/スケール\nCenters Color , センターカラー\nCenters Radius , センター半径\nCentimeter , センチ\nCentral  Perspective Outdoor , 中央視点のアウトドア\nCentral Perspective Indoor , 中央展望インドア\nCentral Perspective Outdoor , 中央視点のアウトドア\nCentre , センター\nChalk It Up , チョークアップ\nChannel #1 , チャンネル#1\nChannel #2 , チャンネル #2\nChannel #3 , チャンネル#3\nChannel Processing , チャネル処理\nChannel(s) , チャンネル\nChannels , チャンネル\nChannels to Layers , チャンネルからレイヤーへ\nCharcoal , 木炭\nCharset , 文字セット\nChebyshev , チェビシェフ\nCheckered , チェック柄\nCheckered Inverse , チェッカー逆\nChemical 168 , ケミカル168\nChessboard , チェスボード\nChick , ひよこ\nChroma , クロマ\nChroma Noise , クロマノイズ\nChromatic Aberrations , 色収差\nChromaticity From , 色度から\nChrome 01 , クロム01\nChrominances Only (ab) , クロミナンスのみ(ab)\nChrominances Only (CbCr) , クロミナンスのみ(CbCr)\nCine Basic , シネベーシック\nCine Bright , シネ・ブライト\nCine Cold , シネコールド\nCine Drama , シネドラマ\nCine Teal Orange 1 , シネ・ティールオレンジ1\nCine Teal Orange 2 , シネ・ティールオレンジ2\nCine Vibrant , シネ・バイブラント\nCine Warm , シネ・ウォーム\nCinema , 映画館\nCinema 2 , シネマ2\nCinema 3 , シネマ3\nCinema 4 , シネマ4\nCinema 5 , シネマ5\nCinema Noir , シネマノワール\nCinematic (8) , シネマティック (8)\nCinematic for Flog , フログのためのシネマティック\nCinematic Lady Bird , シネマティック レディバード\nCinematic Mexico , シネマティック・メキシコ\nCinematic Travel (29) , 映画の旅 (29)\nCinematic-01 , シネマティック01\nCinematic-02 , シネマティック-02\nCinematic-03 , シネマティック-03\nCinematic-1 , シネマティック-1\nCinematic-10 , シネマティック10\nCinematic-2 , シネマティック-2\nCinematic-3 , シネマティック-3\nCinematic-4 , シネマティック4\nCinematic-5 , シネマティック・ファイブ\nCinematic-6 , シネマティック-6\nCinematic-7 , シネマティック7\nCinematic-8 , シネマティック8\nCinematic-9 , シネマティック9\nCircle , 円\nCircle (Inv.) , 円（Inv.\nCircle 1 , 円 1\nCircle 2 , サークル2\nCircle Abstraction , 円の抽象化\nCircle Art , サークルアート\nCircle to Square , 円から四角へ\nCircle Transform , サークル変換\nCircles , 円\nCircles (Outline) , 円（概要\nCircles 1 , 円 1\nCircles 2 , 円 2\nCircular , 円形\nCity 7 , シティ7\nClarity , 明快さ\nClassic Chrome , クラシッククローム\nClassic Teal and Orange , クラシックティールとオレンジ\nClayton 33 , クレイトン33\nClean , 清潔な\nClean Text , クリーンなテキスト\nClear Control Points , コントロールポイントを明確にする\nClear Teal Fade , クリアティールフェード\nCliff , 崖\nClip , クリップ\nClip CMYK , クリップCMYK\nClip RGB , クリップRGB\nCloseup , クローズアップ\nClosing , クロージング\nClosing - Opening , クロージング - オープニング\nClosing - Original , クロージング - オリジナル\nClouds , 雲\nClouseau 54 , クルソー 54\nCLUT from After - Before Layers , 後からのCLUT - レイヤーの前\nCLUT Opacity , CLUT 不透明度\nCM[Yellow]K , CM[黄]K\nCMY , ＣＭＹ\nCMY[Key] , CMY[キー]\nCMYK , シーエムワイケー\nCMYK [cyan] , CMYK [シアン]\nCMYK [Key] , CMYK [キー]\nCMYK [Magenta] , CMYK [マゼンタ]\nCMYK [Yellow] , CMYK [イエロー]\nCMYK Tone , CMYKトーン\nCoarse , 粗い\nCoarsest (faster) , 最も粗い（速い\nCobi 3 , コビ3\nCode , コード\nCoefficients , 係数\nCoffee 44 , コーヒー44\nCoherence , コヒーレンス\nCold Clear Blue , コールドクリアブルー\nCold Clear Blue 1 , コールドクリアブルー 1\nCold Simplicity 2 , コールド・シンプリシティ2\nColor , カラー\nColor (rich) , カラー(リッチ)\nColor 1 , カラー1\nColor 1 (Up/Left Corner) , カラー1（上/左コーナー\nColor 2 , カラー2\nColor 2 (Up/Right Corner) , カラー2（上・右コーナー\nColor 3 , カラー3\nColor 3 (Bottom/Left Corner) , カラー3（下/左コーナー\nColor 4 , カラー4\nColor 4 (Bottom/Right Corner) , カラー4(下/右コーナー)\nColor A , カラーA\nColor Abstraction Opacity , 色の抽象化 不透明度\nColor Abstraction Paint , カラー抽象化ペイント\nColor B , カラーB\nColor Balance , カラーバランス\nColor Basis , カラーベース\nColor Blending , カラーブレンド\nColor Blindness , 色覚異常\nColor Blue-Yellow , 色青黄色\nColor Boost , カラーブースト\nColor Burn , カラーバーン\nColor C , カラーC\nColor Channel  Smoothing , カラーチャンネルのスムージング\nColor Channels , カラーチャンネル\nColor D , カラーD\nColor Dispersion , 色分散\nColor Doping , カラードーピング\nColor E , カラーE\nColor Effect Mode , カラーエフェクトモード\nColor F , カラーF\nColor G , カラーG\nColor Gamma , カラーガンマ\nColor Grading , カラーグレーディング\nColor Green-Magenta , カラーグリーン・マゼンタ\nColor Highlights , カラーハイライト\nColor Image , カラー画像\nColor Intensity , 色の強度\nColor Mask , カラーマスク\nColor Mask [Interactive] , カラーマスク[インタラクティブ]\nColor Median , 色の中央値\nColor Metric , カラーメトリック\nColor Midtones , カラーミッドトーン\nColor Mode , カラーモード\nColor Model , カラーモデル\nColor Negative , カラーネガティブ\nColor on White , 白の上の色\nColor Overall Effect , カラー全体の効果\nColor Presets , カラープリセット\nColor Quantization , 色の量子化\nColor Rendering , カラーレンダリング\nColor Shading (%) , 色の濃淡 (%)\nColor Shadows , カラーシャドウ\nColor Smoothness , 色の滑らかさ\nColor Space , カラースペース\nColor Spots + Extrapolated Colors + Lineart , カラースポット＋外挿し色＋ラインアート\nColor Spots + Lineart , カラースポット＋ラインアート\nColor Strength , 色の強さ\nColor Temperature , 色温度\nColor Tolerance , 色の公差\nColor Variation [Random -1] , カラーバリエーション[ランダム-1]\nColorbase , カラーベース\nColorburn , カラーバーン\nColored Geometry , 色付き幾何学\nColored Grain , 着色された穀物\nColored Lineart , 色付きラインアート\nColored on Black , 黒地に着色\nColored on Transparent , 透明な上に着色された\nColored Outline , 色付きアウトライン\nColored Pencils , 色鉛筆\nColored Regions , 色付き地域\nColorful , カラフルな\nColorful 0209 , カラフルな0209\nColorful Blobs , カラフルなブロブ\nColoring , カラーリング\nColorize [Interactive] , カラーライズ[インタラクティブ]\nColorize [Photographs] , カラーライズ[写真]をする\nColorize [with Colormap] , カラーライズ [カラーマップ付き]\nColorize Lineart [Auto-Fill] , 線画のカラー化 [自動塗りつぶし]\nColorize Lineart [Propagation] , 線画をカラー化する [伝搬]\nColorize Lineart [Smart Coloring] , Colorize Lineart [スマートぬりえ]\nColorize Mode , カラー化モード\nColorized Image (1 Layer) , カラー画像(1レイヤー)\nColormap , コロマップ\nColormap Type , カラーマップの種類\nColors , 色\nColors A , カラーズA\nColors B , カラーB\nColors Only , 色のみ\nColors Only (1 Layer) , 色のみ（1層\nColors to Layers , 色からレイヤーへ\nColorspace , 色空間\nColour , 色\nColour Channels , カラーチャンネル\nColour Model , カラーモデル\nColour Smoothing , カラースムージング\nColour Space Mode , カラースペースモード\nColumn by Column , コラム別\nComic Style , コミックスタイル\nComix Colors , コミックスカラー\nComponents , 構成要素\nComposed Layers , 合成レイヤー\nCompress Highlights , 圧縮ハイライト\nCompression Blur , 圧縮ぼかし\nCompression Filter , 圧縮フィルター\nComputation Mode , 計算モード\nCone , コーン\nConflict 01 , コンフリクト01\nConformal Maps , コンフォーマルマップ\nConnect-Four , コネクトフォー\nConnectivity , 接続性\nConnectors Centering , コネクタセンタリング\nConnectors Variability , コネクタのばらつき\nConstrain Image Size , 画像サイズの制限\nConstrain Values , 制約値\nConstrained Sharpen , 制約付きシャープネス\nConstraint Radius , 制約半径\nContinuous Droste , 連続ドロスト\nContour Coherence , コンターコヒーレンス\nContour Detection (%) , 輪郭の検出 (%)\nContour Normalization , 輪郭の正規化\nContour Precision , 輪郭の精密さ\nContour Threshold , コンターしきい値\nContour Threshold (%) , コンターしきい値 (%)\nContours , 輪郭\nContours + Flocon/Snowflake , 輪郭+フローコン/スノーフレーク\nContours Recursion , 輪郭の再帰\nContrail 35 , コントレール35\nContrast , コントラスト\nContrast (%) , コントラスト(%)\nContrast Smoothness , コントラストの滑らかさ\nContrast Swiss Mask , コントラストスイスマスク\nContrast with Highlights Protection , ハイライト保護とのコントラスト\nContrasty Afternoon , コントラストのあるアフタヌーン\nContrasty Green , コントラストのあるグリーン\nContributors , 投稿者\nControl Point 1 , 制御点1\nControl Point 2 , 制御点2\nControl Point 3 , コントロールポイント3\nControl Point 4 , 制御点4\nControl Point 5 , コントロールポイント5\nControl Point 6 , コントロールポイント6\nConvolve , コンボルブ\nCool , 涼しい\nCool (256) , クール (256)\nCool / Warm , クール/ウォーム\nCopper , 銅\nCorner Brightness , コーナー輝度\nCorrelated Channels , 関連するチャネル\nCos(z) , コス(z)\nCounter Clockwise , 時計回りに反時計回りに\nCourse 4 , コース4\nCracks , ひび割れ\nCrease , クリース\nCreative Pack (33) , 創造的なパック (33)\nCrip Winter , クリップ冬\nCrisp Romance , キリッとしたロマンス\nCrisp Warm , パリッとした暖かさ\nCriterion , きじゅん\nCrop , クロップ\nCrop (%) , 作物(%)\nCross Process CP 130 , クロスプロセスCP 130\nCross Process CP 14 , クロスプロセスCP 14\nCross Process CP 15 , クロスプロセスCP 15\nCross Process CP 16 , クロスプロセスCP 16\nCross Process CP 18 , クロスプロセスCP 18\nCross Process CP 3 , クロスプロセスCP 3\nCross Process CP 4 , クロスプロセスCP 4\nCross Process CP 6 , クロスプロセスCP 6\nCross-Hatch Amount , クロスハッチ量\nCrossed , 交差した\nCrosses 1 , 十字架1\nCrosses 2 , クロス2\nCrosshair , クロスヘア\nCRT Sub-Pixels , CRTサブピクセル\nCrushin , クラッシン\nCrystal , クリスタル\nCrystal Background , クリスタルの背景\nCube , キューブ\nCube (256) , キューブ (256)\nCubic , キュービック\nCubicle 99 , キュービクル99\nCubism , キュービズム\nCubism on Color Abstraction , 色彩抽象化の上のキュビスム\nCup , カップ\nCupid , キューピッド\nCurvature , 曲率\nCurvature Shadow , 曲線の影\nCurve Amount , 曲線量\nCurve Angle , 曲線角度\nCurve Length , 曲線の長さ\nCurved , 曲線\nCurved Stroke , 曲線ストローク\nCurves , 曲線\nCurves Previously Defined , 以前に定義された曲線\nCustom , カスタム\nCustom Code [Global] , カスタムコード [グローバル]\nCustom Code [Local] , カスタムコード [ローカル]\nCustom Correction Map , カスタム修正マップ\nCustom Depth Correction , カスタム深度補正\nCustom Depth Maps Stream , カスタム デプスマップ ストリーム\nCustom Dictionary , カスタム辞書\nCustom Filter Code , カスタムフィルターコード\nCustom Formula , カスタムフォーミュラ\nCustom Kernel , カスタムカーネル\nCustom Layers , カスタムレイヤー\nCustom Layout , カスタムレイアウト\nCustom Style (Bottom Layer) , カスタムスタイル（ボトムレイヤー\nCustom Style (Top Layer) , カスタムスタイル（トップレイヤー\nCustom Transform , カスタムトランスフォーム\nCustomize CLUT , CLUTのカスタマイズ\nCut , カット\nCut & Normalize , カットとノーマライズ\nCut High , カットハイ\nCut Low , カットロー\nCutout , カットアウト\nCyan , シアン\nCyan Factor , シアン因子\nCyan Shift , シアンシフト\nCyan Smoothness , シアンの滑らかさ\nCycle Layers , サイクルレイヤー\nCycles , サイクル\nCylinder , シリンダー\nD and O 1 , DとO 1\nDamping per Octave , オクターブあたりのダンピング\nDark  Motive , 暗い動機\nDark Blues in Sunlight , 日光の中のダークブルース\nDark Boost , ダークブースト\nDark Color , 暗い色\nDark Edges , ダークエッジ\nDark Green 02 , ダークグリーン 02\nDark Green 1 , ダークグリーン1\nDark Grey , ダークグレー\nDark Length , 暗い長さ\nDark Motive , 暗い動機\nDark Pixels , ダークピクセル\nDark Place 01 , 暗い場所01\nDark Screen , ダークスクリーン\nDark Sky , 暗黒の空\nDark Walls , 暗い壁\nDarken , ダークン\nDarker , 暗い\nDarkness , 闇\nDarkness Level , 闇のレベル\nDate 39 , 日付 39\nDavid , デヴィッド\nDay for Night , 夜の日\nDaylight Scene , 昼間のシーン\nDCCI2x , ディーシーアイツーエックス\nDCP Dehaze , DCPデハゼ\nDe-Anaglyph , デアナグリフ\nDebug Font Size , デバッグフォントサイズ\nDecagon , 十角形\nDecompose , 分解\nDecompose Channels , チャンネルの分解\nDecoration , 装飾品\nDecreasing , 減少\nDeep , 深い\nDeep Blue , ディープブルー\nDeep Dark Warm , ディープダークウォーム\nDeep High Contrast , 深いハイコントラスト\nDeep Teal Fade , ディープティールフェード\nDeep Warm Fade , ディープウォームフェード\nDefault , デフォルト\nDefects Contrast , 欠陥のコントラスト\nDefects Density , 欠陥密度\nDefects Size , 欠陥のサイズ\nDefects Smoothness , 欠陥の滑らかさ\nDeform , 変形\nDeinterlace , デインターレース\nDeinterlace2x , デインターレース2倍\nDelaunay-Oriented , デローネ指向\nDelaunay: Portrait De Metzinger , デローネ：デメッツィンガーの肖像\nDelaunay: Windows Open Simultaneously , 遅延：Windowsを同時に開く\nDelete Layer Source , レイヤーソースの削除\nDelicatessen , デリカテッセン\nDenim , デニム\nDenoise Simple 40 , デノワーズシンプル40\nDensity , 密度\nDensity (%) , 密度(%)\nDepth , 深さ\nDepth Fade In Frames , フレーム内の深さフェード\nDepth Fade Out Frames , 深さフェードアウトフレーム\nDepth Field Control , 深度フィールド制御\nDepth Map , デプスマップ\nDepth Map Construction , デプスマップの構築\nDepth Map Only , デプスマップのみ\nDepth Map Reconstruction , デプスマップ再構築\nDepth Maps Only , デプスマップのみ\nDepth-Of-Field Type , フィールド深度タイプ\nDesaturate , 脱飽和\nDesaturate (%) , 脱飽和度(%)\nDesaturate Norm , ノルマルを脱飽和させる\nDescent Method , 降臨法\nDescreen , デスクリーン\nDesert Gold 37 , デザートゴールド 37\nDespeckle , デスペックル\nDestination (%) , 宛先 (%)\nDestination X-Tiles , デスティネーションXタイル\nDestination Y-Tiles , デスティネーションYタイル\nDetail , 詳細\nDetail Level , 詳細レベル\nDetail Reconstruction Detection , 詳細な再構成検出\nDetail Reconstruction Smoothness , ディテール再構築の滑らかさ\nDetail Reconstruction Strength , 詳細再構築強度\nDetail Reconstruction Style , 詳細再構築スタイル\nDetail Scale , 詳細スケール\nDetail Strength , 詳細強度\nDetails , 詳細\nDetails Amount , 詳細 金額\nDetails Equalizer , 詳細 イコライザ\nDetails Scale , 詳細 スケール\nDetails Smoothness , 詳細 滑らかさ\nDetails Strength (%) , 詳細 強度(%)\nDetect Skin , 皮膚を検出します。\nDeuteranomaly , しんしゅうせいぶつ\nDeuteranopia , 矮小化\nDeviation , 偏差値\nDiamond , ダイヤモンド\nDiamond (Inv.) , ダイヤモンド（Inv.\nDiamonds , ダイヤモンド\nDiamonds (Outline) , ダイヤモンド（概要\nDices , ダイス\nDices with Colored Numbers , 色の付いた数字のサイコロ\nDices with Colored Sides , 色付きサイコロ\nDif , ディフ\nDifference , 違い\nDifference Mixing , 差分混合\nDifference of Gaussians , ガウスの違い\nDifferent Axis , 異軸\nDiffuse (%) , 拡散率(%)\nDiffuse Shadow , 拡散影\nDiffusion , 拡散\nDiffusion Tensors , 拡散テンソル\nDiffusivity , 拡散性\nDigits , 数字\nDilatation , 希釈率\nDilate , 希釈する\nDilation , 伸縮性\nDilation - Original , ダイレーション - オリジナル\nDilation / Erosion , 浸食\nDimension , 寸法\nDimension [Diff] , 寸法 [Diff]\nDimension A , 寸法A\nDimensions (%) , 寸法(%)\nDimensions Pixels , 寸法 ピクセル\nDipole: 1/(4*z^2-1) , 双極子。1/(4*z^2-1)\nDirect , 直接\nDirection , 方向\nDirections 23 , 道順 23\nDirichlet , ディリクレ\nDirty , 汚れた\nDisable , 無効化\nDisabled , 無効化された\nDiscard Contour Guides , コンターガイドの破棄\nDiscard Transparency , 透明性を捨てる\nDisco , ディスコ\nDisplay , 表示\nDisplay Blob Controls , 表示ブロブのコントロール\nDisplay Color Axes , 表示色軸\nDisplay Contours , 表示輪郭\nDisplay Coordinates , 表示座標\nDisplay Coordinates on Preview Window , プレビューウィンドウに座標を表示\nDisplay Debug Info on Preview , プレビューにデバッグ情報を表示する\nDistance , 距離\nDistance (Fast) , 距離（高速\nDistance Transform , 距離変換\nDistort Lens , レンズを歪める\nDistortion Factor , ディストーションファクター\nDistortion Surface Angle , 歪曲面角\nDistortion Surface Position , 歪曲面位置\nDisturbance Scale-By-Factor , 撹乱の規模別係数\nDisturbance X , 撹乱X\nDisturbance Y , 撹乱Y\nDither Output , ディザ出力\nDithering , ディザリング\nDivide , 割り算\nDjango 25 , ジャンゴ 25\nDo Not Flatten Transparency , 透明度をフラットにしない\nDodge , ダッジ\nDodge and Burn , ダッジとバーン\nDodge Blur , ダッジブラー\nDodge Strength , ダッジ力\nDOF Analyzer , DOFアナライザ\nDog , 犬\nDomingo 145 , ドミンゴ145\nDon't Sort , ソートしないでください\nDoNothing , 何もしない\nDoodle , いたずら書き\nDot Size , ドットサイズ\nDots , ドット\nDownload External Data , 外部データのダウンロード\nDragon Curve , ドラゴンカーブ\nDragonfly , トンボ\nDrawing Mode , 描画モード\nDrawn Montage , 描画モンタージュ\nDream , 夢\nDream 1 , 夢1\nDream 85 , 夢85\nDream Smoothing , ドリームスムージング\nDrop Blues , ドロップブルース\nDrop Green Tint 14 , ドロップグリーンティント14\nDrop Shadow , ドロップシャドウ\nDrop Shadow 3D , ドロップシャドウ3D\nDrop Water , ドロップウォーター\nDroste , ドロスト\nDuck , アヒル\nDuplicate Bottom , 下部の複製\nDuplicate Horizontal , 水平方向の複製\nDuplicate Left , 左の複製\nDuplicate Right , 右の複製\nDuplicate Top , トップの複製\nDuplicate Vertical , 垂直方向の複製\nDuration , 持続時間\nDusty , ほこりっぽい\nDynamic Range Increase , ダイナミックレンジの増加\nEagle , 鷲\nEarth , 地球\nEarth Tone Boost , アーストーンブースト\nEasy Skin Retouch , 簡単スキンレタッチ\nEdge , エッジ\nEdge Antialiasing , エッジアンチエイリアシング\nEdge Attenuation , エッジ減衰\nEdge Behavior X , エッジ行動X\nEdge Behavior Y , エッジ行動Y\nEdge Detect Includes Chroma , エッジディテクトにはクロマが含まれています。\nEdge Exponent , エッジ指数\nEdge Fidelity , エッジフィデリティ\nEdge Influence , エッジの影響\nEdge Mask , エッジマスク\nEdge Sensitivity , エッジ感度\nEdge Shade , エッジシェード\nEdge Simplicity , エッジのシンプルさ\nEdge Smoothness , エッジの滑らかさ\nEdge Thickness , エッジ厚\nEdge Threshold , エッジしきい値\nEdge Threshold (%) , エッジしきい値(%)\nEdge-Oriented , エッジ指向\nEdges , エッジ\nEdges (%) , エッジ(%)\nEdges [Animated] , エッジ[アニメーション]\nEdges Offsets , エッジオフセット\nEdges on Fire , 火の上のエッジ\nEdges-0.5 (beware: Memory-Consuming!) , エッジ-0.5（用心：メモリ消費!\nEdges-1 (beware: Memory-Consuming!) , エッジ-1（用心：メモリ消費\nEdges-2 (beware: Memory-Consuming!) , エッジ-2（用心：メモリを消費する\nEdgy Ember , エッジの効いたこはく\nEffect Strength , 効果の強さ\nEffect X-Axis Scaling , 効果 X軸スケーリング\nEffect Y-Axis Scaling , 効果 Y軸スケーリング\nEight Layers , 8つのレイヤー\nEight Threads , 八つのスレッド\nElegance 38 , エレガンス 38\nElephant , ぞうさん\nElevation , 昇降量\nElevation (%) , 標高(%)\nEllipse , 楕円\nEllipse Painting , 楕円の絵画\nEllipse Ratio , 楕円率\nEllipsionism , エリプシオンしゅぎ\nEllipsionism Opacity , 楕円形 不透明度\nEllipsoid , 楕円体\nEmboss , エンボス\nEnable Antialiasing , アンチエイリアシングを有効にする\nEnable Interpolated Motion , 補間モーションを有効にする\nEnable Morphology , 形態素解析を有効にする\nEnable Paintstroke , ペイントストロークを有効にする\nEnable Segmentation , セグメンテーションを有効にする\nEnchanted , エンチャンテッド\nEnd Color , エンドカラー\nEnd Frame Number , エンドフレーム番号\nEnd of Mid-Tones , ミッドトーン終了\nEnd Point Connectivity , エンドポイント接続性\nEnd Point Rate (%) , エンドポイント率(%)\nEnding Angle , 終了角度\nEnding Color , エンディングカラー\nEnding Feathering , エンディングフェザーリング\nEnding Point (%) , 終了点(%)\nEnding Scale (%) , 終了規模(%)\nEnding Value , エンディングバリュー\nEnding X-Centering , エンディングXセンタリング\nEnding Y-Centering , エンディングYセンター\nEngrave , 刻印\nEnhance Detail , 詳細を強調する\nEnhance Details , 詳細を強化する\nEqualization , 平衡化\nEqualization (%) , 均等化(%)\nEqualize , イコライズ\nEqualize and Normalize , イコライズとノーマライズ\nEqualize at Each Step , 各ステップで均等化\nEqualize HSI-HSL-HSV , HSI-HSL-HSVを均等化する\nEqualize HSV , HSVを均等化\nEqualize Light , イコライズライト\nEqualize Local Histograms , 局所ヒストグラムの均等化\nEqualize Shadow , イコライズシャドウ\nEquation Plot [Parametric] , 方程式のプロット [パラメトリック]\nEquation Plot [Y=f(X)] , 式プロット [Y=f(X)]\nEquirectangular to Nadir-Zenith , ナディール天頂に直角\nEric Ellerbrock (14) , エリック・エラブロック (14)\nErosion , 浸食\nErosion / Dilation , 浸食・脱毛\nEtch Tones , エッチトーン\nEterna for Flog , フログのためのエテルナ\nEuclidean , ユークリッド\nEuclidean - Polar , ユークリッド-極\nExclusion , 除外\nExp , エクスポ\nExp(z) , エクスポ(z)\nExpand , 展開\nExpand Background Reconstruction , 背景の再構築を拡大\nExpand Shadows , 影の拡大\nExpand Size , 拡張サイズ\nExpanding Mirrors , 拡大鏡\nExpired (fade) , 期限切れ（フェード\nExpired (polaroid) , 期限切れ（ポラロイド\nExpired 69 , 期限切れ69\nExponent , 指数\nExponent (Imaginary) , 指数（虚数\nExponent (Real) , 指数（実数\nExponential , 指数的\nExport RGB-565 File , エクスポートRGB-565ファイル\nExposure , 露出\nExpression , 表現方法\nExtend 1px , 1px拡張\nExternal Transparency , 外部からの透明性\nExtra  Smooth , エクストラ・スムース\nExtract Foreground [Interactive] , 前景を抽出する [インタラクティブ]\nExtract Objects , オブジェクトの抽出\nExtrapolate Color Spots on Transparent Top Layer , 透明トップレイヤーの色点を外挿し\nExtrapolate Colors As , 色の外挿\nExtrapolated Colors + Lineart , 外挿し色＋ラインアート\nExtreme , 極端な\nF(X) , エフ\nFactor , 因子\nFade , フェード\nFade End , フェードエンド\nFade End (%) , フェードエンド(%)\nFade Layers , フェードレイヤー\nFade Start , フェードスタート\nFade Start (%) , フェード開始 (%)\nFade to Green , フェード・トゥ・グリーン\nFaded , 色あせた\nFaded (alt) , 色あせた(alt)\nFaded (analog) , フェード（アナログ\nFaded (extreme) , 色あせた（極端\nFaded (vivid) , 色あせた（鮮やかな\nFaded 47 , フェード47\nFaded Green , フェードグリーン\nFaded Look , フェードルック\nFaded Print , フェードプリント\nFaded Retro 01 , フェードレトロ01\nFaded Retro 02 , フェードレトロ02\nFading , フェージング\nFading Shape , フェージング形状\nFall Colors , 秋の色\nFar Point Deviation , 極点偏差\nFast , ファスト\nFast &#40;Approx.&#41; , 速い (約 &#41.\nFast (Low Precision) Preview , 高速（低精度）プレビュー\nFast Approximation , 高速近似\nFast Blend , 高速ブレンド\nFast Blend Preview , 高速ブレンドプレビュー\nFast Recovery , 高速回復\nFast Resize , 高速リサイズ\nFaux Infrared , 擬似赤外線\nFeathering , フェザーリング\nFeature Analyzer Smoothness , フィーチャーアナライザーの滑らかさ\nFeature Analyzer Threshold , フィーチャーアナライザしきい値\nFelt Pen , フェルトペン\nFFT Preview , FFTプレビュー\nFibers , 繊維\nFibers Amplitude , 繊維の振幅\nFibers Smoothness , 繊維の滑らかさ\nFibrousness , 繊維性\nFidelity Chromaticity , フィデリティ 色度\nFidelity Smoothness (Coarsest) , フィデリティの滑らかさ（最も粗い\nFidelity Smoothness (Finest) , フィデリティ・スムースネス（最高級\nFidelity to Target (Coarsest) , ターゲットへの忠実度（コアス\nFidelity to Target (Finest) , ターゲットへのフィデリティ（フィネスト\nFilename , ファイル名\nFill Holes , 充填穴\nFill Holes % , 塗りつぶし穴 %.\nFill Transparent Holes , 透明な穴を埋める\nFilled , 満たされた\nFilled Circles , 塗りつぶした円\nFilling , 充填\nFilm 0987 , フィルム0987\nFilm 9879 , フィルム9879\nFilm Highlight Contrast , フィルムハイライトコントラスト\nFilm Print 01 , フィルムプリント01\nFilm Print 02 , フィルムプリント 02\nFilmic , フィルム\nFilter Design , フィルター設計\nFilterGrade Cinematic (8) , フィルタグレードシネマ (8)\nFinal Image , 最終画像\nFine , ファイン\nFine 2 , ファイン2\nFine Details Smoothness , 細部の滑らかさ\nFine Details Threshold , 細部のしきい値\nFine Noise , ファインノイズ\nFine Scale , ファインスケール\nFinest (slower) , 最上級(遅め)\nFinger Paint , フィンガーペイント\nFinger Size , 指のサイズ\nFire Effect , 火の効果\nFireworks , 花火\nFirst , 最初の\nFirst Color , ファーストカラー\nFirst Frame , 最初のフレーム\nFirst Offset , 最初のオフセット\nFirst Radius , 第一半径\nFirst Size , ファーストサイズ\nFish-Eye , フィッシュアイ\nFish-Eye Effect , フィッシュアイ効果\nFitting Function , フィット機能\nFive Layers , 5つのレイヤー\nFlag , 旗\nFlag (256) , フラグ (256)\nFlat , フラット\nFlat 30 , フラット30\nFlat Color , フラットカラー\nFlat Regions Removal , フラットリージョンの除去\nFlat-Shaded , フラットシェード\nFlatness , 平坦度\nFlavin , フラビン\nFlip , フリップ\nFlip & Rotate Blocs , ブロックの反転と回転\nFlip Cross-Hatch , フリップクロスハッチ\nFlip Left / Right , フリップ左/右\nFlip Left/Right , 左/右反転\nFlip The Pattern , パターンを反転させる\nFlip Tolerance , フリップ公差\nFlower , 花\nFocale , フォカーレ\nFoggy Night , 霧の夜\nFolder Name , フォルダ名\nFolger 50 , フォルガー50\nFont Colors , フォントの色\nFont Height (px) , フォントの高さ (px)\nForce Gray , フォースグレー\nForce Re-Download from Scratch , スクラッチからの強制再ダウンロード\nForce Tiles to Have Same Size , 瓦の大きさを強制的に同じにする\nForce Transparency , 強制透明化\nForeground Color , 前景色\nForm , 形態\nFormula , 式\nForward , 前方\nForward  Horizontal , 前方水平\nForward Horizontal , 前方水平\nForward Vertical , 前方垂直\nFour Layers , 4つの層\nFour Threads , 四つのスレッド\nFourier Analysis , フーリエ解析\nFourier Filtering , フーリエフィルタリング\nFourier Transform , フーリエ変換\nFourier Watermark , フーリエ電子透かし\nFOV , 視野\nFractal Noise , フラクタルノイズ\nFractal Points , フラクタルポイント\nFractal Set , フラクタルセット\nFractal Whirl , フラクタルの渦巻き\nFractalize , フラクタル化\nFractured Clouds , 分裂した雲\nFragment Blur , フラグメントブラー\nFrame (px) , フレーム(px)\nFrame [Blur] , フレーム [ぼかし]\nFrame [Cube] , フレーム【キューブ\nFrame [Fuzzy] , フレーム [ファジー]\nFrame [Mirror] , フレーム【ミラー\nFrame [Painting] , フレーム [絵画]\nFrame [Pattern] , フレーム[パターン]\nFrame [Regular] , フレーム [レギュラー]\nFrame [Round] , フレーム[丸]\nFrame [Smooth] , フレーム[スムース]\nFrame as a New Layer , 新しいレイヤーとしてのフレーム\nFrame Color , フレーム色\nFrame Files Format , フレームファイル形式\nFrame Format , フレームフォーマット\nFrame Size , フレームサイズ\nFrame Skip , フレームスキップ\nFrame Type , フレームのタイプ\nFrame Width , フレーム幅\nFrames , フレーム\nFrames Offset , フレームオフセット\nFreaky B&W , 気紛れな白黒\nFreaky Details , フリーキーの詳細\nFreeze , 凍結\nFrench Comedy , フレンチコメディ\nFrequency , 周波数\nFrequency (%) , 頻度(%)\nFrequency Analyzer , 周波数分析器\nFrequency Range , 周波数範囲\nFreqy Pattern , フリーキーパターン\nFriends Hall of Fame , フレンド殿堂\nFrom Input , 入力から\nFrom Reference Color , リファレンスカラーから\nFrosted , 曇らされた\nFrosted Beach Picnic , フロストビーチピクニック\nFruits , 果物\nFuji 160C , 富士山160C\nFuji 160C + , 富士山１６０Ｃ+の\nFuji 160C ++ , 富士山160C ++。\nFuji 160C - , 富士山160C\nFuji 3510 (Constlclip) , 富士山3510(コンストレクリップ)\nFuji 3510 (Constlmap) , 富士山3510 (コンストマップ)\nFuji 3510 (Cuspclip) , 富士山3510（カスクリップ\nFuji 3513 (Constlclip) , 富士山3513 (コンストレクリップ)\nFuji 3513 (Constlmap) , 富士山3513 (コンストラルマップ)\nFuji 3513 (Cuspclip) , 富士山3513（カスクリップ\nFuji 400H , 富士山400H\nFuji 400H + , 富士山４００Ｈ＋富士山４００Ｈ\nFuji 400H ++ , 富士山400H＋＋＋。\nFuji 400H - , 富士山400H\nFuji 800Z , 富士800Z\nFuji 800Z + , 富士山８００ｚ＋富士山８００ｚ\nFuji 800Z ++ , 富士山800Z＋＋＋。\nFuji 800Z - , 富士山800Z\nFuji Astia 100F , 富士アスティア100F\nFuji FP 100C , 富士ＦＰ１００Ｃ\nFuji FP-100c , フジエフピー100c\nFuji FP-100c (alt) , 富士山FP-100c (alt)\nFuji FP-100c + , 富士山FP-100c＋富士山FP-100c\nFuji FP-100c ++ , 富士山FP-100c ++。\nFuji FP-100c +++ , 富士山FP-100c ＋＋＋＋＋＋。\nFuji FP-100c ++a , 富士山FP-100c ++a\nFuji FP-100c - , 富士山FP-100c\nFuji FP-100c -- , 富士山FP-100c\nFuji FP-100c Cool , 富士山FP-100c クール\nFuji FP-100c Cool + , 富士山FP-100cクール＋α\nFuji FP-100c Cool ++ , 富士山FP-100cクール＋＋＋。\nFuji FP-100c Cool - , 富士山FP-100c クール\nFuji FP-100c Cool -- , 富士山FP-100c クール\nFuji FP-100c Negative , 富士山FP-100cネガ\nFuji FP-100c Negative + , 富士山FP-100cネガティブ＋α\nFuji FP-100c Negative ++ , 富士山FP-100cネガティブ+++。\nFuji FP-100c Negative +++ , 富士山FP-100cネガティブ＋＋＋＋＋＋。\nFuji FP-100c Negative ++a , 富士山FP-100cネガティブ++a\nFuji FP-100c Negative - , 富士山FP-100c ネガティブ\nFuji FP-100c Negative -- , 富士山FP-100cネガ\nFuji FP-3000b , 富士FP-3000b\nFuji FP-3000b + , 富士山FP-3000b＋富士山FP-3000b\nFuji FP-3000b ++ , 富士山FP-3000b ++。\nFuji FP-3000b +++ , 富士山FP-3000b +＋＋＋＋。\nFuji FP-3000b - , 富士山FP-3000b\nFuji FP-3000b -- , 富士山FP-3000b\nFuji FP-3000b HC , 富士山FP-3000b HC\nFuji FP-3000b Negative , 富士山FP-3000bネガ\nFuji FP-3000b Negative + , 富士山FP-3000bネガティブ＋α\nFuji FP-3000b Negative ++ , 富士山FP-3000bネガティブ++。\nFuji FP-3000b Negative +++ , 富士山FP-3000bネガティブ++++++。\nFuji FP-3000b Negative - , 富士山FP-3000bネガ\nFuji FP-3000b Negative -- , 富士山FP-3000bネガ\nFuji FP-3000b Negative Early , 富士山FP-3000bネガティブ初期\nFuji HDR , フジHDR\nFuji Ilford Delta 3200 , 富士山イルフォードデルタ3200\nFuji Ilford Delta 3200 + , 富士山イルフォードデルタ3200＋α\nFuji Ilford Delta 3200 ++ , 富士山イルフォードデルタ3200＋＋＋。\nFuji Ilford Delta 3200 - , 富士山イルフォードデルタ3200\nFuji Ilford HP5 , 富士山イルフォードHP5\nFuji Ilford HP5 + , 富士山イルフォードのHP5枚＋α\nFuji Ilford HP5 ++ , 富士山イルフォードのHP5+++。\nFuji Ilford HP5 - , 富士山イルフォードHP5\nFuji Neopan 1600 , 富士ネオパン1600\nFuji Neopan 1600 + , 富士ネオパン1600＋α\nFuji Neopan 1600 ++ , 富士ネオパン1600＋＋＋で\nFuji Neopan 1600 - , 富士ネオパン1600\nFuji Neopan Acros 100 , 富士ネオパンアクロス100\nFuji Provia 100F , 富士プロビア100F\nFuji Provia 400F , 富士プロビア400F\nFuji Provia 400X , 富士プロビア400X\nFuji Sensia 100 , フジセンシア100\nFuji Superia 100 , フジスーペリア100\nFuji Superia 100 + , フジスーペリア１００+\nFuji Superia 100 ++ , フジスーペリア100+++。\nFuji Superia 100 - , フジスーペリア100\nFuji Superia 1600 , フジスーペリア1600\nFuji Superia 1600 + , フジスーペリア1600＋α\nFuji Superia 1600 ++ , フジスーペリア1600＋＋＋。\nFuji Superia 1600 - , フジスーペリア1600\nFuji Superia 200 , フジスーペリア200\nFuji Superia 200 XPRO , フジスーペリア200 XPRO\nFuji Superia 400 , フジスーペリア400\nFuji Superia 400 + , フジスーペリア４００+α\nFuji Superia 400 ++ , フジスーペリア４００＋＋＋。\nFuji Superia 400 - , フジスーペリア400\nFuji Superia 800 , フジスーペリア800\nFuji Superia 800 + , フジスーペリア８００＋α\nFuji Superia 800 ++ , フジスーペリア800＋＋＋。\nFuji Superia 800 - , フジスーペリア800\nFuji Superia HG 1600 , フジスーペリアHG 1600\nFuji Superia Reala 100 , フジスーペリアリア100\nFuji Superia X-Tra 800 , フジスーペリアXトラ800\nFuji Velvia 50 , 富士ベルビア50\nFuji XTrans III (15) , 富士 XTrans III (15)\nFull , フル\nFull (Allows Multi-Layers) , フル（マルチレイヤー対応\nFull (Slower) , フル（低速\nFull Bottom/top , フルボトム/トップ\nFull Colors , フルカラー\nFull HD Frame Packing , フルHDフレームパッキン\nFull Layer Stack -Slow!- , フルレイヤースタック -Slow!\nFull Side by Side Keep Uncompressed , フルサイドバイサイドキープ非圧縮\nFull Side by Side Keep Width , フルサイドバイサイドキープ幅\nFull Side by Uncompressed , 非圧縮でフルサイド\nFusion 88 , フュージョン88\nFuturistic Bleak 1 , 未来的な漂白 1\nFuturistic Bleak 2 , 未来的なブレイクスルー2\nFuturistic Bleak 3 , 未来的な漂流3\nFuturistic Bleak 4 , 未来的な漂流 4\nFuzzyness , ファジーネス\nG'MIC Operator , G'MICオペレータ\nG/M Smoothness , G/M 滑らかさ\nGain , ゲイン\nGames & Demos , ゲームとデモ\nGamma , ガンマ\nGamma (%) , ガンマ(%)\nGamma Balance , ガンマバランス\nGamma Compensation , ガンマの補償\nGamma Equalizer , ガンマ・イコライザー\nGaussian , ガウス\nGear , 歯車\nGenerate Random-Colors Layer , ランダムカラーレイヤーの生成\nGeneric Fuji Astia 100 , ジェネリックフジアスティア100\nGeneric Fuji Provia 100 , ジェネリックフジプロビア100\nGeneric Fuji Velvia 100 , ジェネリックフジベルビア100\nGeneric Kodachrome 64 , 汎用コダクローム64\nGeneric Kodak Ektachrome 100 VS , ジェネリックコダック エクタクローム100 VS\nGeneric Skin Structure , 一般的な皮膚構造\nGentle Mode (overrides Minimum Brightness and Minimun Red:Blue Ratio) , ジェントルモード（最小輝度と最小赤：青の比率をオーバーライド\nGeometry , 幾何学\nGlamour Glow , グラマーグロー\nGlobal , グローバル\nGlobal Mapping , グローバルマッピング\nGlow , グロー\nGmicky (Deevad) , Gmicky(ディエバド)\nGmicky (Mahvin) , Gmicky（マービン\nGmicky - Roddy , Gmicky - ロディ\nGoing for a Walk , 散歩に行く\nGold , 金\nGolden , ゴールデン\nGolden (bright) , 金色（明るい\nGolden (fade) , ゴールデン（フェード\nGolden (mono) , ゴールデン（モノラル\nGolden (vibrant) , 金色（鮮やか\nGolden Gate , ゴールデンゲート\nGolden Night Softner 43 , ゴールデンナイトソフトナー 43\nGolden Sony 37 , ゴールデンソニー37\nGoldFX - Bright Spring Breeze , GoldFX - 明るい春の風\nGoldFX - Bright Summer Heat , GoldFX - 明るい夏の暑さ\nGoldFX - Hot Summer Heat , GoldFX - ホットサマーヒート\nGoldFX - Perfect Sunset 01min , GoldFX - パーフェクトサンセット 01分\nGoldFX - Perfect Sunset 05min , GoldFX - パーフェクトサンセット 05分\nGoldFX - Perfect Sunset 10min , GoldFX - パーフェクトサンセット10分\nGoldFX - Spring Breeze , GoldFX - 春の風\nGoldFX - Summer Heat , GoldFX - 夏の暑さ\nGood Morning , おはようございます\nGouraud , グロー\nGradienNormLinearity , グラディエンノルム直線性\nGradienNormSmoothness , グラディエンノルム平滑度\nGradient , グラデーション\nGradient [Corners] , グラデーション [コーナー]\nGradient [Custom Shape] , グラデーション[カスタムシェイプ]\nGradient [from Line] , グラデーション [線から]\nGradient [Linear] , 勾配 [線形]\nGradient [Radial] , グラデーション [放射状]\nGradient [Random] , グラデーション [ランダム]\nGradient Norm , グラデーションノルム\nGradient Preset , グラデーションプリセット\nGradient RGB , グラデーションRGB\nGradient Smoothness , 勾配の滑らかさ\nGradient Values , グラデーション値\nGrain , 穀物\nGrain (Highlights) , 穀物（ハイライト\nGrain (Midtones) , グレイン（中間調\nGrain (Shadows) , 粒（影\nGrain Extract , 穀物エキス\nGrain Merge , グレイン マージ\nGrain Only , 穀物のみ\nGrain Scale , 穀物のスケール\nGrain Tone Fading , グレイントーンフェージング\nGrain Type , 穀物の種類\nGrainext , グレインネクスト\nGrainextract , グレインエキス\nGrainmerge , グレインマージ\nGranularity , 粒度\nGraphic Boost , グラフィックブースト\nGraphic Colours , グラフィックカラー\nGraphic Novel , グラフィックノベル\nGraphix Colors , グラフィックスカラー\nGrayscale , グレースケール\nGreece , ギリシャ\nGreen , グリーン\nGreen 15 , グリーン15\nGreen 2025 , グリーン2025\nGreen Action , グリーンアクション\nGreen Afternoon , グリーンアフタヌーン\nGreen Blues , グリーンブルース\nGreen Conflict , グリーンコンフリクト\nGreen Day 01 , グリーンデー01\nGreen Day 02 , グリーンデー02\nGreen Factor , グリーンファクター\nGreen G09 , グリーンG09\nGreen Indoor , 緑の屋内\nGreen Level , グリーンレベル\nGreen Light , グリーンライト\nGreen Mono , グリーンモノ\nGreen Rotations , 緑の回転\nGreen Shift , グリーンシフト\nGreen Smoothness , 緑の滑らかさ\nGreen Wavelength , 緑の波長\nGreen Yellow , グリーンイエロー\nGreen-Blue , 緑青\nGreen-Red , 緑赤\nGreenish Contrasty , 緑のコントラスト\nGreenish Fade , 緑がかったフェード\nGreenish Fade 1 , 緑がかったフェード1\nGrey , グレー\nGreyscale , グレースケール\nGrid , グリッド\nGrid [Cartesian] , グリッド [デカルト]\nGrid [Hexagonal] , グリッド [六角形]\nGrid [Triangular] , グリッド [三角形]\nGrid Divisions , グリッド分割\nGrid Smoothing , グリッドのスムージング\nGrid Width , グリッド幅\nGritty , グリッティ\nGrow Alpha , アルファを成長させる\nGuide As , ガイド\nGuide Mix , ガイドミックス\nGuide Recovery , ガイドリカバリー\nGum Leaf , ガムの葉\nGummy , グミ\nGyroid , ジャイロイド\nH Cutoff , Hカットオフ\nHackmanite , ハックマナイト\nHair Locks , ヘアロック\nHaldCLUT , ハルドクラット\nHaldCLUT Filename , HaldCLUT ファイル名\nHalf Bottom/top , ハーフボトム/トップ\nHalf Side  by Side , ハーフサイドバイサイド\nHalftone , ハーフトーン\nHalftone Shapes , ハーフトーンシェイプ\nHanoi Tower , ハノイタワー\nHappyness 133 , 幸福感133\nHard , ハード\nHard Dark , ハードダーク\nHard Light , ハードライト\nHard Mix , ハードミックス\nHard Sketch , ハードスケッチ\nHard Teal Orange , ハードティールオレンジ\nHardlight , ハードライト\nHardmix , ハードミックス\nHarsh Day , 晴天の日\nHarsh Sunset , ハーシュ・サンセット\nHCY , ＨＣＹ\nHDR Effect (Tone Map) , HDR効果（トーンマップ\nHeart , ハート\nHearts , ハート\nHearts (Outline) , ハーツ（概要\nHedcut (Experimental) , ヘドカット（実験\nHeight , 高さ\nHeight (%) , 高さ(%)\nHelios , ヘリオス\nHerderite , ヘルデライト\nHeulandite , ホイランド人\nHexagon , 六角形\nHexagonal , 六角形\nHiddenite , ヒドゥンダイト\nHigh , 高\nHigh (Slower) , 高（遅い\nHigh Frequency , 高周波数\nHigh Frequency Layer , 高周波層\nHigh Key , ハイキー\nHigh Pass , ハイパス\nHigh Quality , 高品質\nHigh Scale , ハイスケール\nHigh Speed , 高速\nHigh Value , 高価値\nHigher Mask Threshold (%) , 高いマスク閾値 (%)\nHighlight , ハイライト\nHighlight (%) , ハイライト(%)\nHighlight Bloom , ハイライトブルーム\nHighlights , ハイライト\nHighlights Abstraction , ハイライト 抽象化\nHighlights Brightness , ハイライトの明るさ\nHighlights Color Intensity , ハイライト色強度\nHighlights Crossover Point , ハイライトクロスオーバーポイント\nHighlights Hue , ハイライト色相\nHighlights Lightness , ハイライトの明るさ\nHighlights Protection , ハイライト保護\nHighlights Selection , ハイライトセレクション\nHighlights Threshold , ハイライトしきい値\nHighlights Zone , ハイライトゾーン\nHighres CLUT , ハイグリースCLUT\nHilutite , ヒルタイト\nHistogram , ヒストグラム\nHistogram Analysis , ヒストグラム解析\nHistogram Transfer , ヒストグラム転送\nHokusai: The Great Wave , 北斎：大波\nHomogeneity , 同質性\nHong Kong , 香港\nHope Poster , 希望のポスター\nHorisontal Length , ホリゾンタルの長さ\nHorizon Leveling (deg) , ホライゾンレベリング(deg)\nHorizontal , 水平方向\nHorizontal (%) , 水平方向(%)\nHorizontal Amount , 横軸量\nHorizontal Array , 水平配列\nHorizontal Blur , 水平ぼかし\nHorizontal Length , 水平方向の長さ\nHorizontal Size (%) , 水平サイズ(%)\nHorizontal Stripes , 横縞\nHorizontal Tiles , 横型タイル\nHorizontal Warp Only , 水平ワープのみ\nHorror Blue , ホラーブルー\nHot , ホット\nHot (256) , ホット (256)\nHough Sketch , ハフスケッチ\nHough Transform , ハフトランスフォーム\nHouse , 家\nHouseholder , 世帯主\nHowlite , ハウライト\nHSI , エイチエスアイ\nHSI [all] , HSI [すべて]\nHSI [Intensity] , HSI [強度]\nHSI8 , エイチエスアイエイト\nHSL , ＨＳＬ\nHSL [all] , HSL [すべて]\nHSL [Lightness] , HSL [軽さ]\nHSL Adjustment , HSL調整\nHSL8 , ＨＳＬ８\nHSV , ＨＳＶ\nHSV [all] , HSV [すべて]\nHSV [Hue] , HSV [色相]\nHSV [Saturation] , HSV [飽和度]\nHSV [Value] , HSV [値]\nHSV Select , HSV 選択\nHSV8 , ＨＳＶ８\nHue , 色相\nHue (%) , 色相(%)\nHue Band , 色相帯\nHue Factor , 色相因子\nHue Lighten-Darken , 色相を明るくする-濃くする\nHue Max (%) , 色相最大値 (%)\nHue Min (%) , 色相 最小 (%)\nHue Offset , 色相オフセット\nHue Range , 色相範囲\nHue Shift , 色相シフト\nHue Smoothness , 色相の滑らかさ\nHuman  2 , 人間2\nHuman 1 , 人間1\nHuman 2 , 人間2\nHybrid Median - Medium Speed Softest Output , ハイブリッドメディアン - 中速ソフト出力\nHydracore , ハイドラコア\nHyla 68 , ハイラ 68\nHyper Droste , ハイパードロスト\nHypersthene , ハイパーステン\nHypnosis , 催眠術\nHypressen , ハイプレス\nIain Noise Reduction 2019 , イアインノイズリダクション2019\nIain's Fast Denoise , アイアンズファストデノワーズ\nIdentity , アイデンティティ\nIgnore , 無視\nIgnore Current Aspect , 現在のアスペクトを無視する\nIlford Delta 100 , イルフォードデルタ100\nIlford Delta 3200 , イルフォードデルタ3200\nIlford Delta 400 , イルフォードデルタ400\nIlford FP4 Plus 125 , イルフォード FP4プラス125\nIlford HP5 Plus 400 , イルフォードHP5プラス400\nIlford HPS 800 , イルフォードHPS 800\nIlford Pan F Plus 50 , イルフォードパンFプラス50\nIlford XP2 , イルフォードXP2\nIlluminate 2D Shape , 2次元形状を照らす\nIllumination , イルミネーション\nIllustration Look , イラストルック\nImage , イメージ\nImage + Background , 画像+背景\nImage + Colors (2 Layers) , 画像+カラー（2レイヤー\nImage + Colors (Multi-Layers) , 画像＋カラー（マルチレイヤー\nImage Contour Dimensions , 画像の輪郭寸法\nImage Smoothness , 画像の滑らかさ\nImage to Grab Color from (.Png) , (.Png)から色を取得する画像\nImage Weight , 画像の重さ\nImport Data , データのインポート\nImport RGB-565 File , インポートRGB-565ファイル\nImpulses 5x5 , インパルス5倍\nImpulses 7x7 , インパルス7x7\nImpulses 9x9 , 衝動 9x9\nInch , インチ\nInclude Opacity Layer , 不透明度レイヤーを含む\nIncreaseChroma1 , 彩度を上げる\nIncreasing , 増加する\nIndoor Blue , インドアブルー\nIndustrial 33 , 産業用33\nInfluence of Color Samples (%) , 色見本の影響(%)\nInformation , 情報のご案内\nInit. Resolution , Init.決議\nInit. Type , Init.タイプ\nInit. With High Gradients Only , Init.高勾配のみ\nInitial Density , 初期密度\nInitialization , 初期化\nInk Wash , インクウォッシュ\nInner , 内側\nInner Fading , インナーフェージング\nInner Length , 内側の長さ\nInner Radius , 内側半径\nInner Radius (%) , 内側半径(%)\nInner Shade , インナーシェード\nInpaint [Holes] , インペイント[穴]\nInpaint [Morphological] , インペイント【形態素\nInpaint [Multi-Scale] , インペイント[マルチスケール]\nInpaint [Patch-Based] , インペイント[パッチベース]\nInpaint [Transport-Diffusion] , インペイント【トランスポート・ディフュージョン\nInput , にゅうりょく\nInput Folder , 入力フォルダ\nInput Frame Files Name , 入力フレームファイル名\nInput Guide Color , 入力ガイドカラー\nInput Layers , 入力レイヤ\nInput Transparency , 入力の透明性\nInput Type , 入力タイプ\nInsert New CLUT Layer , 新規CLUTレイヤの挿入\nInside , 内部\nInside Color , 中の色\nInside-Out , インサイドアウト\nInstant [Consumer] (54) , インスタント [消費者] (54)\nInstant [Pro] (68) , インスタント[プロ] (68)\nInstant-C , インスタントC\nIntarsia , インターシャ\nIntensity , 強度\nIntensity of Purple Fringe , パープルフリンジの強度\nInter-Frames , フレーム間\nInterlace Horizontal , インターレース水平\nInterlace Vertical , インターレース縦型\nInterp , 間\nInterpolate , 補間\nInterpolation , 補間\nInterpolation Type , 補間タイプ\nInverse , 逆\nInverse Depth Map , 逆デプスマップ\nInverse Radius , 逆半径\nInverse Transform , 逆変換\nInversions , 反転\nInvert Background / Foreground , 背景/前景を反転\nInvert Blur , インバートブラー\nInvert Canvas Colors , キャンバスの色を反転させる\nInvert Colors , インバートカラー\nInvert Image Colors , イメージの色を反転させる\nInvert Luminance , 反転輝度\nInvert Mask , インバートマスク\nInward , 内向き\nIsophotes , 等食動物門\nIsotropic , 等方性\nIteration , 反復\nIterations , イテレーション\nIters , イタース\nJ.T. Semple (14) , J.T.センプル (14)\nJapanese Maple Leaf , もみじの葉\nJawbreaker , ジョウブレイカー\nJet , ジェット\nJet (256) , ジェット (256)\nJPEG Artefacts , JPEGアーテファクト\nJPEG Smooth , JPEG スムーズ\nJulia , ジュリア\nJust Peachy , ジャストピーチ\nK-Factor , ケイファクタ\nK-Tone Vintage Kodachrome , Kトーン ヴィンテージ コダクローム\nKaleidoscope [Blended] , 万華鏡【ブレンド\nKaleidoscope [Polar] , 万華鏡【極\nKaleidoscope [Symmetry] , 万華鏡【シンメトリー\nKandinsky: Squares with Concentric Circles , カンディンスキー同心円の正方形\nKandinsky: Yellow-Red-Blue , カンディンスキー：黄・赤・青\nKeep , 飼う\nKeep Aspect Ratio , アスペクト比の維持\nKeep Base Layer as Input Background , ベースレイヤーを入力背景として保持\nKeep Borders Square , キープボーダーズスクエア\nKeep Color Channels , カラーチャンネルを維持する\nKeep Colors , 色を保つ\nKeep Detail , 詳細を保持する\nKeep Detail Layer Separate , ディテールレイヤーを分離しておく\nKeep Iterations as Different Layers , イテレーションを異なるレイヤーとして保持する\nKeep Layers Separate , レイヤーを分離しておく\nKeep Original Image Size , 元の画像サイズを維持する\nKeep Original Layer , 元のレイヤーを維持する\nKeep Tiles Square , タイルを正方形に保つ\nKeep Transparency in Output , アウトプットの透明性を保つ\nKeftales , ケフタールもく\nKernel , カーネル\nKernel Multiplier , カーネル乗数\nKernel Type , カーネルタイプ\nKey Factor , キーファクター\nKey Frame Rate , キーフレームレート\nKey Shift , キーシフト\nKey Smoothness , キーの滑らかさ\nKeypoint Influence (%) , キーポイントの影響力(%)\nKillstreak , キルストリーク\nKitaoka Spin Illusion , 北岡スピン錯視\nKlee: Death and Fire , クレー死と炎\nKlee: In the Style of Kairouan , クレー回廊庵のスタイルで\nKlee: Oriental Pleasure Garden Anagoria , クレーオリエンタルプレジャーガーデン アナゴリア\nKlee: Polyphony 2 , クレーポリフォニー2\nKlee: Red Waistcoat , クレー赤いウエストコート\nKlimt: The Kiss , クリムト：キス\nKodak 1-8 , コダック 1-8\nKodak 2383 (Constlclip) , コダック2383 (コンストラクションクリップ)\nKodak 2383 (Constlmap) , コダック2383 (コンストラクションマップ)\nKodak 2383 (Cuspclip) , コダック 2383 (カスプクリップ)\nKodak 2393 (Constlclip) , コダック2393 (コンストラクションクリップ)\nKodak 2393 (Constlmap) , コダック2393 (Constlmap)\nKodak 2393 (Cuspclip) , コダック2393（カスクリップ\nKodak BW 400 CN , コダックBW 400 CN\nKodak E-100 GX Ektachrome 100 , コダック E-100 GX エクタクローム100\nKodak Ektachrome 100 VS , コダック エクタクローム100 VS\nKodak Ektar 100 , コダックEktar 100\nKodak Elite 100 XPRO , コダックエリート100 XPRO\nKodak Elite Chrome 200 , コダックエリートクローム200\nKodak Elite Chrome 400 , コダックエリートクローム400\nKodak Elite Color 200 , コダックエリートカラー200\nKodak Elite Color 400 , コダックエリートカラー400\nKodak Elite ExtraColor 100 , コダックエリートエクストラカラー100\nKodak HIE (HS Infra) , コダックHIE（HS赤外線\nKodak Kodachrome 200 , コダックコダクローム200\nKodak Kodachrome 25 , コダックコダクローム25\nKodak Kodachrome 64 , コダックコダクローム64\nKodak Portra 160 , コダック ポルトラ 160\nKodak Portra 160 + , コダック ポルトラ160+α\nKodak Portra 160 ++ , コダック ポルトラ160＋＋＋。\nKodak Portra 160 - , コダック ポルトラ 160\nKodak Portra 160 NC , コダック ポルトラ160 NC\nKodak Portra 160 NC + , コダック ポルトラ160 NC+\nKodak Portra 160 NC ++ , コダック ポルトラ160 NC ＋＋＋。\nKodak Portra 160 NC - , コダック ポルトラ 160 NC\nKodak Portra 160 VC , コダック ポルトラ160 VC\nKodak Portra 160 VC + , コダック ポルトラ160 VC+\nKodak Portra 160 VC ++ , コダック ポルトラ160 VC＋＋＋。\nKodak Portra 160 VC - , コダック ポルトラ 160 VC\nKodak Portra 400 , コダック ポルトラ400\nKodak Portra 400 + , コダック ポルトラ400＋α\nKodak Portra 400 ++ , コダック ポルトラ400＋＋＋。\nKodak Portra 400 - , コダック ポルトラ400\nKodak Portra 400 NC , コダック ポルトラ400 NC\nKodak Portra 400 NC + , コダック ポルトラ400 NC+\nKodak Portra 400 NC ++ , コダック ポルトラ４００ＮＣ＋＋＋。\nKodak Portra 400 NC - , コダック ポルトラ400 NC\nKodak Portra 400 UC , コダック ポルトラ400 UC\nKodak Portra 400 UC + , コダック ポルトラ400 UC+\nKodak Portra 400 UC ++ , コダック ポルトラ４００ＵＣ＋＋＋。\nKodak Portra 400 UC - , コダック ポルトラ400 UC\nKodak Portra 400 VC , コダック ポルトラ400 VC\nKodak Portra 400 VC + , コダック ポルトラ400 VC+α\nKodak Portra 400 VC ++ , コダック ポルトラ 400 VC ++\nKodak Portra 400 VC - , コダック ポルトラ400 VC\nKodak Portra 800 , コダック ポルトラ800\nKodak Portra 800 + , コダック ポルトラ800＋α\nKodak Portra 800 ++ , コダック ポルトラ800+++。\nKodak Portra 800 - , コダック ポルトラ800\nKodak Portra 800 HC , コダック ポルトラ800 HC\nKodak T-Max 100 , コダックT-Max 100\nKodak T-Max 3200 , コダックT-Max 3200\nKodak T-MAX 3200 (alt) , コダック T-MAX 3200 (alt)\nKodak T-MAX 3200 + , コダックT-MAX 3200+\nKodak T-MAX 3200 ++ , コダックT-MAX 3200＋＋＋。\nKodak T-MAX 3200 - , コダックT-MAX 3200\nKodak T-Max 400 , コダックT-Max 400\nKodak TMAX 3200 , コダックTMAX 3200\nKodak TMAX 400 , コダックTMAX 400\nKodak TRI-X 1600 , コダック TRI-X 1600\nKodak TRI-X 400 , コダック TRI-X 400\nKodak TRI-X 400 (alt) , コダック TRI-X 400 (alt)\nKodak TRI-X 400 + , コダックTRI-X 400＋（コダックTRI-X 400）＋（コダックTRI-X 400\nKodak TRI-X 400 ++ , コダック TRI-X 400 ＋＋＋。\nKodak TRI-X 400 - , コダック TRI-X 400\nKookaburra , コカブラ\nKorben 214 , テルン 214\nKuwahara , 桑原\nKuwahara on Painting , 絵画についての桑原\nKyler Holland (10) , カイラー・ホランド (10)\nL1-Norm , エルワンノルム\nL2-Norm , エルツーノルム\nLab , 研究室\nLab (Chroma Only) , ラボ（クロマのみ\nLab (Distinct) , 研究室(区別)\nLab (Luma Only) , 研究室（ルーマのみ\nLab (Luma/Chroma) , ラボ (Luma/Chroma)\nLab (Mixed) , 研究室（混合\nLab [a-Chrominance] , 研究室 [a-クロミナンス]\nLab [ab-Chrominances] , 研究室[ab-クロミナンス]\nLab [all] , 研究室 [すべて]\nLab [b-Chrominance] , 研究室[b-クロミナンス]\nLab [Lightness] , ラボ[軽さ]\nLAB-A , ラボエー\nLAB-B , ラボビー\nLAB-Lightness , LAB-明るさ\nLAB8 , ラボ8\nLanczos , ランチョスぞく\nLanczsos , ランチョスぞく\nLandscape , 風景\nLandscape-1 , ランドスケープ-1\nLandscape-10 , 風景10\nLandscape-2 , ランドスケープ-2\nLandscape-3 , ランドスケープ-3\nLandscape-4 , ランドスケープ-4\nLandscape-5 , ランドスケープ-5\nLandscape-6 , ランドスケープ-6\nLandscape-7 , ランドスケープ7\nLandscape-8 , ランドスケープ8\nLandscape-9 , ランドスケープ9\nLaplacian , ラプラシアン\nLarge , 大\nLarge Noise , 大騒音\nLast , ラスト\nLast Frame , 最後のフレーム\nLate Afternoon Wanderlust , 昼下がりの放浪記\nLate Sunset , 晩年の日没\nLava , 溶岩\nLava Lamp , ラバランプ\nLayer , レイヤ\nLayer Processing , レイヤ処理\nLayers to Tiles , レイヤーからタイルへ\nLch , Ｌｃｈ\nLch [all] , Lch [すべて]\nLch [c-Chrominance] , Lch [c-クロミナンス]\nLch [ch-Chrominances] , Lch [ch-クロミナンス]\nLch [h-Chrominance] , Lch [h-クロミナンス]\nLCH8 , エルシーエイチハチ\nLeaf , 葉っぱ\nLeaf Color , 葉の色\nLeaf Opacity (%) , 葉の不透明度 (%)\nLeak Type , リークタイプ\nLeft , 左\nLeft  Foreground , 左前景\nLeft / Right Blur (%) , 左/右ぼかし (%)\nLeft and Right Background , 左右の背景\nLeft and Right Foreground , 左右の前景\nLeft and Right Image Streams , 左右のイメージストリーム\nLeft Diagonal Foreground , 左斜め前景\nLeft Foreground , 左前景\nLeft Position , 左位置\nLeft Side Orientation , 左側の向き\nLeft Slope , 左斜面\nLeft Stream Only , 左ストリームのみ\nLena , レナ\nLength , 長さ\nLeno , レノ\nLenox 340 , レノックス340\nLenticular Density LPI , レンチキュラー密度LPI\nLenticular Orientation , レンチキュラーの向き\nLenticular Print , レンチキュラープリント\nLevel , レベル\nLevel Frequency , レベル周波数\nLevels , レベル\nLife Giving Tree , ライフギビングツリー\nLifestyle & Commercial-1 , ライフスタイル＆コマーシャル-1\nLifestyle & Commercial-10 , ライフスタイル＆コマーシャル-10\nLifestyle & Commercial-2 , ライフスタイル＆コマーシャル-2\nLifestyle & Commercial-3 , ライフスタイル＆コマーシャル-3\nLifestyle & Commercial-4 , ライフスタイル＆コマーシャル-4\nLifestyle & Commercial-5 , ライフスタイル＆コマーシャル-5\nLifestyle & Commercial-6 , ライフスタイル＆コマーシャル-6\nLifestyle & Commercial-7 , ライフスタイル＆コマーシャル-7\nLifestyle & Commercial-8 , ライフスタイル＆コマーシャル-8\nLifestyle & Commercial-9 , ライフスタイル＆コマーシャル-9\nLight , 灯り\nLight (blown) , ライト（吹いた\nLight Angle , ライトアングル\nLight Color , 淡い色\nLight Direction , 光の方向\nLight Effect , 光の効果\nLight Glow , 光の輝き\nLight Grey , ライトグレー\nLight Leaks , 光の漏れ\nLight Motive , 光の動機\nLight Patch , ライトパッチ\nLight Rays , ライトレイ\nLight Smoothness , 軽い滑らかさ\nLight Strength , 軽い強さ\nLight Type , ライトタイプ\nLight-X , ライトエックス\nLight-Y , ライトY\nLight-Z , ライトゼット\nLighten , 軽くする\nLighten Edges , エッジを軽くする\nLighter , ライター\nLighting , 照明\nLighting Angle , 照明角度\nLightness , 軽さ\nLightness (%) , 軽さ(%)\nLightness Factor , 軽度係数\nLightness Level , 明るさレベル\nLightness Max (%) , 明るさ最大 (%)\nLightness Min (%) , 明るさ 最小(%)\nLightness Shift , 明るさシフト\nLightness Smoothness , 軽さ 滑らかさ\nLightning , ライトニング\nLighty Smooth , 軽快なスムース\nLimit Hue Range , リミット色相範囲\nLine , ライン\nLine Opacity , ラインの不透明度\nLine Precision , ライン精度\nLinear , リニア\nLinear Burn , リニアバーン\nLinear Light , リニアライト\nLinear RGB , リニアRGB\nLinear RGB [All] , リニアRGB [すべて]\nLinear RGB [Blue] , リニアRGB [青]\nLinear RGB [Green] , リニアRGB [緑]\nLinear RGB [Red] , リニアRGB [赤]\nLinearburn , リニアバーン\nLinearity , 直線性\nLinearlight , リニアライト\nLineart , ラインアート\nLineart + Color Spots , ラインアート＋カラースポット\nLineart + Color Spots + Extrapolated Colors , 線画＋色点＋外挿し色\nLineart + Colors , ラインアート＋カラー\nLineart + Extrapolated Colors , 線画＋外挿し色\nLines , ライン\nLines (256) , 行数 (256)\nLinf-Norm , リンフノルム\nLinify , リニファイ\nLion , 獅子\nLissajous , リサージュ\nLissajous [Animated] , リサージュ【アニメ化\nLissajous Spiral , リサージュスパイラル\nLittle , 小\nLittle Blue , リトルブルー\nLittle Cyan , リトルシアン\nLittle Green , リトルグリーン\nLittle Key , リトルキー\nLittle Magenta , リトルマゼンタ\nLittle Red , リトルレッド\nLittle Yellow , リトルイエロー\nLN Amplititude , LN振幅\nLN Amplitude , LN振幅\nLN Average-Smoothness , LN平均平滑度\nLN Neightborhood-Smoothness , LNナイトボーフッド-スムースネス\nLN Size , LNサイズ\nLocal  Normalisation , 局所的な正規化\nLocal Contrast , ローカルコントラスト\nLocal Contrast Effect , 局所的なコントラスト効果\nLocal Contrast Enhance , 局所的なコントラストの強化\nLocal Contrast Enhancement , 局所的なコントラストの強化\nLocal Contrast Style , ローカルコントラストスタイル\nLocal Detail Enhancer , ローカル ディテール エンハンサー\nLocal Normalization , 局所正規化\nLocal Orientation , 現地オリエンテーション\nLocal Processing , ローカル処理\nLocal Similarity Mask , 局所類似性マスク\nLocal Variance Normalization , 局所分散正規化\nLock Return Scaling to Source Layer , ロック リターン ソース レイヤへのスケーリング\nLock Source , ロックソース\nLock Uniform Sampling , ロックユニフォームサンプリング\nLog(z) , 対数\nLogarithmic Distortion , 対数歪み\nLogarithmic Distortion Axis Combination for X-Axis , X軸用対数ディストーション軸の組み合わせ\nLogarithmic Distortion Axis Combination for Y-Axis , Y軸用対数ディストーション軸の組み合わせ\nLogarithmic Distortion X-Axis Direction , 対数ディストーション X 軸方向\nLogarithmic Distortion Y-Axis Direction , 対数歪み Y 軸方向\nLomo , ロモ\nLomography Redscale 100 , ロモグラフィー レッドスケール 100\nLomography X-Pro Slide 200 , ロモグラフィーX-Proスライド200\nLookup , ルックアップ\nLookup Factor , ルックアップファクター\nLookup Size , ルックアップサイズ\nLoop Method , ループ方式\nLow , 低\nLow Bias , 低バイアス\nLow Contrast Blue , ローコントラストブルー\nLow Frequency , 低周波\nLow Frequency Layer , 低周波層\nLow Key , ローキー\nLow Key 01 , ローキー01\nLow Scale , ロースケール\nLow Value , 低価格\nLower Layer Is the Bottom Layer for All Blends , 下の層はすべてのブレンドの最下層です\nLower Mask Threshold (%) , 下限マスクしきい値(%)\nLower Side Orientation , 下側の向き\nLowercase Letters , 小文字\nLowlights Crossover Point , ローライトクロスオーバーポイント\nLowres CLUT , ローレスＣＬＵＴ\nLucky 64 , ラッキー64\nLuma , ルーマ\nLuma Noise , ルーマノイズ\nLuminance , ルミナンス\nLuminance Factor , 輝度係数\nLuminance Level , 輝度レベル\nLuminance Only , ルミナンスのみ\nLuminance Only (Lab) , 輝度のみ（ラボ\nLuminance Only (YCbCr) , 輝度のみ（YCbCr\nLuminance Shift , ルミナンスシフト\nLuminance Smoothness , 輝度の滑らかさ\nLuminosity from Color , 色から見た明度\nLuminosity Type , 光輝タイプ\nLush Green Summer , 緑豊かな夏\nLUTs Pack , LUTsパック\nLylejk's Painting , ライルイクの絵画\nMagenta , マゼンタ\nMagenta Coffee , マゼンタコーヒー\nMagenta Day , マゼンタの日\nMagenta Day 01 , マゼンタの日01\nMagenta Dream , マゼンタの夢\nMagenta Factor , マゼンタファクター\nMagenta Shift , マゼンタシフト\nMagenta Smoothness , マゼンタの滑らかさ\nMagenta Yellow , マゼンタ イエロー\nMagenta-Yellow , マゼンタ-イエロー\nMagic Details , 魔法の詳細\nMagnitude / Phase , マグニチュード/フェーズ\nMail , メール\nMake Hue Depends on Region Size , 色相はリージョンサイズに依存する\nMake Seamless [Diffusion] , シームレスにする【拡散\nMake Seamless [Patch-Based] , シームレスな[パッチベース]を作る\nMake Squiggly , スクイッグリーを作る\nMake Up , メイクアップ\nMandelbrot , マンデルブロー\nMandelbrot - Julia Sets , マンデルブロ-ジュリアセット\nMandelbrot Explorer , マンデルブロエクスプローラー\nMandrill , マンドリル\nManhattan , マンハッタン\nManual , マニュアル\nManual Controls , マニュアルコントロール\nMap , 地図\nMap Tones , マップトーン\nMapping , マッピング\nMarble , 大理石\nMargin (%) , マージン(%)\nMascot Image , マスコットイメージ\nMasculine , 男性\nMask , マスク\nMask + Background , マスク + 背景\nMask as Bottom Layer , ボトムレイヤーとしてのマスク\nMask By , マスク\nMask Color , マスクの色\nMask Contrast , マスク コントラスト\nMask Creator , マスククリエーター\nMask Dilation , マスクダイレーション\nMask Size , マスクサイズ\nMask Smoothness (%) , マスク平滑度(%)\nMask Type , マスクの種類\nMasked Image , マスク画像\nMasking , マスキング\nMasterOpacity , マスター不透明度\nMatch Colors With , と色を一致させる\nMatching Precision (Smaller Is Faster) , マッチング精度（小さい方が速い\nMath Symbols , 数学記号\nMatrix , マトリックス\nMax , 最大\nMax Angle , 最大角度\nMax Angle Deviation (deg) , 最大角度偏差(deg)\nMax Area , 最大面積\nMax Curve , 最大曲線\nMax Cut (%) , 最大カット数(%)\nMax Iterations , 最大反復回数\nMax Length (%) , 最大長さ (%)\nMax Offset (%) , 最大オフセット(%)\nMax Radius , 最大半径\nMax Threshold , 最大しきい値\nMax-T , マックスティー\nMaximal Area , 最大面積\nMaximal Color Saturation , 最大色の彩度\nMaximal Highlights , 最大のハイライト\nMaximal Radius , 最大半径\nMaximal Seams per Iteration (%) , イテレーションあたりの最大シーム数(%)\nMaximal Size , 最大サイズ\nMaximal Value , 最大値\nMaximum , 最大\nMaximum Dimension , 最大寸法\nMaximum Image Size , 最大画像サイズ\nMaximum Number of Image Colors , 最大画像色数\nMaximum Number of Output Layers , 最大出力レイヤ数\nMaximum Red:Blue Ratio in the Fringe , フリンジ内の最大赤：青の比率\nMaximum Saturation , 最大飽和度\nMaximum Size Factor , 最大サイズファクター\nMaximum Value , 最大値\nMaze , 迷路\nMaze Type , 迷路タイプ\nMcKinnon 75 , マッキノン 75\nMean Color , 平均色\nMean Curvature , 平均曲率\nMedian , 中央値\nMedian (beware: Memory-Consuming!) , 中央値（ご用心：記憶力の低下!\nMedian Radius , 中央値半径\nMedium , 中型\nMedium 3 , 中型 3\nMedium Details Smoothness , ミディアム 詳細 滑らかさ\nMedium Details Threshold , 媒体詳細スレッショルド\nMedium Frequency Layer , 中頻度層\nMedium Scale (Original) , 中尺（オリジナル\nMedium Scale (Smoothed) , 中型スケール（平滑化\nMemories , 思い出\nMerge Brightness / Colors , 明るさ/色をマージ\nMerge Layers? , レイヤーをマージ？\nMerging Mode , マージングモード\nMerging Option , マージオプション\nMerging Steps , マージングステップ\nMess with Bits , ビットを混乱させる\nMetal , 金属\nMetallic Look , メタリックルック\nMethod , 方法\nMetric , メートル\nMetropolis , メトロポリス\nMicro/macro Details  Adjusted , マイクロ/マクロ 詳細調整済み\nMid , ミッド\nMid Grey , ミッドグレー\nMid Noise , ミッドノイズ\nMid Offset , 中間オフセット\nMid Tone Contrast , ミッドトーンのコントラスト\nMid-Dark Grey , ミッドダークグレー\nMid-Light Grey , ミッドライトグレー\nMid-Tones , ミッドトーン\nMiddle Grey , ミドルグレー\nMiddle Scale , ミドルスケール\nMidpoint , 中間点\nMidtones Brightness , 中間調の明るさ\nMidtones Color Intensity , ミッドトーンの色の強さ\nMidtones Hue , ミッドトーンの色相\nMighty Details , マイティの詳細\nMilo 5 , ミロ 5\nMin , ミン\nMin Angle Deviation (deg) , 最小角度偏差(deg)\nMin Area % , 最小面積\nMin Cut (%) , 最小カット数(%)\nMin Length (%) , 最小長さ (%)\nMin Offset (%) , 最小オフセット(%)\nMin Radius , 最小半径\nMin Threshold , 最小しきい値\nMin-T , ミント\nMineral Mosaic , ミネラルモザイク\nMinesweeper , マインスイーパ\nMinimal Area , 最小面積\nMinimal Area (%) , 最小面積(%)\nMinimal Color Intensity , 最小限の色の強度\nMinimal Highlights , 最小限のハイライト\nMinimal Path , 最小パス\nMinimal Radius , 最小半径\nMinimal Region Area , 最小領域面積\nMinimal Scale (%) , 最小規模(%)\nMinimal Shape Area , 最小形状面積\nMinimal Size , 最小サイズ\nMinimal Size (%) , 最小サイズ(%)\nMinimal Stroke Length , 最小ストローク長\nMinimal Value , 最小値\nMinimalist Caffeination , ミニマリストカフェイン\nMinimum , 最小\nMinimum Brightness , 最低の明るさ\nMinimum Red:Blue Ratio in the Fringe , フリンジ内の最小赤:青の比率\nMinisteck , ミニステック\nMirror , ミラー\nMirror Effect , ミラー効果\nMirror X , ミラーX\nMirror Y , ミラーY\nMirror-X , ミラーエックス\nMirror-XY , ミラーXY\nMirror-Y , ミラーY\nMix , 混合物\nMixed Mode , 混合モード\nMIxer , ミクサー\nMixer [CMYK] , ミキサー [CMYK]\nMixer [HSV] , ミキサー [HSV]\nMixer [Lab] , ミキサー[研究室]\nMixer [PCA] , ミキサー[PCA]\nMixer [RGB] , ミキサー [RGB]\nMixer [YCbCr] , ミキサー[YCbCr]\nMixer Mode , ミキサーモード\nMixer Style , ミキサースタイル\nMod , モッド\nMode , モード\nModern Film , 現代映画\nModulo , モデューロ\nModulo Value , モデューロ値\nMoir&eacute; Animation , Moir&eacute; アニメーション\nMoire Removal , モアレの除去\nMoire Removal Method , モアレの除去方法\nMona Lisa , モナリザ\nMondrian: Composition in Red-Yellow-Blue , モンドリアン赤・黄・青の構図\nMondrian: Evening; Red Tree , モンドリアン：イブニング、レッドツリー\nMondrian: Gray Tree , モンドリアン：グレーの木\nMonet: San Giorgio Maggiore at Dusk , モネ：夕暮れのサン・ジョルジョ・マッジョーレ\nMonet: Water-Lily Pond , モネ：睡蓮の池\nMonet: Wheatstacks - End of Summer , モネ：麦わらの丘-夏の終わり\nMonkey , モンキー\nMono , モノラル\nMono Tinted , 染められたモノラル\nMono+G , モノ+G\nMono+R , モノ+R\nMono+Ye , モノ＋イ\nMono-Directional , 単方向性\nMonochrome , モノクローム\nMonochrome 1 , モノクロ1\nMonochrome 2 , モノクロ2\nMontage , モンタージュ\nMontage Type , モンタージュタイプ\nMoody , ムーディー\nMoody-1 , ムーディ-1\nMoody-10 , ムーディ-10\nMoody-2 , ムーディ-2\nMoody-3 , ムーディ-3\nMoody-4 , ムーディ-4\nMoody-5 , ムーディ-5\nMoody-6 , ムーディ-6\nMoody-7 , ムーディ-7\nMoody-8 , ムーディ-8\nMoody-9 , ムーディ-9\nMoon2panorama , 月2パノラマ\nMoonlight , ムーンライト\nMoonlight 01 , ムーンライト01\nMoonrise , 月の出\nMorning 6 , 朝6時\nMorph [Interactive] , モーフ[インタラクティブ]\nMorph Layers , モーフレイヤー\nMorphological - Fastest Sharpest Output , 形態素 - 最速シャープな出力\nMorphological Closing , 形態素閉鎖\nMorphological Filter , 形態素フィルタ\nMorphology Painting , モルフォロジー絵画\nMorphology Strength , 形態学的な強さ\nMorphoStrenght , モルフォストレングス\nMorroco 16 , モロッコ16\nMosaic , モザイク\nMost , ほとんどの\nMostly Blue , ほとんどブルー\nMotion Analyzer , モーションアナライザー\nMotion-Compensated , モーション補償\nMoviz (48) , モビズ (48)\nMoviz 1 , ムービズ1\nMoviz 10 , ムービズ10\nMoviz 11 , ムービズ11\nMoviz 13 , ムービズ13\nMoviz 14 , ムービズ14\nMoviz 16 , ムービズ16\nMoviz 17 , ムービズ17\nMoviz 18 , ムービズ18\nMoviz 19 , ムービズ19\nMoviz 2 , ムービズ2\nMoviz 20 , ムービズ20\nMoviz 21 , ムービズ21\nMoviz 22 , ムービズ22\nMoviz 23 , ムービズ23\nMoviz 24 , ムービズ24\nMoviz 25 , ムービズ25\nMoviz 26 , ムービズ26\nMoviz 27 , ムービズ27\nMoviz 28 , ムービズ28\nMoviz 29 , ムービズ29\nMoviz 3 , ムービズ3\nMoviz 30 , ムービズ30\nMoviz 31 , ムービズ31\nMoviz 32 , ムービズ32\nMoviz 33 , ムービズ33\nMoviz 34 , ムービズ34\nMoviz 35 , ムービズ35\nMoviz 36 , ムービズ36\nMoviz 37 , ムービズ37\nMoviz 39 , ムービズ39\nMoviz 40 , ムービズ40\nMoviz 41 , ムービズ41\nMoviz 42 , ムービズ42\nMoviz 43 , ムービズ43\nMoviz 44 , ムービズ44\nMoviz 45 , ムービズ45\nMoviz 46 , ムービズ46\nMoviz 47 , ムービズ47\nMoviz 48 , ムービズ48\nMoviz 8 , ムービズ8\nMoviz 9 , ムービズ9\nMuch , 沢山\nMuch Blue , ムッシュブルー\nMuch Green , 緑が多い\nMuch Red , ムッチリレッド\nMul , ミュール\nMulti-Layer Etch , 多層エッチング\nMultiple Colored Shapes Over Transp. BG , Transp.BG\nMultiple Layers , 複数のレイヤー\nMultiplier , 乗算器\nMultiply , 乗算\nMultiscale Operator , マルチスケールオペレーター\nMunch: The Scream , ムンクスクリーム\nMute Shift , ミュートシフト\nMuted 01 , ミューテッド 01\nMuted Fade , ミュートフェード\nMystic Purple Sunset , ミスティックパープルサンセット\nNah , 否\nNaif , ナイーフ\nName , 名前\nNatural (vivid) , ナチュラル（鮮やか\nNature & Wildlife-1 , 自然と野生動物-1\nNature & Wildlife-10 , 自然と野生動物10\nNature & Wildlife-2 , 自然と野生動物-2\nNature & Wildlife-3 , 自然と野生動物-3\nNature & Wildlife-4 , 自然と野生動物4\nNature & Wildlife-5 , 自然と野生動物-5\nNature & Wildlife-6 , 自然と野生動物-6\nNature & Wildlife-7 , 自然と野生動物-7\nNature & Wildlife-8 , 自然と野生動物8\nNature & Wildlife-9 , 自然と野生動物9\nNb Circles Surrounding , 周囲を囲むNbの円\nNear Black , ブラック付近\nNearest , 最寄\nNearest Neighbor , 最寄駅\nNeat Merge , ニートマージ\nNebulous , ネビュラス\nNegate , ネゲート\nNegation , 否定\nNegative , ネガティブ\nNegative [Color] (13) , ネガティブ [カラー] (13)\nNegative [New] (39) , ネガティブ[新規] (39)\nNegative [Old] (44) , ネガティブ[旧] (44)\nNegative Color Abstraction , ネガティブカラーの抽象化\nNegative Colors , 負の色\nNegative Effect , マイナスの効果\nNeighborhood Size (%) , 近隣地域の規模(%)\nNeighborhood Smoothness , 近隣の滑らかさ\nNemesis , ネメシス\nNeon 770 , ネオン770\nNeon Lightning , ネオンライトニング\nNeumann , ノイマン\nNeutral Color , ニュートラルカラー\nNeutral Teal Orange , ニュートラル ティール オレンジ\nNeutral Warm Fade , ニュートラルウォームフェード\nNew Curves [Interactive] , 新しい曲線[インタラクティブ]\nNewspaper , 新聞\nNewton , ニュートン\nNewton Fractal , ニュートンフラクタル\nNight 01 , 夜01\nNight Blade 4 , ナイトブレード4\nNight From Day , 昼から夜へ\nNight King 141 , 夜の王141\nNight Spy , ナイトスパイ\nNine Layers , ナインレイヤー\nNo Masking , ノーマスキング\nNo Recovery , リカバリーなし\nNo Rescaling , 再スケーリングなし\nNo Transparency , 透明性がない\nNo-Skip , ノンスキップ\nNoise , 騒音\nNoise [Additive] , ノイズ [添加剤]\nNoise [Perlin] , ノイズ【パーリン\nNoise [Spread] , ノイズ[拡散]\nNoise A , 騒音A\nNoise B , ノイズB\nNoise C , ノイズC\nNoise D , ノイズD\nNoise Level , 騒音レベル\nNoise Scale , ノイズスケール\nNoise Type , ノイズの種類\nNon / No , なし/なし\nNon-Linearity , 非直線性\nNon-Rigid , 非剛体\nNone , なし\nNone (Allows Multi-Layers) , なし（マルチレイヤー対応\nNone- Skip , スキップ\nNorm Type , ノームタイプ\nNormal , 通常\nNormal Map , 通常の地図\nNormal Output , 通常出力\nNormalization , 正規化\nNormalize , ノーマライズ\nNormalize Brightness , 明るさを正規化\nNormalize Colors , 色の正規化\nNormalize Illumination , 照明を正規化する\nNormalize Input , 入力の正規化\nNormalize Luma , ルーマの正規化\nNormalize Scales , ノーマライズスケール\nNostalgia Honey , ノスタルジアハニー\nNostalgic , ノスタルジック\nNothing , なんでもない\nNumber , 数\nNumber of Added Frames , 追加フレーム数\nNumber of Angles , 角度の数\nNumber of Clusters , クラスター数\nNumber of Colors , 色数\nNumber of Frames , フレーム数\nNumber of Inter-Frames , フレーム間の数\nNumber of Iterations per Scale , スケールごとの反復回数\nNumber of Key-Frames , キーフレーム数\nNumber of Levels , レベル数\nNumber of Matches (Coarsest) , マッチ数（最も粗い\nNumber of Matches (Finest) , マッチ数(最高)\nNumber of Orientations , オリエンテーション数\nNumber Of Rays , レイズ数\nNumber of Scales , スケール数\nNumber of Sizes , サイズ数\nNumber of Streaks , ストリーク数\nNumber of Teeth , 歯の数\nNumber of Tones , トーン数\nObject Animation , オブジェクトアニメーション\nObject Ratio , オブジェクト比率\nObject Tolerance , オブジェクトの公差\nOctagon , 八角形\nOctagonal , 八角形\nOctaves , オクターブ\nOctogon , オクトゴン\nOddness (%) , 奇数率(%)\nOff , オフ\nOffset , オフセット\nOffset (%) , オフセット(%)\nOffset Angle Rays Layer 1 , オフセット角度レイ レイヤ 1\nOffset Angle Rays Layer 2 , オフセット角線レイヤ2\nOhad Peretz (7) , オハド・ペレツ (7)\nOhta8 , 太田八\nOld Method - Slowest , オールドメソッド - スロー\nOld Photograph , 古い写真\nOld West , オールドウェスト\nOld-Movie Stripes , 旧作の縞模様\nOldschool 8bits , オールドスクール8ビット\nON1 Photography (90) , ON1フォトグラフィー (90)\nOnce Upon a Time , むかしむかし\nOne Layer , 一層\nOne Layer (Horizontal) , 1層(水平)\nOne Layer (Vertical) , 1層(縦)\nOne Layer per Single Color , 単一色につき1層\nOne Layer per Single Region , 1つの領域に1つのレイヤー\nOne Thread , 一本の糸\nOnly Leafs , リーフのみ\nOnly Red , 赤のみ\nOnly Red and Blue , 赤と青のみ\nOp Art , オプアート\nOpacity , 不透明度\nOpacity (%) , 不透明度(%)\nOpacity as Heightmap , ハイトマップとしての不透明度\nOpacity Contours , 不透明度の輪郭\nOpacity Factor , 不透明度係数\nOpacity Gain , 不透明度ゲイン\nOpacity Gamma , 不透明度ガンマ\nOpacity Snowflake , 不透明スノーフレーク\nOpacity Threshold (%) , 不透明度のしきい値 (%)\nOpaque Pixels , 不透明ピクセル\nOpaque Regions on Top Layer , トップレイヤーの不透明領域\nOpaque Skin , 不透明な肌\nOpen Interactive Preview , オープンインタラクティブプレビュー\nOpening , オープニング\nOperation Yellow , オペレーションイエロー\nOperator , オペレーター\nOpposing , 反対\nOptimized Lateral Inhibition , 最適化された側方抑制\nOrange Dark 4 , オレンジダーク4\nOrange Dark 7 , オレンジダーク7\nOrange Dark Look , オレンジ色のダークルック\nOrange Tone , オレンジトーン\nOrange Underexposed , オレンジ色のアンダー露出\nOranges , オレンジ\nOrder , 注文\nOrder By , 並び順\nOrientation , オリエンテーション\nOrientation Coherence , オリエンテーションコヒーレンス\nOrientation Only , オリエンテーションのみ\nOrientations , オリエンテーション\nOriginal , オリジナル\nOriginal - (Opening + Closing)/2 , オリジナル～（オープニング＋クロージング）/2\nOriginal - Erosion , オリジナル - 侵食\nOriginal - Opening , オリジナル - オープニング\nOrthogonal Radius , 直交半径\nOrton Glow , オルトングロー\nOrwo NP20-GDR , オルウー NP20-GDR\nOthers (69) , その他 (69)\nOuline Color , ウーリンカラー\nOuter , 外側\nOuter Fading , アウターフェージング\nOuter Length , 外側の長さ\nOuter Radius , 外径\nOutline , 概要\nOutline (%) , 概要(%)\nOutline Color , アウトラインカラー\nOutline Contrast , アウトライン コントラスト\nOutline Opacity , アウトライン不透明度\nOutline Size , 外形寸法\nOutline Smoothness , アウトラインの滑らかさ\nOutline Thickness , 輪郭の厚さ\nOutlined , アウトライン化\nOutput , 出力\nOutput As , として出力\nOutput as Files , ファイルとして出力\nOutput as Frames , フレームとして出力\nOutput as Multiple Layers , 複数のレイヤーとして出力\nOutput as Separate Layers , 別レイヤーとして出力\nOutput Ascii File , 出力アスキーファイル\nOutput Chroma NR , 出力クロマNR\nOutput CLUT , 出力CLUT\nOutput CLUT Resolution , 出力 CLUT 分解能\nOutput Coordinates File , 出力座標ファイル\nOutput Corresponding CLUT , 出力対応 CLUT\nOutput Directory , 出力ディレクトリ\nOutput Each Piece on a Different Layer , 各ピースを異なるレイヤーに出力\nOutput Filename , 出力ファイル名\nOutput Files , 出力ファイル\nOutput Folder , 出力フォルダ\nOutput Format , 出力形式\nOutput Frames , 出力フレーム\nOutput Height , 出力高さ\nOutput HTML File , 出力HTMLファイル\nOutput Layers , 出力レイヤ\nOutput Mode , 出力モード\nOutput Multiple Layers , 複数のレイヤーを出力\nOutput Preset as a HaldCLUT Layer , HaldCLUTレイヤとしての出力プリセット\nOutput Region Delimiters , 出力領域のデリミタ\nOutput Saturation , 出力飽和度\nOutput Sharpening , 出力シャープネス\nOutput Stroke Layer On , 出力ストロークレイヤ\nOutput to Folder , フォルダへの出力\nOutput Type , 出力タイプ\nOutput Width , 出力幅\nOutside , 外側\nOutside Color , 外側の色\nOutside-In , アウトサイドイン\nOutward , 外側\nOverall Blur , 全体的なぼかし\nOverall Contrast , 全体的なコントラスト\nOverall Lightness , 全体的な軽さ\nOverlap (%) , オーバーラップ(%)\nOverlay , オーバーレイ\nOversample , オーバーサンプル\nOvershoot , オーバーシュート\nP''(z) , Ｐ'(z)\nPack , パック\nPack Sprites , パックスプライト\nPacman , パックマン\nPadding (px) , パディング (px)\nPaint , 塗料\nPaint Daub , ペイントダブ\nPaint Effect , ペイント効果\nPaint Splat , ペイントスプラット\nPainter's Edge Protection Flow , ペインターズエッジ保護フロー\nPainter's Smoothness , ペインターズスムース\nPainter's Touch Sharpness , ペインターズタッチのシャープネス\nPainting , 絵画\nPainting Opacity , 塗装の不透明度\nPaintstroke , 筆跡\nPaladin , パラディン\nPaladin 1875 , パラディン1875\nPaper Texture , 紙の質感\nParallel Processing , 並列処理\nParrots , オウム\nPasadena 21 , パサディナ 21\nPassing By , 通りすがりの方\nPastell Art , パステルアート\nPatch , パッチ\nPatch Measure , パッチメジャー\nPatch Size , パッチサイズ\nPatch Size for Analysis , 解析用パッチサイズ\nPatch Size for Synthesis , 合成用パッチサイズ\nPatch Size for Synthesis (Final) , 合成用パッチサイズ（最終\nPatch Smoothness , パッチの滑らかさ\nPatch Variance , パッチバリエーション\nPattern , パターン\nPattern Angle , パターン角度\nPattern Height , パターンの高さ\nPattern Type , パターンタイプ\nPattern Variation 1 , パターンバリエーション1\nPattern Variation 2 , パターンバリエーション2\nPattern Variation 3 , パターンバリエーション3\nPattern Weight , パターン重量\nPattern Width , パターン幅\nPaw , 肉球\nPCA Transfer , PCA転送\nPea Soup , エンドウ豆のスープ\nPen Drawing , ペンデッサン\nPenalize Patch Repetitions , パッチの繰り返しにペナルティを課す\nPencil , 鉛筆\nPencil Amplitude , 鉛筆の振幅\nPencil Portrait , ペンシルポートレート\nPencil Size , 鉛筆サイズ\nPencil Smoother Edge Protection , ペンシルスムーサーのエッジ保護\nPencil Smoother Sharpness , 鉛筆スムーサー シャープネス\nPencil Smoother Smoothness , ペンシルスムーサーのなめらかさ\nPencil Type , ペンシルタイプ\nPencils , 鉛筆\nPentagon , ペンタゴン\nPeppers , 唐辛子\nPercent of Image Half-Hypotenuse (%) , 画像の半分ハイポテンウスの割合(%)\nPeriodic , 周期的\nPeriodic Dots , 周期的なドット\nPeriodicity , 周期性\nPerserve Luminance , パーサーブ ルミナンス\nPerspective , パースペクティブ\nPerturbation , 摂動\nPetals , 花びら\nPhase , フェーズ\nPhone , 電話番号\nPhong , フォン\nPhotoComix Preset , フォトミックスプリセット\nPhotoillustration , フォトイラストレーション\nPicabia: Udnie , ピカビアウーディー\nPicasso: Les Demoiselles D'Avignon , ピカソ：アヴィニョンのデモワイズelles D'Avignon\nPicasso: Seated Woman , ピカソ：座っている女性\nPicasso: The Reservoir - Horta De Ebro , ピカソ：貯水池 - Horta De Ebro\nPictureFX (19) , ピクチャーFX (19)\nPiece Complexity , ピースの複雑さ\nPiece Size (px) , ピースサイズ(px)\nPin Light , ピンライト\nPink Fade , ピンクフェード\nPinlight , ピンライト\nPitaya 15 , ピタヤ15\nPixel Denoise , ピクセルデノワーズ\nPixel Sort , ピクセルソート\nPixel Values , ピクセル値\nPlacement , 設置場所\nPlaid , プレイド\nPlane , 平面\nPlasma , プラズマ\nPlasma Effect , プラズマ効果\nPlot Type , プロットタイプ\nPoint #0 , ポイント#0\nPoint #1 , ポイントその1\nPoint #2 , ポイントその2\nPoint #3 , ポイント#3\nPoint 1 , ポイント1\nPoint 2 , ポイント2\nPoints , ポイント\nPoisson , ポアソン\nPolar Transform , ポーラー変換\nPolaroid , ポラロイド\nPolaroid 664 , ポラロイド 664\nPolaroid 665 , ポラロイド 665\nPolaroid 665 + , ポラロイド６６５+の\nPolaroid 665 ++ , ポラロイド６６５＋＋。\nPolaroid 665 - , ポラロイド665\nPolaroid 665 -- , ポラロイド665\nPolaroid 665 Negative , ポラロイド 665 ネガ\nPolaroid 665 Negative + , ポラロイド６６５ネガティブ\nPolaroid 665 Negative - , ポラロイド 665 ネガ\nPolaroid 665 Negative HC , ポラロイド665ネガHC\nPolaroid 667 , ポラロイド 667\nPolaroid 669 , ポラロイド669\nPolaroid 669 + , ポラロイド669+\nPolaroid 669 ++ , ポラロイド669＋＋＋。\nPolaroid 669 +++ , ポラロイド669 +++\nPolaroid 669 - , ポラロイド669\nPolaroid 669 -- , ポラロイド669\nPolaroid 669 Cold , ポラロイド669 コールド\nPolaroid 669 Cold + , ポラロイド669 コールド+。\nPolaroid 669 Cold - , ポラロイド669コールド\nPolaroid 669 Cold -- , ポラロイド669コールド\nPolaroid 672 , ポラロイド672\nPolaroid 690 , ポラロイド690\nPolaroid 690 + , ポラロイド690+\nPolaroid 690 ++ , ポラロイド690++。\nPolaroid 690 - , ポラロイド690\nPolaroid 690 -- , ポラロイド690\nPolaroid 690 Cold , ポラロイド690 コールド\nPolaroid 690 Cold + , ポラロイド690 コールド+の\nPolaroid 690 Cold ++ , ポラロイド690コールド+++。\nPolaroid 690 Cold - , ポラロイド690コールド\nPolaroid 690 Cold -- , ポラロイド690コールド\nPolaroid 690 Warm , ポラロイド690ウォーム\nPolaroid 690 Warm + , ポラロイド690ウォーム+\nPolaroid 690 Warm ++ , ポラロイド690ウォーム++。\nPolaroid 690 Warm - , ポラロイド690ウォーム\nPolaroid 690 Warm -- , ポラロイド690ウォーム\nPolaroid Polachrome , ポラロイド ポラクローム\nPolaroid PX-100UV+ Cold , ポラロイド PX-100UV+ コールド\nPolaroid PX-100UV+ Cold + , ポラロイドPX-100UV+コールド+。\nPolaroid PX-100UV+ Cold ++ , ポラロイドPX-100UV+コールド++。\nPolaroid PX-100UV+ Cold +++ , ポラロイド PX-100UV+ コールド +++\nPolaroid PX-100UV+ Cold - , ポラロイド PX-100UV+ コールド\nPolaroid PX-100UV+ Cold -- , ポラロイド PX-100UV+ コールド\nPolaroid PX-100UV+ Warm , ポラロイド PX-100UV+ ウォーム\nPolaroid PX-100UV+ Warm + , ポラロイドPX-100UV+ ウォーム+の\nPolaroid PX-100UV+ Warm ++ , ポラロイドPX-100UV+ウォーム+++。\nPolaroid PX-100UV+ Warm +++ , ポラロイドPX-100UV+ウォーム＋＋＋＋＋＋。\nPolaroid PX-100UV+ Warm - , ポラロイド PX-100UV+ ウォーム\nPolaroid PX-100UV+ Warm -- , ポラロイドPX-100UV+ウォーム\nPolaroid PX-680 , ポラロイドPX-680\nPolaroid PX-680 + , ポラロイドＰＸ-６８０＋（ＰＸ-６８０）＋（ポラロイドＰＸ-６８０\nPolaroid PX-680 ++ , ポラロイドPX-680＋＋＋。\nPolaroid PX-680 - , ポラロイドPX-680\nPolaroid PX-680 -- , ポラロイドPX-680\nPolaroid PX-680 Cold , ポラロイド PX-680 コールド\nPolaroid PX-680 Cold + , ポラロイドPX-680 コールド+。\nPolaroid PX-680 Cold ++ , ポラロイドPX-680コールド++。\nPolaroid PX-680 Cold ++a , ポラロイド PX-680 コールド ++a\nPolaroid PX-680 Cold - , ポラロイドPX-680コールド\nPolaroid PX-680 Cold -- , ポラロイドPX-680コールド\nPolaroid PX-680 Warm , ポラロイド PX-680 ウォーム\nPolaroid PX-680 Warm + , ポラロイドPX-680 ウォーム+。\nPolaroid PX-680 Warm ++ , ポラロイドPX-680ウォーム++。\nPolaroid PX-680 Warm - , ポラロイド PX-680 ウォーム\nPolaroid PX-680 Warm -- , ポラロイドPX-680ウォーム\nPolaroid PX-70 , ポラロイドPX-70\nPolaroid PX-70 + , ポラロイドPX-70+α\nPolaroid PX-70 ++ , ポラロイドPX-70＋＋＋。\nPolaroid PX-70 +++ , ポラロイドPX-70 ＋＋＋＋＋。\nPolaroid PX-70 - , ポラロイドPX-70\nPolaroid PX-70 -- , ポラロイドPX-70\nPolaroid PX-70 Cold , ポラロイド PX-70 コールド\nPolaroid PX-70 Cold + , ポラロイドPX-70 コールド+。\nPolaroid PX-70 Cold ++ , ポラロイドPX-70コールド++。\nPolaroid PX-70 Cold - , ポラロイド PX-70 コールド\nPolaroid PX-70 Cold -- , ポラロイドPX-70コールド\nPolaroid PX-70 Warm , ポラロイド PX-70 ウォーム\nPolaroid PX-70 Warm + , ポラロイドPX-70 ウォーム+。\nPolaroid PX-70 Warm ++ , ポラロイドPX-70ウォーム++。\nPolaroid PX-70 Warm - , ポラロイド PX-70 ウォーム\nPolaroid PX-70 Warm -- , ポラロイドPX-70ウォーム\nPolaroid Time Zero (Expired) , ポラロイド タイムゼロ（期限切れ\nPolaroid Time Zero (Expired) + , ポラロイドタイムゼロ（期限切れ）＋α\nPolaroid Time Zero (Expired) ++ , ポラロイドタイムゼロ（期限切れ）＋＋＋＋。\nPolaroid Time Zero (Expired) - , ポラロイド タイムゼロ（期限切れ\nPolaroid Time Zero (Expired) -- , ポラロイド タイムゼロ(期限切れ)\nPolaroid Time Zero (Expired) --- , ポラロイドタイムゼロ（期限切れ）---。\nPolaroid Time Zero (Expired) Cold , ポラロイド タイムゼロ（期限切れ）コールド\nPolaroid Time Zero (Expired) Cold - , ポラロイド タイムゼロ（賞味期限切れ）コールド\nPolaroid Time Zero (Expired) Cold -- , ポラロイド タイムゼロ(期限切れ) 寒さ -- ポラロイドタイムゼロ\nPolaroid Time Zero (Expired) Cold --- , ポラロイド タイムゼロ（賞味期限切れ）コールド---。\nPole Lat , ポールラット\nPole Long , ポールロング\nPole Rotation , ポールローテーション\nPolka Dots , ポルカドット\nPollock: Convergence , ポロックコンバージェンス\nPollock: Summertime Number 9A , ポロックサマータイムナンバー9A\nPolygonize [Delaunay] , ポリゴナイズ【デローネ\nPolygonize [Energy] , ポリゴン化[エネルギー]\nPop Shadows , ポップシャドウズ\nPortrait , 肖像画\nPortrait Retouching , ポートレートレタッチ\nPortrait-1 , 肖像画-1\nPortrait-2 , 肖像画-2\nPortrait-3 , 肖像画-3\nPortrait-4 , 肖像画-4\nPortrait-5 , 肖像画-5\nPortrait-6 , 肖像画-6\nPortrait-7 , 肖像画-7\nPortrait-8 , 肖像画-8\nPortrait-9 , 肖像画-9\nPortrait0 , 肖像画0\nPortrait1 , 肖像画1\nPortrait10 , 肖像画10\nPortrait2 , 肖像画2\nPortrait3 , 肖像画3\nPortrait4 , 肖像画4\nPortrait5 , 肖像画5\nPortrait6 , 肖像画6\nPortrait7 , 肖像画7\nPortrait8 , 肖像画8\nPortrait9 , 肖像画9\nPosition , ポジション\nPosition X (%) , ポジションX (%)\nPosition X Origin (%) , 位置 X 原点 (%)\nPosition Y (%) , ポジションY (%)\nPosition Y Origin (%) , 位置 Y 原点 (%)\nPositive , ポジティブ\nPost-Gamma , ポストガンマ\nPost-Normalize , ポストノーマライズ\nPost-Process , ポストプロセス\nPoster Edges , ポスターエッジ\nPosterization Antialiasing , ポスタリゼーション・アンチエイリアシング\nPosterization Level , ポスタライゼーションレベル\nPosterize , ポスタライズ\nPosterized Dithering , ポスタライズされたディザリング\nPow , パウ\nPower , 力\nPre-Defined , 事前定義\nPre-Defined Colormap , 事前に定義されたカラーマップ\nPre-Gamma , プレガンマ\nPre-Normalize , 事前に正規化\nPre-Normalize Image , 画像を正規化する\nPre-Process , 前処理\nPrecision , 精度\nPrecision (%) , 精度(%)\nPreliminary Surface Shift , 予備的なサーフェスシフト\nPreliminary X-Axis Scaling , 予備的なX軸スケーリング\nPreliminary Y-Axis Scaling , 予備的なY軸スケーリング\nPreprocessor Power , プリプロセッサパワー\nPreprocessor Radius , プリプロセッサの半径\nPreserve Canvas for Post Bump Mapping , ポストバンプマッピングのためのキャンバスの保存\nPreserve Edges , エッジの保存\nPreserve Image Dimension , 画像の寸法を保存\nPreserve Initial Brightness , 初期の明るさを維持する\nPreserve Luminance , 輝度を維持する\nPreset , プリセット\nPreview , プレビュー\nPreview All Outputs , すべての出力をプレビュー\nPreview Bands , プレビューバンド\nPreview Brush , プレビューブラシ\nPreview Data , プレビューデータ\nPreview Detected Shapes , 検出された図形のプレビュー\nPreview Frame Selection , プレビューフレームの選択\nPreview Gradient , プレビューグラデーション\nPreview Grain Alone , グレインアローンのプレビュー\nPreview Grid , プレビューグリッド\nPreview Guides , プレビューガイド\nPreview Mapping , プレビューマッピング\nPreview Mask , プレビューマスク\nPreview Only Shadow , プレビューのみシャドウ\nPreview Opacity (%) , プレビュー 不透明度 (%)\nPreview Original , オリジナルのプレビュー\nPreview Precision , プレビュー精度\nPreview Progress (%) , プレビューの進捗状況 (%)\nPreview Progression While Running , ランニング中に進行状況をプレビュー\nPreview Ref Point , 内覧会ポイント\nPreview Reference Circle , プレビュー参照サークル\nPreview Selection , プレビューセレクション\nPreview Shape , プレビュー形状\nPreview Shows , プレビューショー\nPreview Split , プレビュー分割\nPreview Subsampling , サブサンプリングのプレビュー\nPreview Time , プレビュータイム\nPreview Tones Map , トーンマップのプレビュー\nPreview Type , プレビュータイプ\nPreview Without Alpha , アルファなしのプレビュー\nPrewitt-X , プリウィットエックス\nPrewitt-Y , プリウィットワイ\nPrimary Angle , 主角度\nPrimary Color , 原色\nPrimary Factor , 第一の要因\nPrimary Gamma , 一次ガンマ\nPrimary Radius , 一次半径\nPrimary Shift , プライマリーシフト\nPrimary Twist , プライマリーツイスト\nPrint Adjustment Marks , 印刷調整マーク\nPrint Films (12) , プリントフィルム (12)\nPrint Frame Numbers , フレーム番号を印刷する\nPrint Size Unit , 印刷サイズ単位\nPrint Size Width , 印刷サイズ幅\nPrivacy Notice , 個人情報の取り扱いについて\nPro Neg Hi , プロネグハイ\nPro Neg Std , プロ・ネグ標準\nProbability Map , 確率マップ\nProcedural , 手続き\nProcess As , プロセス\nProcess by Blocs of Size , サイズブロックによる処理\nProcess Channels Individually , チャンネルを個別に処理\nProcess Top Layer Only , プロセストップ層のみ\nProcess Transparency , プロセスの透明性\nProcessing Mode , 処理モード\nProgressen , プログレッシェン\nPropagation , 伝播\nProportion , 比例\nProtanomaly , プロトノマリー\nProtanopia , プロタノピア\nProtect Highlights 01 , ハイライト01を保護する\nProvia , プロビア\nPrussian Blue , プルシアンブルー\nPseudo-Gray Dithering , 疑似グレーディザリング\nPurple , 紫色\nPurple11 (12) , 紫11 (12)\nPuzzle , パズル\nPyramid , ピラミッド\nPyramid Processing , ピラミッド処理\nPythagoras Tree , ピタゴラスの木\nQuadrangle , 四角形\nQuadratic , 二次\nQuadtree Variations , クワッドツリーのバリエーション\nQuality , 品質\nQuality (%) , 品質(%)\nQuantization , 量子化\nQuantize Colors , 色の量子化\nQuasi-Gaussian , 準ガウス\nQuick , クイック\nQuick Copyright , クイック著作権\nQuick Enlarge , クイック拡大\nR/B Smoothness (Principal) , R/B 滑らかさ（プリンシパル\nR/B Smoothness (Secondary) , R/B 滑らかさ(二次)\nRadial , 放射状\nRadius , 半径\nRadius (%) , 半径(%)\nRadius / Angle , 半径/角度\nRadius [Manual] , 半径 [マニュアル]\nRadius Cut , ラジアスカット\nRadius Middle Circle , 半径中円\nRadius Outer Circle A (>0 W%) (<0 H%) , 半径外円A (>0 W%) (<0 H%)\nRain & Snow , 雨と雪\nRainbow , レインボー\nRaindrops , 雨粒\nRandom , ランダム\nRandom [non-Transparent] , ランダム[非透過]\nRandom Angle , ランダム角度\nRandom Color Ellipses , ランダムカラー楕円\nRandom Colors , ランダムカラー\nRandom Seed , ランダムシード\nRandom Shade Stripes , ランダムシェードストライプ\nRandomize , ランダム化\nRandomized , ランダム化\nRandomness , ランダム性\nRange , 範囲\nRatio , 比率\nRaw , 生\nRays , レイズ\nRays Colors AB , レイズカラーズAB\nRays Colors ABC , レイズカラーズABC\nRays Colors ABCD , レイズカラーズABCD\nRays Colors ABCDE , レイズカラーズABCDE\nRays Colors ABCDEF , レイズカラーズ ABCDEF\nRays Colors ABCDEFG , レイズカラーズ ABCDEFG\nRcx , ＲＣＸ\nRebuild From Similar Blocs , 類似ブロックからの再構築\nRecompose , 再構成\nReconstruct From Previous Frames , 以前のフレームからの再構築\nRecover , リカバリー\nRecover Highlights , ハイライトを回復\nRecover Shadows , 影を回復する\nRecovery , リカバリー\nRectangle , 長方形\nRecursion Depth , 再帰の深さ\nRecursions , 再帰\nRecursive Median , 再帰的中央値\nRed , 赤\nRed - Green - Blue , 赤-緑-青\nRed - Green - Blue - Alpha , 赤・緑・青・アルファ\nRed Afternoon 01 , レッドアフタヌーン01\nRed Blue Yellow , 赤 青 黄\nRed Chroma Factor , レッドクロマファクター\nRed Chroma Shift , レッドクロマシフト\nRed Chroma Smoothness , レッドクロマスムースネス\nRed Chrominance , 赤色度\nRed Day 01 , レッドデー01\nRed Dream 01 , 赤い夢01\nRed Factor , レッドファクター\nRed Level , レッドレベル\nRed Rotations , レッドローテーション\nRed Shift , レッドシフト\nRed Smoothness , 赤色の滑らかさ\nRed Wavelength , 赤色波長\nRed-Eye Attenuation , 赤目の減衰\nRed-Green , 赤緑\nReds , レッズ\nReds Oranges Yellows , 赤 オレンジ イエロー\nReduce Halos , ハローズを減らす\nReduce Noise , ノイズの低減\nReduce RAM , RAMの削減\nReduce Redness , 赤みを抑える\nReeve 38 , リーブ38\nReference , 参考\nReference Angle (deg.) , 基準角度（deg.\nReference Color , 参照色\nReference Colors , 参照色\nReflect , 反映させる\nReflection , リフレクション\nRefraction , 屈折\nRegular Grid , 通常のグリッド\nRegularity , 規則性\nRegularity (%) , 規則性(%)\nRegularization , 正規化\nRegularization (%) , 正則化 (%)\nRegularization Factor , 正則化係数\nRegularization Iterations , 正則化の反復\nReject , 拒否\nRejected Colors , 不合格の色\nRejected Mask , 拒否されたマスク\nRelative Block Count , 相対ブロック数\nRelative Size , 相対的なサイズ\nRelative Warping , 相対的なゆがみ\nRelease Notes , リリースノート\nRelief , 救済\nRelief Amplitude , リリーフ振幅\nRelief Contrast , レリーフコントラスト\nRelief Light , リリーフライト\nRelief Size , レリーフサイズ\nRelief Smoothness , リリーフの滑らかさ\nRemix , リミックス\nRemove Artifacts From Micro/Macro Detail , マイクロ/マクロの詳細からアーティファクトを除去する\nRemove Hot Pixels , ホットピクセルを削除\nRemove Tile , タイルの取り外し\nRemy 24 , レミー24\nRender Multiple Frames , 複数のフレームをレンダリング\nRender on Dark Areas , 暗い部分にレンダリング\nRender on White Areas , 白い部分にレンダリング\nRender Routine for Wiggle Animations , くねくねアニメーションのレンダリングルーチン\nRendering , レンダリング\nRendering Mode , レンダリングモード\nRendu , レンドゥ\nRepair Scanned Document , スキャンした文書の修復\nRepeat , リピート\nRepeat [Memory Consuming!] , メモリ消費！】を繰り返す\nRepeats , 繰り返し\nReplace , 置き換え\nReplace (Sharpest) , 交換（シャープ\nReplace Layer with CLUT , レイヤをCLUTに置き換える\nReplace Source by Target , ソースをターゲットに置き換える\nReplace With White , 白に置き換える\nReplaced Color , 色を取り替えられた\nReplacement Color , 交換色\nReptile , 爬虫類\nRescaling , 再スケーリング\nReset View , ビューのリセット\nResize Image for Optimum Effect , 最適な効果を得るために画像のサイズを変更する\nResolution , 決議\nResolution (%) , 分解能(%)\nResolution (px) , 解像度(px)\nRest 33 , 残り33\nResult Image , 結果画像\nResult Type , 結果の種類\nResynthetize Texture [FFT] , テクスチャの再合成 [FFT]\nResynthetize Texture [Patch-Based] , テクスチャの再合成 [パッチベース]\nRetinex , レチネックス\nRetouch Layer , レタッチレイヤー\nRetouched and Sharpened Areas , レタッチされた部分とシャープになった部分\nRetouched Areas Only , レタッチされた部分のみ\nRetouched Image , レタッチされた画像\nRetouched Image Basic , レタッチ画像の基本\nRetouched Image Final , レタッチされた画像の最終\nRetouching Style , レタッチスタイル\nRetro , レトロ\nRetro Brown 01 , レトロブラウン01\nRetro Fade , レトロフェード\nRetro Magenta 01 , レトロなマゼンタ01\nRetro Summer 3 , レトロな夏3\nRetro Yellow 01 , レトロイエロー01\nReturn Scaling , リターンスケーリング\nReverse Bits , リバースビット\nReverse Bytes , 逆バイト\nReverse Effect , 逆効果\nReverse Endianness , 逆エンディアン\nReverse Flip , 逆フリップ\nReverse Frame Stack , リバースフレームスタック\nReverse Gradient , 逆グラデーション\nReverse Mod , リバースモッド\nReverse Motion , リバースモーション\nReverse Order , 逆順\nReverse Pow , リバースパウ\nReversing , 反転\nRevert Layer Order , レイヤ順序の反転\nRevert Layers , レイヤーの反転\nRGB , ＲＧＢ\nRGB [All] , RGB [すべて]\nRGB [Blue] , RGB [青]\nRGB [Green] , RGB [緑]\nRGB [red] , RGB [赤]\nRGB Image + Binary Mask (2 Layers) , RGB画像 + バイナリマスク（2層\nRGB Quantization , RGB量子化\nRGB Tone , ＲＧＢトーン\nRGB8 , ＲＧＢ８\nRGBA , ＲＧＢＡ\nRGBA [All] , RGBA [すべて]\nRGBA [Alpha] , RGBA [アルファ]\nRGBA Foreground + Background (2 Layers) , RGBA前景＋背景（2レイヤー\nRGBA Image (Full-Transparency / 1 Layer) , RGBA画像(全透明/1層)\nRGBA Image (Updatable / 1 Layer) , RGBAイメージ（更新可能/1レイヤー\nRice , 米\nRight , 吁\nRight Diagonal  Foreground , 右斜め前景\nRight Diagonal Foreground , 右斜め前景\nRight Eye View , 右目のビュー\nRight Foreground , 右前景\nRight Position , 右の位置\nRight Side Orientation , 右側の向き\nRight Slope , 右斜面\nRight Stream Only , 右ストリームのみ\nRigid , 硬質\nRipple , リップル\nRobert Cross 1 , ロバート・クロス 1\nRobert Cross 2 , ロバート・クロス2\nRocketStock (35) , ロケットストック (35)\nRoddy , ロディ\nRoddy (by Mahvin) , ロディ（byマーヴィン\nRodilius , ロディリウス\nRodilius [Animated] , ロディリアス【アニメ化\nRollei IR 400 , ロレイ IR 400\nRollei Ortho 25 , ロレイオルソ25\nRollei Retro 100 Tonal , ロレイ レトロ100トーン\nRollei Retro 80s , ロレイ レトロ80年代\nRooster , ルースター\nRorschach , ロールシャッハ\nRose , 薔薇\nRotate , 回転\nRotate (muted) , 回転（ミュート\nRotate (vibrant) , 回転させる（鮮やかに\nRotate 180 Deg. , 180度回転させます。\nRotate 270 Deg. , 270度回転させます。\nRotate 90 Deg. , 90度回転させます。\nRotate Hue Bands , 色相バンドの回転\nRotate Tree , ツリーを回転させる\nRotated , 回転\nRotated (crush) , 回転させる（つぶす\nRotations , 回転数\nRotinv-X , ロチンブエックス\nRotinv-Y , ロティンヴイ\nRound , 丸い\nRoundness , 丸みを帯びた\nRow by Row , 一列一列\nRubik , ルービック\nRunge-Kutta , ランゲクッタ\nRYB , ＲＹＢ\nRYB [All] , RYB [全]\nRYB [Blue] , ＲＹＢ【青\nRYB [Red] , ＲＹＢ【赤\nRYB [Yellow] , ＲＹＢ【黄色\nRYB8 , ＲＹＢ８\nS-Curve Contrast , S字カーブコントラスト\nSalt and Pepper , 塩コショウ\nSame as Input , 入力と同じ\nSame Axis , 同じ軸\nSample Image , サンプル画像\nSampling , サンプリング\nSat Bottom , 土底\nSat Range , サットレンジ\nSat Top , サットトップ\nSatin , サテン\nSaturated Blue , 飽和ブルー\nSaturation , 飽和度\nSaturation (%) , 飽和度\nSaturation Channel Gamma , 飽和チャンネルガンマ\nSaturation Correction , 彩度補正\nSaturation EQ , サチュレーションEQ\nSaturation Factor , 飽和度係数\nSaturation Offset , 彩度オフセット\nSaturation Shift , サチュレーションシフト\nSaturation Smoothness , 彩度の滑らかさ\nSave CLUT as .Cube or .Png File , CLUTを.Cubeまたは.Pngファイルとして保存する\nSave Gradient As , グラデーションを名前を付けて保存\nSaving Private Damon , デイモン一等兵を救う\nScalar , スカラー\nScale , スケール\nScale (%) , スケール(%)\nScale 1 , スケール1\nScale 2 , スケール2\nScale CMYK , スケールCMYK\nScale Factor , スケールファクター\nScale Output , スケール出力\nScale Plasma , スケールプラズマ\nScale RGB , スケールRGB\nScale Style to Fit Target Resolution , ターゲットの解像度に合わせてスタイルを拡大縮小\nScale Variations , スケールバリエーション\nScaled , スケーリングされた\nScales , スケール\nScaling Factor , スケーリングファクター\nScanlines , スキャンライン\nScene Selector , シーンセレクタ\nScience Fiction , SF\nScr , スクラッチ\nScreen , スクリーン\nScreen Border , 画面の境界線\nSeamcarve , シームカーヴ\nSeamless Deco , シームレスデコ\nSeamless Turbulence , シームレスな乱流\nSecant , セカント\nSecond Color , セカンドカラー\nSecond Offset , 第2オフセット\nSecond Radius , 第二半径\nSecond Size , セカンドサイズ\nSecondary Color , 二次色\nSecondary Factor , 第二の要因\nSecondary Gamma , 二次ガンマ\nSecondary Radius , 二次半径\nSecondary Shift , セカンダリーシフト\nSecondary Twist , セカンダリーツイスト\nSectors , セクター\nSeed , 種子\nSegment Max Length (px) , セグメント最大長 (px)\nSegmentation , セグメンテーション\nSegmentation Edge Threshold , セグメンテーションエッジしきい値\nSegmentation Smoothness , セグメンテーションの滑らかさ\nSegments , セグメント\nSegments Strength , セグメントの強さ\nSelect By , で選択してください\nSelect-Replace Color , 色の選択と置換\nSelected Color , 選択された色\nSelected Colors , 厳選された色\nSelected Frame , 選択されたフレーム\nSelected Mask , 選択されたマスク\nSelection , 選択\nSelective Desaturation , 選択的脱飽和\nSelective Gaussian , 選択的ガウス\nSelf , 自己紹介\nSelf Glitching , 自己のグリッチ\nSelf Image , セルフイメージ\nSensitivity , 感度\nSepia , セピア\nSequence X4 , シーケンスX4\nSequence X6 , シーケンスX6\nSequence X8 , シーケンスX8\nSerenity , セレニティ\nSerial Number , シリアル番号\nSeringe 4 , セーリンゲ4\nSerpent , サーペント\nSet Aspect Only , セットアスペクトのみ\nSet Frame Format , フレームフォーマットの設定\nSeven Layers , 七層\nSeventies Magazine , セブンティーズマガジン\nShade , シェード\nShade Angle , シェード角度\nShade Back to First Color , シェードバックからファーストカラーへ\nShade Bobs , シェードボブ\nShade Strength , 陰の強さ\nShadebobs , シェードボブス\nShading , シェーディング\nShading (%) , 濃淡 (%)\nShadow , 影\nShadow Contrast , 影のコントラスト\nShadow Intensity , 影の強度\nShadow King 39 , シャドウキング39\nShadow Offset X , シャドウオフセットX\nShadow Offset Y , 影オフセット Y\nShadow Patch , シャドーパッチ\nShadow Size , 影のサイズ\nShadow Smoothness , 影の滑らかさ\nShadows , シャドウズ\nShadows Abstraction , 影の抽象化\nShadows Brightness , 影の明るさ\nShadows Color Intensity , 影の色の強度\nShadows Hue Shift , 影の色相シフト\nShadows Lightness , 影の明るさ\nShadows Selection , 影の選択\nShadows Threshold , 影のしきい値\nShadows Zone , シャドウズゾーン\nShamoon Abbasi (25) , シャムーン・アッバース（25\nShape , 形状\nShape Area Max , 形状面積最大\nShape Area Max0 , 形状面積Max0\nShape Area Min , 形状面積 最小\nShape Area Min0 , 形状面積 Min0\nShape Average , 形状平均\nShape Average0 , 形状平均0\nShape Max , 形状マックス\nShape Max0 , 形状Max0\nShape Median , 形状中央値\nShape Median0 , 形状中央値0\nShape Min , 形状\nShape Min0 , 形状 Min0\nShapeaverage , 形状平均\nShapeism , シェイプイズム\nShapes , 形状\nSharp Abstract , シャープアブストラクト\nSharpen , シャープ\nSharpen [Deblur] , シャープ【デブラー\nSharpen [Gold-Meinel] , シャープ【ゴールド・マイネル\nSharpen [Gradient] , シャープ[グラデーション]\nSharpen [Hessian] , シャープ【ヘッセン\nSharpen [Inverse Diffusion] , シャープ【逆拡散\nSharpen [Multiscale] , シャープ[マルチスケール]\nSharpen [Octave Sharpening] , シャープ［オクターブシャープニング\nSharpen [Richardson-Lucy] , シャープ【リチャードソン＝ルーシー\nSharpen [Shock Filters] , シャープ [ショックフィルター]\nSharpen [Texture] , シャープ [テクスチャ]\nSharpen [Tones] , シャープ [トーン]\nSharpen [Unsharp Mask] , シャープ【アンシャープマスク\nSharpen [Whiten] , シャープ【白くする\nSharpen Details in Preview , プレビューで詳細をシャープにする\nSharpen Edges Only , エッジのみをシャープにする\nSharpen Object , オブジェクトをシャープにする\nSharpen Radius , 半径をシャープにする\nSharpen Shades , シャープシェード\nSharpened Areas Only , 研ぎ澄まされた部分のみ\nSharpening , シャープ\nSharpening Layer , レイヤのシャープ化\nSharpening Radius , シャープ半径\nSharpening Strength , 研ぎの強さ\nSharpening Type , シャープタイプ\nSharpest , 鋭い\nSharpness , シャープネス\nShift Linear Interpolation? , シフト線形補間？\nShift Point , シフトポイント\nShift X , シフトX\nShift Y , シフトY\nShine , 輝き\nShininess , 輝き\nShivers , 戦慄\nShock Waves , 衝撃波\nShopping Cart , ショッピングカート\nShow Both Poles , 両極を表示\nShow Difference , 違いを表示する\nShow Frame , フレームを表示\nShow Grid , グリッドを表示\nShow Watershed , 流域を表示\nShrink , シュリンク\nShuffle Pieces , シャッフルピース\nSide by Side , サイド・バイ・サイド\nSierpinksi Design , シエルピンクシデザイン\nSierpinski Triangle , シエルピンスキートライアングル\nSigma , シグマ\nSigma 1 , シグマ1\nSigma 2 , シグマ2\nSilver , シルバー\nSimilarity Space , 類似空間\nSimple Local Contrast , シンプルなローカルコントラスト\nSimple Noise Canvas , シンプルノイズキャンバス\nSimulate Film , フィルムのシミュレーション\nSin(z) , シン(z)\nSine , 正弦\nSine+ , 正弦+\nSingle (Merged) , シングル(合併)\nSingle Custom Depth Map , シングルカスタムデプスマップ\nSingle Image Stereogram , シングルイメージステレオグラム\nSingle Layer , 単層\nSingle Opaque Shapes Over Transp. BG , Transp.の上に単一の不透明な形状。BG\nSix Layers , 6つのレイヤー\nSixteen Threads , 十六本の糸\nSize , サイズ\nSize (%) , サイズ(%)\nSize for Bright Tones , ブライトトーン用サイズ\nSize for Dark Tones , ダークトーン用サイズ\nSize of Frame Numbers (%) , フレーム数の大きさ(%)\nSize Variance , サイズバリエーション\nSize-1 , サイズ-1\nSize-2 , サイズ2\nSize-3 , サイズ-3\nSkeletik , スケルティック\nSkeleton , 骨格\nSketch , スケッチ\nSkin Estimation , 肌の見積もり\nSkin Mask , スキンマスク\nSkin Tone Colors , スキントーンカラー\nSkin Tone Mask , スキントーンマスク\nSkin Tone Protection , 肌色の保護\nSkip All Other Steps , 他のすべてのステップをスキップする\nSkip Finest Scales , 最高級のスケールをスキップ\nSkip Others Steps , 他のステップをスキップする\nSkip This Step , このステップをスキップ\nSkip to Use the Mask to Boost , スキップしてブーストするためのマスクを使用して\nSlice Luminosity , スライス光量\nSlide [Color] (26) , スライド [カラー] (26)\nSlow &#40;Accurate&#41; , 遅い (正確な&#41.\nSlow Recovery , 遅い回復\nSmall , 小\nSmall (Faster) , 小さい（速い\nSmallHD Movie Look (7) , SmallHDムービールック (7)\nSmart , スマート\nSmart Contrast , スマートコントラスト\nSmart Threshold , スマートしきい値\nSmokey , スモーキー\nSmooth , スムーズ\nSmooth [Anisotropic] , 滑らかな[異方性]\nSmooth [Antialias] , スムーズ【アンチアリアス\nSmooth [Bilateral] , スムース[二股]\nSmooth [Block PCA] , スムーズ[ブロックPCA]\nSmooth [Diffusion] , スムーズ【拡散\nSmooth [Geometric-Median] , スムース[ジオメトリック・メディアン]\nSmooth [Guided] , スムーズ【ガイド付き\nSmooth [IUWT] , スムース[IUWT]\nSmooth [Mean-Curvature] , スムーズ[平均曲率]\nSmooth [Median] , スムーズ[中央値]\nSmooth [NL-Means] , スムーズ[NL-Means]\nSmooth [Patch-Based] , スムーズな【パッチベース\nSmooth [Patch-PCA] , スムース[パッチ-PCA]\nSmooth [Perona-Malik] , スムーズ【ペローナ＝マリック\nSmooth [Selective Gaussian] , スムーズ[選択的ガウス]\nSmooth [Skin] , なめらかな【肌\nSmooth [Thin Brush] , スムース【細筆\nSmooth [Total Variation] , スムーズ【総バラツキ\nSmooth [Wavelets] , スムーズ [ウェーブレット]\nSmooth [Wiener] , スムース[ウィンナー]\nSmooth Abstract , 滑らかなアブストラクト\nSmooth Amount , スムーズ量\nSmooth Clear , スムーズクリア\nSmooth Colors , 滑らかな色\nSmooth Crome-Ish , スムースクローム・アイシュ\nSmooth Dark , スムースダーク\nSmooth Fade , スムースフェード\nSmooth Green Orange , スムースグリーンオレンジ\nSmooth Light , スムーズライト\nSmooth Looping , 滑らかなループ\nSmooth Only , スムーズのみ\nSmooth Sailing , スムーズセーリング\nSmooth Teal Orange , スムースティールオレンジ\nSmoothen Background Reconstruction , 背景の再構築をスムーズにする\nSmoother Edge Protection , スムーズなエッジ保護\nSmoother Sharpness , より滑らかなシャープネス\nSmoother Softness , より滑らかな柔らかさ\nSmoothing , スムージング\nSmoothing Style , スムーズなスタイル\nSmoothing Type , スムージングタイプ\nSmoothness , 滑らかさ\nSmoothness (%) , 滑らかさ(%)\nSmoothness (px) , 滑らかさ (px)\nSmoothness Shadow , スムーズネスシャドウ\nSmoothness Type , 滑らかさのタイプ\nSnowflake , スノーフレーク\nSnowflake 2 , スノーフレーク2\nSnowflake Recursion , 雪の結晶の再帰\nSobel-X , ソベルエックス\nSobel-Y , ソベルワイ\nSoft , 柔らかい\nSoft  Light , ソフトライト\nSoft Burn , ソフトバーン\nSoft Dodge , ソフトダッジ\nSoft Fade , ソフトフェード\nSoft Glow , ソフトグロー\nSoft Glow [Animated] , ソフトグロー[アニメ化]\nSoft Light , ソフトライト\nSoft Random Shades , ソフトランダムシェード\nSoft Warming , 柔らかな暖かさ\nSoftburn , ソフトバーン\nSoftdodge , ソフトドッジ\nSoften , 柔らかくする\nSoften All Channels , すべてのチャンネルを柔らかくする\nSoften Guide , ソフトガイド\nSoftlight , ソフトライト\nSolarize , ソラライズ\nSolarize Color , ソラライズカラー\nSolarized Color2 , ソラライズドカラー2\nSolidify , 凝固\nSolve Maze , 迷路を解く\nSome , いくつかの\nSome Blue , いくつかのブルー\nSome Cyan , いくつかのシアン\nSome Green , いくつかのグリーン\nSome Key , いくつかのキー\nSome Magenta , いくつかのマゼンタ\nSome Red , いくつかの赤\nSome Yellow , いくつかの黄色\nSort Colors , 色を並べ替える\nSorting Criterion , 並び替え基準\nSource (%) , 出所(%)\nSource Color #1 , ソースカラー#1\nSource Color #10 , ソースカラー#10\nSource Color #11 , ソースカラー #11\nSource Color #12 , ソースカラー#12\nSource Color #13 , ソースカラー#13\nSource Color #14 , ソースカラー#14\nSource Color #15 , ソースカラー#15\nSource Color #16 , ソースカラー#16\nSource Color #17 , ソースカラー#17\nSource Color #18 , ソースカラー#18\nSource Color #19 , ソースカラー#19\nSource Color #2 , ソースカラー #2\nSource Color #20 , ソースカラー#20\nSource Color #21 , ソースカラー#21\nSource Color #22 , ソースカラー#22\nSource Color #23 , ソースカラー#23\nSource Color #24 , ソースカラー#24\nSource Color #3 , ソースカラー#3\nSource Color #4 , ソースカラー#4\nSource Color #5 , ソースカラー#5\nSource Color #6 , ソースカラー#6\nSource Color #7 , ソースカラー#7\nSource Color #8 , ソースカラー#8\nSource Color #9 , ソースカラー#9\nSource X-Tiles , ソースXタイル\nSource Y-Tiles , ソースYタイル\nSpace , スペース\nSpacing , 間隔\nSpan , スパン\nSpatial Bandwidth , 空間帯域幅\nSpatial Metric , 空間メトリック\nSpatial Overlap , 空間的なオーバーラップ\nSpatial Precision , 空間精度\nSpatial Radius , 空間半径\nSpatial Regularization , 空間正規化\nSpatial Sampling , 空間サンプリング\nSpatial Scale , 空間スケール\nSpatial Tolerance , 空間公差\nSpatial Transition , 空間遷移\nSpatial Variance , 空間分散\nSpecial Effects , 特殊効果\nSpecific Saturation , 比飽和度\nSpecify Different Output Size , 異なる出力サイズを指定\nSpecify HaldCLUT As , HaldCLUTを次のように指定します。\nSpecular , スペキュラ\nSpecular (%) , 鏡面 (%)\nSpecular Centering , スペキュラーセンタリング\nSpecular Intensity , 鏡面強度\nSpecular Light , スペキュラーライト\nSpecular Lightness , スペキュラの明るさ\nSpecular Shininess , スペキュラーシャイニー\nSpecular Size , 鏡面サイズ\nSpeed , スピード\nSphere , スフィア\nSpherize , 球形化\nSpiral , スパイラル\nSpiral RGB , スパイラルRGB\nSpline B1 , スプラインB1\nSpline B2 , スプラインB2\nSpline B3 , スプラインB3\nSpline B4 , スプラインB4\nSpline B5 , スプラインB5\nSpline B6 , スプラインB6\nSpline Editor , スプラインエディタ\nSpline Max Angle (deg) , スプライン最大角度(deg)\nSpline Max Length (px) , スプラインの最大長さ (px)\nSpline Roundness , スプライン真円度\nSplines , スプライン\nSplit Base and Detail Output , ベースと詳細出力の分割\nSplit Brightness / Colors , 割れた明るさ/色\nSplit Details [Alpha] , 分割詳細【アルファ\nSplit Details [Gaussian] , スプリットの詳細 [ガウス]\nSplit Details [Wavelets] , スプリットの詳細 [ウェーブレット]\nSponge , スポンジ\nSpotify , スポティファイ\nSpread , スプレッド\nSpread Amount , スプレッド量\nSpread Angles , スプレッドアングル\nSpread Noise Amount , 拡散ノイズ量\nSpreading , 拡散\nSpring Morning , 春の朝\nSprocket 231 , スプロケット 231\nSpy 29 , スパイ29\nSquare , スクエア\nSquare (Inv.) , スクエア（Inv.\nSquare 1 , スクエア1\nSquare 2 , スクエア2\nSquare to Circle , 正方形から円へ\nSquared-Euclidean , 二乗ユークリッド\nSquares , 正方形\nSquares (Outline) , 正方形（アウトライン\nSRGB , エスアールジービービー\nSRGB Conversion , SRGB変換\nStabilizer , スタビライザー\nStained Glass , ステンドグラス\nStamp , スタンプ\nStandard , 標準\nStandard (256) , 標準 (256)\nStandard [No Scan] , スタンダード [スキャンなし]\nStandard Deviation , 標準偏差\nStar , 星\nStar: -5*(z^3/3-Z/4)/2 , スターです。-5*(z^3/3-z/4)/2\nStardust , スターダスト\nStars , 星\nStars (Outline) , 星（概要\nStart Angle , 開始角度\nStart Color , スタートカラー\nStart Frame Number , 開始フレーム番号\nStart of Mid-Tones , ミッドトーン開始\nStarting Angle , 開始角度\nStarting Color , 開始色\nStarting Feathering , フェザーリングの開始\nStarting Frame , スタートフレーム\nStarting Level , 開始レベル\nStarting Pattern , 開始パターン\nStarting Point , 出発点\nStarting Point (%) , 開始点(%)\nStarting Scale (%) , 開始スケール(%)\nStarting Value , 開始値\nStationary Frames , 据え置き型フレーム\nStd Angle (deg.) , 標準角度(deg.)\nStd Branching , 標準分岐\nStd Length Factor (%) , 標準長さ係数(%)\nStd Thickness Factor (%) , 標準厚さ係数(%)\nStencil , ステンシル\nStencil Type , ステンシルタイプ\nStep , ステップ\nStep (%) , ステップ(%)\nSteps , ステップ\nStereo Image , ステレオ画像\nStereo Window Position , ステレオウィンドウの位置\nStereographic Projection , 立体投影\nStereoscopic Image Alignment , 立体画像アライメント\nStereoscopic Window Position , 立体視窓の位置\nStraight , ストレート\nStrands , ストランド\nStreak , ストリーク\nStreet , 通り\nStrength , 強さ\nStrength (%) , 強度(%)\nStrength Effect , 強度効果\nStrength Highlights , 強さのハイライト\nStrength Midtones , ストレングス ミッドトーン\nStrength Shadows , ストレングスシャドウズ\nStretch , ストレッチ\nStretch Colors , ストレッチカラー\nStretch Contrast , ストレッチ コントラスト\nStretch Factor , ストレッチファクター\nStrip , ストリップ\nStripe Orientation , ストライプの向き\nStroke , ストローク\nStroke Angle , ストローク角度\nStroke Length , ストローク長\nStroke Strength , ストローク強度\nStrong , 強い\nStructure Smoothness , 構造の平滑性\nStudio , スタジオ\nStudio Skin Tone Shaper , スタジオスキントーンシェイパー\nStyle , スタイル\nStyle Variations , スタイルバリエーション\nStylize , スタイライズ\nSubdivisions , 分科会\nSubpixel Interpolation , サブピクセル補間\nSubpixel Level , サブピクセルレベル\nSubsampling (%) , サブサンプリング(%)\nSubtle Blue , 微妙なブルー\nSubtle Green , 微妙なグリーン\nSubtle Yellow , 微妙な黄色\nSubtract , 減算\nSubtractive , 減算的\nSummer , 夏\nSummer (alt) , 夏 (alt)\nSunny , サニー\nSunny (alt) , サニー\nSunny (rich) , サニー（金持ち\nSunny (warm) , 晴れ（暖かい\nSuper Warm , スーパーウォーム\nSuper Warm (rich) , スーパーウォーム（リッチ\nSuper-Pixels , スーパーピクセル\nSuperformula , スーパーフォーミュラー\nSuperimpose with Original? , オリジナルとスーパーインポーズ？\nSurface Disturbance , 表面撹乱\nSurface Disturbance Multiplier , 表面擾乱乗数\nSutro FX , スートロFX\nSwan , 白鳥\nSwap , スワップ\nSwap Colors , スワップカラー\nSwap Layers , レイヤーを入れ替える\nSwap Radius / Angle , 半径/角度を交換\nSwap Sides , スワップサイド\nSweet Bubblegum , スウィートバブルガム\nSweet Gelatto , 甘いジェラート\nSymmetric 2D Shape , 対称2次元形状\nSymmetrize , 対称化\nSymmetry , 対称性\nSymmetry Sides , シンメトリーサイド\nSynthesis Scale , 合成スケール\nTaiga , たいが\nTan(z) , タン(z)\nTangent Radius , 接線半径\nTaquin , タキン\nTarget Color #1 , ターゲットカラー#1\nTarget Color #10 , ターゲットカラー#10\nTarget Color #11 , ターゲットカラー #11\nTarget Color #12 , ターゲットカラー#12\nTarget Color #13 , ターゲットカラー#13\nTarget Color #14 , ターゲットカラー#14\nTarget Color #15 , ターゲットカラー#15\nTarget Color #16 , ターゲットカラー#16\nTarget Color #17 , ターゲットカラー#17\nTarget Color #18 , ターゲットカラー#18\nTarget Color #19 , ターゲットカラー#19\nTarget Color #2 , ターゲットカラー #2\nTarget Color #20 , ターゲットカラー#20\nTarget Color #21 , ターゲットカラー#21\nTarget Color #22 , ターゲットカラー #22\nTarget Color #23 , ターゲットカラー #23\nTarget Color #24 , ターゲットカラー#24\nTarget Color #3 , ターゲットカラー#3\nTarget Color #4 , ターゲットカラー#4\nTarget Color #5 , ターゲットカラー#5\nTarget Color #6 , ターゲットカラー#6\nTarget Color #7 , ターゲットカラー#7\nTarget Color #8 , ターゲットカラー#8\nTarget Color #9 , ターゲットカラー#9\nTarraco , タラコ\nTeal Fade , ティールフェード\nTeal Magenta Gold , ティール マゼンタ ゴールド\nTeal Moonlight , ティールムーンライト\nTeal Orange , ティールオレンジ\nTeal Orange 1 , ティールオレンジ1\nTeal Orange 2 , ティールオレンジ2\nTeal Orange 3 , ティールオレンジ3\nTechnicalFX - Backlight Filter , TechnicalFX - バックライトフィルタ\nTeddy , テディ\nTeigen 28 , テイゲン28\nTemperature Balance , 温度バランス\nTen Layers , 10層\nTends to Be Square , スクエアになりがち\nTension Green 1 , テンショングリーン1\nTension Green 2 , テンショングリーン2\nTension Green 3 , テンショングリーン3\nTension Green 4 , テンショングリーン4\nTensor Smoothness , テンソル平滑度\nTerra 4 , テラ4\nTertiary Factor , 第三次因子\nTertiary Gamma , 第三次ガンマ\nTertiary Shift , 第三次シフト\nTertiary Twist , 第三次ツイスト\nTetris , テトリス\nText , テキスト\nTexture , テクスチャ\nTexture Enhance , テクスチャ強化\nTextured Glass , テクスチャードガラス\nThe Game of Life , 人生のゲーム\nThe Matrices , 行列\nThelypteridaceae , フトモモ科\nThickness , 厚み\nThickness (%) , 厚み(%)\nThickness (px) , 厚さ(px)\nThickness Factor , 厚み係数\nThin Edges , 薄いエッジ\nThin Separators , 薄型セパレータ\nThinness , 薄さ\nThinning , 間引き\nThinning (Slow) , 間引き（スロー\nThree Layers , 三層構造\nThreshold , しきい値\nThreshold (%) , しきい値(%)\nThreshold Etch , しきい値エッチング\nThreshold High , しきい値が高い\nThreshold Low , しきい値が低い\nThreshold Max , しきい値最大値\nThreshold Mid , しきい値中間値\nThreshold On , しきい値\nThriller 2 , スリラー2\nThumbnail Size , サムネイルサイズ\nTic-Tac-Toe , チックタックトウ\nTiger , 虎\nTikhonov , ティコノフ\nTile Poles , タイルポール\nTile Size , タイルサイズ\nTileable Rotation , タイル化可能な回転\nTiled Isolation , タイル張りのアイソレーション\nTiled Normalization , タイル状の正規化\nTiled Parameterization , タイル化されたパラメータ化\nTiled Preview , タイル張りのプレビュー\nTiled Random Shifts , タイル状のランダムシフト\nTiled Rotation , タイル張りの回転\nTiles , タイル\nTiles to Layers , タイルからレイヤーへ\nTilt , 傾き\nTime , 時間\nTime Step , タイムステップ\nTimed Image , タイムドイメージ\nTiny , ちっちゃい\nTo Equirectangular , 間接角へ\nTo Nadir / Zenith , ナディールへ／ゼニス\nToasted Garden , トーストガーデン\nToes , つま先\nToggle to View Base Image , ベース画像を表示するにはトグル\nTolerance , 許容範囲\nTolerance to Gaps , ギャップへの耐性\nTonal Bandwidth , 同調帯域幅\nTone Blur , トーンブラー\nTone Enhance , トーン強化\nTone Gamma , トーンガンマ\nTone Mapping , トーンマッピング\nTone Mapping (%) , トーンマッピング (%)\nTone Mapping [Fast] , トーンマッピング[高速]\nTone Mapping Fast , トーンマッピングの高速化\nTone Mapping Soft , トーンマッピングソフト\nTone Presets , トーンプリセット\nTone Threshold , トーンしきい値\nTones Range , 音色の範囲\nTones Smoothness , トーンの滑らかさ\nTones to Layers , トーンからレイヤーへ\nTop , トップ\nTop Layer , 最上層\nTop Left , 左上\nTop Right , 右上\nTop-Left Vertex (%) , 左上頂点 (%)\nTop-Right Vertex (%) , 右上頂点(%)\nTorus , トーラス\nTotal Layers , 総層数\nTotal Variation , 総バラツキ\nTransfer Colors [Histogram] , 転写色[ヒストグラム]\nTransfer Colors [Patch-Based] , トランスファーカラー[パッチベース]\nTransfer Colors [PCA] , トランスファーカラー[PCA]\nTransfer Colors [Variational] , トランスファーカラー【バリエーション\nTransform , トランスフォーム\nTransition Map , トランジションマップ\nTransition Shape , トランジション形状\nTransition Smoothness , 遷移の滑らかさ\nTransmittance Map , 透過率マップ\nTransparency , 透明性\nTransparent , 透明な\nTransparent Background , 透明な背景\nTransparent Black & White , 透明なブラック＆ホワイト\nTransparent Color , 透明な色\nTransparent on Black , 黒地に透明\nTransparent on White , 白地に透明\nTransparent Skin , 透明な肌\nTree , ツリー\nTrent 18 , トレント十八\nTriangle , 三角形\nTriangles , 三角形\nTriangles (Outline) , 三角形（アウトライン\nTriangular Ha , 三角ハ\nTriangular Hb , 三角Hb\nTriangular Va , 三角Va\nTriangular Vb , 三角Vb\nTritanomaly , トライタノマリー\nTritanopia , トリタノピア\nTruchet , トルシェ\nTrue Colors 8 , トゥルーカラーズ8\nTrunk Color , トランクカラー\nTrunk Opacity (%) , 幹の不透明度 (%)\nTrunks , トランクス\nTulips , チューリップ\nTunnel , トンネル\nTurbulence , 乱流\nTurbulence 2 , 乱流2\nTurbulent Halftone , 乱流ハーフトーン\nTuring , チューリング\nTurkiest 42 , ターキエスト42\nTurn on Rotate and Twirl , 回転と回転をオンにする\nTweed 71 , ツイード71\nTwirl , 渦巻き\nTwisted Rays , ツイステッドレイ\nTwo Layers , 二層構造\nTwo Threads , 二本の糸\nTwo-By-Two , ツーバイツー\nType , タイプ\nType Snowflake , タイプ スノーフレーク\nUltra Water , ウルトラウォーター\nUltraWarp++++ , ウルトラワープ++++++\nUnaligned Images , アラインメントされていない画像\nUndeniable , 否定できない\nUndeniable 2 , 否定できない2\nUnderwater , 水中\nUndo Anaglyph , アナグリフを元に戻す\nUniform , 制服\nUnknown , 不明\nUnpurple , アンパープル\nUnquantize [JPEG Smooth] , アンクオンタイズ [JPEG Smooth]\nUnsharp Mask , アンシャープマスク\nUnstrip , アンストリップ\nUntwist , 紐を解く\nUp-Left , 左上\nUp-Right , アップライト\nUpper Layer Is the Top Layer for All Blends , 上層はすべてのブレンドのトップレイヤー\nUpper Side Orientation , 上面の向き\nUppercase Letters , 大文字\nUpscale [DCCI2x] , アップスケール [DCCI2x]\nUpscale [Diffusion] , アップスケール[拡散]\nUpscale [Scale2x] , アップスケール [Scale2x]\nUrban Cowboy , アーバン カウボーイ\nUse as Hue , 色相として使用\nUse as Saturation , 彩度として使用\nUse Individual Depth Map , 個別のデプスマップを使用する\nUse Light , ライトを使用する\nUse Maximum Tones , 最大トーンを使用する\nUse Top Layer as a Priority Mask , トップレイヤーを優先マスクとして使用する\nUser-Defined , ユーザー定義\nUser-Defined (Bottom Layer) , ユーザー定義(下層)\nUzbek Bukhara , ウズベクブハラ\nUzbek Marriage , ウズベク人の結婚\nUzbek Samarcande , ウズベクサマルカンデ\nV Cutoff , Vカットオフ\nVal Range , バルブレンジ\nValue , 値\nValue Action , バリューアクション\nValue Blending , 価値のブレンド\nValue Bottom , 値の底\nValue Correction , 値補正\nValue Factor , バリューファクター\nValue Normalization , 値の正規化\nValue Offset , 値オフセット\nValue Precision , 値の精度\nValue Range , 値の範囲\nValue Scale , バリュースケール\nValue Shift , バリューシフト\nValue Smoothness , 値の滑らかさ\nValue Top , バリュートップ\nValue Variance , 値の分散\nValues , 値\nVan Gogh: Almond Blossom , ゴッホ：アーモンドブロッサム\nVan Gogh: Irises , ゴッホ：花菖蒲\nVan Gogh: The Starry Night , ゴッホ：星降る夜\nVan Gogh: Wheat Field with Crows , ゴッホ：カラスのいる麦畑\nVariability , 変動性\nVariance , バリエーション\nVariation A , バリエーションA\nVariation B , バリエーションB\nVariation C , バリエーションC\nVector Painting , ベクターペイント\nVelocity , 速度\nVelvetia , ベルベティアもく\nVelvia , ベルビア\nVertex Type , 頂点タイプ\nVertical , 垂直方向\nVertical (%) , 垂直方向(%)\nVertical 1 Amount , 縦型 1 金額\nVertical 1 Length , 縦 1 長さ\nVertical 2 Amount , 縦型2 金額\nVertical 2 Length , 縦 2 長さ\nVertical Amount , 鉛直量\nVertical Array , 垂直配列\nVertical Blur , 垂直方向のぼかし\nVertical Length , 垂直方向の長さ\nVertical Size (%) , 縦寸法(%)\nVertical Stripes , 縦縞\nVertical Tiles , 縦型タイル\nVery Course 5 , ベリーコース5\nVery Fine , 非常に良い\nVery High , 非常に高い\nVery High (Even Slower) , 非常に高い（さらに遅い\nVery Warm Greenish , 非常に暖かい緑がかった\nVibrant , 鮮やかな\nVibrant (alien) , 元気な（宇宙人\nVibrant (contrast) , 鮮やかな（コントラスト\nVibrant (crome-Ish) , バイブラント（クロームイッシュ\nVictory , 勝利\nView Outlines Only , アウトラインのみを表示\nView Resolution , 解像度を見る\nVignette , ビネット\nVignette Contrast , ビネットのコントラスト\nVignette Max Radius , ビネット最大半径\nVignette Min Radius , ビネット最小半径\nVignette Size , ビネットサイズ\nVignette Strength , ビネットの強さ\nVignette Strenth , ビネット強度\nVintage , ヴィンテージ\nVintage (alt) , ヴィンテージ\nVintage (brighter) , ヴィンテージ（明るめ\nVintage 163 , ヴィンテージ163\nVintage Chrome , ヴィンテージクローム\nVintage Style , ヴィンテージスタイル\nVintage Tone (%) , ヴィンテージトーン (%)\nVintage Warmth 1 , ヴィンテージの暖かさ 1\nVireo 37 , ビレオ37\nVirtual Landscape , バーチャルランドスケープ\nVisible Watermark , 目に見える透かし\nVivid Edges , ビビッドエッジ\nVivid Edges* , ビビッドエッジ\nVivid Light , ビビッドライト\nVivid Screen , ビビッドスクリーン\nVividlight , ビビッドライト\nVorono&#239; , ボロノ。\nWall , 壁\nWarhol , ウォーホール\nWarm , 暖かさ\nWarm (highlight) , 暖かい（ハイライト\nWarm (yellow) , 暖色系（黄色\nWarm Dark Contrasty , 暖かみのあるダークコントラスト\nWarm Fade , ウォームフェード\nWarm Fade 1 , ウォームフェード1\nWarm Neutral , 暖かみのあるニュートラル\nWarm Sunset Red , 暖かいサンセットレッド\nWarm Teal , ウォームティール\nWarm Vintage , 温かみのあるヴィンテージ\nWarp [Interactive] , ワープ[インタラクティブ]\nWarp by Intensity , 強度によるワープ\nWater , 水\nWaterfall , ウォーターフォール\nWave , 波\nWave(s) , 波\nWavelength , 波長\nWavelet , ウェーブレット\nWaves Amplitude , 波の振幅\nWaves Smoothness , 波の滑らかさ\nWe'll See , 拝見させていただきます\nWeave , 織り方\nWeird , 奇妙な\nWhirl Drawing , 渦巻き図面\nWhirls , 渦巻き\nWhite , ホワイト\nWhite Dices , ホワイトダイス\nWhite Layers , 白い層\nWhite Level , 白レベル\nWhite on Black , 黒地に白\nWhite on Transparent , 透明な上の白\nWhite on Transparent Black , 透明な黒に白\nWhite Point , ホワイトポイント\nWhite to Black , 白から黒へ\nWhite Walls , 白い壁\nWhitening , ホワイトニング\nWhiter Whites , より白い白人\nWhites , 白人\nWidth , 幅\nWidth (%) , 幅(%)\nWind , 風\nWinter Lighthouse , 冬の灯台\nWipe , 拭き取り\nWireframe , ワイヤーフレーム\nWiremap , ワイヤマップ\nWithout , なくても\nWooden Gold 20 , 木製ゴールド20\nWork on Frameset , フレームセットの作業\nWrap , ラップ\nX Center , X センター\nX Origine , X オリジン\nX(t) , Ｘ(t)\nX-Amplitude , エックス振幅\nX-Angle , Ｘアングル\nX-Axis , Ｘ軸\nX-Axis Then Y-Axis , X 軸、次に Y 軸\nX-Border , エックスボーダー\nX-Center , エックスセンター\nX-Centering , エックスセンタリング\nX-Centering (%) , X-センタリング (%)\nX-Coordinate , エックス座標\nX-Coordinate [Manual] , X座標[マニュアル]\nX-Curvature , Ｘ曲率\nX-Dispersion , エックスディスパーション\nX-End (%) , Xエンド(%)\nX-Factor , エックスファクター\nX-Factor (%) , Xファクター(%)\nX-Light , エックスライト\nX-Max , エックスマックス\nX-Min , エックスミン\nX-Motion , エックスモーション\nX-Multiplier , Ｘ倍数器\nX-Offset , エックスオフセット\nX-Offset (%) , X オフセット (%)\nX-Ratio , エックスレシオ\nX-Resolution , Ｘ解像度\nX-Rotation , エックスローテーション\nX-Scale , エックススケール\nX-Seed (Julia) , エックスシード（ジュリア\nX-Shadow , エックスシャドー\nX-Shift , エックスシフト\nX-Shift (%) , Xシフト(%)\nX-Shift (px) , Xシフト (px)\nX-Size , エックスサイズ\nX-Size (px) , Xサイズ(px)\nX-Smoothness , X-スムースネス\nX-Tiles , エックスタイルズ\nX-Variations , Ｘ変化\nX/Y-Ratio , X/Y比\nX1 (none) , X1 (なし)\nXor , Ｘｏｒ\nXY Mirror , XYミラー\nXY-Amplitude , ＸＹ振幅\nXY-Axes , ＸＹ軸\nXY-Axis , ＸＹ軸\nXY-Coordinates (%) , XY座標(%)\nXY-Factor , ＸＹ因子\nXY-Light , ＸＹライト\nXYZ , ＸＹＺ\nXYZ8 , ＸＹＺ８\nY Center , Yセンター\nY Origine , Y オリジン\nY(t) , Ｙ(t)\nY-Amplitude , Ｙ振幅\nY-Angle , Ｙ角\nY-Axis , Ｙ軸\nY-Axis Then X-Axis , Y軸、次にX軸\nY-Border , Ｙボーダー\nY-Center , Ｙセンター\nY-Centering , Ｙセンタリング\nY-Centering (%) , Yセンタリング(%)\nY-Coordinate , Ｙ座標\nY-Coordinate [Manual] , Y座標[マニュアル]\nY-Curvature , Y曲率\nY-Dispersion , Ｙ分散\nY-End (%) , Yエンド(%)\nY-Factor , Ｙ因子\nY-Factor (%) , Y係数(%)\nY-Light , Ｙライト\nY-Motion , Ｙ運動\nY-Multiplier , Ｙ倍数\nY-Offset , Ｙオフセット\nY-Offset (%) , Yオフセット(%)\nY-Ratio , Ｙ比\nY-Resolution , Y分解能\nY-Rotation , Ｙ回転\nY-Scale , Ｙスケール\nY-Seed (Julia) , Ｙシード（ジュリア\nY-Shadow , Ｙシャドー\nY-Shift , Ｙシフト\nY-Shift (%) , Yシフト\nY-Shift (px) , Yシフト (px)\nY-Size , Ｙサイズ\nY-Size (px) , Yサイズ(px)\nY-Smoothness , Y-平滑度\nY-Start (%) , Yスタート(%)\nY-Tiles , Ｙタイル\nY-Variations , Y変化\nY-Warping , Ｙワーピング\nYAG Effect , YAG効果\nYCbCr , ＹＣｂＣｒ\nYCbCr (Chroma Only) , YCbCr（クロマのみ\nYCbCr (Distinct) , YCbCr (識別)\nYCbCr (Luma Only) , YCbCr (Lumaのみ)\nYCbCr (Mixed) , YCbCr（混合\nYCbCr [Blue Chrominance] , YCbCr [ブルークロミナンス]\nYCbCr [Blue-Red Chrominances] , YCbCr［青赤クロミナンス\nYCbCr [Green Chrominance] , YCbCr [グリーンクロミナンス]\nYCbCr [Luminance] , YCbCr [輝度]\nYCbCr [Red Chrominance] , YCbCr [レッドクロミナンス]\nYellow , イエロー\nYellow 55B , 黄 55B\nYellow Factor , イエローファクター\nYellow Film 01 , イエローフィルム01\nYellow Shift , イエローシフト\nYellow Smoothness , 黄色の滑らかさ\nYellowstone , イエローストーン\nYIQ , イーアイキュー\nYIQ [chromas] , YIQ [クロマス]\nYIQ [Luma] , YIQ[ルーマ]\nYIQ8 , ＹＩＱ８\nYou Can Do It , あなたはそれを行うことができます\nYUV , ユヴ\nYUV8 , ユーブイエイト\nZ-Angle , Ｚ角\nZ-Light , Z-ライト\nZ-Motion , Ｚ運動\nZ-Multiplier , Ｚ倍数\nZ-Offset , Ｚオフセット\nZ-Range , Ｚレンジ\nZ-Rotation , Ｚ回転\nZ-Scale , Ｚスケール\nZ-Size , Zサイズ\nZed 32 , ゼット32\nZeke 39 , ジーク三十九\nZelda , ゼルダ\nZero , ゼロ\nZilverFX - B&W Solarization , ZilverFX - 白黒ソラリゼーション\nZilverFX - Vintage B&W , ZilverFX - ビンテージ白黒\nZone System , ゾーンシステム\nZoom , ズーム\nZoom (%) , ズーム(%)\nZoom Center , ズームセンター\nZoom Factor , ズームファクター\nZoom In , ズームイン\nZoom Out , ズームアウト\n"
  },
  {
    "path": "translations/filters/gmic_qt_nl.csv",
    "content": "<b>Arrays & Tiles</b> , <b>Arrays & Tegels</b>\n<b>Artistic</b> , <b>Artistiek</b>\n<b>Black & White</b> , <b>Zwart-wit</b>\n<b>Colors</b> , <b>Kleuren</b>\n<b>Contours</b> , <b>Contouren</b>\n<b>Deformations</b> , <b>Vervormingen</b>\n<b>Degradations</b> , <b>Verslechteringen</b>\n<b>Details</b> , <b>Details</b>\n<b>Testing</b> , <b>Het testen van</b>\n<b>Frames</b> , <b>Frames</b>\n<b>Frequencies</b> , <b>Frequenties</b>\n<b>Layers</b> , <b>Lagen</b>\n<b>Lights & Shadows</b> , <b>Licht en schaduw</b>\n<b>Patterns</b> , <b>Patronen</b>\n<b>Rendering</b> , <b>Rendering</b>\n<b>Repair</b> , <b>Reparatie</b>\n<b>Sequences</b> , <b>Volgorde</b>\n<b>Silhouettes</b> , <b>Silhouetten</b>\n<b>Icons</b> , <b>Pictogrammen</b>\n<b>Misc</b> , <b>Overige</b>\n<b>Nature</b> , <b>Natuur</b>\n<b>Others</b> , <b>Andere</b>\n<b>Stereoscopic 3D</b> , <b>Stereoscopisch 3D</b>\n&#9829; Support Us ! &#9829; , ♥ Steun ons ! ♥\n*Colors Doping , *Kleuren Doping\n*Colors Doping* , *Kleuren Doping*\n*Comix Colors* , *Comix Kleuren*\n*Dark Edges* , *Donkere randen*\n*Dark Screen* , *Donker scherm*\n*Graphix Colors , *Graphix Kleuren\n*Vivid Edges* , *Vividuele randen*\n*Vivid Screen* , *Vividueel scherm*\n- NO - , - NEE -\n-1. Value Action , -1. Waarde Actie\n-2. Overall Channel(s) , -2. Totale kanaal(en)\n-3. Normalisation Channel(s) , -3. Normalisatiekanaal(en)\n-4. Normalise , -4. Normaliseer\n0.  Recompute , 0. Recomputeer\n1 Levels , 1 Niveaus\n1.  Plasma Texture [Discards Input Image] , 1. 1. Plasmastructuur [Invoerafbeelding weggooien]\n10.  Quadtree Max Precision , 10. 10. Quadtree Max Precisie\n10th , 10e\n10th Color , 10e kleur\n11.  Quadtree Min Homogeneity , 11. 11. Quadtree Min. Homogeniteit\n11th , 11e\n12 Colors , 12 Kleuren\n12 Grays , 12 Grijzen\n12.  Quadtree Max Homogeneity , 12. 12. Quadtree Max Homogeniteit\n125 Keypoints , 125 Kernpunten\n12th , 12e\n13. Noise Type , 13. 13. Geluidstype\n13th , 13e\n14. Minimum Noise , 14. 14. Minimaal geluid\n14th , 14e\n15. Maximum Noise , 15. 15. Maximaal geluid\n15th , 15e\n16 Colors , 16 Kleuren\n16 Grays , 16 Grijzen\n16. Noise Channel(s) , 16. 16. Geluidskanaal(en)\n16th , 16e\n17. Warp Iterations , 17. 17. Warp Iteraties\n18. Warp Intensity , 18. 18. Warpintensiteit\n19. Warp Offset , 19. 19. Scheefstandcompensatie\n1st , 1e\n1st Additional Palette (.Gpl) , 1ste Extra Palet (.Gpl)\n1st Color , 1ste kleur\n1st Parameter , 1e Parameter\n1st Text , 1e tekst\n1st Tone , 1e Toon\n1st Variance , 1ste variant\n1st X-Coord , 1e X-Coord\n1st Y-Coord , 1e Y-Coord\n2 Colors , 2 Kleuren\n2 Grays , 2 Grijzen\n2 Noise , 2 Geluid\n2-Strip Process , 2-strooksproces\n2.  Plasma Scale , 2. 2. Plasmaschaal\n20. Scale to Width , 20. 20. Schaal naar Breedte\n21. Scale to Height , 21. 21. Schaal naar hoogte\n216 Keypoints , 216 Kernpunten\n22. Correlated Channels , 22. 22. Correlationele kanalen\n22.5 Deg. , 22,5 Deg.\n23. Boundary , 23. 23. Grenswaarde\n24. Warp Channel(s) , 24. 24. Warpkanaal(en)\n25. Random Negation , 25. 25. Willekeurige ontkenning\n26. Random Negation Channel(s) , 26. 26. Willekeurig negatiekanaal (-kanalen)\n27 Keypoints , 27 Kernpunten\n27. Gamma Offset , 27. 27. Gamma-compensatie\n28. Hue Offset , 28. 28. Tijdcompensatie\n29. Normalise , 29. 29. Normaliseer\n2nd , 2e\n2nd Additional Palette (.Gpl) , 2e Extra Palet (.Gpl)\n2nd Color , 2de kleur\n2nd Parameter , 2e Parameter\n2nd Text , 2e tekst\n2nd Tone , 2e Toon\n2nd Variance , 2de variant\n2nd X-Coord , 2e X-Coord\n2nd Y-Coord , 2e Y-Coord\n2XY Mirror , 2XY Spiegel\n3 Colors , 3 Kleuren\n3 Grays , 3 Grijzen\n3.  Plasma Alpha Channel , 3. 3. Plasma-alpha-kanaal\n30. Minimum Hue , 30. 30. Minimale tint\n31. Maximum Hue , 31. 31. Maximale tint\n32. Minimum Saturation , 32. 32. Minimale verzadiging\n33. Maximum Saturation , 33. 33. Maximale verzadiging\n34. Minimum Value , 34. 34. Minimumwaarde\n343 Keypoints , 343 Kernpunten\n35. Maximum Value , 35. 35. Maximale waarde\n36. Hue Offset , 36. 36. Tijdcompensatie\n37. Saturation Offset , 37. 37. Verzadigingscompensatie\n38. Value Offset , 38. 38. Waardevergelijking\n3D Blocks , 3D-blokken\n3D CLUT (Fast) , 3D CLUT (snel)\n3D CLUT (Precise) , 3D CLUT (Precies)\n3D Colored Object , 3D-gekleurd object\n3D Conversion , 3D-omzetting\n3D Elevation , 3D Elevatie\n3D Elevation [Animated] , 3D Elevatie [Geanimeerd]\n3D Extrusion , 3D Extrusie\n3D Extrusion [Animated] , 3D Extrusie [Geanimeerd]\n3D Image Object , 3D-beeldobject\n3D Image Object [Animated] , 3D-beeldobject [Geanimeerd]\n3D Image Type , 3D-beeldtype\n3D Lathing , 3D-latten\n3D Metaballs , 3D-metaballen\n3D Random Objects , 3D-Willekeurige objecten\n3D Reflection , 3D-reflectie\n3D Rubber Object , 3D-rubber voorwerp\n3D Starfield , 3D-sterrenveld\n3D Text Pointcloud , 3D Tekst Puntenwolk\n3D Tiles , 3D-tegels\n3D Video Conversion , 3D Videoconversie\n3D Waves , 3D-golven\n3rd , 3e\n3rd Color , 3de kleur\n3rd Parameter , 3de Parameter\n3rd Tone , 3e Toon\n3rd X-Coord , 3e X-Coord\n3rd Y-Coord , 3e Y-Coord\n4 Colors , 4 Kleuren\n4 Grays , 4 Grijzen\n4.  Segmentation [No Alpha Channel] , 4. 4. Segmentatie [Geen alfakanaal]\n4096x4096 Layer , 4096x4096 Laag\n4th , 4e\n4th Color , 4e kleur\n4th Tone , 4e Toon\n5.  Edge Threshold , 5. 5. Randdrempel\n512x512 Layer , 512x512 Laag\n5th , 5e\n5th Color , 5e Kleur\n5th Tone , 5e Toon\n6.  Smoothness , 6. 6. Vlotheid\n60's (faded Alt) , 60's (vervaagde Alt)\n60's (faded) , 60's (vervaagd)\n64 (Faster) , 64 (Sneller)\n64 Keypoints , 64 Kernpunten\n67.5 Deg. , 67,5 Deg.\n6th , 6e\n6th Color , 6e Kleur\n6th Tone , 6e Toon\n7.  Blur , 7. 7. Vervagen\n7th , 7e\n7th Color , 7e Kleur\n7th Tone , 7e Toon\n8 Colors , 8 Kleuren\n8 Grays , 8 Grijzen\n8 Keypoints (RGB Corners) , 8 Kernpunten (RGB-hoeken)\n8.  Quadtree Pixelisation [No Alpha Channel] , 8. 8. Quadtree Pixelisatie [Geen alfakanaal]\n8th , 8e\n8th Color , 8e kleur\n8th Tone , 8e Toon\n9.  Quadtree Min Precision , 9. 10. Quadtree Min Precisie\n9th , 9e\n9th Color , 9e kleur\n[Cyan]MYK , [Cyan] MYK\nA Lot of Cyan , Veel Cyaan\nA Lot of Key , Heel veel sleutel\nA Lot of Magenta , Veel Magenta\nA Lot of Yellow , Veel Geel\nA-Color Factor , A-Kleurfactor\nA-Color Shift , A-Kleurverschuiving\nA-Color Smoothness , A-Kleur Gladheid\nA-Value , A-Waarde\nA4 / 100 PPI (Recommended) , A4 / 100 PPI (Aanbevolen)\nAbout G'MIC , Over G'MIC\nAbsolute Brightness , Absolute Helderheid\nAbsolute Value , Absolute waarde\nAbstraction , Abstractie\nAcceleration , Versnelling\nAchromatopsia , Achromatopsie\nAction , Actie\nAction #1 , Actie #1\nAction #10 , Actie #10\nAction #11 , Actie #11\nAction #12 , Actie #12\nAction #13 , Actie #13\nAction #14 , Actie #14\nAction #15 , Actie #15\nAction #16 , Actie #16\nAction #17 , Actie #17\nAction #18 , Actie 18\nAction #19 , Actie #19\nAction #2 , Actie 2\nAction #20 , Actie #20\nAction #21 , Actie #21\nAction #22 , Actie #22\nAction #23 , Actie #23\nAction #24 , Actie #24\nAction #3 , Actie 3\nAction #4 , Actie 4\nAction #5 , Actie 5\nAction #6 , Actie 6\nAction #7 , Actie 7\nAction #8 , Actie #8\nAction #9 , Actie #9\nAction Magenta 01 , Actie Magenta 01\nAction Red 01 , Actie Rood 01\nActivate 'Pencil Smoother' , Activeer 'Pencil Smoother'\nActivate Color Enhancement , Activeer Kleurverbetering\nActivate Colors Geometric Shapes , Activeer Kleuren Geometrische Vormen\nActivate Custom Filter , Activeer aangepaste filter\nActivate Lizards , Hagedissen activeren\nActivate Mirror , Activeer Spiegel\nActivate Pink Elephants , Activeer Roze Olifanten\nActivate Second Direction , Activeer Tweede Richting\nActivate Shakes , Activeer Shakes\nActivate Slice 1 , Activeer Slice 1\nActivate Slice 2 , Activeer Slice 2\nActivate Slice 3 , Activeer Slice 3\nActivate Slice 4 , Activeer Slice 4\nActiver Symmetrizoscope , Activersymmetrizoscoop\nAdaptive , Adaptief\nAdd , Voeg  toe\nAdd 1px Outline , Voeg 1px Outline toe\nAdd Alpha Channels to Detail Scale Layers , Voeg alfakanalen toe aan detailschaallagen\nAdd as a New Layer , Toevoegen als nieuwe laag\nAdd Chalk Highlights , Krijthoogtepunten toevoegen\nAdd Color Background , Kleur achtergrond toevoegen\nAdd Comment Area in HTML Page , Commentaargebied toevoegen in HTML-pagina\nAdd Grain , Graan toevoegen\nAdd Image Label , Afbeeldingsetiket toevoegen\nAdd Painter's Touch , Schilderstip toevoegen\nAdd User-Defined Constraints (Interactive) , Gebruikergedefinieerde beperkingen toevoegen (Interactief)\nAdditional Duplicates Count , Extra Duplicaten Tellen\nAdditional Outline , Extra overzicht\nAdditive , Additief\nAdjust Background Reconstruction , Aanpassen Achtergrond Reconstructie\nAdventure 1453 , Avontuur 1453\nAggresive , Agressieve\nAggressive Highlights Recovery 5 , Agressieve Hoogtepunten Herstel 5\nAlgorithm , Algoritme\nAliasing , Vervreemdend\nAlien Green , Vreemdelingengroen\nAlign Image Streams , Beeldstromen uitlijnen\nAlign Layers , Lagen uitlijnen\nAligned , Uitgelijnd\nAlignment Type , Uitlijningstype\nAll , Allemaal\nAll 45° Rotations , Alle 45° Rotaties\nAll 90° Rotations , Alle 90° Rotaties\nAll [Collage] , Alle [Collage]\nAll but Reference Color , Allemaal behalve de Referentiekleur\nAll Layers and Masks , Alle lagen en maskers\nAll Tones , Alle Tonen\nAll XY-Flips , Alle XY-Flips\nAllow Angle , Hoek toestaan\nAllow Outer Blending , Laat het buitenmengen toe\nAllow Self Intersections , Laat Self Intersections toe\nAlpha Channel , Alfa-kanaal\nAlpha Mode , Alfamodus\nAlso Match Gradients , Ook overeenkomen met gradiënten\nAmbient (%) , Omgeving (%)\nAmbient Lightness , Omgevingslichtheid\nAmount , Bedrag\nAmplitude / Angle , Amplitude / Hoek\nAnaglypgh Green/magenta Optimized , Anaglypgh Groen/magenta Geoptimaliseerd\nAnaglyph Blue/yellow , Anaglyph Blauw/geel\nAnaglyph Blue/yellow Optimized , Anaglyph Blauw/geel Geoptimaliseerd\nAnaglyph Glasses Adjustment , Anaglyph Bril Aanpassing\nAnaglyph Green/magenta Optimized , Anaglyph Green/magenta Geoptimaliseerd\nAnaglyph Reconstruction , Anaglyph Reconstructie\nAnaglyph Red/cyan , Anaglyph Rood/cyaan\nAnaglyph Red/cyan Optimized , Anaglyph Rood/cyaan Geoptimaliseerd\nAnaglyph: Red/Cyan , Anaglyph: Rood/Cyan\nAnalogFX - Anno 1870 Color , AnalogFX - Anno 1870 Kleur\nAnalogFX - Old Style I , AnalogFX - Oude stijl I\nAnalogFX - Old Style II , AnalogFX - Oude stijl II\nAnalogFX - Old Style III , AnalogFX - Oude stijl III\nAnalogFX - Sepia Color , AnalogFX - Sepiakleur\nAnalogFX - Soft Sepia I , AnalogFX - Zachte Sepia I\nAnalogFX - Soft Sepia II , AnalogFX - Zachte Sepia II\nAnalysis Scale , Analyseschaal\nAnalysis Smoothness , Analyse Gladheid\nAnd , En\nAngle , Hoek\nAngle (%) , Hoek (%)\nAngle (deg) , Hoek (deg)\nAngle (deg.) , Hoek (deg.)\nAngle / Size , Hoek / Grootte\nAngle Cut , Haakse snede\nAngle Dispersion , Hoekverspreiding\nAngle Image Contour , Hoekbeeldcontour\nAngle of Disturbance Surface , Hoek van verstoring Oppervlakte\nAngle of Main Nebulous Surface , Hoek van het hoofdvlak van de nevel\nAngle Range , Hoekwaaier\nAngle Range (deg.) , Hoekbereik (deg.)\nAngle Tilt , Hoekinstelling\nAngle Variations , Hoekvariaties\nAnguish , Angstaanjagend\nAngular , Hoekig\nAngular Precision , Hoekprecisie\nAngular Tiles , Hoekige tegels\nAnisotropic , Anisotroop\nAnisotropy , Anisotropie\nAnnular Steiner Chain Round Tiles , Ringvormige Steiner Chain Round Tiles\nAntialiasing , Anti-aliasing\nAntisymmetry , Antisymmetrie\nAny , Elke\nApocalypse This Very Moment , Apocalyps op dit moment\nApples , Appels\nApply Adjustments On , Aanpassingen toepassen op\nApply Color Balance , Kleurensaldo toepassen\nApply External CLUT , Externe CLUT toepassen\nApply Mask , Breng het masker aan\nApply Skin Tone Mask , Huidtonenmasker aanbrengen\nApply Transformation From , Transformatie toepassen Van\nAqua and Orange Dark , Aqua en Oranje Donker\nArea , Gebied\nArea Smoothness , Gebied Soepelheid\nAreas Light Adjustment , Gebieden Lichtaanpassing\nAreas Smoothness , Gebieden Gladheid\nArray [Faded] , Array [Vervaagd]\nArray [Mirrored] , Array [Gespiegeld]\nArray [Random Colors] , Array [Willekeurige kleuren]\nArray [Random] , Array [Willekeurig]\nArray [Regular] , Array [Regelmatig]\nArray Mode , Array-modus\nArrows , Pijlen\nArrows (Outline) , Pijlen (Overzicht)\nArtistic  Modern , Artistiek Modern\nArtistic Hard , Artistiek Hard\nArtistic Round , Artistieke ronde\nAscii Art , Ascii-kunst\nAspect Ratio , Aspectratio\nAssociated Color , Bijbehorende kleur\nAttenuation , Verzwakking\nAustralia , Australië\nAuto Balance , Autosaldo\nAuto Reduce Level (Level Slider Is Disabled) , Automatisch verminderingsniveau (niveau schuifregelaar is uitgeschakeld)\nAuto Set Hue Inverse (Hue Slider Is Disabled) , Auto Set Hue Inverse (Tintenschuif is uitgeschakeld)\nAuto-Clean Bottom Color Layer , Autoschone bodemkleurlaag\nAuto-Reduce Number of Frames , Auto-Reduce Aantal Frames\nAuto-Set Periodicity , Auto-Set Periodiciteit\nAuto-Threshold , Autodrempel\nAutocrop Output Layers , Autocrop Uitgangslagen\nAutomatic , Automatisch\nAutomatic & Contrast Mask , Automatisch & Contrastmasker\nAutomatic [Scan All Hues] , Automatisch [Scan alle hints]\nAutomatic Color Balance , Automatisch kleurensaldo\nAutomatic Depth Estimation , Automatische diepteschatting\nAutomatic Upscale for Optimum Results , Automatische Upscale voor optimale resultaten\nAutumn , Herfst\nAvalanche , Lawine\nAverage , Gemiddelde\nAverage 3x3 , Gemiddeld 3x3\nAverage 5x5 , Gemiddeld 5x5\nAverage 7x7 , Gemiddelde 7x7\nAverage 9x9 , Gemiddeld 9x9\nAverage RGB , Gemiddelde RGB\nAverage Smoothness , Gemiddelde gladheid\nAvg / Max Weight , Avg / Max. gewicht\nAvg Branching , Avg-vertakking\nAvg Left Angle (deg.) , Avg Linkerhoek (deg.)\nAvg Length Factor (%) , Avg Lengte Factor (%)\nAvg Right Angle (deg.) , Avg Rechter Hoek (deg.)\nAvg Thickness Factor (%) , Avg Dikte Factor (%)\nAxis , As\nAzimuth , Azimut\nAzrael 93 , Azraël 93\nB&W , ZW\nB&W Pencil [Animated] , B&W-potlood [Geanimeerd]\nB&W Photograph , Zwart-witfoto\nB&W Stencil [Animated] , B&W Stencil [Animatie]\nB-Color Factor , B-kleurfactor\nB-Color Shift , B-kleurverschuiving\nB-Color Smoothness , B-kleur gladheid\nBackground , Achtergrond\nBackground Color , Achtergrondkleur\nBackground Intensity , Achtergrond Intensiteit\nBackground Point (%) , Achtergrond Punt (%)\nBackward , Achteruit\nBackward Horizontal , Achteruit horizontaal\nBackward Vertical , Achterwaarts Verticaal\nBalance , Balans\nBalance Color , Balanskleur\nBalance SRGB , Balans SRGB\nBall , Bal\nBalloons , Ballonnen\nBalls , Ballen\nBand Width , Bandbreedte\nBanding Denoise , Bandage Denoise\nBandwidth , Bandbreedte\nBarbed Wire , Prikkeldraad\nBarnsley Fern , Gerstvaren\nBase Reference Dimension , Basis Referentie Maatstaf\nBase Scale , Basisschaal\nBase Thickness (%) , Basisdikte (%)\nBasic Adjustments , Basisaanpassingen\nBatch Processing , Batchverwerking\nBayer Filter , Bayer-filter\nBayer Reconstruction , Bayer reconstructie\nBehind , Achter\nBelow , Hieronder\nBerlin Sky , Berlijnse hemel\nBest Match , Beste wedstrijd\nBG Textured , BG Textuur\nBi-Directional , Bi-directioneel\nBias , Vooringenomenheid\nBicubic , Bicubisch\nBidirectional [Sharp] , Bidirectioneel [Scherp]\nBidirectional [Smooth] , Bidirectioneel [Soepel]\nBidirectional Rendering , Bidirectionele Rendering\nBilateral , Bilateraal\nBilateral Radius , Bilaterale Straal\nBinary , Binaire\nBinary Digits , Binaire cijfers\nBit Masking (End) , Bitmaskering (einde)\nBit Masking (Start) , Bitmaskering (Start)\nBlack , Zwart\nBlack & White , Zwart-wit\nBlack & White (25) , Zwart-wit (25)\nBlack & White-1 , Zwart-wit-1\nBlack & White-10 , Zwart & Wit -10\nBlack & White-2 , Zwart-wit-2\nBlack & White-3 , Zwart-Wit-3\nBlack & White-4 , Zwart-wit-4\nBlack & White-5 , Zwart-Wit-5\nBlack & White-6 , Zwart-wit-6\nBlack & White-7 , Zwart-wit-7\nBlack & White-8 , Zwart-wit-8\nBlack & White-9 , Zwart-wit-9\nBlack Crayon Graffiti , Zwart krijt Graffiti\nBlack Dices , Zwarte Dobbelstenen\nBlack Level , Zwartniveau\nBlack on Transparent , Zwart op Transparant\nBlack on Transparent White , Zwart op Transparant Wit\nBlack on White , Zwart op Wit\nBlack Point , Zwart punt\nBlack Star , Zwarte ster\nBlack to White , Zwart op wit\nBlacks , Zwarten\nBlade Runner , Bladloper\nBlank , Blanco\nBleach Bypass , Bleekmiddelbypass\nBleach Bypass 1 , Bleekmiddelbypass 1\nBleach Bypass 2 , Bleekmiddelbypass 2\nBleach Bypass 3 , Bleekmiddelbypass 3\nBleach Bypass 4 , Bleekmiddelbypass 4\nBleech Bypass Green , Bleech Bypass Groen\nBleech Bypass Yellow 01 , Bleech Bypass Geel 01\nBlend , Mengen\nBlend [Average All] , Mengen [Gemiddeld alle]\nBlend [Edges] , Mengen [Randen]\nBlend [Fade] , Mengen [Fade]\nBlend [Median] , Mélange [Mediaan]\nBlend [Seamless] , Mengen [Naadloos]\nBlend [Standard] , Mengen [Standaard]\nBlend All Layers , Meng alle lagen\nBlend Decay , Mengverloop\nBlend Mode , Mengwijze\nBlend Rays , Mengstralen\nBlend Scales , Mengschaal\nBlend Size , Menggrootte\nBlend Threshold , Mengingsdrempel\nBlending Mode , Mengmode\nBlending Size , Het mengen van Grootte\nBlindness Type , Type blindheid\nBlob 1 Color , Blob 1 Kleur\nBlob 10 Color , Blob 10 Kleur\nBlob 11 Color , Blob 11 Kleur\nBlob 12 Color , Blob 12 Kleur\nBlob 2 Color , Blob 2 Kleur\nBlob 3 Color , Blob 3 Kleur\nBlob 4 Color , Blob 4 Kleur\nBlob 5 Color , Blob 5 Kleur\nBlob 6 Color , Blob 6 Kleur\nBlob 7 Color , Blob 7 Kleur\nBlob 8 Color , Blob 8 Kleur\nBlob 9 Color , Blob 9 Kleur\nBlob Size , Blobmaat\nBlobs Editor , Blobs-editor\nBloc , Blok\nBloc Size (%) , Blokgrootte (%)\nBlockism , Blockisme\nBloom , Bloei\nBlue , Blauw\nBlue & Red Chrominances , Blauwe & Rode Chrominances\nBlue Chroma Factor , Blauwe Chroma Factor\nBlue Chroma Shift , Blauwe Chroma Shift\nBlue Chroma Smoothness , Blauwe Chroma Smoothness\nBlue Chrominance , Blauwe Chrominantie\nBlue Cold Fade , Blauwe Koude Fade\nBlue Dark , Blauw Donker\nBlue Factor , Blauwe factor\nBlue House , Blauw huis\nBlue Ice , Blauw ijs\nBlue Level , Blauw niveau\nBlue Mono , Blauwe Mono\nBlue Rotations , Blauwe rotaties\nBlue Screen Mode , Blauwschermwijze\nBlue Shadows 01 , Blauwe Schaduwen 01\nBlue Shift , Blauwe Verschuiving\nBlue Smoothness , Blauwe Gladheid\nBlue Steel , Blauw Staal\nBlue Wavelength , Blauwe Golflengte\nBlue-Green , Blauwgroen\nBlur , Vervagen\nBlur [Angular] , Vervagen [Hoekig]\nBlur [Bloom] , Wazigheid [Bloom]\nBlur [Depth-Of-Field] , Wazigheid [Diepte-veld]\nBlur [Gaussian] , Waas [Gaussian]\nBlur [Glow] , Vervagen [Gloed]\nBlur [Linear] , Vervagen [Lineair]\nBlur [Multidirectional] , Vervagen [Multidirectioneel]\nBlur [Radial] , Vervagen [Radiaal]\nBlur Alpha , Vage Alfa\nBlur Amount , Wazig bedrag\nBlur Amplitude , Vervaagde Amplitude\nBlur Dodge and Burn Layer , Vage Dodge en Burn Layer\nBlur Factor , Vervagende factor\nBlur Frame , Vervagen Frame\nBlur Percentage , Vervagen Percentage\nBlur Precision , Vage Precisie\nBlur Shade , Vage Schaduw\nBlur Standard Deviation , Vage standaardafwijking\nBlur Strength , Vage kracht\nBlur the Mask , Vervaag het masker\nBoats , Boten\nBorder Color , Grenskleur\nBorder Opacity , Grensopaciteit\nBorder Outline , Grenslijn\nBorder Smoothness , Randvlakte\nBorder Thickness (%) , Grensdikte (%)\nBorder Width , Grensbreedte\nBoth , Beide\nBottles , Flessen\nBottom , Bodem\nBottom and Left Foreground , Onderste en linkse voorgrond\nBottom and Right Foreground , Bodem en rechtervoorgrond\nBottom and Top Foreground , Onderkant en bovenkant Voorgrond\nBottom Layer , Bodemlaag\nBottom Left , Linksonder\nBottom Right , Rechtsonder\nBottom Size , Bodemmaat\nBottom-Left , Linksonder\nBottom-Left Vertex (%) , Bodem-Links Vertex (%)\nBottom-Right , Rechtsonder\nBottom-Right Vertex (%) , Rechtsonderste punt (%)\nBouncing Balls , Stuiterende Ballen\nBoundaries (%) , Grenzen (%)\nBoundary , Grenswaarde\nBoundary Condition , Randvoorwaarde\nBoundary Conditions , Grensvoorwaarden\nBox , Doos\nBox Fitting , Doosindeling\nBranches , Vestigingen\nBraque: Landscape near Antwerp , Braque: Landschap bij Antwerpen\nBraque: Little Bay at La Ciotat , Braque: Little Bay bij La Ciotat\nBraque: The Mandola , Braque: De Mandola\nBright , Helder\nBright Green , Helder groen\nBright Green 01 , Helder groen 01\nBright Length , Heldere lengte\nBright Pixels , Heldere Pixels\nBright Teal Orange , Heldere Teal Oranje\nBright Warm , Helder Warm\nBrighter , Helderder\nBrightness , Helderheid\nBrightness (%) , Helderheid (%)\nBristle Size , Borstelgrootte\nBronze , Brons\nBrownish , Bruinachtig\nBrushify , Borstelen\nBuilt-in Gray , Ingebouwde Grijs\nBump Map , Bump kaart\nBurn , Verbranding\nBurn Blur , Verbrandingsonscherpte\nBurn Strength , Brandwondsterkte\nButterfly , Vlinder\nBy Blue Chrominance , Door Blauwe Chrominantie\nBy Blue Component , Door Blauwe Component\nBy Custom Expression , Door Aangepaste Uitdrukking\nBy Green Component , Per Groene Component\nBy Iteration , Door Iteratie\nBy Lightness , Door Lichtheid\nBy Luminance , Door Luminantie\nBy Red Chrominance , Door Red Chrominance\nBy Red Component , Door rode component\nBy Value , Naar waarde\nCamera Motion Only , Alleen camerabeweging\nCandle Light , Kaarslicht\nCanvas Brightness , Helderheid van het doek\nCanvas Color , Kleur van het doek\nCanvas Darkness , Canvas Duisternis\nCanvas Texture , Canvasstructuur\nCar , Auto\nCard Suits , Kaartpakken\nCartesian Transform , Cartesiaanse transformatie\nCartoon , Beeldverhaal\nCartoon [Animated] , Cartoon [Geanimeerd]\nCat , Kat\nCategory , Categorie\nCell Size , Celgrootte\nCenter , Centrum\nCenter (%) , Centrum (%)\nCenter Background , Centrale Achtergrond\nCenter Foreground , Centrum Voorgrond\nCenter Help , Centrum Hulp\nCenter Size , Centrum\nCenter Smoothness , Centrum Gladheid\nCenter X , Centrum X\nCenter X-Shift , Centrum X-Shift\nCenter Y , Centrum Y\nCenter Y-Shift , Centrum Y-Shift\nCentering (%) , Centrering (%)\nCentering / Scale , Centreren / Schaalverdeling\nCenters Color , Centra Kleur\nCenters Radius , Centra Straal\nCentral  Perspective Outdoor , Centraal Perspectief Buiten\nCentral Perspective Indoor , Centraal Perspectief Binnenshuis\nCentral Perspective Outdoor , Centraal Perspectief Buiten\nCentre , Centrum\nChalk It Up , Krijg nou wat.\nChannel #1 , Kanaal 1\nChannel #2 , Kanaal 2\nChannel #3 , Kanaal 3\nChannel Processing , Kanaalbewerking\nChannel(s) , Kanaal(s)\nChannels , Kanalen\nChannels to Layers , Kanalen naar Lagen\nCharcoal , Houtskool\nCheckered , Geruite\nCheckered Inverse , Geruite Omkering\nChemical 168 , Chemisch 168\nChessboard , Schaakbord\nChick , Kuiken\nChroma Noise , Chromageluid\nChromatic Aberrations , Chromatische afwijkingen\nChromaticity From , Chromaticiteit van\nChrome 01 , Chroom 01\nChrominances Only (ab) , Alleen chrominanten (ab)\nChrominances Only (CbCr) , Alleen chrominanten (CbCr)\nCinema , Bioscoop\nCinema 2 , Bioscoop 2\nCinema 3 , Bioscoop 3\nCinema 4 , Bioscoop 4\nCinema 5 , Bioscoop 5\nCinema Noir , Bioscoop Noir\nCinematic (8) , Bioscoop (8)\nCinematic for Flog , Bioscoop voor Flog\nCinematic Lady Bird , Filmische Damesvogel\nCinematic Mexico , Cinematografisch Mexico\nCinematic Travel (29) , Bioscoopreizen (29)\nCinematic-01 , Cinematisch-01\nCinematic-02 , Cinematisch-02\nCinematic-03 , Cinematisch-03\nCinematic-1 , Bioscoop-1\nCinematic-10 , Cinematisch-10\nCinematic-2 , Cinematisch-2\nCinematic-3 , Cinematisch-3\nCinematic-4 , Cinematisch-4\nCinematic-5 , Cinematisch-5\nCinematic-6 , Cinematisch-6\nCinematic-7 , Cinematisch-7\nCinematic-8 , Cinematisch-8\nCinematic-9 , Cinematisch-9\nCircle , Cirkel\nCircle (Inv.) , Cirkel (Inv.)\nCircle 1 , Cirkel 1\nCircle 2 , Cirkel 2\nCircle Abstraction , Cirkel Abstractie\nCircle Art , Cirkelkunst\nCircle to Square , Cirkel naar vierkant\nCircle Transform , Cirkeltransformatie\nCircles , Cirkels\nCircles (Outline) , Cirkels (Overzicht)\nCircles 1 , Cirkels 1\nCircles 2 , Cirkels 2\nCircular , Circulaire\nCity 7 , Stad 7\nClarity , Duidelijkheid\nClassic Chrome , Klassiek chroom\nClassic Teal and Orange , Klassiek Teal en Oranje\nClean , Schoonmaken\nClean Text , Schone tekst\nClear Control Points , Duidelijke controlepunten\nClear Teal Fade , Duidelijke Teal Fade\nCliff , Klif\nCloseup , Close-up\nClosing , Afsluiting\nClosing - Opening , Sluiten - Openen\nClosing - Original , Afsluiting - Origineel\nClouds , Wolken\nCLUT from After - Before Layers , CLUT van na - voor lagen\nCLUT Opacity , CLUT Opaciteit\nCM[Yellow]K , CM[Geel]K\nCMY[Key] , CMY[Sleutel]\nCMYK [cyan] , CMYK [cyaan]\nCMYK [Key] , CMYK [Sleutel]\nCMYK [Yellow] , CMYK [Geel]\nCMYK Tone , CMYK-toon\nCoarse , Grof\nCoarsest (faster) , Grofste (sneller)\nCoefficients , Coëfficiënten\nCoffee 44 , Koffie 44\nCoherence , Coherentie\nCold Clear Blue , Koud Helder Blauw\nCold Clear Blue 1 , Koud Helder Blauw 1\nCold Simplicity 2 , Koude Eenvoud 2\nColor , Kleur\nColor (rich) , Kleur (rijk)\nColor 1 , Kleur 1\nColor 1 (Up/Left Corner) , Kleur 1 (Boven/Linkshoek)\nColor 2 , Kleur 2\nColor 2 (Up/Right Corner) , Kleur 2 (Omhoog/Rechterhoek)\nColor 3 , Kleur 3\nColor 3 (Bottom/Left Corner) , Kleur 3 (Bodem/linkerhoek)\nColor 4 , Kleur 4\nColor 4 (Bottom/Right Corner) , Kleur 4 (Bodem/Rechthoek)\nColor A , Kleur A\nColor Abstraction Opacity , Kleurenabstractie Opaciteit\nColor Abstraction Paint , Kleur Abstractie Verf\nColor B , Kleur B\nColor Balance , Kleurensaldo\nColor Basis , Kleurenbasis\nColor Blending , Kleurmenging\nColor Blindness , Kleurenblindheid\nColor Blue-Yellow , Kleur Blauw-Geel\nColor Boost , Kleurversterking\nColor Burn , Kleurverbranding\nColor C , Kleur C\nColor Channel  Smoothing , Kleur kanaal gladstrijken\nColor Channels , Kleurenkanalen\nColor D , Kleur D\nColor Dispersion , Kleurverspreiding\nColor Doping , Kleurendoping\nColor E , Kleur E\nColor Effect Mode , De Wijze van het kleureffect\nColor F , Kleur F\nColor G , Kleur G\nColor Gamma , Kleurengamma\nColor Grading , Kleursortering\nColor Green-Magenta , Kleur Groen-Magenta\nColor Highlights , Kleurenhoogtepunten\nColor Image , Kleurenbeeld\nColor Intensity , Kleurintensiteit\nColor Mask , Kleurenmasker\nColor Mask [Interactive] , Kleurenmasker [Interactief]\nColor Median , Kleurmediaan\nColor Metric , Kleur Metrisch\nColor Midtones , Kleur Midtonen\nColor Mode , Kleurmodus\nColor Model , Kleurenmodel\nColor Negative , Kleurnegatief\nColor on White , Kleur op Wit\nColor Overall Effect , Kleuren Algemeen Effect\nColor Presets , Vooraf ingestelde kleuren\nColor Quantization , Kleurkwantisering\nColor Rendering , Kleurweergave\nColor Shading (%) , Kleurschakering (%)\nColor Shadows , Kleur Schaduwen\nColor Smoothness , Kleur gladheid\nColor Space , Kleurruimte\nColor Spots + Extrapolated Colors + Lineart , Kleurvlekken + geëxtrapoleerde kleuren + Lineart\nColor Spots + Lineart , Kleurvlekken + Lineart\nColor Strength , Kleursterkte\nColor Temperature , Kleurtemperatuur\nColor Tolerance , Kleurentolerantie\nColor Variation [Random -1] , Kleurvariatie [Willekeurig -1]\nColored Geometry , Gekleurde Geometrie\nColored Grain , Gekleurde korrel\nColored Lineart , Gekleurde Lineart\nColored on Black , Gekleurd op zwart\nColored on Transparent , Gekleurd op Transparant\nColored Outline , Gekleurde contouren\nColored Pencils , Gekleurde potloden\nColored Regions , Gekleurde regio's\nColorful , Kleurrijke\nColorful 0209 , Kleurrijk 0209\nColorful Blobs , Kleurrijke Blobs\nColoring , Kleuren\nColorize [Interactive] , Colorize [Interactief]\nColorize [Photographs] , Colorize [Foto's]\nColorize [with Colormap] , Colorize [met Colormap]\nColorize Lineart [Propagation] , Colorize Lineart [Voortplanting]\nColorize Mode , Kleurrijke modus\nColorized Image (1 Layer) , Gekleurd beeld (1 laag)\nColors , Kleuren\nColors A , Kleuren A\nColors B , Kleuren B\nColors Only , Alleen kleuren\nColors Only (1 Layer) , Alleen kleuren (1 laag)\nColors to Layers , Kleuren naar lagen\nColorspace , Kleurruimte\nColour , Kleur\nColour Channels , Kleurenkanalen\nColour Model , Kleurenmodel\nColour Smoothing , Kleur gladstrijken\nColour Space Mode , Kleurruimte modus\nColumn by Column , Kolom voor kolom\nComic Style , Stripstijl\nComix Colors , Comix Kleuren\nComponents , Onderdelen\nComposed Layers , Samengestelde lagen\nCompress Highlights , Comprimeer Hoogtepunten\nCompression Blur , Compressie Wazigheid\nCompression Filter , Compressiefilter\nComputation Mode , Computationele wijze\nCone , Kegel\nConformal Maps , Conformiteitskaarten\nConnectivity , Connectiviteit\nConnectors Centering , Verbindingselementen Centreren\nConnectors Variability , Aansluitingen Variabiliteit\nConstrain Image Size , Beperk het beeldformaat\nConstrain Values , Beperkingswaarden\nConstrained Sharpen , Beperkt verscherpen\nConstraint Radius , Beperkingsstraal\nContinuous Droste , Doorlopende Droste\nContour Coherence , Contourcoherentie\nContour Detection (%) , Contourdetectie (%)\nContour Normalization , Contour Normalisatie\nContour Precision , Contournauwkeurigheid\nContour Threshold , Contourdrempel\nContour Threshold (%) , Contourdrempel (%)\nContours , Contouren\nContours + Flocon/Snowflake , Contouren + Flocon/Snowflake\nContours Recursion , Contouren Recursie\nContrast Smoothness , Contrast Gladheid\nContrast Swiss Mask , Contrast Zwitsers Masker\nContrast with Highlights Protection , Contrast met Highlights Protection\nContrasty Afternoon , Contrasterende middag\nContrasty Green , Contrastijlgroen\nContributors , Medewerkers\nControl Point 1 , Controlepunt 1\nControl Point 2 , Controlepunt 2\nControl Point 3 , Controlepunt 3\nControl Point 4 , Controlepunt 4\nControl Point 5 , Controlepunt 5\nControl Point 6 , Controlepunt 6\nConvolve , Bekijk\nCool (256) , Koel (256)\nCool / Warm , Koel / Warm\nCopper , Koper\nCorner Brightness , Hoekhelderheid\nCorrelated Channels , Gecorreleerde kanalen\nCounter Clockwise , Tegen de klok in\nCourse 4 , Cursus 4\nCracks , Scheuren\nCrease , Vouw\nCreative Pack (33) , Creatief pakket (33)\nCrisp Romance , Knapperige Romantiek\nCrisp Warm , Knapperig warm\nCriterion , Criterium\nCrop , Gewas\nCrop (%) , Gewas (%)\nCross Process CP 130 , Kruisproces CP 130\nCross Process CP 14 , Kruisproces CP 14\nCross Process CP 15 , Kruisproces CP 15\nCross Process CP 16 , Kruisproces CP 16\nCross Process CP 18 , Kruisproces CP 18\nCross Process CP 3 , Kruisproces CP 3\nCross Process CP 4 , Kruisproces CP 4\nCross Process CP 6 , Kruisproces CP 6\nCross-Hatch Amount , Cross-Hatch bedrag\nCrossed , Gekruist\nCrosses 1 , Kruisen 1\nCrosses 2 , Kruisen 2\nCrosshair , Dwarsdraad\nCRT Sub-Pixels , CRT-sub-pixels\nCrystal , Kristal\nCrystal Background , Kristallen achtergrond\nCube , Kubus\nCube (256) , Kubus (256)\nCubic , Kubieke\nCubicle 99 , Kubus 99\nCubism , Kubisme\nCubism on Color Abstraction , Kubisme op Kleur Abstractie\nCup , Beker\nCupid , Cupido\nCurvature , Kromming\nCurvature Shadow , Kromming Schaduw\nCurve Amount , Curve Bedrag\nCurve Angle , Kromme hoek\nCurve Length , Kromme lengte\nCurved , Gebogen\nCurved Stroke , Gebogen slag\nCurves , Curven\nCurves Previously Defined , Curven Eerder gedefinieerde\nCustom , Aangepaste\nCustom Code [Global] , Aangepaste code [Globaal]\nCustom Code [Local] , Aangepaste code [Lokaal]\nCustom Correction Map , Aangepaste Correctie Kaart\nCustom Depth Correction , Aangepaste dieptecorrectie\nCustom Depth Maps Stream , Aangepaste Dieptekaarten Stroom\nCustom Dictionary , Aangepast Woordenboek\nCustom Filter Code , Aangepaste filtercode\nCustom Formula , Aangepaste formule\nCustom Kernel , Aangepaste Kernel\nCustom Layers , Aangepaste lagen\nCustom Layout , Aangepaste indeling\nCustom Style (Bottom Layer) , Aangepaste stijl (bodemlaag)\nCustom Style (Top Layer) , Aangepaste stijl (bovenste laag)\nCustom Transform , Aangepaste Transformatie\nCustomize CLUT , CLUT aanpassen\nCut , Knip\nCut & Normalize , Snijden & Normaliseren\nCut High , Snij hoog\nCut Low , Laag snijden\nCutout , Uitsnede\nCyan , Cyaan\nCyan Factor , Cyaan Factor\nCyan Smoothness , Cyaan Gladheid\nCycle Layers , Cycluslagen\nCycles , Fietsen\nCylinder , Cilinder\nD and O 1 , D en O 1\nDamping per Octave , Demping per octaaf\nDark  Motive , Donkere motief\nDark Blues in Sunlight , Donkerblauw in het zonlicht\nDark Boost , Donkere Boost\nDark Color , Donkere kleur\nDark Edges , Donkere randen\nDark Green 02 , Donkergroen 02\nDark Green 1 , Donkergroen 1\nDark Grey , Donkergrijs\nDark Length , Donkere lengte\nDark Motive , Donkere motief\nDark Pixels , Donkere Pixels\nDark Place 01 , Donkere plaats 01\nDark Screen , Donker scherm\nDark Sky , Donkere hemel\nDark Walls , Donkere muren\nDarken , Verduisteren\nDarker , Donkerder\nDarkness , Duisternis\nDarkness Level , Duisternisniveau\nDate 39 , Datum 39\nDay for Night , Dag voor de nacht\nDaylight Scene , Daglichtscène\nDebug Font Size , Debug lettergrootte\nDecompose , Ontbind\nDecompose Channels , Kanalen ontbinden\nDecoration , Decoratie\nDecreasing , Afnemende\nDeep , Diepgaand\nDeep Blue , Diep Blauw\nDeep Dark Warm , Diep donker warm\nDeep High Contrast , Diepgaand hoog contrast\nDeep Teal Fade , Diepe Teal Fade\nDeep Warm Fade , Diepwarme Fade\nDefault , Standaard\nDefects Contrast , Defecten Contrast\nDefects Density , Defecten Dichtheid\nDefects Size , Defecten Grootte\nDefects Smoothness , Defecten Gladheid\nDeform , Vervorm\nDelaunay: Portrait De Metzinger , Delaunay: Portret De Metzinger\nDelaunay: Windows Open Simultaneously , Delaunay: Vensters gelijktijdig openen\nDelete Layer Source , Lagenbron verwijderen\nDelicatessen , Delicatessenzaken\nDensity , Dichtheid\nDensity (%) , Dichtheid (%)\nDepth , Diepte\nDepth Fade In Frames , Diepte Fade In Frames\nDepth Fade Out Frames , Diepte Fade Out Frames\nDepth Field Control , Diepteveldregeling\nDepth Map , Dieptekaart\nDepth Map Construction , Dieptekaart bouw\nDepth Map Only , Alleen de dieptekaart\nDepth Map Reconstruction , Dieptekaart Reconstructie\nDepth Maps Only , Alleen dieptekaarten\nDepth-Of-Field Type , Diepte-veld type\nDesaturate , Desaturaat\nDesaturate (%) , Desaturaat (%)\nDesaturate Norm , Desaturaat Norm\nDescent Method , Afdalingsmethode\nDescreen , Scherm\nDesert Gold 37 , Woestijn Goud 37\nDestination (%) , Bestemming (%)\nDestination X-Tiles , Bestemming X-Tegels\nDestination Y-Tiles , Bestemming Y-Tegels\nDetail Level , Detailniveau\nDetail Reconstruction Detection , Detail Reconstructie Detectie\nDetail Reconstruction Smoothness , Detail Reconstructie Gladheid\nDetail Reconstruction Strength , Detail Reconstructie Sterkte\nDetail Reconstruction Style , Detail Reconstructie Stijl\nDetail Scale , Detailschaal\nDetail Strength , Detailsterkte\nDetails Amount , Details Bedrag\nDetails Equalizer , Details Egalisator\nDetails Scale , Details Schaal\nDetails Smoothness , Details Gladheid\nDetails Strength (%) , Details Sterkte (%)\nDetect Skin , Huid detecteren\nDeuteranomaly , Deuteranomalie\nDeuteranopia , Deuteranopie\nDeviation , Afwijking\nDiamond , Diamant\nDiamond (Inv.) , Diamant (Inv.)\nDiamonds , Diamanten\nDiamonds (Outline) , Diamanten (overzicht)\nDices , Dobbelstenen\nDices with Colored Numbers , Dobbelstenen met gekleurde cijfers\nDices with Colored Sides , Dobbelstenen met gekleurde kanten\nDifference , Verschil\nDifference Mixing , Verschil Mengen\nDifference of Gaussians , Verschil van Gaussers\nDifferent Axis , Verschillende assen\nDiffuse (%) , Diffuus (%)\nDiffuse Shadow , Diffuse Schaduw\nDiffusion , Verspreiding\nDiffusion Tensors , Verspreidingstensoren\nDiffusivity , Diffusiviteit\nDigits , Cijfers\nDilatation , Dilatatie\nDilation , Dilatatie\nDilation - Original , Dilatatie - Origineel\nDilation / Erosion , Dilatatie / Erosie\nDimension , Dimensie\nDimension [Diff] , Dimensie [Diff]\nDimension A , Dimensie A\nDimensions (%) , Afmetingen (%)\nDimensions Pixels , Afmetingen Pixels\nDipole: 1/(4*z^2-1) , Dipool: 1/(4*z^2-1)\nDirect , Directe\nDirection , Richting\nDirections 23 , Routebeschrijving 23\nDirty , Vuile\nDisable , Schakel  uit.\nDisabled , Uitgeschakeld\nDiscard Contour Guides , Contourgidsen weggooien\nDiscard Transparency , Transparantie weggooien\nDisplay , Toon\nDisplay Blob Controls , Blob-besturingselementen weergeven\nDisplay Color Axes , Weergavekleur Assen\nDisplay Contours , Toon contouren\nDisplay Coordinates , Coördinaten weergeven\nDisplay Coordinates on Preview Window , Coördinaten weergeven op voorbeeldvenster\nDisplay Debug Info on Preview , Debug-informatie weergeven op voorvertoning\nDistance , Afstand\nDistance (Fast) , Afstand (snel)\nDistance Transform , Afstandstransformatie\nDistort Lens , Vervormingslens\nDistortion Factor , Vervormingsfactor\nDistortion Surface Angle , Vervorming Hoek van het oppervlak\nDistortion Surface Position , Vervorming Positie van het oppervlak\nDisturbance Scale-By-Factor , Verstoring Schaal-voor-Factor\nDisturbance X , Storing X\nDisturbance Y , Verstoring Y\nDither Output , Dither Uitgang\nDivide , Verdeel\nDo Not Flatten Transparency , Niet afvlakken Transparantie\nDodge and Burn , Ontwijken en verbranden\nDodge Strength , Ontwijkende kracht\nDOF Analyzer , DOF-analyzer\nDog , Hond\nDon't Sort , Niet sorteren\nDoNothing , Niets doen\nDot Size , Puntgrootte\nDots , Stippen\nDownload External Data , Externe gegevens downloaden\nDragon Curve , Drakenkromme\nDrawing Mode , Tekenmodus\nDrawn Montage , Getekend Montage\nDream , Droom\nDream 1 , Droom 1\nDream 85 , Droom 85\nDream Smoothing , Droom Gladmaken\nDrop Shadow , Valschaduw\nDrop Water , Druppel water\nDuck , Eend\nDuplicate Bottom , Duplicaatbodem\nDuplicate Horizontal , Duplicaat Horizontaal\nDuplicate Left , Duplicaat links\nDuplicate Right , Duplicaatrecht\nDuplicate Top , Duplicaat Top\nDuplicate Vertical , Duplicaat Verticaal\nDuration , Duur\nDynamic Range Increase , Dynamisch bereik vergroten\nEagle , Adelaar\nEarth , Aarde\nEarth Tone Boost , Aarde Tone Boost\nEasy Skin Retouch , Gemakkelijke Huidretouche\nEdge , Rand\nEdge Antialiasing , Rand Anti-aliasing\nEdge Attenuation , Randverzwakking\nEdge Behavior X , Randgedrag X\nEdge Behavior Y , Randgedrag Y\nEdge Detect Includes Chroma , Randdetectie omvat Chroma\nEdge Exponent , Randexponent\nEdge Fidelity , Randtrouw\nEdge Influence , Randinvloed\nEdge Mask , Randmasker\nEdge Sensitivity , Randgevoeligheid\nEdge Shade , Randschaduw\nEdge Simplicity , Rand Eenvoud\nEdge Smoothness , Gladheid van de rand\nEdge Thickness , Randdikte\nEdge Threshold , Randdrempel\nEdge Threshold (%) , Randdrempel (%)\nEdge-Oriented , Randgericht\nEdges , Randen\nEdges (%) , Randen (%)\nEdges [Animated] , Randen [Geanimeerd]\nEdges Offsets , Randcompensatie\nEdges on Fire , Randen in brand\nEdges-0.5 (beware: Memory-Consuming!) , Randen-0.5 (let op: Geheugen-gebruik!)\nEdges-1 (beware: Memory-Consuming!) , Randen-1 (let op: Geheugen-gebruik!)\nEdges-2 (beware: Memory-Consuming!) , Randen-2 (let op: Geheugen-gebruik!)\nEffect Strength , Effect Sterkte\nEffect X-Axis Scaling , Effect X-Axis Schaalverdeling\nEffect Y-Axis Scaling , Effect Y-Axis Schaalverdeling\nEight Layers , Acht lagen\nEight Threads , Acht Draden\nElegance 38 , Elegantie 38\nElephant , Olifant\nElevation , Verhoging\nElevation (%) , Hoogte (%)\nEllipse Painting , Ellipsschilderen\nEllipse Ratio , Ellipsverhouding\nEllipsionism , Ellipsionisme\nEllipsionism Opacity , Ellipsionisme Opaciteit\nEllipsoid , Ellipsoïde\nEnable Antialiasing , Antialiasing mogelijk maken\nEnable Interpolated Motion , Geïnterpoleerde beweging mogelijk maken\nEnable Morphology , Morfologie inschakelen\nEnable Paintstroke , Schakel de verfstreek in\nEnable Segmentation , Segmentatie mogelijk maken\nEnchanted , Betoverd\nEnd Color , Eindkleur\nEnd Frame Number , Einde Kadernummer\nEnd of Mid-Tones , Einde van de middentonen\nEnd Point Connectivity , Eindpunt Connectiviteit\nEnd Point Rate (%) , Eindpuntpercentage (%)\nEnding Angle , Eindhoek\nEnding Color , Beëindiging van de kleur\nEnding Feathering , Einde van de bevedering\nEnding Point (%) , Eindpunt (%)\nEnding Scale (%) , Eindschaal (%)\nEnding Value , Eindwaarde\nEnding X-Centering , Beëindigen van X-Centering\nEnding Y-Centering , Beëindigen van Y-Centering\nEngrave , Graveer\nEnhance Detail , Verbeteren van de details\nEnhance Details , Verbeter de details\nEqualization , Egalisatie\nEqualization (%) , Egalisatie (%)\nEqualize , Egaliseer\nEqualize and Normalize , Egaliseer en normaliseer\nEqualize at Each Step , Egaliseer bij elke stap\nEqualize HSI-HSL-HSV , Egaliseer HSI-HSL-HSV\nEqualize HSV , Gelijkstellen van HSV\nEqualize Light , Egaliseer het licht\nEqualize Local Histograms , Lokale Histogrammen egaliseren\nEqualize Shadow , Schaduw egaliseren\nEquation Plot [Parametric] , Vergelijkingsveld [Parametrisch]\nEquation Plot [Y=f(X)] , Vergelijkingspunt [Y=f(X)]\nEquirectangular to Nadir-Zenith , Equirectangular naar Nadir-Zenith\nErosion , Erosie\nErosion / Dilation , Erosie / Dilatatie\nEtch Tones , Ets Tonen\nEterna for Flog , Eterna voor Flog\nEuclidean , Euclidisch\nEuclidean - Polar , Euclidisch - Polair\nExclusion , Uitsluiting\nExpand , Uitbreiden\nExpand Background Reconstruction , Uitbreiden Achtergrond Reconstructie\nExpand Shadows , Schaduwen uitbreiden\nExpand Size , Grootte uitbreiden\nExpanding Mirrors , Uitbreiding van de spiegels\nExpired (fade) , Verlopen (vervagen)\nExpired (polaroid) , Verlopen (polaroid)\nExpired 69 , Verlopen 69\nExponent (Imaginary) , Exponent (denkbeeldig)\nExponent (Real) , Exponent (Echt)\nExponential , Exponentieel\nExport RGB-565 File , RGB-565-bestand exporteren\nExposure , Blootstelling\nExpression , Uitdrukking\nExtend 1px , Verlengen 1px\nExternal Transparency , Externe transparantie\nExtra  Smooth , Extra Gladjes\nExtract Foreground [Interactive] , Extract Voorgrond [Interactief]\nExtract Objects , Voorwerpen uitpakken\nExtrapolate Color Spots on Transparent Top Layer , Extrapoleer Kleurvlekken op Transparante Bovenlaag\nExtrapolate Colors As , Extrapoleer Kleuren als\nExtrapolated Colors + Lineart , Geëxtrapoleerde kleuren + Lineart\nExtreme , Extreem\nFade , Vervagen\nFade End , Verdwijnen\nFade Layers , Fade Lagen\nFade to Green , Verdwijnen naar groen\nFaded , Vervaagd\nFaded (alt) , Vervaagd (alt)\nFaded (analog) , Vervaagd (analoog)\nFaded (extreme) , Vervaagd (extreem)\nFaded (vivid) , Vervaagd (levendig)\nFaded 47 , Vervaagd 47\nFaded Green , Vervaagd groen\nFaded Look , Vervaagde look\nFaded Print , Vervaagde afdrukken\nFaded Retro 01 , Vervaagd Retro 01\nFaded Retro 02 , Vervaagd Retro 02\nFading , Vervaagt\nFading Shape , Vervaagde vorm\nFall Colors , Valkleuren\nFar Point Deviation , Verre punt afwijking\nFast , Snelle\nFast &#40;Approx.&#41; , Snel (Ca. )\nFast (Low Precision) Preview , Snelle (Lage Precisie) Preview\nFast Approximation , Snelle benadering\nFast Blend , Snelle mengeling\nFast Blend Preview , Snelle Mengsel Voorbeeld\nFast Recovery , Snelle recuperatie\nFast Resize , Snel aanpassen\nFaux Infrared , Faux Infrarood\nFeathering , Vederzetting\nFeature Analyzer Smoothness , Eigenschap Analyzer Gladheid\nFelt Pen , Viltstift\nFFT Preview , FFT-voorvertoning\nFibers , Vezels\nFibers Amplitude , Vezels Amplitude\nFibers Smoothness , Vezels Gladheid\nFibrousness , Vezeligheid\nFidelity Smoothness (Coarsest) , Trouw Gladheid (grofste)\nFidelity Smoothness (Finest) , Trouw Gladheid (Fijnste)\nFidelity to Target (Coarsest) , Trouw aan het doelwit (grofste)\nFidelity to Target (Finest) , Trouw aan het doel (mooiste)\nFilename , Bestandsnaam\nFill Holes , Gaten vullen\nFill Holes % , Gaten vullen %\nFill Transparent Holes , Vul Transparante Gaten\nFilled , Gevuld\nFilled Circles , Gevulde cirkels\nFilling , Het vullen van\nFilm Print 01 , Filmdruk 01\nFilm Print 02 , Filmdruk 02\nFilmic , Filmische\nFilter Design , Filterontwerp\nFinal Image , Eindbeeld\nFine , Prima\nFine 2 , Fijn 2\nFine Details Smoothness , Fijne details Gladheid\nFine Details Threshold , Fijne details Drempel\nFine Noise , Fijn geluid\nFine Scale , Fijne Schaal\nFinest (slower) , Fijnste (langzamer)\nFinger Paint , Vingerverf\nFinger Size , Vingergrootte\nFire Effect , Vuureffect\nFireworks , Vuurwerk\nFirst , Eerste\nFirst Color , Eerste kleur\nFirst Frame , Eerste frame\nFirst Offset , Eerste compensatie\nFirst Radius , Eerste straal\nFirst Size , Eerste Maat\nFish-Eye , Visoog\nFish-Eye Effect , Vis-oog effect\nFitting Function , Passende functie\nFive Layers , Vijf lagen\nFlag , Vlag\nFlag (256) , Vlag (256)\nFlat , Vlakke\nFlat 30 , Vlakke 30\nFlat Color , Vlakke kleur\nFlat Regions Removal , Platte gebieden Verwijdering\nFlatness , Vlakheid\nFlip & Rotate Blocs , Blokken omdraaien\nFlip Left / Right , Flip links / rechts\nFlip Left/Right , Links/rechtsomklappen\nFlip The Pattern , Flip het patroon\nFlip Tolerance , Flip-tolerantie\nFlower , Bloem\nFoggy Night , Mistige nacht\nFolder Name , Mapnaam\nFont Colors , Lettertype Kleuren\nFont Height (px) , Letterhoogte (px)\nForce Gray , Grijze kracht\nForce Re-Download from Scratch , Force Re-Download van Scratch\nForce Tiles to Have Same Size , Dwingen Tegels om dezelfde grootte te hebben\nForce Transparency , Transparantie dwingen\nForeground Color , Voorgrondkleur\nForm , Formulier\nFormula , Formule\nForward , Doorsturen\nForward  Horizontal , Horizontaal vooruit\nForward Horizontal , Horizontaal vooruit\nForward Vertical , Voorwaarts Verticaal\nFour Layers , Vier lagen\nFour Threads , Vier draden\nFourier Analysis , Fourieranalyse\nFourier Transform , Fourier Transformatie\nFourier Watermark , Fourier Watermerk\nFractal Noise , Fractaal geluid\nFractal Points , Fractische punten\nFractal Set , Fractaire set\nFractalize , Fractaliseer\nFractured Clouds , Gebroken wolken\nFragment Blur , Fragment vervagen\nFrame [Blur] , Frame [Wazig]\nFrame [Cube] , Frame [Kubus]\nFrame [Mirror] , Frame [Spiegel]\nFrame [Painting] , Frame [Schilderij]\nFrame [Pattern] , Frame [Patroon]\nFrame [Regular] , Frame [Regelmatig]\nFrame [Round] , Frame [Rond]\nFrame [Smooth] , Frame [Glad]\nFrame as a New Layer , Frame als nieuwe laag\nFrame Color , Kleur van het frame\nFrame Files Format , Frame Bestanden Formaat\nFrame Format , Frameformaat\nFrame Size , Framegrootte\nFrame Skip , Frame Overslaan\nFrame Type , Frametype\nFrame Width , Frame Breedte\nFrames Offset , Frames Compensatie\nFreaky B&W , Griezelig B&W\nFreaky Details , Griezelige details\nFreeze , Bevriezen\nFrench Comedy , Franse komedie\nFrequency , Frequentie\nFrequency (%) , Frequentie (%)\nFrequency Analyzer , Frequentie-analyzer\nFrequency Range , Frequentiebereik\nFreqy Pattern , Freqy-patroon\nFriends Hall of Fame , Vrienden Hall of Fame\nFrom Input , Van Invoer\nFrom Reference Color , Van Referentie Kleur\nFrosted , Bevroren\nFrosted Beach Picnic , Frosted Strand Picknick\nFruits , Vruchten\nFuji FP-100c -- , Fuji FP-100c -\nFuji FP-100c Cool -- , Fuji FP-100c Cool...\nFuji FP-100c Negative , Fuji FP-100c Negatief\nFuji FP-100c Negative + , Fuji FP-100c Negatief +\nFuji FP-100c Negative ++ , Fuji FP-100c Negatief ++\nFuji FP-100c Negative +++ , Fuji FP-100c Negatief +++\nFuji FP-100c Negative ++a , Fuji FP-100c Negatief ++a\nFuji FP-100c Negative - , Fuji FP-100c Negatief -\nFuji FP-100c Negative -- , Fuji FP-100c Negatief -\nFuji FP-3000b -- , Fuji FP-3000b -\nFuji FP-3000b Negative , Fuji FP-3000b Negatief\nFuji FP-3000b Negative + , Fuji FP-3000b Negatief +\nFuji FP-3000b Negative ++ , Fuji FP-3000b Negatief ++\nFuji FP-3000b Negative +++ , Fuji FP-3000b Negatief +++\nFuji FP-3000b Negative - , Fuji FP-3000b Negatief -\nFuji FP-3000b Negative -- , Fuji FP-3000b Negatief -\nFuji FP-3000b Negative Early , Fuji FP-3000b Negatief Vroeg\nFull , Volledig\nFull (Allows Multi-Layers) , Vol (maakt Multi-Layers mogelijk)\nFull (Slower) , Vol (langzamer)\nFull Bottom/top , Volledige bodem/top\nFull Colors , Volle kleuren\nFull HD Frame Packing , Full HD Frame Verpakking\nFull Layer Stack -Slow!- , Volle laagstapel -Slow! -\nFull Side by Side Keep Uncompressed , Volledig zij aan zij houden Ongecomprimeerd\nFull Side by Side Keep Width , Volledige zij-aan-zij-breedte houden\nFull Side by Uncompressed , Volledige Zijde door Ongecomprimeerd\nFusion 88 , Fusie 88\nFuturistic Bleak 1 , Futuristisch Guur 1\nFuturistic Bleak 2 , Futuristisch Guur 2\nFuturistic Bleak 3 , Futuristisch Guur 3\nFuturistic Bleak 4 , Futuristisch Guur 4\nG/M Smoothness , G/M Gladheid\nGain , Verkrijg\nGames & Demos , Spelletjes & demo's\nGamma Balance , Gammabalans\nGamma Compensation , Gamma-compensatie\nGamma Equalizer , Gamma-equalizer\nGaussian , Gaussische\nGear , Versnelling\nGenerate Random-Colors Layer , Genereer willekeurige kleurenlaag\nGeneric Fuji Astia 100 , Generiek Fuji Astia 100\nGeneric Fuji Provia 100 , Generieke Fuji Provia 100\nGeneric Fuji Velvia 100 , Generiek Fuji Velvia 100\nGeneric Kodachrome 64 , Generieke Kodachrome 64\nGeneric Kodak Ektachrome 100 VS , Generieke Kodak Ektachrome 100 VS\nGeneric Skin Structure , Algemene huidstructuur\nGentle Mode (overrides Minimum Brightness and Minimun Red:Blue Ratio) , Zachte modus (overschrijft Minimale helderheid en Minimun-rood: Blauwe verhouding)\nGeometry , Geometrie\nGlamour Glow , Glamour Gloed\nGlobal , Wereldwijd\nGlobal Mapping , Globale kartering\nGlow , Gloed\nGmicky & Wilber (by Mahvin) , Gmicky & Wilber (door Mahvin)\nGmicky (by Deevad) , Gmicky (door Deevad)\nGmicky (by Mahvin) , Gmicky (door Mahvin)\nGoing for a Walk , Gaan wandelen\nGold , Goud\nGolden , Gouden\nGolden (bright) , Goud (helder)\nGolden (fade) , Goud (vervagen)\nGolden (mono) , Goud (mono)\nGolden (vibrant) , Goud (levendig)\nGolden Gate , Gouden Poort\nGolden Night Softner 43 , Gouden Nacht Softner 43\nGolden Sony 37 , Gouden Sony 37\nGoldFX - Bright Spring Breeze , GoldFX - Heldere lentebries\nGoldFX - Bright Summer Heat , GoldFX - Heldere zomerhitte\nGoldFX - Hot Summer Heat , GoldFX - Hete Zomerhitte\nGoldFX - Perfect Sunset 01min , GoldFX - Perfecte zonsondergang 01min\nGoldFX - Perfect Sunset 05min , GoldFX - Perfecte zonsondergang 05min\nGoldFX - Perfect Sunset 10min , GoldFX - Perfecte zonsondergang 10min\nGoldFX - Spring Breeze , GoldFX - Voorjaarswind\nGoldFX - Summer Heat , GoldFX - Zomerse hitte\nGood Morning , Goedemorgen\nGradienNormLinearity , GradienNormLineariteit\nGradient , Gradiënt\nGradient [Corners] , Gradiënt [Hoeken]\nGradient [Custom Shape] , Gradiënt [Aangepaste vorm]\nGradient [from Line] , Gradiënt [van lijn]\nGradient [Linear] , Gradiënt [Lineair]\nGradient [Radial] , Gradiënt [Radiaal]\nGradient [Random] , Gradiënt [Willekeurig]\nGradient Norm , Gradiënt Norm\nGradient Preset , Vooraf ingestelde hellingshoek\nGradient RGB , Gradiënt RGB\nGradient Smoothness , Gradiënt Gladheid\nGradient Values , Gradiëntwaarden\nGrain , Korrel\nGrain (Highlights) , Graan (Highlights)\nGrain (Midtones) , Graan (Midtones)\nGrain (Shadows) , Graan (Schaduwen)\nGrain Extract , Graanextract\nGrain Merge , Graan Samenvoegen\nGrain Only , Alleen graan\nGrain Scale , Graanschaal\nGrain Tone Fading , Korreltoonvervaging\nGrain Type , Type korrel\nGrainextract , Graanextract\nGrainmerge , Graanvernieuwing\nGranularity , Granulariteit\nGraphic Boost , Grafische Boost\nGraphic Colours , Grafische kleuren\nGraphic Novel , Grafische roman\nGraphix Colors , Graphix Kleuren\nGrayscale , Grijstinten\nGreece , Griekenland\nGreen , Groen\nGreen 15 , Groen 15\nGreen 2025 , Groen 2025\nGreen Action , Groene actie\nGreen Afternoon , Groene middag\nGreen Blues , Groenblauw\nGreen Conflict , Groen conflict\nGreen Day 01 , Groene dag 01\nGreen Day 02 , Groene dag 02\nGreen Factor , Groene factor\nGreen G09 , Groen G09\nGreen Indoor , Groen binnenshuis\nGreen Level , Groen niveau\nGreen Light , Groen licht\nGreen Mono , Groene Mono\nGreen Rotations , Groene rotaties\nGreen Shift , Groene Verschuiving\nGreen Smoothness , Groene Gladheid\nGreen Wavelength , Groene Golflengte\nGreen Yellow , Groen Geel\nGreen-Blue , Groenblauw\nGreen-Red , Groen-rood\nGreenish Contrasty , Groenachtige contradictie\nGreenish Fade , Groenige Fade\nGreenish Fade 1 , Groene Fade 1\nGrey , Grijs\nGreyscale , Grijswaarden\nGrid , Rooster\nGrid [Cartesian] , Rooster [Cartesiaans]\nGrid [Hexagonal] , Raster [Hexagonaal]\nGrid [Triangular] , Rooster [Driehoekig]\nGrid Divisions , Rasterafdelingen\nGrid Smoothing , Rasterafvlakking\nGrid Width , Rasterbreedte\nGrow Alpha , Groeien Alpha\nGuide As , Gids Als\nGuide Mix , Gidsmix\nGuide Recovery , Gids voor herstel\nGum Leaf , Kauwgomblad\nGyroid , Gyroïde\nHackmanite , Hackmaniet\nHair Locks , Haarsloten\nHaldCLUT Filename , HaldCLUT Filenaam\nHalf Bottom/top , Halve bodem/top\nHalf Side  by Side , Halve zijde door zijde\nHalftone , Halftoon\nHalftone Shapes , Halftoonvormen\nHanoi Tower , Hanoi-toren\nHappyness 133 , Geluk 133\nHard Dark , Hard donker\nHard Light , Hard licht\nHard Mix , Harde Mix\nHard Sketch , Harde Schets\nHard Teal Orange , Hard Teal Oranje\nHarsh Day , Zware dag\nHarsh Sunset , Harde zonsondergang\nHDR Effect (Tone Map) , HDR-effect (Toonkaart)\nHeart , Hart\nHearts , Harten\nHearts (Outline) , Harten (Overzicht)\nHedcut (Experimental) , Hedcut (Experimenteel)\nHeight , Hoogte\nHeight (%) , Hoogte (%)\nHerderite , Herderiet\nHexagonal , Zeshoekig\nHiddenite , Verborgenheid\nHigh , Hoog\nHigh (Slower) , Hoog (langzamer)\nHigh Frequency , Hoge frequentie\nHigh Frequency Layer , Hoogfrequente laag\nHigh Key , Hoge sleutel\nHigh Pass , Hoge Pas\nHigh Quality , Hoge kwaliteit\nHigh Scale , Hoge Schaal\nHigh Speed , Hoge snelheid\nHigh Value , Hoge waarde\nHigher Mask Threshold (%) , Hogere masker drempel (%)\nHighlight , Markeer\nHighlight (%) , Markeer (%)\nHighlight Bloom , Markeer Bloom\nHighlights Abstraction , Hoogtepunten Abstractie\nHighlights Brightness , Highlights Helderheid\nHighlights Color Intensity , Highlights Kleurintensiteit\nHighlights Hue , Highlights Tint\nHighlights Lightness , Highlights Lichtheid\nHighlights Protection , Hoogtepunten Bescherming\nHighlights Selection , Hoogtepunten Selectie\nHighlights Threshold , Hoogtepunten Drempel\nHighlights Zone , Hoogtepunten Zone\nHistogram Analysis , Histogramanalyse\nHistogram Transfer , Histogram overdracht\nHokusai: The Great Wave , Hokusai: de grote golf\nHomogeneity , Homogeniteit\nHong Kong , Hongkong\nHope Poster , Hoop Affiche\nHorisontal Length , Horizontale lengte\nHorizon Leveling (deg) , Horizontale nivellering (deg)\nHorizontal , Horizontale\nHorizontal (%) , Horizontaal (%)\nHorizontal Amount , Horizontaal bedrag\nHorizontal Array , Horizontale Serie\nHorizontal Blur , Horizontale vervaging\nHorizontal Length , Horizontale lengte\nHorizontal Size (%) , Horizontale grootte (%)\nHorizontal Stripes , Horizontale strepen\nHorizontal Tiles , Horizontale tegels\nHorizontal Warp Only , Alleen horizontale kromming\nHorror Blue , Horrorblauw\nHot , Hete\nHot (256) , Warm (256)\nHough Transform , Hough Transformeren\nHouse , Huis\nHouseholder , Huishouder\nHSI [all] , HSI [alle]\nHSI [Intensity] , HSI [Intensiteit]\nHSL [all] , HSL [alle]\nHSL [Lightness] , HSL [Lichtheid]\nHSL Adjustment , HSL-aanpassing\nHSV [all] , HSV [alle]\nHSV [Saturation] , HSV [Verzadiging]\nHSV [Value] , HSV [Waarde]\nHSV Select , HSV kiezen\nHue , Tint\nHue (%) , Tint (%)\nHue Band , Tint band\nHue Factor , Tintfactor\nHue Lighten-Darken , Tint Verbleken-Donkeren\nHue Max (%) , Tint maximaal (%)\nHue Min (%) , Tint Min (%)\nHue Offset , Tint compensatie\nHue Range , Tintwaaier\nHue Shift , Tint verschuiving\nHue Smoothness , Tint Gladheid\nHuman  2 , Menselijk 2\nHuman 1 , Menselijk 1\nHuman 2 , Menselijk 2\nHybrid Median - Medium Speed Softest Output , Hybride Mediaan - Gemiddelde snelheid Softeste Uitgang\nHypnosis , Hypnose\nIdentity , Identiteit\nIgnore , Negeer\nIgnore Current Aspect , Negeer het huidige aspect\nIlluminate 2D Shape , Verlicht 2D-vorm\nIllumination , Verlichting\nIllustration Look , Illustratie Kijk\nImage , Afbeelding\nImage + Background , Afbeelding + Achtergrond\nImage + Colors (2 Layers) , Afbeelding + Kleuren (2 lagen)\nImage + Colors (Multi-Layers) , Afbeelding + Kleuren (Multi-Layers)\nImage Contour Dimensions , Afmetingen van de beeldcontouren\nImage Smoothness , Afbeelding Gladheid\nImage to Grab Color from (.Png) , Afbeelding om kleur te krijgen van (.Png)\nImage Weight , Beeldgewicht\nImport Data , Gegevens importeren\nImport RGB-565 File , RGB-565-bestand importeren\nImpulses 5x5 , Impulsen 5x5\nImpulses 7x7 , Impulsen 7x7\nImpulses 9x9 , Impulsen 9x9\nInclude Opacity Layer , Inclusief Opacity Layer\nIncreasing , Toename van\nIndoor Blue , Binnenshuis Blauw\nIndustrial 33 , Industrieel 33\nInfluence of Color Samples (%) , Invloed van kleurmonsters (%)\nInformation , Informatie\nInit. Resolution , Init. Resolutie\nInit. With High Gradients Only , Init. Met alleen hoge gradiënten\nInitial Density , Oorspronkelijke Dichtheid\nInitialization , Initialisatie\nInk Wash , Inkt Wassen\nInner , Innerlijke\nInner Fading , Innerlijke verbleking\nInner Length , Binnenlengte\nInner Radius , Binnenstraal\nInner Radius (%) , Binnenstraal (%)\nInner Shade , Binnenste Schaduw\nInpaint [Holes] , Schilderij [Gaten]\nInpaint [Morphological] , Inpaint [Morfologisch]\nInpaint [Multi-Scale] , Schilderij [Multi-Schaal]\nInpaint [Transport-Diffusion] , Inpaint [Transport-Diffusie]\nInput , Invoer\nInput Folder , Invoermap\nInput Frame Files Name , Naam invoerkaderbestanden\nInput Guide Color , Kleur van de invoergids\nInput Layers , Invoerlagen\nInput Transparency , Input Transparantie\nInput Type , Type invoer\nInsert New CLUT Layer , Nieuwe CLUT-laag invoegen\nInside , Binnenin\nInside Color , Kleur van de binnenkant\nInstant [Consumer] (54) , Onmiddellijk [consument] (54)\nInstant [Pro] (68) , Onmiddellijk [Pro] (68)\nIntensity , Intensiteit\nIntensity of Purple Fringe , Intensiteit van paarse franje\nInter-Frames , Interframes\nInterlace Horizontal , Horizontale tussenruimte\nInterlace Vertical , Verticaal in elkaar schuiven\nInterpolate , Interpoleer\nInterpolation , Interpolatie\nInterpolation Type , Interpolatie Type\nInverse , Omgekeerd\nInverse Depth Map , Inverse Diepte Kaart\nInverse Radius , Omgekeerde straal\nInverse Transform , Omgekeerde transformatie\nInversions , Inversies\nInvert Background / Foreground , Achtergrond omkeren / Voorgrond\nInvert Blur , Omkeren Wazigheid\nInvert Canvas Colors , Omkeren van Canvas Kleuren\nInvert Colors , Kleuren omkeren\nInvert Image Colors , Beeldomkering Kleuren\nInvert Luminance , Omkering van de helderheid\nInvert Mask , Omkeermasker\nInward , Binnenwaarts\nIsophotes , Isofoten\nIsotropic , Isotroop\nIteration , Iteratie\nIterations , Iteraties\nJapanese Maple Leaf , Japans esdoornblad\nJet (256) , Straal (256)\nJPEG Artefacts , JPEG-artefacten\nJPEG Smooth , JPEG Glad\nJust Peachy , Gewoon Peachy\nKaleidoscope [Blended] , Caleidoscoop [Gemengd]\nKaleidoscope [Polar] , Caleidoscoop [Polar]\nKaleidoscope [Symmetry] , Caleidoscoop [Symmetrie]\nKandinsky: Squares with Concentric Circles , Kandinsky: Pleinen met concentrische cirkels\nKandinsky: Yellow-Red-Blue , Kandinsky: Geel-rood-blauw\nKeep , Houd\nKeep Aspect Ratio , Houd de hoogte-breedteverhouding\nKeep Base Layer as Input Background , Houd de basislaag als invoerachtergrond\nKeep Borders Square , Houd Grenzen vierkant\nKeep Color Channels , Houd de kleurkanalen\nKeep Colors , Houd Kleuren\nKeep Detail , Detail bewaren\nKeep Detail Layer Separate , Houd de detaillaag apart\nKeep Iterations as Different Layers , Houd Iteraties als Verschillende Lagen\nKeep Layers Separate , Lagen apart houden\nKeep Original Image Size , Bewaar het originele beeldformaat\nKeep Original Layer , Bewaar de originele laag\nKeep Tiles Square , Houd Tegels vierkant\nKeep Transparency in Output , Transparantie in de uitvoer behouden\nKernel Multiplier , Kernelvermenigvuldiger\nKernel Type , Kerneltype\nKey Factor , Belangrijke factor\nKey Frame Rate , Belangrijkste frametarief\nKey Shift , Sleutelverschuiving\nKey Smoothness , Sleutel Smoothness\nKeypoint Influence (%) , Kernpunt Invloed (%)\nKlee: Death and Fire , Klee: Dood en Vuur\nKlee: In the Style of Kairouan , Klee: In de stijl van Kairouan\nKlee: Oriental Pleasure Garden Anagoria , Klee: Oosterse Pleziertuin Anagoria\nKlee: Polyphony 2 , Klee: Polyfonie 2\nKlee: Red Waistcoat , Klee: Rode Taillejas\nKlimt: The Kiss , Klimt: De kus\nKodak Elite Chrome 400 , Kodak Elite Chroom 400\nKuwahara , Koewehara\nKuwahara on Painting , Koewehara op Schilderij\nLab (Chroma Only) , Lab (alleen Chroma)\nLab (Distinct) , Laboratorium (Distinct)\nLab (Luma Only) , Lab (alleen Luma)\nLab (Mixed) , Lab (Gemengd)\nLab [all] , Lab [alle]\nLab [Lightness] , Lab [Lichtheid]\nLAB-Lightness , LAB-Lichtheid\nLandscape , Landschap\nLandscape-1 , Landschap-1\nLandscape-10 , Landschap-10\nLandscape-2 , Landschap-2\nLandscape-3 , Landschap-3\nLandscape-4 , Landschap-4\nLandscape-5 , Landschap-5\nLandscape-6 , Landschap-6\nLandscape-7 , Landschap-7\nLandscape-8 , Landschap-8\nLandscape-9 , Landschap-9\nLarge , Grote\nLarge Noise , Groot lawaai\nLast , Laatste\nLast Frame , Laatste frame\nLate Afternoon Wanderlust , Laat in de middag Wanderlust\nLate Sunset , Late zonsondergang\nLava Lamp , Lavalamp\nLayer , Laag\nLayer Processing , Laagverwerking\nLayers to Tiles , Lagen naar Tegels\nLch [all] , Lch [alle]\nLch [ch-Chrominances] , Lch [chrominances]\nLeaf , Blad\nLeaf Color , Bladkleur\nLeaf Opacity (%) , Bladopaciteit (%)\nLeak Type , Lektype\nLeft , Links\nLeft  Foreground , Links Voorgrond\nLeft / Right Blur (%) , Links / rechts Wazig (%)\nLeft and Right Background , Links en rechts Achtergrond\nLeft and Right Foreground , Links en rechts Voorgrond\nLeft and Right Image Streams , Links en rechts beeldstromen\nLeft Diagonal Foreground , Links Diagonale voorgrond\nLeft Foreground , Links Voorgrond\nLeft Position , Positie links\nLeft Side Orientation , Linker zijwaartse oriëntatie\nLeft Slope , Linker Helling\nLeft Stream Only , Alleen linkse stroom\nLength , Lengte\nLenticular Density LPI , Lenticulaire dichtheid LPI\nLenticular Orientation , Lenticulaire oriëntatie\nLenticular Print , Lenticulair afdrukken\nLevel , Niveau\nLevel Frequency , Niveau Frequentie\nLevels , Niveaus\nLife Giving Tree , Leven gevende boom\nLifestyle & Commercial-1 , Levensstijl & Commerciële-1\nLifestyle & Commercial-10 , Levensstijl & Commerciële-10\nLifestyle & Commercial-2 , Levensstijl & Commerciële-2\nLifestyle & Commercial-3 , Levensstijl & Commerciële-3\nLifestyle & Commercial-4 , Levensstijl & Commerciële-4\nLifestyle & Commercial-5 , Levensstijl & Commerciële-5\nLifestyle & Commercial-6 , Levensstijl & Commerciële-6\nLifestyle & Commercial-7 , Levensstijl & Commerciële-7\nLifestyle & Commercial-8 , Levensstijl & Commerciële-8\nLight , Licht\nLight (blown) , Licht (geblazen)\nLight Angle , Lichthoek\nLight Color , Lichte kleur\nLight Direction , Licht Richting\nLight Effect , Licht Effect\nLight Glow , Lichtgloed\nLight Grey , Lichtgrijs\nLight Leaks , Lichte lekken\nLight Motive , Licht motief\nLight Patch , Licht Flard\nLight Rays , Lichtstralen\nLight Smoothness , Lichte gladheid\nLight Strength , Lichtsterkte\nLight Type , Licht Type\nLight-Y , Licht-Y\nLighten , Verlicht\nLighten Edges , Randen lichter maken\nLighter , Lichter\nLighting , Verlichting\nLighting Angle , Verlichtingshoek\nLightness , Lichtheid\nLightness (%) , Lichtheid (%)\nLightness Factor , Lichtheidsfactor\nLightness Level , Lichtheidsgraad\nLightness Max (%) , Lichtheid Max (%)\nLightness Min (%) , Lichtheid Min (%)\nLightness Shift , Lichtheidsverschuiving\nLightness Smoothness , Lichtheid Gladheid\nLightning , Bliksem\nLighty Smooth , Licht glad\nLimit Hue Range , Limiet Tintwaaier\nLine , Lijn\nLine Opacity , Lijndoorzichtigheid\nLine Precision , Lijnprecisie\nLinear , Lineair\nLinear Burn , Lineaire verbranding\nLinear Light , Lineair licht\nLinear RGB , Lineair RGB\nLinear RGB [All] , Lineair RGB [Alle]\nLinear RGB [Blue] , Lineair RGB [Blauw]\nLinear RGB [Green] , Lineair RGB [Groen]\nLinear RGB [Red] , Lineair RGB [Rood]\nLinearburn , Lineaire verbranding\nLinearity , Lineariteit\nLinearlight , Lineair licht\nLineart + Color Spots , Lineart + Kleurvlekken\nLineart + Color Spots + Extrapolated Colors , Lineart + Kleurvlekken + Geëxtrapoleerde kleuren\nLineart + Colors , Lineart + Kleuren\nLineart + Extrapolated Colors , Lineart + geëxtrapoleerde kleuren\nLines , Lijnen\nLines (256) , Lijnen (256)\nLion , Leeuw\nLissajous [Animated] , Lissajous [Animatie]\nLissajous Spiral , Lissajous Spiraal\nLittle , Kleine\nLittle Blue , Kleine Blauwe\nLittle Cyan , Kleine Cyaan\nLittle Green , Klein groen\nLittle Key , Kleine sleutel\nLittle Magenta , Kleine Magenta\nLittle Red , Roodkapje\nLittle Yellow , Kleine Geel\nLN Average-Smoothness , LN Gemiddelde-Snelheid\nLN Size , LN-Grootte\nLocal  Normalisation , Lokale normalisering\nLocal Contrast , Lokaal contrast\nLocal Contrast Effect , Lokaal contrasteffect\nLocal Contrast Enhance , Lokaal contrast verbeteren\nLocal Contrast Enhancement , Lokale contrastversterking\nLocal Contrast Style , Lokaal Contrast Stijl\nLocal Detail Enhancer , Lokale Detail Enhancer\nLocal Normalization , Lokale normalisatie\nLocal Orientation , Lokale Oriëntatie\nLocal Processing , Lokale verwerking\nLocal Similarity Mask , Lokale gelijkenis Masker\nLocal Variance Normalization , Lokale variantie Normalisatie\nLock Return Scaling to Source Layer , Schaalvergroting van het slot terug naar de bronlaag\nLock Source , Slotbron\nLock Uniform Sampling , Slot Uniforme Bemonstering\nLog(z) , Logboek(z)\nLogarithmic Distortion , Logaritmische vervorming\nLogarithmic Distortion Axis Combination for X-Axis , Logaritmische vervormingsascombinatie voor X-as\nLogarithmic Distortion Axis Combination for Y-Axis , Logaritmische vervormingsascombinatie voor Y-as\nLogarithmic Distortion X-Axis Direction , Logaritmische vervorming X-asrichting\nLogarithmic Distortion Y-Axis Direction , Logaritmische vervorming Y-Axis Richting\nLomography Redscale 100 , Lomografie Roodschaal 100\nLomography X-Pro Slide 200 , Lomografie X-Pro Slide 200\nLookup , Zoeken op\nLookup Size , Opzoekgrootte\nLoop Method , Lusmethode\nLow , Laag\nLow Bias , Lage vooringenomenheid\nLow Contrast Blue , Laag contrast blauw\nLow Frequency , Lage frequentie\nLow Frequency Layer , Laagfrequente laag\nLow Key 01 , Lage toets 01\nLow Scale , Lage Schaal\nLow Value , Lage waarde\nLower Layer Is the Bottom Layer for All Blends , Onderste laag is de onderste laag voor alle mengsels\nLower Mask Threshold (%) , Lagere masker drempel (%)\nLower Side Orientation , Onderzijde Oriëntatie\nLowercase Letters , Kleine letters\nLucky 64 , Geluksvogel 64\nLuma Noise , Luma-geluid\nLuminance , Luminantie\nLuminance Factor , Helderheidsfactor\nLuminance Level , Helderheidsniveau\nLuminance Only , Alleen luminantie\nLuminance Only (Lab) , Alleen luminantie (Lab)\nLuminance Only (YCbCr) , Alleen luminantie (YCbCr)\nLuminance Shift , Luminantieverschuiving\nLuminance Smoothness , Helderheid Gladheid\nLuminosity from Color , Helderheid van kleur\nLuminosity Type , Type lichtsterkte\nLush Green Summer , Weelderige groene zomer\nLUTs Pack , LUTs-pakket\nLylejk's Painting , Lylejk's schilderij\nMagenta Coffee , Magenta Koffie\nMagenta Day , Magenta Dag\nMagenta Day 01 , Magenta Dag 01\nMagenta Dream , Magenta Droom\nMagenta Factor , Magenta-factor\nMagenta Smoothness , Magenta Gladheid\nMagenta Yellow , Magenta Geel\nMagenta-Yellow , Magenta-Geel\nMagic Details , Magische details\nMagnitude / Phase , Omvang / Fase\nMake Hue Depends on Region Size , Maak Hue afhankelijk van de grootte van de regio\nMake Seamless [Diffusion] , Naadloos maken [Diffusion]\nMake Seamless [Patch-Based] , Naadloos maken [Patch-Based]\nMake Squiggly , Maak Squiggly\nMake Up , Make-up\nManual , Handleiding\nManual Controls , Handmatige bediening\nMap , Kaart\nMap Tones , Kaart Tonen\nMapping , Het in kaart brengen van\nMarble , Marmer\nMargin (%) , Marge (%)\nMascot Image , Mascottebeeld\nMasculine , Mannelijk\nMask , Masker\nMask + Background , Masker + Achtergrond\nMask as Bottom Layer , Masker als bodemlaag\nMask By , Masker door\nMask Color , Masker Kleur\nMask Contrast , Maskercontrast\nMask Creator , Maskerontwerper\nMask Dilation , Masker Dilatatie\nMask Size , Maskergrootte\nMask Smoothness (%) , Masker Gladheid (%)\nMask Type , Maskertype\nMasked Image , Gemaskerd beeld\nMasking , Maskeren\nMatch Colors With , Matchen van kleuren met\nMatching Precision (Smaller Is Faster) , Bijpassende Precisie (Kleiner is sneller)\nMath Symbols , Wiskundige symbolen\nMax , Max.\nMax Angle , Max. hoek\nMax Angle Deviation (deg) , Max Hoekafwijking (deg)\nMax Area , Max. gebied\nMax Cut (%) , Max. Snijding (%)\nMax Iterations , Max Iteraties\nMax Length (%) , Maximale lengte (%)\nMax Offset (%) , Maximale compensatie (%)\nMax Radius , Max. radius\nMax Threshold , Max. drempel\nMaximal Area , Maximale oppervlakte\nMaximal Color Saturation , Maximale kleurverzadiging\nMaximal Highlights , Maximale hoogtepunten\nMaximal Radius , Maximale straal\nMaximal Seams per Iteration (%) , Maximaal aantal naden per Iteratie (%)\nMaximal Size , Maximale afmeting\nMaximal Value , Maximale waarde\nMaximum , Maximaal\nMaximum Dimension , Maximale afmeting\nMaximum Image Size , Maximale beeldgrootte\nMaximum Number of Image Colors , Maximaal aantal beeldkleuren\nMaximum Number of Output Layers , Maximaal aantal uitgangslagen\nMaximum Red:Blue Ratio in the Fringe , Maximum Rood: Blauwe Verhouding in de Fringe\nMaximum Saturation , Maximale verzadiging\nMaximum Size Factor , Maximale groottefactor\nMaximum Value , Maximale waarde\nMaze , Doolhof\nMaze Type , Doolhoftype\nMean Color , Betekenis van de kleur\nMean Curvature , Gemiddelde kromming\nMedian , Mediaan\nMedian (beware: Memory-Consuming!) , Mediaan (let op: Geheugenverlies!)\nMedian Radius , Mediane Straal\nMedium Details Smoothness , Medium Details Gladheid\nMedium Details Threshold , Medium Details Drempel\nMedium Frequency Layer , Medium Frequentieregelaar\nMedium Scale (Original) , Medium Scale (Origineel)\nMedium Scale (Smoothed) , Medium Schaal (Gladgemaakt)\nMemories , Herinneringen\nMerge Brightness / Colors , Helderheid / Kleuren samenvoegen\nMerge Layers? , Lagen samenvoegen?\nMerging Mode , Samenvoeging modus\nMerging Option , Samenvoegingsoptie\nMerging Steps , Samenvoeging van stappen\nMess with Bits , Mess met Bits\nMetal , Metaal\nMethod , Methode\nMetric , Metrisch\nMicro/macro Details  Adjusted , Micro/macro details Aangepast\nMid , Midden\nMid Grey , Midden-Grijs\nMid Noise , Midden-geluid\nMid Offset , Tussentijdse compensatie\nMid Tone Contrast , Middentooncontrast\nMid-Dark Grey , Midden-Donkergrijs\nMid-Light Grey , Midden-Lichtgrijs\nMiddle Grey , Middengrijs\nMiddle Scale , Middenschaal\nMidpoint , Midpunt\nMidtones Brightness , Midtonen Helderheid\nMidtones Color Intensity , Midtonen Kleurintensiteit\nMighty Details , Machtige details\nMin Angle Deviation (deg) , Min Hoekafwijking (deg)\nMin Area % , Min Oppervlakte %\nMin Cut (%) , Min. Snijding (%)\nMin Length (%) , Min. lengte (%)\nMin Offset (%) , Min. Verrekening (%)\nMin Radius , Min. radius\nMin Threshold , Min. drempel\nMineral Mosaic , Mineraalmozaïek\nMinesweeper , Mijnenveger\nMinimal Area , Minimaal gebied\nMinimal Area (%) , Minimale oppervlakte (%)\nMinimal Color Intensity , Minimale kleurintensiteit\nMinimal Highlights , Minimale hoogtepunten\nMinimal Path , Minimaal pad\nMinimal Radius , Minimale straal\nMinimal Region Area , Minimaal gebied\nMinimal Scale (%) , Minimale schaal (%)\nMinimal Shape Area , Minimale vormgebied\nMinimal Size , Minimale omvang\nMinimal Size (%) , Minimale omvang (%)\nMinimal Stroke Length , Minimale slaglengte\nMinimal Value , Minimale waarde\nMinimalist Caffeination , Minimalistische Cafeïne\nMinimum , Minimaal\nMinimum Brightness , Minimale helderheid\nMinimum Red:Blue Ratio in the Fringe , Minimum Rood: Blauwe Ratio in de Fringe\nMirror , Spiegel\nMirror Effect , Spiegeleffect\nMirror X , Spiegel X\nMirror Y , Spiegel Y\nMirror-X , Spiegel-X\nMirror-Y , Spiegel-Y\nMix , Meng\nMixed Mode , Gemengde modus\nMixer [CMYK] , Mengmachine [CMYK]\nMixer [HSV] , Mengmachine [HSV]\nMixer [Lab] , Mengmachine [Lab]\nMixer [PCA] , Mengmachine [PCA]\nMixer Style , Mixer Stijl\nMode , Modus\nModern Film , Moderne film\nModulo Value , Modulowaarde\nMoir&eacute; Animation , Moir&eacute; Animatie\nMoire Removal , Moire-verwijdering\nMoire Removal Method , Moire-verwijderingsmethode\nMondrian: Composition in Red-Yellow-Blue , Mondriaan: Samenstelling in Rood-Geel-Blauw\nMondrian: Evening; Red Tree , Mondriaan: Avond; Rode Boom\nMondrian: Gray Tree , Mondriaan: Grijze Boom\nMonet: San Giorgio Maggiore at Dusk , Monet: San Giorgio Maggiore in de schemering.\nMonet: Water-Lily Pond , Monet: Waterlelie-vijver\nMonet: Wheatstacks - End of Summer , Monet: Korenstapels - Einde van de zomer\nMonkey , Aap\nMono Tinted , Mono Getint\nMono-Directional , Mono-Directioneel\nMonochrome , Monochroom\nMonochrome 1 , Monochroom 1\nMonochrome 2 , Monochroom 2\nMoonlight , Maanlicht\nMoonlight 01 , Maanlicht 01\nMoonrise , Maanopkomst\nMorning 6 , Ochtend 6\nMorph [Interactive] , Morph [Interactief]\nMorph Layers , Morph Lagen\nMorphological - Fastest Sharpest Output , Morfologisch - Snelste Scherpste Uitvoer\nMorphological Closing , Morfologische afsluiting\nMorphological Filter , Morfologische filter\nMorphology Painting , Morfologie Schilderen\nMorphology Strength , Morfologie Sterkte\nMosaic , Mozaïek\nMost , De meeste\nMostly Blue , Meestal Blauw\nMuch , Veel\nMuch Blue , Veel Blauw\nMuch Green , Veel groen\nMuch Red , Veel rood\nMulti-Layer Etch , Meerlaagse ets\nMultiple Colored Shapes Over Transp. BG , Meerkleurige vormen over transp. BG\nMultiple Layers , Meerdere lagen\nMultiplier , Vermenigvuldiger\nMultiply , Vermenigvuldig\nMultiscale Operator , Multiscale-exploitant\nMunch: The Scream , Munch: De schreeuw\nMute Shift , Stomme verschuiving\nMuted 01 , Gedempt 01\nMuted Fade , Gedempt verbleken\nMystic Purple Sunset , Mystieke Paarse Zonsondergang\nName , Naam\nNatural (vivid) , Natuurlijk (levendig)\nNature & Wildlife-1 , Natuur & Wildlife-1\nNature & Wildlife-10 , Natuur & Wildlife-10\nNature & Wildlife-2 , Natuur & Wildlife-2\nNature & Wildlife-3 , Natuur & Wildlife-3\nNature & Wildlife-4 , Natuur & Wildlife-4\nNature & Wildlife-5 , Natuur & Wildlife-5\nNature & Wildlife-6 , Natuur & Wildlife-6\nNature & Wildlife-7 , Natuur & Wildlife-7\nNature & Wildlife-8 , Natuur & Wildlife-8\nNature & Wildlife-9 , Natuur & Wildlife-9\nNb Circles Surrounding , Nb-cirkels rondom\nNear Black , In de buurt van Zwart\nNearest , Dichtstbijzijnde\nNearest Neighbor , Dichtstbijzijnde buurman\nNeat Merge , Keurig samenvoegen\nNebulous , Nevelig\nNegate , Verwaarloos\nNegation , Verwaarlozing\nNegative , Negatief\nNegative [Color] (13) , Negatief [Kleur] (13)\nNegative [New] (39) , Negatief [Nieuw] (39)\nNegative [Old] (44) , Negatief [Oud] (44)\nNegative Color Abstraction , Negatieve kleurenabstractie\nNegative Colors , Negatieve kleuren\nNegative Effect , Negatief effect\nNeighborhood Size (%) , Buurtgrootte (%)\nNeighborhood Smoothness , Buurt Gladheid\nNeon Lightning , Neonbliksem\nNeutral Color , Neutrale kleur\nNeutral Teal Orange , Neutraal Teal Oranje\nNeutral Warm Fade , Neutraal Warm Fade\nNew Curves [Interactive] , Nieuwe curven [Interactief]\nNewspaper , Krant\nNight 01 , Nacht 01\nNight Blade 4 , Nachtblad 4\nNight From Day , Nacht van de dag\nNight King 141 , Nachtkoning 141\nNight Spy , Nachtspion\nNine Layers , Negen lagen\nNo Masking , Geen maskering\nNo Recovery , Geen herstel\nNo Rescaling , Geen Herschaling\nNo Transparency , Geen transparantie\nNoise , Lawaai\nNoise [Additive] , Lawaai [Additief]\nNoise [Perlin] , Lawaai [Perlin]\nNoise [Spread] , Lawaai [Spread]\nNoise A , Lawaai A\nNoise B , Lawaai B\nNoise C , Lawaai C\nNoise D , Lawaai D\nNoise Level , Geluidsniveau\nNoise Scale , Geluidsschaal\nNoise Type , Geluidstype\nNon / No , Niet / Nee\nNon-Linearity , Niet-lineariteit\nNon-Rigid , Niet-rigide\nNone , Geen\nNone (Allows Multi-Layers) , Geen (Maakt Multi-Layers mogelijk)\nNone- Skip , Niet overslaan\nNorm Type , Normaal Type\nNormal , Normaal\nNormal Map , Normale kaart\nNormal Output , Normale uitgang\nNormalization , Normalisatie\nNormalize , Normaliseer\nNormalize Brightness , Helderheid normaliseren\nNormalize Colors , Kleuren normaliseren\nNormalize Illumination , Verlichting normaliseren\nNormalize Input , Input normaliseren\nNormalize Luma , Luma normaliseren\nNormalize Scales , Normaliseer Schalen\nNostalgia Honey , Nostalgie Honing\nNostalgic , Nostalgische\nNothing , Niets\nNumber , Aantal\nNumber of Added Frames , Aantal toegevoegde frames\nNumber of Angles , Aantal hoeken\nNumber of Clusters , Aantal Clusters\nNumber of Colors , Aantal kleuren\nNumber of Frames , Aantal Frames\nNumber of Inter-Frames , Aantal interframes\nNumber of Iterations per Scale , Aantal Iteraties per Schaal\nNumber of Key-Frames , Aantal Key-Frames\nNumber of Levels , Aantal niveaus\nNumber of Matches (Coarsest) , Aantal wedstrijden (grofste)\nNumber of Matches (Finest) , Aantal Wedstrijden (Fijnste)\nNumber of Orientations , Aantal Oriëntaties\nNumber Of Rays , Aantal stralen\nNumber of Scales , Aantal schalen\nNumber of Sizes , Aantal Maten\nNumber of Streaks , Aantal strepen\nNumber of Teeth , Aantal tanden\nNumber of Tones , Aantal Tonen\nObject Animation , Animatie van het object\nObject Ratio , Objectratio\nObject Tolerance , Objecttolerantie\nOctagon , Achthoek\nOctagonal , Achthoekig\nOctaves , Octaven\nOddness (%) , Raarheid (%)\nOff , Uit\nOffset , Compensatie\nOffset (%) , Compensatie (%)\nOffset Angle Rays Layer 1 , Offset Hoekstralen Laag 1\nOffset Angle Rays Layer 2 , Offset Hoeklaag 2\nOld Method - Slowest , Oude methode - Langzaamste\nOld Photograph , Oude foto\nOld West , Oude Westen\nON1 Photography (90) , ON1 Fotografie (90)\nOne Layer , Eén laag\nOne Layer (Horizontal) , Eén laag (horizontaal)\nOne Layer (Vertical) , Eén laag (verticaal)\nOne Layer per Single Color , Eén laag per enkele kleur\nOne Layer per Single Region , Eén laag per regio\nOne Thread , Een draad\nOnly Leafs , Alleen Bladeren\nOnly Red , Alleen rood\nOnly Red and Blue , Alleen rood en blauw\nOpacity , Opaciteit\nOpacity (%) , Opaciteit (%)\nOpacity as Heightmap , Opaciteit als hoogtekaart\nOpacity Contours , Opaciteitscontouren\nOpacity Factor , Opaciteitsfactor\nOpacity Gain , Opaciteitswinst\nOpacity Gamma , Opaciteitsgamma\nOpacity Snowflake , Opaciteitssneeuwvlokje\nOpacity Threshold (%) , Opaciteitsdrempel (%)\nOpaque Pixels , Ondoorzichtige Pixels\nOpaque Regions on Top Layer , Ondoorzichtige regio's op de bovenste laag\nOpaque Skin , Ondoorzichtige huid\nOpen Interactive Preview , Open Interactieve Voorvertoning\nOperation Yellow , Operatie Geel\nOperator , Exploitant\nOpposing , Tegen\nOptimized Lateral Inhibition , Geoptimaliseerde zijdelingse remming\nOrange Dark 4 , Oranje Donker 4\nOrange Dark 7 , Oranje Donker 7\nOrange Dark Look , Oranje Donkerblauw uiterlijk\nOrange Tone , Oranje Tint\nOrange Underexposed , Oranje Onderbelicht\nOranges , Sinaasappels\nOrder , Bestel\nOrder By , Bestel door\nOrientation , Oriëntatie\nOrientation Coherence , Oriëntatie Coherentie\nOrientation Only , Alleen de oriëntatie\nOrientations , Oriëntaties\nOriginal , Origineel\nOriginal - (Opening + Closing)/2 , Origineel - (openen + sluiten)/2\nOriginal - Erosion , Origineel - Erosie\nOriginal - Opening , Origineel - Opening\nOrthogonal Radius , Orthogonale Straal\nOrton Glow , Orton Gloed\nOthers (69) , Andere (69)\nOuline Color , Ouline kleur\nOuter , Buiten\nOuter Fading , Buitenvervaging\nOuter Length , Buitenlengte\nOuter Radius , Buitenste straal\nOutline , Overzicht\nOutline (%) , Overzicht (%)\nOutline Color , Overzicht Kleur\nOutline Contrast , Contrast in hoofdlijnen\nOutline Opacity , Ondoorzichtigheid in grote lijnen\nOutline Size , Overzicht van de grootte\nOutline Smoothness , Overzicht Gladheid\nOutline Thickness , Schetsdikte\nOutlined , Uitgebreid\nOutput , Uitgang\nOutput As , Uitgang als\nOutput as Files , Uitvoer als bestanden\nOutput as Frames , Uitgang als Frames\nOutput as Multiple Layers , Uitvoer als meerdere lagen\nOutput as Separate Layers , Uitgang als afzonderlijke lagen\nOutput Ascii File , Uitvoer Ascii-bestand\nOutput Chroma NR , Uitgang Chroma NR\nOutput CLUT , Uitgang CLUT\nOutput CLUT Resolution , Output CLUT Resolutie\nOutput Coordinates File , Uitvoercoördinaten Bestand\nOutput Corresponding CLUT , Uitgang Corresponderende CLUT\nOutput Directory , Uitvoergids\nOutput Each Piece on a Different Layer , Uitvoer elk stuk op een andere laag\nOutput Filename , Uitgang Filenaam\nOutput Files , Uitvoerbestanden\nOutput Folder , Uitgangsmap\nOutput Format , Uitgangsformaat\nOutput Frames , Uitgangsframes\nOutput Height , Uitgangshoogte\nOutput HTML File , Uitvoer HTML-bestand\nOutput Layers , Uitgangslagen\nOutput Mode , Uitgangsmodus\nOutput Multiple Layers , Uitgang Meerdere lagen\nOutput Preset as a HaldCLUT Layer , Uitgang Vooraf ingesteld als een HaldCLUT laag\nOutput Region Delimiters , Uitgangsregio afbakeningen\nOutput Saturation , Uitgangsverzadiging\nOutput Sharpening , Uitgangsverscherping\nOutput Stroke Layer On , Uitgangsslaglaag Aan\nOutput to Folder , Uitvoer naar de map\nOutput Type , Uitgangstype\nOutput Width , Uitgangsbreedte\nOutside , Buiten\nOutside Color , Buiten kleur\nOutward , Naar buiten toe\nOverall Blur , Algehele vervaging\nOverall Contrast , Algemeen contrast\nOverall Lightness , Totale lichtheid\nPack , Pakket\nPack Sprites , Pakje Sprites\nPadding (px) , Vulling (px)\nPaint , Verf\nPaint Daub , Verf Daub\nPaint Effect , Verfeffect\nPaint Splat , Verf Splat\nPainter's Edge Protection Flow , Schildersrandbeschermingsstroom\nPainter's Smoothness , Gladheid van de schilder\nPainter's Touch Sharpness , Schilders Touch Sharpness\nPainting , Schilderij\nPainting Opacity , Schilderij Opaciteit\nPaintstroke , Verfslag\nPaper Texture , Papierstructuur\nParallel Processing , Parallelle verwerking\nParrots , Papegaaien\nPassing By , Voorbijgaand\nPastell Art , Pastelkunst\nPatch Measure , Patch-maatstaf\nPatch Size , Patchmaat\nPatch Size for Analysis , Patchgrootte voor analyse\nPatch Size for Synthesis , Patchmaat voor synthese\nPatch Size for Synthesis (Final) , Patchgrootte voor synthese (Final)\nPatch Smoothness , Patch Gladheid\nPatch Variance , Patchvariant\nPattern , Patroon\nPattern Angle , Patroonhoek\nPattern Height , Patroonhoogte\nPattern Type , Patroontype\nPattern Variation 1 , Patroonvariatie 1\nPattern Variation 2 , Patroonvariatie 2\nPattern Variation 3 , Patroonvariatie 3\nPattern Weight , Patroongewicht\nPattern Width , Patroonbreedte\nPCA Transfer , PCA-overdracht\nPea Soup , Erwtensoep\nPen Drawing , Pentekening\nPenalize Patch Repetitions , Penalize Patch Herhalingen\nPencil , Potlood\nPencil Amplitude , Potloodamplitude\nPencil Portrait , Potloodportret\nPencil Size , Potloodgrootte\nPencil Smoother Edge Protection , Potlood gladdere randbescherming\nPencil Smoother Sharpness , Potlood Gladder Scherpte\nPencil Smoother Smoothness , Potlood gladder gladheid\nPencil Type , Type potlood\nPencils , Potloden\nPeppers , Paprika's\nPercent of Image Half-Hypotenuse (%) , Percentage van het beeld halfpotentiaal (%)\nPeriodic , Periodiek\nPeriodic Dots , Periodieke stippen\nPeriodicity , Periodiciteit\nPerserve Luminance , Perspectief Luminantie\nPerspective , Perspectief\nPerturbation , Perturbatie\nPetals , Bloemblaadjes\nPhase , Fase\nPhone , Telefoon\nPhotoComix Preset , PhotoComix Vooraf ingesteld\nPhotoillustration , Fotoillustratie\nPicasso: Seated Woman , Picasso: Zittende vrouw\nPicasso: The Reservoir - Horta De Ebro , Picasso: Het stuwmeer - Horta De Ebro\nPiece Complexity , Stukje complexiteit\nPiece Size (px) , Stukgrootte (px)\nPin Light , Speldlicht\nPink Fade , Roze Vervaagt\nPixel Sort , Pixel Sorteren\nPixel Values , Pixelwaarden\nPlacement , Plaatsing\nPlaid , Gereserveerd\nPlane , Vliegtuig\nPlasma Effect , Plasma-effect\nPlot Type , Plottype\nPoint #0 , Punt #0\nPoint #1 , Punt 1\nPoint #2 , Punt 2\nPoint #3 , Punt 3\nPoint 1 , Punt 1\nPoint 2 , Punt 2\nPoints , Punten\nPolar Transform , Polaire Transformatie\nPolaroid 665 -- , Polaroid 665...\nPolaroid 665 Negative , Polaroid 665 Negatief\nPolaroid 665 Negative + , Polaroid 665 Negatief +\nPolaroid 665 Negative - , Polaroid 665 Negatief -\nPolaroid 665 Negative HC , Polaroid 665 Negatief HC\nPolaroid 669 -- , Polaroid 669...\nPolaroid 669 Cold , Polaroid 669 Koud\nPolaroid 669 Cold + , Polaroid 669 Koud +\nPolaroid 669 Cold - , Polaroid 669 Koud -\nPolaroid 669 Cold -- , Polaroid 669 Koud...\nPolaroid 690 -- , Polaroid 690...\nPolaroid 690 Cold , Polaroid 690 Koud\nPolaroid 690 Cold + , Polaroid 690 Koud +\nPolaroid 690 Cold ++ , Polaroid 690 Koud ++\nPolaroid 690 Cold - , Polaroid 690 Koud -\nPolaroid 690 Cold -- , Polaroid 690 Koud...\nPolaroid 690 Warm -- , Polaroid 690 Warm...\nPolaroid Polachrome , Polaroidpolachroom\nPolaroid PX-100UV+ Cold ++ , Polaroid PX-100UV+ Koud ++\nPolaroid PX-100UV+ Cold +++ , Polaroid PX-100UV+ Koud ++++\nPolaroid PX-100UV+ Cold -- , Polaroid PX-100UV+ Cold...\nPolaroid PX-100UV+ Warm -- , Polaroid PX-100UV+ Warm...\nPolaroid PX-680 -- , Polaroid PX-680...\nPolaroid PX-680 Cold , Polaroid PX-680 Koud\nPolaroid PX-680 Cold + , Polaroid PX-680 Koud +\nPolaroid PX-680 Cold ++ , Polaroid PX-680 Koud ++\nPolaroid PX-680 Cold ++a , Polaroid PX-680 Koud ++a\nPolaroid PX-680 Cold - , Polaroid PX-680 Koud -\nPolaroid PX-680 Cold -- , Polaroid PX-680 Koud...\nPolaroid PX-680 Warm -- , Polaroid PX-680 Warm -\nPolaroid PX-70 -- , Polaroid PX-70 -\nPolaroid PX-70 Cold , Polaroid PX-70 Koud\nPolaroid PX-70 Cold + , Polaroid PX-70 Koud +\nPolaroid PX-70 Cold ++ , Polaroid PX-70 Koud ++\nPolaroid PX-70 Cold -- , Polaroid PX-70 Cold...\nPolaroid PX-70 Warm -- , Polaroid PX-70 Warm -\nPolaroid Time Zero (Expired) , Polaroid Tijd Nul (Verlopen)\nPolaroid Time Zero (Expired) + , Polaroid Time Zero (Verlopen) +\nPolaroid Time Zero (Expired) ++ , Polaroid Tijd Nul (Verlopen) ++\nPolaroid Time Zero (Expired) - , Polaroid Time Zero (Verlopen) -\nPolaroid Time Zero (Expired) -- , Polaroid Time Zero (Verlopen)...\nPolaroid Time Zero (Expired) --- , Polaroid Time Zero (Verlopen) ---\nPolaroid Time Zero (Expired) Cold , Polaroid Time Zero (Verlopen) Cold\nPolaroid Time Zero (Expired) Cold - , Polaroid Time Zero (Verlopen) Cold -\nPolaroid Time Zero (Expired) Cold -- , Polaroid Time Zero (Verlopen) Cold -\nPolaroid Time Zero (Expired) Cold --- , Polaroid Time Zero (Verlopen) Cold ---\nPole Lat , Poollat\nPole Long , Pool lang\nPole Rotation , Paalomwenteling\nPollock: Convergence , Pollock: Convergentie\nPollock: Summertime Number 9A , Pollock: Zomertijd Nummer 9A\nPolygonize [Energy] , Polygoniseren [Energie]\nPop Shadows , Pop Schaduwen\nPortrait , Portret\nPortrait Retouching , Portretretretretretretret\nPortrait-1 , Portret-1\nPortrait-2 , Portret-2\nPortrait-3 , Portret-3\nPortrait-4 , Portret-4\nPortrait-7 , Portret-7\nPortrait0 , Portret0\nPortrait1 , Portret1\nPortrait10 , Portret10\nPortrait2 , Portret2\nPortrait3 , Portret3\nPortrait4 , Portret4\nPortrait5 , Portret5\nPortrait6 , Portret6\nPortrait7 , Portret7\nPortrait8 , Portret8\nPortrait9 , Portret9\nPosition , Positie\nPosition X (%) , Positie X (%)\nPosition X Origin (%) , Positie X Herkomst (%)\nPosition Y (%) , Positie Y (%)\nPosition Y Origin (%) , Positie Y Herkomst (%)\nPositive , Positief\nPost-Normalize , Post-Normaliseer\nPost-Process , Post-proces\nPoster Edges , Posterranden\nPosterization Antialiasing , Posterisatie Anti-aliasing\nPosterization Level , Posterisatie niveau\nPosterized Dithering , Geposterde Dithering\nPower , Vermogen\nPre-Defined , Vooraf gedefinieerd\nPre-Defined Colormap , Vooraf gedefinieerde Colormap\nPre-Normalize , Pre-Normaliseer\nPre-Normalize Image , Beeld pre-normaliseren\nPre-Process , Voorafgaand aan het proces\nPrecision , Precisie\nPrecision (%) , Precisie (%)\nPreliminary Surface Shift , Voorlopige oppervlakteverschuiving\nPreliminary X-Axis Scaling , Voorlopige X-Axis-schaalverdeling\nPreliminary Y-Axis Scaling , Voorlopige Y-Axis-schaalverdeling\nPreprocessor Power , Voorbereidend vermogen\nPreprocessor Radius , Voorganger Straal\nPreserve Canvas for Post Bump Mapping , Conserveer Canvas voor Post Bump Mapping\nPreserve Edges , Behoud van de randen\nPreserve Image Dimension , Behoud van de Beeldafmeting\nPreserve Initial Brightness , Behoud van de initiële helderheid\nPreserve Luminance , Behoud van de helderheid\nPreset , Vooraf ingesteld\nPreview , Voorbeeld\nPreview All Outputs , Voorbeeld van alle uitgangen\nPreview Bands , Voorbeeldbanden\nPreview Brush , Voorbeeldborstel\nPreview Data , Voorbeeldgegevens\nPreview Detected Shapes , Voorbeeld gedetecteerde vormen\nPreview Frame Selection , Voorbeeldframe selectie\nPreview Gradient , Voorbeeldgradiënt\nPreview Grain Alone , Voorbeeld korrel alleen\nPreview Grid , Voorbeeldvenster\nPreview Guides , Voorbeeldgidsen\nPreview Mapping , Voorbeeldkartering\nPreview Mask , Voorbeeldmasker\nPreview Only Shadow , Voorbeeld van alleen de schaduw\nPreview Opacity (%) , Preview Opaciteit (%)\nPreview Original , Voorbeeld origineel\nPreview Precision , Preview Precisie\nPreview Progress (%) , Voorbeeld van vooruitgang (%)\nPreview Progression While Running , Voorproefje van de vooruitgang tijdens het lopen\nPreview Ref Point , Voorbeeld-referentiepunt\nPreview Reference Circle , Preview Referentie Cirkel\nPreview Selection , Voorbeeldselectie\nPreview Shape , Voorbeeldvorm\nPreview Shows , Voorbeeldschermen\nPreview Subsampling , Voorbeeldbemonstering\nPreview Time , Voorvertoningstijd\nPreview Tones Map , Preview Tones Kaart\nPreview Type , Voorvertoningstype\nPreview Without Alpha , Voorbeschouwing zonder Alpha\nPrimary Angle , Primaire hoek\nPrimary Color , Primaire kleur\nPrimary Factor , Primaire factor\nPrimary Gamma , Primair Gamma\nPrimary Radius , Primaire Straal\nPrimary Shift , Primaire verschuiving\nPrimary Twist , Primaire draai\nPrint Adjustment Marks , Aanpassingsmarkeringen afdrukken\nPrint Films (12) , Drukfilms (12)\nPrint Frame Numbers , Printframe nummers\nPrint Size Unit , Drukgrootte-eenheid\nPrint Size Width , Printgrootte Breedte\nPrivacy Notice , Privacymededeling\nPro Neg Hi , Pro Negé Hoi\nProbability Map , Waarschijnlijkheidskaart\nProcedural , Procedureel\nProcess As , Proces Zoals\nProcess by Blocs of Size , Proces per blok van grootte\nProcess Channels Individually , Proceskanalen Individueel\nProcess Top Layer Only , Alleen de bovenste laag van het proces\nProcess Transparency , Transparantie van het proces\nProcessing Mode , Verwerkingswijze\nPropagation , Voortplanting\nProportion , Aandeel\nProtanomaly , Protanomalie\nProtect Highlights 01 , Beschermen Hoogtepunten 01\nPrussian Blue , Pruisisch Blauw\nPurple , Paars\nPurple11 (12) , Paars11 (12)\nPuzzle , Puzzel\nPyramid , Piramide\nPyramid Processing , Piramide verwerking\nPythagoras Tree , Pythagoras Boom\nQuadratic , Kwadratisch\nQuadtree Variations , Kwadrantenvariaties\nQuality , Kwaliteit\nQuality (%) , Kwaliteit (%)\nQuantization , Quantizatie\nQuantize Colors , Quantize Kleuren\nQuasi-Gaussian , Quasi-Gaussisch\nQuick , Snelle\nQuick Copyright , Snelle Copyright\nQuick Enlarge , Snel Vergroten\nR/B Smoothness (Principal) , R/B Gladheid (Opdrachtgever)\nR/B Smoothness (Secondary) , R/B Gladheid (Secundair)\nRadial , Radiaal\nRadius , Straal\nRadius (%) , Straal (%)\nRadius / Angle , Straal / Hoek\nRadius [Manual] , Straal [Handleiding]\nRadius Cut , Straalsnede\nRadius Middle Circle , Radius Middencirkel\nRadius Outer Circle A (>0 W%) (<0 H%) , Straal Buitenste Cirkel A (>0 W%) (<0 H%)\nRain & Snow , Regen & Sneeuw\nRainbow , Regenboog\nRaindrops , Regendruppels\nRandom , Willekeurig\nRandom [non-Transparent] , Willekeurig [niet-transparant]\nRandom Angle , Willekeurige hoek\nRandom Color Ellipses , Willekeurige kleur ellipsen\nRandom Colors , Willekeurige kleuren\nRandom Seed , Willekeurig zaad\nRandom Shade Stripes , Willekeurige Schaduwstrepen\nRandomize , Willekeurig\nRandomized , Gerandomiseerde\nRandomness , Willekeurigheid\nRange , Reeks\nRatio , Verhouding\nRaw , Ruw\nRays , Stralen\nRays Colors AB , Stralen Kleuren AB\nRays Colors ABC , Stralen Kleuren ABC\nRays Colors ABCD , Stralen Kleuren ABCD\nRays Colors ABCDE , Stralen Kleuren ABCDE\nRays Colors ABCDEF , Stralen Kleuren ABCDEF\nRays Colors ABCDEFG , Stralen Kleuren ABCDEFG\nRebuild From Similar Blocs , Herbouwen van soortgelijke blokken\nRecompose , Herstel\nReconstruct From Previous Frames , Reconstructie van eerdere Frames\nRecover , Herstel\nRecover Highlights , Hoogtepunten herstellen\nRecover Shadows , Schaduwen herstellen\nRecovery , Herstel\nRectangle , Rechthoek\nRecursion Depth , Recursiediepte\nRecursions , Recursies\nRecursive Median , Recursieve mediaan\nRed , Rood\nRed - Green - Blue , Rood - Groen - Blauw\nRed - Green - Blue - Alpha , Rood - Groen - Blauw - Alfa\nRed Afternoon 01 , Rode Middag 01\nRed Blue Yellow , Rood Blauw Geel\nRed Chroma Factor , Rode Chroma Factor\nRed Chroma Shift , Rode Chroma Shift\nRed Chroma Smoothness , Rood Chroma Gladheid\nRed Chrominance , Rode Chrominantie\nRed Day 01 , Rode dag 01\nRed Dream 01 , Rode Droom 01\nRed Factor , Rode factor\nRed Level , Rood niveau\nRed Rotations , Rood Omwentelingen\nRed Shift , Rode Verschuiving\nRed Smoothness , Rood Gladheid\nRed Wavelength , Rode Golflengte\nRed-Eye Attenuation , Roodoogverzwakking\nRed-Green , Rood-Groen\nReds , Roden\nReds Oranges Yellows , Roodappelsinaasappels Geel\nReduce Halos , Halo's verminderen\nReduce Noise , Geluidsreductie\nReduce RAM , Verminder het RAM\nReduce Redness , Roodheid verminderen\nReference , Referentie\nReference Angle (deg.) , Referentiehoek (deg.)\nReference Color , Referentiekleur\nReference Colors , Referentie Kleuren\nReflect , Reflecteer\nReflection , Reflectie\nRefraction , Breking\nRegular Grid , Regulier rooster\nRegularity , Regelmatigheid\nRegularity (%) , Regelmatigheid (%)\nRegularization , Regularisatie\nRegularization (%) , Regularisatie (%)\nRegularization Factor , Regularisatiefactor\nRegularization Iterations , Regularisatie Iteraties\nReject , Wijs  af.\nRejected Colors , Afgewezen kleuren\nRejected Mask , Afgewezen masker\nRelative Block Count , Relatieve bloktelling\nRelative Size , Relatieve Grootte\nRelative Warping , Relatieve kromming\nRelease Notes , Toelichting bij de uitgave\nRelief , Ontlasting\nRelief Amplitude , Ontlastingsamplitude\nRelief Contrast , Ontlastingscontrast\nRelief Light , Ontlastingslicht\nRelief Size , Reliëfgrootte\nRelief Smoothness , Ontlasting Gladheid\nRemove Artifacts From Micro/Macro Detail , Verwijder artefacten uit Micro/Macro Detail\nRemove Hot Pixels , Hete Pixels verwijderen\nRemove Tile , Tegel verwijderen\nRender on Dark Areas , Render op donkere gebieden\nRender on White Areas , Render op Witte Gebieden\nRender Routine for Wiggle Animations , Render Routine voor Wiggle Animaties\nRendering Mode , Rendering modus\nRepair Scanned Document , Reparatie gescand document\nRepeat , Herhaal\nRepeat [Memory Consuming!] , Herhaal [Geheugengebruik!]\nRepeats , Herhaalt\nReplace , Vervang\nReplace (Sharpest) , Vervangen (Scherpste)\nReplace Layer with CLUT , Laag vervangen door CLUT\nReplace Source by Target , Vervang Bron door Doel\nReplace With White , Vervangen door wit\nReplaced Color , Vervangende kleur\nReplacement Color , Vervangingskleur\nReptile , Reptiel\nRescaling , Herschaling\nResize Image for Optimum Effect , Beeld opnieuw dimensioneren voor een optimaal effect\nResolution , Resolutie\nResolution (%) , Resolutie (%)\nResolution (px) , Resolutie (px)\nRest 33 , Rust 33\nResult Image , Resultaat Beeld\nResult Type , Type resultaat\nResynthetize Texture [FFT] , Resynthetiseren van de textuur [FFT]\nResynthetize Texture [Patch-Based] , Resynthetiseren van de textuur [Patch-Based]\nRetouch Layer , Retoucheringslaag\nRetouched and Sharpened Areas , Geretoucheerde en geslepen gebieden\nRetouched Areas Only , Alleen geretoucheerde gebieden\nRetouched Image , Geretoucheerd beeld\nRetouched Image Basic , Geretoucheerde afbeelding Basic\nRetouched Image Final , Geretoucheerde Beeld Finale\nRetouching Style , Retoucheerstijl\nRetro Brown 01 , Retro Bruin 01\nRetro Summer 3 , Retro Zomer 3\nRetro Yellow 01 , Retro Geel 01\nReturn Scaling , Terugkeer Schalen\nReverse Bits , Omgekeerde Bits\nReverse Bytes , Omgekeerde bytes\nReverse Effect , Omgekeerd effect\nReverse Endianness , Omgekeerde eindigheid\nReverse Flip , Omgekeerde beweging\nReverse Frame Stack , Omgekeerde Frame Stack\nReverse Gradient , Omgekeerde helling\nReverse Mod , Omgekeerde Modus\nReverse Motion , Omgekeerde beweging\nReverse Order , Omgekeerde volgorde\nReverse Pow , Omgekeerd vermogen\nReversing , Omkeren\nRevert Layer Order , Omgekeerde volgorde van de lagen\nRevert Layers , Omgekeerde lagen\nRGB [All] , RGB [Allemaal]\nRGB [Blue] , RGB [Blauw]\nRGB [Green] , RGB [Groen]\nRGB [red] , RGB [rood]\nRGB Image + Binary Mask (2 Layers) , RGB-beeld + binair masker (2 lagen)\nRGB Quantization , RGB-kwantisering\nRGB Tone , RGB-toon\nRGBA [All] , RGBA [Alle]\nRGBA Foreground + Background (2 Layers) , RGBA Voorgrond + Achtergrond (2 lagen)\nRGBA Image (Full-Transparency / 1 Layer) , RGBA-beeld (volledige transparantie / 1 laag)\nRGBA Image (Updatable / 1 Layer) , RGBA-beeld (bij te werken / 1 laag)\nRice , Rijst\nRight , Rechts\nRight Diagonal  Foreground , Rechts Diagonale voorgrond\nRight Diagonal Foreground , Rechts Diagonale voorgrond\nRight Eye View , Rechter oogaanzicht\nRight Foreground , Voorgrond\nRight Position , Juiste positie\nRight Side Orientation , Rechtse oriëntatie\nRight Slope , Rechtse helling\nRight Stream Only , Alleen rechtse stroom\nRigid , Stijve\nRipple , Rimpeling\nRoddy (by Mahvin) , Roddy (door Mahvin)\nRodilius [Animated] , Rodilius [Geanimeerd]\nRollei Retro 100 Tonal , Rollei Retro 100 tonaal\nRooster , Haan\nRotate , Roteer\nRotate (muted) , Draaien (gedempt)\nRotate (vibrant) , Draaien (levendig)\nRotate 180 Deg. , Draai 180 Deg.\nRotate 270 Deg. , Draai 270 Deg.\nRotate 90 Deg. , Draai 90 Deg.\nRotate Hue Bands , Tint banden draaien\nRotate Tree , Boom draaien\nRotated , Gedraaide\nRotated (crush) , Gedraaide (verbrijzeling)\nRotations , Rotaties\nRound , Ronde\nRoundness , Rondheid\nRow by Row , Rij voor rij\nRYB [All] , RYB [Allemaal]\nRYB [Blue] , RYB [Blauw]\nRYB [Red] , RYB [Rood]\nRYB [Yellow] , RYB [Geel]\nSalt and Pepper , Zout en peper\nSame as Input , Hetzelfde als de invoer\nSame Axis , Dezelfde As\nSample Image , Voorbeeldbeeld\nSampling , Bemonstering\nSat Range , Zittende waaier\nSatin , Satijn\nSaturated Blue , Verzadigd blauw\nSaturation , Verzadiging\nSaturation (%) , Verzadiging (%)\nSaturation Channel Gamma , Verzadiging Kanaal Gamma\nSaturation Correction , Verzadigingscorrectie\nSaturation EQ , Verzadiging EQ\nSaturation Factor , Verzadigingsfactor\nSaturation Offset , Verzadiging Compensatie\nSaturation Shift , Verzadigingsverschuiving\nSaturation Smoothness , Verzadiging Gladheid\nSave CLUT as .Cube or .Png File , CLUT opslaan als .Cube of .Png-bestand\nSave Gradient As , Bewaar Gradiënt als\nSaving Private Damon , Besparing van privé-Damon\nScalar , Scalaire\nScale , Schaal\nScale (%) , Schaal (%)\nScale 1 , Schaal 1\nScale 2 , Schaal 2\nScale CMYK , Schaal CMYK\nScale Factor , Schaalfactor\nScale Output , Schaaluitgang\nScale Plasma , Schaalplasma\nScale RGB , Schaal RGB\nScale Style to Fit Target Resolution , Schaalstijl om te passen bij de doelresolutie\nScale Variations , Schaalvariaties\nScaled , Geschaald\nScales , Schalen\nScaling Factor , Schaalfactor\nScene Selector , Scènekiezer\nScreen , Scherm\nScreen Border , Schermgrens\nSeamcarve , Naadsnijden\nSeamless Deco , Naadloze Deco\nSeamless Turbulence , Naadloze Turbulentie\nSecond Color , Tweede kleur\nSecond Offset , Tweede Compensatie\nSecond Radius , Tweede straal\nSecond Size , Tweede Maat\nSecondary Color , Secundaire kleur\nSecondary Factor , Secundaire factor\nSecondary Gamma , Secundair Gamma\nSecondary Radius , Secundaire Straal\nSecondary Shift , Secundaire Verschuiving\nSecondary Twist , Secundaire Twist\nSectors , Sectoren\nSeed , Zaad\nSegment Max Length (px) , Segment Maximale lengte (px)\nSegmentation , Segmentatie\nSegmentation Edge Threshold , Segmentatie Randdrempel\nSegmentation Smoothness , Segmentatie Gladheid\nSegments , Segmenten\nSegments Strength , Segmenten Sterkte\nSelect By , Selecteer door\nSelect-Replace Color , Selecteer-Vervang Kleur\nSelected Color , Geselecteerde kleur\nSelected Colors , Geselecteerde kleuren\nSelected Frame , Geselecteerd frame\nSelected Mask , Geselecteerde masker\nSelection , Selectie\nSelective Desaturation , Selectieve Desaturatie\nSelective Gaussian , Selectief Gaussisch\nSelf , Zelf\nSelf Glitching , Zelfstotend\nSelf Image , Zelfbeeld\nSensitivity , Gevoeligheid\nSequence X4 , Volgorde X4\nSequence X6 , Volgorde X6\nSequence X8 , Volgorde X8\nSerenity , Sereniteit\nSerial Number , Serienummer\nSerpent , Slang\nSet Aspect Only , Alleen het aspect instellen\nSet Frame Format , Stel het frameformaat in\nSeven Layers , Zeven lagen\nSeventies Magazine , Tijdschrift voor de jaren zeventig\nShade , Schaduw\nShade Angle , Schaduwhoek\nShade Back to First Color , Schaduw Terug naar Eerste Kleur\nShade Bobs , Schaduw Bobs\nShade Strength , Schaduwsterkte\nShading , Schaduwing\nShading (%) , Schaduw (%)\nShadow , Schaduw\nShadow Contrast , Schaduwcontrast\nShadow Intensity , Schaduwintensiteit\nShadow King 39 , Schaduwkoning 39\nShadow Offset X , Schaduwcompensatie X\nShadow Offset Y , Schaduwcompensatie Y\nShadow Patch , Schaduwflard\nShadow Size , Schaduwgrootte\nShadow Smoothness , Schaduw Gladheid\nShadows , Schaduwen\nShadows Abstraction , Schaduw Abstractie\nShadows Brightness , Schaduwen Helderheid\nShadows Color Intensity , Schaduwkleurintensiteit\nShadows Hue Shift , Schaduwtint verschuiving\nShadows Lightness , Schaduwen Lichtheid\nShadows Selection , Schaduw selectie\nShadows Threshold , Schaduwdrempel\nShadows Zone , Schaduwzone\nShape , Vorm\nShape Area Max , Vormgebied Max.\nShape Area Max0 , Vormgebied Max0\nShape Area Min , Vormgebied Min\nShape Area Min0 , Vormgebied Min0\nShape Average , Vorm Gemiddelde\nShape Average0 , Vorm Gemiddelde0\nShape Max , Vorm Max.\nShape Max0 , Vorm Max0\nShape Median , Vorm Mediaan\nShape Median0 , Vorm Mediaan0\nShape Min , Vorm Min\nShape Min0 , Vorm Min0\nShapeaverage , Vormgeving\nShapeism , Vormgeving\nShapes , Vormen\nSharp Abstract , Scherp Abstract\nSharpen , Scherpte\nSharpen [Deblur] , Scherp [Deblur]\nSharpen [Gold-Meinel] , Scherp [Gold-Meinel]\nSharpen [Gradient] , Verscherpen [Gradiënt]\nSharpen [Hessian] , Scherp [Hessian]\nSharpen [Inverse Diffusion] , Scherp [Inverse Diffusion]\nSharpen [Multiscale] , Scherp [Multiscale]\nSharpen [Octave Sharpening] , Slijpen [Octaafslijpen]\nSharpen [Richardson-Lucy] , Scherp [Richardson-Lucy]\nSharpen [Shock Filters] , Scherp [Schokfilters]\nSharpen [Texture] , Scherp [Textuur]\nSharpen [Tones] , Scherp [Tonen]\nSharpen [Unsharp Mask] , Scherp [Unsharp Mask]\nSharpen [Whiten] , Scherp [Whiten]\nSharpen Details in Preview , Details verscherpen in Voorvertoning\nSharpen Edges Only , Alleen de randen slijpen\nSharpen Object , Voorwerp slijpen\nSharpen Radius , Straal slijpen\nSharpen Shades , Scherpere tinten\nSharpened Areas Only , Alleen geslepen gebieden\nSharpening , Aanscherping\nSharpening Layer , Aanscherpingslaag\nSharpening Radius , Slijpstraal\nSharpening Strength , Aanscherpende kracht\nSharpening Type , Aanscherpingstype\nSharpest , Scherpste\nSharpness , Scherpte\nShift Linear Interpolation? , Shift Lineaire Interpolatie?\nShift Point , Verschuivingspunt\nShift X , Verschuiving X\nShift Y , Verschuiving Y\nShininess , Glanzigheid\nShivers , Rillingen\nShock Waves , Schokgolven\nShopping Cart , Winkelwagen\nShow Both Poles , Toon beide polen\nShow Difference , Verschil tonen\nShow Frame , Toon Frame\nShow Grid , Toon rooster\nShow Watershed , Toon Waterschuur\nShrink , Krimp\nShuffle Pieces , Shuffle Stukken\nSide by Side , Zij aan zij\nSierpinksi Design , Sierpinksi Ontwerp\nSierpinski Triangle , Sierpinski Driehoek\nSilver , Zilver\nSimilarity Space , Gelijkaardigheid Ruimte\nSimple Local Contrast , Eenvoudig lokaal contrast\nSimple Noise Canvas , Eenvoudig geluidsdoek\nSimulate Film , Film simuleren\nSin(z) , Zonde(z)\nSine , Sinus\nSine+ , Sinus+\nSingle (Merged) , Enkelvoudig (samengevoegd)\nSingle Custom Depth Map , Enkele aangepaste dieptekaart\nSingle Image Stereogram , Enkele afbeelding Stereogram\nSingle Layer , Enkele laag\nSingle Opaque Shapes Over Transp. BG , Enkelvoudige Ondoorzichtige Vormen Over Transp. BG\nSix Layers , Zes lagen\nSixteen Threads , Zestien Draden\nSize , Grootte\nSize (%) , Grootte (%)\nSize for Bright Tones , Grootte voor Heldere Tinten\nSize for Dark Tones , Grootte voor Donkere Tinten\nSize of Frame Numbers (%) , Grootte van de framenaantallen (%)\nSize Variance , Groottevariatie\nSize-1 , Grootte-1\nSize-2 , Grootte-2\nSize-3 , Grootte-3\nSkeleton , Skelet\nSketch , Schets\nSkin Estimation , Huidschatting\nSkin Mask , Huidmasker\nSkin Tone Colors , Huidskleurige kleuren\nSkin Tone Mask , Huidtonenmasker\nSkin Tone Protection , Huidtoonbescherming\nSkip All Other Steps , Alle andere stappen overslaan\nSkip Finest Scales , Fijnste schalen overslaan\nSkip Others Steps , Andere stappen overslaan\nSkip This Step , Deze stap overslaan\nSkip to Use the Mask to Boost , Ga naar het masker te gebruiken om te verhogen\nSlide [Color] (26) , Dia [Kleur] (26)\nSlow &#40;Accurate&#41; , Langzaam ( Nauwkeurig )\nSlow Recovery , Langzaam herstel\nSmall , Kleine\nSmall (Faster) , Klein (Sneller)\nSmart , Slimme\nSmart Contrast , Slim contrast\nSmart Threshold , Slimme drempel\nSmooth , Vloeiend\nSmooth [Anisotropic] , Glad [Anisotroop]\nSmooth [Bilateral] , Glad [Bilateraal]\nSmooth [Block PCA] , Glad [Blok PCA]\nSmooth [Diffusion] , Gladde [Verspreiding]\nSmooth [Geometric-Median] , Glad [Geometrisch-Medisch]\nSmooth [Guided] , Glad [Geleid]\nSmooth [IUWT] , Vloeiend [IUWT]\nSmooth [Mean-Curvature] , Gladjes [Gemiddelde kromming]\nSmooth [Median] , Smooth [Mediaan]\nSmooth [NL-Means] , Vloeiend [NL-Means]\nSmooth [Patch-Based] , Glad [Patch-Based]\nSmooth [Patch-PCA] , Glad [Patch-PCA]\nSmooth [Perona-Malik] , Glad [Perona-Malik]\nSmooth [Selective Gaussian] , Vloeiend [Selectief Gaussisch]\nSmooth [Skin] , Gladde [Huid]\nSmooth [Thin Brush] , Gladde [Dunne borstel]\nSmooth [Total Variation] , Glad [Totale variatie]\nSmooth [Wavelets] , Gladde [Wavelets]\nSmooth [Wiener] , Glad [Wiener]\nSmooth Abstract , Vloeiend Abstract\nSmooth Amount , Gladde hoeveelheid\nSmooth Clear , Gladjes Duidelijk\nSmooth Colors , Gladde kleuren\nSmooth Crome-Ish , Gladde Crome-Ish\nSmooth Dark , Gladde Donker\nSmooth Fade , Gladde vervaging\nSmooth Green Orange , Gladde groene sinaasappel\nSmooth Light , Glad licht\nSmooth Looping , Gladde Looping\nSmooth Only , Alleen gladjes\nSmooth Sailing , Vloeiend Varen\nSmooth Teal Orange , Gladde Teal Oranje\nSmoothen Background Reconstruction , Achtergrond Reconstructie gladstrijken\nSmoother Edge Protection , Gladdere randbescherming\nSmoother Sharpness , Gladder Scherpte\nSmoother Softness , Gladder Zachtheid\nSmoothing , Het gladstrijken van\nSmoothing Style , Het gladstrijken van Stijl\nSmoothing Type , Het gladmaken van Type\nSmoothness , Gladheid\nSmoothness (%) , Gladheid (%)\nSmoothness (px) , Gladheid (px)\nSmoothness Shadow , Gladheid Schaduw\nSmoothness Type , Gladheid Type\nSnowflake , Sneeuwvlokje\nSnowflake 2 , Sneeuwvlokje 2\nSnowflake Recursion , Sneeuwvlokje Recursie\nSoft , Zacht\nSoft  Light , Zacht licht\nSoft Burn , Zachte verbranding\nSoft Dodge , Zachte Dodge\nSoft Fade , Zachte vervaging\nSoft Glow , Zachte gloed\nSoft Glow [Animated] , Zachte gloed [Geanimeerd]\nSoft Light , Zacht licht\nSoft Random Shades , Zachte Willekeurige Tinten\nSoft Warming , Zachte Verwarming\nSoften , Verzacht\nSoften All Channels , Alle kanalen verzachten\nSoften Guide , Verzacht Gids\nSolarize , Solariseren\nSolarize Color , Solariseren van de kleur\nSolidify , Verstevigen\nSolve Maze , Doolhof oplossen\nSome , Enkele\nSome Blue , Wat Blauw\nSome Cyan , Een beetje cyaan\nSome Green , Een beetje groen\nSome Key , Wat Sleutel\nSome Magenta , Sommige Magenta\nSome Red , Een beetje rood\nSome Yellow , Wat Geel\nSort Colors , Sorteer Kleuren\nSorting Criterion , Sorteercriteria\nSource (%) , Bron (%)\nSource Color #1 , Bronkleur #1\nSource Color #10 , Bronkleur #10\nSource Color #11 , Bronkleur #11\nSource Color #12 , Bronkleur #12\nSource Color #13 , Bronkleur #13\nSource Color #14 , Bronkleur #14\nSource Color #15 , Bronkleur #15\nSource Color #16 , Bronkleur #16\nSource Color #17 , Bronkleur #17\nSource Color #18 , Bronkleur #18\nSource Color #19 , Bronkleur #19\nSource Color #2 , Bronkleur #2\nSource Color #20 , Bronkleur #20\nSource Color #21 , Bronkleur #21\nSource Color #22 , Bronkleur #22\nSource Color #23 , Bronkleur #23\nSource Color #24 , Bronkleur #24\nSource Color #3 , Bronkleur #3\nSource Color #4 , Bronkleur #4\nSource Color #5 , Bronkleur #5\nSource Color #6 , Bronkleur #6\nSource Color #7 , Bronkleur #7\nSource Color #8 , Bronkleur #8\nSource Color #9 , Bronkleur #9\nSource X-Tiles , Bron X-Tegels\nSource Y-Tiles , Bron Y-Tegels\nSpace , Ruimte\nSpacing , Afstand\nSpan , Spanwijdte\nSpatial Bandwidth , Ruimtelijke bandbreedte\nSpatial Metric , Ruimtelijk Metrisch\nSpatial Overlap , Ruimtelijke overlapping\nSpatial Precision , Ruimtelijke precisie\nSpatial Radius , Ruimtelijke Straal\nSpatial Regularization , Ruimtelijke regularisatie\nSpatial Sampling , Ruimtelijke bemonstering\nSpatial Scale , Ruimtelijke schaal\nSpatial Tolerance , Ruimtelijke tolerantie\nSpatial Transition , Ruimtelijke Overgang\nSpatial Variance , Ruimtelijke variatie\nSpecial Effects , Speciale effecten\nSpecific Saturation , Specifieke verzadiging\nSpecify Different Output Size , Specificeer Verschillende Uitgangsgrootte\nSpecify HaldCLUT As , Geef HaldCLUT op als\nSpecular , Specifiek\nSpecular (%) , Specifiek (%)\nSpecular Centering , Specifiek centreren\nSpecular Intensity , Speculatieve intensiteit\nSpecular Light , Specifiek licht\nSpecular Lightness , Speculatieve lichtheid\nSpecular Shininess , Speculatieve Glanzigheid\nSpecular Size , Specifiek formaat\nSpeed , Snelheid\nSphere , Bol\nSpiral , Spiraal\nSpiral RGB , Spiraalvormige RGB\nSpline Max Angle (deg) , Spline Max Hoek (deg)\nSpline Max Length (px) , Spline Max Lengte (px)\nSpline Roundness , Spline Rondheid\nSplit Base and Detail Output , Gesplitste basis en detailuitgang\nSplit Brightness / Colors , Split Helderheid / Kleuren\nSplit Details [Alpha] , Gesplitste details [Alpha]\nSplit Details [Gaussian] , Gesplitste details [Gaussian]\nSplit Details [Wavelets] , Gesplitste details [Wavelets]\nSponge , Spons\nSpread , Verspreiden\nSpread Amount , Gespreid bedrag\nSpread Angles , Verspreidingshoeken\nSpread Noise Amount , Gespreid geluidsbedrag\nSpreading , Verspreiding\nSpring Morning , Lentemorgen\nSprocket 231 , Tandwiel 231\nSpy 29 , Spioneren 29\nSquare , Vierkant\nSquare (Inv.) , Vierkant (Inv.)\nSquare 1 , Vierkant 1\nSquare 2 , Vierkant 2\nSquare to Circle , Vierkant naar Cirkel\nSquares , Pleinen\nSquares (Outline) , Vierkanten (Overzicht)\nSRGB Conversion , SRGB-omzetting\nStabilizer , Stabilisator\nStained Glass , Gebrandschilderd glas\nStamp , Stempel\nStandard , Standaard\nStandard (256) , Standaard (256)\nStandard [No Scan] , Standaard [Geen scan]\nStandard Deviation , Standaardafwijking\nStar , Ster\nStar: -5*(z^3/3-Z/4)/2 , Ster: -5*(z^3/3-Z/4)/2\nStars , Sterren\nStars (Outline) , Sterren (overzicht)\nStart Angle , Starthoek\nStart Color , Startkleur\nStart Frame Number , Startframenummer\nStart of Mid-Tones , Begin van de Mid-Tones\nStarting Angle , Starthoek\nStarting Color , Beginnende kleur\nStarting Feathering , Starten met veren\nStarting Frame , Startframe\nStarting Level , Beginnend niveau\nStarting Pattern , Startpatroon\nStarting Point , Uitgangspunt\nStarting Point (%) , Uitgangspunt (%)\nStarting Scale (%) , Beginschaal (%)\nStarting Value , Beginwaarde\nStationary Frames , Stationaire Frames\nStd Angle (deg.) , Std Hoek (deg.)\nStd Branching , Std Vertakking\nStd Length Factor (%) , Std Lengte Factor (%)\nStd Thickness Factor (%) , Std-diktefactor (%)\nStencil Type , Sjabloontype\nStep , Stap\nStep (%) , Stap (%)\nSteps , Stappen\nStereo Image , Stereobeeld\nStereo Window Position , Stereo Venster Positie\nStereographic Projection , Stereografische projectie\nStereoscopic Image Alignment , Stereoscopische beelduitlijning\nStereoscopic Window Position , Stereoscopische vensterpositie\nStraight , Rechtstreeks\nStreet , Straat\nStrength , Sterkte\nStrength (%) , Sterkte (%)\nStrength Effect , Sterkte-effect\nStrength Highlights , Sterkte Highlights\nStrength Midtones , Kracht Midtonen\nStrength Shadows , Kracht Schaduwen\nStretch , Rekken\nStretch Colors , Stretch Kleuren\nStretch Contrast , Rekcontrast\nStretch Factor , Stretchfactor\nStripe Orientation , Streep Oriëntatie\nStroke , Slag\nStroke Angle , Slaghoek\nStroke Length , Slaglengte\nStroke Strength , Slagkracht\nStrong , Sterke\nStructure Smoothness , Structuur Gladheid\nStyle , Stijl\nStyle Variations , Stijlvariaties\nSubdivisions , Onderverdelingen\nSubpixel Interpolation , Subpixelinterpolatie\nSubpixel Level , Subpixelniveau\nSubsampling (%) , Subbemonstering (%)\nSubtle Blue , Subtiel blauw\nSubtle Green , Subtiel groen\nSubtle Yellow , Subtiel Geel\nSubtract , Aftrekken\nSubtractive , Subtractief\nSummer , Zomer\nSummer (alt) , Zomer (alt)\nSunny , Zonnig\nSunny (alt) , Zonnig (alt)\nSunny (rich) , Zonnig (rijk)\nSunny (warm) , Zonnig (warm)\nSuper Warm (rich) , Super Warm (rijk)\nSuperformula , Superformule\nSuperimpose with Original? , Overstelpen met Origineel?\nSurface Disturbance , Oppervlakteverstoring\nSurface Disturbance Multiplier , Oppervlakteverstoring Vermenigvuldiger\nSwan , Zwaan\nSwap Colors , Swap Kleuren\nSwap Layers , Swap Lagen\nSwap Radius / Angle , Swap Radius / Hoek\nSwap Sides , Swap Kanten\nSweet Bubblegum , Zoete Bubblegum\nSweet Gelatto , Zoete gelatoeage\nSymmetric 2D Shape , Symmetrische 2D-vorm\nSymmetrize , Symmetrie\nSymmetry , Symmetrie\nSymmetry Sides , Symmetrie zijden\nSynthesis Scale , Syntheseschaal\nTangent Radius , Raaklijnstraal\nTarget Color #1 , Doelwitkleur #1\nTarget Color #10 , Doelwitkleur #10\nTarget Color #11 , Doelwitkleur #11\nTarget Color #12 , Doelwitkleur #12\nTarget Color #13 , Doelwitkleur #13\nTarget Color #14 , Doelwitkleur #14\nTarget Color #15 , Doelwitkleur #15\nTarget Color #16 , Doelwitkleur #16\nTarget Color #17 , Doelwitkleur #17\nTarget Color #18 , Doelwitkleur #18\nTarget Color #19 , Doelwitkleur #19\nTarget Color #2 , Doelwitkleur #2\nTarget Color #20 , Doelwitkleur #20\nTarget Color #21 , Doelwitkleur #21\nTarget Color #22 , Doelwitkleur #22\nTarget Color #23 , Doelwitkleur #23\nTarget Color #24 , Doelwitkleur #24\nTarget Color #3 , Doelwitkleur #3\nTarget Color #4 , Doelwitkleur #4\nTarget Color #5 , Doelwitkleur #5\nTarget Color #6 , Doelwitkleur #6\nTarget Color #7 , Doelwitkleur #7\nTarget Color #8 , Doelwitkleur #8\nTarget Color #9 , Doelwitkleur #9\nTeal Magenta Gold , Teal Magenta Goud\nTeal Orange , Teal Oranje\nTeal Orange 1 , Teal Oranje 1\nTeal Orange 2 , Teal Oranje 2\nTeal Orange 3 , Teal Oranje 3\nTechnicalFX - Backlight Filter , TechnicalFX - Achtergrondverlichtingsfilter\nTemperature Balance , Temperatuursaldo\nTen Layers , Tien lagen\nTends to Be Square , De neiging om vierkant te zijn\nTension Green 1 , Spanning Groen 1\nTension Green 2 , Spanning Groen 2\nTension Green 3 , Spanning Groen 3\nTension Green 4 , Spanning Groen 4\nTensor Smoothness , Tensor Gladheid\nTertiary Factor , Tertiaire factor\nTertiary Gamma , Tertiair Gamma\nTertiary Shift , Tertiaire verschuiving\nTertiary Twist , Tertiaire Twist\nText , Tekst\nTexture , Textuur\nTexture Enhance , Textuurverbetering\nTextured Glass , Getextureerd glas\nThe Game of Life , Het spel van het leven\nThe Matrices , De Matrices\nThickness , Dikte\nThickness (%) , Dikte (%)\nThickness (px) , Dikte (px)\nThickness Factor , Diktefactor\nThin Edges , Dunne randen\nThin Separators , Dunne separatoren\nThinness , Dunheid\nThinning , Verdunning\nThinning (Slow) , Uitdunnen (Langzaam)\nThree Layers , Drie lagen\nThreshold , Drempelwaarde\nThreshold (%) , Drempel (%)\nThreshold Etch , Drempelwaarde-etch\nThreshold High , Drempelwaarde hoog\nThreshold Low , Drempel Laag\nThreshold Max , Drempel Max.\nThreshold Mid , Drempelwaarde Midden\nThreshold On , Drempelwaarde op\nThumbnail Size , Miniatuurafmeting\nTiger , Tijger\nTile Poles , Tegelpalen\nTile Size , Tegelgrootte\nTileable Rotation , Tegelvormige rotatie\nTiled Isolation , Betegelde Isolatie\nTiled Normalization , Betegelde Normalisatie\nTiled Parameterization , Betegelde parametrering\nTiled Preview , Betegelde preview\nTiled Random Shifts , Betegelde willekeurige verschuivingen\nTiled Rotation , Betegelde rotatie\nTiles , Tegels\nTiles to Layers , Tegels naar lagen\nTilt , Kantelen\nTime , Tijd\nTime Step , Tijd Stap\nTimed Image , Getimede afbeelding\nTiny , Kleine\nTo Equirectangular , Naar Equirectangular\nTo Nadir / Zenith , Naar Nadir / Zenith\nToasted Garden , Geroosterde Tuin\nToggle to View Base Image , Omschakelen naar de basisafbeelding\nTolerance , Tolerantie\nTolerance to Gaps , Tolerantie voor gaten\nTonal Bandwidth , Tonale bandbreedte\nTone Blur , Toonvervaging\nTone Enhance , Toonvergroting\nTone Gamma , Toon gamma\nTone Mapping , Toonkaarten\nTone Mapping (%) , Toonhoogtebepaling (%)\nTone Mapping [Fast] , Toonkaarten [Snel]\nTone Mapping Fast , Toonkaarten snel\nTone Mapping Soft , Toonhoogte Zacht\nTone Presets , Toon Toon Toonregeling\nTone Threshold , Toongrens\nTones Range , Toonbereik\nTones Smoothness , Tonen Gladheid\nTones to Layers , Tonen naar lagen\nTop Layer , Bovenste laag\nTop Left , Linksboven\nTop Right , Rechtsboven\nTop-Right Vertex (%) , Top-rechtse hoek (%)\nTotal Layers , Totaal aantal lagen\nTotal Variation , Totale variatie\nTransfer Colors [Histogram] , Overdrachtskleuren [Histogram]\nTransfer Colors [Patch-Based] , Overdrachtskleuren [Patch-Based]\nTransfer Colors [PCA] , Overdrachtskleuren [PCA]\nTransfer Colors [Variational] , Overdrachtskleuren [Variant]\nTransform , Transformeer\nTransition Map , Overgangskaart\nTransition Shape , Overgangsvorm\nTransition Smoothness , Overgangssoepelheid\nTransmittance Map , Overdrachtskaart\nTransparency , Transparantie\nTransparent , Transparant\nTransparent Background , Transparante achtergrond\nTransparent Black & White , Transparant zwart-wit\nTransparent Color , Transparante kleur\nTransparent on Black , Transparant op zwart\nTransparent on White , Transparant op Wit\nTransparent Skin , Transparante huid\nTree , Boom\nTriangle , Driehoek\nTriangles , Driehoeken\nTriangles (Outline) , Driehoeken (overzicht)\nTriangular Ha , Driehoekige Ha\nTriangular Hb , Driehoekig Hb\nTriangular Va , Driehoekige Va\nTriangular Vb , Driehoekig Vb\nTritanomaly , Tritanomalie\nTrue Colors 8 , Ware kleuren 8\nTrunk Color , Boomstamkleur\nTrunk Opacity (%) , Boomstamopaciteit (%)\nTrunks , Koffers\nTulips , Tulpen\nTurbulence , Turbulentie\nTurbulence 2 , Turbulentie 2\nTurbulent Halftone , Turbulente Halftoon\nTurn on Rotate and Twirl , Aanzetten Draaien en Twirlennen\nTwisted Rays , Gedraaide stralen\nTwo Layers , Twee lagen\nTwo Threads , Twee draden\nTwo-By-Two , Twee-bij-twee\nType Snowflake , Type Sneeuwvlokje\nUnaligned Images , Onafgestemde beelden\nUndeniable , Onmiskenbaar\nUndeniable 2 , Onmiskenbaar 2\nUnderwater , Onderwater\nUndo Anaglyph , Anaglyph ongedaan maken\nUnknown , Onbekend\nUnpurple , Onzuivere\nUnsharp Mask , Onscherp Masker\nUntwist , Ontwijken\nUp-Left , Up-Links\nUp-Right , Rechtsboven\nUpper Layer Is the Top Layer for All Blends , Bovenste laag is de bovenste laag voor alle mengsels\nUpper Side Orientation , Bovenzijde Oriëntatie\nUppercase Letters , Hoofdletters\nUpscale [Diffusion] , Upscale [Verspreiding]\nUrban Cowboy , Stedelijke Cowboy\nUse as Hue , Gebruik als Tint\nUse as Saturation , Gebruik als verzadiging\nUse Individual Depth Map , Gebruik de individuele dieptekaart\nUse Light , Gebruikslicht\nUse Maximum Tones , Gebruik Maximale Tonen\nUse Top Layer as a Priority Mask , Gebruik de bovenste laag als een prioritair masker\nUser-Defined , Door de gebruiker gedefinieerd\nUser-Defined (Bottom Layer) , Door de gebruiker gedefinieerd (bodemlaag)\nUzbek Bukhara , Oezbeekse Bukhara\nUzbek Marriage , Oezbeeks Huwelijk\nUzbek Samarcande , Oezbeekse Samarcande\nVal Range , Val Val range\nValue , Waarde\nValue Action , Waarde Actie\nValue Blending , Waarde mengen\nValue Bottom , Waarde Bodem\nValue Correction , Waardecorrectie\nValue Factor , Waardefactor\nValue Normalization , Waarde Normalisatie\nValue Offset , Waardecorrectie\nValue Precision , Waarde Precisie\nValue Range , Waardebereik\nValue Scale , Waardeschaal\nValue Shift , Waardeverschuiving\nValue Smoothness , Waarde Gladheid\nValue Top , Waarde Top\nValue Variance , Waardevariatie\nValues , Waarden\nVan Gogh: Almond Blossom , Van Gogh: Amandelbloesem\nVan Gogh: Irises , Van Gogh: Irissen\nVan Gogh: The Starry Night , Van Gogh: De sterrennacht\nVan Gogh: Wheat Field with Crows , Van Gogh: Korenveld met kraaien\nVariability , Variabiliteit\nVariance , Variant\nVariation A , Variatie A\nVariation B , Variatie B\nVariation C , Variatie C\nVector Painting , Vector Schilderen\nVelocity , Snelheid\nVertex Type , Hoekpunt Type\nVertical , Verticaal\nVertical (%) , Verticaal (%)\nVertical 1 Amount , Verticaal 1 Bedrag\nVertical 1 Length , Verticaal 1 Lengte\nVertical 2 Amount , Verticaal 2 Bedrag\nVertical 2 Length , Verticaal 2 Lengte\nVertical Amount , Verticaal Bedrag\nVertical Array , Verticale Serie\nVertical Blur , Verticale vervaging\nVertical Length , Verticale lengte\nVertical Size (%) , Verticale grootte (%)\nVertical Stripes , Verticale strepen\nVertical Tiles , Verticale tegels\nVery Course 5 , Zeer Cursus 5\nVery Fine , Zeer Fijn\nVery High , Zeer hoog\nVery High (Even Slower) , Zeer hoog (zelfs langzamer)\nVery Warm Greenish , Zeer warm groenachtig\nVibrant , Levendige\nVibrant (alien) , Levendig (vreemdeling)\nVibrant (contrast) , Levendig (contrast)\nVibrant (crome-Ish) , Levendig (crome-Ish)\nVictory , Overwinning\nView Outlines Only , Alleen hoofdlijnen bekijken\nView Resolution , Bekijk de resolutie\nVignette , Vignet\nVignette Contrast , Vignetcontrast\nVignette Max Radius , Vignet Max Radius\nVignette Min Radius , Vignet Min Radius\nVignette Size , Vignetgrootte\nVignette Strength , Vignetsterkte\nVignette Strenth , Vignet Strenth\nVintage (brighter) , Vintage (helderder)\nVintage Chrome , Vintage Chroom\nVintage Style , Vintage Stijl\nVintage Warmth 1 , Vintage Warmte 1\nVirtual Landscape , Virtueel landschap\nVisible Watermark , Zichtbaar watermerk\nVivid Edges , Levendige randen\nVivid Edges* , Levendige randen*\nVivid Light , Levendig licht\nVivid Screen , Levendig scherm\nWall , Muur\nWarm (highlight) , Warm (hoogtepunt)\nWarm (yellow) , Warm (geel)\nWarm Dark Contrasty , Warme donkere contrasten\nWarm Fade , Warme Fade\nWarm Fade 1 , Warme Fade 1\nWarm Neutral , Warm Neutraal\nWarm Sunset Red , Warme zonsondergang rood\nWarm Teal , Warm Wintertaling\nWarm Vintage , Warme Vintage\nWarp [Interactive] , Warp [Interactief]\nWarp by Intensity , Scheeftrekking door intensiteit\nWaterfall , Waterval\nWave , Golfen\nWave(s) , Golf(en)\nWavelength , Golflengte\nWaves Amplitude , Golven Amplitude\nWaves Smoothness , Golven Gladheid\nWe'll See , We zullen zien.\nWeave , Weven\nWeird , Vreemd\nWhirl Drawing , Wervelende tekening\nWhite , Wit\nWhite Dices , Witte dobbelstenen\nWhite Layers , Witte lagen\nWhite Level , Wit niveau\nWhite on Black , Wit op zwart\nWhite on Transparent , Wit op Transparant\nWhite on Transparent Black , Wit op Transparant Zwart\nWhite Point , Witte punt\nWhite to Black , Wit tot zwart\nWhite Walls , Witte muren\nWhiter Whites , Witten\nWhites , Blanken\nWidth , Breedte\nWidth (%) , Breedte (%)\nWinter Lighthouse , Wintervuurtoren\nWipe , Veeg\nWiremap , Draadkaart\nWithout , Zonder\nWooden Gold 20 , Houten Goud 20\nWork on Frameset , Werken aan Frameset\nWrap , Wikkel\nX Center , X Centrum\nX-Axis Then Y-Axis , X-Axis Dan Y-Axis\nX-Coordinate [Manual] , X-Coordinate [Handleiding]\nX-Dispersion , X-Dispersie\nX-Ratio , X-verhouding\nX-Rotation , X-Rotatie\nX-Scale , X-Schaal\nX-Variations , X-Variaties\nX/Y-Ratio , X/Y-verhouding\nX1 (none) , X1 (geen)\nXor , Xof\nXY Mirror , XY Spiegel\nXY-Coordinates (%) , XY-Coordinaten (%)\nY Center , Y-Centrum\nY-Axis Then X-Axis , Y-Axis Dan X-Axis\nY-Coordinate [Manual] , Y-Coordinate [Handleiding]\nY-Dispersion , Y-Dispersie\nY-Ratio , Y-verhouding\nY-Rotation , Y-Rotatie\nY-Scale , Y-Schaal\nY-Variations , Y-variaties\nYAG Effect , YAG-effect\nYCbCr (Chroma Only) , YCbCr (alleen Chroma)\nYCbCr (Distinct) , YCbCr (Onderscheiden)\nYCbCr (Luma Only) , YCbCr (alleen Luma)\nYCbCr (Mixed) , YCbCr (Gemengd)\nYCbCr [Luminance] , YCbCr [Luminantie]\nYellow , Geel\nYellow 55B , Geel 55B\nYellow Factor , Gele factor\nYellow Film 01 , Gele film 01\nYellow Shift , Gele Verschuiving\nYellow Smoothness , Geel Gladheid\nYES8 , JA8\nYou Can Do It , Je kunt het doen.\nZ-Angle , Z-Angel\nZ-Rotation , Z-Rotatie\nZ-Scale , Z-Schaal\nZ^^6 + Z^^3 - 1 , Z^^6 + Z^3 - 1\nZ^^8 + 15*z^^4 - 1 , Z^8 + 15*z^4 - 1\nZero , Nul\nZilverFX - B&W Solarization , ZilverFX - Zonne-energie in zwart-wit\nZilverFX - InfraRed , ZilverFX - Infrarood\nZilverFX - Vintage B&W , ZilverFX - Vintage Z&W\nZone System , Zone-systeem\nZoom , Zoomen\nZoom Center , Zoom Zoom Centrum\nZoom Factor , Zoomfactor\nZoom In , Inzoomen\nZoom Out , Uitzoomen\n"
  },
  {
    "path": "translations/filters/gmic_qt_pl.csv",
    "content": "<b>Arrays & Tiles</b> , <b>Tablice i płytki</b>\n<b>Artistic</b> , <b>Artystyczny</b>\n<b>Black & White</b> , <b>Black & White</b>\n<b>Colors</b> , <b>Kolory</b>\n<b>Contours</b> , <b>Kontury</b>\n<b>Deformations</b> , <b>Deformacje</b>\n<b>Degradations</b> , <b>Degradacja</b>\n<b>Details</b> , <b>Szczegóły</b>\n<b>Testing</b> , <b>Testowanie</b>\n<b>Frames</b> , <b>Ramki</b>\n<b>Frequencies</b> , <b>Częstotliwości</b>\n<b>Layers</b> , <b>Warstwy</b>\n<b>Lights & Shadows</b> , <b>Światła i cienie</b>\n<b>Patterns</b> , <b>Wzory</b>\n<b>Rendering</b> , <b>Rendering</b>\n<b>Repair</b> , <b>Naprawa</b>\n<b>Sequences</b> , <b>Sekwencje</b>\n<b>Silhouettes</b> , <b>Sylwetki</b>\n<b>Icons</b> , <b>Ikony</b>\n<b>Misc</b> , <b>Misc</b>\n<b>Nature</b> , <b>Przyroda</b>\n<b>Others</b> , <b>Inni</b>\n<b>Stereoscopic 3D</b> , <b>Stereoskopowy 3D</b>\n*Vivid Edges* , *Widome krawędzie*\n- NO - , - NIE -\n-1. Value Action , -1. Wartość Działania\n-2. Overall Channel(s) , -2. Ogólny kanał(y)\n-3. Normalisation Channel(s) , -3. Kanał (kanały) normalizacji\n-4. Normalise , -4. Normalizacja .\n0.  Recompute , 0. Obliczyć .\n1 Levels , 1 Poziomy\n1.  Plasma Texture [Discards Input Image] , 1. Tekstura plazmowa [Obraz wejściowy odrzucany]\n10.  Quadtree Max Precision , 10. Quadtree Max Precision\n10th , 10.\n10th Color , 10. kolor\n11.  Quadtree Min Homogeneity , 11. Quadtree Min Homogeneity\n11th , 11.\n12 Colors , 12 kolorów\n12 Grays , 12 Szarości\n12.  Quadtree Max Homogeneity , 12. Quadtree Max Homogeneity\n125 Keypoints , 125 Punkty orientacyjne\n12th , 12.\n13. Noise Type , 13. Rodzaj hałasu\n13th , 13.\n14. Minimum Noise , 14. Minimalny hałas\n14th , 14.\n15. Maximum Noise , 15. Maksymalny hałas\n15th , 15.\n16 Colors , 16 Kolory\n16 Grays , 16 Szarości\n16. Noise Channel(s) , 16. Kanał(y) Hałasowy(e)\n16th , 16.\n17. Warp Iterations , 17. Iteracje osnowy\n18. Warp Intensity , 18. Osnowa Intensywność\n180 Deg. , 180 stopni.\n19. Warp Offset , 19. Przesunięcie warp\n1st , 1.\n1st Additional Palette (.Gpl) , 1. dodatkowa paleta (.Gpl)\n1st Color , 1. kolor\n1st Parameter , 1. parametr\n1st Text , 1. tekst\n1st Tone , 1 tonacja\n1st Variance , 1 Variance\n1st X-Coord , 1. przewód X-Coord\n1st Y-Coord , 1-szy Y-Coord\n2 Colors , 2 Kolory\n2 Grays , 2 Szarości\n2 Noise , 2 Hałas\n2-Strip Process , Proces 2-krotny\n2.  Plasma Scale , 2. Skala plazmowa\n20. Scale to Width , 20. Skala do szerokości\n21. Scale to Height , 21. Skala do wysokości\n22. Correlated Channels , 22. Kanały powiązane\n22.5 Deg. , 22,5 Deg.\n23. Boundary , 23. Granica\n24. Warp Channel(s) , 24. Kanał(y) Warp\n25. Random Negation , 25. Losowa negacja\n26. Random Negation Channel(s) , 26. Kanał (kanały) losowej negacji\n29. Normalise , 29. Normalizacja\n2nd , 2.\n2nd Additional Palette (.Gpl) , 2. dodatkowa paleta (.Gpl)\n2nd Color , 2. kolor\n2nd Parameter , 2. parametr\n2nd Text , 2. tekst\n2nd Tone , 2. tonacja\n2nd Variance , 2. wariancja\n2nd X-Coord , 2. przewód X-Coord\n2nd Y-Coord , 2. przewód Y-Coord\n2x Type , 2x Typ\n2XY Mirror , 2XY Lustro\n3 Colors , 3 Kolory\n3 Grays , 3 Szarości\n3 Mix , 3 Mieszanka\n3.  Plasma Alpha Channel , 3. Kanał Plazmowy Alfa\n30. Minimum Hue , 30. Minimalny odcień\n31. Maximum Hue , 31. Maksymalny odcień\n32. Minimum Saturation , 32. Minimalne nasycenie\n33. Maximum Saturation , 33. Maksymalne nasycenie\n34. Minimum Value , 34. Wartość minimalna\n343 Keypoints , 343 Punkty orientacyjne\n35. Maximum Value , 35. Wartość maksymalna\n37. Saturation Offset , 37. Przesunięcie nasycenia\n38. Value Offset , 38. Przesunięcie wartości\n3D Blocks , Bloki 3D\n3D CLUT (Fast) , 3D CLUT (szybki)\n3D CLUT (Precise) , 3D CLUT (Precyzyjny)\n3D Colored Object , Kolorowy obiekt 3D\n3D Conversion , Konwersja 3D\n3D Elevation , Wzniesienie 3D\n3D Elevation [Animated] , Wzniesienie 3D [Animowane]\n3D Extrusion , Wytłaczanie 3D\n3D Extrusion [Animated] , Wytłaczanie 3D [Animowane]\n3D Image Object , Obiekt obrazu 3D\n3D Image Object [Animated] , Obiekt obrazu 3D [Animowany]\n3D Image Type , Typ obrazu 3D\n3D Lathing , 3D Wytrzymałość\n3D Metaballs , Metabale 3D\n3D Random Objects , Obiekty losowe 3D\n3D Reflection , Odbicie 3D\n3D Rubber Object , Gumowy obiekt 3D\n3D Text Pointcloud , Chmura punktów tekstowych 3D\n3D Tiles , Płytki 3D\n3D Video Conversion , Konwersja wideo 3D\n3D Waves , Fale 3D\n3rd , 3.\n3rd Color , 3. kolor\n3rd Parameter , 3. parametr\n3rd Tone , 3. tonacja\n3rd X-Coord , 3. przewód X-Coord\n3rd Y-Coord , 3. przewód Y-Coord\n4 Colors , 4 Kolory\n4 Grays , 4 Szarości\n4.  Segmentation [No Alpha Channel] , 4. Segmentacja [Brak kanału alfa]\n4096x4096 Layer , 4096x4096 Warstwa\n4th , 4.\n4th Color , 4. kolor\n4th Tone , 4. tonacja\n5.  Edge Threshold , 5. Próg krawędziowy\n512x512 Layer , 512x512 Warstwa\n5th , piąty\n5th Color , 5. kolor\n5th Tone , 5. tonacja\n6.  Smoothness , 6. Gładkość\n60's (faded Alt) , Lata 60. (wyblakłe Alt)\n60's (faded) , Lata 60. (wyblakłe)\n64 (Faster) , 64 (Szybciej)\n67.5 Deg. , 67,5 Deg.\n6th , szósty\n6th Color , 6. kolor\n6th Tone , 6 Ton\n7.  Blur , 7. Rozmycie\n7th , 7.\n7th Color , 7. kolor\n7th Tone , 7 Ton\n8 Colors , 8 Kolory\n8 Grays , 8 Szarości\n8 Keypoints (RGB Corners) , 8 punktów kluczowych (RGB Corners)\n8.  Quadtree Pixelisation [No Alpha Channel] , 8. Pikselizacja czterodniowa [Brak kanału alfa]\n8th , 8.\n8th Color , 8. kolor\n8th Tone , 8. tonacja\n9.  Quadtree Min Precision , 9. Quadtree Min Precision\n9th , 9.\n9th Color , 9. kolor\n[Cyan]MYK , MYK\nA Lot of Cyan , Dużo Cyanu\nA Lot of Magenta , Dużo Magenty\nA-Color Factor , Współczynnik A-Color\nA-Component , A-Komponent\nA4 / 100 PPI (Recommended) , A4 / 100 PPI (zalecane)\nAbout G'MIC , O G'MIC\nAbsolute Brightness , Absolutna jasność\nAbsolute Value , Wartość bezwzględna\nAbstraction , Abstrakcja\nAcceleration , Przyspieszenie\nAchromatomaly , Achromatomalia\nAchromatopsia , Achromatopsja\nAction , Działanie\nAction #1 , Działanie nr 1\nAction #10 , Akcja nr 10\nAction #11 , Akcja nr 11\nAction #12 , Akcja nr 12\nAction #13 , Działanie nr 13\nAction #14 , Działanie nr 14\nAction #15 , Akcja nr 15\nAction #16 , Działanie nr 16\nAction #17 , Działanie nr 17\nAction #18 , Akcja nr 18\nAction #19 , Akcja #19\nAction #2 , Działanie nr 2\nAction #20 , Akcja nr 20\nAction #21 , Działanie nr 21\nAction #22 , Działanie nr 22\nAction #23 , Akcja nr 23\nAction #24 , Akcja nr 24\nAction #3 , Akcja nr 3\nAction #4 , Akcja nr 4\nAction #5 , Działanie nr 5\nAction #6 , Działanie nr 6\nAction #7 , Działanie nr 7\nAction #8 , Akcja nr 8\nAction #9 , Akcja nr 9\nAction Magenta 01 , Działanie Magenta 01\nAction Red 01 , Akcja Czerwony 01\nActivate 'Pencil Smoother' , Aktywacja \"Pencil Smoother\nActivate Color Enhancement , Aktywacja ulepszania kolorów\nActivate Colors Geometric Shapes , Aktywacja kolorów Kształty geometryczne\nActivate Custom Filter , Aktywuj filtr niestandardowy\nActivate Lizards , Aktywuj jaszczurki\nActivate Mirror , Aktywuj lustro\nActivate Pink Elephants , Aktywuj różowe słonie\nActivate Second Direction , Aktywuj drugi kierunek\nActivate Shakes , Aktywuj wstrząsy\nActivate Slice 1 , Aktywuj plaster 1\nActivate Slice 2 , Aktywuj plaster 2\nActivate Slice 3 , Aktywuj plaster 3\nActivate Slice 4 , Aktywuj plaster 4\nActiver Symmetrizoscope , Symmetrizoskop aktorowy\nAdaptive , Adaptacyjny\nAdd , Dodaj\nAdd 1px Outline , Dodaj 1px kontur\nAdd Alpha Channels to Detail Scale Layers , Dodaj kanały Alpha do szczegółowej skali warstw\nAdd as a New Layer , Dodaj jako nową warstwę\nAdd Chalk Highlights , Dodaj kredę Highlights\nAdd Color Background , Dodaj kolor tła\nAdd Comment Area in HTML Page , Dodaj obszar komentarza na stronie HTML\nAdd Grain , Dodaj ziarno\nAdd Image Label , Dodaj etykietę z obrazem\nAdd Painter's Touch , Dodaj dotyk malarza\nAdd User-Defined Constraints (Interactive) , Dodaj ograniczenia zdefiniowane przez użytkownika (Interaktywne)\nAdditional Duplicates Count , Dodatkowa liczba duplikatów\nAdditional Outline , Dodatkowy zarys\nAdditive , Dodatek\nAdjust Background Reconstruction , Regulacja rekonstrukcji tła\nAdventure 1453 , Przygoda 1453\nAlgorithm , Algorytm\nAlien Green , Obcy Zielony\nAlign Image Streams , Wyrównywanie strumieni obrazu\nAlign Layers , Wyrównać warstwy\nAligned , Wyrównane\nAlignment Type , Typ wyrównania\nAll , Wszystkie\nAll 45° Rotations , Wszystkie 45 i stopnie; Obroty\nAll 90° Rotations , Wszystkie 90 i stopnie; Obroty\nAll [Collage] , Wszystko [Kolaż]\nAll but Reference Color , Wszystkie oprócz koloru odniesienia\nAll Layers and Masks , Wszystkie warstwy i maski\nAll Tones , Wszystkie tony\nAll XY-Flips , Wszystkie XY-Flipy\nAllow Angle , Pozwól na kąt\nAllow Self Intersections , Pozwól na skrzyżowania własne\nAlpha Channel , Kanał Alfa\nAlpha Mode , Tryb Alpha\nAlso Match Gradients , Również gradienty dopasowania\nAmbient Lightness , Lekkość otoczenia\nAmount , Kwota\nAmplitude , Amplituda\nAmplitude (%) , Amplituda (%)\nAmplitude / Angle , Amplituda / Kąt\nAnaglyph Blue/yellow , Anaglif Niebieski/żółty\nAnaglyph Blue/yellow Optimized , Anaglif Niebieski/żółty Zoptymalizowany\nAnaglyph Glasses Adjustment , Regulacja okularów anaglifowych (Anaglyph Glasses)\nAnaglyph Green/magenta , Anaglif Zielony/magenta\nAnaglyph Green/magenta Optimized , Anaglif Zielony/magenta Zoptymalizowany\nAnaglyph Reconstruction , Rekonstrukcja anaglifowa\nAnaglyph Red/cyan , Anaglif Czerwony/cyan\nAnaglyph Red/cyan Optimized , Anaglif Czerwony/cyan Zoptymalizowany\nAnaglyph: Red/Cyan , Anaglif: Czerwony/Cyjan\nAnalogFX - Old Style I , AnalogFX - Stary Styl I\nAnalogFX - Old Style II , AnalogFX - Stary Styl II\nAnalogFX - Old Style III , AnalogFX - Stary Styl III\nAnalysis Scale , Skala analityczna\nAnalysis Smoothness , Analiza Gładkość\nAnd , I\nAngle , Kąt\nAngle (%) , Kąt (%)\nAngle (deg) , Kąt (stopień)\nAngle (deg.) , Kąt (stopień)\nAngle / Size , Kąt / Rozmiar\nAngle Cut , Kątowe cięcie\nAngle Dispersion , Rozproszenie kątowe\nAngle Image Contour , Kątowy kontur obrazu\nAngle of Disturbance Surface , Kąt Zaburzenia Powierzchnia\nAngle of Main Nebulous Surface , Kąt głównej powierzchni mgławicowej\nAngle Range , Zasięg kątowy\nAngle Range (deg.) , Zasięg kątowy (deg.)\nAngle Tilt , Kąt nachylenia\nAngle Variations , Zmiany kątów\nAnguish , Udręka\nAngular , Kątowy\nAngular Precision , Precyzja kątowa\nAngular Tiles , Płytki kątowe\nAnisotropic , Anizotropowy\nAnisotropy , Anizotropia\nAnnular Steiner Chain Round Tiles , Okrągłe płytki łańcuchowe okrągłe Steinera\nAnti-Aliasing , Anty-Aliasing\nAntisymmetry , Antysymetria\nAny , Każdy\nApocalypse This Very Moment , Apokalipsa Ta Bardzo Moment\nApples , Jabłka\nApply Adjustments On , Zastosuj korekty Wł.\nApply Color Balance , Stosowanie Color Balance\nApply External CLUT , Zastosuj zewnętrzne zamknięcie\nApply Mask , Zastosuj maskę\nApply Skin Tone Mask , Nałóż maseczkę z tonikiem skóry\nApply Transformation From , Zastosuj transformację Od\nAqua and Orange Dark , Aqua i Orange Dark\nArea , Obszar\nArea Smoothness , Obszar Gładkość\nAreas Light Adjustment , Obszary regulacji oświetlenia\nAreas Smoothness , Obszary Gładkość\nArray [Faded] , Tablica [Wyblakłe]\nArray [Mirrored] , Tablica [Mirrored]\nArray [Random Colors] , Tablica [Przypadkowe kolory]\nArray [Random] , Tablica [Losowo]\nArray [Regular] , Tablica [zwykła]\nArray Mode , Tryb macierzowy\nArrows , Strzałki\nArrows (Outline) , Strzałki (kontur)\nArtistic  Modern , Nowoczesność artystyczna\nArtistic Hard , Twardy artystyczny\nArtistic Round , Runda artystyczna\nAscii Art , Sztuka Ascii\nAspect , Aspekt\nAspect Ratio , Współczynnik aspektów\nAssociated Color , Powiązany kolor\nAttenuation , Tłumienie\nAuto Balance , Automatyczne wyważenie\nAuto Reduce Level (Level Slider Is Disabled) , Automatyczna redukcja poziomu (suwak poziomu jest wyłączony)\nAuto Set Hue Inverse (Hue Slider Is Disabled) , Automatyczne ustawianie inwersji barwy (suwak barwy jest wyłączony)\nAuto-Reduce Number of Frames , Auto-Reduce Liczba ramek\nAuto-Set Periodicity , Automatyczne ustawianie okresowości\nAuto-Threshold , Auto-próg\nAutocrop Output Layers , Warstwy wyjściowe Autocrop\nAutomatic , Automatycznie\nAutomatic & Contrast Mask , Maska automatyczna i kontrastowa\nAutomatic [Scan All Hues] , Automatyczne [skanowanie wszystkich odcieni]\nAutomatic Color Balance , Automatyczny balans kolorów\nAutomatic Depth Estimation , Automatyczne szacowanie głębokości\nAutomatic Upscale for Optimum Results , Automatyczna skala wzrostu dla optymalnych wyników\nAutumn , Jesień\nAvalanche , Lawina\nAverage , Średnia\nAverage 3x3 , Średnia 3x3\nAverage 5x5 , Średnia 5x5\nAverage 7x7 , Średnia 7x7\nAverage 9x9 , Średnia 9x9\nAverage RGB , Średni RGB\nAverage Smoothness , Średnia gładkość\nAvg Branching , Odgałęzienie Avg\nAvg Left Angle (deg.) , Avg Lewy kąt (stopień)\nAvg Length Factor (%) , Współczynnik średniej długości (%)\nAvg Thickness Factor (%) , Średni współczynnik grubości (%)\nAxis , Oś\nAzimuth , Azymut\nB&W , BOŚNIA I HERCEGOWINA\nB&W Pencil [Animated] , Ołówek B&W [Animowany]\nB&W Photograph , Fotografia B&W\nB&W Stencil [Animated] , B&W Stencil [Animowany]\nB-Color Factor , Czynnik B-Kolor\nB-Color Smoothness , B-Color Gładkość\nB-Component , B-Komponent\nBackground , Tło\nBackground Color , Kolor tła\nBackground Intensity , Tło Intensywność pomocy\nBackground Point (%) , Punkt wyjścia (%)\nBackward , Wsteczny\nBackward Horizontal , Wsteczny Poziomy\nBackward Vertical , Wsteczny Pionowy\nBalance , Bilans\nBalance Color , Równowaga kolorów\nBalance SRGB , Saldo SRGB\nBalloons , Balony\nBalls , Bale\nBand Width , Szerokość pasma\nBandwidth , Szerokość pasma\nBarbed Wire , Drut kolczasty\nBars , Bary\nBase Reference Dimension , Wymiar referencyjny podstawy\nBase Scale , Skala podstawowa\nBase Thickness (%) , Grubość podstawowa (%)\nBasic Adjustments , Dostosowania podstawowe\nBatch Processing , Przetwarzanie wsadowe\nBayer Filter , Filtr Bayera\nBayer Reconstruction , Rekonstrukcja Bayera\nBehind , Za\nBelow , Poniżej\nBerlin Sky , Berlin Niebo\nBest Match , Najlepszy mecz\nBG Textured , BG Teksturowane\nBi-Directional , Dwukierunkowy:\nBidirectional [Smooth] , Bidirectional [Gładko]\nBidirectional Rendering , Licytacja dwukierunkowa\nBilateral , Dwustronnie\nBilateral Radius , Promień dwustronny\nBinary , Binarny\nBinary Digits , Cyfry binarne\nBit Masking (End) , Maskowanie bitów (koniec)\nBit Masking (Start) , Maskowanie bitów (Start)\nBlack , Czarny\nBlack Level , Poziom czerni\nBlack on Transparent , Czarny na przezroczystym\nBlack on Transparent White , Czarny na białym przezroczystym\nBlack on White , Czarno na białym\nBlack Star , Czarna Gwiazda\nBlack to White , Od czarnego do białego\nBlacks , Czarnuchy\nBlade Runner , Biegacz łopatkowy\nBlank , Puste miejsce\nBleech Bypass Yellow 01 , Bleech Bypass Żółty 01\nBlend , Mieszanka\nBlend [Average All] , Blend [Średnia wszystkich]\nBlend [Edges] , Blend [Krawędzie]\nBlend [Median] , Blend [Mediana]\nBlend [Seamless] , Blend [Bez szwu]\nBlend All Layers , Łączyć wszystkie warstwy\nBlend Decay , Rozpad mieszaniny\nBlend Mode , Tryb mieszania\nBlend Scales , Wagi mieszane\nBlending Mode , Tryb mieszania\nBlending Size , Rozmiar mieszanki\nBlindness Type , Typ ślepoty\nBlob 1 Color , Blob 1 Kolor\nBlob 10 Color , Blob 10 Kolor\nBlob 11 Color , Blob 11 Kolor\nBlob 12 Color , Blob 12 Kolor\nBlob 2 Color , Blob 2 Kolor\nBlob 3 Color , Blob 3 Kolor\nBlob 4 Color , Blob 4 Kolor\nBlob 5 Color , Blob 5 Kolor\nBlob 6 Color , Blob 6 Kolor\nBlob 7 Color , Blob 7 Kolor\nBlob 8 Color , Blob 8 Kolor\nBlob 9 Color , Blob 9 Kolor\nBlobs Editor , Redaktor Blobs\nBloc , Blok\nBloc Size (%) , Wielkość bloku (%)\nBlockism , Blokizm\nBlue , Niebieski\nBlue & Red Chrominances , Niebieskie i czerwone Chrominancje\nBlue Chroma Factor , Współczynnik niebieskiego aromatu\nBlue Chroma Smoothness , Niebieski aromat Gładkość\nBlue Chrominance , Błękitny Chrominance\nBlue Factor , Czynnik niebieski\nBlue House , Błękitny Dom\nBlue Ice , Niebieski lód\nBlue Level , Poziom niebieski\nBlue Rotations , Niebieskie obroty\nBlue Screen Mode , Tryb Blue Screen\nBlue Smoothness , Niebieska gładkość\nBlue Steel , Niebieska stal\nBlue Wavelength , Niebieska Długość fali\nBlur , Rozmycie\nBlur [Angular] , Rozmycie [kątowe]\nBlur [Depth-Of-Field] , Rozmycie [Głębokie pole]\nBlur [Gaussian] , Rozmycie [Gaussian]\nBlur [Glow] , Rozmycie [Glow]\nBlur [Linear] , Rozmycie [Liniowe]\nBlur [Multidirectional] , Rozmycie [Wielokierunkowy]\nBlur [Radial] , Rozmycie [Radial]\nBlur Alpha , Rozmycie Alfa\nBlur Amount , Rozmycie Kwota\nBlur Amplitude , Rozmycie Amplitudy\nBlur Dodge and Burn Layer , Rozmycie warstwy uskoków i oparzeń\nBlur Factor , Czynnik rozmycia\nBlur Frame , Rozmycie ramki\nBlur Percentage , Rozmycie Procent\nBlur Precision , Rozmycie Dokładność\nBlur Standard Deviation , Rozmycie odchylenia standardowego\nBlur Strength , Siła rozmycia\nBlur the Mask , Rozmycie maski\nBoats , Łodzie\nBoost Chromaticity , Zwiększyć chromatyczność\nBoost Contrast , Kontrast wzrostowy\nBoost Stroke , Pobudzenie udaru\nBorder Color , Kolor granicy\nBorder Opacity , Nieprzezroczystość na granicy\nBorder Outline , Obrys granicy\nBorder Smoothness , Granica Gładkość\nBorder Thickness (%) , Grubość granicy (%)\nBorder Width , Szerokość granicy\nBoth , Oba\nBottles , Butelki\nBottom , Dół\nBottom and Left Foreground , Dół i lewy pierwszy plan\nBottom and Right Foreground , Dół i prawy pierwszy plan\nBottom and Top Foreground , Dół i góra pierwszego planu\nBottom Layer , Warstwa spodnia\nBottom Left , Dół Lewa strona\nBottom Right , Na dole po prawej stronie\nBottom Size , Wielkość dna\nBottom-Left , Dół-Lewica\nBottom-Left Vertex (%) , Wierzchołek dolny-lewy (%)\nBottom-Right , Dół-prawo\nBottom-Right Vertex (%) , Wierzchołek dolny-prawy (%)\nBouncing Balls , Podskakujące piłki\nBoundaries (%) , Granice (%)\nBoundary , Granica\nBoundary Condition , Stan graniczny\nBoundary Conditions , Warunki brzegowe\nBox Fitting , Wyposażenie pudełka\nBranches , Oddziały\nBraque: Landscape near Antwerp , Braque: Krajobraz w pobliżu Antwerpii\nBraque: Little Bay at La Ciotat , Braque: Little Bay w La Ciotat\nBraque: The Mandola , Braque: Mandola\nBrighness , Jasność\nBright , Jasne\nBright Green , Jasnozielony\nBright Length , Jasna Długość\nBright Pixels , Jasne piksele\nBright Teal Orange , Jasna Tealowa Pomarańcza\nBright Warm , Jasny Ciepły\nBrighter , Jaśniejszy\nBrightness , Jasność\nBrightness (%) , Jasność (%)\nBristle Size , Rozmiar włosia\nBronze , Brązowy\nBrownish , Brązowy\nBuilt-in Gray , Wbudowany w szarość\nBump Factor , Czynnik uderzeniowy\nBump Map , Mapa uderzeniowa\nBurn Blur , Rozmycie płomieni\nBurn Strength , Wytrzymałość na oparzenia\nBy Blue Chrominance , Przez Blue Chrominance\nBy Blue Component , Przez składnik niebieski\nBy Custom Expression , Według indywidualnego wyrażenia\nBy Green Component , Przez komponent zielony\nBy Iteration , Przez Iterację\nBy Lightness , Przez lekkość\nBy Luminance , Przez Luminancję\nBy Red Chrominance , Przez Red Chrominance\nBy Red Component , Przez komponent czerwony\nBy Value , Według wartości\nByers 11 , Bajery 11\nC[Magenta]YK , C[Magenta] YK\nCamera Motion Only , Tylko ruch kamery\nCamera X , Kamera X\nCamera Y , Kamera Y\nCameraman , Kamerzysta\nCandle Light , Światło świec\nCanvas Brightness , Płótno Jasność\nCanvas Color , Kolor płótna\nCanvas Darkness , Płótno Ciemność\nCanvas Texture , Tekstura płótna\nCar , Samochód\nCard Suits , Garnitury na karty\nCartesian Transform , Transformacja kartezjańska\nCartoon , Kreskówka\nCartoon [Animated] , Kreskówka [Animowany]\nCategory , Kategoria\nCell Size , Wielkość komórki\nCenter , Centrum\nCenter (%) , Centrum (%)\nCenter Background , Centrum Tło\nCenter Foreground , Centrum Pierwszy plan\nCenter Help , Pomoc Centrum\nCenter Size , Rozmiar środka\nCenter Smoothness , Centrum Gładkość\nCenter X , Centrum X\nCenter X-Shift , Centrum X-Shift\nCenter Y , Centrum Y\nCenter Y-Shift , Centrum Y-Shift\nCentering (%) , Centrowanie (%)\nCentering / Scale , Centrowanie / Skala\nCenters Color , Centra Kolor\nCenters Radius , Centra Promień\nCentimeter , Centymetr\nCentral  Perspective Outdoor , Centralna perspektywa na zewnątrz\nCentral Perspective Indoor , Perspektywa centralna Wewnątrz\nCentral Perspective Outdoor , Centralna perspektywa na zewnątrz\nCentre , Centrum\nChannel #1 , Kanał #1\nChannel #2 , Kanał #2\nChannel #3 , Kanał #3\nChannel Processing , Przetwarzanie kanałów\nChannel(s) , Kanał(y)\nChannels , Kanały\nChannels to Layers , Kanały do warstw\nCharcoal , Węgiel drzewny\nCheckered Inverse , Inwersja w szachownicę\nChemical 168 , Chemikalia 168\nChessboard , Szachownica\nChick , Kurczak\nChroma Noise , Chroma Hałas\nChromatic Aberrations , Aberracje chromatyczne\nChromaticity From , Chromatyczność Od\nChrome 01 , Chrom 01\nChrominances Only (ab) , Tylko chrominanse (ab)\nChrominances Only (CbCr) , Tylko chrominanse (CbCr)\nCinema , Kino\nCinema 2 , Kino 2\nCinema 3 , Kino 3\nCinema 4 , Kino 4\nCinema 5 , Kino 5\nCinema Noir , Kino Noir\nCinematic (8) , Kino (8)\nCinematic Mexico , Kino Meksyk\nCinematic Travel (29) , Podróże kinematograficzne (29)\nCircle , Koło\nCircle (Inv.) , Koło (Inv.)\nCircle 1 , Okręg 1\nCircle 2 , Okręg 2\nCircle Abstraction , Okrąg Abstrakcja\nCircle Art , Sztuka koła\nCircle to Square , Koło do kwadratu\nCircle Transform , Transformacja okręgu\nCircles , Koła\nCircles (Outline) , Kręgi (kontur)\nCircles 1 , Okręgi 1\nCircles 2 , Koła 2\nCircular , Okólnik\nCity 7 , Miasto 7\nClarity , Przejrzystość\nClassic Chrome , Chrom klasyczny\nClassic Teal and Orange , Classic Teal i Orange\nClean , Czyste\nClean Text , Czysty tekst\nClear Control Points , Przejrzyste punkty kontroli\nClip , Klip\nClip CMYK , Klips CMYK\nClosing , Zamknięcie\nClosing - Opening , Zamknięcie - Otwarcie\nClosing - Original , Zamknięcie - Oryginał\nClouds , Chmury\nCLUT from After - Before Layers , CLUT od After - Before Layers\nCLUT Opacity , ZAMKNIĘTE ZAMKNIĘCIE\nCM[Yellow]K , CM[Żółty]K\nCMY[Key] , CMY[Klucz]\nCMYK [cyan] , CMYK [cyjan]\nCMYK [Key] , CMYK [Klucz]\nCMYK [Yellow] , CMYK [Żółty]\nCMYK Tone , Ton CMYK\nCoarse , Gruby\nCoarsest (faster) , Najgrubszy (szybszy)\nCode , Kod\nCoefficients , Współczynniki\nCoffee 44 , Kawa 44\nCoherence , Spójność\nCold Simplicity 2 , Prostota na zimno 2\nColor , Kolor\nColor (rich) , Kolor (bogaty)\nColor 1 , Kolor 1\nColor 1 (Up/Left Corner) , Kolor 1 (górny/lewy narożnik)\nColor 2 , Kolor 2\nColor 2 (Up/Right Corner) , Kolor 2 (góra/prawa strona narożnika)\nColor 3 , Kolor 3\nColor 3 (Bottom/Left Corner) , Kolor 3 (dolny/lewy narożnik)\nColor 4 , Kolor 4\nColor 4 (Bottom/Right Corner) , Kolor 4 (dolny/prawy narożnik)\nColor A , Kolor A\nColor Abstraction Opacity , Abstrakcyjna barwa Nieprzezroczystość\nColor Abstraction Paint , Kolorowa farba abstrakcyjna\nColor B , Kolor B\nColor Balance , Bilans kolorów\nColor Basis , Podstawa koloru\nColor Blending , Łączenie kolorów\nColor Blindness , Ślepota kolorów\nColor Blue-Yellow , Kolor niebiesko-żółty\nColor Burn , Oparzenie kolorem\nColor C , Kolor C\nColor Channel  Smoothing , Wygładzanie kanałów kolorowych (Color Channel Smoothing)\nColor Channels , Kanały kolorowe\nColor D , Kolor D\nColor Dispersion , Dyspersja kolorów\nColor Doping , Doping kolorystyczny\nColor E , Kolor E\nColor Effect Mode , Tryb efektów kolorystycznych\nColor F , Kolor F\nColor G , Kolor G\nColor Grading , Klasyfikacja kolorów\nColor Green-Magenta , Kolor Green-Magenta\nColor Highlights , Kolory podświetlenia\nColor Image , Kolorowy obrazek\nColor Intensity , Intensywność koloru\nColor Mask , Maska kolorowa\nColor Mask [Interactive] , Maska kolorowa [Interaktywna]\nColor Median , Mediana kolorów\nColor Metric , Kolor metryczny\nColor Midtones , Kolory Midtones\nColor Mode , Tryb kolorystyczny\nColor Model , Model kolorowy\nColor Negative , Kolor Negatywny\nColor on White , Kolor na białym\nColor Overall Effect , Ogólny efekt kolorystyczny\nColor Presets , Ustawienia kolorów\nColor Quantization , Kwantyfikacja kolorów\nColor Rendering , Rendering kolorów\nColor Shading (%) , Cieniowanie kolorów (%)\nColor Shadows , Cienie kolorów\nColor Smoothness , Gładkość kolorów\nColor Space , Przestrzeń barw\nColor Spots + Extrapolated Colors + Lineart , Kolorowe plamy + Ekstrapolowane kolory + Lineart\nColor Spots + Lineart , Kolorowe plamy + Lineart\nColor Strength , Wytrzymałość koloru\nColor Temperature , Temperatura barwowa\nColor Tolerance , Tolerancja kolorów\nColor Variation [Random -1] , Zmiana koloru [Przypadkowa -1]\nColorbase , Baza kolorystyczna\nColored Geometry , Geometria barwna\nColored Grain , Kolorowe Ziarno\nColored Lineart , Kolorowy Lineart\nColored on Black , Kolorowy na czarno\nColored on Transparent , Kolorowy na Transparentnym\nColored Outline , Kolorowy kontur\nColored Pencils , Ołówki kolorowe\nColored Regions , Kolorowe regiony\nColorful , Kolorowy\nColorful 0209 , Kolorowy 0209\nColorful Blobs , Kolorowe kleksy\nColoring , Koloryzacja\nColorize [Interactive] , Koloryzacja [Interaktywny]\nColorize [Photographs] , Koloryzacja [Fotografie]\nColorize [with Colormap] , Colorize [z Colormapem]\nColorize Mode , Tryb koloryzacji\nColorized Image (1 Layer) , Obraz kolorowy (1 warstwa)\nColormap Type , Typ Colormap\nColors , Kolory\nColors A , Kolory A\nColors B , Kolory B\nColors Only , Tylko kolory\nColors Only (1 Layer) , Tylko kolory (1 warstwa)\nColors to Layers , Kolory do warstw\nColour , Kolor\nColour Channels , Kanały kolorowe\nColour Model , Model kolorowy\nColour Smoothing , Wygładzanie kolorów\nColour Space Mode , Tryb przestrzeni barw\nColumn by Column , Kolumna po kolumnie\nComic Style , Styl komiksowy\nComponents , Części składowe\nComposed Layers , Warstwy złożone\nCompress Highlights , Kompresja Highlights\nCompression Blur , Rozmycie kompresji\nCompression Filter , Filtr kompresyjny\nComputation Mode , Tryb obliczeniowy\nCone , Stożkowe\nConflict 01 , Konflikt 01\nConformal Maps , Mapy konformalne\nConnectivity , Łączność\nConnectors Centering , Łączniki Centrowanie\nConnectors Variability , Złącza Zmienność\nConstrain Image Size , Ograniczenie rozmiaru obrazu\nConstrain Values , Ograniczenia wartości\nConstrained Sharpen , Ograniczone Ostrzenie\nConstraint Radius , Ograniczenie Promień\nContinuous Droste , Ciągłe odmrażanie (Continuous Droste)\nContour Coherence , Kontur Spójność\nContour Detection (%) , Wykrywanie konturów (%)\nContour Normalization , Normalizacja konturów\nContour Precision , Precyzja konturu\nContour Threshold , Kontur Próg\nContour Threshold (%) , Kontur Próg (%)\nContours , Kontury\nContours + Flocon/Snowflake , Kontury + flokon/ płatek śniegu\nContours Recursion , Kontury Odwrócenie\nContrail 35 , Kontrast 35\nContrast , Kontrast\nContrast (%) , Kontrast (%)\nContrast Smoothness , Kontrast Gładkość\nContrast Swiss Mask , Kontrast Maska szwajcarska\nContrast with Highlights Protection , Kontrast z ochroną przed światłem słonecznym\nContrasty Afternoon , Kontrast Po południu\nContrasty Green , Kontrast Zielony\nContributors , Współtwórcy\nControl Point 1 , Punkt kontroli 1\nControl Point 2 , Punkt kontroli 2\nControl Point 3 , Punkt kontroli 3\nControl Point 4 , Punkt kontroli 4\nControl Point 5 , Punkt kontroli 5\nControl Point 6 , Punkt kontroli 6\nConvolve , Konvolve\nCool / Warm , Cool / Ciepło\nCopper , Miedź\nCorner Brightness , Narożnik Jasność\nCorrelated Channels , Kanały powiązane\nCounter Clockwise , W kierunku przeciwnym do ruchu wskazówek zegara\nCourse 4 , Kurs 4\nCracks , Pęknięcia\nCreative Pack (33) , Pakiet kreatywny (33)\nCrisp Romance , Rzepki Romans\nCrisp Warm , Chrupiące Ciepło\nCriterion , Kryterium\nCrop , Uprawa\nCrop (%) , Uprawy (%)\nCross Process CP 130 , Proces krzyżowy CP 130\nCross Process CP 14 , Proces krzyżowy CP 14\nCross Process CP 15 , Proces krzyżowy CP 15\nCross Process CP 16 , Proces krzyżowy CP 16\nCross Process CP 18 , Proces krzyżowy CP 18\nCross Process CP 3 , Proces krzyżowy CP 3\nCross Process CP 4 , Proces krzyżowy CP 4\nCross Process CP 6 , Proces krzyżowy CP 6\nCross-Hatch Amount , Wylęgarnia Ilość (Cross-Hatch)\nCrossed , Przekreślony\nCrosses 1 , Krzyżyki 1\nCrosses 2 , Krzyżyki 2\nCrosshair , Włosie krzyżowe\nCRT Sub-Pixels , Subpikseli CRT\nCrystal Background , Kryształowe tło\nCube , Kostka\nCube (256) , Kostka (256)\nCubic , Sześcienny\nCubicle 99 , Boks 99\nCubism , Kubizm\nCubism on Color Abstraction , Kubizm na temat abstrakcji kolorystycznej\nCup , Puchar\nCupid , Kupidyn\nCurvature , Zakrzywienie\nCurvature Shadow , Cień krzywizny\nCurve Amount , Krzywa Kwota\nCurve Angle , Kąt krzywizny\nCurve Length , Długość krzywej\nCurved , Wygięty\nCurved Stroke , Zakrzywiony Udar\nCurves , Krzywe\nCurves Previously Defined , Poprzednio zdefiniowane krzywe\nCustom , Niestandardowy\nCustom Code [Global] , Kod niestandardowy [Globalny]\nCustom Code [Local] , Kod niestandardowy [lokalny]\nCustom Correction Map , Niestandardowa mapa korekcyjna\nCustom Depth Correction , Niestandardowa korekta głębokości\nCustom Depth Maps Stream , Niestandardowe mapy głębokości Strumień\nCustom Dictionary , Słownik zwyczajowy\nCustom Filter Code , Niestandardowy kod filtrujący\nCustom Formula , Formuła niestandardowa\nCustom Kernel , Jądro niestandardowe\nCustom Layers , Warstwy niestandardowe\nCustom Layout , Układ niestandardowy\nCustom Style (Bottom Layer) , Styl niestandardowy (warstwa dolna)\nCustom Style (Top Layer) , Styl niestandardowy (górna warstwa)\nCustom Transform , Transformacja niestandardowa\nCustomize CLUT , Dostosuj ZAMKNIĘCIE\nCut , Cięcie\nCut & Normalize , Cięcie i normalizacja\nCutout , Wycięcie\nCyan , Cyjan\nCyan Factor , Czynnik cyjanowy\nCyan Smoothness , Cyjan Gładkość\nCycle Layers , Warstwy rowerowe\nCycles , Cykle\nD and O 1 , D i O 1\nDamping per Octave , Tłumienie na oktawę\nDark  Motive , Mroczny motyw\nDark Blues in Sunlight , Ciemny błękit w świetle słonecznym\nDark Color , Ciemny kolor\nDark Edges , Ciemne Krawędzie (Dark Edges)\nDark Motive , Mroczny motyw\nDark Pixels , Ciemne piksele\nDark Place 01 , Ciemne miejsce 01\nDark Sky , Ciemne niebo\nDarken , Ciemny\nDarker , Ciemniejszy\nDarkness , Ciemność\nDarkness Level , Poziom ciemności\nDate 39 , Data 39\nDay for Night , Dzień na noc\nDay4Nite , Dzień 4Nite\nDaylight Scene , Scena dzienna\nDebug Font Size , Rozmiar czcionki debugowej\nDecompose , Rozkładać się\nDecompose Channels , Rozkładanie kanałów\nDecoration , Dekoracja\nDecreasing , Zmniejszający się\nDeep , Głębokie\nDeep Blue , Głęboki błękit\nDeep High Contrast , Głęboki Wysoki Kontrast\nDefault , Domyślnie\nDefects Contrast , Wady Kontrast\nDefects Density , Wady Gęstość\nDefects Size , Wady Rozmiar\nDefects Smoothness , Wady Gładkość\nDeform , Deformować\nDelaunay: Portrait De Metzinger , Delaunay: Portret De Metzinger\nDelaunay: Windows Open Simultaneously , Delaunay: Windows otwarty jednocześnie\nDelete Layer Source , Usuń źródło warstwy\nDelicatessen , Delikatesy\nDensity , Gęstość zaludnienia\nDensity (%) , Gęstość (%)\nDepth , Głębokość\nDepth Fade In Frames , Głębokie zaniki w obramowaniach\nDepth Fade Out Frames , Ramy zanikające wgłębienie (Depth Fade Out Frames)\nDepth Field Control , Kontrola pola głębokości\nDepth Map , Mapa głębokości\nDepth Map Construction , Budowa mapy głębokości\nDepth Map Only , Tylko mapa głębokości\nDepth Map Reconstruction , Rekonstrukcja mapy głębokości\nDepth Maps Only , Tylko mapy głębokości\nDepth-Of-Field Type , Głębokość pola Typ\nDesaturate (%) , Desaturat (%)\nDesaturate Norm , Nienasycona norma\nDescent Method , Metoda zejścia\nDescreen , Ekran\nDesert Gold 37 , Pustynne złoto 37\nDestination (%) , Miejsce przeznaczenia (%)\nDestination X-Tiles , Miejsce docelowe Płytki X\nDestination Y-Tiles , Miejsce przeznaczenia Płytki Y\nDetail , Szczegóły\nDetail Level , Poziom szczegółowości\nDetail Reconstruction Detection , Szczegóły Wykrywanie rekonstrukcji\nDetail Reconstruction Smoothness , Szczegóły Rekonstrukcja Gładkość\nDetail Reconstruction Strength , Szczegóły Rekonstrukcja Wytrzymałość\nDetail Reconstruction Style , Szczegóły Styl rekonstrukcji\nDetail Scale , Skala szczegółowa\nDetail Strength , Siła szczegółowa\nDetails , Szczegóły\nDetails Amount , Szczegóły Kwota\nDetails Equalizer , Szczegóły Korektor\nDetails Scale , Szczegóły Skala\nDetails Smoothness , Szczegóły Gładkość\nDetails Strength (%) , Szczegóły Wytrzymałość (%)\nDetect Skin , Wykrywaj skórę\nDeuteranomaly , Deuteranomalia\nDeviation , Odchylenie\nDiamond , Diament\nDiamonds , Diamenty\nDiamonds (Outline) , Diamenty (kontur)\nDices , Kostki\nDices with Colored Numbers , Kostki z kolorowymi numerami\nDices with Colored Sides , Kostki z kolorowymi ścianami bocznymi\nDifference , Różnica\nDifference Mixing , Różnica Mieszanie\nDifference of Gaussians , Różnica między Gausjanami\nDifferent Axis , Różne osie\nDiffuse (%) , Rozproszone (%)\nDiffuse Shadow , Rozproszony cień\nDiffusion , Dyfuzja\nDiffusion Tensors , Tensory dyfuzyjne\nDiffusivity , Diffuzyjność\nDigits , Cyfry\nDilatation , Dylatacja\nDilate , Dylatacja\nDilation , Dylatacja\nDilation - Original , Dylatacja - Oryginalna\nDilation / Erosion , Dylatacja / Erozja\nDimension , Wymiar\nDimension [Diff] , Wymiar [Różnica]\nDimension A , Wymiar A\nDimensions (%) , Wymiary (%)\nDimensions Pixels , Wymiary Piksele\nDipole: 1/(4*z^2-1) , Dipol: 1/(4*z^2-1)\nDirect , Bezpośrednio\nDirection , Kierunek:\nDirections 23 , Wskazówki 23\nDirty , Brudny\nDisable , Wyłączyć\nDisabled , Niepełnosprawni\nDiscard Contour Guides , Prowadnice konturów odrzutów\nDiscard Transparency , Przejrzystość odrzutów\nDisplay , Wyświetlacz\nDisplay Blob Controls , Wyświetlanie pokręteł\nDisplay Color Axes , Wyświetlanie osi kolorów\nDisplay Contours , Wyświetlanie konturów\nDisplay Coordinates , Współrzędne wyświetlania\nDisplay Coordinates on Preview Window , Wyświetlanie współrzędnych w oknie podglądu\nDisplay Debug Info on Preview , Wyświetlanie informacji o debugach na Podglądzie\nDistance , Odległość\nDistance (Fast) , Odległość (Szybko)\nDistance Transform , Odległość Transformacja\nDistort Lens , Zniekształcenie obiektywu\nDistortion Factor , Czynnik zniekształcający\nDistortion Surface Angle , Zakłócenie Kąt powierzchniowy\nDistortion Surface Position , Zniekształcenie Położenie powierzchniowe\nDisturbance Scale-By-Factor , Skala zaburzeń - czynnik powodujący zaburzenia\nDisturbance X , Zakłócenie X\nDisturbance Y , Zakłócenie Y\nDither Output , Dither Wyjście\nDivide , Podziel\nDo Not Flatten Transparency , Nie spłaszczać przejrzystości\nDodge and Burn , Dodge i Burn\nDodge Strength , Wytrzymałość na uskoki (Dodge Strength)\nDOF Analyzer , Analizator DOF\nDog , Pies\nDot Size , Rozmiar kropki\nDots , Kropki\nDownload External Data , Pobieranie danych zewnętrznych\nDragon Curve , Smocza krzywa\nDragonfly , Ważka\nDrawing Mode , Tryb rysunkowy\nDream , Sen\nDream 1 , Sen 1\nDream 85 , Sen 85\nDream Smoothing , Wygładzanie snów\nDrop Water , Kropla wody\nDuck , Kaczka\nDuplicate Bottom , Duplikat Dół\nDuplicate Horizontal , Duplikat Poziomy\nDuplicate Left , Duplikat w lewo\nDuplicate Right , Duplikat prawa\nDuplicate Top , Duplikat wierzchołka\nDuplicate Vertical , Duplikat w pionie\nDuration , Czas trwania pomocy\nDynamic Range Increase , Dynamiczny wzrost zasięgu\nEagle , Orzeł\nEarth , Ziemia\nEarth Tone Boost , Ziemskie Tony Boost\nEdge Antialiasing , Antialiasing krawędziowy\nEdge Attenuation , Tłumienie krawędziowe\nEdge Detect Includes Chroma , Wykrywacz krawędzi zawiera Chroma\nEdge Exponent , Wykładnik krawędziowy\nEdge Fidelity , Wierność krawędzi\nEdge Influence , Wpływ krawędziowy\nEdge Mask , Maska krawędziowa\nEdge Sensitivity , Wrażliwość krawędziowa\nEdge Simplicity , Prostota krawędzi\nEdge Smoothness , Gładkość krawędzi\nEdge Thickness , Grubość krawędzi\nEdge Threshold , Próg krawędziowy\nEdge Threshold (%) , Próg krawędziowy (%)\nEdges , Krawędzie\nEdges (%) , Krawędzie (%)\nEdges [Animated] , Krawędzie [Animowane]\nEdges Offsets , Krawędzie Odstępstwa\nEdges on Fire , Krawędzie w ogniu\nEdges-0.5 (beware: Memory-Consuming!) , Krawędzie-0.5 (uwaga: Pamięć-zużywa!)\nEdges-1 (beware: Memory-Consuming!) , Edges-1 (uważaj: Pamięć-Zużywa!)\nEdges-2 (beware: Memory-Consuming!) , Krawędzie-2 (uwaga: Pamięć-zabierająca!)\nEffect Strength , Siła oddziaływania\nEffect X-Axis Scaling , Efekt X-axis Scaling\nEffect Y-Axis Scaling , Efekt Y-Axis Scaling\nEight Layers , Osiem warstw\nEight Threads , Osiem gwintów\nElegance 38 , Elegancja 38\nElephant , Słoń\nElevation , Wzniesienie\nElevation (%) , Wzniesienie (%)\nEllipse Painting , Malarstwo elipsowe\nEllipse Ratio , Stosunek elipsy\nEllipsionism , Elipsjonizm\nEllipsionism Opacity , Elipsjonizm Nieprzezroczystość\nEllipsoid , Elipsoida\nEmboss , Wytłoczenie\nEnable Antialiasing , Włączanie antyaliasingu\nEnable Interpolated Motion , Włącz Interpolowany Ruch\nEnable Morphology , Włącz morfologię\nEnable Paintstroke , Włączanie pociągnięcia farbą\nEnable Segmentation , Włącz Segmentację\nEnchanted , Zaczarowany\nEnd Color , Kolor końcowy\nEnd Frame Number , Numer ramy końcowej\nEnd of Mid-Tones , Koniec Mid-Tones\nEnd Point Connectivity , Łączność z punktami końcowymi\nEnd Point Rate (%) , Stopa punktów końcowych (%)\nEnding Angle , Kąt końcowy\nEnding Color , Kolor końcowy\nEnding Feathering , Zakończenie pierzenia\nEnding Point (%) , Punkt końcowy (%)\nEnding Scale (%) , Skala końcowa (%)\nEnding Value , Wartość końcowa\nEnding X-Centering , Zakończenie X-Centrowania\nEnding Y-Centering , Końcowy Y-Centrowanie\nEngrave , Grawerunek\nEnhance Detail , Zwiększanie szczegółowości\nEnhance Details , Poprawa szczegółów\nEqualization , Wyrównanie\nEqualization (%) , Wyrównanie (%)\nEqualize , Wyrównać\nEqualize and Normalize , Wyrównywać i normalizować\nEqualize at Each Step , Wyrównać na każdym kroku\nEqualize HSI-HSL-HSV , Wyrównać HSI-HSL-HSV\nEqualize HSV , Wyrównać HSV\nEqualize Light , Wyrównać światło\nEqualize Local Histograms , Wyrównywanie lokalnych histogramów\nEqualize Shadow , Wyrównać cień\nEquation Plot [Parametric] , Wykres równań [Parametryczny]\nEquation Plot [Y=f(X)] , Działka równania [Y=f(X)]\nEquirectangular to Nadir-Zenith , Równoległe do Nadir-Zenitu\nErosion , Erozja\nErosion / Dilation , Erozja / Dylatacja\nEtch Tones , Tony wytrawiające\nEterna for Flog , Eterna dla Floga\nEuclidean , Euklidesan\nEuclidean - Polar , Euklidesowy - Polarny\nExclusion , Wyłączenie\nExpand , Rozwiń\nExpand Background Reconstruction , Rozszerzenie zaplecza Odbudowa\nExpand Shadows , Rozwiń cienie\nExpand Size , Rozszerzenie rozmiaru\nExpanding Mirrors , Rozszerzające się lustra\nExpired (fade) , Wygasł (blaknięcie)\nExpired (polaroid) , Wygasł (polaroid)\nExpired 69 , Wygasł 69\nExponent , Składnik\nExponent (Imaginary) , Składnik (Wyobrażeniowy)\nExponent (Real) , Wyrażnik (rzeczywisty)\nExponential , Wykładniczy\nExport RGB-565 File , Eksport pliku RGB-565\nExposure , Ekspozycja\nExpression , Wyrażenie\nExtend 1px , Rozszerzenie 1px\nExternal Transparency , Przejrzystość zewnętrzna\nExtra  Smooth , Wyjątkowo gładki\nExtract Foreground [Interactive] , Wyciągnij pierwszy plan [Interaktywny]\nExtract Objects , Ekstrakt Obiekty\nExtrapolate Color Spots on Transparent Top Layer , Ekstrapolowane kolorowe plamy na przezroczystej warstwie wierzchniej\nFactor , Czynnik\nFade , Wygasanie\nFade End , Blaknięcie Koniec\nFade End (%) , Blaknięcie Koniec (%)\nFade Layers , Warstwy blaknięcia\nFaded , Wyblakły\nFaded (alt) , Wyblakły (alt)\nFaded (analog) , Wyblakły (analogowy)\nFaded (extreme) , Wyblakłe (skrajne)\nFaded (vivid) , Wyblakły (żywy)\nFaded 47 , Wyblakły 47\nFaded Green , Wyblakły zielony\nFaded Look , Wyblakłe spojrzenie\nFaded Print , Wyblakły druk\nFaded Retro 01 , Wyblakłe Retro 01\nFaded Retro 02 , Wyblakłe Retro 02\nFading , Zanikający\nFall Colors , Kolory jesienne\nFar Point Deviation , Odchylenie punktu dalekiego\nFast , Szybko\nFast &#40;Approx.&#41; , Fast (Ok. )\nFast (Low Precision) Preview , Szybki (niska precyzja) Podgląd\nFast Approximation , Szybkie przybliżenie\nFast Blend , Szybka mieszanka\nFast Blend Preview , Podgląd szybkiej mieszanki\nFast Recovery , Szybki powrót do zdrowia\nFast Resize , Szybka zmiana rozmiaru\nFeature Analyzer Smoothness , Analizator Feature Analyzer Gładkość\nFeature Analyzer Threshold , Próg dla analizatora Feature Analyzer\nFelt Pen , Pióro filcowe\nFFT Preview , Podgląd FFT\nFibers , Włókna\nFibers Amplitude , Włókna Amplituda\nFibers Smoothness , Włókna Gładkość\nFibrousness , Włóknistość\nFidelity Chromaticity , Wierność Chromatyczność\nFidelity Smoothness (Coarsest) , Wierność Gładkość (Najgrubsza)\nFidelity Smoothness (Finest) , Wierność Gładkość (Finest)\nFidelity to Target (Coarsest) , Wierność celowi (najgrubsza)\nFidelity to Target (Finest) , Wierność celowi (Finest)\nFilename , Nazwa pliku\nFill Holes , Wypełnianie otworów\nFill Holes % , Wypełnianie otworów %\nFill Transparent Holes , Wypełnianie przezroczystych otworów\nFilled , Wypełniony\nFilled Circles , Wypełnione kółka\nFilling , Wypełnianie\nFilm Highlight Contrast , Kontrast świateł filmowych (Film Highlight Contrast)\nFilmic , Filmowy\nFilter Design , Projektowanie filtrów\nFinal Image , Obraz końcowy\nFine , Dobrze\nFine 2 , Grzywna 2\nFine Details Smoothness , Drobne szczegóły Gładkość\nFine Details Threshold , Szczegóły Próg\nFine Noise , Drobny hałas\nFine Scale , Dokładna skala\nFinest (slower) , Najlepszy (wolniejszy)\nFinger Paint , Farba do malowania palcami\nFinger Size , Rozmiar palca\nFire Effect , Efekt pożarowy\nFireworks , Fajerwerki\nFirst , Najpierw\nFirst Color , Pierwszy kolor\nFirst Frame , Pierwsza rama\nFirst Offset , Pierwszy offset\nFirst Radius , Pierwszy promień\nFirst Size , Pierwszy rozmiar\nFish-Eye Effect , Efekt rybiego oka\nFitting Function , Funkcja dopasowywania\nFive Layers , Pięć warstw\nFlag , Flaga\nFlag (256) , Flaga (256)\nFlat Color , Kolor płaski\nFlat Regions Removal , Usuwanie regionów płaskich\nFlatness , Płaskość\nFlip Left / Right , Przerzucanie w lewo / w prawo\nFlip Left/Right , Przerzucanie w lewo/prawo\nFlip Tolerance , Tolerancja przerzucania\nFlower , Kwiat\nFoggy Night , Mglista noc\nFolder Name , Nazwa folderu\nFont Colors , Kolory czcionek\nForce Gray , Siła Szara\nForce Re-Download from Scratch , Siła Powtórne obciążenie od zarysowania\nForce Tiles to Have Same Size , Wymuszać, aby płytki miały ten sam rozmiar\nForce Transparency , Siła Przejrzystość\nForeground Color , Kolor pierwszego planu\nForm , Formularz\nFormula , Formuła\nForward , Do przodu\nForward  Horizontal , Do przodu Poziomo\nForward Horizontal , Do przodu Poziomo\nForward Vertical , Do przodu Pionowo\nFour Layers , Cztery warstwy\nFour Threads , Cztery nici\nFourier Analysis , Analiza Fouriera\nFourier Filtering , Filtracja Fouriera\nFourier Transform , Transformacja Fouriera\nFourier Watermark , Znak wodny Fouriera\nFractal Noise , Hałas fałdowy\nFractal Points , Fraktalne punkty\nFractal Set , Zestaw Fractal Set\nFractured Clouds , Złamane chmury\nFragment Blur , Rozmycie fragmentów\nFrame (px) , Ramka (px)\nFrame [Blur] , Ramka [Rozmycie]\nFrame [Cube] , Ramka [Kostka]\nFrame [Fuzzy] , Ramka [Fuzzy]\nFrame [Mirror] , Ramka [Lustro]\nFrame [Painting] , Rama [Malarstwo]\nFrame [Pattern] , Ramka [Wzór]\nFrame [Regular] , Rama [zwykła]\nFrame [Round] , Rama [Runda]\nFrame [Smooth] , Rama [Smooth]\nFrame as a New Layer , Rama jako nowa warstwa (Frame as a New Layer)\nFrame Color , Kolor ramki\nFrame Files Format , Format plików ramki\nFrame Format , Format ramki\nFrame Size , Rozmiar ramki\nFrame Skip , Ramka Pomijanie\nFrame Type , Typ ramy\nFrame Width , Szerokość ramy\nFrames , Ramki\nFrames Offset , Ramki Przesunięcie\nFreaky B&W , Dziwny B&W\nFreaky Details , Dziwne szczegóły\nFreeze , Zamrażanie\nFrench Comedy , Komedia francuska\nFrequency , Częstotliwość:\nFrequency (%) , Częstotliwość (%)\nFrequency Analyzer , Analizator częstotliwości\nFrequency Range , Zakres częstotliwości\nFrom Input , Od wejścia\nFrom Reference Color , Od koloru referencyjnego\nFrosted , Zamrożone\nFruits , Owoce\nFuji FP-100c Negative , Fuji FP-100c Negatywny\nFuji FP-100c Negative + , Fuji FP-100c Ujemny +\nFuji FP-100c Negative ++ , Fuji FP-100c Ujemny ++\nFuji FP-100c Negative +++ , Fuji FP-100c Ujemny +++\nFuji FP-100c Negative ++a , Fuji FP-100c Ujemny ++a\nFuji FP-100c Negative - , Fuji FP-100c Negatywny -\nFuji FP-100c Negative -- , Fuji FP-100c Negatywne --\nFuji FP-3000b Negative , Fuji FP-3000b Negatywny\nFuji FP-3000b Negative + , Fuji FP-3000b Ujemny +\nFuji FP-3000b Negative ++ , Fuji FP-3000b Ujemny ++\nFuji FP-3000b Negative +++ , Fuji FP-3000b Ujemny +++\nFuji FP-3000b Negative - , Fuji FP-3000b Negatywny -\nFuji FP-3000b Negative -- , Fuji FP-3000b Negatywne --\nFuji FP-3000b Negative Early , Fuji FP-3000b Negatywne Wczesny wzrost\nFull , Pełna\nFull (Allows Multi-Layers) , Pełny (Pozwala na wielowarstwowe)\nFull (Slower) , Pełny (Wolniejszy)\nFull Bottom/top , Pełne dno/góra\nFull Colors , Pełne kolory\nFull HD Frame Packing , Pakowanie ramek Full HD\nFull Layer Stack -Slow!- , Pełnowarstwowy stos - Powoli!-\nFull Side by Side Keep Uncompressed , Pełna strona po stronie Trzymaj bez kompresji\nFuturistic Bleak 1 , Futurystyczny Bleak 1\nFuturistic Bleak 2 , Futurystyczny Bleak 2\nFuturistic Bleak 3 , Futurystyczny Bleak 3\nFuturistic Bleak 4 , Futurystyczny Bleak 4\nG'MIC Operator , Operator G'MIC\nG/M Smoothness , G/M Gładkość\nGames & Demos , Gry i demonstracje\nGamma Balance , Saldo gamma\nGamma Equalizer , Korektor Gamma\nGenerate Random-Colors Layer , Generowanie przypadkowej warstwy barwnej (Random-Colors Layer)\nGeneric Fuji Astia 100 , Generyczne Fuji Astia 100\nGeneric Fuji Provia 100 , Generyczne Fuji Provia 100\nGeneric Fuji Velvia 100 , Generyczne Fuji Velvia 100\nGeneric Kodachrome 64 , Kodachrom ogólny 64\nGeneric Kodak Ektachrome 100 VS , Generyczny Kodak Ektachrome 100 VS\nGeneric Skin Structure , Ogólna struktura skóry\nGentle Mode (overrides Minimum Brightness and Minimun Red:Blue Ratio) , Tryb łagodny (nadpisuje minimalną jasność i minimalną czerwień: stosunek niebieski)\nGeometry , Geometria\nGlobal Mapping , Mapowanie globalne\nGmicky (by Deevad) , Gmicky (przez Deevad)\nGmicky (by Mahvin) , Gmicky (przez Mahvina)\nGoing for a Walk , Idziemy na spacer\nGold , Złoto\nGolden , Złoty\nGolden (bright) , Złoty (jasny)\nGolden (fade) , Złoty (blaknięcie)\nGolden (mono) , Złoty (mono)\nGolden (vibrant) , Złoty (żywy)\nGolden Gate , Złota Brama\nGoldFX - Bright Summer Heat , GoldFX - Jasny letni upał\nGoldFX - Hot Summer Heat , GoldFX - Gorące letnie ciepło\nGoldFX - Perfect Sunset 10min , GoldFX - Idealny zachód słońca 10min\nGoldFX - Summer Heat , GoldFX - Letnie upały\nGood Morning , Dzień dobry\nGradient [Corners] , Gradient [Rogi]\nGradient [Custom Shape] , Gradient [Niestandardowy kształt]\nGradient [from Line] , Gradient [od linii]\nGradient [Linear] , Gradient [liniowy]\nGradient [Random] , Gradient [Losowo]\nGradient Norm , Norma gradientu\nGradient Preset , Wstępne ustawienie gradientu\nGradient Smoothness , Gładkość gradientu\nGradient Values , Wartości gradientowe\nGrain , Ziarno\nGrain (Highlights) , Ziarno (Highlights)\nGrain (Midtones) , Ziarno (Midtones)\nGrain (Shadows) , Ziarno (Shadows)\nGrain Extract , Ekstrakt zboża\nGrain Merge , Łączenie zboża\nGrain Only , Tylko ziarno\nGrain Scale , Skala ziarna\nGrain Tone Fading , Blaknięcie koloru ziarna\nGrain Type , Rodzaj ziarna\nGrainextract , Wyciąg z winogron\nGranularity , Granularność\nGraphic Colours , Kolory graficzne\nGraphic Novel , Powieść graficzna\nGraphix Colors , Kolory Graphix\nGrayscale , Skala szarości\nGreece , Grecja\nGreen , Zielony\nGreen 15 , Zielona 15\nGreen 2025 , Zielony 2025\nGreen Action , Zielone działanie\nGreen Afternoon , Zielone popołudnie\nGreen Blues , Zielony Niebieski\nGreen Conflict , Zielony Konflikt\nGreen Day 01 , Zielony dzień 01\nGreen Day 02 , Zielony Dzień 02\nGreen Factor , Czynnik zielony\nGreen G09 , Zielony G09\nGreen Level , Poziom ekologiczny\nGreen Light , Zielone światło\nGreen Rotations , Zielone obroty\nGreen Smoothness , Zielona gładkość\nGreen Wavelength , Zielona Długość fali\nGreen Yellow , Zielono-żółty\nGreenish Contrasty , Kontrast zielonkawy\nGrey , Szarość\nGreyscale , Skala szarości\nGrid , Siatka\nGrid [Cartesian] , Siatka [kartezjański]\nGrid [Hexagonal] , Siatka [sześciokątna]\nGrid [Triangular] , Siatka [trójkątna]\nGrid Divisions , Działy kratowe\nGrid Smoothing , Wygładzanie siatki\nGrid Width , Szerokość siatki\nGrow Alpha , Rozwijaj Alphę\nGuide As , Przewodnik Jak\nGuide Recovery , Przewodnik Odzyskiwanie\nH Cutoff , H Odcięcie\nHair Locks , Zamki do włosów\nHalf Bottom/top , Połowa dna / góra\nHalf Side  by Side , Half Side by Side\nHalftone Shapes , Kształty półtonów\nHanoi Tower , Wieża Hanoi\nHard , Twardy\nHard Light , Twarde światło\nHard Mix , Twarda mieszanka\nHard Sketch , Szkic twardy\nHard Teal Orange , Twardy Teal Orange\nHarsh Day , Surowy dzień\nHarsh Sunset , Surowy zachód słońca\nHDR Effect (Tone Map) , Efekt HDR (Tone Map)\nHeart , Serce\nHearts , Serca\nHearts (Outline) , Serca (kontur)\nHedcut (Experimental) , Hedcut (eksperymentalny)\nHeight , Wysokość\nHeight (%) , Wysokość (%)\nHerderite , Herderyt\nHeulandite , Heulandit\nHigh , Wysoki\nHigh (Slower) , Wysoki (Wolniejszy)\nHigh Frequency , Wysoka częstotliwość\nHigh Frequency Layer , Warstwa wysokiej częstotliwości\nHigh Key , Wysoki Klucz\nHigh Quality , Wysoka jakość\nHigh Scale , Wysoka skala\nHigh Speed , Duża prędkość\nHigh Value , Wysoka wartość\nHigher Mask Threshold (%) , Wyższy próg maski (%)\nHighlight (%) , Podświetlenie (%)\nHighlights , Najważniejsze informacje\nHighlights Abstraction , Najważniejsze informacje Abstrakcja\nHighlights Brightness , Najważniejsze Jasność\nHighlights Color Intensity , Najważniejsze informacje o intensywności kolorów\nHighlights Crossover Point , Najważniejsze punkty na skrzyżowaniu\nHighlights Lightness , Podkreślenia Lekkość\nHighlights Protection , Ochrona przed zagrożeniami\nHighlights Selection , Wybór najważniejszych punktów\nHighlights Threshold , Wysokie wartości progowe\nHighlights Zone , Najważniejsze strefy\nHistogram Analysis , Analiza histogramowa\nHistogram Transfer , Przeniesienie histogramu\nHomogeneity , Jednolitość\nHong Kong , Hongkong\nHope Poster , Plakat nadziei\nHorisontal Length , Długość pozioma\nHorizontal , Horyzontalny\nHorizontal (%) , Poziomy (%)\nHorizontal Amount , Kwota horyzontalna\nHorizontal Array , Układ poziomy\nHorizontal Blur , Rozmycie poziome\nHorizontal Length , Długość pozioma\nHorizontal Size (%) , Wielkość pozioma (%)\nHorizontal Stripes , Paski poziome\nHorizontal Tiles , Płytki poziome\nHorizontal Warp Only , Tylko osnowa pozioma\nHorror Blue , Horror Niebieski\nHot , Gorący\nHot (256) , Gorący (256)\nHouse , Dom\nHouseholder , Właściciel domu\nHSI [all] , HSI [wszyscy]\nHSI [Intensity] , HSI [Intensywność]\nHSL [all] , HSL [wszyscy]\nHSL [Lightness] , HSL [Lekkość]\nHSL Adjustment , Regulacja HSL\nHSV [all] , HSV [wszyscy]\nHSV [Saturation] , HSV [Nasycenie]\nHSV [Value] , HSV [Wartość]\nHSV Select , HSV Wybierz\nHue Factor , Czynnik barwy (Hue Factor)\nHue Offset , Przesunięcie barwy (Hue Offset)\nHue Smoothness , Hue Gładkość\nHuman  2 , Człowiek 2\nHuman 1 , Człowiek 1\nHuman 2 , Człowiek 2\nHybrid Median - Medium Speed Softest Output , Hybrydowa Mediana - Średnia prędkość Najmniejsza wydajność\nHypnosis , Hipnoza\nIain Noise Reduction 2019 , Redukcja hałasu Iain 2019\nIdentity , Tożsamość\nIgnore , Ignoruj\nIgnore Current Aspect , Ignorowanie aspektów bieżących\nIlluminate 2D Shape , Oświetlenie kształtu 2D\nIllumination , Oświetlenie\nIllustration Look , Ilustracja Spójrz\nImage , Obrazek\nImage + Background , Obraz + tło\nImage + Colors (2 Layers) , Obraz + kolory (2 warstwy)\nImage + Colors (Multi-Layers) , Obraz + kolory (Multi-Layers)\nImage Contour Dimensions , Wymiary konturu obrazu\nImage Smoothness , Gładkość obrazu\nImage to Grab Color from (.Png) , Image to Grab Color z (.Png)\nImage Weight , Waga obrazu\nImport Data , Dane dotyczące przywozu\nImport RGB-565 File , Import pliku RGB-565\nImpulses 5x5 , Impulsy 5x5\nImpulses 7x7 , Impulsy 7x7\nImpulses 9x9 , Impulsy 9x9\nInch , Cale\nInclude Opacity Layer , Włączyć warstwę kryjącą\nIncreaseChroma1 , ZwiększyćChroma1\nIncreasing , Rosnące\nIndustrial 33 , Przemysłowy 33\nInfluence of Color Samples (%) , Wpływ próbek koloru (%)\nInformation , Informacja\nInit. Resolution , Init. Uchwała\nInit. Type , Init. Typ\nInit. With High Gradients Only , Init. Tylko z wysokimi nachyleniami\nInitial Density , Gęstość początkowa\nInitialization , Inicjalizacja\nInner , Wewnątrz\nInner Fading , Blaknięcie wewnętrzne\nInner Length , Długość wewnętrzna\nInner Radius , Promień wewnętrzny\nInner Radius (%) , Promień wewnętrzny (%)\nInner Shade , Odcień wewnętrzny\nInpaint [Holes] , Farba [Dziury]\nInpaint [Morphological] , Inpaint [Morfologiczny]\nInput , Wejście:\nInput Folder , Folder wejściowy\nInput Frame Files Name , Ramka wejściowa Nazwa pliku\nInput Guide Color , Kolor przewodnika wejściowego\nInput Layers , Warstwy wejściowe\nInput Transparency , Wejście Przejrzystość\nInput Type , Typ wejścia\nInsert New CLUT Layer , Wstawić nową warstwę zamykającą\nInside , Wewnątrz\nInside Color , Kolor wewnętrzny\nInstant [Consumer] (54) , Błyskawiczny [Konsument] (54)\nIntarsia , Intarsja\nIntensity , Intensywność pomocy\nIntensity of Purple Fringe , Intensywność fioletowej grzywki\nInter-Frames , Między ramami\nInterlace Horizontal , Interlace Poziomy\nInterlace Vertical , Interlace Pionowy\nInterpolate , Interpolować\nInterpolation , Interpolacja\nInterpolation Type , Typ interpolacji\nInverse , Odwróć się\nInverse Depth Map , Mapa odwrotnej głębokości\nInverse Radius , Odwrotny promień\nInverse Transform , Odwrotna transformacja\nInversions , Inwersje\nInvert Background / Foreground , Odwrócenie tła / pierwszy plan\nInvert Blur , Odwrócenie rozmycia\nInvert Canvas Colors , Odwróć kolory płótna\nInvert Colors , Odwróć kolory\nInvert Image Colors , Odwróć kolory obrazu\nInvert Luminance , Odwrócona luminancja\nInvert Mask , Odwróć maskę\nInward , Wewnątrz\nIsophotes , Izofoty\nIsotropic , Izotropowy\nIteration , Iteracja\nIterations , Iteracje\nJapanese Maple Leaf , Japoński liść klonowy\nJet (256) , Odrzutowiec (256)\nJPEG Artefacts , Artefakty JPEG\nJust Peachy , Tylko Peachy\nKaleidoscope [Blended] , Kalejdoskop [mieszany]\nKaleidoscope [Polar] , Kalejdoskop [Polar]\nKaleidoscope [Symmetry] , Kalejdoskop [Symetria]\nKandinsky: Squares with Concentric Circles , Kandinsky: Skwery z koncentrycznymi kołami\nKeep , Trzymaj\nKeep Aspect Ratio , Zachowaj proporcje proporcje proporcji\nKeep Base Layer as Input Background , Zachowanie warstwy bazowej jako tła wejściowego\nKeep Borders Square , Trzymaj Plac Graniczny\nKeep Color Channels , Zachowaj kanały kolorów\nKeep Colors , Zachowaj kolory\nKeep Detail , Zachowaj szczegóły\nKeep Detail Layer Separate , Oddzielenie warstwy szczegółów\nKeep Iterations as Different Layers , Zachowaj Iteracje jako różne warstwy\nKeep Layers Separate , Oddzielenie warstw\nKeep Original Image Size , Zachowaj oryginalny rozmiar obrazu\nKeep Original Layer , Zachowaj oryginalną warstwę\nKeep Tiles Square , Trzymaj płytki na placu\nKeep Transparency in Output , Zachowanie przejrzystości w produkcji\nKernel Multiplier , Mnożnik jądra (Kernel Multiplier)\nKernel Type , Typ jądra\nKey Factor , Czynnik kluczowy\nKey Frame Rate , Kluczowa stawka ramowa\nKey Smoothness , Gładkość klucza\nKeypoint Influence (%) , Wpływ punktu kluczowego (%)\nKlee: Death and Fire , Klee: Śmierć i ogień\nKlee: In the Style of Kairouan , Klee: W stylu Kairouan\nKlee: Polyphony 2 , Klee: Polifonia 2\nKlee: Red Waistcoat , Klee: Czerwona kamizelka\nKuwahara , Kuwejtara\nKuwahara on Painting , Kuwejtara na Malarstwie\nLab , Laboratorium\nLab (Chroma Only) , Laboratorium (tylko dla aromatu)\nLab (Distinct) , Laboratorium (Distinct)\nLab (Luma Only) , Laboratorium (tylko Luma)\nLab (Luma/Chroma) , Laboratorium (Luma/Chroma)\nLab (Mixed) , Laboratorium (mieszane)\nLab [a-Chrominance] , Laboratorium [a-Chrominance]\nLab [ab-Chrominances] , Laboratorium [ab-Chrominances]\nLab [all] , Laboratorium [wszystkie]\nLab [b-Chrominance] , Laboratorium [b-Chrominance]\nLab [Lightness] , Laboratorium [Lekkość]\nLandscape , Krajobraz\nLandscape-10 , Krajobraz-10\nLandscape-3 , Krajobraz-3\nLandscape-4 , Krajobraz-4\nLandscape-5 , Krajobraz-5\nLandscape-6 , Krajobraz 6\nLandscape-7 , Krajobraz-7\nLandscape-8 , Krajobraz-8\nLandscape-9 , Krajobraz-9\nLaplacian , Laplacjan\nLarge , Duże\nLarge Noise , Duży hałas\nLast , Ostatni\nLast Frame , Ostatnia ramka\nLate Afternoon Wanderlust , Późnym popołudniem Wanderlust\nLate Sunset , Późny zachód słońca\nLava Lamp , Lampka lawowa\nLayer , Warstwa\nLayer Processing , Przetwarzanie warstw\nLayers to Tiles , Warstwy do płytek\nLch [all] , Lch [wszyscy]\nLeaf , Liść\nLeaf Color , Kolor liści\nLeaf Opacity (%) , Nieprzezroczystość liści (%)\nLeak Type , Rodzaj przecieku\nLeft , W lewo\nLeft  Foreground , Lewy pierwszy plan\nLeft / Right Blur (%) , Rozmycie w lewo / w prawo (%)\nLeft and Right Background , Lewe i prawe tło\nLeft and Right Foreground , Lewy i prawy pierwszy plan\nLeft and Right Image Streams , Lewy i prawy strumień obrazu\nLeft Diagonal Foreground , Lewy przekątny Pierwszy plan\nLeft Foreground , Lewy pierwszy plan\nLeft Position , Pozycja lewa\nLeft Side Orientation , Ukierunkowanie boczne w lewo\nLeft Slope , Lewy stok\nLeft Stream Only , Tylko Left Stream\nLength , Długość\nLenticular Density LPI , Gęstość Soczewkowa LPI\nLenticular Orientation , Orientacja soczewicowa\nLenticular Print , Druk soczewkowy (Lenticular Print)\nLevel , Poziom\nLevel Frequency , Poziom Częstotliwość\nLevels , Poziomy\nLifestyle & Commercial-1 , Styl życia i reklama-1\nLifestyle & Commercial-10 , Styl życia i reklama-10\nLifestyle & Commercial-3 , Styl życia i reklama-3\nLifestyle & Commercial-5 , Styl życia i reklama-5\nLifestyle & Commercial-6 , Styl życia i reklama-6\nLifestyle & Commercial-9 , Styl życia i handel-9\nLight , Światło\nLight (blown) , Światło (dmuchane)\nLight Angle , Kąt świetlny\nLight Color , Kolor światła\nLight Direction , Kierunek światła\nLight Effect , Efekt świetlny\nLight Glow , Jasny blask\nLight Grey , Jasnoszary\nLight Leaks , Lekkie wycieki\nLight Motive , Lekki motyw\nLight Patch , Łata świetlna\nLight Rays , Promienie świetlne\nLight Smoothness , Gładkość światła\nLight Strength , Wytrzymałość na światło\nLight Type , Typ światła\nLighten , Rozjaśnij\nLighten Edges , Krawędzie świetlne\nLighter , Zapalniczka\nLighting , Oświetlenie\nLighting Angle , Kąt oświetlenia\nLightness , Lekkość\nLightness (%) , Lekkość (%)\nLightness Factor , Współczynnik lekkości\nLightness Level , Poziom lekkości\nLightness Max (%) , Lekkość Max (%)\nLightness Min (%) , Lekkość Min (%)\nLightness Shift , Przesunięcie lekkości\nLightness Smoothness , Lekkość Gładkość Smoothness\nLightning , Błyskawica\nLimit Hue Range , Graniczny zakres barwy\nLine , Linia\nLine Opacity , Linia Nieprzezroczystość\nLine Precision , Precyzja linii\nLinear Burn , Oparzenie liniowe\nLinear Light , Światło liniowe\nLinear RGB , Liniowy RGB\nLinear RGB [All] , Linear RGB [Wszystkie]\nLinear RGB [Blue] , Linear RGB [Niebieski]\nLinear RGB [Green] , Linear RGB [Zielony]\nLinearity , Liniowość\nLineart + Color Spots , Lineart + kolorowe plamy\nLineart + Color Spots + Extrapolated Colors , Lineart + Kolorowe plamy + Kolory ekstrapolowane\nLineart + Colors , Lineart + Kolory\nLineart + Extrapolated Colors , Lineart + Ekstrapolowane kolory\nLines , Linie\nLines (256) , Linie (256)\nLinf-Norm , Link-Norm\nLion , Lew\nLissajous [Animated] , Lissajous [Animowany]\nLissajous Spiral , Spirala Lissajous\nLittle , Mały\nLittle Cyan , Mały Cyjan\nLittle Magenta , Mała Magenta\nLittle Red , Mała czerwień\nLittle Yellow , Mały Żółty\nLN Amplititude , LN Amplituła\nLN Amplitude , LN Amplituda\nLN Average-Smoothness , LN Średnia - Gładkość\nLN Size , Wielkość LN\nLocal  Normalisation , Normalizacja lokalna\nLocal Contrast , Kontrast lokalny\nLocal Contrast Effect , Lokalny efekt kontrastu\nLocal Contrast Enhance , Lokalne wzmocnienie kontrastu\nLocal Contrast Enhancement , Wzmocnienie lokalnego kontrastu\nLocal Contrast Style , Lokalny Styl Kontrastu\nLocal Normalization , Lokalna normalizacja\nLocal Orientation , Lokalna orientacja\nLocal Processing , Przetwarzanie lokalne\nLocal Similarity Mask , Maska podobieństwa lokalnego\nLocal Variance Normalization , Normalizacja lokalnej zmienności\nLock Return Scaling to Source Layer , Blokada Powrót skalowania do warstwy źródłowej\nLock Source , Źródło zamka\nLock Uniform Sampling , Jednolite pobieranie próbek na zamek\nLog(z) , Dziennik(z)\nLogarithmic Distortion , Zakłócenia logarytmiczne\nLogarithmic Distortion Axis Combination for X-Axis , Logarytmiczna kombinacja osi zniekształceń dla osi X-Axis\nLogarithmic Distortion Axis Combination for Y-Axis , Logarytmiczna kombinacja osi zniekształceń dla osi Y\nLogarithmic Distortion X-Axis Direction , Zniekształcenia logarytmiczne Kierunek X-Axis\nLogarithmic Distortion Y-Axis Direction , Zniekształcenia logarytmiczne Kierunek Y-Axis\nLomography Redscale 100 , Lomografia Czerwona skala 100\nLomography X-Pro Slide 200 , Lomografia X-Pro Slide 200\nLookup Factor , Współczynnik wyszukiwania\nLookup Size , Rozmiar Lookup\nLoop Method , Metoda pętli\nLow , Niski poziom\nLow Bias , Niski poziom uprzedzenia\nLow Contrast Blue , Niski Kontrast Niebieski\nLow Frequency , Niska częstotliwość\nLow Frequency Layer , Warstwa niskiej częstotliwości\nLow Key , Niski klawisz\nLow Key 01 , Niski klawisz 01\nLow Scale , Niska skala\nLow Value , Niska wartość\nLower Layer Is the Bottom Layer for All Blends , Dolna warstwa jest dolną warstwą dla wszystkich mieszanek.\nLower Mask Threshold (%) , Dolny próg maski (%)\nLower Side Orientation , Dolna orientacja boczna\nLowercase Letters , Małymi literami\nLowlights Crossover Point , Skrzyżowanie świateł dolnych\nLowres CLUT , Zamknięcie Lowres\nLucky 64 , Szczęśliwy 64\nLuma Noise , Hałas Lumy\nLuminance , Luminancja\nLuminance Factor , Współczynnik luminancji\nLuminance Level , Poziom luminancji\nLuminance Only , Tylko Luminancja\nLuminance Only (Lab) , Tylko luminancja (laboratorium)\nLuminance Only (YCbCr) , Tylko luminancja (YCbCr)\nLuminance Shift , Zmiana luminancji\nLuminance Smoothness , Luminancja Gładkość\nLuminosity from Color , Jasność od koloru\nLuminosity Type , Rodzaj natężenia światła\nLush Green Summer , Bujne zielone lato\nLUTs Pack , Pakiet LUT\nLylejk's Painting , Malarstwo Lylejk's Painting\nMagenta Coffee , Kawa Magenta\nMagenta Day , Dzień Magenty\nMagenta Day 01 , Dzień Magenty 01\nMagenta Factor , Czynnik Magenta\nMagenta Smoothness , Magenta Gładkość\nMagenta Yellow , Magenta Żółty\nMagic Details , Magiczne szczegóły\nMagnitude / Phase , Wielkość / faza\nMail , Poczta\nMake Hue Depends on Region Size , Make Hue zależy od wielkości regionu\nMake Seamless [Diffusion] , Make Seamless [Dyfuzja]\nMake Seamless [Patch-Based] , Make Seamless [Oparte na łatach]\nMake Squiggly , Zrób Squiggly\nMake Up , Makijaż\nManual , Podręcznik\nManual Controls , Sterowanie ręczne\nMap , Mapa\nMap Tones , Tony na mapie\nMapping , Mapowanie\nMarble , Marmur\nMargin (%) , Marża (%)\nMascot Image , Obrazek maskotki\nMasculine , Męski\nMask , Maska\nMask + Background , Maska + tło\nMask as Bottom Layer , Maska jako warstwa spodnia (Bottom Layer)\nMask By , Maska przez\nMask Color , Kolor maski\nMask Contrast , Kontrast maskowy\nMask Creator , Twórca maski\nMask Dilation , Dylatacja maski\nMask Size , Rozmiar maski\nMask Smoothness (%) , Maska Gładkość (%)\nMask Type , Typ maski\nMasked Image , Obraz maskowy\nMasking , Maskowanie\nMatch Colors With , Dopasuj kolory Z\nMatching Precision (Smaller Is Faster) , Dopasowanie precyzji (Smaller Is Faster)\nMath Symbols , Symbole matematyczne\nMatrix , Matryca\nMax Angle , Kąt Maxa\nMax Angle Deviation (deg) , Maksymalne odchylenie kątowe (deg)\nMax Area , Maksymalny obszar\nMax Curve , Krzywa Maxa\nMax Cut (%) , Maksymalne cięcie (%)\nMax Iterations , Max. Iteracje\nMax Length (%) , Długość maksymalna (%)\nMax Offset (%) , Maksymalny offset (%)\nMax Threshold , Maksymalny próg\nMaximal Area , Maksymalny obszar\nMaximal Color Saturation , Maksymalne nasycenie kolorów\nMaximal Highlights , Maksymalne oświetlenie\nMaximal Radius , Maksymalny promień\nMaximal Seams per Iteration (%) , Maksymalne szwy na powtórzenie (%)\nMaximal Size , Maksymalny rozmiar\nMaximal Value , Wartość maksymalna\nMaximum , Maksymalnie\nMaximum Dimension , Maksymalny wymiar\nMaximum Image Size , Maksymalny rozmiar obrazu\nMaximum Number of Image Colors , Maksymalna liczba kolorów obrazu\nMaximum Number of Output Layers , Maksymalna liczba warstw wyjściowych\nMaximum Red:Blue Ratio in the Fringe , Maksymalny współczynnik czerwieni: Niebieski na obrzeżach\nMaximum Saturation , Maksymalne nasycenie\nMaximum Size Factor , Maksymalny współczynnik wielkości\nMaximum Value , Wartość maksymalna\nMaze Type , Typ labiryntu\nMean Color , Średni kolor\nMean Curvature , Średnia krzywizna\nMedian , Mediana\nMedian (beware: Memory-Consuming!) , Mediana (uważaj: Pamięć-zabsorbująca!)\nMedium 3 , Średnia 3\nMedium Details Smoothness , Średnie szczegóły Gładkość\nMedium Details Threshold , Średni poziom szczegółowości Próg\nMedium Frequency Layer , Warstwa średniej częstotliwości\nMedium Scale (Original) , Średnia skala (Oryginalna)\nMedium Scale (Smoothed) , Średnia skala (wygładzona)\nMemories , Wspomnienia\nMerge Brightness / Colors , Połączyć jasność / kolory\nMerge Layers? , Połączyć warstwy?\nMerging Mode , Tryb łączenia\nMerging Option , Opcja połączenia\nMerging Steps , Etapy łączenia\nMess with Bits , Bałagan z bitami\nMetallic Look , Metaliczny wygląd\nMethod , Metoda\nMetric , Metryczny\nMicro/macro Details  Adjusted , Mikro/makro Szczegóły Dostosowane\nMid Noise , Hałas środkowy\nMid Offset , Przesunięcie środkowe\nMid Tone Contrast , Kontrast Środkowego Tonu\nMiddle Grey , Szarość środkowa\nMiddle Scale , Skala średnia\nMidtones Color Intensity , Tony średnie Intensywność koloru\nMighty Details , Potężne szczegóły\nMin Angle Deviation (deg) , Min. odchylenie kątowe (deg)\nMin Area % , Obszar Min. %\nMin Cut (%) , Minimalne cięcie (%)\nMin Length (%) , Długość minimalna (%)\nMin Offset (%) , Min. Przesunięcie (%)\nMin Threshold , Min. próg\nMineral Mosaic , Mozaika mineralna\nMinesweeper , Zamiatarka górnicza\nMinimal Area , Minimalna powierzchnia\nMinimal Area (%) , Minimalna powierzchnia (%)\nMinimal Color Intensity , Minimalna intensywność koloru\nMinimal Highlights , Minimalne oświetlenie\nMinimal Path , Minimalna ścieżka\nMinimal Radius , Minimalny promień\nMinimal Region Area , Minimalny obszar regionu\nMinimal Scale (%) , Skala minimalna (%)\nMinimal Shape Area , Minimalny obszar kształtu\nMinimal Size , Minimalna wielkość\nMinimal Size (%) , Minimalna wielkość (%)\nMinimal Stroke Length , Minimalna długość skoku\nMinimal Value , Wartość minimalna\nMinimalist Caffeination , Minimalistyczna kofeinacja\nMinimum Brightness , Minimalna jasność\nMinimum Red:Blue Ratio in the Fringe , Minimalny stosunek czerwieni do błękitu na obrzeżach\nMirror , Lustro\nMirror Effect , Efekt lustra\nMirror X , Lustro X\nMirror Y , Lustro Y\nMixed Mode , Tryb mieszany\nMixer [CMYK] , Mikser [CMYK]\nMixer [HSV] , Mikser [HSV]\nMixer Mode , Tryb miksera\nMixer Style , Styl miksera\nMode , Tryb\nModern Film , Film współczesny\nModulo Value , Modulo Wartość\nMoir&eacute; Animation , Moir&eacute; Animacja\nMoire Removal , Usuwanie wilgoci\nMoire Removal Method , Metoda usuwania wilgoci\nMondrian: Composition in Red-Yellow-Blue , Mondrian: Skład w kolorze czerwono-żółto-niebieskim\nMondrian: Evening; Red Tree , Mondrian: Wieczór; Red Tree\nMonet: San Giorgio Maggiore at Dusk , Monet: San Giorgio Maggiore o zmierzchu\nMonet: Water-Lily Pond , Monet: Staw wodno-lilijny\nMonet: Wheatstacks - End of Summer , Monet: Stogi pszenicy - koniec lata\nMono Tinted , Mono Przyciemniany\nMono-Directional , Monokierunkowy\nMonochrome , Monochromatyczne\nMonochrome 1 , Monochromatyczny 1\nMonochrome 2 , Monochromatyczny 2\nMontage Type , Rodzaj montażu\nMoonlight , Światło księżyca\nMoonlight 01 , Światło księżycowe 01\nMoonrise , Wschód księżyca\nMorning 6 , Dzień dobry 6\nMorph [Interactive] , Morph [Interaktywny]\nMorph Layers , Warstwy morfowe\nMorphological - Fastest Sharpest Output , Morfologiczny - Najszybsze ostre wyjście\nMorphological Closing , Zamknięcie morfologiczne\nMorphological Filter , Filtr morfologiczny\nMorphology Painting , Morfologia Malarstwo\nMorphology Strength , Morfologia Wytrzymałość\nMosaic , Mozaika\nMost , Większość\nMostly Blue , Głównie niebieski\nMotion Analyzer , Analizator ruchu\nMotion-Compensated , Wniosek-rekompensata\nMuch , Dużo\nMuch Blue , Dużo niebieskiego\nMulti-Layer Etch , Trawienie wielowarstwowe\nMultiple Colored Shapes Over Transp. BG , Wielokolorowe kształty przezroczyste. BG\nMultiple Layers , Wiele warstw\nMultiplier , Mnożnik\nMultiply , Pomnożyć\nMultiscale Operator , Operator multiskalowy\nMuted 01 , Wyciszony 01\nMuted Fade , Wyciszony blask\nName , Nazwa\nNatural (vivid) , Naturalny (żywy)\nNature & Wildlife-1 , Przyroda i dzika przyroda-1\nNature & Wildlife-10 , Przyroda i dzika przyroda-10\nNature & Wildlife-2 , Przyroda i dzika natura-2\nNature & Wildlife-3 , Przyroda i dzika przyroda-3\nNature & Wildlife-4 , Przyroda i dzika natura-4\nNature & Wildlife-5 , Przyroda i dzika przyroda-5\nNature & Wildlife-6 , Przyroda i dzika natura-6\nNature & Wildlife-7 , Przyroda i dzika natura-7\nNature & Wildlife-8 , Przyroda i dzika przyroda-8\nNature & Wildlife-9 , Przyroda i dzika przyroda-9\nNb Circles Surrounding , Nb Kręgi Otoczenie\nNear Black , Blisko Czarnego\nNearest , Najbliższy\nNearest Neighbor , Najbliższy sąsiad\nNegation , Negacja\nNegative , Negatywny\nNegative [Color] (13) , Negatywny [Kolor] (13)\nNegative [New] (39) , Negatywny [nowy] (39)\nNegative [Old] (44) , Negatywny [Stary] (44)\nNegative Color Abstraction , Abstrakcja kolorów ujemnych\nNegative Colors , Kolory ujemne\nNegative Effect , Negatywny wpływ\nNeighborhood Size (%) , Sąsiedztwo Wielkość (%)\nNeighborhood Smoothness , Sąsiedztwo Gładkość\nNemesis , Nemezis\nNeon Lightning , Błyskawica neonowa\nNeutral Color , Neutralny kolor\nNeutral Teal Orange , Neutralny Teal Orange\nNew Curves [Interactive] , Nowe krzywe [Interaktywne]\nNewspaper , Gazeta\nNight 01 , Noc 01\nNight Blade 4 , Nocne Ostrze 4\nNight From Day , Noc Od dnia\nNight King 141 , Nocny Król 141\nNight Spy , Nocny Szpieg\nNine Layers , Dziewięć warstw\nNo Masking , Nie Maskowanie\nNo Recovery , Brak odzysku\nNo Rescaling , Nie Rescaling\nNo Transparency , Brak przejrzystości\nNoise , Hałas\nNoise [Additive] , Hałas [Dodatkowy]\nNoise [Perlin] , Hałas [Perlin]\nNoise [Spread] , Hałas [Rozproszony]\nNoise A , Hałas A\nNoise B , Hałas B\nNoise C , Hałas C\nNoise D , Hałas D\nNoise Level , Poziom hałasu\nNoise Scale , Skala hałasu\nNoise Type , Rodzaj hałasu\nNon / No , Nie / Nie\nNon-Linearity , Nieliniowość\nNon-Rigid , Niesztywny\nNone , Brak\nNone (Allows Multi-Layers) , Brak (pozwala na wielowarstwowe)\nNone- Skip , Non - Skip\nNorm Type , Typ normalny\nNormal , Normalny\nNormal Map , Mapa normalna\nNormal Output , Wyjście normalne\nNormalization , Normalizacja\nNormalize , Normalizacja\nNormalize Brightness , Normalizacja jasności\nNormalize Colors , Normalizacja kolorów\nNormalize Illumination , Normalizacja oświetlenia\nNormalize Input , Normalizacja danych wejściowych\nNormalize Luma , Normalizacja Lumy\nNormalize Scales , Normalizacja wagi\nNostalgia Honey , Nostalgia Miód\nNostalgic , Nostalgiczny\nNothing , Nic\nNumber , Numer\nNumber of Added Frames , Liczba dodanych ramek\nNumber of Angles , Liczba kątów\nNumber of Clusters , Liczba klastrów\nNumber of Colors , Liczba kolorów\nNumber of Frames , Liczba ramek\nNumber of Inter-Frames , Liczba ramek międzysystemowych\nNumber of Iterations per Scale , Liczba Iteracji na skali\nNumber of Key-Frames , Liczba ramek kluczowych\nNumber of Levels , Liczba poziomów\nNumber of Matches (Coarsest) , Liczba meczów (Najgrubsze)\nNumber of Matches (Finest) , Liczba meczów (Finest)\nNumber of Orientations , Liczba kierunków\nNumber Of Rays , Liczba promieni\nNumber of Scales , Liczba podziałek\nNumber of Sizes , Liczba rozmiarów\nNumber of Streaks , Liczba smug\nNumber of Teeth , Liczba zębów\nNumber of Tones , Liczba tonów\nObject Animation , Animacja obiektu\nObject Ratio , Stosunek liczby obiektów\nObject Tolerance , Tolerancja obiektu\nOctagon , Oktagon\nOctagonal , Ośmiokątny\nOctaves , Oktawy\nOctogon , Ośmiornica\nOddness (%) , Dziwność (%)\nOffset (%) , Przesunięcie (%)\nOffset Angle Rays Layer 1 , Przesunięcie kątowe warstwy promieniowej 1\nOffset Angle Rays Layer 2 , Przesunięcie kątowe warstwy promieniowej 2\nOld Method - Slowest , Stara metoda - Najwolniejszy\nOld Photograph , Stara fotografia\nOld West , Stary Zachód\nOldschool 8bits , Oldschool 8 bitów\nON1 Photography (90) , ON1 Fotografia (90)\nOne Layer , Jedna warstwa\nOne Layer (Horizontal) , Jedna warstwa (pozioma)\nOne Layer (Vertical) , Jedna warstwa (pionowa)\nOne Layer per Single Color , Jedna warstwa na jeden kolor\nOne Layer per Single Region , Jedna warstwa na jeden region\nOne Thread , Jeden wątek\nOnly Leafs , Tylko Leafs\nOnly Red , Tylko czerwony\nOnly Red and Blue , Tylko czerwony i niebieski\nOpacity , Nieprzezroczystość\nOpacity (%) , Nieprzezroczystość (%)\nOpacity as Heightmap , Nieprzezroczystość jako mapa wysokości\nOpacity Contours , Kontury nieprzezroczystości\nOpacity Factor , Współczynnik zmętnienia\nOpacity Gain , Wzmocnienie zmętnienia\nOpacity Gamma , Nieprzezroczystość Gamma\nOpacity Snowflake , Nieprzezroczystość Płatek śniegu\nOpacity Threshold (%) , Próg zmętnienia (%)\nOpaque Pixels , Nieprzezroczyste piksele\nOpaque Regions on Top Layer , Regiony nieprzejrzyste na wierzchniej warstwie\nOpaque Skin , Nieprzezroczysta skóra\nOpening , Otwarcie\nOperation Yellow , Operacja Żółty\nOpposing , Sprzeciwiający się\nOptimized Lateral Inhibition , Zoptymalizowana Inhibicja Boczna\nOrange Tone , Tonacja pomarańczowa\nOrange Underexposed , Pomarańczowy Nienaświetlony\nOranges , Pomarańcze\nOrder , Zamówienie\nOrder By , Zamówienie przez\nOrientation , Orientacja\nOrientation Coherence , Orientacja Spójność\nOrientation Only , Tylko orientacja\nOrientations , Orientacja\nOriginal , Oryginał\nOriginal - (Opening + Closing)/2 , Oryginalny - (Otwarcie + Zamknięcie)/2\nOriginal - Erosion , Oryginał - Erozja\nOriginal - Opening , Oryginał - Otwarcie\nOrthogonal Radius , Promień ortogonalny\nOthers (69) , Inni (69)\nOuline Color , Kolor Ouline\nOuter , Na zewnątrz\nOuter Fading , Zewnętrzne blaknięcie\nOuter Length , Długość zewnętrzna\nOuter Radius , Promień zewnętrzny\nOutline , Zarys\nOutline (%) , Obrys (%)\nOutline Color , Kolor konturu\nOutline Contrast , Kontrast konturu\nOutline Opacity , Szkic nieprzejrzystości\nOutline Size , Rozmiar zarysu\nOutline Smoothness , Obrys Gładkość\nOutline Thickness , Obrys Grubość\nOutlined , W zarysie\nOutput , Wyjście\nOutput As , Wyjście Jak\nOutput as Files , Wyjście jako plik\nOutput as Frames , Wyjście w postaci ramek\nOutput as Multiple Layers , Wyjście jako wielowarstwowe\nOutput as Separate Layers , Wyjście jako oddzielne warstwy\nOutput Ascii File , Wyjście Plik Ascii\nOutput Chroma NR , Wyjście Chroma NR\nOutput CLUT , ZAMKNIĘCIE Wyjścia\nOutput CLUT Resolution , Rozdzielczość ZAMKNIĘCIA Wyjścia\nOutput Coordinates File , Plik współrzędnych wyjściowych\nOutput Corresponding CLUT , Wyjście Odpowiadające ZAMKNIĘCIE\nOutput Directory , Katalog wyjściowy\nOutput Each Piece on a Different Layer , Wyjście Każdy element na innej warstwie\nOutput Filename , Nazwa pliku wyjściowego\nOutput Files , Pliki wyjściowe\nOutput Folder , Folder wyjściowy\nOutput Format , Format wyjściowy\nOutput Frames , Ramy wyjściowe\nOutput Height , Wysokość wyjściowa\nOutput HTML File , Wyjście Plik HTML\nOutput Layers , Warstwy wyjściowe\nOutput Mode , Tryb wyjściowy\nOutput Multiple Layers , Wyjście Wielowarstwowe\nOutput Preset as a HaldCLUT Layer , Wyjście zaprogramowane jako warstwa HaldCLUT\nOutput Region Delimiters , Region wyjściowy Ograniczniki\nOutput Saturation , Nasycenie wyjściowe\nOutput Sharpening , Ostrzenie wyjściowe\nOutput Stroke Layer On , Wyjściowa warstwa pociągowa włączona\nOutput to Folder , Wyjście do folderu\nOutput Type , Typ wyjścia\nOutput Width , Szerokość wyjściowa\nOutside , Na zewnątrz\nOutside Color , Kolor zewnętrzny\nOutward , Na zewnątrz\nOverall Blur , Całkowite rozmycie\nOverall Contrast , Kontrast ogólny\nOverall Lightness , Ogólna lekkość\nOverlap (%) , Nakładanie się (%)\nOverlay , Nakładka\nOversample , Nadpróba\nOvershoot , Przesadzenie\nPack , Pakiet\nPaint , Farba\nPaint Effect , Efekt malarski\nPaint Splat , Płytka farby\nPainter's Smoothness , Gładkość malarza\nPainter's Touch Sharpness , Ostrość dotykowa malarza\nPainting , Malarstwo\nPainting Opacity , Krycie malarskie\nPaladin , Paladyn\nPaladin 1875 , Paladyn 1875\nPaper Texture , Tekstura papieru\nParallel Processing , Przetwarzanie równoległe\nParrots , Papugi\nPassing By , Przechodzenie przez\nPastell Art , Sztuka pastelowa\nPatch Measure , Miara łatek\nPatch Size , Rozmiar łatki\nPatch Size for Analysis , Rozmiar łatki do analizy\nPatch Size for Synthesis , Rozmiar łatki do syntezy\nPatch Size for Synthesis (Final) , Rozmiar plastrów do syntezy (końcowy)\nPatch Smoothness , Łata Gładkość\nPatch Variance , Wariacja plastyczna\nPattern , Wzór:\nPattern Angle , Kąt Wzorca\nPattern Type , Typ wzoru\nPattern Variation 1 , Zmiana wzoru 1\nPattern Variation 2 , Wariacja wzoru 2\nPattern Variation 3 , Zmiana wzoru 3\nPattern Weight , Wzór Waga\nPattern Width , Szerokość wzorca\nPCA Transfer , Przeniesienie PCA\nPea Soup , Zupa grochowa\nPen Drawing , Rysunek długopisu\nPenalize Patch Repetitions , Karanie powtórzeń plastrów\nPencil , Ołówek\nPencil Amplitude , Amplituda ołówka\nPencil Portrait , Portret ołówkowy\nPencil Size , Rozmiar ołówka\nPencil Smoother Edge Protection , Ochrona ołówka przed wygładzaniem krawędzi\nPencil Smoother Sharpness , Ołówek Bardziej gładki Ostrość\nPencil Smoother Smoothness , Ołówek Gładszy Gładszy Smoothness\nPencil Type , Typ ołówka\nPencils , Ołówki\nPercent of Image Half-Hypotenuse (%) , Procentowy udział Obrazu Hipotensja połowiczna (%)\nPeriodic , Okresowo\nPeriodic Dots , Kropki okresowe\nPeriodicity , Okresowość\nPerserve Luminance , Zachowaj luminancję\nPerspective , Perspektywa\nPerturbation , Perturbacja\nPetals , Płatki\nPhase , Faza\nPhone , Telefon\nPhotoillustration , Fotoillustracja\nPicasso: Seated Woman , Picasso: Siedząca Kobieta\nPiece Complexity , Złożoność utworu\nPiece Size (px) , Rozmiar kawałka (px)\nPixel Sort , Sortowanie pikseli\nPixel Values , Wartości pikseli\nPlacement , Umieszczenie\nPlane , Samolot\nPlasma , Plazma\nPlasma Effect , Efekt plazmowy\nPlot Type , Typ działki\nPoint #0 , Punkt #0\nPoint #1 , Punkt #1\nPoint #2 , Punkt #2\nPoint #3 , Punkt #3\nPoint 1 , Punkt 1\nPoint 2 , Punkt 2\nPoints , Punkty\nPolar Transform , Transformacja biegunowa\nPolaroid 665 Negative , Polaroid 665 Negatywny\nPolaroid 665 Negative + , Polaroid 665 Negatywny +\nPolaroid 665 Negative - , Polaroid 665 Negatywny -\nPolaroid 665 Negative HC , Polaroid 665 Ujemny HC\nPolaroid 669 Cold , Polaroid 669 Zimny\nPolaroid 669 Cold + , Polaroid 669 Zimny +\nPolaroid 669 Cold - , Polaroid 669 Zimny -\nPolaroid 669 Cold -- , Polaroid 669 Zimny...\nPolaroid 690 Cold , Polaroid 690 Zimny\nPolaroid 690 Cold - , Polaroid 690 Zimny -\nPolaroid 690 Cold -- , Polaroid 690 Zimny...\nPolaroid 690 Warm , Polaroid 690 Ciepły\nPolaroid 690 Warm + , Polaroid 690 Ciepły +\nPolaroid 690 Warm ++ , Polaroid 690 Ciepły ++\nPolaroid 690 Warm - , Polaroid 690 Ciepły -\nPolaroid 690 Warm -- , Polaroid 690 Ciepły...\nPolaroid Polachrome , Polaroid Polachrom\nPolaroid PX-100UV+ Cold ++ , Polaroid PX-100UV+ Zimno ++\nPolaroid PX-100UV+ Cold +++ , Polaroid PX-100UV+ Zimno +++\nPolaroid PX-100UV+ Warm , Polaroid PX-100UV+ Ciepły\nPolaroid PX-100UV+ Warm + , Polaroid PX-100UV+ Ciepło +\nPolaroid PX-100UV+ Warm ++ , Polaroid PX-100UV+ Ciepły ++\nPolaroid PX-100UV+ Warm +++ , Polaroid PX-100UV+ Ciepły +++\nPolaroid PX-100UV+ Warm - , Polaroid PX-100UV+ Ciepły -\nPolaroid PX-100UV+ Warm -- , Polaroid PX-100UV+ Ciepły --\nPolaroid PX-680 Cold , Polaroid PX-680 Zimny\nPolaroid PX-680 Cold ++a , Polaroid PX-680 Zimny ++a\nPolaroid PX-680 Warm , Polaroid PX-680 Ciepły\nPolaroid PX-680 Warm + , Polaroid PX-680 Ciepły +\nPolaroid PX-680 Warm ++ , Polaroid PX-680 Ciepłe ++\nPolaroid PX-680 Warm - , Polaroid PX-680 Ciepły -\nPolaroid PX-680 Warm -- , Polaroid PX-680 Ciepły --\nPolaroid PX-70 Cold , Polaroid PX-70 Zimny\nPolaroid PX-70 Cold + , Polaroid PX-70 Zimny +\nPolaroid PX-70 Cold ++ , Polaroid PX-70 Zimny ++\nPolaroid PX-70 Cold -- , Polaroid PX-70 Zimny --\nPolaroid PX-70 Warm , Polaroid PX-70 Ciepły\nPolaroid PX-70 Warm + , Polaroid PX-70 Ciepły +\nPolaroid PX-70 Warm ++ , Polaroid PX-70 Ciepły ++\nPolaroid PX-70 Warm - , Polaroid PX-70 Ciepły -\nPolaroid PX-70 Warm -- , Polaroid PX-70 Ciepły --\nPolaroid Time Zero (Expired) , Czas Polaroida Zerowy (wygasły)\nPolaroid Time Zero (Expired) + , Czas Polaroida Zerowy (wygasający) +\nPolaroid Time Zero (Expired) ++ , Czas Polaroida Zerowy (wygasający) ++\nPolaroid Time Zero (Expired) - , Czas Polaroida Zero (wygasły) -\nPolaroid Time Zero (Expired) -- , Czas Polaroida Zero (wygasły) --\nPolaroid Time Zero (Expired) --- , Czas polaroidowy zero (wygasły) ---\nPolaroid Time Zero (Expired) Cold , Czas Polaroida Zerowy (wygasły) Zimny\nPolaroid Time Zero (Expired) Cold - , Czas Polaroida Zero (wygasły) Zimno -\nPolaroid Time Zero (Expired) Cold -- , Polaroid Czas Zero (wygasł) Zimno --\nPolaroid Time Zero (Expired) Cold --- , Polaroid Czas Zero (wygasły) Zimno ---\nPole Lat , Polak Lat\nPole Long , Długi Polak\nPole Rotation , Obrót bieguna\nPolka Dots , Polka Kropki\nPollock: Convergence , Pollock: Konwergencja\nPolygonize [Energy] , Poligonize [Energia]\nPortrait , Portret\nPortrait Retouching , Retusz portretowy\nPortrait-1 , Portret-1\nPortrait-2 , Portret-2\nPortrait-3 , Portret-3\nPortrait-4 , Portret-4\nPortrait-5 , Portret-5\nPortrait-6 , Portret-6\nPortrait-7 , Portret-7\nPortrait-8 , Portret-8\nPortrait-9 , Portret-9\nPortrait0 , Portret0\nPortrait1 , Portret1\nPortrait10 , Portret10\nPortrait2 , Portret2\nPortrait3 , Portret3\nPortrait4 , Portret4\nPortrait5 , Portret5\nPortrait6 , Portret6\nPortrait7 , Portret7\nPortrait8 , Portret8\nPortrait9 , Portret9\nPosition , Stanowisko\nPosition X (%) , Pozycja X (%)\nPosition X Origin (%) , Pozycja X Pochodzenie (%)\nPosition Y (%) , Pozycja Y (%)\nPosition Y Origin (%) , Pozycja Y Pochodzenie (%)\nPositive , Pozytywny\nPost-Process , Po przetworzeniu\nPoster Edges , Krawędzie plakatu\nPosterization Antialiasing , Posteryzacja Antialiasing\nPosterization Level , Poziom posteryzacji\nPosterize , Posteruj\nPosterized Dithering , Posteryzowany Dithering\nPower , Władza\nPre-Defined , Wstępnie zdefiniowany\nPre-Defined Colormap , Wstępnie zdefiniowana Colormap\nPre-Normalize Image , Wstępna normalizacja obrazu\nPre-Process , Proces wstępny\nPrecision , Precyzja\nPrecision (%) , Dokładność (%)\nPreliminary Surface Shift , Wstępna zmiana powierzchniowa\nPreliminary X-Axis Scaling , Wstępne skalowanie X-Axis\nPreliminary Y-Axis Scaling , Wstępne skalowanie Y-Axis\nPreprocessor Power , Moc preprocesora\nPreprocessor Radius , Preprocesor Promień\nPreserve Canvas for Post Bump Mapping , Zachowaj płótno do mapowania po uderzeniu\nPreserve Edges , Zachowaj krawędzie\nPreserve Image Dimension , Zachowaj wymiar obrazu\nPreserve Initial Brightness , Zachowaj początkową jasność\nPreserve Luminance , Zachowaj luminancję\nPreview , Premiera\nPreview All Outputs , Podgląd wszystkich wyjść\nPreview Bands , Zespoły podglądowe\nPreview Brush , Podgląd szczotki\nPreview Data , Podgląd danych\nPreview Detected Shapes , Podgląd wykrytych kształtów\nPreview Frame Selection , Wybór ramki podglądu (Preview Frame Selection)\nPreview Gradient , Gradient podglądowy\nPreview Grain Alone , Podgląd Ziarno Samodzielne\nPreview Grid , Siatka podglądowa\nPreview Guides , Przewodniki podglądowe\nPreview Mapping , Podgląd mapowania\nPreview Mask , Maska poglądowa\nPreview Only Shadow , Podgląd tylko cień\nPreview Opacity (%) , Podgląd Nieprzezroczystość (%)\nPreview Original , Podgląd Oryginalny\nPreview Precision , Podgląd Precyzja\nPreview Progress (%) , Podgląd postępów (%)\nPreview Progression While Running , Progresja podglądu podczas biegu\nPreview Ref Point , Punkt referencyjny podglądu\nPreview Reference Circle , Podgląd Kręgu Referencyjnego\nPreview Selection , Wybór podglądu\nPreview Shape , Podgląd kształtu\nPreview Shows , Pokazy podglądowe\nPreview Split , Podgląd Rozdzielenie\nPreview Subsampling , Podgląd Próba wstępna Próba wstępna\nPreview Time , Czas podglądu\nPreview Tones Map , Podgląd mapy tonów\nPreview Type , Typ podglądu\nPreview Without Alpha , Podgląd bez Alphy\nPrimary Angle , Kąt podstawowy\nPrimary Color , Kolor podstawowy\nPrimary Factor , Czynnik pierwotny\nPrimary Gamma , Gamma pierwotna\nPrimary Radius , Promień pierwotny\nPrimary Shift , Zmiana pierwotna\nPrint Adjustment Marks , Znaki korekcji druku\nPrint Films (12) , Drukowanie filmów (12)\nPrint Frame Numbers , Numery ramek do drukowania\nPrint Size Unit , Jednostka rozmiaru wydruku\nPrint Size Width , Rozmiar wydruku Szerokość\nPrivacy Notice , Informacja o ochronie prywatności\nProbability Map , Mapa prawdopodobieństwa\nProcedural , Proceduralne\nProcess As , Proces Jak\nProcess by Blocs of Size , Proces w podziale na bloki wielkości\nProcess Channels Individually , Kanały procesowe Indywidualnie\nProcess Top Layer Only , Tylko górna warstwa procesowa\nProcess Transparency , Przejrzystość procesu\nProcessing Mode , Tryb przetwarzania\nPropagation , Propagowanie\nProportion , Proporcja\nProtanomaly , Protanomalia\nProtect Highlights 01 , Chroń reflektory 01\nPrussian Blue , Niebieski Pruski\nPseudo-Gray Dithering , Pseudo-szary Dithering\nPurple , Fioletowy\nPurple11 (12) , Fioletowy11 (12)\nPyramid , Piramida\nPyramid Processing , Przetwarzanie w piramidzie\nPythagoras Tree , Drzewo Pitagorasa\nQuadrangle , Kwadrant\nQuadtree Variations , Wariacje Quadtree\nQuality , Jakość\nQuality (%) , Jakość (%)\nQuantization , Kwantyfikacja\nQuantize Colors , Ilość Kolory\nQuick , Szybko\nQuick Copyright , Szybkie prawa autorskie\nQuick Enlarge , Szybkie powiększenie\nR/B Smoothness (Principal) , R/B Gładkość (Główna)\nR/B Smoothness (Secondary) , R/B Gładkość (wtórna)\nRadius , Promień\nRadius (%) , Promień (%)\nRadius / Angle , Promień / Kąt\nRadius [Manual] , Promień [Instrukcja]\nRadius Cut , Cięcie promieniowe\nRadius Middle Circle , Promień Koła Środkowego\nRadius Outer Circle A (>0 W%) (<0 H%) , Promień Okrąg zewnętrzny A (>0 W%) (<0 H%)\nRain & Snow , Deszcz i śnieg\nRainbow , Tęcza\nRaindrops , Krople deszczu\nRandom , Losowo\nRandom [non-Transparent] , Losowo [nieprzezroczysty]\nRandom Angle , Kąt przypadkowy\nRandom Color Ellipses , Przypadkowe elipsy kolorystyczne (Random Color Ellipses)\nRandom Colors , Przypadkowe kolory\nRandom Seed , Nasiona losowe\nRandomized , Randomizowany\nRandomness , Przypadkowość\nRange , Zasięg\nRatio , Stosunek:\nRaw , Surowy\nRays , Ray\nRays Colors ABCD , Rays Kolory ABCD\nRays Colors ABCDE , Ray Kolory ABCDE\nRays Colors ABCDEF , Ray Kolory ABCDEF\nRays Colors ABCDEFG , Ray Kolory ABCDEFG\nRebuild From Similar Blocs , Odbudować się z podobnych bloków\nRecompose , Ponownie skomponować\nReconstruct From Previous Frames , Rekonstrukcja z poprzednich ramek\nRecover , Odzyskaj\nRecover Highlights , Odzyskaj ważne informacje\nRecover Shadows , Odzyskaj cienie\nRecovery , Odbudowa\nRectangle , Prostokątny\nRecursion Depth , Głębokość rewersyjna\nRecursions , Rekrutacje\nRecursive Median , Mediana zwrotna\nRed , Czerwony\nRed - Green - Blue , Czerwony - Zielony - Niebieski\nRed - Green - Blue - Alpha , Czerwony - Zielony - Niebieski - Alpha\nRed Blue Yellow , Czerwony Niebieski Żółty\nRed Chroma Factor , Współczynnik czerwonego aromatu\nRed Chroma Smoothness , Gładkość czerwonego aromatu\nRed Day 01 , Dzień Czerwony 01\nRed Factor , Czynnik czerwony\nRed Level , Poziom czerwony\nRed Smoothness , Czerwona Gładkość\nRed Wavelength , Długość fali czerwonej\nRed-Eye Attenuation , Tłumienie czerwonych oczu\nRed-Green , Czerwono-zielony\nReds , Czerwoni\nReds Oranges Yellows , Pomarańcze czerwone Pomarańcze żółte\nReduce Halos , Zmniejszyć halos\nReduce Noise , Zmniejszyć hałas\nReduce RAM , Zmniejszenie pamięci RAM\nReduce Redness , Zmniejszyć czerwień\nReference , Odniesienie\nReference Angle (deg.) , Kąt odniesienia (deg.)\nReference Color , Kolor odniesienia\nReference Colors , Kolory referencyjne\nReflect , Refleksja\nReflection , Refleksja\nRefraction , Refrakcja\nRegular Grid , Siatka zwykła\nRegularity , Regularność\nRegularity (%) , Regularność (%)\nRegularization , Regularizacja\nRegularization (%) , Regulacja (%)\nRegularization Factor , Czynnik regulujący\nRegularization Iterations , Iteracje regularyzacyjne\nReject , Odrzucić\nRejected Colors , Odrzucone kolory\nRejected Mask , Odrzucona maska\nRelative Block Count , Względna liczba bloków\nRelative Size , Rozmiar względny\nRelative Warping , Wypaczenia względne\nRelease Notes , Uwagi do publikacji\nRelief Amplitude , Amplituda ulgi\nRelief Contrast , Kontrast ulgi\nRelief Size , Wielkość ulgi\nRelief Smoothness , Ulga Gładkość\nRemove Artifacts From Micro/Macro Detail , Usuwanie artefaktów z Mikro/Macro szczegółów\nRemove Hot Pixels , Usuwanie gorących pikseli\nRemove Tile , Usuń płytkę\nRender Multiple Frames , Render Wiele ramek\nRender on Dark Areas , Render na Ciemnych Obszarach\nRender on White Areas , Render na White Areas\nRender Routine for Wiggle Animations , Rutyna Render dla animacji Wiggle'a\nRendering Mode , Tryb renderowania\nRepair Scanned Document , Zeskanowany dokument naprawczy\nRepeat , Powtórzyć\nRepeat [Memory Consuming!] , Powtórz. [Pożerająca pamięć!]\nRepeats , Powtarza się\nReplace , Zastąpić\nReplace (Sharpest) , Zastąpić (Najostrzejszy)\nReplace Layer with CLUT , Wymień warstwę na CLUT\nReplace Source by Target , Zastąpienie źródła przez cel\nReplace With White , Wymień z białym\nReplaced Color , Zastąpiony kolor\nReplacement Color , Kolor zastępczy\nReptile , Gad\nRescaling , Skalowanie\nReset View , Resetuj widok\nResize Image for Optimum Effect , Zmiana rozmiaru obrazu w celu uzyskania optymalnego efektu\nResolution , Rezolucja\nResolution (%) , Rezolucja (%)\nResolution (px) , Uchwała (px)\nRest 33 , Reszta 33\nResult Image , Obraz wynikowy\nResult Type , Rodzaj wyniku\nResynthetize Texture [FFT] , Tekstura resyntetyzowana [FFT]\nResynthetize Texture [Patch-Based] , Tekstura reyntetyzowania [na bazie plastrów]\nRetouch Layer , Warstwa retuszu\nRetouched and Sharpened Areas , Obszary remontowane i zaostrzone\nRetouched Areas Only , Tylko obszary remontowane\nRetouched Image , Retuszowany obraz\nRetouched Image Basic , Retuszowany obraz podstawowy\nRetouched Image Final , Retuszowany obraz końcowy\nRetouching Style , Styl retuszu\nRetro Brown 01 , Retro Brązowy 01\nRetro Summer 3 , Retro Lato 3\nRetro Yellow 01 , Retro Żółty 01\nReturn Scaling , Skalowanie powrotne\nReverse Bits , Bity odwrotne\nReverse Bytes , Bajty odwrotne\nReverse Effect , Efekt odwrotny\nReverse Endianness , Odwrotna Endianiczność\nReverse Flip , Odwrócone salto\nReverse Frame Stack , Odwrotny stos ramek\nReverse Gradient , Gradient odwrotny\nReverse Mod , Odwrócony mod\nReverse Motion , Odwrotny wniosek\nReverse Order , Odwrotny porządek\nReverse Pow , Odwrotny Pow\nReversing , Cofanie\nRevert Layer Order , Odwrotna kolejność warstw\nRevert Layers , Warstwy odwrotne\nRGB [All] , RGB [Wszystkie]\nRGB [Blue] , RGB [Niebieski]\nRGB [Green] , RGB [Zielony]\nRGB [red] , RGB [czerwony]\nRGB Image + Binary Mask (2 Layers) , Obraz RGB + maska binarna (2 warstwy)\nRGB Quantization , RGB Kwantyfikacja\nRGB Tone , Ton RGB\nRGBA [All] , RGBA [Wszystkie]\nRGBA Foreground + Background (2 Layers) , RGBA Pierwszy plan + tło (2 warstwy)\nRGBA Image (Full-Transparency / 1 Layer) , Obraz RGBA (Full Transsparency / 1 warstwa)\nRGBA Image (Updatable / 1 Layer) , Obraz RGBA (z możliwością aktualizacji / 1 warstwa)\nRice , Ryż\nRight , Prawo\nRight Diagonal  Foreground , Prawa przekątna pierwszego planu\nRight Diagonal Foreground , Prawa przekątna pierwszego planu\nRight Eye View , Widok prawego oka\nRight Foreground , Prawy pierwszy plan\nRight Position , Właściwa pozycja\nRight Side Orientation , Prawostronna orientacja\nRight Slope , Prawy stok\nRight Stream Only , Tylko Right Stream\nRigid , Sztywny\nRoddy (by Mahvin) , Roddy (przez Mahvina)\nRodilius [Animated] , Rodilius [Animowany]\nRollei Retro 100 Tonal , Rollei Retro 100 Tonalny\nRollei Retro 80s , Rollei Retro lat 80.\nRose , Róża\nRotate , Obróć\nRotate (muted) , Obrót (wyciszenie)\nRotate (vibrant) , Obracaj się (wibruj)\nRotate 180 Deg. , Obróć o 180 stopni.\nRotate 270 Deg. , Obróć o 270 stopni.\nRotate 90 Deg. , Obróć o 90 stopni.\nRotate Hue Bands , Obróć opaski Hue Bands\nRotate Tree , Obróć drzewo\nRotated , Obrócony\nRotated (crush) , Obrócony (zgniecenie)\nRotations , Obroty\nRound , Runda\nRow by Row , Wiersz po wierszu\nRYB [All] , RYB [Wszystkie]\nRYB [Blue] , RYB [Niebieski]\nS-Curve Contrast , Kontrast krzywej S\nSalt and Pepper , Sól i pieprz\nSame as Input , Tak samo jak wejście\nSame Axis , Ta sama oś\nSample Image , Przykładowy obraz\nSampling , Pobieranie próbek\nSaturated Blue , Nasycony błękit\nSaturation , Nasycenie\nSaturation (%) , Nasycenie (%)\nSaturation Channel Gamma , Kanał nasycenia Gamma\nSaturation Correction , Korekta nasycenia\nSaturation EQ , EQ nasycenia\nSaturation Factor , Współczynnik nasycenia\nSaturation Offset , Przesunięcie nasycenia\nSaturation Shift , Przesunięcie nasycenia\nSaturation Smoothness , Nasycenie Gładkość\nSave CLUT as .Cube or .Png File , Zapisz CLUT jako plik .Cube lub .Png\nSave Gradient As , Zapisz gradient jako\nSaving Private Damon , Ratowanie prywatnego Damona\nScale , Skala:\nScale (%) , Skala (%)\nScale 1 , Skala 1\nScale 2 , Skala 2\nScale CMYK , Skala CMYK\nScale Factor , Współczynnik skali\nScale Output , Skala wyjściowa\nScale Plasma , Skala Plazma\nScale RGB , Skala RGB\nScale Style to Fit Target Resolution , Styl skali dopasowany do rozdzielczości docelowej\nScale Variations , Zmiany skali\nScaled , Skalowany\nScales , Wagi\nScaling Factor , Współczynnik skalowania\nScene Selector , Selektor scen\nScreen , Ekran\nScreen Border , Granica ekranu\nSeamless Deco , Bezszwowe Deco\nSeamless Turbulence , Bezszwowa turbulencja\nSecond Color , Drugi kolor\nSecond Offset , Drugi offset\nSecond Radius , Drugi promień\nSecond Size , Druga wielkość\nSecondary Color , Kolor wtórny\nSecondary Factor , Czynnik drugorzędny\nSecondary Gamma , Gamma drugorzędna\nSecondary Radius , Promień drugorzędny\nSecondary Shift , Zmiana wtórna\nSectors , Sektory\nSeed , Nasiona\nSegment Max Length (px) , Segment Maksymalna długość (px)\nSegmentation , Segmentacja\nSegmentation Edge Threshold , Segmentacyjny próg krawędziowy\nSegmentation Smoothness , Segmentacja Gładkość\nSegments , Segmenty\nSegments Strength , Segmenty Wytrzymałość\nSelect By , Wybierz Przez\nSelect-Replace Color , Wybierz-Replace Color\nSelected Color , Wybrany kolor\nSelected Colors , Wybrane kolory\nSelected Frame , Wybrana ramka\nSelected Mask , Wybrana maska\nSelection , Wybór\nSelective Desaturation , Desaturacja selektywna\nSelective Gaussian , Selektywny Gaussian\nSelf Image , Obraz siebie\nSensitivity , Wrażliwość\nSequence X4 , Sekwencja X4\nSequence X6 , Sekwencja X6\nSequence X8 , Sekwencja X8\nSerenity , Spokój\nSerial Number , Numer seryjny\nSeringe 4 , Serge 4\nSerpent , Wąż\nSet Aspect Only , Tylko w aspekcie\nSet Frame Format , Ustawianie formatu ramki\nSeven Layers , Siedem warstw\nSeventies Magazine , Magazyn z lat siedemdziesiątych\nShade , Cień\nShade Angle , Kąt widzenia cienia\nShade Back to First Color , Odcień Powrót do pierwszego koloru\nShade Strength , Wytrzymałość cienia\nShading , Cieniowanie\nShading (%) , Cieniowanie (%)\nShadow , Cień\nShadow Contrast , Kontrast cieni (Shadow Contrast)\nShadow Intensity , Cień Intensywność\nShadow Offset X , Przesunięcie cienia X\nShadow Offset Y , Przesunięcie cienia Y\nShadow Size , Rozmiar cienia (Shadow Size)\nShadow Smoothness , Cień Gładkość cienia\nShadows , Cienie\nShadows Abstraction , Cienie Abstrakcja\nShadows Brightness , Cienie Jasność\nShadows Color Intensity , Cienie Intensywność koloru\nShadows Lightness , Cienie Lekkość\nShadows Selection , Wybór cieni (Shadows Selection)\nShadows Threshold , Cienie Próg\nShadows Zone , Strefa cieni (Shadows Zone)\nShape , Kształt\nShape Area Max , Obszar kształtu Max\nShape Area Max0 , Obszar kształtu Max0\nShape Area Min0 , Obszar kształtu Min0\nShape Average , Kształt Średnia\nShape Average0 , Kształt Średnia0\nShape Max , Kształt Max\nShape Max0 , Kształt Max0\nShape Median , Kształt Mediany\nShape Median0 , Kształt Mediany0\nShape Min0 , Kształt Min0\nShapeaverage , Średni kształt\nShapes , Kształty\nSharp Abstract , Ostre streszczenie\nSharpen , Ostrzyć\nSharpen [Deblur] , Ostrzyć [Deblur]\nSharpen [Gold-Meinel] , Ostrzyć [Gold-Meinel]\nSharpen [Gradient] , Ostrzyć [Gradient]\nSharpen [Hessian] , Ostrzyć [Hessian]\nSharpen [Inverse Diffusion] , Wyostrzyć [Odwrócenie dyfuzji]\nSharpen [Multiscale] , Ostrzyć [Multiscale]\nSharpen [Octave Sharpening] , Sharpen [Oktawowe Ostrzenie]\nSharpen [Richardson-Lucy] , Wyostrzyć [Richardson-Lucy]\nSharpen [Shock Filters] , Wyostrzyć [Filtry wstrząsające]\nSharpen [Texture] , Wyostrzyć [Tekstura]\nSharpen [Tones] , Wyostrzyć [Tony]\nSharpen [Unsharp Mask] , Wyostrzyć [Maska Naostrzona]\nSharpen [Whiten] , Ostrzyć [Whiten]\nSharpen Details in Preview , Wyostrzyć szczegóły w Podglądzie\nSharpen Edges Only , Tylko ostre krawędzie\nSharpen Object , Ostrzony obiekt\nSharpen Radius , Ostry promień\nSharpen Shades , Wyostrzone odcienie (Sharpen Shades)\nSharpened Areas Only , Tylko obszary zaostrzone\nSharpening , Ostrzenie\nSharpening Layer , Ostrzenie warstwy\nSharpening Radius , Promień ostrzenia\nSharpening Strength , Wytrzymałość na ostrzenie\nSharpening Type , Rodzaj ostrzenia\nSharpest , Najostrzejszy\nSharpness , Ostrość\nShift Linear Interpolation? , Interpolacja liniowa Shift?\nShift Point , Punkt zmiany\nShift Y , Zmiana Y\nShininess , Błyskotliwość\nShivers , Ciarki\nShopping Cart , Wózek na zakupy\nShow Both Poles , Pokaż obu Polaków\nShow Difference , Pokaż różnicę\nShow Frame , Pokaż ramkę\nShrink , Kurczyć się\nShuffle Pieces , Shuffle Kawałki\nSierpinksi Design , Projekt Sierpinksi\nSierpinski Triangle , Trójkąt Sierpińskiego\nSilver , Srebro\nSimilarity Space , Podobieństwo przestrzeni\nSimple Local Contrast , Prosty lokalny kontrast\nSimple Noise Canvas , Hałasowe płótno proste\nSimulate Film , Symuluj film\nSin(z) , Grzech (z)\nSingle (Merged) , Pojedynczy (połączony)\nSingle Custom Depth Map , Pojedyncza niestandardowa mapa głębokości\nSingle Image Stereogram , Stereogram jednoobrazowy\nSingle Layer , Jednowarstwowy\nSix Layers , Sześć warstw\nSixteen Threads , Szesnaście wątków\nSize , Rozmiar\nSize (%) , Wielkość (%)\nSize for Bright Tones , Rozmiar dla Jasnych Tonów\nSize for Dark Tones , Rozmiar dla Dark Tones\nSize of Frame Numbers (%) , Wielkość Liczba ramek (%)\nSize Variance , Rozmiar Rozmiar Variance\nSize-1 , Wielkość 1\nSize-2 , Rozmiar 2\nSize-3 , Wielkość - 3\nSkeleton , Szkielet\nSkin Estimation , Ocena skóry\nSkin Mask , Maska na skórę\nSkin Tone Colors , Kolory tonów skóry\nSkin Tone Mask , Maska z odcieniem skóry\nSkin Tone Protection , Ochrona przed zabarwieniem skóry\nSkip All Other Steps , Pomiń wszystkie inne kroki\nSkip Finest Scales , Pomiń najdrobniejsze skale\nSkip Others Steps , Pomiń inne kroki\nSkip This Step , Pomiń ten krok\nSkip to Use the Mask to Boost , Przejdź do opcji Użyj maski, aby zwiększyć.\nSlice Luminosity , Plaster Luminosity\nSlide [Color] (26) , Suwak [Kolor] (26)\nSlow Recovery , Powolny powrót do zdrowia\nSmall , Mały\nSmall (Faster) , Mały (Szybszy)\nSmart Threshold , Inteligentny próg\nSmooth , Gładko\nSmooth [Anisotropic] , Gładki [Anizotropowy]\nSmooth [Bilateral] , Gładko [dwustronnie]\nSmooth [Block PCA] , Gładko [blok PCA]\nSmooth [Diffusion] , Smooth [Dyfuzja]\nSmooth [Geometric-Median] , Gładki [Geometryczno-medyczny]\nSmooth [Guided] , Smooth [Prowadzony]\nSmooth [Mean-Curvature] , Gładka [średnia-kurwatura]\nSmooth [Median] , Smooth [Mediana]\nSmooth [Patch-Based] , Gładko. [Łata]\nSmooth [Patch-PCA] , Gładki [Patch-PCA]\nSmooth [Selective Gaussian] , Smooth [Gaussian Selektywny]\nSmooth [Skin] , Smooth [Skóra]\nSmooth [Thin Brush] , Gładko [cienka szczotka]\nSmooth [Total Variation] , Gładko [Całkowita zmienność]\nSmooth Abstract , Gładkie streszczenie\nSmooth Amount , Gładka kwota\nSmooth Clear , Smooth Jasne\nSmooth Colors , Gładkie kolory\nSmooth Only , Tylko gładki\nSmooth Sailing , Gładkie żeglowanie\nSmoothen Background Reconstruction , Wygładzanie tła Odbudowa tła\nSmoother Sharpness , Gładsza ostrość\nSmoothing , Wygładzanie\nSmoothing Style , Styl wygładzający\nSmoothing Type , Typ wygładzania\nSmoothness , Gładkość\nSmoothness (%) , Gładkość (%)\nSmoothness (px) , Gładkość (px)\nSmoothness Shadow , Gładkość Cień\nSmoothness Type , Gładkość Typ\nSnowflake , Płatek śniegu\nSnowflake 2 , Płatek śniegu 2\nSnowflake Recursion , Płatek śniegu Powrót\nSoft , Miękka\nSoft  Light , Miękkie światło\nSoft Burn , Miękkie oparzenie\nSoft Fade , Miękkie zanikanie\nSoft Glow , Miękka poświata\nSoft Light , Miękkie światło\nSoft Random Shades , Miękkie przypadkowe odcienie\nSoft Warming , Miękkie Ogrzewanie\nSoften , Często\nSoften All Channels , Zmiękcz wszystkie kanały\nSoften Guide , Przewodnik Miękki\nSolarize , Solaryzować\nSolarize Color , Kolor słoneczny\nSolarized Color2 , Kolor słoneczny2\nSolidify , Solidaryzuje się\nSolve Maze , Rozwiązuj labirynt\nSome , Niektóre\nSome Blue , Niektóre Blue\nSome Cyan , Jakiś Cyjan\nSome Green , Trochę zieleni\nSome Key , Jakiś klucz\nSome Magenta , Trochę Magenty\nSome Red , Trochę czerwieni\nSome Yellow , Trochę żółty\nSort Colors , Sortowanie kolorów\nSorting Criterion , Kryterium sortowania\nSource (%) , Źródło (%)\nSource Color #1 , Kolor źródłowy #1\nSource Color #10 , Kolor źródłowy #10\nSource Color #11 , Kolor źródłowy #11\nSource Color #12 , Kolor źródłowy #12\nSource Color #13 , Kolor źródłowy #13\nSource Color #14 , Kolor źródłowy #14\nSource Color #15 , Źródło Kolor #15\nSource Color #16 , Źródło Kolor #16\nSource Color #17 , Kolor źródłowy #17\nSource Color #18 , Kolor źródłowy #18\nSource Color #19 , Źródło Kolor #19\nSource Color #2 , Źródło Kolor #2\nSource Color #20 , Kolor źródłowy #20\nSource Color #21 , Źródło Kolor #21\nSource Color #22 , Kolor źródłowy #22\nSource Color #23 , Kolor źródłowy #23\nSource Color #24 , Źródło Kolor #24\nSource Color #3 , Źródło Kolor #3\nSource Color #4 , Kolor źródłowy #4\nSource Color #5 , Kolor źródłowy #5\nSource Color #6 , Źródło Kolor #6\nSource Color #7 , Kolor źródłowy #7\nSource Color #8 , Źródło Kolor #8\nSource Color #9 , Źródło Kolor #9\nSource X-Tiles , Źródło X-Tiles\nSource Y-Tiles , Źródło Płytki Y\nSpace , Przestrzeń\nSpatial Bandwidth , Pasmo przestrzenne\nSpatial Metric , Metryka przestrzenna\nSpatial Overlap , Przestrzenne nakładanie się\nSpatial Precision , Precyzja przestrzenna\nSpatial Radius , Promień przestrzenny\nSpatial Regularization , Regulacja przestrzenna\nSpatial Sampling , Pobieranie próbek przestrzennych\nSpatial Scale , Skala przestrzenna\nSpatial Tolerance , Tolerancja przestrzenna\nSpatial Transition , Transformacja przestrzenna\nSpatial Variance , Wariacja przestrzenna\nSpecial Effects , Efekty specjalne\nSpecific Saturation , Specyficzne nasycenie\nSpecify Different Output Size , Określać różne wielkości wyjściowe\nSpecify HaldCLUT As , Określ HaldCLUT jako\nSpecular Centering , Centrowanie spekulacyjne\nSpecular Intensity , Spekularna Intensywność\nSpecular Light , Światło migawkowe\nSpecular Lightness , Lekkość mowy\nSpecular Size , Rozmiar spekulatywny\nSpeed , Prędkość\nSphere , Sfera\nSpiral , Spirala\nSpiral RGB , Spirala RGB\nSpline B1 , Klinga B1\nSpline B2 , Linia B2\nSpline B3 , Klinika B3\nSpline B4 , Klinga B4\nSpline B5 , Klinga B5\nSpline B6 , Klinga B6\nSpline Editor , Redaktor Spline\nSpline Max Angle (deg) , Klinga Max Kąt (deg)\nSpline Max Length (px) , Klinga Maksymalna długość (px)\nSpline Roundness , Spline Okrągłość\nSplines , Spliny\nSplit Base and Detail Output , Wyjście z podziałem na bazę i szczegóły\nSplit Brightness / Colors , Podział Jasność / Kolory\nSplit Details [Alpha] , Szczegóły podziału [Alpha]\nSplit Details [Wavelets] , Szczegóły podziału [Fale]\nSponge , Gąbka\nSpread Amount , Spread Kwota\nSpread Angles , Kąty rozproszenia\nSpread Noise Amount , Hałas rozproszony Ilość\nSpreading , Rozprzestrzenianie się\nSpring Morning , Wiosenny poranek\nSprocket 231 , Koło zębate 231\nSpy 29 , Szpieg 29\nSquare , Plac\nSquare 1 , Plac 1\nSquare 2 , Plac 2\nSquare to Circle , Od kwadratu do koła\nSquared-Euclidean , Kwadratowo-Euklidesowy\nSquares , Placyki\nSquares (Outline) , Kwadraty (kontur)\nSRGB Conversion , Konwersja SRGB\nStabilizer , Stabilizator\nStained Glass , Witraż\nStamp , Stempel\nStandard [No Scan] , Standard [Bez skanowania]\nStandard Deviation , Odchylenie standardowe\nStar , Gwiazda\nStar: -5*(z^3/3-Z/4)/2 , Gwiazda: -5*(z^3/3-Z/4)/2\nStars , Gwiazdy\nStars (Outline) , Gwiazdy (kontur)\nStart Angle , Kąt startu\nStart Color , Kolor startowy\nStart Frame Number , Numer ramy startowej\nStart of Mid-Tones , Początek tonów średnich\nStarting Angle , Kąt początkowy\nStarting Color , Kolor początkowy\nStarting Feathering , Rozpoczęcie pierzenia\nStarting Frame , Rama startowa\nStarting Level , Poziom wyjściowy\nStarting Pattern , Wzór początkowy\nStarting Point , Punkt startowy\nStarting Point (%) , Punkt początkowy (%)\nStarting Scale (%) , Skala początkowa (%)\nStarting Value , Wartość początkowa\nStationary Frames , Ramy stacjonarne\nStd Angle (deg.) , Kąt Std (deg.)\nStd Branching , Oddział Std\nStd Length Factor (%) , Std Współczynnik długości (%)\nStd Thickness Factor (%) , Std Współczynnik grubości (%)\nStencil Type , Typ szablonu\nStep , Krok\nStep (%) , Stopień (%)\nSteps , Kroki\nStereo Image , Obraz Stereo\nStereo Window Position , Pozycja okna Stereo\nStereographic Projection , Projekcja stereograficzna\nStereoscopic Image Alignment , Stereoskopowe wyrównywanie obrazu\nStereoscopic Window Position , Stereoskopowa pozycja okna\nStraight , Prosto\nStrands , Nitki\nStreet , Ulica\nStrength , Siła\nStrength (%) , Siła (%)\nStrength Effect , Efekt siły\nStrength Highlights , Mocne strony\nStrength Midtones , Siła Midtonów\nStrength Shadows , Siła Cienie (Strength Shadows)\nStretch Contrast , Kontrast rozciągający\nStretch Factor , Czynnik rozciągający (Stretch Factor)\nStripe Orientation , Orientacja pasków\nStroke Angle , Kąt uderzenia\nStroke Length , Długość skoku\nStroke Strength , Wytrzymałość na uderzenia\nStrong , Silny\nStructure Smoothness , Struktura Gładkość\nStyle , Styl\nStyle Variations , Zmiany w stylu\nStylize , Styliza\nSubdivisions , Pododdziały\nSubpixel Interpolation , Interpolacja subpikselowa\nSubpixel Level , Poziom subpikseli\nSubsampling (%) , Pobieranie podpróbek (%)\nSubtle Blue , Subtelny błękit\nSubtle Green , Subtelna zieleń\nSubtle Yellow , Subtelnie żółty\nSubtract , Odejmij\nSubtractive , Odejmowalne\nSummer , Lato\nSummer (alt) , Lato (alt)\nSunny , Słoneczny\nSunny (alt) , Słoneczny (alt)\nSunny (rich) , Słoneczny (bogaty)\nSunny (warm) , Słonecznie (ciepło)\nSuper Warm , Super Ciepło\nSuper Warm (rich) , Super ciepły (bogaty)\nSuper-Pixels , Super-Piksele\nSuperformula , Superformuła\nSuperimpose with Original? , Nakładać z Oryginałem?\nSurface Disturbance , Zakłócenia powierzchniowe\nSurface Disturbance Multiplier , Zakłócenia powierzchniowe Mnożnik\nSwap Layers , Warstwy zamienne\nSwap Radius / Angle , Promień zamiany / Kąt\nSweet Gelatto , Słodka żelatynka\nSymmetric 2D Shape , Symetryczny kształt 2D\nSymmetrize , Symetryzuj\nSymmetry , Symetria\nSymmetry Sides , Symetria Strony\nSynthesis Scale , Skala syntezy\nTangent Radius , Promień styczny\nTarget Color #1 , Kolor docelowy #1\nTarget Color #10 , Kolor docelowy #10\nTarget Color #11 , Kolor docelowy #11\nTarget Color #12 , Kolor docelowy #12\nTarget Color #13 , Kolor docelowy #13\nTarget Color #14 , Kolor docelowy #14\nTarget Color #15 , Kolor docelowy #15\nTarget Color #16 , Kolor docelowy #16\nTarget Color #17 , Kolor docelowy #17\nTarget Color #18 , Kolor docelowy #18\nTarget Color #19 , Kolor docelowy #19\nTarget Color #2 , Kolor docelowy #2\nTarget Color #20 , Kolor docelowy #20\nTarget Color #21 , Kolor docelowy #21\nTarget Color #22 , Kolor docelowy #22\nTarget Color #23 , Kolor docelowy #23\nTarget Color #24 , Kolor docelowy #24\nTarget Color #3 , Kolor docelowy #3\nTarget Color #4 , Kolor docelowy #4\nTarget Color #5 , Kolor docelowy #5\nTarget Color #6 , Kolor docelowy #6\nTarget Color #7 , Kolor docelowy #7\nTarget Color #8 , Kolor docelowy #8\nTarget Color #9 , Kolor docelowy #9\nTechnicalFX - Backlight Filter , TechnicalFX - Filtr podświetlający\nTemperature Balance , Bilans temperaturowy\nTen Layers , Dziesięć warstw\nTension Green 1 , Napięcie Zielony 1\nTension Green 2 , Napięcie Zielony 2\nTension Green 3 , Napięcie Zielony 3\nTension Green 4 , Napięcie Zielony 4\nTertiary Factor , Czynnik trzeciorzędny\nTertiary Gamma , Trzeciorzędowa Gamma\nTertiary Shift , Trzeciorzędna zmiana\nTertiary Twist , Trzeciorzędny Twist\nText , Tekst\nTexture , Tekstura\nTexture Enhance , Wzmocnienie tekstury\nTextured Glass , Szkło teksturowane\nThe Matrices , Matryce\nThickness , Grubość\nThickness (%) , Grubość (%)\nThickness (px) , Grubość (px)\nThickness Factor , Współczynnik grubości\nThin Edges , Cienkie krawędzie\nThin Separators , Cienki Separator\nThinness , Cienkość\nThinning , Przerzedzanie\nThinning (Slow) , Przerzedzanie (Powoli)\nThree Layers , Trzy warstwy\nThreshold , Próg\nThreshold (%) , Próg (%)\nThreshold High , Wysoki próg\nThreshold Low , Niski próg\nThreshold Max , Próg Max\nThreshold Mid , Próg Mid\nThreshold On , Próg włączony\nThumbnail Size , Wielkość miniatury\nTiger , Tygrys\nTikhonov , Tichonow\nTile Poles , Kafelki\nTile Size , Wielkość płytek\nTileable Rotation , Obrót płytami stolikowymi\nTiled Isolation , Izolacja kafelkowa\nTiled Normalization , Normalizacja kafelkowa\nTiled Parameterization , Parametryzacja płytek\nTiled Preview , Podgląd kafelkowy\nTiled Random Shifts , Przypadkowe zmiany kafelkowe (Tiled Random Shifts)\nTiled Rotation , Obrót kafelkami\nTiles , Płytki\nTiles to Layers , Kafelki do warstw\nTilt , Przechylenie\nTime , Czas\nTime Step , Krok czasowy\nTimed Image , Obraz czasowy\nTiny , Malutki\nTo Nadir / Zenith , Do Nadiru / Zenitu\nToggle to View Base Image , Przełączanie do widoku obrazu podstawowego\nTolerance , Tolerancja\nTolerance to Gaps , Tolerancja na luki\nTonal Bandwidth , Tonalna szerokość pasma\nTone Blur , Rozmycie tonalne\nTone Enhance , Wzmocnienie tonu\nTone Mapping [Fast] , Tone Mapping [Szybko]\nTone Mapping Fast , Szybkie mapowanie tonów\nTone Presets , Ustawienia tonów\nTone Threshold , Próg tonalny\nTones Range , Tony Range\nTones Smoothness , Tony Gładkość\nTones to Layers , Tony do warstw\nTop Layer , Warstwa wierzchnia\nTop Left , Górna lewa strona\nTop Right , Na górze, po prawej stronie\nTop-Left Vertex (%) , Wierzchołek lewy-prawy (%)\nTop-Right Vertex (%) , Wierzchołek prawy (%)\nTotal Layers , Warstwy ogółem\nTotal Variation , Całkowite wahania\nTransfer Colors [Histogram] , Kolory transferowe [Histogram]\nTransfer Colors [Patch-Based] , Kolory transferowe [na bazie plastrów]\nTransfer Colors [PCA] , Kolory transferowe [PCA]\nTransfer Colors [Variational] , Kolory transferowe [Variational]\nTransform , Transformacja\nTransition Map , Mapa przejściowa\nTransition Shape , Przejściowy kształt\nTransition Smoothness , Przejście Gładkość\nTransmittance Map , Mapa przekaźnikowa\nTransparency , Przejrzystość\nTransparent , Przejrzysty\nTransparent Background , Przejrzyste tło\nTransparent Black & White , Przezroczysty czarno-biały\nTransparent Color , Kolor transparentny\nTransparent on Black , Przejrzysty na czarno\nTransparent on White , Przejrzysty na białym\nTransparent Skin , Przejrzysta skóra\nTree , Drzewo\nTriangle , Trójkąt\nTriangles , Trójkątów\nTriangles (Outline) , Trójkątów (kontur)\nTriangular Ha , Trójkątny Ha\nTriangular Hb , Trójkątny Hb\nTriangular Va , Trójkątny Va\nTriangular Vb , Trójkątny Vb\nTritanomaly , Tritanomalia\nTrunk Color , Kolor tułowia\nTrunk Opacity (%) , Nieprzezroczystość pnia (%)\nTrunks , Kufry\nTulips , Tulipany\nTunnel , Tunel\nTurbulence , Turbulencje\nTurbulence 2 , Turbulencja 2\nTurbulent Halftone , Turbulentny Halftone\nTurn on Rotate and Twirl , Włączyć Rotate i Twirl\nTwo Layers , Dwie warstwy\nTwo Threads , Dwa nici\nType , Typ\nType Snowflake , Typ Płatek śniegu\nUltra Water , Ultra Woda\nUltraWarp++++ , UltraWarp+++\nUnaligned Images , Obrazy niesymetryczne\nUndeniable , Bezsprzecznie\nUndeniable 2 , Niezaprzeczalny 2\nUnderwater , Pod wodą\nUnknown , Nieznany\nUnpurple , Nieprecyzyjny\nUnsharp Mask , Maska nieostra\nUp-Left , W górę-lewo\nUpper Layer Is the Top Layer for All Blends , Górna warstwa jest górną warstwą dla wszystkich mieszanek\nUpper Side Orientation , Górna orientacja boczna\nUppercase Letters , Wielkie litery\nUpscale [Diffusion] , Upscale [Dyfuzja]\nUrban Cowboy , Kowboj Miejski\nUse as Hue , Użyj jako barwy\nUse as Saturation , Zastosowanie jako nasycenie\nUse Individual Depth Map , Użyj indywidualnej mapy głębokości\nUse Light , Użyj światła\nUse Maximum Tones , Użyj Maksymalnych Tonów\nUse Top Layer as a Priority Mask , Użyj górnej warstwy jako maski priorytetowej\nUser-Defined , Zdefiniowany przez użytkownika\nUser-Defined (Bottom Layer) , Zdefiniowany przez użytkownika (warstwa dolna)\nUzbek Bukhara , Uzbecka Buchara\nUzbek Marriage , Uzbeckie Małżeństwo\nUzbek Samarcande , Uzbecki Samarcande\nV Cutoff , V Odcięcie\nValue , Wartość\nValue Action , Wartość Działania\nValue Blending , Łączenie wartości\nValue Bottom , Wartość Dół\nValue Correction , Korekta wartości\nValue Factor , Współczynnik wartości\nValue Normalization , Wartość Normalizacja\nValue Offset , Wartość Przesunięcie\nValue Precision , Wartość Precyzja\nValue Range , Zakres wartości\nValue Scale , Skala wartości\nValue Shift , Zmiana wartości\nValue Smoothness , Wartość Gładkość\nValue Top , Wartość górna\nValue Variance , Zmienność wartości\nValues , Wartości\nVan Gogh: Irises , Van Gogh: Irysy\nVan Gogh: The Starry Night , Van Gogh: Gwieździsta noc\nVan Gogh: Wheat Field with Crows , Van Gogh: Pole pszenicy z wronami\nVariability , Zmienność\nVariation A , Wariacja A\nVariation B , Zmiana B\nVariation C , Zmiana C\nVector Painting , Malarstwo wektorowe (Vector Painting)\nVertex Type , Typ Vertexu\nVertical , Pionowo\nVertical (%) , Pionowe (%)\nVertical 1 Amount , Pionowe 1 Kwota\nVertical 1 Length , Pionowe 1 Długość\nVertical 2 Amount , Pionowe 2 Kwota\nVertical 2 Length , Pionowe 2 Długość\nVertical Amount , Kwota pionowa\nVertical Array , Układ pionowy\nVertical Blur , Rozmycie pionowe\nVertical Length , Długość pionowa\nVertical Size (%) , Wielkość pionowa (%)\nVertical Stripes , Paski pionowe\nVertical Tiles , Płytki pionowe\nVery Course 5 , Bardzo Kurs 5\nVery Fine , Bardzo dobrze\nVery High , Bardzo wysoka\nVery High (Even Slower) , Bardzo wysoka (nawet wolniejsza)\nVery Warm Greenish , Bardzo ciepły zielonkawy\nVibrant (alien) , Vibrant (kosmita)\nVibrant (contrast) , Vibrant (kontrast)\nVictory , Zwycięstwo\nView Outlines Only , Widok tylko konturów\nView Resolution , Rozdzielczość widoków\nVignette , Winieta\nVignette Contrast , Kontrast winiety\nVignette Max Radius , Winieta Max Promień\nVignette Min Radius , Winieta Min. Promień\nVignette Size , Rozmiar winiety\nVignette Strength , Wytrzymałość winiety\nVignette Strenth , Winieta Strenth\nVintage (brighter) , Vintage (jaśniejszy)\nVintage 163 , Stary rocznik 163\nVintage Chrome , Chrom antyczny\nVintage Warmth 1 , Ciepło zabytkowe 1\nVirtual Landscape , Wirtualny Krajobraz\nVisible Watermark , Widoczny znak wodny\nVivid Edges , Żywe krawędzie\nVivid Edges* , Żywe krawędzie*\nVivid Light , Żywe światło\nWall , Ściana\nWarm , Ciepłe\nWarm (highlight) , Ciepło (główna atrakcja)\nWarm (yellow) , Ciepły (żółty)\nWarm Dark Contrasty , Ciepły, ciemny kontrast\nWarm Neutral , Ciepły Neutralny\nWarm Sunset Red , Ciepła czerwień zachodu słońca\nWarm Teal , Ciepły Teal\nWarp [Interactive] , Osnowa [Interaktywny]\nWarp by Intensity , Osnowa według intensywności\nWater , Woda\nWaterfall , Wodospad\nWave , Fala\nWave(s) , Fala(-y)\nWavelength , Długość fali\nWaves Amplitude , Fale Amplituda\nWaves Smoothness , Fale Gładkość\nWe'll See , Zobaczymy\nWeave , Splot\nWeird , Dziwne\nWhirl Drawing , Rysunek wiru\nWhite , Biały\nWhite Dices , Białe kostki\nWhite Layers , Białe warstwy\nWhite Level , Poziom bieli\nWhite on Black , Biały na czarnym\nWhite on Transparent , Biały na Transparentnym\nWhite on Transparent Black , Biały na przezroczystym czarnym\nWhite Point , Biały punkt\nWhite to Black , Biały do czarnego\nWhite Walls , Białe ściany\nWhiter Whites , Bielsze biali\nWhites , Biali\nWidth , Szerokość\nWidth (%) , Szerokość (%)\nWind , Wiatr\nWinter Lighthouse , Latarnia Zimowa\nWipe , Wytrzyj\nWithout , Bez\nWooden Gold 20 , Drewniane złoto 20\nWork on Frameset , Prace nad ramkami\nWrap , Folia\nX Center , X Centrum\nX Origine , X Pochodzenie\nX-Amplitude , X-Amplituda\nX-Axis Then Y-Axis , X-Axis Potem Y-Axis\nX-Centering , X-Centrowanie\nX-Centering (%) , X-Centrowanie (%)\nX-Coordinate [Manual] , Współrzędna X [Instrukcja]\nX-Factor (%) , X-Faktor (%)\nX-Resolution , Rozwiązanie X-Resolution\nX-Rotation , Zdjęcie rentgenowskie\nX-Size , Rozmiar X:\nX-Size (px) , Rozmiar X (px)\nX-Smoothness , X-płynność\nX1 (none) , X1 (brak)\nXY Mirror , Lustro XY\nXY-Amplitude , Amplituda XY\nXY-Coordinates (%) , Współrzędne XY (%)\nY Center , Centrum Y\nY Origine , Y Pochodzenie\nY-Amplitude , Y-Amplituda\nY-Axis Then X-Axis , Y-Axis Potem X-Axis\nY-Center , Y-Centrum\nY-Centering , Y-Centrowanie\nY-Centering (%) , Y-Centryczny (%)\nY-Coordinate [Manual] , Współrzędna Y [Instrukcja]\nY-Dispersion , Y-Dyfuzja\nY-Factor (%) , Y-Faktor (%)\nY-Multiplier , Y-Multiplikator\nY-Resolution , Y-Rezolucja\nY-Rotation , Y-Rotacja\nY-Scale , Skala Y:\nY-Size , Rozmiar Y\nY-Size (px) , Rozmiar Y (px)\nY-Tiles , Panele Y\nY-Variations , Y-Wariacje\nYAG Effect , Efekt YAG\nYCbCr (Chroma Only) , YCbCr (tylko chrom)\nYCbCr (Luma Only) , YCbCr (tylko Luma)\nYCbCr (Mixed) , YCbCr (Mieszane)\nYCbCr [Blue-Red Chrominances] , YCbCr [niebiesko-czerwone chrominanse]\nYCbCr [Green Chrominance] , YCbCr [Zielony Chrominance]\nYCbCr [Luminance] , YCbCr [Luminancja]\nYellow , Żółty\nYellow 55B , Żółty 55B\nYellow Factor , Czynnik żółty\nYellow Film 01 , Film żółty 01\nYellow Smoothness , Żółta Gładkość\nYES8 , TAK8\nZ-Multiplier , Z-Multiplikator\nZ-Rotation , Z-Rotacja\nZ-Scale , Z-Skala\nZ-Size , Rozmiar Z\nZilverFX - B&W Solarization , ZilverFX - B&W Solaryzacja\nZone System , System strefowy\nZoom Center , Centrum Zoom\nZoom Factor , Współczynnik powiększenia\nZoom Out , Powiększenie\n"
  },
  {
    "path": "translations/filters/gmic_qt_pt.csv",
    "content": "<b>Arrays & Tiles</b> , <b>Arrays & Ladrilhos</b>\n<b>Artistic</b> , <b>Artístico</b>\n<b>Black & White</b> , <b>Preto e Branco</b>\n<b>Colors</b> , <b>Cores</b>\n<b>Contours</b> , <b>Contornos</b>\n<b>Deformations</b> , <b>Deformações</b>\n<b>Degradations</b> , <b>Degradações</b>\n<b>Details</b> , <b>Detalhes</b>\n<b>Testing</b> , <b>Testes</b>\n<b>Frames</b> , <b>Molduras</b>\n<b>Frequencies</b> , <b>Frequências</b>\n<b>Layers</b> , <b>Camadas</b>\n<b>Lights & Shadows</b> , <b>Luzes e Sombras</b>\n<b>Patterns</b> , <b>Padrões</b>\n<b>Rendering</b> , <b>Renderização</b>\n<b>Repair</b> , <b>Reparação</b>\n<b>Sequences</b> , <b>Sequências</b>\n<b>Silhouettes</b> , <b>Silhuetas</b>\n<b>Icons</b> , <b>Ícones</b>\n<b>Misc</b> , <b>Diversos</b>\n<b>Nature</b> , <b>Natureza</b>\n<b>Others</b> , <b>Outros</b>\n<b>Stereoscopic 3D</b> , <b>Estereoscópico 3D</b>\n&#9829; Support Us ! &#9829; , ♥ Apoie-nos! ♥\n*Colors Doping , *Cores Doping\n*Colors Doping* , *Cores Doping*\n*Comix Colors* , *Cores do Mix*\n*Dark Edges* , *Bordaduras escuras*\n*Dark Screen* , *Ecrã escuro*\n*Graphix Colors , *Cores do Graphix\n*Vivid Screen* , *Ecrã Vívido*\n- NO - , - NÃO -\n-1. Value Action , -1. Valor Acção\n-2. Overall Channel(s) , -2. Canal(s) geral(is)\n-3. Normalisation Channel(s) , -3. Canal(s) de normalização\n-4. Normalise , -4. Normalizar\n0.  Recompute , 0. Recompute\n1 Levels , 1 Níveis\n1.  Plasma Texture [Discards Input Image] , 1. Textura de Plasma [descarta imagem de entrada]\n10.  Quadtree Max Precision , 10. Quadtree Max Precisão\n10th , 10º.\n10th Color , 10ª Cor\n11.  Quadtree Min Homogeneity , 11. Homogeneidade de Quadtree\n11th , 11ª\n12 Colors , 12 Cores\n12.  Quadtree Max Homogeneity , 12. Homogeneidade Quadtree Max\n125 Keypoints , 125 Pontos-chave\n12th , 12ª\n13. Noise Type , 13. Tipo de Ruído\n13th , 13o.\n14. Minimum Noise , 14. Ruído Mínimo\n14th , 14ª\n15. Maximum Noise , 15. Ruído Máximo\n15th , 15\n16 Colors , 16 Cores\n16. Noise Channel(s) , 16. Canal(s) de Ruído\n16th , 16o.\n17. Warp Iterations , 17. Iterações warp\n18. Warp Intensity , 18. Intensidade Warp\n180 Deg. , 180 graus.\n19. Warp Offset , 19. Desvio de Warp\n1st , 1o.\n1st Additional Palette (.Gpl) , 1ª Paleta Adicional (.Gpl)\n1st Color , 1ª Cor\n1st Parameter , 1º Parâmetro\n1st Text , 1º Texto\n1st Tone , 1ª Tonalidade\n1st Variance , 1ª Variância\n1st X-Coord , 1º Corda X\n1st Y-Coord , 1º Cordão em Y\n2 Colors , 2 Cores\n2 Noise , 2 Ruído\n2-Strip Process , Processo de 2 viagens\n2.  Plasma Scale , 2. Escala de Plasma\n20. Scale to Width , 20. Escala à Largura\n21. Scale to Height , 21. Escala à Altura\n216 Keypoints , 216 Pontos-chave\n22. Correlated Channels , 22. Canais relacionados\n22.5 Deg. , 22,5 Deg.\n23. Boundary , 23. Limite\n24. Warp Channel(s) , 24. Canal(s) de Warp\n25. Random Negation , 25. Negação Aleatória\n26. Random Negation Channel(s) , 26. Canal(s) de Negação Aleatória\n27 Keypoints , 27 Pontos-chave\n27. Gamma Offset , 27. Compensação Gama\n270 Deg. , 270 graus.\n28. Hue Offset , 28. Offset de matizes\n29. Normalise , 29. Normalizar\n2nd , 2o.\n2nd Additional Palette (.Gpl) , 2ª Paleta Adicional (.Gpl)\n2nd Color , 2ª Cor\n2nd Parameter , 2º Parâmetro\n2nd Text , 2º Texto\n2nd Tone , 2º Tom\n2nd Variance , 2ª Variância\n2nd X-Coord , 2º Corda X\n2nd Y-Coord , 2º Corda em Y\n2x Type , 2x Tipo\n2XY Mirror , 2XY Espelho\n3 Colors , 3 Cores\n3 Mix , 3 Mistura\n3.  Plasma Alpha Channel , 3. Canal Alfa de Plasma\n30. Minimum Hue , 30. Tonalidade Mínima\n31. Maximum Hue , 31. Tonalidade Máxima\n32. Minimum Saturation , 32. Saturação mínima\n33. Maximum Saturation , 33. Saturação Máxima\n34. Minimum Value , 34. Valor mínimo\n343 Keypoints , 343 Pontos-chave\n35. Maximum Value , 35. Valor máximo\n36. Hue Offset , 36. Offset de matizes\n37. Saturation Offset , 37. Compensação de Saturação\n38. Value Offset , 38. Compensação de valor\n3D Blocks , Blocos 3D\n3D CLUT (Fast) , 3D CLUT (Rápido)\n3D CLUT (Precise) , 3D CLUT (Preciso)\n3D Colored Object , Objecto colorido 3D\n3D Conversion , Conversão 3D\n3D Elevation , Elevação 3D\n3D Elevation [Animated] , Elevação 3D [Animado]\n3D Extrusion , Extrusão 3D\n3D Extrusion [Animated] , Extrusão 3D [Animado]\n3D Image Object , Objecto de imagem 3D\n3D Image Object [Animated] , Objecto de imagem 3D [Animado]\n3D Image Type , Tipo de imagem 3D\n3D Lathing , Ripado 3D\n3D Metaballs , Metabolls 3D\n3D Random Objects , Objectos 3D Aleatórios\n3D Reflection , Reflexão 3D\n3D Rubber Object , Objecto de Borracha 3D\n3D Tiles , Ladrilhos 3D\n3D Video Conversion , Conversão de vídeo 3D\n3D Waves , Ondas 3D\n3rd , 3o.\n3rd Color , 3ª Cor\n3rd Parameter , 3º Parâmetro\n3rd Tone , 3ª Tonalidade\n3rd X-Coord , 3º Corda X\n3rd Y-Coord , 3º Cordão em Y\n4 Colors , 4 Cores\n4.  Segmentation [No Alpha Channel] , 4. Segmentação [Sem Canal Alfa]\n4096x4096 Layer , 4096x4096 Camada\n45 Deg. , 45 graus.\n4th , 4\n4th Color , 4ª Cor\n4th Tone , 4º Tom\n5.  Edge Threshold , 5. Limiar de borda\n512x512 Layer , 512x512 Camada\n5th , 5o.\n5th Color , 5ª Cor\n5th Tone , 5ª Tonalidade\n6.  Smoothness , 6. Alisamento\n60's (faded Alt) , Anos 60 (Alt desbotado)\n60's (faded) , Anos 60 (desbotado)\n64 (Faster) , 64 (Mais rápido)\n64 Keypoints , 64 Pontos-chave\n67.5 Deg. , 67,5 Deg.\n6th , 6o.\n6th Color , 6ª Cor\n6th Tone , 6º Tom\n7.  Blur , 7. Borrão\n7th , 7\n7th Color , 7ª Cor\n7th Tone , 7ª Tonalidade\n8 Colors , 8 Cores\n8 Keypoints (RGB Corners) , 8 Pontos-chave (RGB Corners)\n8.  Quadtree Pixelisation [No Alpha Channel] , 8. Pixelização Quadtree [Sem Canal Alfa]\n8th , 8\n8th Color , 8ª Cor\n8th Tone , 8ª Tonalidade\n9.  Quadtree Min Precision , 9. Quadtree Min Precisão\n90 Deg. , 90 graus.\n9th , 9o.\n9th Color , 9ª Cor\n[Cyan]MYK , [Ciano]MYK\nA Lot of Cyan , Um monte de Cyan\nA Lot of Key , Uma grande quantidade de chaves\nA Lot of Magenta , Um monte de Magenta\nA Lot of Yellow , Um monte de amarelo\nA-Color Factor , Factor A-Cor\nA-Color Shift , Mudança de cor A-Color\nA-Color Smoothness , A-Color Suavidade\nA-Component , A-Componente\nA4 / 100 PPI (Recommended) , A4 / 100 PPI (Recomendado)\nAbout G'MIC , Sobre a G'MIC\nAbsolute Brightness , Brilho Absoluto\nAbsolute Value , Valor Absoluto\nAbstraction , Abstracção\nAcceleration , Aceleração\nAchromatomaly , Acromatomalia\nAction , Acção\nAction #1 , Acção #1\nAction #10 , Acção #10\nAction #11 , Acção #11\nAction #12 , Acção #12\nAction #13 , Acção #13\nAction #14 , Acção #14\nAction #15 , Acção #15\nAction #16 , Acção #16\nAction #17 , Acção #17\nAction #18 , Acção #18\nAction #19 , Acção #19\nAction #2 , Acção #2\nAction #20 , Acção #20\nAction #21 , Acção #21\nAction #22 , Acção #22\nAction #23 , Acção #23\nAction #24 , Acção #24\nAction #3 , Acção #3\nAction #4 , Acção #4\nAction #5 , Acção #5\nAction #6 , Acção #6\nAction #7 , Acção #7\nAction #8 , Acção #8\nAction #9 , Acção #9\nAction Magenta 01 , Acção Magenta 01\nAction Red 01 , Acção Vermelho 01\nActivate 'Pencil Smoother' , Activar 'Lápis mais liso'.\nActivate Color Enhancement , Activar o melhoramento da cor\nActivate Colors Geometric Shapes , Activar as cores Formas Geométricas\nActivate Custom Filter , Activar filtro personalizado\nActivate Lizards , Activar Lagartos\nActivate Mirror , Activar o Espelho\nActivate Pink Elephants , Activar Elefantes Cor-de-Rosa\nActivate Second Direction , Activar a segunda direcção\nActivate Shakes , Activar tremores\nActivate Slice 1 , Activar a fatia 1\nActivate Slice 2 , Activar a fatia 2\nActivate Slice 3 , Activar a fatia 3\nActivate Slice 4 , Activar a fatia 4\nAdaptive , Adaptativo\nAdd , Acrescentar\nAdd 1px Outline , Adicionar 1px Esboço\nAdd Alpha Channels to Detail Scale Layers , Adicionar Canais Alfa a Camadas de Escala Detalhadas\nAdd as a New Layer , Adicionar como uma nova camada\nAdd Chalk Highlights , Acrescentar Destaques em Giz\nAdd Color Background , Adicionar Fundo de Cor\nAdd Comment Area in HTML Page , Adicionar Área de Comentários na Página HTML\nAdd Grain , Adicionar grão\nAdd Image Label , Adicionar etiqueta de imagem\nAdd Painter's Touch , Adicionar Toque de Pintor\nAdd User-Defined Constraints (Interactive) , Adicionar Restrições Definidas pelo Utilizador (Interactivo)\nAdditional Duplicates Count , Contagem adicional de duplicados\nAdditional Outline , Esboço adicional\nAdditive , Aditivo\nAdjust Background Reconstruction , Ajustar Reconstrução de Fundo\nAdventure 1453 , Aventura 1453\nAggressive Highlights Recovery 5 , Destaques Agressivos Recuperação 5\nAlgorithm , Algoritmo\nAlien Green , Verde Alienígena\nAlign Image Streams , Alinhar os fluxos de imagens\nAlign Layers , Alinhar camadas\nAligned , Alinhado\nAlignment Type , Tipo de Alinhamento\nAll , Todos\nAll 45° Rotations , Todos os 45° Rotações\nAll 90° Rotations , Todos os 90° Rotações\nAll [Collage] , Todos [Colagem]\nAll but Reference Color , Todos menos Cor de Referência\nAll Layers and Masks , Todas as camadas e máscaras\nAll Tones , Todos os Tons\nAll XY-Flips , Todos os XY-Flips\nAllow Angle , Permitir o ângulo\nAllow Outer Blending , Permitir mistura externa\nAllow Self Intersections , Permitir Auto-intersecções\nAlpha , Alfa\nAlpha Channel , Canal Alfa\nAlpha Mode , Modo Alfa\nAlso Match Gradients , Igualar Gradientes\nAmbient (%) , Ambiente (%)\nAmbient Lightness , Ligeireza ambiente\nAmount , Montante\nAmplitude / Angle , Amplitude / Ângulo\nAnaglypgh Green/magenta Optimized , Anaglypgh Verde/magenta Optimizado\nAnaglyph Blue/yellow , Anaglyph azul/amarelo\nAnaglyph Blue/yellow Optimized , Anaglyph Blue/yellow Optimizado\nAnaglyph Glasses Adjustment , Ajuste dos Óculos Anaglifos\nAnaglyph Green/magenta , Anaglyph Verde/magenta\nAnaglyph Green/magenta Optimized , Anaglyph Verde/magenta Optimizado\nAnaglyph Reconstruction , Reconstrução Anaglyph Reconstruction\nAnaglyph Red/cyan Optimized , Anaglyph Red/cyan Optimizado\nAnaglyph: Red/Cyan , Anáglifo: Vermelho/ciano\nAnalogFX - Anno 1870 Color , AnalogFX - Anno 1870 Cor\nAnalogFX - Old Style II , AnalogFX - AnalogFX - Old Style II\nAnalogFX - Old Style III , AnalogFX - Antigo Estilo III\nAnalogFX - Sepia Color , AnalogFX - Cor Sépia\nAnalysis Scale , Escala de análise\nAnalysis Smoothness , Suavidade da análise\nAnd , E\nAngle , Ângulo\nAngle (%) , Ângulo (%)\nAngle (deg) , Ângulo (deg)\nAngle (deg.) , Ângulo (deg.)\nAngle / Size , Ângulo / Tamanho\nAngle Cut , Corte angular\nAngle Dispersion , Dispersão angular\nAngle Image Contour , Contorno de imagem angular\nAngle of Disturbance Surface , Ângulo de Superfície de Perturbação\nAngle of Main Nebulous Surface , Ângulo da Superfície Nebulosa Principal\nAngle Range , Alcance angular\nAngle Range (deg.) , Alcance angular (deg.)\nAngle Tilt , Inclinação angular\nAngle Variations , Variações angulares\nAnguish , Angústia\nAngular Precision , Precisão Angular\nAngular Tiles , Ladrilhos Angulares\nAnisotropic , Anisotrópico\nAnisotropy , Anisotropia\nAnnular Steiner Chain Round Tiles , Pisos Anulares de Corrente de Steiner Round Tiles\nAnti Alias , Anti-Pseudónimo\nAnti-Ghosting , Anti-Fantasma\nAntisymmetry , Anti-simetria\nAny , Qualquer\nApocalypse This Very Moment , Apocalypse Este Mesmo Momento\nApples , Maçãs\nApply Adjustments On , Aplicar Ajustamentos em\nApply Color Balance , Aplicar Equilíbrio de Cores\nApply External CLUT , Aplicar o CLUT externo\nApply Mask , Aplicar Máscara\nApply Skin Tone Mask , Aplicar Máscara de Tom de Pele\nApply Transformation From , Aplicar Transformação de\nAqua and Orange Dark , Aqua e Orange Dark\nArabica 12 , Arábica 12\nArea , Área\nArea Smoothness , Suavidade da área\nAreas Light Adjustment , Ajuste de Luzes de Áreas\nAreas Smoothness , Suavidade das áreas\nArray [Faded] , Array [Desbotado]\nArray [Mirrored] , Array [Espelhado]\nArray [Random Colors] , Array [Cores Aleatórias]\nArray Mode , Modo Array\nArrows , Setas\nArrows (Outline) , Setas (Esboço)\nArtistic  Modern , Moderno Artístico\nArtistic Hard , Duro Artístico\nAscii Art , Arte Ascii\nAspect , Aspecto\nAspect Ratio , Rácio de Aspecto\nAssociated Color , Cor associada\nAstia , Ástia\nAttenuation , Atenuação\nAustralia , Austrália\nAuto Balance , Equilíbrio Automóvel\nAuto Crop , Cultura Automóvel\nAuto Reduce Level (Level Slider Is Disabled) , Nível de Redução Automática (Level Slider Is Disabled)\nAuto Set Hue Inverse (Hue Slider Is Disabled) , Auto Set Hue Inverse (Deslizador de matizes está desactivado)\nAuto-Clean Bottom Color Layer , Camada de cor de fundo auto-limpante\nAuto-Reduce Number of Frames , Auto-Reduzir o número de molduras\nAuto-Set Periodicity , Periodicidade Auto-Set\nAutocrop Output Layers , Camadas de saída de autocultivo\nAutomatic , Automático\nAutomatic & Contrast Mask , Máscara Automática e de Contraste\nAutomatic [Scan All Hues] , Automático [Scan All Hues]\nAutomatic Color Balance , Balanço de cor automático\nAutomatic Depth Estimation , Estimativa automática da profundidade\nAutomatic Upscale for Optimum Results , Upscale automático para resultados óptimos\nAutumn , Outono\nAverage , Média\nAverage 3x3 , Média 3x3\nAverage 5x5 , Média 5x5\nAverage 7x7 , Média 7x7\nAverage 9x9 , Média 9x9\nAverage RGB , Média RGB\nAverage Smoothness , Suavidade média\nAvg / Max Weight , Avg / Peso máximo\nAvg Left Angle (deg.) , Avg Ângulo Esquerdo (deg.)\nAvg Length Factor (%) , Factor de Comprimento Avg (%)\nAvg Right Angle (deg.) , Avg ângulo recto (deg.)\nAvg Thickness Factor (%) , Factor de Espessura Média (%)\nAxis , Eixo\nAzimuth , Azimute\nB&W , P&B\nB&W Pencil [Animated] , Lápis P&B [Animado]\nB&W Photograph , Fotografia a preto e branco\nB&W Stencil [Animated] , B&W Stencil [Animado]\nB-Color Factor , Fator B-Cor\nB-Color Shift , Turno de cor B\nB-Color Smoothness , Suavidade da cor B\nB-Component , B-Componente\nBackground , Antecedentes\nBackground Color , Cor de fundo\nBackground Intensity , Intensidade de fundo\nBackground Point (%) , Ponto de fundo (%)\nBackward , Para trás\nBackward Horizontal , Horizontal para trás\nBackward Vertical , Vertical para trás\nBalance , Balanço\nBalance Color , Equilibrar Cor\nBalance SRGB , Balanço SRGB\nBall , Bola\nBalloons , Balões\nBalls , Bolas\nBand Width , Largura de banda\nBanding Denoise , Faixa Denoise\nBandwidth , Largura de banda\nBarbara , Bárbara\nBarbed Wire , Arame Farpado\nBarnsley Fern , Ferna de Cevada\nBars , Bares\nBase Reference Dimension , Dimensão de referência de base\nBase Scale , Balança de base\nBase Thickness (%) , Espessura de base (%)\nBasic Adjustments , Ajustes básicos\nBatch Processing , Processamento por lotes\nBayer Filter , Filtro Bayer\nBayer Reconstruction , Reconstrução da Bayer\nBehind , Atrás de\nBelow , Abaixo\nBerlin Sky , Céu de Berlim\nBest Match , Melhor Partida\nBG Textured , BG Texturizado\nBi-Directional , Bi-Direccional\nBias , Viés\nBicubic , Bicúbico\nBidirectional [Sharp] , Bidireccional [Sharp]\nBidirectional [Smooth] , Bidireccional [Liso]\nBidirectional Rendering , Renderização Bidireccional\nBilateral Radius , Raio Bilateral\nBinary , Binário\nBinary Digits , Dígitos Binários\nBit Masking (End) , Mascaramento de bits (Fim)\nBit Masking (Start) , Mascaramento de bits (Start)\nBlack , Preto\nBlack & White , Preto e Branco\nBlack & White (25) , Preto e Branco (25)\nBlack & White-1 , Preto e Branco-1\nBlack & White-10 , Preto e Branco-10\nBlack & White-2 , Preto e Branco-2\nBlack & White-3 , Preto e Branco-3\nBlack & White-4 , Preto e Branco-4\nBlack & White-5 , Preto e Branco-5\nBlack & White-6 , Preto e Branco-6\nBlack & White-7 , Preto e Branco-7\nBlack & White-8 , Preto e Branco-8\nBlack & White-9 , Preto e Branco-9\nBlack Crayon Graffiti , Grafite de Giz de cera preto\nBlack Dices , Dados Pretos\nBlack Level , Nível Preto\nBlack on Transparent , Preto sobre Transparente\nBlack on Transparent White , Preto sobre Branco Transparente\nBlack on White , Preto sobre Branco\nBlack Point , Ponto Negro\nBlack Star , Estrela Negra\nBlack to White , Preto para Branco\nBlacks , Negros\nBlade Runner , Corredor de Lâmina\nBlank , Em branco\nBleech Bypass Green , Bleech Bypass Verde\nBlend , Mistura\nBlend [Average All] , Misturar [Média de todos]\nBlend [Edges] , Misturar [Bordaduras]\nBlend [Fade] , Misturar [Fade]\nBlend [Median] , Misturar [Mediana]\nBlend [Seamless] , Mistura [Seamless]\nBlend [Standard] , Mistura [Standard]\nBlend All Layers , Misturar todas as camadas\nBlend Decay , Decadência da mistura\nBlend Mode , Modo de mistura\nBlend Rays , Raios de mistura\nBlend Scales , Balanças de mistura\nBlend Size , Tamanho da mistura\nBlend Threshold , Limiar de Mistura\nBlending Mode , Modo de mistura\nBlending Size , Tamanho da mistura\nBlindness Type , Tipo de cegueira\nBlob 1 Color , Blob 1 Cor\nBlob 10 Color , Blob 10 Cor\nBlob 11 Color , Blob 11 Cor\nBlob 12 Color , Blob 12 Cor\nBlob 2 Color , Blob 2 Cor\nBlob 3 Color , Blob 3 Cor\nBlob 4 Color , Blob 4 Cor\nBlob 5 Color , Blob 5 Cor\nBlob 6 Color , Blob 6 Cor\nBlob 7 Color , Blob 7 Cor\nBlob 8 Color , Blob 8 Cor\nBlob 9 Color , Blob 9 Cor\nBlob Size , Tamanho da bolha\nBlobs Editor , Editor de Blobs\nBloc , Bloco\nBloc Size (%) , Tamanho do Bloco (%)\nBlockism , Obstrucionismo\nBlue , Azul\nBlue & Red Chrominances , Crominâncias Azul e Vermelho\nBlue Chroma Factor , Factor Croma Azul\nBlue Chroma Smoothness , Suavidade de Croma Azul\nBlue Chrominance , Crominância Azul\nBlue Cold Fade , Desbotamento Azul Frio\nBlue Dark , Azul Escuro\nBlue Factor , Fator Azul\nBlue House , Casa Azul\nBlue Ice , Gelo Azul\nBlue Level , Nível Azul\nBlue Mono , Mono Azul\nBlue Rotations , Rotações azuis\nBlue Screen Mode , Modo ecrã azul\nBlue Shadows 01 , Sombras Azuis 01\nBlue Shift , Turno Azul\nBlue Smoothness , Suavidade azul\nBlue Steel , Aço Azul\nBlue Wavelength , Comprimento de onda azul\nBlue-Green , Azul-Verde\nBlur , Borrão\nBlur [Angular] , Borrão [Angular]\nBlur [Bloom] , Borrão [Bloom]\nBlur [Depth-Of-Field] , Borrão [Depth-Of-Field]\nBlur [Gaussian] , Borrão [Gaussiano]\nBlur [Glow] , Borrão [Borrão]\nBlur [Linear] , Desfoque [Linear]\nBlur [Multidirectional] , Desfoque [Multidireccional]\nBlur [Radial] , Borrão [Radial]\nBlur Alpha , Borrão Alfa\nBlur Amount , Montante de desfocagem\nBlur Amplitude , Amplitude de borrão\nBlur Dodge and Burn Layer , Camada de Queimadura e Queimadura\nBlur Factor , Factor de desfocagem\nBlur Frame , Moldura borrada\nBlur Percentage , Percentagem de desfocagem\nBlur Precision , Precisão de borrão\nBlur Shade , Sombra de borrão\nBlur Standard Deviation , Desvio Padrão Borrão\nBlur Strength , Força de desfocagem\nBlur the Mask , Desfoque a Máscara\nBoats , Barcos\nBoost , Impulso\nBoost Chromaticity , Impulsionar a cromaticidade\nBoost Contrast , Contraste de Impulso\nBoost Stroke , AVC de Impulso\nBorder Color , Cor da fronteira\nBorder Opacity , Opacidade das fronteiras\nBorder Outline , Esboço de fronteira\nBorder Smoothness , Suavidade da fronteira\nBorder Thickness (%) , Espessura da fronteira (%)\nBorder Width , Largura da fronteira\nBoth , Ambos\nBottles , Garrafas\nBottom , Fundo\nBottom and Left Foreground , Primeiro plano e primeiro plano à esquerda\nBottom and Right Foreground , Fundo e Primeiro plano direito\nBottom and Top Foreground , Primeiro e último plano\nBottom Layer , Camada inferior\nBottom Left , Esquerda inferior\nBottom Right , Em baixo à direita\nBottom Size , Tamanho do fundo\nBottom-Left , Fundo-esquerda\nBottom-Left Vertex (%) , Vértice Inferior-Esquerdo (%)\nBottom-Right , Direita Inferior\nBottom-Right Vertex (%) , Vértice Inferior Direito (%)\nBouncing Balls , Bolas Saltitantes\nBoundaries (%) , Limites (%)\nBoundary , Limite\nBoundary Condition , Condição de Limite\nBoundary Conditions , Condições de fronteira\nBox , Caixa\nBox Fitting , Montagem de caixas\nBranches , Sucursais\nBraque: Landscape near Antwerp , Braque: Paisagem perto de Antuérpia\nBraque: Little Bay at La Ciotat , Braque: Little Bay em La Ciotat\nBraque: The Mandola , Braque: O Mandola\nBrighness , Luminosidade\nBright , Brilhante\nBright Green , Verde Brilhante\nBright Green 01 , Verde Brilhante 01\nBright Length , Comprimento Brilhante\nBright Pixels , Pixels Brilhantes\nBright Teal Orange , Laranja de Teal Brilhante\nBright Warm , Brilhante Aquecimento\nBrighter , Mais Brilhante\nBrightness , Luminosidade\nBrightness (%) , Luminosidade (%)\nBristle Size , Tamanho de cerda\nBrownish , Castanho\nBrushify , Escovar\nBuilt-in Gray , Cinzento embutido\nBump Factor , Fator Bump\nBump Map , Mapa de Bump\nBurn , Queimar\nBurn Blur , Borrão de Queimadura\nBurn Strength , Força de queima\nButterfly , Borboleta\nBy Blue Chrominance , Por Crominância Azul\nBy Blue Component , Por Componente Azul\nBy Custom Expression , Por Expressão Personalizada\nBy Green Component , Por Componente Verde\nBy Iteration , Por Iteração\nBy Lightness , Por Leveza\nBy Luminance , Por Luminance\nBy Red Chrominance , Por Crominância Vermelha\nBy Red Component , Por Componente Vermelha\nBy Value , Por Valor\nCamera Motion Only , Apenas movimento da câmara\nCamera X , Câmara X\nCamera Y , Câmara Y\nCameraman , Operador de câmara\nCamouflage , Camuflagem\nCandle Light , Luz da vela\nCanvas , Tela\nCanvas Brightness , Luminosidade da tela\nCanvas Color , Cor da tela\nCanvas Darkness , Escuridão da tela\nCanvas Texture , Textura de tela\nCar , Automóvel\nCard Suits , Fatos de Cartão\nCartesian Transform , Transformação cartesiana\nCartoon , Desenho animado\nCartoon [Animated] , Desenho animado [Animado]\nCat , Gato\nCategory , Categoria\nCell Size , Tamanho da célula\nCenter , Centro\nCenter (%) , Centro (%)\nCenter Background , Antecedentes centrais\nCenter Foreground , Centro de Primeiro plano\nCenter Help , Centro de Ajuda\nCenter Size , Tamanho do centro\nCenter Smoothness , Suavidade do centro\nCenter X , Centro X\nCenter X-Shift , Centro X-Shift\nCenter Y , Centro Y\nCenter Y-Shift , Centro Y-Shift\nCentering (%) , Centralização (%)\nCentering / Scale , Centralização / Escala\nCenters Color , Centros Cor\nCenters Radius , Centros Radius\nCentimeter , Centimetro\nCentral  Perspective Outdoor , Perspectiva Central Exterior\nCentral Perspective Indoor , Perspectiva Central Indoor\nCentral Perspective Outdoor , Perspectiva Central Exterior\nCentre , Centro\nChalk It Up , Giz para cima\nChannel #1 , Canal #1\nChannel #2 , Canal #2\nChannel #3 , Canal #3\nChannel Processing , Processamento de canais\nChannel(s) , Canal(es)\nChannels , Canais\nChannels to Layers , Canais para camadas\nCharcoal , Carvão vegetal\nCheckered Inverse , Xadrez Inverso\nChemical 168 , Químico 168\nChessboard , Tabuleiro de xadrez\nChick , Pinto\nChroma Noise , Ruído cromado\nChromatic Aberrations , Aberrações Cromáticas\nChromaticity From , Cromaticidade de\nChrome 01 , Crómio 01\nChrominances Only (ab) , Apenas crominâncias (ab)\nChrominances Only (CbCr) , Apenas Crominâncias (CbCr)\nCine Bright , Cine Brilhante\nCine Drama , Drama Cine\nCine Vibrant , Cine Vibrante\nCinematic (8) , Cinemática (8)\nCinematic for Flog , Cinematic para Flog\nCinematic Lady Bird , Pássaro Dama Cinematográfica\nCinematic Mexico , Cinematic México\nCinematic Travel (29) , Viagens Cinematográficas (29)\nCircle , Círculo\nCircle (Inv.) , Círculo (Inv.)\nCircle 1 , Círculo 1\nCircle 2 , Círculo 2\nCircle Abstraction , Abstracção de Círculos\nCircle Art , Arte em Círculo\nCircle to Square , Círculo ao quadrado\nCircle Transform , Transformação de Círculos\nCircles , Círculos\nCircles (Outline) , Círculos (Esboço)\nCircles 1 , Círculos 1\nCircles 2 , Círculos 2\nCity 7 , Cidade 7\nClarity , Clareza\nClassic Chrome , Crómio Clássico\nClassic Teal and Orange , Clássico Teal e Laranja\nClean , Limpar\nClean Text , Texto limpo\nClear Control Points , Pontos de Controlo Limpos\nClosing , Encerramento\nClosing - Opening , Encerramento - Abertura\nClosing - Original , Encerramento - Original\nClouds , Nuvens\nCLUT from After - Before Layers , CLUT de Depois - Antes das Camadas\nCLUT Opacity , Opacidade da CLUT\nCM[Yellow]K , CM[Amarelo]K\nCMY[Key] , CMY[Chave]\nCMYK [cyan] , CMYK [cian]\nCMYK [Key] , CMYK [chave]\nCMYK [Yellow] , CMYK [Amarelo]\nCMYK Tone , Tom CMYK\nCoarse , Grosseiro\nCoarsest (faster) , Mais grosseiro (mais rápido)\nCode , Código\nCoefficients , Coeficientes\nCoffee 44 , Café 44\nCoherence , Coerência\nColor , Cor\nColor (rich) , Cor (rica)\nColor 1 , Cor 1\nColor 1 (Up/Left Corner) , Cor 1 (Canto superior/esquerdo)\nColor 2 , Cor 2\nColor 2 (Up/Right Corner) , Cor 2 (Canto direito/cima)\nColor 3 , Cor 3\nColor 3 (Bottom/Left Corner) , Cor 3 (Canto inferior/esquerdo)\nColor 4 , Cor 4\nColor 4 (Bottom/Right Corner) , Cor 4 (Fundo/Canto direito)\nColor A , Cor A\nColor Abstraction Opacity , Opacidade de Abstracção de Cor\nColor Abstraction Paint , Tinta de Abstracção de Cor\nColor B , Cor B\nColor Balance , Equilíbrio de cores\nColor Basis , Base de cor\nColor Blending , Mistura de cores\nColor Blindness , Cegueira por cor\nColor Blue-Yellow , Cor Azul-amarelo\nColor Boost , Impulso de cor\nColor Burn , Queimadura por cor\nColor C , Cor C\nColor Channel  Smoothing , Alisamento de canais de cor\nColor Channels , Canais de cor\nColor D , Cor D\nColor Dispersion , Dispersão de cor\nColor Doping , Dopagem por cor\nColor E , Cor E\nColor Effect Mode , Modo Efeito Cor\nColor F , Cor F\nColor G , Cor G\nColor Gamma , Gama de cor\nColor Grading , Classificação de cor\nColor Green-Magenta , Cor Verde-Magenta\nColor Highlights , Destaques de cor\nColor Image , Imagem a cores\nColor Intensity , Intensidade da cor\nColor Mask , Máscara de cor\nColor Mask [Interactive] , Máscara de cor [Interactivo]\nColor Median , Cor Mediana\nColor Metric , Métrica de cor\nColor Midtones , Meia cor de tons\nColor Mode , Modo cor\nColor Model , Modelo de cor\nColor Negative , Cor Negativa\nColor on White , Cor sobre branco\nColor Overall Effect , Efeito global da cor\nColor Presets , Predefinições de cor\nColor Quantization , Quantização de cor\nColor Rendering , Renderização de cores\nColor Shading (%) , Sombreamento por cor (%)\nColor Shadows , Sombras de cor\nColor Smoothness , Suavidade de cor\nColor Space , Espaço de cor\nColor Spots + Extrapolated Colors + Lineart , Pontos de cor + Cores Extrapoladas + Lineart\nColor Spots + Lineart , Spots de cor + Lineart\nColor Strength , Resistência da cor\nColor Temperature , Temperatura de cor\nColor Tolerance , Tolerância de cor\nColor Variation [Random -1] , Variação de cor [Random -1]\nColored Geometry , Geometria colorida\nColored Grain , Grão colorido\nColored Lineart , Lineart colorido\nColored on Black , Colorido a preto\nColored on Transparent , Colorido em Transparente\nColored Outline , Esboço colorido\nColored Pencils , Lápis coloridos\nColored Regions , Regiões coloridas\nColorful , Colorido\nColorful 0209 , Colorido 0209\nColorful Blobs , Blobs coloridos\nColoring , Coloração\nColorize [Interactive] , Colorir [Interactivo]\nColorize [Photographs] , Colorir [Fotografias]\nColorize [with Colormap] , Colorir [com Colormap]\nColorize Lineart [Auto-Fill] , Colorir Lineart [Auto-Preenchimento]\nColorize Lineart [Propagation] , Colorir Lineart [Propagação]\nColorize Lineart [Smart Coloring] , Colorir Lineart [Coloração Inteligente]\nColorize Mode , Modo Colorir\nColorized Image (1 Layer) , Imagem colorida (1 camada)\nColormap Type , Tipo Colormap\nColors , Cores\nColors A , Cores A\nColors B , Cores B\nColors Only , Apenas Cores\nColors Only (1 Layer) , Apenas Cores (1 Camada)\nColors to Layers , Cores para camadas\nColour , Cor\nColour Channels , Canais de cor\nColour Model , Modelo a cores\nColour Smoothing , Alisamento da cor\nColour Space Mode , Modo Espaço de Cor\nColumn by Column , Coluna por Coluna\nComic Style , Estilo Cómico\nComix Colors , Cores Comix\nComponents , Componentes\nComposed Layers , Camadas Compostas\nCompress Highlights , Destaques da Compressão\nCompression Blur , Borrão de Compressão\nCompression Filter , Filtro de Compressão\nComputation Mode , Modo de cálculo\nConflict 01 , Conflito 01\nConformal Maps , Mapas de conformidade\nConnectivity , Conectividade\nConnectors Centering , Conectores centrados\nConnectors Variability , Variabilidade dos Conectores\nConstrain Image Size , Tamanho da imagem de Constrain\nConstrain Values , Valores de Constrição\nConstrained Sharpen , Afiação Restrita\nConstraint Radius , Raio de Restrição\nContinuous Droste , Droste Contínuo\nContour Coherence , Coerência de Contorno\nContour Detection (%) , Detecção de contornos (%)\nContour Normalization , Normalização de Contorno\nContour Precision , Precisão de Contorno\nContour Threshold , Limiar de Contorno\nContour Threshold (%) , Limiar de Contorno (%)\nContours , Contornos\nContours + Flocon/Snowflake , Contornos + Flocon/Flake de neve\nContours Recursion , Recurssão de contornos\nContrast , Contraste\nContrast (%) , Contraste (%)\nContrast Smoothness , Suavidade do contraste\nContrast Swiss Mask , Contraste Máscara Suíça\nContrast with Highlights Protection , Contraste com a Protecção dos Destaques\nContrasty Afternoon , Tarde de Contraste\nContrasty Green , Verde de contraste\nContributors , Contribuintes\nControl Point 1 , Ponto de Controlo 1\nControl Point 2 , Ponto de Controlo 2\nControl Point 3 , Ponto de Controlo 3\nControl Point 4 , Ponto de Controlo 4\nControl Point 5 , Ponto de Controlo 5\nControl Point 6 , Ponto de Controlo 6\nConvolve , Convolver\nCool , Fixe\nCool (256) , Frio (256)\nCool / Warm , Frio / Quente\nCopper , Cobre\nCorner Brightness , Brilho de canto\nCorrelated Channels , Canais relacionados\nCounter Clockwise , No sentido contrário ao dos ponteiros do relógio\nCourse 4 , Curso 4\nCracks , Rachaduras\nCrease , Vinco\nCreative Pack (33) , Pacote Criativo (33)\nCrip Winter , Crip Inverno\nCrisp Romance , Romance Cristalino\nCrisp Warm , Quente Crocante\nCriterion , Critério\nCrop , Cultura\nCrop (%) , Cultura (%)\nCross Process CP 130 , Processo Cruzado CP 130\nCross Process CP 14 , Processo Cruzado CP 14\nCross Process CP 15 , Processo Cruzado CP 15\nCross Process CP 16 , Processo Cruzado CP 16\nCross Process CP 18 , Processo Cruzado CP 18\nCross Process CP 3 , Processo Cruzado CP 3\nCross Process CP 4 , Processo Cruzado CP 4\nCross Process CP 6 , Processo Cruzado CP 6\nCross-Hatch Amount , Montante de escotilha cruzada\nCrossed , Cruzado\nCrosses 1 , Cruzes 1\nCrosses 2 , Cruzes 2\nCrosshair , Crina cruzada\nCRT Sub-Pixels , Sub-pixels CRT\nCrushin , Esmagamento\nCrystal , Cristal\nCrystal Background , Antecedentes de Cristal\nCube , Cubo\nCube (256) , Cubo (256)\nCubicle 99 , Cubículo 99\nCubism , Cubismo\nCubism on Color Abstraction , Cubismo na Abstracção da Cor\nCup , Taça\nCupid , Cupido\nCurvature , Curvatura\nCurvature Shadow , Sombra da Curvatura\nCurve Amount , Valor da Curva\nCurve Angle , Ângulo de Curva\nCurve Length , Comprimento da Curva\nCurved , Curva\nCurved Stroke , Curso Curvo\nCurves , Curvas\nCurves Previously Defined , Curvas Previamente Definidas\nCustom , Personalizado\nCustom Code [Global] , Código personalizado [Global]\nCustom Code [Local] , Código personalizado [Local]\nCustom Correction Map , Mapa de Correcção Personalizado\nCustom Depth Correction , Correcção de Profundidade Personalizada\nCustom Depth Maps Stream , Fluxo de mapas de profundidade personalizados\nCustom Dictionary , Dicionário de Costumes\nCustom Filter Code , Código de filtro personalizado\nCustom Formula , Fórmula personalizada\nCustom Kernel , Kernel personalizado\nCustom Layers , Camadas personalizadas\nCustom Layout , Layout personalizado\nCustom Style (Bottom Layer) , Estilo personalizado (Camada inferior)\nCustom Style (Top Layer) , Estilo personalizado (Camada superior)\nCustom Transform , Transformação personalizada\nCustomize CLUT , Personalizar a CLUT\nCut , Corte\nCut & Normalize , Cortar & Normalizar\nCut High , Corte Alto\nCut Low , Corte baixo\nCutout , Recorte\nCyan , Ciano\nCyan Factor , Fator Ciano\nCyan Smoothness , Suavidade do Ciano\nCycle Layers , Camadas do ciclo\nCycles , Ciclos\nCylinder , Cilindro\nD and O 1 , D e O 1\nDamping per Octave , Amortecimento por Oitava\nDark  Motive , Motivo Escuro\nDark Boost , Impulso Negro\nDark Color , Cor escura\nDark Edges , Bordaduras Escuras\nDark Green 02 , Verde Escuro 02\nDark Green 1 , Verde Escuro 1\nDark Grey , Cinzento Escuro\nDark Length , Comprimento escuro\nDark Motive , Motivo Escuro\nDark Pixels , Pixels Escuros\nDark Place 01 , Lugar Escuro 01\nDark Screen , Tela escura\nDark Sky , Céu Escuro\nDark Walls , Paredes Escuras\nDarkness , Escuridão\nDarkness Level , Nível de escuridão\nDate 39 , Data 39\nDay for Night , Dia para a Noite\nDaylight Scene , Cena da luz do dia\nDebug Font Size , Tamanho da letra Debug\nDecompose , Decompor\nDecompose Channels , Canais de Decomposição\nDecoration , Decoração\nDecreasing , Diminuindo\nDeep , Profundo\nDeep Blue , Azul profundo\nDeep Dark Warm , Aquecimento Escuro Profundo\nDeep High Contrast , Alto contraste profundo\nDeep Teal Fade , Desbotamento profundo do Teal\nDeep Warm Fade , Desbotamento profundo\nDefault , Por defeito\nDefects Contrast , Contraste de Defeitos\nDefects Density , Densidade de Defeitos\nDefects Size , Tamanho dos Defeitos\nDefects Smoothness , Defeitos suavidade\nDeform , Deformação\nDelaunay: Portrait De Metzinger , Delaunay: Retrato De Metzinger\nDelaunay: Windows Open Simultaneously , Delaunay: Janelas abertas simultaneamente\nDelete Layer Source , Eliminar a fonte da camada\nDenim , Ganga\nDensity , Densidade\nDensity (%) , Densidade (%)\nDepth , Profundidade\nDepth Fade In Frames , Desbotamento de profundidade em molduras\nDepth Fade Out Frames , Molduras de profundidade\nDepth Field Control , Controlo de Campo de Profundidade\nDepth Map , Mapa de profundidade\nDepth Map Construction , Construção do Mapa de Profundidade\nDepth Map Only , Apenas Mapa de Profundidade\nDepth Map Reconstruction , Reconstrução do Mapa de Profundidade\nDepth Maps Only , Apenas mapas de profundidade\nDepth-Of-Field Type , Tipo Profundidade-Ocampo\nDesaturate (%) , Desaturado (%)\nDesaturate Norm , Norma Desaturada\nDescent Method , Método de descida\nDescreen , Descreve\nDesert Gold 37 , Ouro do Deserto 37\nDestination (%) , Destino (%)\nDestination X-Tiles , Destino X-Tiles\nDestination Y-Tiles , Destino Y-Tiles\nDetail , Detalhe\nDetail Level , Nível de detalhe\nDetail Reconstruction Detection , Detecção Detalhada de Reconstrução\nDetail Reconstruction Smoothness , Detalhe de Reconstrução Suavidade de Reconstrução\nDetail Reconstruction Strength , Força de Reconstrução Detalhada\nDetail Reconstruction Style , Estilo de Reconstrução Detalhada\nDetail Scale , Escala de detalhe\nDetail Strength , Força dos detalhes\nDetails , Detalhes\nDetails Amount , Detalhes Montante\nDetails Equalizer , Detalhes Equalizador\nDetails Scale , Detalhes Escala\nDetails Smoothness , Detalhes Suavidade\nDetails Strength (%) , Detalhes Força (%)\nDetect Skin , Detectar a pele\nDeuteranomaly , Deuteranomalia\nDeviation , Desvio\nDiamond , Diamante\nDiamond (Inv.) , Diamante (Inv.)\nDiamonds , Diamantes\nDiamonds (Outline) , Diamantes (Esboço)\nDices , Dados\nDices with Colored Numbers , Dados com Números Coloridos\nDices with Colored Sides , Dados com Lados Coloridos\nDifference , Diferença\nDifference Mixing , Mistura de diferenças\nDifference of Gaussians , Diferença de gaussianos\nDifferent Axis , Eixo diferente\nDiffuse (%) , Difuso (%)\nDiffuse Shadow , Sombra difusa\nDiffusion , Difusão\nDiffusion Tensors , Tensores de difusão\nDiffusivity , Difusividade\nDigits , Dígitos\nDilatation , Dilatação\nDilate , Dilatar\nDilation , Dilatação\nDilation - Original , Dilatação - Original\nDilation / Erosion , Dilatação / Erosão\nDimension , Dimensão\nDimension [Diff] , Dimensão [Diff]\nDimension A , Dimensão A\nDimensions (%) , Dimensões (%)\nDimensions Pixels , Dimensões Pixels\nDipole: 1/(4*z^2-1) , Dipolo: 1/(4*z^2-1)\nDirect , Directo\nDirection , Direcção\nDirections 23 , Instruções 23\nDirty , Sujo\nDisable , Desactivar\nDisabled , Deficientes\nDiscard Contour Guides , Guias de contorno de descarte\nDiscard Transparency , Transparência das devoluções\nDisco , Discoteca\nDisplay , Mostrar\nDisplay Blob Controls , Controlos do Blob Display\nDisplay Color Axes , Mostrar eixos de cor\nDisplay Contours , Mostrar contornos\nDisplay Coordinates , Coordenadas da exposição\nDisplay Coordinates on Preview Window , Mostrar Coordenadas na Janela de Pré-visualização\nDisplay Debug Info on Preview , Mostrar Informação de Depuração na Pré-visualização\nDistance , Distância\nDistance (Fast) , Distância (rápido)\nDistance Transform , Transformação à distância\nDistort Lens , Lente de Distorção\nDistortion Factor , Factor de Distorção\nDistortion Surface Angle , Distorção de Ângulo de Superfície\nDistortion Surface Position , Distorção Posição Superficial\nDisturbance Scale-By-Factor , Perturbação Escala-por-factor\nDisturbance X , Perturbação X\nDisturbance Y , Perturbação Y\nDither Output , Saída de Dither\nDivide , Divida\nDo Not Flatten Transparency , Não aplaudir a transparência\nDodge and Burn , Dodge e Burn\nDodge Strength , Força de Dodge\nDOF Analyzer , Analisador DOF\nDog , Cão\nDon't Sort , Não Classificar\nDoNothing , DoNada\nDot Size , Tamanho do ponto\nDots , Pontos\nDownload External Data , Descarregar dados externos\nDragon Curve , Curva do Dragão\nDragonfly , Libélula\nDrawing Mode , Modo de Desenho\nDrawn Montage , Montagem desenhada\nDream , Sonho\nDream 1 , Sonho 1\nDream 85 , Sonho 85\nDream Smoothing , Alisamento de sonhos\nDrop Shadow , Sombra de gota\nDrop Shadow 3D , Sombra de gota 3D\nDrop Water , Água gota a gota\nDuck , Pato\nDuplicate Bottom , Fundo Duplicado\nDuplicate Horizontal , Duplicar Horizontal\nDuplicate Left , Esquerda duplicada\nDuplicate Right , Duplicar o direito\nDuplicate Top , Duplicar a parte superior\nDuplicate Vertical , Vertical Duplicado\nDuration , Duração\nDynamic Range Increase , Aumento do alcance dinâmico\nEagle , Águia\nEarth , Terra\nEarth Tone Boost , Impulso de Tom de Terra\nEasy Skin Retouch , Retoque Fácil da Pele\nEdge , Borda\nEdge Antialiasing , Antialiasing Edge\nEdge Attenuation , Atenuação de Bordos\nEdge Behavior X , Comportamento do bordo X\nEdge Behavior Y , Comportamento de bordo Y\nEdge Detect Includes Chroma , Detecção de Bordos Inclui Chroma\nEdge Exponent , Expoente de Borda\nEdge Fidelity , Fidelidade do bordo\nEdge Influence , Influência dos bordos\nEdge Mask , Máscara de Borda\nEdge Sensitivity , Sensibilidade dos bordos\nEdge Shade , Sombra da borda\nEdge Simplicity , Simplicidade do bordo\nEdge Smoothness , Suavidade do bordo\nEdge Thickness , Espessura do bordo\nEdge Threshold , Limiar de borda\nEdge Threshold (%) , Limiar do bordo (%)\nEdge-Oriented , Orientado para o Edge-Oriented\nEdges , Bordaduras\nEdges (%) , Bordaduras (%)\nEdges [Animated] , Bordaduras [Animado]\nEdges Offsets , Compensações de bordas\nEdges on Fire , Bordas em Chamas\nEdges-0.5 (beware: Memory-Consuming!) , Edges-0,5 (cuidado: Consumo de memória!)\nEdges-1 (beware: Memory-Consuming!) , Edges-1 (cuidado: Consumo de memória!)\nEdges-2 (beware: Memory-Consuming!) , Edges-2 (cuidado: Consumo de memória!)\nEffect Strength , Resistência ao efeito\nEffect X-Axis Scaling , Efeito Escala do Eixo X\nEffect Y-Axis Scaling , Efeito de escala do eixo Y\nEight Layers , Oito camadas\nEight Threads , Oito fios\nElegance 38 , Elegância 38\nElephant , Elefante\nElevation , Elevação\nElevation (%) , Elevação (%)\nEllipse , Elipse\nEllipse Painting , Pintura com elipse\nEllipse Ratio , Relação de elipse\nEllipsionism , Elipsionismo\nEllipsionism Opacity , Elipsionismo Opacidade\nEllipsoid , Elipsóide\nEmboss , Gravar\nEnable Antialiasing , Activar o Antialiasing\nEnable Interpolated Motion , Activar o Movimento Interpolado\nEnable Morphology , Habilitar Morfologia\nEnable Paintstroke , Habilitar Pincelada\nEnable Segmentation , Habilitar Segmentação\nEnchanted , Encantado\nEnd Color , Cor final\nEnd Frame Number , Número da moldura final\nEnd of Mid-Tones , Fim dos meios-tons\nEnd Point Connectivity , Conectividade do Ponto Final\nEnd Point Rate (%) , Taxa de Ponto Final (%)\nEnding Angle , Ângulo de Fim\nEnding Color , Cor final\nEnding Feathering , Pena de Fim\nEnding Point (%) , Ponto de Fim (%)\nEnding Scale (%) , Escala de fim (%)\nEnding Value , Valor Final\nEnding X-Centering , Terminar a X-Centrering\nEnding Y-Centering , Terminar o Y-Centering\nEnhance Detail , Detalhe de melhoria\nEnhance Details , Melhorar Detalhes\nEqualization , Equalização\nEqualization (%) , Equalização (%)\nEqualize , Equalizar\nEqualize and Normalize , Equalizar e Normalizar\nEqualize at Each Step , Equalizar em Cada Passo\nEqualize HSI-HSL-HSV , Equalizar o HSI-HSL-HSV\nEqualize HSV , Equalizar HSV\nEqualize Light , Equalizar a luz\nEqualize Local Histograms , Equalizar Histogramas Locais\nEqualize Shadow , Equalizar Sombra\nEquation Plot [Parametric] , Lote de Equação [Paramétrico]\nEquation Plot [Y=f(X)] , Lote de Equação [Y=f(X)]\nEquirectangular to Nadir-Zenith , Equirectangular a Nadir-Zenith\nErosion , Erosão\nErosion / Dilation , Erosão / Dilatação\nEtch Tones , Tons de Etch\nEterna for Flog , Eterna para Flog\nEuclidean , Euclidiano\nEuclidean - Polar , Euclidiano - Polar\nExclusion , Exclusão\nExpand , Expandir\nExpand Background Reconstruction , Expandir a Reconstrução de Fundo\nExpand Shadows , Expandir as Sombras\nExpand Size , Expandir tamanho\nExpanding Mirrors , Espelhos em expansão\nExpired (fade) , Expirado (desbotado)\nExpired (polaroid) , Expirado (polaroid)\nExpired 69 , Expirou 69\nExponent , Exponente\nExponent (Imaginary) , Exponente (Imaginário)\nExponent (Real) , Exponente (Real)\nExponential , Exponencial\nExport RGB-565 File , Exportar ficheiro RGB-565\nExposure , Exposição\nExpression , Expressão\nExtend 1px , Prolongar 1px\nExternal Transparency , Transparência externa\nExtra  Smooth , Extra Suave\nExtract Foreground [Interactive] , Extracto em Primeiro Plano [Interactivo]\nExtract Objects , Extracção de objectos\nExtrapolate Colors As , Cores Extrapoladas como\nExtrapolated Colors + Lineart , Cores Extrapoladas + Lineart\nExtreme , Extremo\nFade End , Fim do desvanecimento\nFade Layers , Camadas de desbotamento\nFade Start , Início do desvanecimento\nFade Start (%) , Início do desvanecimento (%)\nFaded , Desbotado\nFaded (alt) , Desbotado (alt)\nFaded (analog) , Desbotado (analógico)\nFaded (extreme) , Desbotado (extremo)\nFaded (vivid) , Desbotado (vívido)\nFaded 47 , Desbotado 47\nFaded Green , Verde desbotado\nFaded Look , Olhar desbotado\nFaded Print , Impressão desbotada\nFaded Retro 01 , Retro Desbotado 01\nFaded Retro 02 , Retro 02 desbotado\nFading , Desvanecimento\nFading Shape , Forma em desvanecimento\nFall Colors , Cores de outono\nFar Point Deviation , Desvio de Ponto Longo\nFast , Rápido\nFast &#40;Approx.&#41; , Rápido (Aprox.)\nFast (Low Precision) Preview , Pré-visualização rápida (Baixa Precisão)\nFast Approximation , Aproximação rápida\nFast Blend , Mistura rápida\nFast Blend Preview , Pré-visualização rápida da mistura\nFast Recovery , Recuperação rápida\nFast Resize , Rápido Redimensionamento\nFaux Infrared , Infravermelho falso\nFeature Analyzer Smoothness , Suavidade do Analisador de Característica\nFeature Analyzer Threshold , Limiar do Analisador de Característica\nFelt Pen , Caneta de feltro\nFFT Preview , Pré-visualização FFT\nFibers , Fibras\nFibers Amplitude , Amplitude das fibras\nFibers Smoothness , Suavidade das fibras\nFibrousness , Fibrosidade\nFidelity Chromaticity , Fidelidade Cromática\nFidelity Smoothness (Coarsest) , Fidelidade Suavidade (Mais grosseira)\nFidelity Smoothness (Finest) , Fidelidade Suavidade (Finest)\nFidelity to Target (Coarsest) , Fidelidade ao Alvo (Coarsest)\nFidelity to Target (Finest) , Fidelidade ao Alvo (Finest)\nFilename , Nome do ficheiro\nFill Holes , Encher furos\nFill Holes % , Encher furos %\nFill Transparent Holes , Encher furos transparentes\nFilled , Preenchido\nFilled Circles , Círculos Cheios\nFilling , Preenchimento\nFilm 0987 , Filme 0987\nFilm 9879 , Filme 9879\nFilm Highlight Contrast , Contraste de destaque do filme\nFilm Print 01 , Impressão de filme 01\nFilm Print 02 , Impressão de filme 02\nFilmic , Filme\nFilter Design , Desenho do filtro\nFinal Image , Imagem final\nFine , Muito bem\nFine 2 , Multa 2\nFine Details Smoothness , Detalhes Finos Suavidade\nFine Details Threshold , Limiar de Detalhes Finos\nFine Noise , Ruído Fino\nFine Scale , Escala Fina\nFinest (slower) , Mais fino (mais lento)\nFinger Paint , Tinta para os dedos\nFinger Size , Tamanho do dedo\nFire Effect , Efeito de Fogo\nFireworks , Fogos de artifício\nFirst , Primeiro\nFirst Color , Primeira cor\nFirst Frame , Primeiro Quadro\nFirst Offset , Primeira Compensação\nFirst Radius , Primeiro Raio\nFirst Size , Primeiro tamanho\nFish-Eye , Olho de Peixe\nFish-Eye Effect , Efeito Olho de Peixe\nFitting Function , Função de encaixe\nFive Layers , Cinco camadas\nFlag , Bandeira\nFlag (256) , Bandeira (256)\nFlat , Apartamento\nFlat 30 , Apartamento 30\nFlat Color , Cor plana\nFlat Regions Removal , Remoção de regiões planas\nFlat-Shaded , Com paredes planas\nFlatness , Planeza\nFlip Left / Right , Virar para a esquerda / direita\nFlip Left/Right , Virar à esquerda/direita\nFlip The Pattern , Virar o Padrão\nFlip Tolerance , Tolerância de viragem\nFlower , Flor\nFoggy Night , Noite Nebulosa\nFolder Name , Nome da pasta\nFont Colors , Cores da fonte\nFont Height (px) , Altura da fonte (px)\nForce Gray , Forçar o cinzento\nForce Re-Download from Scratch , Forçar o Re-Download a partir do Rastro\nForce Tiles to Have Same Size , Forçar os azulejos a terem o mesmo tamanho\nForce Transparency , Forçar a transparência\nForeground Color , Cor do primeiro plano\nForm , Formulário\nFormula , Fórmula\nForward , Avançar\nForward  Horizontal , Avançar Horizontal\nForward Horizontal , Avançar Horizontal\nForward Vertical , Vertical para a frente\nFour Layers , Quatro camadas\nFour Threads , Quatro fios\nFourier Analysis , Análise de Fourier\nFourier Filtering , Filtragem de Fourier\nFourier Transform , Transformada de Fourier\nFourier Watermark , Marca de água de Fourier\nFractal Noise , Ruído Fractal\nFractal Points , Pontos Fractais\nFractal Set , Conjunto Fractal\nFractal Whirl , Turbilhão fractal\nFractured Clouds , Nuvens fracturadas\nFragment Blur , Desfoque do fragmento\nFrame (px) , Moldura (px)\nFrame [Blur] , Moldura [Borrão]\nFrame [Cube] , Moldura [Cubo]\nFrame [Fuzzy] , Moldura [Fuzzy]\nFrame [Mirror] , Moldura [Espelho]\nFrame [Painting] , Moldura [Pintura]\nFrame [Pattern] , Moldura [Molde]\nFrame [Regular] , Moldura [Regular]\nFrame [Round] , Moldura [Redonda]\nFrame [Smooth] , Moldura [Smooth]\nFrame as a New Layer , Moldura como uma nova camada\nFrame Color , Cor da moldura\nFrame Files Format , Formato dos ficheiros de fotogramas\nFrame Format , Formato da moldura\nFrame Size , Tamanho da moldura\nFrame Skip , Saltar Moldura\nFrame Type , Tipo de moldura\nFrame Width , Largura da moldura\nFrames , Molduras\nFrames Offset , Compensação de Molduras\nFreaky B&W , B&W bizarro\nFreaky Details , Detalhes esquisitos\nFreeze , Congelar\nFrench Comedy , Comédia Francesa\nFrequency , Frequência\nFrequency (%) , Frequência (%)\nFrequency Analyzer , Analisador de Frequência\nFrequency Range , Gama de Frequências\nFreqy Pattern , Padrão de Freqy\nFriends Hall of Fame , Salão da Fama dos Amigos\nFrom Input , A partir de Input\nFrom Reference Color , Da cor de referência\nFrosted Beach Picnic , Piquenique na praia gelada\nFruits , Frutos\nFuji Astia 100F , Fuji Ástia 100F\nFuji FP-100c +++ , Fuji FP-100c ++++\nFuji FP-100c Negative , Fuji FP-100c Negativo\nFuji FP-100c Negative + , Fuji FP-100c Negativo +\nFuji FP-100c Negative ++ , Fuji FP-100c Negativo ++\nFuji FP-100c Negative +++ , Fuji FP-100c Negativo +++\nFuji FP-100c Negative ++a , Fuji FP-100c Negativo ++a\nFuji FP-100c Negative - , Fuji FP-100c Negativo -\nFuji FP-100c Negative -- , Fuji FP-100c Negativo --\nFuji FP-3000b +++ , Fuji FP-3000b ++++\nFuji FP-3000b Negative , Fuji FP-3000b Negativo\nFuji FP-3000b Negative + , Fuji FP-3000b Negativo +\nFuji FP-3000b Negative ++ , Fuji FP-3000b Negativo ++\nFuji FP-3000b Negative +++ , Fuji FP-3000b Negativo +++\nFuji FP-3000b Negative - , Fuji FP-3000b Negativo -\nFuji FP-3000b Negative -- , Fuji FP-3000b Negativo --\nFuji FP-3000b Negative Early , Fuji FP-3000b Negativo Antecipado\nFuji Superia 100 ++ , Fuji Superia 100 +++\nFuji Superia 800 ++ , Fuji Superia 800 +++\nFull , Completo\nFull (Allows Multi-Layers) , Completo (Permite Multi-Layers)\nFull (Slower) , Cheio (mais lento)\nFull Bottom/top , Fundo/cabeceira completa\nFull Colors , Cores Completas\nFull HD Frame Packing , Embalagem de estrutura Full HD\nFull Side by Side Keep Uncompressed , Lado a Lado Manter sem comprimir\nFull Side by Side Keep Width , Lado a lado Largura de Guarda Lado a Lado\nFull Side by Uncompressed , Lado a lado, sem compressão\nFusion 88 , Fusão 88\nFuturistic Bleak 1 , Bleak Futurístico 1\nFuturistic Bleak 2 , Bleak Futurístico 2\nFuturistic Bleak 3 , Bleak Futurístico 3\nFuturistic Bleak 4 , Bleak Futurístico 4\nG'MIC Operator , G'MIC Operador\nG/M Smoothness , G/M suavidade\nGain , Ganho\nGames & Demos , Jogos & Demos\nGamma , Gama\nGamma (%) , Gama (%)\nGamma Balance , Balanço Gamma\nGamma Compensation , Compensação Gama\nGamma Equalizer , Equalizador Gamma\nGaussian , Gaussiano\nGear , Equipamento\nGenerate Random-Colors Layer , Gerar camadas de cores aleatórias\nGeneric Fuji Astia 100 , Genéricos Fuji Astia 100\nGeneric Fuji Provia 100 , Genéricos Fuji Provia 100\nGeneric Fuji Velvia 100 , Genéricos Fuji Velvia 100\nGeneric Kodachrome 64 , Genéricos Kodachrome 64\nGeneric Kodak Ektachrome 100 VS , Genéricos Kodak Ektachrome 100 VS\nGeneric Skin Structure , Estrutura genérica da pele\nGentle Mode (overrides Minimum Brightness and Minimun Red:Blue Ratio) , Modo Suave (substitui o Brilho Mínimo e a Relação Vermelho:Azul)\nGeometry , Geometria\nGlobal Mapping , Mapeamento Global\nGmicky & Wilber (by Mahvin) , Gmicky & Wilber (por Mahvin)\nGmicky (by Deevad) , Gmicky (por Deevad)\nGmicky (by Mahvin) , Gmicky (por Mahvin)\nGoing for a Walk , Passear a pé\nGold , Ouro\nGolden , Dourado\nGolden (bright) , Dourado (brilhante)\nGolden (fade) , Ouro (desbotar)\nGolden (mono) , Dourado (mono)\nGolden (vibrant) , Dourado (vibrante)\nGoldFX - Bright Summer Heat , GoldFX - Calor Brilhante de Verão\nGoldFX - Hot Summer Heat , GoldFX - Calor quente de Verão\nGoldFX - Perfect Sunset 01min , GoldFX - Pôr-do-sol perfeito 01min\nGoldFX - Perfect Sunset 05min , GoldFX - Pôr-do-sol perfeito 05min\nGoldFX - Perfect Sunset 10min , GoldFX - Pôr-do-sol perfeito 10min\nGoldFX - Spring Breeze , GoldFX - Brisa da Primavera\nGoldFX - Summer Heat , GoldFX - Calor de Verão\nGood Morning , Bom dia\nGradient , Gradiente\nGradient [Corners] , Gradiente [Cantos]\nGradient [Custom Shape] , Gradiente [Forma Personalizada]\nGradient [from Line] , Gradiente [da linha]\nGradient [Linear] , Gradiente [Linear]\nGradient [Radial] , Gradiente [Radial]\nGradient [Random] , Gradiente [Random]\nGradient Norm , Norma Gradiente\nGradient Preset , Pré-ajuste de gradiente\nGradient RGB , RGB Gradiente\nGradient Smoothness , Suavidade Gradiente\nGradient Values , Valores gradientes\nGrain , Grão\nGrain (Highlights) , Grão (Destaques)\nGrain (Midtones) , Grão (Midtones)\nGrain (Shadows) , Grão (Sombras)\nGrain Extract , Extracto de grão\nGrain Merge , Fusão de cereais\nGrain Only , Apenas cereais\nGrain Scale , Escala de grão\nGrain Tone Fading , Desvanecimento do tom do grão\nGrain Type , Tipo de grão\nGranularity , Granularidade\nGraphic Boost , Impulso Gráfico\nGraphic Colours , Cores Gráficas\nGraphic Novel , Novela gráfica\nGraphix Colors , Cores do Graphix\nGrayscale , Escala de cinzentos\nGreece , Grécia\nGreen , Verde\nGreen 15 , Verde 15\nGreen 2025 , Verde 2025\nGreen Action , Acção Verde\nGreen Afternoon , Tarde Verde\nGreen Blues , Blues Verde\nGreen Conflict , Conflito Verde\nGreen Day 01 , Dia Verde 01\nGreen Day 02 , Dia Verde 02\nGreen Factor , Factor Verde\nGreen G09 , Verde G09\nGreen Indoor , Indoor Verde\nGreen Level , Nível Verde\nGreen Light , Luz Verde\nGreen Mono , Mono Verde\nGreen Rotations , Rotações verdes\nGreen Shift , Turno Verde\nGreen Smoothness , Suavidade verde\nGreen Wavelength , Comprimento de onda verde\nGreen Yellow , Verde Amarelo\nGreen-Red , Vermelho-verde\nGreenish Contrasty , Contraste Esverdeado\nGreenish Fade , Desvanecer o esverdeamento\nGreenish Fade 1 , Desbotamento esverdeado 1\nGrey , Cinzento\nGreyscale , Escala de cinzentos\nGrid , Grelha\nGrid [Cartesian] , Grelha [cartesiano]\nGrid [Hexagonal] , Grelha [Hexagonal]\nGrid [Triangular] , Grelha [Triangular]\nGrid Divisions , Divisões de Grelha\nGrid Smoothing , Alisamento da grelha\nGrid Width , Largura da Grelha\nGrow Alpha , Crescer Alfa\nGuide As , Guia Como\nGuide Mix , Mistura de Guias\nGuide Recovery , Guia de Recuperação\nGum Leaf , Folha de Goma\nGummy , Goma\nH Cutoff , Cortar H\nHair Locks , Fechaduras de cabelo\nHaldCLUT Filename , HaldCLUT Nome de ficheiro\nHalf Bottom/top , Meia parte de baixo/topo\nHalf Side  by Side , Meio Lado a Lado\nHalftone , Meio-tom\nHalftone Shapes , Formas de meio-tom\nHanoi Tower , Torre de Hanói\nHard , Difícil\nHard Dark , Escuro\nHard Light , Luz dura\nHard Mix , Mistura dura\nHard Sketch , Esboço duro\nHard Teal Orange , Laranja Teal Dura\nHardlight , Luzes duras\nHarsh Day , Dia duro\nHarsh Sunset , Pôr-do-sol duro\nHDR Effect (Tone Map) , Efeito HDR (Mapa de Tom)\nHeart , Coração\nHearts , Corações\nHearts (Outline) , Corações (Esboço)\nHeight , Altura\nHeight (%) , Altura (%)\nHexagon , Hexágono\nHigh , Alto\nHigh (Slower) , Alto (mais lento)\nHigh Frequency , Alta frequência\nHigh Frequency Layer , Camada de Alta Frequência\nHigh Key , Chave alta\nHigh Pass , Passe Alto\nHigh Quality , Alta Qualidade\nHigh Scale , Escala alta\nHigh Speed , Alta velocidade\nHigh Value , Alto valor\nHigher Mask Threshold (%) , Limiar de Máscara Superior (%)\nHighlight , Destaque\nHighlight (%) , Destaque (%)\nHighlight Bloom , Destaque Bloom\nHighlights , Destaques\nHighlights Abstraction , Destaques Abstracção\nHighlights Brightness , Destaques Brilho\nHighlights Color Intensity , Destaques Intensidade da cor\nHighlights Crossover Point , Destaques Crossover Point\nHighlights Hue , Destaques Tonalidade\nHighlights Lightness , Destaca a leveza\nHighlights Protection , Destaques Protecção\nHighlights Selection , Selecção de Destaques\nHighlights Threshold , Destaques Limiar\nHighlights Zone , Zona de Destaques\nHighres CLUT , CLUT Highres\nHistogram , Histograma\nHistogram Analysis , Análise de Histograma\nHistogram Transfer , Transferência de Histograma\nHokusai: The Great Wave , Hokusai: A Grande Onda\nHomogeneity , Homogeneidade\nHope Poster , Cartaz da Esperança\nHorisontal Length , Comprimento Horisontal\nHorizon Leveling (deg) , Nivelamento Horizoniano (deg)\nHorizontal Amount , Quantia Horizontal\nHorizontal Array , Matriz Horizontal\nHorizontal Blur , Desfoque Horizontal\nHorizontal Length , Comprimento Horizontal\nHorizontal Size (%) , Tamanho horizontal (%)\nHorizontal Stripes , Listras Horizontais\nHorizontal Tiles , Ladrilhos Horizontais\nHorizontal Warp Only , Apenas Warp Horizontal\nHorror Blue , Horror Azul\nHot , Quente\nHot (256) , Quente (256)\nHough Sketch , Esboço de Hough\nHough Transform , Transformação Hough\nHouse , Casa\nHouseholder , Proprietário da casa\nHSI [all] , HSI [todos]\nHSI [Intensity] , HSI [Intensidade]\nHSL [all] , HSL [todos]\nHSL Adjustment , Ajuste de HSL\nHSV [all] , HSV [todos]\nHSV [Hue] , HSV [Tonalidade]\nHSV [Saturation] , HSV [Saturação]\nHSV [Value] , HSV [Valor]\nHSV Select , Selecção HSV\nHue , Matiz\nHue (%) , Tonalidade (%)\nHue Band , Banda de matizes\nHue Factor , Factor de Matiz\nHue Lighten-Darken , Tonalidade Lighten-Darken\nHue Max (%) , Matiz Max (%)\nHue Min (%) , Tonalidade Min (%)\nHue Offset , Offset de matizes\nHue Range , Gama de matizes\nHue Shift , Turno de Tonalidade\nHue Smoothness , Suavidade da matiz\nHuman  2 , Humano 2\nHuman 1 , Humano 1\nHuman 2 , Humano 2\nHybrid Median - Medium Speed Softest Output , Mediana Híbrida - Saída mais suave de velocidade média\nHypnosis , Hipnose\nIain Noise Reduction 2019 , Redução de Ruído Iain 2019\nIain's Fast Denoise , Iain's Denoise rápido\nIdentity , Identidade\nIgnore , Ignorar\nIgnore Current Aspect , Ignorar Aspecto da Corrente\nIlluminate 2D Shape , Iluminar a forma 2D\nIllumination , Iluminação\nIllustration Look , Ilustração Look\nImage , Imagem\nImage + Background , Imagem + Fundo\nImage + Colors (2 Layers) , Imagem + Cores (2 Camadas)\nImage + Colors (Multi-Layers) , Imagem + Cores (Multi-Layers)\nImage Contour Dimensions , Dimensões do contorno da imagem\nImage Smoothness , Suavidade de imagem\nImage to Grab Color from (.Png) , Imagem para Agarrar Cor de (.Png)\nImage Weight , Peso da imagem\nImport Data , Dados de importação\nImport RGB-565 File , Importar ficheiro RGB-565\nImpulses 5x5 , Impulsos 5x5\nImpulses 7x7 , Impulsos 7x7\nImpulses 9x9 , Impulsos 9x9\nInclude Opacity Layer , Incluir camada de opacidade\nIncreasing , Aumentando\nIndoor Blue , Azul Interior\nInfluence of Color Samples (%) , Influência das amostras de cor (%)\nInformation , Informação\nInit. Resolution , Init. Resolução\nInit. Type , Init. Tipo\nInit. With High Gradients Only , Init. Apenas com Gradientes Elevados\nInitial Density , Densidade inicial\nInitialization , Inicialização\nInk Wash , Lavagem da tinta\nInner , Interior\nInner Fading , Desvanecimento interno\nInner Length , Comprimento interior\nInner Radius , Raio interior\nInner Radius (%) , Raio interior (%)\nInner Shade , Sombra interior\nInpaint [Holes] , Pintura [Buracos]\nInpaint [Morphological] , Inpaint [Morfológico]\nInpaint [Multi-Scale] , Inpaint [Multi-escala]\nInpaint [Patch-Based] , Inpaint [Baseado em Patch]\nInput , Entrada\nInput Folder , Pasta de entrada\nInput Frame Files Name , Nome do ficheiro da moldura de entrada\nInput Guide Color , Cor do guia de entrada\nInput Layers , Camadas de entrada\nInput Transparency , Transparência de entrada\nInput Type , Tipo de entrada\nInsert New CLUT Layer , Inserir nova camada CLUT\nInside , Dentro\nInside Color , Cor interior\nInstant [Consumer] (54) , Instantâneo [Consumidor] (54)\nInstant [Pro] (68) , Instantâneo [Pro] (68)\nIntensity , Intensidade\nIntensity of Purple Fringe , Intensidade da franja púrpura\nInterlace Horizontal , Interlaçar Horizontal\nInterlace Vertical , Vertical Interlace\nInterpolate , Interpolar\nInterpolation , Interpolação\nInterpolation Type , Tipo de Interpolação\nInverse , Inversa\nInverse Depth Map , Mapa de Profundidade Inversa\nInverse Radius , Raio Inverso\nInverse Transform , Transformação Inversa\nInversions , Inversões\nInvert Background / Foreground , Inverter Antecedentes / Primeiro plano\nInvert Blur , Inverter o Borrão\nInvert Canvas Colors , Inverter Cores de Lona\nInvert Colors , Inverter as cores\nInvert Image Colors , Inverter as cores da imagem\nInvert Luminance , Luminância de Inverter\nInvert Mask , Máscara Invertida\nIteration , Iteração\nIterations , Iterações\nJapanese Maple Leaf , Folha de Bordo Japonesa\nJet , Jacto\nJet (256) , Jacto (256)\nJPEG Artefacts , Artefactos JPEG\nJPEG Smooth , JPEG Liso\nJust Peachy , Só Peachy\nK-Factor , Factor K\nK-Tone Vintage Kodachrome , K-Tom Vintage Kodachrome\nKaleidoscope [Blended] , Caleidoscópio [Mistura]\nKaleidoscope [Polar] , Caleidoscópio [Polar]\nKaleidoscope [Symmetry] , Caleidoscópio [Simetria]\nKandinsky: Squares with Concentric Circles , Kandinsky: Quadrados com Círculos Concêntricos\nKandinsky: Yellow-Red-Blue , Kandinsky: Amarelo-Vermelho-azul\nKeep , Guarde\nKeep Aspect Ratio , Manter a relação de aspecto\nKeep Base Layer as Input Background , Manter a camada base como fundo de entrada\nKeep Borders Square , Manter a Praça das Fronteiras\nKeep Color Channels , Manter Canais de Cor\nKeep Colors , Manter as cores\nKeep Detail , Manter Detalhe\nKeep Detail Layer Separate , Manter a Camada de Detalhe Separada\nKeep Iterations as Different Layers , Manter as Iterações como Camadas Diferentes\nKeep Layers Separate , Manter as camadas separadas\nKeep Original Image Size , Manter o tamanho original da imagem\nKeep Original Layer , Manter a Camada Original\nKeep Tiles Square , Manter o quadrado dos azulejos\nKeep Transparency in Output , Manter a Transparência na Produção\nKernel Multiplier , Multiplicador de Núcleo\nKernel Type , Tipo de grão\nKey Factor , Factor chave\nKey Frame Rate , Taxa do Quadro-Chave\nKey Shift , Mudança de Chave\nKey Smoothness , Suavidade da chave\nKeypoint Influence (%) , Influência do ponto-chave (%)\nKitaoka Spin Illusion , Ilusão de Kitaoka Spin\nKlee: Death and Fire , Klee: Morte e Fogo\nKlee: In the Style of Kairouan , Klee: No Estilo de Kairouan\nKlee: Oriental Pleasure Garden Anagoria , Klee: Jardim do Prazer Oriental Anagoria\nKlee: Polyphony 2 , Klee: Polifonia 2\nKlee: Red Waistcoat , Klee: Casaco de cintura vermelho\nKlimt: The Kiss , Klimt: O Beijo\nKodak Portra 800 ++ , Kodak Portra 800 +++\nKuwahara on Painting , Kuwahara sobre Pintura\nL1-Norm , L1-Norma\nL2-Norm , L2-Norma\nLab , Laboratório\nLab (Chroma Only) , Laboratório (Apenas Chroma)\nLab (Distinct) , Laboratório (Distinto)\nLab (Luma Only) , Laboratório (apenas Luma)\nLab (Luma/Chroma) , Laboratório (Luma/Chroma)\nLab (Mixed) , Laboratório (Misto)\nLab [a-Chrominance] , Laboratório [a-Crominância]\nLab [ab-Chrominances] , Laboratório [ab-Chrominances]\nLab [all] , Laboratório [todos]\nLab [b-Chrominance] , Laboratório [b-Crominância]\nLab [Lightness] , Laboratório [Lightness]\nLandscape , Paisagem\nLandscape-10 , Paisagem-10\nLandscape-2 , Paisagem-2\nLandscape-3 , Paisagem-3\nLandscape-4 , Paisagem-4\nLandscape-5 , Paisagem-5\nLandscape-6 , Paisagem-6\nLandscape-7 , Paisagem-7\nLandscape-8 , Paisagem-8\nLandscape-9 , Paisagem-9\nLaplacian , Laplaciano\nLarge , Grande\nLarge Noise , Grande Ruído\nLast , Último\nLast Frame , Último quadro\nLate Afternoon Wanderlust , Desejo de viajar ao fim da tarde\nLate Sunset , Pôr-do-sol tardio\nLava Lamp , Lâmpada de Lava\nLayer , Camada\nLayer Processing , Processamento de camadas\nLayers to Tiles , Camadas para Azulejos\nLch [all] , Lch [todos]\nLch [c-Chrominance] , Lch [c-Crominância]\nLch [ch-Chrominances] , Lch [ch-Crominâncias]\nLeaf , Folha\nLeaf Color , Cor da Folha\nLeaf Opacity (%) , Opacidade das Folhas (%)\nLeak Type , Tipo de Fuga\nLeft , Esquerda\nLeft  Foreground , Primeiro plano à esquerda\nLeft / Right Blur (%) , Desfoque Esquerda / Direita (%)\nLeft and Right Background , Fundo esquerdo e direito\nLeft and Right Foreground , Primeiro plano à esquerda e à direita\nLeft and Right Image Streams , Fluxos de imagem à esquerda e à direita\nLeft Diagonal Foreground , Primeiro plano diagonal esquerdo\nLeft Foreground , Primeiro plano à esquerda\nLeft Position , Posição esquerda\nLeft Side Orientation , Orientação do lado esquerdo\nLeft Slope , Inclinação Esquerda\nLeft Stream Only , Apenas o fluxo de esquerda\nLength , Comprimento\nLenticular Density LPI , Densidade Lenticular LPI\nLenticular Orientation , Orientação Lenticular\nLenticular Print , Impressão lenticular\nLevel , Nível\nLevel Frequency , Nível Frequência\nLevels , Níveis\nLife Giving Tree , Árvore que dá vida\nLifestyle & Commercial-1 , Estilo de Vida e Comercial-1\nLifestyle & Commercial-10 , Estilo de Vida e Comercial-10\nLifestyle & Commercial-2 , Estilo de Vida e Comercial-2\nLifestyle & Commercial-3 , Estilo de Vida e Comercial-3\nLifestyle & Commercial-4 , Estilo de Vida e Comercial-4\nLifestyle & Commercial-5 , Estilo de Vida e Comercial-5\nLifestyle & Commercial-6 , Estilo de Vida e Comercial-6\nLifestyle & Commercial-7 , Estilo de Vida e Comercial-7\nLifestyle & Commercial-8 , Estilo de Vida e Comercial-8\nLifestyle & Commercial-9 , Estilo de Vida e Comercial-9\nLight , Luz\nLight (blown) , Luz (soprada)\nLight Angle , Ângulo de luz\nLight Color , Cor clara\nLight Direction , Direcção da Luz\nLight Effect , Efeito de Luz\nLight Glow , Brilho Leve\nLight Grey , Cinzento Claro\nLight Leaks , Fugas de luz\nLight Motive , Motivo Ligeiro\nLight Patch , Patch de luz\nLight Rays , Raios de luz\nLight Smoothness , Suavidade leve\nLight Strength , Força da luz\nLight Type , Tipo leve\nLighten , Iluminar\nLighten Edges , Iluminar Bordos\nLighter , Isqueiro\nLighting , Iluminação\nLighting Angle , Ângulo de Iluminação\nLightness , Ligeireza\nLightness (%) , Ligeireza (%)\nLightness Factor , Factor de leveza\nLightness Level , Nível de Leveza\nLightness Max (%) , Leveza Máxima (%)\nLightness Min (%) , Ligeireza Min (%)\nLightness Shift , Mudança de leveza\nLightness Smoothness , Aligeiramento Suavidade\nLightning , Relâmpago\nLighty Smooth , Ligeiramente Suave\nLimit Hue Range , Limitar o alcance da tonalidade\nLine , Linha\nLine Opacity , Opacidade da linha\nLine Precision , Precisão da linha\nLinear Burn , Queimadura Linear\nLinear Light , Luz Linear\nLinear RGB , RGB Linear\nLinear RGB [All] , RGB Linear [Todos]\nLinear RGB [Blue] , RGB Linear [Azul]\nLinear RGB [Green] , Linear RGB [Verde]\nLinear RGB [Red] , RGB Linear [Vermelho]\nLinearity , Linearidade\nLineart + Color Spots , Lineart + Spots de cor\nLineart + Color Spots + Extrapolated Colors , Lineart + Spots de cor + Cores Extrapoladas\nLineart + Colors , Lineart + Cores\nLineart + Extrapolated Colors , Lineart + Cores Extrapoladas\nLines , Linhas\nLines (256) , Linhas (256)\nLion , Leão\nLissajous [Animated] , Lissajous [Animado]\nLissajous Spiral , Lissajous Espiral\nLittle , Pequeno\nLittle Blue , Pequeno Azul\nLittle Cyan , Pequeno Ciano\nLittle Green , Pequeno Verde\nLittle Key , Chavezinha\nLittle Magenta , Pequena Magenta\nLittle Red , Vermelho Pequeno\nLittle Yellow , Pequeno Amarelo\nLN Amplititude , LN Ampliação\nLN Average-Smoothness , LN Avanço - Medianeira\nLN Size , Tamanho LN\nLocal  Normalisation , Normalização local\nLocal Contrast , Contraste local\nLocal Contrast Effect , Efeito de Contraste Local\nLocal Contrast Enhance , Realce do contraste local\nLocal Contrast Enhancement , Melhoramento do contraste local\nLocal Contrast Style , Estilo de contraste local\nLocal Detail Enhancer , Melhorador de detalhes local\nLocal Normalization , Normalização Local\nLocal Orientation , Orientação local\nLocal Processing , Processamento local\nLocal Similarity Mask , Máscara de Semelhança Local\nLocal Variance Normalization , Normalização da Variância Local\nLock Return Scaling to Source Layer , Escala de Retorno de Bloqueio à Camada de Origem\nLock Source , Fonte de Bloqueio\nLock Uniform Sampling , Amostragem Uniforme de Fechaduras\nLogarithmic Distortion , Distorção logarítmica\nLogarithmic Distortion Axis Combination for X-Axis , Combinação de Eixo de Distorção Logarítmica para eixo X\nLogarithmic Distortion Axis Combination for Y-Axis , Combinação de Eixo de Distorção Logarítmica para Eixo Y\nLogarithmic Distortion X-Axis Direction , Distorção logarítmica Direcção do eixo X\nLogarithmic Distortion Y-Axis Direction , Distorção logarítmica Direcção eixo Y\nLomography Redscale 100 , Lomografia à escala vermelha 100\nLookup , Pesquisa\nLookup Factor , Factor de pesquisa\nLookup Size , Tamanho da pesquisa\nLoop Method , Método Loop\nLow , Baixo\nLow Bias , Baixo Bias\nLow Contrast Blue , Azul Baixo Contraste\nLow Frequency , Baixa frequência\nLow Frequency Layer , Camada de Baixa Frequência\nLow Key , Chave Baixa\nLow Key 01 , Chave Baixa 01\nLow Scale , Escala baixa\nLow Value , Baixo valor\nLower Layer Is the Bottom Layer for All Blends , A camada inferior é a camada inferior para todas as misturas\nLower Mask Threshold (%) , Limiar Inferior da Máscara (%)\nLower Side Orientation , Orientação lateral inferior\nLowercase Letters , Cartas em letras minúsculas\nLowlights Crossover Point , Ponto de Cruzamento de Luzes Baixas\nLowres CLUT , CLUT Lowres\nLuma Noise , Ruído de Luma\nLuminance , Luminância\nLuminance Factor , Factor Luminância\nLuminance Level , Nível de luminosidade\nLuminance Only , Apenas Luminância\nLuminance Only (Lab) , Apenas Luminância (Laboratório)\nLuminance Only (YCbCr) , Apenas Luminância (YCbCr)\nLuminance Shift , Deslocamento da luminância\nLuminance Smoothness , Luminância Suavidade\nLuminosity from Color , Luminosidade da Cor\nLuminosity Type , Tipo de Luminosidade\nLush Green Summer , Verão Verde exuberante\nLUTs Pack , Pacote LUTs\nLylejk's Painting , Pintura Lylejk's\nMagenta Coffee , Café Magenta\nMagenta Day , Dia de Magenta\nMagenta Day 01 , Magenta Dia 01\nMagenta Dream , Sonho Magenta\nMagenta Factor , Fator Magenta\nMagenta Shift , Turno Magenta\nMagenta Smoothness , Magenta suavidade\nMagenta Yellow , Amarelo Magenta\nMagic Details , Detalhes Mágicos\nMagnitude / Phase , Magnitude / Fase\nMail , Correio\nMake Hue Depends on Region Size , Fazer a matiz depender do tamanho da região\nMake Seamless [Diffusion] , Make Seamless [Difusão]\nMake Seamless [Patch-Based] , Make Seamless [Baseado em Patch]\nMake Squiggly , Fazer Squiggly\nMake Up , Maquilhagem\nMandelbrot - Julia Sets , Mandelbrot - Conjuntos Julia\nMandelbrot Explorer , Explorador Mandelbrot\nManual Controls , Controlos manuais\nMap , Mapa\nMap Tones , Tons do Mapa\nMapping , Mapeamento\nMarble , Mármore\nMargin (%) , Margem (%)\nMascot Image , Imagem de Mascote\nMasculine , Masculino\nMask , Máscara\nMask + Background , Máscara + Fundo\nMask as Bottom Layer , Máscara como Camada de Fundo\nMask By , Máscara por\nMask Color , Cor da máscara\nMask Contrast , Contraste de máscara\nMask Creator , Criador da Máscara\nMask Dilation , Dilatação da máscara\nMask Size , Tamanho da máscara\nMask Smoothness (%) , Suavidade da máscara (%)\nMask Type , Tipo de Máscara\nMasked Image , Imagem mascarada\nMasking , Mascaramento\nMatch Colors With , Corresponder as cores com\nMatching Precision (Smaller Is Faster) , Correspondência de precisão (Mais pequeno é mais rápido)\nMath Symbols , Símbolos Matemáticos\nMatrix , Matriz\nMax Angle , Ângulo máximo\nMax Angle Deviation (deg) , Desvio angular máximo (deg)\nMax Area , Área máxima\nMax Curve , Curva Máxima\nMax Cut (%) , Corte máximo (%)\nMax Iterations , Iterações máximas\nMax Length (%) , Comprimento máximo (%)\nMax Offset (%) , Deslocamento máximo (%)\nMax Radius , Raio Máximo\nMax Threshold , Limiar Máximo\nMaximal Area , Área Máxima\nMaximal Color Saturation , Saturação Máxima de Cor\nMaximal Highlights , Destaques Máximos\nMaximal Radius , Raio Maximal\nMaximal Seams per Iteration (%) , Máximas Costuras por Iteração (%)\nMaximal Size , Tamanho Máximo\nMaximal Value , Valor Máximo\nMaximum , Máximo\nMaximum Dimension , Dimensão máxima\nMaximum Image Size , Tamanho máximo de imagem\nMaximum Number of Image Colors , Número máximo de cores de imagem\nMaximum Number of Output Layers , Número máximo de camadas de saída\nMaximum Red:Blue Ratio in the Fringe , Relação máxima vermelho:azul na franja\nMaximum Saturation , Saturação Máxima\nMaximum Size Factor , Factor de Tamanho Máximo\nMaximum Value , Valor Máximo\nMaze , Labirinto\nMaze Type , Tipo de labirinto\nMean Color , Cor média\nMean Curvature , Curvatura média\nMedian (beware: Memory-Consuming!) , Mediana (cuidado: Consumo de memória!)\nMedian Radius , Raio Mediano\nMedium , Médio\nMedium 3 , Médio 3\nMedium Details Smoothness , Suavidade de detalhes médios\nMedium Details Threshold , Limiar de Média Pormenor\nMedium Frequency Layer , Camada de Média Frequência\nMedium Scale (Original) , Escala média (Original)\nMedium Scale (Smoothed) , Escala média (suavizada)\nMemories , Memórias\nMerge Brightness / Colors , Fundir Brilho / Cores\nMerge Layers? , Fusão de camadas?\nMerging Mode , Modo de fusão\nMerging Option , Opção de fusão\nMerging Steps , Passos de fusão\nMess with Bits , Meter-se com Bits\nMetallic Look , Olhar metálico\nMethod , Método\nMetric , Métrica\nMicro/macro Details  Adjusted , Micro/macro Detalhes ajustados\nMid , Em meados de\nMid Grey , Cinzento Médio\nMid Noise , Ruído médio\nMid Offset , Meio de Compensação\nMid Tone Contrast , Contraste de Tom Médio\nMid-Dark Grey , Cinzento-escuro médio\nMid-Light Grey , Cinzento Médio-Luz\nMid-Tones , Meio-tons\nMiddle Grey , Cinzento Médio\nMiddle Scale , Escala média\nMidpoint , Ponto médio\nMidtones Brightness , Brilho de meio-tons\nMidtones Color Intensity , Intensidade de cor dos meios tons\nMighty Details , Detalhes Poderosos\nMin Angle Deviation (deg) , Desvio angular mínimo (deg)\nMin Area % , Área Min.\nMin Cut (%) , Corte Mínimo (%)\nMin Length (%) , Comprimento Mínimo (%)\nMin Radius , Raio Menos\nMin Threshold , Limiar Mínimo\nMineral Mosaic , Mosaico Mineral\nMinesweeper , Varredor de Minas\nMinimal Area , Área Mínima\nMinimal Area (%) , Área Mínima (%)\nMinimal Color Intensity , Intensidade mínima da cor\nMinimal Highlights , Destaques Mínimos\nMinimal Path , Caminho Mínimo\nMinimal Radius , Raio Minimal\nMinimal Region Area , Área de Região Mínima\nMinimal Scale (%) , Escala Mínima (%)\nMinimal Shape Area , Área de Forma Mínima\nMinimal Size , Tamanho Mínimo\nMinimal Size (%) , Tamanho Mínimo (%)\nMinimal Stroke Length , Comprimento Mínimo do Acidente Vascular Cerebral\nMinimal Value , Valor Mínimo\nMinimalist Caffeination , Cafeinação Minimalista\nMinimum , Mínimo\nMinimum Brightness , Brilho Mínimo\nMinimum Red:Blue Ratio in the Fringe , Relação Mínima Vermelha:Azul na Fringe\nMirror , Espelho\nMirror Effect , Efeito Espelho\nMirror X , Espelho X\nMirror Y , Espelho Y\nMix , Misture\nMixed Mode , Modo misto\nMixer [CMYK] , Misturador [CMYK]\nMixer [HSV] , Misturador [HSV]\nMixer [Lab] , Misturador [Laboratório]\nMixer [PCA] , Misturador [PCA]\nMixer [RGB] , Misturador [RGB]\nMixer [YCbCr] , Misturador [YCbCr]\nMixer Mode , Modo Mixer\nMixer Style , Estilo Mixer\nMode , Modo\nModern Film , Filme moderno\nModulo Value , Valor Modulo\nMoir&eacute; Animation , Moir&eacute; Animação\nMoire Removal , Remoção do moiré\nMoire Removal Method , Método de remoção do moiré\nMondrian: Composition in Red-Yellow-Blue , Mondrian: Composição em vermelho-amarelo-amarelo-azul\nMondrian: Evening; Red Tree , Mondrian: Noite; Árvore Vermelha\nMondrian: Gray Tree , Mondrian: Árvore cinzenta\nMonet: San Giorgio Maggiore at Dusk , Monet: San Giorgio Maggiore ao anoitecer\nMonet: Water-Lily Pond , Monet: Lírio-Lírio de Água\nMonet: Wheatstacks - End of Summer , Monet: Wheatstacks - Fim do Verão\nMonkey , Macaco\nMono Tinted , Mono Colorido\nMono-Directional , Mono-direccional\nMonochrome , Monocromático\nMonochrome 1 , Monocromo 1\nMonochrome 2 , Monocromo 2\nMontage , Montagem\nMontage Type , Tipo de Montagem\nMoonlight , Luz da Lua\nMoonlight 01 , Luz da Lua 01\nMoonrise , Nascer da Lua\nMorning 6 , Manhã 6\nMorph [Interactive] , Morfo [Interactivo]\nMorph Layers , Camadas de morfo\nMorphological - Fastest Sharpest Output , Morfológico - Saída mais rápida e afiada\nMorphological Closing , Encerramento Morfológico\nMorphological Filter , Filtro morfológico\nMorphology Painting , Pintura Morfológica\nMorphology Strength , Força morfológica\nMosaic , Mosaico\nMost , A maioria\nMostly Blue , Principalmente Azul\nMotion Analyzer , Analisador de movimento\nMotion-Compensated , Movimento-Compensado\nMuch , Muito\nMuch Blue , Muito Azul\nMuch Green , Muito Verde\nMuch Red , Muito Vermelho\nMulti-Layer Etch , Etch Multi-Layer\nMultiple Colored Shapes Over Transp. BG , Formas de múltiplas cores sobre o transporte. BG\nMultiple Layers , Múltiplas camadas\nMultiplier , Multiplicador\nMultiply , Multiplicar\nMultiscale Operator , Operador Multi-escala\nMunch: The Scream , Munch: O Grito\nMute Shift , Deslocamento do Mudo\nMuted Fade , Desbotamento mudo\nMystic Purple Sunset , Pôr-do-sol Místico Púrpura\nName , Nome\nNatural (vivid) , Natural (vívido)\nNature & Wildlife-1 , Natureza & Vida Selvagem - 1\nNature & Wildlife-10 , Natureza & Vida Selvagem - 10\nNature & Wildlife-2 , Natureza & Vida Selvagem - 2\nNature & Wildlife-3 , Natureza & Vida Selvagem - 3\nNature & Wildlife-4 , Natureza & Vida Selvagem - 4\nNature & Wildlife-5 , Natureza & Vida Selvagem - 5\nNature & Wildlife-6 , Natureza & Vida Selvagem - 6\nNature & Wildlife-7 , Natureza & Vida Selvagem - 7\nNature & Wildlife-8 , Natureza & Vida Selvagem - 8\nNature & Wildlife-9 , Natureza & Vida Selvagem - 9\nNb Circles Surrounding , Nb Círculos à volta\nNear Black , Perto de Preto\nNearest , O mais próximo\nNearest Neighbor , Vizinho mais próximo\nNeat Merge , Fusão pura\nNebulous , Nebuloso\nNegate , Negar\nNegation , Negação\nNegative , Negativo\nNegative [Color] (13) , Negativo [Cor] (13)\nNegative [New] (39) , Negativo [Novo] (39)\nNegative [Old] (44) , Negativo [Antigo] (44)\nNegative Color Abstraction , Abstracção de Cor Negativa\nNegative Colors , Cores Negativas\nNegative Effect , Efeito Negativo\nNeighborhood Size (%) , Tamanho do bairro (%)\nNeighborhood Smoothness , Suavidade do bairro\nNemesis , Némesis\nNeon Lightning , Relâmpagos de néon\nNeutral Color , Cor Neutra\nNeutral Teal Orange , Laranja Neutra Teal\nNeutral Warm Fade , Desbotamento Neutro do calor\nNew Curves [Interactive] , Novas Curvas [Interactivo]\nNewspaper , Jornais\nNight 01 , Noite 01\nNight Blade 4 , Lâmina nocturna 4\nNight From Day , Noite de dia\nNight King 141 , Rei da Noite 141\nNight Spy , Espionagem Nocturna\nNine Layers , Nove camadas\nNo Masking , Sem mascaramento\nNo Recovery , Sem recuperação\nNo Rescaling , Sem redimensionamento\nNo Transparency , Sem Transparência\nNoise , Ruído\nNoise [Additive] , Ruído [Aditivo]\nNoise [Perlin] , Ruído [Perlin]\nNoise [Spread] , Ruído [Espalhar]\nNoise A , Ruído A\nNoise B , Ruído B\nNoise C , Ruído C\nNoise D , Ruído D\nNoise Level , Nível de Ruído\nNoise Scale , Balança de Ruído\nNoise Type , Tipo de Ruído\nNon / No , Não / Não\nNon-Linearity , Não-Linearidade\nNon-Rigid , Não-Rígido\nNone , Nenhum\nNone (Allows Multi-Layers) , Nenhuma (Permite Multi-Layers)\nNorm Type , Tipo de norma\nNormal Map , Mapa normal\nNormal Output , Saída normal\nNormalization , Normalização\nNormalize , Normalizar\nNormalize Brightness , Normalizar a luminosidade\nNormalize Colors , Normalizar as cores\nNormalize Illumination , Normalizar a Iluminação\nNormalize Input , Normalizar a Entrada\nNormalize Luma , Normalizar Luma\nNormalize Scales , Normalizar as escalas\nNostalgia Honey , Mel da Nostalgia\nNostalgic , Nostalgico\nNothing , Nada\nNumber , Número\nNumber of Added Frames , Número de estruturas adicionadas\nNumber of Angles , Número de ângulos\nNumber of Clusters , Número de Aglomerados\nNumber of Colors , Número de Cores\nNumber of Frames , Número de Molduras\nNumber of Inter-Frames , Número de Inter-Frames\nNumber of Iterations per Scale , Número de Iterações por Escala\nNumber of Key-Frames , Número de Porta-Chaves\nNumber of Levels , Número de níveis\nNumber of Matches (Coarsest) , Número de Fósforos (mais grosseiros)\nNumber of Matches (Finest) , Número de Fósforos (Finest)\nNumber of Orientations , Número de Orientações\nNumber Of Rays , Número de Raios\nNumber of Scales , Número de balanças\nNumber of Sizes , Número de Tamanhos\nNumber of Streaks , Número de Ruas\nNumber of Teeth , Número de Dentes\nNumber of Tones , Número de Tons\nObject Animation , Animação de objectos\nObject Ratio , Relação de objectos\nObject Tolerance , Tolerância a objectos\nOctagon , Octógono\nOctagonal , Octogonal\nOctogon , Octogão\nOddness (%) , Estranheza (%)\nOff , Desligado\nOffset (%) , Compensação (%)\nOffset Angle Rays Layer 1 , Camada 1 de Raios de Ângulo de Compensação\nOffset Angle Rays Layer 2 , Camada 2 de Raios de Ângulo de Compensação\nOld Method - Slowest , Método antigo - mais lento\nOld Photograph , Fotografia antiga\nOld West , Velho Oeste\nOld-Movie Stripes , Listras de filmes antigos\nOldschool 8bits , 8bits da velha guarda\nON1 Photography (90) , ON1 Fotografia (90)\nOnce Upon a Time , Era uma vez\nOne Layer , Uma camada\nOne Layer (Horizontal) , Uma camada (Horizontal)\nOne Layer (Vertical) , Uma camada (Vertical)\nOne Layer per Single Color , Uma camada por cor única\nOne Layer per Single Region , Uma camada por região\nOne Thread , Um fio\nOnly Leafs , Apenas Folhas\nOnly Red , Apenas Vermelho\nOnly Red and Blue , Apenas Vermelho e Azul\nOp Art , Op Arte\nOpacity , Opacidade\nOpacity (%) , Opacidade (%)\nOpacity as Heightmap , Opacidade como Mapa de Altura\nOpacity Contours , Contornos de opacidade\nOpacity Factor , Factor de Opacidade\nOpacity Gain , Ganho de Opacidade\nOpacity Gamma , Opacidade Gama\nOpacity Threshold (%) , Limiar de Opacidade (%)\nOpaque Pixels , Pixels opacos\nOpaque Regions on Top Layer , Regiões opacas na camada superior\nOpaque Skin , Pele opaca\nOpen Interactive Preview , Pré-visualização interactiva aberta\nOpening , Abertura\nOperation Yellow , Operação Amarelo\nOperator , Operador\nOpposing , Em oposição a\nOptimized Lateral Inhibition , Inibição lateral optimizada\nOrange Tone , Tom de Laranja\nOrange Underexposed , Laranja Subexposta\nOranges , Laranjas\nOrder , Encomenda\nOrder By , Encomendar por\nOrientation , Orientação\nOrientation Coherence , Coerência da orientação\nOrientation Only , Apenas orientação\nOrientations , Orientações\nOriginal - (Opening + Closing)/2 , Original - (Abertura + Encerramento)/2\nOriginal - Erosion , Original - Erosão\nOriginal - Opening , Original - Abertura\nOrthogonal Radius , Raio Ortogonal\nOthers (69) , Outros (69)\nOuline Color , Cor Oulina\nOuter , Exterior\nOuter Fading , Desvanecimento exterior\nOuter Length , Comprimento exterior\nOuter Radius , Raio exterior\nOutline , Esboço\nOutline (%) , Esboço (%)\nOutline Color , Cor do esboço\nOutline Contrast , Contraste Esboço\nOutline Opacity , Esboço Opacidade\nOutline Size , Tamanho do esboço\nOutline Smoothness , Esboço Suavidade\nOutline Thickness , Esboço Espessura\nOutlined , Em linhas gerais\nOutput , Saída\nOutput as Files , Saída como Ficheiros\nOutput as Frames , Saída como Armações\nOutput as Multiple Layers , Saída como Múltiplas Camadas\nOutput as Separate Layers , Saída como Camadas Separadas\nOutput Ascii File , Ficheiro de saída Ascii\nOutput Chroma NR , Chroma de saída NR\nOutput CLUT , Saída CLUT\nOutput CLUT Resolution , Resolução CLUT de saída\nOutput Coordinates File , Ficheiro de Coordenadas de Saída\nOutput Corresponding CLUT , Saída Correspondente CLUT\nOutput Directory , Directório de saída\nOutput Each Piece on a Different Layer , Saída de cada peça numa camada diferente\nOutput Filename , Nome do ficheiro de saída\nOutput Files , Ficheiros de saída\nOutput Folder , Pasta de saída\nOutput Format , Formato de saída\nOutput Frames , Quadros de saída\nOutput Height , Altura de saída\nOutput HTML File , Arquivo HTML de saída\nOutput Layers , Camadas de saída\nOutput Mode , Modo de saída\nOutput Multiple Layers , Saída Múltiplas camadas\nOutput Preset as a HaldCLUT Layer , Pré-definição de saída como camada HaldCLUT\nOutput Region Delimiters , Delimitadores da Região de Saída\nOutput Saturation , Saturação de saída\nOutput Sharpening , Afiação de saída\nOutput Stroke Layer On , Camada de saída do AVC ligado\nOutput to Folder , Saída para pasta\nOutput Type , Tipo de saída\nOutput Width , Largura de saída\nOutside , Fora\nOutside Color , Cor exterior\nOutward , Para o exterior\nOverall Blur , Desfoque geral\nOverall Contrast , Contraste global\nOverall Lightness , Leveza geral\nOverlap (%) , Sobreposição (%)\nOverlay , Sobreposição\nOversample , Excesso de amostra\nOvershoot , Ultrapassagem\nPack , Pacote\nPack Sprites , Pacote de Sprites\nPadding (px) , Acolchoamento (px)\nPaint , Tinta\nPaint Daub , Pintar Daub\nPaint Effect , Efeito de Pintura\nPaint Splat , Borrão de tinta\nPainter's Edge Protection Flow , Fluxo de protecção do bordo do pintor\nPainter's Smoothness , A suavidade do pintor\nPainter's Touch Sharpness , A nitidez do toque do pintor\nPainting , Pintura\nPainting Opacity , Opacidade de Pintura\nPaintstroke , Pincelada\nPaladin 1875 , Paladino 1875\nPaper Texture , Textura de papel\nParallel Processing , Processamento paralelo\nParrots , Papagaios\nPassing By , Passando por\nPastell Art , Arte em Pastel\nPatch Measure , Medida do Patch\nPatch Size , Tamanho do Patch\nPatch Size for Analysis , Tamanho do Patch para Análise\nPatch Size for Synthesis , Tamanho do Patch para Síntese\nPatch Size for Synthesis (Final) , Tamanho do Patch para Síntese (Final)\nPatch Smoothness , Patch Suavidade\nPatch Variance , Variação do Patch\nPattern , Padrão\nPattern Angle , Ângulo do padrão\nPattern Height , Altura do Padrão\nPattern Type , Tipo de Padrão\nPattern Variation 1 , Variação do Padrão 1\nPattern Variation 2 , Variação do Padrão 2\nPattern Variation 3 , Variação do Padrão 3\nPattern Weight , Peso Padrão\nPattern Width , Largura do padrão\nPaw , Pata\nPCA Transfer , Transferência PCA\nPea Soup , Sopa de ervilha\nPen Drawing , Desenho de canetas\nPenalize Patch Repetitions , Penalizar as repetições de Patch\nPencil , Lápis\nPencil Amplitude , Amplitude do lápis\nPencil Portrait , Retrato a lápis\nPencil Size , Tamanho do lápis\nPencil Smoother Edge Protection , Protecção da borda do lápis mais liso\nPencil Smoother Sharpness , Lápis mais suave afiado\nPencil Smoother Smoothness , Lápis mais suave Suavidade\nPencil Type , Tipo de lápis\nPencils , Lápis\nPentagon , Pentágono\nPercent of Image Half-Hypotenuse (%) , Porcentagem de imagem Meia-hipotenusa (%)\nPeriodic , Periódico\nPeriodic Dots , Pontos Periódicos\nPeriodicity , Periodicidade\nPerserve Luminance , Luminância de Perserva\nPerspective , Perspectiva\nPetals , Pétalas\nPhase , Fase\nPhone , Telefone\nPhotoComix Preset , Pré-definição PhotoComix\nPhotoillustration , Fotoilustração\nPicasso: Seated Woman , Picasso: Mulher sentada\nPicasso: The Reservoir - Horta De Ebro , Picasso: O Reservatório - Horta De Ebro\nPiece Complexity , Complexidade da peça\nPiece Size (px) , Tamanho da peça (px)\nPin Light , Luz de alfinete\nPink Fade , Desbotamento cor-de-rosa\nPixel Values , Valores Pixel\nPlacement , Colocação\nPlaid , Placa\nPlane , Avião\nPlasma Effect , Efeito Plasma\nPlot Type , Tipo de Lote\nPoint #0 , Ponto #0\nPoint #1 , Ponto #1\nPoint #2 , Ponto #2\nPoint #3 , Ponto #3\nPoint 1 , Ponto 1\nPoint 2 , Ponto 2\nPoints , Pontos\nPolar Transform , Transformação polar\nPolaroid 665 Negative , Polaroid 665 Negativo\nPolaroid 665 Negative + , Polaroid 665 Negativo +\nPolaroid 665 Negative - , Polaroid 665 Negativo -\nPolaroid 665 Negative HC , Polaroid 665 HC Negativo\nPolaroid 669 +++ , Polaroid 669 ++++\nPolaroid 669 Cold , Polaroid 669 Frio\nPolaroid 669 Cold + , Polaroid 669 Frio +\nPolaroid 690 Cold , Polaroid 690 Frio\nPolaroid PX-100UV+ Cold , Polaroid PX-100UV+ Frio\nPolaroid PX-100UV+ Cold + , Polaroid PX-100UV+ Frio +\nPolaroid PX-100UV+ Cold ++ , Polaroid PX-100UV+ Frio ++\nPolaroid PX-100UV+ Cold +++ , Polaroid PX-100UV+ Frio ++++\nPolaroid PX-100UV+ Warm , Polaroid PX-100UV+ Quente\nPolaroid PX-100UV+ Warm + , Polaroid PX-100UV+ Quente +\nPolaroid PX-100UV+ Warm ++ , Polaroid PX-100UV+ Quente ++\nPolaroid PX-100UV+ Warm +++ , Polaroid PX-100UV+ Quente ++++\nPolaroid PX-100UV+ Warm - , Polaroid PX-100UV+ Quente -\nPolaroid PX-680 Cold , Polaroid PX-680 Frio\nPolaroid PX-680 Warm + , Polaroid PX-680 Quente +\nPolaroid PX-680 Warm ++ , Polaroid PX-680 Quente ++\nPolaroid PX-70 +++ , Polaroid PX-70 ++++\nPolaroid PX-70 Warm + , Polaroid PX-70 Quente +\nPolaroid Time Zero (Expired) , Polaroid Time Zero (Expirado)\nPolaroid Time Zero (Expired) + , Polaroid Time Zero (Expirado) +\nPolaroid Time Zero (Expired) ++ , Polaroid Time Zero (Expirado) ++\nPolaroid Time Zero (Expired) - , Polaroid Time Zero (Expirado) -\nPolaroid Time Zero (Expired) -- , Polaroid Time Zero (Expirado) --\nPolaroid Time Zero (Expired) --- , Polaroid Time Zero (Expirado) ---\nPolaroid Time Zero (Expired) Cold , Polaroid Time Zero (Expirado) Frio\nPolaroid Time Zero (Expired) Cold - , Polaroid Time Zero (Expirado) Cold -\nPolaroid Time Zero (Expired) Cold -- , Polaroid Time Zero (Expirado) Cold --\nPolaroid Time Zero (Expired) Cold --- , Polaroid Time Zero (Expirado) Cold ---\nPole Lat , Pólo Lat\nPole Long , Pólo Longo\nPole Rotation , Rotação do Pólo\nPolka Dots , Pontos de Polka\nPollock: Convergence , Pollock: Convergência\nPollock: Summertime Number 9A , Pollock: Verão Número 9A\nPolygonize [Delaunay] , Poligonizar [Delaunay]\nPolygonize [Energy] , Poligonizar [Energia]\nPop Shadows , Sombras Pop\nPortrait , Retrato\nPortrait Retouching , Retoque de Retratos\nPortrait-1 , Retrato-1\nPortrait-2 , Retrato-2\nPortrait-3 , Retrato-3\nPortrait-4 , Retrato-4\nPortrait-5 , Retrato-5\nPortrait-6 , Retrato-6\nPortrait-7 , Retrato-7\nPortrait-8 , Retrato-8\nPortrait-9 , Retrato-9\nPortrait0 , Retrato0\nPortrait1 , Retrato1\nPortrait10 , Retrato10\nPortrait2 , Retrato2\nPortrait3 , Retrato3\nPortrait4 , Retrato4\nPortrait5 , Retrato5\nPortrait6 , Retrato6\nPortrait7 , Retrato7\nPortrait8 , Retrato8\nPortrait9 , Retrato9\nPosition , Posição\nPosition X (%) , Posição X (%)\nPosition X Origin (%) , Posição X Origem (%)\nPosition Y (%) , Posição Y (%)\nPosition Y Origin (%) , Posição Y Origem (%)\nPositive , Positivo\nPost-Gamma , Pós-Gamma\nPost-Normalize , Pós-Normalização\nPost-Process , Pós-Processo\nPoster Edges , Pôsteres\nPosterization Antialiasing , Posterização Antialiasing\nPosterization Level , Nível de Posterização\nPosterized Dithering , Ditadura Posterizada\nPower , Energia\nPre-Defined , Pré-definido\nPre-Defined Colormap , Colormap Pré-Definido\nPre-Gamma , Pré-Gamma\nPre-Normalize , Pré-Normalizar\nPre-Normalize Image , Pré-Normalizar imagem\nPre-Process , Pré-Processo\nPrecision , Precisão\nPrecision (%) , Precisão (%)\nPreliminary Surface Shift , Desvio de superfície preliminar\nPreliminary X-Axis Scaling , Escala Preliminar do Eixo X\nPreliminary Y-Axis Scaling , Escala Preliminar do Eixo Y\nPreprocessor Power , Poder do pré-processador\nPreprocessor Radius , Raio do pré-processador\nPreserve Canvas for Post Bump Mapping , Conservar Tela para Cartografia de Bossas\nPreserve Image Dimension , Preservar a dimensão da imagem\nPreserve Initial Brightness , Preservar o Brilho Inicial\nPreset , Predefinição\nPreview , Pré-visualização\nPreview All Outputs , Pré-visualização de todas as saídas\nPreview Bands , Bandas de pré-visualização\nPreview Brush , Escova de pré-visualização\nPreview Data , Pré-visualização de dados\nPreview Detected Shapes , Pré-visualização de Formas Detectadas\nPreview Frame Selection , Pré-visualização da selecção da moldura\nPreview Gradient , Pré-visualização Gradiente\nPreview Grain Alone , Pré-visualização Grão Sozinho\nPreview Grid , Grelha de pré-visualização\nPreview Guides , Guias de pré-visualização\nPreview Mapping , Pré-visualização de mapas\nPreview Mask , Máscara de pré-visualização\nPreview Only Shadow , Pré-visualizar apenas Sombra\nPreview Opacity (%) , Pré-visualização Opacidade (%)\nPreview Original , Pré-visualização Original\nPreview Precision , Pré-visualização Precisão\nPreview Progress (%) , Pré-visualização do progresso (%)\nPreview Progression While Running , Pré-visualização Progressão Durante a Corrida\nPreview Ref Point , Ponto de Reflexão Preview\nPreview Reference Circle , Prever Círculo de Referência\nPreview Selection , Pré-visualização da selecção\nPreview Shape , Pré-visualização da forma\nPreview Shows , Anteprojectos\nPreview Subsampling , Pré-visualização Subamostragem\nPreview Time , Tempo de pré-visualização\nPreview Tones Map , Mapa de Tons de Pré-visualização\nPreview Type , Tipo de pré-visualização\nPreview Without Alpha , Pré-visualização sem Alfa\nPrimary Angle , Ângulo primário\nPrimary Color , Cor primária\nPrimary Factor , Factor principal\nPrimary Gamma , Gama primária\nPrimary Radius , Raio primário\nPrimary Shift , Turno primário\nPrimary Twist , Torcida Primária\nPrint Adjustment Marks , Marcas de ajuste de impressão\nPrint Films (12) , Filmes de impressão (12)\nPrint Frame Numbers , Números da moldura de impressão\nPrint Size Unit , Unidade de tamanho de impressão\nPrint Size Width , Largura de tamanho de impressão\nPrivacy Notice , Nota de Privacidade\nPro Neg Hi , Pro Neg Olá\nProbability Map , Mapa de Probabilidade\nProcess As , Processo Como\nProcess by Blocs of Size , Processo por Blocos de Tamanho\nProcess Channels Individually , Canais de Processo Individualmente\nProcess Top Layer Only , Processar apenas a camada superior\nProcess Transparency , Transparência do processo\nProcessing Mode , Modo de processamento\nPropagation , Propagação\nProportion , Proporção\nProtanomaly , Protanomalia\nProtect Highlights 01 , Proteger Destaques 01\nPrussian Blue , Azul da Prússia\nPseudo-Gray Dithering , Pseudo-acinzentado Dithering\nPurple , Púrpura\nPurple11 (12) , Púrpura11 (12)\nPyramid , Pirâmide\nPyramid Processing , Processamento em pirâmide\nPythagoras Tree , Árvore Pitágoras\nQuadratic , Quadrático\nQuadtree Variations , Variações de Quadtree\nQuality , Qualidade\nQuality (%) , Qualidade (%)\nQuantize Colors , Quanze Colors\nQuasi-Gaussian , Quasi-Gaussiano\nQuick , Rápido\nQuick Copyright , Rápido Copyright\nQuick Enlarge , Ampliar rapidamente\nR/B Smoothness (Principal) , R/B Suavidade (Principal)\nR/B Smoothness (Secondary) , R/B Suavidade (Secundário)\nRadius (%) , Raio (%)\nRadius / Angle , Raio / Ângulo\nRadius [Manual] , Raio [Manual]\nRadius Cut , Corte de raio\nRadius Middle Circle , Círculo médio do raio\nRadius Outer Circle A (>0 W%) (<0 H%) , Raio Círculo Externo A (>0 W%) (<0 H%)\nRain & Snow , Chuva e Neve\nRainbow , Arco-íris\nRaindrops , Gotas de chuva\nRandom , Aleatório\nRandom [non-Transparent] , Aleatório [não transparente]\nRandom Angle , Ângulo aleatório\nRandom Color Ellipses , Elipses de Cor Aleatórias\nRandom Colors , Cores aleatórias\nRandom Seed , Semente Aleatória\nRandom Shade Stripes , Listras de Sombreamento Aleatórias\nRandomized , Randomizado\nRandomness , Aleatoriedade\nRange , Gama\nRatio , Rácio\nRaw , Bruto\nRays , Raios\nRays Colors AB , Raios Cores AB\nRays Colors ABC , Raios Cores ABC\nRays Colors ABCD , Raios Cores ABCD\nRays Colors ABCDE , Raios Cores ABCDE\nRays Colors ABCDEF , Raios Cores ABCDEF\nRays Colors ABCDEFG , Raios Cores ABCDEFG\nRebuild From Similar Blocs , Reconstruir a partir de Blocos semelhantes\nRecompose , Recompor\nReconstruct From Previous Frames , Reconstruir a partir de quadros anteriores\nRecover , Recuperar\nRecover Highlights , Recuperar Destaques\nRecover Shadows , Recuperar sombras\nRecovery , Recuperação\nRectangle , Rectângulo\nRecursion Depth , Profundidade de Recurssão\nRecursions , Recursões\nRecursive Median , Mediana recursiva\nRed , Vermelho\nRed - Green - Blue , Vermelho - Verde - Azul\nRed - Green - Blue - Alpha , Vermelho - Verde - Azul - Alfa\nRed Afternoon 01 , Tarde Vermelha 01\nRed Blue Yellow , Vermelho Azul Amarelo\nRed Chroma Factor , Factor Croma Vermelho\nRed Chroma Shift , Turno de croma vermelha\nRed Chroma Smoothness , Suavidade do Chroma Vermelho\nRed Chrominance , Crominância Vermelha\nRed Day 01 , Dia Vermelho 01\nRed Dream 01 , Sonho Vermelho 01\nRed Factor , Fator Vermelho\nRed Level , Nível Vermelho\nRed Rotations , Rotações vermelhas\nRed Shift , Turno Vermelho\nRed Smoothness , Suavidade vermelha\nRed Wavelength , Comprimento de onda vermelho\nRed-Eye Attenuation , Atenuação do Olho Vermelho\nRed-Green , VERMELHO-VERDE\nReds , Vermelhos\nReds Oranges Yellows , Laranjas Vermelhas Amarelas\nReduce Halos , Reduzir Halos\nReduce Noise , Reduzir o Ruído\nReduce RAM , Reduzir a RAM\nReduce Redness , Reduzir a Reduza\nReeve 38 , Reeveitar 38\nReference , Referência\nReference Angle (deg.) , Ângulo de referência (deg.)\nReference Color , Cor de referência\nReference Colors , Cores de referência\nReflect , Reflectir\nReflection , Reflexão\nRefraction , Refracção\nRegular Grid , Grelha regular\nRegularity , Regularidade\nRegularity (%) , Regularidade (%)\nRegularization , Regularização\nRegularization (%) , Regularização (%)\nRegularization Factor , Factor de regularização\nRegularization Iterations , Iterações de regularização\nReject , Rejeitar\nRejected Colors , Cores Rejeitadas\nRejected Mask , Máscara Rejeitada\nRelative Block Count , Contagem de blocos relativos\nRelative Size , Tamanho relativo\nRelative Warping , Empenos relativos\nRelease Notes , Notas de Lançamento\nRelief , Alívio\nRelief Amplitude , Amplitude de Alívio\nRelief Contrast , Contraste de alívio\nRelief Light , Luz de alívio\nRelief Size , Tamanho do alívio\nRelief Smoothness , Suavidade de alívio\nRemove Artifacts From Micro/Macro Detail , Remover artefactos do Micro/Macro Detail\nRemove Hot Pixels , Retirar Pixels Quentes\nRemove Tile , Remover Telha\nRender Multiple Frames , Renderização de Quadros Múltiplos\nRender on Dark Areas , Renderização em Áreas Escuras\nRender on White Areas , Renderização em Áreas Brancas\nRender Routine for Wiggle Animations , Rotina de Render para Animações Wiggle\nRendering , Renderização\nRendering Mode , Modo de rendição\nRepair Scanned Document , Documento digitalizado de reparação\nRepeat , Repita\nRepeat [Memory Consuming!] , Repita [Consumo de Memória!]\nRepeats , Repete\nReplace , Substituir\nReplace (Sharpest) , Substituir (Sharpest)\nReplace Layer with CLUT , Substituir Layer por CLUT\nReplace Source by Target , Substituir Fonte por Alvo\nReplace With White , Substituir por branco\nReplaced Color , Cor Substituída\nReplacement Color , Cor de substituição\nReptile , Réptil\nRescaling , Redimensionamento\nReset View , Repor Vista\nResize Image for Optimum Effect , Redimensionar imagem para um efeito óptimo\nResolution , Resolução\nResolution (%) , Resolução (%)\nResolution (px) , Resolução (px)\nRest 33 , Descanso 33\nResult Image , Imagem do resultado\nResult Type , Tipo de resultado\nRetouch Layer , Camada de retoque\nRetouched and Sharpened Areas , Áreas retocadas e afiadas\nRetouched Areas Only , Apenas áreas retocadas\nRetouched Image , Imagem retocada\nRetouched Image Basic , Imagem retocada Basic\nRetouched Image Final , Imagem retocada Final\nRetouching Style , Estilo de retoque\nRetro Brown 01 , Castanho Retro 01\nRetro Summer 3 , Retro Verão 3\nRetro Yellow 01 , Amarelo Retro 01\nReturn Scaling , Escala de retorno\nReverse Bits , Bits inversos\nReverse Bytes , Bytes inversos\nReverse Effect , Efeito inverso\nReverse Endianness , Endianismo inverso\nReverse Frame Stack , Pilha de armação invertida\nReverse Gradient , Gradiente Inverso\nReverse Mod , Modo inverso\nReverse Motion , Movimento inverso\nReverse Order , Ordem inversa\nReverse Pow , Pó invertido\nReversing , Invertendo\nRevert Layer Order , Inverter ordem de camadas\nRevert Layers , Inverter camadas\nRGB [All] , RGB [Todos]\nRGB [Blue] , RGB [Azul]\nRGB [Green] , RGB [Verde]\nRGB [red] , RGB [vermelho]\nRGB Image + Binary Mask (2 Layers) , Imagem RGB + Máscara Binária (2 Camadas)\nRGB Quantization , Quantificação RGB\nRGB Tone , Tom RGB\nRGBA [All] , RGBA [Todos]\nRGBA [Alpha] , RGBA [Alfa]\nRGBA Foreground + Background (2 Layers) , RGBA Primeiro plano + Fundo (2 Camadas)\nRGBA Image (Full-Transparency / 1 Layer) , Imagem RGBA (Esparência total / 1 camada)\nRGBA Image (Updatable / 1 Layer) , Imagem RGBA (Actualizável / 1 Camada)\nRice , Arroz\nRight , Certo\nRight Diagonal  Foreground , Primeiro plano diagonal direito\nRight Diagonal Foreground , Primeiro plano diagonal direito\nRight Eye View , Vista do olho direito\nRight Foreground , Primeiro plano direito\nRight Position , Posição correcta\nRight Side Orientation , Orientação para o lado direito\nRight Slope , Encosta direita\nRight Stream Only , Apenas o fluxo de direita\nRigid , Rígido\nRoddy (by Mahvin) , Roddy (por Mahvin)\nRodilius [Animated] , Rodilius [Animado]\nRooster , Galo\nRotate , Rodar\nRotate (muted) , Rodar (silenciado)\nRotate (vibrant) , Rodar (vibrante)\nRotate 180 Deg. , Rodar 180 graus.\nRotate 270 Deg. , Rodar 270 graus.\nRotate 90 Deg. , Rodar 90 graus.\nRotate Hue Bands , Rodar as Bandas de Matizes\nRotate Tree , Rodar árvore\nRotated , Rodado\nRotated (crush) , Rodado (esmagar)\nRotations , Rotações\nRound , Ronda\nRoundness , Arredondamento\nRow by Row , Fila a fila\nRYB [All] , RYB [Todos]\nRYB [Blue] , RYB [Azul]\nRYB [Red] , RYB [Vermelho]\nRYB [Yellow] , RYB [Amarelo] [Yellow\nS-Curve Contrast , Contraste S-Curva\nSalt and Pepper , Sal e Pimenta\nSame as Input , O mesmo que Input\nSame Axis , O mesmo eixo\nSample Image , Imagem de amostra\nSampling , Amostragem\nSat Bottom , Fundo do Sábado\nSat Range , Gama Sat\nSatin , Cetim\nSaturated Blue , Azul Saturado\nSaturation , Saturação\nSaturation (%) , Saturação (%)\nSaturation Channel Gamma , Canal de Saturação Gama\nSaturation Correction , Correcção de Saturação\nSaturation EQ , EQ de Saturação\nSaturation Factor , Factor de Saturação\nSaturation Offset , Compensação de Saturação\nSaturation Shift , Turno de Saturação\nSaturation Smoothness , Saturação Suavidade\nSave CLUT as .Cube or .Png File , Guardar CLUT como ficheiro .Cube ou .Png\nSave Gradient As , Salvar Gradiente Como\nSaving Private Damon , Salvar o Damon Privado\nScale , Balança\nScale (%) , Escala (%)\nScale 1 , Escala 1\nScale 2 , Escala 2\nScale CMYK , Balança CMYK\nScale Factor , Factor de Escala\nScale Output , Produção em escala\nScale Plasma , Balança Plasma\nScale RGB , Balança RGB\nScale Style to Fit Target Resolution , Estilo de Escala para Ajustar a Resolução do Alvo\nScale Variations , Variações de escala\nScaled , Escala\nScales , Balança\nScaling Factor , Factor de Escala\nScene Selector , Selector de cenas\nScience Fiction , Ficção Científica\nScreen , Ecrã\nScreen Border , Fronteira do ecrã\nSeamless Deco , Deco sem costura\nSeamless Turbulence , Turbulência sem costura\nSecond Color , Segunda cor\nSecond Offset , Segunda Compensação\nSecond Radius , Segundo Raio\nSecond Size , Segundo tamanho\nSecondary Color , Cor secundária\nSecondary Factor , Factor secundário\nSecondary Gamma , Gama secundária\nSecondary Radius , Raio secundário\nSecondary Shift , Turno Secundário\nSecondary Twist , Torcida Secundária\nSectors , Sectores\nSeed , Semente\nSegment Max Length (px) , Comprimento Máximo do Segmento (px)\nSegmentation , Segmentação\nSegmentation Edge Threshold , Limiar de Segmentação\nSegmentation Smoothness , Suavidade de segmentação\nSegments , Segmentos\nSegments Strength , Força dos Segmentos\nSelect By , Seleccione por\nSelect-Replace Color , Seleccionar-Replace Color\nSelected Color , Cor seleccionada\nSelected Colors , Cores seleccionadas\nSelected Frame , Moldura Seleccionada\nSelected Mask , Máscara seleccionada\nSelection , Selecção\nSelective Desaturation , Desaturação selectiva\nSelective Gaussian , Gaussiano selectivo\nSelf , Auto\nSelf Glitching , Auto-compulsões\nSelf Image , Auto-imagem\nSensitivity , Sensibilidade\nSepia , Sépia\nSequence X4 , Sequência X4\nSequence X6 , Sequência X6\nSequence X8 , Sequência X8\nSerenity , Serenidade\nSerial Number , Número de série\nSeringe 4 , Seringa 4\nSerpent , Serpente\nSet Aspect Only , Aspecto do conjunto apenas\nSet Frame Format , Formato da moldura definida\nSeven Layers , Sete Camadas\nSeventies Magazine , Revista dos anos setenta\nShade , Sombra\nShade Angle , Ângulo de Sombra\nShade Back to First Color , Sombra de volta à primeira cor\nShade Bobs , Sombra de Bobs\nShade Strength , Força da sombra\nShading , Sombreamento\nShading (%) , Sombreamento (%)\nShadow , Sombra\nShadow Contrast , Contraste de sombras\nShadow Intensity , Intensidade da Sombra\nShadow King 39 , Rei das Sombras 39\nShadow Offset X , Offset de Sombra X\nShadow Offset Y , Offset de Sombra Y\nShadow Patch , Mancha de Sombra\nShadow Size , Tamanho da Sombra\nShadow Smoothness , Sombra Suavidade\nShadows , Sombras\nShadows Abstraction , Abstracção das Sombras\nShadows Brightness , Brilho das Sombras\nShadows Color Intensity , Intensidade da cor das sombras\nShadows Lightness , Sombras Ligeireza\nShadows Selection , Selecção das sombras\nShadows Threshold , Limiar das Sombras\nShadows Zone , Zona das Sombras\nShape , Forma\nShape Area Max , Área de Forma Máxima\nShape Area Max0 , Área de Forma Max0\nShape Area Min , Área de Forma Min\nShape Area Min0 , Área de Forma Min0\nShape Average , Forma Média\nShape Average0 , Forma Média0\nShape Max , Forma Max\nShape Max0 , Forma Max0\nShape Median , Mediana da forma\nShape Median0 , Forma Mediana0\nShape Min , Forma Min\nShape Min0 , Forma Min0\nShapeaverage , Média da forma\nShapeism , Forma\nShapes , Formas\nSharp Abstract , Abstrato nítido\nSharpen , Afiar\nSharpen [Deblur] , Afiar [Deblur]\nSharpen [Gold-Meinel] , Afiar [Gold-Meinel]\nSharpen [Gradient] , Afiar [Gradiente]\nSharpen [Hessian] , Afiar [Hessian]\nSharpen [Inverse Diffusion] , Afiar [Difusão Inversa]\nSharpen [Multiscale] , Afiar [Multiscale]\nSharpen [Octave Sharpening] , Afiar [Afiação por oitava]\nSharpen [Richardson-Lucy] , Afiar [Richardson-Lucy]\nSharpen [Shock Filters] , Afiar [Filtros de Choque]\nSharpen [Texture] , Afiar [Textura]\nSharpen [Tones] , Afiar [Tons]\nSharpen [Unsharp Mask] , Afiar [Unsharp Mask]\nSharpen [Whiten] , Afiar [Whiten]\nSharpen Details in Preview , Afiar Detalhes na Pré-visualização\nSharpen Edges Only , Afiar apenas as bordas\nSharpen Object , Afiar Objecto\nSharpen Radius , Afiar Raio\nSharpen Shades , Afiar sombras\nSharpened Areas Only , Apenas Áreas Afiadas\nSharpening , Afiação\nSharpening Layer , Camada de afiação\nSharpening Radius , Raio de afiação\nSharpening Strength , Força de afiação\nSharpening Type , Tipo de afiação\nSharpness , Nitidez\nShift Linear Interpolation? , Interpolação Linear por Turno?\nShift Point , Ponto de Turno\nShift X , Turno X\nShift Y , Turno Y\nShine , Brilho\nShininess , Brilho\nShivers , Arrepios\nShock Waves , Ondas de Choque\nShopping Cart , Carrinho de compras\nShow Both Poles , Mostrar ambos os pólos\nShow Difference , Mostrar a diferença\nShow Frame , Moldura de exposição\nShow Grid , Mostrar Grelha\nShow Watershed , Mostrar Bacia Hidrográfica\nShrink , Encolher\nShuffle Pieces , Peças embaralhadas\nSide by Side , Lado a Lado\nSierpinski Triangle , Triângulo de Sierpinski\nSilver , Prata\nSimilarity Space , Espaço de semelhança\nSimple Local Contrast , Contraste local simples\nSimple Noise Canvas , Tela de Ruído Simples\nSimulate Film , Simular filme\nSin(z) , Pecado(z)\nSingle (Merged) , Único (fundido)\nSingle Custom Depth Map , Mapa de Profundidade Personalizado Único\nSingle Image Stereogram , Estereograma de imagem única\nSingle Layer , Camada única\nSingle Opaque Shapes Over Transp. BG , Formas opacas únicas sobre o transporte. BG\nSix Layers , Seis camadas\nSixteen Threads , Dezasseis fios\nSize , Tamanho\nSize (%) , Tamanho (%)\nSize for Bright Tones , Tamanho para Tons Brilhantes\nSize for Dark Tones , Tamanho para Tons Escuros\nSize of Frame Numbers (%) , Tamanho dos Números de Moldura (%)\nSize Variance , Variação de tamanho\nSize-1 , Tamanho 1\nSize-2 , Tamanho 2\nSize-3 , Tamanho 3\nSkeleton , Esqueleto\nSkin Estimation , Estimativa da pele\nSkin Mask , Máscara de pele\nSkin Tone Colors , Cores de Tom de Pele\nSkin Tone Mask , Máscara de Tom de Pele\nSkin Tone Protection , Protecção de Tom de Pele\nSkip All Other Steps , Saltar Todos os Outros Passos\nSkip Finest Scales , Saltar Balanças Finest\nSkip Others Steps , Saltar Outros Passos\nSkip This Step , Saltar esta etapa\nSkip to Use the Mask to Boost , Saltar para Usar a Máscara para Impulsionar\nSlice Luminosity , Luminosidade em fatias\nSlide [Color] (26) , Deslize [Cor] (26)\nSlow &#40;Accurate&#41; , Lento (Preciso)\nSlow Recovery , Recuperação lenta\nSmall , Pequeno\nSmall (Faster) , Pequeno (Mais rápido)\nSmallHD Movie Look (7) , Olhar SmallHD Movie (7)\nSmart , Inteligente\nSmart Contrast , Contraste Inteligente\nSmart Threshold , Limiar Inteligente\nSmooth [Anisotropic] , Liso [Anisotrópico]\nSmooth [Antialias] , Liso [Antialias]\nSmooth [Bilateral] , Suave [Bilateral]\nSmooth [Block PCA] , Suave [Bloco PCA]\nSmooth [Diffusion] , Suave [Difusão]\nSmooth [Geometric-Median] , Suave [Geométrico-Mediano]\nSmooth [Guided] , Liso [Guiado]\nSmooth [IUWT] , Suave [IUWT]\nSmooth [Mean-Curvature] , Suave [Média-Curvatura]\nSmooth [Median] , Liso [Mediano]\nSmooth [NL-Means] , Suave [NL-Means]\nSmooth [Patch-Based] , Liso [Baseado em Patch]\nSmooth [Patch-PCA] , Suave [Patch-PCA]\nSmooth [Perona-Malik] , Liso [Perona-Malik]\nSmooth [Selective Gaussian] , Liso [Gaussiano selectivo]\nSmooth [Skin] , Liso [Pele]\nSmooth [Thin Brush] , Liso [Pincel Fino]\nSmooth [Total Variation] , Suave [Variação Total]\nSmooth [Wavelets] , Liso [Wavelets]\nSmooth [Wiener] , Suave [Wiener]\nSmooth Abstract , Abstrato Liso\nSmooth Amount , Montante Suave\nSmooth Clear , Lisa e clara\nSmooth Colors , Cores suaves\nSmooth Crome-Ish , Crome-Ish liso\nSmooth Dark , Liso Escuro\nSmooth Fade , Desvanecer suavemente\nSmooth Green Orange , Laranja Verde Liso\nSmooth Light , Luz suave\nSmooth Looping , Laço liso\nSmooth Only , Apenas suaves\nSmooth Sailing , Vela suave\nSmooth Teal Orange , Laranja de Teal Lisa\nSmoothen Background Reconstruction , Suavizar a Reconstrução do Fundo\nSmoother Edge Protection , Protecção de arestas mais suaves\nSmoother Sharpness , Nitidez mais suave\nSmoother Softness , Suavidade mais suave\nSmoothing , Alisamento\nSmoothing Style , Estilo suavizante\nSmoothing Type , Tipo de alisamento\nSmoothness , Alisamento\nSmoothness (%) , Suavidade (%)\nSmoothness (px) , Suavidade (px)\nSmoothness Shadow , Sombra suavidade\nSmoothness Type , Tipo de alisamento\nSnowflake , Floco de Neve\nSnowflake 2 , Floco de Neve 2\nSnowflake Recursion , Recurssão do Floco de Neve\nSoft , Suave\nSoft  Light , Luz suave\nSoft Burn , Queimadura suave\nSoft Fade , Desbotamento suave\nSoft Glow , Brilho suave\nSoft Glow [Animated] , Brilho suave [Animado]\nSoft Light , Luz suave\nSoft Random Shades , Sombras suaves e aleatórias\nSoft Warming , Aquecimento suave\nSoften , Amaciar\nSoften All Channels , Amaciar todos os Canais\nSoften Guide , Guia de suavização\nSoftlight , Luz suave\nSolarize Color , Solarize Cor\nSolarized Color2 , Cor Solarizada2\nSolidify , Solidificar\nSolve Maze , Resolver o Labirinto\nSome , Alguns\nSome Blue , Algum Azul\nSome Cyan , Algum Ciano\nSome Green , Alguns verdes\nSome Key , Algumas chaves\nSome Magenta , Alguns Magenta\nSome Red , Algum vermelho\nSome Yellow , Algum Amarelo\nSort Colors , Classificar Cores\nSorting Criterion , Critério de ordenação\nSource (%) , Fonte (%)\nSource Color #1 , Cor da Fonte #1\nSource Color #10 , Cor da Fonte #10\nSource Color #11 , Cor da Fonte #11\nSource Color #12 , Cor da Fonte #12\nSource Color #13 , Cor da Fonte #13\nSource Color #14 , Cor da Fonte #14\nSource Color #15 , Cor da Fonte #15\nSource Color #16 , Cor da Fonte #16\nSource Color #17 , Cor da Fonte #17\nSource Color #18 , Cor da Fonte #18\nSource Color #19 , Cor da Fonte #19\nSource Color #2 , Cor da Fonte #2\nSource Color #20 , Cor da Fonte #20\nSource Color #21 , Cor da Fonte #21\nSource Color #22 , Cor da Fonte #22\nSource Color #23 , Cor da Fonte #23\nSource Color #24 , Cor da Fonte #24\nSource Color #3 , Cor da Fonte #3\nSource Color #4 , Cor da Fonte #4\nSource Color #5 , Cor da Fonte #5\nSource Color #6 , Cor da Fonte #6\nSource Color #7 , Cor da Fonte #7\nSource Color #8 , Cor da Fonte #8\nSource Color #9 , Cor da Fonte #9\nSource X-Tiles , Fonte X-Tiles\nSource Y-Tiles , Fonte Y-Tiles\nSpace , Espaço\nSpacing , Espaçamento\nSpan , Espanhol\nSpatial Bandwidth , Largura de banda espacial\nSpatial Metric , Métrica Espacial\nSpatial Overlap , Sobreposição espacial\nSpatial Precision , Precisão Espacial\nSpatial Radius , Raio Espacial\nSpatial Regularization , Regularização espacial\nSpatial Sampling , Amostragem espacial\nSpatial Scale , Escala espacial\nSpatial Tolerance , Tolerância Espacial\nSpatial Transition , Transição Espacial\nSpatial Variance , Variância Espacial\nSpecial Effects , Efeitos especiais\nSpecific Saturation , Saturação específica\nSpecify Different Output Size , Especificar tamanho de saída diferente\nSpecify HaldCLUT As , Especificar HaldCLUT como\nSpecular , Especular\nSpecular (%) , Especular (%)\nSpecular Centering , Centralização Especular\nSpecular Intensity , Intensidade especular\nSpecular Light , Luz Especular\nSpecular Lightness , Ligeireza especular\nSpecular Shininess , Brilho Especular\nSpecular Size , Tamanho especular\nSpeed , Velocidade\nSphere , Esfera\nSpherize , Esferizar\nSpiral , Espiral\nSpiral RGB , Espiral RGB\nSpline B1 , Estribo B1\nSpline Editor , Editor Spline\nSpline Max Angle (deg) , Ângulo Spline Max (deg)\nSpline Roundness , Arredondamento da linha de estrias\nSplines , Estrias\nSplit Base and Detail Output , Base Dividida e Saída Detalhada\nSplit Brightness / Colors , Brilho Dividido / Cores\nSplit Details [Alpha] , Detalhes da divisão [Alpha]\nSplit Details [Gaussian] , Detalhes da divisão [Gaussiano]\nSplit Details [Wavelets] , Detalhes da divisão [Wavelets]\nSponge , Esponja\nSpread , Espalhar\nSpread Amount , Montante de difusão\nSpread Angles , Ângulos de propagação\nSpread Noise Amount , Valor do Ruído de Espalhamento\nSpreading , Divulgação\nSpring Morning , Manhã de Primavera\nSprocket 231 , Roda dentada 231\nSpy 29 , Espião 29\nSquare , Praça\nSquare (Inv.) , Quadrado (Inv.)\nSquare 1 , Quadrado 1\nSquare 2 , Quadrado 2\nSquare to Circle , Quadrado a Círculo\nSquares , Praças\nSquares (Outline) , Esquadros (Esboço)\nSRGB Conversion , Conversão de SRGB\nStabilizer , Estabilizador\nStained Glass , Vidro Manchado\nStamp , Carimbo\nStandard , Norma\nStandard (256) , Padrão (256)\nStandard [No Scan] , Padrão [Sem Scan]\nStandard Deviation , Desvio padrão\nStar , Estrela\nStar: -5*(z^3/3-Z/4)/2 , Estrela: -5*(z^3/3-Z/4)/2\nStars , Estrelas\nStars (Outline) , Estrelas (Esboço)\nStart Angle , Ângulo de início\nStart Color , Iniciar Cor\nStart Frame Number , Número da moldura inicial\nStart of Mid-Tones , Início dos meios-tons\nStarting Angle , Ângulo inicial\nStarting Color , Cor inicial\nStarting Feathering , Iniciação à plumagem\nStarting Frame , Moldura inicial\nStarting Level , Nível inicial\nStarting Pattern , Padrão de início\nStarting Point , Ponto de partida\nStarting Point (%) , Ponto de partida (%)\nStarting Scale (%) , Escala inicial (%)\nStarting Value , Valor inicial\nStationary Frames , Molduras estacionárias\nStd Angle (deg.) , Ângulo Std (deg.)\nStd Length Factor (%) , Factor de Comprimento Std (%)\nStd Thickness Factor (%) , Factor de Espessura Std (%)\nStencil Type , Tipo Stencil\nStep , Etapa\nStep (%) , Etapa (%)\nSteps , Passos\nStereo Image , Imagem Estéreo\nStereo Window Position , Posição da janela estéreo\nStereographic Projection , Projecção Estereográfica\nStereoscopic Image Alignment , Alinhamento Estereoscópico de Imagem\nStereoscopic Window Position , Posição da janela estereoscópica\nStraight , Em linha recta\nStrands , Cordões\nStreet , Rua\nStrength , Força\nStrength (%) , Força (%)\nStrength Effect , Efeito de Força\nStrength Highlights , Destaques da força\nStrength Midtones , Pontos médios de força\nStrength Shadows , Sombras de Força\nStretch , Esticar\nStretch Colors , Cores de esticar\nStretch Contrast , Contraste Esticado\nStretch Factor , Factor de alongamento\nStrip , Tira\nStripe Orientation , Orientação das riscas\nStroke Angle , Ângulo de AVC\nStroke Length , Comprimento do AVC\nStroke Strength , Resistência ao AVC\nStrong , Forte\nStructure Smoothness , Suavidade de estrutura\nStudio , Estúdio\nStudio Skin Tone Shaper , Modelador de Tom de Pele de Estúdio\nStyle , Estilo\nStyle Variations , Variações de Estilo\nSubdivisions , Subdivisões\nSubpixel Interpolation , Interpolação Subpixel\nSubpixel Level , Nível subpixel\nSubsampling (%) , Subamostragem (%)\nSubtle Blue , Azul subtil\nSubtle Green , Verde subtil\nSubtle Yellow , Amarelo subtil\nSubtract , Subtrair\nSubtractive , Subtractivo\nSummer , Verão\nSummer (alt) , Verão (alt)\nSunny (alt) , Ensolarado (alt)\nSunny (rich) , Ensolarado (rico)\nSunny (warm) , Ensolarado (quente)\nSuper Warm , Super Quente\nSuper Warm (rich) , Super Quente (rico)\nSuperformula , Superfórmula\nSuperimpose with Original? , Sobrepor com Original?\nSurface Disturbance , Perturbação da Superfície\nSurface Disturbance Multiplier , Multiplicador de Perturbações de Superfície\nSwan , Cisne\nSwap Colors , Trocar as cores\nSwap Layers , Troca de camadas\nSwap Radius / Angle , Trocar Raio / Ângulo\nSwap Sides , Lados de troca\nSweet Bubblegum , Pastilha elástica doce\nSweet Gelatto , Gelatto doce\nSymmetric 2D Shape , Forma 2D simétrica\nSymmetry , Simetria\nSymmetry Sides , Lados de simetria\nSynthesis Scale , Escala de Síntese\nTangent Radius , Raio Tangente\nTarget Color #1 , Cor Alvo #1\nTarget Color #10 , Cor Alvo #10\nTarget Color #11 , Cor Alvo #11\nTarget Color #12 , Cor Alvo #12\nTarget Color #13 , Cor Alvo #13\nTarget Color #14 , Cor Alvo #14\nTarget Color #15 , Cor Alvo #15\nTarget Color #16 , Cor Alvo #16\nTarget Color #17 , Cor Alvo #17\nTarget Color #18 , Cor Alvo #18\nTarget Color #19 , Cor Alvo #19\nTarget Color #2 , Cor Alvo #2\nTarget Color #20 , Cor Alvo #20\nTarget Color #21 , Cor Alvo #21\nTarget Color #22 , Cor Alvo #22\nTarget Color #23 , Cor Alvo #23\nTarget Color #24 , Cor Alvo #24\nTarget Color #3 , Cor Alvo #3\nTarget Color #4 , Cor Alvo #4\nTarget Color #5 , Cor Alvo #5\nTarget Color #6 , Cor Alvo #6\nTarget Color #7 , Cor Alvo #7\nTarget Color #8 , Cor Alvo #8\nTarget Color #9 , Cor Alvo #9\nTeal Orange , Laranja de Teal\nTechnicalFX - Backlight Filter , TechnicalFX - Filtro de luz de fundo\nTemperature Balance , Balanço de temperatura\nTen Layers , Dez camadas\nTends to Be Square , Tende a ser quadrado\nTension Green 1 , Verde Tensão 1\nTension Green 2 , Verde Tensão 2\nTension Green 3 , Verde Tensão 3\nTension Green 4 , Verde Tensão 4\nTensor Smoothness , Suavidade do Tensor\nTertiary Factor , Factor terciário\nTertiary Gamma , Gama terciária\nTertiary Shift , Turno terciário\nTertiary Twist , Torcida Terciária\nText , Texto\nTexture , Textura\nTexture Enhance , Melhoria da textura\nTextured Glass , Vidro texturizado\nThe Game of Life , O Jogo da Vida\nThe Matrices , As Matrizes\nThickness , Espessura\nThickness (%) , Espessura (%)\nThickness (px) , Espessura (px)\nThickness Factor , Factor de Espessura\nThin Edges , Bordaduras Finas\nThin Separators , Separadores finos\nThinness , Magreza\nThinning , Desbaste\nThinning (Slow) , Desbaste (lento)\nThree Layers , Três camadas\nThreshold , Limiar\nThreshold (%) , Limiar (%)\nThreshold Etch , Limiar Etch\nThreshold High , Limiar Alto\nThreshold Low , Limiar Baixo\nThreshold Max , Limiar Máximo\nThreshold Mid , Limiar Médio\nThreshold On , Limiar On\nThumbnail Size , Tamanho da miniatura\nTiger , Tigre\nTile Poles , Postes de Azulejo\nTile Size , Tamanho do azulejo\nTileable Rotation , Rotação dos ladrilhos\nTiled Isolation , Isolamento de azulejos\nTiled Normalization , Normalização de azulejos\nTiled Parameterization , Parametrização de azulejos\nTiled Preview , Pré-visualização de azulejos\nTiled Random Shifts , Turnos aleatórios de azulejos\nTiled Rotation , Rotação do azulejo\nTiles , Azulejos\nTiles to Layers , Azulejos a camadas\nTime , Hora\nTime Step , Etapa temporal\nTimed Image , Imagem cronometrada\nTo Equirectangular , Para Equirectangular\nTo Nadir / Zenith , Para Nadir / Zenith\nToasted Garden , Jardim tostado\nToes , Dedos\nToggle to View Base Image , Alternar para Ver Imagem Base\nTolerance , Tolerância\nTolerance to Gaps , Tolerância a Lacunas\nTonal Bandwidth , Largura de banda tonal\nTone Blur , Borrão de Tom\nTone Enhance , Melhoria de Tom\nTone Gamma , Tom Gamma\nTone Mapping , Mapeamento de Tom\nTone Mapping (%) , Mapeamento de Tom (%)\nTone Mapping [Fast] , Mapeamento de Tom [Fast]\nTone Mapping Fast , Mapeamento de Tom Rápido\nTone Mapping Soft , Mapeamento de Tom Suave\nTone Presets , Presets de Tom\nTone Threshold , Limiar de Tom\nTones Range , Gama de Tons\nTones Smoothness , Suavidade dos tons\nTones to Layers , Tons a camadas\nTop , Início\nTop Layer , Camada superior\nTop Left , Superior esquerdo\nTop Right , Superior direita\nTop-Left Vertex (%) , Vértice superior-esquerdo (%)\nTop-Right Vertex (%) , Vértice Top-Right (%)\nTorus , Toro\nTotal Layers , Camadas totais\nTotal Variation , Variação Total\nTransfer Colors [Histogram] , Cores de Transferência [Histograma]\nTransfer Colors [Patch-Based] , Cores de Transferência [Baseado em Patch]\nTransfer Colors [PCA] , Cores de Transferência [PCA]\nTransfer Colors [Variational] , Cores de transferência [Variacional]\nTransform , Transformar\nTransition Map , Mapa de Transição\nTransition Shape , Forma de transição\nTransition Smoothness , Transição Suavidade\nTransmittance Map , Mapa de transmissão\nTransparency , Transparência\nTransparent , Transparente\nTransparent Background , Antecedentes Transparentes\nTransparent Black & White , Preto e Branco Transparente\nTransparent Color , Cor transparente\nTransparent on Black , Transparente sobre Preto\nTransparent on White , Transparente sobre Branco\nTransparent Skin , Pele Transparente\nTree , Árvore\nTrent 18 , Trento 18\nTriangle , Triângulo\nTriangles , Triângulos\nTriangles (Outline) , Triângulos (Esboço)\nTriangular Hb , Hb triangular\nTritanomaly , Tritanomalia\nTrue Colors 8 , Cores Verdadeiras 8\nTrunk Color , Cor do tronco\nTrunk Opacity (%) , Opacidade do tronco (%)\nTrunks , Troncos\nTulips , Túlipas\nTunnel , Túnel\nTurbulence , Turbulência\nTurbulence 2 , Turbulência 2\nTurbulent Halftone , Meio-tom turbulento\nTurn on Rotate and Twirl , Ligar Rotate e Twirl\nTwirl , Giro\nTwisted Rays , Raios torcidos\nTwo Layers , Duas camadas\nTwo Threads , Dois Fios\nTwo-By-Two , Dois a Dois\nType , Tipo\nType Snowflake , Tipo Floco de Neve\nUltra Water , Ultra Água\nUltraWarp++++ , UltraWarp+++++\nUnaligned Images , Imagens desalinhadas\nUndeniable , Indiscutível\nUndeniable 2 , Indiscutível 2\nUnderwater , Debaixo de água\nUndo Anaglyph , Desfazer Anaglifo\nUniform , Uniforme\nUnknown , Desconhecido\nUnpurple , Desenrolar\nUnsharp Mask , Máscara de Desatarraxar\nUnstrip , Desmarcar\nUp-Left , Para cima-esquerda\nUpper Layer Is the Top Layer for All Blends , A camada superior é a camada superior para todas as misturas\nUpper Side Orientation , Orientação lateral superior\nUppercase Letters , Cartas em maiúsculas\nUpscale [Diffusion] , Upscale [Difusão]\nUpscale [Scale2x] , Upscale [Escala2x]\nUrban Cowboy , Cowboy Urbano\nUse as Hue , Utilização como Tonalidade\nUse as Saturation , Utilização como Saturação\nUse Individual Depth Map , Usar o Mapa de Profundidade Individual\nUse Light , Use Luz\nUse Maximum Tones , Usar o Máximo de Tons\nUse Top Layer as a Priority Mask , Usar camada superior como Máscara Prioritária\nUser-Defined , Definido pelo utilizador\nUser-Defined (Bottom Layer) , Definido pelo utilizador (Camada inferior)\nUzbek Bukhara , Uzbeque Bukhara\nUzbek Marriage , Casamento Uzbeque\nUzbek Samarcande , Samarcande uzbeque\nV Cutoff , Corte em V\nVal Range , Gama Val\nValue , Valor\nValue Action , Acção de Valor\nValue Blending , Mistura de valores\nValue Bottom , Fundo de valor\nValue Correction , Correcção de valores\nValue Factor , Factor de Valor\nValue Normalization , Normalização de valores\nValue Offset , Compensação de valor\nValue Precision , Valor Precisão\nValue Range , Gama de valores\nValue Scale , Escala de valores\nValue Shift , Mudança de valor\nValue Smoothness , Valorizar a suavidade\nValue Top , Valor Topo\nValue Variance , Variação de valor\nValues , Valores\nVan Gogh: Almond Blossom , Van Gogh: Flor de Amêndoa\nVan Gogh: Irises , Van Gogh: Iris\nVan Gogh: The Starry Night , Van Gogh: A Noite Estrelada\nVan Gogh: Wheat Field with Crows , Van Gogh: Campo de Trigo com Corvos\nVariability , Variabilidade\nVariance , Variância\nVariation A , Variação A\nVariation B , Variação B\nVariation C , Variação C\nVector Painting , Pintura Vectorial\nVelocity , Velocidade\nVertex Type , Tipo de vértice\nVertical 1 Amount , Vertical 1 Quantia\nVertical 1 Length , Vertical 1 Comprimento\nVertical 2 Amount , Vertical 2 Quantia\nVertical 2 Length , Vertical 2 Comprimento\nVertical Amount , Montante Vertical\nVertical Array , Matriz Vertical\nVertical Blur , Desfoque Vertical\nVertical Length , Comprimento Vertical\nVertical Size (%) , Tamanho Vertical (%)\nVertical Stripes , Listras Verticais\nVertical Tiles , Ladrilhos Verticais\nVery Course 5 , Muito Curso 5\nVery Fine , Muito Bem\nVery High , Muito Alta\nVery High (Even Slower) , Muito alto (ainda mais lento)\nVery Warm Greenish , Muito Quente Esverdeado\nVibrant , Vibrante\nVibrant (alien) , Vibrante (extraterrestre)\nVibrant (contrast) , Vibrante (contraste)\nVibrant (crome-Ish) , Vibrante (crome-Ish)\nVictory , Vitória\nView Outlines Only , Ver apenas Esboços\nView Resolution , Ver Resolução\nVignette Contrast , Contraste de vinhetas\nVignette Min Radius , Vinheta Menos Raio\nVignette Size , Tamanho da vinheta\nVignette Strength , Força da vinheta\nVintage (brighter) , Vintage (mais brilhante)\nVintage Chrome , Crómio Vintage\nVintage Style , Estilo Vintage\nVintage Tone (%) , Tom de Vintage (%)\nVirtual Landscape , Paisagem Virtual\nVisible Watermark , Marca de Água Visível\nVivid Edges , Bordaduras Vivas\nVivid Edges* , Bordaduras Vivas*\nVivid Light , Luz Vívida\nVivid Screen , Ecrã Vívido\nWall , Muro\nWarm , Quente\nWarm (highlight) , Quente (destaque)\nWarm (yellow) , Quente (amarelo)\nWarm Dark Contrasty , Contraste Quente e Escuro\nWarm Fade , Desvanecer o calor\nWarm Fade 1 , Fade quente 1\nWarm Neutral , Neutro Quente\nWarm Sunset Red , Vermelho Pôr-do-sol Quente\nWarm Teal , Marreta Quente\nWarm Vintage , Vintage Quente\nWarp [Interactive] , Warp [Interactivo]\nWarp by Intensity , Warp por Intensidade\nWater , Água\nWaterfall , Queda de água\nWave , Onda\nWave(s) , Onda(s)\nWavelength , Comprimento de onda\nWaves Amplitude , Ondas Amplitude\nWaves Smoothness , Ondas Suavidade\nWe'll See , Veremos\nWeave , Tecer\nWeird , Estranho\nWhirl Drawing , Desenho de turbilhão\nWhite , Branco\nWhite Dices , Dados brancos\nWhite Layers , Camadas Brancas\nWhite Level , Nível Branco\nWhite on Black , Branco sobre Preto\nWhite on Transparent , Branco sobre Transparente\nWhite on Transparent Black , Branco sobre Preto Transparente\nWhite Point , Ponto Branco\nWhite to Black , Branco para Preto\nWhite Walls , Paredes Brancas\nWhitening , Branqueamento\nWhiter Whites , Brancos mais brancos\nWhites , Brancos\nWidth , Largura\nWidth (%) , Largura (%)\nWind , Vento\nWinter Lighthouse , Farol de Inverno\nWipe , Toalhita\nWireframe , Estrutura de arame\nWithout , Sem\nWooden Gold 20 , Ouro de madeira 20\nWork on Frameset , Trabalho em conjunto de molduras\nWrap , Embrulho\nX Center , X Centro\nX Origine , X Origem\nX-Axis , Eixo X\nX-Axis Then Y-Axis , Eixo X e depois eixo Y\nX-Centering (%) , X-Centralização (%)\nX-Curvature , X-Curvatura\nX-Dispersion , X-Dispersão\nX-Factor , Factor X\nX-Factor (%) , Factor X (%)\nX-Resolution , X-Resolução\nX-Rotation , X-Rotação\nX-Scale , Escala X\nX-Shadow , Sombra X\nX-Size , Tamanho X\nX-Size (px) , Tamanho X (px)\nX-Variations , X-Variações\nX/Y-Ratio , Razão X/Y\nX1 (none) , X1 (nenhum)\nXor , Xou\nXY Mirror , XY Espelho\nXY-Coordinates (%) , XY-Coordenadas (%)\nY Center , Centro Y\nY Origine , Y Origem\nY-Amplitude , Amplitude Y\nY-Axis , Eixo Y\nY-Axis Then X-Axis , Eixo Y e depois eixo X\nY-Border , Fronteira em Y\nY-Centering (%) , Centralização em Y (%)\nY-Curvature , Curvatura Y\nY-Dispersion , Dispersão em Y\nY-Factor , Fator Y\nY-Factor (%) , Fator Y (%)\nY-Resolution , Y-Resolução\nY-Scale , Escala em Y\nY-Size , Tamanho Y\nY-Size (px) , Tamanho Y (px)\nY-Variations , Y-Variações\nYAG Effect , Efeito YAG\nYCbCr (Chroma Only) , YCbCr (Apenas Chroma)\nYCbCr (Distinct) , YCbCr (Distinto)\nYCbCr (Luma Only) , YCbCr (Apenas Luma)\nYCbCr (Mixed) , YCbCr (Misto)\nYCbCr [Blue Chrominance] , YCbCr [Crominância Azul]\nYCbCr [Blue-Red Chrominances] , YCbCr [Crominâncias Azul-Red]\nYCbCr [Green Chrominance] , YCbCr [Crominância Verde]\nYCbCr [Luminance] , YCbCr [Luminância]\nYCbCr [Red Chrominance] , YCbCr [Crominância Vermelha]\nYellow , Amarelo\nYellow 55B , Amarelo 55B\nYellow Factor , Fator Amarelo\nYellow Film 01 , Filme Amarelo 01\nYellow Shift , Turno Amarelo\nYellow Smoothness , Suavidade Amarela\nYES8 , SIM8\nYIQ [chromas] , YIQ [cromas]\nYou Can Do It , Você pode fazê-lo\nZ-Rotation , Z-Rotação\nZ-Scale , Escala Z\nZ-Size , Tamanho Z\nZ^^8 + 15*z^^4 - 1 , Z^^8 + 15*z^4 - 1\nZilverFX - B&W Solarization , ZilverFX - Solarização a P&B\nZone System , Sistema de Zona\nZoom Center , Centro de Zoom\nZoom Factor , Fator Zoom\n"
  },
  {
    "path": "translations/filters/gmic_qt_ru.csv",
    "content": "<b>Arrays & Tiles</b> , <b>Массивы и плитки</b>\n<b>Artistic</b> , <b>Художественный</b>\n<b>Black & White</b> , <b>Чёрное и белое</b>\n<b>Colors</b> , <b>Цвета</b>\n<b>Contours</b> , <b>Контуры</b>\n<b>Deformations</b> , <b>Деформации</b>\n<b>Degradations</b> , <b>Деградации</b>\n<b>Details</b> , <b>Подробности</b>\n<b>Testing</b> , <b>Тестирование</b>\n<b>Frames</b> , <b>Фреймы</b>\n<b>Frequencies</b> , <b>Частоты</b>\n<b>Layers</b> , <b>Слои</b>\n<b>Lights & Shadows</b> , <b>Свет и тени</b>\n<b>Patterns</b> , <b>Шаблоны</b>\n<b>Rendering</b> , <b>Оказание услуг</b>\n<b>Repair</b> , <b>Ремонт</b>\n<b>Sequences</b> , <b>Последовательности</b>\n<b>Silhouettes</b> , <b>Силуэты</b>\n<b>Icons</b> , <b>Иконки</b>\n<b>Misc</b> , <b>Ошибка</b>\n<b>Nature</b> , <b>Природа</b>\n<b>Others</b> , <b>Другие</b>\n<b>Stereoscopic 3D</b> , <b>Стереоскопическое 3D</b>\n&#9829; Support Us ! &#9829; , ♥ Поддержите нас! ♥\n*Colors Doping , *Цветной допинг\n*Colors Doping* , *Цветной допинг*\n*Comix Colors* , *Комикс Цветов*\n*Dark Edges* , *Тёмные края*\n*Dark Screen* , *Тёмный экран*\n*Graphix Colors , *Графиксные цвета\n*Vivid Edges* , *Яркие края*\n*Vivid Screen* , *Яркий экран*\n+180 Deg. , +180 градусов\n+90 Deg. , +90 градусов\n- NO - , - НЕТ -\n-1. Value Action , -1. Ценностное действие\n-2. Overall Channel(s) , -2. Общий канал (ы)\n-3. Normalisation Channel(s) , -3. Канал(ы) нормализации\n-4. Normalise , -4. Нормализуют\n-90 Deg. , -90 градусов\n.Png , Пнг\n0 Deg. , 0 градусов\n0.  Recompute , 0. Вычислить\n1 Levels , 1 Уровни\n1.  Plasma Texture [Discards Input Image] , 1. Плазменная текстура [Отбрасывает входное изображение].\n10.  Quadtree Max Precision , 10. Квадтри Макс Точность\n10th , десятый\n10th Color , 10-ый цвет\n11.  Quadtree Min Homogeneity , 11. Квадтри Мин Гомогенность\n11th , 11-й\n12 Colors , 12 Цветов\n12 Grays , 12 серый\n12.  Quadtree Max Homogeneity , 12. Квадтри Макс Однородность\n125 Keypoints , 125 Ключевые точки\n12th , 12-ый\n13. Noise Type , 13. Тип шума\n13th , 13-й\n14. Minimum Noise , 14. Минимальный шум\n14th , 14-я\n15. Maximum Noise , 15. Максимальный шум\n15th , 15-ый\n16 Colors , 16 Цветов\n16 Grays , 16 Серый\n16. Noise Channel(s) , 16. Шумовой канал (ы)\n16th , 16-ый\n17. Warp Iterations , 17. Итерации деформации\n18. Warp Intensity , 18. Интенсивность искривления\n180 Deg. , 180 градусов\n19. Warp Offset , 19. Смещение по деформации\n1st , 1-ый\n1st Additional Palette (.Gpl) , 1-я дополнительная палитра (.Gpl)\n1st Color , 1-й цвет\n1st Parameter , 1-й параметр\n1st Text , 1-й Текст\n1st Tone , 1-й Тон\n1st Variance , 1-я Вариант\n1st X-Coord , 1-й шнур X-Coord\n1st Y-Coord , 1-й Y-корд\n2 Colors , 2 цвета\n2 Grays , 2 серые\n2 Noise , 2 Шум\n2-Strip Process , 2-полосный процесс\n2.  Plasma Scale , 2. Шкала плазмы\n20. Scale to Width , 20. Шкала до ширины\n21. Scale to Height , 21. Масштаб до высоты\n216 Keypoints , 216 Ключевые точки\n22. Correlated Channels , 22. Корреспондентские каналы\n22.5 Deg. , 22,5 градуса\n23. Boundary , 23. Граница\n24. Warp Channel(s) , 24. Канал(ы) деформации\n25. Random Negation , 25. Случайное отрицание\n26. Random Negation Channel(s) , 26. Случайный канал(и) отрицания\n27 Keypoints , 27 Ключевые точки\n27. Gamma Offset , 27. Гамма-смещение\n270 Deg. , 270 градусов\n28. Hue Offset , 28. смещение оттенка\n29. Normalise , 29. Нормализовать\n2nd , 2-ой\n2nd Additional Palette (.Gpl) , 2-я дополнительная палитра (.Gpl)\n2nd Color , 2-й цвет\n2nd Parameter , 2-й параметр\n2nd Text , 2-й Текст\n2nd Tone , 2-й Тон\n2nd Variance , 2-я Вариант\n2nd X-Coord , 2-й X-корд\n2nd Y-Coord , 2-й Y-корд\n2x Type , 2х Тип\n2XY Mirror , 2XY Зеркало\n2xy-Axes , 2xy-топоры\n3 Colors , 3 Цвета\n3 Grays , 3 серый\n3 Mix , 3 Смешивание\n3.  Plasma Alpha Channel , 3. Плазменный Альфа-канал\n30. Minimum Hue , 30. Минимальный оттенок\n31. Maximum Hue , 31. Максимальный оттенок\n32. Minimum Saturation , 32. Минимальное насыщение\n33. Maximum Saturation , 33. Максимальное насыщение\n34. Minimum Value , 34. Минимальное значение\n343 Keypoints , 343 Ключевые точки\n35. Maximum Value , 35. Максимальное значение\n36. Hue Offset , 36. смещение оттенка\n37. Saturation Offset , 37. Смещение по насыщению\n38. Value Offset , 38. Смещение значения\n3D Blocks , 3D-блоки\n3D CLUT (Fast) , 3D CLUT (Быстро)\n3D CLUT (Precise) , 3D CLUT (Точно)\n3D Colored Object , 3D-цветной объект\n3D Conversion , 3D-преобразование\n3D Elevation , 3D-Возвышение\n3D Extrusion , 3D-экструзия\n3D Extrusion [Animated] , 3D-экструзия [анимированная]\n3D Image Object , 3D-изображение Объект\n3D Image Object [Animated] , 3D-изображение Объект [Анимированный]\n3D Image Type , Тип 3D изображения\n3D Lathing , 3D-обработка\n3D Metaballs , 3D Металлы\n3D Random Objects , Случайные объекты 3D\n3D Reflection , 3D-отражение\n3D Rubber Object , 3D-резиновый объект\n3D Starfield , 3D Звёздное поле\n3D Text Pointcloud , 3D Облако Текста\n3D Tiles , 3D плитка\n3D Video Conversion , Преобразование 3D видео\n3D Waves , 3D-волны\n3rd , 3-ий\n3rd Color , 3-й цвет\n3rd Parameter , 3-й параметр\n3rd Tone , 3-й Тон\n3rd X-Coord , 3-й X-корд\n3rd Y-Coord , 3-й Y-корд\n4 Colors , 4 цвета\n4 Grays , 4 серые\n4.  Segmentation [No Alpha Channel] , 4. Сегментация [No Alpha Channel]\n4096x4096 Layer , 4096x4096 Слой\n45 Deg. , 45 градусов\n4th , 4-ый\n4th Color , 4-й цвет\n4th Tone , 4-й Тон\n5.  Edge Threshold , 5. Порог Кромки\n512x512 Layer , 512x512 Слой\n5th , 5-ый\n5th Color , 5-й цвет\n5th Tone , 5-й Тон\n6.  Smoothness , 6. Гладкость\n60's (faded Alt) , 60-е годы (выцветший Альт)\n60's (faded) , 60-е годы (потускнело)\n64 (Faster) , 64 (Быстрее)\n64 Keypoints , 64 Ключевые точки\n67.5 Deg. , 67,5 градусов\n6th , шестой\n6th Color , 6-й цвет\n6th Tone , 6-й Тон\n7.  Blur , 7. Пятно\n7th , 7-я\n7th Color , 7-й цвет\n7th Tone , 7-й тон\n8 Colors , 8 Цветов\n8 Grays , 8 серый\n8 Keypoints (RGB Corners) , 8 Ключевые точки (углы RGB)\n8.  Quadtree Pixelisation [No Alpha Channel] , 8. Квадтри пикселизации [Нет альфа-канала]\n8th , 8-я\n8th Color , 8-й цвет\n8th Tone , 8-й тон\n9.  Quadtree Min Precision , 9. Квадтри Мин Точность\n90 Deg. , 90 градусов.\n9th , 9-ый\n9th Color , 9-й цвет\n[Cyan]MYK , МИК\nA Lot of Cyan , Много сине-зелёного\nA Lot of Key , Много ключей\nA Lot of Magenta , Много пурпурного\nA Lot of Yellow , Много желтого\nA-Color Factor , А-Цветовой фактор\nA-Color Shift , сдвиг цвета\nA-Color Smoothness , Гладкость цвета\nA4 / 100 PPI (Recommended) , A4 / 100 PPI (Рекомендуется)\nAbigail Gonzalez (21) , Абигайль Гонсалес (21)\nAbout G'MIC , О G'MIC\nAbsolute Brightness , Абсолютная Яркость\nAbsolute Value , Абсолютная стоимость\nAbstraction , Абстракция\nAcceleration , Ускорение\nAchromatomaly , Ахроматомалия\nAchromatopsia , Ахроматопсия\nAcros , Акрос\nAcros+G , Акрос+Г\nAcros+Ye , Акрос+Да\nAction , Действие\nAction #1 , Действие № 1\nAction #10 , Действие № 10\nAction #11 , Действие № 11\nAction #12 , Действие № 12\nAction #13 , Действие № 13\nAction #14 , Действие № 14\nAction #15 , Действие № 15\nAction #16 , Действие № 16\nAction #17 , Действие № 17\nAction #18 , Действие № 18\nAction #19 , Действие № 19\nAction #2 , Действие № 2\nAction #20 , Действие № 20\nAction #21 , Действие № 21\nAction #22 , Действие #22\nAction #23 , Действие № 23\nAction #24 , Действие № 24\nAction #3 , Действие № 3\nAction #4 , Действие № 4\nAction #5 , Действие № 5\nAction #6 , Действие № 6\nAction #7 , Действие № 7\nAction #8 , Действие № 8\nAction #9 , Действие № 9\nAction Magenta 01 , Акция \"Маджента 01\nAction Red 01 , Действие Красный 01\nActivate 'Pencil Smoother' , Активируйте \"Карандаш Гладче\".\nActivate Color Enhancement , Активировать улучшение цвета\nActivate Colors Geometric Shapes , Активировать цвета Геометрические формы\nActivate Custom Filter , Активировать пользовательский фильтр\nActivate Lizards , Активировать ящериц\nActivate Mirror , Активировать зеркало\nActivate Pink Elephants , Активировать розовых слонов\nActivate Second Direction , Активировать второе направление\nActivate Shakes , Активировать коктейли\nActivate Slice 1 , Активировать ломтик 1\nActivate Slice 2 , Активировать ломтик 2\nActivate Slice 3 , Активировать ломтик 3\nActivate Slice 4 , Активировать ломтик 4\nActiver Symmetrizoscope , Активерный симметризоскоп\nAdaptive , Адаптивный сайт\nAdd , Добавить\nAdd 1px Outline , Добавить 1px Очертание\nAdd Alpha Channels to Detail Scale Layers , Добавить альфа-каналы в слои деталей шкалы\nAdd as a New Layer , Добавить как новый слой\nAdd Chalk Highlights , Добавить мелом Основные моменты\nAdd Color Background , Добавить цветной фон\nAdd Comment Area in HTML Page , Добавить область комментариев в HTML Page\nAdd Grain , Добавить зерно\nAdd Image Label , Добавить ярлык изображения\nAdd Painter's Touch , Добавить прикосновение художника\nAdd User-Defined Constraints (Interactive) , Добавить пользовательские ограничения (интерактивные)\nAdditional Duplicates Count , Дополнительный подсчет дубликатов\nAdditional Outline , Дополнительное описание\nAdditive , Добавочный сайт\nAdjust Background Reconstruction , Настроить фоновую реконструкцию\nAdventure 1453 , Приключение 1453\nAgfa Vista 200 , Агфа-Виста 200\nAggressive Highlights Recovery 5 , Агрессивные моменты Восстановление 5\nAlex Jordan (81) , Алекс Джордан (81)\nAlgorithm , Алгоритм\nAliasing , Псевдоожижение\nAlien Green , Чужеродная зелень\nAlign Image Streams , Выравнивание потоков изображений\nAlign Layers , Выравнивающие слои\nAligned , Подписанный\nAlignment Type , Тип выравнивания\nAll , Все\nAll 45° Rotations , Все 45° Вращения\nAll 90° Rotations , Все 90&деградусов; Вращения\nAll [Collage] , Все [Коллаж]\nAll but Reference Color , Все, кроме эталонного цвета\nAll Layers and Masks , Все слои и маски\nAll Tones , Все тона\nAll XY-Flips , Все XY-флипы\nAllow Angle , Разрешить угол\nAllow Outer Blending , Разрешить внешнее смешивание\nAllow Self Intersections , Разрешить самопересечения\nAlpha , Альфа\nAlpha Channel , Альфа-канал\nAlpha Mode , альфа-режим\nAlso Match Gradients , Также совпадают градиенты\nAmbient (%) , Окружающая среда (%)\nAmbient Lightness , Окружающая освещенность\nAmount , Сумма\nAmplitude , Амплитуда\nAmplitude (%) , Амплитуда (%)\nAmplitude / Angle , Амплитуда / Угол\nAmstragram , Амстраграмма\nAmstragram+ , Амстраграмма+\nAnaglypgh Green/magenta Optimized , Анаглипг Зеленый/магента Оптимизировано\nAnaglyph Blue/yellow , Анаглиф Голубой/желтый\nAnaglyph Blue/yellow Optimized , Анаглиф Голубой/желтый Оптимизированный\nAnaglyph Glasses Adjustment , Регулировка анаглифных стекол\nAnaglyph Green/magenta , Анаглиф Грин/Магента\nAnaglyph Green/magenta Optimized , Анаглиф Зеленый/магента Оптимизированный\nAnaglyph Reconstruction , Реконструкция анаглифов\nAnaglyph Red/cyan , Анаглиф Красный/голубой\nAnaglyph Red/cyan Optimized , Анаглиф Красный/голубой Оптимизированный\nAnaglyph: Red/Cyan , Анаглиф: красный/синий\nAnalogFX - Old Style I , AnalogFX - Старый Стиль I\nAnalogFX - Old Style II , AnalogFX - Старый Стиль II\nAnalogFX - Old Style III , AnalogFX - Старый Стиль III\nAnalogFX - Soft Sepia I , AnalogFX - мягкая сепия I\nAnalogFX - Soft Sepia II , AnalogFX - мягкая сепия II\nAnalysis Scale , Шкала анализа\nAnalysis Smoothness , Гладкость анализа\nAnd , И\nAngle (%) , Угол (%)\nAngle (deg) , Угол (градусов)\nAngle (deg.) , Угол (градус)\nAngle / Size , Угол / размер\nAngle Cut , Отрезок под углом\nAngle Dispersion , рассеивание углов\nAngle Image Contour , Угловой контур изображения\nAngle of Disturbance Surface , Угол возмущения Поверхность\nAngle of Main Nebulous Surface , Угол главной поверхности туманности\nAngle Range , Диапазон углов\nAngle Range (deg.) , Диапазон углов (град.)\nAngle Tilt , Угол наклона\nAngle Variations , Вариации углов\nAnguish , Страдание\nAngular , Угловой\nAngular Precision , угловая точность\nAngular Tiles , Угловая плитка\nAnime , Аниме\nAnisotropic , Анизотропный\nAnisotropy , Анизотропия\nAnnular Steiner Chain Round Tiles , Круглые плитки с кольцевой цепью Штейнера\nAnti Alias , Анти-альянс\nAntialiasing , Сглаживание\nAntisymmetry , Антисимметрия\nAny , Любой\nApocalypse This Very Moment , Апокалипсис - это очень мгновенный момент.\nApply Adjustments On , Применить настройки Вкл\nApply Color Balance , Применить цветовой баланс\nApply External CLUT , Применить внешнее замыкание\nApply Mask , Применить Маску\nApply Skin Tone Mask , Применить маску тона кожи\nApply Transformation From , Применить преобразование от\nArabica 12 , Арабика 12\nArea , Территория\nArea Smoothness , Площадь Гладкость\nAreas Light Adjustment , Области Регулировка освещения\nAreas Smoothness , Области Гладкость\nArray [Faded] , Массив [Выцветший]\nArray [Mirrored] , Массив [Зеркало]\nArray [Random Colors] , Массив [Случайные цвета]\nArray [Random] , Массив [Случайность]\nArray [Regular] , Массив [Обычный]\nArray Mode , Режим массива\nArrows , Стрелки\nArrows (Outline) , Стрелки (Outline)\nArtistic  Modern , Художественный Модерн\nArtistic Hard , Художественно сложная\nArtistic Round , Художественный раунд\nAscii Art , Асций Арт\nAspect , Аспект\nAspect Ratio , Соотношение сторон\nAsplenium Adiantum-Nigrum , аспленовый адиант-нигрум\nAssociated Color , Соответствующий цвет\nAstia , Астия\nAttenuation , Аттенуация\nAurora , Аврора\nAustralia , Австралия\nAuto , Авто\nAuto Balance , Автоматический баланс\nAuto Crop , Автоматическая культура\nAuto Reduce Level (Level Slider Is Disabled) , Автоматическое снижение уровня (ползунок уровня отключен)\nAuto Set Hue Inverse (Hue Slider Is Disabled) , Автоматическая установка инверсии оттенка (ползунок оттенка отключен)\nAuto-Clean Bottom Color Layer , Автоматически чистый нижний цветной слой\nAuto-Reduce Number of Frames , Автоматическая перезагрузка Количество кадров\nAuto-Set Periodicity , Автоматическая установка периодичности\nAuto-Threshold , Автопорог\nAutocrop , Автокроп\nAutocrop Output Layers , Автоматические выходные слои\nAutomatic , Автоматический\nAutomatic & Contrast Mask , Автоматическая и контрастная маска\nAutomatic [Scan All Hues] , Автоматически [Сканировать все оттенки]\nAutomatic Color Balance , Автоматический цветовой баланс\nAutomatic Depth Estimation , Автоматическая оценка глубины\nAutomatic Upscale for Optimum Results , Автоматическое повышение шкалы для оптимальных результатов\nAutumn , Осень\nAva 614 , ава 614\nAvalanche , Лавина\nAverage , Средний\nAverage 3x3 , Средний размер 3х3\nAverage 5x5 , В среднем 5х5\nAverage 7x7 , средний размер 7х7\nAverage 9x9 , В среднем 9х9\nAverage RGB , Средний RGB\nAverage Smoothness , Средняя гладкость\nAvg / Max Weight , Авг/Макс Вес\nAvg Branching , Авгская ветвь\nAvg Left Angle (deg.) , Авг Левый Угол (град.)\nAvg Length Factor (%) , Коэффициент длины Avg (%)\nAxis , Ось\nAzimuth , Азимут\nAzrael 93 , Азраиль 93\nB&W , КРОВАТЬ И НОЧЬ\nB&W Pencil [Animated] , Чёрно-белый карандаш [анимированный]\nB&W Photograph , ч/б фотография\nB&W Stencil , трафаретная печать\nB&W Stencil [Animated] , Трафарет по трафарету B&W [анимированный]\nB-Color Factor , коэффициент B-цвета\nB-Color Shift , сдвиг цвета B\nB-Color Smoothness , Гладкость цвета B\nB-Component , B-компонент\nBackground , Справочная информация\nBackground Color , Цвет фона\nBackground Intensity , Интенсивность фона\nBackground Point (%) , Фоновая точка (%)\nBackward , Назад\nBackward Horizontal , Назад по горизонтали\nBackward Vertical , обратная вертикаль\nBalance , Баланс\nBalance Color , Цвет баланса\nBalance SRGB , Баланс SRGB\nBall , Шар\nBalloons , Воздушные шары\nBalls , Шарики\nBand Width , Ширина полосы\nBanding Denoise , Обвязка денуазы\nBandwidth , Полоса пропускания\nBarbara , Барбара\nBarbed Wire , колючая проволока\nBarnsley Fern , папоротник Барнсли\nBars , Бары\nBase Reference Dimension , Базовое эталонное измерение\nBase Scale , Базовая шкала\nBase Thickness (%) , Базовая толщина (%)\nBasic Adjustments , Основные корректировки\nBatch Processing , Пакетная обработка\nBayer Filter , фильтр Байера\nBayer Reconstruction , Реконструкция Байера\nBehind , Позади\nBelow , Ниже\nBerlin Sky , берлинское небо\nBest Match , Лучший матч\nBeta , Бета-версия\nBG Textured , BG Текстурированный\nBi-Directional , Двунаправленный\nBicubic , Бикубик\nBidirectional [Sharp] , Двунаправленный [Sharp]\nBidirectional [Smooth] , Двунаправленный [Гладкий]\nBidirectional Rendering , двунаправленное реендеринг\nBilateral , Двусторонний\nBilateral Radius , Двустороннее Радиус\nBinary , Двоичный\nBinary Digits , двоичные цифры\nBit Masking (End) , Битовая маскировка (в конце)\nBit Masking (Start) , Битовая маскировка (Старт)\nBlack & White , Чёрное и белое\nBlack & White (25) , Чёрное и белое (25)\nBlack & White-1 , Чёрно-белый-1\nBlack & White-10 , Чёрное и Белое-10\nBlack & White-2 , Чёрное и Белое-2\nBlack & White-3 , Чёрное и белое 3\nBlack & White-4 , Чёрный и белый-4\nBlack & White-5 , Чёрный и белый-5\nBlack & White-6 , Чёрный и белый-6\nBlack & White-7 , Чёрное и Белое-7\nBlack & White-8 , Чёрный и белый 8\nBlack & White-9 , Чёрное и Белое-9\nBlack Crayon Graffiti , черные карандашные граффити\nBlack Dices , Чёрные кубики\nBlack Level , Уровень черного\nBlack on Transparent , Чёрный на прозрачном\nBlack on Transparent White , Черный на прозрачном белом\nBlack on White , Чёрный на белом\nBlack Point , Чёрная точка\nBlack Star , Чёрная звезда\nBlack to White , От черного до белого\nBlacks , Чернокожие\nBlade Runner , Лезвиевой бегунок\nBlank , Пустой\nBleach Bypass , Отбеливающий байпас\nBleach Bypass 1 , Отбеливающий байпас 1\nBleach Bypass 2 , Отбеливающий байпас 2\nBleach Bypass 3 , Отбеливатель байпас 3\nBleach Bypass 4 , Отбеливающий байпас 4\nBleech Bypass Green , Байпасный зеленый\nBleech Bypass Yellow 01 , Байпасный желтый 01\nBlend , Смешать\nBlend [Average All] , Смешайте [Средние все]\nBlend [Edges] , Смешать [края]\nBlend [Fade] , Смесь [Fade]\nBlend [Median] , Смесь [Медиана]\nBlend [Seamless] , Смесь [Бесшовная]\nBlend [Standard] , Смесь [Стандартная]\nBlend Mode , Режим смешивания\nBlend Rays , Смесительные лучи\nBlend Scales , Весы для смешивания\nBlend Size , Размер смеси\nBlend Threshold , Порог смешивания\nBlending Mode , Режим смешивания\nBlending Size , Размер купажа\nBlindness Type , Тип слепоты\nBlob 1 , Капля 1\nBlob 1 Color , Капля 1 Цвет\nBlob 10 , Капля 10\nBlob 10 Color , Капля 10 Цвет\nBlob 11 , капля 11\nBlob 11 Color , Капля 11 Цвет\nBlob 12 , Капля 12\nBlob 12 Color , Капля 12 Цвет\nBlob 2 Color , Капля 2 Цвет\nBlob 3 , Капля 3\nBlob 3 Color , Капля 3 Цвет\nBlob 4 , Капля 4\nBlob 4 Color , Капля 4 Цвет\nBlob 5 , Капля 5\nBlob 5 Color , Капля 5 Цвет\nBlob 6 , Капля 6\nBlob 6 Color , Капля 6 Цвет\nBlob 7 , Капля 7\nBlob 7 Color , Капля 7 Цвет\nBlob 8 , Капля 8\nBlob 8 Color , Капля 8 Цвет\nBlob 9 , Капля 9\nBlob 9 Color , Капля 9 Цвет\nBlob Size , Размер капли\nBlobs Editor , редактор Blobs\nBloc , Блок\nBloc Size (%) , Размер блока (%)\nBlockism , Блокизм\nBloom , Блум\nBlue , Синий\nBlue & Red Chrominances , Голубые и красные хромины\nBlue Chroma Factor , Синий цветовой фактор\nBlue Chroma Shift , Сдвиг синей хромы\nBlue Chroma Smoothness , Гладкость синей хромы\nBlue Chrominance , Голубое хромансирование\nBlue Cold Fade , Голубое холодное угасание\nBlue Dark , Синяя Тьма\nBlue Factor , Синий фактор\nBlue House , Голубой дом\nBlue Ice , Голубой лед\nBlue Level , Синий уровень\nBlue Mono , Голубой моно\nBlue Rotations , Голубые повороты\nBlue Screen Mode , Режим синего экрана\nBlue Shadows 01 , Голубые Тени 01\nBlue Shift , Голубое смещение\nBlue Smoothness , Голубая гладкость\nBlue Steel , Голубая сталь\nBlue Wavelength , Длина синей волны\nBlue-Green , Сине-зеленый\nBlues , Блюз\nBlur , Пятно\nBlur [Angular] , Пятно [Угловое]\nBlur [Bloom] , Пятно [Блум]\nBlur [Depth-Of-Field] , Пятно [Глубина поля]\nBlur [Gaussian] , Пятно [Гаусс]\nBlur [Glow] , Пятно [Светится]\nBlur [Linear] , Пятно [Линейный]\nBlur [Multidirectional] , Пятно [разнонаправленное]\nBlur [Radial] , Пятно [Радиальный]\nBlur Alpha , Пятно Альфа\nBlur Amount , размытость\nBlur Amplitude , амплитуда размытия\nBlur Dodge and Burn Layer , Пятно Додж и ожоговый слой\nBlur Factor , коэффициент размытости\nBlur Frame , размытая рама\nBlur Percentage , Размытый процент\nBlur Precision , точность размытия\nBlur Shade , Тень Пятна\nBlur Standard Deviation , Стандартная девиатура Размытия\nBlur Strength , Прочность при размывании\nBlur the Mask , Размыть Маску\nBoats , Лодки\nBob Ford , Боб Форд\nBokeh , Бокэ\nBoost Chromaticity , повышенная хроматичность\nBoost Contrast , повышенный контраст\nBoost Stroke , удар тупика\nBorder Color , Цвет границы\nBorder Opacity , Прозрачность границ\nBorder Outline , Очертание границы\nBorder Smoothness , Гладкость границ\nBorder Thickness (%) , Толщина границы (%)\nBorder Width , Ширина границы\nBoth , Оба\nBottles , Бутылки\nBottom , Нижний\nBottom and Left Foreground , Нижнее и левое поле на переднем плане\nBottom and Right Foreground , Нижний и правый передний план\nBottom and Top Foreground , Нижний и верхний план\nBottom Layer , Нижний слой\nBottom Left , Нижнее левое\nBottom Right , Нижнее право\nBottom Size , Нижний размер\nBottom-Left , Слева внизу\nBottom-Left Vertex (%) , Нижняя левая вершина (%)\nBottom-Right , Нижнее право\nBottom-Right Vertex (%) , Нижняя-правая вершина (%)\nBouncing Balls , Прыгающие шары\nBoundaries (%) , Границы (%)\nBoundary , Граница\nBoundary Condition , Граничное условие\nBoundary Conditions , Пограничные условия\nBourbon 64 , Бурбон 64\nBox , Вставка\nBox Fitting , Коробка Подгонка\nBranches , Филиалы\nBraque: Landscape near Antwerp , Брак: Пейзаж под Антверпеном\nBraque: Le Viaduc à L'Estaque , Брак: Le Viaduc à L'Estaque\nBraque: Little Bay at La Ciotat , Брак: Литтл Бэй в Ла Сиота\nBraque: The Mandola , Брак: Мандола\nBright , Яркий сайт\nBright Green , ярко-зелёный\nBright Green 01 , Ярко-зеленый 01\nBright Length , Яркая длина\nBright Pixels , Яркие пиксели\nBright Teal Orange , ярко-синий апельсин\nBright Warm , Яркое тепло\nBrightness , Яркость\nBrightness (%) , Яркость (%)\nBristle Size , Размер щетины\nBronze , Бронзовый\nBrownish , Коричневатый\nBrushify , Очистить\nBuilt-in Gray , Встроенный серый\nBump Factor , коэффициент ударения\nBurn , Сжечь\nBurn Strength , Прочность при изжоге\nButterfly , Бабочка\nBy Blue Chrominance , Компания Blue Chrominance\nBy Blue Component , По синей составляющей\nBy Custom Expression , Посредством пользовательского выражения\nBy Green Component , По Зелёному Компоненту\nBy Iteration , По итерации\nBy Lightness , По Светлости\nBy Luminance , По Фирме Luminance\nBy Red Chrominance , Компания Red Chrominance\nBy Red Component , Красным компонентом\nBy Value , По значению\nByers 11 , Байерс 11\nC[Magenta]YK , C[пурпурный] YK\nCamera Motion Only , Только движение камеры\nCamera X , Камера X\nCamera Y , Камера Y\nCameraman , Оператор\nCamouflage , Камуфляж\nCandle Light , Свеча\nCanvas , Холст\nCanvas Brightness , яркость холста\nCanvas Color , Цвет холста\nCanvas Darkness , Холстовая тьма\nCanvas Texture , Текстура холста\nCar , Автомобиль\nCard Suits , Костюмы для карт\nCaribe , Карибе\nCartesian Transform , Преобразование Картезиан\nCartoon , Мультфильм\nCartoon [Animated] , Мультфильм [анимационный]\nCat , Кошка\nCategory , Категория\nCell Size , Размер ячейки\nCenter , Центр\nCenter (%) , Центр (%)\nCenter Background , Центр Справочная информация\nCenter Foreground , Центровое поле на переднем плане\nCenter Help , Помощь центра\nCenter Size , Центральный размер\nCenter Smoothness , Гладкость центра\nCenter X , Центр Х\nCenter X-Shift , Центр X-Shift\nCenter Y , Центр Y\nCenter Y-Shift , Центральная Y-образная смена\nCentering (%) , Центрирование (%)\nCentering / Scale , Центрирование / масштабирование\nCenters Color , Центры Цвет\nCenters Radius , Центры Радиус\nCentimeter , сантиметр\nCentral  Perspective Outdoor , Центральная перспектива на улице\nCentral Perspective Indoor , Центральная Перспектива Крытый\nCentral Perspective Outdoor , Центральная перспектива на улице\nCentre , Центр\nChalk It Up , Врубай мелом\nChannel #1 , Первый канал\nChannel #2 , 2-й канал\nChannel #3 , 3-й канал\nChannel Processing , Обработка канала\nChannel(s) , Канал(ы)\nChannels , Каналы\nChannels to Layers , Каналы на слои\nCharcoal , Древесный уголь\nCharset , Шарсет\nChebyshev , Чебышев\nCheckered Inverse , клетчатая инверсия\nChemical 168 , Химический 168\nChessboard , Шахматная доска\nChick , Цыпочка\nChroma Noise , Хроматический шум\nChromatic Aberrations , хроматические аберрации\nChromaticity From , Хроматичность От\nChrome 01 , Хром 01\nChrominances Only (ab) , Только хроминансы (ab)\nChrominances Only (CbCr) , Только хроминансы (CbCr)\nCine Bright , Сине Брайт\nCine Cold , Сине Холодный\nCine Drama , Кинодрама\nCine Warm , Теплое вино\nCinema , Кинотеатр\nCinema 2 , Кинотеатр 2\nCinema 3 , Кинотеатр 3\nCinema 4 , Кинотеатр 4\nCinema 5 , Кинотеатр 5\nCinema Noir , Киноно нуар\nCinematic (8) , Кинематографический (8)\nCinematic for Flog , Кинематограф для Флога\nCinematic Lady Bird , Птица-кинематографистка\nCinematic Mexico , Кинематографическая Мексика\nCinematic Travel (29) , Кинематографическое путешествие (29)\nCinematic-01 , Кинематограф-01\nCinematic-02 , Кинематограф-02\nCinematic-03 , Кинематографический-03\nCinematic-1 , Кинематографический-1\nCinematic-10 , Кинематограф-10\nCinematic-2 , Кинематограф-2\nCinematic-3 , Кинематографический-3\nCinematic-4 , Кинематографический-4\nCinematic-5 , Кинематограф-5\nCinematic-6 , Кинематограф-6\nCinematic-7 , Кинематографический-7\nCinematic-8 , Кинематограф-8\nCinematic-9 , Кинематографический-9\nCircle , Круг\nCircle (Inv.) , Круг (инв.)\nCircle 1 , 1-й круг\nCircle 2 , Круг 2\nCircle Abstraction , Абстракция круга\nCircle Art , Кружковое искусство\nCircle to Square , Круг к площади\nCircle Transform , Преобразование круга\nCircles , Круги\nCircles (Outline) , Круги (контур)\nCircles 1 , Круги 1\nCircles 2 , Круги 2\nCircular , Циркуляр\nCity 7 , Город 7\nClarity , Ясность\nClassic Chrome , Классический хром\nClassic Teal and Orange , Классический тел и апельсин\nClayton 33 , Клейтон 33\nClean , Чистый\nClean Text , Чистый текст\nClear Control Points , Чистые контрольные точки\nClear Teal Fade , Чистое затухание тела\nCliff , Клифф\nClip , Клип\nClip CMYK , Клип CMYK\nClip RGB , Клип RGB\nCloseup , Закрытие\nClosing , Закрытие\nClosing - Opening , Закрытие - Открытие\nClosing - Original , Закрытие - Оригинал\nClouds , Облака\nClouseau 54 , Клюзо 54\nCLUT Opacity , CLUT Непрозрачность\nCM[Yellow]K , CM[жёлтый] K\nCMY[Key] , CMY[Ключ]\nCMYK [cyan] , CMYK [циан]\nCMYK [Key] , CMYK [Ключ]\nCMYK [Magenta] , CMYK [пурпурный]\nCMYK [Yellow] , CMYK [Желтый]\nCMYK Tone , CMYK Тон\nCoarse , Грубый\nCoarsest (faster) , Самый грубый (быстрее)\nCobi 3 , Коби 3\nCode , Код\nCoefficients , Коэффициенты\nCoffee 44 , Кофе 44\nCoherence , Согласованность\nCold Clear Blue , Холодный прозрачный синий\nCold Clear Blue 1 , Холодный прозрачный синий 1\nCold Simplicity 2 , Холодная простота 2\nColor , Цвет\nColor (rich) , Цвет (богатый)\nColor 1 , Цвет 1\nColor 1 (Up/Left Corner) , Цвет 1 (верхний/левый угол)\nColor 2 , Цвет 2\nColor 2 (Up/Right Corner) , Цвет 2 (вверх/вправо)\nColor 3 , Цвет 3\nColor 3 (Bottom/Left Corner) , Цвет 3 (нижний/левый угол)\nColor 4 , Цвет 4\nColor 4 (Bottom/Right Corner) , Цвет 4 (нижний/правый угол)\nColor A , Цвет А\nColor Abstraction Opacity , Цветовая абстракция Непрозрачность\nColor Abstraction Paint , Цветная абстракция Краска\nColor B , Цвет В\nColor Balance , Цветовой баланс\nColor Basis , Цветовая основа\nColor Blending , Цветовое смешивание\nColor Blindness , Цветная слепота\nColor Blue-Yellow , Цвет сине-желтый\nColor Boost , Цветной всплеск\nColor Burn , Цветной ожог\nColor C , Цвет С\nColor Channel  Smoothing , Сглаживание цветовых каналов\nColor Channels , Цветовые каналы\nColor D , Цвет D\nColor Dispersion , Цветовое рассеивание\nColor Doping , Цветной допинг\nColor E , Цвет Е\nColor Effect Mode , Режим цветового эффекта\nColor F , Цвет F\nColor G , Цвет G\nColor Gamma , Цветовая гамма\nColor Grading , Цветовая классификация\nColor Green-Magenta , Цвет зеленый-маджента\nColor Highlights , Цветовые акценты\nColor Image , Цветное изображение\nColor Intensity , Интенсивность цвета\nColor Mask , Цветная маска\nColor Mask [Interactive] , Цветная маска [интерактивная]\nColor Median , Цвет Медианы\nColor Metric , Цветовая метрика\nColor Midtones , Цветные полутоны\nColor Mode , Цветовой режим\nColor Model , Цвет Модель\nColor Negative , Отрицательный цвет\nColor on White , Цвет на белом\nColor Overall Effect , Общий цветовой эффект\nColor Presets , Цветовые настройки\nColor Quantization , Количественное определение цвета\nColor Rendering , Цветовое оформление\nColor Shading (%) , Цветовое затенение (%)\nColor Shadows , Цветовые тени\nColor Smoothness , Гладкость цвета\nColor Space , Цветовое пространство\nColor Spots + Extrapolated Colors + Lineart , Цветовые пятна + экстраполированные цвета + линейный рисунок\nColor Spots + Lineart , Цветовые пятна + линейный рисунок\nColor Strength , Прочность цвета\nColor Temperature , Цветовая температура\nColor Tolerance , Цветовая толерантность\nColor Variation [Random -1] , Вариация цвета [Случайный -1]\nColored Geometry , цветная геометрия\nColored Grain , Цветное зерно\nColored Lineart , Цветная линейка\nColored on Black , Окрашен в чёрный цвет\nColored on Transparent , Цветной на прозрачном\nColored Outline , Цветной набросок\nColored Pencils , Цветные карандаши\nColored Regions , Цветные регионы\nColorful , Красочный\nColorful 0209 , Красочный 0209\nColorful Blobs , Красочные Капли\nColoring , Раскраска\nColorize [Interactive] , Окрасить [интерактивный]\nColorize [Photographs] , Окрасить [Фотографии]\nColorize [with Colormap] , Окрасить [с помощью Colormap]\nColorize Lineart [Auto-Fill] , Окрасить линейную линию [Автозаполнение].\nColorize Lineart [Propagation] , Окрасить линейную линию [Распространение]\nColorize Lineart [Smart Coloring] , Окрасить линейный [Умная раскраска]\nColorize Mode , Режим окрашивания\nColorized Image (1 Layer) , Цветное изображение (1 слой)\nColormap Type , Цветовое изображение\nColors , Цвета\nColors A , Цвета А\nColors B , Цвета В\nColors Only , Только цвета\nColors Only (1 Layer) , Только цвета (1 слой)\nColors to Layers , Цвета на слои\nColorspace , Цветовое пространство\nColour , Цвет\nColour Channels , Цветовые каналы\nColour Model , Цветная модель\nColour Smoothing , Сглаживание цвета\nColour Space Mode , Цветовой режим\nColumn by Column , Колонки за колонками\nComic Style , Комический стиль\nComix Colors , Смешивание цветов\nComponents , Компоненты\nComposed Layers , Составные слои\nCompress Highlights , Основные моменты компресса\nCompression Blur , Компрессионное размытие\nCompression Filter , Компрессионный фильтр\nComputation Mode , Режим вычисления\nCone , Конус\nConflict 01 , Конфликт 01\nConformal Maps , Конформные карты\nConnect-Four , Коннект-Четыре\nConnectivity , Связь\nConnectors Centering , Разъемы Центрирование\nConnectors Variability , Разъемы Переменчивость\nConstrain Image Size , Размер изображения деформации\nConstrain Values , Значения деформации\nConstrained Sharpen , Ограниченный Шарпен\nConstraint Radius , Радиус ограничения\nContinuous Droste , Непрерывная дроста\nContour Coherence , Согласованность контура\nContour Detection (%) , Обнаружение контура (%)\nContour Normalization , Нормализация контура\nContour Precision , Точность контура\nContour Threshold , Порог контура\nContour Threshold (%) , Порог контура (%)\nContours , Контуры\nContours + Flocon/Snowflake , Контуры + флокон/снежинка\nContours Recursion , Контуры Рекурсия\nContrail 35 , Контраил 35\nContrast , Контраст\nContrast (%) , Контраст (%)\nContrast Smoothness , Контрастная гладкость\nContrast Swiss Mask , Контрастная швейцарская маска\nContrast with Highlights Protection , Контраст с защитой от бликов\nContrasty Afternoon , Контрастный полдень\nContrasty Green , Контрастный зеленый\nContributors , Авторы\nControl Point 1 , Контрольная точка 1\nControl Point 2 , Контрольная точка 2\nControl Point 3 , Контрольная точка 3\nControl Point 4 , Контрольная точка 4\nControl Point 5 , Контрольная точка 5\nControl Point 6 , Контрольная точка 6\nConvolve , Волна\nCool , Крутой\nCool (256) , Круто (256)\nCool / Warm , Прохладно / тепло\nCopper , Медь\nCorner Brightness , Яркость углов\nCorrelated Channels , Связанные с Корреспондентами каналы\nCounter Clockwise , Против часовой стрелки\nCourse 4 , Курс 4\nCracks , Трещины\nCrease , Создать\nCreative Pack (33) , Творческий пакет (33)\nCrip Winter , Крип-зима\nCrisp Romance , хрустящий роман\nCrisp Warm , Хрустящее тепло\nCriterion , Критерий\nCrop , Обрезок\nCrop (%) , Растениеводство (%)\nCross Process CP 130 , Кросс-процесс CP 130\nCross Process CP 14 , Кросс-процесс CP 14\nCross Process CP 15 , Кросс-процесс CP 15\nCross Process CP 16 , Кросс-процесс CP 16\nCross Process CP 18 , Кросс-процесс CP 18\nCross Process CP 3 , Кросс-процесс CP 3\nCross Process CP 4 , Кросс-процесс CP 4\nCross Process CP 6 , Кросс-процесс CP 6\nCross-Hatch Amount , Крестообразный люк\nCrossed , Пересечённый\nCrosses 1 , Кресты 1\nCrosses 2 , Кресты 2\nCrosshair , Перекрестие\nCRT Sub-Pixels , ЭЛТ субпиксели\nCrystal , Кристалл\nCrystal Background , Хрустальный фон\nCube (256) , Куб (256)\nCubicle 99 , Кубик 99\nCubism , Кубизм\nCubism on Color Abstraction , Кубизм на цветной абстракции\nCup , Кубок\nCupid , Купидон\nCurvature , Кривая\nCurvature Shadow , Тень кривизны\nCurve Amount , Сумма кривой\nCurve Angle , Угол кривизны\nCurve Length , Длина кривой\nCurved , Изогнутый\nCurved Stroke , изогнутый ход\nCurves , Кривые\nCurves Previously Defined , Кривые Предыдущие заданные\nCustom , Пользовательский\nCustom Code [Global] , Таможенный код [Global]\nCustom Code [Local] , Пользовательский код [Местный]\nCustom Correction Map , Карта пользовательской коррекции\nCustom Depth Correction , Пользовательская коррекция глубины\nCustom Depth Maps Stream , Изготовленный на заказ поток карт глубины\nCustom Dictionary , Пользовательский словарь\nCustom Filter Code , Пользовательский код фильтрации\nCustom Formula , Индивидуальная формула\nCustom Kernel , Пользовательское ядро\nCustom Layers , Клиентские слои\nCustom Layout , Настраиваемый макет\nCustom Style (Bottom Layer) , Пользовательский стиль (нижний слой)\nCustom Style (Top Layer) , Пользовательский стиль (верхний слой)\nCustomize CLUT , Настроить CLUT\nCut , Вырезать\nCut & Normalize , Вырезать и нормализовать\nCutout , Вырезка\nCyan Factor , фактор циана\nCyan Shift , голубой смещение\nCyan Smoothness , Гладкость голубого цвета\nCycle Layers , Слои велосипеда\nCycles , Велосипеды\nCylinder , Цилиндр\nD and O 1 , D и O 1\nDamping per Octave , Демпфирование на октаву\nDark  Motive , Темный мотив\nDark Blues in Sunlight , Темно-синий при солнечном свете\nDark Boost , Темный удар\nDark Color , Темный цвет\nDark Edges , Темные края\nDark Green 02 , Темно-зеленый 02\nDark Green 1 , Темно-зеленый 1\nDark Grey , Темно-серый\nDark Length , Темная длина\nDark Motive , Темный мотив\nDark Pixels , Темные пиксели\nDark Place 01 , Темное место 01\nDark Screen , Темный экран\nDark Sky , Темное небо\nDark Walls , Темные стены\nDarker , Темнее\nDarkness , Темнота\nDarkness Level , Уровень темноты\nDate 39 , Дата 39\nDavid , Дэвид\nDay for Night , День на ночь\nDaylight Scene , Сцена дневного света\nDCP Dehaze , ДСР Дехаз\nDe-Anaglyph , Де-анаглиф\nDebug Font Size , Размер отладочного шрифта\nDecagon , Декагон\nDecompose , Разложить\nDecompose Channels , Разлагать каналы\nDecoration , Украшение\nDecreasing , Уменьшение\nDeep , Глубокий\nDeep Blue , Голубой цвет\nDeep Dark Warm , Глубокое темное тепло\nDeep High Contrast , Глубокий высокий контраст\nDeep Warm Fade , Глубокое теплое угасание\nDefault , По умолчанию\nDefects Contrast , Контраст дефектов\nDefects Density , Плотность дефектов\nDefects Size , Дефекты Размеры\nDefects Smoothness , Дефекты Гладкость\nDeform , Деформировать\nDelaunay-Oriented , Делоне-Ориентированный\nDelaunay: Portrait De Metzinger , Дело в том, что портрет Де Метцингера...\nDelaunay: Windows Open Simultaneously , Дело в том, что Windows открыта одновременно.\nDelete Layer Source , Источник удалить слой\nDelicatessen , Деликатесы\nDenim , Джинсовая ткань\nDenoise Simple 40 , Денуаза Простое 40\nDensity , Плотность\nDensity (%) , Плотность (%)\nDepth , Глубина\nDepth Fade In Frames , Глубина затухания в кадрах\nDepth Fade Out Frames , Глубина затухания кадров\nDepth Field Control , Контроль глубины поля\nDepth Map , Глубина Карта\nDepth Map Construction , Карта глубины Строительство\nDepth Map Only , Только карта глубины\nDepth Map Reconstruction , Карта глубины Реконструкция\nDepth Maps Only , Только Карты глубины\nDepth-Of-Field Type , Тип глубины поля\nDesaturate (%) , Натуральный (%)\nDesaturate Norm , Пониженная норма\nDescent Method , Метод спуска\nDescreen , Экран\nDesert Gold 37 , Пустыня Золото 37\nDespeckle , Деспекл\nDestination (%) , Назначение (%)\nDestination X-Tiles , Пункт назначения X-Плитки\nDestination Y-Tiles , Пункт назначения Y-панели\nDetail , Подробности\nDetail Level , Уровень детализации\nDetail Reconstruction Detection , Обнаружение деталей реконструкции\nDetail Reconstruction Smoothness , Детали Реконструкция Гладкость\nDetail Reconstruction Strength , Детали Реконструкционная прочность\nDetail Reconstruction Style , Детали Стиль реконструкции\nDetail Scale , Шкала деталей\nDetail Strength , Прочность деталей\nDetails , Подробности\nDetails Amount , Детали Количество\nDetails Equalizer , Детали эквалайзера\nDetails Scale , Шкала деталей\nDetails Smoothness , Детали Гладкость\nDetails Strength (%) , Детали Прочность (%)\nDetect Skin , Обнаружить кожу\nDeviation , Отклонение\nDiamond , Алмазный\nDiamond (Inv.) , Алмаз (инв.)\nDiamonds , Бриллианты\nDiamonds (Outline) , Бриллианты (Контур)\nDices , Цифры\nDices with Colored Numbers , Кубики с цветными цифрами\nDices with Colored Sides , Кубики с цветными сторонами\nDifference , Разница\nDifference Mixing , Смешивание различий\nDifference of Gaussians , Отличие гауссиан\nDifferent Axis , Различная ось\nDiffuse (%) , Диффузный (%)\nDiffuse Shadow , Диффузная Тень\nDiffusion , Диффузия\nDiffusion Tensors , Диффузионные тензоры\nDiffusivity , Диффузитивность\nDigits , Цифры\nDilatation , Дилатация\nDilate , Расшифровать\nDilation , Дилатация\nDilation - Original , Дилатация - Оригинал\nDilation / Erosion , дилатация / эрозия\nDimension , Измерение\nDimension [Diff] , Измерение [Дифф]\nDimension A , Измерение А\nDimensions (%) , Размеры (%)\nDimensions Pixels , Размеры Пиксели\nDipole: 1/(4*z^2-1) , Диполь: 1/(4*z^2-1)\nDirect , Прямой\nDirection , Направление\nDirections 23 , Указания 23\nDirichlet , Дирихлет\nDirty , Грязный\nDisable , Отключить\nDisabled , Инвалид\nDiscard Contour Guides , Направляющие контура отбрасывания\nDiscard Transparency , Прозрачность отбрасывания\nDisco , Дискотека\nDisplay , Показать\nDisplay Blob Controls , Управление блоками дисплея\nDisplay Color Axes , Цветные оси дисплея\nDisplay Contours , Контуры дисплея\nDisplay Coordinates , Координаты отображения\nDisplay Coordinates on Preview Window , Координаты отображения в окне предварительного просмотра\nDisplay Debug Info on Preview , Отображение отладочной информации на предварительном просмотре\nDistance , Расстояние\nDistance (Fast) , Расстояние (Быстро)\nDistance Transform , Преобразование расстояния\nDistort Lens , Искажающий объектив\nDistortion Factor , Коэффициент искажения\nDistortion Surface Angle , Искажение Угол поверхности\nDistortion Surface Position , Положение поверхности искажения\nDisturbance Scale-By-Factor , Шкала-фактор возмущения\nDisturbance X , Нарушение Х\nDisturbance Y , Нарушение Y\nDither Output , Либо выход\nDithering , Сглаживание\nDivide , Разделить\nDjango 25 , Джанго 25\nDodge Blur , Додж Пятно\nDodge Strength , Прочность при уклоне\nDOF Analyzer , анализатор DOF\nDog , Собака\nDomingo 145 , Доминго 145\nDon't Sort , Не сортируй.\nDoodle , Дудл\nDot Size , Размер точки\nDots , Точки\nDownload External Data , Скачать внешние данные\nDragon Curve , Кривая дракона\nDragonfly , Стрекоза\nDrawing Mode , Режим рисования\nDream , Мечтать\nDream 1 , Мечта 1\nDream 85 , Мечта 85\nDream Smoothing , Сглаживание снов\nDrop Blues , Капля блюза\nDrop Green Tint 14 , Зеленый оттенок 14\nDrop Shadow , Падение Тени\nDrop Water , Каплевая вода\nDuck , Утка\nDuplicate Bottom , Дублированное дно\nDuplicate Horizontal , Дублировать горизонтальный\nDuplicate Left , Дублировать слева\nDuplicate Right , Дублировать право\nDuplicate Top , Дублировать Топ\nDuplicate Vertical , Дублирующийся Вертикаль\nDuration , Продолжительность\nDynamic Range Increase , Динамическое увеличение диапазона\nEagle , Орел\nEarth , Земля\nEarth Tone Boost , Ускорение земных тонов\nEasy Skin Retouch , Легкий возврат кожи\nEdge Antialiasing , Сглаживание краев\nEdge Attenuation , Затухание краев\nEdge Behavior X , Поведение Крайнего Севера X\nEdge Behavior Y , Поведение края Y\nEdge Detect Includes Chroma , Обнаружение краев включает в себя хрому\nEdge Fidelity , Верность краев\nEdge Influence , Влияние краев\nEdge Mask , Крайняя маска\nEdge Sensitivity , Чувствительность к краям\nEdge Shade , Оттенок края\nEdge Simplicity , Простота края\nEdge Smoothness , Гладкость краев\nEdge Thickness , Толщина края\nEdge Threshold , Порог Кромки\nEdge Threshold (%) , Порог по краям (%)\nEdges , Края\nEdges (%) , Края (%)\nEdges [Animated] , Края [анимированные]\nEdges Offsets , Смещения по краям\nEdges on Fire , Края в огне\nEdges-0.5 (beware: Memory-Consuming!) , Края - 0,5 (берегись: Память-Потребитель!)\nEdges-1 (beware: Memory-Consuming!) , Края-1 (остерегайся: Память-Потребляющая!)\nEdges-2 (beware: Memory-Consuming!) , Края-2 (остерегайся: Память-Потребляющая!)\nEdgy Ember , Эдди Эмбер\nEffect Strength , Прочность эффекта\nEffect X-Axis Scaling , Эффект масштабирования по оси X\nEffect Y-Axis Scaling , Эффект масштабирования по оси Y\nEight Layers , Восемь слоев\nEight Threads , Восемь Нитей\nElegance 38 , Элегантность 38\nElephant , Слон\nElevation , Возвышение\nElevation (%) , Высота (%)\nEllipse Painting , эллипсовая живопись\nEllipse Ratio , коэффициент Эллипса\nEllipsionism , Эллипсионизм\nEllipsionism Opacity , Эллипсионизм Непрозрачность\nEllipsoid , Эллипсоид\nEmboss , Эмбосс\nEnable Antialiasing , Включить сглаживание\nEnable Interpolated Motion , Включить интерполированное движение\nEnable Morphology , Морфология благоприятствования\nEnable Paintstroke , Включить живописный мазок\nEnable Segmentation , Включить сегментацию\nEnchanted , Зачарованный\nEnd Color , Цвет конца\nEnd Frame Number , Номер конечной рамы\nEnd of Mid-Tones , Конец средних тонов\nEnd Point Connectivity , Связь с конечной точкой\nEnd Point Rate (%) , Ставка конечной точки (%)\nEnding Angle , Конечный угол\nEnding Color , Заключительный цвет\nEnding Feathering , Завершающее перо\nEnding Point (%) , Конечная точка (%)\nEnding Scale (%) , Шкала завершения (%)\nEnding Value , Конечная стоимость\nEnding X-Centering , Конец Х-Центра\nEnding Y-Centering , Конец Y-центра\nEngrave , Гравюра\nEnhance Detail , Увеличить детализацию\nEnhance Details , Подробнее\nEqualization , Уравнивание\nEqualization (%) , Уравнивание (%)\nEqualize , Уравнивать\nEqualize and Normalize , Уравнять и нормализовать\nEqualize at Each Step , Уравнивать на каждом этапе\nEqualize HSI-HSL-HSV , Уравнивать HSI-HSL-HSV\nEqualize HSV , Уравнивать HSV\nEqualize Light , Выравнивать свет\nEqualize Local Histograms , Уравнять местные гистограммы\nEqualize Shadow , Уравнять Тень\nEquation Plot [Parametric] , Слот уравнения [Параметрический]\nEquation Plot [Y=f(X)] , Участок уравнения [Y=f(X)]\nEquirectangular to Nadir-Zenith , Прямоугольный к Надир-Зениту.\nEric Ellerbrock (14) , Эрик Эллерброк (14)\nErosion , Эрозия\nErosion / Dilation , эрозия / дилатация\nEtch Tones , траурные тона\nEterna for Flog , Этерна для Флога\nEuclidean , Евклидан\nEuclidean - Polar , евклидов - полярный\nExclusion , Исключение\nExp(z) , Эксп(z)\nExpand , Развернуть\nExpand Background Reconstruction , Расширение Реконструкция фона\nExpand Shadows , Расширять Тени\nExpand Size , Увеличить размер\nExpanding Mirrors , Расширяющиеся зеркала\nExpired (fade) , Просрочено (исчезает)\nExpired (polaroid) , Истекший (поляроид)\nExpired 69 , истекло 69\nExponent , Экспонент\nExponent (Imaginary) , Экспонент (Воображаемый)\nExponent (Real) , Экспонент (Реальный)\nExponential , Экспоненциальный\nExport RGB-565 File , Экспорт RGB-565 Файл\nExposure , Выставка\nExpression , Выражение\nExtend 1px , Увеличить 1px\nExternal Transparency , Внешняя прозрачность\nExtra  Smooth , Extra Smooth\nExtract Foreground [Interactive] , Извлечь передний план [Интерактивный]\nExtract Objects , Извлечь предметы\nExtrapolate Color Spots on Transparent Top Layer , Экстраполированные пятна цвета на прозрачном верхнем слое\nExtrapolate Colors As , Экстраполированные цвета как\nExtrapolated Colors + Lineart , Экстраполированные цвета + линейный\nExtreme , Экстрим\nFactor , Фактор\nFade , Угасать\nFade End , Затухающий конец\nFade End (%) , Угасание (%)\nFade Layers , Угасающие слои\nFade Start , Затухающий старт\nFade Start (%) , Затухающий старт (%)\nFade to Green , Становиться зелёным\nFaded , Выцветший\nFaded (alt) , Выцветший (alt)\nFaded (analog) , Выцветший (аналоговый)\nFaded (extreme) , Выцветший (крайний)\nFaded (vivid) , Выцветший (яркий)\nFaded 47 , Выцветшие 47\nFaded Green , Выцветший зеленый\nFaded Look , Выцветший вид\nFaded Print , Выцветшая печать\nFaded Retro 01 , Выцветший ретро 01\nFaded Retro 02 , Выцветший ретро 02\nFading , Увядающий\nFading Shape , Затухающая форма\nFall Colors , Осенние цвета\nFar Point Deviation , Девиация дальних точек\nFast , Быстрый\nFast &#40;Approx.&#41; , Быстро и №40; Приблизительно и №41;\nFast (Low Precision) Preview , Быстрый (низкая точность) Предварительный просмотр\nFast Approximation , Быстрое приближение\nFast Blend , Быстрое смешивание\nFast Blend Preview , Предварительный просмотр быстрого смешивания\nFast Recovery , Быстрое восстановление\nFast Resize , Быстрый размер\nFaux Infrared , Инфракрасный фальшивый\nFeathering , Перо\nFeature Analyzer Smoothness , Гладкость анализатора функций\nFeature Analyzer Threshold , Пороговый анализатор характеристик\nFelt Pen , Фелт-Рен\nFFT Preview , Предварительный просмотр БПФ\nFibers , Волокна\nFibers Amplitude , Амплитуда волокна\nFibers Smoothness , Гладкость волокон\nFibrousness , Фиброзность\nFidelity Chromaticity , Верность Хроматичность\nFidelity Smoothness (Coarsest) , Гладкость верности (грубость)\nFidelity Smoothness (Finest) , Верность Гладкость (Лучшая)\nFidelity to Target (Coarsest) , Верность цели (Грубейшая)\nFidelity to Target (Finest) , Верность цели (Лучшая)\nFilename , Фильм\nFill Holes , Отверстия для заполнения\nFill Holes % , Заполнение отверстий %\nFill Transparent Holes , Заполнить Прозрачные отверстия\nFilled , Заполнено\nFilled Circles , Заполненные круги\nFilling , Заполнение\nFilm 0987 , Фильм 0987\nFilm 9879 , Фильм 9879\nFilm Highlight Contrast , Фильм Контрастное выделение\nFilm Print 01 , Фильм Печать 01\nFilm Print 02 , Фильм Печать 02\nFilmic , Фильм\nFilter Design , Дизайн фильтра\nFinal Image , Окончательное изображение\nFine , Хорошо\nFine 2 , Мелкий 2\nFine Details Smoothness , Тонкие детали Гладкость\nFine Details Threshold , Порог мелкой детали\nFine Noise , мелкий шум\nFine Scale , Тонкая шкала\nFinest (slower) , Лучший (медленнее)\nFinger Paint , Краска для пальцев\nFinger Size , Размер пальца\nFire Effect , Эффект пожара\nFireworks , Фейерверки\nFirst , Первый\nFirst Color , Первый цвет\nFirst Frame , Первый кадр\nFirst Offset , Первое смещение\nFirst Radius , Первый Радиус\nFirst Size , Первый размер\nFish-Eye , Рыбий глаз\nFish-Eye Effect , эффект \"рыбий глаз\nFitting Function , Функция установки\nFive Layers , Пять слоев\nFlag , Флаг\nFlag (256) , Флаг (256)\nFlat , Квартира\nFlat 30 , Квартира 30\nFlat Color , Плоский цвет\nFlat Regions Removal , Удаление плоских регионов\nFlat-Shaded , Плоская штриховка\nFlatness , Плоскостность\nFlavin , Флавин\nFlip , Флип\nFlip & Rotate Blocs , Флип и поворотные блоки\nFlip Cross-Hatch , Флип-кросс-люк\nFlip Left / Right , Перевернуть влево/вправо\nFlip Left/Right , Перевернуть влево/вправо\nFlip The Pattern , Перевернуть схему\nFlip Tolerance , Толерантность к переворачиванию\nFlower , Цветок\nFocale , Фокал\nFoggy Night , Туманная ночь\nFolder Name , Имя папки\nFolger 50 , Фолджер 50\nFont Colors , Цвета шрифта\nFont Height (px) , Высота шрифта (px)\nForce Gray , Серый Форс\nForce Re-Download from Scratch , Принудительная перезагрузка из Scratch\nForce Tiles to Have Same Size , Заставить плитку иметь тот же размер\nForce Transparency , Сила Транспарентность\nForeground Color , Цвет переднего плана\nForm , Форма\nFormula , Формула\nForward , Форвард\nForward  Horizontal , Форвард Горизонтальный\nForward Horizontal , Форвард Горизонтальный\nForward Vertical , Форвард Вертикаль\nFour Layers , Четыре слоя\nFour Threads , Четыре нити\nFourier Analysis , Фурье-анализ\nFourier Filtering , Фурье-фильтрация\nFourier Transform , преобразование Фурье\nFourier Watermark , Фурье Водяной знак\nFractal Noise , Фрактальный шум\nFractal Points , Фрактальные точки\nFractal Set , Набор фракталов\nFractal Whirl , Фрактальный вихрь\nFractalize , Фрактализовать\nFractured Clouds , Облака с трещинами\nFragment Blur , Фрагмент Пятна\nFrame (px) , Фрейм (px)\nFrame [Blur] , Кадр [Пятно]\nFrame [Cube] , Кадр [Куб]\nFrame [Fuzzy] , Фрейм [Нечеткий]\nFrame [Mirror] , Фрейм [Зеркало]\nFrame [Painting] , Рамка [Живопись]\nFrame [Pattern] , Кадр [Узор]\nFrame [Regular] , Рамка [Обычная]\nFrame [Round] , Кадр [Круглый]\nFrame [Smooth] , Фрейм [Гладкий]\nFrame as a New Layer , Каркас как новый слой\nFrame Color , Цвет рамки\nFrame Files Format , Рамка Файлы Формат\nFrame Format , Формат кадра\nFrame Size , Размер кадра\nFrame Skip , Скип рамы\nFrame Type , Тип кадра\nFrame Width , Ширина кадра\nFrames , Фреймы\nFrames Offset , Смещение рамки\nFreaky B&W , Причудливый чайник и бар\nFreaky Details , Причудливые подробности\nFreeze , Заморозить\nFrench Comedy , Французская комедия\nFrequency , Частота\nFrequency (%) , Частота (%)\nFrequency Analyzer , Анализатор частоты\nFrequency Range , Диапазон частот\nFreqy Pattern , фреки-маскарад\nFriends Hall of Fame , Зал славы друзей\nFrom Input , С входа\nFrom Reference Color , С эталонного цвета\nFrosted , Морозный\nFrosted Beach Picnic , Морозный пляжный пикник\nFruits , Фрукты\nFuji 160C , Фудзи 160С\nFuji 160C + , Фудзи 160С +\nFuji 160C ++ , Фудзи 160С ++\nFuji 160C - , Фудзи 160С -\nFuji 3510 (Constlclip) , Фудзи 3510 (Констлэп)\nFuji 3510 (Constlmap) , Фудзи 3510 (Констлмап)\nFuji 3510 (Cuspclip) , Фудзи 3510 (Cuspclip)\nFuji 3513 (Constlclip) , Фудзи 3513 (Констлэп)\nFuji 3513 (Constlmap) , Фудзи 3513 (Констлмап)\nFuji 3513 (Cuspclip) , Фудзи 3513 (Cuspclip)\nFuji 400H , Фудзи 400Н\nFuji 400H + , Фудзи 400H +\nFuji 400H ++ , Фудзи 400H ++\nFuji 400H - , Фудзи 400Н -\nFuji 800Z , Фудзи 800З\nFuji 800Z + , Фудзи 800Z +\nFuji 800Z ++ , Фудзи 800Z ++\nFuji 800Z - , Фудзи 800З -\nFuji Astia 100F , Фудзи Астия 100F\nFuji FP 100C , Фудзи FP 100C\nFuji FP-100c +++ , Fuji FP-100c + +++\nFuji FP-100c Negative , Fuji FP-100c Отрицательный\nFuji FP-100c Negative + , Fuji FP-100c Отрицательный +\nFuji FP-100c Negative ++ , Fuji FP-100c Отрицательный ++\nFuji FP-100c Negative +++ , Fuji FP-100c Отрицательный +++\nFuji FP-100c Negative ++a , Fuji FP-100c Отрицательный ++a\nFuji FP-100c Negative - , Fuji FP-100c Отрицательно -\nFuji FP-100c Negative -- , Fuji FP-100c Отрицательно...\nFuji FP-3000b + , Фудзи FP-3000b +\nFuji FP-3000b +++ , Fuji FP-3000b + +++\nFuji FP-3000b Negative , Фудзи FP-3000b Отрицательный\nFuji FP-3000b Negative + , Фудзи FP-3000b Отрицательный +\nFuji FP-3000b Negative ++ , Fuji FP-3000b Отрицательный ++\nFuji FP-3000b Negative +++ , Fuji FP-3000b Отрицательный +++\nFuji FP-3000b Negative - , Fuji FP-3000b Отрицательно -\nFuji FP-3000b Negative -- , Fuji FP-3000b Отрицательно...\nFuji FP-3000b Negative Early , Фудзи FP-3000b Отрицательный Ранний\nFuji HDR , ГДР Фудзи\nFuji Ilford Delta 3200 , Дельта Фудзи Ильфорда 3200\nFuji Ilford Delta 3200 + , Фудзи Ильфорд Дельта 3200 +\nFuji Ilford Delta 3200 ++ , Фудзи Ильфорд Дельта 3200 ++\nFuji Ilford Delta 3200 - , Дельта Фудзи Ильфорда 3200 -\nFuji Ilford HP5 , Фудзи Илфорд HP5\nFuji Ilford HP5 + , Фудзи Илфорд HP5 +\nFuji Ilford HP5 ++ , Фудзи Илфорд HP5 ++\nFuji Ilford HP5 - , Фудзи Илфорд HP5 -\nFuji Neopan 1600 , Фудзи-неопан 1600\nFuji Neopan 1600 + , Фудзи Неопан 1600 +\nFuji Neopan 1600 ++ , Фудзи Неопан 1600 ++\nFuji Neopan 1600 - , Фудзи Неопан 1600 -\nFuji Neopan Acros 100 , Фудзи Неопан Акрос 100\nFuji Sensia 100 , Фудзи Сенсия 100\nFuji Superia 100 , Фудзи Супер 100\nFuji Superia 100 + , Фудзи Суперия 100 +\nFuji Superia 100 ++ , Фудзи Суперия 100 ++\nFuji Superia 1600 , Фудзи Суперия 1600\nFuji Superia 1600 + , Фудзи Суперия 1600 +\nFuji Superia 1600 ++ , Фудзи Суперия 1600 ++\nFuji Superia 1600 - , Фудзи Суперия 1600 -\nFuji Superia 200 , Фудзи Суперия 200\nFuji Superia 400 , Фудзи Суперия 400\nFuji Superia 400 + , Фудзи Суперия 400 +\nFuji Superia 400 - , Фудзи Суперия 400 -\nFuji Superia 800 , Фудзи Суперия 800\nFuji Superia 800 + , Фудзи Суперия 800 +\nFuji Superia Reala 100 , Фудзи Суперия Реала 100\nFuji Velvia 50 , Фудзи-Вельвия 50\nFull , Полный текст\nFull (Allows Multi-Layers) , Полный (позволяет многослойность)\nFull (Slower) , Полный (Медленнее)\nFull Bottom/top , Полное Нижнее/Наверху\nFull Colors , Полные цвета\nFull HD Frame Packing , Упаковка Full HD кадров\nFull Layer Stack -Slow!- , Полнослойный стек - Медленно!\nFull Side by Side Keep Uncompressed , Полностью Бок о бок Держите без компрессии\nFull Side by Side Keep Width , Полная ширина бок о бок держать\nFull Side by Uncompressed , Полностью без компрессии\nFuturistic Bleak 1 , футуристическая утечка 1\nFuturistic Bleak 2 , футуристическая утечка 2\nFuturistic Bleak 3 , футуристическая утечка 3\nFuturistic Bleak 4 , футуристическая утечка 4\nG'MIC Operator , G'MIC Оператор\nG/M Smoothness , Гладкость Ж/М\nGain , Получить\nGames & Demos , Игры и демо-версии\nGamma , Гамма\nGamma (%) , Гамма (%)\nGamma Balance , Гамма-баланс\nGamma Compensation , Гамма компенсация\nGamma Equalizer , Гамма эквалайзер\nGaussian , гауссов\nGenerate Random-Colors Layer , Генерация слоя случайных цветов\nGeneric Fuji Astia 100 , Дженерик Фудзи Астия 100\nGeneric Fuji Provia 100 , Дженерик Fuji Provia 100\nGeneric Fuji Velvia 100 , Дженерик Фудзи Вельвия 100\nGeneric Kodachrome 64 , Дженерик Кодахром 64\nGeneric Kodak Ektachrome 100 VS , Дженерик Кодак Эктахром 100 ВС\nGeneric Skin Structure , Общая структура кожи\nGentle Mode (overrides Minimum Brightness and Minimun Red:Blue Ratio) , Нежный режим (переопределяет Минимальную яркость и Минимун Красный: Синий Соотношение)\nGeometry , Геометрия\nGlobal , Глобальный\nGlobal Mapping , Глобальное картирование\nGmicky & Wilber , Гмики и Вилбер\nGmicky & Wilber (by Mahvin) , Gmicky & Wilber (по Махвину)\nGmicky (by Deevad) , Гмики (по Диваду)\nGmicky (by Mahvin) , Гмики (по Махвину)\nGmicky (Deevad) , Гмики (Дивад)\nGmicky (Mahvin) , Гмики (Махвин)\nGmicky - Roddy , Гмики - Родди\nGoing for a Walk , Прогулка\nGold , Золотой\nGolden , Золотой\nGolden (bright) , Золотой (яркий)\nGolden (fade) , Золотой (исчезает)\nGolden (mono) , Золотой (моно)\nGolden (vibrant) , Золотой (яркий)\nGolden Gate , Золотые ворота\nGolden Night Softner 43 , Золотая ночь софтнер 43\nGolden Sony 37 , Золотая Сони 37\nGoldFX - Bright Spring Breeze , GoldFX - Светлый весенний бриз\nGoldFX - Bright Summer Heat , GoldFX - Яркий летний зной\nGoldFX - Hot Summer Heat , GoldFX - Горячая летняя жара\nGoldFX - Perfect Sunset 01min , GoldFX - Идеальный Закат 01 мин.\nGoldFX - Perfect Sunset 05min , GoldFX - Идеальный закат 05 минут\nGoldFX - Perfect Sunset 10min , GoldFX - Идеальный закат 10 мин.\nGoldFX - Spring Breeze , GoldFX - Весенний бриз\nGoldFX - Summer Heat , GoldFX - Летняя жара\nGood Morning , Доброе утро\nGouraud , Гуро\nGradient , Градиент\nGradient [Corners] , Градиент [Углы]\nGradient [Custom Shape] , Градиент [Custom Shape]\nGradient [from Line] , Градиент [от линии]\nGradient [Linear] , Градиент [Линейный]\nGradient [Radial] , Градиент [радиальный]\nGradient [Random] , Градиент [Случайность]\nGradient Norm , Градиентная норма\nGradient Preset , Градиентный подарок\nGradient RGB , Градиент RGB\nGradient Smoothness , Гладкость градиента\nGradient Values , Градиентные значения\nGrain , Зерно\nGrain (Highlights) , Зерно (Highlights)\nGrain (Midtones) , Зерно (Мидтоны)\nGrain (Shadows) , Зерно (Тени)\nGrain Extract , Экстракт зерна\nGrain Merge , Зерновое слияние\nGrain Only , Только зерно\nGrain Scale , Зерновая шкала\nGrain Tone Fading , Затухание зерновых тонов\nGrain Type , Тип зерна\nGranularity , Зернистость\nGraphic Boost , Графическое ускорение\nGraphic Colours , Графические цвета\nGraphic Novel , Графический роман\nGraphix Colors , графические цвета\nGrayscale , Шкала серого\nGreece , Греция\nGreen , Зеленый\nGreen 15 , Зелёный 15\nGreen 2025 , Зелёный 2025\nGreen Action , Зеленые действия\nGreen Afternoon , Зелёный День\nGreen Blues , Зелёный блюз\nGreen Conflict , Зелёный конфликт\nGreen Day 01 , Зеленый день 01\nGreen Day 02 , Зелёный день 02\nGreen Factor , Зелёный фактор\nGreen G09 , Зеленый G09\nGreen Indoor , Зелёный интерьер\nGreen Level , Зелёный уровень\nGreen Light , Зелёный свет\nGreen Mono , Зелёный Моно\nGreen Rotations , Зеленые Вращения\nGreen Shift , Зеленая смена\nGreen Smoothness , Зеленая гладкость\nGreen Wavelength , Зеленая длина волны\nGreen Yellow , Зелёный жёлтый\nGreen-Red , Зелено-красный\nGreenish Contrasty , Зеленоватая контрастность\nGreenish Fade , Зеленовато-синий\nGreenish Fade 1 , Зеленовато-синий 1\nGrey , Серый\nGreyscale , Шкала серого\nGrid , Сетка\nGrid [Cartesian] , Сетка [Картезиан]\nGrid [Hexagonal] , Сетка [Гексагональная]\nGrid [Triangular] , Сетка [Треугольная]\nGrid Divisions , Решётчатые дивизионы\nGrid Smoothing , сглаживание сетки\nGrid Width , Ширина сетки\nGrow Alpha , Вырасти Альфа\nGuide As , Путеводитель As\nGuide Mix , Гид-микс\nGuide Recovery , Руководство по восстановлению\nGum Leaf , лист десны\nGyroid , Гироид\nHackmanite , Хакманит\nHair Locks , Замочки для волос\nHaldCLUT Filename , Фильм HaldCLUT\nHalf Bottom/top , Половина Нижнее/Наверху\nHalf Side  by Side , Половина Бок о бок\nHalftone , Халфтон\nHalftone Shapes , формы полутонов\nHanoi Tower , Ханойская башня\nHappyness 133 , Счастье 133\nHard Dark , Твёрдая Тьма\nHard Light , Жесткий свет\nHard Mix , Твердая смесь\nHard Sketch , Твердый набросок\nHard Teal Orange , Твердый апельсин тела\nHarsh Day , трудный день\nHarsh Sunset , суровый закат\nHDR Effect (Tone Map) , HDR-эффект (тоновая карта)\nHeart , Сердце\nHearts , Сердца\nHearts (Outline) , Сердце (набросок)\nHedcut (Experimental) , Хедкут (экспериментальный)\nHeight , Высота\nHeight (%) , Высота (%)\nHeulandite , Хеуландит\nHexagon , Шестигранник\nHexagonal , Гексагональ\nHiddenite , Скрытый сайт\nHigh , Высокий\nHigh (Slower) , Высоко (Медленнее)\nHigh Frequency , Высокая частота\nHigh Frequency Layer , Высокочастотный слой\nHigh Key , Высокий Ключ\nHigh Pass , Высокий перевал\nHigh Quality , Высокое качество\nHigh Scale , Высокий масштаб\nHigh Speed , Высокая скорость\nHigh Value , Высокая ценность\nHigher Mask Threshold (%) , Порог высшей маски (%)\nHighlight , Выделить\nHighlight (%) , Выделите (%)\nHighlight Bloom , Выделите Блум\nHighlights , Основные моменты\nHighlights Abstraction , Основные моменты Абстракция\nHighlights Color Intensity , Выделяет Интенсивность цвета\nHighlights Hue , Основные моменты Оттенок\nHighlights Lightness , Выделяет Легкость\nHighlights Protection , Основные моменты Защита\nHighlights Selection , Основные моменты Выбор\nHighlights Threshold , Основные моменты Порог\nHilutite , Илутита\nHistogram , Гистограмма\nHistogram Analysis , Анализ гистограммы\nHistogram Transfer , Передача гистограммы\nHokusai: The Great Wave , Хокусай: Великая волна\nHomogeneity , Однородность\nHong Kong , Гонконг\nHope Poster , Плакат надежды\nHorisontal Length , Горизонтальная длина\nHorizon Leveling (deg) , Выравнивание горизонтов (градусов)\nHorizontal , Горизонтальный\nHorizontal (%) , горизонтальный (%)\nHorizontal Amount , Горизонтальная высота\nHorizontal Array , горизонтальный массив\nHorizontal Blur , горизонтальное пятно\nHorizontal Length , Горизонтальная длина\nHorizontal Size (%) , Горизонтальный размер (%)\nHorizontal Stripes , горизонтальные полосы\nHorizontal Tiles , горизонтальная плитка\nHorizontal Warp Only , Только искривление по горизонтали\nHorror Blue , Ужасная синева\nHot , Горячий сайт\nHot (256) , Горячий (256)\nHough Sketch , Хоф Скетч\nHough Transform , преобразование Хоуфа\nHouse , Дом\nHouseholder , Домовладелец\nHSI [all] , HSI [все]\nHSI [Intensity] , HSI [Интенсивность]\nHSL [all] , HSL [все]\nHSL [Lightness] , HSL [Легкость]\nHSL Adjustment , регулировка HSL\nHSV [all] , HSV [все]\nHSV [Saturation] , HSV [Насыщенность]\nHSV [Value] , HSV [Значение]\nHSV Select , HSV Выбор\nHue , Оттенок\nHue (%) , Оттенок (%)\nHue Band , группа оттенков\nHue Factor , фактор оттенка\nHue Lighten-Darken , Хью Лайтен-Даркен\nHue Max (%) , Максимальный оттенок (%)\nHue Min (%) , Хью Мин (%)\nHue Offset , смещение оттенка\nHue Range , диапазон оттенков\nHue Shift , сдвиг оттенков\nHue Smoothness , Гладкость оттенков\nHuman  2 , Человек 2\nHuman 1 , Человек 1\nHuman 2 , Человек 2\nHybrid Median - Medium Speed Softest Output , Гибридная Медиана - Средняя скорость мягкого выхода\nHyla 68 , Хила 68\nHyper Droste , гипердроста\nHypersthene , Гиперстен\nHypnosis , Гипноз\nIain Noise Reduction 2019 , Снижение уровня шума 2019\nIdentity , Идентификация\nIgnore , Игнорировать\nIgnore Current Aspect , Игнорировать текущий аспект\nIlford Delta 100 , Дельта Ильфорда 100\nIlford Delta 3200 , Дельта Ильфорда 3200\nIlford Delta 400 , Дельта Ильфорда 400\nIlford FP4 Plus 125 , Илфорд FP4 Plus 125\nIlford HPS 800 , Ильфордская HPS 800\nIlford Pan F Plus 50 , Илфорд Пан Плюс 50\nIlford XP2 , Илфорд XP2\nIlluminate 2D Shape , Иллюминат 2D Форма\nIllumination , Освещение\nIllustration Look , Иллюстрация Посмотрите\nImage , Изображение\nImage + Background , Изображение + фон\nImage + Colors (2 Layers) , Изображение + цвета (2 слоя)\nImage + Colors (Multi-Layers) , Изображение + цвета (многослойное)\nImage Contour Dimensions , Размеры контура изображения\nImage Smoothness , Гладкость изображения\nImage to Grab Color from (.Png) , Изображение для захвата цвета из (.Png)\nImage Weight , Вес изображения\nImport Data , Импортные данные\nImport RGB-565 File , Импорт RGB-565 Файл\nImpulses 5x5 , Импульсы 5х5\nImpulses 7x7 , Импульсы 7х7\nImpulses 9x9 , Импульсы 9х9\nInch , Дюйм\nInclude Opacity Layer , Включить слой непрозрачности\nIncreasing , Увеличение\nIndoor Blue , Крытый синий\nIndustrial 33 , Промышленные 33\nInfluence of Color Samples (%) , Влияние цветных проб (%)\nInformation , Информация\nInit. Resolution , Инит. Резолюция\nInit. Type , Инит. Введите .\nInit. With High Gradients Only , Инит. Только с высокими уклонами\nInitial Density , Первоначальная плотность\nInitialization , Инициализация\nInk Wash , промывка чернил\nInner , Внутренний\nInner Fading , Внутреннее затухание\nInner Length , Внутренняя длина\nInner Radius , Внутренний радиус\nInner Radius (%) , Внутренний радиус (%)\nInner Shade , Внутренний оттенок\nInpaint [Holes] , Покраска [Отверстия]\nInpaint [Morphological] , Краска [морфологическая]\nInpaint [Multi-Scale] , Покраска [Мульти-шкала]\nInpaint [Patch-Based] , Покраска [на основе патча]\nInpaint [Transport-Diffusion] , Краска [Транспорт-Диффузия]\nInput , Вход\nInput Folder , Входная папка\nInput Frame Files Name , Имя файла входной кадра\nInput Guide Color , Цвет руководства по вводу\nInput Layers , входные слои\nInput Transparency , Прозрачность ввода\nInput Type , Тип ввода\nInsert New CLUT Layer , Вставить новый слой CLUT\nInside , Внутри\nInside Color , Внутренний цвет\nInstant [Consumer] (54) , Мгновенный [Потребитель] (54)\nInstant [Pro] (68) , Мгновенный [Про] (68)\nIntarsia , Интарсия\nIntensity , Интенсивность\nIntensity of Purple Fringe , Интенсивность фиолетовой границы\nInter-Frames , Интерфреймы\nInterlace Horizontal , Горизонтальное сплетение\nInterp , Интерп\nInterpolate , Интерполировать\nInterpolation , Интерполяция\nInterpolation Type , тип Интерполяции\nInverse , Обратный ход\nInverse Depth Map , Обратная карта глубины\nInverse Radius , обратный радиус\nInverse Transform , Обратное преобразование\nInversions , Инверсии\nInvert Background / Foreground , Инвертировать фон / Передний план\nInvert Blur , Инвертировать Пятно\nInvert Canvas Colors , Инвертировать цвета холста\nInvert Colors , Инвертные цвета\nInvert Image Colors , Инвертировать цвета изображения\nInvert Luminance , Инвертируйте финансирование\nInvert Mask , Инвертная маска\nInward , Внутренний адрес\nIsophotes , Изофоты\nIsotropic , Изотропный\nIteration , Итерация\nIterations , Итерации\nJ.T. Semple (14) , Джей Ти Семпл (14)\nJapanese Maple Leaf , Японский кленовый лист\nJet (256) , Джет (256)\nJPEG Artefacts , артефакты JPEG\nJulia , Джулия\nJust Peachy , Просто Пиччи\nK-Factor , K-Фактор\nKaleidoscope [Blended] , Калейдоскоп [Смешанный]\nKaleidoscope [Polar] , Калейдоскоп [Полярный]\nKaleidoscope [Symmetry] , Калейдоскоп [Симметрия]\nKandinsky: Squares with Concentric Circles , Кандинский: Квадраты с концентрическими кругами\nKandinsky: Yellow-Red-Blue , Кандинский: Желто-красно-синий\nKeep , Хранить\nKeep Aspect Ratio , Сохранять соотношение сторон\nKeep Base Layer as Input Background , Держите базовый уровень в качестве входного фона\nKeep Borders Square , Площадь Сохранить границы\nKeep Color Channels , Сохранять цветные каналы\nKeep Colors , Сохранять цвета\nKeep Detail , Хранить Подробности\nKeep Detail Layer Separate , Держите детальный слой отдельно\nKeep Iterations as Different Layers , Держите итерации как разные слои.\nKeep Layers Separate , Держите слои отдельно\nKeep Original Image Size , Сохранить оригинальный размер изображения\nKeep Original Layer , Сохранить оригинальный слой\nKeep Tiles Square , Держите Площадь Плитки\nKeep Transparency in Output , Сохранить прозрачность на выходе\nKernel , Кернел\nKernel Multiplier , мультипликатор ядра\nKernel Type , тип ядра\nKey Factor , Ключевой фактор\nKey Frame Rate , Частота смены кадров\nKey Shift , Смещение клавиш\nKey Smoothness , Ключевая гладкость\nKeypoint Influence (%) , Ключевое влияние (%)\nKH 1 , КН 1\nKH 10 , КН 10\nKH 2 , КН 2\nKH 4 , КН 4\nKH 6 , КН 6\nKH 7 , КН 7\nKH 8 , КН 8\nKH 9 , КН 9\nKitaoka Spin Illusion , спиновая иллюзия Китаока\nKlee: Death and Fire , Клее: Смерть и огонь\nKlee: In the Style of Kairouan , Клее: В стиле Кайруана...\nKlee: Oriental Pleasure Garden Anagoria , Клее: Сад восточных удовольствий Анагория\nKlee: Polyphony 2 , Клее: Полифония 2\nKlee: Red Waistcoat , Клее: Красный Жилет\nKlimt: The Kiss , Климт: Поцелуй\nKodak 1-8 , Кодак 1-8\nKodak E-100 GX Ektachrome 100 , Кодак Е-100 GX Эктахром 100\nKodak Ektachrome 100 VS , Кодак Эктахром 100 ВС\nKodak Ektar 100 , Кодак Эктар 100\nKodak Elite 100 XPRO , Кодак Элит 100 XPRO\nKodak Elite Chrome 200 , Хром Кодак Элит 200\nKodak Elite Chrome 400 , Хром Кодак Элит 400\nKodak Elite Color 200 , Кодак Элит Цвет 200\nKodak Elite Color 400 , Кодак Элит Цвет 400\nKodak Kodachrome 200 , Кодак Кодахром 200\nKodak Kodachrome 25 , Кодак Кодахром 25\nKodak Kodachrome 64 , Кодак Кодахром 64\nKodak Portra 160 , Кодакский портрет 160\nKodak Portra 160 + , Портрет Кодак 160 +\nKodak Portra 160 ++ , Портрет Кодак 160 ++\nKodak Portra 160 - , Портрет Кодак 160 -\nKodak Portra 160 NC , Кодак Портрет 160 NC\nKodak Portra 160 NC + , Портрет Кодак 160 NC +\nKodak Portra 160 NC ++ , Портрет Кодак 160 NC ++\nKodak Portra 160 VC , Портрет Кодак 160 ВК\nKodak Portra 160 VC + , Портрет Кодак 160 VC +\nKodak Portra 400 , портрет Кодак 400\nKodak Portra 400 + , Кодак Портрет 400 +\nKodak Portra 400 ++ , Кодак Портрет 400 ++\nKodak Portra 400 - , Портрет Кодак 400 -\nKodak Portra 400 NC , Кодак Портрет 400 NC\nKodak Portra 400 NC + , Портрет Кодак 400 NC +\nKodak Portra 400 NC ++ , Портрет Кодак 400 NC ++\nKodak Portra 400 NC - , Портрет Кодак 400 NC -\nKodak Portra 400 UC , Кодак Портрет 400 UC\nKodak Portra 400 UC + , Портрет Кодак 400 UC +\nKodak Portra 400 UC ++ , Портрет Кодак 400 UC ++\nKodak Portra 400 VC , Портрет Кодак 400 ВК\nKodak Portra 400 VC + , Портрет Кодак 400 VC +\nKodak Portra 800 , портрет Кодак 800\nKodak Portra 800 + , Портрет Кодак 800 +\nKodak Portra 800 ++ , Портрет Кодак 800 ++\nKodak Portra 800 - , Портрет Кодак 800 -\nKodak Portra 800 HC , Кодак Портрет 800 HC\nKodak T-Max 100 , Кодак Т-Макс 100\nKodak T-Max 3200 , Кодак Т-Макс 3200\nKodak T-MAX 3200 + , Кодак T-MAX 3200 +\nKodak T-MAX 3200 ++ , Кодак T-MAX 3200 ++\nKodak T-Max 400 , Кодак Т-Макс 400\nKodak TMAX 3200 , Кодак TMAX 3200\nKodak TMAX 400 , Кодак TMAX 400\nKodak TRI-X 1600 , Кодак ТРИ-X 1600\nKodak TRI-X 400 , Кодак ТРИ-X 400\nKodak TRI-X 400 (alt) , Кодак ТРИ-X 400 (алт.)\nKodak TRI-X 400 + , Кодак ТРИ-X 400 +\nKodak TRI-X 400 ++ , Кодак TRI-X 400 ++\nKodak TRI-X 400 - , Кодак ТРИ-X 400 -\nKorben 214 , Корбен 214\nKuwahara , Кувахара\nKuwahara on Painting , Кувахара о живописи\nKyler Holland (10) , Кайлер Холланд (10)\nL1-Norm , L1-Норм\nL2-Norm , L2-Норм\nLab , Лаборатория\nLab (Chroma Only) , Лаборатория (только хрома)\nLab (Distinct) , Лаборатория.\nLab (Luma Only) , Лаборатория (только Люма)\nLab (Luma/Chroma) , Лаборатория (Luma/Chroma)\nLab (Mixed) , Лаборатория (смешанная)\nLab [a-Chrominance] , Лаборатория [a-Chrominance]\nLab [ab-Chrominances] , Лаборатория [ab-Chrominances]\nLab [all] , Лаборатория [все]\nLab [b-Chrominance] , Лаборатория [б-хромания]\nLab [Lightness] , Лаборатория [Легкость]\nLandscape , Пейзаж\nLandscape-1 , Ландшафт-1\nLandscape-10 , Ландшафт - 10\nLandscape-2 , Пейзаж-2\nLandscape-3 , Ландшафт-3\nLandscape-4 , Ландшафт-4\nLandscape-5 , Ландшафт-5\nLandscape-6 , Ландшафт-6\nLandscape-7 , Ландшафт-7\nLandscape-8 , Ландшафт - 8\nLandscape-9 , Ландшафт - 9\nLaplacian , Лаплацкий\nLarge , Большой\nLarge Noise , Большой шум\nLast , Последний\nLast Frame , Последний кадр\nLate Afternoon Wanderlust , Поздний полдень Вандерлюст\nLate Sunset , Поздний закат\nLava , Лава\nLava Lamp , Лава Лампа\nLayer , Слой\nLayer Processing , Обработка слоев\nLayers to Tiles , Слои к плитке\nLch [all] , Лх [все]\nLeaf , Лист\nLeaf Color , Цвет листьев\nLeaf Opacity (%) , Непрозрачность листьев (%)\nLeak Type , тип утечки\nLeft , Налево\nLeft  Foreground , Левый авансцентр\nLeft / Right Blur (%) , Слева/справа Размытие (%)\nLeft and Right Background , Левый и правый фон\nLeft and Right Foreground , Левый и правый передний план\nLeft and Right Image Streams , Потоки левого и правого изображений\nLeft Diagonal Foreground , Левый диагональный передний план\nLeft Foreground , Левый авансцентр\nLeft Position , Левое положение\nLeft Side Orientation , Ориентация на левую сторону\nLeft Slope , Левый Склон\nLeft Stream Only , Только левый поток\nLena , Лена\nLength , Длина\nLeno , Лено\nLenox 340 , Ленокс 340\nLenticular Density LPI , Лентикулярная плотность LPI\nLenticular Orientation , линзовидная ориентация\nLenticular Print , линзовая печать\nLevel , Уровень\nLevel Frequency , Частота уровней\nLevels , Уровни\nLife Giving Tree , Дерево, дающее жизнь\nLifestyle & Commercial-1 , Стиль жизни и коммерческий-1\nLifestyle & Commercial-10 , Стиль жизни и коммерческий-10\nLifestyle & Commercial-2 , Стиль жизни и коммерческий-2\nLifestyle & Commercial-3 , Стиль жизни и коммерческий-3\nLifestyle & Commercial-4 , Стиль жизни и коммерческий-4\nLifestyle & Commercial-5 , Стиль жизни и коммерческий-5\nLifestyle & Commercial-6 , Стиль жизни и коммерческий-6\nLifestyle & Commercial-7 , Стиль жизни и коммерческий-7\nLifestyle & Commercial-8 , Стиль жизни и коммерческий-8\nLifestyle & Commercial-9 , Стиль жизни и коммерческий-9\nLight (blown) , Свет (перегорел)\nLight Angle , Светлый угол\nLight Color , Светлый цвет\nLight Direction , Направление света\nLight Effect , Эффект света\nLight Glow , Световое сияние\nLight Grey , Светло-серый\nLight Leaks , Легкие течи\nLight Motive , Легкий мотив\nLight Patch , Световой патч\nLight Rays , Световые лучи\nLight Smoothness , Легкая гладкость\nLight Strength , Прочность на свет\nLight Type , Тип света\nLighten , Осветлить\nLighten Edges , Осветлить края\nLighter , Зажигалка\nLighting , Освещение\nLighting Angle , Угол освещения\nLightness , Легкость\nLightness (%) , Легкость (%)\nLightness Factor , Фактор лёгкости\nLightness Level , Уровень освещенности\nLightness Max (%) , Макс. Легкость (%)\nLightness Min (%) , Мин-лёгкость (%)\nLightness Shift , Сдвиг света\nLightness Smoothness , Легкость Гладкость\nLightning , Молния\nLighty Smooth , Светлый Гладкий\nLimit Hue Range , Предельный диапазон оттенков\nLine , Линия\nLine Opacity , Непрозрачность линии\nLine Precision , Точность линии\nLinear , Линейный\nLinear Burn , Линейный ожог\nLinear Light , Линейный свет\nLinear RGB , Линейный RGB\nLinear RGB [All] , Линейный RGB [Все]\nLinear RGB [Blue] , Линейный RGB [Синий]\nLinear RGB [Green] , Линейный RGB [Зеленый]\nLinear RGB [Red] , Линейный RGB [Красный]\nLinearity , Линейность\nLineart , Линейный сайт\nLineart + Color Spots , Линейный + цветные пятна\nLineart + Color Spots + Extrapolated Colors , Линейный + цветные пятна + экстраполированные цвета\nLineart + Colors , Линия + цвета\nLineart + Extrapolated Colors , Линейный + экстраполированные цвета\nLines , Линии\nLines (256) , Линии (256)\nLinify , Ссылка на .\nLissajous [Animated] , Лиссажус [Анимированный]\nLissajous Spiral , лиссаджуская спираль\nLittle , Маленький\nLittle Blue , Маленький синий\nLittle Cyan , Маленький голубой\nLittle Green , Зеленый\nLittle Key , Маленький ключ\nLittle Magenta , Маленький пурпурный\nLittle Red , Маленький Красный\nLittle Yellow , Маленький Желтый\nLN Amplititude , LN Амплитуда\nLN Amplitude , LN Амплитуда\nLN Average-Smoothness , LN Средняя гладкость\nLN Neightborhood-Smoothness , LN Ночное детство-Гладкость\nLN Size , LN Размер\nLocal  Normalisation , Локальная нормализация\nLocal Contrast , локальный контраст\nLocal Contrast Effect , Локальный контрастный эффект\nLocal Contrast Enhance , Повышение локального контраста\nLocal Contrast Enhancement , Повышение локального контраста\nLocal Contrast Style , Локальный контрастный стиль\nLocal Detail Enhancer , Локальный детский усилитель\nLocal Normalization , Локальная нормализация\nLocal Orientation , Локальная ориентация\nLocal Processing , Местная обработка\nLocal Similarity Mask , Маска местного сходства\nLocal Variance Normalization , Нормализация локальных вариаций\nLock Return Scaling to Source Layer , Блокировка масштабирования возврата на исходный уровень\nLock Source , Источник блокировки\nLock Uniform Sampling , Блокировка Единообразный отбор проб\nLog(z) , Журнал(z)\nLogarithmic Distortion , Логарифмическое искажение\nLogarithmic Distortion Axis Combination for X-Axis , Логарифмическая комбинация оси искажения для оси X\nLogarithmic Distortion Axis Combination for Y-Axis , Комбинация оси логарифмического искажения для оси Y\nLogarithmic Distortion X-Axis Direction , Логарифмическое Искажение Направление оси X\nLogarithmic Distortion Y-Axis Direction , Логарифмическое искажение Направление оси Y\nLomo , Ломо\nLomography Redscale 100 , Ломографическая шкала 100\nLomography X-Pro Slide 200 , Ломографическая камера X-Pro Слайд 200\nLookup , Посмотреть\nLookup Size , Размер поиска\nLoop Method , Метод петли\nLow , Низкий уровень\nLow Bias , Низкий Уровень Предвзятости\nLow Contrast Blue , Низкоконтрастный синий\nLow Frequency , Низкая частота\nLow Frequency Layer , Низкочастотный слой\nLow Key , Низкий Ключ\nLow Key 01 , Низкий ключ 01\nLow Scale , Низкий масштаб\nLow Value , Низкая стоимость\nLower Layer Is the Bottom Layer for All Blends , Нижний слой - это нижний слой для всех смесей.\nLower Mask Threshold (%) , Нижний порог маски (%)\nLower Side Orientation , Нижняя боковая ориентация\nLowercase Letters , Нижний регистр Буквы\nLowlights Crossover Point , Низко освещенная точка пересечения\nLowres CLUT , Лоурес ЗАКРЫТО\nLucky 64 , счастливчик 64\nLuma Noise , шум Лумы\nLuminance Factor , фактор яркости\nLuminance Level , Уровень яркости\nLuminance Only , Только яркость\nLuminance Only (Lab) , Только яркость (Лаборатория)\nLuminance Only (YCbCr) , Только яркость (YCbCr)\nLuminance Shift , Сдвиг яркости\nLuminance Smoothness , Гладкость яркости\nLuminosity from Color , Светимость от цвета\nLuminosity Type , Тип светимости\nLush Green Summer , Летняя пышная зелень\nLutify.Me (7) , Лютифицируй. Я (7)\nLUTs Pack , СПОИ пакет\nLylejk's Painting , Картина Лайлейка\nMagenta Coffee , Кофе \"Пурпурный\nMagenta Day , День пурпурного цвета\nMagenta Day 01 , Пурпурный день 01\nMagenta Dream , пурпурная мечта\nMagenta Factor , пурпурный фактор\nMagenta Shift , пурпурный сдвиг\nMagenta Smoothness , пурпурная гладкость\nMagenta Yellow , пурпурный жёлтый\nMagenta-Yellow , Пурпурно-желтый\nMagic Details , Волшебные детали\nMagnitude / Phase , Магнитуда / Фаза\nMail , Почта\nMake Hue Depends on Region Size , Сделать оттенок зависит от размера региона\nMake Seamless [Patch-Based] , Сделать бесшовным [на основе патча]\nMake Squiggly , Сделать хрустящей\nMake Up , Макияж\nMandelbrot , Мандельброт\nMandelbrot - Julia Sets , Мандельброт - Джулия Сетс\nMandelbrot Explorer , исследователь Мандельброта\nManhattan , Манхэттен\nManual , Руководство\nManual Controls , Ручное управление\nMap , Карта\nMap Tones , Тоны карты\nMapping , Картирование\nMarble , Мрамор\nMargin (%) , Маржа (%)\nMascot Image , Талисманное изображение\nMasculine , Мужской\nMask , Маска\nMask + Background , Маска + фон\nMask as Bottom Layer , Маска как нижний слой\nMask By , Маска мимо\nMask Color , Цвет маски\nMask Contrast , Контраст масок\nMask Creator , Создатель Маски\nMask Dilation , Расширение маски\nMask Size , Размер маски\nMask Smoothness (%) , Гладкость маски (%)\nMask Type , Тип маски\nMasked Image , Маскированное изображение\nMasking , Маскировка\nMatch Colors With , Матч цвета с\nMatching Precision (Smaller Is Faster) , Соответствующая точность (Меньше - быстрее)\nMath Symbols , Математические символы\nMatrix , Матрица\nMax , Макс\nMax Angle , Макс Угол\nMax Angle Deviation (deg) , Максимальное отклонение угла (град)\nMax Area , Область Макс\nMax Curve , Макс-Куровень\nMax Iterations , Максимальное количество итераций\nMax Length (%) , Макс. длина (%)\nMax Offset (%) , Макс. смещение (%)\nMax Radius , Макс Радиус\nMax Threshold , Макс Порог\nMax-T , Макс-Т\nMaximal Area , Максимальная площадь\nMaximal Color Saturation , Максимальная насыщенность цвета\nMaximal Highlights , Максимальные показатели\nMaximal Radius , Максимальный радиус\nMaximal Seams per Iteration (%) , Максимальное количество швов за одну итерацию (%)\nMaximal Size , Максимальный размер\nMaximal Value , Максимальное значение\nMaximum , Максимум\nMaximum Dimension , Максимальный размер\nMaximum Image Size , Максимальный размер изображения\nMaximum Number of Image Colors , Максимальное количество цветов изображения\nMaximum Number of Output Layers , Максимальное количество выходных слоев\nMaximum Red:Blue Ratio in the Fringe , Максимальный Красный: Синий Соотношение в Грань\nMaximum Saturation , Максимальное насыщение\nMaximum Size Factor , Максимальный размерный коэффициент\nMaximum Value , Максимальное значение\nMaze , Лабиринт\nMaze Type , Тип лабиринта\nMcKinnon 75 , Маккиннон 75\nMean Color , Средний цвет\nMean Curvature , Средняя кривизна\nMedian , Медиан\nMedian (beware: Memory-Consuming!) , Медиан (остерегайся: Память-Потребность!)\nMedian Radius , Медианское Радиус\nMedium , Средний\nMedium 3 , средняя величина 3\nMedium Details Smoothness , Детали среднего размера Гладкость\nMedium Details Threshold , Средний Порог Детали\nMedium Frequency Layer , Среднечастотный слой\nMedium Scale (Original) , Средняя шкала (Оригинал)\nMedium Scale (Smoothed) , Средняя шкала (сглаженная)\nMemories , Воспоминания\nMerge Brightness / Colors , Слияние яркости / цвета\nMerge Layers? , Слияние слоев?\nMerging Mode , Режим слияния\nMerging Option , Вариант объединения\nMerging Steps , Слияние ступеней\nMess with Bits , Месс с битами\nMetal , Металл\nMetallic Look , Металлический вид\nMethod , Метод\nMetric , Метрика\nMetropolis , Метрополис\nMicro/macro Details  Adjusted , Микро/макро Подробности Настроено\nMid Grey , Средний серый\nMid Noise , Средний шум\nMid Offset , Среднее смещение\nMid Tone Contrast , Контраст средних тонов\nMid-Dark Grey , Среднетемно-серый\nMid-Light Grey , Средне-светло-серый серый\nMid-Tones , Средние тона\nMiddle Grey , Средне- серый\nMiddle Scale , Средний масштаб\nMidtones Brightness , Яркость средних тонов\nMidtones Color Intensity , Интенсивность цвета средних тонов\nMidtones Hue , Мидтонс Хью\nMighty Details , Могучие детали\nMilo 5 , Мило 5\nMin , Мин\nMin Angle Deviation (deg) , Мин Угол Отклонение (град)\nMin Area % , Мин. район %\nMin Cut (%) , Мин. разрез (%)\nMin Length (%) , Мин Длина (%)\nMin Offset (%) , Мин Смещение (%)\nMin Radius , Мин Радиус\nMin Threshold , Мин Порог\nMin-T , Мин-Т\nMineral Mosaic , Минеральная мозаика\nMinimal Area , Минимальная площадь\nMinimal Area (%) , Минимальная площадь (%)\nMinimal Color Intensity , Минимальная интенсивность цвета\nMinimal Highlights , Минимальные яркости\nMinimal Path , Минимальный путь\nMinimal Radius , Минимальный радиус\nMinimal Region Area , Минимальный район\nMinimal Scale (%) , Минимальная шкала (%)\nMinimal Shape Area , Минимальная площадь формы\nMinimal Size , Минимальный размер\nMinimal Size (%) , Минимальный размер (%)\nMinimal Stroke Length , Минимальная длина хода\nMinimal Value , Минимальное значение\nMinimalist Caffeination , Минималистская кофеинация\nMinimum , Минимум\nMinimum Brightness , Минимальная яркость\nMinimum Red:Blue Ratio in the Fringe , Минимальное соотношение красного и синего цветов на границе\nMirror , Зеркало\nMirror Effect , Зеркальный эффект\nMirror X , Зеркало Х\nMirror Y , Зеркало Y\nMirror-X , Зеркало-X\nMix , Микс\nMixed Mode , Смешанный режим\nMixer [CMYK] , Миксер [CMYK]\nMixer [HSV] , Миксер [HSV]\nMixer [Lab] , Миксер [Лаборатория]\nMixer [PCA] , Смеситель [PCA]\nMixer [RGB] , Миксер [RGB]\nMixer [YCbCr] , Миксер [YCbCr]\nMixer Mode , Режим микшера\nMixer Style , Стиль смесителя\nMod , Мод\nMode , Режим\nModern Film , Современный фильм\nModulo Value , Модульное значение\nMoir&eacute; Animation , Муар и орех; Анимация\nMoire Removal , Удаление муара\nMoire Removal Method , Метод удаления муара\nMona Lisa , Мона Лиза\nMondrian: Composition in Red-Yellow-Blue , Мондриан: Состав в красно-желто-синем цвете\nMondrian: Evening; Red Tree , Мондриан: Добрый вечер; Красное дерево\nMondrian: Gray Tree , Мондриан: Серое дерево\nMonet: San Giorgio Maggiore at Dusk , Моне: Сан-Джорджо Маджоре на закате.\nMonet: Water-Lily Pond , Моне: Водяной пруд с лилиями\nMonet: Wheatstacks - End of Summer , Моне: стог пшеницы - конец лета\nMonkey , Обезьяна\nMono , Моно\nMono Tinted , Моно-тонированный\nMono+G , моно+G\nMono+R , моно+R\nMono+Ye , Моно+Да\nMono-Directional , Мононаправленный\nMonochrome , Монохромный\nMonochrome 1 , монохромный 1\nMonochrome 2 , монохромный 2\nMontage , Монтаж\nMontage Type , Тип монтажа\nMoody-1 , Муди-1\nMoody-10 , Муди-10\nMoody-2 , Муди-2\nMoody-3 , Муди-3\nMoody-4 , Муди-4\nMoody-5 , Муди-5\nMoody-6 , Муди-6\nMoody-7 , Муди-7\nMoody-8 , Муди-8\nMoody-9 , Муди-9\nMoon2panorama , Лунная2панорама\nMoonlight 01 , Лунный свет 01\nMoonrise , Восход Луны\nMorning 6 , утро 6\nMorph [Interactive] , Морф [интерактивный]\nMorph Layers , морфологические слои\nMorphological - Fastest Sharpest Output , Морфологический - Самый быстрый острый выход\nMorphological Closing , морфологическое закрытие\nMorphological Filter , морфологический фильтр\nMorphology Painting , морфологическая живопись\nMorphology Strength , Морфология Сила\nMorroco 16 , Морроко 16\nMosaic , Мозаика\nMost , Большинство\nMostly Blue , В основном голубой\nMotion Analyzer , Анализатор движения\nMoviz (48) , Мовиз (48)\nMoviz 1 , Мовиз 1\nMoviz 10 , Мовиз 10\nMoviz 11 , Мовиз 11\nMoviz 12 , Мовиз 12\nMoviz 13 , Мовиз 13\nMoviz 14 , Мовиз 14\nMoviz 15 , Мовиз 15\nMoviz 16 , Мовиз 16\nMoviz 17 , Мовиз 17\nMoviz 18 , Мовиз 18\nMoviz 19 , Мовиз 19\nMoviz 2 , Мовиз 2\nMoviz 20 , Мовиз 20\nMoviz 21 , Мовиз 21\nMoviz 22 , Мовиз 22\nMoviz 23 , Мовиз 23\nMoviz 24 , Мовиз 24\nMoviz 25 , Мовиз 25\nMoviz 26 , Мовиз 26\nMoviz 27 , Мовиз 27\nMoviz 28 , Мовиз 28\nMoviz 29 , Мовиз 29\nMoviz 3 , Мовиз 3\nMoviz 30 , Мовиз 30\nMoviz 31 , Мовиз 31\nMoviz 32 , Мовиз 32\nMoviz 33 , Мовиз 33\nMoviz 34 , Мовиз 34\nMoviz 35 , Мовиз 35\nMoviz 36 , Мовиз 36\nMoviz 37 , Мовиз 37\nMoviz 38 , Мовиз 38\nMoviz 39 , Мовиз 39\nMoviz 4 , Мовиз 4\nMoviz 40 , Мовиз 40\nMoviz 41 , Мовиз 41\nMoviz 42 , Мовиз 42\nMoviz 43 , Мовиз 43\nMoviz 44 , Мовиз 44\nMoviz 45 , Мовиз 45\nMoviz 46 , Мовиз 46\nMoviz 47 , Мовиз 47\nMoviz 48 , Мовиз 48\nMoviz 5 , Мовиз 5\nMoviz 6 , Мовиз 6\nMoviz 7 , Мовиз 7\nMoviz 8 , Мовиз 8\nMoviz 9 , Мовиз 9\nMuch , Много\nMuch Blue , Много синего\nMuch Green , Много зелени\nMuch Red , Много красного\nMulti-Layer Etch , Многослойное травление\nMultiple Colored Shapes Over Transp. BG , Многоцветные формы над транспарантом. ГЕНЕРАЛЬНЫЙ СЕКРЕТАРИАТ\nMultiple Layers , Многослойные\nMultiplier , Мультипликатор\nMultiply , Умножить\nMultiscale Operator , Многофункциональный оператор\nMunch: The Scream , Манч: Крик\nMute Shift , Немой сдвиг\nMuted 01 , приглушённый 01\nMuted Fade , приглушённый фадеж\nMystic Purple Sunset , Мистический Фиолетовый Закат\nNah , Нах\nNaif , Наиф\nName , Имя\nNatural (vivid) , Натуральный (яркий)\nNature & Wildlife-1 , Природа и дикая природа - 1\nNature & Wildlife-10 , Природа и дикая природа-10\nNature & Wildlife-2 , Природа и дикая природа-2\nNature & Wildlife-3 , Природа и дикая природа-3\nNature & Wildlife-4 , Природа и дикая природа-4\nNature & Wildlife-5 , Природа и дикая природа-5\nNature & Wildlife-6 , Природа и дикая природа-6\nNature & Wildlife-7 , Природа и дикая природа-7\nNature & Wildlife-8 , Природа и дикая природа - 8\nNature & Wildlife-9 , Природа и дикая природа-9\nNb Circles Surrounding , Nb Круги Окружающие\nNear Black , Почти черный\nNearest , Ближайший\nNearest Neighbor , Ближайший сосед\nNeat Merge , Изящное слияние\nNegate , Отрицать\nNegation , Отрицание\nNegative , Отрицательный\nNegative [Color] (13) , Отрицательный [Цвет] (13)\nNegative [New] (39) , Отрицательный [Новый] (39)\nNegative [Old] (44) , Отрицательный [Старый] (44)\nNegative Color Abstraction , Отрицательная цветовая абстракция\nNegative Colors , Отрицательные цвета\nNegative Effect , Отрицательный эффект\nNeighborhood Size (%) , Размер района (%)\nNeighborhood Smoothness , Соседская гладкость\nNemesis , Немезида\nNeon 770 , Неон 770\nNeon Lightning , неоновая молния\nNeumann , Нейман\nNeutral Color , нейтральный цвет\nNeutral Teal Orange , нейтральный апельсин чирка\nNeutral Warm Fade , Нейтральное потепление\nNew Curves [Interactive] , Новые кривые [интерактивные]\nNewspaper , Газета\nNewton , Ньютон\nNewton Fractal , Ньютонский фрактал\nNight 01 , 01-я ночь\nNight Blade 4 , Ночное лезвие 4\nNight From Day , Ночь с дня\nNight King 141 , Ночной король 141\nNight Spy , Ночной Шпион\nNine Layers , Девять слоев\nNo Masking , Без маскировки\nNo Recovery , Нет Восстановления\nNo Rescaling , Без пересчета\nNo Transparency , Нет Прозрачность\nNoise , Шум\nNoise [Additive] , Шум [Добавка]\nNoise [Perlin] , Шум [Перлин]\nNoise [Spread] , Шум [Распространение]\nNoise A , Шум А\nNoise B , Шум B\nNoise C , Шум С\nNoise D , Шум D\nNoise Level , Уровень шума\nNoise Scale , Шкала шума\nNoise Type , Тип шума\nNon / No , Нет\nNon-Linearity , Нелинейность\nNone , Нет\nNone (Allows Multi-Layers) , Нет (Позволяет многослойность)\nNone- Skip , None-Scip\nNorm Type , Тип Нормы\nNormal , Нормальный\nNormal Map , Нормальная карта\nNormal Output , нормальный выход\nNormalization , Нормализация\nNormalize , Нормализовать\nNormalize Brightness , Нормализовать яркость\nNormalize Colors , Нормализовать цвета\nNormalize Illumination , Нормализовать освещение\nNormalize Input , Нормализовать вход\nNormalize Luma , Нормализовать Луму\nNormalize Scales , Нормализуют весы\nNostalgia Honey , Ностальгия, милая\nNostalgic , Ностальгический\nNothing , Ничего\nNumber , Номер\nNumber of Added Frames , Количество добавленных кадров\nNumber of Angles , Количество углов\nNumber of Clusters , Количество кластеров\nNumber of Colors , Количество цветов\nNumber of Frames , Количество кадров\nNumber of Inter-Frames , Количество межкадров\nNumber of Iterations per Scale , Количество итераций по шкале\nNumber of Key-Frames , Количество ключевых кадров\nNumber of Levels , Количество уровней\nNumber of Matches (Coarsest) , Количество совпадений (грубейший)\nNumber of Matches (Finest) , Количество матчей (Лучшие)\nNumber of Orientations , Число ориентаций\nNumber Of Rays , Количество лучей\nNumber of Scales , Количество шкал\nNumber of Sizes , Количество размеров\nNumber of Streaks , Количество полос\nNumber of Teeth , Количество зубьев\nNumber of Tones , Количество тонов\nObject Animation , Анимация объектов\nObject Ratio , Соотношение объектов\nObject Tolerance , Толерантность к объектам\nOctagon , Октагон\nOctagonal , Октагональный\nOctaves , Октавы\nOddness (%) , Нечётность (%)\nOff , Офф\nOffset , Офсет\nOffset (%) , Смещение (%)\nOffset Angle Rays Layer 1 , Угловые лучи смещения Слой 1\nOffset Angle Rays Layer 2 , Слои 2 лучей с углами смещения\nOhad Peretz (7) , Охад Перец (7)\nOhta8 , Ота8\nOld Method - Slowest , Старый метод - самый медленный\nOld Photograph , Старая фотография\nOld West , Старый Запад\nOld-Movie Stripes , Полосы старого кино\nOldschool 8bits , Старая школа 8бит\nON1 Photography (90) , ON1 Фотография (90)\nOnce Upon a Time , Однажды\nOne Layer , Один слой\nOne Layer (Horizontal) , Один слой (по горизонтали)\nOne Layer (Vertical) , Один слой (вертикальный)\nOne Layer per Single Color , Один слой на один цвет\nOne Layer per Single Region , Один слой на один регион\nOne Thread , Одна Нить\nOnly Leafs , Только Листья\nOnly Red , Только Красный\nOnly Red and Blue , Только красный и синий\nOpacity , Непрозрачность\nOpacity (%) , Непрозрачность (%)\nOpacity as Heightmap , Непрозрачность как Высота Карты\nOpacity Contours , Непрозрачность Контуры\nOpacity Factor , Коэффициент непрозрачности\nOpacity Gain , Прирост непрозрачности\nOpacity Gamma , Гамма непрозрачности\nOpacity Snowflake , Непрозрачность Снежинка\nOpacity Threshold (%) , Порог непрозрачности (%)\nOpaque Pixels , непрозрачные пиксели\nOpaque Regions on Top Layer , Непрозрачные регионы на верхнем слое\nOpaque Skin , непрозрачная кожа\nOpen Interactive Preview , Открытый интерактивный предварительный просмотр\nOpening , Открытие\nOperation Yellow , Эксплуатация Желтый\nOperator , Оператор\nOpposing , Против\nOptimized Lateral Inhibition , Оптимизированное боковое торможение\nOrange Dark 4 , Оранжевый Тёмный 4\nOrange Dark 7 , Оранжевый Тёмный 7\nOrange Dark Look , Оранжевый темный взгляд\nOrange Tone , Оранжевый тон\nOrange Underexposed , Оранжевый Неэкспонированный\nOranges , Апельсины\nOrder , Заказать\nOrder By , Порядок по\nOrientation , Ориентация\nOrientation Coherence , Ориентация Согласованность\nOrientation Only , Только ориентация\nOrientations , Ориентации\nOriginal , Оригинал\nOriginal - (Opening + Closing)/2 , Оригинал - (Открытие + Закрытие)/2\nOriginal - Erosion , Оригинал - Эрозия\nOriginal - Opening , Оригинал - Открытие\nOrthogonal Radius , ортогональный радиус\nOrton Glow , Ортон Глоу\nOrwo NP20-GDR , Орво НП20-ГДР\nOthers (69) , Другие (69)\nOuline Color , уличный цвет\nOuter , Внешний\nOuter Fading , Внешнее затухание\nOuter Length , Внешняя длина\nOuter Radius , Внешний радиус\nOutline , Описание\nOutline (%) , Набросок (%)\nOutline Color , Общий цвет\nOutline Contrast , Общий контраст\nOutline Opacity , Краткий обзор Непрозрачность\nOutline Size , Общий размер\nOutline Smoothness , Гладкость линий\nOutline Thickness , Общая толщина\nOutlined , Размещено на сайте\nOutput , Выход\nOutput As , Выход Как\nOutput as Files , Выход в виде файлов\nOutput as Frames , Выход в виде кадров\nOutput as Multiple Layers , Выход как многослойный\nOutput as Separate Layers , Выход в виде отдельных слоев\nOutput Ascii File , Выходной файл Ascii\nOutput Chroma NR , Выход Chroma NR\nOutput CLUT , Выходной затвор\nOutput CLUT Resolution , Разрешение выходного затвора\nOutput Coordinates File , Выходные координаты Файл\nOutput Corresponding CLUT , Выход Соответствующий затвор\nOutput Directory , Выходной каталог\nOutput Each Piece on a Different Layer , Выводить каждую деталь на другой слой\nOutput Filename , Имя выходного файла\nOutput Files , Выходные файлы\nOutput Folder , Выходная папка\nOutput Format , Формат вывода\nOutput Frames , Выходные рамки\nOutput Height , Выходная высота\nOutput HTML File , Выходной HTML-файл\nOutput Layers , Выходные слои\nOutput Mode , Режим выхода\nOutput Multiple Layers , Выходные многослойные\nOutput Preset as a HaldCLUT Layer , Выходная предустановка в виде слоя HaldCLUT\nOutput Region Delimiters , Выход Региональные делимитеры\nOutput Saturation , Выходное насыщение\nOutput Sharpening , Выход Заточка\nOutput Stroke Layer On , Выходной слой-инсульт Вкл\nOutput to Folder , Выход в папку\nOutput Type , Тип выхода\nOutput Width , Выходная ширина\nOutside , Снаружи\nOutside Color , Внешний цвет\nOutside-In , Снаружи\nOutward , Внешний\nOverall Blur , Общее размытие\nOverall Contrast , Общий контраст\nOverall Lightness , Общая легкость\nOverlap (%) , Перекрытие (%)\nOverlay , Наложение\nOversample , Перевыборка\nOvershoot , Пересмотреть\nPack , Упаковать\nPack Sprites , Упаковка спрайтов\nPacman , Пакман\nPadding (px) , Паддинг (px)\nPaint , Краска\nPaint Daub , Краска Дауб\nPaint Effect , Эффект краски\nPainter's Edge Protection Flow , Поток защиты кромок художника\nPainter's Smoothness , Гладкость живописца\nPainter's Touch Sharpness , Острота прикосновения художника\nPainting , Картина\nPainting Opacity , Живопись Непрозрачность\nPaladin , Паладин\nPaladin 1875 , Паладин 1875\nPaper Texture , Текстура бумаги\nParallel Processing , Параллельная обработка\nParrots , Попугаи\nPasadena 21 , Пасадена 21\nPassing By , Проходя мимо\nPastell Art , Пастельное искусство\nPatch , Патч\nPatch Measure , Меры по устранению неполадок\nPatch Size , Размер патча\nPatch Size for Analysis , Размер патча для анализа\nPatch Size for Synthesis , Размер патча для синтеза\nPatch Size for Synthesis (Final) , Размер патча для синтеза (окончательный)\nPatch Smoothness , Гладкость пятна\nPatch Variance , Патч-вариант\nPattern , Образец\nPattern Angle , Угол узора\nPattern Height , Высота узора\nPattern Type , Тип схемы\nPattern Variation 1 , Вариация модели 1\nPattern Variation 2 , Вариация модели 2\nPattern Variation 3 , Вариация модели 3\nPattern Weight , Узорчатый вес\nPattern Width , Ширина узора\nPaw , Лапа\nPCA Transfer , передача PCA\nPea Soup , Гороховый суп\nPen Drawing , Рисунок ручкой\nPenalize Patch Repetitions , Штрафовать повторы исправлений\nPencil , Карандаш\nPencil Amplitude , Амплитуда карандаша\nPencil Portrait , Карандашный портрет\nPencil Size , Размер карандаша\nPencil Smoother Edge Protection , Защита карандаша от размывания краев\nPencil Smoother Sharpness , Карандаш Гладкая Острота\nPencil Smoother Smoothness , Карандаш Гладкая гладкость\nPencil Type , Тип карандаша\nPencils , Карандаши\nPentagon , Пентагон\nPeppers , Перцы\nPercent of Image Half-Hypotenuse (%) , Процент полугипотенузы изображения (%)\nPeriodic , Периодический\nPeriodic Dots , Периодические точки\nPeriodicity , Периодичность\nPerserve Luminance , Персервное освещение\nPerspective , Перспектива\nPerturbation , Пертурбация\nPetals , Лепестки\nPhase , Этап\nPhone , Телефон\nPhong , Тонг\nPhotoComix Preset , Предустановленная настройка PhotoComix\nPhotoillustration , Фотоиллюстрация\nPicabia: Udnie , Пикабиа: Удне\nPicasso: Les Demoiselles D'Avignon , Пикассо: Les Demoiselles D'Avignon\nPicasso: Seated Woman , Пикассо: Сидячая женщина\nPicasso: The Reservoir - Horta De Ebro , Водохранилище - Хорта де Эбро...\nPiece Complexity , Сложность деталей\nPiece Size (px) , Размер штуки (px)\nPin Light , Пин-лайт\nPink Fade , Розовое затемнение\nPinlight , Пинлайт\nPitaya 15 , Питая, 15\nPixel Denoise , Пиксель Денуаза\nPixel Sort , Сорт пикселей\nPixel Values , Значения пикселей\nPIXLS.US (31) , ПИКСЛС.США (31)\nPlacement , Размещение\nPlaid , Плайд\nPlane , Самолет\nPlasma , Плазма\nPlasma Effect , плазменный эффект\nPlot Type , Тип участка\nPoint #0 , Точка #0\nPoint #1 , Пункт #1\nPoint #2 , Пункт 2\nPoint #3 , Пункт 3\nPoint 1 , Пункт 1\nPoint 2 , Пункт 2\nPoints , Баллы\nPoisson , Пуассон\nPolar Transform , Полярное преобразование\nPolaroid , Полароид\nPolaroid 664 , Полароид 664\nPolaroid 665 , Полароид 665\nPolaroid 665 + , Полароид 665 +\nPolaroid 665 ++ , Полароид 665 ++\nPolaroid 665 - , Полароид 665 -\nPolaroid 665 -- , Полароид 665 --\nPolaroid 665 Negative , Полароид 665 Отрицательный\nPolaroid 665 Negative + , Полароид 665 Отрицательный +\nPolaroid 665 Negative - , Полароид 665 Отрицательный -\nPolaroid 665 Negative HC , Полароид 665 Отрицательный HC\nPolaroid 667 , Полароид 667\nPolaroid 669 , Полароид 669\nPolaroid 669 + , Полароид 669 +\nPolaroid 669 ++ , Полароид 669 ++\nPolaroid 669 +++ , Полароид 669 +++\nPolaroid 669 - , Полароид 669 -\nPolaroid 669 -- , Полароид 669 --\nPolaroid 669 Cold , Полароид 669 Холодный\nPolaroid 669 Cold + , Полароид 669 Холодный +\nPolaroid 669 Cold - , Полароид 669 Холодный -\nPolaroid 669 Cold -- , Полароид 669 Холодный --\nPolaroid 672 , Полароид 672\nPolaroid 690 , полароид 690\nPolaroid 690 + , Полароид 690 +\nPolaroid 690 ++ , Полароид 690 ++\nPolaroid 690 - , Полароид 690 -\nPolaroid 690 -- , Полароид 690 --\nPolaroid 690 Cold , Полароид 690 Холодный\nPolaroid 690 Cold + , Полароид 690 Холодный +\nPolaroid 690 Cold ++ , Полароид 690 Холодный ++\nPolaroid 690 Cold - , Полароид 690 Холодный -\nPolaroid 690 Cold -- , Полароид 690 Холодный...\nPolaroid 690 Warm , Полароид 690 Теплый\nPolaroid 690 Warm + , Полароид 690 Теплый +\nPolaroid 690 Warm ++ , Полароид 690 Теплый ++\nPolaroid 690 Warm - , Полароид 690 Теплый -\nPolaroid 690 Warm -- , Полароид 690 Теплый...\nPolaroid Polachrome , полароидный полихром\nPolaroid PX-100UV+ Cold , Полароид PX-100UV+ Холодный\nPolaroid PX-100UV+ Cold + , Полароид PX-100UV+ Холодный +\nPolaroid PX-100UV+ Cold ++ , Полароид PX-100UV+ Холодный ++\nPolaroid PX-100UV+ Cold +++ , Полароид PX-100UV+ Холодный + +++\nPolaroid PX-100UV+ Cold - , Полароид PX-100UV+ Холодный -\nPolaroid PX-100UV+ Cold -- , Полароид PX-100UV+ Холодный...\nPolaroid PX-100UV+ Warm , Полароид PX-100UV+ теплый\nPolaroid PX-100UV+ Warm + , Полароид PX-100UV+ теплый +\nPolaroid PX-100UV+ Warm ++ , Полароид PX-100UV+ теплый ++\nPolaroid PX-100UV+ Warm +++ , Полароид PX-100UV+ Теплый + +++\nPolaroid PX-100UV+ Warm - , Полароид PX-100UV+ Теплый -\nPolaroid PX-100UV+ Warm -- , Полароид PX-100UV+ Теплый...\nPolaroid PX-680 , Полароид PX-680\nPolaroid PX-680 + , Полароид PX-680 +\nPolaroid PX-680 ++ , Полароид PX-680 ++\nPolaroid PX-680 - , Полароид PX-680 -\nPolaroid PX-680 -- , Полароид PX-680 --\nPolaroid PX-680 Cold , Полароид PX-680 Холодный\nPolaroid PX-680 Cold + , Полароид PX-680 Холодный +\nPolaroid PX-680 Cold ++ , Полароид PX-680 Холодный ++\nPolaroid PX-680 Cold ++a , Полароид PX-680 Холодный ++a\nPolaroid PX-680 Cold - , Полароид PX-680 Холодный -\nPolaroid PX-680 Cold -- , Полароид PX-680 Холодный.\nPolaroid PX-680 Warm , Полароид PX-680 Теплый\nPolaroid PX-680 Warm + , Полароид PX-680 Теплый +\nPolaroid PX-680 Warm ++ , Полароид PX-680 Теплый ++\nPolaroid PX-680 Warm - , Полароид PX-680 Теплый -\nPolaroid PX-680 Warm -- , Полароид PX-680 Теплый...\nPolaroid PX-70 , Полароид PX-70\nPolaroid PX-70 + , Полароид PX-70 +\nPolaroid PX-70 ++ , Полароид PX-70 ++\nPolaroid PX-70 +++ , Полароид PX-70 +++\nPolaroid PX-70 - , Полароид PX-70 -\nPolaroid PX-70 -- , Полароид PX-70 --\nPolaroid PX-70 Cold , Полароид PX-70 Холодный\nPolaroid PX-70 Cold + , Полароид PX-70 Холодный +\nPolaroid PX-70 Cold ++ , Полароид PX-70 Холодный ++\nPolaroid PX-70 Cold - , Полароид PX-70 Холодный -\nPolaroid PX-70 Cold -- , Полароид PX-70 Холодный...\nPolaroid PX-70 Warm , Полароид PX-70 Теплый\nPolaroid PX-70 Warm + , Полароид PX-70 Теплый +\nPolaroid PX-70 Warm ++ , Полароид PX-70 Теплый ++\nPolaroid PX-70 Warm - , Полароид PX-70 Теплый -\nPolaroid PX-70 Warm -- , Полароид PX-70 Теплый...\nPolaroid Time Zero (Expired) , Полароид Время Ноль (истекло)\nPolaroid Time Zero (Expired) + , Полароид Время Ноль (истекло) +\nPolaroid Time Zero (Expired) ++ , Полароидное время Ноль (истекло) ++\nPolaroid Time Zero (Expired) - , Полароид Время Ноль (истекло) -\nPolaroid Time Zero (Expired) -- , Полароид Время Ноль (истекло)...\nPolaroid Time Zero (Expired) --- , Полароид Время Ноль (истекло) ---\nPolaroid Time Zero (Expired) Cold , Полароид Время Ноль (истекло) Холодный\nPolaroid Time Zero (Expired) Cold - , Полароид Время Ноль (истекло) Холодно -\nPolaroid Time Zero (Expired) Cold -- , Полароид Время Ноль (истекло) Холодно...\nPolaroid Time Zero (Expired) Cold --- , Полароид Время Ноль (истекло) Холодно ---\nPole Lat , Полярный лат\nPole Long , Поляк Лонг\nPole Rotation , Вращение полюса\nPolka Dots , точки Польки\nPollock: Convergence , Поллок: Конвергенция\nPollock: Summertime Number 9A , Поллок: Номер летнего времени 9A\nPolygonize [Delaunay] , Полигонизируй [Делоне]\nPolygonize [Energy] , Полигонизируй [Энергия]\nPop Shadows , Поп-Тени\nPortrait , Портрет\nPortrait Retouching , Ретуширование портретов\nPortrait-1 , Портрет-1\nPortrait-2 , Портрет-2\nPortrait-3 , Портрет-3\nPortrait-4 , Портрет-4\nPortrait-5 , Портрет-5\nPortrait-6 , Портрет-6\nPortrait-7 , Портрет-7\nPortrait-8 , Портрет-8\nPortrait-9 , Портрет-9\nPortrait0 , Портрет0\nPortrait1 , Портрет1\nPortrait10 , Портрет10\nPortrait2 , Портрет2\nPortrait3 , Портрет3\nPortrait4 , Портрет4\nPortrait5 , Портрет5\nPortrait6 , Портрет6\nPortrait7 , Портрет7\nPortrait8 , Портрет8\nPortrait9 , Портрет9\nPosition , Позиция\nPosition X (%) , Положение Х (%)\nPosition X Origin (%) , Положение Х Происхождение (%)\nPosition Y (%) , Позиция Y (%)\nPosition Y Origin (%) , Позиция Y Происхождение (%)\nPositive , Положительный\nPost-Gamma , Пост-гамма\nPost-Normalize , Пост-нормализация\nPost-Process , Постпроцесс\nPoster Edges , Кромки плакатов\nPosterization Antialiasing , Постеризация Сглаживание\nPosterization Level , Уровень постеризации\nPosterize , Плакат\nPosterized Dithering , Постеризованная дизеринг\nPow , Поу\nPre-Defined , Предварительно определено\nPre-Defined Colormap , Предварительно определенная цветовая карта\nPre-Gamma , Пре-гамма\nPre-Normalize , Предварительно зарегистрировать\nPre-Normalize Image , Предварительное форматирование изображения\nPre-Process , Препроцесс\nPrecision , Точность\nPrecision (%) , Точность (%)\nPreliminary Surface Shift , Предварительный сдвиг поверхности\nPreliminary X-Axis Scaling , Предварительное масштабирование по оси X\nPreliminary Y-Axis Scaling , Предварительное масштабирование по оси Y\nPreprocessor Power , Мощность препроцессора\nPreprocessor Radius , Препроцессор Радиус\nPreserve Canvas for Post Bump Mapping , Сохранить холст для пост-картографирования ударов\nPreserve Edges , Сохранить края\nPreserve Image Dimension , Сохранить размер изображения\nPreserve Initial Brightness , Сохранять первоначальную яркость\nPreserve Luminance , Сохранить яркость\nPreset , Предустановленный сайт\nPreview , Предварительный просмотр\nPreview All Outputs , Предварительный просмотр всех выходов\nPreview Bands , Предварительный просмотр Полосы\nPreview Brush , Кисть предварительного просмотра\nPreview Data , Данные предварительного просмотра\nPreview Detected Shapes , Предварительный просмотр Обнаруженные формы\nPreview Frame Selection , Предварительный просмотр кадра Выбор кадра\nPreview Gradient , Предпросмотровый градиент\nPreview Grain Alone , Предварительный просмотр Зерно Одно\nPreview Grid , Сетка предварительного просмотра\nPreview Guides , Путеводители по предварительному просмотру\nPreview Mapping , Предварительный просмотр Картирование\nPreview Mask , Маска предварительного просмотра\nPreview Only Shadow , Только для предварительного просмотра Тень\nPreview Opacity (%) , Просмотр Прозрачность (%)\nPreview Original , Предварительный просмотр оригинала\nPreview Precision , Точность предварительного просмотра\nPreview Progress (%) , Предварительный просмотр Прогресс (%)\nPreview Progression While Running , Предварительный просмотр прогрессии во время бега\nPreview Ref Point , Точка отсчета до просмотра\nPreview Reference Circle , Ориентировочный круг предварительного просмотра\nPreview Selection , Предварительный просмотр Отбор\nPreview Shape , Форма предварительного просмотра\nPreview Shows , Предварительные показы\nPreview Split , Предварительный просмотр Сплит\nPreview Subsampling , Предварительный просмотр Субсэмплирование\nPreview Time , Время предварительного просмотра\nPreview Tones Map , Предварительный просмотр Тоны Карта\nPreview Type , Предварительный просмотр Тип\nPreview Without Alpha , Предварительный просмотр без Альфы\nPrewitt-Y , Предит-Y\nPrimary Angle , Основной угол\nPrimary Color , Основной цвет\nPrimary Factor , первичный фактор\nPrimary Gamma , Первичная Гамма\nPrimary Radius , Первичный радиус\nPrimary Shift , Первичная смена\nPrimary Twist , Первичный поворот\nPrint Adjustment Marks , Маркировки регулировки печати\nPrint Films (12) , Печатные фильмы (12)\nPrint Frame Numbers , Номера рамок для печати\nPrint Size Unit , Размеры единицы измерения для печати\nPrint Size Width , Ширина печати\nPrivacy Notice , Положение о конфиденциальности\nPro Neg Hi , Про Нег Привет\nProbability Map , Карта вероятностей\nProcedural , Процедурный\nProcess As , Процесс As\nProcess by Blocs of Size , Процесс по блокам размеров\nProcess Channels Individually , Каналы процесса Индивидуально\nProcess Top Layer Only , Только верхний слой процесса\nProcess Transparency , Прозрачность процесса\nProcessing Mode , Режим обработки\nPropagation , Распространение\nProportion , Доля\nProtanomaly , Протаномалия\nProtanopia , Протанопия\nProtect Highlights 01 , Защита Highlights 01\nPrussian Blue , берлинская лазурь\nPseudo-Gray Dithering , Псевдо-серый дизеринг\nPurple , Фиолетовый\nPurple11 (12) , Фиолетовый11 (12)\nPuzzle , Головоломка\nPyramid , Пирамида\nPyramid Processing , Обработка пирамид\nPythagoras Tree , Пифагорское дерево\nQuadratic , Квадратный\nQuadtree Variations , Вариации в четырех деревьях\nQuality , Качество\nQuality (%) , Качество (%)\nQuantization , Количество\nQuantize Colors , Количественные цвета\nQuasi-Gaussian , квази-гаусский\nQuick , Быстрый\nQuick Copyright , Быстрое авторское право\nQuick Enlarge , Быстрое увеличение\nR/B Smoothness (Principal) , Р/Б Гладкость (Директор)\nR/B Smoothness (Secondary) , Р/Б Гладкость (вторичная)\nRadial , Радиал\nRadius , Радиус\nRadius (%) , Радиус (%)\nRadius / Angle , Радиус / Угол\nRadius [Manual] , Радиус [Руководство]\nRadius Cut , Радиусная резка\nRadius Middle Circle , Радиус среднего круга\nRadius Outer Circle A (>0 W%) (<0 H%) , Радиус внешнего круга A (>0 Вт%) (<0 Н%)\nRain & Snow , Дождь и снег\nRainbow , Радуга\nRaindrops , Капли дождя\nRandom , Случайный\nRandom [non-Transparent] , Случайно [непрозрачно]\nRandom Angle , Случайный угол\nRandom Color Ellipses , Случайные цветные эллипсы\nRandom Colors , Случайные цвета\nRandom Seed , Случайное семя\nRandom Shade Stripes , Случайные полосы тени\nRandomize , Случайный выбор\nRandomized , Случайный\nRandomness , Случайность\nRange , Диапазон\nRatio , Соотношение\nRaw , Сырой\nRays , Лучи\nRays Colors ABC , Лучи Цвета ABC\nRays Colors ABCD , Лучи Цвета ABCD\nRays Colors ABCDE , Лучи Цвета ABCDE\nRays Colors ABCDEF , Лучи Цвета ABCDEF\nRays Colors ABCDEFG , Лучи Цвета ABCDEFG\nRebuild From Similar Blocs , Восстановление из подобных блоков\nRecompose , Переписать .\nReconstruct From Previous Frames , Восстановить из предыдущих кадров\nRecover , Восстановить\nRecover Highlights , Восстановить основные моменты\nRecover Shadows , Восстановить Тени\nRecovery , Восстановление\nRectangle , Прямоугольник\nRecursion Depth , Глубина рекурсии\nRecursions , Рескурсии\nRecursive Median , Рекурсивная Медиана\nRed , Красный\nRed - Green - Blue , Красный - Зеленый - Синий\nRed - Green - Blue - Alpha , Красный - Зеленый - Синий - Альфа\nRed Afternoon 01 , Красный День 01\nRed Blue Yellow , Красный синий желтый\nRed Chroma Smoothness , Гладкость красной хромы\nRed Chrominance , Красное Хромонирование\nRed Day 01 , Красный день 01\nRed Dream 01 , Красная мечта 01\nRed Factor , Красный фактор\nRed Level , Красный уровень\nRed Rotations , Красные Вращения\nRed Shift , Красное смещение\nRed Smoothness , Красная гладкость\nRed Wavelength , Длина волны красного цвета\nRed-Eye Attenuation , затухание красного глаза\nRed-Green , Красно-зеленый\nReds , Красные\nReds Oranges Yellows , Красные апельсины Жёлтые\nReduce Halos , Сократить ореолы\nReduce Noise , Уменьшить шум\nReduce RAM , Уменьшить оперативную память\nReduce Redness , Уменьшить красноту\nReeve 38 , Рив 38\nReference , Ссылка на\nReference Angle (deg.) , Справочный угол (град.)\nReference Color , Референтный цвет\nReference Colors , Референтные цвета\nReflect , Отражение\nReflection , Размышление\nRefraction , Преломление\nRegular Grid , Регулярная сеть\nRegularity , Регулярность\nRegularity (%) , Регулярность (%)\nRegularization , Регуляризация\nRegularization (%) , Регуляризация (%)\nRegularization Factor , Коэффициент регуляризации\nRegularization Iterations , Итерации регуляризации\nReject , Отклонить\nRejected Colors , Отклонённые цвета\nRejected Mask , Отклонённая маска\nRelative Block Count , Количество относительных блоков\nRelative Size , Относительный размер\nRelative Warping , относительное искажение\nRelease Notes , Информация о выпуске\nRelief , Рельеф\nRelief Amplitude , Амплитуда рельефа\nRelief Contrast , Контраст рельефа\nRelief Light , Рельефный свет\nRelief Size , Размер рельефа\nRelief Smoothness , Гладкость рельефа\nRemix , Ремикс\nRemove Artifacts From Micro/Macro Detail , Удалить артефакты из Micro/Macro детали\nRemove Hot Pixels , Удалить горячие пиксели\nRemove Tile , Удалить плитку\nRemy 24 , Реми 24\nRender Multiple Frames , Рендер несколько кадров\nRender on Dark Areas , Рендер на темных территориях\nRender on White Areas , Рендер на белых территориях\nRender Routine for Wiggle Animations , Рендер Рутина для анимации вихревых движений\nRendering , Оказание услуг\nRendering Mode , Режим реендеринга\nRepair Scanned Document , Восстановить отсканированный документ\nRepeat , Повторить\nRepeat [Memory Consuming!] , Повторяю [Потребление памяти!]\nRepeats , Повторяется\nReplace , Заменить\nReplace (Sharpest) , Заменить (Sharpest)\nReplace Layer with CLUT , Заменить слой на CLUT\nReplace Source by Target , Заменить источник на цель\nReplace With White , Заменить на белый\nReplaced Color , Замененный цвет\nReplacement Color , Сменный цвет\nReptile , Рептилия\nRescaling , Рескалинг\nReset View , Сброс просмотра\nResize Image for Optimum Effect , Изменение размера изображения для оптимального эффекта\nResolution , Резолюция\nResolution (%) , Резолюция (%)\nResolution (px) , Резолюция (px)\nRest 33 , Отдых 33\nResult Image , Результат Изображение\nResult Type , Тип результата\nResynthetize Texture [FFT] , Ресинтезируйте текстуру [FFT].\nResynthetize Texture [Patch-Based] , Пересинтезируйте текстуру [на основе патча].\nRetinex , Ретинекс\nRetouch Layer , Слой ретуширования\nRetouched and Sharpened Areas , Обработанные и заточенные участки\nRetouched Areas Only , Только ретушированные зоны\nRetouched Image , Ретушированное изображение\nRetouched Image Basic , Ретушированное изображение Основное\nRetouched Image Final , Ретушированное изображение Окончательное\nRetouching Style , ретуширующий стиль\nRetro , Ретро\nRetro Brown 01 , Ретро-Браун 01\nRetro Fade , Ретро Фейд\nRetro Magenta 01 , Ретро пурпурный 01\nRetro Summer 3 , Ретро Лето 3\nRetro Yellow 01 , Ретро-желтый 01\nReturn Scaling , Масштабирование возврата\nReverse Bits , Обратные биты\nReverse Bytes , Обратные байты\nReverse Effect , Обратный эффект\nReverse Endianness , Обратная Эндианность\nReverse Flip , Обратный ход\nReverse Frame Stack , Стек обратных кадров\nReverse Gradient , обратный градиент\nReverse Mod , Обратный режим\nReverse Motion , Обратное движение\nReverse Order , Обратный порядок\nReverse Pow , Обратный ход\nRevert Layer Order , Ордер на обратный отсек\nRevert Layers , Реверсивные слои\nRGB [All] , RGB [Все]\nRGB [Blue] , RGB [Синий]\nRGB [Green] , RGB [Зеленый]\nRGB [red] , RGB [красный]\nRGB Image + Binary Mask (2 Layers) , RGB изображение + двоичная маска (2 слоя)\nRGB Quantization , Количественное определение RGB\nRGB Tone , RGB-Тон\nRGB[A] , RGB[А]\nRGBA [All] , RGBA [Все]\nRGBA [Alpha] , РГБА [Альфа]\nRGBA Foreground + Background (2 Layers) , RGBA передний план + фон (2 слоя)\nRGBA Image (Full-Transparency / 1 Layer) , RGBA-изображение (Полная прозрачность / 1 слой)\nRGBA Image (Updatable / 1 Layer) , RGBA-изображение (обновляемое / 1 слой)\nRice , Рис\nRight , Справа\nRight Diagonal  Foreground , Правый диагональный передний план\nRight Diagonal Foreground , Правый диагональный передний план\nRight Eye View , Правый глаз\nRight Foreground , Правый передний план\nRight Position , Правая позиция\nRight Side Orientation , Правая боковая ориентация\nRight Slope , Правый Склон\nRight Stream Only , Только правый поток\nRigid , Жесткий\nRobert Cross 1 , Роберт Кросс 1\nRobert Cross 2 , Роберт Кросс 2\nRoddy , Родди\nRoddy (by Mahvin) , Родди (по Махвину)\nRodilius , Родилиус\nRodilius [Animated] , Родилий [Анимированный]\nRollei IR 400 , Роллей ИК 400\nRollei Ortho 25 , Роллей Орто 25\nRollei Retro 100 Tonal , Роллей Ретро 100 Тональ\nRollei Retro 80s , Роллей Ретро 80х\nRooster , Рустер\nRorschach , Роршах\nRose , Роза\nRotate , Повернуть\nRotate (muted) , Поворот (приглушённый)\nRotate (vibrant) , Поворот (вибрирующий)\nRotate 180 Deg. , Поворот на 180 градусов.\nRotate 270 Deg. , Поворот на 270 градусов.\nRotate 90 Deg. , Поворот на 90 градусов.\nRotate Hue Bands , Поворотные полосы оттенка\nRotate Tree , Поворотное дерево\nRotated , Поворотный\nRotated (crush) , Вращающийся (раздавленный)\nRotations , Вращения\nRotinv-X , Ротинв-Х\nRound , Раунд\nRoundness , Круглосуточность\nRow by Row , Гребите за гребцом\nRubik , Рубик\nRYB [All] , RYB [Все]\nRYB [Blue] , RYB [Синий]\nRYB [Red] , RYB [Красный]\nRYB [Yellow] , RYB [Жёлтый]\nS-Curve Contrast , S-образный контраст\nSalt and Pepper , Соль и перец\nSame as Input , То же, что и входной\nSame Axis , Та же ось\nSample Image , Образец изображения\nSampling , Выборка\nSat Bottom , Сбботботботтома\nSat Range , Сат-Рейндж\nSat Top , Сат-Топ\nSatin , Атлас\nSaturated Blue , Насыщенная синяя\nSaturation , Насыщенность\nSaturation (%) , Насыщенность (%)\nSaturation Channel Gamma , Гамма канала насыщения\nSaturation Correction , Коррекция насыщения\nSaturation EQ , ЗМТ насыщения\nSaturation Factor , Коэффициент насыщения\nSaturation Offset , Смещение по насыщению\nSaturation Shift , Сдвиг насыщения\nSaturation Smoothness , Гладкость насыщения\nSave CLUT as .Cube or .Png File , Сохранить CLUT как .Cube или .Png файл\nSave Gradient As , Сохранить градиент как\nSaving Private Damon , Спасение рядового Деймона\nScalar , Скалар\nScale , Шкала\nScale (%) , Шкала (%)\nScale 1 , Шкала 1\nScale 2 , Шкала 2\nScale CMYK , Масштаб CMYK\nScale Factor , Масштабный коэффициент\nScale Output , Масштабный выход\nScale Plasma , Масштабная плазма\nScale RGB , Масштаб RGB\nScale Style to Fit Target Resolution , Стиль масштабирования в соответствии с целевым разрешением\nScale Variations , Масштабные вариации\nScaled , Масштаб\nScales , Весы\nScaling Factor , Коэффициент масштабирования\nScanlines , Сканирует\nScene Selector , Выбор сцены\nScience Fiction , научная фантастика\nScreen , Экран\nScreen Border , Граница экрана\nSeamless Deco , Бесшовная деко\nSeamless Turbulence , Бесшовная турбулентность\nSecant , Секант\nSecond Color , Второй цвет\nSecond Offset , Второе смещение\nSecond Radius , Второй Радиус\nSecond Size , Второй размер\nSecondary Color , Вторичный цвет\nSecondary Factor , Вторичный фактор\nSecondary Gamma , Вторичная гамма\nSecondary Radius , Вторичный радиус\nSecondary Shift , Вторичная смена\nSecondary Twist , Вторичная закрутка\nSectors , Сектора\nSegment Max Length (px) , Сегмент Макс Длина (px)\nSegmentation , Сегментация\nSegmentation Edge Threshold , Порог сегментации\nSegmentation Smoothness , Гладкость сегментации\nSegments , Сегменты\nSegments Strength , Прочность сегментов\nSelect By , Выберите по\nSelected Color , Выбранный цвет\nSelected Colors , Избранные цвета\nSelected Frame , Выбранная рамка\nSelected Mask , Избранная маска\nSelection , Выбор\nSelective Desaturation , Селективное насыщение\nSelective Gaussian , селективный гаусс\nSelf , Сама\nSelf Glitching , Самовозгорание\nSelf Image , Само изображение\nSensitivity , Чувствительность\nSepia , Сепия\nSequence X4 , Последовательность X4\nSequence X6 , Последовательность X6\nSequence X8 , Последовательность X8\nSerenity , Серенити\nSerial Number , Серийный номер\nSeringe 4 , Серинга 4\nSerpent , Змей\nSet Aspect Only , Установить только аспект\nSet Frame Format , Установить Формат кадра\nSeven Layers , Семь слоев\nSeventies Magazine , журнал 70-х годов\nShade , Тень\nShade Angle , Угол тени\nShade Back to First Color , Вернуться к первому цвету\nShade Bobs , Бобы теней\nShade Strength , Прочность теней\nShadebobs , Шейдеры\nShading , Шейдинг\nShading (%) , Затенение (%)\nShadow , Тень\nShadow Contrast , Контраст теней\nShadow Intensity , Интенсивность теней\nShadow King 39 , Король Теней 39\nShadow Offset X , Смещение теней X\nShadow Offset Y , Смещение тени Y\nShadow Size , Размер Тени\nShadow Smoothness , Гладкость Теней\nShadows , Тени\nShadows Abstraction , Абстракция теней\nShadows Brightness , Тени Яркость\nShadows Color Intensity , Тени Интенсивность цвета\nShadows Lightness , Тени Легкость\nShadows Selection , Выбор теней\nShadows Threshold , Порог Теней\nShadows Zone , Зона теней\nShamoon Abbasi (25) , Шамун Аббаси (25)\nShape , Форма\nShape Area Max , Максимальная площадь формы\nShape Area Max0 , Область формирования Max0\nShape Area Min , Форма Площадь Мин\nShape Area Min0 , Область формирования Min0\nShape Average , Форма Среднее\nShape Average0 , Форма Среднее0\nShape Max , Форма Макс\nShape Max0 , Форма Макс 0\nShape Median , Форма Медиана\nShape Median0 , Форма Медианы0\nShape Min , Форма Мин\nShape Min0 , Форма Мин0\nShapeism , Шейпизм\nShapes , Формы\nSharp Abstract , Резкий аннотационный доклад\nSharpen [Gradient] , Sharpen [Градиент]\nSharpen [Hessian] , Шарпен [Гессен]\nSharpen [Inverse Diffusion] , Sharpen [Обратная диффузия]\nSharpen [Octave Sharpening] , Sharpen [Октава Sharpening]\nSharpen [Richardson-Lucy] , Sharpen [Ричардсон-Люси]\nSharpen Details in Preview , Подробности в предварительном просмотре\nSharpen Edges Only , Только острые края\nSharpen Object , Острый предмет\nSharpen Radius , острый радиус\nSharpened Areas Only , Только заточенные участки\nSharpening , Заточка\nSharpening Layer , Заточной слой\nSharpening Radius , Радиус заточки\nSharpening Strength , Прочность на заточку\nSharpening Type , Тип заточки\nSharpness , Резкость\nShift Linear Interpolation? , Линейная интерполяция сдвига?\nShift Point , Точка переключения\nShift Y , Сдвиг Y\nShine , Блеск\nShininess , Блеск\nShivers , мурашки по коже\nShock Waves , Ударные волны\nShopping Cart , Корзина\nShow Both Poles , Показать Оба поляка\nShow Difference , Показать разницу\nShow Frame , Показать рамку\nShow Grid , Показать сетку\nShow Watershed , Показать Водораздел\nShrink , Уменьшить\nShuffle Pieces , Шарканье кусочков\nSide by Side , Бок о бок\nSierpinksi Design , Дизайн Серпинкси\nSierpinski Triangle , Серпинский треугольник\nSigma 1 , Сигма 1\nSigma 2 , Сигма 2\nSimilarity Space , Пространство сходства\nSimple Local Contrast , Простой локальный контраст\nSimple Noise Canvas , Простой шумовой холст\nSimulate Film , Моделировать кино\nSin(z) , грех(z)\nSine , Сине\nSine+ , Синус+\nSingle (Merged) , Одинокий (объединенный)\nSingle Custom Depth Map , Единая пользовательская карта глубины\nSingle Image Stereogram , Стереограмма одного изображения\nSingle Layer , Однослойный\nSingle Opaque Shapes Over Transp. BG , Одиночные непрозрачные формы над транспарантом. ГЕНЕРАЛЬНЫЙ СЕКРЕТАРИАТ\nSix Layers , Шесть слоев\nSixteen Threads , Шестнадцать Нитей\nSize , Размер\nSize (%) , Размер (%)\nSize for Bright Tones , Размер для ярких тонов\nSize for Dark Tones , Размер для темных тонов\nSize of Frame Numbers (%) , Размер номеров кадров (%)\nSize Variance , Вариативность размеров\nSize-1 , Размер 1\nSize-2 , Размер-2\nSize-3 , Размер 3\nSkeletik , Скелетик\nSkeleton , Скелет\nSketch , Скетч\nSkin Estimation , Оценка кожи\nSkin Mask , Маска из кожи\nSkin Tone Colors , Цвета оттенков кожи\nSkin Tone Mask , Маска оттенков кожи\nSkin Tone Protection , Защита от оттенков кожи\nSkip All Other Steps , Пропустить все остальные шаги\nSkip Finest Scales , Пропустить лучшие весы\nSkip Others Steps , Пропустить другие шаги\nSkip This Step , Пропустите этот шаг\nSkip to Use the Mask to Boost , Пропустите, чтобы использовать маску для усиления\nSlice Luminosity , Светимость срезов\nSlide [Color] (26) , Слайд [Цвет] (26)\nSlow &#40;Accurate&#41; , Медленно ( Точно )\nSlow Recovery , Медленное восстановление\nSmall , Маленький\nSmall (Faster) , Маленький (Быстрее)\nSmallHD Movie Look (7) , Смотрите фильм SmallHD Movie Look (7)\nSmart , Умный\nSmart Contrast , Умный контраст\nSmart Threshold , умный порог\nSmokey , Смоки\nSmooth , Гладкий\nSmooth [Anisotropic] , Гладкий [Анизотропный]\nSmooth [Bilateral] , Гладкий [Двусторонний]\nSmooth [Geometric-Median] , Гладкий [Геометрический-Медиан]\nSmooth [Mean-Curvature] , Гладкий [Средняя кривизна]\nSmooth [Median] , Гладкая [Медиана]\nSmooth [Perona-Malik] , Гладкий [Перона-Малик]\nSmooth [Selective Gaussian] , Smooth [Селективный Гаусс]\nSmooth [Skin] , Гладкая [Кожа]\nSmooth [Thin Brush] , Гладкая [Тонкая щетка]\nSmooth [Total Variation] , Гладкий [Полная изменчивость]\nSmooth [Wiener] , Гладкий [Винер]\nSmooth Abstract , Гладкий реферат\nSmooth Amount , Гладкое количество\nSmooth Clear , Гладкая чистота\nSmooth Colors , Гладкие цвета\nSmooth Crome-Ish , Гладкий Кром-Иш\nSmooth Dark , Гладкая Тьма\nSmooth Fade , Гладкое угасание\nSmooth Green Orange , Гладкий зеленый апельсин\nSmooth Light , Гладкий свет\nSmooth Looping , Гладкая петля\nSmooth Only , Только гладкий\nSmooth Sailing , Гладкий парусный спорт\nSmooth Teal Orange , Гладкий апельсин чирка\nSmoothen Background Reconstruction , Сглаженный фон Реконструкция\nSmoother Edge Protection , Защита более гладкой кромки\nSmoother Sharpness , Гладкая Острота\nSmoother Softness , Гладкая мягкость\nSmoothing , Сглаживание\nSmoothing Style , Стиль сглаживания\nSmoothing Type , Тип сглаживания\nSmoothness , Гладкость\nSmoothness (%) , Гладкость (%)\nSmoothness (px) , Гладкость (px)\nSmoothness Shadow , Тень Гладкости\nSmoothness Type , Тип гладкости\nSnowflake , Снежинка\nSnowflake 2 , Снежинка 2\nSnowflake Recursion , Рекурсия снежинки\nSobel-X , Собель-Х\nSobel-Y , Собель-Y\nSoft  Light , Мягкий свет\nSoft Burn , Мягкий ожог\nSoft Fade , Мягкое увядание\nSoft Glow , Мягкое сияние\nSoft Glow [Animated] , Мягкое сияние [анимированное]\nSoft Light , Мягкий свет\nSoft Random Shades , Мягкие случайные оттенки\nSoft Warming , Мягкое потепление\nSoften , Смягчить\nSoften All Channels , Смягчите все каналы\nSoften Guide , Смягчайте руководство\nSolarize , Соляризовать\nSolarize Color , Соляризовать цвет\nSolarized Color2 , Соляризованный Цвет2\nSolidify , Солидировать\nSolve Maze , Разрешите лабиринт\nSome , Некоторое количество\nSome Blue , Некоторое количество синего\nSome Cyan , Немного голубого цвета\nSome Green , Некоторые Зеленые\nSome Key , Некоторые Ключ\nSome Magenta , Немного пурпурного цвета\nSome Red , немного красного\nSome Yellow , Жёлтый\nSort Colors , Сортировка цветов\nSorting Criterion , Критерий сортировки\nSource (%) , Источник (%)\nSource Color #1 , Источник Цвет #1\nSource Color #10 , Источник Цвет № 10\nSource Color #11 , Источник Цвет № 11\nSource Color #12 , Источник Цвет № 12\nSource Color #13 , Источник Цвет № 13\nSource Color #14 , Источник Цвет № 14\nSource Color #15 , Источник Цвет № 15\nSource Color #16 , Источник Цвет № 16\nSource Color #17 , Источник Цвет № 17\nSource Color #18 , Источник Цвет № 18\nSource Color #19 , Источник Цвет #19\nSource Color #2 , Источник Цвет № 2\nSource Color #20 , Источник Цвет № 20\nSource Color #21 , Источник Цвет № 21\nSource Color #22 , Источник Цвет #22\nSource Color #23 , Источник Цвет #23\nSource Color #24 , Источник Цвет #24\nSource Color #3 , Источник Цвет № 3\nSource Color #4 , Источник Цвет № 4\nSource Color #5 , Источник Цвет № 5\nSource Color #6 , Источник Цвет № 6\nSource Color #7 , Источник Цвет #7\nSource Color #8 , Источник Цвет № 8\nSource Color #9 , Источник Цвет #9\nSource X-Tiles , Источник X-Плитки\nSource Y-Tiles , Источник Y-панели\nSpace , Пространство\nSpacing , Размещение\nSpatial Bandwidth , Пространственная полоса пропускания\nSpatial Metric , Пространственная метрика\nSpatial Overlap , Пространственное перекрытие\nSpatial Precision , Пространственная точность\nSpatial Radius , Пространственный радиус\nSpatial Regularization , Пространственная регуляризация\nSpatial Sampling , Пространственный отбор проб\nSpatial Scale , Пространственная шкала\nSpatial Tolerance , Пространственная толерантность\nSpatial Transition , Пространственный переход\nSpatial Variance , Пространственная вариация\nSpecial Effects , Специальные эффекты\nSpecific Saturation , Удельное насыщение\nSpecify Different Output Size , Укажите другой выходной размер\nSpecify HaldCLUT As , Укажите HaldCLUT как\nSpeed , Скорость\nSphere , Сфера\nSpherize , Сферизировать\nSpiral , Спираль\nSpiral RGB , Спираль RGB\nSpline B1 , Сплайн B1\nSpline B2 , Сплайн B2\nSpline B3 , Сплайн B3\nSpline B4 , Сплайн B4\nSpline B5 , Сплайн B5\nSpline B6 , Сплайн B6\nSpline Editor , Редактор слайнов\nSpline Max Angle (deg) , Сплайн Макс Угол (град)\nSpline Max Length (px) , Сплайн Макс Длина (px)\nSpline Roundness , Сплайн Круглость\nSplines , Сплины\nSplit Base and Detail Output , Раздельная база и детальный вывод\nSplit Brightness / Colors , Разделенная яркость / цвета\nSplit Details [Alpha] , Сплит Подробности [Альфа]\nSplit Details [Gaussian] , Сплит Детали [Гаусс]\nSplit Details [Wavelets] , Сплит детали [Вейвлеты]\nSponge , Губка\nSpotify , Оспорить\nSpread , Распространение\nSpread Amount , Сумма спреда\nSpread Angles , Углы растяжения\nSpread Noise Amount , Количество шумов\nSpreading , Распространение\nSpring Morning , Весеннее утро\nSprocket 231 , Звездочка 231\nSpy 29 , Шпион 29\nSquare , Площадь\nSquare (Inv.) , Квадрат (инв.)\nSquare 1 , Квадрат 1\nSquare 2 , Квадрат 2\nSquare to Circle , Квадрат к кругу\nSquared-Euclidean , Квадрат-Евклидов\nSquares , Квадраты\nSquares (Outline) , Квадраты (Контур)\nSRGB Conversion , преобразование SRGB\nStabilizer , Стабилизатор\nStained Glass , Витражное стекло\nStamp , Штемпель\nStandard , Стандартный\nStandard (256) , стандартный (256)\nStandard [No Scan] , Стандартный [Нет сканирования]\nStandard Deviation , Стандартное отклонение\nStar , Звезда\nStar: -5*(z^3/3-Z/4)/2 , Звезда: -5*(z^3/3-Z/4)/2\nStars , Звезды\nStars (Outline) , Звёзды (Внешний вид)\nStart Angle , Стартовый угол\nStart Color , Стартовый цвет\nStart Frame Number , Номер стартового кадра\nStart of Mid-Tones , Начало средних тонов\nStarting Angle , Начальный угол\nStarting Color , Стартовый цвет\nStarting Feathering , Начальное перо\nStarting Frame , Стартовая рамка\nStarting Level , Начальный уровень\nStarting Pattern , Стартовая модель\nStarting Point , Начальная точка отсчёта\nStarting Point (%) , Начальная точка (%)\nStarting Scale (%) , Начальная шкала (%)\nStarting Value , Начальное значение\nStationary Frames , Стационарные рамы\nStd Angle (deg.) , Стэд Угол (градус)\nStd Branching , ультрафиолетовое ветвление\nStd Length Factor (%) , Коэффициент длины удлинения (%)\nStd Thickness Factor (%) , Коэффициент заболеваемости (%)\nStencil , Трафарет\nStencil Type , тип трафарета\nStep , Шаг\nStep (%) , Шаг (%)\nSteps , Шаги\nStereo Image , Стерео изображение\nStereo Window Position , Положение стерео окна\nStereographic Projection , Стереографическая проекция\nStereoscopic Image Alignment , Стереоскопическое выравнивание изображений\nStereoscopic Window Position , Стереоскопическое положение окна\nStraight , Прямой\nStrands , Стрэндс\nStreak , Полоса\nStreet , Улица\nStrength , Сила\nStrength (%) , Прочность (%)\nStrength Effect , Прочностный эффект\nStrength Highlights , Основные сильные стороны\nStrength Midtones , Прочностные мидтоны\nStrength Shadows , Сильные Тени\nStretch , Растянуть\nStretch Colors , Растянутые цвета\nStretch Contrast , Контраст растяжения\nStretch Factor , Фактор растяжения\nStrip , Стриптиз\nStripe Orientation , Ориентация полосы\nStroke , Инсульт\nStroke Angle , Угол атаки\nStroke Length , Длина инсульта\nStroke Strength , Прочность при ударе\nStructure Smoothness , Гладкость структуры\nStudio , Студия\nStudio Skin Tone Shaper , Студия Формировщик тонов кожи\nStyle , Стиль\nStyle Variations , Вариации стиля\nStylize , Стилизировать\nSubdivisions , Подразделения\nSubpixel Interpolation , Подпиксельная интерполяция\nSubpixel Level , Уровень субпикселей\nSubsampling (%) , Субсэмплирование (%)\nSubtle Blue , Тонкий синий\nSubtle Green , Тонкий зеленый\nSubtle Yellow , Тонкий желтый\nSubtract , Вычитать\nSubtractive , Субтрактивный\nSummer , Лето\nSummer (alt) , Лето (alt)\nSunny , Солнечный\nSunny (alt) , Солнечный (alt)\nSunny (rich) , Солнечный (богатый)\nSunny (warm) , Солнечный (теплый)\nSuper Warm , Супер-теплый\nSuper Warm (rich) , Супер теплая (богатая)\nSuper-Pixels , Суперпиксели\nSuperformula , Суперформула\nSuperimpose with Original? , Наложить на Оригинал?\nSurface Disturbance , Нарушение поверхности\nSurface Disturbance Multiplier , Умножитель поверхностных возмущений\nSutro FX , Сутро FX\nSwan , Лебедь\nSwap , обмен\nSwap Colors , Смена цветов\nSwap Layers , Сменные слои\nSwap Radius / Angle , Смена радиуса / угла\nSwap Sides , Стороны обмена\nSweet Bubblegum , Сладкая жвачка\nSweet Gelatto , Сладкое желе\nSymmetric 2D Shape , Симметричная 2D форма\nSymmetry , Симметрия\nSymmetry Sides , Стороны симметрии\nSynthesis Scale , Шкала синтеза\nTaiga , Тайга\nTan(z) , Тан(z)\nTangent Radius , касательная к радиусу\nTaquin , Такин\nTarget Color #1 , Цвет цели № 1\nTarget Color #10 , Цвет цели № 10\nTarget Color #11 , Цвет цели № 11\nTarget Color #12 , Цвет цели № 12\nTarget Color #13 , Цвет цели № 13\nTarget Color #14 , Цвет цели № 14\nTarget Color #15 , Цвет цели № 15\nTarget Color #16 , Цвет цели № 16\nTarget Color #17 , Цвет цели № 17\nTarget Color #18 , Цвет цели № 18\nTarget Color #19 , Цвет цели #19\nTarget Color #2 , Цвет цели № 2\nTarget Color #20 , Цвет цели №20\nTarget Color #21 , Цвет цели № 21\nTarget Color #22 , Цвет цели #22\nTarget Color #23 , Цвет цели № 23\nTarget Color #24 , Цвет цели № 24\nTarget Color #3 , Цвет цели № 3\nTarget Color #4 , Цвет цели № 4\nTarget Color #5 , Цвет цели № 5\nTarget Color #6 , Цвет цели № 6\nTarget Color #7 , Цвет цели #7\nTarget Color #8 , Цвет цели № 8\nTarget Color #9 , Цвет цели #9\nTeal Fade , Тил Фейд\nTeal Magenta Gold , Пурпурное золото тел\nTeal Moonlight , Тил Лунный свет\nTeal Orange , Тил Оранж\nTeal Orange 1 , Тил Оранж 1\nTeal Orange 2 , Тил Оранж 2\nTeal Orange 3 , Тил Оранж 3\nTechnicalFX - Backlight Filter , TechnicalFX - Фильтр подсветки\nTeddy , Тедди\nTeigen 28 , Тиген 28\nTemperature Balance , Температурный баланс\nTen Layers , Десять слоев\nTends to Be Square , Склонен быть квадратом\nTension Green 1 , Зеленый 1\nTension Green 2 , Зеленый 2\nTension Green 3 , Зеленый 3\nTension Green 4 , Зеленый 4\nTensor Smoothness , Тензорная гладкость\nTerra 4 , Терра 4\nTertiary Factor , Третичный коэффициент\nTertiary Gamma , Третичная Гамма\nTertiary Shift , Третичная смена\nTertiary Twist , Третичный поворот\nTetris , Тетрис\nText , Текст\nTexture , Текстура\nTexture Enhance , Улучшение текстуры\nTextured Glass , Текстурированное стекло\nThe Game of Life , Игра жизни\nThe Matrices , Матрицы\nThickness , Толщина\nThickness (%) , Толщина (%)\nThickness (px) , Толщина (px)\nThickness Factor , Фактор толщины\nThin Edges , тонкие края\nThin Separators , Тонкие сепараторы\nThinness , Тонкость\nThinning , Истончение\nThinning (Slow) , Истончение (Медленное)\nThree Layers , Три слоя\nThreshold , Порог\nThreshold (%) , Порог (%)\nThreshold Etch , Пороговое рвотное отверстие\nThreshold High , Пороговый максимум\nThreshold Low , Низкий порог\nThreshold Max , Пороговый максимум\nThreshold Mid , Пороговая середина\nThreshold On , Порог\nThriller 2 , триллер 2\nThumbnail Size , Размер эскиза\nTic-Tac-Toe , Тик-Так-Тоу\nTiger , Тигр\nTikhonov , Тихонов\nTile Poles , Плиточные столбы\nTile Size , Размер плитки\nTileable Rotation , Поворот плитки\nTiled Isolation , Изоляция плитки\nTiled Normalization , Нормализация плитки\nTiled Parameterization , Параметризация плитки\nTiled Preview , Плиточный предварительный просмотр\nTiled Random Shifts , Случайные смены плитки\nTiled Rotation , Вращение плитки\nTiles , Плитки\nTiles to Layers , Плитка для укладки\nTilt , Наклон\nTime , Время\nTime Step , Шаг времени\nTimed Image , Приуроченное изображение\nTiny , Крошечный\nTo Equirectangular , К прямоугольному\nTo Nadir / Zenith , За Надир / Зенит\nToasted Garden , Поджаренный сад\nToggle to View Base Image , Переключение для просмотра базового изображения\nTolerance , Толерантность\nTolerance to Gaps , Толерантность к пробелам\nTonal Bandwidth , Тональная полоса пропускания\nTone Blur , Тональное пятно\nTone Enhance , Улучшение тона\nTone Gamma , Тон Гамма\nTone Mapping , Картирование тонов\nTone Mapping (%) , Отображение тона (%)\nTone Mapping [Fast] , Tone Mapping [Быстро]\nTone Mapping Fast , Быстрое отображение тонов\nTone Mapping Soft , Мягкое отображение тонов\nTone Presets , Тональные предустановки\nTone Threshold , Порог тонов\nTones Range , Диапазон тонов\nTones Smoothness , Гладкость тонов\nTones to Layers , Оттенки к слоям\nTop , Топ\nTop Layer , Верхний слой\nTop Left , Слева вверху\nTop Right , Верхнее право\nTop-Left Vertex (%) , Верхняя левая вершина (%)\nTop-Right Vertex (%) , Вершина вершины (%)\nTorus , Торус\nTotal Layers , Тотальные слои\nTotal Variation , Общее изменение\nTransfer Colors [Histogram] , Перенос цветов [Гистограмма]\nTransfer Colors [Patch-Based] , Перенос цветов [на основе патча]\nTransfer Colors [PCA] , Перенос цветов [PCA]\nTransfer Colors [Variational] , Перенос цветов [Вариативный]\nTransform , Трансформировать\nTransition Map , Карта перехода\nTransition Shape , Переходная форма\nTransition Smoothness , Гладкость перехода\nTransmittance Map , Передача Карта\nTransparency , Прозрачность\nTransparent , Прозрачный\nTransparent Background , Прозрачный фон\nTransparent Black & White , Прозрачный черно-белый\nTransparent Color , Прозрачный цвет\nTransparent on Black , Прозрачный на черном\nTransparent on White , Прозрачный на белом\nTransparent Skin , Прозрачная кожа\nTree , Дерево\nTrent 18 , Трент 18\nTriangle , Треугольник\nTriangles , Треугольники\nTriangles (Outline) , Треугольники\nTriangular Ha , Треугольник Ха\nTriangular Hb , Треугольный Hb\nTriangular Va , Треугольный Va\nTriangular Vb , Треугольный Vb\nTritanomaly , Тританомалия\nTritanopia , Тританопия\nTrue Colors 8 , Истинные цвета 8\nTrunk Color , Цвет ствола\nTrunk Opacity (%) , Прозрачность ствола (%)\nTrunks , Стволы\nTulips , Тюльпаны\nTunnel , Тоннель\nTurbulence , Турбулентность\nTurbulence 2 , Турбулентность 2\nTurbulent Halftone , турбулентный Хэлфтон\nTuring , Тьюринг\nTurkiest 42 , самый Туркест 42\nTurn on Rotate and Twirl , Включить поворот и кручение\nTweed 71 , твид 71\nTwisted Rays , витые лучи\nTwo Layers , Два слоя\nTwo Threads , Две нити\nType , Введите .\nType Snowflake , Тип Снежинка\nUltra Water , Ультра-Вода\nUnaligned Images , Неподписанные изображения\nUndeniable , Неоспоримый\nUndeniable 2 , Бесспорный 2\nUnderwater , Под водой\nUndo Anaglyph , Отменить анаглиф\nUniform , Форма\nUnknown , Неизвестный\nUnsharp Mask , Резкая маска\nUp-Left , Слева вверх\nUpper Layer Is the Top Layer for All Blends , Верхний слой - это верхний слой для всех смесей.\nUpper Side Orientation , Верхняя боковая ориентация\nUppercase Letters , заглавные буквы\nUpscale [DCCI2x] , Высокоуровневый [DCCI2x]\nUpscale [Diffusion] , Высокоуровневый [Диффузия]\nUpscale [Scale2x] , Шкала [Шкала 2х]\nUrban Cowboy , Городской ковбой\nUse as Hue , Использовать как оттенок\nUse as Saturation , Использовать в качестве насыщения\nUse Individual Depth Map , Использовать отдельную карту глубины\nUse Light , Использовать свет\nUse Maximum Tones , Использовать максимальные тона\nUse Top Layer as a Priority Mask , Использовать верхний слой как маску приоритета\nUser-Defined , Определяемый пользователем\nUser-Defined (Bottom Layer) , Определяемый пользователем (нижний слой)\nUzbek Bukhara , узбекская Бухара\nUzbek Marriage , узбекский брак\nUzbek Samarcande , узбекский Самарканд\nV Cutoff , V обрезание\nVal Range , Диапазон Вэл\nValue , Значение\nValue Action , Ценностное действие\nValue Blending , Смешивание значений\nValue Bottom , Нижнее значение\nValue Correction , Коррекция значения\nValue Factor , Фактор стоимости\nValue Normalization , Нормализация стоимости\nValue Offset , Смещение значения\nValue Precision , Точность значения\nValue Range , Диапазон значений\nValue Scale , Шкала значений\nValue Shift , Сдвиг значений\nValue Variance , Вариация значений\nValues , Значения\nVan Gogh: Almond Blossom , Ван Гог: Цветение миндаля\nVan Gogh: Irises , Ван Гог: Ирисы\nVan Gogh: The Starry Night , Ван Гог: Звездная ночь\nVan Gogh: Wheat Field with Crows , Ван Гог: Пшеничное поле с воронами\nVariability , Переменная\nVariance , Вариант\nVariation A , Вариант А\nVariation B , Вариант В\nVariation C , Вариант С\nVector Painting , векторная живопись\nVelocity , Скорость\nVelvetia , Бархат\nVelvia , Велвия\nVertex Type , Тип вершины\nVertical , Вертикальный\nVertical (%) , Вертикальный (%)\nVertical 1 Amount , Вертикаль 1 Количество\nVertical 1 Length , Вертикаль 1 Длина\nVertical 2 Amount , Вертикаль 2 Количество\nVertical 2 Length , Вертикальная 2 Длина\nVertical Amount , Вертикальный размер\nVertical Array , Вертикальный массив\nVertical Blur , Размытие по вертикали\nVertical Length , Вертикальная длина\nVertical Size (%) , Вертикальный размер (%)\nVertical Stripes , Вертикальные полосы\nVertical Tiles , Вертикальная плитка\nVery Course 5 , Очень курс 5\nVery Fine , Очень хорошо\nVery High , Очень высокий\nVery High (Even Slower) , Очень высоко (еще медленнее)\nVery Warm Greenish , Очень теплый зеленоватый\nVibrant (alien) , Vibrant (инопланетянин)\nVibrant (contrast) , Ярко выраженный (контраст)\nVictory , Победа\nView Outlines Only , Просматривать только контуры\nView Resolution , Просмотр Резолюции\nVignette , Виньетка\nVignette Contrast , контраст виньетки\nVignette Max Radius , Виньетка Макс Радиус\nVignette Min Radius , Виньетка Мин Радиус\nVignette Size , Размер виньетки\nVignette Strength , Прочность виньетки\nVignette Strenth , Виньетка Стрент\nVintage , Винтаж\nVintage (alt) , Винтаж (alt)\nVintage (brighter) , Винтаж (ярче)\nVintage 163 , винтаж 163\nVintage Chrome , Старинный хром\nVintage Style , винтажный стиль\nVintage Tone (%) , Винтажный тон (%)\nVintage Warmth 1 , Старинная теплота 1\nVireo 37 , Вирео 37\nVirtual Landscape , Виртуальный пейзаж\nVisible Watermark , Видимый водяной знак\nVivid Edges , яркие края\nVivid Edges* , Яркие края*\nVivid Light , яркий свет\nVivid Screen , яркий экран\nWall , Стена\nWarhol , Уорхол\nWarm , Теплый\nWarm (highlight) , Теплый (изюминка)\nWarm (yellow) , Теплый (желтый)\nWarm Dark Contrasty , Теплый темный контраст\nWarm Fade , Теплое угасание\nWarm Fade 1 , Теплое угасание 1\nWarm Neutral , Теплый нейтральный\nWarm Sunset Red , Теплый красный закат\nWarm Teal , Теплый пломбир\nWarm Vintage , Теплый Винтаж\nWarp [Interactive] , Варп [интерактивный]\nWarp by Intensity , искривление по интенсивности\nWater , Вода\nWaterfall , Водопад\nWave(s) , Волна(и)\nWavelength , Длина волны\nWavelet , Вейвлет\nWaves Amplitude , Амплитуда волн\nWaves Smoothness , Гладкость волн\nWe'll See , Посмотрим.\nWeird , Странный\nWhirl Drawing , Вихревой рисунок\nWhirls , Вихри\nWhite Dices , Белые кубики\nWhite Layers , Белые слои\nWhite Level , Белый уровень\nWhite on Black , Белый на черном\nWhite on Transparent , Белое на прозрачном\nWhite on Transparent Black , Белый на прозрачном черном\nWhite Point , Белая точка\nWhite to Black , От белого до черного\nWhite Walls , Белые стены\nWhitening , Отбеливание\nWhiter Whites , Белые белые\nWhites , Белые\nWidth , Ширина\nWidth (%) , Ширина (%)\nWind , Ветер\nWinter Lighthouse , Зимний маяк\nWithout , Без\nWooden Gold 20 , Деревянное золото 20\nWork on Frameset , Работа над кадрами\nWrap , Обертка\nX Center , Центр Икс\nX Origine , X Оригинал\nX-Amplitude , X-Амплитуда\nX-Axis Then Y-Axis , Ось X, затем ось Y\nX-Centering (%) , X-Центр (%)\nX-Coordinate [Manual] , X-Координата [Вручную]\nX-Curvature , X-Курватура\nX-Dispersion , X-дисперсия\nX-End (%) , X-конце (%)\nX-Factor (%) , Х-фактор (%)\nX-Resolution , разрешение X-Resolution\nX-Seed (Julia) , X-Seed (Джулия)\nX-Shift (%) , X-сдвиг (%)\nX-Size (px) , X-размер (px)\nX-Start (%) , X-Старт (%)\nX-Variations , X-вариации\nX/Y-Ratio , X/Y-отношение\nX1 (none) , X1 (нет)\nXY Mirror , XY Зеркало\nXY-Amplitude , XY-амплитуда\nXY-Axes , XY-Оси\nXY-Axis , XY-ось\nXY-Coordinates (%) , XY-координаты (%)\nXY-Factor , XY-фактор\nY Center , Y-центр\nY Origine , Y Оригинал\nY-Amplitude , Y-Амплитуда\nY-Axis Then X-Axis , Y-ось потом X-ось\nY-Center , Y-центр\nY-Centering , Y-центр\nY-Centering (%) , Y-Центр (%)\nY-Coordinate , Y-координата\nY-Coordinate [Manual] , Y-координата [Руководство]\nY-Curvature , Y-кривая\nY-Dispersion , Y-дисперсия\nY-End (%) , Y-конце (%)\nY-Factor , Y-Фактор\nY-Factor (%) , Y-фактор (%)\nY-Resolution , Резолюция Y-решение\nY-Rotation , Y-ротация\nY-Scale , Y-шкала\nY-Seed (Julia) , Y-Seed (Джулия)\nY-Shift (%) , Y-сдвиг (%)\nY-Size , Y-размер\nY-Size (px) , Y-размер (px)\nY-Start (%) , Y-старт (%)\nY-Variations , Y-варианты\nYAG Effect , эффект YAG\nYCbCr (Chroma Only) , YCbCr (только хрома)\nYCbCr (Distinct) , YCbCr (Отличительная черта)\nYCbCr (Luma Only) , YCbCr (только Luma)\nYCbCr (Mixed) , YCbCr (Смешанный)\nYCbCr [Blue Chrominance] , YCbCr [Голубая хромография]\nYCbCr [Blue-Red Chrominances] , YCbCr [сине-красные хроминансы]\nYCbCr [Green Chrominance] , YCbCr [Зеленая хромкость]\nYCbCr [Red Chrominance] , YCbCr [Красная Хромкость]\nYellow , Жёлтый\nYellow 55B , Жёлтый 55B\nYellow Factor , Желтый фактор\nYellow Film 01 , Желтый Фильм 01\nYellow Shift , Желтая смена\nYellow Smoothness , Желтая гладкость\nYellowstone , Йеллоустоун\nYES8 , ДА8\nYIQ [chromas] , YIQ [хромы]\nYou Can Do It , Ты можешь это сделать.\nYUV8 , ЮВ8\nZ-Range , Z-диапазон\nZ-Rotation , Z-ротация\nZ-Scale , Z-шкала\nZ-Size , Z-размер\nZ^^6 + Z^^3 - 1 , Z^^6 + Z^3 - 1\nZ^^8 + 15*z^^4 - 1 , Z^^8 + 15*z^4 - 1\nZed 32 , Зед 32\nZeke 39 , Зик 39\nZero , Ноль\nZilverFX - B&W Solarization , ZilverFX - Соляризация B&W\nZone System , Зональная система\nZoom , Увеличить\nZoom (%) , Увеличить (%)\nZoom Center , Центр масштабирования\nZoom Factor , коэффициент масштабирования\nZoom In , Увеличить масштаб\nZoom Out , Увеличить масштаб\n"
  },
  {
    "path": "translations/filters/gmic_qt_zh.csv",
    "content": "<b>Lights & Shadows</b> , <b>Lights & Shadows</b>(灯光和阴影)\n<b>Stereoscopic 3D</b> , <b>Stereoscopic 3D</b>(模拟3d电影)\n<b>Arrays & Tiles</b> , <b>Arrays & Tiles</b>(阵列和平铺)\n<b>Black & White</b> , <b>Black & White</b>(黑&白)\n<b>Deformations</b> , <b>Deformations</b>(变形器)\n<b>Degradations</b> , <b>Degradations</b>(画面解析特效)\n<b>Frequencies</b> , <b>Frequencies</b>(频谱化控制)\n<b>Silhouettes</b> , <b>Silhouettes</b>(剪影)\n<b>Rendering</b> , <b>Rendering</b>(渲染特效)\n<b>Sequences</b> , <b>Sequences</b>(渲染序列帧)\n<b>Artistic</b> , <b>Artistic</b>(艺术效果)\n<b>Contours</b> , <b>Contours</b>(轮廓)\n<b>Patterns</b> , <b>Patterns</b>(纹理效果)\n<b>Details</b> , <b>Details</b>(细节强调)\n<b>Animals</b> , <b>Animals</b>(动物剪影)\n<b>Various</b> , <b>Various</b>(多种特效包)\n<b>Colors</b> , <b>Colors</b>(颜色)\n<b>Frames</b> , <b>Frames</b>(艺术化相框)\n<b>Layers</b> , <b>Layers</b>(图层操作)\n<b>Repair</b> , <b>Repair</b>(修复)\n<b>Nature</b> , <b>Nature</b>(自然元素剪影)\n<b>Others</b> , <b>Others</b>(其他)\n<b>Icons</b> , <b>Icons</b>(图标)\n<b>Misc</b> , <b>Misc</b>(扩展剪影)\n<b>Testing</b> , <b>Testing</b>(测试(以下翻译均未校对))\nResynthetize Texture [Patch-Based] , Resynthetize Texture [Patch-Based](重新合成纹理[基于补丁])\nColorize Lineart [Smart Coloring] , Colorize Lineart [Smart Coloring](线稿着色[智能着色])\nExtract Foreground [Interactive] , Extract Foreground [Interactive](提取前景[交互式])\nAnnular Steiner Chain Round Tile , Annular Steiner Chain Round Tile(环形施泰纳链圆形瓷砖)\nCLUT from After - Before Layers , CLUT from After - Before Layers(从之后-层之前进行剪切)\nEquirectangular to Nadir-Zenith , Equirectangular to Nadir-Zenith(等量矩形→最低-最高)\nColorize Lineart [Propagation] , Colorize Lineart [Propagation](线稿着色[传播])\nKaleidoscope [Reptorian-Polar] , Kaleidoscope [Reptorian-Polar](万花筒[Reptorian极坐标])\nTransfer Colors [Patch-Based] , Transfer Colors [Patch-Based](转移颜色[基于补丁])\nTransfer Colors [Variational] , Transfer Colors [Variational](转移颜色[可变])\nInpaint [Transport-Diffusion] , Inpaint [Transport-Diffusion](修复[输移扩散])\nConstruction Material Texture , Construction Material Texture(建筑材料质地)\nColorize Lineart [Auto-Fill] , Colorize Lineart [Auto-Fill](线稿着色[自动填充])\nLocal Variance Normalization , Local Variance Normalization(局部方差标准化)\nStereoscopic Image Alignment , Stereoscopic Image Alignment(立体图像对齐)\nMake Seamless [Patch-Based] , Make Seamless [Patch-Based](无缝处理[补丁])\nTransfer Colors [Histogram] , Transfer Colors [Histogram](转移颜色[直方图])\nSharpen [Inverse Diffusion] , Sharpen [Inverse Diffusion](锐化[逆扩散])\nSharpen [Octave Sharpening] , Sharpen [Octave Sharpening](锐化[八度锐化])\nSmooth [Selective Gaussian] , Smooth [Selective Gaussian](平滑[选择性高斯])\nSinusoidal Water Distortion , Sinusoidal Water Distortion(正弦水变形)\nLocal Contrast Enhancement , Local Contrast Enhancement(局部对比度增强)\nResynthetize Texture [FFT] , Resynthetize Texture [FFT](重新合成纹理[FFT])\nEquation Plot [Parametric] , Equation Plot [Parametric](方程式图[参数])\n3D Image Object [Animated] , 3D Image Object [Animated](3D贴图物体[动画])\nAutomatic Depth Estimation , Automatic Depth Estimation(自动深度估算)\nRebuild From Similar Blocs , Rebuild From Similar Blocs(方块重建)\nMake Seamless [Diffusion] , Make Seamless [Diffusion](无缝处理[扩散])\nEqualize Local Histograms , Equalize Local Histograms(局部直方图平衡)\nSharpen [Richardson-Lucy] , Sharpen [Richardson-Lucy](锐化[Richardson-Lucy])\nIain Noise Reduction 2019 , Iain Noise Reduction 2019(Iain 降噪2019)\nSmooth [Geometric-Median] , Smooth [Geometric-Median](平滑[几何中值])\nColorize [with Colormap] , Colorize [with Colormap](着色[使用色表])\nColor Mask [Interactive] , Color Mask [Interactive](色彩蒙版[交互])\nStereographic Projection , Stereographic Projection(立体投影)\nSplit Details [Gaussian] , Split Details [Gaussian](细节分离(高斯))\nSplit Details [Wavelets] , Split Details [Wavelets](细节分离(微波))\nSmooth [Total Variation] , Smooth [Total Variation](平滑[全变分])\nDepth Map Reconstruction , Depth Map Reconstruction(深度图重建)\nUnquantize [JPEG Smooth] , Unquantize [JPEG Smooth](取消量化[JPEG平滑])\nColor Abstraction Paint , Color Abstraction Paint(彩色抽象油漆画)\nDifference of Gaussians , Difference of Gaussians(高斯函数差分)\nKaleidoscope [Symmetry] , Kaleidoscope [Symmetry](万花筒[对称])\nSharpen [Shock Filters] , Sharpen [Shock Filters](锐化[冲击滤波模型])\nGradient [Custom Shape] , Gradient [Custom Shape](渐变[自定义形状])\nMandelbrot - Julia Sets , Mandelbrot - Julia Sets(曼德勃罗-茱莉亚分形)\nInpaint [Morphological] , Inpaint [Morphological](修复[形态])\nRepair Scanned Document , Repair Scanned Document(修复扫描文件)\nSmooth [Mean-Curvature] , Smooth [Mean-Curvature](平滑[平均曲率])\n3D Elevation [Animated] , 3D Elevation [Animated](3D高度[动画])\n3D Extrusion [Animated] , 3D Extrusion [Animated](3D挤压[动画])\nSingle Image Stereogram , Single Image Stereogram(单图像立体图)\nBlur [Multidirectional] , Blur [Multidirectional](模糊[多向])\nDownload External Data , Download External Data(下载外部数据)\nTiled Parameterization , Tiled Parameterization(平铺 参数化)\nColorize [Interactive] , Colorize [Interactive](着色[交互式])\nColorize [Photographs] , Colorize [Photographs](着色[照片])\nSelective Desaturation , Selective Desaturation(选择性去饱和)\nKaleidoscope [Blended] , Kaleidoscope [Blended](万花筒[混合])\nDynamic Range Increase , Dynamic Range Increase(动态范围增加)\nSharpen [Unsharp Mask] , Sharpen [Unsharp Mask](锐化[不锐化蒙版])\nEquation Plot [Y=f(X)] , Equation Plot [Y=f(X)](方程式图[Y = f(X)])\nB&W Stencil [Animated] , B&W Stencil [Animated](黑白模板[动画])\nMoir&eacute; Animation , Moir&eacute; Animation(摩尔纹动画)\nDepth Map Construction , Depth Map Construction(深度图构建)\nLogarithmic Distortion , Logarithmic Distortion(对数变形)\nThorn Fractal - Secant , Thorn Fractal - Secant(刺分形-割线)\nArray [Random Colors] , Array [Random Colors](阵列[随机颜色])\nBlack Crayon Graffiti , Black Crayon Graffiti(黑色蜡笔涂鸦)\nPolygonize [Delaunay] , Polygonize [Delaunay](多边形化[三角剖分])\nTransfer Colors [PCA] , Transfer Colors [PCA](转移颜色[PCA])\nBlur [Depth-Of-Field] , Blur [Depth-Of-Field](模糊[景深])\nChromatic Aberrations , Chromatic Aberrations(色彩畸变)\nSharpen [Gold-Meinel] , Sharpen [Gold-Meinel](锐化[Gold-Meinel])\nSplit Details [Alpha] , Split Details [Alpha](细节分离[Alpha])\nRandom Color Ellipses , Random Color Ellipses(随机颜色椭圆)\nInpaint [Multi-Scale] , Inpaint [Multi-Scale](修复[多尺度])\nInpaint [Patch-Based] , Inpaint [Patch-Based](修复[基于补丁])\nLocal Similarity Mask , Local Similarity Mask(局部相似度蒙版)\nSmooth [Perona-Malik] , Smooth [Perona-Malik](光滑[Perona-Malik扩散系数])\nB&W Pencil [Animated] , B&W Pencil [Animated](黑白铅笔[动画])\nHedcut (Experimental) , Hedcut (Experimental)(减去(实验))\nSimple Local Contrast , Simple Local Contrast(简单的局部对比)\nKitaoka Spin Illusion , Kitaoka Spin Illusion(北冈旋转错觉)\nFriends Hall of Fame , Friends Hall of Fame(朋友名人堂)\nPosterized Dithering , Posterized Dithering(色调分离-抖动)\nEqualize HSI-HSL-HSV , Equalize HSI-HSL-HSV(HSI-HSL-HSV平衡)\nSelect-Replace Color , Select-Replace Color(选择替换颜色)\nMorphological Filter , Morphological Filter(形态学滤波)\nKaleidoscope [Polar] , Kaleidoscope [Polar](万花筒[极坐标])\nRandom Shade Stripes , Random Shade Stripes(随机阴影条纹)\nSharpen [Multiscale] , Sharpen [Multiscale](锐化[多标准])\nGradient [from Line] , Gradient [from Line](渐变[自直线])\nBayer Reconstruction , Bayer Reconstruction(拜耳重建)\nSmooth [Anisotropic] , Smooth [Anisotropic](平滑[各向异性])\nSmooth [Patch-Based] , Smooth [Patch-Based](平滑[基于补丁])\nLissajous [Animated] , Lissajous [Animated](利萨茹曲线/图形[动画])\nSoft Glow [Animated] , Soft Glow [Animated](柔光[动画])\nNormalize Brightness , Normalize Brightness(标准化亮度)\nCustom Code [Global] , Custom Code [Global](自定义代码[全局])\nTiled Normalization , Tiled Normalization(平铺 常规)\nTiled Random Shifts , Tiled Random Shifts(平铺 随机移位)\nMorphology Painting , Morphology Painting(形态学绘画)\nPolygonize [Energy] , Polygonize [Energy](多边形化[强力])\nQuadtree Variations , Quadtree Variations(四叉树变体)\nSimple Noise Canvas , Simple Noise Canvas(简单噪波画布)\nApply External CLUT , Apply External CLUT(应用外部CLUT)\nSpecific Saturation , Specific Saturation(特定饱和度)\nCartesian Transform , Cartesian Transform(笛卡尔变换)\nMorph [Interactive] , Morph [Interactive](变形[互动])\nFlip & Rotate Blocs , Flip & Rotate Blocs(翻转与旋转)\nConstrained Sharpen , Constrained Sharpen(约束锐化)\nLocal Normalization , Local Normalization(局部标准化)\nPortrait Retouching , Portrait Retouching(人像修饰)\nTone Mapping [Fast] , Tone Mapping [Fast](色调映射[快速])\nBlend [Average All] , Blend [Average All](混合[平均所有])\nMultiscale Operator , Multiscale Operator(多尺寸操作)\nContrast Swiss Mask , Contrast Swiss Mask(Swiss 对比蒙版)\nIlluminate 2D Shape , Illuminate 2D Shape(照亮2D形状)\nSeamless Turbulence , Seamless Turbulence(无缝乱流)\nIain's Fast Denoise , Iain's Fast Denoise(Iain 快速降噪)\nRed-Eye Attenuation , Red-Eye Attenuation(红眼衰减)\nSmooth [Thin Brush] , Smooth [Thin Brush](光滑[细笔刷])\nUpscale [Diffusion] , Upscale [Diffusion](Upscale [扩散])\nRodilius [Animated] , Rodilius [Animated](十字光闪耀[动画])\nSierpinski Triangle , Sierpinski Triangle(分形-谢尔宾斯基三角形)\nJapanese Maple Leaf , Japanese Maple Leaf(日本枫叶)\n3D Video Conversion , 3D Video Conversion(3D视频转换)\nTemperature Balance , Temperature Balance(色温平衡)\nCustom Code [Local] , Custom Code [Local](自定义代码[本地])\nExport RGB-565 File , Export RGB-565 File(导出RGB-565文件)\nImport RGB-565 File , Import RGB-565 File(导入RGB-565文件)\nCircle Abstraction , Circle Abstraction(圆抽象)\nBoost Chromaticity , Boost Chromaticity(提高饱和度)\nChannel Processing , Channel Processing(通道处理)\nChannels to Layers , Channels to Layers(分解RGB通道到图层)\nDecompose Channels , Decompose Channels(分解通道)\nHue Lighten-Darken , Hue Lighten-Darken(色相-亮暗)\nDistance Transform , Distance Transform(距离变换)\nWarp [Interactive] , Warp [Interactive](扭曲变形[互动])\nPyramid Processing , Pyramid Processing(金字塔处理)\nCrystal Background , Crystal Background(水晶背景)\nGradient [Corners] , Gradient [Corners](渐变[角])\nSymmetric 2D Shape , Symmetric 2D Shape(对称的2D形状)\nSmooth [Antialias] , Smooth [Antialias](平滑[抗锯齿])\nSmooth [Bilateral] , Smooth [Bilateral](平滑[双边])\nSmooth [Block PCA] , Smooth [Block PCA](平滑[PCA阻止])\nSmooth [Diffusion] , Smooth [Diffusion](平滑[扩散])\nSmooth [Patch-PCA] , Smooth [Patch-PCA](平滑[补丁-PCA])\n3D Text Pointcloud , 3D Text Pointcloud(3D点云)\nCartoon [Animated] , Cartoon [Animated](卡通[动画])\nSpatial Transition , Spatial Transition(空间转换)\nSharpen [Gradient] , Sharpen [Gradient](锐化[渐变])\nTurbulent Halftone , Turbulent Halftone(乱流半色调)\nSoft Random Shades , Soft Random Shades(柔和随机阴影)\nHistogram Analysis , Histogram Analysis(直方图分析)\nPseudorandom Noise , Pseudorandom Noise(伪随机噪声)\nDenoise Smooth Alt , Denoise Smooth Alt(平滑去噪[Alt])\nGrid [Triangular] , Grid [Triangular](网格[三角形])\nTileable Rotation , Tileable Rotation(无缝旋转)\nDiffusion Tensors , Diffusion Tensors(弥散张量)\nIllustration Look , Illustration Look(插图外观)\nLylejk's Painting , Lylejk's Painting(Lylejk的绘画)\nPhotoillustration , Photoillustration(摄影插图)\nBasic Adjustments , Basic Adjustments(基本调整)\nColor Temperature , Color Temperature(色温)\nLocal Orientation , Local Orientation(局部方向)\nContinuous Droste , Continuous Droste(连续德罗斯特递归)\nEuclidean - Polar , Euclidean - Polar(欧几里得-极坐标)\nOld-Movie Stripes , Old-Movie Stripes(旧电影条纹)\nVisible Watermark , Visible Watermark(可见水印)\nWarp by Intensity , Warp by Intensity(强力仿射变换)\nDetails Equalizer , Details Equalizer(细节平衡器)\nSharpen [Hessian] , Sharpen [Hessian](锐化[Hessian])\nSharpen [Texture] , Sharpen [Texture](锐化[纹理])\nFourier Transform , Fourier Transform(傅里叶变换)\nFourier Watermark , Fourier Watermark(傅里叶水印)\n3D Colored Object , 3D Colored Object(3D彩色物体)\n3D Random Objects , 3D Random Objects(3D随机物体)\nGradient [Linear] , Gradient [Linear](渐变[线性])\nGradient [Radial] , Gradient [Radial](渐变[径向])\nGradient [Random] , Gradient [Random](渐变[随机])\nRemove Hot Pixels , Remove Hot Pixels(去除热点)\nSmooth [NL-Means] , Smooth [NL-Means](平滑[非局部均值])\nSmooth [Wavelets] , Smooth [Wavelets](平滑[小波])\nUpscale [Scale2x] , Upscale [Scale2x](Upscale[Scale2x])\nEasy Skin Retouch , Easy Skin Retouch(轻松磨皮)\nGuided Light Rays , Guided Light Rays(引导光线)\nArray [Mirrored] , Array [Mirrored](阵列[镜像])\nGrid [Cartesian] , Grid [Cartesian](网格[笛卡尔])\nGrid [Hexagonal] , Grid [Hexagonal](网格[六角形])\nMulti-Layer Etch , Multi-Layer Etch(多层蚀刻)\nCircle Transform , Circle Transform(圆变换)\nSquare to Circle , Square to Circle(方→圆)\nNoise [Additive] , Noise [Additive](噪音[添加剂])\nLocal Processing , Local Processing(局部处理)\nSharpen [Deblur] , Sharpen [Deblur](锐化[去模糊])\nSharpen [Whiten] , Sharpen [Whiten](锐化[变白])\nFrame [Painting] , Frame [Painting](边框[画框])\nFourier Analysis , Fourier Analysis(傅立叶分析)\nBlend [Seamless] , Blend [Seamless](混合[无缝])\nBlend [Standard] , Blend [Standard](混合[标准])\nColors to Layers , Colors to Layers(颜色→图层)\nSlice Luminosity , Slice Luminosity(切割光度)\nRecursive Median , Recursive Median(递归中值)\nEdges [Animated] , Edges [Animated](边缘[动画])\nObject Animation , Object Animation(物体动画)\nLenticular Print , Lenticular Print(透镜印刷)\nCompression Blur , Compression Blur(压缩模糊)\nChalk It Up [Fr] , Chalk It Up [Fr](粉笔[Fr])\nArray [Regular] , Array [Regular](阵列[常规])\nExtract Objects , Extract Objects(提取对象)\nTiled Isolation , Tiled Isolation(平铺 隔离)\nColored Pencils , Colored Pencils(彩色铅笔)\nDream Smoothing , Dream Smoothing(梦幻平滑)\nHighlight Bloom , Highlight Bloom(仿环境光遮蔽(仿AO))\nSmooth Abstract , Smooth Abstract(平滑抽象)\nVector Painting , Vector Painting(矢量绘画)\nDesaturate Norm , Desaturate Norm(去饱和度)\nPencil Portrait , Pencil Portrait(铅笔肖像)\nColor Blindness , Color Blindness(色盲效果)\nPolar Transform , Polar Transform(极坐标变换)\nBlur [Gaussian] , Blur [Gaussian](模糊[高斯])\nOldschool 8bits , Oldschool 8bits(旧式8bits像素)\nTexture Enhance , Texture Enhance(纹理增强)\nFrame [Pattern] , Frame [Pattern](边框[图案])\nFrame [Regular] , Frame [Regular](边框[常规])\nLayers to Tiles , Layers to Tiles(图层→平铺)\nTiles to Layers , Tiles to Layers(平铺→图层)\nTones to Layers , Tones to Layers(色调→图层)\nEqualize Shadow , Equalize Shadow(阴影平衡)\n3D Image Object , 3D Image Object(3D贴图物体)\nQuick Copyright , Quick Copyright(快速版权水印)\nBanding Denoise , Banding Denoise(色带降噪)\nInpaint [Holes] , Inpaint [Holes](修复[穿孔])\nSmooth [Guided] , Smooth [Guided](平滑[引导])\nSmooth [Median] , Smooth [Median](平滑[中值])\nSmooth [Wiener] , Smooth [Wiener](平滑[维纳滤波])\nSharpen [Tones] , Sharpen [Tones](锐化[色调])\nHalftone Shapes , Halftone Shapes(半色调形状)\nPopcorn Fractal , Popcorn Fractal(爆米花形)\nPythagoras Tree , Pythagoras Tree(毕达哥拉斯树)\nTune HSV Colors , Tune HSV Colors(调整HSV颜色)\nBlur [Splinter] , Blur [Splinter](模糊[碎片])\nGmicky - Roddy , Gmicky - Roddy(小妖精-罗迪)\nPrivacy Notice , Privacy Notice(隐私声明)\nArray [Random] , Array [Random](阵列[随机])\nTiled Rotation , Tiled Rotation(平铺 旋转)\nSharp Abstract , Sharp Abstract(锐化抽象)\nThreshold Etch , Threshold Etch(阈值蚀刻)\nColorful Blobs , Colorful Blobs(七彩斑点)\nCustomize CLUT , Customize CLUT(自定义CLUT)\nHSL Adjustment , HSL Adjustment(HSL调整)\nLocal Contrast , Local Contrast(局部对比)\nConformal Maps , Conformal Maps(保角映射)\nTextured Glass , Textured Glass(肌理玻璃)\nBlur [Angular] , Blur [Angular](模糊[旋转])\nCRT Sub-Pixels , CRT Sub-Pixels(CRT子像素)\nJPEG Artefacts , JPEG Artefacts(JPEG像素损失)\nMess with Bits , Mess with Bits(条纹干涉)\nNoise [Perlin] , Noise [Perlin](噪声[柏林])\nNoise [Spread] , Noise [Spread](噪声[扩散])\nSelf Glitching , Self Glitching(噪声干扰)\nFreaky Details , Freaky Details(怪异的细节)\nMighty Details , Mighty Details(强大的细节)\nFrame [Mirror] , Frame [Mirror](边框[镜面])\nFrame [Smooth] , Frame [Smooth](边框[平滑])\nOld Photograph , Old Photograph(旧照片)\nBlend [Median] , Blend [Median](混合[中值])\nDodge and Burn , Dodge and Burn(减淡与加深)\nDrop Shadow 3D , Drop Shadow 3D(投影3D)\nCanvas Texture , Canvas Texture(画布纹理)\nMineral Mosaic , Mineral Mosaic(矿物镶嵌)\nNeon Lightning , Neon Lightning(霓虹灯闪电)\nNewton Fractal , Newton Fractal(牛顿分形)\nEqualize Light , Equalize Light(均衡光)\nRandom Pattern , Random Pattern(随机图案)\nDenoise Smooth , Denoise Smooth(平滑去噪)\nFilter Design , Filter Design(过滤器设计)\nRelease Notes , Release Notes(发行说明)\nArray [Faded] , Array [Faded](阵列[过度])\nDrawn Montage , Drawn Montage(绘制蒙太奇)\nGraphic Boost , Graphic Boost(图画增强)\nGraphic Novel , Graphic Novel(图画小说)\nMake Squiggly , Make Squiggly(不规则线条 )\nWhirl Drawing , Whirl Drawing(旋转式绘图)\nBlack & White , Black & White(黑&白)\nColor Balance , Color Balance(色彩平衡)\nColor Grading , Color Grading(颜色分级)\nColor Presets , Color Presets(色调预设[LUT])\nMetallic Look , Metallic Look(金属质感)\nMixer [YCbCr] , Mixer [YCbCr](混合器[YCbCr])\nSaturation EQ , Saturation EQ(饱和度均衡器)\nSimulate Film , Simulate Film(模拟电影)\nVintage Style , Vintage Style(复古风格)\nEdges Offsets , Edges Offsets(边缘偏移)\nGradient Norm , Gradient Norm(梯度范数)\nBlur [Linear] , Blur [Linear](模糊[线性])\nBlur [Radial] , Blur [Radial](模糊[径向])\nMagic Details , Magic Details(魔术细节)\nFrame [Fuzzy] , Frame [Fuzzy](边框[模糊])\nFrame [Round] , Frame [Round](边框[圆])\nBlend [Edges] , Blend [Edges](混合[边缘])\nFreqy Pattern , Freqy Pattern(频率模式)\nPaper Texture , Paper Texture(纸张纹理)\nPeriodic Dots , Periodic Dots(周期性点)\nSeamless Deco , Seamless Deco(无缝装饰)\nStained Glass , Stained Glass(花窗玻璃)\nDeinterlace2x , Deinterlace2x(反交错2x)\nPixel Denoise , Pixel Denoise(像素降噪)\nSmooth [IUWT] , Smooth [IUWT](平滑[IUWT])\nSmooth [Skin] , Smooth [Skin](光滑[皮肤])\nEdges on Fire , Edges on Fire(边缘着火)\nShopping Cart , Shopping Cart(购物车)\nBarnsley Fern , Barnsley Fern(分形-巴恩斯利蕨)\n3D Conversion , 3D Conversion(3D转换)\nUndo Anaglyph , Undo Anaglyph(消除立体成像)\nQuick Tonemap , Quick Tonemap(快速色调图)\nMoire Removal , Moire Removal(去除波纹)\nUltraWarp++++ , UltraWarp++++(超级仿射变换++++)\nEmboss-Relief , Emboss-Relief(浮雕)\nFragment Blur , Fragment Blur(片段模糊)\nDenim Texture , Denim Texture(牛仔纹理)\nMoon2panorama , Moon2panorama(Moon2全景)\nGames & Demos , Games & Demos(游戏与演示)\nContributors , Contributors(贡献者)\nEllipsionism , Ellipsionism(椭圆主义)\nFinger Paint , Finger Paint(手指画)\nHough Sketch , Hough Sketch(霍夫素描)\nPoster Edges , Poster Edges(海报边缘)\nEqualize HSV , Equalize HSV(HSV平衡)\nMixer [CMYK] , Mixer [CMYK](混合器[CMYK])\nTone Presets , Tone Presets(色调预设)\nUser-Defined , User-Defined(用户自定义)\nGradient RGB , Gradient RGB(渐变RGB)\nSegmentation , Segmentation(分段)\nSuper-Pixels , Super-Pixels(超大像素)\nDistort Lens , Distort Lens(镜头畸变)\nBlur [Bloom] , Blur [Bloom](模糊[辉光])\nMask Creator , Mask Creator(蒙版创造者)\nTone Enhance , Tone Enhance(色调增强)\nTone Mapping , Tone Mapping(色调映射)\nFrame [Blur] , Frame [Blur](边框[模糊背景])\nFrame [Cube] , Frame [Cube](边框[立方体])\nAlign Layers , Align Layers(对齐图层)\nBlend [Fade] , Blend [Fade](混合[渐隐])\nMorph Layers , Morph Layers(变形图层)\nRelief Light , Relief Light(缓和光线)\nShadow Patch , Shadow Patch(阴影光斑)\nBayer Filter , Bayer Filter(拜耳滤色镜)\nPack Sprites , Pack Sprites(包装精灵)\n3D Elevation , 3D Elevation(3D高度)\n3D Extrusion , 3D Extrusion(3D挤压)\nSuperformula , Superformula(超级方程式)\nDragon Curve , Dragon Curve(分形-龙形曲线)\nStereo Image , Stereo Image(立体图像)\nAuto Balance , Auto Balance(自动平衡)\nTwisted Rays , Twisted Rays(扭曲的光线)\nSample Image , Sample Image(样本图像)\nHypotrochoid , Hypotrochoid(圆内旋轮线)\nAbout G'MIC , About G'MIC(关于G'MIC)\nHard Sketch , Hard Sketch(硬素描)\nHope Poster , Hope Poster(希望海报)\nPastell Art , Pastell Art(蜡笔艺术)\nPen Drawing , Pen Drawing(钢笔画)\nB&W Stencil , B&W Stencil(黑白蜡纸)\nAbstraction , Abstraction(抽象化)\nDetect Skin , Detect Skin(检测皮肤)\nMixer [HSV] , Mixer [HSV](混合器[HSV])\nMixer [Lab] , Mixer [Lab](混合器[Lab])\nMixer [PCA] , Mixer [PCA](混合器[PCA])\nMixer [RGB] , Mixer [RGB](混合器[RGB])\nZone System , Zone System(分区曝光显影系统)\nPerspective , Perspective(透视)\nBlur [Glow] , Blur [Glow](模糊[发光])\nRain & Snow , Rain & Snow(雨雪)\nFade Layers , Fade Layers(渐隐图层)\nDrop Shadow , Drop Shadow(投影)\nLight Leaks , Light Leaks(漏光)\nLight Patch , Light Patch(光斑)\nPop Shadows , Pop Shadows(流行阴影)\nBox Fitting , Box Fitting(随机格框)\nShock Waves , Shock Waves(冲击波)\nDeinterlace , Deinterlace(反交错)\nInformation , Information(信息)\nBarbed Wire , Barbed Wire(铁丝网)\nPaint Splat , Paint Splat(油漆喷溅)\nDe-Anaglyph , De-Anaglyph(去立体化)\nJPEG Smooth , JPEG Smooth(JPEG平滑)\nSnowflake 2 , Snowflake 2(雪花2)\nImport Data , Import Data(导入数据)\nChessboard , Chessboard(棋盘)\nFractalize , Fractalize(分形)\nFreaky B&W , Freaky B&W(怪异的黑白)\nBoost-Fade , Boost-Fade(染色-褪色)\nBrightness , Brightness(亮度)\nHSV Select , HSV Select(HSV选择)\nRetro Fade , Retro Fade(复古褪色)\nThin Edges , Thin Edges(细边)\nDrop Water , Drop Water(滴水)\nQuadrangle , Quadrangle(四边形)\nReflection , Reflection(反射)\nSymmetrize , Symmetrize(对称化)\nPixel Sort , Pixel Sort(像素序列化)\nDCP Dehaze , DCP Dehaze(DCP除雾)\nYAG Effect , YAG Effect(YAG效果)\nLight Glow , Light Glow(光辉)\nLight Rays , Light Rays(光线)\nCamouflage , Camouflage(迷彩伪装)\nPolka Dots , Polka Dots(波卡尔圆点)\n3D Lathing , 3D Lathing(3D车床加工)\nCircle Art , Circle Art(圆形艺术)\nHair Locks , Hair Locks(发绺)\nShade Bobs , Shade Bobs(Shade Bobs分形)\nTurbulence , Turbulence(湍流)\nClean Text , Clean Text(清理文本)\nKookaburra , Kookaburra(笑翠鸟)\nAnti Alias , Anti Alias(抗锯齿)\nPixel Push , Pixel Push(像素推送)\nPoint Warp , Point Warp(点变形)\nPaint Daub , Paint Daub(油漆涂抹)\nSpiral RGB , Spiral RGB(螺旋RGB)\nSolve Maze , Solve Maze(求解迷宫)\nSine Curve , Sine Curve(正弦曲线)\nAscii Art , Ascii Art(ASCII艺术)\nMinisteck , Ministeck(小块拼贴(随机))\nPosterize , Posterize(色调分离)\nDithering , Dithering(抖动)\nCMYK Tone , CMYK Tone(CMYK调和)\nSoftlight , Softlight(柔光)\nCurvature , Curvature(曲率)\nIsophotes , Isophotes(等照度线)\nLaplacian , Laplacian(拉普拉斯算子)\nRaindrops , Raindrops(雨滴)\nSeamcarve , Seamcarve(接缝裁剪)\nAdd Grain , Add Grain(添加颗粒)\nScanlines , Scanlines(扫描线)\nHigh Pass , High Pass(高通)\nRorschach , Rorschach(罗夏)\n3D Blocks , 3D Blocks(3D立方体化)\nLightning , Lightning(闪电)\nLissajous , Lissajous(利萨茹曲线/图形)\nDespeckle , Despeckle(去斑)\nLava Lamp , Lava Lamp(熔岩灯)\nDragonfly , Dragonfly(蜻蜓)\nCrosshair , Crosshair(十字准线)\nAustralia , Australia(澳大利亚)\nSnowflake , Snowflake(雪花)\nBrushify , Brushify(笔触感)\nFelt Pen , Felt Pen(毡笔)\nKuwahara , Kuwahara(Kuwahara滤波)\nPainting , Painting(油画)\nRodilius , Rodilius(罗迪留斯)\nShapeism , Shapeism(形状)\nCharcoal , Charcoal(木炭)\nInk Wash , Ink Wash(油墨清洗)\nColormap , Colormap(色彩映射)\nContrast , Contrast(对比度)\nDark Sky , Dark Sky(阴暗的天光)\nRGB Tone , RGB Tone(RGB调和)\nConvolve , Convolve(卷积)\nSkeleton , Skeleton(骨架)\nFish-Eye , Fish-Eye(鱼眼)\nSpherize , Spherize(球形化)\nPolaroid , Polaroid(宝丽来相机)\nVignette , Vignette(晕影/暗角)\nBandpass , Bandpass(带通)\nHalftone , Halftone(半色调)\nDescreen , Descreen(去除网点)\nSolidify , Solidify(固化)\nUnpurple , Unpurple(去紫)\n3D Tiles , 3D Tiles(3D平铺)\nGum Leaf , Gum Leaf(口香糖叶)\nBlockism , Blockism(块面化)\nNebulous , Nebulous(星云状的)\nSkeletik , Skeletik(骨骼/骨架)\nIntarsia , Intarsia(嵌花编织)\nMontage , Montage(蒙太奇)\nCartoon , Cartoon(卡通)\nStylize , Stylize(风格化)\nEngrave , Engrave(雕刻)\nRetinex , Retinex(人眼感知范围[Retinex])\nMake Up , Make Up(补偿)\nTexture , Texture(纹理)\nCrystal , Crystal(水晶)\nStencil , Stencil(模版)\nTruchet , Truchet(特鲁谢拼贴)\nVoronoi , Voronoi(沃罗诺伊)\nRainbow , Rainbow(彩虹)\nUnstrip , Unstrip(去条纹)\nRooster , Rooster(公鸡)\nWiremap , Wiremap(线图)\nAnguish , Anguish(悲痛中的煎熬)\nSpotify , Spotify(点化)\nReptile , Reptile(爬行动物鳞甲)\nPuzzle , Puzzle(智力拼图)\nTaquin , Taquin(乱序拼图)\nAurora , Aurora(极光)\nCubism , Cubism(立体主义)\nCutout , Cutout(木刻/剪纸)\nDoodle , Doodle(乱画-线)\nLinify , Linify(绕线画/弦丝画)\nSketch , Sketch(草图)\nWarhol , Warhol(安迪·沃霍尔)\nPencil , Pencil(铅笔)\nCurves , Curves(曲线)\nCrease , Crease(皱痕)\nFlower , Flower(花朵)\nSphere , Sphere(球)\nStreak , Streak(条纹)\nDroste , Droste(德罗斯特递归)\nTunnel , Tunnel(隧道)\nStroke , Stroke(描边(Stroke))\nCanvas , Canvas(画布)\nClouds , Clouds(云)\nCracks , Cracks(裂缝)\nFibers , Fibers(纤维)\nHearts , Hearts(小爱心)\nMarble , Marble(玻璃珠)\nMosaic , Mosaic(镶嵌)\nOp Art , Op Art(欧普艺术)\nRandom , Random(随机)\nSponge , Sponge(海绵)\nTetris , Tetris(俄罗斯方块)\nTuring , Turing(图灵)\nWhirls , Whirls(回旋)\nPlasma , Plasma(等离子体)\nEmboss , Emboss(浮雕)\nSpiral , Spiral(螺旋)\nDices , Dices(骰子)\nBokeh , Bokeh(散景)\nGhost , Ghost(灵魂)\nStamp , Stamp(图章)\nSepia , Sepia(棕褐色)\nEdges , Edges(边缘)\nTwirl , Twirl(扭曲)\nWater , Water(水)\nDirty , Dirty(变脏)\nPlaid , Plaid(格子布)\nSatin , Satin(缎布)\nStars , Stars(星星)\nStrip , Strip(条纹)\nWeave , Weave(编织)\nPhone , Phone(电话)\nCupid , Cupid(丘比特)\nHeart , Heart(爱心)\nDisco , Disco(迪斯科(舞会灯光))\nWave , Wave(波纹)\nWind , Wind(风)\nZoom , Zoom(缩放)\nLomo , Lomo(Lomo相机)\nPack , Pack(打包)\nBurn , Burn(加深)\nLava , Lava(熔岩)\nMaze , Maze(迷宫)\nRays , Rays(射线)\nBall , Ball(球)\nTree , Tree(树)\nFlip , Flip(翻转)\nMail , Mail(邮件)\nGear , Gear(齿轮)\nEdge , Edge(边缘)\nPaw , Paw(爪子)\nGentle Mode (overrides Minimum Brightness and Minimun Red:Blue Ratio) , Gentle Mode (overrides Minimum Brightness and Minimun Red:Blue Ratio)(柔和模式(覆盖最小亮度和最小红色:蓝色比率))\nRayon Cercle Extérieur / Radius Outer Circle A (>0 W%) (<0 H%) , Rayon Cercle Extérieur / Radius Outer Circle A (>0 W%) (<0 H%)(外圈半径 A (>0 W%) (<0 H%))\nLogarithmic Distortion Axis Combination for X-Axis , Logarithmic Distortion Axis Combination for X-Axis(X轴的对数失真轴组合)\nLogarithmic Distortion Axis Combination for Y-Axis , Logarithmic Distortion Axis Combination for Y-Axis(Y轴的对数失真轴组合)\nNb Cercles Extérieurs / Circles Surrounding , Nb Cercles Extérieurs / Circles Surrounding(Nb Cercles Ext&#rieurs /周围的圆圈)\nAuto Set Hue Inverse (Hue Slider Is Disabled) , Auto Set Hue Inverse (Hue Slider Is Disabled)(自动设置色相反转(禁用色相滑块))\n39. Activate Butterworth Bandpass Processing , 39. Activate Butterworth Bandpass Processing(39.激活巴特沃思带通处理)\n8.  Quadtree Pixelisation [No Alpha Channel] , 8.  Quadtree Pixelisation [No Alpha Channel](8.四叉树像素化[无Alpha通道])\nAuto Reduce Level (Level Slider Is Disabled) , Auto Reduce Level (Level Slider Is Disabled)(自动降低水平(水平滑块已禁用))\nAngle Décalage Des Couleurs A / Offset , Angle Décalage Des Couleurs A / Offset(色彩角度调整A)\nAngle Décalage Des Couleurs B / Offset , Angle Décalage Des Couleurs B / Offset(色彩角度调整B)\nAdd User-Defined Constraints (Interactive) , Add User-Defined Constraints (Interactive)(添加用户定义的约束(交互式))\nRayon Cercle Milieu / Radius Middle Circle , Rayon Cercle Milieu / Radius Middle Circle(中圈半径)\n1.  Plasma Texture [Discards Input Image] , 1.  Plasma Texture [Discards Input Image](1.等离子纹理[丢弃输入图像])\nAdd Alpha Channels to Detail Scale Layers , Add Alpha Channels to Detail Scale Layers(将Alpha通道添加到局部比例图层)\nCouleurs Aléatoires / Random Colors , Couleurs Aléatoires / Random Colors(随机颜色)\nRemove Artifacts From Micro/Macro Detail , Remove Artifacts From Micro/Macro Detail(从微观/宏观细节中删除伪像)\nDécalage Ombre X / Shadow Offset X , Décalage Ombre X / Shadow Offset X(阴影 偏移 X)\nDécalage Ombre Y / Shadow Offset Y , Décalage Ombre Y / Shadow Offset Y(阴影 偏移 Y)\nLogarithmic Distortion X-Axis Direction , Logarithmic Distortion X-Axis Direction(对数失真X轴方向)\nLogarithmic Distortion Y-Axis Direction , Logarithmic Distortion Y-Axis Direction(对数失真Y轴方向)\nOpacité Flocon / Opacity Snowflake , Opacité Flocon / Opacity Snowflake(雪花不透明度)\n23. Self-Blending V. Original Blending , 23. Self-Blending V. Original Blending(23.自我融合V.原始融合)\n24. Self-Blend V. Original Opacity (%) , 24. Self-Blend V. Original Opacity (%)(24.自混合V.不透明度(%))\nMatching Precision (Smaller Is Faster) , Matching Precision (Smaller Is Faster)(匹配精度(越小越快))\nOutput Each Piece on a Different Layer , Output Each Piece on a Different Layer(在不同的图层上输出每个片段)\nAccentuation Nuances / Sharpen Shades , Accentuation Nuances / Sharpen Shades(细微差别/锐化阴影)\nAutomatic Upscale for Optimum Results , Automatic Upscale for Optimum Results(自动升级以获得最佳结果)\nDisplay Coordinates on Preview Window , Display Coordinates on Preview Window(在预览窗口上显示坐标)\nPreserve Canvas for Post Bump Mapping , Preserve Canvas for Post Bump Mapping(保留画布以进行后期凹凸贴图)\nMaximum Red:Blue Ratio in the Fringe , Maximum Red:Blue Ratio in the Fringe(边缘中的最大红色:蓝色比率)\nMinimum Red:Blue Ratio in the Fringe , Minimum Red:Blue Ratio in the Fringe(边缘中的最小红色:蓝色比率)\nPercent of Image Half-Hypotenuse (%) , Percent of Image Half-Hypotenuse (%)(图像半斜边的百分比(%))\nRender Routine for Wiggle Animations , Render Routine for Wiggle Animations(摆动动画渲染例程)\nScale Style to Fit Target Resolution , Scale Style to Fit Target Resolution(缩放样式以适合目标分辨率)\n4.  Segmentation [No Alpha Channel] , 4.  Segmentation [No Alpha Channel](4.细分[无Alpha通道])\nFit Radial End to Min/Max Dimension , Fit Radial End to Min/Max Dimension(使径向端部适合最小/最大尺寸)\nKeep Base Layer as Input Background , Keep Base Layer as Input Background(保持基础层作为输入背景)\nKeep Iterations as Different Layers , Keep Iterations as Different Layers(保持迭代为不同的层)\nLock Return Scaling to Source Layer , Lock Return Scaling to Source Layer(锁定恢复尺寸到源层)\nInversion Couleurs / Invert Colors , Inversion Couleurs / Invert Colors(反转Couleurs /反转颜色)\nSmoothen Background Reconstruction , Smoothen Background Reconstruction(简化背景重建)\nAngle Décalage Image Contour , Angle Décalage Image Contour(角度D和比例尺图像轮廓)\nCourbure Ombre / Curvature Shadow , Courbure Ombre / Curvature Shadow(曲率阴影)\nDouceur Ombre / Smoothness Shadow , Douceur Ombre / Smoothness Shadow(平滑阴影)\nMélanges Rayons / Blend Rays , Mélanges Rayons / Blend Rays(混合光线)\nNombre De Rayons / Number Of Rays , Nombre De Rayons / Number Of Rays(射线数)\nOutput Preset as a HaldCLUT Layer , Output Preset as a HaldCLUT Layer(输出预设为HaldCLUT层)\nPreview Progression While Running , Preview Progression While Running(运行时预览进度)\nAdjust Background Reconstruction , Adjust Background Reconstruction(调整背景重建)\nDetail Reconstruction Smoothness , Detail Reconstruction Smoothness(细节重建平滑度)\nEnable Extreme Emboss or Relief? , Enable Extreme Emboss or Relief?(启用极端浮雕或浮雕?)\nExpand Background Reconstruction , Expand Background Reconstruction(展开背景重建)\nPatch Size for Synthesis (Final) , Patch Size for Synthesis (Final)(合成的补丁大小(最终))\nUse Top Layer as a Priority Mask , Use Top Layer as a Priority Mask(使用顶层作为优先遮罩)\nDetail Reconstruction Detection , Detail Reconstruction Detection(细节重建检测)\nImage to Grab Color from (.Png) , Image to Grab Color from (.Png)(从(.Png)图像获取的颜色)\nMake Hue Depends on Region Size , Make Hue Depends on Region Size(使色调取决于区域大小)\nMaximal Seams per Iteration (%) , Maximal Seams per Iteration (%)(每次迭代的最大接缝(%))\nMaximum Number of Output Layers , Maximum Number of Output Layers(最大输出层数)\nOpacité / Opacity Contours , Opacité / Opacity Contours(轮廓不透明度)\nPencil Smoother Edge Protection , Pencil Smoother Edge Protection(铅笔更平滑的边缘保护)\nResize Image for Optimum Effect , Resize Image for Optimum Effect(调整图像大小以获得最佳效果)\nSupprimer Calque / Delete Layer , Supprimer Calque / Delete Layer(删除图层)\n26. Random Negation Channel(s) , 26. Random Negation Channel(s)(26.随机否定通道)\n48. Activate Relief Processing , 48. Activate Relief Processing(48.激活救济处理)\nAngle of Main Nebulous Surface , Angle of Main Nebulous Surface(主星云面角度)\nDetail Reconstruction Strength , Detail Reconstruction Strength(细节重建强度)\nFidelity Smoothness (Coarsest) , Fidelity Smoothness (Coarsest)(保真平滑度(最差))\nForce Re-Download from Scratch , Force Re-Download from Scratch(从头开始重新下载)\nInfluence of Color Samples (%) , Influence of Color Samples (%)(色样的影响(%))\nInit. With High Gradients Only , Init. With High Gradients Only(初始化. 仅有高渐变)\nInvert Background / Foreground , Invert Background / Foreground(反转背景/前景)\nMaximum Number of Image Colors , Maximum Number of Image Colors(图像颜色的最大数量)\nNumber of Iterations per Scale , Number of Iterations per Scale(每个尺寸的迭代次数)\nPainter's Edge Protection Flow , Painter's Edge Protection Flow(画家的边缘保护流量)\nSurface Disturbance Multiplier , Surface Disturbance Multiplier(表面扰动倍增器)\n11.  Quadtree Min Homogeneity , 11.  Quadtree Min Homogeneity(11.四叉树最小同质性)\n12.  Quadtree Max Homogeneity , 12.  Quadtree Max Homogeneity(12. Quadtree最大同质性)\n1st Additional Palette (.Gpl) , 1st Additional Palette (.Gpl)(第一个附加调色板(.Gpl))\n22. Self-Blending Opacity (%) , 22. Self-Blending Opacity (%)(22.自混浊度(%))\n2nd Additional Palette (.Gpl) , 2nd Additional Palette (.Gpl)(第二个附加调色板(.Gpl))\nAdd Comment Area in HTML Page , Add Comment Area in HTML Page(在HTML页面中添加评论区域)\nColor 4 (Bottom/Right Corner) , Color 4 (Bottom/Right Corner)(颜色4(底/右角))\nDisplay Debug Info on Preview , Display Debug Info on Preview(在预览中显示调试信息)\nFidelity to Target (Coarsest) , Fidelity to Target (Coarsest)(保真目标(最差))\nForce Tiles to Have Same Size , Force Tiles to Have Same Size(强制每块具有相同大小)\nProcess Channels Individually , Process Channels Individually(分别处理通道)\nRecursions Flocon / Snowflake , Recursions Flocon / Snowflake(递归雪花)\nSkip to Use the Mask to Boost , Skip to Use the Mask to Boost(跳过使用面膜增强)\nSpecify Different Output Size , Specify Different Output Size(指定不同的输出大小)\n-3. Normalisation Channel(s) , -3. Normalisation Channel(s)(-3. 标准化通道)\nAffichage / Display Contours , Affichage / Display Contours(显示轮廓)\nAngle of Disturbance Surface , Angle of Disturbance Surface(扰动面角度)\nAuto-Reduce Number of Frames , Auto-Reduce Number of Frames(自动减少帧数)\nColor 3 (Bottom/Left Corner) , Color 3 (Bottom/Left Corner)(颜色3(左下角))\nFast (Low Precision) Preview , Fast (Low Precision) Preview(快速(低精度)预览)\nFidelity Smoothness (Finest) , Fidelity Smoothness (Finest)(保真平滑度(最佳))\nNumber of Matches (Coarsest) , Number of Matches (Coarsest)(匹配数目(最差))\nSplit Base and Detail Output , Split Base and Detail Output(拆分基本和明细输出)\nStereoscopic Window Position , Stereoscopic Window Position(立体窗位置)\n10.  Quadtree Max Precision , 10.  Quadtree Max Precision(10. Quadtree Max精度)\nAdditional Duplicates Count , Additional Duplicates Count(额外重复计数)\nAnaglyph Glasses Adjustment , Anaglyph Glasses Adjustment(立体眼镜调整)\nColor Variation [Random -1] , Color Variation [Random -1](颜色变化[随机-1])\nCubism on Color Abstraction , Cubism on Color Abstraction(色彩抽象立体主义)\nDetail Reconstruction Style , Detail Reconstruction Style(细节重建风格)\nDistortion Surface Position , Distortion Surface Position(变形表面位置)\nDisturbance Scale-By-Factor , Disturbance Scale-By-Factor(干扰量表)\nDo Not Flatten Transparency , Do Not Flatten Transparency(不要弄平透明度)\nEdge Detect Includes Chroma , Edge Detect Includes Chroma(边缘检测包括色度)\nFeature Analyzer Smoothness , Feature Analyzer Smoothness(特征分析器平滑度)\nFidelity to Target (Finest) , Fidelity to Target (Finest)(保真目标(最佳))\nKeep Transparency in Output , Keep Transparency in Output(保持输出透明)\nLN Neightborhood-Smoothness , LN Neightborhood-Smoothness(LN 相邻-平滑)\nPreserve Initial Brightness , Preserve Initial Brightness(保持初始亮度)\nSegmentation Edge Threshold , Segmentation Edge Threshold(分割边缘阈值)\nShift Linear Interpolation? , Shift Linear Interpolation?(移位线性插值?)\n9.  Quadtree Min Precision , 9.  Quadtree Min Precision(9.四叉树最小精度)\nActivate Color Enhancement , Activate Color Enhancement(激活色彩增强)\nEnable Interpolated Motion , Enable Interpolated Motion(启用插补运动)\nFeature Analyzer Threshold , Feature Analyzer Threshold(特征分析器阈值)\nHighlights Color Intensity , Highlights Color Intensity(高光颜色强度)\nHighlights Crossover Point , Highlights Crossover Point(亮点交叉点)\nIntensity of Purple Fringe , Intensity of Purple Fringe(紫边强度)\nKeep Detail Layer Separate , Keep Detail Layer Separate(将细节层分开)\nNegative Color Abstraction , Negative Color Abstraction(负色抽象)\nNumber of Matches (Finest) , Number of Matches (Finest)(匹配数目(最佳))\nPenalize Patch Repetitions , Penalize Patch Repetitions(惩罚补丁重复)\nPencil Smoother Smoothness , Pencil Smoother Smoothness(铅笔平滑平滑)\nPosterization Antialiasing , Posterization Antialiasing(后期化抗锯齿)\nPreliminary X-Axis Scaling , Preliminary X-Axis Scaling(初步X轴缩放)\nPreliminary Y-Axis Scaling , Preliminary Y-Axis Scaling(初步的Y轴缩放)\nR/B Smoothness (Principal) , R/B Smoothness (Principal)(R/B 平滑度(主要))\nR/B Smoothness (Secondary) , R/B Smoothness (Secondary)(R/B 平滑度(次要))\nRed - Green - Blue - Alpha , Red - Green - Blue - Alpha(红色-绿色-蓝色-Alpha)\nSharpen Details in Preview , Sharpen Details in Preview(在预览中锐化细节)\nSuperimpose with Original? , Superimpose with Original?(与原始叠加?)\nActivate Second Direction , Activate Second Direction(激活第二方向)\nApply Transformation From , Apply Transformation From(从应用转换)\nBlur Dodge and Burn Layer , Blur Dodge and Burn Layer(模糊减淡和加深图层)\nColor 2 (Up/Right Corner) , Color 2 (Up/Right Corner)(颜色2(右上角))\nColor Abstraction Opacity , Color Abstraction Opacity(颜色抽象不透明度)\nHigher Mask Threshold (%) , Higher Mask Threshold (%)(较高的遮罩阈值(%))\nLowlights Crossover Point , Lowlights Crossover Point(弱光交叉点)\nMax Angle Deviation (deg) , Max Angle Deviation (deg)(最大角度偏差(度))\nMedium Details Smoothness , Medium Details Smoothness(中等细节平滑度)\nMin Angle Deviation (deg) , Min Angle Deviation (deg)(最小角度偏差(度))\nOutput as Multiple Layers , Output as Multiple Layers(输出为多层)\nOutput as Separate Layers , Output as Separate Layers(输出为单独的图层)\nOutput Corresponding CLUT , Output Corresponding CLUT(输出对应的CLUT)\nPainter's Touch Sharpness , Painter's Touch Sharpness(画家的触摸清晰度)\nPencil Smoother Sharpness , Pencil Smoother Sharpness(铅笔平滑锐利)\nPreliminary Surface Shift , Preliminary Surface Shift(初步表面位移)\nRegularization Iterations , Regularization Iterations(正规化迭代)\nShade Back to First Color , Shade Back to First Color(阴影回到第一种颜色)\nSize of Frame Numbers (%) , Size of Frame Numbers (%)(帧编号大小(%))\nToggle to View Base Image , Toggle to View Base Image(切换以查看基本图像)\n3.  Plasma Alpha Channel , 3.  Plasma Alpha Channel(3.等离子阿尔法通道)\n53. Blending Opacity (%) , 53. Blending Opacity (%)(53.混合不透明度(%))\nAllow Self Intersections , Allow Self Intersections(允许自我相交)\nAngle Inclinaison / Tilt , Angle Inclinaison / Tilt(倾斜角度/倾斜)\nAvg Thickness Factor (%) , Avg Thickness Factor (%)(平均宽度系数(%))\nBase Reference Dimension , Base Reference Dimension(基本参考尺寸)\nColor 1 (Up/Left Corner) , Color 1 (Up/Left Corner)(颜色1(左上角))\nDistortion Surface Angle , Distortion Surface Angle(变形表面角度)\nKeep Original Image Size , Keep Original Image Size(保持原始图像大小)\nLower Mask Threshold (%) , Lower Mask Threshold (%)(面罩下限(%))\nMaximal Color Saturation , Maximal Color Saturation(最大色彩饱和度)\nMedium Details Threshold , Medium Details Threshold(中等详细信息阈值)\nMidtones Color Intensity , Midtones Color Intensity(中间调颜色强度)\nOpen Interactive Preview , Open Interactive Preview(打开交互式预览)\nOutput Region Delimiters , Output Region Delimiters(输出区域定界符)\nPatch Size for Synthesis , Patch Size for Synthesis(合成的补丁大小)\nPreserve Image Dimension , Preserve Image Dimension(保留图像尺寸)\nPreview Reference Circle , Preview Reference Circle(预览参考圈)\nProcess by Blocs of Size , Process by Blocs of Size(按大小块处理)\nRécursions Contours , Récursions Contours(递归轮廓)\nSaturation Channel Gamma , Saturation Channel Gamma(饱和度通道伽玛)\nSmoother Edge Protection , Smoother Edge Protection(边缘平滑度)\nStd Thickness Factor (%) , Std Thickness Factor (%)(标准宽度系数(%))\nTurn on Rotate and Twirl , Turn on Rotate and Twirl(打开旋转并旋转)\nUse Individual Depth Map , Use Individual Depth Map(使用个人深度图)\n22. Correlated Channels , 22. Correlated Channels(22.相关通道)\n34. Correlated Channels , 34. Correlated Channels(34.相关通道)\nActivate Pink Elephants , Activate Pink Elephants(激活粉红色大象)\nActiver Couleurs Formes , Activer Couleurs Formes(主动库勒形式)\nActiver Symmetrizoscope , Activer Symmetrizoscope(启用对称)\nAutomatic Color Balance , Automatic Color Balance(自动色彩平衡)\nBidirectional Rendering , Bidirectional Rendering(双向渲染)\nBlur Standard Deviation , Blur Standard Deviation(模糊标准偏差)\nBottom-Right Vertex (%) , Bottom-Right Vertex (%)(右下角(%))\nCustom Depth Correction , Custom Depth Correction(自定义深度校正)\nFine Details Smoothness , Fine Details Smoothness(精细细节光滑度)\nImage Contour Dimension , Image Contour Dimension(外围图像尺寸)\nMinimal Color Intensity , Minimal Color Intensity(最小的色彩强度)\nNeighborhood Smoothness , Neighborhood Smoothness(邻域平滑度)\nOutput Coordinates File , Output Coordinates File(输出坐标文件)\nPatch Size for Analysis , Patch Size for Analysis(用于分析的补丁大小)\nPlacement of Distortion , Placement of Distortion(失真的位置)\nPreview Detected Shapes , Preview Detected Shapes(预览检测到的形状)\nPreview Frame Selection , Preview Frame Selection(预览框架选择)\nSegment Max Length (px) , Segment Max Length (px)(段最大长度(像素))\nSegmentation Smoothness , Segmentation Smoothness(分割平滑度)\nShadows Color Intensity , Shadows Color Intensity(阴影颜色强度)\nType Flocon / Snowflake , Type Flocon / Snowflake(雪花类型)\n-2. Overall Channel(s) , -2. Overall Channel(s)(-2. 整体通道)\n32. Minimum Saturation , 32. Minimum Saturation(32.最小饱和度)\n33. Maximum Saturation , 33. Maximum Saturation(33.最大饱和度)\n41. LP Frequency Power , 41. LP Frequency Power(41.低频电源)\n42. LP Order Cube Root , 42. LP Order Cube Root(43. LP Order Cube Root)\n43. HP Frequency Power , 43. HP Frequency Power(44. HP Frequency Power)\n44. HP Order Cube Root , 44. HP Order Cube Root(45. HP Order Cube Root)\nActivate Custom Filter , Activate Custom Filter(激活自定义过滤器)\nAreas Light Adjustment , Areas Light Adjustment(区域调光)\nAutocrop Output Layers , Autocrop Output Layers(自动裁剪输出层)\nAvg Right Angle (deg.) , Avg Right Angle (deg.)(平均右侧角度(度))\nBlue Chroma Smoothness , Blue Chroma Smoothness(蓝度平滑度)\nBottom-Left Vertex (%) , Bottom-Left Vertex (%)(左下顶点(%))\nConnectors Variability , Connectors Variability(接头可变性)\nDiscard Contour Guides , Discard Contour Guides(舍弃轮廓指南)\nEnd Point Connectivity , End Point Connectivity(端点连接)\nFill Transparent Holes , Fill Transparent Holes(填充透明孔洞)\nFine Details Threshold , Fine Details Threshold(精细细节阈值)\nFlip Radial Direction? , Flip Radial Direction?(翻转径向方向?)\nGeneric Skin Structure , Generic Skin Structure(通用皮肤结构)\nHighlights Abstraction , Highlights Abstraction(高光提取)\nHorizon Leveling (deg) , Horizon Leveling (deg)(水平较正 (度))\nInput Frame Files Name , Input Frame Files Name(输入帧文件名称)\nKeypoint Influence (%) , Keypoint Influence (%)(关键点影响力(%))\nLenticular Density LPI , Lenticular Density LPI(晶状体密度)\nLenticular Orientation , Lenticular Orientation(晶状体取向)\nLocal Contrast Enhance , Local Contrast Enhance(局部对比度增强)\nLower Side Orientation , Lower Side Orientation(下侧方向)\nNormalize Illumination , Normalize Illumination(标准化照明)\nNumber of Added Frames , Number of Added Frames(添加的帧数)\nNumber of Inter-Frames , Number of Inter-Frames(帧间数量)\nNumber of Orientations , Number of Orientations(方向数)\nOpacité / Opacity , Opacité / Opacity(不透明 /不透明度)\nOutput CLUT Resolution , Output CLUT Resolution(输出CLUT分辨率)\nOutput Multiple Layers , Output Multiple Layers(输出多层)\nOutput Stroke Layer On , Output Stroke Layer On(描边层位于)\nPosition X Origine (%) , Position X Origine (%)(X原点位置(%))\nPosition Y Origine (%) , Position Y Origine (%)(Y原点位置(%))\nPrint Adjustment Marks , Print Adjustment Marks(打印调整标记)\nProcess Top Layer Only , Process Top Layer Only(仅处理顶层)\nRender Multiple Frames , Render Multiple Frames(渲染多帧)\nRight Side Orientation , Right Side Orientation(右侧方向)\nSpatial Regularization , Spatial Regularization(空间正则化)\nSpline Max Angle (deg) , Spline Max Angle (deg)(花键最大角度(度))\nSpline Max Length (px) , Spline Max Length (px)(花键最大长度(px))\nStereo Window Position , Stereo Window Position(立体窗位置)\nSubpixel Interpolation , Subpixel Interpolation(亚像素插值)\nTransparent Background , Transparent Background(透明背景)\nUpper Side Orientation , Upper Side Orientation(上侧方向)\n1-3. Background Color , 1-3. Background Color(1-3.背景颜色)\n37. Saturation Offset , 37. Saturation Offset(37.饱和度偏移)\n6. Damping per Octave , 6. Damping per Octave(6.每八度阻尼)\nAvg Left Angle (deg.) , Avg Left Angle (deg.)(平均左侧角度(度))\nAvg Length Factor (%) , Avg Length Factor (%)(平均长度系数(%))\nContour Detection (%) , Contour Detection (%)(轮廓检测(%))\nContour Normalization , Contour Normalization(轮廓标准化)\nContour Threshold (%) , Contour Threshold (%)(轮廓阈值(%))\nDepth Fade Out Frames , Depth Fade Out Frames(深度淡出帧)\nDisplay Blob Controls , Display Blob Controls(显示斑点控件)\nEffect X-Axis Scaling , Effect X-Axis Scaling(效果X轴缩放)\nEffect Y-Axis Scaling , Effect Y-Axis Scaling(效果Y轴缩放)\nEqualize at Each Step , Equalize at Each Step(在每一步均等)\nExternal Transparency , External Transparency(外部透明度)\nExtrapolate Colors As , Extrapolate Colors As(外推颜色为)\nFidelity Chromaticity , Fidelity Chromaticity(保真色度)\nFlip Angle Direction? , Flip Angle Direction?(翻转角度方向?)\nGradienNormSmoothness , GradienNormSmoothness(渐变规范平滑)\nHDR Effect (Tone Map) , HDR Effect (Tone Map)(HDR效果(色调图))\nHighlights Brightness , Highlights Brightness(高光亮度)\nIgnore Current Aspect , Ignore Current Aspect(忽略当前方面)\nInclude Opacity Layer , Include Opacity Layer(包括不透明度层)\nLeft / Right Blur (%) , Left / Right Blur (%)(左/右模糊(%))\nLeft Side Orientation , Left Side Orientation(左侧方向)\nLN Average-Smoothness , LN Average-Smoothness(LN 平均-光滑)\nLocal Contrast Effect , Local Contrast Effect(局部对比效果)\nLocal Detail Enhancer , Local Detail Enhancer(局部细节增强器)\nLock Uniform Sampling , Lock Uniform Sampling(锁定均匀采样)\nMinimal Stroke Length , Minimal Stroke Length(最小行程)\nNeighborhood Size (%) , Neighborhood Size (%)(邻域大小(%))\nOpacity Threshold (%) , Opacity Threshold (%)(不透明度阈值(%))\nOrientation Coherence , Orientation Coherence(方向连贯性)\nPreview Without Alpha , Preview Without Alpha(没有Alpha的预览)\nPseudo-Gray Dithering , Pseudo-Gray Dithering(伪灰色抖动)\nRadial Edge Behaviour , Radial Edge Behaviour(径向边缘行为)\nRed Chroma Smoothness , Red Chroma Smoothness(红色色度平滑度)\nSaturation Correction , Saturation Correction(饱和度校正)\nSaturation Smoothness , Saturation Smoothness(饱和度平滑度)\nSize for Bright Tones , Size for Bright Tones(亮色调的大小)\nStd Length Factor (%) , Std Length Factor (%)(标准长度系数(%))\nTransition Smoothness , Transition Smoothness(过渡平滑度)\nX-Coordinate [Manual] , X-Coordinate [Manual](X-坐标[手动])\nY-Coordinate [Manual] , Y-Coordinate [Manual](Y-坐标[手动])\n16. Noise Channel(s) , 16. Noise Channel(s)(16.噪声通道)\n19. Desaturation (%) , 19. Desaturation (%)(19.去饱和度(%))\nAdd Chalk Highlights , Add Chalk Highlights(添加粉笔集锦)\nAdd Color Background , Add Color Background(添加背景色)\nAllow Outer Blending , Allow Outer Blending(允许外部混合)\nAlso Match Gradients , Also Match Gradients(还可以匹配渐变)\nAngle Edge Behaviour , Angle Edge Behaviour(角边行为)\nApply Adjustments On , Apply Adjustments On(套用调整)\nApply Skin Tone Mask , Apply Skin Tone Mask(应用肤色面膜)\nAuto-Set Periodicity , Auto-Set Periodicity(自动设定周期)\nBackground Intensity , Background Intensity(背景强度)\nBackground Point (%) , Background Point (%)(背景点(%))\nBlending Opacity (%) , Blending Opacity (%)(混合不透明度(%))\nBorder Thickness (%) , Border Thickness (%)(边框宽度(%))\nClear Control Points , Clear Control Points(清除控制点)\nColor Overall Effect , Color Overall Effect(色彩整体效果)\nConnectors Centering , Connectors Centering(接头居中)\nConstrain Image Size , Constrain Image Size(限制图像大小)\nDepth Fade In Frames , Depth Fade In Frames(深度淡入帧)\nDetails Strength (%) , Details Strength (%)(细节强度(%))\nDimension Motif Base , Dimension Motif Base(尺寸母题库)\nDiscard Transparency , Discard Transparency(放弃透明度)\nDouceur / Smoothness , Douceur / Smoothness(Douceur /平滑度)\nEllipsionism Opacity , Ellipsionism Opacity(椭圆不透明度)\nExponent (Imaginary) , Exponent (Imaginary)(指数(虚数))\nFlat Regions Removal , Flat Regions Removal(平坦区域去除)\nFlou / Blur Contours , Flou / Blur Contours(模糊轮廓)\nFrame as a New Layer , Frame as a New Layer(框架作为新层)\nGradienNormLinearity , GradienNormLinearity(渐变规范线性)\nHighlights Lightness , Highlights Lightness(高光亮度)\nHighlights Selection , Highlights Selection(高光选择)\nHighlights Threshold , Highlights Threshold(高光阈值)\nHorizontal Warp Only , Horizontal Warp Only(仅水平翘曲)\nInvert Canvas Colors , Invert Canvas Colors(反转画布颜色)\nKeep Layers Separate , Keep Layers Separate(保持层分开)\nKuwahara on Painting , Kuwahara on Painting(Kuwahara滤波绘画)\nLightness Smoothness , Lightness Smoothness(亮度平滑度)\nLocal Contrast Style , Local Contrast Style(局部对比风格)\nLuminance Smoothness , Luminance Smoothness(亮度平滑度)\nMoire Removal Method , Moire Removal Method(去除波纹的方法)\nNumber of Key-Frames , Number of Key-Frames(关键帧数)\nOpacity as Heightmap , Opacity as Heightmap(不透明度为高度图)\nPainter's Smoothness , Painter's Smoothness(画家的平滑度)\nPre-Defined Colormap , Pre-Defined Colormap(预设的色彩映射)\nPreview Progress (%) , Preview Progress (%)(预览进度(%))\nProcess Transparency , Process Transparency(处理透明度)\nRelative Block Count , Relative Block Count(相对块数)\nSkin Tone Protection , Skin Tone Protection(肤色保护)\nSkip All Other Steps , Skip All Other Steps(跳过所有其他步骤)\nStructure Smoothness , Structure Smoothness(结构平整度)\nTop-Right Vertex (%) , Top-Right Vertex (%)(右上角(%))\n17. Warp Iterations , 17. Warp Iterations(17.翘曲迭代)\n21. Scale to Height , 21. Scale to Height(21.缩放到高度)\n24. Warp Channel(s) , 24. Warp Channel(s)(24.翘曲通道)\n25. Random Negation , 25. Random Negation(25.随机否定)\n8-10. Color Balance , 8-10. Color Balance(8-10.色彩均衡)\nAbsolute Brightness , Absolute Brightness(绝对亮度)\nAdd Painter's Touch , Add Painter's Touch(添加画家的触摸)\nAnalysis Smoothness , Analysis Smoothness(解析平滑度)\nApply Color Balance , Apply Color Balance(应用色彩平衡)\nBit Masking (Start) , Bit Masking (Start)(位屏蔽(开始))\nCanaux / Channel(s) , Canaux / Channel(s)(卡诺/通道)\nColor Green-Magenta , Color Green-Magenta(颜色绿色-洋红色)\nCompress Highlights , Compress Highlights(压缩亮点)\nConical Start at 0? , Conical Start at 0?(圆锥形从0开始?)\nContrast Smoothness , Contrast Smoothness(对比平滑度)\nCorrelated Channels , Correlated Channels(相关通道)\nDepth Field Control , Depth Field Control(深度场控制)\nDepth-Of-Field Type , Depth-Of-Field Type(景深类型)\nDestination X-Tiles , Destination X-Tiles(目标 X-块数)\nDestination Y-Tiles , Destination Y-Tiles(目标 Y-块数)\nDimension En Pixels , Dimension En Pixels(像素尺寸)\nDisplay Coordinates , Display Coordinates(显示坐标)\nEnable Antialiasing , Enable Antialiasing(启用抗锯齿)\nEnable Segmentation , Enable Segmentation(启用细分)\nFar Point Deviation , Far Point Deviation(远点偏差)\nGradient Smoothness , Gradient Smoothness(渐变平滑度)\nHorizontal Size (%) , Horizontal Size (%)(水平尺寸(%))\nInvert Image Colors , Invert Image Colors(反转图像颜色)\nKeep Borders Square , Keep Borders Square(边界保持正方形)\nKeep Color Channels , Keep Color Channels(保留色彩通道)\nKeep Original Layer , Keep Original Layer(保留原始图层)\nMask Smoothness (%) , Mask Smoothness (%)(面膜平滑度(%))\nMaximum Size Factor , Maximum Size Factor(最大尺寸系数)\nMidtones Brightness , Midtones Brightness(中间调亮度)\nMinimal Region Area , Minimal Region Area(最小区域)\nMorphology Strength , Morphology Strength(形态强度)\nParallel Processing , Parallel Processing(并行处理)\nPattern Variation 1 , Pattern Variation 1(模式变化1)\nPattern Variation 2 , Pattern Variation 2(模式变化2)\nPattern Variation 3 , Pattern Variation 3(模式变化3)\nPosterization Level , Posterization Level(后期化水平)\nPre-Normalize Image , Pre-Normalize Image(标准化图像)\nPreprocessor Radius , Preprocessor Radius(预处理半径)\nPreview All Outputs , Preview All Outputs(预览所有输出)\nPreview Grain Alone , Preview Grain Alone(仅预览颗粒(不会输出到文件))\nPreview Only Shadow , Preview Only Shadow(仅预览阴影)\nPreview Opacity (%) , Preview Opacity (%)(预览不透明度(%))\nPreview Subsampling , Preview Subsampling(预览子采样)\nPrint Frame Numbers , Print Frame Numbers(打印帧编号)\nReverse Frame Stack , Reverse Frame Stack(倒车架)\nShadows Abstraction , Shadows Abstraction(阴影提取)\nSharpening Strength , Sharpening Strength(锐化强度)\nSize for Dark Tones , Size for Dark Tones(深色调尺寸)\nSoften All Channels , Soften All Channels(软化所有通道)\nSpecify HaldCLUT As , Specify HaldCLUT As(将HaldCLUT指定为)\nSpread Noise Amount , Spread Noise Amount(扩散噪点量)\nStarting Feathering , Starting Feathering(起始羽化)\nStrength Highlights , Strength Highlights(高光强度)\nSurface Disturbance , Surface Disturbance(表面扰动)\nTop-Left Vertex (%) , Top-Left Vertex (%)(左上角(%))\nValue Normalization , Value Normalization(明度标准化)\nVignette Max Radius , Vignette Max Radius(渐晕最大半径)\nVignette Min Radius , Vignette Min Radius(渐晕最小半径)\n18. Warp Intensity , 18. Warp Intensity(18.翘曲强度)\n20. Scale to Width , 20. Scale to Width(20.缩放到宽度)\n5.  Edge Threshold , 5.  Edge Threshold(5.边缘阈值)\nA-Color Smoothness , A-Color Smoothness(A色平滑度)\nAdd as a New Layer , Add as a New Layer(添加为新层)\nAdditional Outline , Additional Outline(附加大纲)\nAverage Smoothness , Average Smoothness(平均平滑度)\nB-Color Smoothness , B-Color Smoothness(B色平滑度)\nBase Thickness (%) , Base Thickness (%)(基础宽度(%))\nBlue Chroma Factor , Blue Chroma Factor(蓝色色度因素)\nBoundary Condition , Boundary Condition(边界状态)\nCamera Motion Only , Camera Motion Only(仅相机运动)\nColor Quantization , Color Quantization(颜色量化)\nCompression Filter , Compression Filter(压缩过滤器)\nCross-Hatch Amount , Cross-Hatch Amount(交叉线数量)\nCustom Filter Code , Custom Filter Code(自定义过滤器代码)\nDéformation 1 , Déformation 1(Dé形式1)\nDéformation 2 , Déformation 2(Dé构成2)\nDamping per Octave , Damping per Octave(每倍频程阻尼)\nDefects Smoothness , Defects Smoothness(缺陷平滑度)\nDetails Smoothness , Details Smoothness(细节平滑度)\nDilation / Erosion , Dilation / Erosion(扩张/侵蚀)\nDisplay Color Axes , Display Color Axes(显示色轴)\nEdge Threshold (%) , Edge Threshold (%)(边缘阈值(%))\nEnable Paintstroke , Enable Paintstroke(启用绘画描边)\nEnd Point Rate (%) , End Point Rate (%)(终点率(%))\nEnding X-Centering , Ending X-Centering(结束X居中)\nEnding Y-Centering , Ending Y-Centering(结束Y居中)\nErosion / Dilation , Erosion / Dilation(侵蚀/膨胀)\nFast Approximation , Fast Approximation(快速估算)\nFast Blend Preview , Fast Blend Preview(快速混合预览)\nFlocon / Snowflake , Flocon / Snowflake(雪花)\nForce Transparency , Force Transparency(强制透明)\nFrame Files Format , Frame Files Format(框架文件格式)\nFrequency Analyzer , Frequency Analyzer(频率分析仪)\nGamma Compensation , Gamma Compensation(伽玛补偿)\nGrain (Highlights) , Grain (Highlights)(颗粒(高光))\nInput Transparency , Input Transparency(输入透明度)\nInterpolation Type , Interpolation Type(插补类型)\nMagenta Smoothness , Magenta Smoothness(洋红色平滑度)\nMaximal Highlights , Maximal Highlights(最大亮点)\nMaximum Image Size , Maximum Image Size(最大影像尺寸)\nMaximum Saturation , Maximum Saturation(最大饱和度)\nMinimal Highlights , Minimal Highlights(最小亮点)\nMinimal Shape Area , Minimal Shape Area(最小形状面积)\nMinimum Brightness , Minimum Brightness(最低亮度)\nNb Branches / Rays , Nb Branches / Rays(Nb分枝/射线)\nNumber of Clusters , Number of Clusters(集群数)\nOutline Smoothness , Outline Smoothness(轮廓平滑度)\nPreprocessor Power , Preprocessor Power(预处理力度)\nPreserve Luminance , Preserve Luminance(保持亮度)\nRecover Highlights , Recover Highlights(恢复亮点)\nRed - Green - Blue , Red - Green - Blue(红-绿-蓝)\nRegularization (%) , Regularization (%)(正则化(%))\nReverse Endianness , Reverse Endianness(反向字节序)\nRevert Layer Order , Revert Layer Order(反排图层顺序)\nShadows Brightness , Shadows Brightness(阴影亮度)\nSharpen Edges Only , Sharpen Edges Only(仅锐化边缘)\nSkip Finest Scales , Skip Finest Scales(跳过最佳秤)\nSmoother Sharpness , Smoother Sharpness(平滑度)\nSpecular Centering , Specular Centering(人u镜面反射位置)\nSpecular Intensity , Specular Intensity(镜面反射强度)\nSpecular Lightness , Specular Lightness(镜面反射亮度)\nSpecular Shininess , Specular Shininess(镜面光泽)\nStart Frame Number , Start Frame Number(起始帧号)\nStart of Mid-Tones , Start of Mid-Tones(中间色调起始于)\nStarting Point (%) , Starting Point (%)(初始点 (%))\nStarting Scale (%) , Starting Scale (%)(起始比例(%))\nStripe Orientation , Stripe Orientation(条纹方向)\nTends to Be Square , Tends to Be Square(趋向于方形)\nView Outlines Only , View Outlines Only(仅查看轮廓)\nXY-Coordinates (%) , XY-Coordinates (%)(XY坐标(%))\n14. Minimum Noise , 14. Minimum Noise(14.最小噪音)\n15. Maximum Noise , 15. Maximum Noise(15.最大噪音)\n21. Self-Blending , 21. Self-Blending(21.自我融合)\n34. Minimum Value , 34. Minimum Value(34.最小值)\n35. Interpolation , 35. Interpolation(35.内插)\n35. Maximum Value , 35. Maximum Value(35.最大值)\n38. Blur Original , 38. Blur Original(38.模糊原始)\n52. Blending Mode , 52. Blending Mode(52.混合模式)\nAmbient Lightness , Ambient Lightness(环境亮度)\nAmplitude / Angle , Amplitude / Angle(幅度 / 角度)\nAngular Precision , Angular Precision(角度精度)\nBit Masking (End) , Bit Masking (End)(位屏蔽(结束))\nBlue Chroma Shift , Blue Chroma Shift(蓝色色度偏移)\nBorder Smoothness , Border Smoothness(边界平滑度)\nCanvas Brightness , Canvas Brightness(画布亮度)\nCenter Smoothness , Center Smoothness(中心平滑度)\nCentering / Scale , Centering / Scale(定心/比例)\nCercle / Circle D , Cercle / Circle D(Cercle / D圈)\nChromaticity From , Chromaticity From(色度来源)\nColor Blue-Yellow , Color Blue-Yellow(颜色蓝黄色)\nColor Effect Mode , Color Effect Mode(色彩效果模式)\nColor Shading (%) , Color Shading (%)(颜色底纹(%))\nColour Space Mode , Colour Space Mode(色彩空间模式)\nConstraint Radius , Constraint Radius(约束半径)\nContour Coherence , Contour Coherence(轮廓连贯性)\nContour Precision , Contour Precision(轮廓精度)\nContour Threshold , Contour Threshold(轮廓阈值)\nCorner Brightness , Corner Brightness(角落亮度)\nCouleur / Color A , Couleur / Color A(颜色A)\nCouleur / Color B , Couleur / Color B(颜色B)\nCouleur / Color C , Couleur / Color C(颜色C)\nCouleur / Color D , Couleur / Color D(颜色D)\nCouleur / Color E , Couleur / Color E(颜色E)\nCouleur / Color F , Couleur / Color F(颜色F)\nCouleur / Color G , Couleur / Color G(颜色G)\nCounter Clockwise , Counter Clockwise(逆时针方向)\nCustom Dictionary , Custom Dictionary(自定义字典)\nDifference Mixing , Difference Mixing(差异混合)\nDistortion Factor , Distortion Factor(扭曲系数)\nEdge Antialiasing , Edge Antialiasing(边缘抗锯齿)\nEnable Morphology , Enable Morphology(启用形态)\nEnding Feathering , Ending Feathering(终点羽化)\nExpanding Mirrors , Expanding Mirrors(伸缩镜)\nFibers Smoothness , Fibers Smoothness(纤维平滑度)\nFlip Left / Right , Flip Left / Right(向左/向右翻转)\nGrain Tone Fading , Grain Tone Fading(颗粒值过度)\nHaldCLUT Filename , HaldCLUT Filename(HaldCLUT文件名)\nHorisontal Length , Horisontal Length(水平长度)\nHorizontal Amount , Horizontal Amount(水平数量)\nHorizontal Length , Horizontal Length(水平长度)\nInput Guide Color , Input Guide Color(输入指南颜色)\nInverse Transform , Inverse Transform(逆变换)\nInvert Embossing? , Invert Embossing?(反转浮雕?)\nKeep Tiles Square , Keep Tiles Square(块保持正方形)\nKernel Multiplier , Kernel Multiplier(内核乘数)\nLightness Max (%) , Lightness Max (%)(最大亮度(%))\nLightness Min (%) , Lightness Min (%)(最低亮度(%))\nMagnitude / Phase , Magnitude / Phase(幅度/相位)\nMatch Colors With , Match Colors With(搭配颜色)\nMid Tone Contrast , Mid Tone Contrast(中间色调对比)\nMinimal Scale (%) , Minimal Scale (%)(最小比例(%))\nNumber of Streaks , Number of Streaks(条纹数)\nOrthogonal Radius , Orthogonal Radius(正交半径)\nOutline Thickness , Outline Thickness(轮廓厚度)\nOutput Ascii File , Output Ascii File(输出ASCII文件)\nOutput Saturation , Output Saturation(输出饱和度)\nOutput Sharpening , Output Sharpening(输出锐化)\nOverall Lightness , Overall Lightness(整体亮度)\nPhotoComix Preset , PhotoComix Preset(PhotoComix预设)\nPreview Precision , Preview Precision(预览精度)\nPreview Ref Point , Preview Ref Point(预览参考点)\nPreview Selection , Preview Selection(预览选择)\nPreview Tones Map , Preview Tones Map(预览色调图)\nRed Chroma Factor , Red Chroma Factor(红色色度因素)\nRelief Smoothness , Relief Smoothness(救济平滑度)\nReplacement Color , Replacement Color(更换颜色)\nSaturation Factor , Saturation Factor(饱和度因素)\nSaturation Offset , Saturation Offset(饱和度偏移)\nSegments Strength , Segments Strength(细分强度)\nShadow Smoothness , Shadow Smoothness(阴影平滑度)\nShadows Hue Shift , Shadows Hue Shift(阴影色相偏移)\nShadows Lightness , Shadows Lightness(阴影亮度)\nShadows Selection , Shadows Selection(阴影选择)\nShadows Threshold , Shadows Threshold(阴影阈值)\nSharpening Radius , Sharpening Radius(锐化半径)\nSkip Others Steps , Skip Others Steps(跳过其他步骤)\nSmoother Softness , Smoother Softness(更柔软)\nSorting Criterion , Sorting Criterion(排序标准)\nSpatial Bandwidth , Spatial Bandwidth(空间带宽)\nSpatial Precision , Spatial Precision(空间精度)\nSpatial Tolerance , Spatial Tolerance(空间公差)\nStationary Frames , Stationary Frames(固定框架)\nStrength Midtones , Strength Midtones(中间调强度)\nTensor Smoothness , Tensor Smoothness(张量平滑度)\nTolerance to Gaps , Tolerance to Gaps(容差大小)\nTransmittance Map , Transmittance Map(透过率图)\nTrunk Opacity (%) , Trunk Opacity (%)(树干不透明度(%))\nUse as Saturation , Use as Saturation(用作饱和)\nUse Maximum Tones , Use Maximum Tones(使用最大音调)\nVertical 1 Amount , Vertical 1 Amount(垂线1数量)\nVertical 1 Length , Vertical 1 Length(垂线1长度)\nVertical 2 Amount , Vertical 2 Amount(垂线2数量)\nVertical 2 Length , Vertical 2 Length(垂线2长度)\nVertical Size (%) , Vertical Size (%)(垂直尺寸(%))\nVignette Contrast , Vignette Contrast(晕影对比)\nVignette Strength , Vignette Strength(渐晕强度)\nXY-Axis Formula S , XY-Axis Formula S(XY轴公式S)\nXY-Axis Formula T , XY-Axis Formula T(XY轴公式T)\nXY-Axis Formula U , XY-Axis Formula U(XY轴公式U)\nYellow Smoothness , Yellow Smoothness(黄色平滑度)\n-1. Value Action , -1. Value Action(-1.动作值)\n14. Value Action , 14. Value Action(14.价值行动)\n15. Colour Space , 15. Colour Space(15.色彩空间)\n2.  Plasma Scale , 2.  Plasma Scale(2.等离子量)\n25. Value Action , 25. Value Action(25.价值行动)\n27. Gamma Offset , 27. Gamma Offset(27.伽玛偏移)\n38. Value Offset , 38. Value Offset(38.价值抵消)\n40. Create Copy? , 40. Create Copy?(40.创建副本?)\n45. Colour Space , 45. Colour Space(45.色彩空间)\nA Lot of Magenta , A Lot of Magenta(高光洋红)\nActivate Lizards , Activate Lizards(激活蜥蜴)\nActivate Slice 1 , Activate Slice 1(激活切片1)\nActivate Slice 2 , Activate Slice 2(激活切片2)\nActivate Slice 3 , Activate Slice 3(激活切片3)\nActivate Slice 4 , Activate Slice 4(激活切片4)\nAngle Dispersion , Angle Dispersion(角分散)\nAngle Variations , Angle Variations(角度变化)\nAreas Smoothness , Areas Smoothness(区域平滑度)\nAssociated Color , Associated Color(关联颜色)\nAvg / Max Weight , Avg / Max Weight(平均/最大重量)\nBackground Color , Background Color(背景颜色)\nBilateral Radius , Bilateral Radius(双边半径)\nBlue Screen Mode , Blue Screen Mode(蓝屏模式)\nColor Dispersion , Color Dispersion(色散)\nColor Highlights , Color Highlights(高光颜色)\nColor Smoothness , Color Smoothness(颜色平滑度)\nColour Smoothing , Colour Smoothing(颜色平滑)\nComputation Mode , Computation Mode(计算模式)\nConstrain Values , Constrain Values(约束值)\nDéformation , Déformation(变形)\nDefects Contrast , Defects Contrast(缺陷对比)\nDilatation Motif , Dilatation Motif(膨胀图案)\nDimension [Diff] , Dimension [Diff](尺寸[差异])\nDistortion Angle , Distortion Angle(变形角度)\nDoNotMergeLayers , DoNotMergeLayers(不要合并图层)\nEdge Attenuation , Edge Attenuation(边缘衰减)\nEdge Sensitivity , Edge Sensitivity(边缘灵敏度)\nEnd Frame Number , End Frame Number(结束帧号)\nEnd of Mid-Tones , End of Mid-Tones(中间色调结束于)\nEnding Point (%) , Ending Point (%)(终止点(%))\nEnding Scale (%) , Ending Scale (%)(最终比例(%))\nEqualization (%) , Equalization (%)(均等化(%))\nFibers Amplitude , Fibers Amplitude(纤维强度)\nFitting Function , Fitting Function(拟合函数)\nFlip Cross-Hatch , Flip Cross-Hatch(翻转斜线)\nFont Height (px) , Font Height (px)(字型高度(px))\nForeground Color , Foreground Color(前景色)\nGrain (Midtones) , Grain (Midtones)(颗粒(中间调))\nGreen Smoothness , Green Smoothness(绿色平滑度)\nGreen Wavelength , Green Wavelength(绿色波长)\nHorizontal Tiles , Horizontal Tiles(水平块数)\nImage Smoothness , Image Smoothness(图像平滑度)\nInit. Resolution , Init. Resolution(初始化. 解析度)\nInner Radius (%) , Inner Radius (%)(内半径(%))\nInvert Luminance , Invert Luminance(反转亮度)\nLeaf Opacity (%) , Leaf Opacity (%)(叶片不透明度(%))\nLight Smoothness , Light Smoothness(光线平滑度)\nLightness Factor , Lightness Factor(亮度因素)\nLuminance Factor , Luminance Factor(亮度系数)\nMinimal Area (%) , Minimal Area (%)(最小面积(%))\nMinimal Size (%) , Minimal Size (%)(最小尺寸(%))\nNormalize Colors , Normalize Colors(标准化颜色)\nNormalize Scales , Normalize Scales(标准化比例)\nNumber of Angles , Number of Angles(角度数)\nNumber of Colors , Number of Colors(颜色数)\nNumber of Frames , Number of Frames(帧数)\nNumber of Levels , Number of Levels(等级数)\nNumber of Scales , Number of Scales(缩放数量)\nObject Tolerance , Object Tolerance(物体公差)\nOrientation Only , Orientation Only(仅定向)\nOutline Contrast , Outline Contrast(轮廓对比)\nOutput as Frames , Output as Frames(输出为帧)\nOutput Chroma NR , Output Chroma NR(输出色度NR)\nOutput Directory , Output Directory(输出目录)\nOutput HTML File , Output HTML File(输出HTML文件)\nOutput to Folder , Output to Folder(输出到文件夹)\nOverall Contrast , Overall Contrast(整体对比)\nPainting Opacity , Painting Opacity(绘画不透明度)\nPatch Smoothness , Patch Smoothness(补丁平滑度)\nPencil Amplitude , Pencil Amplitude(铅笔幅度)\nPiece Complexity , Piece Complexity(块复杂度)\nPreview Gradient , Preview Gradient(预览渐变)\nPreview Original , Preview Original(预览原图)\nPrint Size Width , Print Size Width(打印尺寸宽度)\nRadial Influence , Radial Influence(径向影响)\nRed Chroma Shift , Red Chroma Shift(红色偏移)\nReference Colors , Reference Colors(参考色)\nRelative Warping , Relative Warping(相对扭曲)\nRelief Amplitude , Relief Amplitude(起伏幅度)\nRetouching Style , Retouching Style(修饰风格)\nReverse Gradient , Reverse Gradient(反向渐变)\nRotate Hue Bands , Rotate Hue Bands(旋转色相带)\nS-Curve Contrast , S-Curve Contrast(S形曲线对比度)\nSaturation Shift , Saturation Shift(饱和度偏移)\nSave Gradient As , Save Gradient As(将渐变另存为)\nScale Variations , Scale Variations(比例变化)\nSecondary Factor , Secondary Factor(次级色因素)\nSecondary Radius , Secondary Radius(次半径)\nSet Frame Format , Set Frame Format(设置帧格式)\nShadow Intensity , Shadow Intensity(阴影强度)\nShow Fill Ratio? , Show Fill Ratio?(显示填充率?)\nSimilarity Space , Similarity Space(相似空间)\nSource Color #10 , Source Color #10(原始颜色 #10)\nSource Color #11 , Source Color #11(原始颜色 #11)\nSource Color #12 , Source Color #12(原始颜色 #12)\nSource Color #13 , Source Color #13(原始颜色 #13)\nSource Color #14 , Source Color #14(原始颜色 #14)\nSource Color #15 , Source Color #15(原始颜色 #15)\nSource Color #16 , Source Color #16(原始颜色 #16)\nSource Color #17 , Source Color #17(原始颜色 #17)\nSource Color #18 , Source Color #18(原始颜色 #18)\nSource Color #19 , Source Color #19(原始颜色 #19)\nSource Color #20 , Source Color #20(原始颜色 #20)\nSource Color #21 , Source Color #21(原始颜色 #21)\nSource Color #22 , Source Color #22(原始颜色 #22)\nSource Color #23 , Source Color #23(原始颜色 #23)\nSource Color #24 , Source Color #24(原始颜色 #24)\nSpatial Sampling , Spatial Sampling(空间采样)\nSpatial Variance , Spatial Variance(空间差异)\nSpline Roundness , Spline Roundness(样条圆度)\nStarting Pattern , Starting Pattern(起始模式)\nStd Angle (deg.) , Std Angle (deg.)(标准角度(度))\nStrength Shadows , Strength Shadows(阴影强度)\nStretch Contrast , Stretch Contrast(拉伸对比)\nStyle Variations , Style Variations(样式变化)\nTarget Color #10 , Target Color #10(目标颜色 #10)\nTarget Color #11 , Target Color #11(目标颜色 #11)\nTarget Color #12 , Target Color #12(目标颜色 #12)\nTarget Color #13 , Target Color #13(目标颜色 #13)\nTarget Color #14 , Target Color #14(目标颜色 #14)\nTarget Color #15 , Target Color #15(目标颜色 #15)\nTarget Color #16 , Target Color #16(目标颜色 #16)\nTarget Color #17 , Target Color #17(目标颜色 #17)\nTarget Color #18 , Target Color #18(目标颜色 #18)\nTarget Color #19 , Target Color #19(目标颜色 #19)\nTarget Color #20 , Target Color #20(目标颜色 #20)\nTarget Color #21 , Target Color #21(目标颜色 #21)\nTarget Color #22 , Target Color #22(目标颜色 #22)\nTarget Color #23 , Target Color #23(目标颜色 #23)\nTarget Color #24 , Target Color #24(目标颜色 #24)\nThickness Factor , Thickness Factor(宽度系数)\nTone Mapping (%) , Tone Mapping (%)(色调映射(%))\nTones Smoothness , Tones Smoothness(色调平滑度)\nTransition Shape , Transition Shape(过渡形状)\nType Aper&#231;u , Type Aper&#231;u(类型预览)\nValue Correction , Value Correction(明度校正)\nValue Smoothness , Value Smoothness(明度平滑度)\nVignette Strenth , Vignette Strenth(小插图强度)\nVintage Tone (%) , Vintage Tone (%)(复古色调(%))\nWaves Smoothness , Waves Smoothness(波浪平滑度)\nWork on Frameset , Work on Frameset(在帧上工作)\nX-Axis Formula S , X-Axis Formula S(X轴公式S)\nX-Axis Formula T , X-Axis Formula T(X轴公式T)\nX-Axis Formula U , X-Axis Formula U(X轴公式U)\nX-Ombre X-Shadow , X-Ombre X-Shadow(X-阴影)\nY-Axis Formula S , Y-Axis Formula S(Y轴公式S)\nY-Axis Formula T , Y-Axis Formula T(Y轴公式T)\nY-Axis Formula U , Y-Axis Formula U(Y轴公式U)\nY-Ombre Y-Shadow , Y-Ombre Y-Shadow(Y-阴影)\n19. Warp Offset , 19. Warp Offset(19.翘曲偏移)\n30. Minimum Hue , 30. Minimum Hue(30.最小色相)\n31. Maximum Hue , 31. Maximum Hue(31.最大色相)\n47. Makeup Gain , 47. Makeup Gain(47.化妆增益)\nA Lot of Yellow , A Lot of Yellow(高光黄色)\nActivate Mirror , Activate Mirror(启用镜像)\nActivate Shakes , Activate Shakes(激活震动)\nAdd 1px Outline , Add 1px Outline(添加1px轮廓)\nAdd Image Label , Add Image Label(添加图像标签)\nArea Smoothness , Area Smoothness(区域平滑度)\nBlend Threshold , Blend Threshold(混合阈值)\nBlue Smoothness , Blue Smoothness(蓝色平滑度)\nBlue Wavelength , Blue Wavelength(蓝色波长)\nBlur Percentage , Blur Percentage(模糊百分比)\nCanvas Darkness , Canvas Darkness(画布暗度)\nColor Intensity , Color Intensity(色彩强度)\nColor Rendering , Color Rendering(显色)\nColor Tolerance , Color Tolerance(颜色容差)\nColored Outline , Colored Outline(彩色轮廓)\nColour Channels , Colour Channels(色彩通道)\nControl Point 1 , Control Point 1(控制点1)\nControl Point 2 , Control Point 2(控制点2)\nControl Point 3 , Control Point 3(控制点3)\nControl Point 4 , Control Point 4(控制点4)\nControl Point 5 , Control Point 5(控制点5)\nControl Point 6 , Control Point 6(控制点6)\nCouleur / Color , Couleur / Color(库勒/颜色)\nCyan Smoothness , Cyan Smoothness(青色平滑度)\nDebug Font Size , Debug Font Size(调试字体大小)\nDefects Density , Defects Density(缺陷密度)\nDestination (%) , Destination (%)(目标(%))\nDetail Strength , Detail Strength(细节强度)\nDilate Contours , Dilate Contours(扩张轮廓)\nEdge Behavior X , Edge Behavior X(边缘行为X)\nEdge Behavior Y , Edge Behavior Y(边缘行为Y)\nEdge Simplicity , Edge Simplicity(边缘简化)\nEdge Smoothness , Edge Smoothness(边缘平滑度)\nEffect Strength , Effect Strength(效果强度)\nEnhance Details , Enhance Details(增强细节)\nExponent (Real) , Exponent (Real)(指数(实数))\nFlip Left/Right , Flip Left/Right(左右翻转)\nFrequency Range , Frequency Range(频率范围)\nGamma Equalizer , Gamma Equalizer(伽玛均衡)\nGradient Preset , Gradient Preset(渐变预设)\nGrain (Shadows) , Grain (Shadows)(颗粒(阴影))\nGreen Rotations , Green Rotations(绿色旋转)\nHighlights Zone , Highlights Zone(高光区)\nHorizontal Blur , Horizontal Blur(水平模糊)\nIncreaseChroma1 , IncreaseChroma1(增加色度1)\nInitial Density , Initial Density(初始密度)\nItérations , Itérations(迭代次数)\nLevel Frequency , Level Frequency(等级频率)\nLight Direction , Light Direction(灯光方向)\nLightness Level , Lightness Level(亮度等级)\nLightness Shift , Lightness Shift(亮度偏移)\nLimit Hue Range , Limit Hue Range(极限色相范围)\nLuminance Level , Luminance Level(亮度等级)\nLuminance Shift , Luminance Shift(亮度偏移)\nLuminosity Type , Luminosity Type(光度类型)\nModeler / Shape , Modeler / Shape(造型师/造型)\nMotion Analyzer , Motion Analyzer(运动分析仪)\nNegative Colors , Negative Colors(负色)\nNegative Effect , Negative Effect(负面影响)\nNo Transparency , No Transparency(没有透明度)\nNormalize Input , Normalize Input(标准化输入)\nNumber of Sizes , Number of Sizes(尺寸数)\nNumber of Teeth , Number of Teeth(齿数)\nNumber of Tones , Number of Tones(色调数量)\nOutline Opacity , Outline Opacity(轮廓不透明度)\nOutput as Files , Output as Files(输出为文件)\nOutput Filename , Output Filename(输出文件名)\nPiece Size (px) , Piece Size (px)(块大小(像素))\nPreserve Alpha? , Preserve Alpha?(保留Alpha?)\nPreview Mapping , Preview Mapping(预览映射)\nPrint Size Unit , Print Size Unit(打印尺寸单位)\nProcessing Mode , Processing Mode(处理方式)\nQuantize Colors , Quantize Colors(量化色彩)\nRésolution , Résolution(Ré解决方案)\nRadius [Manual] , Radius [Manual](半径[手动])\nRecover Shadows , Recover Shadows(恢复阴影)\nRecursion Depth , Recursion Depth(递归深度)\nReference Color , Reference Color(参考色)\nRelief Contrast , Relief Contrast(救济对比)\nResolution (px) , Resolution (px)(解析度(px))\nRetourner Motif , Retourner Motif(Retourner主题)\nSecondary Color , Secondary Color(次要颜色)\nSecondary Gamma , Secondary Gamma(次级色伽玛)\nSecondary Shift , Secondary Shift(次级色偏移)\nSecondary Twist , Secondary Twist(次级色转变)\nShadow Contrast , Shadow Contrast(阴影对比)\nSharpening Type , Sharpening Type(锐化类型)\nShow Both Poles , Show Both Poles(显示两极)\nShow Difference , Show Difference(显示差异)\nSkin Estimation , Skin Estimation(皮肤估计)\nSmart Threshold , Smart Threshold(智能阈值)\nSmoothing Style , Smoothing Style(平滑风格)\nSmoothness (px) , Smoothness (px)(平滑度(px))\nSmoothness Type , Smoothness Type(平滑度类型)\nSource Color #1 , Source Color #1(原始颜色 #1)\nSource Color #2 , Source Color #2(原始颜色 #2)\nSource Color #3 , Source Color #3(原始颜色 #3)\nSource Color #4 , Source Color #4(原始颜色 #4)\nSource Color #5 , Source Color #5(原始颜色 #5)\nSource Color #6 , Source Color #6(原始颜色 #6)\nSource Color #7 , Source Color #7(原始颜色 #7)\nSource Color #8 , Source Color #8(原始颜色 #8)\nSource Color #9 , Source Color #9(原始颜色 #9)\nSpatial Overlap , Spatial Overlap(空间重叠)\nSpecial Effects , Special Effects(特殊效果)\nSRGB Conversion , SRGB Conversion(SRGB转换)\nStrength Effect , Strength Effect(影响强度)\nStroke Strength , Stroke Strength(笔触强度)\nSubsampling (%) , Subsampling (%)(二次采样(%))\nSynthesis Scale , Synthesis Scale(整体缩放)\nTarget Color #1 , Target Color #1(目标颜色 #1)\nTarget Color #2 , Target Color #2(目标颜色 #2)\nTarget Color #3 , Target Color #3(目标颜色 #3)\nTarget Color #4 , Target Color #4(目标颜色 #4)\nTarget Color #5 , Target Color #5(目标颜色 #5)\nTarget Color #6 , Target Color #6(目标颜色 #6)\nTarget Color #7 , Target Color #7(目标颜色 #7)\nTarget Color #8 , Target Color #8(目标颜色 #8)\nTarget Color #9 , Target Color #9(目标颜色 #9)\nTertiary Factor , Tertiary Factor(三级色因素)\nThin Separators , Thin Separators(薄分离器)\nTonal Bandwidth , Tonal Bandwidth(色调带宽)\nValue Precision , Value Precision(数值精度)\nVertical Amount , Vertical Amount(垂直数量)\nVertical Length , Vertical Length(垂直长度)\nView Resolution , View Resolution(预览质量)\nWaves Amplitude , Waves Amplitude(波幅)\nX-Centering (%) , X-Centering (%)(X-中心 (%))\nY-Centering (%) , Y-Centering (%)(Y中心(%))\n12. Noise Type , 12. Noise Type(12.噪音类型)\n13. Channel(s) , 13. Channel(s)(13.通道)\n13. Noise Type , 13. Noise Type(13.噪音类型)\n28. Hue Offset , 28. Hue Offset(28.色相偏移)\n36. Hue Offset , 36. Hue Offset(36.色相偏移)\n37. Channel(s) , 37. Channel(s)(37.通道)\n51. Smoothness , 51. Smoothness(51.平滑度)\n6.  Smoothness , 6.  Smoothness(6.平滑度)\nA-Color Factor , A-Color Factor(A色因素)\nAbsolute Value , Absolute Value(绝对值)\nAlignment Type , Alignment Type(对齐方式)\nAnalysis Scale , Analysis Scale(解析规模)\nAuto-Threshold , Auto-Threshold(自动阈值)\nB-Color Factor , B-Color Factor(B色因素)\nBlindness Type , Blindness Type(失明类型)\nBlue Rotations , Blue Rotations(蓝色旋转)\nBlur Amplitude , Blur Amplitude(模糊幅度)\nBlur Precision , Blur Precision(模糊精度)\nBoost Contrast , Boost Contrast(增强对比度)\nBorder Opacity , Border Opacity(边界不透明度)\nBorder Outline , Border Outline(边框轮廓)\nBoundaries (%) , Boundaries (%)(边界(%))\nBrightness (%) , Brightness (%)(亮度(%))\nCenter X-Shift , Center X-Shift(中心X-位移)\nCenter Y-Shift , Center Y-Shift(中心Y-位移)\nCenters Radius , Centers Radius(中心半径)\nColor Blending , Color Blending(色彩混合)\nColor Channels , Color Channels(色彩通道)\nColor Midtones , Color Midtones(中间调颜色)\nColor Strength , Color Strength(色彩强度)\nCustom Formula , Custom Formula(自定义公式)\nDarkness Level , Darkness Level(暗度等级)\nDesaturate (%) , Desaturate (%)(降低饱和度 (%))\nDescent Method , Descent Method(下降法)\nDetails Amount , Details Amount(明细金额)\nDiffuse Shadow , Diffuse Shadow(弥漫阴影)\nDodge Strength , Dodge Strength(减淡力度)\nEdge Influence , Edge Influence(边缘影响)\nEdge Thickness , Edge Thickness(边缘宽度)\nEdge Threshold , Edge Threshold(边缘阈值)\nEnhance Detail , Enhance Detail(增强细节)\nExpand Shadows , Expand Shadows(扩大阴影)\nFade Start (%) , Fade Start (%)(淡出开始(%))\nFilled Circles , Filled Circles(实心圆)\nFlip Tolerance , Flip Tolerance(翻转容差)\nFractal Points , Fractal Points(分形点)\nG'MIC Operator , G'MIC Operator(G'MIC操作员)\nG/M Smoothness , G/M Smoothness(G/M 平滑度)\nGrid Divisions , Grid Divisions(网格划分)\nGrid Smoothing , Grid Smoothing(网格平滑)\nHigh Frequency , High Frequency(高频)\nHighlights Hue , Highlights Hue(高光色相)\nHorizontal (%) , Horizontal (%)(水平(%))\nHue Smoothness , Hue Smoothness(色相平滑度)\nInitialization , Initialization(初始化)\nKey Frame Rate , Key Frame Rate(关键帧速率)\nKey Smoothness , Key Smoothness(黑色平滑度)\nLight Strength , Light Strength(光强度)\nLighting Angle , Lighting Angle(光照角度)\nLine Precision , Line Precision(线精度)\nLittle Magenta , Little Magenta(阴影洋红)\nLN Amplititude , LN Amplititude(LN 幅度)\nMagenta Factor , Magenta Factor(洋红色系数)\nMax Iterations , Max Iterations(最大迭代)\nMax Length (%) , Max Length (%)(最长长度 (%))\nMax Offset (%) , Max Offset (%)(最大偏移量(%))\nMaximal Radius , Maximal Radius(最大半径)\nMerging Option , Merging Option(合并选项)\nMid-Light Grey , Mid-Light Grey(中浅灰色)\nMidpoint Shift , Midpoint Shift(中点偏移)\nMin Length (%) , Min Length (%)(最小长度(%))\nMin Offset (%) , Min Offset (%)(最小偏移量(%))\nMinimal Radius , Minimal Radius(最小半径)\nMorphoStrenght , MorphoStrenght(变形强度)\nOmbre / Shadow , Ombre / Shadow(阴影)\nOpacity Factor , Opacity Factor(不透明度系数)\nPatch Variance , Patch Variance(补丁差异)\nPattern Height , Pattern Height(图案高度)\nPattern Weight , Pattern Weight(图案重量)\nPosition X (%) , Position X (%)(位置X(%))\nPosition Y (%) , Position Y (%)(位置Y(%))\nPost-Normalize , Post-Normalize(后标准化)\nPrécision , Précision(精密切割)\nPreserve Edges , Preserve Edges(保留边缘)\nPreview Guides , Preview Guides(预览指南)\nPrimary Factor , Primary Factor(主要色因素)\nPrimary Radius , Primary Radius(主半径)\nRadius / Angle , Radius / Angle(半径/角度)\nRed Smoothness , Red Smoothness(红色平滑度)\nRed Wavelength , Red Wavelength(红色波长)\nReduce Redness , Reduce Redness(减少发红)\nRegularity (%) , Regularity (%)(规律性(%))\nRegularization , Regularization(规范化)\nRendering Mode , Rendering Mode(渲染模式)\nResolution (%) , Resolution (%)(解析度 (%))\nReturn Scaling , Return Scaling(恢复尺寸)\nReverse Effect , Reverse Effect(反作用)\nReverse Motion , Reverse Motion(反向运动)\nRight Position , Right Position(右侧起始位置)\nSaturation (%) , Saturation (%)(饱和度(%))\nScaling Factor , Scaling Factor(换算系数)\nScene Selector , Scene Selector(场景选择器)\nSelected Color , Selected Color(所选颜色)\nShade Strength , Shade Strength(阴影强度)\nSharpen Object , Sharpen Object(锐化对象)\nSharpen Radius , Sharpen Radius(锐化半径)\nSharpen Shades , Sharpen Shades(锐化阴影)\nShow Watershed , Show Watershed(显示分水岭)\nShuffle Pieces , Shuffle Pieces(洗牌)\nSkip This Step , Skip This Step(跳过这一步)\nSmooth Looping , Smooth Looping(平滑循环)\nSmoothing Type , Smoothing Type(平滑类型)\nSmoothness (%) , Smoothness (%)(平滑度(%))\nSource X-Tiles , Source X-Tiles(源 X-块数)\nSource Y-Tiles , Source Y-Tiles(源 Y-块数)\nSpatial Metric , Spatial Metric(空间度量)\nSpatial Radius , Spatial Radius(空间半径)\nSpecular Light , Specular Light(镜面光)\nStarting Angle , Starting Angle(起始角度)\nStarting Color , Starting Color(起始颜色)\nStarting Frame , Starting Frame(起始帧)\nStarting Level , Starting Level(起始级别)\nStarting Point , Starting Point(初始点)\nStarting Value , Starting Value(起始值)\nStretch Colors , Stretch Colors(拉伸颜色)\nStretch Factor , Stretch Factor(拉伸系数)\nSubpixel Level , Subpixel Level(亚像素级)\nSymmetry Sides , Symmetry Sides(对称面)\nTangent Radius , Tangent Radius(切线半径)\nTertiary Gamma , Tertiary Gamma(三级色伽玛)\nTertiary Shift , Tertiary Shift(三级色偏移)\nTertiary Twist , Tertiary Twist(三级色转变)\nThickness (px) , Thickness (px)(厚度(像素))\nThreshold High , Threshold High(阈值 高)\nThumbnail Size , Thumbnail Size(缩图大小)\nTone Threshold , Tone Threshold(色调阈值)\nValue Blending , Value Blending(明度混合)\nValue Variance , Value Variance(数值差异)\nVertical Tiles , Vertical Tiles(垂直块数)\nX-Seed (Julia) , X-Seed (Julia)(X-种子(朱莉娅))\nY-Seed (Julia) , Y-Seed (Julia)(Y-种子(朱莉娅))\n-4. Normalise , -4. Normalise(-4. 标准化)\n0.  Recompute , 0.  Recompute(0.重新计算)\n11. Amplitude , 11. Amplitude(11.幅度)\n15. Channel 1 , 15. Channel 1(15.通道1)\n16. Channel 2 , 16. Channel 2(16.通道2)\n17. Channel 3 , 17. Channel 3(17.通道3)\n18. Normalise , 18. Normalise(18.标准化)\n1st Parameter , 1st Parameter(第一个参数)\n26. Number #1 , 26. Number #1(26.第一名)\n27. Number #2 , 27. Number #2(27. 2号)\n28. Equalize? , 28. Equalize?(28.相等?)\n29. Normalise , 29. Normalise(29.规范化)\n2nd Parameter , 2nd Parameter(第二参数)\n3D Image Type , 3D Image Type(3D影像类型)\n3rd Parameter , 3rd Parameter(第三参数)\n50. Depth (%) , 50. Depth (%)(50.深度(%))\nA Lot of Cyan , A Lot of Cyan(青色高光)\nA-Color Shift , A-Color Shift(A色偏移)\nAmplitude (%) , Amplitude (%)(幅度(%))\nAngular Tiles , Angular Tiles(角数)\nAnti-Aliasing , Anti-Aliasing(抗锯齿)\nAnti-Ghosting , Anti-Ghosting(防重影)\nApply Relief? , Apply Relief?(申请救济?)\nAvg Branching , Avg Branching(平均分支)\nB-Color Shift , B-Color Shift(B色偏移)\nBalance Color , Balance Color(平衡顔色)\nBlending Mode , Blending Mode(混合模式)\nBlending Size , Blending Size(混合尺寸)\nBlob 10 Color , Blob 10 Color(斑点10 颜色)\nBlob 11 Color , Blob 11 Color(斑点11 颜色)\nBlob 12 Color , Blob 12 Color(斑点12 颜色)\nBlur Strength , Blur Strength(模糊强度)\nBlur the Mask , Blur the Mask(模糊蒙版)\nBright Length , Bright Length(亮长度)\nBruit / Noise , Bruit / Noise(杂色)\nBurn Strength , Burn Strength(加深强度)\nCentering (%) , Centering (%)(居中(%))\nCenters Color , Centers Color(中心色)\nColor Shadows , Color Shadows(阴影颜色)\nColored Grain , Colored Grain(着色颗粒)\nColorize Mode , Colorize Mode(上色模式)\nColormap Type , Colormap Type(色彩映射类型)\nCouleur Denim , Couleur Denim(Couleur牛仔布)\nCurved Stroke , Curved Stroke(弯曲笔触)\nCustom Kernel , Custom Kernel(自定义内核)\nCustom Layout , Custom Layout(自定义布局)\nDetails Scale , Details Scale(细节大小)\nDimension (%) , Dimension (%)(尺寸 (%))\nDisturbance X , Disturbance X(扰动X)\nDisturbance Y , Disturbance Y(扰动Y)\nDither Output , Dither Output(抖动输出)\nEdge Exponent , Edge Exponent(边缘指数)\nEdge Fidelity , Edge Fidelity(边缘保真度)\nElevation (%) , Elevation (%)(海拔(%))\nEllipse Ratio , Ellipse Ratio(椭圆比率)\nFrames Offset , Frames Offset(帧偏移)\nFrequency (%) , Frequency (%)(频率 (%))\nHighlight (%) , Highlight (%)(高光(%))\nInterpolation , Interpolation(插值)\nLeft Position , Left Position(左侧起始位置)\nLighten Edges , Lighten Edges(亮化边缘)\nLightness (%) , Lightness (%)(亮度(%))\nLittle Yellow , Little Yellow(阴影黄)\nLookup Factor , Lookup Factor(查找因子)\nLow Frequency , Low Frequency(低频)\nMagenta Shift , Magenta Shift(洋红色偏移)\nMask Contrast , Mask Contrast(遮罩对比)\nMask Dilation , Mask Dilation(蒙版扩张)\nMasterOpacity , MasterOpacity(主不透明度)\nMax Threshold , Max Threshold(最大阈值)\nMaximal Value , Maximal Value(最大值)\nMedian Radius , Median Radius(中值半径)\nMerge Layers? , Merge Layers?(合并图层?)\nMerging Steps , Merging Steps(相融)\nMid-Dark Grey , Mid-Dark Grey(中深灰色)\nMin Threshold , Min Threshold(最小阈值)\nMinimal Value , Minimal Value(最小值)\nMirror Effect , Mirror Effect(镜面效果)\nNeutral Color , Neutral Color(中性色)\nNon-Linearity , Non-Linearity(非线性度)\nNormalization , Normalization(标准化)\nOpacity Gamma , Opacity Gamma(不透明度伽玛)\nOutline Color , Outline Color(轮廓色)\nOutput Folder , Output Folder(导出目录)\nOutput Format , Output Format(输出格式)\nOutput Frames , Output Frames(输出帧)\nOutput Height , Output Height(输出高度)\nOutput Layers , Output Layers(输出层)\nOutside Color , Outside Color(外部颜色)\nPatch Measure , Patch Measure(修补措施)\nPattern Angle , Pattern Angle(图案角度)\nPattern Width , Pattern Width(图案宽度)\nPole Rotation , Pole Rotation(极旋转)\nPre-Normalize , Pre-Normalize(预标准化)\nPrecision (%) , Precision (%)(精度(%))\nPreview Bands , Preview Bands(预览色相滑条)\nPreview Brush , Preview Brush(预览笔刷)\nPreview Shape , Preview Shape(预览形状)\nPreview Shows , Preview Shows(预览显示)\nPreview Split , Preview Split(预览分割)\nPrimary Angle , Primary Angle(主角度)\nPrimary Color , Primary Color(原色)\nPrimary Gamma , Primary Gamma(主要色伽玛)\nPrimary Shift , Primary Shift(主要色偏移)\nPrimary Twist , Primary Twist(主要色转变)\nQuick Enlarge , Quick Enlarge(快速放大)\nRandom Colors , Random Colors(随机颜色)\nRed Rotations , Red Rotations(红色旋转)\nRelative Size , Relative Size(相对尺寸)\nReverse Order , Reverse Order(相反的顺序)\nRevert Layers , Revert Layers(反排图层)\nScreen Border , Screen Border(屏幕边框)\nSecond Offset , Second Offset(垂直偏移)\nSecond Radius , Second Radius(第二半径)\nSerial Number , Serial Number(序列号)\nSize Variance , Size Variance(尺寸差异)\nSmooth Amount , Smooth Amount(平滑度)\nSmooth Colors , Smooth Colors(平滑的色彩)\nSpatial Scale , Spatial Scale(空间尺寸)\nSpecular Size , Specular Size(镜面反射尺寸)\nSpread Amount , Spread Amount(扩散量)\nSpread Angles , Spread Angles(扩散角度)\nStd Branching , Std Branching(标准分支)\nStroke Length , Stroke Length(笔划长度)\nSurface Angle , Surface Angle(表面角度)\nTaille / Size , Taille / Size(字样/大小)\nThickness (%) , Thickness (%)(宽度(%))\nThreshold (%) , Threshold (%)(阈值(%))\nThreshold Low , Threshold Low(阈值 低)\nThreshold Max , Threshold Max(最大阈值)\nThreshold Mid , Threshold Mid(阈值中)\nTiled Preview , Tiled Preview(平铺预览)\nVertical Blur , Vertical Blur(垂直模糊)\nVery Course 5 , Very Course 5(非常课程5)\nVignette Size , Vignette Size(渐晕大小)\nXY-Axis Mode? , XY-Axis Mode?(XY轴模式?)\nYellow Factor , Yellow Factor(黄色因素)\n1st Variance , 1st Variance(第一方差)\n23. Boundary , 23. Boundary(23.边界)\n2nd Variance , 2nd Variance(第二方差)\n30. X-Factor , 30. X-Factor(30. X-系数)\n31. Y-Factor , 31. Y-Factor(31. Y-系数)\n32. X-Offset , 32. X-Offset(32. X-偏移)\n34. Y-Offset , 34. Y-Offset(34. Y-偏移)\n36. Boundary , 36. Boundary(36.边界)\n46. Absolute , 46. Absolute(46.绝对的)\nA Lot of Key , A Lot of Key(高光白色)\nAcceleration , Acceleration(加速)\nAngle (deg.) , Angle (deg.)(角度(度))\nAngle / Size , Angle / Size(角度/大小)\nAntialiasing , Antialiasing(抗锯齿)\nAspect Ratio , Aspect Ratio(长宽比)\nBalance SRGB , Balance SRGB(平衡SRGB)\nBlend Scales , Blend Scales(混合尺寸)\nBlob 1 Color , Blob 1 Color(斑点1 颜色)\nBlob 2 Color , Blob 2 Color(斑点2 颜色)\nBlob 3 Color , Blob 3 Color(斑点3 颜色)\nBlob 4 Color , Blob 4 Color(斑点4 颜色)\nBlob 5 Color , Blob 5 Color(斑点5 颜色)\nBlob 6 Color , Blob 6 Color(斑点6 颜色)\nBlob 7 Color , Blob 7 Color(斑点7 颜色)\nBlob 8 Color , Blob 8 Color(斑点8 颜色)\nBlob 9 Color , Blob 9 Color(斑点9 颜色)\nBoost Smooth , Boost Smooth(提升平滑度)\nBoost Stroke , Boost Stroke(增强笔触)\nBorder Color , Border Color(边框颜色)\nBorder Width , Border Width(边框宽度)\nBristle Size , Bristle Size(笔毛大小)\nCanvas Color , Canvas Color(画布颜色)\nCLUT Opacity , CLUT Opacity(CLUT不透明度)\nCoefficients , Coefficients(系数)\nColor Median , Color Median(颜色中位数)\nColor Metric , Color Metric(颜色指标)\nColour Model , Colour Model(颜色模型)\nConnectivity , Connectivity(连接性)\nContrast (%) , Contrast (%)(对比度(%))\nCurve Amount , Curve Amount(曲线量)\nCurve Length , Curve Length(曲线长度)\nCycle Layers , Cycle Layers(轮转图层)\nDefects Size , Defects Size(缺陷尺寸)\nDetail Level , Detail Level(详细等级)\nDetail Scale , Detail Scale(细节比例)\nDOF Analyzer , DOF Analyzer(自由度分析仪)\nDrawing Mode , Drawing Mode(绘图模式)\nEnding Angle , Ending Angle(结束角度)\nEnding Color , Ending Color(终止颜色)\nEnding Value , Ending Value(终点值)\nEqualization , Equalization(均衡)\nFade End (%) , Fade End (%)(淡出结束(%))\nFading Shape , Fading Shape(外形衰减)\nFill Holes % , Fill Holes %(填充孔洞%)\nFirst Offset , First Offset(水平偏移)\nFirst Radius , First Radius(第一半径)\nFrame Format , Frame Format(帧格式)\nGreen Factor , Green Factor(绿色因素)\nHyper Droste , Hyper Droste(超级德罗斯特)\nImage Weight , Image Weight(图像重量)\nInner Fading , Inner Fading(内部淡出)\nInner Length , Inner Length(内长)\nInner Radius , Inner Radius(内半径)\nInput Folder , Input Folder(输入文件夹)\nInput Layers , Input Layers(输入层)\nInside Color , Inside Color(内部颜色)\nInter-Frames , Inter-Frames(中间帧数)\nLine Opacity , Line Opacity(线不透明度)\nLittle Green , Little Green(阴影绿色)\nLN Amplitude , LN Amplitude(LN振幅)\nMascot Image , Mascot Image(吉祥物图片)\nMaximal Area , Maximal Area(最大面积)\nMaximal Size , Maximal Size(最大尺寸)\nMerging Mode , Merging Mode(合并模式)\nMiddle Scale , Middle Scale(中明度等级)\nMidtones Hue , Midtones Hue(中间调色相)\nMinimal Area , Minimal Area(最小面积)\nMinimal Size , Minimal Size(最小尺寸)\nModulo Value , Modulo Value(模值)\nMontage Type , Montage Type(蒙太奇类型)\nNetteté , Netteté(内特é)\nObject Ratio , Object Ratio(物体比例)\nOpacity Gain , Opacity Gain(不透明度增益)\nOrientations , Orientations(方向)\nOuline Color , Ouline Color(棕褐色)\nOuter Fading , Outer Fading(外部淡出)\nOuter Length , Outer Length(外长)\nOuter Radius , Outer Radius(外半径)\nOutline Size , Outline Size(轮廓宽度)\nOutput Files , Output Files(输出文件)\nOutput Width , Output Width(输出宽度)\nOverall Blur , Overall Blur(整体模糊)\nPadding (px) , Padding (px)(填充(px))\nPaint Effect , Paint Effect(绘画效果)\nPattern Type , Pattern Type(模式类型)\nPerturbation , Perturbation(扰动)\nPost-Process , Post-Process(后期过程)\nPreview Data , Preview Data(预览数据)\nPreview Grid , Preview Grid(预览网格)\nPreview Mask , Preview Mask(预览蒙版)\nPreview Time , Preview Time(预览时间)\nPreview Type , Preview Type(预览类型)\nQuantization , Quantization(量化)\nRandom Angle , Random Angle(随机角度)\nReduce Halos , Reduce Halos(减少光晕)\nReduce Noise , Reduce Noise(减少噪音)\nRegular Grid , Regular Grid(常规网格)\nReverse Flip , Reverse Flip(反向翻转)\nScale Factor , Scale Factor(缩放)\nScale Output , Scale Output(比例输出)\nScale Plasma , Scale Plasma(鳞等离子)\nSecond Color , Second Color(第二色)\nShadows Zone , Shadows Zone(阴影区)\nSoften Guide , Soften Guide(软化指南)\nSome Magenta , Some Magenta(中间调洋红)\nSpecular (%) , Specular (%)(镜面反射 (%))\nStencil Type , Stencil Type(模板类型)\nStrength (%) , Strength (%)(强度(%))\nStroke Angle , Stroke Angle(笔划角度)\nSubdivisions , Subdivisions(细分)\nThreshold On , Threshold On(阈值开启)\nTotal Layers , Total Layers(总层数)\nTransparency , Transparency(透明度)\nValue Action , Value Action(明度行为)\nValue Bottom , Value Bottom(最低明度)\nValue Factor , Value Factor(明度因素)\nValue Offset , Value Offset(明度偏移)\nVertical (%) , Vertical (%)(垂直(%))\nWhite Layers , White Layers(白色层)\nX-Coordinate , X-Coordinate(X坐标)\nX-Dispersion , X-Dispersion(X-色散)\nX-Factor (%) , X-Factor (%)(X-系数 (%))\nX-Multiplier , X-Multiplier(X-乘数)\nX-Offset (%) , X-Offset (%)(X-偏移 (%))\nX-Resolution , X-Resolution(X-分辨率)\nX-Shift (px) , X-Shift (px)(X-位移(px))\nX-Smoothness , X-Smoothness(X平滑度)\nX-Variations , X-Variations(X-变化)\nXY-Amplitude , XY-Amplitude(XY振幅)\nY-Coordinate , Y-Coordinate(Y坐标)\nY-Dispersion , Y-Dispersion(Y-色散)\nY-Factor (%) , Y-Factor (%)(Y-系数 (%))\nY-Multiplier , Y-Multiplier(Y-乘数)\nY-Offset (%) , Y-Offset (%)(Y-偏移(%))\nY-Resolution , Y-Resolution(Y-分辨率)\nY-Shift (px) , Y-Shift (px)(Y-位移(px))\nY-Smoothness , Y-Smoothness(Y平滑度)\nY-Variations , Y-Variations(Y-变化)\nYellow Shift , Yellow Shift(黄色偏移)\nZ-Multiplier , Z-Multiplier(Z-乘数)\n1st X-Coord , 1st X-Coord(第一X坐标)\n1st Y-Coord , 1st Y-Coord(第一个Y坐标)\n29. Negate? , 29. Negate?(29.否定?)\n2nd X-Coord , 2nd X-Coord(第二X坐标)\n2nd Y-Coord , 2nd Y-Coord(第二个Y坐标)\n3rd X-Coord , 3rd X-Coord(第三X坐标)\n3rd Y-Coord , 3rd Y-Coord(第三个Y坐标)\nAllow Angle , Allow Angle(允许角度)\nAmbient (%) , Ambient (%)(环境 (%))\nAngle (deg) , Angle (deg)(角度(度))\nAngle Range , Angle Range(角度范围)\nAttenuation , Attenuation(衰减)\nBG Textured , BG Textured(BG纹理)\nBlack Level , Black Level(黑阶)\nBlack Point , Black Point(黑点)\nBlend Decay , Blend Decay(混合衰变)\nBlue Factor , Blue Factor(蓝色因素)\nBlur Amount , Blur Amount(模糊量)\nBlur Factor , Blur Factor(模糊系数)\nBottom Size , Bottom Size(底面尺寸)\nBump Factor , Bump Factor(凹凸系数)\nCanal Alpha , Canal Alpha(Alpha通道)\nCenter Help , Center Help(中心帮助)\nCenter Size , Center Size(中心尺寸)\nColor Angle , Color Angle(色角)\nColor Basis , Color Basis(颜色基准)\nColor Boost , Color Boost(色彩提升)\nColor Gamma , Color Gamma(颜色伽玛)\nColor Image , Color Image(彩色图像)\nColor Model , Color Model(颜色模型)\nColor Space , Color Space(色彩空间)\nCool / Warm , Cool / Warm(冷/暖)\nCurve Angle , Curve Angle(曲线角度)\nCyan Factor , Cyan Factor(青色因素)\nDark Length , Dark Length(暗长)\nDensity (%) , Density (%)(密度%)\nDiffuse (%) , Diffuse (%)(扩散度(%))\nDiffusivity , Diffusivity(扩散性)\nExpand Size , Expand Size(扩大尺寸)\nFast Resize , Fast Resize(快速调整大小)\nFFT Preview , FFT Preview(FFT预览)\nFibrousness , Fibrousness(纤维性)\nFinger Size , Finger Size(手指大小)\nFirst Color , First Color(第一色)\nFlou / Blur , Flou / Blur(模糊/模糊)\nFolder Name , Folder Name(文件夹名称)\nFont Colors , Font Colors(字体颜色)\nFractal Set , Fractal Set(分形集)\nFrame Color , Frame Color(镜框颜色)\nFrame Width , Frame Width(框架宽度)\nGrain Scale , Grain Scale(颗粒大小)\nGranularity , Granularity(粒度)\nGreen Level , Green Level(绿色等级)\nGreen Shift , Green Shift(绿色偏移)\nHomogeneity , Homogeneity(同质性)\nHue Max (%) , Hue Max (%)(色相最大(%))\nHue Min (%) , Hue Min (%)(顺化(%))\nInner Shade , Inner Shade(内部阴影)\nInvert Blur , Invert Blur(反转模糊)\nInvert Mask , Invert Mask(反面罩)\nKeep Colors , Keep Colors(保持色彩)\nKeep Detail , Keep Detail(保持细节)\nLight Angle , Light Angle(发光角度)\nLight Color , Light Color(浅色)\nLittle Blue , Little Blue(阴影蓝色)\nLittle Cyan , Little Cyan(阴影青色)\nLookup Size , Lookup Size(查找大小)\nLoop Method , Loop Method(循环法)\nMax Cut (%) , Max Cut (%)(最大切割(%))\nMiddle Grey , Middle Grey(中灰)\nMin Cut (%) , Min Cut (%)(最小切割(%))\nMixer Style , Mixer Style(混合样式)\nNoise Level , Noise Level(噪点等级)\nNoise Scale , Noise Scale(噪点大小)\nOddness (%) , Oddness (%)(奇异度(%))\nOpacity (%) , Opacity (%)(不透明度(%))\nOrientation , Orientation(方向)\nOutline (%) , Outline (%)(轮廓 (%))\nOutput CLUT , Output CLUT(输出CLUT)\nOutput Mode , Output Mode(输出方式)\nOutput Type , Output Type(输出类型)\nOverlap (%) , Overlap (%)(交叠 (%))\nPencil Size , Pencil Size(铅笔大小)\nPencil Type , Pencil Type(铅笔类型)\nPeriodicity , Periodicity(周期性)\nPoint Width , Point Width(点宽)\nPre-Process , Pre-Process(前处理)\nPropagation , Propagation(扩展)\nQuality (%) , Quality (%)(质量(%))\nRandom Seed , Random Seed(随机种子)\nRelief Size , Relief Size(起伏尺寸)\nRemove Tile , Remove Tile(移除一块)\nResult Type , Result Type(结果类型)\nRight Slope , Right Slope(右侧斜度)\nRotate Tree , Rotate Tree(旋转树)\nSecond Size , Second Size(第二尺寸)\nSensitivity , Sensitivity(灵敏度)\nShade Angle , Shade Angle(阴影角度)\nShading (%) , Shading (%)(阴影(%))\nShadow Size , Shadow Size(阴影大小)\nShift Point , Shift Point(换档点)\nSome Yellow , Some Yellow(中间调黄)\nSort Colors , Sort Colors(排序颜色)\nStart Angle , Start Angle(起始角度)\nStart Color , Start Color(起始色)\nSwap Colors , Swap Colors(交换颜色)\nSwap Layers , Swap Layers(交换层)\nTones Range , Tones Range(色调范围)\nTrunk Color , Trunk Color(树干颜色)\nValue Range , Value Range(取值范围)\nValue Scale , Value Scale(亮度尺寸)\nValue Shift , Value Shift(明度偏移)\nVariability , Variability(变化性)\nVariation A , Variation A(变量A)\nVariation B , Variation B(变量B)\nVariation C , Variation C(变量C)\nVertex Type , Vertex Type(顶点类型)\nWhite Level , White Level(白阶)\nWhite Point , White Point(白点)\nX-Amplitude , X-Amplitude(X-幅度)\nX-Centering , X-Centering(X中心)\nX-Curvature , X-Curvature(X曲率)\nX-Shift (%) , X-Shift (%)(X-位移(%))\nX-Size (px) , X-Size (px)(X-尺寸 (像素))\nX-Start (%) , X-Start (%)(X-起始 (%))\nY-Amplitude , Y-Amplitude(Y-幅度)\nY-Centering , Y-Centering(Y中心)\nY-Curvature , Y-Curvature(Y形曲率)\nY-Shift (%) , Y-Shift (%)(Y-位移 (%))\nY-Size (px) , Y-Size (px)(Y-尺寸 (像素))\nY-Start (%) , Y-Start (%)(Y-起始 (%))\nZoom Center , Zoom Center(缩放中心 )\nZoom Factor , Zoom Factor(缩放系数)\n10th Color , 10th Color(颜色10)\n5. Octaves , 5. Octaves(5.八度)\nAction #10 , Action #10(动作 #10)\nAction #11 , Action #11(动作 #11)\nAction #12 , Action #12(动作 #12)\nAction #13 , Action #13(动作 #13)\nAction #14 , Action #14(动作 #14)\nAction #15 , Action #15(动作 #15)\nAction #16 , Action #16(动作 #16)\nAction #17 , Action #17(动作 #17)\nAction #18 , Action #18(动作 #18)\nAction #19 , Action #19(动作 #19)\nAction #20 , Action #20(动作 #20)\nAction #21 , Action #21(动作 #21)\nAction #22 , Action #22(动作 #22)\nAction #23 , Action #23(动作 #23)\nAction #24 , Action #24(动作 #24)\nAlpha Mode , Alpha Mode(字母模式)\nAnisotropy , Anisotropy(各向异性)\nApply Mask , Apply Mask(涂面膜)\nArray Mode , Array Mode(阵列模式)\nBackground , Background(背景)\nBand Width , Band Width(色彩滑条宽度)\nBase Scale , Base Scale(基本比例)\nBlend Mode , Blend Mode(混合模式)\nBlend Size , Blend Size(混合尺寸)\nBlue Level , Blue Level(蓝色等级)\nBlue Shift , Blue Shift(蓝色偏移)\nBlur Alpha , Blur Alpha(模糊Alpha)\nBlur Frame , Blur Frame(模糊框)\nBlur Shade , Blur Shade(模糊阴影)\nCenter (%) , Center (%)(中心 (%))\nChannel #1 , Channel #1(通道#1)\nChannel #2 , Channel #2(通道#2)\nChannel #3 , Channel #3(通道#3)\nChannel(s) , Channel(s)(通道)\nColor Mode , Color Mode(色彩模式)\nColorspace , Colorspace(色彩空间)\nComponents , Components(组件)\nCyan Shift , Cyan Shift(青色偏移)\nDark Color , Dark Color(深色)\nDecoration , Decoration(装饰)\nDesaturate , Desaturate(去饱和)\nDilatation , Dilatation(扩张)\nDodge Blur , Dodge Blur(减淡模糊)\nDuplicates , Duplicates(重复项)\nEdge Shade , Edge Shade(边缘阴影)\nEtch Tones , Etch Tones(蚀刻色调)\nExpression , Expression(表达式)\nExtend 1px , Extend 1px(延伸1px)\nFade Start , Fade Start(淡出开始)\nFeathering , Feathering(羽化)\nFill Holes , Fill Holes(填充孔洞)\nFine Scale , Fine Scale(精细比例)\nFirst Size , First Size(第一尺寸)\nFlat Color , Flat Color(平面颜色)\nForce Gray , Force Gray(强制灰色)\nFrame (px) , Frame (px)(边框(px))\nFrame Size , Frame Size(边框大小)\nFrame Skip , Frame Skip(跳帧)\nFrame Type , Frame Type(镜框类型)\nGrain Type , Grain Type(颗粒类型)\nGrid Width , Grid Width(网格宽度)\nGrow Alpha , Grow Alpha(扩大Alpha)\nH Variable , H Variable(H变量)\nHeight (%) , Height (%)(高度 (%))\nHigh Scale , High Scale(高明度等级)\nHigh Value , High Value(高明度)\nHighlights , Highlights(高光)\nHue Factor , Hue Factor(色相因素)\nHue Offset , Hue Offset(色相偏移)\nInit. Type , Init. Type(初始化. 类型)\nInput Type , Input Type(输入类型)\nInversions , Inversions(反转)\nIterations , Iterations(迭代)\nK Variable , K Variable(K变量)\nKey Factor , Key Factor(黑色因素)\nLeaf Color , Leaf Color(叶片颜色)\nLeft Slope , Left Slope(左侧斜度)\nLight Grey , Light Grey(浅灰色)\nLight Type , Light Type(光类型)\nLittle Key , Little Key(阴影黑色)\nLittle Red , Little Red(阴影红色)\nMargin (%) , Margin (%)(页边空白 (%))\nMask Color , Mask Color(蒙版颜色)\nMax Radius , Max Radius(最大半径)\nMid Offset , Mid Offset(中偏移)\nMin Area % , Min Area %(最小面积%)\nMin Radius , Min Radius(最小半径)\nMixed Mode , Mixed Mode(混合模式)\nMixer Mode , Mixer Mode(混合模式)\nMonochrome , Monochrome(单色)\nMuch Green , Much Green(高光绿色)\nMultiplier , Multiplier(乘数)\nNear Black , Near Black(近黑)\nNoise Type , Noise Type(杂点类型)\nOffset (%) , Offset (%)(偏移(%))\nOnly Leafs , Only Leafs(只有叶子)\nOversample , Oversample(过采样)\nPatch Size , Patch Size(补丁大小)\nPost-Gamma , Post-Gamma(后伽玛)\nProcess As , Process As(处理为)\nProportion , Proportion(比例)\nPush Point , Push Point(推点)\nRadius (%) , Radius (%)(半径(%))\nRadius Cut , Radius Cut(半径分割(%))\nRandomness , Randomness(随机性)\nRecursions , Recursions(递归)\nRed Factor , Red Factor(红色因素)\nReduce RAM , Reduce RAM(降低内存占用)\nRefraction , Refraction(折射)\nRegularity , Regularity(规律性)\nReset View , Reset View(重置视图)\nResolution , Resolution(解析度)\nSat Bottom , Sat Bottom(最低饱和度)\nSaturation , Saturation(饱和度)\nSharpening , Sharpening(锐化)\nShow Frame , Show Frame(展示框)\nSmoothness , Smoothness(平滑度)\nSome Green , Some Green(中间调绿色)\nSource (%) , Source (%)(源 (%))\nStabilizer , Stabilizer(稳定器)\nSwap Sides , Swap Sides(互换面)\nTile Poles , Tile Poles(平铺极坐标)\nTone Gamma , Tone Gamma(色调伽玛)\nUse as Hue , Use as Hue(用作色相)\nWavelength , Wavelength(波长)\nX-Rotation , X-Rotation(X-旋转)\nY-Rotation , Y-Rotation(Y-旋转)\nZ-Rotation , Z-Rotation(Z-旋转)\n1st Color , 1st Color(颜色1)\n2nd Color , 2nd Color(颜色2)\n3rd Color , 3rd Color(颜色3)\n4. Radius , 4. Radius(4.半径)\n49. Angle , 49. Angle(49.角度)\n4th Color , 4th Color(颜色4)\n5th Color , 5th Color(颜色5)\n6th Color , 6th Color(颜色6)\n7th Color , 7th Color(颜色7)\n8th Color , 8th Color(颜色8)\n9th Color , 9th Color(颜色9)\nAction #1 , Action #1(动作 #1)\nAction #2 , Action #2(动作 #2)\nAction #3 , Action #3(动作 #3)\nAction #4 , Action #4(动作 #4)\nAction #5 , Action #5(动作 #5)\nAction #6 , Action #6(动作 #6)\nAction #7 , Action #7(动作 #7)\nAction #8 , Action #8(动作 #8)\nAction #9 , Action #9(动作 #9)\nAlgorithm , Algorithm(算法)\nAmplitude , Amplitude(幅度)\nAngle (%) , Angle (%)(角度(%))\nAngle Cut , Angle Cut(角度分割(%))\nAuto Crop , Auto Crop(自动裁切)\nBandwidth , Bandwidth(波长)\nBlob Size , Blob Size(斑点大小)\nBloc Size , Bloc Size(群组大小)\nBrighness , Brighness(亮度)\nBurn Blur , Burn Blur(加深模糊)\nCell Size , Cell Size(像元大小)\nCoherence , Coherence(连贯性)\nColorbase , Colorbase(色基)\nDark Grey , Dark Grey(深灰色)\nDepth (%) , Depth (%)(深度(%))\nDeviation , Deviation(偏差)\nDirection , Direction(方向)\nEdges (%) , Edges (%)(边(%))\nElevation , Elevation(海拔)\nEnd Color , End Color(终止色)\nFrequency , Frequency(频率)\nFuzzyness , Fuzzyness(模糊性)\nGamma (%) , Gamma (%)(伽玛(%))\nGreyscale , Greyscale(灰度)\nGuide Mix , Guide Mix(参考混合)\nHighlight , Highlight(高光)\nHue Range , Hue Range(色相范围)\nHue Shift , Hue Shift(色相偏移)\nIntensity , Intensity(强度)\nIteration , Iteration(迭代)\nKey Shift , Key Shift(黑色偏移)\nLandscape , Landscape(景观)\nLeak Type , Leak Type(泄漏类型)\nLightness , Lightness(亮度)\nLinearity , Linearity(线性度)\nLow Scale , Low Scale(低明度等级)\nLow Value , Low Value(低明度)\nLUTs Pack , LUTs Pack(LUT包)\nMap Tones , Map Tones(地图色调)\nMask Size , Mask Size(蒙版尺寸)\nMask Type , Mask Type(口罩类型)\nMax Angle , Max Angle(最大角度)\nMax Curve , Max Curve(最大曲线)\nMaze Type , Maze Type(迷宫类型)\nMuch Blue , Much Blue(高光蓝色)\nNormalize , Normalize(标准化)\nOutput As , Output As(输出为)\nOvershoot , Overshoot(过冲)\nPlacement , Placement(放置)\nPlot Type , Plot Type(绘制类型)\nPole Long , Pole Long(极长)\nPre-Gamma , Pre-Gamma(伽玛前)\nPrecision , Precision(精度)\nRandomize , Randomize(随机化)\nRed Level , Red Level(红色等级)\nRed Shift , Red Shift(红色偏移)\nReference , Reference(参考)\nRendering , Rendering(渲染)\nRescaling , Rescaling(重新缩放)\nReversing , Reversing(倒车)\nRotations , Rotations(旋转)\nRoundness , Roundness(圆度)\nSat Range , Sat Range(饱和度范围)\nScale (%) , Scale (%)(尺寸)\nSelect By , Select By(选择依据)\nSelection , Selection(选拔)\nSharpness , Sharpness(锐度)\nShininess , Shininess(光泽度)\nShow Grid , Show Grid(显示网格)\nSmoothing , Smoothing(平滑处理)\nSome Blue , Some Blue(中间调蓝色)\nSome Cyan , Some Cyan(中间调青色)\nSpreading , Spreading(传播)\nThickness , Thickness(宽度)\nThreshold , Threshold(阈值)\nTile Size , Tile Size(瓷砖尺寸)\nTime Step , Time Step(计算步长)\nTolerance , Tolerance(容差)\nTone Blur , Tone Blur(色调模糊)\nTransform , Transform(变形方式)\nUse Light , Use Light(使用光)\nVal Range , Val Range(明度范围)\nValue Top , Value Top(最高明度)\nVery Fine , Very Fine(很好)\nWidth (%) , Width (%)(宽度(%))\nX Origine , X Origine(X 起点)\nX-Balance , X-Balance(X平衡)\nX-End (%) , X-End (%)(X-结束(%))\nX-Warping , X-Warping(X-扭曲)\nX/Y-Ratio , X/Y-Ratio(X/Y-比率)\nXY-Factor , XY-Factor(XY-系数)\nY Origine , Y Origine(Y 起点)\nY-Balance , Y-Balance(平衡)\nY-End (%) , Y-End (%)(Y-结束 (%))\nY-Warping , Y-Warping(Y-扭曲)\n1 Levels , 1 Levels(1级)\n1st Text , 1st Text(第一个文字)\n1st Tone , 1st Tone(色调1)\n2nd Text , 2nd Text(第二文字)\n2nd Tone , 2nd Tone(色调2)\n3rd Tone , 3rd Tone(色调3)\n4th Tone , 4th Tone(色调4)\n5th Tone , 5th Tone(色调5)\n6th Tone , 6th Tone(色调6)\n7.  Blur , 7.  Blur(7.模糊)\n7th Tone , 7th Tone(色调7)\n8th Tone , 8th Tone(色调8)\nAliasing , Aliasing(混叠)\nAutocrop , Autocrop(自动裁剪)\nBoundary , Boundary(边界)\nBranches , Branches(分支)\nCamera X , Camera X(相机 X)\nCamera Y , Camera Y(相机 Y)\nCategory , Category(类别)\nCenter X , Center X(X中心)\nCenter Y , Center Y(Y中心)\nChannels , Channels(通道)\nCircle C , Circle C(C圈)\nColoring , Coloring(染色)\nContours , Contours(轮廓)\nCourse 4 , Course 4(课程4)\nCrop (%) , Crop (%)(裁剪 (%))\nCut High , Cut High(切高)\nDarkness , Darkness(暗度)\nDilation , Dilation(扩张)\nDistance , Distance(距离)\nDot Size , Dot Size(点尺寸)\nDuration , Duration(持续时间)\nEqualize , Equalize(均衡)\nExponent , Exponent(指数)\nExposure , Exposure(接触)\nFade End , Fade End(淡出结束)\nFilename , Filename(文件名)\nFlatness , Flatness(平整度)\nGeometry , Geometry(几何)\nGuide As , Guide As(引导为)\nH Cutoff , H Cutoff(H 界限)\nHue Band , Hue Band(色相滑条)\nK-Factor , K-Factor(K-因子)\nLighting , Lighting(亮度)\nLow Bias , Low Bias(低偏见)\nMax Area , Max Area(最大面积)\nMedium 3 , Medium 3(中等3)\nMid Grey , Mid Grey(中灰)\nMidpoint , Midpoint(中点)\nMuch Red , Much Red(高光红色)\nNegation , Negation(求非/负色)\nNegative , Negative(负色)\nOperator , Operator(操作员)\nOpposing , Opposing(相对)\nOrder By , Order By(排序依据)\nPoint #0 , Point #0(点0)\nPoint #1 , Point #1(点1)\nPoint #2 , Point #2(点2)\nPoint #3 , Point #3(点3)\nPole Lat , Pole Lat(极点)\nPosition , Position(位置)\nRecovery , Recovery(恢复)\nSampling , Sampling(采样)\nSegments , Segments(段数)\nSharpest , Sharpest(最锐利)\nSize (%) , Size (%)(尺寸(%))\nSome Key , Some Key(中间调灰色)\nSome Red , Some Red(中间调红色)\nSpecular , Specular(镜面反射)\nStep (%) , Step (%)(步 (%))\nStrength , Strength(强度)\nSublevel , Sublevel(子级别)\nSymmetry , Symmetry(对称)\nThinness , Thinness(宽度)\nThinning , Thinning(细化)\nV Cutoff , V Cutoff(V 界限)\nVariance , Variance(方差)\nVelocity , Velocity(速度)\nX Center , X Center(X中心)\nX-Border , X-Border(X边界)\nX-Center , X-Center(X中心)\nX-Factor , X-Factor(X-系数)\nX-Motion , X-Motion(X-移动)\nX-Offset , X-Offset(X-偏移)\nX-Shadow , X-Shadow(X-阴影)\nXY-Light , XY-Light(XY-光)\nY Center , Y Center(Y中心)\nY-Border , Y-Border(Y边界)\nY-Center , Y-Center(Y中心)\nY-Factor , Y-Factor(Y-系数)\nY-Motion , Y-Motion(Y-移动)\nY-Offset , Y-Offset(Y-偏移)\nY-Shadow , Y-Shadow(Y-阴影)\nZ-Motion , Z-Motion(Z-移动)\nZ-Offset , Z-Offset(Z-偏移)\nZoom (%) , Zoom (%)(缩放(%))\nZoom Out , Zoom Out(缩小)\n2 Noise , 2 Noise(2噪音)\n2x Type , 2x Type(2x类型)\n7. Mode , 7. Mode(7.模式)\nA-Value , A-Value(A-值)\nAzimuth , Azimuth(方位角)\nBalance , Balance(平衡)\nCharset , Charset(字符集)\nClarity , Clarity(清晰度)\nCloseup , Closeup(特写)\nColor 1 , Color 1(颜色1)\nColor 2 , Color 2(颜色2)\nColor 3 , Color 3(颜色3)\nColor 4 , Color 4(颜色4)\nCut Low , Cut Low(切低)\nDensity , Density(密度)\nDetails , Details(细节)\nFilling , Filling(填充)\nFormula , Formula(公式)\nHue (%) , Hue (%)(色相(%))\nInverse , Inverse(倒数)\nLight-X , Light-X(光-X)\nLight-Y , Light-Y(光-Y)\nLight-Z , Light-Z(光-Z)\nLN Size , LN Size(LN尺寸)\nMagenta , Magenta(品红)\nMapping , Mapping(制图)\nMask By , Mask By(遮罩)\nMasking , Masking(遮罩)\nOctaves , Octaves(倍频程)\nOpacity , Opacity(不透明度)\nOutline , Outline(轮廓)\nPattern , Pattern(模式)\nPoint 1 , Point 1(点1)\nPoint 2 , Point 2(点2)\nPreview , Preview(预习)\nQuality , Quality(质量)\nRecover , Recover(恢复)\nRepeats , Repeats(重复)\nSat Top , Sat Top(最高饱和度)\nScale 1 , Scale 1(尺寸1)\nScale 2 , Scale 2(尺寸2)\nSectors , Sectors(扇形数量)\nShading , Shading(阴影)\nShadows , Shadows(阴影)\nSharpen , Sharpen(锐化)\nShivers , Shivers(颤抖)\nSigma 1 , Sigma 1(适马1)\nSigma 2 , Sigma 2(适马2)\nSpacing , Spacing(间距)\nStrands , Strands(股线)\nUntwist , Untwist(解开)\nWave(s) , Wave(s)(波浪)\nWavelet , Wavelet(小波)\nX-Angle , X-Angle(X-角度)\nX-Light , X-Light(X-光)\nX-Ratio , X-Ratio(X-比率)\nX-Scale , X-Scale(X-缩放)\nX-Shift , X-Shift(X-移动)\nX-Tiles , X-Tiles(X-块数)\nY-Angle , Y-Angle(Y-角度)\nY-Light , Y-Light(Y-光)\nY-Ratio , Y-Ratio(Y-比率)\nY-Scale , Y-Scale(Y-缩放)\nY-Shift , Y-Shift(Y-位移)\nY-Tiles , Y-Tiles(Y-块数)\nZ-Angle , Z-Angle(Z-角度)\nZ-Light , Z-Light(Z-光)\nZ-Range , Z-Range(Z-范围)\nZ-Scale , Z-Scale(Z-尺寸)\nZoom In , Zoom In(放大)\nAction , Action(动作)\nAmount , Amount(量)\nAspect , Aspect(宽高比)\nBlacks , Blacks(黑色)\nBlob 9 , Blob 9(斑点9)\nBottom , Bottom(底部)\nBright , Bright(亮度)\nCenter , Center(中心)\nCentre , Centre(中心)\nChroma , Chroma(色度)\nCoarse , Coarse(粗糙)\nColors , Colors(颜色)\nCycles , Cycles(周期数)\nDarken , Darken(变暗)\nDeform , Deform(变形)\nDetail , Detail(详情)\nDilate , Dilate(扩张)\nFactor , Factor(系数)\nFading , Fading(衰减)\nFine 2 , Fine 2(好2)\nFocale , Focale(焦点)\nFrames , Frames(帧数)\nGlobal , Global(全局)\nHeight , Height(高度)\nInterp , Interp(插值)\nInvert , Invert(反转)\nKernel , Kernel(核心)\nLength , Length(长度)\nLevels , Levels(等级)\nLittle , Little(低饱和度)\nLookup , Lookup(查找)\nMedium , Medium(中等)\nMethod , Method(方法)\nMetric , Metric(公制)\nMirror , Mirror(镜像)\nModulo , Modulo(模数)\nNegate , Negate(否定)\nNumber , Number(数)\nOrigin , Origin(起源)\nOutput , Output(输出)\nPeriod , Period(期)\nPetals , Petals(花瓣数)\nPoints , Points(点数)\nPreset , Preset(预设值)\nRadius , Radius(半径)\nReject , Reject(拒绝)\nRelief , Relief(浮雕)\nRepeat , Repeat(重复)\nRotate , Rotate(旋转)\nScales , Scales(缩放)\nShadow , Shadow(阴影)\nShapes , Shapes(形状)\nSize-1 , Size-1(尺寸-1)\nSize-2 , Size-2(尺寸-2)\nSize-3 , Size-3(尺寸-3)\nSmooth , Smooth(光滑)\nSoften , Soften(软化)\nSpread , Spread(扩散)\nTarget , Target(目标)\nTrunks , Trunks(皮箱)\nValues , Values(价值观)\nWhites , Whites(白人)\nX-Size , X-Size(X-尺寸)\nY-Size , Y-Size(Y-尺寸)\nYellow , Yellow(黄色)\nZ-Size , Z-Size(Z-尺寸)\n3 Mix , 3 Mix(3混合)\nAngle , Angle(角度)\nBlack , Black(黑色)\nBlend , Blend(混合)\nBoost , Boost(促进)\nClean , Clean(清理)\nColor , Color(颜色)\nDenim , Denim(牛仔布)\nDepth , Depth(深度)\nForme , Forme(为了我)\nGamma , Gamma(伽玛)\nGrain , Grain(颗粒)\nGreen , Green(绿色)\nInput , Input(输入项)\nIters , Iters(迭代)\nLarge , Large(大)\nLayer , Layer(层)\nLevel , Level(等级)\nLight , Light(光)\nLines , Lines(线性[Lines])\nMax-T , Max-T(最大-T)\nMetal , Metal(金属)\nMin-T , Min-T(最小-T)\nMixer , Mixer(混合器)\nMIxer , MIxer(混合器)\nOrder , Order(排序方式 )\nPaint , Paint(涂料)\nPatch , Patch(补丁)\nPhase , Phase(相)\nPower , Power(功率)\nQuick , Quick(快)\nRange , Range(范围)\nRatio , Ratio(宽高比)\nRemix , Remix(混合)\nRendu , Rendu(渲染)\nRight , Right(直接)\nScale , Scale(尺寸)\nShade , Shade(阴影)\nShape , Shape(形状)\nShift , Shift(转移)\nSigma , Sigma(西格玛)\nSpace , Space(空间)\nSpeed , Speed(速度)\nSteps , Steps(步数)\nStyle , Style(样式)\nTiles , Tiles(块数)\nValue , Value(明度)\nWhite , White(白色)\nWidth , Width(宽度)\nX-Max , X-Max(X-最大)\nX-Min , X-Min(X-最小)\nArea , Area(区域)\nAxis , Axis(轴)\nBias , Bias(偏压)\nBlue , Blue(蓝色)\nBlur , Blur(模糊)\nCode , Code(码)\nCrop , Crop(裁剪)\nCyan , Cyan(青色)\nFast , Fast(快速)\nFine , Fine(精细)\nGain , Gain(增加)\nGlow , Glow(辉光)\nKeep , Keep(保持)\nLeft , Left(剩下)\nLine , Line(线)\nLuma , Luma(亮度)\nMask , Mask(蒙版)\nMode , Mode(模式)\nMost , Most(最高饱和度)\nMuch , Much(高饱和度)\nNone , None(无)\nSeed , Seed(种子)\nSize , Size(尺寸)\nSome , Some(中饱和度)\nSpan , Span(跨度)\nStep , Step(步)\nText , Text(文本)\nTilt , Tilt(倾斜)\nTime , Time(时间)\nToes , Toes(脚趾)\nType , Type(类型)\nB&W , B&W(黑白)\nCut , Cut(切割)\nExp , Exp(经验值)\nFOV , FOV(视场)\nHue , Hue(色相)\nMap , Map(地图)\nMax , Max(最大)\nMid , Mid(中)\nMin , Min(最小)\nRcx , Rcx(接收)\nRed , Red(红色)\nOn , On(上)\nUp , Up(向上)\nZero , Zero(零)\nYIQ [luma] , YIQ [luma](YIQ [亮度])\nYIQ [Luma] , YIQ [Luma](YIQ [亮度])\nYIQ [chromas] , YIQ [chromas](YIQ [色度])\nYIQ [Chromas] , YIQ [Chromas](YIQ [色度])\nYCbCr [red Chrominance] , YCbCr [red Chrominance](YCbCr [红色色度])\nYCbCr [Red Chrominance] , YCbCr [Red Chrominance](YCbCr [红色色度])\nYCbCr [luminance] , YCbCr [luminance](YCbCr [亮度])\nYCbCr [Luminance] , YCbCr [Luminance](YCbCr [亮度])\nYCbCr [green Chrominance] , YCbCr [green Chrominance](YCbCr [绿色色度])\nYCbCr [Green Chrominance] , YCbCr [Green Chrominance](YCbCr [绿色色度])\nYCbCr [blue-Red Chrominances] , YCbCr [blue-Red Chrominances](YCbCr [蓝-红 色度])\nYCbCr [Blue-Red Chrominances] , YCbCr [Blue-Red Chrominances](YCbCr [蓝-红 色度])\nYCbCr [blue Chrominance] , YCbCr [blue Chrominance](YCbCr [蓝色色度])\nYCbCr [Blue Chrominance] , YCbCr [Blue Chrominance](YCbCr [蓝色色度])\nYCbCr (Mixed) , YCbCr (Mixed)(YCbCr (混合))\nYCbCr (Distinct) , YCbCr (Distinct)(YCbCr (明显))\nY-Axis Then X-Axis , Y-Axis Then X-Axis(Y轴然后X轴)\nY-Axis , Y-Axis(Y轴)\nXY-Axis , XY-Axis(XY轴)\nXy-Axes , Xy-Axes(XY轴)\nXY-Axes , XY-Axes(XY轴)\nXor , Xor(异或)\nX-Axis Then Y-Axis , X-Axis Then Y-Axis(X轴然后Y轴)\nX-Axis , X-Axis(X轴)\nWrap , Wrap(包裹)\nWireframe , Wireframe(线框)\nWhiter Whites , Whiter Whites(较白的白人)\nWhitening , Whitening(变白)\nWhite Walls , White Walls(白墙)\nWhite to Black , White to Black(白到黑)\nWhite on Transparent Black , White on Transparent Black(透明白底·黑字)\nWhite on Transparent , White on Transparent(透明底白线)\nWhite on Black , White on Black(黑底白线)\nWhite Dices , White Dices(白色骰子)\nWeird , Weird(异形)\nWarm Vintage , Warm Vintage(温暖的年份)\nVividlight , Vividlight(亮光)\nVivid Screen , Vivid Screen(亮色滤色)\nVivid Light , Vivid Light(亮光)\nVivid Edges* , Vivid Edges*(亮色边缘*)\nVivid Edges , Vivid Edges(亮色边缘)\nVirtual Landscape , Virtual Landscape(虚拟景观)\nVery High (Even Slower) , Very High (Even Slower)(很高(很慢))\nVery High , Very High(很高)\nVertical Stripes , Vertical Stripes(垂直条纹)\nVertical Array , Vertical Array(垂直阵列)\nVertical , Vertical(垂直)\nVelvetia , Velvetia(天鹅绒)\nVan Gogh: Wheat Field with Crows , Van Gogh: Wheat Field with Crows(梵高:乌鸦的麦田)\nVan Gogh: The Starry Night , Van Gogh: The Starry Night(梵高:星夜)\nVan Gogh: Irises , Van Gogh: Irises(梵高:鸢尾花)\nVan Gogh: Almond Blossom , Van Gogh: Almond Blossom(梵高:杏仁花)\nUser-Defined (Bottom Layer) , User-Defined (Bottom Layer)(用户自定义(底层))\nUppercase Letters , Uppercase Letters(大写字母)\nUpper Layer Is the Top Layer for All Blends , Upper Layer Is the Top Layer for All Blends(上层是所有混合的顶层)\nUp-Right , Up-Right(右上)\nUp-Left , Up-Left(左上)\nUnsharp Mask , Unsharp Mask(锐化蒙版)\nUnknown , Unknown(未知)\nUniform , Uniform(均匀)\nUnderwater , Underwater(水下的)\nUnaligned Images , Unaligned Images(未对齐的图像)\nTwo-By-Two , Two-By-Two(二乘二)\nTwo Threads , Two Threads(两线程)\nTwo Layers , Two Layers(两层)\nTurbulence 2 , Turbulence 2(湍流2)\nTritanopia , Tritanopia(黄蓝色盲)\nTritanomaly , Tritanomaly(蓝黄色弱)\nTrig-6 , Trig-6(三角6)\nTrig-4 , Trig-4(三角4)\nTriangular Vb , Triangular Vb(三角形 Vb)\nTriangular Va , Triangular Va(三角形 Va)\nTriangular Hb , Triangular Hb(三角形 Hb)\nTriangular Ha , Triangular Ha(三角形 Ha)\nTriangles (Outline) , Triangles (Outline)(三角形(轮廓))\nTriangles , Triangles(三角形)\nTriangle , Triangle(三角形)\nTransparent Skin , Transparent Skin(透明皮肤)\nTransparent on White , Transparent on White(白底透明线)\nTransparent on Black , Transparent on Black(黑底透明线)\nTransparent Color , Transparent Color(透明色)\nTransparent Black & White , Transparent Black & White(透明黑白)\nTransparent , Transparent(透明)\nTransition Map , Transition Map(过渡图)\nTout , Tout(out)\nTotal Variation , Total Variation(总变化)\nTorus , Torus(圆环)\nTop Right , Top Right(右上)\nTop Left , Top Left(左上)\nTop Layer , Top Layer(上层)\nTop , Top(顶部)\nTone Mapping Soft , Tone Mapping Soft(色调映射-软)\nTone Mapping Fast , Tone Mapping Fast(色调映射-快速)\nTo Nadir / Zenith , To Nadir / Zenith(转为 底/顶 视图)\nTo Equirectangular , To Equirectangular(转为等分矩形视图)\nTiny , Tiny(极小)\nTimed Image , Timed Image(定时图像)\nTikhonov , Tikhonov(季霍诺夫)\nTic-Tac-Toe , Tic-Tac-Toe(井字游戏)\nThree Layers , Three Layers(三层)\nThinning (Slow) , Thinning (Slow)(细化(慢))\nThelypteridaceae , Thelypteridaceae(伞形科)\nThe Game of Life , The Game of Life(人生游戏)\nTen Layers , Ten Layers(十层)\nTangent , Tangent(切线)\nSwap Radius / Angle , Swap Radius / Angle(交换半径/角度)\nSwap , Swap(交换)\nSubtractive , Subtractive(减法)\nSubtract , Subtract(减去)\nStudio , Studio(工作室)\nStrong , Strong(强力)\nStretch , Stretch(伸展)\nStraight , Straight(直线)\nStars (Outline) , Stars (Outline)(星星(轮廓))\nStardust , Stardust(星尘)\nStar , Star(星型)\nStandard Deviation , Standard Deviation(标准偏差)\nStandard [No Scan] , Standard [No Scan](标准[不扫描])\nStandard (256) , Standard (256)(标准(256))\nStandard , Standard(标准)\nSquares (Outline) , Squares (Outline)(正方形(轮廓))\nSquares , Squares(方格)\nSquared-Euclidean , Squared-Euclidean(平方欧几里得)\nSquare 2 , Square 2(正方形 2-◇)\nSquare 1 , Square 1(正方形 1-□)\nSquare (Inv.) , Square (Inv.)(正方形(反转))\nSquare , Square(正方形)\nSplit Brightness / Colors , Split Brightness / Colors(分开亮度/颜色)\nSplines , Splines(曲线)\nSpline Editor , Spline Editor(样条编辑器)\nSpline B6 , Spline B6(样条插值B6)\nSpline B5 , Spline B5(样条插值B5)\nSpline B4 , Spline B4(样条插值B4)\nSpline B3 , Spline B3(样条插值B3)\nSpline B2 , Spline B2(样条插值B2)\nSpline B1 , Spline B1(样条插值B1)\nSolarize , Solarize(曝光过度)\nSoftdodge , Softdodge(柔和减淡)\nSoft Light , Soft Light(柔光)\nSoft Glow , Soft Glow(柔光)\nSoft Dodge , Soft Dodge(柔和减淡)\nSoft Burn , Soft Burn(柔和加深)\nSoft  Light , Soft  Light(柔光)\nSoft , Soft(柔软的)\nSmooth Only , Smooth Only(仅平滑)\nSmooth Light , Smooth Light(柔光)\nSmooth Dark , Smooth Dark(柔暗)\nSmart , Smart(智能)\nSmall (Faster) , Small (Faster)(小 (较快))\nSmall , Small(小)\nSlow Recovery , Slow Recovery(缓慢恢复)\nSlow (Accurate) , Slow (Accurate)(缓慢(准确))\nSkin Tone Mask , Skin Tone Mask(肤色蒙版)\nSkin Tone Colors , Skin Tone Colors(肤色颜色)\nSkin Mask , Skin Mask(皮肤遮罩)\nSixteen Threads , Sixteen Threads(十六线程)\nSix Layers , Six Layers(六层)\nSinusoidal , Sinusoidal(正弦曲线)\nSingle Opaque Shapes Over Transp. BG , Single Opaque Shapes Over Transp. BG(透明背景上的单一不透明形状)\nSingle Layer , Single Layer(单层)\nSingle Custom Depth Map , Single Custom Depth Map(单个自定义深度图)\nSingle (Merged) , Single (Merged)(单层(合并))\nSine+ , Sine+(正弦+)\nSine , Sine(正弦波)\nSilver , Silver(银)\nSierpinksi Design , Sierpinksi Design(谢尔宾斯基三角形)\nSide by Side , Side by Side(并排)\nShrink , Shrink(收缩)\nSharpening Layer , Sharpening Layer(锐化层)\nSharpened Areas Only , Sharpened Areas Only(仅尖锐区域)\nShapeaverage , Shapeaverage(形状平均)\nShape Min0 , Shape Min0(形状最小值0)\nShape Min , Shape Min(形状最小值)\nShape Median0 , Shape Median0(形状中间带0)\nShape Median , Shape Median(形状中间带)\nShape Max0 , Shape Max0(形状最大值0)\nShape Max , Shape Max(形状最大值)\nShape Average0 , Shape Average0(形状平均值0)\nShape Average , Shape Average(形状平均值)\nShape Area Min0 , Shape Area Min0(形状区域最小0)\nShape Area Min , Shape Area Min(形状区域最小)\nShape Area Max0 , Shape Area Max0(形状区域最大0)\nShape Area Max , Shape Area Max(形状区域最大)\nShadebobs , Shadebobs(影子鲍勃)\nSeventies Magazine , Seventies Magazine(七十年代杂志)\nSeven Layers , Seven Layers(七层)\nSet Aspect Only , Set Aspect Only(仅设置长宽比)\nSequence X8 , Sequence X8(顺序X8)\nSequence X6 , Sequence X6(顺序X6)\nSequence X4 , Sequence X4(顺序X4)\nSelf Image , Self Image(本图)\nSelf , Self(自身)\nSelective Gaussian , Selective Gaussian(选择性高斯平滑)\nSelected Mask , Selected Mask(所选遮罩)\nSelected Frame , Selected Frame(选定框架)\nSelected Colors , Selected Colors(选定的颜色)\nSecant , Secant(割线法)\nScreen , Screen(滤色)\nScr , Scr(滤色)\nScaled , Scaled(缩放比例)\nScale RGB , Scale RGB(缩放RGB)\nScale CMYK , Scale CMYK(缩放CMYK)\nScalar , Scalar(标量)\nSave CLUT as .Cube or .Png File , Save CLUT as .Cube or .Png File(将CLUT另存为.Cube或.Png文件)\nSans , Sans(无)\nSame Axis , Same Axis(同轴)\nSalt and Pepper , Salt and Pepper(椒盐)\nRYB [Yellow] , RYB [Yellow](RYB [黄色])\nRYB [Red] , RYB [Red](RYB [红色])\nRYB [Blue] , RYB [Blue](RYB [蓝色])\nRYB [All] , RYB [All](RYB [全部])\nRunge-Kutta , Runge-Kutta(龙格-库塔)\nRubik , Rubik(魔方)\nRow by Row , Row by Row(逐行)\nRound , Round(圆形)\nRotate 90 Deg. , Rotate 90 Deg.(旋转90度)\nRotate 270 Deg. , Rotate 270 Deg.(旋转270度)\nRotate 180 Deg. , Rotate 180 Deg.(旋转180度)\nRobert Cross 2 , Robert Cross 2(罗伯特·克罗斯2)\nRobert Cross 1 , Robert Cross 1(罗伯特·克罗斯1)\nRigid , Rigid(不变形)\nRight Stream Only , Right Stream Only(仅右流)\nRight Foreground , Right Foreground(正确的前景)\nRight Eye View , Right Eye View(右眼视图)\nRight Diagonal Foreground , Right Diagonal Foreground(右对角前景)\nRight Diagonal  Foreground , Right Diagonal  Foreground(右对角前景)\nRice , Rice(稻谷噪点)\nRGBA Image (Updatable / 1 Layer) , RGBA Image (Updatable / 1 Layer)(RGBA图像(可更新/ 1层))\nRGBA Image (Full-Transparency / 1 Layer) , RGBA Image (Full-Transparency / 1 Layer)(RGBA图像(全透明/ 1层))\nRGBA Foreground + Background (2 Layers) , RGBA Foreground + Background (2 Layers)(RGBA前景+背景(2层))\nRGBA [alpha] , RGBA [alpha](RGBA [透明])\nRGBA [Alpha] , RGBA [Alpha](RGBA [透明])\nRGBA [all] , RGBA [all](RGBA [全部])\nRGBA [All] , RGBA [All](RGBA [全部])\nRGB[A] , RGB[A](RGB [A])\nRGB Quantization , RGB Quantization(RGB量化)\nRGB Image + Binary Mask (2 Layers) , RGB Image + Binary Mask (2 Layers)(RGB图像+二进制蒙版(2层))\nRGB [red] , RGB [red](RGB [红色])\nRGB [Red] , RGB [Red](RGB [红色])\nRGB [green] , RGB [green](RGB [绿色])\nRGB [Green] , RGB [Green](RGB [绿色])\nRGB [blue] , RGB [blue](RGB [蓝色])\nRGB [Blue] , RGB [Blue](RGB [蓝色])\nRGB [all] , RGB [all](RGB [全部])\nRGB [All] , RGB [All](RGB [全部])\nReverse Pow , Reverse Pow(逆幂)\nReverse Mod , Reverse Mod(逆模)\nReverse Bytes , Reverse Bytes(反向字节)\nReverse Bits , Reverse Bits(反转位)\nRetouched Image Final , Retouched Image Final(修饰图像决赛)\nRetouched Image Basic , Retouched Image Basic(修饰的图像基本)\nRetouched Image , Retouched Image(修饰图像)\nRetouched Areas Only , Retouched Areas Only(仅修饰区域)\nRetouched and Sharpened Areas , Retouched and Sharpened Areas(修饰和锐化的区域)\nRetouch Layer , Retouch Layer(修饰图层)\nResult Image , Result Image(最终图像)\nReplaced Color , Replaced Color(更换颜色)\nReplace With White , Replace With White(换成白色)\nReplace Source by Target , Replace Source by Target(按目标替换源)\nReplace Layer with CLUT , Replace Layer with CLUT(用CLUT替换图层)\nReplace (Sharpest) , Replace (Sharpest)(替换(清晰))\nReplace , Replace(替换)\nRepeat [Memory Consuming!] , Repeat [Memory Consuming!](重复[消耗内存!])\nRendu En Haut , Rendu En Haut(渲染到顶部)\nRendu En Bas , Rendu En Bas(渲染到底部)\nRendu a Gauche , Rendu a Gauche(渲染到左侧)\nRendu a Droite , Rendu a Droite(渲染到右侧)\nRender on White Areas , Render on White Areas(在白色区域上渲染)\nRender on Dark Areas , Render on Dark Areas(在黑暗区域渲染)\nRejected Mask , Rejected Mask(拒绝遮罩)\nRejected Colors , Rejected Colors(拒绝的颜色)\nReflect , Reflect(反射)\nRed-Green , Red-Green(红绿色)\nRed Chrominance , Red Chrominance(红色色度)\nRectangle , Rectangle(长方形)\nReconstruct From Previous Frames , Reconstruct From Previous Frames(从以前的帧重建)\nRecompose , Recompose(重新组合)\nRayons Couleurs ABCDEFG , Rayons Couleurs ABCDEFG(彩色光线 ABCDEFG)\nRayons Couleurs ABCDEF , Rayons Couleurs ABCDEF(彩色光线 ABCDEF)\nRayons Couleurs ABCDE , Rayons Couleurs ABCDE(彩色光线 ABCDE)\nRayons Couleurs ABCD , Rayons Couleurs ABCD(彩色光线 ABCD)\nRayons Couleurs ABC , Rayons Couleurs ABC(彩色光线 ABC)\nRayons Couleurs AB , Rayons Couleurs AB(彩色光线 AB)\nRandomized , Randomized(随机化)\nRandom [non-Transparent] , Random [non-Transparent](随机[非透明])\nRadial , Radial(径向的)\nQuadratic , Quadratic(二次方)\nPyramid , Pyramid(棱锥)\nProtanopia , Protanopia(红色盲)\nProtanomaly , Protanomaly(红色弱)\nProcedural , Procedural(程序性)\nProbability Map , Probability Map(概率图)\nPre-Defined , Pre-Defined(预定义)\nPow , Pow(超过)\nPositive , Positive(正)\nPortrait , Portrait(肖像)\nPollock: Summertime Number 9A , Pollock: Summertime Number 9A(波洛克:夏季编号9A)\nPollock: Convergence , Pollock: Convergence(波洛克:收敛)\nPoisson , Poisson(泊松噪点)\nPlasma Effect , Plasma Effect(等离子效应)\nPlane , Plane(平面)\nPixel Values , Pixel Values(像素值)\nPinlight , Pinlight(针灯)\nPin Light , Pin Light(点光)\nPicasso: The Reservoir - Horta De Ebro , Picasso: The Reservoir - Horta De Ebro(毕加索:水库-奥尔塔爱布罗)\nPicasso: Seated Woman , Picasso: Seated Woman(毕加索:坐着的女人)\nPicasso: Les Demoiselles D'Avignon , Picasso: Les Demoiselles D'Avignon(毕加索:亚维农的少女)\nPicabia: Udnie , Picabia: Udnie(皮卡比亚:乌德尼)\nPhong , Phong(冯氏着色)\nPerserve Luminance , Perserve Luminance(保持亮度)\nPeriodic , Periodic(周期)\nPentagon , Pentagon(五边形)\nPea Soup , Pea Soup(豌豆汤)\nPCA Transfer , PCA Transfer(PCA转移)\nPaintstroke , Paintstroke(绘画描边)\nPacman , Pacman(吃豆子)\nOverlay , Overlay(叠加)\nOutward , Outward(向外)\nOutside-In , Outside-In(由外向内)\nOutside , Outside(外)\nOutlined , Outlined(轮廓线)\nOuter , Outer(外)\nOrwo NP20-GDR , Orwo NP20-GDR(奥沃NP20-GDR)\nOrton Glow , Orton Glow(奥顿微光)\nOriginal - Opening , Original - Opening(原始-开放)\nOriginal - Erosion , Original - Erosion(原始-侵蚀)\nOriginal - (Opening + Closing)/2 , Original - (Opening + Closing)/2(原始-(开放/关闭)/2)\nOriginal , Original(原版)\nOr , Or(或)\nOptimized Lateral Inhibition , Optimized Lateral Inhibition(优化的侧向抑制)\nOpening , Opening(开放)\nOpaque Skin , Opaque Skin(不透明的皮肤)\nOpaque Regions on Top Layer , Opaque Regions on Top Layer(顶层不透明区域)\nOpaque Pixels , Opaque Pixels(不透明像素)\nOne Thread , One Thread(单线程)\nOne Layer per Single Region , One Layer per Single Region(每个区域一层)\nOne Layer per Single Color , One Layer per Single Color(每种颜色一层)\nOne Layer , One Layer(一层)\nOld Method - Slowest , Old Method - Slowest(旧方法-最慢)\nOff , Off(关)\nOctogon , Octogon(八角形)\nOctagonal , Octagonal(八角形)\nOctagon , Octagon(八边形)\nNothing , Nothing(没有)\nNormalize Luma , Normalize Luma(标准化亮度)\nNormal Output , Normal Output(正常输出)\nNormal Map , Normal Map(法线贴图)\nNormal , Normal(正常)\nNone- Skip , None- Skip(无-跳过)\nNon-Rigid , Non-Rigid(可变形)\nNon / No , Non / No(否)\nNoise , Noise(噪点)\nNo-Skip , No-Skip(无-跳过)\nNo Rescaling , No Rescaling(没有缩放)\nNo Recovery , No Recovery(不恢复)\nNo Masking , No Masking(没有蒙版)\nNine Layers , Nine Layers(九层)\nNewton , Newton(牛顿法)\nNew Curves [Interactive] , New Curves [Interactive](新曲线[交互式])\nNeumann , Neumann(诺依曼)\nNeat Merge , Neat Merge(有序合并)\nNearest Neighbor , Nearest Neighbor(相邻)\nNearest , Nearest(最近)\nName , Name(名称)\nNaif , Naif(天真)\nMunch: The Scream , Munch: The Scream(蒙克:尖叫)\nMultiply , Multiply(正片叠底(相乘))\nMultiple Layers , Multiple Layers(多层)\nMultiple Colored Shapes Over Transp. BG , Multiple Colored Shapes Over Transp. BG(透明背景上的多个颜色形状)\nMul , Mul(正片叠底(相乘))\nMotion-Compensated , Motion-Compensated(运动补偿)\nMorphological Closing , Morphological Closing(形态闭合)\nMorphological - Fastest Sharpest Output , Morphological - Fastest Sharpest Output(形态-最快,最清晰的输出)\nMoody , Moody(抑郁)\nMono-Directional , Mono-Directional(单向)\nMonet: Wheatstacks - End of Summer , Monet: Wheatstacks - End of Summer(莫奈:小麦堆-夏末)\nMonet: Water-Lily Pond , Monet: Water-Lily Pond(莫奈:睡莲池)\nMonet: San Giorgio Maggiore at Dusk , Monet: San Giorgio Maggiore at Dusk(莫奈:黄昏的圣乔治·马焦雷)\nMondrian: Gray Tree , Mondrian: Gray Tree(蒙德里安:灰色树)\nMondrian: Evening; Red Tree , Mondrian: Evening; Red Tree(蒙德里安:晚上-红树)\nMondrian: Composition in Red-Yellow-Blue , Mondrian: Composition in Red-Yellow-Blue(蒙德里安:红黄蓝组成)\nModern Film , Modern Film(现代电影)\nMod , Mod(模数或余数)\nMirror-Y , Mirror-Y(镜像-Y)\nMirror-XY , Mirror-XY(镜像-XY)\nMirror-X , Mirror-X(镜像-X)\nMirror Y , Mirror Y(镜像反转Y)\nMirror X , Mirror X(镜像反转X)\nMinimum Dimension , Minimum Dimension(最小尺寸)\nMinimum , Minimum(最低要求)\nMinimal Path , Minimal Path(最小路径)\nMinesweeper , Minesweeper(扫雷车)\nMid-Tones , Mid-Tones(中间调)\nMid Noise , Mid Noise(中等噪点)\nMicro/macro Details  Adjusted , Micro/macro Details  Adjusted(微观/宏观细节调整)\nMerge Brightness / Colors , Merge Brightness / Colors(合并亮度/颜色)\nMedium Scale (Smoothed) , Medium Scale (Smoothed)(平均比例(平滑))\nMedium Scale (Original) , Medium Scale (Original)(平均比例(原始))\nMedium Frequency Layer , Medium Frequency Layer(中频层)\nMedian (beware: Memory-Consuming!) , Median (beware: Memory-Consuming!)(中间值(请注意：内存消耗！))\nMedian , Median(中位数)\nMean Curvature , Mean Curvature(平均曲率)\nMean Color , Mean Color(平均颜色)\nMaximum Value , Maximum Value(最大值)\nMaximum Dimension , Maximum Dimension(最大尺寸)\nMaximum , Maximum(最大值)\nMath Symbols , Math Symbols(数学符号)\nMasked Image , Masked Image(应用蒙版后的图像)\nMask as Bottom Layer , Mask as Bottom Layer(蒙版为底层)\nMask + Background , Mask + Background(蒙版+背景)\nMasculine , Masculine(男性)\nManual Controls , Manual Controls(手动控制)\nManual , Manual(手动)\nManhattan , Manhattan(曼哈顿)\nMandelbrot Explorer , Mandelbrot Explorer(Mandelbrot资源管理器)\nMandelbrot , Mandelbrot(曼德布罗特)\nMagenta-Yellow , Magenta-Yellow(洋红色-黄色)\nLuminosity from Color , Luminosity from Color(颜色亮度)\nLuminance Only , Luminance Only(仅亮度)\nLuminance , Luminance(光度/亮度)\nLuma Noise , Luma Noise(亮度噪点)\nLowres CLUT , Lowres CLUT(低分辨率CLUT)\nLowercase Letters , Lowercase Letters(小写字母)\nLower Layer Is the Bottom Layer for All Blends , Lower Layer Is the Bottom Layer for All Blends(下层是所有混合的底层)\nLow Key , Low Key(低调)\nLow Frequency Layer , Low Frequency Layer(低频层)\nLow , Low(低)\nLock Source , Lock Source(锁源)\nLocal  Normalisation , Local  Normalisation(局部标准化)\nLissajous Spiral , Lissajous Spiral(利萨如螺旋)\nLinf-Norm , Linf-Norm(Linf-范数)\nLines (256) , Lines (256)(线性[Lines](256))\nLineart + Extrapolated Colors , Lineart + Extrapolated Colors(线稿+外推颜色)\nLineart + Colors , Lineart + Colors(线稿+颜色)\nLineart + Color Spots + Extrapolated Colors , Lineart + Color Spots + Extrapolated Colors(线稿+色点+外推颜色)\nLineart + Color Spots , Lineart + Color Spots(线稿+色点)\nLineart , Lineart(线条艺术)\nLinearlight , Linearlight(线性光)\nLinearburn , Linearburn(线性燃烧)\nLinear RGB [red] , Linear RGB [red](线性RGB [红色])\nLinear RGB [Red] , Linear RGB [Red](线性RGB [红色])\nLinear RGB [green] , Linear RGB [green](线性RGB [绿色])\nLinear RGB [Green] , Linear RGB [Green](线性RGB [绿色])\nLinear RGB [blue] , Linear RGB [blue](线性RGB [蓝色])\nLinear RGB [Blue] , Linear RGB [Blue](线性RGB [蓝色])\nLinear RGB [all] , Linear RGB [all](线性RGB [全部])\nLinear RGB [All] , Linear RGB [All](线性RGB [全部])\nLinear RGB , Linear RGB(线性RGB)\nLinear Light , Linear Light(线性光)\nLinear Burn , Linear Burn(线性加深)\nLinear , Linear(线性)\nLighty Smooth , Lighty Smooth(轻柔光滑)\nLighter , Lighter(较亮)\nLighten , Lighten(变亮)\nLight Motive , Light Motive(亮部)\nLight Effect , Light Effect(灯光效果)\nLeft Stream Only , Left Stream Only(仅左流)\nLeft Foreground , Left Foreground(左前景)\nLeft Diagonal Foreground , Left Diagonal Foreground(左对角前景)\nLeft and Right Image Streams , Left and Right Image Streams(左右图像流)\nLeft and Right Foreground , Left and Right Foreground(左右前景)\nLeft and Right Background , Left and Right Background(左右背景)\nLeft  Foreground , Left  Foreground(左前景)\nLch [h-Chrominance] , Lch [h-Chrominance](Lch [h-色度])\nLch [ch-Chrominances] , Lch [ch-Chrominances](Lch [ch-色度])\nLch [c-Chrominance] , Lch [c-Chrominance](Lch [c-色度])\nLayer Processing , Layer Processing(图层处理)\nLast Frame , Last Frame(最后一帧)\nLast , Last(最后)\nLarge Noise , Large Noise(大噪点)\nLanczos , Lanczos(兰佐斯)\nLAB8 , LAB8(Lab8)\nLAB-Lightness , LAB-Lightness(LAB亮度)\nLab [lightness] , Lab [lightness](Lab[亮度])\nLab [Lightness] , Lab [Lightness](Lab[亮度])\nLab [b-Chrominance] , Lab [b-Chrominance](Lab[b-色度])\nLab [ab-Chrominances] , Lab [ab-Chrominances](Lab[ab-色度])\nLab [a-Chrominance] , Lab [a-Chrominance](Lab [a-色度])\nLab (Mixed) , Lab (Mixed)(Lab (混合))\nLab (Distinct) , Lab (Distinct)(Lab (明显))\nL2-Norm , L2-Norm(L2-范数)\nL1-Norm , L1-Norm(L1-范数)\nKodak TRI-X 1600 , Kodak TRI-X 1600(柯达TRI-X 1600)\nKodak TMAX 400 , Kodak TMAX 400(柯达TMAX 400)\nKodak TMAX 3200 , Kodak TMAX 3200(柯达TMAX 3200)\nKodak 1-8 , Kodak 1-8(柯达1-8)\nKlimt: The Kiss , Klimt: The Kiss(克里姆特:吻)\nKlee: Red Waistcoat , Klee: Red Waistcoat(克利:红色背心)\nKlee: Polyphony 2 , Klee: Polyphony 2(克利:复调2)\nKlee: Oriental Pleasure Garden Anagoria , Klee: Oriental Pleasure Garden Anagoria(克利:东方游乐园安那哥里亚)\nKlee: In the Style of Kairouan , Klee: In the Style of Kairouan(克利:凯鲁万风格)\nKlee: Death and Fire , Klee: Death and Fire(克利:死亡与火灾)\nKeftales , Keftales(凯夫塔莱斯)\nKeep Aspect Ratio , Keep Aspect Ratio(保持长宽比例)\nKandinsky: Yellow-Red-Blue , Kandinsky: Yellow-Red-Blue(康定斯基：黄色-红色-蓝色)\nKandinsky: Squares with Concentric Circles , Kandinsky: Squares with Concentric Circles(康定斯基：具有同心圆的正方形)\nJulia , Julia(朱莉亚)\nJet (256) , Jet (256)(热成像[jet](256))\nJet , Jet(热成像[jet])\nJawbreaker , Jawbreaker(颚破)\nIsotropic , Isotropic(各向同性)\nInward , Inward(向内)\nInverse Radius , Inverse Radius(反向半径)\nInverse Depth Map , Inverse Depth Map(反深度图)\nInterpolate , Interpolate(插值)\nInterlace Vertical , Interlace Vertical(垂直隔行)\nInterlace Horizontal , Interlace Horizontal(水平隔行)\nInside-Out , Inside-Out(由内向外)\nInside , Inside(内)\nInsert New CLUT Layer , Insert New CLUT Layer(插入新的CLUT层)\nInner , Inner(内)\nIncreasing , Increasing(升序)\nInch , Inch(英寸)\nImpulses 9x9 , Impulses 9x9(冲量9x9)\nImpulses 7x7 , Impulses 7x7(冲量7x7)\nImpulses 5x5 , Impulses 5x5(冲量5x5)\nImage + Colors (Multi-Layers) , Image + Colors (Multi-Layers)(图像+颜色(多层))\nImage + Colors (2 Layers) , Image + Colors (2 Layers)(图像+颜色(2层))\nImage + Background , Image + Background(图片+背景)\nImage , Image(图片)\nIllumination , Illumination(照度图)\nIgnore , Ignore(忽视)\nIdentity , Identity(身分识别)\nHybrid Median - Medium Speed Softest Output , Hybrid Median - Medium Speed Softest Output(混合中值-中速输出)\nHuman 2 , Human 2(人类2)\nHuman 1 , Human 1(人1)\nHuman  2 , Human  2(人类2)\nHSV [value] , HSV [value](HSV [明度])\nHSV [Value] , HSV [Value](HSV [明度])\nHSV [saturation] , HSV [saturation](HSV [饱和度])\nHSV [Saturation] , HSV [Saturation](HSV [饱和度])\nHSV [hue] , HSV [hue](HSV [色相])\nHSV [Hue] , HSV [Hue](HSV [色相])\nHSL [lightness] , HSL [lightness](HSL [亮度])\nHSL [Lightness] , HSL [Lightness](HSL [亮度])\nHSI [intensity] , HSI [intensity](HSI[强度])\nHSI [Intensity] , HSI [Intensity](HSI[强度])\nHouseholder , Householder(豪斯霍尔德法)\nHough Transform , Hough Transform(霍夫变换)\nHot (256) , Hot (256)(暖[Hot](256))\nHot , Hot(暖[Hot])\nHorizontal Stripes , Horizontal Stripes(水平条纹)\nHorizontal Array , Horizontal Array(水平阵列)\nHorizontal , Horizontal(水平)\nHokusai: The Great Wave , Hokusai: The Great Wave(葛饰北斋:大浪)\nHistogram Transfer , Histogram Transfer(直方图转移)\nHistogram , Histogram(直方图)\nHighres CLUT , Highres CLUT(高分辨率CLUT)\nHigh Speed , High Speed(高速)\nHigh Quality , High Quality(高质量)\nHigh Key , High Key(高调)\nHigh Frequency Layer , High Frequency Layer(高频层)\nHigh (Slower) , High (Slower)(高(慢))\nHigh , High(高)\nHexagonal , Hexagonal(六角形)\nHexagon , Hexagon(六边形)\nHearts (Outline) , Hearts (Outline)(心形(轮廓))\nHardmix , Hardmix(硬混)\nHardlight , Hardlight(强光)\nHard Mix , Hard Mix(实色混合)\nHard Light , Hard Light(强光)\nHard Dark , Hard Dark(强暗)\nHard , Hard(硬)\nHanoi Tower , Hanoi Tower(河内塔)\nHalf Side  by Side , Half Side  by Side(左右各半)\nHalf Bottom/top , Half Bottom/top(下半部/上半部)\nGyroid , Gyroid(螺旋)\nGuide Recovery , Guide Recovery(引导恢复)\nGritty , Gritty(真实)\nGrid , Grid(网格)\nGrey , Grey(灰色)\nGreen-Red , Green-Red(绿红)\nGreen-Blue , Green-Blue(绿-蓝)\nGrayscale , Grayscale(灰度)\nGray , Gray(灰色)\nGraphix Colors , Graphix Colors(Graphix颜色)\nGraphic Colours , Graphic Colours(图像颜色)\nGrainmerge , Grainmerge(颗粒合并)\nGrainextract , Grainextract(颗粒)\nGrainext , Grainext(颗粒抽取)\nGrain Only , Grain Only(仅颗粒)\nGrain Merge , Grain Merge(颗粒合并)\nGrain Extract , Grain Extract(颗粒抽取)\nGradient Values , Gradient Values(渐变值)\nGradient , Gradient(梯度)\nGouraud , Gouraud(高氏着色)\nGold , Gold(金)\nGlobal Mapping , Global Mapping(全局映射)\nGlamour Glow , Glamour Glow(魅力发光)\nGenerate Random-Colors Layer , Generate Random-Colors Layer(生成随机颜色层)\nGaussian , Gaussian(高斯)\nGamma Balance , Gamma Balance(伽玛平衡)\nFull Side by Uncompressed , Full Side by Uncompressed(全侧未压缩)\nFull Side by Side Keep Width , Full Side by Side Keep Width(完整并排保持宽度)\nFull Side by Side Keep Uncompressed , Full Side by Side Keep Uncompressed(完整并排不压缩)\nFull Layer Stack -Slow!- , Full Layer Stack -Slow!-(全层堆栈-慢!-)\nFull HD Frame Packing , Full HD Frame Packing(全高清帧包装)\nFull Colors , Full Colors(全彩)\nFull Bottom/top , Full Bottom/top(完整 上/下)\nFull (Allows Multi-Layers) , Full (Allows Multi-Layers)(完整(允许多层))\nFull , Full(□完整)\nFrom Reference Color , From Reference Color(从参考色)\nFrom Input , From Input(从输入)\nFreeze , Freeze(冻结)\nFractured Clouds , Fractured Clouds(碎云)\nFractal Whirl , Fractal Whirl(分形漩涡)\nFractal Noise , Fractal Noise(分形噪点)\nFourier Filtering , Fourier Filtering(傅立叶滤波)\nFour Threads , Four Threads(四线程)\nFour Layers , Four Layers(四层)\nForward Vertical , Forward Vertical(←▶垂直分割原图在上)\nForward Horizontal , Forward Horizontal(↑▼水平分割原图在左)\nForward  Horizontal , Forward  Horizontal(↑▼水平分割原图在上)\nForward , Forward(上面)\nFlat-Shaded , Flat-Shaded(平面着色)\nFlat , Flat(平面)\nFlag (256) , Flag (256)(旗帜[Flag](256))\nFlag , Flag(旗帜[Flag])\nFive Layers , Five Layers(五层)\nFish-Eye Effect , Fish-Eye Effect(鱼眼效应)\nFirst Frame , First Frame(第一帧)\nFirst , First(第一)\nFireworks , Fireworks(烟花)\nFire Effect , Fire Effect(射击效果)\nFinest (slower) , Finest (slower)(最精细(较慢))\nFine Noise , Fine Noise(细噪点)\nFinal Image , Final Image(最终影像)\nFilled , Filled(填充)\nFast Recovery , Fast Recovery(快速恢复)\nFast Blend , Fast Blend(快速混合)\nFast (Approx.) , Fast (Approx.)(快速&#40;大概&#41;)\nFaded Print , Faded Print(褪色打印)\nExtrapolated Colors + Lineart , Extrapolated Colors + Lineart(外推颜色+线稿)\nExtrapolate Color Spots on Transparent Top Layer , Extrapolate Color Spots on Transparent Top Layer(推断透明顶层上的色斑)\nExtra  Smooth , Extra  Smooth(格外光滑)\nExponential , Exponential(指数的)\nExpired 69 , Expired 69(已过期69)\nExpand , Expand(扩大)\nExclusion , Exclusion(排除)\nEuclidean , Euclidean(欧几里得)\nErosion , Erosion(侵蚀)\nEllipsoid , Ellipsoid(椭球)\nEllipse Painting , Ellipse Painting(椭圆画)\nEllipse , Ellipse(椭圆形)\nEight Threads , Eight Threads(八线程)\nEight Layers , Eight Layers(八层)\nEdges-2 (beware: Memory-Consuming!) , Edges-2 (beware: Memory-Consuming!)(边缘-2(请注意：内存消耗！))\nEdges-1 (beware: Memory-Consuming!) , Edges-1 (beware: Memory-Consuming!)(边缘-1(请注意：内存消耗！))\nEdges-0.5 (beware: Memory-Consuming!) , Edges-0.5 (beware: Memory-Consuming!)(边缘-0.5(请注意：内存消耗！))\nEdge-Oriented , Edge-Oriented(边缘-导向)\nEdge Mask , Edge Mask(边缘蒙版)\nDusty , Dusty(灰暗)\nDuplicate Vertical , Duplicate Vertical(◀→垂直重复)\nDuplicate Top , Duplicate Top(▲↓顶部重复)\nDuplicate Right , Duplicate Right(←▶右侧重复)\nDuplicate Left , Duplicate Left(◀→左侧重复)\nDuplicate Horizontal , Duplicate Horizontal(▲↓水平重复)\nDuplicate Bottom , Duplicate Bottom(↑▼底部重复)\nDream , Dream(梦幻)\nDots , Dots(点)\nDoNothing , DoNothing(无)\nDon't Sort , Don't Sort(不要排序)\nDodge , Dodge(减淡 (颜色减淡))\nDivide , Divide(相除)\nDistance (Fast) , Distance (Fast)(稀疏(快))\nDisabled , Disabled(不使用)\nDisable , Disable(禁用)\nDirichlet , Dirichlet(狄利克雷)\nDirect , Direct(正向)\nDilation - Original , Dilation - Original(扩张-原始)\nDigits , Digits(数字)\nDiffusion , Diffusion(扩散)\nDifferent Axis , Different Axis(不同轴)\nDifference , Difference(差值)\nDif , Dif(差值/差异)\nDices with Colored Sides , Dices with Colored Sides(彩色骰子黑点数)\nDices with Colored Numbers , Dices with Colored Numbers(彩色点数黑骰子)\nDiamonds (Outline) , Diamonds (Outline)(钻石(轮廓))\nDiamonds , Diamonds(菱形)\nDiamond (Inv.) , Diamond (Inv.)(菱形(反转))\nDiamond , Diamond(菱形)\nDeuteranopia , Deuteranopia(绿色盲)\nDeuteranomaly , Deuteranomaly(绿色弱)\nDepth Maps Only , Depth Maps Only(仅深度图)\nDepth Map Only , Depth Map Only(仅深度图)\nDepth Map , Depth Map(深度图)\nDelaunay: Windows Open Simultaneously , Delaunay: Windows Open Simultaneously(德洛内:窗口同时打开)\nDelaunay: Portrait De Metzinger , Delaunay: Portrait De Metzinger(德洛内:肖像梅钦格)\nDelaunay-Oriented , Delaunay-Oriented(Delaunay-导向)\nDecreasing , Decreasing( 降序)\nDecompose , Decompose(分解)\nDecagon , Decagon(十边形)\nDaylight Scene , Daylight Scene(日光场景)\nDarker , Darker(较暗)\nDark Walls , Dark Walls(暗墙)\nDark Screen , Dark Screen(深色滤色)\nDark Pixels , Dark Pixels(暗像素)\nDark Motive , Dark Motive(暗部)\nDark Edges , Dark Edges(深色边缘)\nDark Boost , Dark Boost(暗色加强)\nDark  Motive , Dark  Motive(暗部)\nCylinder , Cylinder(圆柱)\nCut & Normalize , Cut & Normalize(剪切并标准化)\nCustom Transform , Custom Transform(自定义转换)\nCustom Style (Top Layer) , Custom Style (Top Layer)(自定义样式(上层))\nCustom Style (Bottom Layer) , Custom Style (Bottom Layer)(自定义样式(下层))\nCustom Layers , Custom Layers(自定义层)\nCustom Depth Maps Stream , Custom Depth Maps Stream(自定义深度图流)\nCustom Correction Map , Custom Correction Map(自定义校正图)\nCustom , Custom(自定义)\nCurves Previously Defined , Curves Previously Defined(先前定义的曲线)\nCurved , Curved(曲线)\nCup , Cup(杯子)\nCubic , Cubic(立方)\nCube (256) , Cube (256)(立方体[Cube](256))\nCube , Cube(立方体[Cube])\nCrosses 2 , Crosses 2(十字2-×)\nCrosses 1 , Crosses 1(圆形1-+)\nCrossed , Crossed( 交叉)\nCriterion , Criterion(标准)\nCouleurs B , Couleurs B(库勒B)\nCouleurs A , Couleurs A(库勒A)\nCosinusoidal , Cosinusoidal(余弦曲线)\nCopper , Copper(铜)\nCool (256) , Cool (256)(冷色[Cool](256))\nCool , Cool(冷色[Cool])\nContours + Flocon/Snowflake , Contours + Flocon/Snowflake(轮廓+雪花)\nConnect-Four , Connect-Four(四连)\nCone , Cone(锥体)\nComposed Layers , Composed Layers(组成层)\nComix Colors , Comix Colors(混色)\nComic Style , Comic Style(漫画风格)\nColumn by Column , Column by Column(逐列)\nColour , Colour(颜色)\nColors Only (1 Layer) , Colors Only (1 Layer)(仅颜色(1层))\nColors Only , Colors Only(仅颜色)\nColorized Image (1 Layer) , Colorized Image (1 Layer)(彩色图像(1层))\nColored Regions , Colored Regions(着色区域)\nColored on Transparent , Colored on Transparent(透明背景彩色字)\nColored on Black , Colored on Black(黑底彩字)\nColored Lineart , Colored Lineart(着色线稿)\nColored Geometry , Colored Geometry(着色几何)\nColorburn , Colorburn(颜色加深 (变暗))\nColor Spots + Lineart , Color Spots + Lineart(色点+线稿)\nColor Spots + Extrapolated Colors + Lineart , Color Spots + Extrapolated Colors + Lineart(色点+外推颜色+线稿)\nColor on White , Color on White(白底彩字)\nColor Mask , Color Mask(颜色蒙版)\nColor Doping , Color Doping(彩色掺杂)\nColor Channel  Smoothing , Color Channel  Smoothing(色彩通道平滑)\nColor Burn , Color Burn(颜色加深)\nCoarsest (faster) , Coarsest (faster)(最粗糙(更快))\nCMYK [yellow] , CMYK [yellow](CMYK [黄色])\nCMYK [Yellow] , CMYK [Yellow](CMYK [黄色])\nCMYK [magenta] , CMYK [magenta](CMYK [洋红色])\nCMYK [Magenta] , CMYK [Magenta](CMYK [洋红色])\nCMYK [cyan] , CMYK [cyan](CMYK [青色])\nCMYK [Cyan] , CMYK [Cyan](CMYK [青色])\nClosing - Original , Closing - Original(关闭-原始)\nClosing - Opening , Closing - Opening(关闭-开放)\nClosing , Closing(关闭)\nClip RGB , Clip RGB(裁剪RGB)\nClip CMYK , Clip CMYK(裁剪CMYK)\nClip , Clip(裁剪)\nCircular , Circular(圆形)\nCircles 2 , Circles 2(圆形2-○)\nCircles 1 , Circles 1(圆形1-●)\nCircles (Outline) , Circles (Outline)(圆形(轮廓))\nCircles , Circles(圆)\nCircle to Square , Circle to Square(圆到方)\nCircle (Inv.) , Circle (Inv.)(圆(反转))\nCircle , Circle(圆形)\nChroma Noise , Chroma Noise(色度噪点)\nCheckered Inverse , Checkered Inverse(↖◥棋盘格反向切割)\nCheckered , Checkered(◤↗棋盘格切割)\nChebyshev , Chebyshev(切比雪夫)\nCentral Perspective Outdoor , Central Perspective Outdoor(中央透视户外)\nCentral Perspective Indoor , Central Perspective Indoor(室内中央视野)\nCentral  Perspective Outdoor , Central  Perspective Outdoor(中央透视户外)\nCentimeter , Centimeter(厘米)\nCenter Foreground , Center Foreground(中心前景)\nCenter Background , Center Background(中心背景)\nCard Suits , Card Suits(纸牌图案)\nC[Magenta]YK , C[Magenta]YK(C [洋红色] YK)\nBy Value , By Value(通过数值)\nBy Red Component , By Red Component(根据红色成分)\nBy Red Chrominance , By Red Chrominance(根据红色色度)\nBy Luminance , By Luminance(根据亮度Luminance)\nBy Lightness , By Lightness(根据亮度Lightness)\nBy Iteration , By Iteration(通过迭代)\nBy Green Component , By Green Component(根据绿色成分)\nBy Custom Expression , By Custom Expression(通过自定义表达式)\nBy Blue Component , By Blue Component(根据蓝色成分)\nBy Blue Chrominance , By Blue Chrominance(根据蓝色色度)\nBump Map , Bump Map(凹凸贴图)\nBuilt-in Gray , Built-in Gray(内置灰色)\nBronze , Bronze(青铜)\nBrighter , Brighter(较亮)\nBright Pixels , Bright Pixels(亮像素)\nBraque: The Mandola , Braque: The Mandola(布拉克:曼陀罗)\nBraque: Little Bay at La Ciotat , Braque: Little Bay at La Ciotat(布拉克:拉西奥塔的小海湾)\nBraque: Le Viaduc à L'Estaque , Braque: Le Viaduc à L'Estaque(布拉克:埃斯塔克高架桥)\nBraque: Landscape near Antwerp , Braque: Landscape near Antwerp(布拉克:安特卫普附近的风景)\nBox , Box(正方体)\nBouncing Balls , Bouncing Balls(弹跳球)\nBottom-Right , Bottom-Right(右下)\nBottom-Left , Bottom-Left(左下)\nBottom Right , Bottom Right(右下)\nBottom Left , Bottom Left(左下)\nBottom Layer , Bottom Layer(下层)\nBottom and Top Foreground , Bottom and Top Foreground(底部和顶部前景)\nBottom and Right Foreground , Bottom and Right Foreground(底部和右前景)\nBottom and Left Foreground , Bottom and Left Foreground(底部和左前景)\nBoth , Both(二者)\nBlue-Green , Blue-Green(蓝绿)\nBlue Steel , Blue Steel(蓝钢)\nBlue Chrominance , Blue Chrominance(蓝色色度)\nBlue & Red Chrominances , Blue & Red Chrominances(蓝色和红色色度)\nBloom , Bloom(辉光)\nBloc , Bloc(团块)\nBlobs Editor , Blobs Editor(斑点编辑器)\nBlend All Layers , Blend All Layers(混合所有图层)\nBlank , Blank(空白)\nBlack to White , Black to White(黑到白)\nBlack on White , Black on White(白底黑线)\nBlack on Transparent White , Black on Transparent White(透明黑底·白字)\nBlack on Transparent , Black on Transparent(透明底黑线)\nBlack Dices , Black Dices(黑色骰子)\nBinary Digits , Binary Digits(二进制数字)\nBinary , Binary(二元)\nBilateral , Bilateral(双边)\nBidirectional [Smooth] , Bidirectional [Smooth](双向[平滑])\nBidirectional [Sharp] , Bidirectional [Sharp](双向[锐利])\nBicubic , Bicubic(双三次)\nBi-Directional , Bi-Directional(双向)\nBest Match , Best Match(最佳匹配)\nBelow , Below(下面)\nBehind , Behind(积压)\nBayer , Bayer(拜耳)\nBatch Processing , Batch Processing(批量处理)\nBars , Bars(条形)\nBalls , Balls(球型·)\nBackward Vertical , Backward Vertical(◀→垂直分割新图在左)\nBackward Horizontal , Backward Horizontal(▲↓水平分割新图在上)\nBackward , Backward(下面)\nB&W Photograph , B&W Photograph(黑白照片)\nB-Component , B-Component(B-分量)\nAvg , Avg(平均值)\nAverage RGB , Average RGB(平均RGB)\nAverage 9x9 , Average 9x9(平均9x9)\nAverage 7x7 , Average 7x7(平均7x7)\nAverage 5x5 , Average 5x5(平均5x5)\nAverage 3x3 , Average 3x3(平均3x3)\nAverage , Average(平均值)\nAutomatic & Contrast Mask , Automatic & Contrast Mask(自动和对比蒙版)\nAutomatic [Scan All Hues] , Automatic [Scan All Hues](自动[扫描所有色调])\nAutomatic , Automatic(自动)\nAuto-Clean Bottom Color Layer , Auto-Clean Bottom Color Layer(自动清洁底色层)\nAuto , Auto(自动)\nAsplenium Adiantum-Nigrum , Asplenium Adiantum-Nigrum(紫花铁线莲)\nAscii , Ascii(Ascii编码)\nArtistic Round , Artistic Round(艺术-环绕)\nArtistic Hard , Artistic Hard(艺术-硬)\nArtistic  Modern , Artistic  Modern(艺术-现代)\nArrows (Outline) , Arrows (Outline)(箭头(轮廓))\nArrows , Arrows(箭头)\nArc-Tangent , Arc-Tangent(弧切线)\nAny , Any(任何)\nAntisymmetry , Antisymmetry(反对称)\nAnisotropic , Anisotropic(各向异性)\nAngular , Angular(角度)\nAnd , And(与)\nAnaglyph: Red/Cyan , Anaglyph: Red/Cyan(立体彩色 红色/青色)\nAnaglyph Red/cyan Optimized , Anaglyph Red/cyan Optimized(立体彩色 红色/蓝色 优化)\nAnaglyph Red/cyan , Anaglyph Red/cyan(立体彩色 红色/青色)\nAnaglyph Reconstruction , Anaglyph Reconstruction(立体彩色 重建)\nAnaglyph Green/magenta Optimized , Anaglyph Green/magenta Optimized(立体彩色 绿色/洋红 优化)\nAnaglyph Green/magenta , Anaglyph Green/magenta(立体彩色 绿色/洋红)\nAnaglyph Blue/yellow Optimized , Anaglyph Blue/yellow Optimized(立体彩色 蓝色/黄色 优化)\nAnaglyph Blue/yellow , Anaglyph Blue/yellow(立体彩色 蓝色/黄色)\nAnaglypgh Green/magenta Optimized , Anaglypgh Green/magenta Optimized(Anaglypgh绿色/洋红色优化)\nAlternating , Alternating(交替的)\nAlpha , Alpha(透明度)\nAll XY-Flips , All XY-Flips(所有XY翻转)\nAll Tones , All Tones(所有色调)\nAll Layers and Masks , All Layers and Masks(所有图层和蒙版)\nAll but Reference Color , All but Reference Color(除参考色外的所有颜色)\nAll 90° Rotations , All 90° Rotations(全部90° 轮换)\nAll 45° Rotations , All 45° Rotations(全部45° 轮换)\nAll , All(所有)\nAligned , Aligned(对齐)\nAlign Image Streams , Align Image Streams(对齐图像流)\nAggresive , Aggresive(积极)\nAdditive , Additive(添加)\nAdd , Add(相加)\nAdaptive , Adaptive(自适应)\nAchromatopsia , Achromatopsia(色盲)\nAchromatomaly , Achromatomaly(色弱)\nA-Component , A-Component(A-分量)\n9th , 9th(第9)\n90 Deg. , 90 Deg.(90度)\n8th , 8th(第8)\n8px , 8px(8像素)\n8 Keypoints (RGB Corners) , 8 Keypoints (RGB Corners)(8 特征点(RGB拐角))\n8 Grays , 8 Grays(8阶灰色)\n7th , 7th(第7)\n6th , 6th(第6)\n67.5 Deg. , 67.5 Deg.(67.5度)\n64px , 64px(64像素)\n64 Keypoints , 64 Keypoints(64 特征点)\n5th , 5th(第5)\n4th , 4th(第4)\n45 Deg. , 45 Deg.(45度)\n4 Grays , 4 Grays(4阶灰色)\n4 Colors , 4 Colors(4色)\n3rd , 3rd(第3)\n3D Waves , 3D Waves(3D波浪)\n3D Starfield , 3D Starfield(3D星空)\n3D Rubber Object , 3D Rubber Object(3D橡胶物体)\n3D Reflection , 3D Reflection(3D反射)\n3D CLUT (Precise) , 3D CLUT (Precise)(3D CLUT(精确))\n3D CLUT (Fast) , 3D CLUT (Fast)(3D CLUT(快速))\n343 Keypoints , 343 Keypoints(343 特征点)\n32px , 32px(32像素)\n3 Grays , 3 Grays(3阶灰色)\n3 Colors , 3 Colors(3色)\n2xy-Axes , 2xy-Axes(2xy轴)\n2XY-Axes , 2XY-Axes(2XY轴)\n2XY Mirror , 2XY Mirror(2XY镜像)\n2nd , 2nd(第2)\n270 Deg. , 270 Deg.(270度)\n27 Keypoints , 27 Keypoints(27 特征点)\n256px , 256px(256像素)\n22.5 Deg. , 22.5 Deg.(22.5度)\n216 Keypoints , 216 Keypoints(216 特征点)\n2 Grays , 2 Grays(2阶灰色)\n2 Colors , 2 Colors(2色)\n1st , 1st(第1)\n180 Deg. , 180 Deg.(180度)\n16th , 16th(第16)\n16px , 16px(16像素)\n16 Grays , 16 Grays(16阶灰色)\n15th , 15th(第15)\n14th , 14th(第14)\n13th , 13th(第13)\n12th , 12th(第12)\n128px , 128px(128像素)\n125 Keypoints , 125 Keypoints(125 特征点)\n12 Grays , 12 Grays(12阶灰色)\n12 Colors , 12 Colors(12色)\n11th , 11th(第11)\n10th , 10th(第10)\n0 Deg. , 0 Deg.(0度)\n+90 Deg. , +90 Deg.(+90度)\n+180 Deg. , +180 Deg.(+180度)\n*Vivid Screen* , *Vivid Screen*(*生动的屏幕*)\n*Vivid Edges* , *Vivid Edges*(*亮色边缘*)\n*Graphix Colors , *Graphix Colors(*Graphix颜色)\n*Dark Screen* , *Dark Screen*(*深色滤色*)\n*Dark Edges* , *Dark Edges*(*深色边缘*)\n*Comix Colors* , *Comix Colors*(* Comix颜色*)\n*Colors Doping* , *Colors Doping*(*彩色掺杂*)\n*Colors Doping , *Colors Doping(*彩色掺杂)\n[Cyan]MYK , [Cyan]MYK([青色] MYK)\n-90 Deg. , -90 Deg.(-90度)\n- NON / NO - , - NON / NO -(-非/否-)\n"
  },
  {
    "path": "translations/filters/ts2csv.sh",
    "content": "#!/usr/bin/env bash\nfunction usage()\n{\n  cat <<EOF\nUsage:\n       `basename $0` -o output.csv file.ts\n\nEOF\n  exit 0\n}\n\noutput=/dev/stdout\nwhile getopts o: opt ; do\n  case $opt in\n    o) output=$OPTARG ;;\n    *) die \"Command line parsing failed\"\n  esac\ndone\n\nn=$(( OPTIND - 1  ))\nwhile [[ $n -gt 0 ]]; do\n  shift\n  n=$((n - 1))\ndone\n\nfunction die()\n{\n  local message=\"$@\"\n  >&2 echo \"$message\"\n  exit 1\n}\n\nfunction requires()\n{\n  type \"$1\" >& /dev/null || die \"Command '$1' not found.\"\n}\n\nin=\"$1\"\n[[ -z \"$in\" ]] && usage\n[[ ! -e \"$in\" ]] && die \"File not found: $in\"\n[[ ! $in =~ .*\\.ts$  ]] && die \"Not a ts file: $in\"\n\n# @param text\nfunction html2ascii()\n{\n  local text=\"$1\"\n  text=${text//&amp;/\\&}\n  text=${text//&lt;/<}\n  text=${text//&gt;/>}\n  text=${text//&quot;/\\\"}\n  text=${text//&apos;/\\'}\n  echo -n \"$text\"\n}\n\necho -n > $output\n\nwhile read line; do\n  comment=\"\"\n  if [[ \"$line\" =~ \\ *\\<message\\> ]]; then\n    read src\n    read translation\n    if [[ \"$translation\" =~ \\<comment\\>.*\\</comment\\> ]]; then\n      comment=\"$translation\"\n      read translation\n    fi\n    read dummy # </message>\n    src=$(echo \"$src\")\n    src=${src:8}\n    src=${src%</source>}\n    src=$(html2ascii \"$src\")\n    translation=$(echo \"$translation\")\n    translation=${translation:13}\n    translation=${translation%</translation>}\n    translation=$(html2ascii \"$translation\")\n    if [[ -z \"$comment\" ]]; then\n      echo \"$src , $translation\" >> $output\n    else\n      comment=$(echo \"$comment\")\n      comment=${comment:9}\n      comment=${comment%</comment>}\n      echo \"$src , $translation , $comment\" >> $output\n    fi\n  fi\ndone < \"$in\"\n"
  },
  {
    "path": "translations/fr.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"fr\">\n<context>\n    <name>DialogSettings</name>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Paramètres</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"250\"/>\n        <source>Internet updates</source>\n        <translation>Mises à jour internet</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"259\"/>\n        <source>Update now</source>\n        <translation>Mettre à jour maintenant</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"30\"/>\n        <source>Layout</source>\n        <translation>Disposition</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"24\"/>\n        <source>Interface</source>\n        <translation>Interface</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"64\"/>\n        <source>Preview on the &amp;left</source>\n        <translation>Prévisualisation à &amp;gauche</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"94\"/>\n        <source>Pre&amp;view on right side</source>\n        <translation>Prévisualisation à &amp;droite</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"113\"/>\n        <source>Theme</source>\n        <translation>Thème</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"119\"/>\n        <source>&amp;Default</source>\n        <translation>&amp;Défaut</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"126\"/>\n        <source>Dar&amp;k</source>\n        <translation>&amp;Sombre</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"139\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/I&gt;</source>\n        <translation>&lt;i&gt;(Changements effectifs&lt;br/&gt;au prochain lancement.)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"149\"/>\n        <source>Language</source>\n        <translation>Langue</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"179\"/>\n        <source>Always enable preview zooming</source>\n        <translation>Toujours activer le zoom</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"186\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Warning: preview may be inaccurate&lt;br/&gt;if checked.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Attention : l&apos;aperçu peut être faussé si ce choix est activé.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"196\"/>\n        <source>Misc</source>\n        <translation>Divers</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"209\"/>\n        <source>Use native file dialog</source>\n        <translation>Dialogues de choix de fichier natifs</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"216\"/>\n        <source>&amp;Enable High-DPI support</source>\n        <translation>&amp;Activer le High DPI</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"223\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation>&lt;i&gt;(Changement effectif&lt;br/&gt;au prochain lancement.)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"239\"/>\n        <source>Filter sources</source>\n        <translation>Sources de filtres</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"244\"/>\n        <source>Other</source>\n        <translation>Autre</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"282\"/>\n        <source>Output messages</source>\n        <translation>Messages de sortie</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"202\"/>\n        <source>&amp;Use native color dialog</source>\n        <translation>&amp;Dialogues de choix de couleur natifs</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"163\"/>\n        <source>Preview</source>\n        <translation>Aperçu</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"169\"/>\n        <source>Timeout (seconds)</source>\n        <translation>Délai max. (secondes)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"36\"/>\n        <source>Show institution logos</source>\n        <translation>Afficher les logos institutionnels</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"291\"/>\n        <source>Notify when scheduled update fails</source>\n        <translation>Signaler quand une mise à jour automatique échoue</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"333\"/>\n        <source>&amp;Ok</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>FiltersView</name>\n    <message>\n        <location filename=\"../ui/filtersview.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ColorParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/ColorParameter.cpp\" line=\"213\"/>\n        <source>Select color</source>\n        <translation>Sélectionnez une couleur</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::DialogSettings</name>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"45\"/>\n        <source>Settings</source>\n        <translation>Paramètres</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"51\"/>\n        <source>Never</source>\n        <translation>Jamais</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"52\"/>\n        <source>Daily</source>\n        <translation>Journalière</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"53\"/>\n        <source>Weekly</source>\n        <translation>Hebdomadaire</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"54\"/>\n        <source>Every 2 weeks</source>\n        <translation>Toutes les deux semaines</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"55\"/>\n        <source>Monthly</source>\n        <translation>Mensuelle</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"57\"/>\n        <source>At launch (debug)</source>\n        <translation>À chaque lancement (débugage)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"65\"/>\n        <source>Output messages</source>\n        <translation>Messages de sortie</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"66\"/>\n        <source>Quiet (default)</source>\n        <translation>Aucun message (défaut)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"67\"/>\n        <source>Verbose (console)</source>\n        <translation>Mode verbeux (console)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"68\"/>\n        <source>Verbose (log file)</source>\n        <translation>Mode verbeux (fichier de log)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"69\"/>\n        <source>Very verbose (console)</source>\n        <translation>Mode très verbeux (console)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"70\"/>\n        <source>Very verbose (log file)</source>\n        <translation>Mode très verbeux (fichier de log)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"71\"/>\n        <source>Debug (console)</source>\n        <translation>Mode débogage (console)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"72\"/>\n        <source>Debug (log file)</source>\n        <translation>Mode débogage (fichier de log)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"88\"/>\n        <source>Check to use Native/OS color dialog, uncheck to use Qt&apos;s</source>\n        <translation>Cocher pour utiliser les dialogues natifs, décocher pour utiliser les dialogues Qt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"90\"/>\n        <source>Check to use Native/OS file dialog, uncheck to use Qt&apos;s</source>\n        <translation>Cocher pour utiliser les dialogues de fichier natifs, décocher pour utiliser les dialogues Qt</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FileParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"159\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"162\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"165\"/>\n        <source>Select a file</source>\n        <translation>Sélectionnez un fichier</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FilterParametersWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"44\"/>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"273\"/>\n        <source>&lt;i&gt;Select a filter&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Sélectionnez un filtre&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"240\"/>\n        <source>&lt;i&gt;No parameters&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Aucun paramètre&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"245\"/>\n        <source>Error parsing filter parameters\n\n</source>\n        <translation>Erreur d&apos;analyse des paramètres du filtre\n\n</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersPresenter</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"513\"/>\n        <source>Unknown filter</source>\n        <translation>Filtre inconnu</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"623\"/>\n        <source>Cannot find this fave&apos;s original filter\n</source>\n        <translation>Filtre original introuvable pour ce favori\n</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersView</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"353\"/>\n        <source>Remove fave</source>\n        <translation>Supprimer le favori</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"680\"/>\n        <source>Rename Fave</source>\n        <translation>Renommer le favori</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"682\"/>\n        <source>Remove Fave</source>\n        <translation>Supprimer le favori</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"684\"/>\n        <source>Clone Fave</source>\n        <translation>Dupliquer le favori</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"688\"/>\n        <source>Add Fave</source>\n        <translation>Ajouter comme favori</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"707\"/>\n        <source>Remove All</source>\n        <translation>Supprimer tous les marqueurs</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>%1 (%2 %3)</source>\n        <translation>%1 (%2 %3)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filters</source>\n        <translation>filtres</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filter</source>\n        <translation>filtre</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"354\"/>\n        <source>Do you really want to remove the following fave?\n\n%1\n</source>\n        <translation>Êtes-vous certain de vouloir supprimer le favori ci-dessous ?\n\n%1\n</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FolderParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FolderParameter.cpp\" line=\"138\"/>\n        <source>Select a folder</source>\n        <translation>Sélectionnez un dossier</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::GmicProcessor</name>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"416\"/>\n        <source>Image #%1 returned by filter has %2 channels (should be at most 4)</source>\n        <translation>L&apos;image No%1 retournée par le filtre possède %2 canaux (4 est la limite)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"452\"/>\n        <source>Image #%1 returned by filter has %2 channels\n(should be at most 4)</source>\n        <translation>L&apos;image No%1 retournée par le filtre possède %2 canaux\n(4 est la limite)</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::HeadlessProcessor</name>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"79\"/>\n        <source>At least a filter path or a filter command must be provided.</source>\n        <translation>Au moins un chemin de filtre ou une commande doivent être founis.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"81\"/>\n        <source>Custom command (%1)</source>\n        <translation>Commande personnalisée (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"89\"/>\n        <source>Cannot find filter matching path %1</source>\n        <translation>Impossible de trouver un filtre correspondant au chemin %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"96\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation>Erreur de lecture de la définition des paramètres pour le filtre :\n\n%1\n\nImpossible de déterminer les paramètres par défaut.\n\n%2</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"114\"/>\n        <source>Error parsing supplied command: %1</source>\n        <translation>Erreur d&apos;analyse de la commande fournie: %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"117\"/>\n        <source>Supplied command (%1) does not match path (%2), (should be %3).</source>\n        <translation>La commande fournie (%1) ne correspond pas au chemin (%2), (ce devrait être %3).</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"229\"/>\n        <source>Filter execution failed, but with no error message.</source>\n        <translation>L&apos;exécution du filtre a échoué, mais sans message d&apos;erreur.</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::InOutPanel</name>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"62\"/>\n        <source>Input layers</source>\n        <translation>Calques en entrée</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"68\"/>\n        <source>None</source>\n        <translation>Aucun</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"69\"/>\n        <source>Active (default)</source>\n        <translation>Actif (défaut)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"70\"/>\n        <source>All</source>\n        <translation>Tous</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"71\"/>\n        <source>Active and below</source>\n        <translation>Actif et en dessous</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"72\"/>\n        <source>Active and above</source>\n        <translation>Actif et au dessus</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"73\"/>\n        <source>All visible</source>\n        <translation>Tous les calques visibles</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"74\"/>\n        <source>All invisible</source>\n        <translation>Tous les calques invisibles</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"85\"/>\n        <source>Output mode</source>\n        <translation>Mode de sortie</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"91\"/>\n        <source>In place (default)</source>\n        <translation>Sur place (défaut)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"92\"/>\n        <source>New layer(s)</source>\n        <translation>Nouveau(x) calque(s)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"93\"/>\n        <source>New active layer(s)</source>\n        <translation>Nouveau(x) calque(s) actif(s)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"94\"/>\n        <source>New image</source>\n        <translation>Nouvelle image</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"205\"/>\n        <source>Input / Output</source>\n        <translation>Entrée / Sortie</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"207\"/>\n        <source>Input</source>\n        <translation>Entrée</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"209\"/>\n        <source>Output</source>\n        <translation>Sortie</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"53\"/>\n        <source>System default (%1)</source>\n        <translation>Langue du système (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"62\"/>\n        <source>Translations are very likely to be incomplete.</source>\n        <translation>La traduction est certainement très incomplète.</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MainWindow</name>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"108\"/>\n        <source>Add fave</source>\n        <translation>Ajouter un favori</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"110\"/>\n        <source>Reset parameters to default values</source>\n        <translation>Réinitialiser les paramètres du filtre</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"113\"/>\n        <source>Randomize parameters</source>\n        <translation>Paramètres aléatoires</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"119\"/>\n        <source>Copy G&apos;MIC command to clipboard</source>\n        <translation>Copier la commande G&apos;MIC dans le presse-papier</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"126\"/>\n        <source>Rename fave</source>\n        <translation>Renommer un favori</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"128\"/>\n        <source>Remove fave</source>\n        <translation>Supprimer un favori</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"132\"/>\n        <source>Expand/Collapse all</source>\n        <translation>Déplier/Réduire tout</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"134\"/>\n        <source>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandy University (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</source>\n        <translation>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandie Université (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"141\"/>\n        <source>Selection mode</source>\n        <translation>Mode sélection</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"180\"/>\n        <source>Update filters</source>\n        <translation>Mettre à jour les filtres (Ctrl+R / F5)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"232\"/>\n        <source>Manage visible tags\n(Right-click on a fave or a filter to set/remove tags)</source>\n        <translation>Gérer les tags visibles\n(Ajouter/supprimer des tags par clic droit sur un favori ou sur un filtre)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"238\"/>\n        <source>Force &amp;quit</source>\n        <translation>Forcer la &amp;terminaison</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"242\"/>\n        <source>Full</source>\n        <translation>Entier</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"243\"/>\n        <source>Forward Horizontal</source>\n        <translation>Séparation horizontale avant</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"244\"/>\n        <source>Forward Vertical</source>\n        <translation>Séparation verticale avant</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"245\"/>\n        <source>Backward Horizontal</source>\n        <translation>Séparation horizontale arrière</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"246\"/>\n        <source>Backward Vertical</source>\n        <translation>Séparation verticale arrière</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"247\"/>\n        <source>Duplicate Top</source>\n        <translation>Copie en haut</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"248\"/>\n        <source>Duplicate Left</source>\n        <translation>Copie à gauche</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"249\"/>\n        <source>Duplicate Bottom</source>\n        <translation>Copie en bas</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"250\"/>\n        <source>Duplicate Right</source>\n        <translation>Copie à droite</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"251\"/>\n        <source>Duplicate Horizontal</source>\n        <translation>Copie horizontale</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"252\"/>\n        <source>Duplicate Vertical</source>\n        <translation>Copie verticale</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"253\"/>\n        <source>Checkered</source>\n        <translation>En damier</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"254\"/>\n        <source>Checkered Inverse</source>\n        <translation>En damier inversé</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <source>Update completed</source>\n        <translation>Mise à jour réussie</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"378\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"509\"/>\n        <source>Filter definitions have been updated.</source>\n        <translation>Les définitions de filtres ont été mises à jour.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"381\"/>\n        <source>No download was needed.</source>\n        <translation>Aucun téléchargement n&apos;était requis.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"427\"/>\n        <source>Plugin was called with a filter path with no matching filter:\n\nPath: %1</source>\n        <translation>Le plugin a été appelé avec un chemin qui ne correspond à aucun filtre :\n\nChemin: %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"435\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"462\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation>Erreur de lecture de la définition des paramètres pour le filtre :\n\n%1\n\nImpossible de déterminer les paramètres par défaut.\n\n%2</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"448\"/>\n        <source>Plugin was called with a command that cannot be recognized as a filter:\n\nCommand: %1</source>\n        <translation>Le plugin a été appelé avec une commande qui ne correspond à aucun filtre :\n\nCommande: %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"927\"/>\n        <source>[Elapsed time: %1]</source>\n        <translation>[Temps écoulé : %1]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"443\"/>\n        <source>Plugin was called with a command that cannot be parsed:\n\n%1</source>\n        <translation>Le plugin a été appelé avec une commande invalide :\n\n%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"452\"/>\n        <source>Plugin was called with a command that does not match the provided path:\n\nPath: %1\nCommand: %2\nCommand found for this path : %3</source>\n        <translation>Le plugin a été appelé avec une commande qui ne correspond pas au chemin fourni :\n\nChemin : %1\nCommande : %2\nCommande trouvée pour le chemin : %3</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"505\"/>\n        <source>Filters update could not be achieved</source>\n        <translation>La mise à jour des filtres n&apos;a pas réussi</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"646\"/>\n        <source>The update could not be achieved&lt;br&gt;because of the following errors:&lt;br&gt;</source>\n        <translation>La mise à jour n&apos;a pas réussi en raison&lt;br/&gt;des erreurs suivantes :&lt;br/&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"652\"/>\n        <source>Update error</source>\n        <translation>Erreurs lors de la mise à jour</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"859\"/>\n        <source>Error</source>\n        <translation>Erreur</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1478\"/>\n        <source>Waiting for cancelled jobs...</source>\n        <translation>En attente des traitements annulés...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Import faves</source>\n        <translation>Importer les favoris</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Do you want to import faves from file below?&lt;br/&gt;%1</source>\n        <translation>Voulez-vous importer les favoris du fichier ci-dessous ?&lt;br/&gt;%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1335\"/>\n        <source>Don&apos;t ask again</source>\n        <translation>Ne plus me demander</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>Confirmation</source>\n        <translation>Confirmation</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>A gmic command is running.&lt;br&gt;Do you really want to close the plugin?</source>\n        <translation>Une commande gmic est en cours d&apos;exécution.&lt;br&gt;Voulez-vous vraiment fermer le plugin ?</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/MultilineTextParameterWidget.cpp\" line=\"41\"/>\n        <source>Ctrl+Return</source>\n        <translation>Ctrl+Entrée</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"50\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation>Progression du greffon G&apos;MIC-Qt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"53\"/>\n        <source>Abort</source>\n        <translation>Annuler</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"126\"/>\n        <source>[Processing 88:00:00.888 | 888.9 GiB]</source>\n        <translation>[Traitement en cours 88:00:00.888 | 888.9 Gio]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"128\"/>\n        <source>[Processing 88:00:00.888]</source>\n        <translation>[Traitement en cours 88:00:00.888]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"160\"/>\n        <source>Updating filters...</source>\n        <translation>Mise à jour des filtres...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"213\"/>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"221\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Traitement en cours %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"223\"/>\n        <source>[Processing %1]</source>\n        <translation>[Traitement en cours %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"49\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation>Progression du greffon G&apos;MIC-Qt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"141\"/>\n        <source>%1 seconds</source>\n        <translation>%1 secondes</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"151\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Traitement en cours %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"153\"/>\n        <source>[Processing %1]</source>\n        <translation>[Traitement en cours %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SearchFieldWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"80\"/>\n        <source>Search</source>\n        <translation>Rechercher</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"81\"/>\n        <source>Search in filters list (%1)</source>\n        <translation>Rechercher dans la liste des filtres (%1)</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SourcesWidget</name>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"58\"/>\n        <source>Move source up</source>\n        <translation>Déplacer la source vers le haut</translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"60\"/>\n        <source>Move source down</source>\n        <translation>Déplacer la source vers le bas</translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"62\"/>\n        <source>Add local file (dialog)</source>\n        <translation>Ajouter un fichier local (dialogue)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"64\"/>\n        <source>Reset filter sources</source>\n        <translation>Réinitialiser les sources de filtres</translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"80\"/>\n        <source>Macros: $HOME %USERPROFILE% $VERSION</source>\n        <translation>Macros: $HOME %USERPROFILE% $VERSION</translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"102\"/>\n        <source>Environment variables (e.g. %USERPROFILE% or %HOMEDIR%) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation>Les variables d&apos;environement (e.g. %USERPROFILE% ou %HOMEDIR%) sont substituées dans les sources.\nVERSION est aussi une variable définie comme le numéro de version courante de G&apos;MIC (actuellement %1).</translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"82\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation>Macros : $HOME $VERSION</translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"53\"/>\n        <source>Remove source (Delete)</source>\n        <translation>Supprimer une source (Suppr)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"85\"/>\n        <source>Disable</source>\n        <translation>Désactiver</translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"86\"/>\n        <source>Enable without updates</source>\n        <translation>Activer sans les mises à jour</translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"87\"/>\n        <source>Enable with updates (recommended)</source>\n        <translation>Activer avec les mises à jour (recommandé)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"106\"/>\n        <source>Environment variables (e.g. $HOME or ${HOME} for your home directory) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation>Les variables d&apos;environnement (e.g. $HOME ou ${HOME}) sont substituées dans les sources.\nVERSION est aussi une variable prédéfinie à la valeur de la version de G&apos;MIC (actuellement %1).</translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"111\"/>\n        <source>New source</source>\n        <translation>Nouvelle source</translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"192\"/>\n        <source>Select a file</source>\n        <translation>Sélectionnez un fichier</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::Updater</name>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"137\"/>\n        <source>Error downloading %1 (empty file?)</source>\n        <translation>Erreur de téléchargement de %1 (fichier vide ?)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"146\"/>\n        <source>Could not read/decompress %1</source>\n        <translation>Impossible de lire/décompresser %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"151\"/>\n        <source>Error writing file %1</source>\n        <translation>Erreur d&apos;écriture du fichier %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"168\"/>\n        <source>Error downloading %1&lt;br/&gt;Error %2: %3</source>\n        <translation>Erreur lors du téléchargement de %1&lt;br/&gt; Erreur %2 : %3</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"204\"/>\n        <source>Download timeout: %1</source>\n        <translation>Téléchargement annulé (hors délai) : %1</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::VisibleTagSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"55\"/>\n        <source>Show All Filters</source>\n        <translation>Montrer tous les filtres</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"59\"/>\n        <source>Show %1 Tags</source>\n        <translation>Montrer les marqueurs %1s</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"54\"/>\n        <source>Zoom in</source>\n        <translation>Zoom avant</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"55\"/>\n        <source>Zoom out</source>\n        <translation>Zoom arrière</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"56\"/>\n        <source>Reset zoom</source>\n        <translation>Zoom par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"155\"/>\n        <source>Warning: Preview may be inaccurate (zoom factor has been modified)</source>\n        <translation>Attention : l&apos;aperçu peut être erroné (le facteur de zoom a été modifié)</translation>\n    </message>\n</context>\n<context>\n    <name>HeadlessProgressDialog</name>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Progression</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"68\"/>\n        <source>Cancel</source>\n        <translation>Annuler</translation>\n    </message>\n</context>\n<context>\n    <name>InOutPanel</name>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"40\"/>\n        <source>Input / Output</source>\n        <translation>Entrée / Sortie</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"47\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"92\"/>\n        <source>Input layers</source>\n        <translation>Calques en entrée</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"115\"/>\n        <source>Output mode</source>\n        <translation>Mode de sortie</translation>\n    </message>\n</context>\n<context>\n    <name>JpegQualityDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"20\"/>\n        <location filename=\"../src/Host/None/JpegQualityDialog.cpp\" line=\"13\"/>\n        <source>JPEG Quality</source>\n        <translation>Facteur de qualité JPEG</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"28\"/>\n        <source>0</source>\n        <translation>0</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"42\"/>\n        <source>100</source>\n        <translation>100</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"60\"/>\n        <source>Always use this quality for this execution of G&apos;MIC-Qt</source>\n        <translation>Toujours cette qualité pour cette exécution de G&apos;MIC-Qt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"85\"/>\n        <source>&amp;Cancel</source>\n        <translation>&amp;Annuler</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"92\"/>\n        <source>&amp;Ok</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"35\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation>&lt;i&gt;(Changement effectif&lt;br/&gt;au prochain lancement.)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"48\"/>\n        <source>Translate filters (WIP)</source>\n        <translation>Traduire les filtres (WIP)</translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"18\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"176\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Download filter definitions from remote sources&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Télécharger les définitions de filtres depuis les sources distantes&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"179\"/>\n        <source>Internet</source>\n        <translation>Internet</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"418\"/>\n        <source>Preview type (Ctrl+Shift+P)</source>\n        <translation>Type de prévisualisation (Ctrl+Maj+P)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"525\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"532\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"248\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"255\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"262\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"408\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable/disable preview&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(right click on preview image for instant swapping)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Activer/désactiver l&apos;aperçu&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(cliquez droit sur l&apos;image d&apos;aperçu pour basculer instantanément)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"411\"/>\n        <source>Preview</source>\n        <translation>Aperçu</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"509\"/>\n        <source>&amp;Settings...</source>\n        <translation>&amp;Paramètres...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"558\"/>\n        <source>&amp;Close</source>\n        <translation>&amp;Fermer</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"571\"/>\n        <source>&amp;Cancel</source>\n        <translation>&amp;Annuler</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"545\"/>\n        <source>&amp;Fullscreen</source>\n        <translation>&amp;Plein écran</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"584\"/>\n        <source>&amp;Apply</source>\n        <translation>&amp;Appliquer</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"597\"/>\n        <source>&amp;OK</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"29\"/>\n        <source>Update</source>\n        <translation>Mettre à jour</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"48\"/>\n        <source>Abort</source>\n        <translation>Annuler</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"55\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"30\"/>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"50\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"72\"/>\n        <source>Cancel</source>\n        <translation>Annuler</translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"76\"/>\n        <source>Select an image to open...</source>\n        <translation>Sélectionnez une image à ouvrir...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Error</source>\n        <translation>Erreur</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Could not open file.</source>\n        <translation>Impossible d&apos;ouvrir le fichier.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"88\"/>\n        <source>Default image</source>\n        <translation>Image par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"81\"/>\n        <source>Visible</source>\n        <translation>Visible</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"107\"/>\n        <source>Available filters (%1)</source>\n        <translation>Filtres disponibles (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"151\"/>\n        <source>%1 Tag</source>\n        <translation>Marqueur %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"157\"/>\n        <source>None</source>\n        <translation>Aucune</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"158\"/>\n        <source>Red</source>\n        <translation>rouge</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"159\"/>\n        <source>Green</source>\n        <translation>vert</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"160\"/>\n        <source>Blue</source>\n        <translation>bleu</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"161\"/>\n        <source>Cyan</source>\n        <translation>cyan</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"162\"/>\n        <source>Magenta</source>\n        <translation>magenta</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"163\"/>\n        <source>Yellow</source>\n        <translation>jaune</translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"127\"/>\n        <source>Could not install translator for file %1</source>\n        <translation>Impossible d&apos;installer le traducteur pour le fichier %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"130\"/>\n        <source>Could not load translation file %1</source>\n        <translation>Impossible de charger le fichier de traduction %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"337\"/>\n        <source>List %1 cannot be merged considering these runs: %2</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"432\"/>\n        <source>%1 GiB</source>\n        <translation>%1 Gio</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"434\"/>\n        <source>%1 MiB</source>\n        <translation>%1 Mio</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"436\"/>\n        <source>%1 KiB</source>\n        <translation>%1 Kio</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"438\"/>\n        <source>%1 B</source>\n        <translation>%1 o</translation>\n    </message>\n</context>\n<context>\n    <name>SearchFieldWidget</name>\n    <message>\n        <location filename=\"../ui/SearchFieldWidget.ui\" line=\"20\"/>\n        <source>Frame</source>\n        <translation>Frame</translation>\n    </message>\n</context>\n<context>\n    <name>SourcesWidget</name>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"136\"/>\n        <source>Official filters:</source>\n        <translation>Filtres officiels :</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"22\"/>\n        <source>File / URL</source>\n        <translation>Fichier / URL</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"32\"/>\n        <source>Add new</source>\n        <translation>Ajouter nouveau</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"39\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"55\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"62\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"85\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"92\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"118\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation>Macros : $HOME $VERSION</translation>\n    </message>\n</context>\n<context>\n    <name>ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../ui/zoomlevelselector.ui\" line=\"20\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"73\"/>\n        <source>G&apos;MIC-Qt filter output</source>\n        <translation>Résultat du filtre G&apos;MIC-Qt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"84\"/>\n        <source>Close</source>\n        <translation>Fermer</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"87\"/>\n        <source>Save as...</source>\n        <translation>Enregistrer sous...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"122\"/>\n        <source>%1 file (*.%2 *.%3)</source>\n        <translation>Fichier %1 (*.%2 *.%3)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"148\"/>\n        <source>Save image as...</source>\n        <translation>Enregistrer l&apos;image sous...</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageView</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Error</source>\n        <translation>Erreur</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Could not write image file %1</source>\n        <translation>Impossible d&apos;écrire le fichier %1</translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "translations/id.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- Original Indonesian translation done by Duddy Hadiwido -->\n\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"id\">\n<context>\n    <name>DialogSettings</name>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Dialog</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"250\"/>\n        <source>Internet updates</source>\n        <translation>Pembaruan internet</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"259\"/>\n        <source>Update now</source>\n        <translation>Perbarui sekarang</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"30\"/>\n        <source>Layout</source>\n        <translation>Tata letak</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"24\"/>\n        <source>Interface</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"64\"/>\n        <source>Preview on the &amp;left</source>\n        <translation>Tinjauan di &amp;kiri</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"94\"/>\n        <source>Pre&amp;view on right side</source>\n        <translation>Tinjauan di &amp;kanan</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"113\"/>\n        <source>Theme</source>\n        <translation>Tema</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"119\"/>\n        <source>&amp;Default</source>\n        <translation>&amp;Setelan standar</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"126\"/>\n        <source>Dar&amp;k</source>\n        <translation>&amp;Gelap</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"139\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/I&gt;</source>\n        <translation>&lt;i&gt;(Restart diperlukan)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"149\"/>\n        <source>Language</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"179\"/>\n        <source>Always enable preview zooming</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"186\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Warning: preview may be inaccurate&lt;br/&gt;if checked.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"196\"/>\n        <source>Misc</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"209\"/>\n        <source>Use native file dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"216\"/>\n        <source>&amp;Enable High-DPI support</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"223\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation type=\"unfinished\">&lt;i&gt;(Restart diperlukan)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"239\"/>\n        <source>Filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"244\"/>\n        <source>Other</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"282\"/>\n        <source>Output messages</source>\n        <translation>Pesan-pesan keluaran</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"202\"/>\n        <source>&amp;Use native color dialog</source>\n        <translation>&amp;Gunakan dialog warna native</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"163\"/>\n        <source>Preview</source>\n        <translation>Tinjauan</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"169\"/>\n        <source>Timeout (seconds)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"36\"/>\n        <source>Show institution logos</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"291\"/>\n        <source>Notify when scheduled update fails</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"333\"/>\n        <source>&amp;Ok</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>FiltersView</name>\n    <message>\n        <location filename=\"../ui/filtersview.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ColorParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/ColorParameter.cpp\" line=\"213\"/>\n        <source>Select color</source>\n        <translation>Pilih warna</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::DialogSettings</name>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"45\"/>\n        <source>Settings</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"51\"/>\n        <source>Never</source>\n        <translation>Tidak pernah</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"52\"/>\n        <source>Daily</source>\n        <translation>Harian</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"53\"/>\n        <source>Weekly</source>\n        <translation>Mingguan</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"54\"/>\n        <source>Every 2 weeks</source>\n        <translation>Tiap 2 minggu</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"55\"/>\n        <source>Monthly</source>\n        <translation>Bulanan</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"57\"/>\n        <source>At launch (debug)</source>\n        <translation>Pada pembukaan (debug)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"65\"/>\n        <source>Output messages</source>\n        <translation>Pesan-pesan keluaran</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"66\"/>\n        <source>Quiet (default)</source>\n        <translation>Sunyi (setelan standar)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"67\"/>\n        <source>Verbose (console)</source>\n        <translation>Verbose (konsol)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"68\"/>\n        <source>Verbose (log file)</source>\n        <translation>Verbose (berkas laporan)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"69\"/>\n        <source>Very verbose (console)</source>\n        <translation>Very verbose (konsol)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"70\"/>\n        <source>Very verbose (log file)</source>\n        <translation>Very verbose (berkas laporan)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"71\"/>\n        <source>Debug (console)</source>\n        <translation>Debug (konsol)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"72\"/>\n        <source>Debug (log file)</source>\n        <translation>Debug (berkas laporan)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"88\"/>\n        <source>Check to use Native/OS color dialog, uncheck to use Qt&apos;s</source>\n        <translation>Centang untuk gunakan warna native, Tidak centang untuk gunakan Qt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"90\"/>\n        <source>Check to use Native/OS file dialog, uncheck to use Qt&apos;s</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FileParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"159\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"162\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"165\"/>\n        <source>Select a file</source>\n        <translation>Pilih berkas</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FilterParametersWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"44\"/>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"273\"/>\n        <source>&lt;i&gt;Select a filter&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Pilih filter&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"240\"/>\n        <source>&lt;i&gt;No parameters&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Tak ada parameter&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"245\"/>\n        <source>Error parsing filter parameters\n\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersPresenter</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"513\"/>\n        <source>Unknown filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"623\"/>\n        <source>Cannot find this fave&apos;s original filter\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersView</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"353\"/>\n        <source>Remove fave</source>\n        <translation>Hapus favorit</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"680\"/>\n        <source>Rename Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"682\"/>\n        <source>Remove Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"684\"/>\n        <source>Clone Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"688\"/>\n        <source>Add Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"707\"/>\n        <source>Remove All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>%1 (%2 %3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"354\"/>\n        <source>Do you really want to remove the following fave?\n\n%1\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FolderParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FolderParameter.cpp\" line=\"138\"/>\n        <source>Select a folder</source>\n        <translation>Pilih folder</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::GmicProcessor</name>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"416\"/>\n        <source>Image #%1 returned by filter has %2 channels (should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"452\"/>\n        <source>Image #%1 returned by filter has %2 channels\n(should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::HeadlessProcessor</name>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"79\"/>\n        <source>At least a filter path or a filter command must be provided.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"81\"/>\n        <source>Custom command (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"89\"/>\n        <source>Cannot find filter matching path %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"96\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"114\"/>\n        <source>Error parsing supplied command: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"117\"/>\n        <source>Supplied command (%1) does not match path (%2), (should be %3).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"229\"/>\n        <source>Filter execution failed, but with no error message.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::InOutPanel</name>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"62\"/>\n        <source>Input layers</source>\n        <translation>Lapisan masukan</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"68\"/>\n        <source>None</source>\n        <translation>Tidak ada</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"69\"/>\n        <source>Active (default)</source>\n        <translation>Aktif (setelan standar)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"70\"/>\n        <source>All</source>\n        <translation>Semua</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"71\"/>\n        <source>Active and below</source>\n        <translation>Aktif dan bawah</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"72\"/>\n        <source>Active and above</source>\n        <translation>Aktif dan atas</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"73\"/>\n        <source>All visible</source>\n        <translation>Semua terlihat</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"74\"/>\n        <source>All invisible</source>\n        <translation>Semua tak terlihat</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"85\"/>\n        <source>Output mode</source>\n        <translation>Modus keluaran</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"91\"/>\n        <source>In place (default)</source>\n        <translation>Pada tempatnya (setelan standar)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"92\"/>\n        <source>New layer(s)</source>\n        <translation>Lapisan(-lapisan) baru</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"93\"/>\n        <source>New active layer(s)</source>\n        <translation>Lapisan(-lapisan) aktif baru</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"94\"/>\n        <source>New image</source>\n        <translation>Citra baru</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"205\"/>\n        <source>Input / Output</source>\n        <translation>Masukan / Keluaran</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"207\"/>\n        <source>Input</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"209\"/>\n        <source>Output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"53\"/>\n        <source>System default (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"62\"/>\n        <source>Translations are very likely to be incomplete.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MainWindow</name>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"108\"/>\n        <source>Add fave</source>\n        <translation>Tambah favorit</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"110\"/>\n        <source>Reset parameters to default values</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"113\"/>\n        <source>Randomize parameters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"119\"/>\n        <source>Copy G&apos;MIC command to clipboard</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"126\"/>\n        <source>Rename fave</source>\n        <translation>Namai ulang favorit</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"128\"/>\n        <source>Remove fave</source>\n        <translation>Hapus favorit</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"132\"/>\n        <source>Expand/Collapse all</source>\n        <translation>Expand/Collapse semua</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"134\"/>\n        <source>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandy University (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</source>\n        <translation>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandie Université (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"141\"/>\n        <source>Selection mode</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"180\"/>\n        <source>Update filters</source>\n        <translation>Perbarui filter (Ctrl+R / F5)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"232\"/>\n        <source>Manage visible tags\n(Right-click on a fave or a filter to set/remove tags)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"238\"/>\n        <source>Force &amp;quit</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"242\"/>\n        <source>Full</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"243\"/>\n        <source>Forward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"244\"/>\n        <source>Forward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"245\"/>\n        <source>Backward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"246\"/>\n        <source>Backward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"247\"/>\n        <source>Duplicate Top</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"248\"/>\n        <source>Duplicate Left</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"249\"/>\n        <source>Duplicate Bottom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"250\"/>\n        <source>Duplicate Right</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"251\"/>\n        <source>Duplicate Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"252\"/>\n        <source>Duplicate Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"253\"/>\n        <source>Checkered</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"254\"/>\n        <source>Checkered Inverse</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <source>Update completed</source>\n        <translation>Pembaruan selesai</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"378\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"509\"/>\n        <source>Filter definitions have been updated.</source>\n        <translation>Definisi filter telah diperbarui.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"381\"/>\n        <source>No download was needed.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"427\"/>\n        <source>Plugin was called with a filter path with no matching filter:\n\nPath: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"435\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"462\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"448\"/>\n        <source>Plugin was called with a command that cannot be recognized as a filter:\n\nCommand: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"927\"/>\n        <source>[Elapsed time: %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"443\"/>\n        <source>Plugin was called with a command that cannot be parsed:\n\n%1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"452\"/>\n        <source>Plugin was called with a command that does not match the provided path:\n\nPath: %1\nCommand: %2\nCommand found for this path : %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"505\"/>\n        <source>Filters update could not be achieved</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"646\"/>\n        <source>The update could not be achieved&lt;br&gt;because of the following errors:&lt;br&gt;</source>\n        <translation>Pembaruan gagal&lt;br/&gt;karena error berikut:&lt;br/&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"652\"/>\n        <source>Update error</source>\n        <translation>Error pada pembaruan</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"859\"/>\n        <source>Error</source>\n        <translation>Error</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1478\"/>\n        <source>Waiting for cancelled jobs...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Import faves</source>\n        <translation>Impor favorit</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Do you want to import faves from file below?&lt;br/&gt;%1</source>\n        <translation>Apa anda ingin mengimpor favorit dari berkas dibawah?&lt;br/&gt;%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1335\"/>\n        <source>Don&apos;t ask again</source>\n        <translation>Jangan tanya lagi</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>Confirmation</source>\n        <translation>Konfirmasi</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>A gmic command is running.&lt;br&gt;Do you really want to close the plugin?</source>\n        <translation>Perintah gmic tengah berjalan.&lt;br&gt;Apa anda benar ingin menutup plugin?</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/MultilineTextParameterWidget.cpp\" line=\"41\"/>\n        <source>Ctrl+Return</source>\n        <translation>Ctrl+Return</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"50\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"53\"/>\n        <source>Abort</source>\n        <translation>Hentikan</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"126\"/>\n        <source>[Processing 88:00:00.888 | 888.9 GiB]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"128\"/>\n        <source>[Processing 88:00:00.888]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"160\"/>\n        <source>Updating filters...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"213\"/>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"221\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Memproses %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"223\"/>\n        <source>[Processing %1]</source>\n        <translation>[Memproses %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"49\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"141\"/>\n        <source>%1 seconds</source>\n        <translation>%1 detik</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"151\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Memproses %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"153\"/>\n        <source>[Processing %1]</source>\n        <translation>[Memproses %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SearchFieldWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"80\"/>\n        <source>Search</source>\n        <translation>Cari</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"81\"/>\n        <source>Search in filters list (%1)</source>\n        <translation>Cari di daftar filter (%1)</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SourcesWidget</name>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"58\"/>\n        <source>Move source up</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"60\"/>\n        <source>Move source down</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"62\"/>\n        <source>Add local file (dialog)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"64\"/>\n        <source>Reset filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"80\"/>\n        <source>Macros: $HOME %USERPROFILE% $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"102\"/>\n        <source>Environment variables (e.g. %USERPROFILE% or %HOMEDIR%) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"82\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"53\"/>\n        <source>Remove source (Delete)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"85\"/>\n        <source>Disable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"86\"/>\n        <source>Enable without updates</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"87\"/>\n        <source>Enable with updates (recommended)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"106\"/>\n        <source>Environment variables (e.g. $HOME or ${HOME} for your home directory) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"111\"/>\n        <source>New source</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"192\"/>\n        <source>Select a file</source>\n        <translation type=\"unfinished\">Pilih berkas</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::Updater</name>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"137\"/>\n        <source>Error downloading %1 (empty file?)</source>\n        <translation>Error download %1 (berkas kosong?)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"146\"/>\n        <source>Could not read/decompress %1</source>\n        <translation>Tak terbaca/dekompresi %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"151\"/>\n        <source>Error writing file %1</source>\n        <translation>Error menulis berkas %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"168\"/>\n        <source>Error downloading %1&lt;br/&gt;Error %2: %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"204\"/>\n        <source>Download timeout: %1</source>\n        <translation>Unduhan menunggu: %1</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::VisibleTagSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"55\"/>\n        <source>Show All Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"59\"/>\n        <source>Show %1 Tags</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"54\"/>\n        <source>Zoom in</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"55\"/>\n        <source>Zoom out</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"56\"/>\n        <source>Reset zoom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"155\"/>\n        <source>Warning: Preview may be inaccurate (zoom factor has been modified)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>HeadlessProgressDialog</name>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Dialog</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"68\"/>\n        <source>Cancel</source>\n        <translation>Batal</translation>\n    </message>\n</context>\n<context>\n    <name>InOutPanel</name>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"40\"/>\n        <source>Input / Output</source>\n        <translation>Masukan / Keluaran</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"47\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"92\"/>\n        <source>Input layers</source>\n        <translation>Lapisan masukan</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"115\"/>\n        <source>Output mode</source>\n        <translation>Modus keluaran</translation>\n    </message>\n</context>\n<context>\n    <name>JpegQualityDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation type=\"unfinished\">Dialog</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"20\"/>\n        <location filename=\"../src/Host/None/JpegQualityDialog.cpp\" line=\"13\"/>\n        <source>JPEG Quality</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"28\"/>\n        <source>0</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"42\"/>\n        <source>100</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"60\"/>\n        <source>Always use this quality for this execution of G&apos;MIC-Qt</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"85\"/>\n        <source>&amp;Cancel</source>\n        <translation type=\"unfinished\">&amp;Batalkan</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"92\"/>\n        <source>&amp;Ok</source>\n        <translation type=\"unfinished\">&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"35\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation>&lt;i&gt;(Restart diperlukan)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"48\"/>\n        <source>Translate filters (WIP)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"18\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"176\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Download filter definitions from remote sources&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Scaricare le definizioni dei filtri da remoto&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"179\"/>\n        <source>Internet</source>\n        <translation>Internet</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"418\"/>\n        <source>Preview type (Ctrl+Shift+P)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"509\"/>\n        <source>&amp;Settings...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"525\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"532\"/>\n        <source>TextLabel</source>\n        <translation>LabelTeks</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"248\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"255\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"262\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation type=\"unfinished\">JendelaUtama</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"408\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable/disable preview&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(right click on preview image for instant swapping)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"411\"/>\n        <source>Preview</source>\n        <translation>Tinjauan</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"558\"/>\n        <source>&amp;Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"571\"/>\n        <source>&amp;Cancel</source>\n        <translation>&amp;Batalkan</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"545\"/>\n        <source>&amp;Fullscreen</source>\n        <translation>&amp;Layar penuh</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"584\"/>\n        <source>&amp;Apply</source>\n        <translation>&amp;Terapkan</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"597\"/>\n        <source>&amp;OK</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"29\"/>\n        <source>Update</source>\n        <translation>Perbarui</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"48\"/>\n        <source>Abort</source>\n        <translation>Hentikan</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"55\"/>\n        <source>TextLabel</source>\n        <translation>LabelTeks</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>JendelaUtama</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"30\"/>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"50\"/>\n        <source>TextLabel</source>\n        <translation>LabelTeks</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"72\"/>\n        <source>Cancel</source>\n        <translation>Batalkan</translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"76\"/>\n        <source>Select an image to open...</source>\n        <translation>Pilih citra untuk dibuka...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Error</source>\n        <translation>Error</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Could not open file.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"88\"/>\n        <source>Default image</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"81\"/>\n        <source>Visible</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"107\"/>\n        <source>Available filters (%1)</source>\n        <translation>Filter tersedia (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"151\"/>\n        <source>%1 Tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"157\"/>\n        <source>None</source>\n        <translation type=\"unfinished\">Tidak ada</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"158\"/>\n        <source>Red</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"159\"/>\n        <source>Green</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"160\"/>\n        <source>Blue</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"161\"/>\n        <source>Cyan</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"162\"/>\n        <source>Magenta</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"163\"/>\n        <source>Yellow</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"127\"/>\n        <source>Could not install translator for file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"130\"/>\n        <source>Could not load translation file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"337\"/>\n        <source>List %1 cannot be merged considering these runs: %2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"432\"/>\n        <source>%1 GiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"434\"/>\n        <source>%1 MiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"436\"/>\n        <source>%1 KiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"438\"/>\n        <source>%1 B</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>SearchFieldWidget</name>\n    <message>\n        <location filename=\"../ui/SearchFieldWidget.ui\" line=\"20\"/>\n        <source>Frame</source>\n        <translation>Bingkai</translation>\n    </message>\n</context>\n<context>\n    <name>SourcesWidget</name>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\">GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"136\"/>\n        <source>Official filters:</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"22\"/>\n        <source>File / URL</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"32\"/>\n        <source>Add new</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"39\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"55\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"62\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"85\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"92\"/>\n        <source>...</source>\n        <translation type=\"unfinished\">...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"118\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../ui/zoomlevelselector.ui\" line=\"20\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"73\"/>\n        <source>G&apos;MIC-Qt filter output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"84\"/>\n        <source>Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"87\"/>\n        <source>Save as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"122\"/>\n        <source>%1 file (*.%2 *.%3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"148\"/>\n        <source>Save image as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageView</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\">Error</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Could not write image file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "translations/it.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- Original Italian translation done by Francesco Riosa -->\n\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"it\">\n<context>\n    <name>DialogSettings</name>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Parametri</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"250\"/>\n        <source>Internet updates</source>\n        <translation>Aggiornamento da internet</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"259\"/>\n        <source>Update now</source>\n        <translation>Aggiorna</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"30\"/>\n        <source>Layout</source>\n        <translation>Disposizione</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"24\"/>\n        <source>Interface</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"64\"/>\n        <source>Preview on the &amp;left</source>\n        <translation>Anteprima a &amp;sinistra</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"94\"/>\n        <source>Pre&amp;view on right side</source>\n        <translation>Anteprima a &amp;destra</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"113\"/>\n        <source>Theme</source>\n        <translation>Tema</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"119\"/>\n        <source>&amp;Default</source>\n        <translation>&amp;Predefinito</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"126\"/>\n        <source>Dar&amp;k</source>\n        <translation>&amp;Scuro</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"139\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/I&gt;</source>\n        <translation>&lt;i&gt;(Modifica effettiva&lt;br/&gt;al prossimo riavvio.)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"149\"/>\n        <source>Language</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"179\"/>\n        <source>Always enable preview zooming</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"186\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Warning: preview may be inaccurate&lt;br/&gt;if checked.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"196\"/>\n        <source>Misc</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"209\"/>\n        <source>Use native file dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"216\"/>\n        <source>&amp;Enable High-DPI support</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"223\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation type=\"unfinished\">&lt;i&gt;(Modifica effettiva&lt;br/&gt;al prossimo riavvio.)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"239\"/>\n        <source>Filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"244\"/>\n        <source>Other</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"282\"/>\n        <source>Output messages</source>\n        <translation>Messaggi in uscita</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"202\"/>\n        <source>&amp;Use native color dialog</source>\n        <translation>&amp;Finestra selezione colori nativi</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"163\"/>\n        <source>Preview</source>\n        <translation>Anteprima</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"169\"/>\n        <source>Timeout (seconds)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"36\"/>\n        <source>Show institution logos</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"291\"/>\n        <source>Notify when scheduled update fails</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"333\"/>\n        <source>&amp;Ok</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>FiltersView</name>\n    <message>\n        <location filename=\"../ui/filtersview.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ColorParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/ColorParameter.cpp\" line=\"213\"/>\n        <source>Select color</source>\n        <translation>Selezionare un colore</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::DialogSettings</name>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"45\"/>\n        <source>Settings</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"51\"/>\n        <source>Never</source>\n        <translation>Mai</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"52\"/>\n        <source>Daily</source>\n        <translation>Giornaliero</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"53\"/>\n        <source>Weekly</source>\n        <translation>Settimanale</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"54\"/>\n        <source>Every 2 weeks</source>\n        <translation>Bisettimanale</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"55\"/>\n        <source>Monthly</source>\n        <translation>Mensile</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"57\"/>\n        <source>At launch (debug)</source>\n        <translation>All&apos;avvio (debug)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"65\"/>\n        <source>Output messages</source>\n        <translation>Messaggi in uscita</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"66\"/>\n        <source>Quiet (default)</source>\n        <translation>Silenzioso (defaut)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"67\"/>\n        <source>Verbose (console)</source>\n        <translation>Modalità verbosa (console)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"68\"/>\n        <source>Verbose (log file)</source>\n        <translation>Modalità verbosa (file di log)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"69\"/>\n        <source>Very verbose (console)</source>\n        <translation>Molto verboso (console)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"70\"/>\n        <source>Very verbose (log file)</source>\n        <translation>Molto verboso (fichier de log)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"71\"/>\n        <source>Debug (console)</source>\n        <translation>Molto verboso (console)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"72\"/>\n        <source>Debug (log file)</source>\n        <translation>Molto verboso (fichier de log)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"88\"/>\n        <source>Check to use Native/OS color dialog, uncheck to use Qt&apos;s</source>\n        <translation>Selezionare per utilizzare i colori nativi, deselezionare per utilizzare Qt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"90\"/>\n        <source>Check to use Native/OS file dialog, uncheck to use Qt&apos;s</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FileParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"159\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"162\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"165\"/>\n        <source>Select a file</source>\n        <translation>Selezionare un file</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FilterParametersWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"44\"/>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"273\"/>\n        <source>&lt;i&gt;Select a filter&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Selezionare un filtro&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"240\"/>\n        <source>&lt;i&gt;No parameters&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Nessun parametro&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"245\"/>\n        <source>Error parsing filter parameters\n\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersPresenter</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"513\"/>\n        <source>Unknown filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"623\"/>\n        <source>Cannot find this fave&apos;s original filter\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersView</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"353\"/>\n        <source>Remove fave</source>\n        <translation>Elimina favorito</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"680\"/>\n        <source>Rename Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"682\"/>\n        <source>Remove Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"684\"/>\n        <source>Clone Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"688\"/>\n        <source>Add Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"707\"/>\n        <source>Remove All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>%1 (%2 %3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"354\"/>\n        <source>Do you really want to remove the following fave?\n\n%1\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FolderParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FolderParameter.cpp\" line=\"138\"/>\n        <source>Select a folder</source>\n        <translation>Selezionare una cartella</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::GmicProcessor</name>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"416\"/>\n        <source>Image #%1 returned by filter has %2 channels (should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"452\"/>\n        <source>Image #%1 returned by filter has %2 channels\n(should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::HeadlessProcessor</name>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"79\"/>\n        <source>At least a filter path or a filter command must be provided.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"81\"/>\n        <source>Custom command (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"89\"/>\n        <source>Cannot find filter matching path %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"96\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"114\"/>\n        <source>Error parsing supplied command: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"117\"/>\n        <source>Supplied command (%1) does not match path (%2), (should be %3).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"229\"/>\n        <source>Filter execution failed, but with no error message.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::InOutPanel</name>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"62\"/>\n        <source>Input layers</source>\n        <translation>Livelli in ingresso</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"68\"/>\n        <source>None</source>\n        <translation>Nessuno</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"69\"/>\n        <source>Active (default)</source>\n        <translation>Attivo (predefinito)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"70\"/>\n        <source>All</source>\n        <translation>Tutti</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"71\"/>\n        <source>Active and below</source>\n        <translation>Attivo e sottostanti</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"72\"/>\n        <source>Active and above</source>\n        <translation>Attivo e soprastanti</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"73\"/>\n        <source>All visible</source>\n        <translation>Tutti i visibili</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"74\"/>\n        <source>All invisible</source>\n        <translation>Tutti gli invisibili</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"85\"/>\n        <source>Output mode</source>\n        <translation>Modalità di uscita</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"91\"/>\n        <source>In place (default)</source>\n        <translation>in loco (defaut)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"92\"/>\n        <source>New layer(s)</source>\n        <translation>Nuovo(x) livello(s)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"93\"/>\n        <source>New active layer(s)</source>\n        <translation>Nuovo(x) livello(s) attivo(s)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"94\"/>\n        <source>New image</source>\n        <translation>Nuova immagine</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"205\"/>\n        <source>Input / Output</source>\n        <translation>Ingresso / Uscita</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"207\"/>\n        <source>Input</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"209\"/>\n        <source>Output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"53\"/>\n        <source>System default (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"62\"/>\n        <source>Translations are very likely to be incomplete.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MainWindow</name>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"108\"/>\n        <source>Add fave</source>\n        <translation>Aggiungi ai favoriti</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"110\"/>\n        <source>Reset parameters to default values</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"113\"/>\n        <source>Randomize parameters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"119\"/>\n        <source>Copy G&apos;MIC command to clipboard</source>\n        <translation>Copia il comando G&apos;MIC negli appunti</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"126\"/>\n        <source>Rename fave</source>\n        <translation>Rinomina favorito</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"128\"/>\n        <source>Remove fave</source>\n        <translation>Elimina favorito</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"132\"/>\n        <source>Expand/Collapse all</source>\n        <translation>Espandi/Collassa tutto</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"134\"/>\n        <source>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandy University (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</source>\n        <translation>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandie Université (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"141\"/>\n        <source>Selection mode</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"180\"/>\n        <source>Update filters</source>\n        <translation>Aggiorna filtri</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"232\"/>\n        <source>Manage visible tags\n(Right-click on a fave or a filter to set/remove tags)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"238\"/>\n        <source>Force &amp;quit</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"242\"/>\n        <source>Full</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"243\"/>\n        <source>Forward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"244\"/>\n        <source>Forward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"245\"/>\n        <source>Backward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"246\"/>\n        <source>Backward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"247\"/>\n        <source>Duplicate Top</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"248\"/>\n        <source>Duplicate Left</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"249\"/>\n        <source>Duplicate Bottom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"250\"/>\n        <source>Duplicate Right</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"251\"/>\n        <source>Duplicate Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"252\"/>\n        <source>Duplicate Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"253\"/>\n        <source>Checkered</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"254\"/>\n        <source>Checkered Inverse</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <source>Update completed</source>\n        <translation>Aggiornamento completato</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"378\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"509\"/>\n        <source>Filter definitions have been updated.</source>\n        <translation>Le definizioni dei filtri sono state aggiornate.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"381\"/>\n        <source>No download was needed.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"427\"/>\n        <source>Plugin was called with a filter path with no matching filter:\n\nPath: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"435\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"462\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"448\"/>\n        <source>Plugin was called with a command that cannot be recognized as a filter:\n\nCommand: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"927\"/>\n        <source>[Elapsed time: %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"443\"/>\n        <source>Plugin was called with a command that cannot be parsed:\n\n%1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"452\"/>\n        <source>Plugin was called with a command that does not match the provided path:\n\nPath: %1\nCommand: %2\nCommand found for this path : %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"505\"/>\n        <source>Filters update could not be achieved</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"646\"/>\n        <source>The update could not be achieved&lt;br&gt;because of the following errors:&lt;br&gt;</source>\n        <translation>L&apos;aggiornamento non è stato possibile&lt;br/&gt;a causa dei seguenti errori :&lt;br/&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"652\"/>\n        <source>Update error</source>\n        <translation>Errori durante l&apos;aggiornamento</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"859\"/>\n        <source>Error</source>\n        <translation>Errore</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1478\"/>\n        <source>Waiting for cancelled jobs...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Import faves</source>\n        <translation>Importa favoriti</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Do you want to import faves from file below?&lt;br/&gt;%1</source>\n        <translation>Vuoi davvero importare i favoriti dal file sottostante?&lt;br/&gt;%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1335\"/>\n        <source>Don&apos;t ask again</source>\n        <translation>Non richiedere nuovamente</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>Confirmation</source>\n        <translation>Conferma</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>A gmic command is running.&lt;br&gt;Do you really want to close the plugin?</source>\n        <translation>Un comando gmic è in esecuzione.&lt;br&gt;Vuoi davvero chiudere il plugin?</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/MultilineTextParameterWidget.cpp\" line=\"41\"/>\n        <source>Ctrl+Return</source>\n        <translation>Ctrl+Return</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"50\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"53\"/>\n        <source>Abort</source>\n        <translation>Annullare</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"126\"/>\n        <source>[Processing 88:00:00.888 | 888.9 GiB]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"128\"/>\n        <source>[Processing 88:00:00.888]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"160\"/>\n        <source>Updating filters...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"213\"/>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"221\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"223\"/>\n        <source>[Processing %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"49\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"141\"/>\n        <source>%1 seconds</source>\n        <translation>%1 secondi</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"151\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"153\"/>\n        <source>[Processing %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SearchFieldWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"80\"/>\n        <source>Search</source>\n        <translation>Ricerca</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"81\"/>\n        <source>Search in filters list (%1)</source>\n        <translation>Ricerca nella finestra dei filtri (%1)</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SourcesWidget</name>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"58\"/>\n        <source>Move source up</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"60\"/>\n        <source>Move source down</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"62\"/>\n        <source>Add local file (dialog)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"64\"/>\n        <source>Reset filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"80\"/>\n        <source>Macros: $HOME %USERPROFILE% $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"102\"/>\n        <source>Environment variables (e.g. %USERPROFILE% or %HOMEDIR%) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"82\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"53\"/>\n        <source>Remove source (Delete)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"85\"/>\n        <source>Disable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"86\"/>\n        <source>Enable without updates</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"87\"/>\n        <source>Enable with updates (recommended)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"106\"/>\n        <source>Environment variables (e.g. $HOME or ${HOME} for your home directory) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"111\"/>\n        <source>New source</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"192\"/>\n        <source>Select a file</source>\n        <translation type=\"unfinished\">Selezionare un file</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::Updater</name>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"137\"/>\n        <source>Error downloading %1 (empty file?)</source>\n        <translation>Errore di scaricamento %1 (File vuoto ?)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"146\"/>\n        <source>Could not read/decompress %1</source>\n        <translation>Impossibile leggere/decomprimere %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"151\"/>\n        <source>Error writing file %1</source>\n        <translation>Errore scrittura file %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"168\"/>\n        <source>Error downloading %1&lt;br/&gt;Error %2: %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"204\"/>\n        <source>Download timeout: %1</source>\n        <translation>Tempo scaduto: %1</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::VisibleTagSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"55\"/>\n        <source>Show All Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"59\"/>\n        <source>Show %1 Tags</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"54\"/>\n        <source>Zoom in</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"55\"/>\n        <source>Zoom out</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"56\"/>\n        <source>Reset zoom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"155\"/>\n        <source>Warning: Preview may be inaccurate (zoom factor has been modified)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>HeadlessProgressDialog</name>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Avanzamento</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"68\"/>\n        <source>Cancel</source>\n        <translation>Annulla</translation>\n    </message>\n</context>\n<context>\n    <name>InOutPanel</name>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"40\"/>\n        <source>Input / Output</source>\n        <translation>Ingresso / Uscita</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"47\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"92\"/>\n        <source>Input layers</source>\n        <translation>Livelli in ingresso</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"115\"/>\n        <source>Output mode</source>\n        <translation>Modalità di uscita</translation>\n    </message>\n</context>\n<context>\n    <name>JpegQualityDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"20\"/>\n        <location filename=\"../src/Host/None/JpegQualityDialog.cpp\" line=\"13\"/>\n        <source>JPEG Quality</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"28\"/>\n        <source>0</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"42\"/>\n        <source>100</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"60\"/>\n        <source>Always use this quality for this execution of G&apos;MIC-Qt</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"85\"/>\n        <source>&amp;Cancel</source>\n        <translation type=\"unfinished\">&amp;Annulla</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"92\"/>\n        <source>&amp;Ok</source>\n        <translation type=\"unfinished\">&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"35\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation>&lt;i&gt;(Modifica effettiva&lt;br/&gt;al prossimo riavvio.)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"48\"/>\n        <source>Translate filters (WIP)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"18\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"176\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Download filter definitions from remote sources&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Scaricare le definizioni dei filtri da remoto&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"179\"/>\n        <source>Internet</source>\n        <translation>Internet</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"418\"/>\n        <source>Preview type (Ctrl+Shift+P)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"509\"/>\n        <source>&amp;Settings...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"525\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"532\"/>\n        <source>TextLabel</source>\n        <translation type=\"unfinished\">TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"248\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"255\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"262\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation type=\"unfinished\">MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"408\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable/disable preview&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(right click on preview image for instant swapping)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"411\"/>\n        <source>Preview</source>\n        <translation>Anteprima</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"558\"/>\n        <source>&amp;Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"571\"/>\n        <source>&amp;Cancel</source>\n        <translation>&amp;Annulla</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"545\"/>\n        <source>&amp;Fullscreen</source>\n        <translation>&amp;Tutto schermo</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"584\"/>\n        <source>&amp;Apply</source>\n        <translation>&amp;Applica</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"597\"/>\n        <source>&amp;OK</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"29\"/>\n        <source>Update</source>\n        <translation>Aggiornare</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"48\"/>\n        <source>Abort</source>\n        <translation>Annullare</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"55\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"30\"/>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"50\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"72\"/>\n        <source>Cancel</source>\n        <translation>Cancel</translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"76\"/>\n        <source>Select an image to open...</source>\n        <translation>Selezionare un&apos;immagine da aprire...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Error</source>\n        <translation>Errore</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Could not open file.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"88\"/>\n        <source>Default image</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"81\"/>\n        <source>Visible</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"107\"/>\n        <source>Available filters (%1)</source>\n        <translation>Filtri disponibili(%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"151\"/>\n        <source>%1 Tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"157\"/>\n        <source>None</source>\n        <translation type=\"unfinished\">Nessuno</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"158\"/>\n        <source>Red</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"159\"/>\n        <source>Green</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"160\"/>\n        <source>Blue</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"161\"/>\n        <source>Cyan</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"162\"/>\n        <source>Magenta</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"163\"/>\n        <source>Yellow</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"127\"/>\n        <source>Could not install translator for file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"130\"/>\n        <source>Could not load translation file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"337\"/>\n        <source>List %1 cannot be merged considering these runs: %2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"432\"/>\n        <source>%1 GiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"434\"/>\n        <source>%1 MiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"436\"/>\n        <source>%1 KiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"438\"/>\n        <source>%1 B</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>SearchFieldWidget</name>\n    <message>\n        <location filename=\"../ui/SearchFieldWidget.ui\" line=\"20\"/>\n        <source>Frame</source>\n        <translation>Frame</translation>\n    </message>\n</context>\n<context>\n    <name>SourcesWidget</name>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\">GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"136\"/>\n        <source>Official filters:</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"22\"/>\n        <source>File / URL</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"32\"/>\n        <source>Add new</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"39\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"55\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"62\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"85\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"92\"/>\n        <source>...</source>\n        <translation type=\"unfinished\">...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"118\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../ui/zoomlevelselector.ui\" line=\"20\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"73\"/>\n        <source>G&apos;MIC-Qt filter output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"84\"/>\n        <source>Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"87\"/>\n        <source>Save as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"122\"/>\n        <source>%1 file (*.%2 *.%3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"148\"/>\n        <source>Save image as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageView</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\">Errore</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Could not write image file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "translations/ja.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- Original Japanese translation done by omiya tou (tokyogeometry / github) -->\n\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"ja\">\n<context>\n    <name>DialogSettings</name>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>ダイアログ</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"250\"/>\n        <source>Internet updates</source>\n        <translation>インターネット更新</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"259\"/>\n        <source>Update now</source>\n        <translation>今すぐ更新</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"30\"/>\n        <source>Layout</source>\n        <translation>レイアウト</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"24\"/>\n        <source>Interface</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"64\"/>\n        <source>Preview on the &amp;left</source>\n        <translation>左側にプレビューを表示(&amp;L)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"94\"/>\n        <source>Pre&amp;view on right side</source>\n        <translation>右側にプレビューを表示(&amp;V)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"113\"/>\n        <source>Theme</source>\n        <translation>テーマ</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"119\"/>\n        <source>&amp;Default</source>\n        <translation>デフォルト(&amp;D)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"126\"/>\n        <source>Dar&amp;k</source>\n        <translation>暗い色(&amp;K)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"139\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/I&gt;</source>\n        <translation>&lt;i&gt;(再起動が必要です)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"149\"/>\n        <source>Language</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"179\"/>\n        <source>Always enable preview zooming</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"186\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Warning: preview may be inaccurate&lt;br/&gt;if checked.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"196\"/>\n        <source>Misc</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"209\"/>\n        <source>Use native file dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"216\"/>\n        <source>&amp;Enable High-DPI support</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"223\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation type=\"unfinished\">&lt;i&gt;(再起動が必要です)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"239\"/>\n        <source>Filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"244\"/>\n        <source>Other</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"282\"/>\n        <source>Output messages</source>\n        <translation>出力メッセージ</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"202\"/>\n        <source>&amp;Use native color dialog</source>\n        <translation>ネイティブな色選択ダイアログを使用</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"163\"/>\n        <source>Preview</source>\n        <translation>プレビュー</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"169\"/>\n        <source>Timeout (seconds)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"36\"/>\n        <source>Show institution logos</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"291\"/>\n        <source>Notify when scheduled update fails</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"333\"/>\n        <source>&amp;Ok</source>\n        <translation>OK(&amp;O)</translation>\n    </message>\n</context>\n<context>\n    <name>FiltersView</name>\n    <message>\n        <location filename=\"../ui/filtersview.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>フォーム</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ColorParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/ColorParameter.cpp\" line=\"213\"/>\n        <source>Select color</source>\n        <translation>色を選択</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::DialogSettings</name>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"45\"/>\n        <source>Settings</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"51\"/>\n        <source>Never</source>\n        <translation>行わない</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"52\"/>\n        <source>Daily</source>\n        <translation>毎日</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"53\"/>\n        <source>Weekly</source>\n        <translation>毎週</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"54\"/>\n        <source>Every 2 weeks</source>\n        <translation>隔週</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"55\"/>\n        <source>Monthly</source>\n        <translation>毎月</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"57\"/>\n        <source>At launch (debug)</source>\n        <translation>起動時 (デバッグ用)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"65\"/>\n        <source>Output messages</source>\n        <translation>出力メッセージ</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"66\"/>\n        <source>Quiet (default)</source>\n        <translation>なし (デフォルト)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"67\"/>\n        <source>Verbose (console)</source>\n        <translation>詳細 (コンソール)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"68\"/>\n        <source>Verbose (log file)</source>\n        <translation>詳細 (ログファイル)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"69\"/>\n        <source>Very verbose (console)</source>\n        <translation>非常に詳細 (コンソール)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"70\"/>\n        <source>Very verbose (log file)</source>\n        <translation>非常に詳細 (ログファイル)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"71\"/>\n        <source>Debug (console)</source>\n        <translation>デバッグ (コンソール)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"72\"/>\n        <source>Debug (log file)</source>\n        <translation>デバッグ (ログファイル)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"88\"/>\n        <source>Check to use Native/OS color dialog, uncheck to use Qt&apos;s</source>\n        <translation>チェックすると、システムに標準搭載された色選択ダイアログを使用します。チェックを外すと、Qt の色選択ダイアログを使用します</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"90\"/>\n        <source>Check to use Native/OS file dialog, uncheck to use Qt&apos;s</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FileParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"159\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"162\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"165\"/>\n        <source>Select a file</source>\n        <translation>ファイルを選択</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FilterParametersWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"44\"/>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"273\"/>\n        <source>&lt;i&gt;Select a filter&lt;/i&gt;</source>\n        <translation>&lt;i&gt;フィルタを選択&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"240\"/>\n        <source>&lt;i&gt;No parameters&lt;/i&gt;</source>\n        <translation>&lt;i&gt;パラメータなし&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"245\"/>\n        <source>Error parsing filter parameters\n\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersPresenter</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"513\"/>\n        <source>Unknown filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"623\"/>\n        <source>Cannot find this fave&apos;s original filter\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersView</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"353\"/>\n        <source>Remove fave</source>\n        <translation>お気に入りから削除</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"680\"/>\n        <source>Rename Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"682\"/>\n        <source>Remove Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"684\"/>\n        <source>Clone Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"688\"/>\n        <source>Add Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"707\"/>\n        <source>Remove All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>%1 (%2 %3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"354\"/>\n        <source>Do you really want to remove the following fave?\n\n%1\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FolderParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FolderParameter.cpp\" line=\"138\"/>\n        <source>Select a folder</source>\n        <translation>フォルダを選択</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::GmicProcessor</name>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"416\"/>\n        <source>Image #%1 returned by filter has %2 channels (should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"452\"/>\n        <source>Image #%1 returned by filter has %2 channels\n(should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::HeadlessProcessor</name>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"79\"/>\n        <source>At least a filter path or a filter command must be provided.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"81\"/>\n        <source>Custom command (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"89\"/>\n        <source>Cannot find filter matching path %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"96\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"114\"/>\n        <source>Error parsing supplied command: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"117\"/>\n        <source>Supplied command (%1) does not match path (%2), (should be %3).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"229\"/>\n        <source>Filter execution failed, but with no error message.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::InOutPanel</name>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"62\"/>\n        <source>Input layers</source>\n        <translation>入力レイヤー</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"68\"/>\n        <source>None</source>\n        <translation>なし</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"69\"/>\n        <source>Active (default)</source>\n        <translation>アクティブなレイヤー (デフォルト)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"70\"/>\n        <source>All</source>\n        <translation>すべて</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"71\"/>\n        <source>Active and below</source>\n        <translation>アクティブなレイヤーとその下のレイヤー</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"72\"/>\n        <source>Active and above</source>\n        <translation>アクティブなレイヤーとその上のレイヤー</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"73\"/>\n        <source>All visible</source>\n        <translation>すべての可視レイヤー</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"74\"/>\n        <source>All invisible</source>\n        <translation>すべての不可視レイヤー</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"85\"/>\n        <source>Output mode</source>\n        <translation>出力モード</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"91\"/>\n        <source>In place (default)</source>\n        <translation>現在のレイヤー (デフォルト)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"92\"/>\n        <source>New layer(s)</source>\n        <translation>新規レイヤー</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"93\"/>\n        <source>New active layer(s)</source>\n        <translation>新規アクティブレイヤー</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"94\"/>\n        <source>New image</source>\n        <translation>新規画像</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"205\"/>\n        <source>Input / Output</source>\n        <translation>入力 / 出力</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"207\"/>\n        <source>Input</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"209\"/>\n        <source>Output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"53\"/>\n        <source>System default (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"62\"/>\n        <source>Translations are very likely to be incomplete.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MainWindow</name>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"108\"/>\n        <source>Add fave</source>\n        <translation>お気に入りに追加</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"110\"/>\n        <source>Reset parameters to default values</source>\n        <translation>パラメータの値を初期化</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"113\"/>\n        <source>Randomize parameters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"119\"/>\n        <source>Copy G&apos;MIC command to clipboard</source>\n        <translation>G&apos;MICコマンドをクリップボードにコピー</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"126\"/>\n        <source>Rename fave</source>\n        <translation>お気に入りの名前を変更</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"128\"/>\n        <source>Remove fave</source>\n        <translation>お気に入りから削除</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"132\"/>\n        <source>Expand/Collapse all</source>\n        <translation>すべて展開/すべて畳む</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"134\"/>\n        <source>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandy University (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</source>\n        <translation>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;フランス国立科学研究センター (https://www.cnrs.fr)&lt;br/&gt;カーン・ノルマンディー大学 (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"141\"/>\n        <source>Selection mode</source>\n        <translation>選択モード</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"180\"/>\n        <source>Update filters</source>\n        <translation>フィルタを更新</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"232\"/>\n        <source>Manage visible tags\n(Right-click on a fave or a filter to set/remove tags)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"238\"/>\n        <source>Force &amp;quit</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"242\"/>\n        <source>Full</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"243\"/>\n        <source>Forward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"244\"/>\n        <source>Forward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"245\"/>\n        <source>Backward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"246\"/>\n        <source>Backward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"247\"/>\n        <source>Duplicate Top</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"248\"/>\n        <source>Duplicate Left</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"249\"/>\n        <source>Duplicate Bottom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"250\"/>\n        <source>Duplicate Right</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"251\"/>\n        <source>Duplicate Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"252\"/>\n        <source>Duplicate Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"253\"/>\n        <source>Checkered</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"254\"/>\n        <source>Checkered Inverse</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <source>Update completed</source>\n        <translation>更新が完了しました</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"378\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"509\"/>\n        <source>Filter definitions have been updated.</source>\n        <translation>フィルタ定義の更新が完了しました。</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"381\"/>\n        <source>No download was needed.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"427\"/>\n        <source>Plugin was called with a filter path with no matching filter:\n\nPath: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"435\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"462\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"448\"/>\n        <source>Plugin was called with a command that cannot be recognized as a filter:\n\nCommand: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"927\"/>\n        <source>[Elapsed time: %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"443\"/>\n        <source>Plugin was called with a command that cannot be parsed:\n\n%1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"452\"/>\n        <source>Plugin was called with a command that does not match the provided path:\n\nPath: %1\nCommand: %2\nCommand found for this path : %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"505\"/>\n        <source>Filters update could not be achieved</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"646\"/>\n        <source>The update could not be achieved&lt;br&gt;because of the following errors:&lt;br&gt;</source>\n        <translation>以下のエラーにより&lt;br/&gt;更新に失敗しました:&lt;br/&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"652\"/>\n        <source>Update error</source>\n        <translation>更新エラー</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"859\"/>\n        <source>Error</source>\n        <translation>エラー</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1478\"/>\n        <source>Waiting for cancelled jobs...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Import faves</source>\n        <translation>お気に入りをインポート</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Do you want to import faves from file below?&lt;br/&gt;%1</source>\n        <translation>以下のファイルからお気に入りをインポートしますか？&lt;br/&gt;%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1335\"/>\n        <source>Don&apos;t ask again</source>\n        <translation>次回から確認しない</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>Confirmation</source>\n        <translation>確認</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>A gmic command is running.&lt;br&gt;Do you really want to close the plugin?</source>\n        <translation>G&apos;MIC コマンドが実行中です。&lt;br&gt;本当にプラグインを終了しますか？</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/MultilineTextParameterWidget.cpp\" line=\"41\"/>\n        <source>Ctrl+Return</source>\n        <translation>Ctrl+Enter</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"50\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"53\"/>\n        <source>Abort</source>\n        <translation>中止</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"126\"/>\n        <source>[Processing 88:00:00.888 | 888.9 GiB]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"128\"/>\n        <source>[Processing 88:00:00.888]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"160\"/>\n        <source>Updating filters...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"213\"/>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"221\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"223\"/>\n        <source>[Processing %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"49\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"141\"/>\n        <source>%1 seconds</source>\n        <translation>%1 秒</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"151\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"153\"/>\n        <source>[Processing %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SearchFieldWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"80\"/>\n        <source>Search</source>\n        <translation>検索</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"81\"/>\n        <source>Search in filters list (%1)</source>\n        <translation>フィルタ一覧を検索 (%1)</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SourcesWidget</name>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"58\"/>\n        <source>Move source up</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"60\"/>\n        <source>Move source down</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"62\"/>\n        <source>Add local file (dialog)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"64\"/>\n        <source>Reset filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"80\"/>\n        <source>Macros: $HOME %USERPROFILE% $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"102\"/>\n        <source>Environment variables (e.g. %USERPROFILE% or %HOMEDIR%) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"82\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"53\"/>\n        <source>Remove source (Delete)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"85\"/>\n        <source>Disable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"86\"/>\n        <source>Enable without updates</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"87\"/>\n        <source>Enable with updates (recommended)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"106\"/>\n        <source>Environment variables (e.g. $HOME or ${HOME} for your home directory) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"111\"/>\n        <source>New source</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"192\"/>\n        <source>Select a file</source>\n        <translation type=\"unfinished\">ファイルを選択</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::Updater</name>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"137\"/>\n        <source>Error downloading %1 (empty file?)</source>\n        <translation>%1 のダウンロード中にエラーが発生しました (空ファイル？)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"146\"/>\n        <source>Could not read/decompress %1</source>\n        <translation>%1 を読み込み・展開できませんでした</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"151\"/>\n        <source>Error writing file %1</source>\n        <translation>ファイル %1 の書き込み中にエラーが発生しました</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"168\"/>\n        <source>Error downloading %1&lt;br/&gt;Error %2: %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"204\"/>\n        <source>Download timeout: %1</source>\n        <translation>ダウンロード中にタイムアウト: %1</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::VisibleTagSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"55\"/>\n        <source>Show All Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"59\"/>\n        <source>Show %1 Tags</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"54\"/>\n        <source>Zoom in</source>\n        <translation>ズームイン</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"55\"/>\n        <source>Zoom out</source>\n        <translation>ズームアウト</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"56\"/>\n        <source>Reset zoom</source>\n        <translation>拡大率をリセット</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"155\"/>\n        <source>Warning: Preview may be inaccurate (zoom factor has been modified)</source>\n        <translation>警告: プレビューは実際の処理結果と異なる場合があります (拡大率が変更されています)</translation>\n    </message>\n</context>\n<context>\n    <name>HeadlessProgressDialog</name>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>ダイアログ</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"68\"/>\n        <source>Cancel</source>\n        <translation>キャンセル</translation>\n    </message>\n</context>\n<context>\n    <name>InOutPanel</name>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"40\"/>\n        <source>Input / Output</source>\n        <translation>入力 / 出力</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"47\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"92\"/>\n        <source>Input layers</source>\n        <translation>入力レイヤー</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"115\"/>\n        <source>Output mode</source>\n        <translation>出力モード</translation>\n    </message>\n</context>\n<context>\n    <name>JpegQualityDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation type=\"unfinished\">ダイアログ</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"20\"/>\n        <location filename=\"../src/Host/None/JpegQualityDialog.cpp\" line=\"13\"/>\n        <source>JPEG Quality</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"28\"/>\n        <source>0</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"42\"/>\n        <source>100</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"60\"/>\n        <source>Always use this quality for this execution of G&apos;MIC-Qt</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"85\"/>\n        <source>&amp;Cancel</source>\n        <translation type=\"unfinished\">キャンセル(&amp;C)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"92\"/>\n        <source>&amp;Ok</source>\n        <translation type=\"unfinished\">OK(&amp;O)</translation>\n    </message>\n</context>\n<context>\n    <name>LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>フォーム</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"35\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation>&lt;i&gt;(再起動が必要です)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"48\"/>\n        <source>Translate filters (WIP)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"18\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"176\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Download filter definitions from remote sources&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Télécharger les définitions de filtres depuis les sources distantes&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"179\"/>\n        <source>Internet</source>\n        <translation>インターネット</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"418\"/>\n        <source>Preview type (Ctrl+Shift+P)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"509\"/>\n        <source>&amp;Settings...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"525\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"532\"/>\n        <source>TextLabel</source>\n        <translation type=\"unfinished\">TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"248\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"255\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"262\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation type=\"unfinished\">MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"408\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable/disable preview&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(right click on preview image for instant swapping)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"411\"/>\n        <source>Preview</source>\n        <translation>プレビュー</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"558\"/>\n        <source>&amp;Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"571\"/>\n        <source>&amp;Cancel</source>\n        <translation>キャンセル(&amp;C)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"545\"/>\n        <source>&amp;Fullscreen</source>\n        <translation>フルスクリーン(&amp;F)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"584\"/>\n        <source>&amp;Apply</source>\n        <translation>適用(&amp;A)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"597\"/>\n        <source>&amp;OK</source>\n        <translation>OK(&amp;O)</translation>\n    </message>\n</context>\n<context>\n    <name>MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"29\"/>\n        <source>Update</source>\n        <translation>更新</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"48\"/>\n        <source>Abort</source>\n        <translation>中止</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"55\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"30\"/>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"50\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"72\"/>\n        <source>Cancel</source>\n        <translation>キャンセル</translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"76\"/>\n        <source>Select an image to open...</source>\n        <translation>開く画像を選択...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Error</source>\n        <translation>エラー</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Could not open file.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"88\"/>\n        <source>Default image</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"81\"/>\n        <source>Visible</source>\n        <translation>一覧に表示</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"107\"/>\n        <source>Available filters (%1)</source>\n        <translation>使用可能なフィルタ (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"151\"/>\n        <source>%1 Tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"157\"/>\n        <source>None</source>\n        <translation type=\"unfinished\">なし</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"158\"/>\n        <source>Red</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"159\"/>\n        <source>Green</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"160\"/>\n        <source>Blue</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"161\"/>\n        <source>Cyan</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"162\"/>\n        <source>Magenta</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"163\"/>\n        <source>Yellow</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"127\"/>\n        <source>Could not install translator for file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"130\"/>\n        <source>Could not load translation file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"337\"/>\n        <source>List %1 cannot be merged considering these runs: %2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"432\"/>\n        <source>%1 GiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"434\"/>\n        <source>%1 MiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"436\"/>\n        <source>%1 KiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"438\"/>\n        <source>%1 B</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>SearchFieldWidget</name>\n    <message>\n        <location filename=\"../ui/SearchFieldWidget.ui\" line=\"20\"/>\n        <source>Frame</source>\n        <translation>フレーム</translation>\n    </message>\n</context>\n<context>\n    <name>SourcesWidget</name>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"136\"/>\n        <source>Official filters:</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"22\"/>\n        <source>File / URL</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"32\"/>\n        <source>Add new</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"39\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"55\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"62\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"85\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"92\"/>\n        <source>...</source>\n        <translation type=\"unfinished\">...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"118\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../ui/zoomlevelselector.ui\" line=\"20\"/>\n        <source>Form</source>\n        <translation>フォーム</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"73\"/>\n        <source>G&apos;MIC-Qt filter output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"84\"/>\n        <source>Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"87\"/>\n        <source>Save as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"122\"/>\n        <source>%1 file (*.%2 *.%3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"148\"/>\n        <source>Save image as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageView</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\">エラー</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Could not write image file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "translations/lrelease.sh",
    "content": "#!/usr/bin/env bash\nfunction usage()\n{\n  cat <<EOF\nUsage:\n       `basename $0` file.ts\n\n   Call lrelease or lrelease-qt5 on file, depending on which command exists.\n\nEOF\n  exit 0\n}\n\nfunction die()\n{\n  local message=\"$@\"\n  >&2 echo \"$message\"\n  exit 1\n}\n\nfunction exists()\n{\n  type \"$1\" >& /dev/null\n}\n\nin=\"$1\"\n[[ -z \"$in\" ]] && usage\n[[ ! -e \"$in\" ]] && die \"File not found: $in\"\n[[ ! $in =~ .*\\.ts$  ]] && die \"Not a ts file: $in\"\n\nif exists lrelease-qt5 ; then\n  exec lrelease-qt5 -compress \"$in\"\nelif exists lrelease ; then\n  exec lrelease -compress \"$in\"\nelse\n  die \"No lrelease(-qt5) command available.\"\nfi\n"
  },
  {
    "path": "translations/nl.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- Original Dutch translation done by iarga / pixls.us -->\n\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"nl\">\n<context>\n    <name>DialogSettings</name>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Instellingen</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"250\"/>\n        <source>Internet updates</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"259\"/>\n        <source>Update now</source>\n        <translation>Nu updaten</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"30\"/>\n        <source>Layout</source>\n        <translation>Lay-out</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"24\"/>\n        <source>Interface</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"64\"/>\n        <source>Preview on the &amp;left</source>\n        <translation>Preview aan &amp;linkerzijde</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"94\"/>\n        <source>Pre&amp;view on right side</source>\n        <translation>Preview aan &amp;rechterzijde</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"113\"/>\n        <source>Theme</source>\n        <translation>Thema</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"119\"/>\n        <source>&amp;Default</source>\n        <translation>&amp;standaard</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"126\"/>\n        <source>Dar&amp;k</source>\n        <translation>&amp;Donker</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"139\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/I&gt;</source>\n        <translation>&lt;i&gt;(Opnieuw opstarten nodig)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"149\"/>\n        <source>Language</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"179\"/>\n        <source>Always enable preview zooming</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"186\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Warning: preview may be inaccurate&lt;br/&gt;if checked.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"196\"/>\n        <source>Misc</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"209\"/>\n        <source>Use native file dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"216\"/>\n        <source>&amp;Enable High-DPI support</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"223\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation type=\"unfinished\">&lt;i&gt;(Opnieuw opstarten nodig)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"239\"/>\n        <source>Filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"244\"/>\n        <source>Other</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"282\"/>\n        <source>Output messages</source>\n        <translation>Uitvoer berichten</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"202\"/>\n        <source>&amp;Use native color dialog</source>\n        <translation>&amp;Gebruik standaard kleur in dialoogvenster</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"163\"/>\n        <source>Preview</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"169\"/>\n        <source>Timeout (seconds)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"36\"/>\n        <source>Show institution logos</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"291\"/>\n        <source>Notify when scheduled update fails</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"333\"/>\n        <source>&amp;Ok</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>FiltersView</name>\n    <message>\n        <location filename=\"../ui/filtersview.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ColorParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/ColorParameter.cpp\" line=\"213\"/>\n        <source>Select color</source>\n        <translation>Selecteer een kleur</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::DialogSettings</name>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"45\"/>\n        <source>Settings</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"51\"/>\n        <source>Never</source>\n        <translation>Nooit</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"52\"/>\n        <source>Daily</source>\n        <translation>Dagelijks</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"53\"/>\n        <source>Weekly</source>\n        <translation>Weekelijks</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"54\"/>\n        <source>Every 2 weeks</source>\n        <translation>Elke twee weken</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"55\"/>\n        <source>Monthly</source>\n        <translation>Maandelijks</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"57\"/>\n        <source>At launch (debug)</source>\n        <translation>Bij opstarten (debug)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"65\"/>\n        <source>Output messages</source>\n        <translation>Uitvoer berichten</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"66\"/>\n        <source>Quiet (default)</source>\n        <translation>Geen bericht (standaard)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"67\"/>\n        <source>Verbose (console)</source>\n        <translation>Uitgebreid (console)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"68\"/>\n        <source>Verbose (log file)</source>\n        <translation>Uitgebreid (logbestand)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"69\"/>\n        <source>Very verbose (console)</source>\n        <translation>Zeer uitgebreid (console)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"70\"/>\n        <source>Very verbose (log file)</source>\n        <translation>Zeer uitgebreid (logbestand)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"71\"/>\n        <source>Debug (console)</source>\n        <translation>Debug (console)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"72\"/>\n        <source>Debug (log file)</source>\n        <translation>Debug (logbestand)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"88\"/>\n        <source>Check to use Native/OS color dialog, uncheck to use Qt&apos;s</source>\n        <translation>Aan voor standaard OS-kleur omgeving, Uit voor QT-kleur</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"90\"/>\n        <source>Check to use Native/OS file dialog, uncheck to use Qt&apos;s</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FileParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"159\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"162\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"165\"/>\n        <source>Select a file</source>\n        <translation>Selecteer een bestand</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FilterParametersWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"44\"/>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"273\"/>\n        <source>&lt;i&gt;Select a filter&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Selecteer een filter&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"240\"/>\n        <source>&lt;i&gt;No parameters&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Geen parameters&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"245\"/>\n        <source>Error parsing filter parameters\n\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersPresenter</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"513\"/>\n        <source>Unknown filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"623\"/>\n        <source>Cannot find this fave&apos;s original filter\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersView</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"353\"/>\n        <source>Remove fave</source>\n        <translation>Verwijder favoriet</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"680\"/>\n        <source>Rename Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"682\"/>\n        <source>Remove Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"684\"/>\n        <source>Clone Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"688\"/>\n        <source>Add Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"707\"/>\n        <source>Remove All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>%1 (%2 %3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"354\"/>\n        <source>Do you really want to remove the following fave?\n\n%1\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FolderParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FolderParameter.cpp\" line=\"138\"/>\n        <source>Select a folder</source>\n        <translation>Selecteer een map</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::GmicProcessor</name>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"416\"/>\n        <source>Image #%1 returned by filter has %2 channels (should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"452\"/>\n        <source>Image #%1 returned by filter has %2 channels\n(should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::HeadlessProcessor</name>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"79\"/>\n        <source>At least a filter path or a filter command must be provided.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"81\"/>\n        <source>Custom command (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"89\"/>\n        <source>Cannot find filter matching path %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"96\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"114\"/>\n        <source>Error parsing supplied command: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"117\"/>\n        <source>Supplied command (%1) does not match path (%2), (should be %3).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"229\"/>\n        <source>Filter execution failed, but with no error message.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::InOutPanel</name>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"62\"/>\n        <source>Input layers</source>\n        <translation>Invoer lagen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"68\"/>\n        <source>None</source>\n        <translation>Geen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"69\"/>\n        <source>Active (default)</source>\n        <translation>Actief (standaard)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"70\"/>\n        <source>All</source>\n        <translation>Alle</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"71\"/>\n        <source>Active and below</source>\n        <translation>Actief en daaronder</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"72\"/>\n        <source>Active and above</source>\n        <translation>Actief en daarboven</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"73\"/>\n        <source>All visible</source>\n        <translation>Alle zichtbare lagen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"74\"/>\n        <source>All invisible</source>\n        <translation>Alle onzichtbare lagen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"85\"/>\n        <source>Output mode</source>\n        <translation>Uitvoer-modus</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"91\"/>\n        <source>In place (default)</source>\n        <translation>In plaats van (standaard)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"92\"/>\n        <source>New layer(s)</source>\n        <translation>Nieuwe laag/lagen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"93\"/>\n        <source>New active layer(s)</source>\n        <translation>Nieuwe actieve laag/lagen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"94\"/>\n        <source>New image</source>\n        <translation>Nieuwe afbeelding</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"205\"/>\n        <source>Input / Output</source>\n        <translation>Invoer / Uitvoer</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"207\"/>\n        <source>Input</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"209\"/>\n        <source>Output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"53\"/>\n        <source>System default (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"62\"/>\n        <source>Translations are very likely to be incomplete.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MainWindow</name>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"108\"/>\n        <source>Add fave</source>\n        <translation>Voeg favoriet toe</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"110\"/>\n        <source>Reset parameters to default values</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"113\"/>\n        <source>Randomize parameters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"119\"/>\n        <source>Copy G&apos;MIC command to clipboard</source>\n        <translation>Kopieer G&apos;MIC commando naar klembord</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"126\"/>\n        <source>Rename fave</source>\n        <translation>Hernoem een favoriet</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"128\"/>\n        <source>Remove fave</source>\n        <translation>Verwijder favoriet</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"132\"/>\n        <source>Expand/Collapse all</source>\n        <translation>Alles Uitbreiden/Samenvouwen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"134\"/>\n        <source>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandy University (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</source>\n        <translation>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandie Universiteit (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"141\"/>\n        <source>Selection mode</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"180\"/>\n        <source>Update filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"232\"/>\n        <source>Manage visible tags\n(Right-click on a fave or a filter to set/remove tags)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"238\"/>\n        <source>Force &amp;quit</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"242\"/>\n        <source>Full</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"243\"/>\n        <source>Forward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"244\"/>\n        <source>Forward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"245\"/>\n        <source>Backward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"246\"/>\n        <source>Backward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"247\"/>\n        <source>Duplicate Top</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"248\"/>\n        <source>Duplicate Left</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"249\"/>\n        <source>Duplicate Bottom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"250\"/>\n        <source>Duplicate Right</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"251\"/>\n        <source>Duplicate Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"252\"/>\n        <source>Duplicate Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"253\"/>\n        <source>Checkered</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"254\"/>\n        <source>Checkered Inverse</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <source>Update completed</source>\n        <translation>Update voltooid</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"378\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"509\"/>\n        <source>Filter definitions have been updated.</source>\n        <translation>De filter-definities zijn bijgewerkt.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"381\"/>\n        <source>No download was needed.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"427\"/>\n        <source>Plugin was called with a filter path with no matching filter:\n\nPath: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"435\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"462\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"448\"/>\n        <source>Plugin was called with a command that cannot be recognized as a filter:\n\nCommand: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"927\"/>\n        <source>[Elapsed time: %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"443\"/>\n        <source>Plugin was called with a command that cannot be parsed:\n\n%1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"452\"/>\n        <source>Plugin was called with a command that does not match the provided path:\n\nPath: %1\nCommand: %2\nCommand found for this path : %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"505\"/>\n        <source>Filters update could not be achieved</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"646\"/>\n        <source>The update could not be achieved&lt;br&gt;because of the following errors:&lt;br&gt;</source>\n        <translation>De update is mislukt&lt;br/&gt;vanwege de volgende fouten:&lt;br/&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"652\"/>\n        <source>Update error</source>\n        <translation>Update fout</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"859\"/>\n        <source>Error</source>\n        <translation>Fout</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1478\"/>\n        <source>Waiting for cancelled jobs...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Import faves</source>\n        <translation>Importeer favorieten</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Do you want to import faves from file below?&lt;br/&gt;%1</source>\n        <translation>Wilt u favorieten importeren van het bestand hieronder?&lt;br/&gt;%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1335\"/>\n        <source>Don&apos;t ask again</source>\n        <translation>Niet opnieuw vragen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>Confirmation</source>\n        <translation>Bevestiging</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>A gmic command is running.&lt;br&gt;Do you really want to close the plugin?</source>\n        <translation>GMIC voert momenteel een commando uit.&lt;br&gt;Wilt u echt afbreken?</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/MultilineTextParameterWidget.cpp\" line=\"41\"/>\n        <source>Ctrl+Return</source>\n        <translation>Ctrl+Return</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"50\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"53\"/>\n        <source>Abort</source>\n        <translation>Annuleer</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"126\"/>\n        <source>[Processing 88:00:00.888 | 888.9 GiB]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"128\"/>\n        <source>[Processing 88:00:00.888]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"160\"/>\n        <source>Updating filters...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"213\"/>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"221\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"223\"/>\n        <source>[Processing %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"49\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"141\"/>\n        <source>%1 seconds</source>\n        <translation>%1 seconden</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"151\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"153\"/>\n        <source>[Processing %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SearchFieldWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"80\"/>\n        <source>Search</source>\n        <translation>Zoek</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"81\"/>\n        <source>Search in filters list (%1)</source>\n        <translation>Zoek in lijst met filters (%1)</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SourcesWidget</name>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"58\"/>\n        <source>Move source up</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"60\"/>\n        <source>Move source down</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"62\"/>\n        <source>Add local file (dialog)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"64\"/>\n        <source>Reset filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"80\"/>\n        <source>Macros: $HOME %USERPROFILE% $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"102\"/>\n        <source>Environment variables (e.g. %USERPROFILE% or %HOMEDIR%) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"82\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"53\"/>\n        <source>Remove source (Delete)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"85\"/>\n        <source>Disable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"86\"/>\n        <source>Enable without updates</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"87\"/>\n        <source>Enable with updates (recommended)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"106\"/>\n        <source>Environment variables (e.g. $HOME or ${HOME} for your home directory) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"111\"/>\n        <source>New source</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"192\"/>\n        <source>Select a file</source>\n        <translation type=\"unfinished\">Selecteer een bestand</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::Updater</name>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"137\"/>\n        <source>Error downloading %1 (empty file?)</source>\n        <translation>Downloadfout %1 (fichier vide ?)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"146\"/>\n        <source>Could not read/decompress %1</source>\n        <translation>Niet leesbaar/uitpakbaar %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"151\"/>\n        <source>Error writing file %1</source>\n        <translation>Kan bestand niet schrijven %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"168\"/>\n        <source>Error downloading %1&lt;br/&gt;Error %2: %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"204\"/>\n        <source>Download timeout: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::VisibleTagSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"55\"/>\n        <source>Show All Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"59\"/>\n        <source>Show %1 Tags</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"54\"/>\n        <source>Zoom in</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"55\"/>\n        <source>Zoom out</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"56\"/>\n        <source>Reset zoom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"155\"/>\n        <source>Warning: Preview may be inaccurate (zoom factor has been modified)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>HeadlessProgressDialog</name>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Vooruitgang</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"68\"/>\n        <source>Cancel</source>\n        <translation>Annuleer</translation>\n    </message>\n</context>\n<context>\n    <name>InOutPanel</name>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"40\"/>\n        <source>Input / Output</source>\n        <translation>Invoer / Uitvoer</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"47\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"92\"/>\n        <source>Input layers</source>\n        <translation>Invoer lagen</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"115\"/>\n        <source>Output mode</source>\n        <translation>Uitvoer-modus</translation>\n    </message>\n</context>\n<context>\n    <name>JpegQualityDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"20\"/>\n        <location filename=\"../src/Host/None/JpegQualityDialog.cpp\" line=\"13\"/>\n        <source>JPEG Quality</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"28\"/>\n        <source>0</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"42\"/>\n        <source>100</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"60\"/>\n        <source>Always use this quality for this execution of G&apos;MIC-Qt</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"85\"/>\n        <source>&amp;Cancel</source>\n        <translation type=\"unfinished\">&amp;Annuleer</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"92\"/>\n        <source>&amp;Ok</source>\n        <translation type=\"unfinished\">&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"35\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation>&lt;i&gt;(Opnieuw opstarten nodig)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"48\"/>\n        <source>Translate filters (WIP)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"18\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"176\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Download filter definitions from remote sources&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Download filter-definities van afzonderlijke bronnen&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"179\"/>\n        <source>Internet</source>\n        <translation>Internet</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"418\"/>\n        <source>Preview type (Ctrl+Shift+P)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"509\"/>\n        <source>&amp;Settings...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"525\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"532\"/>\n        <source>TextLabel</source>\n        <translation type=\"unfinished\">TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"248\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"255\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"262\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation type=\"unfinished\">MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"408\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable/disable preview&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(right click on preview image for instant swapping)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"411\"/>\n        <source>Preview</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"558\"/>\n        <source>&amp;Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"571\"/>\n        <source>&amp;Cancel</source>\n        <translation>&amp;Annuleer</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"545\"/>\n        <source>&amp;Fullscreen</source>\n        <translation>&amp;Schermvullend</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"584\"/>\n        <source>&amp;Apply</source>\n        <translation>&amp;Toepassen</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"597\"/>\n        <source>&amp;OK</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"29\"/>\n        <source>Update</source>\n        <translation>Update</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"48\"/>\n        <source>Abort</source>\n        <translation>Annuleer</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"55\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"30\"/>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"50\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"72\"/>\n        <source>Cancel</source>\n        <translation>Annuleren</translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"76\"/>\n        <source>Select an image to open...</source>\n        <translation>Selecteer een afbeelding om te openen...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Error</source>\n        <translation>Fout</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Could not open file.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"88\"/>\n        <source>Default image</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"81\"/>\n        <source>Visible</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"107\"/>\n        <source>Available filters (%1)</source>\n        <translation>Beschikbare filters (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"151\"/>\n        <source>%1 Tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"157\"/>\n        <source>None</source>\n        <translation type=\"unfinished\">Geen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"158\"/>\n        <source>Red</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"159\"/>\n        <source>Green</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"160\"/>\n        <source>Blue</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"161\"/>\n        <source>Cyan</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"162\"/>\n        <source>Magenta</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"163\"/>\n        <source>Yellow</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"127\"/>\n        <source>Could not install translator for file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"130\"/>\n        <source>Could not load translation file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"337\"/>\n        <source>List %1 cannot be merged considering these runs: %2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"432\"/>\n        <source>%1 GiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"434\"/>\n        <source>%1 MiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"436\"/>\n        <source>%1 KiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"438\"/>\n        <source>%1 B</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>SearchFieldWidget</name>\n    <message>\n        <location filename=\"../ui/SearchFieldWidget.ui\" line=\"20\"/>\n        <source>Frame</source>\n        <translation>Frame</translation>\n    </message>\n</context>\n<context>\n    <name>SourcesWidget</name>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\">GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"136\"/>\n        <source>Official filters:</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"22\"/>\n        <source>File / URL</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"32\"/>\n        <source>Add new</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"39\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"55\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"62\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"85\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"92\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"118\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../ui/zoomlevelselector.ui\" line=\"20\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"73\"/>\n        <source>G&apos;MIC-Qt filter output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"84\"/>\n        <source>Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"87\"/>\n        <source>Save as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"122\"/>\n        <source>%1 file (*.%2 *.%3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"148\"/>\n        <source>Save image as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageView</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\">Fout</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Could not write image file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "translations/pl.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- Original Polish translation done by Alex Mozheiko -->\n\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"pl\">\n<context>\n    <name>DialogSettings</name>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Okno dialogowe</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"250\"/>\n        <source>Internet updates</source>\n        <translation>Aktualizacje z Internetu</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"259\"/>\n        <source>Update now</source>\n        <translation>Uaktualnij teraz</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"30\"/>\n        <source>Layout</source>\n        <translation>Układ</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"24\"/>\n        <source>Interface</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"64\"/>\n        <source>Preview on the &amp;left</source>\n        <translation>Podgląd &amp;po lewej stronie</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"94\"/>\n        <source>Pre&amp;view on right side</source>\n        <translation>Podgląd &amp;po prawej stronie</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"113\"/>\n        <source>Theme</source>\n        <translation>Wygląd</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"119\"/>\n        <source>&amp;Default</source>\n        <translation>&amp;Domyślnie</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"126\"/>\n        <source>Dar&amp;k</source>\n        <translation>&amp;Ciemny</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"139\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/I&gt;</source>\n        <translation>&lt;i&gt;(Wymaga zrestartowania)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"149\"/>\n        <source>Language</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"179\"/>\n        <source>Always enable preview zooming</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"186\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Warning: preview may be inaccurate&lt;br/&gt;if checked.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"196\"/>\n        <source>Misc</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"209\"/>\n        <source>Use native file dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"216\"/>\n        <source>&amp;Enable High-DPI support</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"223\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation type=\"unfinished\">&lt;i&gt;(Wymaga zrestartowania)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"239\"/>\n        <source>Filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"244\"/>\n        <source>Other</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"282\"/>\n        <source>Output messages</source>\n        <translation>Komunikat wyjścia</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"202\"/>\n        <source>&amp;Use native color dialog</source>\n        <translation>&amp;Użyć kolorów systemowych</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"163\"/>\n        <source>Preview</source>\n        <translation>Podgląd</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"169\"/>\n        <source>Timeout (seconds)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"36\"/>\n        <source>Show institution logos</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"291\"/>\n        <source>Notify when scheduled update fails</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"333\"/>\n        <source>&amp;Ok</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>FiltersView</name>\n    <message>\n        <location filename=\"../ui/filtersview.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ColorParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/ColorParameter.cpp\" line=\"213\"/>\n        <source>Select color</source>\n        <translation>Wybór koloru</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::DialogSettings</name>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"45\"/>\n        <source>Settings</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"51\"/>\n        <source>Never</source>\n        <translation>Nigdy</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"52\"/>\n        <source>Daily</source>\n        <translation>Codziennie</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"53\"/>\n        <source>Weekly</source>\n        <translation>Cotygodniowo</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"54\"/>\n        <source>Every 2 weeks</source>\n        <translation>Co 2 tygodnie</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"55\"/>\n        <source>Monthly</source>\n        <translation>Miesięcznie</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"57\"/>\n        <source>At launch (debug)</source>\n        <translation>Przy starcie (debugowanie)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"65\"/>\n        <source>Output messages</source>\n        <translation>Komunikat wyjścia</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"66\"/>\n        <source>Quiet (default)</source>\n        <translation>Brak (domyślnie)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"67\"/>\n        <source>Verbose (console)</source>\n        <translation>Ogólny (konsola)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"68\"/>\n        <source>Verbose (log file)</source>\n        <translation>Ogólny (plik log)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"69\"/>\n        <source>Very verbose (console)</source>\n        <translation>Dokładny (konsola)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"70\"/>\n        <source>Very verbose (log file)</source>\n        <translation>Dokładny (plik log)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"71\"/>\n        <source>Debug (console)</source>\n        <translation>Debugowanie (konsola)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"72\"/>\n        <source>Debug (log file)</source>\n        <translation>Debugowanie (plik log)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"88\"/>\n        <source>Check to use Native/OS color dialog, uncheck to use Qt&apos;s</source>\n        <translation>Zaznacz aby używać natywny/systemowy zestaw kolorów, wyłącz dla QT</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"90\"/>\n        <source>Check to use Native/OS file dialog, uncheck to use Qt&apos;s</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FileParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"159\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"162\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"165\"/>\n        <source>Select a file</source>\n        <translation>Wybierz plik</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FilterParametersWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"44\"/>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"273\"/>\n        <source>&lt;i&gt;Select a filter&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Wybierz filtr&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"240\"/>\n        <source>&lt;i&gt;No parameters&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Brak parametrów&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"245\"/>\n        <source>Error parsing filter parameters\n\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersPresenter</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"513\"/>\n        <source>Unknown filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"623\"/>\n        <source>Cannot find this fave&apos;s original filter\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersView</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"353\"/>\n        <source>Remove fave</source>\n        <translation>Usuń z ulubionych</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"680\"/>\n        <source>Rename Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"682\"/>\n        <source>Remove Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"684\"/>\n        <source>Clone Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"688\"/>\n        <source>Add Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"707\"/>\n        <source>Remove All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>%1 (%2 %3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"354\"/>\n        <source>Do you really want to remove the following fave?\n\n%1\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FolderParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FolderParameter.cpp\" line=\"138\"/>\n        <source>Select a folder</source>\n        <translation>Wybierz katalog</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::GmicProcessor</name>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"416\"/>\n        <source>Image #%1 returned by filter has %2 channels (should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"452\"/>\n        <source>Image #%1 returned by filter has %2 channels\n(should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::HeadlessProcessor</name>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"79\"/>\n        <source>At least a filter path or a filter command must be provided.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"81\"/>\n        <source>Custom command (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"89\"/>\n        <source>Cannot find filter matching path %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"96\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"114\"/>\n        <source>Error parsing supplied command: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"117\"/>\n        <source>Supplied command (%1) does not match path (%2), (should be %3).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"229\"/>\n        <source>Filter execution failed, but with no error message.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::InOutPanel</name>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"62\"/>\n        <source>Input layers</source>\n        <translation>Wartstwy wejściowe</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"68\"/>\n        <source>None</source>\n        <translation>Brak</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"69\"/>\n        <source>Active (default)</source>\n        <translation>Aktywna (domyślnie)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"70\"/>\n        <source>All</source>\n        <translation>Wszystkie</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"71\"/>\n        <source>Active and below</source>\n        <translation>Aktywna i poniżej</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"72\"/>\n        <source>Active and above</source>\n        <translation>Aktywna i powyżej</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"73\"/>\n        <source>All visible</source>\n        <translation>Wszystkie widoczne</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"74\"/>\n        <source>All invisible</source>\n        <translation>Wszystkie niewidoczne</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"85\"/>\n        <source>Output mode</source>\n        <translation>Tryb wyjścia</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"91\"/>\n        <source>In place (default)</source>\n        <translation>Na miejscu (domyślnie)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"92\"/>\n        <source>New layer(s)</source>\n        <translation>Nowa(e) warstwa(y)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"93\"/>\n        <source>New active layer(s)</source>\n        <translation>Nowa(e) aktywna(e) warstwa(y)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"94\"/>\n        <source>New image</source>\n        <translation>Nowy obraz</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"205\"/>\n        <source>Input / Output</source>\n        <translation>Wejście/Wyjście</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"207\"/>\n        <source>Input</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"209\"/>\n        <source>Output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"53\"/>\n        <source>System default (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"62\"/>\n        <source>Translations are very likely to be incomplete.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MainWindow</name>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"108\"/>\n        <source>Add fave</source>\n        <translation>Dodaj do ulubionych</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"110\"/>\n        <source>Reset parameters to default values</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"113\"/>\n        <source>Randomize parameters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"119\"/>\n        <source>Copy G&apos;MIC command to clipboard</source>\n        <translation>Skopiuj polecenie G&apos;MIC do schowka</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"126\"/>\n        <source>Rename fave</source>\n        <translation>Zmiana nazwy ulubionego</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"128\"/>\n        <source>Remove fave</source>\n        <translation>Usuń z ulubionych</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"132\"/>\n        <source>Expand/Collapse all</source>\n        <translation>Rozwiń/zwiń wszystko</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"134\"/>\n        <source>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandy University (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</source>\n        <translation>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Uniwerstytet Normandii (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"141\"/>\n        <source>Selection mode</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"180\"/>\n        <source>Update filters</source>\n        <translation>Uaktualnienie filtrów</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"232\"/>\n        <source>Manage visible tags\n(Right-click on a fave or a filter to set/remove tags)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"238\"/>\n        <source>Force &amp;quit</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"242\"/>\n        <source>Full</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"243\"/>\n        <source>Forward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"244\"/>\n        <source>Forward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"245\"/>\n        <source>Backward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"246\"/>\n        <source>Backward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"247\"/>\n        <source>Duplicate Top</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"248\"/>\n        <source>Duplicate Left</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"249\"/>\n        <source>Duplicate Bottom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"250\"/>\n        <source>Duplicate Right</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"251\"/>\n        <source>Duplicate Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"252\"/>\n        <source>Duplicate Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"253\"/>\n        <source>Checkered</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"254\"/>\n        <source>Checkered Inverse</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <source>Update completed</source>\n        <translation>Aktualizacja ukończona</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"378\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"509\"/>\n        <source>Filter definitions have been updated.</source>\n        <translation>Filtry zaktualizowane.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"381\"/>\n        <source>No download was needed.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"427\"/>\n        <source>Plugin was called with a filter path with no matching filter:\n\nPath: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"435\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"462\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"448\"/>\n        <source>Plugin was called with a command that cannot be recognized as a filter:\n\nCommand: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"927\"/>\n        <source>[Elapsed time: %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"443\"/>\n        <source>Plugin was called with a command that cannot be parsed:\n\n%1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"452\"/>\n        <source>Plugin was called with a command that does not match the provided path:\n\nPath: %1\nCommand: %2\nCommand found for this path : %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"505\"/>\n        <source>Filters update could not be achieved</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"646\"/>\n        <source>The update could not be achieved&lt;br&gt;because of the following errors:&lt;br&gt;</source>\n        <translation>Aktualizacja nie powiodła się&lt;br/&gt;z następujących powodów:&lt;br/&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"652\"/>\n        <source>Update error</source>\n        <translation>Błąd aktualizacji</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"859\"/>\n        <source>Error</source>\n        <translation>Wystąpił błąd</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1478\"/>\n        <source>Waiting for cancelled jobs...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Import faves</source>\n        <translation>Importuj ulubione</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Do you want to import faves from file below?&lt;br/&gt;%1</source>\n        <translation>Czy chcesz importować ulubione z pliku poniżej?&lt;br/&gt;%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1335\"/>\n        <source>Don&apos;t ask again</source>\n        <translation>Nie pytaj ponownie</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>Confirmation</source>\n        <translation>Potwierdż</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>A gmic command is running.&lt;br&gt;Do you really want to close the plugin?</source>\n        <translation>Polecenie gmic jest uruchomione.&lt;br&gt;Czy naprawdę chcesz zamknąć wtyczkę?</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/MultilineTextParameterWidget.cpp\" line=\"41\"/>\n        <source>Ctrl+Return</source>\n        <translation>Ctrl+Enter</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"50\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"53\"/>\n        <source>Abort</source>\n        <translation>Anuluj</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"126\"/>\n        <source>[Processing 88:00:00.888 | 888.9 GiB]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"128\"/>\n        <source>[Processing 88:00:00.888]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"160\"/>\n        <source>Updating filters...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"213\"/>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"221\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Przetwarzanie %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"223\"/>\n        <source>[Processing %1]</source>\n        <translation>[Przetwarzanie %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"49\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"141\"/>\n        <source>%1 seconds</source>\n        <translation>%1 sekund</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"151\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Przetwarzanie %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"153\"/>\n        <source>[Processing %1]</source>\n        <translation>[Przetwarzanie %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SearchFieldWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"80\"/>\n        <source>Search</source>\n        <translation>Wyszukiwanie</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"81\"/>\n        <source>Search in filters list (%1)</source>\n        <translation>Szukaj w liście filtrów (%1)</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SourcesWidget</name>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"58\"/>\n        <source>Move source up</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"60\"/>\n        <source>Move source down</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"62\"/>\n        <source>Add local file (dialog)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"64\"/>\n        <source>Reset filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"80\"/>\n        <source>Macros: $HOME %USERPROFILE% $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"102\"/>\n        <source>Environment variables (e.g. %USERPROFILE% or %HOMEDIR%) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"82\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"53\"/>\n        <source>Remove source (Delete)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"85\"/>\n        <source>Disable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"86\"/>\n        <source>Enable without updates</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"87\"/>\n        <source>Enable with updates (recommended)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"106\"/>\n        <source>Environment variables (e.g. $HOME or ${HOME} for your home directory) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"111\"/>\n        <source>New source</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"192\"/>\n        <source>Select a file</source>\n        <translation type=\"unfinished\">Wybierz plik</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::Updater</name>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"137\"/>\n        <source>Error downloading %1 (empty file?)</source>\n        <translation>Błąd pobierania %1 (Pusty plik?)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"146\"/>\n        <source>Could not read/decompress %1</source>\n        <translation>Błąd odczytu/dekompresji %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"151\"/>\n        <source>Error writing file %1</source>\n        <translation>Błąd zapisu pliku %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"168\"/>\n        <source>Error downloading %1&lt;br/&gt;Error %2: %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"204\"/>\n        <source>Download timeout: %1</source>\n        <translation>Limit czasu pobierania: %1</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::VisibleTagSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"55\"/>\n        <source>Show All Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"59\"/>\n        <source>Show %1 Tags</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"54\"/>\n        <source>Zoom in</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"55\"/>\n        <source>Zoom out</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"56\"/>\n        <source>Reset zoom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"155\"/>\n        <source>Warning: Preview may be inaccurate (zoom factor has been modified)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>HeadlessProgressDialog</name>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Okno dialogowe</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"68\"/>\n        <source>Cancel</source>\n        <translation>Anuluj</translation>\n    </message>\n</context>\n<context>\n    <name>InOutPanel</name>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"40\"/>\n        <source>Input / Output</source>\n        <translation>Wejście/Wyjście</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"47\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"92\"/>\n        <source>Input layers</source>\n        <translation>Wartstwy wejściowe</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"115\"/>\n        <source>Output mode</source>\n        <translation>Tryb wyjścia</translation>\n    </message>\n</context>\n<context>\n    <name>JpegQualityDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation type=\"unfinished\">Okno dialogowe</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"20\"/>\n        <location filename=\"../src/Host/None/JpegQualityDialog.cpp\" line=\"13\"/>\n        <source>JPEG Quality</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"28\"/>\n        <source>0</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"42\"/>\n        <source>100</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"60\"/>\n        <source>Always use this quality for this execution of G&apos;MIC-Qt</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"85\"/>\n        <source>&amp;Cancel</source>\n        <translation type=\"unfinished\">&amp;Anuluj</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"92\"/>\n        <source>&amp;Ok</source>\n        <translation type=\"unfinished\">&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"35\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation>&lt;i&gt;(Wymaga zrestartowania)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"48\"/>\n        <source>Translate filters (WIP)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"18\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"176\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Download filter definitions from remote sources&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Uaktualnienie filtrów przez internet&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"179\"/>\n        <source>Internet</source>\n        <translation>Internet</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"418\"/>\n        <source>Preview type (Ctrl+Shift+P)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"509\"/>\n        <source>&amp;Settings...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"525\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"532\"/>\n        <source>TextLabel</source>\n        <translation type=\"unfinished\">TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"248\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"255\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"262\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation type=\"unfinished\">MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"408\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable/disable preview&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(right click on preview image for instant swapping)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"411\"/>\n        <source>Preview</source>\n        <translation>Podgląd</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"558\"/>\n        <source>&amp;Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"571\"/>\n        <source>&amp;Cancel</source>\n        <translation>&amp;Anuluj</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"545\"/>\n        <source>&amp;Fullscreen</source>\n        <translation>&amp;Pełny ekran</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"584\"/>\n        <source>&amp;Apply</source>\n        <translation>&amp;Zastosuj</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"597\"/>\n        <source>&amp;OK</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"29\"/>\n        <source>Update</source>\n        <translation>Uaktualnij</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"48\"/>\n        <source>Abort</source>\n        <translation>Anuluj</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"55\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"30\"/>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"50\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"72\"/>\n        <source>Cancel</source>\n        <translation>Anuluj</translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"76\"/>\n        <source>Select an image to open...</source>\n        <translation>Wybierz obraz...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Error</source>\n        <translation>Wystąpił błąd</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Could not open file.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"88\"/>\n        <source>Default image</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"81\"/>\n        <source>Visible</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"107\"/>\n        <source>Available filters (%1)</source>\n        <translation>Dostępne filtry (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"151\"/>\n        <source>%1 Tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"157\"/>\n        <source>None</source>\n        <translation type=\"unfinished\">Brak</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"158\"/>\n        <source>Red</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"159\"/>\n        <source>Green</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"160\"/>\n        <source>Blue</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"161\"/>\n        <source>Cyan</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"162\"/>\n        <source>Magenta</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"163\"/>\n        <source>Yellow</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"127\"/>\n        <source>Could not install translator for file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"130\"/>\n        <source>Could not load translation file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"337\"/>\n        <source>List %1 cannot be merged considering these runs: %2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"432\"/>\n        <source>%1 GiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"434\"/>\n        <source>%1 MiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"436\"/>\n        <source>%1 KiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"438\"/>\n        <source>%1 B</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>SearchFieldWidget</name>\n    <message>\n        <location filename=\"../ui/SearchFieldWidget.ui\" line=\"20\"/>\n        <source>Frame</source>\n        <translation>Ramka</translation>\n    </message>\n</context>\n<context>\n    <name>SourcesWidget</name>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\">GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"136\"/>\n        <source>Official filters:</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"22\"/>\n        <source>File / URL</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"32\"/>\n        <source>Add new</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"39\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"55\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"62\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"85\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"92\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"118\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../ui/zoomlevelselector.ui\" line=\"20\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"73\"/>\n        <source>G&apos;MIC-Qt filter output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"84\"/>\n        <source>Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"87\"/>\n        <source>Save as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"122\"/>\n        <source>%1 file (*.%2 *.%3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"148\"/>\n        <source>Save image as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageView</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\">Wystąpił błąd</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Could not write image file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "translations/pt.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- Original Portuguese translation done by maxr -->\n\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"pt\">\n<context>\n    <name>DialogSettings</name>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Diálogo</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"250\"/>\n        <source>Internet updates</source>\n        <translation>Atualições de internet</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"259\"/>\n        <source>Update now</source>\n        <translation>Atualizar agora</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"30\"/>\n        <source>Layout</source>\n        <translation>Traçado</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"24\"/>\n        <source>Interface</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"64\"/>\n        <source>Preview on the &amp;left</source>\n        <translation>Pré-visualização à &amp;esquerda</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"94\"/>\n        <source>Pre&amp;view on right side</source>\n        <translation>Pré-visualização à &amp;direita</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"113\"/>\n        <source>Theme</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"119\"/>\n        <source>&amp;Default</source>\n        <translation>&amp;Valor padrão</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"126\"/>\n        <source>Dar&amp;k</source>\n        <translation>&amp;Escuro</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"139\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/I&gt;</source>\n        <translation>&lt;i&gt;(Reinício necessário)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"149\"/>\n        <source>Language</source>\n        <translation>Idioma</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"179\"/>\n        <source>Always enable preview zooming</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"186\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Warning: preview may be inaccurate&lt;br/&gt;if checked.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"196\"/>\n        <source>Misc</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"209\"/>\n        <source>Use native file dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"216\"/>\n        <source>&amp;Enable High-DPI support</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"223\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation type=\"unfinished\">&lt;i&gt;(Reinício necessário)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"239\"/>\n        <source>Filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"244\"/>\n        <source>Other</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"282\"/>\n        <source>Output messages</source>\n        <translation>Mensagens de saída</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"202\"/>\n        <source>&amp;Use native color dialog</source>\n        <translation>&amp;Usar cor nativa nos diálogos</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"163\"/>\n        <source>Preview</source>\n        <translation>Previsualização</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"169\"/>\n        <source>Timeout (seconds)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"36\"/>\n        <source>Show institution logos</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"291\"/>\n        <source>Notify when scheduled update fails</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"333\"/>\n        <source>&amp;Ok</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>FiltersView</name>\n    <message>\n        <location filename=\"../ui/filtersview.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ColorParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/ColorParameter.cpp\" line=\"213\"/>\n        <source>Select color</source>\n        <translation>Escolher cor</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::DialogSettings</name>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"45\"/>\n        <source>Settings</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"51\"/>\n        <source>Never</source>\n        <translation>Nunca</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"52\"/>\n        <source>Daily</source>\n        <translation>Diariamente</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"53\"/>\n        <source>Weekly</source>\n        <translation>Semanal</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"54\"/>\n        <source>Every 2 weeks</source>\n        <translation>Cada 2 semanas</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"55\"/>\n        <source>Monthly</source>\n        <translation>Mensal</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"57\"/>\n        <source>At launch (debug)</source>\n        <translation>Ao iniciar (depurar erros)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"65\"/>\n        <source>Output messages</source>\n        <translation>Mensagens de saída</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"66\"/>\n        <source>Quiet (default)</source>\n        <translation>Silêncioso (padrão)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"67\"/>\n        <source>Verbose (console)</source>\n        <translation>Modo verboso (consola)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"68\"/>\n        <source>Verbose (log file)</source>\n        <translation>Modo verboso (ficheiro de registro)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"69\"/>\n        <source>Very verbose (console)</source>\n        <translation>Modo muito verboso (consola)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"70\"/>\n        <source>Very verbose (log file)</source>\n        <translation>Modo muito verboso (ficheiro de registro)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"71\"/>\n        <source>Debug (console)</source>\n        <translation>Depurar erros (consola)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"72\"/>\n        <source>Debug (log file)</source>\n        <translation>Depurar erros (ficheiro de registro)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"88\"/>\n        <source>Check to use Native/OS color dialog, uncheck to use Qt&apos;s</source>\n        <translation>Selecionar para usar o diálogo de cor nativa / SO,  deselecionar para usar o do Qt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"90\"/>\n        <source>Check to use Native/OS file dialog, uncheck to use Qt&apos;s</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FileParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"159\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"162\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"165\"/>\n        <source>Select a file</source>\n        <translation>Selecionar um ficheiro</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FilterParametersWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"44\"/>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"273\"/>\n        <source>&lt;i&gt;Select a filter&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Selecionar um filtro&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"240\"/>\n        <source>&lt;i&gt;No parameters&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Sem parâmetros&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"245\"/>\n        <source>Error parsing filter parameters\n\n</source>\n        <translation>Erro nos parâmetros do filtro</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersPresenter</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"513\"/>\n        <source>Unknown filter</source>\n        <translation>Filtro desconhecido</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"623\"/>\n        <source>Cannot find this fave&apos;s original filter\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersView</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"353\"/>\n        <source>Remove fave</source>\n        <translation>Remover um favorito</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"680\"/>\n        <source>Rename Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"682\"/>\n        <source>Remove Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"684\"/>\n        <source>Clone Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"688\"/>\n        <source>Add Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"707\"/>\n        <source>Remove All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>%1 (%2 %3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"354\"/>\n        <source>Do you really want to remove the following fave?\n\n%1\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FolderParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FolderParameter.cpp\" line=\"138\"/>\n        <source>Select a folder</source>\n        <translation>Selecionar unma pasta</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::GmicProcessor</name>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"416\"/>\n        <source>Image #%1 returned by filter has %2 channels (should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"452\"/>\n        <source>Image #%1 returned by filter has %2 channels\n(should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::HeadlessProcessor</name>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"79\"/>\n        <source>At least a filter path or a filter command must be provided.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"81\"/>\n        <source>Custom command (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"89\"/>\n        <source>Cannot find filter matching path %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"96\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"114\"/>\n        <source>Error parsing supplied command: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"117\"/>\n        <source>Supplied command (%1) does not match path (%2), (should be %3).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"229\"/>\n        <source>Filter execution failed, but with no error message.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::InOutPanel</name>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"62\"/>\n        <source>Input layers</source>\n        <translation>Camadas de entrada</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"68\"/>\n        <source>None</source>\n        <translation>Nenhuma</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"69\"/>\n        <source>Active (default)</source>\n        <translation>Ativa (padrão)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"70\"/>\n        <source>All</source>\n        <translation>Todas</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"71\"/>\n        <source>Active and below</source>\n        <translation>Ativa e abaixo</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"72\"/>\n        <source>Active and above</source>\n        <translation>Ativa e acima</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"73\"/>\n        <source>All visible</source>\n        <translation>Todas as visíveis</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"74\"/>\n        <source>All invisible</source>\n        <translation>Todas as invisíveis</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"85\"/>\n        <source>Output mode</source>\n        <translation>Modo de saída</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"91\"/>\n        <source>In place (default)</source>\n        <translation>No sitio (padrão)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"92\"/>\n        <source>New layer(s)</source>\n        <translation>Nova(s) camada(s)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"93\"/>\n        <source>New active layer(s)</source>\n        <translation>Nova(s) camada(s) ativa(s)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"94\"/>\n        <source>New image</source>\n        <translation>Nova imagem</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"205\"/>\n        <source>Input / Output</source>\n        <translation>Entrada / Saída</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"207\"/>\n        <source>Input</source>\n        <translation>Entrada</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"209\"/>\n        <source>Output</source>\n        <translation>Saída</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"53\"/>\n        <source>System default (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"62\"/>\n        <source>Translations are very likely to be incomplete.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MainWindow</name>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"108\"/>\n        <source>Add fave</source>\n        <translation>Acrescentando um favorito</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"110\"/>\n        <source>Reset parameters to default values</source>\n        <translation>Resetar parametros para o valor padrão</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"113\"/>\n        <source>Randomize parameters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"119\"/>\n        <source>Copy G&apos;MIC command to clipboard</source>\n        <translation>Copiar o comando G&apos;MIC para a prancheta</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"126\"/>\n        <source>Rename fave</source>\n        <translation>Renomear um favorito</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"128\"/>\n        <source>Remove fave</source>\n        <translation>Remover um favorito</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"132\"/>\n        <source>Expand/Collapse all</source>\n        <translation>Expandir/Encolher todos</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"134\"/>\n        <source>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandy University (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</source>\n        <translation>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Universidad da Normandia (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"141\"/>\n        <source>Selection mode</source>\n        <translation>Modo de seleção</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"180\"/>\n        <source>Update filters</source>\n        <translation>Atualizar filtros</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"232\"/>\n        <source>Manage visible tags\n(Right-click on a fave or a filter to set/remove tags)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"238\"/>\n        <source>Force &amp;quit</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"242\"/>\n        <source>Full</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"243\"/>\n        <source>Forward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"244\"/>\n        <source>Forward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"245\"/>\n        <source>Backward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"246\"/>\n        <source>Backward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"247\"/>\n        <source>Duplicate Top</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"248\"/>\n        <source>Duplicate Left</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"249\"/>\n        <source>Duplicate Bottom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"250\"/>\n        <source>Duplicate Right</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"251\"/>\n        <source>Duplicate Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"252\"/>\n        <source>Duplicate Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"253\"/>\n        <source>Checkered</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"254\"/>\n        <source>Checkered Inverse</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <source>Update completed</source>\n        <translation>Atualização concluída</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"378\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"509\"/>\n        <source>Filter definitions have been updated.</source>\n        <translation>As definições dos filtros foram atualizados.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"381\"/>\n        <source>No download was needed.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"427\"/>\n        <source>Plugin was called with a filter path with no matching filter:\n\nPath: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"435\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"462\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"448\"/>\n        <source>Plugin was called with a command that cannot be recognized as a filter:\n\nCommand: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"927\"/>\n        <source>[Elapsed time: %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"443\"/>\n        <source>Plugin was called with a command that cannot be parsed:\n\n%1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"452\"/>\n        <source>Plugin was called with a command that does not match the provided path:\n\nPath: %1\nCommand: %2\nCommand found for this path : %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"505\"/>\n        <source>Filters update could not be achieved</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"646\"/>\n        <source>The update could not be achieved&lt;br&gt;because of the following errors:&lt;br&gt;</source>\n        <translation>A actualização não foi possível&lt;br&gt;devido aos seguintes erros:&lt;br/&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"652\"/>\n        <source>Update error</source>\n        <translation>Erro na actualização</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"859\"/>\n        <source>Error</source>\n        <translation>Erro</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1478\"/>\n        <source>Waiting for cancelled jobs...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Import faves</source>\n        <translation>Importar favoritos</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Do you want to import faves from file below?&lt;br/&gt;%1</source>\n        <translation>Deseja importar favoritos do arquivo abaixo?&lt;br/&gt;%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1335\"/>\n        <source>Don&apos;t ask again</source>\n        <translation>No volvar a perguntar</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>Confirmation</source>\n        <translation>Confirmar</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>A gmic command is running.&lt;br&gt;Do you really want to close the plugin?</source>\n        <translation>Um comando do gmic está sendo executado.&apos;exÃ©cution.&lt;br&gt;Desejas realmente fechar o plug-in?</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/MultilineTextParameterWidget.cpp\" line=\"41\"/>\n        <source>Ctrl+Return</source>\n        <translation>Ctrl+Return</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"50\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"53\"/>\n        <source>Abort</source>\n        <translation>Abortar</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"126\"/>\n        <source>[Processing 88:00:00.888 | 888.9 GiB]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"128\"/>\n        <source>[Processing 88:00:00.888]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"160\"/>\n        <source>Updating filters...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"213\"/>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"221\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Em processamento %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"223\"/>\n        <source>[Processing %1]</source>\n        <translation>[Em processamento %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"49\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"141\"/>\n        <source>%1 seconds</source>\n        <translation>%1 segundos</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"151\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Em processamento %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"153\"/>\n        <source>[Processing %1]</source>\n        <translation>[Em processamento %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SearchFieldWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"80\"/>\n        <source>Search</source>\n        <translation>Procurar</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"81\"/>\n        <source>Search in filters list (%1)</source>\n        <translation>Procurar na lista de filtros (%1)</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SourcesWidget</name>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"58\"/>\n        <source>Move source up</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"60\"/>\n        <source>Move source down</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"62\"/>\n        <source>Add local file (dialog)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"64\"/>\n        <source>Reset filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"80\"/>\n        <source>Macros: $HOME %USERPROFILE% $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"102\"/>\n        <source>Environment variables (e.g. %USERPROFILE% or %HOMEDIR%) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"82\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"53\"/>\n        <source>Remove source (Delete)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"85\"/>\n        <source>Disable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"86\"/>\n        <source>Enable without updates</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"87\"/>\n        <source>Enable with updates (recommended)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"106\"/>\n        <source>Environment variables (e.g. $HOME or ${HOME} for your home directory) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"111\"/>\n        <source>New source</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"192\"/>\n        <source>Select a file</source>\n        <translation type=\"unfinished\">Selecionar um ficheiro</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::Updater</name>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"137\"/>\n        <source>Error downloading %1 (empty file?)</source>\n        <translation>Erro ao descarregar %1 (ficheiro vazio?)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"146\"/>\n        <source>Could not read/decompress %1</source>\n        <translation>Impossível ler / descomprimir %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"151\"/>\n        <source>Error writing file %1</source>\n        <translation>Erro ao gravar o ficheiro %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"168\"/>\n        <source>Error downloading %1&lt;br/&gt;Error %2: %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"204\"/>\n        <source>Download timeout: %1</source>\n        <translation>Descarga anulada (tempo limite) : %1</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::VisibleTagSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"55\"/>\n        <source>Show All Filters</source>\n        <translation>Exibir todos os filtros</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"59\"/>\n        <source>Show %1 Tags</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"54\"/>\n        <source>Zoom in</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"55\"/>\n        <source>Zoom out</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"56\"/>\n        <source>Reset zoom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"155\"/>\n        <source>Warning: Preview may be inaccurate (zoom factor has been modified)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>HeadlessProgressDialog</name>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Diálogo</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"68\"/>\n        <source>Cancel</source>\n        <translation>Cancelar</translation>\n    </message>\n</context>\n<context>\n    <name>InOutPanel</name>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"40\"/>\n        <source>Input / Output</source>\n        <translation>Entrada / Saída</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"47\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"92\"/>\n        <source>Input layers</source>\n        <translation>Camadas de entrada</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"115\"/>\n        <source>Output mode</source>\n        <translation>Modo de saída</translation>\n    </message>\n</context>\n<context>\n    <name>JpegQualityDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Diálogo</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"20\"/>\n        <location filename=\"../src/Host/None/JpegQualityDialog.cpp\" line=\"13\"/>\n        <source>JPEG Quality</source>\n        <translation>Qualidade do JPEG</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"28\"/>\n        <source>0</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"42\"/>\n        <source>100</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"60\"/>\n        <source>Always use this quality for this execution of G&apos;MIC-Qt</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"85\"/>\n        <source>&amp;Cancel</source>\n        <translation>&amp;Cancelar</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"92\"/>\n        <source>&amp;Ok</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"35\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation>&lt;i&gt;(Reinício necessário)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"48\"/>\n        <source>Translate filters (WIP)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"18\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"176\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Download filter definitions from remote sources&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Descaregar as definições do filtro a partir de fontes remotas&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"179\"/>\n        <source>Internet</source>\n        <translation>Internet</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"418\"/>\n        <source>Preview type (Ctrl+Shift+P)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"509\"/>\n        <source>&amp;Settings...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"525\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"532\"/>\n        <source>TextLabel</source>\n        <translation>Rótulo de texto</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"248\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"255\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"262\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>Janela Principal</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"408\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable/disable preview&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(right click on preview image for instant swapping)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"411\"/>\n        <source>Preview</source>\n        <translation>Previsualização</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"558\"/>\n        <source>&amp;Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"571\"/>\n        <source>&amp;Cancel</source>\n        <translation>&amp;Cancelar</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"545\"/>\n        <source>&amp;Fullscreen</source>\n        <translation>&amp;Tela cheia</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"584\"/>\n        <source>&amp;Apply</source>\n        <translation>&amp;Aplicar</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"597\"/>\n        <source>&amp;OK</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"29\"/>\n        <source>Update</source>\n        <translation>Atualizar</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"48\"/>\n        <source>Abort</source>\n        <translation>Abortar</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"55\"/>\n        <source>TextLabel</source>\n        <translation>Rótulo de texto</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>Janela Principal</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"30\"/>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"50\"/>\n        <source>TextLabel</source>\n        <translation>Rótulo de texto</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"72\"/>\n        <source>Cancel</source>\n        <translation>Cancelar</translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"76\"/>\n        <source>Select an image to open...</source>\n        <translation>Selecionar imagem à abrir...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Error</source>\n        <translation>Erro</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Could not open file.</source>\n        <translation>Não pode abrir arquivo.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"88\"/>\n        <source>Default image</source>\n        <translation>Imagem padrão</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"81\"/>\n        <source>Visible</source>\n        <translation>Visível</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"107\"/>\n        <source>Available filters (%1)</source>\n        <translation>Filtros disponíveis (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"151\"/>\n        <source>%1 Tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"157\"/>\n        <source>None</source>\n        <translation>Nenhuma</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"158\"/>\n        <source>Red</source>\n        <translation>Vermelho</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"159\"/>\n        <source>Green</source>\n        <translation>Verde</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"160\"/>\n        <source>Blue</source>\n        <translation>Azul</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"161\"/>\n        <source>Cyan</source>\n        <translation>Ciano</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"162\"/>\n        <source>Magenta</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"163\"/>\n        <source>Yellow</source>\n        <translation>Amarelo</translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"127\"/>\n        <source>Could not install translator for file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"130\"/>\n        <source>Could not load translation file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"337\"/>\n        <source>List %1 cannot be merged considering these runs: %2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"432\"/>\n        <source>%1 GiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"434\"/>\n        <source>%1 MiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"436\"/>\n        <source>%1 KiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"438\"/>\n        <source>%1 B</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>SearchFieldWidget</name>\n    <message>\n        <location filename=\"../ui/SearchFieldWidget.ui\" line=\"20\"/>\n        <source>Frame</source>\n        <translation>Moldura</translation>\n    </message>\n</context>\n<context>\n    <name>SourcesWidget</name>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\">GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"136\"/>\n        <source>Official filters:</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"22\"/>\n        <source>File / URL</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"32\"/>\n        <source>Add new</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"39\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"55\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"62\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"85\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"92\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"118\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../ui/zoomlevelselector.ui\" line=\"20\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"73\"/>\n        <source>G&apos;MIC-Qt filter output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"84\"/>\n        <source>Close</source>\n        <translation>Fechar</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"87\"/>\n        <source>Save as...</source>\n        <translation>Salvar como...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"122\"/>\n        <source>%1 file (*.%2 *.%3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"148\"/>\n        <source>Save image as...</source>\n        <translation>Salvar imagem como...</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageView</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Error</source>\n        <translation>Erro</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Could not write image file %1</source>\n        <translation>Não foi possível gravar a imagem %1</translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "translations/ru.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- Original Russian translation by Alex Mozheiko -->\n\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"ru\">\n<context>\n    <name>DialogSettings</name>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Диалоговое окно</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"250\"/>\n        <source>Internet updates</source>\n        <translation>Обновления из Интернета</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"259\"/>\n        <source>Update now</source>\n        <translation>Обновить сейчас</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"30\"/>\n        <source>Layout</source>\n        <translation>Расположение элементов</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"24\"/>\n        <source>Interface</source>\n        <translation>Вид</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"64\"/>\n        <source>Preview on the &amp;left</source>\n        <translation>Предпросмотр &amp;слева</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"94\"/>\n        <source>Pre&amp;view on right side</source>\n        <translation>Предпросмотр &amp;справа</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"113\"/>\n        <source>Theme</source>\n        <translation>Тема</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"119\"/>\n        <source>&amp;Default</source>\n        <translation>&amp;По умолчанию</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"126\"/>\n        <source>Dar&amp;k</source>\n        <translation>&amp;Тёмная</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"139\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/I&gt;</source>\n        <translation>&lt;i&gt;(Требуется перезапуск)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"149\"/>\n        <source>Language</source>\n        <translation>Язык</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"179\"/>\n        <source>Always enable preview zooming</source>\n        <translation>Всегда разрешать масштабирование предпросмотра</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"186\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Warning: preview may be inaccurate&lt;br/&gt;if checked.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Внимание: предпросмотр может быть неточным&lt;br/&gt;если включено.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"196\"/>\n        <source>Misc</source>\n        <translation>Разное</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"209\"/>\n        <source>Use native file dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"216\"/>\n        <source>&amp;Enable High-DPI support</source>\n        <translation>&amp;Включить поддержку высокого разрешения</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"223\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation>&lt;i&gt;(Требуется перезапуск)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"239\"/>\n        <source>Filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"244\"/>\n        <source>Other</source>\n        <translation>Другое</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"282\"/>\n        <source>Output messages</source>\n        <translation>Сообщения о выводе</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"202\"/>\n        <source>&amp;Use native color dialog</source>\n        <translation>&amp;Использовать родной цвет</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"163\"/>\n        <source>Preview</source>\n        <translation>Предпросмотр</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"169\"/>\n        <source>Timeout (seconds)</source>\n        <translation>Тайм-аут (в секундах)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"36\"/>\n        <source>Show institution logos</source>\n        <translation>Отображение институциональных логотипов</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"291\"/>\n        <source>Notify when scheduled update fails</source>\n        <translation>Уведомлять в случае неудачи запланированного обновления</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"333\"/>\n        <source>&amp;Ok</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>FiltersView</name>\n    <message>\n        <location filename=\"../ui/filtersview.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ColorParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/ColorParameter.cpp\" line=\"213\"/>\n        <source>Select color</source>\n        <translation>Выбрать цвет</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::DialogSettings</name>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"45\"/>\n        <source>Settings</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"51\"/>\n        <source>Never</source>\n        <translation>Никогда</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"52\"/>\n        <source>Daily</source>\n        <translation>Ежедневно</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"53\"/>\n        <source>Weekly</source>\n        <translation>Еженедельно</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"54\"/>\n        <source>Every 2 weeks</source>\n        <translation>Каждые 2 недели</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"55\"/>\n        <source>Monthly</source>\n        <translation>Ежемесячно</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"57\"/>\n        <source>At launch (debug)</source>\n        <translation>При запуске (debug)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"65\"/>\n        <source>Output messages</source>\n        <translation>Сообщения о выводе</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"66\"/>\n        <source>Quiet (default)</source>\n        <translation>Тихий (по умолчанию)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"67\"/>\n        <source>Verbose (console)</source>\n        <translation>Подробный (консоль)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"68\"/>\n        <source>Verbose (log file)</source>\n        <translation>Подробный (файл журнала)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"69\"/>\n        <source>Very verbose (console)</source>\n        <translation>Очень подробный (консоль)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"70\"/>\n        <source>Very verbose (log file)</source>\n        <translation>Очень подробный (файл журнала)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"71\"/>\n        <source>Debug (console)</source>\n        <translation>Отладка (консоль)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"72\"/>\n        <source>Debug (log file)</source>\n        <translation>Отладка (файл журнала)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"88\"/>\n        <source>Check to use Native/OS color dialog, uncheck to use Qt&apos;s</source>\n        <translation>Вкл. для родных/ОС настроек цвета диалогового окна, Выкл. для QT</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"90\"/>\n        <source>Check to use Native/OS file dialog, uncheck to use Qt&apos;s</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FileParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"159\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"162\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"165\"/>\n        <source>Select a file</source>\n        <translation>Выбрать файл</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FilterParametersWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"44\"/>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"273\"/>\n        <source>&lt;i&gt;Select a filter&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Выбрать фильтр&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"240\"/>\n        <source>&lt;i&gt;No parameters&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Параметры отсутствуют&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"245\"/>\n        <source>Error parsing filter parameters\n\n</source>\n        <translation>Ошибка при анализе параметров фильтра\n\n</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersPresenter</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"513\"/>\n        <source>Unknown filter</source>\n        <translation>Неизвестный фильтр</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"623\"/>\n        <source>Cannot find this fave&apos;s original filter\n</source>\n        <translation>Не удалось найти оригинал этого избранного фильтра\n</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersView</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"353\"/>\n        <source>Remove fave</source>\n        <translation>Удалить из избранного</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"680\"/>\n        <source>Rename Fave</source>\n        <translation>Переименовать избранное</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"682\"/>\n        <source>Remove Fave</source>\n        <translation>Удалить из избранного</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"684\"/>\n        <source>Clone Fave</source>\n        <translation>Клонировать избранное</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"688\"/>\n        <source>Add Fave</source>\n        <translation>Добавить в избранное</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"707\"/>\n        <source>Remove All</source>\n        <translation>Удалить все</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>%1 (%2 %3)</source>\n        <translation>%1 (%2 %3)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filters</source>\n        <translation>Фильтры</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filter</source>\n        <translation>Фильтр</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"354\"/>\n        <source>Do you really want to remove the following fave?\n\n%1\n</source>\n        <translation>Вы действительно хотите удалить этот фильтр из избранного?\n\n%1\n</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FolderParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FolderParameter.cpp\" line=\"138\"/>\n        <source>Select a folder</source>\n        <translation>Выбрать папку</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::GmicProcessor</name>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"416\"/>\n        <source>Image #%1 returned by filter has %2 channels (should be at most 4)</source>\n        <translation>Возвращённое фильтром изображение #%1 имеет %2 канал(а/ов) (должно быть не более 4)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"452\"/>\n        <source>Image #%1 returned by filter has %2 channels\n(should be at most 4)</source>\n        <translation>Возвращённое фильтром изображение #%1 имеет %2 канал(а/ов)\n(должно быть не более 4)</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::HeadlessProcessor</name>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"79\"/>\n        <source>At least a filter path or a filter command must be provided.</source>\n        <translation>Должен быть предоставлен путь к фильтру или команда фильтра.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"81\"/>\n        <source>Custom command (%1)</source>\n        <translation>Пользовательская команда (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"89\"/>\n        <source>Cannot find filter matching path %1</source>\n        <translation>Фильтр отсутствует на заданном пути %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"96\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation>Ошибка при анализе параметров для фильтра:\n\n%1\n\nНе удалось восстановить значения по умолчанию.\n\n%2</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"114\"/>\n        <source>Error parsing supplied command: %1</source>\n        <translation>Ошибка анализа данной команды: %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"117\"/>\n        <source>Supplied command (%1) does not match path (%2), (should be %3).</source>\n        <translation>Данная команда (%1) не совпадает с путём (%2), (должно быть %3).</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"229\"/>\n        <source>Filter execution failed, but with no error message.</source>\n        <translation>Применение фильтра не удалось, но без сообщения об ошибке.</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::InOutPanel</name>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"62\"/>\n        <source>Input layers</source>\n        <translation>Вводные слои</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"68\"/>\n        <source>None</source>\n        <translation>Нет</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"69\"/>\n        <source>Active (default)</source>\n        <translation>Активный (по умолчанию)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"70\"/>\n        <source>All</source>\n        <translation>Все</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"71\"/>\n        <source>Active and below</source>\n        <translation>Активный и ниже</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"72\"/>\n        <source>Active and above</source>\n        <translation>Активный и выше</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"73\"/>\n        <source>All visible</source>\n        <translation>Все видимые</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"74\"/>\n        <source>All invisible</source>\n        <translation>Все невидимые</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"85\"/>\n        <source>Output mode</source>\n        <translation>Режим вывода</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"91\"/>\n        <source>In place (default)</source>\n        <translation>Там же (по умолчанию)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"92\"/>\n        <source>New layer(s)</source>\n        <translation>Новый слой(слои)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"93\"/>\n        <source>New active layer(s)</source>\n        <translation>Новый активный слой(слои)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"94\"/>\n        <source>New image</source>\n        <translation>Новое изображение</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"205\"/>\n        <source>Input / Output</source>\n        <translation>Ввод/вывод</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"207\"/>\n        <source>Input</source>\n        <translation>Ввод</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"209\"/>\n        <source>Output</source>\n        <translation>Вывод</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"53\"/>\n        <source>System default (%1)</source>\n        <translation>Системный (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"62\"/>\n        <source>Translations are very likely to be incomplete.</source>\n        <translation>Переводы в большинстве случаев неполны.</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MainWindow</name>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"108\"/>\n        <source>Add fave</source>\n        <translation>Добавить в избранное</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"110\"/>\n        <source>Reset parameters to default values</source>\n        <translation>Сбросить параметры до значений по умолчанию</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"113\"/>\n        <source>Randomize parameters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"119\"/>\n        <source>Copy G&apos;MIC command to clipboard</source>\n        <translation>Скопируйте команду G&apos;MIC в буфер обмена</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"126\"/>\n        <source>Rename fave</source>\n        <translation>Переименовать избранное</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"128\"/>\n        <source>Remove fave</source>\n        <translation>Удалить из избранного</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"132\"/>\n        <source>Expand/Collapse all</source>\n        <translation>Свернуть/развернуть всё</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"134\"/>\n        <source>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandy University (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</source>\n        <translation>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Университет Нормандии (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"141\"/>\n        <source>Selection mode</source>\n        <translation>Режим выбора фильтров для скрытия из списка</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"180\"/>\n        <source>Update filters</source>\n        <translation>Обновить фильтры</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"232\"/>\n        <source>Manage visible tags\n(Right-click on a fave or a filter to set/remove tags)</source>\n        <translation>Управление видимыми маркерами\n(ПКМ на избранном/неизбранном фильтре, чтобы добавить/удалить маркеры)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"238\"/>\n        <source>Force &amp;quit</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"242\"/>\n        <source>Full</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"243\"/>\n        <source>Forward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"244\"/>\n        <source>Forward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"245\"/>\n        <source>Backward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"246\"/>\n        <source>Backward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"247\"/>\n        <source>Duplicate Top</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"248\"/>\n        <source>Duplicate Left</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"249\"/>\n        <source>Duplicate Bottom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"250\"/>\n        <source>Duplicate Right</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"251\"/>\n        <source>Duplicate Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"252\"/>\n        <source>Duplicate Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"253\"/>\n        <source>Checkered</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"254\"/>\n        <source>Checkered Inverse</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <source>Update completed</source>\n        <translation>Обновление завершено</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"378\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"509\"/>\n        <source>Filter definitions have been updated.</source>\n        <translation>Определения фильтров обновлены.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"381\"/>\n        <source>No download was needed.</source>\n        <translation>Загрузка не потребовалась.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"427\"/>\n        <source>Plugin was called with a filter path with no matching filter:\n\nPath: %1</source>\n        <translation>Плагин был вызван путём к фильтру без соответствующего фильтра:\n\nПуть: %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"435\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"462\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation>Ошибка при анализе параметров для фильтра:\n\n%1\n\nНе удалось восстановить значения по умолчанию.\n\n%2</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"448\"/>\n        <source>Plugin was called with a command that cannot be recognized as a filter:\n\nCommand: %1</source>\n        <translation>Плагин был вызван командой, которая не может быть распознана как фильтр:\n\nКоманда: %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"927\"/>\n        <source>[Elapsed time: %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"443\"/>\n        <source>Plugin was called with a command that cannot be parsed:\n\n%1</source>\n        <translation>Плагин был вызван командой, которая не может быть проанализирована:\n\n%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"452\"/>\n        <source>Plugin was called with a command that does not match the provided path:\n\nPath: %1\nCommand: %2\nCommand found for this path : %3</source>\n        <translation>Плагин был вызван командой, путь которой не совпадает с предоставленным:\n\nПуть: %1\nКоманда: %2\nКоманда, найденная по этому пути: %3</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"505\"/>\n        <source>Filters update could not be achieved</source>\n        <translation>Не удалось обновить</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"646\"/>\n        <source>The update could not be achieved&lt;br&gt;because of the following errors:&lt;br&gt;</source>\n        <translation>Не удалось обновить&lt;br/&gt;по следующим причинам:&lt;br/&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"652\"/>\n        <source>Update error</source>\n        <translation>Ошибка обновления</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"859\"/>\n        <source>Error</source>\n        <translation>Ошибка</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1478\"/>\n        <source>Waiting for cancelled jobs...</source>\n        <translation>В ожидании отменённых заданий...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Import faves</source>\n        <translation>Импорт избранных</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Do you want to import faves from file below?&lt;br/&gt;%1</source>\n        <translation>Вы хотите импортировать избранные из следующего файла?&lt;br/&gt;%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1335\"/>\n        <source>Don&apos;t ask again</source>\n        <translation>Больше не спрашивать</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>Confirmation</source>\n        <translation>Подтвердить</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>A gmic command is running.&lt;br&gt;Do you really want to close the plugin?</source>\n        <translation>Обрабатывается команда gmic.&lt;br&gt;Вы действительно хотите закрыть плагин?</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/MultilineTextParameterWidget.cpp\" line=\"41\"/>\n        <source>Ctrl+Return</source>\n        <translation>Ctrl+Enter</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"50\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation>Прогресс плагина G&apos;MIC-Qt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"53\"/>\n        <source>Abort</source>\n        <translation>Отмена</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"126\"/>\n        <source>[Processing 88:00:00.888 | 888.9 GiB]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"128\"/>\n        <source>[Processing 88:00:00.888]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"160\"/>\n        <source>Updating filters...</source>\n        <translation>Фильтры обновляются...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"213\"/>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"221\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Обрабатывается %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"223\"/>\n        <source>[Processing %1]</source>\n        <translation>[Обрабатывается %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"49\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation>G&apos;MIC-Qt Прогресс плагина</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"141\"/>\n        <source>%1 seconds</source>\n        <translation>%1 секунд</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"151\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Обрабатывается %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"153\"/>\n        <source>[Processing %1]</source>\n        <translation>[Обрабатывается %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SearchFieldWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"80\"/>\n        <source>Search</source>\n        <translation>Поиск</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"81\"/>\n        <source>Search in filters list (%1)</source>\n        <translation>Поиск фильтра в списке (%1)</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SourcesWidget</name>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"58\"/>\n        <source>Move source up</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"60\"/>\n        <source>Move source down</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"62\"/>\n        <source>Add local file (dialog)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"64\"/>\n        <source>Reset filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"80\"/>\n        <source>Macros: $HOME %USERPROFILE% $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"102\"/>\n        <source>Environment variables (e.g. %USERPROFILE% or %HOMEDIR%) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"82\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"53\"/>\n        <source>Remove source (Delete)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"85\"/>\n        <source>Disable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"86\"/>\n        <source>Enable without updates</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"87\"/>\n        <source>Enable with updates (recommended)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"106\"/>\n        <source>Environment variables (e.g. $HOME or ${HOME} for your home directory) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"111\"/>\n        <source>New source</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"192\"/>\n        <source>Select a file</source>\n        <translation type=\"unfinished\">Выбрать файл</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::Updater</name>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"137\"/>\n        <source>Error downloading %1 (empty file?)</source>\n        <translation>Ошибка скачивания %1 (пустой файл?)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"146\"/>\n        <source>Could not read/decompress %1</source>\n        <translation>Ошибка чтения/распаковки %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"151\"/>\n        <source>Error writing file %1</source>\n        <translation>Ошибка записи файла %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"168\"/>\n        <source>Error downloading %1&lt;br/&gt;Error %2: %3</source>\n        <translation>Ошибка при загрузке %1&lt;br/&gt;Ошибка: %2: %3</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"204\"/>\n        <source>Download timeout: %1</source>\n        <translation>Тайм-аут загрузки: %1</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::VisibleTagSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"55\"/>\n        <source>Show All Filters</source>\n        <translation>Отобразить все фильтры</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"59\"/>\n        <source>Show %1 Tags</source>\n        <translation>Отобразить %1(ые) маркеры</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"54\"/>\n        <source>Zoom in</source>\n        <translation>Приблизить</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"55\"/>\n        <source>Zoom out</source>\n        <translation>Отдалить</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"56\"/>\n        <source>Reset zoom</source>\n        <translation>Сбросить масштабирование</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"155\"/>\n        <source>Warning: Preview may be inaccurate (zoom factor has been modified)</source>\n        <translation>Внимание: предпросмотр может быть неточным (изменена настройка масштабирования)</translation>\n    </message>\n</context>\n<context>\n    <name>HeadlessProgressDialog</name>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Прогресс</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"68\"/>\n        <source>Cancel</source>\n        <translation>Отмена</translation>\n    </message>\n</context>\n<context>\n    <name>InOutPanel</name>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"40\"/>\n        <source>Input / Output</source>\n        <translation>Ввод/вывод</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"47\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"92\"/>\n        <source>Input layers</source>\n        <translation>Вводные слои</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"115\"/>\n        <source>Output mode</source>\n        <translation>Режим вывода</translation>\n    </message>\n</context>\n<context>\n    <name>JpegQualityDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Dialog</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"20\"/>\n        <location filename=\"../src/Host/None/JpegQualityDialog.cpp\" line=\"13\"/>\n        <source>JPEG Quality</source>\n        <translation>Качество JPEG</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"28\"/>\n        <source>0</source>\n        <translation>0</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"42\"/>\n        <source>100</source>\n        <translation>100</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"60\"/>\n        <source>Always use this quality for this execution of G&apos;MIC-Qt</source>\n        <translation>Всегда использовать выбранное качество для G&apos;MIC-Qt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"85\"/>\n        <source>&amp;Cancel</source>\n        <translation>&amp;Отмена</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"92\"/>\n        <source>&amp;Ok</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"35\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation>&lt;i&gt;(Требуется перезапуск)&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"48\"/>\n        <source>Translate filters (WIP)</source>\n        <translation>Перевод фильтров (в процессе)</translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"18\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"176\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Download filter definitions from remote sources&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Скачать определения фильтров из отдалённых ресурсов&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"179\"/>\n        <source>Internet</source>\n        <translation>Интернет</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"418\"/>\n        <source>Preview type (Ctrl+Shift+P)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"509\"/>\n        <source>&amp;Settings...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"525\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"532\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"248\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"255\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"262\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"408\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable/disable preview&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(right click on preview image for instant swapping)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Включение/выключение предпросмотра&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(ПКМ на предпросмотре для мгновенного переключения)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"411\"/>\n        <source>Preview</source>\n        <translation>Предпросмотр</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"558\"/>\n        <source>&amp;Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"571\"/>\n        <source>&amp;Cancel</source>\n        <translation>&amp;Отмена</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"545\"/>\n        <source>&amp;Fullscreen</source>\n        <translation>&amp;Полный экран</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"584\"/>\n        <source>&amp;Apply</source>\n        <translation>&amp;Применить</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"597\"/>\n        <source>&amp;OK</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"29\"/>\n        <source>Update</source>\n        <translation>Обновить</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"48\"/>\n        <source>Abort</source>\n        <translation>Отмена</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"55\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"30\"/>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"50\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"72\"/>\n        <source>Cancel</source>\n        <translation>Отмена</translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"76\"/>\n        <source>Select an image to open...</source>\n        <translation>Выберите изображение...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Error</source>\n        <translation>Ошибка</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Could not open file.</source>\n        <translation>Не удалось открыть файл.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"88\"/>\n        <source>Default image</source>\n        <translation>Изображение по умолчанию</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"81\"/>\n        <source>Visible</source>\n        <translation>Видимость</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"107\"/>\n        <source>Available filters (%1)</source>\n        <translation>Доступные фильтры (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"151\"/>\n        <source>%1 Tag</source>\n        <translation>%1 маркер</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"157\"/>\n        <source>None</source>\n        <translation>Нет</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"158\"/>\n        <source>Red</source>\n        <translation>Красный</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"159\"/>\n        <source>Green</source>\n        <translation>Зелёный</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"160\"/>\n        <source>Blue</source>\n        <translation>Синий</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"161\"/>\n        <source>Cyan</source>\n        <translation>Голубой</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"162\"/>\n        <source>Magenta</source>\n        <translation>Пурпурный</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"163\"/>\n        <source>Yellow</source>\n        <translation>Жёлтый</translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"127\"/>\n        <source>Could not install translator for file %1</source>\n        <translation>Не удалось установить переводчик для файла %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"130\"/>\n        <source>Could not load translation file %1</source>\n        <translation>Не удалось загрузить файл перевода %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"337\"/>\n        <source>List %1 cannot be merged considering these runs: %2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"432\"/>\n        <source>%1 GiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"434\"/>\n        <source>%1 MiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"436\"/>\n        <source>%1 KiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"438\"/>\n        <source>%1 B</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>SearchFieldWidget</name>\n    <message>\n        <location filename=\"../ui/SearchFieldWidget.ui\" line=\"20\"/>\n        <source>Frame</source>\n        <translation>Frame</translation>\n    </message>\n</context>\n<context>\n    <name>SourcesWidget</name>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\">GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"136\"/>\n        <source>Official filters:</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"22\"/>\n        <source>File / URL</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"32\"/>\n        <source>Add new</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"39\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"55\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"62\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"85\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"92\"/>\n        <source>...</source>\n        <translation type=\"unfinished\">...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"118\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../ui/zoomlevelselector.ui\" line=\"20\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"73\"/>\n        <source>G&apos;MIC-Qt filter output</source>\n        <translation>G&apos;MIC-Qt результат работы фильтра</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"84\"/>\n        <source>Close</source>\n        <translation>Закрыть</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"87\"/>\n        <source>Save as...</source>\n        <translation>Сохранить как...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"122\"/>\n        <source>%1 file (*.%2 *.%3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"148\"/>\n        <source>Save image as...</source>\n        <translation>Сохранить изображение как...</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageView</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Error</source>\n        <translation>Ошибка</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Could not write image file %1</source>\n        <translation>Не удалось записать изображение в файл %1</translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "translations/sv.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- Original Swedish translation done by starinspace@github -->\n\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"sv\">\n<context>\n    <name>DialogSettings</name>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>parametrar</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"64\"/>\n        <source>Preview on the &amp;left</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"94\"/>\n        <source>Pre&amp;view on right side</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"119\"/>\n        <source>&amp;Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"126\"/>\n        <source>Dar&amp;k</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"186\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Warning: preview may be inaccurate&lt;br/&gt;if checked.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"196\"/>\n        <source>Misc</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"209\"/>\n        <source>Use native file dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"216\"/>\n        <source>&amp;Enable High-DPI support</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"223\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation type=\"unfinished\">&lt;i&gt;(Omstart behövs)&lt;/I&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"239\"/>\n        <source>Filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"250\"/>\n        <source>Internet updates</source>\n        <translation>Internetuppdateringar</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"259\"/>\n        <source>Update now</source>\n        <translation>Uppdatera nu</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"30\"/>\n        <source>Layout</source>\n        <translation>Layout</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"24\"/>\n        <source>Interface</source>\n        <translation>Gränssnitt</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"113\"/>\n        <source>Theme</source>\n        <translation>Tema</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"139\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/I&gt;</source>\n        <translation>&lt;i&gt;(Omstart behövs)&lt;/I&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"149\"/>\n        <source>Language</source>\n        <translation>Språk</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"179\"/>\n        <source>Always enable preview zooming</source>\n        <translation>Aktivera alltid förhandsgranskning</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"244\"/>\n        <source>Other</source>\n        <translation>Övrig</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"282\"/>\n        <source>Output messages</source>\n        <translation>Utdata meddelande</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"202\"/>\n        <source>&amp;Use native color dialog</source>\n        <translation>&amp;Använd inbyggd färgdialog</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"163\"/>\n        <source>Preview</source>\n        <translation>Förhandsvisning</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"169\"/>\n        <source>Timeout (seconds)</source>\n        <translation>Timeout (sekunder)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"36\"/>\n        <source>Show institution logos</source>\n        <translation>Visa institutionens logotyper</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"291\"/>\n        <source>Notify when scheduled update fails</source>\n        <translation>Meddela när den schemalagda uppdateringen misslyckas</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"333\"/>\n        <source>&amp;Ok</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>FiltersView</name>\n    <message>\n        <location filename=\"../ui/filtersview.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>Form</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ColorParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/ColorParameter.cpp\" line=\"213\"/>\n        <source>Select color</source>\n        <translation>Välj färg</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::DialogSettings</name>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"45\"/>\n        <source>Settings</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"51\"/>\n        <source>Never</source>\n        <translation>Aldrig</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"52\"/>\n        <source>Daily</source>\n        <translation>​Dagligen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"53\"/>\n        <source>Weekly</source>\n        <translation>Varje vecka</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"54\"/>\n        <source>Every 2 weeks</source>\n        <translation>Varannan vecka</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"55\"/>\n        <source>Monthly</source>\n        <translation>Månadsvis</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"57\"/>\n        <source>At launch (debug)</source>\n        <translation>Vid start (felsök)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"65\"/>\n        <source>Output messages</source>\n        <translation>Utdata meddelande</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"66\"/>\n        <source>Quiet (default)</source>\n        <translation>Tyst (standard)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"67\"/>\n        <source>Verbose (console)</source>\n        <translation>Verbosa (konsol)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"68\"/>\n        <source>Verbose (log file)</source>\n        <translation>Verbose (loggfil)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"69\"/>\n        <source>Very verbose (console)</source>\n        <translation>Väldigt verbose (konsol)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"70\"/>\n        <source>Very verbose (log file)</source>\n        <translation>Väldigt verbose (loggfil)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"71\"/>\n        <source>Debug (console)</source>\n        <translation>Felsök (konsol)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"72\"/>\n        <source>Debug (log file)</source>\n        <translation>Felsök (loggfil)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"88\"/>\n        <source>Check to use Native/OS color dialog, uncheck to use Qt&apos;s</source>\n        <translation>Markera för att använda Native / OS-färgdialogen, avmarkera för att använda Qt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"90\"/>\n        <source>Check to use Native/OS file dialog, uncheck to use Qt&apos;s</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FileParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"159\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"162\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"165\"/>\n        <source>Select a file</source>\n        <translation>Välj en fil</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FilterParametersWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"44\"/>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"273\"/>\n        <source>&lt;i&gt;Select a filter&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Välj ett filter&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"240\"/>\n        <source>&lt;i&gt;No parameters&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Inga parametrar&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"245\"/>\n        <source>Error parsing filter parameters\n\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersPresenter</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"513\"/>\n        <source>Unknown filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"623\"/>\n        <source>Cannot find this fave&apos;s original filter\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersView</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"353\"/>\n        <source>Remove fave</source>\n        <translation>Ta bort fave</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"680\"/>\n        <source>Rename Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"682\"/>\n        <source>Remove Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"684\"/>\n        <source>Clone Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"688\"/>\n        <source>Add Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"707\"/>\n        <source>Remove All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>%1 (%2 %3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"354\"/>\n        <source>Do you really want to remove the following fave?\n\n%1\n</source>\n        <translation>Vill du verkligen ta bort följande fave?\n\n%1\n</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FolderParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FolderParameter.cpp\" line=\"138\"/>\n        <source>Select a folder</source>\n        <translation>Välj en mapp</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::GmicProcessor</name>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"416\"/>\n        <source>Image #%1 returned by filter has %2 channels (should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"452\"/>\n        <source>Image #%1 returned by filter has %2 channels\n(should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::HeadlessProcessor</name>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"79\"/>\n        <source>At least a filter path or a filter command must be provided.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"81\"/>\n        <source>Custom command (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"89\"/>\n        <source>Cannot find filter matching path %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"96\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"114\"/>\n        <source>Error parsing supplied command: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"117\"/>\n        <source>Supplied command (%1) does not match path (%2), (should be %3).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"229\"/>\n        <source>Filter execution failed, but with no error message.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::InOutPanel</name>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"62\"/>\n        <source>Input layers</source>\n        <translation>Mata in lager</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"68\"/>\n        <source>None</source>\n        <translation>Ingen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"69\"/>\n        <source>Active (default)</source>\n        <translation>Aktiv (standard)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"70\"/>\n        <source>All</source>\n        <translation>Allt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"71\"/>\n        <source>Active and below</source>\n        <translation>Aktiv och nedan</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"72\"/>\n        <source>Active and above</source>\n        <translation>Aktiv och ovan</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"73\"/>\n        <source>All visible</source>\n        <translation>Alla synliga</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"74\"/>\n        <source>All invisible</source>\n        <translation>Alla osynliga</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"85\"/>\n        <source>Output mode</source>\n        <translation>Utdata-läge</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"91\"/>\n        <source>In place (default)</source>\n        <translation>På plats (standard)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"92\"/>\n        <source>New layer(s)</source>\n        <translation>Nya lager</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"93\"/>\n        <source>New active layer(s)</source>\n        <translation>Ny aktivt lager</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"94\"/>\n        <source>New image</source>\n        <translation>New image</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"205\"/>\n        <source>Input / Output</source>\n        <translation>Indata / Utdata</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"207\"/>\n        <source>Input</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"209\"/>\n        <source>Output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"53\"/>\n        <source>System default (%1)</source>\n        <translation>Systemstandard (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"62\"/>\n        <source>Translations are very likely to be incomplete.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MainWindow</name>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"108\"/>\n        <source>Add fave</source>\n        <translation>Lägg till fave</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"110\"/>\n        <source>Reset parameters to default values</source>\n        <translation>Återställ parametrarna till standardvärden</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"113\"/>\n        <source>Randomize parameters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"119\"/>\n        <source>Copy G&apos;MIC command to clipboard</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"126\"/>\n        <source>Rename fave</source>\n        <translation>Byt namn på fave</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"128\"/>\n        <source>Remove fave</source>\n        <translation>Ta bort fave</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"132\"/>\n        <source>Expand/Collapse all</source>\n        <translation>Expandera/Dölj alla</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"134\"/>\n        <source>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandy University (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</source>\n        <translation>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandy University (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"141\"/>\n        <source>Selection mode</source>\n        <translation>Valläge</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"180\"/>\n        <source>Update filters</source>\n        <translation>Uppdatera filter</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"232\"/>\n        <source>Manage visible tags\n(Right-click on a fave or a filter to set/remove tags)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"238\"/>\n        <source>Force &amp;quit</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"242\"/>\n        <source>Full</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"243\"/>\n        <source>Forward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"244\"/>\n        <source>Forward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"245\"/>\n        <source>Backward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"246\"/>\n        <source>Backward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"247\"/>\n        <source>Duplicate Top</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"248\"/>\n        <source>Duplicate Left</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"249\"/>\n        <source>Duplicate Bottom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"250\"/>\n        <source>Duplicate Right</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"251\"/>\n        <source>Duplicate Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"252\"/>\n        <source>Duplicate Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"253\"/>\n        <source>Checkered</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"254\"/>\n        <source>Checkered Inverse</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <source>Update completed</source>\n        <translation>Uppdateringen slutförd</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"378\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"509\"/>\n        <source>Filter definitions have been updated.</source>\n        <translation>Filterdefinitioner har uppdaterats.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"381\"/>\n        <source>No download was needed.</source>\n        <translation>Inga nerladdningar behövs.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"427\"/>\n        <source>Plugin was called with a filter path with no matching filter:\n\nPath: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"435\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"462\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"448\"/>\n        <source>Plugin was called with a command that cannot be recognized as a filter:\n\nCommand: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"927\"/>\n        <source>[Elapsed time: %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"443\"/>\n        <source>Plugin was called with a command that cannot be parsed:\n\n%1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"452\"/>\n        <source>Plugin was called with a command that does not match the provided path:\n\nPath: %1\nCommand: %2\nCommand found for this path : %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"505\"/>\n        <source>Filters update could not be achieved</source>\n        <translation>Filteruppdatering kunde inte utföras</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"646\"/>\n        <source>The update could not be achieved&lt;br&gt;because of the following errors:&lt;br&gt;</source>\n        <translation>Uppdateringen kunde inte uppnås&lt;br/&gt;på grund av följande fel:&lt;br/&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"652\"/>\n        <source>Update error</source>\n        <translation>Uppdateringsfel</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"859\"/>\n        <source>Error</source>\n        <translation>Fel</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1478\"/>\n        <source>Waiting for cancelled jobs...</source>\n        <translation>Väntar på avbrutet arbete...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Import faves</source>\n        <translation>Importera faves</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Do you want to import faves from file below?&lt;br/&gt;%1</source>\n        <translation>Vill du importera faves från filen nedan?&lt;br/&gt;%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1335\"/>\n        <source>Don&apos;t ask again</source>\n        <translation>Fråga inte igen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>Confirmation</source>\n        <translation>Bekräfta</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>A gmic command is running.&lt;br&gt;Do you really want to close the plugin?</source>\n        <translation>Ett g&apos;mic-kommando körs.&lt;br&gt;Vill du verkligen stänga plugin-programmet?</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/MultilineTextParameterWidget.cpp\" line=\"41\"/>\n        <source>Ctrl+Return</source>\n        <translation>Ctrl+Enter</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"50\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation>G&apos;MIC-Qt Plug-in progression</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"53\"/>\n        <source>Abort</source>\n        <translation>Avbryt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"126\"/>\n        <source>[Processing 88:00:00.888 | 888.9 GiB]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"128\"/>\n        <source>[Processing 88:00:00.888]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"160\"/>\n        <source>Updating filters...</source>\n        <translation>Uppdaterar filter ...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"213\"/>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"221\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Bearbetar %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"223\"/>\n        <source>[Processing %1]</source>\n        <translation>[Bearbetar %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"49\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation>G&apos;MIC-Qt Plug-in progression</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"141\"/>\n        <source>%1 seconds</source>\n        <translation>%1 sekunder</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"151\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Bearbetar %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"153\"/>\n        <source>[Processing %1]</source>\n        <translation>[Bearbetar %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SearchFieldWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"80\"/>\n        <source>Search</source>\n        <translation>Sök</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"81\"/>\n        <source>Search in filters list (%1)</source>\n        <translation>Sök i filterlistan (%1)</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SourcesWidget</name>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"58\"/>\n        <source>Move source up</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"60\"/>\n        <source>Move source down</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"62\"/>\n        <source>Add local file (dialog)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"64\"/>\n        <source>Reset filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"80\"/>\n        <source>Macros: $HOME %USERPROFILE% $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"102\"/>\n        <source>Environment variables (e.g. %USERPROFILE% or %HOMEDIR%) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"82\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"53\"/>\n        <source>Remove source (Delete)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"85\"/>\n        <source>Disable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"86\"/>\n        <source>Enable without updates</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"87\"/>\n        <source>Enable with updates (recommended)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"106\"/>\n        <source>Environment variables (e.g. $HOME or ${HOME} for your home directory) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"111\"/>\n        <source>New source</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"192\"/>\n        <source>Select a file</source>\n        <translation type=\"unfinished\">Välj en fil</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::Updater</name>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"137\"/>\n        <source>Error downloading %1 (empty file?)</source>\n        <translation>Fel vid nedladdning av %1 (tom fil?)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"146\"/>\n        <source>Could not read/decompress %1</source>\n        <translation>Kunde inte läsa/dekomprimera %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"151\"/>\n        <source>Error writing file %1</source>\n        <translation>Fel vid skrivning av fil %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"168\"/>\n        <source>Error downloading %1&lt;br/&gt;Error %2: %3</source>\n        <translation>Fel vid nedladdning %1&lt;br/&gt;Fel %2: %3</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"204\"/>\n        <source>Download timeout: %1</source>\n        <translation>Ladda ner timeout: %1</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::VisibleTagSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"55\"/>\n        <source>Show All Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"59\"/>\n        <source>Show %1 Tags</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"54\"/>\n        <source>Zoom in</source>\n        <translation>Zooma in</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"55\"/>\n        <source>Zoom out</source>\n        <translation>Zoom ut</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"56\"/>\n        <source>Reset zoom</source>\n        <translation>Återställ zoomning</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"155\"/>\n        <source>Warning: Preview may be inaccurate (zoom factor has been modified)</source>\n        <translation>Varning: Förhandsgranskningen kan vara felaktig (zoomfaktorn har ändrats)</translation>\n    </message>\n</context>\n<context>\n    <name>HeadlessProgressDialog</name>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Dialog</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"68\"/>\n        <source>Cancel</source>\n        <translation>Avbryt</translation>\n    </message>\n</context>\n<context>\n    <name>InOutPanel</name>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"40\"/>\n        <source>Input / Output</source>\n        <translation>Indata / Utdata</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"47\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"92\"/>\n        <source>Input layers</source>\n        <translation>Mata in lager</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"115\"/>\n        <source>Output mode</source>\n        <translation>Utdata-läge</translation>\n    </message>\n</context>\n<context>\n    <name>JpegQualityDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"20\"/>\n        <location filename=\"../src/Host/None/JpegQualityDialog.cpp\" line=\"13\"/>\n        <source>JPEG Quality</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"28\"/>\n        <source>0</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"42\"/>\n        <source>100</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"60\"/>\n        <source>Always use this quality for this execution of G&apos;MIC-Qt</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"85\"/>\n        <source>&amp;Cancel</source>\n        <translation type=\"unfinished\">&amp;Avbryt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"92\"/>\n        <source>&amp;Ok</source>\n        <translation type=\"unfinished\">&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>Form</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"35\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation>&lt;i&gt;(Omstart behövs)&lt;/I&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"48\"/>\n        <source>Translate filters (WIP)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation type=\"unfinished\">Huvudfönster</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"18\"/>\n        <source>Form</source>\n        <translation>Form</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"176\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Download filter definitions from remote sources&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Ladda ner filterdefinitioner från fjärrkällor&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"179\"/>\n        <source>Internet</source>\n        <translation>Internet</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"248\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"255\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"262\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"408\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable/disable preview&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(right click on preview image for instant swapping)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&gt;&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable/disable preview&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(högerklicka på förhandsgranskningsbild för omedelbar byte)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"411\"/>\n        <source>Preview</source>\n        <translation>Preview</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"509\"/>\n        <source>&amp;Settings...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"525\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"532\"/>\n        <source>TextLabel</source>\n        <translation>Textetikett</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"558\"/>\n        <source>&amp;Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"571\"/>\n        <source>&amp;Cancel</source>\n        <translation>&amp;Avbryt</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"545\"/>\n        <source>&amp;Fullscreen</source>\n        <translation>&amp;Fullskärm</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"418\"/>\n        <source>Preview type (Ctrl+Shift+P)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"584\"/>\n        <source>&amp;Apply</source>\n        <translation>&amp;Tillämpa</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"597\"/>\n        <source>&amp;OK</source>\n        <translation>&amp;OK</translation>\n    </message>\n</context>\n<context>\n    <name>MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>Form</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"29\"/>\n        <source>Update</source>\n        <translation>Updatera</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>Form</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"48\"/>\n        <source>Abort</source>\n        <translation>Avbryt</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"55\"/>\n        <source>TextLabel</source>\n        <translation>Textetikett</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>Huvudfönster</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"30\"/>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"50\"/>\n        <source>TextLabel</source>\n        <translation>Textetikett</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"72\"/>\n        <source>Cancel</source>\n        <translation>Avbryt</translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"81\"/>\n        <source>Visible</source>\n        <translation>Synlig</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"107\"/>\n        <source>Available filters (%1)</source>\n        <translation>Tillgängliga filter (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"76\"/>\n        <source>Select an image to open...</source>\n        <translation>Välj en bild som ska öppnas...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Error</source>\n        <translation>Fel</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Could not open file.</source>\n        <translation>Kunde inte öppna filen.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"88\"/>\n        <source>Default image</source>\n        <translation>Standardbild</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"151\"/>\n        <source>%1 Tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"157\"/>\n        <source>None</source>\n        <translation type=\"unfinished\">Ingen</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"158\"/>\n        <source>Red</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"159\"/>\n        <source>Green</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"160\"/>\n        <source>Blue</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"161\"/>\n        <source>Cyan</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"162\"/>\n        <source>Magenta</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"163\"/>\n        <source>Yellow</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"127\"/>\n        <source>Could not install translator for file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"130\"/>\n        <source>Could not load translation file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"337\"/>\n        <source>List %1 cannot be merged considering these runs: %2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"432\"/>\n        <source>%1 GiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"434\"/>\n        <source>%1 MiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"436\"/>\n        <source>%1 KiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"438\"/>\n        <source>%1 B</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>SearchFieldWidget</name>\n    <message>\n        <location filename=\"../ui/SearchFieldWidget.ui\" line=\"20\"/>\n        <source>Frame</source>\n        <translation>Frame</translation>\n    </message>\n</context>\n<context>\n    <name>SourcesWidget</name>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\">Form</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"136\"/>\n        <source>Official filters:</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"22\"/>\n        <source>File / URL</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"32\"/>\n        <source>Add new</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"39\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"55\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"62\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"85\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"92\"/>\n        <source>...</source>\n        <translation type=\"unfinished\">...</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"118\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../ui/zoomlevelselector.ui\" line=\"20\"/>\n        <source>Form</source>\n        <translation>Form</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"73\"/>\n        <source>G&apos;MIC-Qt filter output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"84\"/>\n        <source>Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"87\"/>\n        <source>Save as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"122\"/>\n        <source>%1 file (*.%2 *.%3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"148\"/>\n        <source>Save image as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageView</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\">Fel</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Could not write image file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "translations/uk.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- Original Ukrainian translation done by Andrex Starodubtsev -->\n\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"uk\">\n<context>\n    <name>DialogSettings</name>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Діалогове вікно</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"250\"/>\n        <source>Internet updates</source>\n        <translation>Оновлення через інтернет</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"259\"/>\n        <source>Update now</source>\n        <translation>Оновити</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"30\"/>\n        <source>Layout</source>\n        <translation>Розміщення</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"24\"/>\n        <source>Interface</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"64\"/>\n        <source>Preview on the &amp;left</source>\n        <translation>Попередній перегляд &amp;зліва</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"94\"/>\n        <source>Pre&amp;view on right side</source>\n        <translation>Попередній перегляд &amp;справа</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"113\"/>\n        <source>Theme</source>\n        <translation>Тема</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"119\"/>\n        <source>&amp;Default</source>\n        <translation>&amp;Стандартний</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"126\"/>\n        <source>Dar&amp;k</source>\n        <translation>&amp;Темна тема</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"139\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/I&gt;</source>\n        <translation>&lt;i&gt;(Необхідне перезавантаження.)&lt;/I&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"149\"/>\n        <source>Language</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"179\"/>\n        <source>Always enable preview zooming</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"186\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Warning: preview may be inaccurate&lt;br/&gt;if checked.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"196\"/>\n        <source>Misc</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"209\"/>\n        <source>Use native file dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"216\"/>\n        <source>&amp;Enable High-DPI support</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"223\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation type=\"unfinished\">&lt;i&gt;(Необхідне перезавантаження.)&lt;/I&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"239\"/>\n        <source>Filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"244\"/>\n        <source>Other</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"282\"/>\n        <source>Output messages</source>\n        <translation>Повідомлення</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"202\"/>\n        <source>&amp;Use native color dialog</source>\n        <translation>&amp;Використовувати власні кольори діалогових вікон</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"163\"/>\n        <source>Preview</source>\n        <translation>Попередній перегляд</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"169\"/>\n        <source>Timeout (seconds)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"36\"/>\n        <source>Show institution logos</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"291\"/>\n        <source>Notify when scheduled update fails</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"333\"/>\n        <source>&amp;Ok</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>FiltersView</name>\n    <message>\n        <location filename=\"../ui/filtersview.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>Форма</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ColorParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/ColorParameter.cpp\" line=\"213\"/>\n        <source>Select color</source>\n        <translation>Обрати колір</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::DialogSettings</name>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"45\"/>\n        <source>Settings</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"51\"/>\n        <source>Never</source>\n        <translation>Ніколи</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"52\"/>\n        <source>Daily</source>\n        <translation>Щодня</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"53\"/>\n        <source>Weekly</source>\n        <translation>Щотижня</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"54\"/>\n        <source>Every 2 weeks</source>\n        <translation>Кожні 2 тижні</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"55\"/>\n        <source>Monthly</source>\n        <translation>Щомісяця</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"57\"/>\n        <source>At launch (debug)</source>\n        <translation>При запуску (налагодження)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"65\"/>\n        <source>Output messages</source>\n        <translation>Повідомлення</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"66\"/>\n        <source>Quiet (default)</source>\n        <translation>Не виводити повідомлення (стандартний)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"67\"/>\n        <source>Verbose (console)</source>\n        <translation>Докладний режим (консоль)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"68\"/>\n        <source>Verbose (log file)</source>\n        <translation>Докладний режим (лог)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"69\"/>\n        <source>Very verbose (console)</source>\n        <translation>Дуже докладний режим (консоль)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"70\"/>\n        <source>Very verbose (log file)</source>\n        <translation>Дуже докладний режим (лог)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"71\"/>\n        <source>Debug (console)</source>\n        <translation>Налагодження (консоль)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"72\"/>\n        <source>Debug (log file)</source>\n        <translation>Налагодження (лог)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"88\"/>\n        <source>Check to use Native/OS color dialog, uncheck to use Qt&apos;s</source>\n        <translation>Поставте прапорець, щоб використовувати кольори діалогових вікон Native/OS, або зніміть прапорець, щоб використовувати кольори Qt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"90\"/>\n        <source>Check to use Native/OS file dialog, uncheck to use Qt&apos;s</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FileParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"159\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"162\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"165\"/>\n        <source>Select a file</source>\n        <translation>Виберіть файл</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FilterParametersWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"44\"/>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"273\"/>\n        <source>&lt;i&gt;Select a filter&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Виберіть фільтр&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"240\"/>\n        <source>&lt;i&gt;No parameters&lt;/i&gt;</source>\n        <translation>&lt;i&gt;Немає параметрів&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"245\"/>\n        <source>Error parsing filter parameters\n\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersPresenter</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"513\"/>\n        <source>Unknown filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"623\"/>\n        <source>Cannot find this fave&apos;s original filter\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersView</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"353\"/>\n        <source>Remove fave</source>\n        <translation>Перейменувати уподобання</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"680\"/>\n        <source>Rename Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"682\"/>\n        <source>Remove Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"684\"/>\n        <source>Clone Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"688\"/>\n        <source>Add Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"707\"/>\n        <source>Remove All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>%1 (%2 %3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"354\"/>\n        <source>Do you really want to remove the following fave?\n\n%1\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FolderParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FolderParameter.cpp\" line=\"138\"/>\n        <source>Select a folder</source>\n        <translation>Виберіть папку</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::GmicProcessor</name>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"416\"/>\n        <source>Image #%1 returned by filter has %2 channels (should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"452\"/>\n        <source>Image #%1 returned by filter has %2 channels\n(should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::HeadlessProcessor</name>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"79\"/>\n        <source>At least a filter path or a filter command must be provided.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"81\"/>\n        <source>Custom command (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"89\"/>\n        <source>Cannot find filter matching path %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"96\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"114\"/>\n        <source>Error parsing supplied command: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"117\"/>\n        <source>Supplied command (%1) does not match path (%2), (should be %3).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"229\"/>\n        <source>Filter execution failed, but with no error message.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::InOutPanel</name>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"62\"/>\n        <source>Input layers</source>\n        <translation>Вхідні шари</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"68\"/>\n        <source>None</source>\n        <translation>Немає</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"69\"/>\n        <source>Active (default)</source>\n        <translation>Активний (стандартний)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"70\"/>\n        <source>All</source>\n        <translation>Все</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"71\"/>\n        <source>Active and below</source>\n        <translation>Активний і нижче</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"72\"/>\n        <source>Active and above</source>\n        <translation>Активний і вище</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"73\"/>\n        <source>All visible</source>\n        <translation>Всі видимі шари</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"74\"/>\n        <source>All invisible</source>\n        <translation>Всі невидимі шари</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"85\"/>\n        <source>Output mode</source>\n        <translation>Режим виводу</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"91\"/>\n        <source>In place (default)</source>\n        <translation>Замість (стандартний)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"92\"/>\n        <source>New layer(s)</source>\n        <translation>Новий(і)) шар(и)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"93\"/>\n        <source>New active layer(s)</source>\n        <translation>Новий(і) активний(і) шар(и)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"94\"/>\n        <source>New image</source>\n        <translation>Нове зображення</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"205\"/>\n        <source>Input / Output</source>\n        <translation>Ввід / Вивід</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"207\"/>\n        <source>Input</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"209\"/>\n        <source>Output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"53\"/>\n        <source>System default (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"62\"/>\n        <source>Translations are very likely to be incomplete.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MainWindow</name>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"108\"/>\n        <source>Add fave</source>\n        <translation>Додати до вподобань</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"110\"/>\n        <source>Reset parameters to default values</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"113\"/>\n        <source>Randomize parameters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"119\"/>\n        <source>Copy G&apos;MIC command to clipboard</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"126\"/>\n        <source>Rename fave</source>\n        <translation>Перейменувати уподобання</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"128\"/>\n        <source>Remove fave</source>\n        <translation>Перейменувати уподобання</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"132\"/>\n        <source>Expand/Collapse all</source>\n        <translation>Розгорнути / згорнути</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"134\"/>\n        <source>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandy University (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</source>\n        <translation>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandie Université (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"141\"/>\n        <source>Selection mode</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"180\"/>\n        <source>Update filters</source>\n        <translation>Оновити фільтри</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"232\"/>\n        <source>Manage visible tags\n(Right-click on a fave or a filter to set/remove tags)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"238\"/>\n        <source>Force &amp;quit</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"242\"/>\n        <source>Full</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"243\"/>\n        <source>Forward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"244\"/>\n        <source>Forward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"245\"/>\n        <source>Backward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"246\"/>\n        <source>Backward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"247\"/>\n        <source>Duplicate Top</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"248\"/>\n        <source>Duplicate Left</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"249\"/>\n        <source>Duplicate Bottom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"250\"/>\n        <source>Duplicate Right</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"251\"/>\n        <source>Duplicate Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"252\"/>\n        <source>Duplicate Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"253\"/>\n        <source>Checkered</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"254\"/>\n        <source>Checkered Inverse</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <source>Update completed</source>\n        <translation>Оновлення завершено</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"378\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"509\"/>\n        <source>Filter definitions have been updated.</source>\n        <translation>Визначення фільтрiв були оновлені.</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"381\"/>\n        <source>No download was needed.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"427\"/>\n        <source>Plugin was called with a filter path with no matching filter:\n\nPath: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"435\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"462\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"448\"/>\n        <source>Plugin was called with a command that cannot be recognized as a filter:\n\nCommand: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"927\"/>\n        <source>[Elapsed time: %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"443\"/>\n        <source>Plugin was called with a command that cannot be parsed:\n\n%1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"452\"/>\n        <source>Plugin was called with a command that does not match the provided path:\n\nPath: %1\nCommand: %2\nCommand found for this path : %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"505\"/>\n        <source>Filters update could not be achieved</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"646\"/>\n        <source>The update could not be achieved&lt;br&gt;because of the following errors:&lt;br&gt;</source>\n        <translation>Оновлення не може бути завершене&lt;br&gt;бо сталися наступні помилки:&lt;br&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"652\"/>\n        <source>Update error</source>\n        <translation>Помилка оновлення</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"859\"/>\n        <source>Error</source>\n        <translation>Помилка</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1478\"/>\n        <source>Waiting for cancelled jobs...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Import faves</source>\n        <translation>Імпорт вподобань</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Do you want to import faves from file below?&lt;br/&gt;%1</source>\n        <translation>Бажаєте імпортувати вподобання з наступного файлу нижче?&lt;br/&gt;%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1335\"/>\n        <source>Don&apos;t ask again</source>\n        <translation>Не запитувати знов</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>Confirmation</source>\n        <translation>Підтвердження</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>A gmic command is running.&lt;br&gt;Do you really want to close the plugin?</source>\n        <translation>Команда gmic виконується.&lt;br&gt;Ви дійсно бажаєте закрити програму?</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/MultilineTextParameterWidget.cpp\" line=\"41\"/>\n        <source>Ctrl+Return</source>\n        <translation>Ctrl+Return</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"50\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"53\"/>\n        <source>Abort</source>\n        <translation>Перервати</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"126\"/>\n        <source>[Processing 88:00:00.888 | 888.9 GiB]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"128\"/>\n        <source>[Processing 88:00:00.888]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"160\"/>\n        <source>Updating filters...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"213\"/>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"221\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Обробка %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"223\"/>\n        <source>[Processing %1]</source>\n        <translation>[Обробка %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"49\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"141\"/>\n        <source>%1 seconds</source>\n        <translation>%1 секунд</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"151\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[Обробка %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"153\"/>\n        <source>[Processing %1]</source>\n        <translation>[Обробка %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SearchFieldWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"80\"/>\n        <source>Search</source>\n        <translation>Пошук</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"81\"/>\n        <source>Search in filters list (%1)</source>\n        <translation>Пошук у списку фільтрів (%1)</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SourcesWidget</name>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"58\"/>\n        <source>Move source up</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"60\"/>\n        <source>Move source down</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"62\"/>\n        <source>Add local file (dialog)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"64\"/>\n        <source>Reset filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"80\"/>\n        <source>Macros: $HOME %USERPROFILE% $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"102\"/>\n        <source>Environment variables (e.g. %USERPROFILE% or %HOMEDIR%) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"82\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"53\"/>\n        <source>Remove source (Delete)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"85\"/>\n        <source>Disable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"86\"/>\n        <source>Enable without updates</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"87\"/>\n        <source>Enable with updates (recommended)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"106\"/>\n        <source>Environment variables (e.g. $HOME or ${HOME} for your home directory) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"111\"/>\n        <source>New source</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"192\"/>\n        <source>Select a file</source>\n        <translation type=\"unfinished\">Виберіть файл</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::Updater</name>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"137\"/>\n        <source>Error downloading %1 (empty file?)</source>\n        <translation>Помилка під час завантаження файлу %1 (пустий файл ?)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"146\"/>\n        <source>Could not read/decompress %1</source>\n        <translation>Неможливо прочитати/розпакувати %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"151\"/>\n        <source>Error writing file %1</source>\n        <translation>Помилка під час записування файлу %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"168\"/>\n        <source>Error downloading %1&lt;br/&gt;Error %2: %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"204\"/>\n        <source>Download timeout: %1</source>\n        <translation>Інтервал завантаження: %1</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::VisibleTagSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"55\"/>\n        <source>Show All Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"59\"/>\n        <source>Show %1 Tags</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"54\"/>\n        <source>Zoom in</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"55\"/>\n        <source>Zoom out</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"56\"/>\n        <source>Reset zoom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"155\"/>\n        <source>Warning: Preview may be inaccurate (zoom factor has been modified)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>HeadlessProgressDialog</name>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Діалогове вікно</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"68\"/>\n        <source>Cancel</source>\n        <translation>Скасувати</translation>\n    </message>\n</context>\n<context>\n    <name>InOutPanel</name>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"40\"/>\n        <source>Input / Output</source>\n        <translation>Ввід / Вивід</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"47\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"92\"/>\n        <source>Input layers</source>\n        <translation>Вхідні шари</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"115\"/>\n        <source>Output mode</source>\n        <translation>Режим виводу</translation>\n    </message>\n</context>\n<context>\n    <name>JpegQualityDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation type=\"unfinished\">Діалогове вікно</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"20\"/>\n        <location filename=\"../src/Host/None/JpegQualityDialog.cpp\" line=\"13\"/>\n        <source>JPEG Quality</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"28\"/>\n        <source>0</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"42\"/>\n        <source>100</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"60\"/>\n        <source>Always use this quality for this execution of G&apos;MIC-Qt</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"85\"/>\n        <source>&amp;Cancel</source>\n        <translation type=\"unfinished\">&amp;Скасувати</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"92\"/>\n        <source>&amp;Ok</source>\n        <translation type=\"unfinished\">&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>Форма</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"35\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation>&lt;i&gt;(Необхідне перезавантаження.)&lt;/I&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"48\"/>\n        <source>Translate filters (WIP)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"18\"/>\n        <source>Form</source>\n        <translation>Форма</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"176\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Download filter definitions from remote sources&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Завантажити оновлення бази визначень фільтрів&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"179\"/>\n        <source>Internet</source>\n        <translation>Інтернет</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"418\"/>\n        <source>Preview type (Ctrl+Shift+P)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"509\"/>\n        <source>&amp;Settings...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"525\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"532\"/>\n        <source>TextLabel</source>\n        <translation>Текстовий Підпис</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"248\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"255\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"262\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation type=\"unfinished\">ГоловнеВікно</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"408\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable/disable preview&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(right click on preview image for instant swapping)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"411\"/>\n        <source>Preview</source>\n        <translation>Попередній перегляд</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"558\"/>\n        <source>&amp;Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"571\"/>\n        <source>&amp;Cancel</source>\n        <translation>&amp;Скасувати</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"545\"/>\n        <source>&amp;Fullscreen</source>\n        <translation>&amp;Повноекранний режим</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"584\"/>\n        <source>&amp;Apply</source>\n        <translation>&amp;Застосовувати</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"597\"/>\n        <source>&amp;OK</source>\n        <translation>&amp;Ok</translation>\n    </message>\n</context>\n<context>\n    <name>MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>Форма</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"29\"/>\n        <source>Update</source>\n        <translation>Оновлення</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>Форма</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"48\"/>\n        <source>Abort</source>\n        <translation>Перервати</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"55\"/>\n        <source>TextLabel</source>\n        <translation>ТекстовийПідпис</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>ГоловнеВікно</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"30\"/>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"50\"/>\n        <source>TextLabel</source>\n        <translation>ТекстовийПідпис</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"72\"/>\n        <source>Cancel</source>\n        <translation>Скасувати</translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"76\"/>\n        <source>Select an image to open...</source>\n        <translation>Вибрати зображення...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Error</source>\n        <translation>Помилка</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Could not open file.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"88\"/>\n        <source>Default image</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"81\"/>\n        <source>Visible</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"107\"/>\n        <source>Available filters (%1)</source>\n        <translation>Доступні фільтри (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"151\"/>\n        <source>%1 Tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"157\"/>\n        <source>None</source>\n        <translation type=\"unfinished\">Немає</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"158\"/>\n        <source>Red</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"159\"/>\n        <source>Green</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"160\"/>\n        <source>Blue</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"161\"/>\n        <source>Cyan</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"162\"/>\n        <source>Magenta</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"163\"/>\n        <source>Yellow</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"127\"/>\n        <source>Could not install translator for file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"130\"/>\n        <source>Could not load translation file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"337\"/>\n        <source>List %1 cannot be merged considering these runs: %2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"432\"/>\n        <source>%1 GiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"434\"/>\n        <source>%1 MiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"436\"/>\n        <source>%1 KiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"438\"/>\n        <source>%1 B</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>SearchFieldWidget</name>\n    <message>\n        <location filename=\"../ui/SearchFieldWidget.ui\" line=\"20\"/>\n        <source>Frame</source>\n        <translation>Рамка</translation>\n    </message>\n</context>\n<context>\n    <name>SourcesWidget</name>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\">Форма</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"136\"/>\n        <source>Official filters:</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"22\"/>\n        <source>File / URL</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"32\"/>\n        <source>Add new</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"39\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"55\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"62\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"85\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"92\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"118\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../ui/zoomlevelselector.ui\" line=\"20\"/>\n        <source>Form</source>\n        <translation>Форма</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"73\"/>\n        <source>G&apos;MIC-Qt filter output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"84\"/>\n        <source>Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"87\"/>\n        <source>Save as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"122\"/>\n        <source>%1 file (*.%2 *.%3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"148\"/>\n        <source>Save image as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageView</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\">Помилка</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Could not write image file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "translations/zh.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- Original Chinese translation done by LinuxToy (https://twitter.com/linuxtoy) -->\n\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"zh\">\n<context>\n    <name>DialogSettings</name>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>对话框</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"250\"/>\n        <source>Internet updates</source>\n        <translation>因特网更新</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"259\"/>\n        <source>Update now</source>\n        <translation>立即更新</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"30\"/>\n        <source>Layout</source>\n        <translation>布局</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"24\"/>\n        <source>Interface</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"64\"/>\n        <source>Preview on the &amp;left</source>\n        <translation>在左边预览(&amp;L)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"94\"/>\n        <source>Pre&amp;view on right side</source>\n        <translation>在右边预览(&amp;V)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"113\"/>\n        <source>Theme</source>\n        <translation>主题</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"119\"/>\n        <source>&amp;Default</source>\n        <translation>默认(&amp;D)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"126\"/>\n        <source>Dar&amp;k</source>\n        <translation>暗色(&amp;K)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"139\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/I&gt;</source>\n        <translation>&lt;i&gt;(必须重启)&lt;/I&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"149\"/>\n        <source>Language</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"179\"/>\n        <source>Always enable preview zooming</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"186\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Warning: preview may be inaccurate&lt;br/&gt;if checked.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"196\"/>\n        <source>Misc</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"209\"/>\n        <source>Use native file dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"216\"/>\n        <source>&amp;Enable High-DPI support</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"223\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation type=\"unfinished\">&lt;i&gt;(必须重启)&lt;/I&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"239\"/>\n        <source>Filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"244\"/>\n        <source>Other</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"282\"/>\n        <source>Output messages</source>\n        <translation>输出信息</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"202\"/>\n        <source>&amp;Use native color dialog</source>\n        <translation>使用原生颜色对话框</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"163\"/>\n        <source>Preview</source>\n        <translation>预览</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"169\"/>\n        <source>Timeout (seconds)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"36\"/>\n        <source>Show institution logos</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"291\"/>\n        <source>Notify when scheduled update fails</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"333\"/>\n        <source>&amp;Ok</source>\n        <translation>确定(&amp;O)</translation>\n    </message>\n</context>\n<context>\n    <name>FiltersView</name>\n    <message>\n        <location filename=\"../ui/filtersview.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ColorParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/ColorParameter.cpp\" line=\"213\"/>\n        <source>Select color</source>\n        <translation>选择颜色</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::DialogSettings</name>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"45\"/>\n        <source>Settings</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"51\"/>\n        <source>Never</source>\n        <translation>从不</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"52\"/>\n        <source>Daily</source>\n        <translation>每日</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"53\"/>\n        <source>Weekly</source>\n        <translation>每周</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"54\"/>\n        <source>Every 2 weeks</source>\n        <translation>每隔两周</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"55\"/>\n        <source>Monthly</source>\n        <translation>每月</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"57\"/>\n        <source>At launch (debug)</source>\n        <translation>启动时 (调试)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"65\"/>\n        <source>Output messages</source>\n        <translation>输出信息</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"66\"/>\n        <source>Quiet (default)</source>\n        <translation>静默 (默认)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"67\"/>\n        <source>Verbose (console)</source>\n        <translation>冗长 (控制台)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"68\"/>\n        <source>Verbose (log file)</source>\n        <translation>冗长 (日志文件)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"69\"/>\n        <source>Very verbose (console)</source>\n        <translation>很冗长 (控制台)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"70\"/>\n        <source>Very verbose (log file)</source>\n        <translation>很冗长 (日志文件)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"71\"/>\n        <source>Debug (console)</source>\n        <translation>调试 (控制台)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"72\"/>\n        <source>Debug (log file)</source>\n        <translation>调试 (日志文件)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"88\"/>\n        <source>Check to use Native/OS color dialog, uncheck to use Qt&apos;s</source>\n        <translation>选择以便使用原生/系统颜色对话框，取消选择以便使用 Qt</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"90\"/>\n        <source>Check to use Native/OS file dialog, uncheck to use Qt&apos;s</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FileParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"159\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"162\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"165\"/>\n        <source>Select a file</source>\n        <translation>选择一个文件</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FilterParametersWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"44\"/>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"273\"/>\n        <source>&lt;i&gt;Select a filter&lt;/i&gt;</source>\n        <translation>&lt;i&gt;选择一个滤镜&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"240\"/>\n        <source>&lt;i&gt;No parameters&lt;/i&gt;</source>\n        <translation>&lt;i&gt;无参数&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"245\"/>\n        <source>Error parsing filter parameters\n\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersPresenter</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"513\"/>\n        <source>Unknown filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"623\"/>\n        <source>Cannot find this fave&apos;s original filter\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersView</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"353\"/>\n        <source>Remove fave</source>\n        <translation>移除收藏</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"680\"/>\n        <source>Rename Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"682\"/>\n        <source>Remove Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"684\"/>\n        <source>Clone Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"688\"/>\n        <source>Add Fave</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"707\"/>\n        <source>Remove All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>%1 (%2 %3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"354\"/>\n        <source>Do you really want to remove the following fave?\n\n%1\n</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FolderParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FolderParameter.cpp\" line=\"138\"/>\n        <source>Select a folder</source>\n        <translation>选择一个文件夹</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::GmicProcessor</name>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"416\"/>\n        <source>Image #%1 returned by filter has %2 channels (should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"452\"/>\n        <source>Image #%1 returned by filter has %2 channels\n(should be at most 4)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::HeadlessProcessor</name>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"79\"/>\n        <source>At least a filter path or a filter command must be provided.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"81\"/>\n        <source>Custom command (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"89\"/>\n        <source>Cannot find filter matching path %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"96\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"114\"/>\n        <source>Error parsing supplied command: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"117\"/>\n        <source>Supplied command (%1) does not match path (%2), (should be %3).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"229\"/>\n        <source>Filter execution failed, but with no error message.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::InOutPanel</name>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"62\"/>\n        <source>Input layers</source>\n        <translation>输入层</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"68\"/>\n        <source>None</source>\n        <translation>无</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"69\"/>\n        <source>Active (default)</source>\n        <translation>活动 (默认)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"70\"/>\n        <source>All</source>\n        <translation>全部</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"71\"/>\n        <source>Active and below</source>\n        <translation>活动及其下面</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"72\"/>\n        <source>Active and above</source>\n        <translation>活动及其上面</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"73\"/>\n        <source>All visible</source>\n        <translation>全部可见</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"74\"/>\n        <source>All invisible</source>\n        <translation>全部不可见</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"85\"/>\n        <source>Output mode</source>\n        <translation>输出模式</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"91\"/>\n        <source>In place (default)</source>\n        <translation>就地 (默认)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"92\"/>\n        <source>New layer(s)</source>\n        <translation>新建层</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"93\"/>\n        <source>New active layer(s)</source>\n        <translation>新建活动层</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"94\"/>\n        <source>New image</source>\n        <translation>新建图像</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"205\"/>\n        <source>Input / Output</source>\n        <translation>输入 / 输出</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"207\"/>\n        <source>Input</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"209\"/>\n        <source>Output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"53\"/>\n        <source>System default (%1)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"62\"/>\n        <source>Translations are very likely to be incomplete.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MainWindow</name>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"108\"/>\n        <source>Add fave</source>\n        <translation>添加收藏</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"110\"/>\n        <source>Reset parameters to default values</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"113\"/>\n        <source>Randomize parameters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"119\"/>\n        <source>Copy G&apos;MIC command to clipboard</source>\n        <translation>将G&apos;MIC命令复制到剪贴板</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"126\"/>\n        <source>Rename fave</source>\n        <translation>重命名收藏</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"128\"/>\n        <source>Remove fave</source>\n        <translation>移除收藏</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"132\"/>\n        <source>Expand/Collapse all</source>\n        <translation>全部展开/折叠</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"134\"/>\n        <source>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandy University (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</source>\n        <translation>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;诺曼底大学 (https://www.unicaen.fr)&lt;br/&gt;法国国立卡昂高等工程师学院 (https://www.ensicaen.fr)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"141\"/>\n        <source>Selection mode</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"180\"/>\n        <source>Update filters</source>\n        <translation>更新滤镜</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"232\"/>\n        <source>Manage visible tags\n(Right-click on a fave or a filter to set/remove tags)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"238\"/>\n        <source>Force &amp;quit</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"242\"/>\n        <source>Full</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"243\"/>\n        <source>Forward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"244\"/>\n        <source>Forward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"245\"/>\n        <source>Backward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"246\"/>\n        <source>Backward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"247\"/>\n        <source>Duplicate Top</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"248\"/>\n        <source>Duplicate Left</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"249\"/>\n        <source>Duplicate Bottom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"250\"/>\n        <source>Duplicate Right</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"251\"/>\n        <source>Duplicate Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"252\"/>\n        <source>Duplicate Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"253\"/>\n        <source>Checkered</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"254\"/>\n        <source>Checkered Inverse</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <source>Update completed</source>\n        <translation>更新完成</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"378\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"509\"/>\n        <source>Filter definitions have been updated.</source>\n        <translation>滤镜定义已更新。</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"381\"/>\n        <source>No download was needed.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"427\"/>\n        <source>Plugin was called with a filter path with no matching filter:\n\nPath: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"435\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"462\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"448\"/>\n        <source>Plugin was called with a command that cannot be recognized as a filter:\n\nCommand: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"927\"/>\n        <source>[Elapsed time: %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"443\"/>\n        <source>Plugin was called with a command that cannot be parsed:\n\n%1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"452\"/>\n        <source>Plugin was called with a command that does not match the provided path:\n\nPath: %1\nCommand: %2\nCommand found for this path : %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"505\"/>\n        <source>Filters update could not be achieved</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"646\"/>\n        <source>The update could not be achieved&lt;br&gt;because of the following errors:&lt;br&gt;</source>\n        <translation>这次更新由于以下错误&lt;br/&gt;不能完成:&lt;br/&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"652\"/>\n        <source>Update error</source>\n        <translation>更新错误</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"859\"/>\n        <source>Error</source>\n        <translation>错误</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1478\"/>\n        <source>Waiting for cancelled jobs...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Import faves</source>\n        <translation>导入收藏</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Do you want to import faves from file below?&lt;br/&gt;%1</source>\n        <translation>你要从下面文件导入收藏吗?&lt;br/&gt;%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1335\"/>\n        <source>Don&apos;t ask again</source>\n        <translation>别再问</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>Confirmation</source>\n        <translation>确认</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>A gmic command is running.&lt;br&gt;Do you really want to close the plugin?</source>\n        <translation>gmic 命令正在运行。&lt;br&gt;你真的想要关闭插件吗?</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/MultilineTextParameterWidget.cpp\" line=\"41\"/>\n        <source>Ctrl+Return</source>\n        <translation>Ctrl+Return</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"50\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"53\"/>\n        <source>Abort</source>\n        <translation>中止</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"126\"/>\n        <source>[Processing 88:00:00.888 | 888.9 GiB]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"128\"/>\n        <source>[Processing 88:00:00.888]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"160\"/>\n        <source>Updating filters...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"213\"/>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"221\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[进度 %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"223\"/>\n        <source>[Processing %1]</source>\n        <translation>[进度 %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"49\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"141\"/>\n        <source>%1 seconds</source>\n        <translation>%1 秒</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"151\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[进度 %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"153\"/>\n        <source>[Processing %1]</source>\n        <translation>[进度 %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SearchFieldWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"80\"/>\n        <source>Search</source>\n        <translation>搜索</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"81\"/>\n        <source>Search in filters list (%1)</source>\n        <translation>在滤镜列表中搜索 (%1)</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SourcesWidget</name>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"58\"/>\n        <source>Move source up</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"60\"/>\n        <source>Move source down</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"62\"/>\n        <source>Add local file (dialog)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"64\"/>\n        <source>Reset filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"80\"/>\n        <source>Macros: $HOME %USERPROFILE% $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"102\"/>\n        <source>Environment variables (e.g. %USERPROFILE% or %HOMEDIR%) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"82\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"53\"/>\n        <source>Remove source (Delete)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"85\"/>\n        <source>Disable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"86\"/>\n        <source>Enable without updates</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"87\"/>\n        <source>Enable with updates (recommended)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"106\"/>\n        <source>Environment variables (e.g. $HOME or ${HOME} for your home directory) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"111\"/>\n        <source>New source</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"192\"/>\n        <source>Select a file</source>\n        <translation type=\"unfinished\">选择一个文件</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::Updater</name>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"137\"/>\n        <source>Error downloading %1 (empty file?)</source>\n        <translation>下载错误 %1 (空文件?)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"146\"/>\n        <source>Could not read/decompress %1</source>\n        <translation>无法读取/解压缩 %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"151\"/>\n        <source>Error writing file %1</source>\n        <translation>写入文件错误 %1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"168\"/>\n        <source>Error downloading %1&lt;br/&gt;Error %2: %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"204\"/>\n        <source>Download timeout: %1</source>\n        <translation>下载超时: %1</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::VisibleTagSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"55\"/>\n        <source>Show All Filters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"59\"/>\n        <source>Show %1 Tags</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"54\"/>\n        <source>Zoom in</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"55\"/>\n        <source>Zoom out</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"56\"/>\n        <source>Reset zoom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"155\"/>\n        <source>Warning: Preview may be inaccurate (zoom factor has been modified)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>HeadlessProgressDialog</name>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>对话框</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"68\"/>\n        <source>Cancel</source>\n        <translation>取消</translation>\n    </message>\n</context>\n<context>\n    <name>InOutPanel</name>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"40\"/>\n        <source>Input / Output</source>\n        <translation>输入 / 输出</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"47\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"92\"/>\n        <source>Input layers</source>\n        <translation>输入层</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"115\"/>\n        <source>Output mode</source>\n        <translation>输出模式</translation>\n    </message>\n</context>\n<context>\n    <name>JpegQualityDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation type=\"unfinished\">对话框</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"20\"/>\n        <location filename=\"../src/Host/None/JpegQualityDialog.cpp\" line=\"13\"/>\n        <source>JPEG Quality</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"28\"/>\n        <source>0</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"42\"/>\n        <source>100</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"60\"/>\n        <source>Always use this quality for this execution of G&apos;MIC-Qt</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"85\"/>\n        <source>&amp;Cancel</source>\n        <translation type=\"unfinished\">取消(&amp;C)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"92\"/>\n        <source>&amp;Ok</source>\n        <translation type=\"unfinished\">确定(&amp;O)</translation>\n    </message>\n</context>\n<context>\n    <name>LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"35\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation>&lt;i&gt;(必须重启)&lt;/I&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"48\"/>\n        <source>Translate filters (WIP)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"18\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"176\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Download filter definitions from remote sources&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;从远端来源下载滤镜定义&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"179\"/>\n        <source>Internet</source>\n        <translation>因特网</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"418\"/>\n        <source>Preview type (Ctrl+Shift+P)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"509\"/>\n        <source>&amp;Settings...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"525\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"532\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"248\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"255\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"262\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation type=\"unfinished\">MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"408\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable/disable preview&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(right click on preview image for instant swapping)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"411\"/>\n        <source>Preview</source>\n        <translation>预览</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"558\"/>\n        <source>&amp;Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"571\"/>\n        <source>&amp;Cancel</source>\n        <translation>取消(&amp;C)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"545\"/>\n        <source>&amp;Fullscreen</source>\n        <translation>全屏(&amp;F)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"584\"/>\n        <source>&amp;Apply</source>\n        <translation>应用(&amp;A)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"597\"/>\n        <source>&amp;OK</source>\n        <translation>确定(&amp;O)</translation>\n    </message>\n</context>\n<context>\n    <name>MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"29\"/>\n        <source>Update</source>\n        <translation>更新</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"48\"/>\n        <source>Abort</source>\n        <translation>中止</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"55\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"30\"/>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"50\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"72\"/>\n        <source>Cancel</source>\n        <translation>取消</translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"76\"/>\n        <source>Select an image to open...</source>\n        <translation>选择一幅图片打开...</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Error</source>\n        <translation>错误</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Could not open file.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"88\"/>\n        <source>Default image</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"81\"/>\n        <source>Visible</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"107\"/>\n        <source>Available filters (%1)</source>\n        <translation>可用滤镜 (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"151\"/>\n        <source>%1 Tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"157\"/>\n        <source>None</source>\n        <translation type=\"unfinished\">无</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"158\"/>\n        <source>Red</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"159\"/>\n        <source>Green</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"160\"/>\n        <source>Blue</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"161\"/>\n        <source>Cyan</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"162\"/>\n        <source>Magenta</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"163\"/>\n        <source>Yellow</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"127\"/>\n        <source>Could not install translator for file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"130\"/>\n        <source>Could not load translation file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"337\"/>\n        <source>List %1 cannot be merged considering these runs: %2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"432\"/>\n        <source>%1 GiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"434\"/>\n        <source>%1 MiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"436\"/>\n        <source>%1 KiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"438\"/>\n        <source>%1 B</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>SearchFieldWidget</name>\n    <message>\n        <location filename=\"../ui/SearchFieldWidget.ui\" line=\"20\"/>\n        <source>Frame</source>\n        <translation>Frame</translation>\n    </message>\n</context>\n<context>\n    <name>SourcesWidget</name>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\">GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"136\"/>\n        <source>Official filters:</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"22\"/>\n        <source>File / URL</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"32\"/>\n        <source>Add new</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"39\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"55\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"62\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"85\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"92\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"118\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../ui/zoomlevelselector.ui\" line=\"20\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"73\"/>\n        <source>G&apos;MIC-Qt filter output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"84\"/>\n        <source>Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"87\"/>\n        <source>Save as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"122\"/>\n        <source>%1 file (*.%2 *.%3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"148\"/>\n        <source>Save image as...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageView</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\">错误</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Could not write image file %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "translations/zh_tw.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- Original traditional Chinese translation done by ZX-WT (https://github.com/ZX-WT) -->\n\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"zh_TW\">\n<context>\n    <name>DialogSettings</name>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>對話框</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"250\"/>\n        <source>Internet updates</source>\n        <translation>網際網路更新</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"259\"/>\n        <source>Update now</source>\n        <translation>立即更新</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"30\"/>\n        <source>Layout</source>\n        <translation>佈局</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"24\"/>\n        <source>Interface</source>\n        <translation>介面</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"64\"/>\n        <source>Preview on the &amp;left</source>\n        <translation>在左側預覽(&amp;L)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"94\"/>\n        <source>Pre&amp;view on right side</source>\n        <translation>在右側預覽(&amp;V)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"113\"/>\n        <source>Theme</source>\n        <translation>主題</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"119\"/>\n        <source>&amp;Default</source>\n        <translation>預設(&amp;D)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"126\"/>\n        <source>Dar&amp;k</source>\n        <translation>暗色(&amp;K)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"139\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/I&gt;</source>\n        <translation>&lt;i&gt;（需要重啟程式）&lt;/I&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"149\"/>\n        <source>Language</source>\n        <translation>語言</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"179\"/>\n        <source>Always enable preview zooming</source>\n        <translation>一律啟用預覽縮放</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"186\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Warning: preview may be inaccurate&lt;br/&gt;if checked.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;（警告：啟用時預覽或會不準確。）&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"196\"/>\n        <source>Misc</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"209\"/>\n        <source>Use native file dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"216\"/>\n        <source>&amp;Enable High-DPI support</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"223\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation type=\"unfinished\">&lt;i&gt;（需要重啟程式）&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"239\"/>\n        <source>Filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"244\"/>\n        <source>Other</source>\n        <translation>其他</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"282\"/>\n        <source>Output messages</source>\n        <translation>輸出訊息</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"202\"/>\n        <source>&amp;Use native color dialog</source>\n        <translation>使用系統原生色彩對話框</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"163\"/>\n        <source>Preview</source>\n        <translation>預覽</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"169\"/>\n        <source>Timeout (seconds)</source>\n        <translation>逾時時限（秒）</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"36\"/>\n        <source>Show institution logos</source>\n        <translation>顯示機構標誌</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"291\"/>\n        <source>Notify when scheduled update fails</source>\n        <translation>在定期更新失敗時通知</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/dialogsettings.ui\" line=\"333\"/>\n        <source>&amp;Ok</source>\n        <translation>確定(&amp;O)</translation>\n    </message>\n</context>\n<context>\n    <name>FiltersView</name>\n    <message>\n        <location filename=\"../ui/filtersview.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ColorParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/ColorParameter.cpp\" line=\"213\"/>\n        <source>Select color</source>\n        <translation>選取色彩</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::DialogSettings</name>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"45\"/>\n        <source>Settings</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"51\"/>\n        <source>Never</source>\n        <translation>永不</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"52\"/>\n        <source>Daily</source>\n        <translation>每天</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"53\"/>\n        <source>Weekly</source>\n        <translation>每週</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"54\"/>\n        <source>Every 2 weeks</source>\n        <translation>每兩週</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"55\"/>\n        <source>Monthly</source>\n        <translation>每月</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"57\"/>\n        <source>At launch (debug)</source>\n        <translation>啟動時 (debug)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"65\"/>\n        <source>Output messages</source>\n        <translation>輸出訊息</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"66\"/>\n        <source>Quiet (default)</source>\n        <translation>安靜（預設）</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"67\"/>\n        <source>Verbose (console)</source>\n        <translation>詳盡（終端機輸出）</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"68\"/>\n        <source>Verbose (log file)</source>\n        <translation>詳盡（記錄檔）</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"69\"/>\n        <source>Very verbose (console)</source>\n        <translation>超詳盡（終端機輸出）</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"70\"/>\n        <source>Very verbose (log file)</source>\n        <translation>超詳盡（記錄檔）</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"71\"/>\n        <source>Debug (console)</source>\n        <translation>偵錯（終端機輸出）</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"72\"/>\n        <source>Debug (log file)</source>\n        <translation>偵錯（記錄檔）</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"88\"/>\n        <source>Check to use Native/OS color dialog, uncheck to use Qt&apos;s</source>\n        <translation>核取以使用系統原生的色彩對話框，不核取則使用 Qt 提供的版本</translation>\n    </message>\n    <message>\n        <location filename=\"../src/DialogSettings.cpp\" line=\"90\"/>\n        <source>Check to use Native/OS file dialog, uncheck to use Qt&apos;s</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FileParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"159\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"162\"/>\n        <location filename=\"../src/FilterParameters/FileParameter.cpp\" line=\"165\"/>\n        <source>Select a file</source>\n        <translation>選擇檔案</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FilterParametersWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"44\"/>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"273\"/>\n        <source>&lt;i&gt;Select a filter&lt;/i&gt;</source>\n        <translation>&lt;i&gt;選擇濾鏡&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"240\"/>\n        <source>&lt;i&gt;No parameters&lt;/i&gt;</source>\n        <translation>&lt;i&gt;沒有參數&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterParameters/FilterParametersWidget.cpp\" line=\"245\"/>\n        <source>Error parsing filter parameters\n\n</source>\n        <translation>解析濾鏡參數時出現錯誤\n\n</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersPresenter</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"513\"/>\n        <source>Unknown filter</source>\n        <translation>不明的濾鏡</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"623\"/>\n        <source>Cannot find this fave&apos;s original filter\n</source>\n        <translation>找不到這最愛濾鏡的來源濾鏡\n</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FiltersView</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"353\"/>\n        <source>Remove fave</source>\n        <translation>從最愛移除</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"680\"/>\n        <source>Rename Fave</source>\n        <translation>重新命名最愛</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"682\"/>\n        <source>Remove Fave</source>\n        <translation>從最愛移除</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"684\"/>\n        <source>Clone Fave</source>\n        <translation>再製最愛</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"688\"/>\n        <source>Add Fave</source>\n        <translation>加到最愛</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"707\"/>\n        <source>Remove All</source>\n        <translation>移除全部</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>%1 (%2 %3)</source>\n        <translation>%1 (%2 %3)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filters</source>\n        <translation>濾鏡</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"714\"/>\n        <source>Filter</source>\n        <translation>濾鏡</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"354\"/>\n        <source>Do you really want to remove the following fave?\n\n%1\n</source>\n        <translation>你確認要移除以下最愛嗎？\n\n%1\n</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::FolderParameter</name>\n    <message>\n        <location filename=\"../src/FilterParameters/FolderParameter.cpp\" line=\"138\"/>\n        <source>Select a folder</source>\n        <translation>選擇資料夾</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::GmicProcessor</name>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"416\"/>\n        <source>Image #%1 returned by filter has %2 channels (should be at most 4)</source>\n        <translation>濾鏡傳回的影像 #%1 含有 %2 個通道（應為不多於 4 個）</translation>\n    </message>\n    <message>\n        <location filename=\"../src/GmicProcessor.cpp\" line=\"452\"/>\n        <source>Image #%1 returned by filter has %2 channels\n(should be at most 4)</source>\n        <translation>濾鏡傳回的影像 #%1 含有 %2 個通道\n（應為不多於 4 個）</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::HeadlessProcessor</name>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"79\"/>\n        <source>At least a filter path or a filter command must be provided.</source>\n        <translation>必須提供濾鏡路徑或濾鏡命令。</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"81\"/>\n        <source>Custom command (%1)</source>\n        <translation>自訂命令 (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"89\"/>\n        <source>Cannot find filter matching path %1</source>\n        <translation>找不到符合路徑「%1」的濾鏡</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"96\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation>解析濾鏡參數定義時出現錯誤，濾鏡為：\n\n%1\n\n不能取得預設參數。\n\n%2</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"114\"/>\n        <source>Error parsing supplied command: %1</source>\n        <translation>解析所提供的命令時出現錯誤：%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"117\"/>\n        <source>Supplied command (%1) does not match path (%2), (should be %3).</source>\n        <translation>所提供的命令 (%1) 不符合路徑 (%2)（應為 %3）。</translation>\n    </message>\n    <message>\n        <location filename=\"../src/HeadlessProcessor.cpp\" line=\"229\"/>\n        <source>Filter execution failed, but with no error message.</source>\n        <translation>濾鏡執行失敗，但沒有錯誤訊息。</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::InOutPanel</name>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"62\"/>\n        <source>Input layers</source>\n        <translation>輸入圖層</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"68\"/>\n        <source>None</source>\n        <translation>無</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"69\"/>\n        <source>Active (default)</source>\n        <translation>使用中（預設）</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"70\"/>\n        <source>All</source>\n        <translation>全部</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"71\"/>\n        <source>Active and below</source>\n        <translation>使用中及其下方</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"72\"/>\n        <source>Active and above</source>\n        <translation>使用中及其上方</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"73\"/>\n        <source>All visible</source>\n        <translation>全部可見</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"74\"/>\n        <source>All invisible</source>\n        <translation>全部已隱藏</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"85\"/>\n        <source>Output mode</source>\n        <translation>輸出模式</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"91\"/>\n        <source>In place (default)</source>\n        <translation>原地（預設）</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"92\"/>\n        <source>New layer(s)</source>\n        <translation>新增圖層</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"93\"/>\n        <source>New active layer(s)</source>\n        <translation>新增使用中圖層</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"94\"/>\n        <source>New image</source>\n        <translation>新增影像</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"205\"/>\n        <source>Input / Output</source>\n        <translation>輸入 / 輸出</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"207\"/>\n        <source>Input</source>\n        <translation>輸入</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/InOutPanel.cpp\" line=\"209\"/>\n        <source>Output</source>\n        <translation>輸出</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"53\"/>\n        <source>System default (%1)</source>\n        <translation>系統預設（%1）</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/LanguageSelectionWidget.cpp\" line=\"62\"/>\n        <source>Translations are very likely to be incomplete.</source>\n        <translation>翻譯很可能是不完整的。</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MainWindow</name>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"108\"/>\n        <source>Add fave</source>\n        <translation>加到最愛</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"110\"/>\n        <source>Reset parameters to default values</source>\n        <translation>重設參數到預設值</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"113\"/>\n        <source>Randomize parameters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"119\"/>\n        <source>Copy G&apos;MIC command to clipboard</source>\n        <translation>複製 G&apos;MIC 命令到剪貼簿</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"126\"/>\n        <source>Rename fave</source>\n        <translation>重新命名最愛</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"128\"/>\n        <source>Remove fave</source>\n        <translation>從最愛移除</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"132\"/>\n        <source>Expand/Collapse all</source>\n        <translation>全部展開或折疊</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"134\"/>\n        <source>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;Normandy University (https://www.unicaen.fr)&lt;br/&gt;Ensicaen (https://www.ensicaen.fr)</source>\n        <translation>G&apos;MIC (https://gmic.eu)&lt;br/&gt;GREYC (https://www.greyc.fr)&lt;br/&gt;CNRS (https://www.cnrs.fr)&lt;br/&gt;諾曼第大學 (https://www.unicaen.fr)&lt;br/&gt;ENSICAEN (https://www.ensicaen.fr)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"141\"/>\n        <source>Selection mode</source>\n        <translation>選取模式</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"180\"/>\n        <source>Update filters</source>\n        <translation>更新濾鏡</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"232\"/>\n        <source>Manage visible tags\n(Right-click on a fave or a filter to set/remove tags)</source>\n        <translation>管理可見標籤\n（右鍵點選最愛或濾鏡，以設定或移除標籤）</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"238\"/>\n        <source>Force &amp;quit</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"242\"/>\n        <source>Full</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"243\"/>\n        <source>Forward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"244\"/>\n        <source>Forward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"245\"/>\n        <source>Backward Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"246\"/>\n        <source>Backward Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"247\"/>\n        <source>Duplicate Top</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"248\"/>\n        <source>Duplicate Left</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"249\"/>\n        <source>Duplicate Bottom</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"250\"/>\n        <source>Duplicate Right</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"251\"/>\n        <source>Duplicate Horizontal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"252\"/>\n        <source>Duplicate Vertical</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"253\"/>\n        <source>Checkered</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"254\"/>\n        <source>Checkered Inverse</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <source>Update completed</source>\n        <translation>更新完成</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"376\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"378\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"509\"/>\n        <source>Filter definitions have been updated.</source>\n        <translation>濾鏡定義已更新。</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"381\"/>\n        <source>No download was needed.</source>\n        <translation>無需下載。</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"427\"/>\n        <source>Plugin was called with a filter path with no matching filter:\n\nPath: %1</source>\n        <translation>呼叫外掛程式時使用了沒有符合濾鏡的濾鏡路徑：\n\n路徑為：%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"435\"/>\n        <location filename=\"../src/MainWindow.cpp\" line=\"462\"/>\n        <source>Error parsing filter parameters definition for filter:\n\n%1\n\nCannot retrieve default parameters.\n\n%2</source>\n        <translation>解析濾鏡參數定義時出現錯誤，濾鏡為：\n\n%1\n\n不能取得預設參數。\n\n%2</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"448\"/>\n        <source>Plugin was called with a command that cannot be recognized as a filter:\n\nCommand: %1</source>\n        <translation>呼叫外掛程式時使用了不能被辨認為濾鏡的命令：\n\n命令：%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"927\"/>\n        <source>[Elapsed time: %1]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"443\"/>\n        <source>Plugin was called with a command that cannot be parsed:\n\n%1</source>\n        <translation>呼叫外掛程式時使用了不能被解析的命令：\n\n%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"452\"/>\n        <source>Plugin was called with a command that does not match the provided path:\n\nPath: %1\nCommand: %2\nCommand found for this path : %3</source>\n        <translation>呼叫外掛程式時使用了不符合所提供路徑的命令：\n\n路徑：%1\n命令：%2\n路徑中找到的命令：%3</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"505\"/>\n        <source>Filters update could not be achieved</source>\n        <translation>無法完成濾鏡更新</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"646\"/>\n        <source>The update could not be achieved&lt;br&gt;because of the following errors:&lt;br&gt;</source>\n        <translation>由於發生以下錯誤，&lt;br&gt;無法完成更新：&lt;br&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"652\"/>\n        <source>Update error</source>\n        <translation>更新錯誤</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"859\"/>\n        <source>Error</source>\n        <translation>錯誤</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1478\"/>\n        <source>Waiting for cancelled jobs...</source>\n        <translation>正在等待取消工作……</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Import faves</source>\n        <translation>匯入最愛</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1332\"/>\n        <source>Do you want to import faves from file below?&lt;br/&gt;%1</source>\n        <translation>你要從以下檔案匯入最愛嗎？&lt;br/&gt;%1</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1335\"/>\n        <source>Don&apos;t ask again</source>\n        <translation>不再詢問</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>Confirmation</source>\n        <translation>確認</translation>\n    </message>\n    <message>\n        <location filename=\"../src/MainWindow.cpp\" line=\"1454\"/>\n        <source>A gmic command is running.&lt;br&gt;Do you really want to close the plugin?</source>\n        <translation>一項 gmic 命令正在執行中。&lt;br&gt;你確定要關閉外掛程式嗎？</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../src/FilterParameters/MultilineTextParameterWidget.cpp\" line=\"41\"/>\n        <source>Ctrl+Return</source>\n        <translation>Ctrl+Return</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"50\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation>G&apos;MIC-Qt 外掛程式進度</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"53\"/>\n        <source>Abort</source>\n        <translation>中止</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"126\"/>\n        <source>[Processing 88:00:00.888 | 888.9 GiB]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"128\"/>\n        <source>[Processing 88:00:00.888]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"160\"/>\n        <source>Updating filters...</source>\n        <translation>正在更新濾鏡……</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"213\"/>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"221\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[正在處理 %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWidget.cpp\" line=\"223\"/>\n        <source>[Processing %1]</source>\n        <translation>[正在處理 %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"49\"/>\n        <source>G&apos;MIC-Qt Plug-in progression</source>\n        <translation>G&apos;MIC-Qt 外掛程式進度</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"141\"/>\n        <source>%1 seconds</source>\n        <translation>%1 秒</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"151\"/>\n        <source>[Processing %1 | %2]</source>\n        <translation>[正在處理 %1 | %2]</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ProgressInfoWindow.cpp\" line=\"153\"/>\n        <source>[Processing %1]</source>\n        <translation>[正在處理 %1]</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SearchFieldWidget</name>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"80\"/>\n        <source>Search</source>\n        <translation>搜尋</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/SearchFieldWidget.cpp\" line=\"81\"/>\n        <source>Search in filters list (%1)</source>\n        <translation>在濾鏡清單中搜尋 (%1)</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::SourcesWidget</name>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"58\"/>\n        <source>Move source up</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"60\"/>\n        <source>Move source down</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"62\"/>\n        <source>Add local file (dialog)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"64\"/>\n        <source>Reset filter sources</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"80\"/>\n        <source>Macros: $HOME %USERPROFILE% $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"102\"/>\n        <source>Environment variables (e.g. %USERPROFILE% or %HOMEDIR%) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"82\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"53\"/>\n        <source>Remove source (Delete)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"85\"/>\n        <source>Disable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"86\"/>\n        <source>Enable without updates</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"87\"/>\n        <source>Enable with updates (recommended)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"106\"/>\n        <source>Environment variables (e.g. $HOME or ${HOME} for your home directory) are substituted in sources.\nVERSION is also a predefined variable that stands for the G&apos;MIC version number (currently %1).</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"111\"/>\n        <source>New source</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/SourcesWidget.cpp\" line=\"192\"/>\n        <source>Select a file</source>\n        <translation type=\"unfinished\">選擇檔案</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::Updater</name>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"137\"/>\n        <source>Error downloading %1 (empty file?)</source>\n        <translation>下載「%1」時出現錯誤（空白檔案？）</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"146\"/>\n        <source>Could not read/decompress %1</source>\n        <translation>不能讀取或解壓縮「%1」</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"151\"/>\n        <source>Error writing file %1</source>\n        <translation>寫入檔案「%1」時出現錯誤</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"168\"/>\n        <source>Error downloading %1&lt;br/&gt;Error %2: %3</source>\n        <translation>下載「%1」時出現錯誤&lt;br/&gt;錯誤 %2：%3</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Updater.cpp\" line=\"204\"/>\n        <source>Download timeout: %1</source>\n        <translation>下載逾時：%1</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::VisibleTagSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"55\"/>\n        <source>Show All Filters</source>\n        <translation>顯示所有濾鏡</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/VisibleTagSelector.cpp\" line=\"59\"/>\n        <source>Show %1 Tags</source>\n        <translation>顯示 %1 標籤</translation>\n    </message>\n</context>\n<context>\n    <name>GmicQt::ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"54\"/>\n        <source>Zoom in</source>\n        <translation>放大</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"55\"/>\n        <source>Zoom out</source>\n        <translation>縮小</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"56\"/>\n        <source>Reset zoom</source>\n        <translation>重設縮放比例</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Widgets/ZoomLevelSelector.cpp\" line=\"155\"/>\n        <source>Warning: Preview may be inaccurate (zoom factor has been modified)</source>\n        <translation>警告：預覽可能不準確（縮放比例已修改）</translation>\n    </message>\n</context>\n<context>\n    <name>HeadlessProgressDialog</name>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>對話框</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/headlessprogressdialog.ui\" line=\"68\"/>\n        <source>Cancel</source>\n        <translation>取消</translation>\n    </message>\n</context>\n<context>\n    <name>InOutPanel</name>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"40\"/>\n        <source>Input / Output</source>\n        <translation>輸入 / 輸出</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"47\"/>\n        <source>...</source>\n        <translation>…</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"92\"/>\n        <source>Input layers</source>\n        <translation>輸入圖層</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/inoutpanel.ui\" line=\"115\"/>\n        <source>Output mode</source>\n        <translation>輸出模式</translation>\n    </message>\n</context>\n<context>\n    <name>JpegQualityDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>對話框</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"20\"/>\n        <location filename=\"../src/Host/None/JpegQualityDialog.cpp\" line=\"13\"/>\n        <source>JPEG Quality</source>\n        <translation>JPEG 品質</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"28\"/>\n        <source>0</source>\n        <translation>0</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"42\"/>\n        <source>100</source>\n        <translation>100</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"60\"/>\n        <source>Always use this quality for this execution of G&apos;MIC-Qt</source>\n        <translation>在這次執行 G&apos;MIC-Qt 期間一律使用這個品質</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"85\"/>\n        <source>&amp;Cancel</source>\n        <translation>取消(&amp;C)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/jpegqualitydialog.ui\" line=\"92\"/>\n        <source>&amp;Ok</source>\n        <translation>確定(&amp;O)</translation>\n    </message>\n</context>\n<context>\n    <name>LanguageSelectionWidget</name>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"35\"/>\n        <source>&lt;i&gt;(Restart needed)&lt;/i&gt;</source>\n        <translation>&lt;i&gt;（需要重啟程式）&lt;/i&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/languageselectionwidget.ui\" line=\"48\"/>\n        <source>Translate filters (WIP)</source>\n        <translation>翻譯濾鏡（未完成）</translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"18\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"176\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Download filter definitions from remote sources&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;從遠端來源下載濾鏡定義&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"179\"/>\n        <source>Internet</source>\n        <translation>網際網路</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"248\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"255\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"262\"/>\n        <source>...</source>\n        <translation>…</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"408\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable/disable preview&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(right click on preview image for instant swapping)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;啟用或停用預覽&lt;br/&gt;(Ctrl+P)&lt;br/&gt;（右鍵點選預覽影像可即時切換）&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"411\"/>\n        <source>Preview</source>\n        <translation>預覽</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"509\"/>\n        <source>&amp;Settings...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"525\"/>\n        <location filename=\"../ui/mainwindow.ui\" line=\"532\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"558\"/>\n        <source>&amp;Close</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"571\"/>\n        <source>&amp;Cancel</source>\n        <translation>取消(&amp;C)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"545\"/>\n        <source>&amp;Fullscreen</source>\n        <translation>全螢幕(&amp;F)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"418\"/>\n        <source>Preview type (Ctrl+Shift+P)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"584\"/>\n        <source>&amp;Apply</source>\n        <translation>套用(&amp;A)</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/mainwindow.ui\" line=\"597\"/>\n        <source>&amp;OK</source>\n        <translation>確定(&amp;O)</translation>\n    </message>\n</context>\n<context>\n    <name>MultilineTextParameterWidget</name>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/multilinetextparameterwidget.ui\" line=\"29\"/>\n        <source>Update</source>\n        <translation>更新</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWidget</name>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"48\"/>\n        <source>Abort</source>\n        <translation>中止</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowidget.ui\" line=\"55\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n</context>\n<context>\n    <name>ProgressInfoWindow</name>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"14\"/>\n        <source>MainWindow</source>\n        <translation>MainWindow</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"30\"/>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"50\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/progressinfowindow.ui\" line=\"72\"/>\n        <source>Cancel</source>\n        <translation>取消</translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersView/FiltersView.cpp\" line=\"81\"/>\n        <source>Visible</source>\n        <translation>可見</translation>\n    </message>\n    <message>\n        <location filename=\"../src/FilterSelector/FiltersPresenter.cpp\" line=\"107\"/>\n        <source>Available filters (%1)</source>\n        <translation>可用的濾鏡 (%1)</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"76\"/>\n        <source>Select an image to open...</source>\n        <translation>開啟影像…</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Error</source>\n        <translation>錯誤</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"84\"/>\n        <source>Could not open file.</source>\n        <translation>無法開啟檔案。</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/host_none.cpp\" line=\"88\"/>\n        <source>Default image</source>\n        <translation>預設影像</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"151\"/>\n        <source>%1 Tag</source>\n        <translation>%1 標籤</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"157\"/>\n        <source>None</source>\n        <translation>無</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"158\"/>\n        <source>Red</source>\n        <translation>紅色</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"159\"/>\n        <source>Green</source>\n        <translation>錄色</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"160\"/>\n        <source>Blue</source>\n        <translation>藍色</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"161\"/>\n        <source>Cyan</source>\n        <translation>青色</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"162\"/>\n        <source>Magenta</source>\n        <translation>品紅色</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Tags.cpp\" line=\"163\"/>\n        <source>Yellow</source>\n        <translation>黃色</translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"127\"/>\n        <source>Could not install translator for file %1</source>\n        <translation>無法為檔案「%1」裝上翻譯器</translation>\n    </message>\n    <message>\n        <location filename=\"../src/LanguageSettings.cpp\" line=\"130\"/>\n        <source>Could not load translation file %1</source>\n        <translation>無法載入翻譯檔「%1」</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"337\"/>\n        <source>List %1 cannot be merged considering these runs: %2</source>\n        <translation>無法合併清單 %1，關聯的執行次：%2</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"432\"/>\n        <source>%1 GiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"434\"/>\n        <source>%1 MiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"436\"/>\n        <source>%1 KiB</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Misc.cpp\" line=\"438\"/>\n        <source>%1 B</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>SearchFieldWidget</name>\n    <message>\n        <location filename=\"../ui/SearchFieldWidget.ui\" line=\"20\"/>\n        <source>Frame</source>\n        <translation>Frame</translation>\n    </message>\n</context>\n<context>\n    <name>SourcesWidget</name>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\">GMIC</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"136\"/>\n        <source>Official filters:</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"22\"/>\n        <source>File / URL</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"32\"/>\n        <source>Add new</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"39\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"55\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"62\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"85\"/>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"92\"/>\n        <source>...</source>\n        <translation type=\"unfinished\">…</translation>\n    </message>\n    <message>\n        <location filename=\"../ui/sourceswidget.ui\" line=\"118\"/>\n        <source>Macros: $HOME $VERSION</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ZoomLevelSelector</name>\n    <message>\n        <location filename=\"../ui/zoomlevelselector.ui\" line=\"20\"/>\n        <source>Form</source>\n        <translation>GMIC</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageDialog</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"73\"/>\n        <source>G&apos;MIC-Qt filter output</source>\n        <translation>G&apos;MIC-Qt 濾鏡輸出</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"84\"/>\n        <source>Close</source>\n        <translation>關閉</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"87\"/>\n        <source>Save as...</source>\n        <translation>另存為…</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"122\"/>\n        <source>%1 file (*.%2 *.%3)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"148\"/>\n        <source>Save image as...</source>\n        <translation>儲存影像為…</translation>\n    </message>\n</context>\n<context>\n    <name>gmic_qt_standalone::ImageView</name>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Error</source>\n        <translation>錯誤</translation>\n    </message>\n    <message>\n        <location filename=\"../src/Host/None/ImageDialog.cpp\" line=\"65\"/>\n        <source>Could not write image file %1</source>\n        <translation>無法寫入影像檔「%1」</translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "translations.qrc",
    "content": "<RCC>\n    <qresource prefix=\"/\">\n        <file>translations/cs.qm</file>\n        <file>translations/de.qm</file>\n        <file>translations/es.qm</file>\n        <file>translations/fr.qm</file>\n        <file>translations/id.qm</file>\n        <file>translations/it.qm</file>\n        <file>translations/nl.qm</file>\n        <file>translations/zh.qm</file>\n        <file>translations/zh_tw.qm</file>\n        <file>translations/ru.qm</file>\n        <file>translations/uk.qm</file>\n        <file>translations/pl.qm</file>\n        <file>translations/pt.qm</file>\n        <file>translations/ja.qm</file>\n        <file>translations/sv.qm</file>\n    </qresource>\n</RCC>\n"
  },
  {
    "path": "ui/SearchFieldWidget.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>SearchFieldWidget</class>\n <widget class=\"QWidget\" name=\"SearchFieldWidget\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>400</width>\n    <height>300</height>\n   </rect>\n  </property>\n  <property name=\"sizePolicy\">\n   <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n    <horstretch>0</horstretch>\n    <verstretch>0</verstretch>\n   </sizepolicy>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Frame</string>\n  </property>\n  <layout class=\"QHBoxLayout\" name=\"horizontalLayout_2\">\n   <property name=\"spacing\">\n    <number>2</number>\n   </property>\n   <property name=\"leftMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"topMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"rightMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"bottomMargin\">\n    <number>0</number>\n   </property>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "ui/dialogsettings.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>DialogSettings</class>\n <widget class=\"QDialog\" name=\"DialogSettings\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>553</width>\n    <height>496</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Dialog</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout_2\">\n   <item>\n    <widget class=\"QTabWidget\" name=\"tabWidget\">\n     <property name=\"currentIndex\">\n      <number>1</number>\n     </property>\n     <widget class=\"QWidget\" name=\"interface\">\n      <attribute name=\"title\">\n       <string>Interface</string>\n      </attribute>\n      <layout class=\"QGridLayout\" name=\"gridLayout\">\n       <item row=\"0\" column=\"0\" rowspan=\"2\">\n        <widget class=\"QGroupBox\" name=\"groupBox_2\">\n         <property name=\"title\">\n          <string>Layout</string>\n         </property>\n         <layout class=\"QGridLayout\" name=\"gridLayout_2\">\n          <item row=\"2\" column=\"0\" colspan=\"2\">\n           <widget class=\"QCheckBox\" name=\"cbShowLogos\">\n            <property name=\"text\">\n             <string>Show institution logos</string>\n            </property>\n           </widget>\n          </item>\n          <item row=\"0\" column=\"0\">\n           <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n            <item>\n             <widget class=\"GmicQt::ClickableLabel\" name=\"labelPreviewLeft\">\n              <property name=\"sizePolicy\">\n               <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n                <horstretch>0</horstretch>\n                <verstretch>0</verstretch>\n               </sizepolicy>\n              </property>\n              <property name=\"text\">\n               <string/>\n              </property>\n              <property name=\"pixmap\">\n               <pixmap resource=\"../gmic_qt.qrc\">:/images/preview_left.png</pixmap>\n              </property>\n              <property name=\"alignment\">\n               <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>\n              </property>\n             </widget>\n            </item>\n            <item>\n             <widget class=\"QRadioButton\" name=\"rbLeftPreview\">\n              <property name=\"text\">\n               <string>Preview on the &amp;left</string>\n              </property>\n             </widget>\n            </item>\n           </layout>\n          </item>\n          <item row=\"0\" column=\"1\">\n           <layout class=\"QVBoxLayout\" name=\"verticalLayout_4\">\n            <item>\n             <widget class=\"GmicQt::ClickableLabel\" name=\"labelPreviewRight\">\n              <property name=\"sizePolicy\">\n               <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n                <horstretch>0</horstretch>\n                <verstretch>0</verstretch>\n               </sizepolicy>\n              </property>\n              <property name=\"text\">\n               <string/>\n              </property>\n              <property name=\"pixmap\">\n               <pixmap resource=\"../gmic_qt.qrc\">:/images/preview_right.png</pixmap>\n              </property>\n              <property name=\"alignment\">\n               <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>\n              </property>\n             </widget>\n            </item>\n            <item>\n             <widget class=\"QRadioButton\" name=\"rbRightPreview\">\n              <property name=\"text\">\n               <string>Pre&amp;view on right side</string>\n              </property>\n             </widget>\n            </item>\n           </layout>\n          </item>\n          <item row=\"1\" column=\"0\" colspan=\"2\">\n           <widget class=\"Line\" name=\"line\">\n            <property name=\"orientation\">\n             <enum>Qt::Horizontal</enum>\n            </property>\n           </widget>\n          </item>\n         </layout>\n        </widget>\n       </item>\n       <item row=\"0\" column=\"1\">\n        <widget class=\"QGroupBox\" name=\"groupBox_3\">\n         <property name=\"title\">\n          <string>Theme</string>\n         </property>\n         <layout class=\"QVBoxLayout\" name=\"verticalLayout_3\">\n          <item>\n           <widget class=\"QRadioButton\" name=\"rbDefaultTheme\">\n            <property name=\"text\">\n             <string>&amp;Default</string>\n            </property>\n           </widget>\n          </item>\n          <item>\n           <widget class=\"QRadioButton\" name=\"rbDarkTheme\">\n            <property name=\"text\">\n             <string>Dar&amp;k</string>\n            </property>\n           </widget>\n          </item>\n          <item>\n           <widget class=\"QLabel\" name=\"label\">\n            <property name=\"sizePolicy\">\n             <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n              <horstretch>0</horstretch>\n              <verstretch>0</verstretch>\n             </sizepolicy>\n            </property>\n            <property name=\"text\">\n             <string>&lt;i&gt;(Restart needed)&lt;/I&gt;</string>\n            </property>\n           </widget>\n          </item>\n         </layout>\n        </widget>\n       </item>\n       <item row=\"1\" column=\"1\">\n        <widget class=\"QGroupBox\" name=\"groupBox_5\">\n         <property name=\"title\">\n          <string>Language</string>\n         </property>\n         <layout class=\"QVBoxLayout\" name=\"verticalLayout_7\">\n          <item>\n           <widget class=\"GmicQt::LanguageSelectionWidget\" name=\"languageSelector\" native=\"true\"/>\n          </item>\n         </layout>\n        </widget>\n       </item>\n       <item row=\"2\" column=\"0\" colspan=\"2\">\n        <layout class=\"QHBoxLayout\" name=\"horizontalLayout_4\">\n         <item>\n          <widget class=\"QGroupBox\" name=\"groupBox_6\">\n           <property name=\"title\">\n            <string>Preview</string>\n           </property>\n           <layout class=\"QGridLayout\" name=\"gridLayout_4\">\n            <item row=\"0\" column=\"0\">\n             <widget class=\"QLabel\" name=\"label_2\">\n              <property name=\"text\">\n               <string>Timeout (seconds)</string>\n              </property>\n             </widget>\n            </item>\n            <item row=\"0\" column=\"1\">\n             <widget class=\"QSpinBox\" name=\"sbPreviewTimeout\"/>\n            </item>\n            <item row=\"1\" column=\"0\" colspan=\"2\">\n             <widget class=\"QCheckBox\" name=\"cbPreviewZoom\">\n              <property name=\"text\">\n               <string>Always enable preview zooming</string>\n              </property>\n             </widget>\n            </item>\n            <item row=\"2\" column=\"0\" colspan=\"2\">\n             <widget class=\"QLabel\" name=\"label_3\">\n              <property name=\"text\">\n               <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;(Warning: preview may be inaccurate&lt;br/&gt;if checked.)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>\n              </property>\n             </widget>\n            </item>\n           </layout>\n          </widget>\n         </item>\n         <item>\n          <widget class=\"QGroupBox\" name=\"groupBox_4\">\n           <property name=\"title\">\n            <string>Misc</string>\n           </property>\n           <layout class=\"QVBoxLayout\" name=\"verticalLayout_6\">\n            <item>\n             <widget class=\"QCheckBox\" name=\"cbNativeColorDialogs\">\n              <property name=\"text\">\n               <string>&amp;Use native color dialog</string>\n              </property>\n             </widget>\n            </item>\n            <item>\n             <widget class=\"QCheckBox\" name=\"cbNativeFileDialogs\">\n              <property name=\"text\">\n               <string>Use native file dialog</string>\n              </property>\n             </widget>\n            </item>\n            <item>\n             <widget class=\"QCheckBox\" name=\"cbHighDPI\">\n              <property name=\"text\">\n               <string>&amp;Enable High-DPI support</string>\n              </property>\n             </widget>\n            </item>\n            <item>\n             <widget class=\"QLabel\" name=\"labelHighDPI\">\n              <property name=\"text\">\n               <string>&lt;i&gt;(Restart needed)&lt;/i&gt;</string>\n              </property>\n              <property name=\"alignment\">\n               <set>Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing</set>\n              </property>\n             </widget>\n            </item>\n           </layout>\n          </widget>\n         </item>\n        </layout>\n       </item>\n      </layout>\n     </widget>\n     <widget class=\"GmicQt::SourcesWidget\" name=\"sources\">\n      <attribute name=\"title\">\n       <string>Filter sources</string>\n      </attribute>\n     </widget>\n     <widget class=\"QWidget\" name=\"other\">\n      <attribute name=\"title\">\n       <string>Other</string>\n      </attribute>\n      <layout class=\"QGridLayout\" name=\"gridLayout_3\">\n       <item row=\"0\" column=\"0\">\n        <widget class=\"QGroupBox\" name=\"groupBox\">\n         <property name=\"title\">\n          <string>Internet updates</string>\n         </property>\n         <layout class=\"QHBoxLayout\" name=\"horizontalLayout_2\">\n          <item>\n           <widget class=\"QComboBox\" name=\"cbUpdatePeriodicity\"/>\n          </item>\n          <item>\n           <widget class=\"QPushButton\" name=\"pbUpdate\">\n            <property name=\"text\">\n             <string>Update now</string>\n            </property>\n           </widget>\n          </item>\n         </layout>\n        </widget>\n       </item>\n       <item row=\"0\" column=\"1\">\n        <spacer name=\"horizontalSpacer_2\">\n         <property name=\"orientation\">\n          <enum>Qt::Horizontal</enum>\n         </property>\n         <property name=\"sizeHint\" stdset=\"0\">\n          <size>\n           <width>227</width>\n           <height>20</height>\n          </size>\n         </property>\n        </spacer>\n       </item>\n       <item row=\"1\" column=\"0\">\n        <widget class=\"QGroupBox\" name=\"groupBox_7\">\n         <property name=\"title\">\n          <string>Output messages</string>\n         </property>\n         <layout class=\"QVBoxLayout\" name=\"verticalLayout_8\">\n          <item>\n           <widget class=\"QComboBox\" name=\"outputMessages\"/>\n          </item>\n          <item>\n           <widget class=\"QCheckBox\" name=\"cbNotifyFailedUpdate\">\n            <property name=\"text\">\n             <string>Notify when scheduled update fails</string>\n            </property>\n           </widget>\n          </item>\n         </layout>\n        </widget>\n       </item>\n       <item row=\"2\" column=\"0\">\n        <spacer name=\"verticalSpacer\">\n         <property name=\"orientation\">\n          <enum>Qt::Vertical</enum>\n         </property>\n         <property name=\"sizeHint\" stdset=\"0\">\n          <size>\n           <width>20</width>\n           <height>122</height>\n          </size>\n         </property>\n        </spacer>\n       </item>\n      </layout>\n     </widget>\n    </widget>\n   </item>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n     <item>\n      <spacer name=\"horizontalSpacer\">\n       <property name=\"orientation\">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name=\"sizeHint\" stdset=\"0\">\n        <size>\n         <width>40</width>\n         <height>20</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n     <item>\n      <widget class=\"QPushButton\" name=\"pbOk\">\n       <property name=\"text\">\n        <string>&amp;Ok</string>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n  </layout>\n </widget>\n <customwidgets>\n  <customwidget>\n   <class>GmicQt::ClickableLabel</class>\n   <extends>QLabel</extends>\n   <header>ClickableLabel.h</header>\n  </customwidget>\n  <customwidget>\n   <class>GmicQt::LanguageSelectionWidget</class>\n   <extends>QWidget</extends>\n   <header>Widgets/LanguageSelectionWidget.h</header>\n   <container>1</container>\n  </customwidget>\n  <customwidget>\n   <class>GmicQt::SourcesWidget</class>\n   <extends>QWidget</extends>\n   <header>SourcesWidget.h</header>\n   <container>1</container>\n  </customwidget>\n </customwidgets>\n <resources>\n  <include location=\"../gmic_qt.qrc\"/>\n </resources>\n <connections/>\n</ui>\n"
  },
  {
    "path": "ui/filtersview.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>FiltersView</class>\n <widget class=\"QWidget\" name=\"FiltersView\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>428</width>\n    <height>458</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Form</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <property name=\"spacing\">\n    <number>0</number>\n   </property>\n   <property name=\"leftMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"topMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"rightMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"bottomMargin\">\n    <number>0</number>\n   </property>\n   <item>\n    <widget class=\"GmicQt::TreeView\" name=\"treeView\"/>\n   </item>\n  </layout>\n </widget>\n <customwidgets>\n  <customwidget>\n   <class>GmicQt::TreeView</class>\n   <extends>QTreeView</extends>\n   <header>FilterSelector/FiltersView/TreeView.h</header>\n  </customwidget>\n </customwidgets>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "ui/headlessprogressdialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>HeadlessProgressDialog</class>\n <widget class=\"QDialog\" name=\"HeadlessProgressDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>432</width>\n    <height>218</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Dialog</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <item>\n    <widget class=\"QFrame\" name=\"frame\">\n     <property name=\"frameShape\">\n      <enum>QFrame::StyledPanel</enum>\n     </property>\n     <property name=\"frameShadow\">\n      <enum>QFrame::Raised</enum>\n     </property>\n     <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n      <item>\n       <widget class=\"QLabel\" name=\"label\">\n        <property name=\"text\">\n         <string/>\n        </property>\n       </widget>\n      </item>\n     </layout>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QProgressBar\" name=\"progressBar\">\n     <property name=\"value\">\n      <number>24</number>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QLabel\" name=\"info\">\n     <property name=\"text\">\n      <string/>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout_2\">\n     <item>\n      <spacer name=\"horizontalSpacer\">\n       <property name=\"orientation\">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name=\"sizeHint\" stdset=\"0\">\n        <size>\n         <width>40</width>\n         <height>20</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n     <item>\n      <widget class=\"QPushButton\" name=\"pbCancel\">\n       <property name=\"text\">\n        <string>Cancel</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <spacer name=\"horizontalSpacer_2\">\n       <property name=\"orientation\">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name=\"sizeHint\" stdset=\"0\">\n        <size>\n         <width>40</width>\n         <height>20</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n    </layout>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "ui/inoutpanel.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>InOutPanel</class>\n <widget class=\"QWidget\" name=\"InOutPanel\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>463</width>\n    <height>290</height>\n   </rect>\n  </property>\n  <property name=\"sizePolicy\">\n   <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Preferred\">\n    <horstretch>0</horstretch>\n    <verstretch>0</verstretch>\n   </sizepolicy>\n  </property>\n  <property name=\"windowTitle\">\n   <string notr=\"true\">GroupBox</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <property name=\"leftMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"topMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"rightMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"bottomMargin\">\n    <number>0</number>\n   </property>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n     <item>\n      <widget class=\"QLabel\" name=\"topLabel\">\n       <property name=\"text\">\n        <string>Input / Output</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"tbReset\">\n       <property name=\"text\">\n        <string>...</string>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <widget class=\"QScrollArea\" name=\"scrollArea\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Preferred\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"frameShape\">\n      <enum>QFrame::NoFrame</enum>\n     </property>\n     <property name=\"sizeAdjustPolicy\">\n      <enum>QAbstractScrollArea::AdjustIgnored</enum>\n     </property>\n     <property name=\"widgetResizable\">\n      <bool>true</bool>\n     </property>\n     <property name=\"alignment\">\n      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>\n     </property>\n     <widget class=\"QWidget\" name=\"scrollAreaWidgetContents\">\n      <property name=\"geometry\">\n       <rect>\n        <x>0</x>\n        <y>0</y>\n        <width>463</width>\n        <height>142</height>\n       </rect>\n      </property>\n      <layout class=\"QGridLayout\" name=\"gridLayout\">\n       <item row=\"0\" column=\"0\">\n        <widget class=\"QLabel\" name=\"labelInputLayers\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n         <property name=\"text\">\n          <string>Input layers</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"1\" column=\"1\">\n        <widget class=\"QComboBox\" name=\"outputMode\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n           <horstretch>1</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n        </widget>\n       </item>\n       <item row=\"1\" column=\"0\">\n        <widget class=\"QLabel\" name=\"labelOutputMode\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n         <property name=\"text\">\n          <string>Output mode</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"0\" column=\"1\">\n        <widget class=\"QComboBox\" name=\"inputLayers\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n           <horstretch>1</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n        </widget>\n       </item>\n       <item row=\"2\" column=\"0\" colspan=\"2\">\n        <widget class=\"QWidget\" name=\"widget\" native=\"true\"/>\n       </item>\n      </layout>\n     </widget>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "ui/languageselectionwidget.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>LanguageSelectionWidget</class>\n <widget class=\"QWidget\" name=\"LanguageSelectionWidget\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>228</width>\n    <height>53</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Form</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <property name=\"spacing\">\n    <number>0</number>\n   </property>\n   <property name=\"leftMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"topMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"rightMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"bottomMargin\">\n    <number>0</number>\n   </property>\n   <item>\n    <widget class=\"QLabel\" name=\"label\">\n     <property name=\"text\">\n      <string>&lt;i&gt;(Restart needed)&lt;/i&gt;</string>\n     </property>\n     <property name=\"textFormat\">\n      <enum>Qt::AutoText</enum>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QComboBox\" name=\"comboBox\"/>\n   </item>\n   <item>\n    <widget class=\"QCheckBox\" name=\"cbTranslateFilters\">\n     <property name=\"text\">\n      <string>Translate filters (WIP)</string>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "ui/mainwindow.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>MainWindow</class>\n <widget class=\"QMainWindow\" name=\"MainWindow\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>1143</width>\n    <height>639</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>MainWindow</string>\n  </property>\n  <widget class=\"QWidget\" name=\"centralwidget\">\n   <property name=\"windowTitle\">\n    <string>Form</string>\n   </property>\n   <layout class=\"QVBoxLayout\" name=\"verticalLayout_3\" stretch=\"1,0\">\n    <item>\n     <widget class=\"QSplitter\" name=\"splitter\">\n      <property name=\"orientation\">\n       <enum>Qt::Orientation::Horizontal</enum>\n      </property>\n      <widget class=\"QFrame\" name=\"filtersFrame\">\n       <property name=\"sizePolicy\">\n        <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Preferred\">\n         <horstretch>0</horstretch>\n         <verstretch>0</verstretch>\n        </sizepolicy>\n       </property>\n       <property name=\"frameShape\">\n        <enum>QFrame::Shape::NoFrame</enum>\n       </property>\n       <property name=\"frameShadow\">\n        <enum>QFrame::Shadow::Raised</enum>\n       </property>\n       <layout class=\"QVBoxLayout\" name=\"verticalLayout_2\" stretch=\"0,1,0,0\">\n        <property name=\"leftMargin\">\n         <number>0</number>\n        </property>\n        <property name=\"rightMargin\">\n         <number>0</number>\n        </property>\n        <item>\n         <widget class=\"GmicQt::SearchFieldWidget\" name=\"searchField\" native=\"true\">\n          <property name=\"focusPolicy\">\n           <enum>Qt::FocusPolicy::StrongFocus</enum>\n          </property>\n         </widget>\n        </item>\n        <item>\n         <widget class=\"GmicQt::FiltersView\" name=\"filtersView\" native=\"true\"/>\n        </item>\n        <item>\n         <widget class=\"QWidget\" name=\"widget_2\" native=\"true\">\n          <layout class=\"QHBoxLayout\" name=\"horizontalLayout_8\">\n           <property name=\"topMargin\">\n            <number>0</number>\n           </property>\n           <property name=\"bottomMargin\">\n            <number>0</number>\n           </property>\n           <item>\n            <widget class=\"QToolButton\" name=\"tbAddFave\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Fixed\" vsizetype=\"Preferred\">\n               <horstretch>0</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"text\">\n              <string/>\n             </property>\n            </widget>\n           </item>\n           <item>\n            <widget class=\"QToolButton\" name=\"tbRemoveFave\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Fixed\" vsizetype=\"Preferred\">\n               <horstretch>0</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"text\">\n              <string/>\n             </property>\n            </widget>\n           </item>\n           <item>\n            <widget class=\"QToolButton\" name=\"tbRenameFave\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Fixed\" vsizetype=\"Preferred\">\n               <horstretch>0</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"text\">\n              <string/>\n             </property>\n            </widget>\n           </item>\n           <item>\n            <spacer name=\"horizontalSpacer\">\n             <property name=\"orientation\">\n              <enum>Qt::Orientation::Horizontal</enum>\n             </property>\n             <property name=\"sizeHint\" stdset=\"0\">\n              <size>\n               <width>40</width>\n               <height>20</height>\n              </size>\n             </property>\n            </spacer>\n           </item>\n           <item>\n            <widget class=\"QToolButton\" name=\"tbTags\">\n             <property name=\"text\">\n              <string/>\n             </property>\n             <property name=\"icon\">\n              <iconset resource=\"../gmic_qt.qrc\">\n               <normaloff>:/icons/color-wheel.png</normaloff>:/icons/color-wheel.png</iconset>\n             </property>\n            </widget>\n           </item>\n           <item>\n            <widget class=\"QToolButton\" name=\"tbSelectionMode\">\n             <property name=\"text\">\n              <string/>\n             </property>\n            </widget>\n           </item>\n           <item>\n            <widget class=\"QToolButton\" name=\"tbExpandCollapse\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Fixed\" vsizetype=\"Preferred\">\n               <horstretch>0</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"text\">\n              <string/>\n             </property>\n            </widget>\n           </item>\n          </layout>\n         </widget>\n        </item>\n        <item>\n         <widget class=\"QWidget\" name=\"widget\" native=\"true\">\n          <layout class=\"QHBoxLayout\" name=\"horizontalLayout_7\">\n           <property name=\"topMargin\">\n            <number>0</number>\n           </property>\n           <property name=\"bottomMargin\">\n            <number>0</number>\n           </property>\n           <item>\n            <widget class=\"QToolButton\" name=\"tbUpdateFilters\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Fixed\" vsizetype=\"Preferred\">\n               <horstretch>0</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"text\">\n              <string/>\n             </property>\n            </widget>\n           </item>\n           <item>\n            <widget class=\"QCheckBox\" name=\"cbInternetUpdate\">\n             <property name=\"toolTip\">\n              <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Download filter definitions from remote sources&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>\n             </property>\n             <property name=\"text\">\n              <string>Internet</string>\n             </property>\n            </widget>\n           </item>\n          </layout>\n         </widget>\n        </item>\n       </layout>\n      </widget>\n      <widget class=\"QFrame\" name=\"parametersPanel\">\n       <property name=\"sizePolicy\">\n        <sizepolicy hsizetype=\"MinimumExpanding\" vsizetype=\"Preferred\">\n         <horstretch>0</horstretch>\n         <verstretch>0</verstretch>\n        </sizepolicy>\n       </property>\n       <property name=\"frameShape\">\n        <enum>QFrame::Shape::NoFrame</enum>\n       </property>\n       <property name=\"frameShadow\">\n        <enum>QFrame::Shadow::Raised</enum>\n       </property>\n       <layout class=\"QVBoxLayout\" name=\"verticalLayout_5\">\n        <item>\n         <widget class=\"QSplitter\" name=\"verticalSplitter\">\n          <property name=\"orientation\">\n           <enum>Qt::Orientation::Vertical</enum>\n          </property>\n          <property name=\"handleWidth\">\n           <number>6</number>\n          </property>\n          <widget class=\"QWidget\" name=\"vSplitterTopWidget\" native=\"true\">\n           <property name=\"minimumSize\">\n            <size>\n             <width>0</width>\n             <height>150</height>\n            </size>\n           </property>\n           <layout class=\"QVBoxLayout\" name=\"verticalLayout_4\">\n            <property name=\"leftMargin\">\n             <number>0</number>\n            </property>\n            <property name=\"topMargin\">\n             <number>0</number>\n            </property>\n            <property name=\"rightMargin\">\n             <number>0</number>\n            </property>\n            <property name=\"bottomMargin\">\n             <number>0</number>\n            </property>\n            <item>\n             <layout class=\"QHBoxLayout\" name=\"horizontalLayout_6\">\n              <item>\n               <widget class=\"QLabel\" name=\"filterName\">\n                <property name=\"sizePolicy\">\n                 <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n                  <horstretch>0</horstretch>\n                  <verstretch>0</verstretch>\n                 </sizepolicy>\n                </property>\n                <property name=\"text\">\n                 <string/>\n                </property>\n               </widget>\n              </item>\n              <item>\n               <widget class=\"QToolButton\" name=\"tbCopyCommand\">\n                <property name=\"text\">\n                 <string>...</string>\n                </property>\n               </widget>\n              </item>\n              <item>\n               <widget class=\"QToolButton\" name=\"tbRandomizeParameters\">\n                <property name=\"text\">\n                 <string>...</string>\n                </property>\n               </widget>\n              </item>\n              <item>\n               <widget class=\"QToolButton\" name=\"tbResetParameters\">\n                <property name=\"text\">\n                 <string>...</string>\n                </property>\n               </widget>\n              </item>\n             </layout>\n            </item>\n            <item>\n             <widget class=\"QScrollArea\" name=\"scrollAreaParameters\">\n              <property name=\"sizePolicy\">\n               <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Expanding\">\n                <horstretch>0</horstretch>\n                <verstretch>0</verstretch>\n               </sizepolicy>\n              </property>\n              <property name=\"frameShape\">\n               <enum>QFrame::Shape::NoFrame</enum>\n              </property>\n              <property name=\"horizontalScrollBarPolicy\">\n               <enum>Qt::ScrollBarPolicy::ScrollBarAsNeeded</enum>\n              </property>\n              <property name=\"sizeAdjustPolicy\">\n               <enum>QAbstractScrollArea::SizeAdjustPolicy::AdjustToContents</enum>\n              </property>\n              <property name=\"widgetResizable\">\n               <bool>true</bool>\n              </property>\n              <widget class=\"QWidget\" name=\"scrollAreaWidgetContents_2\">\n               <property name=\"geometry\">\n                <rect>\n                 <x>0</x>\n                 <y>0</y>\n                 <width>227</width>\n                 <height>397</height>\n                </rect>\n               </property>\n               <layout class=\"QVBoxLayout\" name=\"verticalLayout_6\">\n                <item>\n                 <widget class=\"GmicQt::FilterParametersWidget\" name=\"filterParams\" native=\"true\">\n                  <property name=\"sizePolicy\">\n                   <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Preferred\">\n                    <horstretch>0</horstretch>\n                    <verstretch>0</verstretch>\n                   </sizepolicy>\n                  </property>\n                  <property name=\"focusPolicy\">\n                   <enum>Qt::FocusPolicy::NoFocus</enum>\n                  </property>\n                 </widget>\n                </item>\n               </layout>\n              </widget>\n             </widget>\n            </item>\n            <item>\n             <spacer name=\"verticalSpacer\">\n              <property name=\"orientation\">\n               <enum>Qt::Orientation::Vertical</enum>\n              </property>\n              <property name=\"sizeType\">\n               <enum>QSizePolicy::Policy::Fixed</enum>\n              </property>\n              <property name=\"sizeHint\" stdset=\"0\">\n               <size>\n                <width>20</width>\n                <height>9</height>\n               </size>\n              </property>\n             </spacer>\n            </item>\n            <item>\n             <widget class=\"Line\" name=\"vSplitterLine\">\n              <property name=\"orientation\">\n               <enum>Qt::Orientation::Horizontal</enum>\n              </property>\n             </widget>\n            </item>\n           </layout>\n          </widget>\n          <widget class=\"GmicQt::InOutPanel\" name=\"inOutSelector\" native=\"true\">\n           <property name=\"sizePolicy\">\n            <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Preferred\">\n             <horstretch>0</horstretch>\n             <verstretch>0</verstretch>\n            </sizepolicy>\n           </property>\n           <property name=\"autoFillBackground\">\n            <bool>false</bool>\n           </property>\n          </widget>\n         </widget>\n        </item>\n       </layout>\n      </widget>\n      <widget class=\"QWidget\" name=\"previewPanel\" native=\"true\">\n       <layout class=\"QVBoxLayout\" name=\"verticalLayout\" stretch=\"1,0,0\">\n        <property name=\"leftMargin\">\n         <number>0</number>\n        </property>\n        <property name=\"topMargin\">\n         <number>0</number>\n        </property>\n        <property name=\"rightMargin\">\n         <number>0</number>\n        </property>\n        <property name=\"bottomMargin\">\n         <number>0</number>\n        </property>\n        <item>\n         <widget class=\"QFrame\" name=\"previewFrame\">\n          <property name=\"frameShape\">\n           <enum>QFrame::Shape::StyledPanel</enum>\n          </property>\n          <property name=\"frameShadow\">\n           <enum>QFrame::Shadow::Raised</enum>\n          </property>\n          <layout class=\"QVBoxLayout\" name=\"verticalLayout_7\">\n           <property name=\"spacing\">\n            <number>2</number>\n           </property>\n           <property name=\"leftMargin\">\n            <number>2</number>\n           </property>\n           <property name=\"topMargin\">\n            <number>2</number>\n           </property>\n           <property name=\"rightMargin\">\n            <number>2</number>\n           </property>\n           <property name=\"bottomMargin\">\n            <number>2</number>\n           </property>\n           <item>\n            <widget class=\"GmicQt::PreviewWidget\" name=\"previewWidget\" native=\"true\">\n             <property name=\"focusPolicy\">\n              <enum>Qt::FocusPolicy::StrongFocus</enum>\n             </property>\n            </widget>\n           </item>\n          </layout>\n         </widget>\n        </item>\n        <item>\n         <layout class=\"QHBoxLayout\" name=\"horizontalLayout_2\">\n          <item>\n           <widget class=\"QCheckBox\" name=\"cbPreview\">\n            <property name=\"toolTip\">\n             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable/disable preview&lt;br/&gt;(Ctrl+P)&lt;br/&gt;(right click on preview image for instant swapping)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>\n            </property>\n            <property name=\"text\">\n             <string>Preview</string>\n            </property>\n           </widget>\n          </item>\n          <item>\n           <widget class=\"QComboBox\" name=\"cbPreviewType\">\n            <property name=\"toolTip\">\n             <string>Preview type (Ctrl+Shift+P)</string>\n            </property>\n           </widget>\n          </item>\n          <item>\n           <spacer name=\"horizontalSpacer_2\">\n            <property name=\"orientation\">\n             <enum>Qt::Orientation::Horizontal</enum>\n            </property>\n            <property name=\"sizeHint\" stdset=\"0\">\n             <size>\n              <width>40</width>\n              <height>20</height>\n             </size>\n            </property>\n           </spacer>\n          </item>\n          <item>\n           <widget class=\"GmicQt::ZoomLevelSelector\" name=\"zoomLevelSelector\" native=\"true\">\n            <property name=\"minimumSize\">\n             <size>\n              <width>40</width>\n              <height>0</height>\n             </size>\n            </property>\n           </widget>\n          </item>\n         </layout>\n        </item>\n        <item>\n         <widget class=\"QWidget\" name=\"belowPreviewWidget\" native=\"true\">\n          <layout class=\"QHBoxLayout\" name=\"horizontalLayout_5\" stretch=\"1,0\">\n           <property name=\"leftMargin\">\n            <number>0</number>\n           </property>\n           <property name=\"topMargin\">\n            <number>0</number>\n           </property>\n           <property name=\"rightMargin\">\n            <number>0</number>\n           </property>\n           <property name=\"bottomMargin\">\n            <number>0</number>\n           </property>\n           <item>\n            <widget class=\"QWidget\" name=\"belowPreviewPadding\" native=\"true\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Preferred\">\n               <horstretch>0</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n            </widget>\n           </item>\n           <item>\n            <widget class=\"QLabel\" name=\"logosLabel\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Preferred\">\n               <horstretch>0</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"text\">\n              <string/>\n             </property>\n             <property name=\"pixmap\">\n              <pixmap>:/resources/gimp_logos.png</pixmap>\n             </property>\n             <property name=\"alignment\">\n              <set>Qt::AlignmentFlag::AlignCenter</set>\n             </property>\n            </widget>\n           </item>\n          </layout>\n         </widget>\n        </item>\n       </layout>\n      </widget>\n     </widget>\n    </item>\n    <item>\n     <layout class=\"QHBoxLayout\" name=\"horizontalLayout\" stretch=\"0,1,0,0,0,0,0,0,0\">\n      <item>\n       <widget class=\"QPushButton\" name=\"pbSettings\">\n        <property name=\"sizePolicy\">\n         <sizepolicy hsizetype=\"Fixed\" vsizetype=\"Fixed\">\n          <horstretch>0</horstretch>\n          <verstretch>0</verstretch>\n         </sizepolicy>\n        </property>\n        <property name=\"text\">\n         <string>&amp;Settings...</string>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"GmicQt::ProgressInfoWidget\" name=\"progressInfoWidget\" native=\"true\"/>\n      </item>\n      <item>\n       <widget class=\"QLabel\" name=\"messageLabel\">\n        <property name=\"sizePolicy\">\n         <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Preferred\">\n          <horstretch>0</horstretch>\n          <verstretch>0</verstretch>\n         </sizepolicy>\n        </property>\n        <property name=\"text\">\n         <string>TextLabel</string>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"QLabel\" name=\"rightMessageLabel\">\n        <property name=\"text\">\n         <string>TextLabel</string>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"QPushButton\" name=\"pbFullscreen\">\n        <property name=\"sizePolicy\">\n         <sizepolicy hsizetype=\"Fixed\" vsizetype=\"Fixed\">\n          <horstretch>0</horstretch>\n          <verstretch>0</verstretch>\n         </sizepolicy>\n        </property>\n        <property name=\"text\">\n         <string>&amp;Fullscreen</string>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"QPushButton\" name=\"pbClose\">\n        <property name=\"sizePolicy\">\n         <sizepolicy hsizetype=\"Fixed\" vsizetype=\"Fixed\">\n          <horstretch>0</horstretch>\n          <verstretch>0</verstretch>\n         </sizepolicy>\n        </property>\n        <property name=\"text\">\n         <string>&amp;Close</string>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"QPushButton\" name=\"pbCancel\">\n        <property name=\"sizePolicy\">\n         <sizepolicy hsizetype=\"Fixed\" vsizetype=\"Fixed\">\n          <horstretch>0</horstretch>\n          <verstretch>0</verstretch>\n         </sizepolicy>\n        </property>\n        <property name=\"text\">\n         <string>&amp;Cancel</string>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"QPushButton\" name=\"pbApply\">\n        <property name=\"sizePolicy\">\n         <sizepolicy hsizetype=\"Fixed\" vsizetype=\"Fixed\">\n          <horstretch>0</horstretch>\n          <verstretch>0</verstretch>\n         </sizepolicy>\n        </property>\n        <property name=\"text\">\n         <string>&amp;Apply</string>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"QPushButton\" name=\"pbOk\">\n        <property name=\"sizePolicy\">\n         <sizepolicy hsizetype=\"Fixed\" vsizetype=\"Fixed\">\n          <horstretch>0</horstretch>\n          <verstretch>0</verstretch>\n         </sizepolicy>\n        </property>\n        <property name=\"text\">\n         <string>&amp;OK</string>\n        </property>\n       </widget>\n      </item>\n     </layout>\n    </item>\n   </layout>\n  </widget>\n </widget>\n <customwidgets>\n  <customwidget>\n   <class>GmicQt::ProgressInfoWidget</class>\n   <extends>QWidget</extends>\n   <header>Widgets/ProgressInfoWidget.h</header>\n   <container>1</container>\n  </customwidget>\n  <customwidget>\n   <class>GmicQt::FilterParametersWidget</class>\n   <extends>QWidget</extends>\n   <header>FilterParameters/FilterParametersWidget.h</header>\n   <container>1</container>\n  </customwidget>\n  <customwidget>\n   <class>GmicQt::PreviewWidget</class>\n   <extends>QWidget</extends>\n   <header>Widgets/PreviewWidget.h</header>\n   <container>1</container>\n  </customwidget>\n  <customwidget>\n   <class>GmicQt::SearchFieldWidget</class>\n   <extends>QWidget</extends>\n   <header>Widgets/SearchFieldWidget.h</header>\n   <container>1</container>\n  </customwidget>\n  <customwidget>\n   <class>GmicQt::ZoomLevelSelector</class>\n   <extends>QWidget</extends>\n   <header>Widgets/ZoomLevelSelector.h</header>\n   <container>1</container>\n  </customwidget>\n  <customwidget>\n   <class>GmicQt::FiltersView</class>\n   <extends>QWidget</extends>\n   <header>FilterSelector/FiltersView/FiltersView.h</header>\n   <container>1</container>\n  </customwidget>\n  <customwidget>\n   <class>GmicQt::InOutPanel</class>\n   <extends>QWidget</extends>\n   <header>Widgets/InOutPanel.h</header>\n   <container>1</container>\n  </customwidget>\n </customwidgets>\n <tabstops>\n  <tabstop>previewWidget</tabstop>\n  <tabstop>cbPreview</tabstop>\n  <tabstop>pbCancel</tabstop>\n  <tabstop>pbApply</tabstop>\n  <tabstop>pbOk</tabstop>\n </tabstops>\n <resources>\n  <include location=\"../gmic_qt.qrc\"/>\n </resources>\n <connections/>\n</ui>\n"
  },
  {
    "path": "ui/multilinetextparameterwidget.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>MultilineTextParameterWidget</class>\n <widget class=\"QWidget\" name=\"MultilineTextParameterWidget\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>403</width>\n    <height>210</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Form</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n     <item>\n      <widget class=\"QLabel\" name=\"label\">\n       <property name=\"text\">\n        <string/>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QPushButton\" name=\"pbUpdate\">\n       <property name=\"text\">\n        <string>Update</string>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <widget class=\"QTextEdit\" name=\"textEdit\"/>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "ui/progressinfowidget.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>ProgressInfoWidget</class>\n <widget class=\"QWidget\" name=\"ProgressInfoWidget\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>296</width>\n    <height>25</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Form</string>\n  </property>\n  <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n   <property name=\"leftMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"topMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"rightMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"bottomMargin\">\n    <number>0</number>\n   </property>\n   <item>\n    <widget class=\"QProgressBar\" name=\"progressBar\">\n     <property name=\"value\">\n      <number>24</number>\n     </property>\n     <property name=\"invertedAppearance\">\n      <bool>false</bool>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QToolButton\" name=\"tbCancel\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Preferred\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"text\">\n      <string>Abort</string>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QLabel\" name=\"label\">\n     <property name=\"text\">\n      <string>TextLabel</string>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "ui/progressinfowindow.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>ProgressInfoWindow</class>\n <widget class=\"QMainWindow\" name=\"ProgressInfoWindow\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>438</width>\n    <height>166</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>MainWindow</string>\n  </property>\n  <widget class=\"QWidget\" name=\"centralwidget\">\n   <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n    <item>\n     <widget class=\"QFrame\" name=\"frame\">\n      <property name=\"frameShape\">\n       <enum>QFrame::StyledPanel</enum>\n      </property>\n      <property name=\"frameShadow\">\n       <enum>QFrame::Raised</enum>\n      </property>\n      <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n       <item>\n        <widget class=\"QLabel\" name=\"label\">\n         <property name=\"text\">\n          <string>TextLabel</string>\n         </property>\n         <property name=\"alignment\">\n          <set>Qt::AlignCenter</set>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n    </item>\n    <item>\n     <widget class=\"QProgressBar\" name=\"progressBar\">\n      <property name=\"value\">\n       <number>24</number>\n      </property>\n     </widget>\n    </item>\n    <item>\n     <widget class=\"QLabel\" name=\"info\">\n      <property name=\"text\">\n       <string>TextLabel</string>\n      </property>\n     </widget>\n    </item>\n    <item>\n     <layout class=\"QHBoxLayout\" name=\"horizontalLayout_2\">\n      <item>\n       <spacer name=\"horizontalSpacer\">\n        <property name=\"orientation\">\n         <enum>Qt::Horizontal</enum>\n        </property>\n        <property name=\"sizeHint\" stdset=\"0\">\n         <size>\n          <width>40</width>\n          <height>20</height>\n         </size>\n        </property>\n       </spacer>\n      </item>\n      <item>\n       <widget class=\"QPushButton\" name=\"pbCancel\">\n        <property name=\"text\">\n         <string>Cancel</string>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <spacer name=\"horizontalSpacer_2\">\n        <property name=\"orientation\">\n         <enum>Qt::Horizontal</enum>\n        </property>\n        <property name=\"sizeHint\" stdset=\"0\">\n         <size>\n          <width>40</width>\n          <height>20</height>\n         </size>\n        </property>\n       </spacer>\n      </item>\n     </layout>\n    </item>\n   </layout>\n  </widget>\n  <widget class=\"QStatusBar\" name=\"statusbar\"/>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "ui/sourceswidget.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>SourcesWidget</class>\n <widget class=\"QWidget\" name=\"SourcesWidget\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>694</width>\n    <height>524</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Form</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout_2\">\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout_2\">\n     <item>\n      <widget class=\"QLabel\" name=\"label\">\n       <property name=\"text\">\n        <string>File / URL</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QLineEdit\" name=\"leURL\"/>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"tbNew\">\n       <property name=\"text\">\n        <string>Add new</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"tbOpen\">\n       <property name=\"text\">\n        <string>...</string>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n     <item>\n      <widget class=\"QListWidget\" name=\"list\"/>\n     </item>\n     <item>\n      <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n       <item>\n        <widget class=\"QToolButton\" name=\"tbUp\">\n         <property name=\"text\">\n          <string>...</string>\n         </property>\n        </widget>\n       </item>\n       <item>\n        <widget class=\"QToolButton\" name=\"tbDown\">\n         <property name=\"text\">\n          <string>...</string>\n         </property>\n        </widget>\n       </item>\n       <item>\n        <spacer name=\"verticalSpacer_2\">\n         <property name=\"orientation\">\n          <enum>Qt::Vertical</enum>\n         </property>\n         <property name=\"sizeType\">\n          <enum>QSizePolicy::Fixed</enum>\n         </property>\n         <property name=\"sizeHint\" stdset=\"0\">\n          <size>\n           <width>10</width>\n           <height>35</height>\n          </size>\n         </property>\n        </spacer>\n       </item>\n       <item>\n        <widget class=\"QToolButton\" name=\"tbReset\">\n         <property name=\"text\">\n          <string>...</string>\n         </property>\n        </widget>\n       </item>\n       <item>\n        <widget class=\"QToolButton\" name=\"tbTrash\">\n         <property name=\"text\">\n          <string>...</string>\n         </property>\n        </widget>\n       </item>\n       <item>\n        <spacer name=\"verticalSpacer\">\n         <property name=\"orientation\">\n          <enum>Qt::Vertical</enum>\n         </property>\n         <property name=\"sizeHint\" stdset=\"0\">\n          <size>\n           <width>20</width>\n           <height>40</height>\n          </size>\n         </property>\n        </spacer>\n       </item>\n      </layout>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout_4\">\n     <item>\n      <widget class=\"QLabel\" name=\"labelVariables\">\n       <property name=\"text\">\n        <string>Macros: $HOME $VERSION</string>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <widget class=\"Line\" name=\"line\">\n     <property name=\"orientation\">\n      <enum>Qt::Horizontal</enum>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout_3\">\n     <item>\n      <widget class=\"QLabel\" name=\"label_2\">\n       <property name=\"text\">\n        <string>Official filters:</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QComboBox\" name=\"cbOfficialFilters\"/>\n     </item>\n     <item>\n      <spacer name=\"horizontalSpacer\">\n       <property name=\"orientation\">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name=\"sizeHint\" stdset=\"0\">\n        <size>\n         <width>40</width>\n         <height>20</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n    </layout>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "ui/zoomlevelselector.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>ZoomLevelSelector</class>\n <widget class=\"QWidget\" name=\"ZoomLevelSelector\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>170</width>\n    <height>39</height>\n   </rect>\n  </property>\n  <property name=\"sizePolicy\">\n   <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n    <horstretch>0</horstretch>\n    <verstretch>0</verstretch>\n   </sizepolicy>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Form</string>\n  </property>\n  <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n   <property name=\"spacing\">\n    <number>0</number>\n   </property>\n   <property name=\"leftMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"topMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"rightMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"bottomMargin\">\n    <number>0</number>\n   </property>\n   <item>\n    <widget class=\"QLabel\" name=\"labelWarning\">\n     <property name=\"text\">\n      <string/>\n     </property>\n     <property name=\"pixmap\">\n      <pixmap resource=\"../gmic_qt.qrc\">:/images/warning.png</pixmap>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QToolButton\" name=\"tbZoomOut\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Fixed\" vsizetype=\"Preferred\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"text\">\n      <string/>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QComboBox\" name=\"comboBox\">\n     <property name=\"sizeAdjustPolicy\">\n      <enum>QComboBox::AdjustToContents</enum>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QToolButton\" name=\"tbZoomIn\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Fixed\" vsizetype=\"Preferred\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"text\">\n      <string/>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QToolButton\" name=\"tbZoomReset\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Fixed\" vsizetype=\"Preferred\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"text\">\n      <string/>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources>\n  <include location=\"../gmic_qt.qrc\"/>\n </resources>\n <connections/>\n</ui>\n"
  },
  {
    "path": "wip_translations.qrc",
    "content": "<RCC>\n    <qresource prefix=\"/\">\n       <file>translations/filters/fr.qm</file>\n       <file>translations/filters/zh.qm</file>\n    </qresource>\n</RCC>\n"
  }
]