summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bremner <bremner@debian.org>2020-08-10 21:04:04 -0300
committerDavid Bremner <bremner@debian.org>2020-08-10 21:20:32 -0300
commitb72c951415b3d8e13b8fa55b131a679a26a8d647 (patch)
treeb15d1d7d922ae2b3f5fe84697aeb235af670df7c
parent6bb3125619e23ae05d176373b096659af88350df (diff)
Importing darktable_3.2.1.orig.tar.xz
-rw-r--r--CMakeLists.txt2
-rw-r--r--doc/usermanual/DTORG.LINGUAS7
-rw-r--r--doc/usermanual/darkroom/images/panel_histogram_linear.pngbin22450 -> 0 bytes
-rw-r--r--doc/usermanual/darkroom/images/panel_histogram_logarithmic.pngbin19491 -> 0 bytes
-rw-r--r--doc/usermanual/darkroom/images/panel_histogram_rgb_parade.pngbin64226 -> 0 bytes
-rw-r--r--doc/usermanual/darkroom/images/panel_histogram_waveform.pngbin93948 -> 0 bytes
-rw-r--r--doc/usermanual/darkroom/modules/tone/filmicrgb.xml610
-rw-r--r--doc/usermanual/lighttable/images/panel_lua_scripts_installer.pngbin19944 -> 0 bytes
-rw-r--r--doc/usermanual/lighttable/images/panel_lua_scripts_installer_first_run.pngbin42578 -> 0 bytes
-rw-r--r--doc/usermanual/lighttable/panels/scripts_installer.xml109
-rw-r--r--packaging/macosx/gmic-nogimp.patch47
-rw-r--r--po/de.po248
-rw-r--r--po/es.po302
-rw-r--r--po/fr.po406
-rw-r--r--po/it.po70
-rw-r--r--po/pl.po98
-rw-r--r--po/pt_BR.po17823
-rw-r--r--po/ru.po82
-rw-r--r--src/common/colorlabels.c10
-rw-r--r--src/common/image.c4
-rw-r--r--src/common/ratings.c3
-rw-r--r--src/common/tags.c2
-rwxr-xr-xsrc/dtgtk/paint.c1
m---------src/external/OpenCL0
-rw-r--r--src/external/OpenCL/CL/cl.h1804
-rw-r--r--src/external/OpenCL/CL/cl_d3d10.h131
-rw-r--r--src/external/OpenCL/CL/cl_d3d11.h131
-rw-r--r--src/external/OpenCL/CL/cl_dx9_media_sharing.h132
-rw-r--r--src/external/OpenCL/CL/cl_dx9_media_sharing_intel.h182
-rw-r--r--src/external/OpenCL/CL/cl_egl.h132
-rw-r--r--src/external/OpenCL/CL/cl_ext.h762
-rw-r--r--src/external/OpenCL/CL/cl_ext_intel.h423
-rw-r--r--src/external/OpenCL/CL/cl_gl.h171
-rw-r--r--src/external/OpenCL/CL/cl_gl_ext.h52
-rw-r--r--src/external/OpenCL/CL/cl_platform.h1384
-rw-r--r--src/external/OpenCL/CL/cl_va_api_media_sharing_intel.h172
-rw-r--r--src/external/OpenCL/CL/cl_version.h86
-rw-r--r--src/external/OpenCL/CL/opencl.h47
-rw-r--r--src/external/OpenCL/CODE_OF_CONDUCT.md1
-rw-r--r--src/external/OpenCL/LICENSE25
-rw-r--r--src/external/OpenCL/README.md50
m---------src/external/libxcf0
-rw-r--r--src/external/libxcf/CMakeLists.txt81
-rw-r--r--src/external/libxcf/LICENSE19
-rw-r--r--src/external/libxcf/README.md181
-rw-r--r--src/external/libxcf/state.dot40
-rw-r--r--src/external/libxcf/state.pngbin0 -> 106261 bytes
-rw-r--r--src/external/libxcf/xcf.c1243
-rw-r--r--src/external/libxcf/xcf.h201
-rw-r--r--src/external/libxcf/xcf_names.c226
-rw-r--r--src/external/libxcf/xcf_names.h18
-rw-r--r--src/external/rawspeed/.ci/Dockerfile4
-rw-r--r--src/external/rawspeed/.clang-tidy6
-rw-r--r--src/external/rawspeed/.travis.yml16
-rw-r--r--src/external/rawspeed/CMakeLists.txt8
-rw-r--r--src/external/rawspeed/bench/librawspeed/common/CMakeLists.txt4
-rw-r--r--src/external/rawspeed/bench/librawspeed/decompressors/CMakeLists.txt4
-rw-r--r--src/external/rawspeed/bench/librawspeed/interpolators/CMakeLists.txt4
-rw-r--r--src/external/rawspeed/bench/librawspeed/io/CMakeLists.txt4
-rw-r--r--src/external/rawspeed/bench/librawspeed/metadata/CMakeLists.txt4
-rw-r--r--src/external/rawspeed/cmake/Modules/FindLLVMAr.cmake2
-rw-r--r--src/external/rawspeed/cmake/Modules/FindLLVMCXXFilt.cmake2
-rw-r--r--src/external/rawspeed/cmake/Modules/FindLLVMClangTidy.cmake2
-rw-r--r--src/external/rawspeed/cmake/Modules/FindLLVMCov.cmake2
-rw-r--r--src/external/rawspeed/cmake/Modules/FindLLVMLLD.cmake2
-rw-r--r--src/external/rawspeed/cmake/Modules/FindLLVMNm.cmake2
-rw-r--r--src/external/rawspeed/cmake/Modules/FindLLVMObjCopy.cmake2
-rw-r--r--src/external/rawspeed/cmake/Modules/FindLLVMObjDump.cmake2
-rw-r--r--src/external/rawspeed/cmake/Modules/FindLLVMProfData.cmake2
-rw-r--r--src/external/rawspeed/cmake/Modules/FindLLVMRanLib.cmake2
-rw-r--r--src/external/rawspeed/cmake/Modules/GoogleBenchmark.cmake.in4
-rw-r--r--src/external/rawspeed/cmake/compiler-warnings-gcc.cmake6
-rw-r--r--src/external/rawspeed/data/cameras.xml228
-rw-r--r--src/external/rawspeed/fuzz/librawspeed/decoders/TiffDecoders/CMakeLists.txt2
-rw-r--r--src/external/rawspeed/fuzz/librawspeed/decompressors/CMakeLists.txt2
-rw-r--r--src/external/rawspeed/fuzz/librawspeed/decompressors/HuffmanTable/CMakeLists.txt16
-rw-r--r--src/external/rawspeed/fuzz/librawspeed/parsers/CMakeLists.txt2
-rw-r--r--src/external/rawspeed/src/librawspeed/common/Common.h6
-rw-r--r--src/external/rawspeed/src/librawspeed/decoders/ThreefrDecoder.cpp12
-rw-r--r--src/external/rawspeed/src/librawspeed/decompressors/FujiDecompressor.cpp34
-rw-r--r--src/external/rawspeed/src/librawspeed/decompressors/HuffmanTableLUT.h21
-rw-r--r--src/external/rawspeed/src/librawspeed/decompressors/VC5Decompressor.cpp8
-rw-r--r--src/external/rawspeed/src/librawspeed/tiff/CiffIFD.cpp10
-rw-r--r--src/external/rawspeed/test/librawspeed/common/CMakeLists.txt4
-rw-r--r--src/external/rawspeed/test/librawspeed/decompressors/CMakeLists.txt4
-rw-r--r--src/external/rawspeed/test/librawspeed/io/CMakeLists.txt4
-rw-r--r--src/external/rawspeed/test/librawspeed/metadata/CMakeLists.txt4
-rw-r--r--src/external/rawspeed/test/librawspeed/test/CMakeLists.txt4
-rw-r--r--src/gui/gtk.c5
-rw-r--r--src/iop/clipping.c27
-rw-r--r--src/iop/lut3d.c1
-rw-r--r--src/libs/histogram.c11
-rw-r--r--src/tests/integration/0000-nop/expected.pngbin5321656 -> 0 bytes
-rw-r--r--src/tests/integration/0000-nop/nop.xmp121
-rw-r--r--src/tests/integration/0001-exposure/expected.pngbin5697980 -> 0 bytes
-rw-r--r--src/tests/integration/0001-exposure/exposure.xmp131
-rw-r--r--src/tests/integration/0002-local-contrast/expected.pngbin5769141 -> 0 bytes
-rw-r--r--src/tests/integration/0002-local-contrast/local-contrast.xmp141
-rw-r--r--src/tests/integration/0003-denoise-bilateral/denoise-bilateral.xmp138
-rw-r--r--src/tests/integration/0003-denoise-bilateral/expected.pngbin5042108 -> 0 bytes
-rw-r--r--src/tests/integration/0004-masks/expected.pngbin5174671 -> 0 bytes
-rw-r--r--src/tests/integration/0004-masks/masks.xmp300
-rw-r--r--src/tests/integration/0005-orientation-minus-90/expected.pngbin5313946 -> 0 bytes
-rw-r--r--src/tests/integration/0005-orientation-minus-90/orientation-minus-90.xmp290
-rw-r--r--src/tests/integration/0006-orientation-plus-90/expected.pngbin5314137 -> 0 bytes
-rw-r--r--src/tests/integration/0006-orientation-plus-90/orientation-plus-90.xmp290
-rw-r--r--src/tests/integration/0007-orientation-180/expected.pngbin5332541 -> 0 bytes
-rw-r--r--src/tests/integration/0007-orientation-180/orientation-180.xmp300
-rw-r--r--src/tests/integration/0008-flip-h/expected.pngbin5232697 -> 0 bytes
-rw-r--r--src/tests/integration/0008-flip-h/flip-h.xmp112
-rw-r--r--src/tests/integration/0009-flip-v/expected.pngbin5233753 -> 0 bytes
-rw-r--r--src/tests/integration/0009-flip-v/flip-v.xmp122
-rw-r--r--src/tests/integration/0010-flip-hv/expected.pngbin5235994 -> 0 bytes
-rw-r--r--src/tests/integration/0010-flip-hv/flip-hv.xmp132
-rw-r--r--src/tests/integration/0011-gdnd-90/expected.pngbin5080823 -> 0 bytes
-rw-r--r--src/tests/integration/0011-gdnd-90/gdnd-90.xmp112
-rw-r--r--src/tests/integration/0012-gdnd-45/expected.pngbin5132130 -> 0 bytes
-rw-r--r--src/tests/integration/0012-gdnd-45/gdnd-45.xmp122
-rw-r--r--src/tests/integration/0013-denoiseprofile-wavelets/denoiseprofile-wavelets.xmp128
-rw-r--r--src/tests/integration/0013-denoiseprofile-wavelets/expected.pngbin4970033 -> 0 bytes
-rw-r--r--src/tests/integration/0014-filmic-rgb/expected.pngbin5510258 -> 0 bytes
-rw-r--r--src/tests/integration/0014-filmic-rgb/filmic-rgb.xmp112
-rw-r--r--src/tests/integration/0015-shadhi-bilateral/expected.pngbin5632042 -> 0 bytes
-rw-r--r--src/tests/integration/0015-shadhi-bilateral/shadhi-bilateral.xmp157
-rw-r--r--src/tests/integration/0016-lowpass-bilateral/expected.pngbin5151067 -> 0 bytes
-rw-r--r--src/tests/integration/0016-lowpass-bilateral/lowpass-bilateral.xmp157
-rw-r--r--src/tests/integration/0017-monochrome/expected.pngbin2725033 -> 0 bytes
-rw-r--r--src/tests/integration/0017-monochrome/monochrome.xmp157
-rw-r--r--src/tests/integration/0018-perspective-corr/expected.pngbin5179447 -> 0 bytes
-rw-r--r--src/tests/integration/0018-perspective-corr/perspective-corr.xmp157
-rw-r--r--src/tests/integration/0019-color-mapping/color-mapping.xmp157
-rw-r--r--src/tests/integration/0019-color-mapping/expected.pngbin5628112 -> 0 bytes
-rw-r--r--src/tests/integration/README.txt64
-rwxr-xr-xsrc/tests/integration/deltae44
-rw-r--r--src/tests/integration/images/mire1.cr2bin15855600 -> 0 bytes
-rwxr-xr-xsrc/tests/integration/run.sh147
-rw-r--r--src/version_gen.c8
137 files changed, 25987 insertions, 5619 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0998f6c64..341984924 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -186,7 +186,7 @@ else(DEFINED PROJECT_VERSION AND PROJECT_VERSION VERSION_GREATER 0)
else(NOT SOURCE_PACKAGE)
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/src/version_gen.c)
# should be expanded by git archive due to export-subst in .gitattributes
- set(PROJECT_VERSION "archive-8c0afefa0516f7f60441cd634da7f3078c2a370f")
+ set(PROJECT_VERSION "archive-3e323b355fdc7d4e29d3544646a1d4b7a159480c")
# but was it expanded?
if(PROJECT_VERSION MATCHES Format)
set(PROJECT_VERSION "unknown-version")
diff --git a/doc/usermanual/DTORG.LINGUAS b/doc/usermanual/DTORG.LINGUAS
deleted file mode 100644
index ed03a3373..000000000
--- a/doc/usermanual/DTORG.LINGUAS
+++ /dev/null
@@ -1,7 +0,0 @@
-en
-fr
-it
-es
-de
-pl
-pt_BR
diff --git a/doc/usermanual/darkroom/images/panel_histogram_linear.png b/doc/usermanual/darkroom/images/panel_histogram_linear.png
deleted file mode 100644
index 7f0ae6bba..000000000
--- a/doc/usermanual/darkroom/images/panel_histogram_linear.png
+++ /dev/null
Binary files differ
diff --git a/doc/usermanual/darkroom/images/panel_histogram_logarithmic.png b/doc/usermanual/darkroom/images/panel_histogram_logarithmic.png
deleted file mode 100644
index 141b87ce0..000000000
--- a/doc/usermanual/darkroom/images/panel_histogram_logarithmic.png
+++ /dev/null
Binary files differ
diff --git a/doc/usermanual/darkroom/images/panel_histogram_rgb_parade.png b/doc/usermanual/darkroom/images/panel_histogram_rgb_parade.png
deleted file mode 100644
index 4cd02dbe6..000000000
--- a/doc/usermanual/darkroom/images/panel_histogram_rgb_parade.png
+++ /dev/null
Binary files differ
diff --git a/doc/usermanual/darkroom/images/panel_histogram_waveform.png b/doc/usermanual/darkroom/images/panel_histogram_waveform.png
deleted file mode 100644
index 2db139fb4..000000000
--- a/doc/usermanual/darkroom/images/panel_histogram_waveform.png
+++ /dev/null
Binary files differ
diff --git a/doc/usermanual/darkroom/modules/tone/filmicrgb.xml b/doc/usermanual/darkroom/modules/tone/filmicrgb.xml
deleted file mode 100644
index 3c3a69453..000000000
--- a/doc/usermanual/darkroom/modules/tone/filmicrgb.xml
+++ /dev/null
@@ -1,610 +0,0 @@
-<!DOCTYPE sect3 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
- <!ENTITY % darktable_dtd SYSTEM "../../../dtd/darktable.dtd">
- %darktable_dtd;
- ]>
-<sect3 status="draft" id="filmic">
-
- <title>Filmic rgb</title>
-
- <indexterm>
- <primary>modules</primary>
- <secondary>filmic rgb</secondary>
- </indexterm>
-
- <indexterm>
- <primary>filmic rgb</primary>
- </indexterm>
-
- <sect4>
-
- <title>Overview</title>
-
- <informaltable frame="none">
- <tgroup cols="2" colsep="0" rowsep="0">
- <colspec colwidth="6*"/>
- <colspec colwidth="4*"/>
- <tbody>
- <row>
- <entry>
- <para>
- This module compresses the tonal range of an image by reproducing the tone and
- color response of classic film. Doing so, it protects the colors and the
- contrast in mid-tones, recovers the shadows, and compresses bright highlights.
- It is very suitable in portrait photography, especially in back-lighting
- situations, but needs extra care when details need to be preserved in highlights
- (e.g. clouds).
- </para>
-
- <para>
- The module is derived from the same named module in Blender 3D modeller by T. J.
- Sobotka. While it is primarily intended to recover high-dynamic range from raw
- sensor data, it can be used with any image in replacement of the base curve
- module. The developer provided a detailed explanation of the module in a video
- called
- <ulink
- url="https://www.youtube.com/watch?v=zbPj_TqTF88">Filmic
- RGB: remap any dynamic range in darktable 3.0</ulink>.
- </para>
-
- <para>
- Filmic rgb is the successor of the filmic module provided in darktable 2.6.x.
- While the underlying principles did not change much, users of the previous
- version should not expect a 1:1 translation of their workflow, and may find
- <xref
- linkend="filmic-rgb-for-26-users"/> useful.
- </para>
- </entry>
- <entry>
- <graphic fileref="darkroom/modules/images/filmic.png" scalefit="1" width="80%"
- align="center"/>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- </sect4>
-
- <sect4>
-
- <title>Prerequisites</title>
-
- <para>
- In order to get the best out of filmic rgb, images need some preparation:
- <itemizedlist>
-
- <listitem><para>
- In-camera, expose the shot <quote>to the right</quote>. This implies under exposing
- the shot so that the highlights are at the right of the histogram, just on the verge
- of clipping, but not clipped. It does not matter if the picture preview is very dark
- on your camera screen: as long as highlights are unclipped, filmic rgb should be able
- to recover details from the raw data. Beware that clipped data are not recoverable.
- Some cameras have a clipping alert preview to help you diagnose this, and some even
- have an highlight-priority exposure mode.
- </para></listitem>
-
- <listitem><para>
- In the <link linkend="exposure"><emphasis>exposure</emphasis></link> module, push the
- exposure until the midtones are clear enough. Do not worry about losing the
- highlights: they will be recovered as part of the filmic rgb processing. However, it
- is important to avoid negative pixels in black areas: the computations done by filmic
- rgb will result in unpredictable results in this case. For some cameras models (Canon,
- mainly), rawspeed (the raw decoding library of darktable), may set an exaggerated
- black level, resulting in crushed blacks and negative values. If so, brighten the
- blacks by setting a negative black level value in the
- <link linkend="exposure"><emphasis>exposure </emphasis></link> module.
- </para></listitem>
-
- <listitem><para>
- If you plan on using filmic rgb's auto-tuners, use the
- <link linkend="whitebalance"
- ><emphasis>white
- balance</emphasis></link> module first to correct any color casts and get neutral
- colors. In RGB color spaces, luminance and chrominance are linked, and filmic rgb's
- luminance detection relies on accurate measures of both. If your picture is very
- noisy, add an initial step of denoising to help the black exposure readings, and use a
- high quality demosaicing.
- </para></listitem>
-
- <listitem><para>
- If you plan on using filmic rgb's chrominance preservation mode, avoid using any tone
- mapping module as well as the base curve module. These may produce unpredictable color
- shifts that would make the chrominance preservation useless. Neither of these modules
- is usually needed if you use filmic rgb.
- </para></listitem>
-
- </itemizedlist>
- </para>
-
- </sect4>
-
- <sect4>
-
- <title>Usage</title>
-
- <para>
- The filmic rgb module aims at mapping the photographed scene (RAW image) dynamic range to
- the (smaller) display dynamic range. This mapping is defined in three steps, each handled
- in a separate tab in the interface:
- <itemizedlist>
-
- <listitem><para>
- The
- <guilabel>scene</guilabel>
- tab contains the <quote>input</quote> settings of the scene: what constitutes middle
- grey, white and black in the photographed scene.
- </para></listitem>
-
- <listitem><para>
- The
- <guilabel>look</guilabel>
- tab contains the parameters of the mapping applied to the input parameters defined in
- the
- <guilabel>scene</guilabel>
- tab. Notably, this part of the module applies an S-shaped parametric curve to enhance
- the contrast and remap the grey value to the middle grey of the display. This is
- similar to what the base curve or tone curve modules do.
- </para></listitem>
-
- <listitem><para>
- The
- <guilabel>display</guilabel>
- tab defined the output settings to map the transformed image to the display. In
- typical use cases, this tab should only be used very rarely.
- </para></listitem>
-
- </itemizedlist>
- </para>
-
- <para>
- The sliders' ranges of filmic rgb are limited to usual and safe values, but values are
- allowed out of these ranges by clicking on the sliders with the right button and inputting
- values on the keyboard. Filmic rgb has no neutral parameters resulting in a no-operation:
- as soon as the module is enabled, the image is always at least slightly affected.
- </para>
-
- <para>
- The curves at the top of the module are read-only and serve as a guide for the operations
- performed on the sliders. The bright curve is the tone mapping curve, where the abscissa
- represents the scene exposure, and the ordinate represents the display exposure. The dark
- curve is the desaturation curve, representing the percentage of saturation as function of
- the scene exposure.
- </para>
-
- <sect5>
- <title>Middle-grey luminance (<guilabel>Scene</guilabel> tab)</title>
- <para>
- The middle-grey luminance is the luminance in RGB space of the scene referred 18% grey.
- Its color picker tool reads the average luminance over the drawn area. If you happen to
- have a grey card or a color chart (IT8 chart or colorchecker) shot in the scene lighting
- conditions, then the grey color picker tool can be used to quickly sample the luminance
- of the grey patch on the picture. In other situations, the color picker can be used to
- sample the average luminance of the subject.
- </para>
- <para>
- This setting has an effect on the picture that is analogous to a lightness correction.
- Values close to 100% do not compress the highlights but fail to recover shadows. Values
- close to 0% recover greatly the shadows but compress the highlights more harshly and
- result in local-contrast losses. The standard middle-grey value for linearly encoded
- camera RGB is 18%. Good values of grey are usually the average luminance of the whole
- picture or of the subject. In studio and indoors (low dynamic range scenes), proper grey
- values are found between 15-18%. In high dynamic range scenes (landscapes, back-lit
- portraits), proper grey values lie between 1.25 and 9%.
- </para>
- <para>
- When modifying the middle-grey luminance, the white and black exposures are
- automatically slid accordingly, to preserve the dynamic range from clipping and to help
- you set the right parameter faster. If you are not happy with the auto adjustment
- performed by the grey slider, you can correct again the white and black exposure
- parameters afterwards.
- </para>
- </sect5>
-
- <sect5>
- <title>White relative exposure (<guilabel>Scene</guilabel> tab)</title>
- <para>
- The white relative exposure is the number of stops (EV) between pure white and the
- middle grey. It is the right bound of the dynamic range. It should be adjusted to avoid
- highlight clipping. The white exposure color picker tool reads the maximum luminance in
- RGB space over the drawn area, assumes it is pure white, and sets the white exposure
- parameter to remap the reading to 100% luminance.
- </para>
- <para>
- When the grey is set at 18%, the white exposure will always be around 2.45EV. When the
- grey is set at 100%, the white exposure should be set at 0EV.
- </para>
- </sect5>
-
- <sect5>
- <title>Black relative exposure (<guilabel>Scene</guilabel> tab)</title>
- <para>
- The black relative exposure is the number of stops (EV) between pure black and the
- middle grey. It is the left bound of the dynamic range. The black exposure color-picker
- tool reads the minimum luminance in RGB space over the drawn area, assumes it is pure
- black, and sets the black exposure parameter to remap the minimum reading to 0%
- luminance. The black color picker measurement is very sensitive to noise, and cannot
- identify if the minimum luminance is pure black (actual data) or just noise. It works
- better on low ISO pictures and with high quality demosaicing. When the color picker puts
- the black exposure at -16EV, it is a sign that the measure failed and you need to adjust
- it manually.
-<!-- IHU is that still a thing? -->
- </para>
- <para>
- The black relative exposure allows you to choose how far you want to recover lowlights.
- Contrarily to the white exposure, it is not always possible to completely avoid clipping
- blacks. Every camera sensor has a maximum physical dynamic range for each ISO value (you
- can find them measured on
- <ulink url="https://www.dxomark.com/"
- ><emphasis>DXOmark</emphasis></ulink> or
- <ulink url="https://www.dpreview.com/"
- ><emphasis>DPreview</emphasis></ulink>),
- the software dynamic range in filmic rgb (dynamic range = white exposure - black
- exposure) should generally not be greater than the physical dynamic range of the sensor
- (10-14EV in most cases). Note that the dynamic range of the scene can be lower than the
- camera's one, especially indoors.
- </para>
- </sect5>
-
- <sect5>
- <title>Dynamic range scaling and auto-tune (<guilabel>Scene</guilabel> tab)</title>
- <para>
- The auto-tune color picker combines all three color pickers above, and allows to set the
- grey, white and black exposures all at once, using the average of the drawn region as
- the grey estimation, the maximum as the white, and the minimum as the black. This gives
- good results in landscape photography but usually fails for portraits and indoor scenes.
- </para>
- <para>
- When no true white and no true black are available on the scene, the maximum and minimum
- RGB values read on the image are not valid assumptions anymore, so the dynamic range
- scaling symmetrically shrinks or enlarges the detected dynamic range and the current
- parameters. This works with all color pickers, and adjusts the current values of white
- and black relative exposures.
- </para>
- </sect5>
-
- <sect5 id="filmicrgb-contrast">
- <title>Contrast (<guilabel>Look</guilabel> tab)</title>
- <para>
- The filmic rgb S-curve is created from the user parameters, by computing the position of
- virtual nodes and interpolating them, similarly to the tone curve module (but here, the
- nodes cannot be moved manually). The filmic rgb S-curve is split into three parts: a
- middle linear part, and two extremities that transition smoothly from the slope of the
- middle part to the ends of the exposure range.
- </para>
- <para>
- The
- <guilabel>contrast</guilabel>
- slider controls the slope of the middle part of the curve, as illustrated in the graph
- display.
- </para>
- <para>
- The contrast parameter drives the slope of the central part of the curve. The larger the
- dynamic range is, the greater the contrast should be set. This parameter mostly affects
- mid-tones.
- </para>
- <para>
- When the contrast is set to 1, this disables the S-curve.
- </para>
- </sect5>
-
- <sect5>
- <title>Latitude (<guilabel>Look</guilabel> tab)</title>
- <para>
- The latitude is the range between the 2 nodes enclosing the central linear portion of
- the curve, expressed as a percentage of the dynamic range defined in the
- <guilabel>scene</guilabel>
- tab (white-relative exposure minus black-relative-exposure). It is the luminance range
- that is remapped in priority, and it is remapped to the luminance interval defined by
- the <link linkend="filmicrgb-contrast">Contrast</link> parameter. It is usually advised
- to keep the latitude as large as possible, while avoiding clipping. If clipping is
- observed, you can compensate the effects by either decreasing the latitude, shifting the
- latitude interval with the
- <guilabel>shadow/highlights balance</guilabel>
- parameter, or by decreasing the contrast.
- </para>
- <para>
- The latitude also defines the range of luminances that is not desaturated at the
- extremities of the luminance range (see <xref linkend="filmicrgb-saturation"/>).
- </para>
- </sect5>
-
- <sect5>
- <title>Shadows/highlight balance (<guilabel>Look</guilabel> tab)</title>
- <para>
- By default, the latitude is centered in the middle of the dynamic range. If this
- produces clipping in one part of the other of the curve, the balance parameter allows to
- slide the latitude along the slopes, towards the shadows or towards the highlights. This
- allows more room to be given to one extremity of the dynamic range than to the other, if
- the image properties demand it.
- </para>
- </sect5>
-
- <sect5 id="filmicrgb-saturation">
- <title>Extreme luminance saturation (<guilabel>Look</guilabel> tab)</title>
- <para>
- The darker curve in the graph of the module shows the desaturation of the extremities of
- the luminance range (black and white): since black and white do not have a color, they
- should normally be associated to 0% saturation. The default saturation is set to 100% in
- the range defined by the latitude, and decreases down to 0% outside of that range. One
- of the advantages of this operations is that, since color components do not clip at the
- same rate in the image, desaturating them avoids fringes around the high exposures.
- </para>
- <para>
- If the bright colors feel too desaturated, you should check that the white-relative
- exposure setting does not clip the high luminance spots, and if not, increase the
- extreme luminance saturation parameter.
- </para>
- </sect5>
-
- <sect5>
- <title>Preserve chrominance (<guilabel>Look</guilabel> tab)</title>
- <para>
- The
- <guilabel>preserve chrominance</guilabel>
- setting indicates how the chrominance should be handled by filmic rgb: either not at
- all, or using one of the provided three norms.
- </para>
- <para>
- When applying the S-curve transformation independently on each color, the proportions of
- the colors get modified, which modifies the properties of the underlying spectrum, and
- ultimately the chrominance of the image. This is what happens if you choose
- <emphasis>no</emphasis> in the
- <guilabel>preserve chrominance</guilabel>
- parameter. This value may yield seemingly <quote>better</quote> results than the other
- values, but it may negatively impact later parts of the pipeline, when it comes to
- global saturation for example.
- </para>
- <para>
- The other values of this parameter all work in a similar way. Instead of applying the
- S-curve to the channels R, G and B independently, filmic rgb uses a norm N, divides all
- the three components by that norm, and applies the S-curve to N. This way, the
- relationship between the channels is preserved.
- </para>
- <para>
- The different values of the
- <guilabel>preserve chrominance</guilabel>
- parameter indicate which norm is used (the value used for N):
- <itemizedlist>
-
- <listitem><para>
- <emphasis>max RGB</emphasis> is the maximum value of the three channels R, G and B.
- It is the behaviour of the previous version of the filmic module. It tends to darken
- the blue, especially skies, and to yield halos/fringes, especially if some channels
- are clipped.
- </para></listitem>
-
- <listitem><para>
- <emphasis>luminance Y</emphasis> is a linear combination of the three channels R, G
- and B. It tends to darkens the reds, and to increase the local contrast in reds.
- </para></listitem>
-
- <listitem><para>
- <emphasis>RGB power norm</emphasis> is the sum of the cubes of the three channels R,
- G, and B, divided by the sum of their squares - that is to say, (R³ + G³ +
- B³)/(R² + G² + B²). It is usally a good compromise between the max RGB and the
- luminance Y values.
- </para></listitem>
-
- </itemizedlist>
- </para>
- <para>
- There is no "right" choice for the norm, depending on the picture to which it applies -
- you should experiment and decide for yourself on case by case basis.
- </para>
- </sect5>
-
- <sect5>
- <title>Target black luminance (<guilabel>Display</guilabel> tab)</title>
- <para>
- The destination parameters set the target luminance values used to remap the tones
- through filmic rgb. The default parameters will work 99% of the times, the remaining 1%
- being when you output in linear RGB space (REC709, REC2020) for media handling
- log-encoded data. These settings are then to be used with caution because darktable does
- not allow separate pipelines for display preview and for file output.
- </para>
- <para>
- The target black luminance parameter allows to set the ground-level black of the target
- medium. Set it greater than 0% if you want raised, faded blacks to achieve a retro look.
- </para>
- </sect5>
-
- <sect5>
- <title>Target middle-grey (<guilabel>Display</guilabel> tab)</title>
- <para>
- This is the middle-grey of the output medium, that is used as a target for the filmic
- rgb S curve central node. On gamma corrected media, the actual grey is computed with the
- gamma correction (middle-grey^(1/gamma)), so a middle-grey parameter of 18% with a gamma
- of 2.2 gives an actual middle-grey target of 45.87%.
- </para>
- </sect5>
-
- <sect5>
- <title>Target white luminance (<guilabel>Display</guilabel> tab)</title>
- <para>
- The target white luminance parameter allows to set the ceiling level white of the target
- medium. Set it lower than 100% if you want dampened, muted whites to achieve a retro
- look.
- </para>
- </sect5>
-
- <sect5>
- <title>Target power factor function</title>
- <para>
- The power of the output transfer function, often improperly called the gamma (only
- screen have a gamma), is the parameter used to raise or compress the mid-tones to
- account for the display non-linearities or to avoid quantization artifacts when encoding
- in 8 bits file formats. This is a common operation when applying ICC color profiles
- (except for linear RGB spaces, like REC 709 or REC 2020, which have a linear
- <quote>gamma</quote> of 1.0). However, at the output of filmic rgb, the signal is
- logarithmically encoded, which is not something ICC color profiles know to handle. As a
- consequence, if we let them apply a gamma 1/2.2 on top, it will result in a double up,
- and the middle-grey will be remapped to 76% instead of 45% as it should.
- </para>
- <para>
- To avoid double ups and washed pictures, filmic rgb applies a <quote>gamma</quote>
- compression reverting the output ICC gamma correction, so the middle-grey is correctly
- remapped at the end. To remove this compression, set the destination power factor to 1.0
- and the middle-grey destination to 45%.
- </para>
- </sect5>
-
- </sect4>
-
- <sect4>
-
- <title>Workflow</title>
-
- <para>
- The filmic rgb module can seem pretty complex; here is a proposed workflow for processing
- an image with filmic rgb to obtain a well-exposed picture from a RAW file.
- </para>
-
- <orderedlist>
-
- <listitem><para>
- Modify the exposure in the
- <link linkend="exposure"
- ><emphasis>exposure</emphasis></link> module so
- that the midtones are clear enough. Do not worry about losing details in the highlights:
- they will be recovered by the next steps of the processing.
- </para></listitem>
-
- <listitem><para>
- In filmic rgb, start with <quote>neutral</quote> parameters: set the the middle grey
- luminance to 18.45% in the
- <guilabel>scene</guilabel>
- tab, and set the contrast to 1 in the
- <guilabel>look</guilabel>
- tab.
- </para></listitem>
-
- <listitem><para>
- Adjust the white-relative and black-relative exposures in the
- <guilabel>scene</guilabel>
- tab; set the middle grey luminance as well.
- </para></listitem>
-
- <listitem><para>
- In the
- <guilabel>look</guilabel>
- tab, experiment with the
- <guilabel>contrast</guilabel>
- parameter. Increase the latitude as much as you can without clipping the curve, slide it
- with the
- <guilabel>shadows/highlights
- balance</guilabel>
- parameter.
- </para></listitem>
-
- <listitem><para>
- filmic rgb tends to compress the local contrast - you can compensate for that using the
- <link linkend="local_contrast"><emphasis>local contrast</emphasis></link> module.
- </para></listitem>
-
- <listitem><para>
- You may also want to increase the saturation in the
- <link linkend="color_balance"
- ><emphasis>color balance</emphasis></link>
- module, and adjust settings in the <emphasis>tone equalizer</emphasis> module.
- </para></listitem>
-
- <listitem><para>
- Do the last adjustments in filmic rgb, and your picture is now ready for creative
- processing.
- </para></listitem>
-
- </orderedlist>
-
- </sect4>
-
- <sect4 id="filmic-rgb-for-26-users">
-
- <title>Filmic rgb for Darktable 2.6 filmic users</title>
-
- <para>
- Filmic rgb is a reimplementation of the filmic module, and some adjustments are necessary
- to switch from one version to the other. This last section underlines the most important
- differences; a more comprehensive overview is available as a video called
- <ulink
- url="https://www.youtube.com/watch?v=9awBFYcPgGU">darktable 3.0 filmic
- explained to users of darktable 2.6</ulink>. The major differences points when it comes to
- usage are the following:
- <itemizedlist>
-
- <listitem><para>
- The default parameters of both modules are not comparable: activating the filmic rgb
- module with default parameters does not yield the same results as the previous filmic
- module with default parameters.
- </para></listitem>
-
- <listitem><para>
- The latitude is now expressed in percentage of the dynamic range instead of absolute
- EV values.
- </para></listitem>
-
- <listitem><para>
- The saturation slider that was present in the previous version of filmic to avoid
- oversaturation is not necessary anymore since filmic rgb does a much better job at
- preserving colors.
- </para></listitem>
-
- <listitem><para>
- The previous version of filmic was always using the prophoto RGB profile; filmic rgb
- respects the working color profile defined in the
- <link
- linkend="input_color_profile"><emphasis>input color
- profile</emphasis></link> module. To keep the same behaviour, you can set the working
- profile to <emphasis>linear prophoto RGB</emphasis>.
- </para></listitem>
-
- </itemizedlist>
- </para>
-
- <para>
- To achieve similar results between the previous version of filmic and filmic rgb, the
- following steps are suggested:
- <orderedlist>
-
- <listitem><para>
- Transfer the parameters from filmic to filmic rgb. The latitude parameter is now given
- in percentage of the input dynamic range: compute that percentage from your filmic
- input values.
- </para></listitem>
-
- <listitem><para>
- Lower the contrast.
- </para></listitem>
-
- <listitem><para>
- Set the extreme luminance saturation to 50%, unless you are using the chrominance
- preservation.
- </para></listitem>
-
- <listitem><para>
- Adjust the shadows/highlights balance to avoid clipping of the curve
- </para></listitem>
-
- <listitem><para>
- Rais the middle grey luminance a bit, set the dynamic range scaling to approximately
- 6%.
- </para></listitem>
-
- <listitem><para>
- The old <emphasis>preserve chrominance</emphasis> setting corresponds to the
- <emphasis>max RGB</emphasis> mode; in that case, do not modify the extreme luminance
- saturation.
- </para></listitem>
-
- <listitem><para>
- If you experience weird color shifts, change the working color space to prophoto RGB
- in the <link linkend="input_color_profile"><emphasis>input color
- profile</emphasis></link> module.
- </para></listitem>
-
- </orderedlist>
- </para>
-
- </sect4>
-
-</sect3>
diff --git a/doc/usermanual/lighttable/images/panel_lua_scripts_installer.png b/doc/usermanual/lighttable/images/panel_lua_scripts_installer.png
deleted file mode 100644
index 0130a80df..000000000
--- a/doc/usermanual/lighttable/images/panel_lua_scripts_installer.png
+++ /dev/null
Binary files differ
diff --git a/doc/usermanual/lighttable/images/panel_lua_scripts_installer_first_run.png b/doc/usermanual/lighttable/images/panel_lua_scripts_installer_first_run.png
deleted file mode 100644
index 664ae4af9..000000000
--- a/doc/usermanual/lighttable/images/panel_lua_scripts_installer_first_run.png
+++ /dev/null
Binary files differ
diff --git a/doc/usermanual/lighttable/panels/scripts_installer.xml b/doc/usermanual/lighttable/panels/scripts_installer.xml
deleted file mode 100644
index 554c1dc88..000000000
--- a/doc/usermanual/lighttable/panels/scripts_installer.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE sect2 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
- <!ENTITY % darktable_dtd SYSTEM "../../dtd/darktable.dtd">
- %darktable_dtd;
- ]>
-<sect2 status="final" id="lua_scripts_installer">
-
- <title>Lua Scripts Installer</title>
-
- <indexterm>
- <primary>lighttable panels</primary>
- <secondary>lua scripts installer</secondary>
- </indexterm>
-
- <indexterm>
- <primary>lua scripts installer</primary>
- </indexterm>
-
- <informaltable frame="none">
- <tgroup cols="2" colsep="0" rowsep="0">
- <colspec colwidth="6*"/>
- <colspec colwidth="4*"/>
- <tbody>
- <row>
- <entry>
- This panel provides an interface for installing the darktable lua scripts. The first time it is run, instructions
- are displayed.
- </entry>
- <entry>
- <graphic fileref="lighttable/images/panel_lua_scripts_installer_first_run.png" scalefit="1" width="80%" align="center" />
- </entry>
- </row>
- <row>
- <entry>
- Panel appearance after the first run.
- </entry>
- <entry>
- <graphic fileref="lighttable/images/panel_lua_scripts_installer.png" scalefit="1" width="80%" align="center" />
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <sect3 id="lua_scripts_installer_usage">
-
- <title>Usage</title>
-
- <sect4 id="lua_scripts_installer_usage_select_action">
-
- <title>select action</title>
-
- <para>
- Select an action from the list of actions.
- </para>
-
- <sect5 id="lua_scripts_installer_usage_select_action_install_scripts">
-
- <title>install scripts</title>
-
- <para>
- Install the darktable lua scripts by cloning the lua scripts repository using git. The git executable
- must be installed and in the user's path. After the scripts are installed, the script manager
- module starts, providing a point and click interface for managing the lua scripts.
- </para>
-
- <para>
- The next time darktable starts, this module wont be active since the scripts are installed.
- </para>
-
- </sect5>
-
- <sect5 id="lua_scripts_installer_usage_select_action_remind_me_later">
-
- <title>remind me later</title>
-
- <para>
- This module will reappear every 5th time darktable is restarted.
- </para>
-
- </sect5>
-
- <sect5 id="lua_scripts_installer_usage_select_action_dont_show_again">
-
- <title>don't show again</title>
-
- <para>
- When darktable is restarted this module will no longer be active. If the user changes their
- mind and wants to use the module they can go to settings->lua options and uncheck the "install
- scripts dont show again" checkbox.
- </para>
-
- </sect5>
-
- </sect4>
-
- <sect4 id="lua_scripts_installer_usage_execute">
-
- <title>execute</title>
-
- <para>
- Perform the selected action.
- </para>
-
- </sect4>
-
- </sect3>
-
-</sect2>
diff --git a/packaging/macosx/gmic-nogimp.patch b/packaging/macosx/gmic-nogimp.patch
deleted file mode 100644
index 6d7de6bd4..000000000
--- a/packaging/macosx/gmic-nogimp.patch
+++ /dev/null
@@ -1,47 +0,0 @@
---- science/gmic/Portfile.orig 2020-01-10 14:05:22.000000000 +0300
-+++ science/gmic/Portfile 2020-01-10 22:57:48.000000000 +0300
-@@ -2,7 +2,6 @@
-
- PortSystem 1.0
- PortGroup cxx11 1.1
--PortGroup qt5 1.0
-
- name gmic
- version 2.8.1
-@@ -38,7 +37,6 @@
- depends_lib port:curl \
- path:lib/libavcodec.dylib:ffmpeg \
- port:fftw-3 \
-- port:gimp2 \
- port:GraphicsMagick \
- port:ilmbase \
- port:jpeg \
-@@ -46,7 +44,6 @@
- port:opencv \
- port:openexr \
- port:tiff \
-- port:xorg-libXext \
- port:zlib
-
- patchfiles patch-gmic-qt-gmic_qt.pro.diff \
-@@ -57,7 +54,10 @@
- ${worksrcpath}/src/Makefile
-
- #cli lib gimp krita gmic_qt libc zart
-- set gmic_targets {cli lib gimp libc}
-+ set gmic_targets {cli lib libc}
-+ reinplace "/PLUGINDIR/ d" ${worksrcpath}/src/Makefile
-+ reinplace "s/\$(X11_CFLAGS)//" ${worksrcpath}/src/Makefile
-+ reinplace "s/\$(X11_LIBS)//" ${worksrcpath}/src/Makefile
-
- reinplace "s|%TARGETS%|${gmic_targets}|" \
- ${worksrcpath}/src/Makefile
-@@ -66,8 +66,6 @@
- post-destroot {
- xinstall -m 0644 ${worksrcpath}/src/libgmic.a ${destroot}${prefix}/lib
- xinstall -m 0644 ${worksrcpath}/src/libcgmic.a ${destroot}${prefix}/lib
-- xinstall -m 0755 ${worksrcpath}/gmic-qt/gmic_gimp_qt.app/Contents/MacOS/gmic_gimp_qt \
-- ${destroot}${prefix}/lib/gimp/2.0/plug-ins
- }
-
- use_configure no
diff --git a/po/de.po b/po/de.po
index 477d9ff79..0ea4fccd2 100644
--- a/po/de.po
+++ b/po/de.po
@@ -5346,145 +5346,6 @@ msgctxt "accel"
msgid "views/thumbtable/select untouched"
msgstr "Ansichten/Miniaturvorschau/unbearbeitete auswählen"
-#. setup rating key accelerators
-#: ../src/dtgtk/thumbtable.c:1805
-msgctxt "accel"
-msgid "views/thumbtable/rate 0"
-msgstr ""
-
-#: ../src/dtgtk/thumbtable.c:1806
-msgctxt "accel"
-msgid "views/thumbtable/rate 1"
-msgstr ""
-
-#: ../src/dtgtk/thumbtable.c:1807
-msgctxt "accel"
-msgid "views/thumbtable/rate 2"
-msgstr ""
-
-#: ../src/dtgtk/thumbtable.c:1808
-msgctxt "accel"
-msgid "views/thumbtable/rate 3"
-msgstr ""
-
-#: ../src/dtgtk/thumbtable.c:1809
-msgctxt "accel"
-msgid "views/thumbtable/rate 4"
-msgstr ""
-
-#: ../src/dtgtk/thumbtable.c:1810
-msgctxt "accel"
-msgid "views/thumbtable/rate 5"
-msgstr ""
-
-#: ../src/dtgtk/thumbtable.c:1811
-msgctxt "accel"
-msgid "views/thumbtable/rate reject"
-msgstr ""
-
-#. setup history key accelerators
-#: ../src/dtgtk/thumbtable.c:1814
-msgctxt "accel"
-msgid "views/thumbtable/copy history"
-msgstr ""
-
-#: ../src/dtgtk/thumbtable.c:1815
-#, fuzzy
-msgctxt "accel"
-msgid "views/thumbtable/copy history parts"
-msgstr "Verlauf teilweise kopieren"
-
-#: ../src/dtgtk/thumbtable.c:1817
-#, fuzzy
-msgctxt "accel"
-msgid "views/thumbtable/paste history"
-msgstr "Verlauf einfügen"
-
-#: ../src/dtgtk/thumbtable.c:1818
-#, fuzzy
-msgctxt "accel"
-msgid "views/thumbtable/paste history parts"
-msgstr "Verlauf teilweise einfügen"
-
-#: ../src/dtgtk/thumbtable.c:1820
-#, fuzzy
-msgctxt "accel"
-msgid "views/thumbtable/discard history"
-msgstr "Verlauf verwerfen"
-
-#: ../src/dtgtk/thumbtable.c:1822
-#, fuzzy
-msgctxt "accel"
-msgid "views/thumbtable/duplicate image"
-msgstr "Bild duplizieren"
-
-#: ../src/dtgtk/thumbtable.c:1823
-msgctxt "accel"
-msgid "views/thumbtable/duplicate image virgin"
-msgstr ""
-
-#. setup color label accelerators
-#: ../src/dtgtk/thumbtable.c:1827
-msgctxt "accel"
-msgid "views/thumbtable/color red"
-msgstr ""
-
-#: ../src/dtgtk/thumbtable.c:1828
-msgctxt "accel"
-msgid "views/thumbtable/color yellow"
-msgstr ""
-
-#: ../src/dtgtk/thumbtable.c:1829
-msgctxt "accel"
-msgid "views/thumbtable/color green"
-msgstr ""
-
-#: ../src/dtgtk/thumbtable.c:1830
-msgctxt "accel"
-msgid "views/thumbtable/color blue"
-msgstr ""
-
-#: ../src/dtgtk/thumbtable.c:1831
-msgctxt "accel"
-msgid "views/thumbtable/color purple"
-msgstr ""
-
-#: ../src/dtgtk/thumbtable.c:1832
-#, fuzzy
-msgctxt "accel"
-msgid "views/thumbtable/clear color labels"
-msgstr "Farbmarkierungen entfernen"
-
-#. setup selection accelerators
-#: ../src/dtgtk/thumbtable.c:1835
-msgctxt "accel"
-msgid "views/thumbtable/select all"
-msgstr ""
-
-#: ../src/dtgtk/thumbtable.c:1836
-msgctxt "accel"
-msgid "views/thumbtable/select none"
-msgstr ""
-
-#: ../src/dtgtk/thumbtable.c:1838
-#, fuzzy
-msgctxt "accel"
-msgid "views/thumbtable/invert selection"
-msgstr "Auswahl invertieren"
-
-#: ../src/dtgtk/thumbtable.c:1839
-#, fuzzy
-msgctxt "accel"
-msgid "views/thumbtable/select film roll"
-msgstr "Filmrolle auswählen"
-
-# eigentlich: "unbearbeitete auswählen", was aber zu lang für den Knopf ist.
-#: ../src/dtgtk/thumbtable.c:1840
-#, fuzzy
-msgctxt "accel"
-msgid "views/thumbtable/select untouched"
-msgstr "unbearbeitete"
-
#. Column 1 - "make" of the camera.
#. * Column 2 - "model" (use the "make" and "model" as provided by DCRaw).
#. * Column 3 - WB name.
@@ -6085,63 +5946,63 @@ msgstr "$(VERSION_NAME) - Versionsname aus den Metadaten"
msgid "$(SEQUENCE) - sequence number"
msgstr "$(SEQUENCE) – Sequenznummer"
-#: ../src/gui/gtkentry.c:190
+#: ../src/gui/gtkentry.c:192
msgid "$(MAX_WIDTH) - maximum image export width"
msgstr "$(MAX_WIDTH) – maximale Breite beim Bildexport"
-#: ../src/gui/gtkentry.c:191
+#: ../src/gui/gtkentry.c:193
msgid "$(MAX_HEIGHT) - maximum image export height"
msgstr "$(MAX_HEIGHT) – maximale Höhe beim Bildexport"
-#: ../src/gui/gtkentry.c:192
+#: ../src/gui/gtkentry.c:194
msgid "$(YEAR) - year"
msgstr "$(YEAR) – Jahr"
-#: ../src/gui/gtkentry.c:193
+#: ../src/gui/gtkentry.c:195
msgid "$(MONTH) - month"
msgstr "$(MONTH) – Monat"
-#: ../src/gui/gtkentry.c:194
+#: ../src/gui/gtkentry.c:196
msgid "$(DAY) - day"
msgstr "$(DAY) – Tag"
-#: ../src/gui/gtkentry.c:195
+#: ../src/gui/gtkentry.c:197
msgid "$(HOUR) - hour"
msgstr "$(HOUR) – Stunde"
-#: ../src/gui/gtkentry.c:196
+#: ../src/gui/gtkentry.c:198
msgid "$(MINUTE) - minute"
msgstr "$(MINUTE) – Minute"
-#: ../src/gui/gtkentry.c:197
+#: ../src/gui/gtkentry.c:199
msgid "$(SECOND) - second"
msgstr "$(SECOND) – Sekunde"
-#: ../src/gui/gtkentry.c:198
+#: ../src/gui/gtkentry.c:200
msgid "$(EXIF_YEAR) - EXIF year"
msgstr "$(EXIF_YEAR) – Exif-Jahr"
-#: ../src/gui/gtkentry.c:199
+#: ../src/gui/gtkentry.c:201
msgid "$(EXIF_MONTH) - EXIF month"
msgstr "$(EXIF_MONTH) – Exif-Monat"
-#: ../src/gui/gtkentry.c:200
+#: ../src/gui/gtkentry.c:202
msgid "$(EXIF_DAY) - EXIF day"
msgstr "$(EXIF_DAY) – Exif-Tag"
-#: ../src/gui/gtkentry.c:201
+#: ../src/gui/gtkentry.c:203
msgid "$(EXIF_HOUR) - EXIF hour"
msgstr "$(EXIF_HOUR) – Exif-Stunde"
-#: ../src/gui/gtkentry.c:202
+#: ../src/gui/gtkentry.c:204
msgid "$(EXIF_MINUTE) - EXIF minute"
msgstr "$(EXIF_MINUTE) – Exif-Minute"
-#: ../src/gui/gtkentry.c:203
+#: ../src/gui/gtkentry.c:205
msgid "$(EXIF_SECOND) - EXIF second"
msgstr "$(EXIF_SECOND) – Exif-Sekunde"
-#: ../src/gui/gtkentry.c:204
+#: ../src/gui/gtkentry.c:206
msgid "$(EXIF_ISO) - ISO value"
msgstr "$(EXIF_ISO) – ISO-Wert"
@@ -6834,7 +6695,7 @@ msgstr "Kann keinen Stil aus unbearbeitetem Bild erzeugen"
msgid "copy"
msgstr "kopieren"
-#: ../src/imageio/format/copy.c:139
+#: ../src/imageio/format/copy.c:140
msgid ""
"do a 1:1 copy of the selected files.\n"
"the global options below do not apply!"
@@ -6843,7 +6704,7 @@ msgstr ""
"Dateien. Die folgenden globalen Optionen\n"
"werden nicht benutzt!"
-#: ../src/imageio/format/exr.cc:188
+#: ../src/imageio/format/exr.cc:189
msgid "the selected output profile doesn't work well with exr"
msgstr "das gewählte Ausgabe-Profil kann mit EXR Probleme geben"
@@ -11073,7 +10934,6 @@ msgid "rotate 90 degrees CW"
msgstr "um 90° im Uhrzeigersinn drehen"
#: ../src/iop/gamma.c:43
-#, fuzzy
msgctxt "modulename"
msgid "display encoding"
msgstr "Ausgabekodierung"
@@ -11099,26 +10959,6 @@ msgctxt "accel"
msgid "operator"
msgstr "Operator"
-#: ../src/iop/globaltonemap.c:122
-#, fuzzy
-msgctxt "accel"
-msgid "bias"
-msgstr "Bias"
-
-#: ../src/iop/globaltonemap.c:123
-#, fuzzy
-msgctxt "accel"
-msgid "target"
-msgstr "Ziel"
-
-# Ugh ...
-# Die Operatoren sollten auch übersetzt werden!
-#: ../src/iop/globaltonemap.c:125
-#, fuzzy
-msgctxt "accel"
-msgid "operator"
-msgstr "Operator"
-
# Ugh ...
# Die Operatoren sollten auch übersetzt werden!
#: ../src/iop/globaltonemap.c:657
@@ -11436,16 +11276,9 @@ msgid "camera model"
msgstr "Kamera"
#: ../src/iop/lens.cc:181
-#, fuzzy
-msgctxt "accel"
-msgid "corrections"
-msgstr "Korrekturen"
-
-#: ../src/iop/lens.cc:182
-#, fuzzy
msgctxt "accel"
-msgid "geometry"
-msgstr "Geometrie"
+msgid "select corrections"
+msgstr "Korrekturen auswählen"
#: ../src/iop/lens.cc:183
msgctxt "accel"
@@ -13149,19 +12982,19 @@ msgctxt "accel"
msgid "balance"
msgstr "Ausgleich"
-#: ../src/iop/splittoning.c:145
+#: ../src/iop/splittoning.c:137
msgid "authentic sepia"
msgstr "authentisches Sepia"
-#: ../src/iop/splittoning.c:154
+#: ../src/iop/splittoning.c:146
msgid "authentic cyanotype"
msgstr "authentische Cyanotypie"
-#: ../src/iop/splittoning.c:163
+#: ../src/iop/splittoning.c:155
msgid "authentic platinotype"
msgstr "authentische Platinotypie"
-#: ../src/iop/splittoning.c:172
+#: ../src/iop/splittoning.c:164
msgid "chocolate brown"
msgstr "Schokoladenbraun"
@@ -15296,30 +15129,6 @@ msgctxt "accel"
msgid "clear metadata"
msgstr "Metadaten löschen"
-#: ../src/libs/image.c:577
-#, fuzzy
-msgctxt "accel"
-msgid "copy metadata"
-msgstr "Metadaten"
-
-#: ../src/libs/image.c:578
-#, fuzzy
-msgctxt "accel"
-msgid "replace metadata"
-msgstr "Metadaten-Tag löschen"
-
-#: ../src/libs/image.c:579
-#, fuzzy
-msgctxt "accel"
-msgid "paste metadata"
-msgstr "Metadaten"
-
-#: ../src/libs/image.c:580
-#, fuzzy
-msgctxt "accel"
-msgid "clear metadata"
-msgstr "Metadaten"
-
#. Grouping keys
#: ../src/libs/image.c:663
msgctxt "accel"
@@ -16961,8 +16770,8 @@ msgstr ""
"Tag-Kurzbefehle in der Baumansicht nicht aktiv. Bitte zur Listenansicht "
"wechseln."
-#: ../src/libs/tools/battery_indicator.c:37
-#: ../src/libs/tools/battery_indicator.c:70
+#: ../src/libs/tools/battery_indicator.c:38
+#: ../src/libs/tools/battery_indicator.c:71
msgid "battery indicator"
msgstr "Batterieanzeige"
@@ -17628,13 +17437,6 @@ msgctxt "accel"
msgid "color assessment"
msgstr "Farbbeurteilung"
-#. toggle ISO 12646 color assessment condition
-#: ../src/views/darkroom.c:3389
-#, fuzzy
-msgctxt "accel"
-msgid "color assessment"
-msgstr "Farbzusammenstellung"
-
#. toggle raw overexposure indication
#: ../src/views/darkroom.c:3644
msgctxt "accel"
diff --git a/po/es.po b/po/es.po
index ffbbac59f..6526a32d7 100644
--- a/po/es.po
+++ b/po/es.po
@@ -18516,308 +18516,6 @@ msgstr "Acción"
#~ msgid "toggle timeline"
#~ msgstr "activar línea de tiempo"
-#~ msgctxt "modulename"
-#~ msgid "gamma"
-#~ msgstr "gamma"
-
-#~ msgid ""
-#~ "this will set when db size is checked for possible maintenance condition "
-#~ "and ask user to confirm"
-#~ msgstr ""
-#~ "Configura el momento en el que se comprobará el tamaño de la B.D. para un "
-#~ "posible mantenimiento y se pedirá la confirmación del usuario"
-
-#~ msgid "freepage for database maintenance in percentage"
-#~ msgstr "Umbral de espacio libre para activar el mantenimiento en porcentaje"
-
-#~ msgid ""
-#~ "once this ratio is reached (for either dbs) user is asked to confirm "
-#~ "database maintenance"
-#~ msgstr ""
-#~ "Una vez que se alcance el límite (para cualquiera de las bases de datos) "
-#~ "se pedirá confirmar su mantenimiento"
-
-#~ msgid "import film"
-#~ msgstr "importar sesión"
-
-#~ msgid "reload selected xmp files"
-#~ msgstr "recargar archivos xmp seleccionados"
-
-#~ msgid "not altered"
-#~ msgstr "no alterado"
-
-#~ msgid "order"
-#~ msgstr "orden"
-
-#~ msgid "copyright"
-#~ msgstr "derechos"
-
-#~ msgid "chroma (use on 1st instance)"
-#~ msgstr "crominancia (usar en un 1er módulo)"
-
-#~ msgid "luma (use on 2nd instance)"
-#~ msgstr "luma (usar en un 2º módulo)"
-
-#~ msgid "[facebook] unexpected URL format\n"
-#~ msgstr "[facebook] formato de url inesperado\n"
-
-#~ msgid ""
-#~ "step 1: a new window or tab of your browser should have been loaded. you "
-#~ "have to login into your facebook account there and authorize darktable to "
-#~ "upload photos before continuing."
-#~ msgstr ""
-#~ "Paso 1: Se cargará una nueva ventana o pestaña del navegador. Debe "
-#~ "ingresar en su cuenta de facebook y antes de continuar, autorice que "
-#~ "darktable pueda subir las fotos."
-
-#~ msgid ""
-#~ "step 2: paste your browser URL and click the OK button once you are done."
-#~ msgstr ""
-#~ "Paso 2: Pegue la URL en el navegador y haga clic en el botón Aceptar una "
-#~ "vez listo."
-
-#~ msgid "facebook authentication"
-#~ msgstr "Autenticación en Facebook"
-
-#~ msgid "URL:"
-#~ msgstr "URL:"
-
-#~ msgid "please enter the validation URL"
-#~ msgstr "Ingrese la URL de validación"
-
-#~ msgid "the given URL is not valid, it should look like: "
-#~ msgstr "La URL dada no es válida, debería ser similar a: "
-
-#~ msgid "authentication successful"
-#~ msgstr "Autenticación exitosa"
-
-#~ msgid "authentication failed"
-#~ msgstr "Fallo de autenticación"
-
-#~ msgid ""
-#~ "a new window or tab of your browser should have been loaded. you have to "
-#~ "login into your facebook account there and authorize darktable to upload "
-#~ "photos before continuing."
-#~ msgstr ""
-#~ "Se cargará una nueva ventana o pestaña del navegador. Debe ingresar en su "
-#~ "cuenta de facebook y antes de continuar, autorice que darktable pueda "
-#~ "subir las fotos."
-
-#~ msgid "new account"
-#~ msgstr "nueva cuenta"
-
-#~ msgid "other account"
-#~ msgstr "otras cuentas"
-
-#~ msgid "unable to retrieve the album list"
-#~ msgstr "no se pudo obtener la lista de albums"
-
-#~ msgid "logout"
-#~ msgstr "desconectarse"
-
-#~ msgid "facebook webalbum"
-#~ msgstr "álbum en facebook"
-
-#~ msgid "summary"
-#~ msgstr "sumario"
-
-#~ msgid "privacy"
-#~ msgstr "privacidad"
-
-#~ msgid "only me"
-#~ msgstr "solo yo"
-
-#~ msgid "public"
-#~ msgstr "público"
-
-#~ msgid "friends of friends"
-#~ msgstr "amigos de amigos"
-
-#~ msgid "unable to create album, no title provided"
-#~ msgstr "no se pudo crear el álbum, no se asignó un título"
-
-#~ msgid "unable to create album"
-#~ msgstr "no se pudo crear el álbum"
-
-#~ msgid "unable to export photo to webalbum"
-#~ msgstr "no se pudo exportar la foto al album web"
-
-#~ msgid "%d/%d exported to facebook webalbum"
-#~ msgid_plural "%d/%d exported to facebook webalbum"
-#~ msgstr[0] "%d/%d exportado al álbum web de facebook"
-#~ msgstr[1] "%d/%d exportados al álbum web de facebook"
-
-#~ msgid "flickr authentication: %s"
-#~ msgstr "Autenticación en flickr: %s"
-
-#~ msgid ""
-#~ "step 1: a new window or tab of your browser should have been loaded. you "
-#~ "have to login into your flickr account there and authorize darktable to "
-#~ "upload photos before continuing."
-#~ msgstr ""
-#~ "Paso 1: Se cargará una nueva ventana o pestaña del navegador. Debe "
-#~ "ingresar en su cuenta de flickr y antes de continuar, autorice que "
-#~ "darktable pueda subir las fotos."
-
-#~ msgid "step 2: click the OK button once you are done."
-#~ msgstr "Paso 2: Una vez terminado, pulse el botón Aceptar."
-
-#~ msgid "flickr authentication"
-#~ msgstr "autenticación flickr"
-
-#~ msgid "flickr webalbum"
-#~ msgstr "álbum en flickr"
-
-#~ msgid "without album"
-#~ msgstr "sin álbum"
-
-#~ msgid "flickr user"
-#~ msgstr "usuario"
-
-#~ msgid "flickr login"
-#~ msgstr "Acceso a Flickr"
-
-#~ msgid "friends + family"
-#~ msgstr "amigos + familia"
-
-#~ msgid "photosets"
-#~ msgstr "álbumes"
-
-#~ msgid "my new photoset"
-#~ msgstr "mi nuevo álbum de fotos"
-
-#~ msgid "exported from darktable"
-#~ msgstr "exportado desde darktable"
-
-#~ msgid "could not upload to flickr!"
-#~ msgstr "No se pudo cargar a flickr"
-
-#~ msgid "%d/%d exported to flickr webalbum"
-#~ msgid_plural "%d/%d exported to flickr webalbum"
-#~ msgstr[0] "%d/%d exportado al álbum web flickr"
-#~ msgstr[1] "%d/%d exportados al álbum web flickr"
-
-#~ msgid ""
-#~ "step 1: a new window or tab of your browser should have been loaded. you "
-#~ "have to login into your google account there and authorize darktable to "
-#~ "upload photos before continuing."
-#~ msgstr ""
-#~ "Paso 1: Se cargará una nueva ventana o pestaña del navegador. Debe "
-#~ "ingresar en su cuenta de Google y antes de continuar, autorice que "
-#~ "darktable pueda subir las fotos."
-
-#~ msgid ""
-#~ "step 2: paste the verification code shown to you in the browser and click "
-#~ "the OK button once you are done."
-#~ msgstr ""
-#~ "Paso 2: Copie el código de verificación mostrado en el navegador y una "
-#~ "vez listo, pulse el botón Aceptar."
-
-#~ msgid "google authentication"
-#~ msgstr "Autenticación google fotos"
-
-#~ msgid "verification code:"
-#~ msgstr "Código de verificación:"
-
-#~ msgid "please enter the verification code"
-#~ msgstr "Ingrese el código de verificación"
-
-#~ msgid "google photos"
-#~ msgstr "google fotos"
-
-#~ msgid "unable to export to google photos album"
-#~ msgstr "No se pudo exportar la foto al álbum de Google Fotos"
-
-#~ msgid "%d/%d exported to google photos album"
-#~ msgid_plural "%d/%d exported to google photos album"
-#~ msgstr[0] "%d/%d exportado al álbum Google Fotos"
-#~ msgstr[1] "%d/%d exportados al álbum de Google Fotos"
-
-#~ msgid ""
-#~ "error - this image is developed with a compressed lut but the gmic "
-#~ "version is not compatible"
-#~ msgstr ""
-#~ "Error: Se utilizó un Lut comprimido para revelar la imagen pero la "
-#~ "versión de G'MIC no es compatible"
-
-#~ msgid "invalid png header from %s"
-#~ msgstr "encabezado no válido de png de %s"
-
-#~ msgid "select a png (haldclut) or a cube file"
-#~ msgstr "Seleccione un png (HaldCLUT) o un archivo CUBE"
-
-#, fuzzy
-#~ msgid "metadata operations"
-#~ msgstr "operaciones de imagen"
-
-#, fuzzy
-#~ msgid "replace"
-#~ msgstr "reemplazar al historial"
-
-#, fuzzy
-#~ msgctxt "accel"
-#~ msgid "merge metadata"
-#~ msgstr "metadatos"
-
-#~ msgid "ctrl+scroll to set shape opacity (%d%%)"
-#~ msgstr "Ctrl+Rueda del Ratón para ajustar la opacidad de la figura (%d%%)"
-
-#~ msgctxt "accel"
-#~ msgid "controls"
-#~ msgstr "controles"
-
-#~ msgctxt "accel"
-#~ msgid "auto scale"
-#~ msgstr "auto redimensionar"
-
-#~ msgctxt "accel"
-#~ msgid "grey point"
-#~ msgstr "punto gris"
-
-#~ msgctxt "accel"
-#~ msgid "shadows range"
-#~ msgstr "rango de sombras"
-
-#~ msgid "width of the side panels in pixels"
-#~ msgstr "Tamaño de los paneles laterales en pixeles"
-
-#~ msgid "(needs a restart)"
-#~ msgstr "(necesita reiniciarse)"
-
-#~ msgid "enable filmstrip"
-#~ msgstr "Activar tira de imágenes"
-
-#~ msgid "enable the filmstrip in darkroom, tethering and map modes."
-#~ msgstr ""
-#~ "Activar tira de imágenes en el modo de cuarto oscuro, modo captura y modo "
-#~ "mapa."
-
-#~ msgid "enable timeline"
-#~ msgstr "Activar línea de tiempo"
-
-#~ msgid "enable the timeline in lighttable mode."
-#~ msgstr "Activar línea de tiempo en la mesa de luz"
-
-#~ msgid "double click to reset"
-#~ msgstr "Pulsación doble para reiniciar"
-
-#~ msgid "local laplacian: inconsistent output"
-#~ msgstr "laplaciano local: salida inconsistente"
-
-#~ msgctxt "accel"
-#~ msgid "compression"
-#~ msgstr "compresión"
-
-#~ msgid "[%s on line] change compression"
-#~ msgstr "[%s sobre la línea] cambiar compresión"
-
-#~ msgid "3D lut (cube)"
-#~ msgstr "lut 3D (cube)"
-
-#~ msgctxt "accel"
-#~ msgid "toggle timeline"
-#~ msgstr "activar línea de tiempo"
-
#~ msgid "REC.709"
#~ msgstr "REC.709"
diff --git a/po/fr.po b/po/fr.po
index 3881df6b0..44838b123 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -18719,412 +18719,6 @@ msgstr "action"
#~ msgid "3D lut (cube)"
#~ msgstr "lut 3D (cube)"
-#~ msgid "ISO Studio Tungsten"
-#~ msgstr "ISO tungstène studio"
-
-#~ msgid "delete branch"
-#~ msgstr "supprimer le chemin"
-
-#, fuzzy
-#~ msgid "%s %s/%s: %s"
-#~ msgstr "%s %s / %s: %s"
-
-#~ msgid "???"
-#~ msgstr "???"
-
-#~ msgctxt "accel"
-#~ msgid "toggle film strip"
-#~ msgstr "activer/désactiver le bandeau"
-
-#~ msgctxt "accel"
-#~ msgid "interpolation "
-#~ msgstr "interpolation"
-
-#~ msgctxt "accel"
-#~ msgid "rate 0"
-#~ msgstr "0 étoile"
-
-#~ msgctxt "accel"
-#~ msgid "rate 1"
-#~ msgstr "1 étoile"
-
-#~ msgctxt "accel"
-#~ msgid "rate 2"
-#~ msgstr "2 étoiles"
-
-#~ msgctxt "accel"
-#~ msgid "rate 3"
-#~ msgstr "3 étoiles"
-
-#~ msgctxt "accel"
-#~ msgid "rate 4"
-#~ msgstr "4 étoiles"
-
-#~ msgctxt "accel"
-#~ msgid "rate 5"
-#~ msgstr "5 étoiles"
-
-#~ msgctxt "accel"
-#~ msgid "rate reject"
-#~ msgstr "rejeter"
-
-#~ msgctxt "accel"
-#~ msgid "copy history"
-#~ msgstr "copier le développement"
-
-#~ msgctxt "accel"
-#~ msgid "discard history"
-#~ msgstr "supprimer le développement"
-
-#~ msgctxt "accel"
-#~ msgid "color red"
-#~ msgstr "couleur rouge"
-
-#~ msgctxt "accel"
-#~ msgid "color green"
-#~ msgstr "couleur verte"
-
-#~ msgctxt "accel"
-#~ msgid "color blue"
-#~ msgstr "couleur bleue"
-
-#~ msgctxt "accel"
-#~ msgid "navigate up"
-#~ msgstr "aller en haut"
-
-#~ msgctxt "accel"
-#~ msgid "navigate down"
-#~ msgstr "aller en bas"
-
-#~ msgctxt "accel"
-#~ msgid "navigate page up"
-#~ msgstr "défiler par page vers le haut"
-
-#~ msgctxt "accel"
-#~ msgid "navigate page down"
-#~ msgstr "défiler par page vers le bas"
-
-#~ msgctxt "accel"
-#~ msgid "scroll up"
-#~ msgstr "défiler en arrière"
-
-#~ msgctxt "accel"
-#~ msgid "scroll down"
-#~ msgstr "défiler en avant"
-
-#~ msgctxt "accel"
-#~ msgid "scroll left"
-#~ msgstr "défiler vers la gauche"
-
-#~ msgctxt "accel"
-#~ msgid "scroll right"
-#~ msgstr "défiler vers la droite"
-
-#~ msgctxt "accel"
-#~ msgid "scroll center"
-#~ msgstr "défiler vers le centre"
-
-#~ msgctxt "modulename"
-#~ msgid "gamma"
-#~ msgstr "gamma"
-
-#~ msgid ""
-#~ "this will set when db size is checked for possible maintenance condition "
-#~ "and ask user to confirm"
-#~ msgstr ""
-#~ "ceci indique quand vérifier la taille de la base de données pour une "
-#~ "possible maintenance avec confirmation de l'utilisateur"
-
-#~ msgid "freepage for database maintenance in percentage"
-#~ msgstr "seuil d'espace libre en pourcentage pour déclencher la maintenance"
-
-#~ msgid ""
-#~ "once this ratio is reached (for either dbs) user is asked to confirm "
-#~ "database maintenance"
-#~ msgstr ""
-#~ "lorsque le ratio est atteint (for chaque base de données) on propose à "
-#~ "l'utilisateur de lancer une action de maintenance"
-
-#~ msgid "import film"
-#~ msgstr "importer un dossier"
-
-#~ msgid "reload selected xmp files"
-#~ msgstr "relire fichiers xmp selectionnés"
-
-#~ msgid "copyright"
-#~ msgstr "droits"
-
-#~ msgid "[facebook] unexpected URL format\n"
-#~ msgstr "[facebook] format d'URL inconnu\n"
-
-#~ msgid ""
-#~ "step 1: a new window or tab of your browser should have been loaded. you "
-#~ "have to login into your facebook account there and authorize darktable to "
-#~ "upload photos before continuing."
-#~ msgstr ""
-#~ "étape 1 : une nouvelle fenêtre ou un nouvel onglet s'est ouvert dans "
-#~ "votre navigateur. connectez-vous à votre compte facebook et autorisez "
-#~ "darktable à charger des fichiers pour continuer."
-
-#~ msgid ""
-#~ "step 2: paste your browser URL and click the OK button once you are done."
-#~ msgstr "étape 2 : coller l'URL du navigateur cliquez sur OK"
-
-#~ msgid "facebook authentication"
-#~ msgstr "authentification facebook"
-
-#~ msgid "URL:"
-#~ msgstr "URL:"
-
-#~ msgid "please enter the validation URL"
-#~ msgstr "entrer l'URL de validation"
-
-#~ msgid "the given URL is not valid, it should look like: "
-#~ msgstr "l'URL donnée n'est pas valide, elle devrait ressembler à :"
-
-#~ msgid "authentication successful"
-#~ msgstr "authentification avec succès"
-
-#~ msgid "authentication failed"
-#~ msgstr "l'authentification a échoué"
-
-#~ msgid ""
-#~ "a new window or tab of your browser should have been loaded. you have to "
-#~ "login into your facebook account there and authorize darktable to upload "
-#~ "photos before continuing."
-#~ msgstr ""
-#~ "une nouvelle fenêtre ou un nouvel onglet s'est ouvert dans votre "
-#~ "navigateur. connectez-vous à votre compte facebook et autorisez darktable "
-#~ "à charger des photos pour continuer."
-
-#~ msgid "new account"
-#~ msgstr "nouveau compte"
-
-#~ msgid "other account"
-#~ msgstr "autre compte"
-
-#~ msgid "unable to retrieve the album list"
-#~ msgstr "impossible de rafraîchir la liste d'album"
-
-#~ msgid "logout"
-#~ msgstr "se déconnecter"
-
-#~ msgid "facebook webalbum"
-#~ msgstr "album web facebook"
-
-#~ msgid "summary"
-#~ msgstr "résumé"
-
-#~ msgid "privacy"
-#~ msgstr "vie privée"
-
-#~ msgid "only me"
-#~ msgstr "juste moi"
-
-#~ msgid "public"
-#~ msgstr "public"
-
-#~ msgid "friends of friends"
-#~ msgstr "amis d'amis"
-
-#~ msgid "unable to create album, no title provided"
-#~ msgstr "impossible de créer un album, titre manquant"
-
-#~ msgid "unable to create album"
-#~ msgstr "impossible de créer un nouvel album"
-
-#~ msgid "unable to export photo to webalbum"
-#~ msgstr "impossible d'exporter les photos vers l'album web"
-
-#~ msgid "%d/%d exported to facebook webalbum"
-#~ msgid_plural "%d/%d exported to facebook webalbum"
-#~ msgstr[0] "%d/%d exportée vers l'album web facebook"
-#~ msgstr[1] "%d/%d exportées vers l'album web facebook"
-
-#~ msgid "flickr authentication: %s"
-#~ msgstr "authentification flickr: %s"
-
-#~ msgid ""
-#~ "step 1: a new window or tab of your browser should have been loaded. you "
-#~ "have to login into your flickr account there and authorize darktable to "
-#~ "upload photos before continuing."
-#~ msgstr ""
-#~ "étape 1 : une nouvelle fenêtre ou un nouvel onglet s'est ouvert dans "
-#~ "votre navigateur. Connectez-vous à votre compte flickr et autorisez "
-#~ "darktable à charger des fichiers pour continuer."
-
-#~ msgid "step 2: click the OK button once you are done."
-#~ msgstr "étape 2 : cliquez sur \"OK\""
-
-#~ msgid "flickr authentication"
-#~ msgstr "authentification flickr"
-
-#~ msgid "flickr webalbum"
-#~ msgstr "album web flickr"
-
-#~ msgid "without album"
-#~ msgstr "sans album"
-
-#~ msgid "flickr user"
-#~ msgstr "utilisateur"
-
-#~ msgid "flickr login"
-#~ msgstr "identifiant flickr"
-
-#~ msgid "friends + family"
-#~ msgstr "amis + famille"
-
-#~ msgid "photosets"
-#~ msgstr "albums"
-
-#~ msgid "my new photoset"
-#~ msgstr "mon nouvel album"
-
-#~ msgid "exported from darktable"
-#~ msgstr "exportée depuis darktable"
-
-#~ msgid "could not upload to flickr!"
-#~ msgstr "impossible d'exporter sur flickr!"
-
-#~ msgid "%d/%d exported to flickr webalbum"
-#~ msgid_plural "%d/%d exported to flickr webalbum"
-#~ msgstr[0] "%d/%d exportée vers album web flickr"
-#~ msgstr[1] "%d/%d exportées vers album web flickr"
-
-#~ msgid ""
-#~ "step 1: a new window or tab of your browser should have been loaded. you "
-#~ "have to login into your google account there and authorize darktable to "
-#~ "upload photos before continuing."
-#~ msgstr ""
-#~ "étape 1 : une nouvelle fenêtre ou un nouvel onglet s'est ouvert dans "
-#~ "votre navigateur. connectez-vous à votre compte google et autorisez "
-#~ "darktable à charger des fichiers pour continuer."
-
-#~ msgid ""
-#~ "step 2: paste the verification code shown to you in the browser and click "
-#~ "the OK button once you are done."
-#~ msgstr ""
-#~ "étape 2 : coller le code de vérification affiché par le navigateur et "
-#~ "cliquer \"OK\""
-
-#~ msgid "google authentication"
-#~ msgstr "authentification google photos"
-
-#~ msgid "verification code:"
-#~ msgstr "code de vérification"
-
-#~ msgid "please enter the verification code"
-#~ msgstr "merci d'entrer le code de vérification"
-
-#~ msgid "google photos"
-#~ msgstr "google photos"
-
-#~ msgid "unable to export to google photos album"
-#~ msgstr "impossible d'exporter vers l'album google photos"
-
-#~ msgid "%d/%d exported to google photos album"
-#~ msgid_plural "%d/%d exported to google photos album"
-#~ msgstr[0] "%d/%d exportée vers l'album google photos"
-#~ msgstr[1] "%d/%d exportées vers l'album google photos"
-
-#~ msgid "chroma (use on 1st instance)"
-#~ msgstr "chroma (utiliser sur 1ère instance)"
-
-#~ msgid "luma (use on 2nd instance)"
-#~ msgstr "luma (utiliser sur la 2nd instance)"
-
-#~ msgid "invalid png header from %s"
-#~ msgstr "entête png non valide pour « %s »"
-
-#~ msgid "select a png (haldclut) or a cube file"
-#~ msgstr "sélectionner un png (hald clut) ou un fichier cube"
-
-#~ msgid "metadata operations"
-#~ msgstr "opérations sur métadonnées"
-
-#~ msgid "metadata operations apply on selected metadata"
-#~ msgstr ""
-#~ "les opérations sur les métadonnées n'affecte que les métadonnées "
-#~ "sélectionnées"
-
-#~ msgid ""
-#~ "merge selected metadata on selected images (doesn't clear previous dt "
-#~ "metadata and tags on selected images)"
-#~ msgstr ""
-#~ "fusionner les métadonnées sélectionnées des images sélectionnées "
-#~ "(n'efface pas les métadonnées dt et mots-clés des images sélectionnées)"
-
-#~ msgid "replace"
-#~ msgstr "remplacer"
-
-#~ msgid ""
-#~ "replace selected metadata on selected images (clears previous dt metadata "
-#~ "and tags on selected images)"
-#~ msgstr ""
-#~ "remplacer les métadonnées sélectionnées des images sélectionnées (efface "
-#~ "les métadonnées dt et mots-clés des images sélectionnées)"
-
-#~ msgctxt "accel"
-#~ msgid "merge metadata"
-#~ msgstr "fusionner métadonnées"
-
-#~ msgid "ctrl+scroll to set shape opacity (%d%%)"
-#~ msgstr "ctrl-défiler pour modifier l'opacité (%d%%)"
-
-#~ msgctxt "accel"
-#~ msgid "controls"
-#~ msgstr "contrôles"
-
-#~ msgctxt "accel"
-#~ msgid "compression"
-#~ msgstr "dégradé"
-
-#~ msgid "[%s on line] change compression"
-#~ msgstr "[%s sur ligne] changer la compression"
-
-#~ msgctxt "accel"
-#~ msgid "auto scale"
-#~ msgstr "échelle auto"
-
-#~ msgctxt "accel"
-#~ msgid "grey point"
-#~ msgstr "point gris"
-
-#~ msgctxt "accel"
-#~ msgid "shadows range"
-#~ msgstr "étendue des ombres"
-
-#~ msgid "enable filmstrip"
-#~ msgstr "activer le bandeau"
-
-#~ msgid "enable the filmstrip in darkroom, tethering and map modes."
-#~ msgstr "activer le bandeau en mode chambre noire, capture et carte."
-
-#~ msgid "enable timeline"
-#~ msgstr "activer la chronologie"
-
-#~ msgid "enable the timeline in lighttable mode."
-#~ msgstr "active la chronologie de la table lumineuse."
-
-#~ msgid "double click to reset"
-#~ msgstr "double-cliquer pour réinitialiser"
-
-#~ msgid "local laplacian: inconsistent output"
-#~ msgstr "laplacien local: résultat incohérent"
-
-#~ msgctxt "accel"
-#~ msgid "toggle timeline"
-#~ msgstr "activer/désactiver la chronologie"
-
-#~ msgid "width of the side panels in pixels"
-#~ msgstr "taille des panneaux latéraux en pixels"
-
-#~ msgid "(needs a restart)"
-#~ msgstr "(nécessite un redémarrage)"
-
-#~ msgid "3D lut (cube)"
-#~ msgstr "lut 3D (cube)"
-
#~ msgid "REC.709"
#~ msgstr "REC.709"
diff --git a/po/it.po b/po/it.po
index 6341ae120..aa3789b16 100644
--- a/po/it.po
+++ b/po/it.po
@@ -5548,7 +5548,7 @@ msgstr ""
msgid "warning: did you want to swap these boundaries?\n"
msgstr "Attenzione: vuoi invertire i contorni?\n"
-#: ../src/generate-cache/main.c:220
+#: ../src/generate-cache/main.c:218
#, c-format
msgid ""
"warning: disk backend for thumbnail cache is disabled (cache_disk_backend)\n"
@@ -5990,63 +5990,63 @@ msgstr "$(VERSION_NAME) - Nome versione dai metadati"
msgid "$(SEQUENCE) - sequence number"
msgstr "$(SEQUENCE) - Numero sequenza"
-#: ../src/gui/gtkentry.c:190
+#: ../src/gui/gtkentry.c:192
msgid "$(MAX_WIDTH) - maximum image export width"
msgstr "$(MAX_WIDTH) - Larghezza max immagine esportata"
-#: ../src/gui/gtkentry.c:191
+#: ../src/gui/gtkentry.c:193
msgid "$(MAX_HEIGHT) - maximum image export height"
msgstr "$(MAX_HEIGHT) - Altezza max immagine esportata"
-#: ../src/gui/gtkentry.c:192
+#: ../src/gui/gtkentry.c:194
msgid "$(YEAR) - year"
msgstr "$(YEAR) - Anno"
-#: ../src/gui/gtkentry.c:193
+#: ../src/gui/gtkentry.c:195
msgid "$(MONTH) - month"
msgstr "$(MONTH) - Mese"
-#: ../src/gui/gtkentry.c:194
+#: ../src/gui/gtkentry.c:196
msgid "$(DAY) - day"
msgstr "$(DAY) - Giorno"
-#: ../src/gui/gtkentry.c:195
+#: ../src/gui/gtkentry.c:197
msgid "$(HOUR) - hour"
msgstr "$(HOUR) - Ora"
-#: ../src/gui/gtkentry.c:196
+#: ../src/gui/gtkentry.c:198
msgid "$(MINUTE) - minute"
msgstr "$(MINUTE) - Minuto"
-#: ../src/gui/gtkentry.c:197
+#: ../src/gui/gtkentry.c:199
msgid "$(SECOND) - second"
msgstr "$(SECOND) - Secondo"
-#: ../src/gui/gtkentry.c:198
+#: ../src/gui/gtkentry.c:200
msgid "$(EXIF_YEAR) - EXIF year"
msgstr "$(EXIF_YEAR) - Anno Exif"
-#: ../src/gui/gtkentry.c:199
+#: ../src/gui/gtkentry.c:201
msgid "$(EXIF_MONTH) - EXIF month"
msgstr "$(EXIF_MONTH) - Mese Exif"
-#: ../src/gui/gtkentry.c:200
+#: ../src/gui/gtkentry.c:202
msgid "$(EXIF_DAY) - EXIF day"
msgstr "$(EXIF_DAY) - Giorno Exif"
-#: ../src/gui/gtkentry.c:201
+#: ../src/gui/gtkentry.c:203
msgid "$(EXIF_HOUR) - EXIF hour"
msgstr "$(EXIF_HOUR) - Ora Exif"
-#: ../src/gui/gtkentry.c:202
+#: ../src/gui/gtkentry.c:204
msgid "$(EXIF_MINUTE) - EXIF minute"
msgstr "$(EXIF_MINUTE) - Minuto Exif"
-#: ../src/gui/gtkentry.c:203
+#: ../src/gui/gtkentry.c:205
msgid "$(EXIF_SECOND) - EXIF second"
msgstr "$(EXIF_SECOND) - Secondo Exif"
-#: ../src/gui/gtkentry.c:204
+#: ../src/gui/gtkentry.c:206
msgid "$(EXIF_ISO) - ISO value"
msgstr "$(EXIF_ISO) - Valore ISO"
@@ -11325,8 +11325,8 @@ msgstr "Modello fotocamera"
#: ../src/iop/lens.cc:181
msgctxt "accel"
-msgid "corrections"
-msgstr "Correzioni"
+msgid "select corrections"
+msgstr "Seleziona correzioni"
#: ../src/iop/lens.cc:183
msgctxt "accel"
@@ -13028,42 +13028,22 @@ msgstr "Saturazione alteluci"
#: ../src/iop/splittoning.c:109
msgctxt "accel"
-msgid "shadows-hue"
-msgstr "Tonalità ombre"
-
-#: ../src/iop/splittoning.c:114
-msgctxt "accel"
-msgid "shadows-saturation"
-msgstr "Saturazione ombre"
-
-#: ../src/iop/splittoning.c:115
-msgctxt "accel"
-msgid "highlights-hue"
-msgstr "Tonalità alteluci"
-
-#: ../src/iop/splittoning.c:116
-msgctxt "accel"
-msgid "highlights-saturation"
-msgstr "Saturazione alteluci"
-
-#: ../src/iop/splittoning.c:117
-msgctxt "accel"
msgid "balance"
msgstr "Bilanciamento"
-#: ../src/iop/splittoning.c:145
+#: ../src/iop/splittoning.c:137
msgid "authentic sepia"
msgstr "Seppia"
-#: ../src/iop/splittoning.c:154
+#: ../src/iop/splittoning.c:146
msgid "authentic cyanotype"
msgstr "Cianotipia"
-#: ../src/iop/splittoning.c:163
+#: ../src/iop/splittoning.c:155
msgid "authentic platinotype"
msgstr "Platinotipia"
-#: ../src/iop/splittoning.c:172
+#: ../src/iop/splittoning.c:164
msgid "chocolate brown"
msgstr "Marrone cioccolato"
@@ -13677,7 +13657,7 @@ msgstr "Compressione contrasto"
msgid "velvia"
msgstr "velvia"
-#: ../src/iop/velvia.c:104
+#: ../src/iop/velvia.c:105
msgctxt "accel"
msgid "mid-tones bias"
msgstr "Imprecisione toni medi "
@@ -16824,8 +16804,8 @@ msgstr ""
"Le scorciatoie non sono disponibili sulla visualizzazione ad albero. Abilita "
"la visualizzazione lista."
-#: ../src/libs/tools/battery_indicator.c:37
-#: ../src/libs/tools/battery_indicator.c:70
+#: ../src/libs/tools/battery_indicator.c:38
+#: ../src/libs/tools/battery_indicator.c:71
msgid "battery indicator"
msgstr "Indicatore della batteria"
diff --git a/po/pl.po b/po/pl.po
index d6b7e13ba..190da3df7 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -4602,63 +4602,63 @@ msgstr "$(VERSION_NAME) - nazwa wersji z metadanych"
msgid "$(SEQUENCE) - sequence number"
msgstr "$(SEQUENCE) - numer sekwencji"
-#: ../src/gui/gtkentry.c:190
+#: ../src/gui/gtkentry.c:192
msgid "$(MAX_WIDTH) - maximum image export width"
msgstr "$(MAX_HEIGHT) - największa szerokość eksportowanego zdjęcia"
-#: ../src/gui/gtkentry.c:191
+#: ../src/gui/gtkentry.c:193
msgid "$(MAX_HEIGHT) - maximum image export height"
msgstr "$(MAX_HEIGHT) - największa wysokość eksportowanego zdjęcia"
-#: ../src/gui/gtkentry.c:192
+#: ../src/gui/gtkentry.c:194
msgid "$(YEAR) - year"
msgstr "$(YEAR) - rok"
-#: ../src/gui/gtkentry.c:193
+#: ../src/gui/gtkentry.c:195
msgid "$(MONTH) - month"
msgstr "$(MONTH) - miesiÄ…c"
-#: ../src/gui/gtkentry.c:194
+#: ../src/gui/gtkentry.c:196
msgid "$(DAY) - day"
msgstr "$(DAY) - dzień"
-#: ../src/gui/gtkentry.c:195
+#: ../src/gui/gtkentry.c:197
msgid "$(HOUR) - hour"
msgstr "$(HOUR) - godzina"
-#: ../src/gui/gtkentry.c:196
+#: ../src/gui/gtkentry.c:198
msgid "$(MINUTE) - minute"
msgstr "$(MINUTE) - minuta"
-#: ../src/gui/gtkentry.c:197
+#: ../src/gui/gtkentry.c:199
msgid "$(SECOND) - second"
msgstr "$(SECOND) - sekunda"
-#: ../src/gui/gtkentry.c:198
+#: ../src/gui/gtkentry.c:200
msgid "$(EXIF_YEAR) - EXIF year"
msgstr "$(EXIF_YEAR) - rok z EXIF"
-#: ../src/gui/gtkentry.c:199
+#: ../src/gui/gtkentry.c:201
msgid "$(EXIF_MONTH) - EXIF month"
msgstr "$(EXIF_MONTH) - miesiÄ…c z EXIF"
-#: ../src/gui/gtkentry.c:200
+#: ../src/gui/gtkentry.c:202
msgid "$(EXIF_DAY) - EXIF day"
msgstr "$(EXIF_DAY) - dzień z EXIF"
-#: ../src/gui/gtkentry.c:201
+#: ../src/gui/gtkentry.c:203
msgid "$(EXIF_HOUR) - EXIF hour"
msgstr "$(EXIF_HOUR) - godzina z EXIF"
-#: ../src/gui/gtkentry.c:202
+#: ../src/gui/gtkentry.c:204
msgid "$(EXIF_MINUTE) - EXIF minute"
msgstr "$(EXIF_MINUTE) - minuta z EXIF"
-#: ../src/gui/gtkentry.c:203
+#: ../src/gui/gtkentry.c:205
msgid "$(EXIF_SECOND) - EXIF second"
msgstr "$(EXIF_SECOND) - sekunda z EXIF"
-#: ../src/gui/gtkentry.c:204
+#: ../src/gui/gtkentry.c:206
msgid "$(EXIF_ISO) - ISO value"
msgstr "$(EXIF_ISO) - wartość ISO z EXIF"
@@ -5625,7 +5625,7 @@ msgstr "zdjęcie"
msgid "graphic"
msgstr "grafika"
-#: ../src/imageio/storage/disk.c:70 ../src/libs/export.c:544
+#: ../src/imageio/storage/disk.c:70 ../src/libs/export.c:537
msgid "file on disk"
msgstr "plik na dysku"
@@ -8046,19 +8046,19 @@ msgstr "miks źródła"
msgid "select the hue tone"
msgstr "ton odcienia"
-#: ../src/iop/colorize.c:440
+#: ../src/iop/colorize.c:436
msgid "select the saturation shadow tone"
msgstr "nasycenie tonu dla cieni"
-#: ../src/iop/colorize.c:453
+#: ../src/iop/colorize.c:449
msgid "source mix"
msgstr "miks źródła"
-#: ../src/iop/colorize.c:457
+#: ../src/iop/colorize.c:453
msgid "lightness of color"
msgstr "jasność koloru"
-#: ../src/iop/colorize.c:458
+#: ../src/iop/colorize.c:454
msgid "mix value of source lightness"
msgstr "miks wartości źródła jasności"
@@ -11922,26 +11922,6 @@ msgstr "światła: nasycenie"
#: ../src/iop/splittoning.c:108
msgctxt "accel"
-msgid "shadows-hue"
-msgstr "cienie: odcień"
-
-#: ../src/iop/splittoning.c:114
-msgctxt "accel"
-msgid "shadows-saturation"
-msgstr "cienie: nasycenie"
-
-#: ../src/iop/splittoning.c:115
-msgctxt "accel"
-msgid "highlights-hue"
-msgstr "światła: odcień"
-
-#: ../src/iop/splittoning.c:116
-msgctxt "accel"
-msgid "highlights-saturation"
-msgstr "światła: nasycenie"
-
-#: ../src/iop/splittoning.c:117
-msgctxt "accel"
msgid "balance"
msgstr "balans"
@@ -12069,17 +12049,17 @@ msgctxt "accel"
msgid "preset/spot"
msgstr "ustawienie/punktowy"
-#: ../src/iop/temperature.c:787
+#: ../src/iop/temperature.c:785
msgctxt "white balance"
msgid "camera"
msgstr "aparat"
-#: ../src/iop/temperature.c:788
+#: ../src/iop/temperature.c:786
msgctxt "white balance"
msgid "camera neutral"
msgstr "aparat (neutralne)"
-#: ../src/iop/temperature.c:789
+#: ../src/iop/temperature.c:787
msgctxt "white balance"
msgid "spot"
msgstr "punktowy"
@@ -12140,7 +12120,7 @@ msgstr "dostrojenie ustawienia balansu bieli"
msgid "white balance disabled for camera"
msgstr "balans bieli niedostępny dla tego aparatu"
-#: ../src/iop/tonecurve.c:190
+#: ../src/iop/tonecurve.c:189
msgid "tone curve"
msgstr "krzywa tonalna"
@@ -12293,35 +12273,35 @@ msgid "preserve details"
msgstr "ochrona detali"
#. No blending
-#: ../src/iop/toneequal.c:420
+#: ../src/iop/toneequal.c:417
msgid "mask blending : none"
msgstr "mieszanie maski: brak"
-#: ../src/iop/toneequal.c:432
+#: ../src/iop/toneequal.c:429
msgid "mask blending : landscapes"
msgstr "mieszanie maski: krajobraz"
-#: ../src/iop/toneequal.c:440
+#: ../src/iop/toneequal.c:437
msgid "mask blending : all purposes"
msgstr "mieszanie maski: ogólne przeznaczenie"
-#: ../src/iop/toneequal.c:448
+#: ../src/iop/toneequal.c:445
msgid "mask blending : isolated subjects"
msgstr "mieszanie maski: izolowane obiekty"
-#: ../src/iop/toneequal.c:469
+#: ../src/iop/toneequal.c:466
msgid "compress shadows/highlights : soft"
msgstr "kompresja cieni/świateł: lekka"
-#: ../src/iop/toneequal.c:488
+#: ../src/iop/toneequal.c:485
msgid "compress shadows/highlights : strong"
msgstr "kompresja cieni/świateł: mocna"
-#: ../src/iop/toneequal.c:507
+#: ../src/iop/toneequal.c:504
msgid "relight : fill-in"
msgstr "doświetlanie"
-#: ../src/iop/toneequal.c:558
+#: ../src/iop/toneequal.c:555
msgid ""
"tone equalizer needs to be after distorsion modules in the pipeline – "
"disabled"
@@ -13422,27 +13402,27 @@ msgstr "eksport wybranych obrazów"
msgid "export to disk"
msgstr "eksportuj na dysk"
-#: ../src/libs/export.c:557
+#: ../src/libs/export.c:550
msgid "storage options"
msgstr "opcje lokalizacji"
-#: ../src/libs/export.c:562
+#: ../src/libs/export.c:555
msgid "target storage"
msgstr "miejsce docelowe"
-#: ../src/libs/export.c:585
+#: ../src/libs/export.c:578
msgid "format options"
msgstr "opcje formatu"
-#: ../src/libs/export.c:590
+#: ../src/libs/export.c:583
msgid "file format"
msgstr "format pliku"
-#: ../src/libs/export.c:608
+#: ../src/libs/export.c:601
msgid "global options"
msgstr "ustawienia globalne"
-#: ../src/libs/export.c:613
+#: ../src/libs/export.c:606
msgid ""
"maximum output width\n"
"set to 0 for no scaling"
@@ -13450,7 +13430,7 @@ msgstr ""
"maksymalna wyjściowa szerokość\n"
"wartość 0 oznacza brak skalowania"
-#: ../src/libs/export.c:615
+#: ../src/libs/export.c:608
msgid ""
"maximum output height\n"
"set to 0 for no scaling"
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644
index 000000000..f359ee134
--- /dev/null
+++ b/po/pt_BR.po
@@ -0,0 +1,17823 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: darktable 2.x\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-07-30 20:42-0300\n"
+"PO-Revision-Date: 2020-07-30 20:47-0300\n"
+"Last-Translator: Jeronimo Cordoni Pellegrini <j_p@aleph0.info>\n"
+"Language-Team: \n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Poedit 2.3\n"
+"X-Poedit-Bookmarks: 722,-1,-1,-1,-1,-1,-1,-1,-1,-1\n"
+
+#: ../build/data/darktable.desktop.in.h:1 ../data/darktable.desktop.in.h:1
+msgid "Virtual Lighttable and Darkroom"
+msgstr "Mesa de Luz e Sala Escura Virtuais"
+
+#: ../build/data/darktable.desktop.in.h:2 ../data/darktable.appdata.xml.in.h:1
+#: ../data/darktable.desktop.in.h:2
+msgid "Organize and develop images from digital cameras"
+msgstr "Organize e trate imagens de câmeras digitais"
+
+#. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
+#: ../build/data/darktable.desktop.in.h:4 ../data/darktable.desktop.in.h:4
+msgid "graphics;photography;raw;"
+msgstr "gráfico;fotografia;raw;"
+
+#: ../build/src/iop/introspection_ashift.c:120
+#: ../build/src/iop/introspection_ashift.c:245
+msgid "lens shift (vertical)"
+msgstr "deslocamento de lente (vertical)"
+
+#: ../build/src/iop/introspection_ashift.c:126
+#: ../build/src/iop/introspection_ashift.c:249
+msgid "lens shift (horizontal)"
+msgstr "deslocamento de lente (horizontal)"
+
+#: ../build/src/iop/introspection_ashift.c:132
+#: ../build/src/iop/introspection_ashift.c:253
+msgid "shear"
+msgstr "cisalhamento"
+
+#. focal length
+#: ../build/src/iop/introspection_ashift.c:138
+#: ../build/src/iop/introspection_ashift.c:257 ../src/common/collection.c:687
+#: ../src/gui/preferences.c:800 ../src/gui/preferences.c:1827
+#: ../src/gui/presets.c:501 ../src/libs/camera.c:581
+#: ../src/libs/metadata_view.c:124
+msgid "focal length"
+msgstr "distância focal"
+
+#: ../build/src/iop/introspection_ashift.c:144
+#: ../build/src/iop/introspection_ashift.c:261
+msgid "crop factor"
+msgstr "fator de corte (crop)"
+
+#: ../build/src/iop/introspection_ashift.c:150
+#: ../build/src/iop/introspection_ashift.c:265
+msgid "lens dependence"
+msgstr "dependencia da lente"
+
+#: ../build/src/iop/introspection_ashift.c:156
+#: ../build/src/iop/introspection_ashift.c:269
+msgid "aspect adjust"
+msgstr "ajuste de proporção"
+
+#: ../build/src/iop/introspection_ashift.c:162
+#: ../build/src/iop/introspection_ashift.c:273
+msgid "lens model"
+msgstr "modelo da lente"
+
+#: ../build/src/iop/introspection_ashift.c:174
+#: ../build/src/iop/introspection_ashift.c:281
+#: ../build/src/iop/introspection_clipping.c:244
+#: ../build/src/iop/introspection_clipping.c:371
+msgid "automatic cropping"
+msgstr "corte automático"
+
+#: ../build/src/iop/introspection_ashift.c:311
+msgid "generic"
+msgstr "geral"
+
+#: ../build/src/iop/introspection_ashift.c:312
+msgid "specific"
+msgstr "específico"
+
+#: ../build/src/iop/introspection_ashift.c:316
+#: ../build/src/iop/introspection_colorin.c:301
+#: ../build/src/iop/introspection_vignette.c:262 ../src/common/history.c:837
+#: ../src/common/history.c:840 ../src/common/history.c:856
+#: ../src/common/styles.c:1079 ../src/common/styles.c:1083
+#: ../src/develop/blend_gui.c:2438 ../src/develop/blend_gui.c:2703
+#: ../src/develop/develop.c:2078 ../src/imageio/format/exr.cc:376
+#: ../src/imageio/format/j2k.c:661 ../src/iop/ashift.c:4788
+#: ../src/iop/demosaic.c:5036 ../src/libs/live_view.c:434
+msgid "off"
+msgstr "desligado"
+
+#: ../build/src/iop/introspection_ashift.c:317
+msgid "largest area"
+msgstr "maior área"
+
+#: ../build/src/iop/introspection_ashift.c:318
+msgid "original format"
+msgstr "formato original"
+
+#: ../build/src/iop/introspection_basecurve.c:134
+#: ../build/src/iop/introspection_basecurve.c:231
+msgid "fusion"
+msgstr "fusão"
+
+#: ../build/src/iop/introspection_basecurve.c:140
+#: ../build/src/iop/introspection_basecurve.c:235
+msgid "exposure shift"
+msgstr "deslocamento de exposição"
+
+#: ../build/src/iop/introspection_basecurve.c:146
+#: ../build/src/iop/introspection_basecurve.c:239
+#: ../src/libs/metadata_view.c:123
+msgid "exposure bias"
+msgstr "viés de exposição"
+
+#: ../build/src/iop/introspection_basecurve.c:152
+#: ../build/src/iop/introspection_basecurve.c:243
+#: ../build/src/iop/introspection_basicadj.c:122
+#: ../build/src/iop/introspection_basicadj.c:215
+#: ../build/src/iop/introspection_rgbcurve.c:140
+#: ../build/src/iop/introspection_rgbcurve.c:227
+#: ../build/src/iop/introspection_rgblevels.c:57
+#: ../build/src/iop/introspection_rgblevels.c:122
+#: ../build/src/iop/introspection_tonecurve.c:153
+#: ../build/src/iop/introspection_tonecurve.c:244
+msgid "preserve colors"
+msgstr "preservar cores"
+
+#: ../build/src/iop/introspection_basecurve.c:262
+#: ../build/src/iop/introspection_basicadj.c:249
+#: ../build/src/iop/introspection_colorreconstruction.c:153
+#: ../build/src/iop/introspection_rgbcurve.c:251
+#: ../build/src/iop/introspection_rgblevels.c:153
+#: ../build/src/iop/introspection_tonecurve.c:270 ../src/iop/basecurve.c:2145
+#: ../src/iop/clipping.c:1880 ../src/iop/clipping.c:2139
+#: ../src/iop/clipping.c:2155 ../src/iop/clipping.c:2290
+#: ../src/iop/clipping.c:2317 ../src/iop/lens.cc:2259 ../src/iop/retouch.c:578
+#: ../src/libs/collect.c:1697 ../src/libs/export.c:582
+#: ../src/libs/live_view.c:348 ../src/libs/live_view.c:373
+#: ../src/libs/live_view.c:382 ../src/libs/print_settings.c:1475
+msgid "none"
+msgstr "nenhum"
+
+#: ../build/src/iop/introspection_basecurve.c:263
+#: ../build/src/iop/introspection_basicadj.c:250
+#: ../build/src/iop/introspection_rgbcurve.c:252
+#: ../build/src/iop/introspection_rgblevels.c:154
+#: ../build/src/iop/introspection_tonecurve.c:271
+msgid "luminance"
+msgstr "luminância"
+
+#: ../build/src/iop/introspection_basecurve.c:264
+#: ../build/src/iop/introspection_basicadj.c:251
+#: ../build/src/iop/introspection_filmicrgb.c:494
+#: ../build/src/iop/introspection_rgbcurve.c:253
+#: ../build/src/iop/introspection_rgblevels.c:155
+#: ../build/src/iop/introspection_tonecurve.c:272
+msgid "max RGB"
+msgstr "RGB max"
+
+#: ../build/src/iop/introspection_basecurve.c:265
+#: ../build/src/iop/introspection_basicadj.c:252
+#: ../build/src/iop/introspection_rgbcurve.c:254
+#: ../build/src/iop/introspection_rgblevels.c:156
+#: ../build/src/iop/introspection_tonecurve.c:273
+msgid "average RGB"
+msgstr "RGB média"
+
+#: ../build/src/iop/introspection_basecurve.c:266
+#: ../build/src/iop/introspection_basicadj.c:253
+#: ../build/src/iop/introspection_rgbcurve.c:255
+#: ../build/src/iop/introspection_rgblevels.c:157
+#: ../build/src/iop/introspection_tonecurve.c:274
+msgid "sum RGB"
+msgstr "RGB soma"
+
+#: ../build/src/iop/introspection_basecurve.c:267
+#: ../build/src/iop/introspection_basicadj.c:254
+#: ../build/src/iop/introspection_rgbcurve.c:256
+#: ../build/src/iop/introspection_rgblevels.c:158
+#: ../build/src/iop/introspection_tonecurve.c:275
+msgid "norm RGB"
+msgstr "RGB norma"
+
+#: ../build/src/iop/introspection_basecurve.c:268
+#: ../build/src/iop/introspection_basicadj.c:255
+#: ../build/src/iop/introspection_rgbcurve.c:257
+#: ../build/src/iop/introspection_rgblevels.c:159
+#: ../build/src/iop/introspection_tonecurve.c:276
+msgid "basic power"
+msgstr "potência básica"
+
+#: ../build/src/iop/introspection_basicadj.c:92
+#: ../build/src/iop/introspection_basicadj.c:195
+#: ../build/src/iop/introspection_exposure.c:67
+#: ../build/src/iop/introspection_exposure.c:138
+msgid "black level correction"
+msgstr "correção de nível de preto"
+
+#: ../build/src/iop/introspection_basicadj.c:104
+#: ../build/src/iop/introspection_basicadj.c:203
+msgid "highlight compression"
+msgstr "compressão de realce"
+
+#: ../build/src/iop/introspection_basicadj.c:128
+#: ../build/src/iop/introspection_basicadj.c:219
+msgid "middle grey"
+msgstr "cinza médio"
+
+#: ../build/src/iop/introspection_bilat.c:78
+#: ../build/src/iop/introspection_bilat.c:137
+msgid "midtone range"
+msgstr "faixa de meios-tons"
+
+#: ../build/src/iop/introspection_bilat.c:151
+msgid "bilateral grid"
+msgstr "grade bilateral"
+
+#: ../build/src/iop/introspection_bilat.c:152
+msgid "local laplacian filter"
+msgstr "filtro laplaciano local"
+
+#: ../build/src/iop/introspection_borders.c:110
+#: ../build/src/iop/introspection_borders.c:251 ../src/common/collection.c:691
+#: ../src/libs/tools/filter.c:97
+msgid "aspect ratio"
+msgstr "ajuste de aspecto"
+
+#: ../build/src/iop/introspection_borders.c:128
+#: ../build/src/iop/introspection_borders.c:263 ../src/iop/flip.c:75
+#: ../src/libs/print_settings.c:1285
+msgid "orientation"
+msgstr "orientação"
+
+#: ../build/src/iop/introspection_borders.c:134
+#: ../build/src/iop/introspection_borders.c:267
+msgid "border size"
+msgstr "tamanho da borda"
+
+#: ../build/src/iop/introspection_borders.c:140
+#: ../build/src/iop/introspection_borders.c:271 ../src/iop/borders.c:940
+msgid "horizontal position"
+msgstr "posição horizontal"
+
+#: ../build/src/iop/introspection_borders.c:158
+#: ../build/src/iop/introspection_borders.c:283 ../src/iop/borders.c:951
+msgid "vertical position"
+msgstr "posição vertical"
+
+#: ../build/src/iop/introspection_borders.c:176
+#: ../build/src/iop/introspection_borders.c:295
+msgid "frame line size"
+msgstr "tamanho da linha de moldura"
+
+#: ../build/src/iop/introspection_borders.c:182
+#: ../build/src/iop/introspection_borders.c:299
+msgid "frame line offset"
+msgstr "deslocamento da linha de moldura"
+
+#: ../build/src/iop/introspection_clipping.c:142
+#: ../build/src/iop/introspection_clipping.c:303
+msgid "left"
+msgstr "esquerda"
+
+#: ../build/src/iop/introspection_clipping.c:148
+#: ../build/src/iop/introspection_clipping.c:307
+msgid "top"
+msgstr "superior"
+
+#: ../build/src/iop/introspection_clipping.c:154
+#: ../build/src/iop/introspection_clipping.c:311
+msgid "right"
+msgstr "direita"
+
+#: ../build/src/iop/introspection_clipping.c:160
+#: ../build/src/iop/introspection_clipping.c:315
+msgid "bottom"
+msgstr "inferior"
+
+#: ../build/src/iop/introspection_colorbalance.c:114
+#: ../build/src/iop/introspection_colorbalance.c:203
+msgid "input saturation"
+msgstr "saturação de entrada"
+
+#: ../build/src/iop/introspection_colorbalance.c:126
+#: ../build/src/iop/introspection_colorbalance.c:211
+msgid "contrast fulcrum"
+msgstr "pivô de contraste (contrast fulcrum)"
+
+#: ../build/src/iop/introspection_colorbalance.c:132
+#: ../build/src/iop/introspection_colorbalance.c:215
+msgid "output saturation"
+msgstr "saturação de saída"
+
+#: ../build/src/iop/introspection_colorbalance.c:229
+msgid "lift, gamma, gain (ProPhotoRGB)"
+msgstr "elevação, gama, ganho (ProPhotoRGB)"
+
+#: ../build/src/iop/introspection_colorbalance.c:230
+msgid "slope, offset, power (ProPhotoRGB)"
+msgstr "inclinação, deslocamento, potência (ProPhotoRGB)"
+
+#: ../build/src/iop/introspection_colorbalance.c:231
+msgid "lift, gamma, gain (sRGB)"
+msgstr "elevação, gama, ganho (sRGB)"
+
+#: ../build/src/iop/introspection_colorcontrast.c:54
+#: ../build/src/iop/introspection_colorcontrast.c:121
+msgid "green vs magenta"
+msgstr "verde vs magenta"
+
+#: ../build/src/iop/introspection_colorcontrast.c:66
+#: ../build/src/iop/introspection_colorcontrast.c:129
+msgid "blue vs yellow"
+msgstr "azul vs amarelo"
+
+#: ../build/src/iop/introspection_colorin.c:149
+#: ../build/src/iop/introspection_colorin.c:232
+msgid "gamut clipping"
+msgstr "corte de tonalidade"
+
+#: ../build/src/iop/introspection_colorin.c:302
+#: ../build/src/iop/introspection_lut3d.c:201 ../src/common/colorspaces.c:1602
+msgid "sRGB"
+msgstr "sRGB"
+
+#: ../build/src/iop/introspection_colorin.c:303
+#: ../src/common/colorspaces.c:1411 ../src/common/colorspaces.c:1604
+#: ../src/libs/print_settings.c:1042
+msgid "Adobe RGB (compatible)"
+msgstr "Adobe RGB (compatível)"
+
+#: ../build/src/iop/introspection_colorin.c:304
+#: ../src/common/colorspaces.c:1416 ../src/common/colorspaces.c:1606
+msgid "linear Rec709 RGB"
+msgstr "linear Rec709 RGB"
+
+#: ../build/src/iop/introspection_colorin.c:305
+#: ../src/common/colorspaces.c:1425 ../src/common/colorspaces.c:1608
+msgid "linear Rec2020 RGB"
+msgstr "linear Rec2020 RGB"
+
+#: ../build/src/iop/introspection_colorize.c:65
+#: ../build/src/iop/introspection_colorize.c:128
+msgid "source mix"
+msgstr "mistura fonte"
+
+#: ../build/src/iop/introspection_colormapping.c:93
+#: ../build/src/iop/introspection_colormapping.c:248
+msgid "number of clusters"
+msgstr "número de clusters"
+
+#: ../build/src/iop/introspection_colormapping.c:99
+#: ../build/src/iop/introspection_colormapping.c:252
+msgid "color dominance"
+msgstr "predominância de cor"
+
+#: ../build/src/iop/introspection_colormapping.c:105
+#: ../build/src/iop/introspection_colormapping.c:256
+msgid "histogram equalization"
+msgstr "equalização do histograma"
+
+#: ../build/src/iop/introspection_colorreconstruction.c:62
+#: ../build/src/iop/introspection_colorreconstruction.c:127
+#: ../build/src/iop/introspection_tonemap.cc:45
+#: ../build/src/iop/introspection_tonemap.cc:92 ../src/iop/shadhi.c:746
+msgid "spatial extent"
+msgstr "extensão espacial"
+
+#: ../build/src/iop/introspection_colorreconstruction.c:68
+#: ../build/src/iop/introspection_colorreconstruction.c:131
+msgid "range extent"
+msgstr "extensão da faixa"
+
+#: ../build/src/iop/introspection_colorreconstruction.c:154
+msgid "saturated colors"
+msgstr "cores saturadas"
+
+#: ../build/src/iop/introspection_colorreconstruction.c:155
+#: ../build/src/iop/introspection_colorzones.c:257
+#: ../build/src/iop/introspection_graduatednd.c:87
+#: ../build/src/iop/introspection_graduatednd.c:152
+#: ../build/src/iop/introspection_splittoning.c:61
+#: ../build/src/iop/introspection_splittoning.c:73
+#: ../build/src/iop/introspection_splittoning.c:134
+#: ../build/src/iop/introspection_splittoning.c:142
+#: ../src/iop/channelmixer.c:443 ../src/iop/colorbalance.c:2190
+#: ../src/iop/colorbalance.c:2238 ../src/iop/colorbalance.c:2285
+#: ../src/iop/colorize.c:361 ../src/iop/colorreconstruction.c:1303
+#: ../src/iop/colorzones.c:2370
+msgid "hue"
+msgstr "matiz"
+
+#: ../build/src/iop/introspection_colorzones.c:78
+#: ../build/src/iop/introspection_colorzones.c:193
+msgid "select by"
+msgstr "selecionar por"
+
+#: ../build/src/iop/introspection_colorzones.c:138
+#: ../build/src/iop/introspection_colorzones.c:233
+#: ../build/src/iop/introspection_soften.c:66
+#: ../build/src/iop/introspection_soften.c:121 ../src/iop/atrous.c:1902
+msgid "mix"
+msgstr "mix"
+
+#: ../build/src/iop/introspection_colorzones.c:144
+#: ../build/src/iop/introspection_colorzones.c:237
+msgid "process mode"
+msgstr "modo de processo"
+
+#: ../build/src/iop/introspection_colorzones.c:255
+#: ../src/iop/channelmixer.c:445 ../src/iop/colorchecker.c:1375
+#: ../src/iop/colorize.c:377 ../src/iop/colorzones.c:2368
+msgid "lightness"
+msgstr "luminosidade"
+
+#: ../build/src/iop/introspection_colorzones.c:256
+#: ../build/src/iop/introspection_graduatednd.c:93
+#: ../build/src/iop/introspection_graduatednd.c:156
+#: ../build/src/iop/introspection_splittoning.c:67
+#: ../build/src/iop/introspection_splittoning.c:79
+#: ../build/src/iop/introspection_splittoning.c:138
+#: ../build/src/iop/introspection_splittoning.c:146 ../src/iop/basicadj.c:658
+#: ../src/iop/channelmixer.c:444 ../src/iop/colisa.c:329
+#: ../src/iop/colorbalance.c:2200 ../src/iop/colorbalance.c:2248
+#: ../src/iop/colorbalance.c:2295 ../src/iop/colorchecker.c:1393
+#: ../src/iop/colorcorrection.c:271 ../src/iop/colorize.c:372
+#: ../src/iop/colorzones.c:2369 ../src/iop/lowpass.c:603
+#: ../src/iop/soften.c:677 ../src/iop/vignette.c:1037
+msgid "saturation"
+msgstr "saturação"
+
+#: ../build/src/iop/introspection_colorzones.c:267 ../src/iop/atrous.c:1631
+#: ../src/iop/atrous.c:1635 ../src/iop/denoiseprofile.c:4064
+#: ../src/iop/rawdenoise.c:792
+msgid "smooth"
+msgstr "suave"
+
+#: ../build/src/iop/introspection_colorzones.c:268
+msgid "strong"
+msgstr "forte"
+
+#: ../build/src/iop/introspection_defringe.c:47
+#: ../build/src/iop/introspection_defringe.c:102 ../src/iop/defringe.c:427
+msgid "edge detection radius"
+msgstr "raio para detecção de bordas"
+
+#: ../build/src/iop/introspection_defringe.c:53
+#: ../build/src/iop/introspection_defringe.c:106
+#: ../build/src/iop/introspection_filmicrgb.c:204
+#: ../build/src/iop/introspection_filmicrgb.c:391 ../src/iop/bloom.c:489
+#: ../src/iop/colorreconstruction.c:1297 ../src/iop/defringe.c:431
+#: ../src/iop/hotpixels.c:395 ../src/iop/sharpen.c:749
+msgid "threshold"
+msgstr "limite"
+
+#: ../build/src/iop/introspection_defringe.c:59
+#: ../build/src/iop/introspection_defringe.c:110
+msgid "operation mode"
+msgstr "modo de operação"
+
+#: ../build/src/iop/introspection_defringe.c:124
+msgid "global average (fast)"
+msgstr "média global (rápido)"
+
+#: ../build/src/iop/introspection_defringe.c:125
+msgid "local average (slow)"
+msgstr "média local (lento)"
+
+#: ../build/src/iop/introspection_defringe.c:126
+msgid "static threshold (fast)"
+msgstr "limiar estático (rápido)"
+
+#: ../build/src/iop/introspection_demosaic.c:67
+#: ../build/src/iop/introspection_demosaic.c:134
+msgid "match greens"
+msgstr "coincidir verdes"
+
+#: ../build/src/iop/introspection_demosaic.c:73
+#: ../build/src/iop/introspection_demosaic.c:138
+msgid "edge threshold"
+msgstr "limite de borda"
+
+#: ../build/src/iop/introspection_demosaic.c:79
+#: ../build/src/iop/introspection_demosaic.c:142
+msgid "color smoothing"
+msgstr "suavização de cor"
+
+#: ../build/src/iop/introspection_demosaic.c:85
+#: ../build/src/iop/introspection_demosaic.c:146
+msgid "demosaicing method"
+msgstr "método de interpolação cromática"
+
+#: ../build/src/iop/introspection_demosaic.c:164
+msgid "disabled"
+msgstr "desabilitado"
+
+#: ../build/src/iop/introspection_demosaic.c:165
+msgid "local average"
+msgstr "média local"
+
+#: ../build/src/iop/introspection_demosaic.c:166
+msgid "full average"
+msgstr "média global"
+
+#: ../build/src/iop/introspection_demosaic.c:167
+msgid "full and local average"
+msgstr "média global e local"
+
+#: ../build/src/iop/introspection_demosaic.c:171
+msgid "PPG (fast)"
+msgstr "PPG (rápido)"
+
+#: ../build/src/iop/introspection_demosaic.c:172
+msgid "AMaZE (slow)"
+msgstr "AMaZe (lento)"
+
+#: ../build/src/iop/introspection_demosaic.c:173
+msgid "VNG4"
+msgstr "VNG4"
+
+#: ../build/src/iop/introspection_demosaic.c:174
+#: ../build/src/iop/introspection_demosaic.c:178
+msgid "passthrough (monochrome) (experimental)"
+msgstr "passthrough (monocromático) (experimental)"
+
+#: ../build/src/iop/introspection_demosaic.c:175
+msgid "VNG"
+msgstr "VNG"
+
+#: ../build/src/iop/introspection_demosaic.c:176
+msgid "Markesteijn 1-pass"
+msgstr "Markesteijn 1-passo"
+
+#: ../build/src/iop/introspection_demosaic.c:177
+msgid "Markesteijn 3-pass (slow)"
+msgstr "Markesteijn 3-passos (lento)"
+
+#: ../build/src/iop/introspection_demosaic.c:179
+msgid "frequency domain chroma (slow)"
+msgstr "croma no domínio da frequência (lento)"
+
+#: ../build/src/iop/introspection_denoiseprofile.c:125
+#: ../build/src/iop/introspection_denoiseprofile.c:300
+#: ../build/src/iop/introspection_nlmeans.c:48
+#: ../build/src/iop/introspection_nlmeans.c:109
+msgid "patch size"
+msgstr "tamanho do patch"
+
+#: ../build/src/iop/introspection_denoiseprofile.c:131
+#: ../build/src/iop/introspection_denoiseprofile.c:304
+msgid "search radius"
+msgstr "raio para busca"
+
+#: ../build/src/iop/introspection_denoiseprofile.c:143
+#: ../build/src/iop/introspection_denoiseprofile.c:312
+msgid "preserve shadows"
+msgstr "preservar sombras"
+
+#: ../build/src/iop/introspection_denoiseprofile.c:149
+#: ../build/src/iop/introspection_denoiseprofile.c:316
+msgid "bias correction"
+msgstr "correção de viés"
+
+#: ../build/src/iop/introspection_denoiseprofile.c:155
+#: ../build/src/iop/introspection_denoiseprofile.c:320
+msgid "scattering (coarse-grain noise)"
+msgstr "difusão (ruído grosseiro)"
+
+#: ../build/src/iop/introspection_denoiseprofile.c:161
+#: ../build/src/iop/introspection_denoiseprofile.c:324
+msgid "central pixel weight (details)"
+msgstr "peso do pixel central (detalhes)"
+
+#: ../build/src/iop/introspection_denoiseprofile.c:167
+#: ../build/src/iop/introspection_denoiseprofile.c:328
+msgid "adjust autoset parameters"
+msgstr "ajusta parâmetros automáticos"
+
+#: ../build/src/iop/introspection_denoiseprofile.c:239
+#: ../build/src/iop/introspection_denoiseprofile.c:376
+msgid "whitebalance-adaptive transform"
+msgstr "transformação adaptativa ao balanço de branco"
+
+#: ../build/src/iop/introspection_denoiseprofile.c:245
+#: ../build/src/iop/introspection_denoiseprofile.c:380
+msgid "fix various bugs in algorithm"
+msgstr "conserto de vários bugs no algoritmo"
+
+#: ../build/src/iop/introspection_denoiseprofile.c:251
+#: ../build/src/iop/introspection_denoiseprofile.c:384
+msgid "upgrade profiled transform"
+msgstr "atualização do modelo"
+
+#: ../build/src/iop/introspection_denoiseprofile.c:257
+#: ../build/src/iop/introspection_denoiseprofile.c:388
+msgid "color mode"
+msgstr "modo de cor"
+
+#: ../build/src/iop/introspection_denoiseprofile.c:410
+#: ../src/libs/colorpicker.c:592 ../src/libs/colorpicker.c:630
+msgid "RGB"
+msgstr "RGB"
+
+#: ../build/src/iop/introspection_denoiseprofile.c:411
+msgid "Y0U0V0"
+msgstr "Y0U0V0"
+
+#: ../build/src/iop/introspection_dither.c:62
+#: ../build/src/iop/introspection_dither.c:141
+#: ../build/src/iop/introspection_highlights.c:56
+#: ../build/src/iop/introspection_highlights.c:123
+msgid "method"
+msgstr "método"
+
+#: ../build/src/iop/introspection_dither.c:92
+#: ../build/src/iop/introspection_dither.c:161
+msgid "damping"
+msgstr "amortecimento"
+
+#: ../build/src/iop/introspection_dither.c:179
+msgid "random"
+msgstr "aleatório"
+
+#: ../build/src/iop/introspection_dither.c:180
+msgid "floyd-steinberg 1-bit B&W"
+msgstr "floyd-steinberg 1-bit P&B"
+
+#: ../build/src/iop/introspection_dither.c:181
+msgid "floyd-steinberg 4-bit gray"
+msgstr "floyd-steinberg 4-bit cinza"
+
+#: ../build/src/iop/introspection_dither.c:182
+msgid "floyd-steinberg 8-bit RGB"
+msgstr "floyd-steinberg 8-bit RGB"
+
+#: ../build/src/iop/introspection_dither.c:183
+msgid "floyd-steinberg 16-bit RGB"
+msgstr "floyd-steinberg 16-bit RGB"
+
+#: ../build/src/iop/introspection_dither.c:184
+msgid "floyd-steinberg auto"
+msgstr "floyd-steinberg auto"
+
+#: ../build/src/iop/introspection_exposure.c:79
+#: ../build/src/iop/introspection_exposure.c:146
+msgid "percentile"
+msgstr "percentil"
+
+#: ../build/src/iop/introspection_exposure.c:85
+#: ../build/src/iop/introspection_exposure.c:150
+msgid "target level"
+msgstr "nível alvo"
+
+#: ../build/src/iop/introspection_exposure.c:168
+#: ../build/src/iop/introspection_levels.c:160
+msgid "manual"
+msgstr "manual"
+
+#: ../build/src/iop/introspection_exposure.c:169
+#: ../build/src/iop/introspection_levels.c:161 ../src/iop/vignette.c:1045
+msgid "automatic"
+msgstr "automático"
+
+#: ../build/src/iop/introspection_filmicrgb.c:186
+#: ../build/src/iop/introspection_filmicrgb.c:379 ../src/iop/filmic.c:1626
+msgid "middle grey luminance"
+msgstr "luminância de cinza médio"
+
+#: ../build/src/iop/introspection_filmicrgb.c:192
+#: ../build/src/iop/introspection_filmicrgb.c:383
+#: ../build/src/iop/introspection_profile_gamma.c:97
+#: ../build/src/iop/introspection_profile_gamma.c:166 ../src/iop/filmic.c:1649
+msgid "black relative exposure"
+msgstr "exposição relativa de preto"
+
+#: ../build/src/iop/introspection_filmicrgb.c:198
+#: ../build/src/iop/introspection_filmicrgb.c:387 ../src/iop/filmic.c:1637
+msgid "white relative exposure"
+msgstr "exposição relativa de branco"
+
+#: ../build/src/iop/introspection_filmicrgb.c:210
+#: ../build/src/iop/introspection_filmicrgb.c:395
+msgid "transition"
+msgstr "transição"
+
+#: ../build/src/iop/introspection_filmicrgb.c:216
+#: ../build/src/iop/introspection_filmicrgb.c:399
+msgid "bloom/reconstruct"
+msgstr "florescer/reconstruir"
+
+#: ../build/src/iop/introspection_filmicrgb.c:222
+#: ../build/src/iop/introspection_filmicrgb.c:403
+msgid "grey/colorful details"
+msgstr "balanço de detalhes cinza/cores"
+
+#: ../build/src/iop/introspection_filmicrgb.c:228
+#: ../build/src/iop/introspection_filmicrgb.c:407
+msgid "structure/texture"
+msgstr "balanço estrutura/textura"
+
+#: ../build/src/iop/introspection_filmicrgb.c:234
+#: ../build/src/iop/introspection_filmicrgb.c:411
+msgid "dynamic range scaling"
+msgstr "escala de faixa dinâmica"
+
+#: ../build/src/iop/introspection_filmicrgb.c:240
+#: ../build/src/iop/introspection_filmicrgb.c:415 ../src/iop/filmic.c:1780
+msgid "target middle grey"
+msgstr "cinza médio alvo"
+
+#: ../build/src/iop/introspection_filmicrgb.c:246
+#: ../build/src/iop/introspection_filmicrgb.c:419 ../src/iop/filmic.c:1771
+msgid "target black luminance"
+msgstr "luminância de preto alvo"
+
+#: ../build/src/iop/introspection_filmicrgb.c:252
+#: ../build/src/iop/introspection_filmicrgb.c:423 ../src/iop/filmic.c:1789
+msgid "target white luminance"
+msgstr "luminância de branco alvo"
+
+#: ../build/src/iop/introspection_filmicrgb.c:258
+#: ../build/src/iop/introspection_filmicrgb.c:427
+#: ../build/src/iop/introspection_graduatednd.c:69
+#: ../build/src/iop/introspection_graduatednd.c:140
+msgid "hardness"
+msgstr "dureza"
+
+#: ../build/src/iop/introspection_filmicrgb.c:276
+#: ../build/src/iop/introspection_filmicrgb.c:439 ../src/iop/filmic.c:1719
+#: ../src/iop/filmicrgb.c:2458 ../src/iop/filmicrgb.c:2602
+msgid "extreme luminance saturation"
+msgstr "saturação para luminância extrema"
+
+#: ../build/src/iop/introspection_filmicrgb.c:282
+#: ../build/src/iop/introspection_filmicrgb.c:443 ../src/iop/filmic.c:1700
+msgid "shadows/highlights balance"
+msgstr "balanço de sombras e realces"
+
+#: ../build/src/iop/introspection_filmicrgb.c:288
+#: ../build/src/iop/introspection_filmicrgb.c:447
+msgid "add noise in highlights"
+msgstr "adicionar ruído em realces"
+
+#: ../build/src/iop/introspection_filmicrgb.c:294
+#: ../build/src/iop/introspection_filmicrgb.c:451
+msgid "preserve chrominance"
+msgstr "preservar a crominância"
+
+#: ../build/src/iop/introspection_filmicrgb.c:300
+#: ../build/src/iop/introspection_filmicrgb.c:455
+msgid "color science"
+msgstr "ciência de cores"
+
+#: ../build/src/iop/introspection_filmicrgb.c:306
+#: ../build/src/iop/introspection_filmicrgb.c:459
+msgid "auto adjust hardness"
+msgstr "auto-ajustar dureza"
+
+#: ../build/src/iop/introspection_filmicrgb.c:312
+#: ../build/src/iop/introspection_filmicrgb.c:463
+msgid "use custom middle-grey values"
+msgstr "usar valores personalizados de cinza-médio"
+
+#: ../build/src/iop/introspection_filmicrgb.c:318
+#: ../build/src/iop/introspection_filmicrgb.c:467
+msgid "iterations of high-quality reconstruction"
+msgstr "iterações de reconstrução de alta qualidade"
+
+#: ../build/src/iop/introspection_filmicrgb.c:324
+#: ../build/src/iop/introspection_filmicrgb.c:471
+msgid "type of noise"
+msgstr "tipo de ruído"
+
+#: ../build/src/iop/introspection_filmicrgb.c:330
+#: ../build/src/iop/introspection_filmicrgb.c:475
+msgid "contrast in shadows"
+msgstr "contraste em sombras"
+
+#: ../build/src/iop/introspection_filmicrgb.c:336
+#: ../build/src/iop/introspection_filmicrgb.c:479
+msgid "contrast in highlights"
+msgstr "contraste em realces"
+
+#: ../build/src/iop/introspection_filmicrgb.c:493
+#: ../build/src/iop/introspection_toneequal.c:360 ../src/common/darktable.c:820
+#: ../src/common/variables.c:520 ../src/imageio/format/pdf.c:670
+#: ../src/imageio/format/pdf.c:695 ../src/libs/export.c:694
+#: ../src/libs/export.c:700 ../src/libs/export.c:707
+#: ../src/libs/metadata_view.c:289
+msgid "no"
+msgstr "não"
+
+#: ../build/src/iop/introspection_filmicrgb.c:495
+msgid "luminance Y"
+msgstr "luminância Y"
+
+#: ../build/src/iop/introspection_filmicrgb.c:496
+#: ../build/src/iop/introspection_toneequal.c:371
+msgid "RGB power norm"
+msgstr "norma da potência RGB"
+
+#: ../build/src/iop/introspection_filmicrgb.c:497
+#: ../build/src/iop/introspection_toneequal.c:370
+msgid "RGB euclidean norm"
+msgstr "RGB norma euclideana"
+
+#: ../build/src/iop/introspection_filmicrgb.c:501
+msgid "v3 (2019)"
+msgstr "v3 (2019)"
+
+#: ../build/src/iop/introspection_filmicrgb.c:502
+msgid "v4 (2020)"
+msgstr "v4 (2020)"
+
+#: ../build/src/iop/introspection_filmicrgb.c:506
+msgid "hard"
+msgstr "dura"
+
+#: ../build/src/iop/introspection_filmicrgb.c:507
+msgid "soft"
+msgstr "suave"
+
+#: ../build/src/iop/introspection_globaltonemap.c:60
+#: ../build/src/iop/introspection_globaltonemap.c:125
+msgid "bias"
+msgstr "viés"
+
+#: ../build/src/iop/introspection_globaltonemap.c:66
+#: ../build/src/iop/introspection_globaltonemap.c:129
+msgid "target"
+msgstr "alvo"
+
+#: ../build/src/iop/introspection_globaltonemap.c:151
+msgid "reinhard"
+msgstr "reinhard"
+
+#: ../build/src/iop/introspection_globaltonemap.c:152 ../src/iop/filmic.c:163
+msgid "filmic"
+msgstr "fílmico"
+
+#: ../build/src/iop/introspection_globaltonemap.c:153
+msgid "drago"
+msgstr "drago"
+
+#: ../build/src/iop/introspection_graduatednd.c:63
+#: ../build/src/iop/introspection_graduatednd.c:136
+msgid "density"
+msgstr "densidade"
+
+#: ../build/src/iop/introspection_graduatednd.c:75
+#: ../build/src/iop/introspection_graduatednd.c:144
+#: ../build/src/iop/introspection_watermark.c:118
+#: ../build/src/iop/introspection_watermark.c:235 ../src/iop/ashift.c:4771
+msgid "rotation"
+msgstr "rotação"
+
+#: ../build/src/iop/introspection_graduatednd.c:81
+#: ../build/src/iop/introspection_graduatednd.c:148
+msgid "offset"
+msgstr "deslocamento"
+
+#: ../build/src/iop/introspection_grain.c:58
+#: ../build/src/iop/introspection_grain.c:117 ../src/iop/bilat.c:441
+msgid "coarseness"
+msgstr "granularidade"
+
+#: ../build/src/iop/introspection_grain.c:70
+#: ../build/src/iop/introspection_grain.c:125
+msgid "midtones bias"
+msgstr "tendência dos meios-tons"
+
+#: ../build/src/iop/introspection_highlights.c:80
+#: ../build/src/iop/introspection_highlights.c:139 ../src/iop/exposure.c:897
+#: ../src/views/darkroom.c:2144
+msgid "clipping threshold"
+msgstr "limiar de corte"
+
+#: ../build/src/iop/introspection_highlights.c:153
+msgid "clip highlights"
+msgstr "recortar realces"
+
+#: ../build/src/iop/introspection_highlights.c:154
+msgid "reconstruct in LCh"
+msgstr "reconstruir em LCh"
+
+#: ../build/src/iop/introspection_highlights.c:155
+msgid "reconstruct color"
+msgstr "reconstruir cor"
+
+#: ../build/src/iop/introspection_highpass.c:44
+#: ../build/src/iop/introspection_highpass.c:91
+msgid "contrast boost"
+msgstr "ganho de contraste"
+
+#: ../build/src/iop/introspection_hotpixels.c:59
+#: ../build/src/iop/introspection_hotpixels.c:116
+msgid "mark fixed pixels"
+msgstr "marcar pixels corrigidos"
+
+#: ../build/src/iop/introspection_hotpixels.c:65
+#: ../build/src/iop/introspection_hotpixels.c:120
+msgid "detect by 3 neighbors"
+msgstr "detectar por 3 vizinhos"
+
+#. mode choice
+#: ../build/src/iop/introspection_lens.cc:106
+#: ../build/src/iop/introspection_lens.cc:237
+#: ../build/src/iop/introspection_rgbcurve.c:128
+#: ../build/src/iop/introspection_rgbcurve.c:219
+#: ../build/src/iop/introspection_rgblevels.c:51
+#: ../build/src/iop/introspection_rgblevels.c:118 ../src/iop/bilat.c:428
+#: ../src/iop/colorbalance.c:2057 ../src/iop/denoiseprofile.c:4326
+#: ../src/iop/exposure.c:931 ../src/iop/levels.c:710
+#: ../src/iop/profile_gamma.c:746 ../src/libs/copy_history.c:382
+#: ../src/libs/export.c:761 ../src/libs/image.c:589
+#: ../src/libs/print_settings.c:1516 ../src/libs/styles.c:587
+#: ../src/views/darkroom.c:2116
+msgid "mode"
+msgstr "modo"
+
+#: ../build/src/iop/introspection_lens.cc:142
+#: ../build/src/iop/introspection_lens.cc:261 ../src/iop/lens.cc:2376
+msgid "geometry"
+msgstr "geometria"
+
+#: ../build/src/iop/introspection_lens.cc:178
+#: ../build/src/iop/introspection_lens.cc:285
+msgid "TCA red"
+msgstr "TCA vermelho"
+
+#: ../build/src/iop/introspection_lens.cc:184
+#: ../build/src/iop/introspection_lens.cc:289
+msgid "TCA blue"
+msgstr "TCA azul"
+
+#: ../build/src/iop/introspection_lowlight.c:43
+#: ../build/src/iop/introspection_lowlight.c:110
+msgid "blue shift"
+msgstr "deslocamento azul"
+
+#: ../build/src/iop/introspection_lowpass.c:96
+#: ../build/src/iop/introspection_lowpass.c:165
+#: ../build/src/iop/introspection_shadhi.c:160
+#: ../build/src/iop/introspection_shadhi.c:247
+msgid "soften with"
+msgstr "suavizar com"
+
+#: ../build/src/iop/introspection_lowpass.c:189
+#: ../build/src/iop/introspection_shadhi.c:267 ../src/iop/filmicrgb.c:2538
+#: ../src/iop/retouch.c:2672
+msgid "gaussian"
+msgstr "gaussiano"
+
+#: ../build/src/iop/introspection_lowpass.c:190
+#: ../build/src/iop/introspection_shadhi.c:268
+msgid "bilateral filter"
+msgstr "filtro bilateral"
+
+#: ../build/src/iop/introspection_lut3d.c:76
+#: ../build/src/iop/introspection_lut3d.c:163
+msgid "application color space"
+msgstr "espaço de cor"
+
+#: ../build/src/iop/introspection_lut3d.c:202
+msgid "Adobe RGB"
+msgstr "Adobe RGB"
+
+#: ../build/src/iop/introspection_lut3d.c:203
+msgid "gamma rec709 RGB"
+msgstr "gama Rec709 RGB"
+
+#: ../build/src/iop/introspection_lut3d.c:204
+msgid "linear rec709 RGB"
+msgstr "linear Rec709 RGB"
+
+#: ../build/src/iop/introspection_lut3d.c:205
+msgid "linear rec2020 RGB"
+msgstr "linear Rec2020 RGB"
+
+#: ../build/src/iop/introspection_lut3d.c:209
+msgid "tetrahedral"
+msgstr "tetraédrico"
+
+#: ../build/src/iop/introspection_lut3d.c:210
+msgid "trilinear"
+msgstr "trilinear"
+
+#: ../build/src/iop/introspection_lut3d.c:211
+msgid "pyramid"
+msgstr "pirâmide"
+
+#: ../build/src/iop/introspection_profile_gamma.c:85
+#: ../build/src/iop/introspection_profile_gamma.c:158
+msgid "dynamic range"
+msgstr "faixa dinâmica"
+
+#: ../build/src/iop/introspection_profile_gamma.c:91
+#: ../build/src/iop/introspection_profile_gamma.c:162
+msgid "middle grey luma"
+msgstr "luma de cinza médio"
+
+#: ../build/src/iop/introspection_profile_gamma.c:103
+#: ../build/src/iop/introspection_profile_gamma.c:170 ../src/iop/filmic.c:1660
+msgid "safety factor"
+msgstr "fator de segurança"
+
+#: ../build/src/iop/introspection_profile_gamma.c:184
+#: ../src/iop/basecurve.c:2135
+msgid "logarithmic"
+msgstr "logarítmico"
+
+#: ../build/src/iop/introspection_profile_gamma.c:185
+#: ../src/iop/colorbalance.c:2232 ../src/iop/profile_gamma.c:698
+msgid "gamma"
+msgstr "gama"
+
+#: ../build/src/iop/introspection_rawdenoise.c:43
+#: ../build/src/iop/introspection_rawdenoise.c:122
+msgid "noise threshold"
+msgstr "limiar de ruído"
+
+#: ../build/src/iop/introspection_rawprepare.c:129
+#: ../build/src/iop/introspection_rawprepare.c:212 ../src/iop/rawprepare.c:169
+#: ../src/iop/rawprepare.c:866 ../src/iop/rawprepare.c:867
+msgid "white point"
+msgstr "ponto branco"
+
+#. exposure
+#: ../build/src/iop/introspection_relight.c:43
+#: ../build/src/iop/introspection_relight.c:98 ../src/common/collection.c:690
+#: ../src/gui/preferences.c:792 ../src/gui/preferences.c:1797
+#: ../src/gui/presets.c:471 ../src/iop/basicadj.c:630 ../src/iop/exposure.c:108
+#: ../src/iop/exposure.c:886 ../src/libs/metadata_view.c:122
+msgid "exposure"
+msgstr "exposição"
+
+#: ../build/src/iop/introspection_rgbcurve.c:134
+#: ../build/src/iop/introspection_rgbcurve.c:223 ../src/iop/rgbcurve.c:1476
+msgid "compensate middle grey"
+msgstr "compensar cinza médio"
+
+#: ../build/src/iop/introspection_rgbcurve.c:246
+#: ../build/src/iop/introspection_rgblevels.c:148
+#: ../build/src/iop/introspection_tonecurve.c:266
+msgid "RGB, linked channels"
+msgstr "RGB, canais ligados"
+
+#: ../build/src/iop/introspection_rgbcurve.c:247
+#: ../build/src/iop/introspection_rgblevels.c:149
+msgid "RGB, independent channels"
+msgstr "RGB, canais independentes"
+
+#: ../build/src/iop/introspection_shadhi.c:112
+#: ../build/src/iop/introspection_shadhi.c:215
+msgid "white point adjustment"
+msgstr "ajuste de ponto branco"
+
+#: ../build/src/iop/introspection_shadhi.c:136
+#: ../build/src/iop/introspection_shadhi.c:231
+msgid "shadows color adjustment"
+msgstr "ajuste de cor em sombras"
+
+#: ../build/src/iop/introspection_shadhi.c:142
+#: ../build/src/iop/introspection_shadhi.c:235
+msgid "highlights color adjustment"
+msgstr "ajuste de cor em realces"
+
+#: ../build/src/iop/introspection_tonecurve.c:135
+#: ../build/src/iop/introspection_tonecurve.c:232
+msgid "color space"
+msgstr "espaço de cor"
+
+#: ../build/src/iop/introspection_tonecurve.c:263
+msgid "Lab, linked channels"
+msgstr "Lab, canais ligados"
+
+#: ../build/src/iop/introspection_tonecurve.c:264
+msgid "Lab, independent channels"
+msgstr "Lab, canais independentes"
+
+#: ../build/src/iop/introspection_tonecurve.c:265
+msgid "XYZ, linked channels"
+msgstr "XYZ, canais ligados"
+
+#: ../build/src/iop/introspection_toneequal.c:187
+#: ../build/src/iop/introspection_toneequal.c:314
+msgid "smoothing diameter"
+msgstr "diâmetro de suavização"
+
+#: ../build/src/iop/introspection_toneequal.c:199
+#: ../build/src/iop/introspection_toneequal.c:322
+msgid "edges refinement/feathering"
+msgstr "refinamento/enevoamento de bordas"
+
+#: ../build/src/iop/introspection_toneequal.c:205
+#: ../build/src/iop/introspection_toneequal.c:326
+msgid "mask quantization"
+msgstr "quantização de máscara"
+
+#: ../build/src/iop/introspection_toneequal.c:211
+#: ../build/src/iop/introspection_toneequal.c:330
+msgid "mask contrast compensation"
+msgstr "compressão de contraste de máscara"
+
+#: ../build/src/iop/introspection_toneequal.c:217
+#: ../build/src/iop/introspection_toneequal.c:334
+msgid "mask exposure compensation"
+msgstr "compensação de exposição na máscara"
+
+#: ../build/src/iop/introspection_toneequal.c:229
+#: ../build/src/iop/introspection_toneequal.c:342
+msgid "luminance estimator"
+msgstr "estimador de luminância"
+
+#: ../build/src/iop/introspection_toneequal.c:235
+#: ../build/src/iop/introspection_toneequal.c:346
+msgid "filter diffusion"
+msgstr "difusão de filtro"
+
+#: ../build/src/iop/introspection_toneequal.c:361
+msgid "averaged guided filter"
+msgstr "filtro de média guiado"
+
+#: ../build/src/iop/introspection_toneequal.c:362
+msgid "guided filter"
+msgstr "filtro guiado"
+
+#: ../build/src/iop/introspection_toneequal.c:366
+msgid "RGB average"
+msgstr "média RGB"
+
+#: ../build/src/iop/introspection_toneequal.c:367
+msgid "HSL lightness"
+msgstr "luminosidade HSV"
+
+#: ../build/src/iop/introspection_toneequal.c:368
+msgid "HSV value / RGB max"
+msgstr "HSV valor / RGB max"
+
+#: ../build/src/iop/introspection_toneequal.c:369
+msgid "RGB sum"
+msgstr "RGB soma"
+
+#: ../build/src/iop/introspection_toneequal.c:372
+msgid "RGB geometric mean"
+msgstr "RGB média geométrica"
+
+#: ../build/src/iop/introspection_tonemap.cc:39
+#: ../build/src/iop/introspection_tonemap.cc:88 ../src/iop/rgbcurve.c:188
+#: ../src/iop/tonecurve.c:569
+msgid "contrast compression"
+msgstr "compressão de contraste"
+
+#: ../build/src/iop/introspection_velvia.c:44
+#: ../build/src/iop/introspection_velvia.c:91
+msgid "mid-tones bias"
+msgstr "tendência dos meios-tons"
+
+#: ../build/src/iop/introspection_vibrance.c:33
+#: ../build/src/iop/introspection_vibrance.c:76 ../src/iop/basicadj.c:661
+#: ../src/iop/vibrance.c:65
+msgid "vibrance"
+msgstr "vivacidade"
+
+#: ../build/src/iop/introspection_vignette.c:96
+#: ../build/src/iop/introspection_vignette.c:203
+msgid "fall-off strength"
+msgstr "força de decaimento"
+
+#: ../build/src/iop/introspection_vignette.c:114
+#: ../build/src/iop/introspection_vignette.c:215
+msgid "horizontal center"
+msgstr "centro horizontal"
+
+#: ../build/src/iop/introspection_vignette.c:120
+#: ../build/src/iop/introspection_vignette.c:219
+msgid "vertical center"
+msgstr "centro vertical"
+
+#: ../build/src/iop/introspection_vignette.c:138
+#: ../build/src/iop/introspection_vignette.c:231
+msgid "width/height ratio"
+msgstr "relação largura/altura"
+
+#: ../build/src/iop/introspection_vignette.c:144
+#: ../build/src/iop/introspection_vignette.c:235 ../src/iop/vignette.c:1040
+msgid "shape"
+msgstr "forma"
+
+#: ../build/src/iop/introspection_vignette.c:263
+msgid "8-bit output"
+msgstr "saída de 8-bits"
+
+#: ../build/src/iop/introspection_vignette.c:264
+msgid "16-bit output"
+msgstr "saída de 16-bits"
+
+#: ../build/src/iop/introspection_watermark.c:100
+#: ../build/src/iop/introspection_watermark.c:223
+msgid "x offset"
+msgstr "deslocamento x"
+
+#: ../build/src/iop/introspection_watermark.c:106
+#: ../build/src/iop/introspection_watermark.c:227
+msgid "y offset"
+msgstr "deslocamento y"
+
+#: ../build/src/iop/introspection_watermark.c:124
+#: ../build/src/iop/introspection_watermark.c:239
+msgid "scale on"
+msgstr "escala ativa"
+
+#. close the file before adding exif data
+#: ../build/src/iop/introspection_watermark.c:285
+#: ../src/imageio/format/tiff.c:324 ../src/iop/borders.c:850
+msgid "image"
+msgstr "imagem"
+
+#: ../build/src/iop/introspection_watermark.c:286
+msgid "larger border"
+msgstr "borda maior"
+
+#: ../build/src/iop/introspection_watermark.c:287
+msgid "smaller border"
+msgstr "borda menor"
+
+#: ../build/src/preferences_gen.h:1908 ../src/libs/tools/lighttable.c:79
+#: ../src/views/lighttable.c:87
+msgid "lighttable"
+msgstr "mesa de luz"
+
+#: ../build/src/preferences_gen.h:1911
+msgid "color manage cached thumbnails"
+msgstr "gerenciamento de cor para miniaturas em cache"
+
+#: ../build/src/preferences_gen.h:1921 ../build/src/preferences_gen.h:1942
+#: ../build/src/preferences_gen.h:2018 ../build/src/preferences_gen.h:2039
+#: ../build/src/preferences_gen.h:2119 ../build/src/preferences_gen.h:2144
+#: ../build/src/preferences_gen.h:2173 ../build/src/preferences_gen.h:2202
+#: ../build/src/preferences_gen.h:2223 ../build/src/preferences_gen.h:2244
+#: ../build/src/preferences_gen.h:2265 ../build/src/preferences_gen.h:2286
+#: ../build/src/preferences_gen.h:2307 ../build/src/preferences_gen.h:2328
+#: ../build/src/preferences_gen.h:2415 ../build/src/preferences_gen.h:2465
+#: ../build/src/preferences_gen.h:2510 ../build/src/preferences_gen.h:2539
+#: ../build/src/preferences_gen.h:2599 ../build/src/preferences_gen.h:2648
+#: ../build/src/preferences_gen.h:2668 ../build/src/preferences_gen.h:2689
+#: ../build/src/preferences_gen.h:2710 ../build/src/preferences_gen.h:2761
+#: ../build/src/preferences_gen.h:2811 ../build/src/preferences_gen.h:2866
+#: ../build/src/preferences_gen.h:2917 ../build/src/preferences_gen.h:2968
+#: ../build/src/preferences_gen.h:3026 ../build/src/preferences_gen.h:3069
+#: ../build/src/preferences_gen.h:3124 ../build/src/preferences_gen.h:3150
+#: ../build/src/preferences_gen.h:3200 ../build/src/preferences_gen.h:3221
+#: ../build/src/preferences_gen.h:3242 ../build/src/preferences_gen.h:3285
+#: ../build/src/preferences_gen.h:3306 ../build/src/preferences_gen.h:3327
+#: ../build/src/preferences_gen.h:3348 ../build/src/preferences_gen.h:3369
+#: ../build/src/preferences_gen.h:3390 ../build/src/preferences_gen.h:3411
+#: ../build/src/preferences_gen.h:3431 ../build/src/preferences_gen.h:3451
+#: ../build/src/preferences_gen.h:3503 ../build/src/preferences_gen.h:3524
+#: ../build/src/preferences_gen.h:3545 ../build/src/preferences_gen.h:3657
+#: ../build/src/preferences_gen.h:3715 ../build/src/preferences_gen.h:3823
+#: ../build/src/preferences_gen.h:3882 ../build/src/preferences_gen.h:3932
+#: ../build/src/preferences_gen.h:3953 ../build/src/preferences_gen.h:4004
+#: ../build/src/preferences_gen.h:4025 ../build/src/preferences_gen.h:4075
+#: ../build/src/preferences_gen.h:4104 ../build/src/preferences_gen.h:4125
+#: ../build/src/preferences_gen.h:4156 ../build/src/preferences_gen.h:4177
+#: ../build/src/preferences_gen.h:4198 ../build/src/preferences_gen.h:4243
+#: ../build/src/preferences_gen.h:4272 ../build/src/preferences_gen.h:4328
+#: ../build/src/preferences_gen.h:4353 ../build/src/preferences_gen.h:4404
+#: ../build/src/preferences_gen.h:4425 ../build/src/preferences_gen.h:4449
+#: ../build/src/preferences_gen.h:4473 ../build/src/preferences_gen.h:4497
+#: ../build/src/preferences_gen.h:4521 ../build/src/preferences_gen.h:4584
+#: ../build/src/preferences_gen.h:4609 ../build/src/preferences_gen.h:4630
+#: ../build/src/preferences_gen.h:4655 ../src/lua/preferences.c:619
+#: ../src/lua/preferences.c:634 ../src/lua/preferences.c:646
+#: ../src/lua/preferences.c:658 ../src/lua/preferences.c:674
+#: ../src/lua/preferences.c:738
+#, c-format
+msgid "double click to reset to `%s'"
+msgstr "clique duplo para redefinir para `%s'"
+
+#: ../build/src/preferences_gen.h:1921 ../build/src/preferences_gen.h:2039
+#: ../build/src/preferences_gen.h:2668 ../build/src/preferences_gen.h:2710
+#: ../build/src/preferences_gen.h:2968 ../build/src/preferences_gen.h:3026
+#: ../build/src/preferences_gen.h:3242 ../build/src/preferences_gen.h:3285
+#: ../build/src/preferences_gen.h:3306 ../build/src/preferences_gen.h:3327
+#: ../build/src/preferences_gen.h:3348 ../build/src/preferences_gen.h:3369
+#: ../build/src/preferences_gen.h:3411 ../build/src/preferences_gen.h:3431
+#: ../build/src/preferences_gen.h:3451 ../build/src/preferences_gen.h:3524
+#: ../build/src/preferences_gen.h:3657 ../build/src/preferences_gen.h:3882
+#: ../build/src/preferences_gen.h:4025 ../build/src/preferences_gen.h:4272
+msgctxt "preferences"
+msgid "TRUE"
+msgstr "VERDADEIRO"
+
+#: ../build/src/preferences_gen.h:1924
+msgid ""
+"if enabled, cached thumbnails will be color managed so that lighttable and "
+"filmstrip can show correct colors. otherwise the results may look wrong once "
+"the display profile gets changed."
+msgstr ""
+"se habilitado, as miniaturas em cache terão gerenciamento de cor, para que a "
+"mesa de luz e o rolo de filme mostrem cores corretas. de outra forma, os "
+"resultados poderão parecer errados se o perfil for mudado."
+
+#: ../build/src/preferences_gen.h:1932
+msgid "don't use embedded preview JPEG but half-size raw"
+msgstr ""
+"não usar pré-visualização embutida do jpeg, mas um raw com metade to tamanho"
+
+#: ../build/src/preferences_gen.h:1942 ../build/src/preferences_gen.h:2223
+#: ../build/src/preferences_gen.h:2244 ../build/src/preferences_gen.h:2265
+#: ../build/src/preferences_gen.h:2286 ../build/src/preferences_gen.h:2307
+#: ../build/src/preferences_gen.h:2328 ../build/src/preferences_gen.h:2689
+#: ../build/src/preferences_gen.h:2761 ../build/src/preferences_gen.h:2917
+#: ../build/src/preferences_gen.h:3069 ../build/src/preferences_gen.h:3221
+#: ../build/src/preferences_gen.h:3390 ../build/src/preferences_gen.h:3545
+#: ../build/src/preferences_gen.h:3953 ../build/src/preferences_gen.h:4004
+#: ../build/src/preferences_gen.h:4104 ../build/src/preferences_gen.h:4125
+#: ../build/src/preferences_gen.h:4156 ../build/src/preferences_gen.h:4177
+#: ../build/src/preferences_gen.h:4198 ../build/src/preferences_gen.h:4404
+#: ../build/src/preferences_gen.h:4425 ../build/src/preferences_gen.h:4630
+msgctxt "preferences"
+msgid "FALSE"
+msgstr "FALSO"
+
+#: ../build/src/preferences_gen.h:1945
+msgid ""
+"check this option to not use the embedded JPEG from the raw file but process "
+"the raw data. this is slower but gives you color managed thumbnails."
+msgstr ""
+"marque esta opção para não usar o jpeg embutido do arquivo raw, mas "
+"processar os dados raw. esta opção é mais lenta mas oferece miniaturas com "
+"gerenciamento de cor."
+
+#: ../build/src/preferences_gen.h:1953
+msgid "number of folder levels to show in lists"
+msgstr "número de níveis de pasta para mostrar em listas"
+
+#: ../build/src/preferences_gen.h:1973 ../build/src/preferences_gen.h:2740
+#: ../build/src/preferences_gen.h:2947 ../build/src/preferences_gen.h:3006
+#: ../build/src/preferences_gen.h:3575 ../build/src/preferences_gen.h:3605
+#: ../build/src/preferences_gen.h:3636 ../build/src/preferences_gen.h:3853
+#: ../build/src/preferences_gen.h:4551 ../src/lua/preferences.c:697
+#, c-format
+msgid "double click to reset to `%d'"
+msgstr "clique duplo para redefinir para `%d'"
+
+#: ../build/src/preferences_gen.h:1976
+msgid ""
+"the number of folder levels to show in film roll names, starting from the "
+"right"
+msgstr ""
+"o número de níveis de pastas para mostrar em nomes de rolo de filme, a "
+"partir da direita"
+
+#: ../build/src/preferences_gen.h:1984
+msgid "sort film rolls by"
+msgstr "ordena rolos de filme por"
+
+#: ../build/src/preferences_gen.h:1995 ../build/src/preferences_gen.h:2018
+msgctxt "preferences"
+msgid "id"
+msgstr "id"
+
+#: ../build/src/preferences_gen.h:2000
+msgctxt "preferences"
+msgid "folder"
+msgstr "pasta"
+
+#: ../build/src/preferences_gen.h:2021
+msgid "sets the collections-list order for film rolls"
+msgstr "determina a ordem da lista de coleções para rolos de filme"
+
+#: ../build/src/preferences_gen.h:2029
+msgid "sort collection recent to older"
+msgstr "ordena a coleção, de recente a mais antiga"
+
+#: ../build/src/preferences_gen.h:2042
+msgid ""
+"changes the default collections-list order for folders, times and dates to "
+"run from recent to older"
+msgstr ""
+"muda a ordem default das listas de coleções, tempos e datas para listar do "
+"mais recente ao mais antigo"
+
+#: ../build/src/preferences_gen.h:2050
+msgid "high quality thumb processing from size"
+msgstr "miniaturas de alta qualidade processadas a partir do tamanho"
+
+#: ../build/src/preferences_gen.h:2061 ../build/src/preferences_gen.h:3909
+msgctxt "preferences"
+msgid "always"
+msgstr "sempre"
+
+#: ../build/src/preferences_gen.h:2066
+msgctxt "preferences"
+msgid "small"
+msgstr "pequeno"
+
+#: ../build/src/preferences_gen.h:2071
+msgctxt "preferences"
+msgid "VGA"
+msgstr "VGA"
+
+#: ../build/src/preferences_gen.h:2076 ../build/src/preferences_gen.h:2119
+msgctxt "preferences"
+msgid "720p"
+msgstr "720p"
+
+#: ../build/src/preferences_gen.h:2081
+msgctxt "preferences"
+msgid "1080p"
+msgstr "2080p"
+
+#: ../build/src/preferences_gen.h:2086
+msgctxt "preferences"
+msgid "WQXGA"
+msgstr "WQXGA"
+
+#: ../build/src/preferences_gen.h:2091
+msgctxt "preferences"
+msgid "4K"
+msgstr "4K"
+
+#: ../build/src/preferences_gen.h:2096
+msgctxt "preferences"
+msgid "5K"
+msgstr "5K"
+
+#: ../build/src/preferences_gen.h:2101 ../build/src/preferences_gen.h:3775
+#: ../build/src/preferences_gen.h:3904
+msgctxt "preferences"
+msgid "never"
+msgstr "nunca"
+
+#: ../build/src/preferences_gen.h:2122
+msgid ""
+"if the thumbnail size is greater than this value, it will be processed using "
+"the full quality rendering path (better but slower)."
+msgstr ""
+"se o tamanho da miniatura é superior a esse valor, ela será processada "
+"utilizando a qualidade total de renderização (melhor porém mais lento)."
+
+#: ../build/src/preferences_gen.h:2130
+msgid "delimiters for sizes categories"
+msgstr "delimitadores para categorias de tamanho"
+
+#: ../build/src/preferences_gen.h:2147
+msgid ""
+"sizes categories are used to be able to set different overlays and css "
+"values depending of the size of the thumbnail."
+msgstr ""
+"catgorias de tamanho são usadas para poder determinar sobreposições e "
+"valores de CSS diferentes dependendo do tamanho da miniatura."
+
+#: ../build/src/preferences_gen.h:2155
+msgid "pattern for the thumbnail extended overlay text"
+msgstr "padrão para as sobreposições das miniaturas"
+
+#: ../build/src/preferences_gen.h:2176 ../build/src/preferences_gen.h:2205
+#: ../build/src/preferences_gen.h:2542
+msgid "see manual to know all the tags you can use."
+msgstr "veja o manual para saber todos as etiquetas que pode usar."
+
+#: ../build/src/preferences_gen.h:2184
+msgid "pattern for the thumbnail tooltip (empty to disable)"
+msgstr "padrão para o tooltip da miniatuda (vazio desabilita)"
+
+#: ../build/src/preferences_gen.h:2213
+msgid "use single-click in the collect panel"
+msgstr "Use um único clique no painel de seleção"
+
+#: ../build/src/preferences_gen.h:2226
+msgid ""
+"check this option to use single-click to select items in the collect panel. "
+"this will allow you to do range selections for date-time and numeric values."
+msgstr ""
+"selecione esta opção para usar um único clique para escolher itens no painel "
+"de seleção. isto permite fazer seleções de faixas por data e valores "
+"numéricos"
+
+#: ../build/src/preferences_gen.h:2234
+msgid "overlay txt sidecar over zoomed images"
+msgstr "sobreposição das informações do arquivo associado nas imagem ampliadas"
+
+#: ../build/src/preferences_gen.h:2247
+msgid ""
+"when there is a txt file next to an image it can be shown as an overlay over "
+"zoomed images on the lighttable. the txt file either has to be there at "
+"import time or the crawler has to be enabled"
+msgstr ""
+"quando há um arquivo txt junto com uma imagem ele pode ser mostrado como "
+"overlay sobre o zoom nas imagens na mesa de luz. o arquivo txt deve ou estar "
+"ali na hora da importação, ou o crawler deve estar habilitado"
+
+#: ../build/src/preferences_gen.h:2255
+msgid "expand a single lighttable module at a time"
+msgstr "expandir um módulo de mesa de luz de cada vez"
+
+#: ../build/src/preferences_gen.h:2268
+msgid "this option toggles the behavior of shift clicking in lighttable mode"
+msgstr "esta opção alterna o comportamento do shift+clique no modo mesa de luz"
+
+#: ../build/src/preferences_gen.h:2276
+msgid "scroll to lighttable modules when expanded/collapsed"
+msgstr "deslizar para módulos da mesa de luz quando expandido/colapsado"
+
+#: ../build/src/preferences_gen.h:2289 ../build/src/preferences_gen.h:2713
+msgid ""
+"when this option is enabled then darktable will try to scroll the module to "
+"the top of the visible list"
+msgstr ""
+"quando esta opção está habilitada o darktable tentará rolar o módulo até o "
+"topo da lista visível"
+
+#: ../build/src/preferences_gen.h:2297
+msgid "rating an image one star twice will not zero out the rating"
+msgstr "dar uma estrela duas vezes a uma imagem não resultará em zero estrelas"
+
+#: ../build/src/preferences_gen.h:2310
+msgid ""
+"do not have the rating of one star behave as documented in the manual--an "
+"image rated one star twice will result in a zero star rating."
+msgstr ""
+"não operar como documentado no manual -- dar uma estrela duas vezes a uma "
+"imagem resultará em zero estrelas."
+
+#: ../build/src/preferences_gen.h:2318 ../build/src/preferences_gen.h:2751
+msgid "show scrollbars for central view"
+msgstr "mostra barras de rolagem para visualização central"
+
+#: ../build/src/preferences_gen.h:2331 ../build/src/preferences_gen.h:2764
+msgid "defines whether scrollbars should be displayed"
+msgstr "define onde as barras de rolagem devem ser mostradas"
+
+#: ../build/src/preferences_gen.h:2358 ../src/views/darkroom.c:110
+msgid "darkroom"
+msgstr "sala escura"
+
+#: ../build/src/preferences_gen.h:2361
+msgid "pen pressure control for brush masks"
+msgstr "controle da pressão da caneta para máscaras de pincel"
+
+#: ../build/src/preferences_gen.h:2372 ../build/src/preferences_gen.h:2415
+msgctxt "preferences"
+msgid "off"
+msgstr "desligado"
+
+#: ../build/src/preferences_gen.h:2377
+msgctxt "preferences"
+msgid "hardness (relative)"
+msgstr "dureza (relativa)"
+
+#: ../build/src/preferences_gen.h:2382
+msgctxt "preferences"
+msgid "hardness (absolute)"
+msgstr "dureza (absoluta)"
+
+#: ../build/src/preferences_gen.h:2387
+msgctxt "preferences"
+msgid "opacity (relative)"
+msgstr "opacidade (relativa)"
+
+#: ../build/src/preferences_gen.h:2392
+msgctxt "preferences"
+msgid "opacity (absolute)"
+msgstr "opacidade (absoluta)"
+
+#: ../build/src/preferences_gen.h:2397
+msgctxt "preferences"
+msgid "brush size (relative)"
+msgstr "tamanho do pincel (relativo)"
+
+#: ../build/src/preferences_gen.h:2418
+msgid ""
+"off - pressure reading ignored, hardness/opacity/brush size - pressure "
+"reading controls specified attribute, absolute/relative - pressure reading "
+"is taken directly as attribute value or multiplied with pre-defined setting."
+msgstr ""
+"desligado - leitura de pressão ignorada, dureza/opacidade/tamanho do pincel "
+"- atributos especificados nos controles de leitura de pressão, absoluto/"
+"relativo - leitura de pressão é definida diretamente como valor atribuído ou "
+"multiplicado com valor predefinido."
+
+#: ../build/src/preferences_gen.h:2426
+msgid "smoothing of brush strokes"
+msgstr "suavização dos traços do pincel"
+
+#: ../build/src/preferences_gen.h:2437
+msgctxt "preferences"
+msgid "low"
+msgstr "baixo"
+
+#: ../build/src/preferences_gen.h:2442 ../build/src/preferences_gen.h:2465
+msgctxt "preferences"
+msgid "medium"
+msgstr "médio"
+
+#: ../build/src/preferences_gen.h:2447
+msgctxt "preferences"
+msgid "high"
+msgstr "alto"
+
+#: ../build/src/preferences_gen.h:2468
+msgid ""
+"sets level for smoothing of brush strokes. stronger smoothing leads to less "
+"nodes and easier editing but with lower control of accuracy."
+msgstr ""
+"define o nível de suavização dos traços do pincel. quanto maior a suavização "
+"menor a quantidade de nós e mais fácil a edição, no entanto há menor "
+"controle de precisão."
+
+#: ../build/src/preferences_gen.h:2476
+msgid "display of individual color channels"
+msgstr "mostrar canais individuais de cor"
+
+#: ../build/src/preferences_gen.h:2487 ../build/src/preferences_gen.h:2510
+msgctxt "preferences"
+msgid "false color"
+msgstr "falsa cor"
+
+#: ../build/src/preferences_gen.h:2492
+msgctxt "preferences"
+msgid "grey scale"
+msgstr "escala de cinza"
+
+#: ../build/src/preferences_gen.h:2513
+msgid ""
+"defines how color channels are displayed when activated in the parametric "
+"masks feature."
+msgstr ""
+"define como os canais de cor são mostrados ao ativar o módulo de máscaras "
+"paramétricas."
+
+#: ../build/src/preferences_gen.h:2521
+msgid "pattern for the image infos line"
+msgstr "padrão para a linha de infos da imagem"
+
+#: ../build/src/preferences_gen.h:2550
+msgid "position of the image infos line"
+msgstr "posição da linha das informações da imagem"
+
+#: ../build/src/preferences_gen.h:2561
+msgctxt "preferences"
+msgid "top left"
+msgstr "acima, à esquerda"
+
+#: ../build/src/preferences_gen.h:2566
+msgctxt "preferences"
+msgid "top right"
+msgstr "acima, à direita"
+
+#: ../build/src/preferences_gen.h:2571
+msgctxt "preferences"
+msgid "top center"
+msgstr "acima, no centro"
+
+#: ../build/src/preferences_gen.h:2576 ../build/src/preferences_gen.h:2599
+msgctxt "preferences"
+msgid "bottom"
+msgstr "inferior"
+
+#: ../build/src/preferences_gen.h:2581
+msgctxt "preferences"
+msgid "hidden"
+msgstr "oculto"
+
+#: ../build/src/preferences_gen.h:2609
+msgid "show search module text entry"
+msgstr "mostrar entrada de dados do módulo de busca"
+
+#: ../build/src/preferences_gen.h:2620
+msgctxt "preferences"
+msgid "show search text"
+msgstr "mostrar texto de busca"
+
+#: ../build/src/preferences_gen.h:2625
+msgctxt "preferences"
+msgid "show groups"
+msgstr "mostrar grupos"
+
+#: ../build/src/preferences_gen.h:2630 ../build/src/preferences_gen.h:2648
+msgctxt "preferences"
+msgid "show both"
+msgstr "mostrar ambos"
+
+#: ../build/src/preferences_gen.h:2658
+msgid "expand a single darkroom module at a time"
+msgstr "expandir um único módulo da sala escura de cada vez"
+
+#: ../build/src/preferences_gen.h:2671
+msgid "this option toggles the behavior of shift clicking in darkroom mode"
+msgstr "esta opção alterna o comportamento do shift+clique no modo sala escura"
+
+#: ../build/src/preferences_gen.h:2679
+msgid "expand the module when it is activated, and collapse it when disabled"
+msgstr ""
+"expandir o módulo quando estiver ativado, e colapsá-lo quando estiver "
+"desabilitado"
+
+#: ../build/src/preferences_gen.h:2692
+msgid ""
+"this option allows to expand or collapse automatically the module when it is "
+"enabled or disabled."
+msgstr ""
+"esta opção permite expandir o módulo quando estiver ativado, e colapsá-lo "
+"quando estiver desabilitado."
+
+#: ../build/src/preferences_gen.h:2700
+msgid "scroll to darkroom modules when expanded/collapsed"
+msgstr "deslizar para módulos da sala escura quando expandido/colapsado"
+
+#: ../build/src/preferences_gen.h:2721
+msgid "border around image in darkroom mode"
+msgstr "borda ao redor da imagem no modo sala escura"
+
+#: ../build/src/preferences_gen.h:2743
+msgid ""
+"process the image in darkroom mode with a small border. set to 0 if you "
+"don't want any border."
+msgstr ""
+"processar a imagem no modo sala escura com uma borda pequena. defina 0 se "
+"você não quer nenhuma borda."
+
+#: ../build/src/preferences_gen.h:2772
+msgid "demosaicing for zoomed out darkroom mode"
+msgstr "interpolação cromática para zoom na sala escura"
+
+#: ../build/src/preferences_gen.h:2783
+msgctxt "preferences"
+msgid "always bilinear (fast)"
+msgstr "sempre bilinear (rápido)"
+
+#: ../build/src/preferences_gen.h:2788 ../build/src/preferences_gen.h:2811
+msgctxt "preferences"
+msgid "at most PPG (reasonable)"
+msgstr "no máximo PPG (razoável)"
+
+#: ../build/src/preferences_gen.h:2793
+msgctxt "preferences"
+msgid "full (possibly slow)"
+msgstr "completo (possivelmente lento)"
+
+#: ../build/src/preferences_gen.h:2814
+msgid ""
+"interpolation when not viewing 1:1 in darkroom mode: bilinear is fastest, "
+"but not as sharp. middle ground is using PPG + interpolation modes specified "
+"below, full will use exactly the settings for full-size export. X-Trans "
+"sensors use VNG rather than PPG as middle ground."
+msgstr ""
+"interpolação quando não visualizando 1:1 no modo sala escura: bilinear é o "
+"mais rápido, mas não tão nítido. a via intermediária é usando PPG + modos de "
+"interpolação especificados abaixo, completo usará exatamente as "
+"configurações para exportação de tamanho grande. Sensores X-Trans usam VNG "
+"em vez de PPG como intermediário."
+
+#: ../build/src/preferences_gen.h:2822
+msgid "reduce resolution of preview image"
+msgstr "reduzir resolução da imagem de pré-visualização"
+
+#: ../build/src/preferences_gen.h:2833 ../build/src/preferences_gen.h:2866
+msgctxt "preferences"
+msgid "original"
+msgstr "original"
+
+#: ../build/src/preferences_gen.h:2838
+msgctxt "preferences"
+msgid "to 1/2"
+msgstr "para 1/2"
+
+#: ../build/src/preferences_gen.h:2843
+msgctxt "preferences"
+msgid "to 1/3"
+msgstr "para 1/3"
+
+#: ../build/src/preferences_gen.h:2848
+msgctxt "preferences"
+msgid "to 1/4"
+msgstr "para 1/4"
+
+#: ../build/src/preferences_gen.h:2869
+msgid "decrease to speed up preview rendering, may hinder accurate masking"
+msgstr ""
+"diminua para acelerar a renderização de pré-visualização; pode pode "
+"prejudicar a precisão do mascaramento"
+
+#: ../build/src/preferences_gen.h:2896
+msgid "other views"
+msgstr "outras vistas"
+
+#: ../build/src/preferences_gen.h:2899
+msgid "map / geolocalisation"
+msgstr "mapa / geolocalização"
+
+#: ../build/src/preferences_gen.h:2907
+msgid "only draw images on map that are currently collected and filtered"
+msgstr ""
+"apenas imagens desenhadas no mapa que estão atualmente em coleções e com "
+"filtros"
+
+#: ../build/src/preferences_gen.h:2920
+msgid ""
+"use the current filter settings to select the geotagged images drawn on the "
+"map, i.e. limit the images drawn to the current filmstrip. this limits the "
+"number of images drawn and thus reduces the time needed to draw the images."
+msgstr ""
+"utilize a atual definição de filtros ao selecionar imagens georreferenciadas "
+"no mapa, limita também as imagens desenhadas na atual tira de filmes. este "
+"limite do número de imagens reduz o tempo necessário para desenhar as "
+"imagens."
+
+#: ../build/src/preferences_gen.h:2928
+msgid "maximum number of images drawn on map"
+msgstr "número máximo de imagens desenhadas no mapa"
+
+#: ../build/src/preferences_gen.h:2950
+msgid ""
+"the maximum number of geotagged images drawn on the map. increasing this "
+"number can slow drawing of the map down."
+msgstr ""
+"o número máximo de imagens geo-etiquetadas no mapa. aumentar este número "
+"pode tornar lento o desenho do mapa."
+
+#: ../build/src/preferences_gen.h:2958
+msgid "pretty print the image location"
+msgstr "impressão clara da localização da imagem"
+
+#: ../build/src/preferences_gen.h:2971
+msgid ""
+"show a more readable representation of the location in the image information "
+"module"
+msgstr ""
+"mostra uma representação mais legível da localização no módulo de informação "
+"da imagem"
+
+#: ../build/src/preferences_gen.h:2979 ../src/views/slideshow.c:344
+msgid "slideshow"
+msgstr "apresentação"
+
+#: ../build/src/preferences_gen.h:2987
+msgid "waiting time between each picture in slideshow"
+msgstr "tempo entre fotos no slideshow"
+
+#: ../build/src/preferences_gen.h:3016
+msgid "do high quality processing for slideshow"
+msgstr "fazer processamento de alta qualidade durante apresentação"
+
+#: ../build/src/preferences_gen.h:3029
+msgid "same option as for export, but applies to slideshow."
+msgstr "mesma opção da exportação aplicada para apresentação."
+
+#: ../build/src/preferences_gen.h:3056
+msgid "processing"
+msgstr "processamento"
+
+#: ../build/src/preferences_gen.h:3059
+msgid "always use LittleCMS 2 to apply output color profile"
+msgstr "usar sempre LittleCMS 2 ao aplicar perfil de cor de saída"
+
+#: ../build/src/preferences_gen.h:3072
+msgid "this is slower than the default."
+msgstr "isto é mais lento que o padrão."
+
+#: ../build/src/preferences_gen.h:3080
+msgid "pixel interpolator"
+msgstr "interpolador de pixel"
+
+#: ../build/src/preferences_gen.h:3091
+msgctxt "preferences"
+msgid "bilinear"
+msgstr "bilinear"
+
+#: ../build/src/preferences_gen.h:3096
+msgctxt "preferences"
+msgid "bicubic"
+msgstr "bicúbica"
+
+#: ../build/src/preferences_gen.h:3101
+msgctxt "preferences"
+msgid "lanczos2"
+msgstr "lanczos2"
+
+#: ../build/src/preferences_gen.h:3106 ../build/src/preferences_gen.h:3124
+msgctxt "preferences"
+msgid "lanczos3"
+msgstr "lanczos3"
+
+#: ../build/src/preferences_gen.h:3127
+msgid ""
+"pixel interpolator used in rotation and lens correction (bilinear, bicubic, "
+"lanczos2, lanczos3)."
+msgstr ""
+"interpolador de pixel usado em rotação e correção de lente (bilinear, "
+"bicubic, lanczos2, lanczos3)."
+
+#: ../build/src/preferences_gen.h:3135
+msgid "3D lut root folder"
+msgstr "pasta raiz do LUT 3D"
+
+#: ../build/src/preferences_gen.h:3140 ../src/control/jobs/control_jobs.c:1555
+#: ../src/control/jobs/control_jobs.c:1618 ../src/gui/preferences.c:1948
+#: ../src/imageio/storage/disk.c:121 ../src/imageio/storage/disk.c:195
+#: ../src/imageio/storage/gallery.c:108 ../src/imageio/storage/gallery.c:180
+#: ../src/imageio/storage/latex.c:107 ../src/imageio/storage/latex.c:179
+#: ../src/libs/styles.c:367 ../src/lua/preferences.c:631
+msgid "select directory"
+msgstr "selecione diretório"
+
+#: ../build/src/preferences_gen.h:3153
+msgid ""
+"this folder (and sub-folders) contains Lut files used by lut3d modules. need "
+"to restart darktable."
+msgstr ""
+"esta pasta (e subpastas) contém arquivos LUT usados pelos módulos lut3d. "
+"precisa reiniciar o darktable."
+
+#: ../build/src/preferences_gen.h:3161
+msgid "auto-apply pixel workflow defaults"
+msgstr "auto-aplicar defaults do fluxo de trabalho da pixelpipe"
+
+#: ../build/src/preferences_gen.h:3172
+msgctxt "preferences"
+msgid "scene-referred"
+msgstr "relativo à cena"
+
+#: ../build/src/preferences_gen.h:3177 ../build/src/preferences_gen.h:3200
+msgctxt "preferences"
+msgid "display-referred"
+msgstr "relativo à exibição"
+
+#: ../build/src/preferences_gen.h:3182 ../build/src/preferences_gen.h:4298
+msgctxt "preferences"
+msgid "none"
+msgstr "nenhuma"
+
+#: ../build/src/preferences_gen.h:3203
+msgid ""
+"scene-referred workflow is based on linear modules and will auto-apply "
+"filmic and exposure,\n"
+"display-referred workflow is based on Lab modules and will auto-apply base "
+"curve and the legacy module pipe order.\n"
+"(needs a restart)"
+msgstr ""
+"fluxo de trabalho relativo à cena é baseado em módulos lineares e auto-"
+"aplicará fílmico e exposição,\n"
+"fluxo de trabalho relativo à exibição é baseado em módulos Lab e auto-"
+"aplicará a curva base e a ordem de módulos antiga (precisa reiniciar)"
+
+#: ../build/src/preferences_gen.h:3211
+msgid "auto-apply per camera basecurve presets"
+msgstr "auto-aplicar pré-configurações de curva base por câmera"
+
+#: ../build/src/preferences_gen.h:3224
+msgid ""
+"use the per-camera basecurve by default instead of the generic manufacturer "
+"one if there is one available (needs a restart).\n"
+"this option is taken into account when the \"auto-apply pixel workflow "
+"defaults\" is set to \"display-referred\".\n"
+"to prevent auto-apply basecurve presets \"auto-apply pixel workflow defaults"
+"\" should be set to \"none\""
+msgstr ""
+"usar a curva base específica por-câmera como default ao invés do genérico do fabricante, se houver uma curva específica disponível (precisa reiniciar).\n"
+"esta opção é levada em consideração quando o default \"auto-aplicar defaults do fluxo de trabalho da pixelpipe\" é definido como \"relativo à exibição\".\n"
+"para previnir a aplicação automática de definições de curva base, \"auto-aplicar defaults do fluxo de trabalho da pixelpipe\" deve ser configurado como \"nenhuma\""
+
+#: ../build/src/preferences_gen.h:3232
+msgid "auto-apply sharpen"
+msgstr "auto-aplicar nitidez"
+
+#: ../build/src/preferences_gen.h:3245
+msgid ""
+"this added sharpen is not recommended on cameras without a low-pass filter. "
+"you should disable this option if you use one of those more recent cameras "
+"or sharpen your images with other means. (need a restart)"
+msgstr ""
+"esta nitidez adicionada não é recomendada em câmeras sem um filtro passa-"
+"baixas. você deve desabilitar esta opção se usar uma dessas cameras mais "
+"recentes ou melhorar a nitidez das suas imagens de outras maneiras. (precisa "
+"reiniciar)"
+
+#: ../build/src/preferences_gen.h:3272
+msgid "security"
+msgstr "segurança"
+
+#: ../build/src/preferences_gen.h:3275
+msgid "ask before removing images from database"
+msgstr "perguntar antes de remover imagens do bando de dados"
+
+#: ../build/src/preferences_gen.h:3288
+msgid "always ask the user before any image is removed from DB."
+msgstr "sempre perguntar antes de remover qualquer imagem do banco de dados."
+
+#: ../build/src/preferences_gen.h:3296
+msgid "ask before erasing images from disk / discarding history stack"
+msgstr "perguntar antes de apagar imagens do disco / descartar histórico"
+
+#: ../build/src/preferences_gen.h:3309
+msgid ""
+"always ask the user before any image file is deleted / history stack is "
+"discarded."
+msgstr ""
+"sempre perguntar antes de excluir qualquer arquivo de imagem ou descartar "
+"histórico."
+
+#: ../build/src/preferences_gen.h:3317
+msgid "send files to trash when erasing images"
+msgstr "enviar arquivos para a lixeira quando apagar arquivos de imagem"
+
+#: ../build/src/preferences_gen.h:3330
+msgid ""
+"send files to trash instead of permanently deleting files on system that "
+"supports it"
+msgstr ""
+"enviar arquivos para a lixeira em vez de apagar permanentemente(em sistemas "
+"que permitem isso)"
+
+#: ../build/src/preferences_gen.h:3338
+msgid "ask before moving images from film roll folder"
+msgstr "perguntar antes de mover imagens da pasta rolo de filme"
+
+#: ../build/src/preferences_gen.h:3351
+msgid "always ask the user before any image file is moved."
+msgstr "sempre perguntar ao usuário antes de mover qualquer arquivo de imagem."
+
+#: ../build/src/preferences_gen.h:3359
+msgid "ask before copying images to new film roll folder"
+msgstr "perguntar antes de copiar imagens para uma nova pasta de rolo de filme"
+
+#: ../build/src/preferences_gen.h:3372
+msgid "always ask the user before any image file is copied."
+msgstr ""
+"sempre perguntar ao usuário antes de copiar qualquer arquivo de imagem."
+
+#: ../build/src/preferences_gen.h:3380
+msgid "ask before removing empty folders"
+msgstr "perguntar antes de remover pastas vazias"
+
+#: ../build/src/preferences_gen.h:3393
+msgid ""
+"always ask the user before removing any empty folder. this can happen after "
+"moving or deleting images."
+msgstr ""
+"sempre perguntar ao usuário antes de excluir qualquer pasta vazia. isto pode "
+"acontecer depois de mover ou remover imagens."
+
+#: ../build/src/preferences_gen.h:3401
+msgid "ask before deleting a tag"
+msgstr "perguntar antes de excluir uma etiqueta"
+
+#: ../build/src/preferences_gen.h:3421
+msgid "ask before deleting a style"
+msgstr "perguntar antes de excluir um perfil"
+
+#: ../build/src/preferences_gen.h:3441
+msgid "ask before deleting a preset"
+msgstr "perguntar antes de excluir uma predefinição"
+
+#: ../build/src/preferences_gen.h:3454
+msgid "will ask for confirmation before deleting or overwritting a preset"
+msgstr "pedir confirmação antes de remover ou sobrescrever uma predefinição"
+
+#: ../build/src/preferences_gen.h:3481
+msgid "cpu / gpu / memory"
+msgstr "cpu / gpu / memória"
+
+#: ../build/src/preferences_gen.h:3484
+msgid "memory in megabytes to use for thumbnail cache"
+msgstr "memória em megabytes usada para o cache de miniaturas"
+
+#: ../build/src/preferences_gen.h:3506
+msgid ""
+"this controls how much memory is going to be used for thumbnails and other "
+"buffers (needs a restart)."
+msgstr ""
+"esta opção controla quanta memória será usada para miniaturas de fotos e "
+"outros buffers (precisa reiniciar)"
+
+#: ../build/src/preferences_gen.h:3514
+msgid "enable disk backend for thumbnail cache"
+msgstr "habilita backend de disco para cache de miniaturas"
+
+#: ../build/src/preferences_gen.h:3527
+msgid ""
+"if enabled, write thumbnails to disk (.cache/darktable/) when evicted from "
+"the memory cache. note that this can take a lot of memory (several gigabytes "
+"for 20k images) and will never delete cached thumbnails again. it's safe "
+"though to delete these manually, if you want. light table performance will "
+"be increased greatly when browsing a lot. to generate all thumbnails of your "
+"entire collection offline, run 'darktable-generate-cache'."
+msgstr ""
+"se habilitado, escreve miniaturas no disco (.cache/darktable/) quando "
+"despejados do cache em memória. note que isto pode usar muita memória "
+"(vários gigabytes para 20k imagens) e nunca apagará miniaturas cacheadas "
+"novamente. é seguro, no entanto, apagá-las manualmente, se voce quiser. o "
+"desempenho da mesa de luz aumentará muito durante a navegação pelas fotos. "
+"para gerar miniaturas de toda a coleção, offline, execute 'darktable-"
+"generate-cache'."
+
+#: ../build/src/preferences_gen.h:3535
+msgid "enable disk backend for full preview cache"
+msgstr "habilita backend de disco para cache de pré-visualização"
+
+#: ../build/src/preferences_gen.h:3548
+msgid ""
+"if enabled, write full preview to disk (.cache/darktable/) when evicted from "
+"the memory cache. note that this can take a lot of memory (several gigabytes "
+"for 20k images) and will never delete cached thumbnails again. it's safe "
+"though to delete these manually, if you want. light table performance will "
+"be increased greatly when zooming image in full preview mode."
+msgstr ""
+"se habilitado, escreve miniaturas no disco (.cache/darktable/) quando "
+"despejados do cache em memória. note que isto pode usar muita memória "
+"(vários gigabytes para 20k imagens) e nunca apagará miniaturas cacheadas "
+"novamente. é seguro, no entanto, apagá-las manualmente, se você quiser. o "
+"desempenho da mesa de luz aumentará muito durante a navegação pelas fotos."
+
+#: ../build/src/preferences_gen.h:3556
+msgid "number of background threads"
+msgstr "número de threads em background"
+
+#: ../build/src/preferences_gen.h:3578
+msgid ""
+"this controls for example how many threads are used to create thumbnails "
+"during import. the cache will grow to a maximum of twice this number of full "
+"resolution image buffers (needs a restart)."
+msgstr ""
+"isto controla, por exemplo, quantas threads são usadas para criar miniaturas "
+"durante importação. o cache expande a um máximo de duas vezes o buffer de "
+"imagem com plena resolução (requer reinicialização)"
+
+#: ../build/src/preferences_gen.h:3586
+msgid "host memory limit (in MB) for tiling"
+msgstr "limite de memória (em MB) para processamento de ladrilhos"
+
+#: ../build/src/preferences_gen.h:3608
+msgid ""
+"this variable controls the maximum amount of memory (in MB) a module may use "
+"during image processing. lower values will force memory hungry modules to "
+"process image with increasing number of tiles. setting this to 0 will omit "
+"any limit. values below 500 will be treated as 500 (needs a restart)."
+msgstr ""
+"esta variável controla a quantidade máxima de memória (em MB) que um módulo "
+"pode usar durante o processamento de imagem. valores baixos forçam módulos "
+"famintos por memória a processar um número maior de ladrilhos. definir 0 irá "
+"omitir qualquer limite. valores abaixo de 500 são tratados como 500. (requer "
+"reinicialização.)"
+
+#: ../build/src/preferences_gen.h:3616
+msgid "minimum amount of memory (in MB) for a single buffer in tiling"
+msgstr ""
+"quantidade mínima de memória (em MB) para processamento de ladrilhos em "
+"buffer único"
+
+#: ../build/src/preferences_gen.h:3639
+msgid ""
+"if set to a positive, non-zero value this variable defines the minimum "
+"amount of memory (in MB) that tiling should take for a single image buffer. "
+"has precedence over heuristics based on host_memory_limit (needs a restart)."
+msgstr ""
+"se definido como positivo, o valor dessa variável define a quantidade mínima "
+"de memória (em MB) tomado pelo processamento de ladrilhos em um único buffer "
+"de imagem. tem precedência sobre heurísticas baseadas em host_memory_limit. "
+"(requer reinicialização)."
+
+#: ../build/src/preferences_gen.h:3647
+msgid "activate OpenCL support"
+msgstr "ativar suporte ao OpenCl"
+
+#: ../build/src/preferences_gen.h:3660
+msgid ""
+"if found, use OpenCL runtime on your system for improved processing speed. "
+"can be switched on and off at any time."
+msgstr ""
+"utilizar OpenCL(se compatível) no sistema para aumentar desempenho na "
+"velocidade de processamento. pode ser ligado e desligado a qualquer momento."
+
+#: ../build/src/preferences_gen.h:3661 ../build/src/preferences_gen.h:3719
+msgid "not available"
+msgstr "não disponível"
+
+#: ../build/src/preferences_gen.h:3664 ../build/src/preferences_gen.h:3668
+#: ../build/src/preferences_gen.h:3722 ../build/src/preferences_gen.h:3726
+msgid "not available on this system"
+msgstr "não disponível neste sistema"
+
+#: ../build/src/preferences_gen.h:3676
+msgid "OpenCL scheduling profile"
+msgstr "perfil de scheduling OpenCL"
+
+#. Adding the restore defaults button
+#: ../build/src/preferences_gen.h:3687 ../build/src/preferences_gen.h:3715
+#: ../src/gui/preferences.c:913
+msgctxt "preferences"
+msgid "default"
+msgstr "padrão"
+
+#: ../build/src/preferences_gen.h:3692
+msgctxt "preferences"
+msgid "multiple GPUs"
+msgstr "múltiplas GPUs"
+
+#: ../build/src/preferences_gen.h:3697
+msgctxt "preferences"
+msgid "very fast GPU"
+msgstr "GPU muito rápida"
+
+#: ../build/src/preferences_gen.h:3718
+msgid ""
+"defines how preview and full pixelpipe tasks are scheduled on OpenCL enabled "
+"systems. default - GPU processes full and CPU processes preview pipe "
+"(adaptable by config parameters); multiple GPUs - process both pixelpipes in "
+"parallel on two different GPUs; very fast GPU - process both pixelpipes "
+"sequentially on the GPU."
+msgstr ""
+"define como as tarefas das duas pixelpipe -- full e de preview -- são "
+"escalonadas em sistemas com OpenCL habilitado. default - a GPU processa full "
+"e a CPU processa o preview pipe (adaptável por parâmetros de configuração; "
+"múltiplas GPUs - processa as duas pixelpipes em paralelo nas duas diferentes "
+"GPUs; GPU muito rápida -- processa as duas pixelpipes sequencialmente na "
+"GPU."
+
+#: ../build/src/preferences_gen.h:3753
+msgid "storage"
+msgstr "armazenamento"
+
+#: ../build/src/preferences_gen.h:3756
+msgid "database"
+msgstr "base de dados"
+
+#: ../build/src/preferences_gen.h:3764
+msgid "check for database maintenance"
+msgstr "verifique se a base de dados precisa de manutenção"
+
+#: ../build/src/preferences_gen.h:3780
+msgctxt "preferences"
+msgid "on startup"
+msgstr "ao iniciar"
+
+#: ../build/src/preferences_gen.h:3785 ../build/src/preferences_gen.h:3823
+msgctxt "preferences"
+msgid "on close"
+msgstr "ao fechar"
+
+#: ../build/src/preferences_gen.h:3790
+msgctxt "preferences"
+msgid "on both"
+msgstr "em ambos"
+
+#: ../build/src/preferences_gen.h:3795
+msgctxt "preferences"
+msgid "on startup (don't ask)"
+msgstr "ao iniciar (não perguntar)"
+
+#: ../build/src/preferences_gen.h:3800
+msgctxt "preferences"
+msgid "on close (don't ask)"
+msgstr "ao fechar (não perguntar)"
+
+#: ../build/src/preferences_gen.h:3805
+msgctxt "preferences"
+msgid "on both (don't ask)"
+msgstr "ambos (não perguntar)"
+
+#: ../build/src/preferences_gen.h:3826
+msgid ""
+"this option indicates when to check database fragmentation and perform "
+"maintenance"
+msgstr "esta opção indica quando checar a base de dados e realizar manutenção"
+
+#: ../build/src/preferences_gen.h:3834
+msgid "database fragmentation ratio threshold"
+msgstr "limiar de fragmentação da base de dados"
+
+#: ../build/src/preferences_gen.h:3856
+msgid ""
+"fragmentation ratio above which to ask or carry out automatically database "
+"maintenance"
+msgstr ""
+"índice de fragmentação acim ado qual perguntar ou realizar automaticamente "
+"manutenção na base de dados"
+
+#: ../build/src/preferences_gen.h:3864
+msgid "xmp"
+msgstr "xmp"
+
+#: ../build/src/preferences_gen.h:3872
+msgid "write sidecar file for each image"
+msgstr "escreve arquivo associado para cada imagem"
+
+#: ../build/src/preferences_gen.h:3885
+msgid ""
+"these redundant files can later be re-imported into a different database, "
+"preserving your changes to the image."
+msgstr ""
+"estes arquivos redundantes podem ser importados novamente em outro banco de "
+"dados, preservando suas modificações na imagem."
+
+#: ../build/src/preferences_gen.h:3893
+msgid "store xmp tags in compressed format"
+msgstr "gravar etiquetas xmp em formato comprimido"
+
+#: ../build/src/preferences_gen.h:3914 ../build/src/preferences_gen.h:3932
+msgctxt "preferences"
+msgid "only large entries"
+msgstr "apenas entradas grandes"
+
+#: ../build/src/preferences_gen.h:3935
+msgid ""
+"entries in xmp tags can get rather large and may exceed the available space "
+"to store the history stack in output files. this option allows xmp tags to "
+"be compressed and save space."
+msgstr ""
+"entradas nas etiquetas xmp podem se tornar bastante grandes e exceder o "
+"espaço disponível para armazenar o histórico em arquivos de saída. esta "
+"opção permite que etiquetas xmp sejam comprimidos e economizem espaço."
+
+#: ../build/src/preferences_gen.h:3943
+msgid "look for updated xmp files on startup"
+msgstr "procurar por arquivos xmp atualizados ao iniciar"
+
+#: ../build/src/preferences_gen.h:3956
+msgid ""
+"check file modification times of all xmp files on startup to check if any "
+"got updated in the meantime"
+msgstr ""
+"verificar tempo de modificação de todos os arquivos xmp ao iniciar para ver "
+"se algum foi modificado"
+
+#: ../build/src/preferences_gen.h:3983
+msgid "miscellaneous"
+msgstr "miscelânea"
+
+#: ../build/src/preferences_gen.h:3986
+msgid "interface"
+msgstr "interface"
+
+#: ../build/src/preferences_gen.h:3994
+msgid "mouse wheel scrolls modules side panel by default"
+msgstr "botão de rolagem do mouse faz scroll no painel de módulos por default"
+
+#: ../build/src/preferences_gen.h:4007
+msgid ""
+"when enabled, use mouse wheel to scroll modules side panel. use ctrl+alt to "
+"use mouse wheel for data entry. when disabled, this behavior is reversed"
+msgstr ""
+"quando habilitado, o botão de rolagem do mouse faz scroll no painel de "
+"módulos por default. se ctrl+alt para usar o botão de rolagem para entrada "
+"de dados. quando desabilitado, este comportamento é revertido"
+
+#: ../build/src/preferences_gen.h:4015
+msgid "always show panels' scrollbars"
+msgstr "sempre mostrar barras de rolagem dos painéis"
+
+#: ../build/src/preferences_gen.h:4028
+msgid ""
+"defines whether the panel scrollbars should be always visible or activated "
+"only depending on the content. (need a restart)"
+msgstr ""
+"define se as barras de rolagem dos painéis sempre devem ficar visíveis ou se "
+"ativadas somente dependendo do contexto. (precisa reiniciar)"
+
+#: ../build/src/preferences_gen.h:4036
+msgid "method to use for getting the display profile"
+msgstr "método usado para obter o perfil do monitor"
+
+#: ../build/src/preferences_gen.h:4047 ../build/src/preferences_gen.h:4075
+msgctxt "preferences"
+msgid "all"
+msgstr "tudo"
+
+#: ../build/src/preferences_gen.h:4052
+msgctxt "preferences"
+msgid "xatom"
+msgstr "xatom"
+
+#: ../build/src/preferences_gen.h:4057
+msgctxt "preferences"
+msgid "colord"
+msgstr "colord"
+
+#: ../build/src/preferences_gen.h:4078
+msgid ""
+"this option allows to force a specific means of getting the current display "
+"profile. this is useful when one alternative gives wrong results"
+msgstr ""
+"esta opção permite forçar um modo específico de obter o perfil do display "
+"atual. é útil quando uma alternativa dá resultados errados"
+
+#. tags
+#: ../build/src/preferences_gen.h:4086 ../src/develop/lightroom.c:1510
+#: ../src/gui/import_metadata.c:220 ../src/libs/export_metadata.c:310
+#: ../src/libs/image.c:545 ../src/libs/metadata_view.c:148
+msgid "tags"
+msgstr "etiquetas"
+
+#: ../build/src/preferences_gen.h:4094
+msgid "omit hierarchy in simple tag lists"
+msgstr "omitir hierarquia em listas simples de etiquetas"
+
+#: ../build/src/preferences_gen.h:4107
+msgid ""
+"when creating XMP file the hierarchical tags are also added as a simple list "
+"of non-hierarchical ones to make them visible to some other programs. when "
+"this option is checked darktable will only include their last part and "
+"ignore the rest. so 'foo|bar|baz' will only add 'baz'."
+msgstr ""
+"ao exportar imagens para arquivos XMP, as etiquetas hierárquicas também são "
+"adicionados como simples lista não-hierárquiva para fazê-los visíveis por "
+"outros programas. quando esta opção é habilitada, o darktable somente "
+"incluirá a última parte das etiquetas e ignorará o resto. assim, 'foo|bar|"
+"baz' somente adicionará 'baz'."
+
+#: ../build/src/preferences_gen.h:4115
+msgid "disable the entry completion"
+msgstr "desabilitar auto-completar na entrada de dados"
+
+#: ../build/src/preferences_gen.h:4128
+msgid ""
+"the entry completion is useful for those who enter tags from keyboard only. "
+"for others the entry completion can be embarrassing. need to restart "
+"darktable."
+msgstr ""
+"o autocompletar de texto é útil para quem só entra etiquetas pelo teclado. "
+"para outros o autocompletar pode ser constrangedor. precisa reiniciar o "
+"darktable."
+
+#: ../build/src/preferences_gen.h:4136
+msgid "keyboard shortcuts with multiple instances"
+msgstr "atalhos de teclado com múltiplas instâncias"
+
+#: ../build/src/preferences_gen.h:4142
+msgid ""
+"where multiple module instances are present, these preferences control rules "
+"that are applied (in order) to decide which module instance keyboard "
+"shortcuts will be applied to"
+msgstr ""
+"onde múltiplas instâncias de um módulo estiverem presentes, estas "
+"preferencias controlam as regras que são aplicadas (em ordem) para decidir a "
+"que instância do módulo os atalhos serão aplicados"
+
+#: ../build/src/preferences_gen.h:4146
+msgid "prefer expanded instances"
+msgstr "preferir instâncias expandidas"
+
+#: ../build/src/preferences_gen.h:4159
+msgid "if instances of the module are expanded, ignore collapsed instances"
+msgstr ""
+"se instâncias do módulo estão expandidas, ignorar as instâncias recolhidas"
+
+#: ../build/src/preferences_gen.h:4167
+msgid "prefer enabled instances"
+msgstr "preferir instâncias habilitadas"
+
+#: ../build/src/preferences_gen.h:4180
+msgid ""
+"after applying the above rule, if instances of the module are active, ignore "
+"inactive instances"
+msgstr ""
+"depois de aplicar as regras acima, se instancias de um módulo estiverem "
+"ativas, ignore as instâncias inativas"
+
+#: ../build/src/preferences_gen.h:4188
+msgid "prefer unmasked instances"
+msgstr "preferir instâncias não mascaradas"
+
+#: ../build/src/preferences_gen.h:4201
+msgid ""
+"after applying the above rules, if instances of the module are unmasked, "
+"ignore masked instances"
+msgstr ""
+"depois de aplicar as regras acima, se instancias de um módulo estiverem não-"
+"mascaradas, ignore as instancias mascaradas"
+
+#: ../build/src/preferences_gen.h:4209
+msgid "selection order"
+msgstr "ordem de seleção"
+
+#: ../build/src/preferences_gen.h:4220
+msgctxt "preferences"
+msgid "first instance"
+msgstr "primeira instância"
+
+#: ../build/src/preferences_gen.h:4225 ../build/src/preferences_gen.h:4243
+msgctxt "preferences"
+msgid "last instance"
+msgstr "última instância"
+
+#: ../build/src/preferences_gen.h:4246
+msgid ""
+"after applying the above rules, apply the shortcut based on its position in "
+"the pixelpipe"
+msgstr ""
+"depois de aplicar as regras acima, aplique o atalho baseando-se na sua "
+"posição na pixelpipe"
+
+#. char *italic = g_strdup_printf("<i>%s</i>", _("other"));
+#. italic
+#: ../build/src/preferences_gen.h:4254 ../src/libs/tools/viewswitcher.c:145
+msgid "other"
+msgstr "outro"
+
+#: ../build/src/preferences_gen.h:4262
+msgid "do not show april 1st game"
+msgstr "não mostrar jogo de 1° de abril"
+
+#: ../build/src/preferences_gen.h:4282
+msgid "password storage backend to use"
+msgstr "backend a usar para armazenamento de senhas"
+
+#: ../build/src/preferences_gen.h:4293 ../build/src/preferences_gen.h:4328
+msgctxt "preferences"
+msgid "auto"
+msgstr "auto"
+
+#: ../build/src/preferences_gen.h:4303
+msgctxt "preferences"
+msgid "libsecret"
+msgstr "libsecret"
+
+#: ../build/src/preferences_gen.h:4309
+msgctxt "preferences"
+msgid "kwallet"
+msgstr "kwallet"
+
+#: ../build/src/preferences_gen.h:4331
+msgid ""
+"the storage backend for password storage: auto, none, libsecret, kwallet"
+msgstr ""
+"o backend the armazenamento para senhas: auto, nenhum, libsecret, kwallet"
+
+#: ../build/src/preferences_gen.h:4339
+msgid "executable for playing audio files"
+msgstr "executável para tocar arquivos de áudio"
+
+#: ../build/src/preferences_gen.h:4356
+msgid ""
+"this external program is used to play audio files some cameras record to "
+"keep notes for images"
+msgstr ""
+"este programa externo é usado para tocar arquivos de áudio que algumas "
+"câmeras gravam para manter notas sobre imagens"
+
+#: ../build/src/preferences_gen.h:4383 ../build/src/preferences_gen.h:4386
+#: ../src/libs/import.c:90
+msgid "import"
+msgstr "importar"
+
+#: ../build/src/preferences_gen.h:4394
+msgid "ignore JPEG images when importing film rolls"
+msgstr "ignorar imagens jpeg quando importar rolos de filme"
+
+#: ../build/src/preferences_gen.h:4407
+msgid ""
+"when having raw+JPEG images together in one directory it makes no sense to "
+"import both. with this flag one can ignore all JPEGs found."
+msgstr ""
+"quando houverem imagens raw+jpeg juntas em um diretório não faz sentido "
+"importar ambos. com esta opção pode-se ignorar todos os jpegs encontrados."
+
+#: ../build/src/preferences_gen.h:4415
+msgid "recursive directory traversal when importing filmrolls"
+msgstr "atravessar diretórios recursivamente ao importar rolos de filme"
+
+#: ../build/src/preferences_gen.h:4435
+msgid "creator to be applied when importing"
+msgstr "criador a ser aplicado ao importar"
+
+#: ../build/src/preferences_gen.h:4459
+msgid "publisher to be applied when importing"
+msgstr "editor a ser aplicado ao importar"
+
+#: ../build/src/preferences_gen.h:4483
+msgid "rights to be applied when importing"
+msgstr "direitos a ser aplicado ao importar"
+
+#: ../build/src/preferences_gen.h:4507
+msgid "comma separated tags to be applied when importing"
+msgstr "etiquetas separadas por vírgular a serem aplicadas ao importar"
+
+#: ../build/src/preferences_gen.h:4531
+msgid "initial import rating"
+msgstr "classificação inicial"
+
+#: ../build/src/preferences_gen.h:4554
+msgid "initial star rating for all images when importing a filmroll"
+msgstr ""
+"valor inicial em estrelas para todas imagens ao importar um rolo de filme"
+
+#: ../build/src/preferences_gen.h:4562
+msgid "session options"
+msgstr "opções de sessão"
+
+#: ../build/src/preferences_gen.h:4570
+msgid "base directory naming pattern"
+msgstr "padrão de nomeação de diretório base"
+
+#: ../build/src/preferences_gen.h:4587 ../build/src/preferences_gen.h:4612
+msgid "part of full import path for an import session"
+msgstr "parte do caminho completo para importar uma sessão"
+
+#: ../build/src/preferences_gen.h:4595
+msgid "sub directory naming pattern"
+msgstr "padrão de nomeação de sub diretórios"
+
+#: ../build/src/preferences_gen.h:4620
+msgid "keep original filename"
+msgstr "manter nome de arquivo original"
+
+#: ../build/src/preferences_gen.h:4633
+msgid ""
+"keep original filename instead of a pattern while importing from camera or "
+"card"
+msgstr ""
+"manter nome de arquivo original ao invés de usar um padrão quando importar "
+"da camera ou cartão"
+
+#: ../build/src/preferences_gen.h:4641
+msgid "file naming pattern"
+msgstr "padrão de nomeação de arquivos"
+
+#: ../build/src/preferences_gen.h:4658
+msgid "file naming pattern used for a import session"
+msgstr "padrão de nomeação de arquivos utilizado para a sessão de importação"
+
+#: ../data/darktable.appdata.xml.in.h:2
+msgid ""
+"darktable manages your digital negatives in a database and lets you view "
+"them through a lighttable. It also enables you to develop raw images and "
+"enhance them in a darkroom."
+msgstr ""
+"o darktable gerencia seus negativos digitais em um bando de dados e permite "
+"que você os visualize a partir da mesa de luz. Também permite que você "
+"revele suas imagens raw e os trate na sala escura."
+
+#: ../data/darktable.appdata.xml.in.h:3
+msgid ""
+"Other modes besides lighttable and darkroom are a map for geotagging, "
+"tethering, print and a slideshow."
+msgstr ""
+"o autocompletar de texto é útil para quem só entra etiquetas pelo teclado. "
+"para outros o autocompletar pode ser constrangedor. precisa reiniciar o "
+"darktable."
+
+#: ../data/darktable.appdata.xml.in.h:4
+msgid ""
+"darktable supports most modern cameras' raw formats, and does all of its "
+"processing at very high precision."
+msgstr ""
+"o darktable suporta o formato raw da maioria das câmeras modernas, e faz "
+"todo o processamento com muito alta precisão."
+
+#: ../data/darktable.appdata.xml.in.h:5
+msgid "Virtual light table, showing a collection"
+msgstr "Mesa de Luz, mostrando uma coleção"
+
+#: ../data/darktable.appdata.xml.in.h:6
+msgid "Virtual dark room with an opened image"
+msgstr "Sala Escura com uma imagem aberta"
+
+#: ../data/darktable.appdata.xml.in.h:7
+msgid "Virtual dark room, sharpening an image"
+msgstr "Sala Escura, melhorando a nitidez de uma imagem"
+
+#: ../data/darktable.appdata.xml.in.h:8
+msgid "Show images on a map"
+msgstr "Mostrar imagens em um mapa"
+
+#: ../data/darktable.appdata.xml.in.h:9
+msgid "Print your images"
+msgstr "Imprimir suas imagens"
+
+#: ../src/chart/main.c:504 ../src/control/jobs/control_jobs.c:1555
+#: ../src/control/jobs/control_jobs.c:1618 ../src/gui/hist_dialog.c:187
+#: ../src/gui/preferences.c:1505 ../src/gui/preferences.c:1531
+#: ../src/gui/preferences.c:1613 ../src/gui/preferences.c:1719
+#: ../src/gui/preferences.c:1948 ../src/gui/presets.c:394
+#: ../src/gui/styles_dialog.c:357 ../src/imageio/storage/disk.c:121
+#: ../src/imageio/storage/gallery.c:108 ../src/imageio/storage/latex.c:107
+#: ../src/iop/lut3d.c:1568 ../src/libs/collect.c:354
+#: ../src/libs/copy_history.c:116 ../src/libs/geotagging.c:474
+#: ../src/libs/import.c:555 ../src/libs/import.c:661 ../src/libs/lib.c:227
+#: ../src/libs/styles.c:367 ../src/libs/styles.c:392 ../src/libs/tagging.c:2226
+#: ../src/libs/tagging.c:2267
+msgid "_cancel"
+msgstr "_cancela"
+
+#: ../src/chart/main.c:504 ../src/gui/preferences.c:1505
+#: ../src/gui/preferences.c:1720 ../src/gui/styles_dialog.c:360
+#: ../src/libs/styles.c:368
+msgid "_save"
+msgstr "_salvar"
+
+#. TODO: is the rank interesting, too?
+#: ../src/chart/main.c:1063
+#, c-format
+msgid ""
+"average dE: %.02f\n"
+"max dE: %.02f"
+msgstr ""
+"média dE: %.02f\n"
+"máximo dE: %.02f"
+
+#: ../src/cli/main.c:130
+msgid "TODO: sorry, due to API restrictions we currently cannot set the BPP to"
+msgstr ""
+"TODO: desculpa, devido a restrições na API não podemos definir BPP para"
+
+#: ../src/cli/main.c:142
+msgid "unknown option for --hq"
+msgstr "opção desconhecida para --hq"
+
+#: ../src/cli/main.c:158
+msgid "unknown option for --export_masks"
+msgstr "opção desconhecida para --export_masks"
+
+#: ../src/cli/main.c:174
+msgid "unknown option for --upscale"
+msgstr "opção desconhecida para --upscale"
+
+#: ../src/cli/main.c:199
+msgid "unknown option for --apply-custom-presets"
+msgstr "opção desconhecida para --apply-custom-presets"
+
+#: ../src/cli/main.c:254
+#, c-format
+msgid "error: output file is a directory. please specify file name"
+msgstr ""
+"erro: o arquivo de saída é um diretório (pasta). por favor, especifique um "
+"nome de arquivo"
+
+#: ../src/cli/main.c:263
+msgid "output file already exists, it will get renamed"
+msgstr "arquivo de saída ja existente, ele será renomeado"
+
+#: ../src/cli/main.c:280
+#, c-format
+msgid "error: can't open folder %s"
+msgstr "erro: não foi possível abrir a pasta %s"
+
+#: ../src/cli/main.c:298
+#, c-format
+msgid "error: can't open file %s"
+msgstr "erro: não foi possível abrir o arquivo %s"
+
+#: ../src/cli/main.c:312
+#, c-format
+msgid "no images to export, aborting\n"
+msgstr "nenhuma imagem para exportar, cancelando\n"
+
+#: ../src/cli/main.c:326
+#, c-format
+msgid "error: can't open xmp file %s"
+msgstr "erro: não foi possível abrir o arquivo xmp %s"
+
+#: ../src/cli/main.c:344
+msgid "empty history stack"
+msgstr "esvazia histórico de ações"
+
+#: ../src/cli/main.c:367
+msgid ""
+"cannot find disk storage module. please check your installation, something "
+"seems to be broken."
+msgstr ""
+"não foi possível encontrar o módulo de armazenamento em disco. por favor, "
+"verifique sua instalação, algo parece defeituoso."
+
+#: ../src/cli/main.c:375
+msgid "failed to get parameters from storage module, aborting export ..."
+msgstr ""
+"falha ao obter parâmetros do módulo de armazenamento, abortando exportação..."
+
+#: ../src/cli/main.c:388
+#, c-format
+msgid "unknown extension '.%s'"
+msgstr "extensão desconhecida '.%s'"
+
+#: ../src/cli/main.c:397
+msgid "failed to get parameters from format module, aborting export ..."
+msgstr ""
+"falha ao obter parâmetros do módulo de formato, abortando exportação..."
+
+#: ../src/common/collection.c:636
+msgid "too much time to update aspect ratio for the collection"
+msgstr "tempo demais para ajustar o aspecto da coleção"
+
+#: ../src/common/collection.c:674
+msgid "film roll"
+msgstr "rolo de filme"
+
+#: ../src/common/collection.c:675
+msgid "folders"
+msgstr "pastas"
+
+#: ../src/common/collection.c:676
+msgid "camera"
+msgstr "câmera"
+
+#: ../src/common/collection.c:677 ../src/libs/export_metadata.c:184
+msgid "tag"
+msgstr "etiqueta"
+
+#: ../src/common/collection.c:678
+msgid "date taken"
+msgstr "data da foto"
+
+#: ../src/common/collection.c:679
+msgid "date-time taken"
+msgstr "data/hora da foto"
+
+#: ../src/common/collection.c:680 ../src/libs/metadata_view.c:109
+msgid "import timestamp"
+msgstr "importar marca de data/hora"
+
+#: ../src/common/collection.c:681 ../src/libs/metadata_view.c:110
+msgid "change timestamp"
+msgstr "mudar marca de data/hora"
+
+#: ../src/common/collection.c:682 ../src/libs/metadata_view.c:111
+msgid "export timestamp"
+msgstr "exportar data/hora"
+
+#: ../src/common/collection.c:683 ../src/libs/metadata_view.c:112
+msgid "print timestamp"
+msgstr "imprimir data/hora"
+
+#: ../src/common/collection.c:684 ../src/libs/history.c:74
+msgid "history"
+msgstr "história"
+
+#: ../src/common/collection.c:685 ../src/develop/lightroom.c:1541
+#: ../src/libs/tools/filter.c:91
+msgid "color label"
+msgstr "cor da etiqueta"
+
+#: ../src/common/collection.c:686 ../src/gui/preferences.c:784
+#: ../src/gui/preferences.c:1778 ../src/gui/presets.c:452
+#: ../src/libs/metadata_view.c:120
+msgid "lens"
+msgstr "lente"
+
+#. iso
+#: ../src/common/collection.c:688 ../src/gui/preferences.c:788
+#: ../src/gui/preferences.c:1784 ../src/gui/presets.c:458
+#: ../src/libs/camera.c:589 ../src/libs/metadata_view.c:126
+msgid "ISO"
+msgstr "ISO"
+
+#. aperture
+#: ../src/common/collection.c:689 ../src/gui/preferences.c:796
+#: ../src/gui/preferences.c:1812 ../src/gui/presets.c:486
+#: ../src/libs/camera.c:576 ../src/libs/camera.c:578
+#: ../src/libs/metadata_view.c:121
+msgid "aperture"
+msgstr "abertura"
+
+#: ../src/common/collection.c:692 ../src/libs/metadata_view.c:105
+#: ../src/libs/tools/filter.c:87
+msgid "filename"
+msgstr "nome do arquivo"
+
+#: ../src/common/collection.c:693 ../src/develop/lightroom.c:1532
+#: ../src/libs/geotagging.c:63
+msgid "geotagging"
+msgstr "geo-etiquetas"
+
+#: ../src/common/collection.c:694
+msgid "grouping"
+msgstr "agrupar"
+
+#: ../src/common/collection.c:695 ../src/libs/metadata_view.c:108
+#: ../src/libs/metadata_view.c:347
+msgid "local copy"
+msgstr "cópia local"
+
+#: ../src/common/collection.c:696 ../src/gui/preferences.c:764
+msgid "module"
+msgstr "módulo"
+
+#: ../src/common/collection.c:697 ../src/libs/ioporder.c:39
+msgid "module order"
+msgstr "ordem dos módulos"
+
+#: ../src/common/collection.c:1469 ../src/develop/lightroom.c:828
+#: ../src/iop/bilateral.cc:321 ../src/iop/channelmixer.c:446
+#: ../src/iop/channelmixer.c:457 ../src/iop/colorbalance.c:2208
+#: ../src/iop/temperature.c:1384 ../src/libs/collect.c:1598
+#: ../src/views/darkroom.c:2406
+msgid "red"
+msgstr "vermelho"
+
+#: ../src/common/collection.c:1471 ../src/develop/lightroom.c:830
+#: ../src/iop/temperature.c:1375 ../src/libs/collect.c:1598
+#: ../src/views/darkroom.c:2408
+msgid "yellow"
+msgstr "amarelo"
+
+#: ../src/common/collection.c:1473 ../src/develop/lightroom.c:832
+#: ../src/iop/bilateral.cc:326 ../src/iop/channelmixer.c:447
+#: ../src/iop/channelmixer.c:463 ../src/iop/colorbalance.c:2215
+#: ../src/iop/temperature.c:1372 ../src/iop/temperature.c:1385
+#: ../src/libs/collect.c:1598 ../src/views/darkroom.c:2407
+msgid "green"
+msgstr "verde"
+
+#: ../src/common/collection.c:1475 ../src/develop/lightroom.c:834
+#: ../src/iop/bilateral.cc:331 ../src/iop/channelmixer.c:448
+#: ../src/iop/channelmixer.c:469 ../src/iop/colorbalance.c:2222
+#: ../src/iop/temperature.c:1386 ../src/libs/collect.c:1598
+msgid "blue"
+msgstr "azul"
+
+#: ../src/common/collection.c:1477 ../src/libs/collect.c:1598
+msgid "purple"
+msgstr "roxo"
+
+#: ../src/common/collection.c:1491 ../src/common/collection.c:1499
+#: ../src/libs/collect.c:1545
+msgid "basic"
+msgstr "básico"
+
+#: ../src/common/collection.c:1493 ../src/libs/collect.c:1545
+msgid "auto applied"
+msgstr "auto aplicado"
+
+#: ../src/common/collection.c:1495 ../src/libs/collect.c:1545
+msgid "altered"
+msgstr "alterado"
+
+#: ../src/common/collection.c:1508 ../src/libs/collect.c:1558
+msgid "tagged"
+msgstr "etiquetado"
+
+#: ../src/common/collection.c:1514 ../src/libs/collect.c:1570
+msgid "not copied locally"
+msgstr "não copiado localmente"
+
+#. grouping
+#: ../src/common/collection.c:1756 ../src/libs/collect.c:1672
+msgid "group leaders"
+msgstr "representantes de grupo"
+
+#: ../src/common/collection.c:1788 ../src/libs/collect.c:1733
+msgid "not defined"
+msgstr "não definido"
+
+#: ../src/common/collection.c:2035
+#, c-format
+msgid "%d image of %d (#%d) in current collection is selected"
+msgstr "%d imagem de %d(#%d) na coleção atual está selecionada"
+
+#: ../src/common/collection.c:2041
+#, c-format
+msgid "%d image of %d in current collection is selected"
+msgid_plural "%d images of %d in current collection are selected"
+msgstr[0] "%d imagem de %d na coleção atual está selecionada"
+msgstr[1] "%d imagens de %d na coleção atual foram selecionadas"
+
+#. init the category profile with NULL profile, the actual profile must be retrieved dynamically by the caller
+#: ../src/common/colorspaces.c:1380 ../src/common/colorspaces.c:1636
+msgid "work profile"
+msgstr "perfil de trabalho"
+
+#: ../src/common/colorspaces.c:1383 ../src/common/colorspaces.c:1632
+#: ../src/iop/colorout.c:893
+msgid "export profile"
+msgstr "perfil de exportação"
+
+#: ../src/common/colorspaces.c:1387 ../src/common/colorspaces.c:1634
+#: ../src/views/darkroom.c:2284
+msgid "softproof profile"
+msgstr "perfil de impressão na tela"
+
+#: ../src/common/colorspaces.c:1393 ../src/common/colorspaces.c:1396
+#: ../src/common/colorspaces.c:1616 ../src/common/colorspaces.c:1638
+msgid "system display profile"
+msgstr "perfil do monitor"
+
+#: ../src/common/colorspaces.c:1402
+msgid "sRGB (e.g. JPG)"
+msgstr "sRGB (ex. JPG)"
+
+#: ../src/common/colorspaces.c:1406 ../src/libs/print_settings.c:1035
+msgid "sRGB (web-safe)"
+msgstr "sRGB (web-safe)"
+
+#: ../src/common/colorspaces.c:1420
+msgid "gamma Rec709 RGB"
+msgstr "gama Rec709 RGB"
+
+#: ../src/common/colorspaces.c:1430
+msgid "PQ Rec2020 RGB"
+msgstr "PQ Rec2020 RGB"
+
+#: ../src/common/colorspaces.c:1435
+msgid "HLG Rec2020 RGB"
+msgstr "HLG Rec2020 RGB"
+
+#: ../src/common/colorspaces.c:1440
+msgid "PQ P3 RGB"
+msgstr "PQ P3 RGB"
+
+#: ../src/common/colorspaces.c:1445
+msgid "HLG P3 RGB"
+msgstr "HLG P3 RGB"
+
+#: ../src/common/colorspaces.c:1450
+msgid "linear prophoto RGB"
+msgstr "RGB prophoto linear"
+
+#: ../src/common/colorspaces.c:1455 ../src/common/colorspaces.c:1610
+msgid "linear XYZ"
+msgstr "linear XYZ"
+
+#: ../src/common/colorspaces.c:1459 ../src/common/colorspaces.c:1612
+#: ../src/libs/colorpicker.c:593 ../src/libs/colorpicker.c:631
+msgid "Lab"
+msgstr "Lab"
+
+#: ../src/common/colorspaces.c:1464 ../src/common/colorspaces.c:1614
+msgid "linear infrared BGR"
+msgstr "linear infravermelho BGR"
+
+#: ../src/common/colorspaces.c:1468
+msgid "BRG (for testing)"
+msgstr "BRG (para teste)"
+
+#: ../src/common/colorspaces.c:1618
+msgid "embedded ICC profile"
+msgstr "perfil ICC embutido"
+
+#: ../src/common/colorspaces.c:1620
+msgid "embedded matrix"
+msgstr "matriz embutida"
+
+#: ../src/common/colorspaces.c:1622
+msgid "standard color matrix"
+msgstr "matriz de cor padrão"
+
+#: ../src/common/colorspaces.c:1624
+msgid "enhanced color matrix"
+msgstr "matriz de cor aprimorada"
+
+#: ../src/common/colorspaces.c:1626
+msgid "vendor color matrix"
+msgstr "matriz de cor do fabricante"
+
+#: ../src/common/colorspaces.c:1628
+msgid "alternate color matrix"
+msgstr "matriz de cor alternativa"
+
+#: ../src/common/colorspaces.c:1630
+msgid "BRG (experimental)"
+msgstr "BRG (experimental)"
+
+#: ../src/common/colorspaces.c:1640
+msgid "gamma22 Rec709"
+msgstr "gama22 Rec709"
+
+#: ../src/common/colorspaces.c:1642
+msgid "ProPhoto RGB"
+msgstr "RGB ProPhoto"
+
+#: ../src/common/colorspaces.c:1644
+msgid "PQ Rec2020"
+msgstr "PQ Rec2020"
+
+#: ../src/common/colorspaces.c:1646
+msgid "HLG Rec2020"
+msgstr "HLG Rec2020"
+
+#: ../src/common/colorspaces.c:1648
+msgid "PQ P3"
+msgstr "PQ P3"
+
+#: ../src/common/colorspaces.c:1650
+msgid "HLG P3"
+msgstr "HLG P3"
+
+#: ../src/common/cups_print.c:423
+#, c-format
+msgid "file `%s' to print not found for image %d on `%s'"
+msgstr "arquivo `%s' para imprimir não encontrado para imagem %d em `%s'"
+
+#: ../src/common/cups_print.c:442
+msgid "failed to create temporary file for printing options"
+msgstr "falha ao criar arquivo temporário para opções de impressão"
+
+#: ../src/common/cups_print.c:510
+#, c-format
+msgid "printing on `%s' cancelled"
+msgstr "impressão em `%s' cancelada"
+
+#: ../src/common/cups_print.c:573
+#, c-format
+msgid "error while printing `%s' on `%s'"
+msgstr "erro imprimindo `%s' em `%s'"
+
+#: ../src/common/cups_print.c:575
+#, c-format
+msgid "printing `%s' on `%s'"
+msgstr "imprimindo `%s' em `%s'"
+
+#: ../src/common/darktable.c:237
+#, c-format
+msgid "found strange path `%s'"
+msgstr "caminho estranho encontrado `%s'"
+
+#: ../src/common/darktable.c:252
+#, c-format
+msgid "error loading directory `%s'"
+msgstr "erro carregando diretório `%s'"
+
+#: ../src/common/darktable.c:275
+#, c-format
+msgid "file `%s' has unknown format!"
+msgstr "arquivo `%s' é de formato desconhecido!"
+
+#: ../src/common/darktable.c:288 ../src/libs/import.c:621
+#, c-format
+msgid "error loading file `%s'"
+msgstr "erro carregando arquivo `%s'"
+
+#: ../src/common/darktable.c:815
+msgid "darktable - run performance configuration?"
+msgstr "darktable - executar configuração para maior performance?"
+
+#: ../src/common/darktable.c:816
+msgid ""
+"we have an updated performance configuration logic - executing that might "
+"improve the performance of darktable.\n"
+"this will potentially overwrite some of your existing settings - especially "
+"in case you have manually modified them to custom values.\n"
+"would you like to execute this update of the performance configuration?\n"
+msgstr ""
+"temos uma lógica de configuração de desempenho atualizada - executá-la pode "
+"melhorar o desempenho do darktable.\n"
+"isto irá potencialmente sobrescrever algumas de suas configurações - "
+"especialmente caso as tenha modificado manualmente.\n"
+"gostaria de aplicar esta atualização de configuração de desempenho?\n"
+
+#: ../src/common/darktable.c:820 ../src/common/database.c:2988
+#: ../src/common/variables.c:518 ../src/imageio/format/pdf.c:671
+#: ../src/imageio/format/pdf.c:696 ../src/libs/export.c:695
+#: ../src/libs/export.c:701 ../src/libs/export.c:708
+#: ../src/libs/metadata_view.c:289
+msgid "yes"
+msgstr "sim"
+
+#: ../src/common/database.c:2179
+#, c-format
+msgid ""
+"\n"
+" At startup, the database failed to open because at least one of the two "
+"files in the database is locked.\n"
+"\n"
+" The persistence of the lock is mainly caused by one of the two following "
+"causes:\n"
+"\n"
+" - Another occurrence of darktable has already opened this database file and "
+"locked it for its benefit.\n"
+"\n"
+" - A previous occurrence of darktable ended abnormally and therefore \n"
+" could not close one or both files in the database properly.\n"
+"\n"
+" How to solve this problem?\n"
+"\n"
+" 1 - Search in your environment if another darktable occurrence is active. "
+"If so, use it or close it. \n"
+" The lock indicates that the process number of this occurrence is : "
+"<i><b>%d</b></i>\n"
+"\n"
+" 2 - If you can't find this other occurrence, try closing your session and "
+"reopening it or shutting down your computer. \n"
+" This will delete all running programs and thus close the database "
+"correctly.\n"
+"\n"
+" 3 - If these two actions are not enough, it is because at least one of the "
+"two files that materialize the locks remains \n"
+" and that these are no longer attached to any occurrence of darktable. "
+"It is then necessary to delete it (or them). \n"
+" The two files are named <i>data.db.lock</i> and <i>library.db.lock</i> "
+"respectively. The opening mechanism signals \n"
+" the presence of the <i><b>%s</b></i> file in the <i><b>%s</b></i> "
+"folder. \n"
+" (full pathname: <i><b>%s</b></i>).\n"
+"\n"
+" <u>Caution!</u> Do not delete these files without first checking that "
+"there are no more occurrences of darktable, \n"
+" otherwise you risk generating serious inconsistencies in your "
+"database.\n"
+"\n"
+" As soon as you have identified and removed the cause of the lock, darktable "
+"will start without any problem.\n"
+msgstr ""
+"\n"
+"Ao inicializar, a base de dados falhou em abrir porque pelo menos um dos\n"
+"dois arquivos na base de dados está bloqueado.\n"
+"\n"
+"A persistência do bloqueio é causada principalmente por uma das duas "
+"causas:\n"
+"\n"
+" - Outra ocorrência do darktable já abriu esta base de dados e a travou\n"
+" para si mesma.\n"
+"\n"
+" - Uma ocorrência anterior do darktable finalizou de maneira não normal e\n"
+" não conseguiu fechar um ou ambos os arquivos na base de dados "
+"apropriadamente.\n"
+"\n"
+" Como resolver este problema?\n"
+"\n"
+" 1 - Procure em seu ambiente se outra ocorrência do darktale está ativa.\n"
+" Se estiver, use-a ou feche-a. O bloqueio indica que o número de "
+"processo\n"
+" dessa ocorrência é : <i><b>%d</b></i>\n"
+"\n"
+" 2 - Se não achar essa ocorrência, tente fechar sua sessão e reabrir, ou\n"
+" desligar seu computador. Isto removerá todos os programas executando\n"
+" e, desta forma, fechará a base de dados de maneira paropriada.\n"
+"\n"
+" 3 - Se estas duas ações não forem suficientes, é porque pelo menos um dos\n"
+" arquivos que materializam o bloqueio permanecem, e que estes não estão "
+"mais\n"
+" associados a nenhuma ocorrência do darktable. É necessário removê-los.\n"
+" Os dois arquivos são nomeados <i>data.db.lock</i> e <i>library.db.lock</"
+"i>,\n"
+" respectivamente. O mecanismo de abertura sinaliza a presença do "
+"arquivo\n"
+" <i><b>%s</b></i> na pasta <i><b>%s</b></i>.\n"
+" (caminho completo: <i><b>%s</b></i>).\n"
+"\n"
+" <u>Cuidado!</u> Não remova estes arquivos sem antes verificar que não "
+"há\n"
+" mais ocorrências do darktable, senão você corre o risco de gerar\n"
+" inconsistências sérias na sua base de dados.\n"
+"\n"
+" Assim que tiver identificado e removido a causa do bloqueio, o darktable "
+"iniciará\n"
+"sem problemas.\n"
+
+#: ../src/common/database.c:2209
+msgid "darktable cannot be started because the database is locked"
+msgstr "O darktable não pode iniciar porque a base de dados está bloqueada"
+
+#: ../src/common/database.c:2210 ../src/common/database.c:2382
+#: ../src/common/database.c:2630 ../src/common/database.c:2712
+msgid "close darktable"
+msgstr "fechar o darktable"
+
+#: ../src/common/database.c:2322
+#, c-format
+msgid ""
+"the database lock file contains a pid that seems to be alive in your system: "
+"%d"
+msgstr ""
+"o arquivo de lock da base de dados contém um pid que parece estar vivo no "
+"seu sistema: %d"
+
+#: ../src/common/database.c:2328
+#, c-format
+msgid "the database lock file seems to be empty"
+msgstr "o lock da base de dados parece estar vazio"
+
+#: ../src/common/database.c:2336
+#, c-format
+msgid "error opening the database lock file for reading: %s"
+msgstr "erro ao abrir a base de dados para leitura: %s"
+
+#. the database has to be upgraded, let's ask user
+#: ../src/common/database.c:2373
+#, c-format
+msgid ""
+"the database schema has to be upgraded for\n"
+"\n"
+"<span style=\"italic\">%s</span>\n"
+"\n"
+"do you want to proceed or quit now to do a backup\n"
+msgstr ""
+"o esquema da base de dados precisa ser atualizado para\n"
+"\n"
+"<span style=\"italic\">%s</span>\n"
+"\n"
+
+#: ../src/common/database.c:2381
+msgid "darktable - schema migration"
+msgstr "darktable - migrar esquema"
+
+#: ../src/common/database.c:2382
+msgid "upgrade database"
+msgstr "atualizar base de dados"
+
+#. oh, bad situation. the database is corrupt and can't be read!
+#. we inform the user here and let him decide what to do: exit or delete and try again.
+#: ../src/common/database.c:2619 ../src/common/database.c:2701
+#, c-format
+msgid ""
+"an error has occurred while trying to open the database from\n"
+"\n"
+"<span style=\"italic\">%s</span>\n"
+"\n"
+"it seems that the database is corrupt.\n"
+"do you want to close darktable now to manually restore\n"
+"the database from a backup or start with a new one?"
+msgstr ""
+"um erro ocorreu ao tentar abrir a base de dados de\n"
+"\n"
+"<span style=\"italic\">%s</span>\n"
+"\n"
+"parece que a base de dados está corrompida.\n"
+"quer fechar o darktable agora para restaurar manualmente\n"
+"a base de dados de um backup ou começar com uma nova?"
+
+#: ../src/common/database.c:2629 ../src/common/database.c:2711
+msgid "darktable - error opening database"
+msgstr "darktable - erro ao abrir a base de dados"
+
+#: ../src/common/database.c:2630 ../src/common/database.c:2712
+msgid "delete database"
+msgstr "apagar base de dados"
+
+#: ../src/common/database.c:2965
+msgid "click later to be asked on next startup"
+msgstr "clique 'depois' para ser questionado na próxima vez que iniciar"
+
+#: ../src/common/database.c:2969
+msgid "click later to be asked when closing darktable"
+msgstr "clique 'depois' para ser questionado ao fechar o darktable"
+
+#: ../src/common/database.c:2973
+msgid "click later to be asked next time when closing darktable"
+msgstr ""
+"clique 'depois' para ser questionado na próxima vez que fechar o darktable"
+
+#: ../src/common/database.c:2977
+#, c-format
+msgid ""
+"the database could use some maintenance\n"
+"\n"
+"there's <span style=\"italic\">%s</span> to be freed\n"
+"\n"
+"do you want to proceed now?\n"
+"\n"
+"%s\n"
+"you can always change maintenance preferences in core options"
+msgstr ""
+"a base de dados poderia precisar de manutenção\n"
+"\n"
+"há <span style=\\\"italic\\\">%s</span> a liberar\n"
+"\n"
+"quer fazer isso agora?<\n"
+"\n"
+"%s\\n\n"
+"você sempre pode mudar as preferências de manutenção nas opções do core"
+
+#: ../src/common/database.c:2987
+msgid "darktable - schema maintenance"
+msgstr "darktable - manutenção de esquema"
+
+#: ../src/common/database.c:2988
+msgid "later"
+msgstr "depois"
+
+#: ../src/common/fast_guided_filter.h:488
+msgid "fast guided filter failed to allocate memory, check your RAM settings"
+msgstr ""
+"o filtro fast guided não conseguiu alocar memória, verifique sua "
+"configuração de RAM"
+
+#: ../src/common/film.c:269
+msgid "do you want to remove this empty directory?"
+msgid_plural "do you want to remove these empty directories?"
+msgstr[0] "você realmente deseja remover este diretório vazio?"
+msgstr[1] "você realmente deseja remover estes diretórios vazios?"
+
+#: ../src/common/film.c:276
+msgid "remove empty directory?"
+msgid_plural "remove empty directories?"
+msgstr[0] "remover diretório vazio?"
+msgstr[1] "remover diretórios vazios?"
+
+#: ../src/common/film.c:295 ../src/gui/preferences.c:772
+#: ../src/gui/styles_dialog.c:385
+msgid "name"
+msgstr "nome"
+
+#: ../src/common/film.c:394
+msgid ""
+"cannot remove film roll having local copies with non accessible originals"
+msgstr ""
+"não é possível remover rolo de filme contendo cópias locais sem acesso aos "
+"originais"
+
+#: ../src/common/history.c:726
+msgid "you need to copy history from an image before you paste it onto another"
+msgstr "você precisa copiar o histórico de uma imagem antes de colar em outra"
+
+#: ../src/common/history.c:837 ../src/common/history.c:840
+#: ../src/common/history.c:856 ../src/common/styles.c:1079
+#: ../src/common/styles.c:1083 ../src/develop/blend_gui.c:2706
+#: ../src/develop/develop.c:2078 ../src/iop/ashift.c:4789
+#: ../src/libs/live_view.c:435
+msgid "on"
+msgstr "ligado"
+
+#: ../src/common/http_server.c:95
+#, c-format
+msgid "darktable » %s"
+msgstr "darktable » %s"
+
+#: ../src/common/http_server.c:97
+msgid "<h1>Sorry,</h1><p>something went wrong. Please try again.</p>"
+msgstr "<h1>Desculpe,</h1><p>algo saiu errado. Por favor, tente novamente.</p>"
+
+#: ../src/common/http_server.c:102
+msgid ""
+"<h1>Thank you,</h1><p>everything should have worked, you can <b>close</b> "
+"your browser now and <b>go back</b> to darktable.</p>"
+msgstr ""
+"<h1>Obrigado,</h1><p>tudo deve ter funcionado, você pode <b>fechar</b> seu "
+"navegador agora e <b>voltar</b> ao darktable.</p>"
+
+#: ../src/common/image.c:190
+msgid "orphaned image"
+msgstr "imagem orfã"
+
+#: ../src/common/image.c:1681
+#, c-format
+msgid "cannot access local copy `%s'"
+msgstr "não pude acessar cópia local `%s'"
+
+#: ../src/common/image.c:1688
+#, c-format
+msgid "cannot write local copy `%s'"
+msgstr "não pude escrever cópia local `%s'"
+
+#: ../src/common/image.c:1695
+#, c-format
+msgid "error moving local copy `%s' -> `%s'"
+msgstr "erro movendo cópia local `%s' -> `%s'"
+
+#: ../src/common/image.c:1711
+#, c-format
+msgid "error moving `%s': file not found"
+msgstr "erro movendo `%s': arquivo não encontrado"
+
+#: ../src/common/image.c:1721
+#, c-format
+msgid "error moving `%s' -> `%s': file exists"
+msgstr "erro movendo `%s' -> `%s': arquivo já existe"
+
+#: ../src/common/image.c:1725
+#, c-format
+msgid "error moving `%s' -> `%s'"
+msgstr "erro movendo `%s' -> `%s'"
+
+#: ../src/common/image.c:2022
+msgid "cannot create local copy when the original file is not accessible."
+msgstr ""
+"não é possível criar copia local quando o arquivo original está inacessível."
+
+#: ../src/common/image.c:2036
+msgid "cannot create local copy."
+msgstr "não pude criar cópia local."
+
+#: ../src/common/image.c:2108 ../src/control/jobs/control_jobs.c:664
+msgid "cannot remove local copy when the original file is not accessible."
+msgstr ""
+"não é possível remover copias local quando o arquivo original está "
+"inacessível."
+
+#: ../src/common/image.c:2288
+#, c-format
+msgid "%d local copy has been synchronized"
+msgid_plural "%d local copies have been synchronized"
+msgstr[0] "cópia local %d foi sincronizada"
+msgstr[1] "cópias locais %d foram sincronizadas"
+
+#: ../src/common/imageio.c:645 ../src/common/mipmap_cache.c:1065
+#, c-format
+msgid "image `%s' is not available!"
+msgstr "imagem `%s' não disponível!"
+
+#: ../src/common/imageio.c:663
+#, c-format
+msgid ""
+"failed to allocate memory for %s, please lower the threads used for export "
+"or buy more memory."
+msgstr ""
+"falha ao reservar memória para %s, favor reduza as threads usadas para "
+"exportação ou acrescente mais memória."
+
+#: ../src/common/imageio.c:664
+msgctxt "noun"
+msgid "thumbnail export"
+msgstr "exporta miniatura"
+
+#: ../src/common/imageio.c:664
+msgctxt "noun"
+msgid "export"
+msgstr "exporta"
+
+#: ../src/common/imageio.c:674
+#, c-format
+msgid "cannot find the style '%s' to apply during export."
+msgstr ""
+"não foi possível encontrar o estilo '%s' para aplicar durante exportação."
+
+#: ../src/common/import_session.c:287
+msgid ""
+"couldn't expand to a unique filename for session, please check your import "
+"session settings."
+msgstr ""
+"não foi possível expandir em um nome de arquivo único para importação, "
+"verifique as configurações de importação."
+
+#: ../src/common/iop_order.c:58
+msgid "custom"
+msgstr "personalizado"
+
+#: ../src/common/iop_order.c:59 ../src/libs/ioporder.c:201
+msgid "legacy"
+msgstr "legado"
+
+#: ../src/common/iop_order.c:60 ../src/libs/ioporder.c:189
+msgid "v3.0"
+msgstr "v3.0"
+
+#: ../src/common/iop_profile.c:82
+#, c-format
+msgid "unsupported working profile %s has been replaced by Rec2020 RGB!\n"
+msgstr ""
+"perfil de entrada %s não suportado foi substituído por linear Rec709 RGB!\n"
+"\n"
+
+#. clang-format off
+#: ../src/common/metadata.c:46
+msgid "creator"
+msgstr "criador"
+
+#: ../src/common/metadata.c:47
+msgid "publisher"
+msgstr "editor"
+
+#. title
+#: ../src/common/metadata.c:48 ../src/imageio/format/pdf.c:584
+#: ../src/imageio/storage/gallery.c:186 ../src/imageio/storage/latex.c:186
+#: ../src/imageio/storage/piwigo.c:857 ../src/libs/tools/filter.c:95
+msgid "title"
+msgstr "título"
+
+#: ../src/common/metadata.c:49 ../src/gui/styles_dialog.c:389
+#: ../src/libs/tools/filter.c:96
+msgid "description"
+msgstr "descrição"
+
+#: ../src/common/metadata.c:50
+msgid "rights"
+msgstr "direitos"
+
+#: ../src/common/metadata.c:51
+msgid "notes"
+msgstr "notas"
+
+#: ../src/common/metadata.c:52
+msgid "version name"
+msgstr "nome de versão"
+
+#: ../src/common/noiseprofiles.c:26
+msgid "generic poissonian"
+msgstr "distribuição de Poisson genérica"
+
+#: ../src/common/noiseprofiles.c:61
+#, c-format
+msgid "noiseprofile file `%s' is not valid"
+msgstr "perfil de controle de ruído `%s' não é válido"
+
+#: ../src/common/opencl.c:791
+msgid ""
+"due to a slow GPU hardware acceleration via opencl has been de-activated."
+msgstr "devido a baixa aceleração de hardware da GPU o opencl foi desativado."
+
+#: ../src/common/opencl.c:798
+msgid ""
+"multiple GPUs detected - opencl scheduling profile has been set accordingly."
+msgstr ""
+"detectadas múltiplas GPUs - o perfil de escalonamento foi ajustado de acordo."
+
+#: ../src/common/opencl.c:805
+msgid ""
+"very fast GPU detected - opencl scheduling profile has been set accordingly."
+msgstr ""
+"GPU muito rápida detectada - o perfil de escalonamento foi ajustado de "
+"acordo."
+
+#: ../src/common/opencl.c:812
+msgid "opencl scheduling profile set to default."
+msgstr "perfil de escalonamento OpenCL ajustado para default."
+
+#: ../src/common/pdf.h:88 ../src/iop/lens.cc:1912
+#: ../src/libs/print_settings.c:1292
+msgid "mm"
+msgstr "mm"
+
+#: ../src/common/pdf.h:89 ../src/libs/print_settings.c:1293
+msgid "cm"
+msgstr "cm"
+
+#: ../src/common/pdf.h:90 ../src/libs/print_settings.c:1294
+msgid "inch"
+msgstr "polegadas"
+
+#: ../src/common/pdf.h:91
+msgid "\""
+msgstr "\""
+
+#: ../src/common/pdf.h:104
+msgid "a4"
+msgstr "a4"
+
+#: ../src/common/pdf.h:105
+msgid "a3"
+msgstr "a3"
+
+#: ../src/common/pdf.h:106
+msgid "letter"
+msgstr "carta"
+
+#: ../src/common/pdf.h:107
+msgid "legal"
+msgstr "legal"
+
+#: ../src/common/pwstorage/pwstorage.c:83
+msgid "GNOME Keyring backend is no longer supported. configure a different one"
+msgstr ""
+"o backend GNOME Keyring não é mais suportado. configure algum diferente"
+
+#: ../src/common/ratings.c:169
+#, c-format
+msgid "rejecting %d image"
+msgid_plural "rejecting %d images"
+msgstr[0] "rejeitando %d imagem"
+msgstr[1] "rejeitando %d imagens"
+
+#: ../src/common/ratings.c:171
+#, c-format
+msgid "applying rating %d to %d image"
+msgid_plural "applying rating %d to %d images"
+msgstr[0] "aplicando valor %d a %d imagem"
+msgstr[1] "aplicando valor %d a %d imagens"
+
+#: ../src/common/ratings.c:185
+msgid "no images selected to apply rating"
+msgstr "nenhuma imagem selecionada para aplicar valores"
+
+#: ../src/common/styles.c:226
+#, c-format
+msgid "style with name '%s' already exists"
+msgstr "estilo com nome '%s' já existente"
+
+#. freed by _destroy_style_shortcut_callback
+#: ../src/common/styles.c:410 ../src/common/styles.c:414
+#: ../src/common/styles.c:501 ../src/common/styles.c:585
+#: ../src/common/styles.c:963 ../src/common/styles.c:1535
+#: ../src/common/styles.c:1554
+#, c-format
+msgctxt "accel"
+msgid "styles/apply %s"
+msgstr "estilos/applicar %s"
+
+#: ../src/common/styles.c:507 ../src/gui/styles_dialog.c:201
+#, c-format
+msgid "style named '%s' successfully created"
+msgstr "estilo nomeado '%s' criado com sucesso"
+
+#: ../src/common/styles.c:624 ../src/common/styles.c:651
+#: ../src/common/styles.c:691
+msgid "no image selected!"
+msgstr "nenhuma imagem selecionada!"
+
+#: ../src/common/styles.c:625
+#, c-format
+msgid "style %s successfully applied!"
+msgstr "estilo %s aplicado com sucesso!"
+
+#: ../src/common/styles.c:641
+msgid "no images nor styles selected!"
+msgstr "nenhuma imagem ou estilo selecionados!"
+
+#: ../src/common/styles.c:646
+msgid "no styles selected!"
+msgstr "nenhum estilo selecionado!"
+
+#: ../src/common/styles.c:675
+msgid "style successfully applied!"
+msgid_plural "styles successfully applied!"
+msgstr[0] "estilo aplicado com sucesso!"
+msgstr[1] "estilos aplicados com sucesso"
+
+#: ../src/common/styles.c:746
+#, c-format
+msgid "module `%s' version mismatch: %d != %d"
+msgstr "módulo `%s' versão incompatível: %d != %d"
+
+#: ../src/common/styles.c:1172
+#, c-format
+msgid "failed to overwrite style file for %s"
+msgstr "falha o sobrescrever arquivo de estilo para %s"
+
+#: ../src/common/styles.c:1178
+#, c-format
+msgid "style file for %s exists"
+msgstr "arquivo de estilo para %s existente"
+
+#: ../src/common/styles.c:1426
+#, c-format
+msgid "style %s was successfully imported"
+msgstr "estilo %s foi importado com sucesso"
+
+#: ../src/common/utility.c:454
+msgid "above sea level"
+msgstr "acima do nível do mar"
+
+#: ../src/common/utility.c:455
+msgid "below sea level"
+msgstr "abaixo do nível do mar"
+
+#: ../src/common/utility.c:506 ../src/iop/watermark.c:828
+#: ../src/libs/metadata_view.c:652
+msgid "m"
+msgstr "m"
+
+#: ../src/control/control.c:269
+msgid "working..."
+msgstr "processando..."
+
+#: ../src/control/control.c:720
+#, c-format
+msgid "scroll to change <b>%s</b> of %s %s module"
+msgstr "use o scroll para mudar <b>%s</b> do módulo %s %s"
+
+#: ../src/control/crawler.c:353 ../src/libs/select.c:39
+msgid "select"
+msgstr "selecionar"
+
+#: ../src/control/crawler.c:357
+msgid "path"
+msgstr "caminho"
+
+#: ../src/control/crawler.c:361
+msgid "xmp timestamp"
+msgstr "xmp data/hora"
+
+#: ../src/control/crawler.c:365
+msgid "database timestamp"
+msgstr "data/hora base de dados"
+
+#: ../src/control/crawler.c:374
+msgid "updated xmp sidecar files found"
+msgstr "arquivo associado xmp atualizado não encontrado"
+
+#: ../src/control/crawler.c:376
+msgid "_close"
+msgstr "_fechar"
+
+#: ../src/control/crawler.c:391 ../src/libs/select.c:129
+msgid "select all"
+msgstr "seleciona tudo"
+
+#: ../src/control/crawler.c:398
+msgid "update database from selected xmp files"
+msgstr "atualiza base de dados a partir dos aquivos xmp selecionados"
+
+#: ../src/control/crawler.c:399
+msgid "overwrite selected xmp files"
+msgstr "sobrescreve aquivos xmp selecionados"
+
+#: ../src/control/jobs/camera_jobs.c:86
+#, c-format
+msgid "capturing %d image"
+msgid_plural "capturing %d images"
+msgstr[0] "capturando %d imagem"
+msgstr[1] "capturando %d imagens"
+
+#: ../src/control/jobs/camera_jobs.c:120
+msgid "please set your camera to manual mode first!"
+msgstr "por favor, primeiro defina sua câmera em modo manual!"
+
+#: ../src/control/jobs/camera_jobs.c:210
+msgid "capture images"
+msgstr "captura imagem(ns)"
+
+#: ../src/control/jobs/camera_jobs.c:281
+#, c-format
+msgid "%d/%d imported to %s"
+msgid_plural "%d/%d imported to %s"
+msgstr[0] "%d/%d importada para %s"
+msgstr[1] "%d/%d importadas para %s"
+
+#: ../src/control/jobs/camera_jobs.c:331
+msgid "starting to import images from camera"
+msgstr "começando a importar imagens da câmera"
+
+#: ../src/control/jobs/camera_jobs.c:342
+#, c-format
+msgid "importing %d image from camera"
+msgid_plural "importing %d images from camera"
+msgstr[0] "importando %d imagem da câmera"
+msgstr[1] "importando %d imagens da câmera"
+
+#: ../src/control/jobs/camera_jobs.c:399 ../src/gui/camera_import_dialog.c:218
+msgid "import images from camera"
+msgstr "importar imagens da câmera"
+
+#: ../src/control/jobs/control_jobs.c:123
+msgid "failed to create film roll for destination directory, aborting move.."
+msgstr ""
+"falha ao criar rolo de filme no diretório de destino, abortando mover..."
+
+#: ../src/control/jobs/control_jobs.c:345
+msgid "exposure bracketing only works on raw images."
+msgstr "bracketing de exposição funciona apenas em imagens raw."
+
+#: ../src/control/jobs/control_jobs.c:352
+msgid "images have to be of same size and orientation!"
+msgstr "imagens devem ter o mesmo tamanho e a mesma orientação!"
+
+#: ../src/control/jobs/control_jobs.c:447
+#, c-format
+msgid "merging %d image"
+msgid_plural "merging %d images"
+msgstr[0] "fundindo %d imagem"
+msgstr[1] "fundindo %d imagens"
+
+#: ../src/control/jobs/control_jobs.c:508
+#, c-format
+msgid "wrote merged HDR `%s'"
+msgstr "escrito HDR fundido `%s'"
+
+#: ../src/control/jobs/control_jobs.c:535
+#, c-format
+msgid "duplicating %d image"
+msgid_plural "duplicating %d images"
+msgstr[0] "duplicando %d imagem"
+msgstr[1] "duplicando %d imagens"
+
+#: ../src/control/jobs/control_jobs.c:565
+#, c-format
+msgid "flipping %d image"
+msgid_plural "flipping %d images"
+msgstr[0] "espelhando %d imagem"
+msgstr[1] "espelhando %d imagens"
+
+#: ../src/control/jobs/control_jobs.c:640
+#, c-format
+msgid "removing %d image"
+msgid_plural "removing %d images"
+msgstr[0] "removendo %d imagem"
+msgstr[1] "removendo %d imagens"
+
+#: ../src/control/jobs/control_jobs.c:742
+#, c-format
+msgid "could not send %s to trash%s%s"
+msgstr "não foi possível mandar %s para a lixeira%s%s"
+
+#: ../src/control/jobs/control_jobs.c:743
+#, c-format
+msgid "could not physically delete %s%s%s"
+msgstr "não é possível excluir fisicamente %s%s%s"
+
+#: ../src/control/jobs/control_jobs.c:753
+msgid "physically delete"
+msgstr "excluir fisicamente"
+
+#: ../src/control/jobs/control_jobs.c:754
+msgid "physically delete all files"
+msgstr "excluir fisicamente todos os arquivos do disco"
+
+#: ../src/control/jobs/control_jobs.c:756
+msgid "only remove from the collection"
+msgstr "apenas remover da coleção"
+
+#: ../src/control/jobs/control_jobs.c:757
+msgid "skip to next file"
+msgstr "pular para o próximo arquivo"
+
+#: ../src/control/jobs/control_jobs.c:758
+msgid "stop process"
+msgstr "parar processo"
+
+#: ../src/control/jobs/control_jobs.c:763
+msgid "trashing error"
+msgstr "erro ao enviar para lixeira"
+
+#: ../src/control/jobs/control_jobs.c:764
+msgid "deletion error"
+msgstr "erro ao excluir"
+
+#: ../src/control/jobs/control_jobs.c:905
+#, c-format
+msgid "trashing %d image"
+msgid_plural "trashing %d images"
+msgstr[0] "enviando %d imagem para lixeira"
+msgstr[1] "enviando %d imagens para lixeira"
+
+#: ../src/control/jobs/control_jobs.c:907
+#, c-format
+msgid "deleting %d image"
+msgid_plural "deleting %d images"
+msgstr[0] "excluindo %d imagem"
+msgstr[1] "excluindo %d imagens"
+
+#: ../src/control/jobs/control_jobs.c:1034
+msgid "failed to parse GPX file"
+msgstr "falha ao analisar arquivo GPX"
+
+#: ../src/control/jobs/control_jobs.c:1099
+#, c-format
+msgid "applied matched GPX location onto %d image"
+msgid_plural "applied matched GPX location onto %d images"
+msgstr[0] "aplicada localização GPX correspondente em %d imagem"
+msgstr[1] "aplicada localização GPX correspondente em %d imagens"
+
+#: ../src/control/jobs/control_jobs.c:1114
+#, c-format
+msgid "moving %d image"
+msgstr "movendo %d imagem"
+
+#: ../src/control/jobs/control_jobs.c:1115
+#, c-format
+msgid "moving %d images"
+msgstr "movendo %d imagem"
+
+#: ../src/control/jobs/control_jobs.c:1120
+#, c-format
+msgid "copying %d image"
+msgstr "copiando %d imagem"
+
+#: ../src/control/jobs/control_jobs.c:1121
+#, c-format
+msgid "copying %d images"
+msgstr "copiando %d imagem"
+
+#: ../src/control/jobs/control_jobs.c:1136
+#, c-format
+msgid "creating local copy of %d image"
+msgid_plural "creating local copies of %d images"
+msgstr[0] "criando cópia local %d de imagem"
+msgstr[1] "criando cópias locais %d de imagens"
+
+#: ../src/control/jobs/control_jobs.c:1139
+#, c-format
+msgid "removing local copy of %d image"
+msgid_plural "removing local copies of %d images"
+msgstr[0] "removendo cópia local %d da imagem"
+msgstr[1] "removendo cópias locais %d das imagens"
+
+#: ../src/control/jobs/control_jobs.c:1183
+#, c-format
+msgid "refreshing info for %d image"
+msgid_plural "refreshing info for %d images"
+msgstr[0] "atualizando informações para %d imagem"
+msgstr[1] "atualizando informações para %d imagens"
+
+#: ../src/control/jobs/control_jobs.c:1250
+#, c-format
+msgid "exporting %d image.."
+msgid_plural "exporting %d images.."
+msgstr[0] "exportando %d imagem.."
+msgstr[1] "exportando %d imagens.."
+
+#: ../src/control/jobs/control_jobs.c:1282
+#, c-format
+msgid "exporting %d / %d to %s"
+msgstr "exportando %d / %d para %s"
+
+#: ../src/control/jobs/control_jobs.c:1303 ../src/views/darkroom.c:707
+#: ../src/views/print.c:313
+#, c-format
+msgid "image `%s' is currently unavailable"
+msgstr "imagem `%s' não está disponível"
+
+#: ../src/control/jobs/control_jobs.c:1392
+msgid "merge hdr image"
+msgstr "fundir imagem hdr"
+
+#: ../src/control/jobs/control_jobs.c:1406
+msgid "duplicate images"
+msgstr "duplicar imagens"
+
+#: ../src/control/jobs/control_jobs.c:1412
+msgid "flip images"
+msgstr "inverter (espelhar) imagens"
+
+#. get all selected images now, to avoid the set changing during ui interaction
+#: ../src/control/jobs/control_jobs.c:1419
+msgid "remove images"
+msgstr "remover imagens"
+
+#: ../src/control/jobs/control_jobs.c:1436
+#, c-format
+msgid "do you really want to remove %d image from the collection?"
+msgid_plural "do you really want to remove %d images from the collection?"
+msgstr[0] "você realmente deseja remover %d imagem da coleção?"
+msgstr[1] "você realmente deseja remover %d imagens da coleção?"
+
+#: ../src/control/jobs/control_jobs.c:1443
+msgid "remove images?"
+msgstr "remover imagens?"
+
+#. first get all selected images, to avoid the set changing during ui interaction
+#: ../src/control/jobs/control_jobs.c:1459
+#: ../src/control/jobs/control_jobs.c:1503
+msgid "delete images"
+msgstr "excluir imagens"
+
+#: ../src/control/jobs/control_jobs.c:1479
+#, c-format
+msgid "do you really want to send %d image to trash?"
+msgid_plural "do you really want to send %d images to trash?"
+msgstr[0] "você realmente deseja enviar %d imagem para a lixeira?"
+msgstr[1] "você realmente deseja enviar %d imagens para a lixeira?"
+
+#: ../src/control/jobs/control_jobs.c:1481
+#, c-format
+msgid "do you really want to physically delete %d image from disk?"
+msgid_plural "do you really want to physically delete %d images from disk?"
+msgstr[0] "você realmente deseja excluir fisicamente %d imagem do disco?"
+msgstr[1] "você realmente deseja excluir fisicamente %d imagens do disco?"
+
+#: ../src/control/jobs/control_jobs.c:1488
+#: ../src/control/jobs/control_jobs.c:1526
+msgid "trash images?"
+msgstr "enviar imagens para lixeira?"
+
+#: ../src/control/jobs/control_jobs.c:1488
+#: ../src/control/jobs/control_jobs.c:1526
+msgid "delete images?"
+msgstr "excluir imagens?"
+
+#: ../src/control/jobs/control_jobs.c:1520
+msgid "do you really want to send selected image to trash?"
+msgstr "você realmente deseja enviar a imagem selecionada para a lixeira?"
+
+#: ../src/control/jobs/control_jobs.c:1521
+msgid "do you really want to physically delete selected image from disk?"
+msgstr ""
+"você realmente deseja excluir fisicamente a imagem selecionada do disco?"
+
+#: ../src/control/jobs/control_jobs.c:1544
+msgid "move images"
+msgstr "mover imagens"
+
+#: ../src/control/jobs/control_jobs.c:1556
+#: ../src/control/jobs/control_jobs.c:1619
+msgid "_select as destination"
+msgstr "_selecionar como destino"
+
+#: ../src/control/jobs/control_jobs.c:1577
+#, c-format
+msgid ""
+"do you really want to physically move %d image to %s?\n"
+"(all duplicates will be moved along)"
+msgid_plural ""
+"do you really want to physically move %d images to %s?\n"
+"(all duplicates will be moved along)"
+msgstr[0] ""
+"você realmente deseja mover fisicamente %d imagem para %s?\n"
+"(todas duplicatas serão movidas também)"
+msgstr[1] ""
+"você realmente deseja mover fisicamente as %d imagens para %s?\n"
+"(todas duplicatas serão movidas também)"
+
+#: ../src/control/jobs/control_jobs.c:1586
+msgid "move image?"
+msgid_plural "move images?"
+msgstr[0] "mover imagem?"
+msgstr[1] "mover imagens?"
+
+#: ../src/control/jobs/control_jobs.c:1607
+msgid "copy images"
+msgstr "copiar imagens"
+
+#: ../src/control/jobs/control_jobs.c:1640
+#, c-format
+msgid "do you really want to physically copy %d image to %s?"
+msgid_plural "do you really want to physically copy %d images to %s?"
+msgstr[0] "você realmente deseja copiar fisicamente %d imagem para %s?"
+msgstr[1] "você realmente deseja copiar fisicamente %d imagens para %s?"
+
+#: ../src/control/jobs/control_jobs.c:1646
+msgid "copy image?"
+msgid_plural "copy images?"
+msgstr[0] "copiar imagem?"
+msgstr[1] "copiar imagens?"
+
+#: ../src/control/jobs/control_jobs.c:1666
+#: ../src/control/jobs/control_jobs.c:1674
+msgid "local copy images"
+msgstr "copiar imagens localmente"
+
+#: ../src/control/jobs/control_jobs.c:1681 ../src/libs/image.c:597
+msgid "refresh exif"
+msgstr "atualizar exif"
+
+#: ../src/control/jobs/control_jobs.c:1745
+#, c-format
+msgid "failed to get parameters from storage module `%s', aborting export.."
+msgstr ""
+"falha o obter parâmetros do módulo de armazenamento `%s', abortando "
+"exportação.."
+
+#: ../src/control/jobs/control_jobs.c:1761
+msgid "export images"
+msgstr "exportar imagens"
+
+#: ../src/control/jobs/control_jobs.c:1786
+#, c-format
+msgid "adding time offset to %d image"
+msgid_plural "adding time offset to %d images"
+msgstr[0] "adicionando compensação de tempo a %d imagem"
+msgstr[1] "adicionando compensação de tempo a %d imagens"
+
+#: ../src/control/jobs/control_jobs.c:1801
+#, c-format
+msgid "added time offset to %d image"
+msgid_plural "added time offset to %d images"
+msgstr[0] "compensação de tempo adicionada a %d imagem"
+msgstr[1] "compensação de tempo adicionada a %d imagens"
+
+#: ../src/control/jobs/control_jobs.c:1840 ../src/libs/geotagging.c:782
+msgid "time offset"
+msgstr "intervalo de tempo"
+
+#: ../src/control/jobs/control_jobs.c:1864 ../src/libs/copy_history.c:397
+msgid "write sidecar files"
+msgstr "escrever arquivos associados"
+
+#: ../src/control/jobs/film_jobs.c:71
+msgid "import images"
+msgstr "importar imagens"
+
+#: ../src/control/jobs/film_jobs.c:145
+msgid "no supported images were found to be imported"
+msgstr "nenhuma imagem suportada foi encontrada para ser importada"
+
+#: ../src/control/jobs/film_jobs.c:199
+#, c-format
+msgid "importing %d image"
+msgid_plural "importing %d images"
+msgstr[0] "importando %d imagem"
+msgstr[1] "importando %d imagens"
+
+#: ../src/control/jobs/image_jobs.c:76
+#, c-format
+msgid "importing image %s"
+msgstr "importando imagem %s"
+
+#: ../src/control/jobs/image_jobs.c:110 ../src/libs/import.c:555
+msgid "import image"
+msgstr "importar imagem"
+
+#: ../src/develop/blend.c:2616 ../src/develop/blend.c:2930
+#, c-format
+msgid "skipped blending in module '%s': roi's do not match"
+msgstr "omitida mesclagem no módulo '%s': roi is desigual"
+
+#: ../src/develop/blend.c:2649 ../src/develop/blend.c:2962
+msgid "could not allocate buffer for blending"
+msgstr "não foi possível alocar buffer para mesclagem"
+
+#: ../src/develop/blend_gui.c:590 ../src/develop/blend_gui.c:1709
+msgid "input"
+msgstr "entrada"
+
+#: ../src/develop/blend_gui.c:590 ../src/develop/blend_gui.c:1698
+msgid "output"
+msgstr "saída"
+
+#: ../src/develop/blend_gui.c:614
+msgid " (zoom)"
+msgstr " (zoom)"
+
+#: ../src/develop/blend_gui.c:619
+msgid " (log)"
+msgstr " (log)"
+
+#: ../src/develop/blend_gui.c:1488
+msgid "sliders for L channel"
+msgstr "deslizante para canal L"
+
+#: ../src/develop/blend_gui.c:1488
+msgid "sliders for a channel"
+msgstr "deslizante para canal a"
+
+#: ../src/develop/blend_gui.c:1488
+msgid "sliders for b channel"
+msgstr "deslizante para canal b"
+
+#: ../src/develop/blend_gui.c:1489
+msgid "sliders for chroma channel (of LCh)"
+msgstr "deslizante para canal croma (de LCh)"
+
+#: ../src/develop/blend_gui.c:1489
+msgid "sliders for hue channel (of LCh)"
+msgstr "deslizante para canal matiz (de LCh)"
+
+#: ../src/develop/blend_gui.c:1490
+msgid " g "
+msgstr " g "
+
+#: ../src/develop/blend_gui.c:1490
+msgid " R "
+msgstr " R "
+
+#: ../src/develop/blend_gui.c:1490
+msgid " G "
+msgstr " G "
+
+#: ../src/develop/blend_gui.c:1490
+msgid " B "
+msgstr " B "
+
+#: ../src/develop/blend_gui.c:1490
+msgid " H "
+msgstr " H "
+
+#: ../src/develop/blend_gui.c:1490
+msgid " S "
+msgstr " S "
+
+#: ../src/develop/blend_gui.c:1490
+msgid " L "
+msgstr " L "
+
+#: ../src/develop/blend_gui.c:1492
+msgid "sliders for gray value"
+msgstr "deslizante para valor cinza"
+
+#: ../src/develop/blend_gui.c:1492
+msgid "sliders for red channel"
+msgstr "deslizante para canal vermelho"
+
+#: ../src/develop/blend_gui.c:1492
+msgid "sliders for green channel"
+msgstr "deslizante para canal verde"
+
+#: ../src/develop/blend_gui.c:1493
+msgid "sliders for blue channel"
+msgstr "deslizante para canal azul"
+
+#: ../src/develop/blend_gui.c:1493
+msgid "sliders for hue channel (of HSL)"
+msgstr "deslizante para canal matiz (de HSL)"
+
+#: ../src/develop/blend_gui.c:1494
+msgid "sliders for chroma channel (of HSL)"
+msgstr "deslizante para canal croma (de HSL)"
+
+#: ../src/develop/blend_gui.c:1494
+msgid "sliders for value channel (of HSL)"
+msgstr "deslizante para canal valor (de HSL)"
+
+#: ../src/develop/blend_gui.c:1496
+msgid ""
+"adjustment based on input received by this module:\n"
+"* range defined by upper markers: blend fully\n"
+"* range defined by lower markers: do not blend at all\n"
+"* range between adjacent upper/lower markers: blend gradually"
+msgstr ""
+"ajuste baseado em entradas recebidas por este módulo:\n"
+"* faixa definida pelo marcador superior: mesclar completamente\n"
+"* faixa definida pelo marcador inferior: não mesclar\n"
+"* faixa entre marcadores superiores/inferiores adjacentes: mesclar "
+"gradualmente"
+
+#: ../src/develop/blend_gui.c:1500
+msgid ""
+"adjustment based on unblended output of this module:\n"
+"* range defined by upper markers: blend fully\n"
+"* range defined by lower markers: do not blend at all\n"
+"* range between adjacent upper/lower markers: blend gradually"
+msgstr ""
+"ajuste baseado em saídas sem mesclar deste módulo:\n"
+"* faixa definida pelo marcador superior: mesclar completamente\n"
+"* faixa definida pelo marcador inferior: não mesclar\n"
+"* faixa entre marcadores superiores/inferiores adjacentes: mesclar "
+"gradualmente"
+
+#: ../src/develop/blend_gui.c:1660 ../src/iop/colorzones.c:2379
+#: ../src/iop/rgbcurve.c:1419 ../src/iop/tonecurve.c:1280
+msgid ""
+"pick GUI color from image\n"
+"ctrl+click to select an area"
+msgstr ""
+"selecionar cor da GUI na imagem\n"
+"ctrl+clique para selecionar uma área"
+
+#: ../src/develop/blend_gui.c:1667
+msgid ""
+"set the range based on an area from the image\n"
+"drag to use the input image\n"
+"ctrl+drag to use the output image"
+msgstr ""
+"determina a faixa baseando-se em uma área da imagem\n"
+"arraste para usar a imagem de entrada\n"
+"ctrl+arraste para usar a imagem de saída"
+
+#: ../src/develop/blend_gui.c:1672
+msgid "reset blend mask settings"
+msgstr "redefine configurações da mascara de mesclagem"
+
+#: ../src/develop/blend_gui.c:1675
+msgid "invert all channel's polarities"
+msgstr "inverter as polaridades de todos canais"
+
+#: ../src/develop/blend_gui.c:1685 ../src/develop/blend_gui.c:1689
+msgid "toggle polarity. best seen by enabling 'display mask'"
+msgstr "alterna polaridade. melhor visto habilitando 'mostra máscara'"
+
+#: ../src/develop/blend_gui.c:1720 ../src/develop/blend_gui.c:1721
+msgid ""
+"double click to reset. press 'a' to toggle available slider modes.\n"
+"press 'c' to toggle view of channel data. press 'm' to toggle mask view."
+msgstr ""
+"clique duplo para resetar. pressione 'a' para alternar os modos disponíveis "
+"de controle deslizante.\n"
+"pressione 'c' para alternar visualuzação de dados de canal. pressione 'm' "
+"para alternar visualuzação de máscara"
+
+#: ../src/develop/blend_gui.c:1757 ../src/develop/blend_gui.c:2462
+msgid "parametric mask"
+msgstr "máscara paramétrica"
+
+#: ../src/develop/blend_gui.c:1786
+#, c-format
+msgid "%d shape used"
+msgid_plural "%d shapes used"
+msgstr[0] "%d forma usada"
+msgstr[1] "%d formas usadas"
+
+#: ../src/develop/blend_gui.c:1791 ../src/develop/blend_gui.c:1841
+#: ../src/develop/blend_gui.c:1935 ../src/develop/blend_gui.c:2047
+msgid "no mask used"
+msgstr "nenhuma máscara utilizada"
+
+#: ../src/develop/blend_gui.c:1840 ../src/develop/blend_gui.c:2046
+#: ../src/develop/blend_gui.c:2495 ../src/develop/blend_gui.c:2671
+#: ../src/develop/blend_gui.c:2679 ../src/develop/blend_gui.c:2701
+#: ../src/develop/blend_gui.c:2734 ../src/develop/blend_gui.c:2742
+#: ../src/develop/blend_gui.c:2750 ../src/develop/blend_gui.c:2760
+msgid "blend"
+msgstr "mesclar"
+
+#: ../src/develop/blend_gui.c:1840 ../src/develop/blend_gui.c:1910
+#: ../src/develop/blend_gui.c:2453
+msgid "drawn mask"
+msgstr "desenhar máscara"
+
+#: ../src/develop/blend_gui.c:1852
+msgid "show and edit mask elements"
+msgstr "mostrar e editar elementos de máscara"
+
+#: ../src/develop/blend_gui.c:1858
+msgid "toggle polarity of drawn mask"
+msgstr "inverte polaridade da mascara desenhada"
+
+#: ../src/develop/blend_gui.c:1869
+msgid ""
+"add gradient\n"
+"ctrl+click to add multiple gradients"
+msgstr ""
+"adicionar gradiente\n"
+"crtl+clique para adicionar múltiplos gradientes"
+
+#: ../src/develop/blend_gui.c:1878 ../src/iop/retouch.c:2420
+#: ../src/iop/spots.c:806
+msgid ""
+"add path\n"
+"ctrl+click to add multiple paths"
+msgstr ""
+"adicionar caminho\n"
+"ctrl-clique para adicionar múltiplos caminhos"
+
+#: ../src/develop/blend_gui.c:1887 ../src/iop/retouch.c:2427
+#: ../src/iop/spots.c:813
+msgid ""
+"add ellipse\n"
+"ctrl+click to add multiple ellipses"
+msgstr ""
+"adicionar elipse\n"
+"ctrl-clique para adicionar múltiplas elipses"
+
+#: ../src/develop/blend_gui.c:1896 ../src/iop/retouch.c:2434
+#: ../src/iop/spots.c:820
+msgid ""
+"add circle\n"
+"ctrl+click to add multiple circles"
+msgstr ""
+"adicionar círculo\n"
+"ctrl-clique para adicionar múltiplos círculos"
+
+#: ../src/develop/blend_gui.c:1905 ../src/iop/retouch.c:2414
+msgid ""
+"add brush\n"
+"ctrl+click to add multiple brush strokes"
+msgstr ""
+"adicionar pincelada\n"
+"ctrl+clique para adicionar múltiplas pinceladas"
+
+#: ../src/develop/blend_gui.c:2046 ../src/develop/blend_gui.c:2483
+msgid "raster mask"
+msgstr "máscara de matriz de picels"
+
+#: ../src/develop/blend_gui.c:2056
+msgid "toggle polarity of raster mask"
+msgstr "alterna polaridade da máscara raster"
+
+#. * generate a list of all available blend modes
+#: ../src/develop/blend_gui.c:2383 ../src/libs/live_view.c:406
+msgctxt "blendmode"
+msgid "normal"
+msgstr "normal"
+
+#: ../src/develop/blend_gui.c:2384
+msgctxt "blendmode"
+msgid "normal bounded"
+msgstr "normal limitado"
+
+#: ../src/develop/blend_gui.c:2385 ../src/libs/live_view.c:415
+msgctxt "blendmode"
+msgid "lighten"
+msgstr "clarear"
+
+#: ../src/develop/blend_gui.c:2386 ../src/libs/live_view.c:414
+msgctxt "blendmode"
+msgid "darken"
+msgstr "escurecer"
+
+#: ../src/develop/blend_gui.c:2387 ../src/libs/live_view.c:411
+msgctxt "blendmode"
+msgid "multiply"
+msgstr "multiplicar"
+
+#: ../src/develop/blend_gui.c:2388
+msgctxt "blendmode"
+msgid "average"
+msgstr "média"
+
+#: ../src/develop/blend_gui.c:2389
+msgctxt "blendmode"
+msgid "addition"
+msgstr "adição"
+
+#: ../src/develop/blend_gui.c:2390
+msgctxt "blendmode"
+msgid "subtract"
+msgstr "subtração"
+
+#: ../src/develop/blend_gui.c:2391 ../src/libs/live_view.c:420
+msgctxt "blendmode"
+msgid "difference"
+msgstr "diferença"
+
+#: ../src/develop/blend_gui.c:2392 ../src/libs/live_view.c:412
+msgctxt "blendmode"
+msgid "screen"
+msgstr "tela"
+
+#: ../src/develop/blend_gui.c:2393 ../src/libs/live_view.c:413
+msgctxt "blendmode"
+msgid "overlay"
+msgstr "sobrepõe"
+
+#: ../src/develop/blend_gui.c:2394
+msgctxt "blendmode"
+msgid "softlight"
+msgstr "luz suave"
+
+#: ../src/develop/blend_gui.c:2395
+msgctxt "blendmode"
+msgid "hardlight"
+msgstr "luz direta"
+
+#: ../src/develop/blend_gui.c:2396
+msgctxt "blendmode"
+msgid "vividlight"
+msgstr "luz brilhante"
+
+#: ../src/develop/blend_gui.c:2397
+msgctxt "blendmode"
+msgid "linearlight"
+msgstr "luz linear"
+
+#: ../src/develop/blend_gui.c:2398
+msgctxt "blendmode"
+msgid "pinlight"
+msgstr "luz do pino"
+
+#: ../src/develop/blend_gui.c:2399
+msgctxt "blendmode"
+msgid "lightness"
+msgstr "luminosidade"
+
+#: ../src/develop/blend_gui.c:2400
+msgctxt "blendmode"
+msgid "chroma"
+msgstr "croma"
+
+#: ../src/develop/blend_gui.c:2401
+msgctxt "blendmode"
+msgid "hue"
+msgstr "matiz"
+
+#: ../src/develop/blend_gui.c:2402
+msgctxt "blendmode"
+msgid "color"
+msgstr "cor"
+
+#: ../src/develop/blend_gui.c:2403
+msgctxt "blendmode"
+msgid "coloradjustment"
+msgstr "ajuste de cores"
+
+#: ../src/develop/blend_gui.c:2405
+msgctxt "blendmode"
+msgid "Lab lightness"
+msgstr "luminosidade Lab"
+
+#: ../src/develop/blend_gui.c:2407
+msgctxt "blendmode"
+msgid "Lab color"
+msgstr "cor Lab"
+
+#: ../src/develop/blend_gui.c:2408
+msgctxt "blendmode"
+msgid "Lab L-channel"
+msgstr "Lab canal-L"
+
+#: ../src/develop/blend_gui.c:2410
+msgctxt "blendmode"
+msgid "Lab a-channel"
+msgstr "Lab canal-a"
+
+#: ../src/develop/blend_gui.c:2412
+msgctxt "blendmode"
+msgid "Lab b-channel"
+msgstr "Lab canal-b"
+
+#: ../src/develop/blend_gui.c:2414
+msgctxt "blendmode"
+msgid "HSV lightness"
+msgstr "luminosidade HSV"
+
+#: ../src/develop/blend_gui.c:2416
+msgctxt "blendmode"
+msgid "HSV color"
+msgstr "cor HSV"
+
+#: ../src/develop/blend_gui.c:2417
+msgctxt "blendmode"
+msgid "RGB red channel"
+msgstr "canal RGB vermelho"
+
+#: ../src/develop/blend_gui.c:2419
+msgctxt "blendmode"
+msgid "RGB green channel"
+msgstr "canal RGB verde"
+
+#: ../src/develop/blend_gui.c:2421
+msgctxt "blendmode"
+msgid "RGB blue channel"
+msgstr "canal RGB azul"
+
+#. * deprecated blend modes: make them available as legacy history stacks might want them
+#: ../src/develop/blend_gui.c:2425
+msgctxt "blendmode"
+msgid "difference (deprecated)"
+msgstr "diferença (obsoleto)"
+
+#: ../src/develop/blend_gui.c:2427
+msgctxt "blendmode"
+msgid "inverse (deprecated)"
+msgstr "inverter (obsoleto)"
+
+#: ../src/develop/blend_gui.c:2429
+msgctxt "blendmode"
+msgid "normal (deprecated)"
+msgstr "normal (obsoleto)"
+
+#: ../src/develop/blend_gui.c:2430
+msgctxt "blendmode"
+msgid "unbounded (deprecated)"
+msgstr "ilimitado (obsoleto)"
+
+#: ../src/develop/blend_gui.c:2445
+msgid "uniformly"
+msgstr "uniforme"
+
+#. overlays and
+#: ../src/develop/blend_gui.c:2473
+msgid "drawn & parametric mask"
+msgstr "desenhar & máscara paramétrica"
+
+#: ../src/develop/blend_gui.c:2495
+msgid "blend mode"
+msgstr "modo de mesclagem"
+
+#: ../src/develop/blend_gui.c:2496
+msgid "choose blending mode"
+msgstr "selecione modo de mesclagem"
+
+#: ../src/develop/blend_gui.c:2501 ../src/develop/blend_gui.c:2559
+#: ../src/develop/blend_gui.c:2619
+msgid "normal & difference modes"
+msgstr "modos normal & diferença"
+
+#: ../src/develop/blend_gui.c:2510 ../src/develop/blend_gui.c:2568
+#: ../src/develop/blend_gui.c:2628
+msgid "lighten modes"
+msgstr "modos de clareamento"
+
+#: ../src/develop/blend_gui.c:2517 ../src/develop/blend_gui.c:2575
+#: ../src/develop/blend_gui.c:2635
+msgid "darken modes"
+msgstr "modos de escurecimento"
+
+#: ../src/develop/blend_gui.c:2524 ../src/develop/blend_gui.c:2582
+#: ../src/develop/blend_gui.c:2642
+msgid "contrast enhancing modes"
+msgstr "modos de melhoria de contraste"
+
+#: ../src/develop/blend_gui.c:2537 ../src/develop/blend_gui.c:2595
+msgid "color channel modes"
+msgstr "modos de canal de cor"
+
+#. Add opacity/scale sliders to table
+#: ../src/develop/blend_gui.c:2671 ../src/iop/watermark.c:1474
+msgid "opacity"
+msgstr "opacidade"
+
+#: ../src/develop/blend_gui.c:2674
+msgid "set the opacity of the blending"
+msgstr "defina a opacidade da mesclagem"
+
+#: ../src/develop/blend_gui.c:2679
+msgid "combine masks"
+msgstr "combinar máscaras"
+
+#: ../src/develop/blend_gui.c:2681
+msgid "exclusive"
+msgstr "exclusivo"
+
+#: ../src/develop/blend_gui.c:2684
+msgid "inclusive"
+msgstr "inclusivo"
+
+#: ../src/develop/blend_gui.c:2687
+msgid "exclusive & inverted"
+msgstr "exclusivo & invertido"
+
+#: ../src/develop/blend_gui.c:2690
+msgid "inclusive & inverted"
+msgstr "inclusivo & invertido"
+
+#: ../src/develop/blend_gui.c:2695
+msgid ""
+"how to combine individual drawn mask and different channels of parametric "
+"mask"
+msgstr ""
+"como combinar máscara desenhada individualmente e diferentes canais da "
+"máscara paramétrica"
+
+#: ../src/develop/blend_gui.c:2701
+msgid "invert mask"
+msgstr "inverte máscara"
+
+#: ../src/develop/blend_gui.c:2710
+msgid "apply mask in normal or inverted mode"
+msgstr "aplica máscara no modo normal ou invertido"
+
+#: ../src/develop/blend_gui.c:2716
+msgid "feathering guide"
+msgstr "guia de enevoamento"
+
+#: ../src/develop/blend_gui.c:2718
+msgid "output image"
+msgstr "imagem de saída"
+
+#: ../src/develop/blend_gui.c:2722
+msgid "input image"
+msgstr "imagem de entrada"
+
+#: ../src/develop/blend_gui.c:2728
+msgid "choose to guide mask by input or output image"
+msgstr "escolha guiar a máscara pela imagem de entrada ou pela imagem de saída"
+
+#: ../src/develop/blend_gui.c:2734
+msgid "feathering radius"
+msgstr "raio de enevoamento"
+
+#: ../src/develop/blend_gui.c:2736
+msgid "spatial radius of feathering"
+msgstr "raio espacial do enevoamento"
+
+#: ../src/develop/blend_gui.c:2742
+msgid "mask blur"
+msgstr "mascara de desfoque"
+
+#: ../src/develop/blend_gui.c:2744
+msgid "radius for gaussian blur of blend mask"
+msgstr "raio para desfoque gaussiano da máscara de mesclagem"
+
+#: ../src/develop/blend_gui.c:2750 ../src/iop/retouch.c:2688
+msgid "mask opacity"
+msgstr "opacidade da máscara"
+
+#: ../src/develop/blend_gui.c:2752
+msgid ""
+"shifts and tilts the tone curve of the blend mask to adjust its brightness "
+"without affecting fully transparent/fully opaque regions"
+msgstr ""
+"desloca e inclina a curva de tom da máscara de mescla para ajustar sua "
+"luminosidade sem afetar regiões completamente transparentes ou completamente "
+"opacas"
+
+#: ../src/develop/blend_gui.c:2760
+msgid "mask contrast"
+msgstr "contraste da máscara"
+
+#: ../src/develop/blend_gui.c:2762
+msgid ""
+"gives the tone curve of the blend mask an s-like shape to adjust its contrast"
+msgstr ""
+"dá a curva de tons da máscara de mesclagem como uma forma em S para ajustar "
+"seu contraste"
+
+#: ../src/develop/blend_gui.c:2769
+msgid ""
+"display mask and/or color channel. ctrl+click to display mask, shift+click "
+"to display channel. hover over parametric mask slider to select channel for "
+"display"
+msgstr ""
+"mostra máscara e/ou canal de cor. ctrl-click mostra máscara, shift-click "
+"mostra canal. passe pelo slider da máscara paramétrica para escolher o canal "
+"a mostrar"
+
+#: ../src/develop/blend_gui.c:2777
+msgid "temporarily switch off blend mask. only for module in focus"
+msgstr ""
+"desliga temporariamente a máscara de mesclagem. apenas para módulo em uso"
+
+#: ../src/develop/blend_gui.c:2807
+msgid "mask refinement"
+msgstr "refinamento de máscara"
+
+#: ../src/develop/develop.c:1839
+#, c-format
+msgid "%s: module `%s' version mismatch: %d != %d"
+msgstr "%s: módulo `%s' versão incompatível: %d != %d"
+
+#: ../src/develop/imageop.c:1094
+msgid "new instance"
+msgstr "nova instância"
+
+#: ../src/develop/imageop.c:1100
+msgid "duplicate instance"
+msgstr "duplicar instância"
+
+#: ../src/develop/imageop.c:1106 ../src/libs/masks.c:1170
+msgid "move up"
+msgstr "mover para cima"
+
+#: ../src/develop/imageop.c:1112 ../src/libs/masks.c:1173
+msgid "move down"
+msgstr "mover para baixo"
+
+#: ../src/develop/imageop.c:1118 ../src/libs/image.c:169
+#: ../src/libs/tagging.c:1321 ../src/libs/tagging.c:1408
+msgid "delete"
+msgstr "excluir"
+
+#: ../src/develop/imageop.c:1125 ../src/libs/tagging.c:1832
+msgid "rename"
+msgstr "renomear"
+
+#: ../src/develop/imageop.c:1179 ../src/develop/imageop.c:2135
+#, c-format
+msgid "%s is switched on"
+msgstr "%s está ligado"
+
+#: ../src/develop/imageop.c:1179 ../src/develop/imageop.c:2135
+#, c-format
+msgid "%s is switched off"
+msgstr "%s está desligado"
+
+#: ../src/develop/imageop.c:1507 ../src/gui/accelerators.c:1041
+#: ../src/gui/accelerators.c:1125 ../src/gui/accelerators.c:1340
+#: ../src/gui/accelerators.c:1365 ../src/gui/import_metadata.c:162
+#: ../src/gui/presets.c:198 ../src/gui/presets.c:310 ../src/gui/presets.c:670
+#: ../src/iop/temperature.c:1464 ../src/libs/lib.c:338 ../src/libs/lib.c:375
+#: ../src/libs/lib.c:1231
+msgid "preset"
+msgstr "predefinição"
+
+#: ../src/develop/imageop.c:1527
+msgctxt "accel"
+msgid "fusion"
+msgstr "fusão"
+
+#. Adding the optional show accelerator to the table (blank)
+#: ../src/develop/imageop.c:1532 ../src/libs/lib.c:648
+msgctxt "accel"
+msgid "show module"
+msgstr "mostrar módulo"
+
+#: ../src/develop/imageop.c:1533
+msgctxt "accel"
+msgid "enable module"
+msgstr "habilita módulo"
+
+#: ../src/develop/imageop.c:1534
+msgctxt "accel"
+msgid "focus module"
+msgstr "focar módulo"
+
+#: ../src/develop/imageop.c:1536 ../src/libs/lib.c:640
+msgctxt "accel"
+msgid "reset module parameters"
+msgstr "redefine parâmetros do módulo"
+
+#: ../src/develop/imageop.c:1537 ../src/libs/lib.c:644
+msgctxt "accel"
+msgid "show preset menu"
+msgstr "mostrar menu de predefinição"
+
+#: ../src/develop/imageop.c:2093
+msgid ""
+"multiple instances actions\n"
+"middle-click creates new instance"
+msgstr ""
+"ações em múltiplas instâncias\n"
+"click com botão do meio cria nova instância"
+
+#: ../src/develop/imageop.c:2104 ../src/libs/lib.c:1066
+msgid "reset parameters"
+msgstr "redefine parâmetros"
+
+#. Adding the outer container
+#: ../src/develop/imageop.c:2112 ../src/gui/preferences.c:754
+#: ../src/libs/lib.c:1075
+msgid "presets"
+msgstr "predefinições"
+
+#: ../src/develop/imageop.c:2114
+msgid ""
+"presets\n"
+"middle-click to apply on new instance"
+msgstr ""
+"pre-configurações\n"
+"click com botão do meio aplica em nova instância"
+
+#: ../src/develop/imageop.c:2409
+msgid "ERROR"
+msgstr "ERRO"
+
+#: ../src/develop/lightroom.c:1077
+msgid "cannot find lightroom XMP!"
+msgstr "XMP do lightroom não encontrado!"
+
+#: ../src/develop/lightroom.c:1109 ../src/develop/lightroom.c:1131
+#: ../src/develop/lightroom.c:1151
+#, c-format
+msgid "`%s' not a lightroom XMP!"
+msgstr "`%s' não é um XMP do lightroom!"
+
+#: ../src/develop/lightroom.c:1519 ../src/libs/tools/filter.c:89
+msgid "rating"
+msgstr "classificação"
+
+#: ../src/develop/lightroom.c:1547
+#, c-format
+msgid "%s has been imported"
+msgid_plural "%s have been imported"
+msgstr[0] "%s foi importado"
+msgstr[1] "%s foram importadas"
+
+#: ../src/develop/masks/masks.c:157
+msgid "[SHAPE] remove shape"
+msgstr "[FORMA] remover forma"
+
+#: ../src/develop/masks/masks.c:164
+msgid "[PATH creation] add a smooth node"
+msgstr "[CAMINHO criação] adiciona nó suave"
+
+#: ../src/develop/masks/masks.c:170
+msgid "[PATH creation] add a sharp node"
+msgstr "[CAMINHO criação] adicionar un nó nítido"
+
+#: ../src/develop/masks/masks.c:175
+msgid "[PATH creation] terminate path creation"
+msgstr "[CAMINHO em nó] terminar criação de caminho"
+
+#: ../src/develop/masks/masks.c:181
+msgid "[PATH on node] switch between smooth/sharp node"
+msgstr "[CAMINHO em nó] mudar entre nó suave/nítido"
+
+#: ../src/develop/masks/masks.c:186
+msgid "[PATH on node] remove the node"
+msgstr "[CAMINHO em nó] remover o nó"
+
+#: ../src/develop/masks/masks.c:191
+msgid "[PATH on feather] reset curvature"
+msgstr "[CAMINHO em enevoamento] reseta curvatura"
+
+#: ../src/develop/masks/masks.c:197
+msgid "[PATH on segment] add node"
+msgstr "[CAMINHO em segmento] adicionar nó"
+
+#: ../src/develop/masks/masks.c:202
+msgid "[PATH] change size"
+msgstr "[CAMINHO] mudar tamanho"
+
+#: ../src/develop/masks/masks.c:208
+msgid "[PATH] change opacity"
+msgstr "[CAMINHO] mudar opacidade"
+
+#: ../src/develop/masks/masks.c:214
+msgid "[PATH] change feather size"
+msgstr "[CAMINHO] muda tamanho do enevoamento"
+
+#: ../src/develop/masks/masks.c:221
+msgid "[GRADIENT on pivot] rotate shape"
+msgstr "[GRADIENTE em pivô] girar a forma"
+
+#: ../src/develop/masks/masks.c:226
+msgid "[GRADIENT creation] set rotation"
+msgstr "[GRADIENTE criação] estabelecer rotação"
+
+#: ../src/develop/masks/masks.c:231
+msgid "[GRADIENT] change curvature"
+msgstr "[GRADIENTE] mudar curvatura"
+
+#: ../src/develop/masks/masks.c:237
+msgid "[GRADIENT] change compression"
+msgstr "[GRADIENTE] mudar compressão"
+
+#: ../src/develop/masks/masks.c:243
+msgid "[GRADIENT] change opacity"
+msgstr "[GRADIENTE] mudar opacidade"
+
+#: ../src/develop/masks/masks.c:250
+msgid "[ELLIPSE] change size"
+msgstr "[ELIPSE] mudar tamanho"
+
+#: ../src/develop/masks/masks.c:256
+msgid "[ELLIPSE] change opacity"
+msgstr "[ELIPSE] mudar opacidade"
+
+#: ../src/develop/masks/masks.c:262
+msgid "[ELLIPSE] switch feathering mode"
+msgstr "[ELIPSE] mudar modo de enevoamento"
+
+#: ../src/develop/masks/masks.c:268
+msgid "[ELLIPSE] rotate shape"
+msgstr "[ELIPSE] girar a forma"
+
+#: ../src/develop/masks/masks.c:275
+msgid "[BRUSH creation] change size"
+msgstr "[PINCEL criação] mudar tamanho"
+
+#: ../src/develop/masks/masks.c:281
+msgid "[BRUSH creation] change hardness"
+msgstr "[PINCEL criação] mudar dureza"
+
+#: ../src/develop/masks/masks.c:287
+msgid "[BRUSH] change opacity"
+msgstr "[PINCEL] mudar opacidade"
+
+#: ../src/develop/masks/masks.c:292
+msgid "[BRUSH] change hardness"
+msgstr "[PINCEL] mudar dureza"
+
+#: ../src/develop/masks/masks.c:299
+msgid "[CIRCLE] change size"
+msgstr "[CÃRCULO] mudar tamanho"
+
+#: ../src/develop/masks/masks.c:305
+msgid "[CIRCLE] change opacity"
+msgstr "[CÃRCULO] mudar opacidade"
+
+#: ../src/develop/masks/masks.c:311
+msgid "[CIRCLE] change feather size"
+msgstr "[CÃRCULO] muda tamanho do enevoamento"
+
+#: ../src/develop/masks/masks.c:346
+msgid "ctrl+click to add a sharp node"
+msgstr "ctrl+clica para adicionar un nó agudo"
+
+#: ../src/develop/masks/masks.c:348
+msgid "ctrl+click to switch between smooth/sharp node"
+msgstr "ctrl+clica para mudar entre nó suave/agudo"
+
+#: ../src/develop/masks/masks.c:350
+msgid "right-click to reset curvature"
+msgstr "click-direito para redefinir o valor da curvatura"
+
+#: ../src/develop/masks/masks.c:352
+msgid "ctrl+click to add a node"
+msgstr "ctrl+click para adicionar um nó"
+
+#: ../src/develop/masks/masks.c:354 ../src/develop/masks/masks.c:395
+#, c-format
+msgid ""
+"shift+scroll to set feather size, ctrl+scroll to set shape opacity (%d%%)"
+msgstr ""
+"shift+scroll para ajustar tamanho do enevoamento,\n"
+"ctrl+scroll para ajustar opacidade da forma (%d%%)"
+
+#: ../src/develop/masks/masks.c:360
+#, c-format
+msgid ""
+"shift+scroll to change compression\n"
+"ctrl+scroll to set opacity (%d%%)"
+msgstr ""
+"shift+scroll para ajustar compressão,\n"
+"ctrl+scroll para ajustar opacidade (%d%%)"
+
+#: ../src/develop/masks/masks.c:362
+#, c-format
+msgid ""
+"scroll to set curvature, shift+scroll to change compression\n"
+"ctrl+scroll to set shape opacity (%d%%)"
+msgstr ""
+"scroll para ajustar a curvatura, shift+scroll para ajustar a compressão,\n"
+"ctrl+scroll para ajustar opacidade (%d%%)"
+
+#: ../src/develop/masks/masks.c:364
+msgid "move to rotate shape"
+msgstr "mover para girar a forma"
+
+#: ../src/develop/masks/masks.c:370 ../src/develop/masks/masks.c:392
+#, c-format
+msgid ""
+"scroll to set size, shift+scroll to set feather size\n"
+"ctrl+scroll to set shape opacity (%d%%)"
+msgstr ""
+"shift+scroll para ajustar tamanho do enevoamento,\n"
+"ctrl+scroll para ajustar opacidade da forma (%d%%)"
+
+#: ../src/develop/masks/masks.c:372
+msgid "ctrl+click to rotate"
+msgstr "ctrl+clica para girar"
+
+#: ../src/develop/masks/masks.c:375
+#, c-format
+msgid ""
+"shift+click to switch feathering mode, ctrl+click to rotate\n"
+"shift+scroll to set feather size, ctrl+scroll to set shape opacity (%d%%),"
+msgstr ""
+"shift+click para mudar modo de enevoamento,\n"
+"shift+scroll para ajustar tamanho do enevoamento, ctrl+click para girar, ctrl"
+"+scroll para ajustar opacidade da forma (%d%%),"
+
+#: ../src/develop/masks/masks.c:381
+#, c-format
+msgid ""
+"scroll to set brush size, shift+scroll to set hardness,\n"
+"ctrl+scroll to set opacity (%d%%)"
+msgstr ""
+"scroll para ajustar o tamanho do pincel, shift+scroll para ajustar dureza,\n"
+"ctrl+scroll para ajustar opacidade (%d%%)"
+
+#: ../src/develop/masks/masks.c:384
+#, c-format
+msgid "scroll to set hardness, ctrl+scroll to set shape opacity (%d%%)"
+msgstr ""
+"scroll para ajustar dureza, ctrl+scroll para ajustar opacidade da forma (%d"
+"%%)"
+
+#: ../src/develop/masks/masks.c:386
+msgid "scroll to set brush size"
+msgstr "scroll para ajustar o tamanho do pincel"
+
+#: ../src/develop/masks/masks.c:548
+#, c-format
+msgid "circle #%d"
+msgstr "círculo #%d"
+
+#: ../src/develop/masks/masks.c:550
+#, c-format
+msgid "path #%d"
+msgstr "caminho #%d"
+
+#: ../src/develop/masks/masks.c:552
+#, c-format
+msgid "gradient #%d"
+msgstr "gradiente #%d"
+
+#: ../src/develop/masks/masks.c:554
+#, c-format
+msgid "ellipse #%d"
+msgstr "ellipse #%d"
+
+#: ../src/develop/masks/masks.c:556
+#, c-format
+msgid "brush #%d"
+msgstr "pincel #%d"
+
+#: ../src/develop/masks/masks.c:624
+#, c-format
+msgid "copy of %s"
+msgstr "cópiar de %s"
+
+#: ../src/develop/masks/masks.c:1401
+#, c-format
+msgid "%s: mask version mismatch: %d != %d"
+msgstr "%s: versão de máscara incompatível: %d != %d"
+
+#: ../src/develop/masks/masks.c:1731 ../src/develop/masks/masks.c:2415
+#, c-format
+msgid "opacity: %d%%"
+msgstr "opacidade: %d%%"
+
+#: ../src/develop/masks/masks.c:2161 ../src/libs/masks.c:1053
+msgid "add existing shape"
+msgstr "adicionar forma existente"
+
+#: ../src/develop/masks/masks.c:2186
+msgid "use same shapes as"
+msgstr "usar mesma forma que"
+
+#: ../src/develop/masks/masks.c:2498
+msgid "masks can not contain themselves"
+msgstr "máscaras não podem conter a si mesmas"
+
+#: ../src/develop/pixelpipe_hb.c:2791
+msgid ""
+"darktable discovered problems with your OpenCL setup; disabling OpenCL for "
+"this session!"
+msgstr ""
+"darktable encontrou problemas com o sua configuração de OpenCL; "
+"disabilitando OpenCL para esta sessão!"
+
+#: ../src/develop/tiling.c:820 ../src/develop/tiling.c:1161
+#, c-format
+msgid "tiling failed for module '%s'. output might be garbled."
+msgstr ""
+"processamento de ladrilhos falhou no módulo '%s'. saída pode estar ilegível."
+
+#: ../src/dtgtk/culling.c:230
+msgid "you have reached the start of your selection"
+msgstr "você chegou ao começo da sua seleção"
+
+#: ../src/dtgtk/culling.c:239
+msgid "you have reached the start of your collection"
+msgstr "você chegou ao começo da sua coleção"
+
+#: ../src/dtgtk/culling.c:282
+msgid "you have reached the end of your selection"
+msgstr "você chegou ao final da sua seleção"
+
+#: ../src/dtgtk/culling.c:306
+msgid "you have reached the end of your collection"
+msgstr "você chegou ao final da sua coleção"
+
+#: ../src/dtgtk/culling.c:325
+#, c-format
+msgid "zooming is limited to %d images"
+msgstr "zoom é limitado a %d imagens"
+
+#: ../src/dtgtk/culling.c:922
+msgid "no image selected !"
+msgstr "nenhuma imagem selecionada !"
+
+#: ../src/dtgtk/resetlabel.c:58
+msgid "double-click to reset"
+msgstr "clique duplo para redefinir"
+
+#: ../src/dtgtk/thumbnail.c:91 ../src/dtgtk/thumbnail.c:117
+msgid "current"
+msgstr "atual"
+
+#: ../src/dtgtk/thumbnail.c:91 ../src/dtgtk/thumbnail.c:97
+msgid "leader"
+msgstr "representante de grupo"
+
+#. and the number of grouped images
+#: ../src/dtgtk/thumbnail.c:128
+msgid "grouped images"
+msgstr "imagens agrupadas"
+
+#: ../src/dtgtk/thumbnail.c:506
+msgid "fit"
+msgstr "ajustar"
+
+#. setup rating key accelerators
+#: ../src/dtgtk/thumbtable.c:2017
+msgctxt "accel"
+msgid "views/thumbtable/rate 0"
+msgstr "visões/miniaturas/sem estrelas"
+
+#: ../src/dtgtk/thumbtable.c:2018
+msgctxt "accel"
+msgid "views/thumbtable/rate 1"
+msgstr "visões/miniaturas/1 estrela"
+
+#: ../src/dtgtk/thumbtable.c:2019
+msgctxt "accel"
+msgid "views/thumbtable/rate 2"
+msgstr "visões/miniaturas/2 estrelas"
+
+#: ../src/dtgtk/thumbtable.c:2020
+msgctxt "accel"
+msgid "views/thumbtable/rate 3"
+msgstr "visões/miniaturas/3 estrelas"
+
+#: ../src/dtgtk/thumbtable.c:2021
+msgctxt "accel"
+msgid "views/thumbtable/rate 4"
+msgstr "visões/miniaturas/4 estrelas"
+
+#: ../src/dtgtk/thumbtable.c:2022
+msgctxt "accel"
+msgid "views/thumbtable/rate 5"
+msgstr "visões/miniaturas/5 estrelas"
+
+#: ../src/dtgtk/thumbtable.c:2023
+msgctxt "accel"
+msgid "views/thumbtable/rate reject"
+msgstr "visões/miniaturas/rejeitada"
+
+#. setup history key accelerators
+#: ../src/dtgtk/thumbtable.c:2026
+msgctxt "accel"
+msgid "views/thumbtable/copy history"
+msgstr "visões/miniaturas/copiar história"
+
+#: ../src/dtgtk/thumbtable.c:2027
+msgctxt "accel"
+msgid "views/thumbtable/copy history parts"
+msgstr "visões/miniaturas/copia parte da história"
+
+#: ../src/dtgtk/thumbtable.c:2029
+msgctxt "accel"
+msgid "views/thumbtable/paste history"
+msgstr "visões/miniaturas/colar história"
+
+#: ../src/dtgtk/thumbtable.c:2030
+msgctxt "accel"
+msgid "views/thumbtable/paste history parts"
+msgstr "visões/miniaturas/cola parte da história"
+
+#: ../src/dtgtk/thumbtable.c:2032
+msgctxt "accel"
+msgid "views/thumbtable/discard history"
+msgstr "visões/miniaturas/descartar história"
+
+#: ../src/dtgtk/thumbtable.c:2034
+msgctxt "accel"
+msgid "views/thumbtable/duplicate image"
+msgstr "visões/miniaturas/duplicar imagem"
+
+#: ../src/dtgtk/thumbtable.c:2035
+msgctxt "accel"
+msgid "views/thumbtable/duplicate image virgin"
+msgstr ""
+"vistas/miniaturas/duplicar imagem original (sem as modificações feitas)"
+
+#. setup color label accelerators
+#: ../src/dtgtk/thumbtable.c:2039
+msgctxt "accel"
+msgid "views/thumbtable/color red"
+msgstr "visões/miniaturas/cor vermelha"
+
+#: ../src/dtgtk/thumbtable.c:2040
+msgctxt "accel"
+msgid "views/thumbtable/color yellow"
+msgstr "visões/miniaturas/cor amarela"
+
+#: ../src/dtgtk/thumbtable.c:2041
+msgctxt "accel"
+msgid "views/thumbtable/color green"
+msgstr "visões/miniaturas/cor verde"
+
+#: ../src/dtgtk/thumbtable.c:2042
+msgctxt "accel"
+msgid "views/thumbtable/color blue"
+msgstr "visões/miniaturas/cor azul"
+
+#: ../src/dtgtk/thumbtable.c:2043
+msgctxt "accel"
+msgid "views/thumbtable/color purple"
+msgstr "visões/miniaturas/cor roxa"
+
+#: ../src/dtgtk/thumbtable.c:2044
+msgctxt "accel"
+msgid "views/thumbtable/clear color labels"
+msgstr "visões/miniaturas/remover etiquetas de cor"
+
+#. setup selection accelerators
+#: ../src/dtgtk/thumbtable.c:2047
+msgctxt "accel"
+msgid "views/thumbtable/select all"
+msgstr "visões/miniaturas/seleciona tudo"
+
+#: ../src/dtgtk/thumbtable.c:2048
+msgctxt "accel"
+msgid "views/thumbtable/select none"
+msgstr "visões/minuaturas/seleciona nenhuma"
+
+#: ../src/dtgtk/thumbtable.c:2050
+msgctxt "accel"
+msgid "views/thumbtable/invert selection"
+msgstr "visões/miniaturas/inverte seleção"
+
+#: ../src/dtgtk/thumbtable.c:2051
+msgctxt "accel"
+msgid "views/thumbtable/select film roll"
+msgstr "visões/miniaturas/seleciona rolo de filme"
+
+#: ../src/dtgtk/thumbtable.c:2052
+msgctxt "accel"
+msgid "views/thumbtable/select untouched"
+msgstr "visões/miniaturas/seleciona não modificadas"
+
+#. Column 1 - "make" of the camera.
+#. * Column 2 - "model" (use the "make" and "model" as provided by DCRaw).
+#. * Column 3 - WB name.
+#. * Column 4 - Fine tuning. MUST be in increasing order. 0 for no fine tuning.
+#. * It is enough to give only the extreme values, the other values
+#. * will be interpolated.
+#. * Column 5 - Channel multipliers.
+#. *
+#. * Minolta's ALPHA and MAXXUM models are treated as the Dynax model.
+#. *
+#. * WB name is standardized to one of the following:
+#. "Sunlight" and other variation should be switched to this:
+#: ../src/external/wb_presets.c:45 ../src/iop/lowlight.c:334
+msgid "daylight"
+msgstr "luz diurna"
+
+#. Probably same as above:
+#: ../src/external/wb_presets.c:47
+msgid "direct sunlight"
+msgstr "luz do sol direta"
+
+#: ../src/external/wb_presets.c:48
+msgid "cloudy"
+msgstr "nublado"
+
+#. "Shadows" should be switched to this:
+#: ../src/external/wb_presets.c:50
+msgid "shade"
+msgstr "sombra"
+
+#: ../src/external/wb_presets.c:51
+msgid "incandescent"
+msgstr "incandescente"
+
+#: ../src/external/wb_presets.c:52
+msgid "incandescent warm"
+msgstr "incandescente quente"
+
+#. Same as "Incandescent":
+#: ../src/external/wb_presets.c:54
+msgid "tungsten"
+msgstr "tungstênio"
+
+#: ../src/external/wb_presets.c:55
+msgid "fluorescent"
+msgstr "fluorescente"
+
+#. In Canon cameras and some newer Nikon cameras:
+#: ../src/external/wb_presets.c:57
+msgid "fluorescent high"
+msgstr "fluorescente alta"
+
+#: ../src/external/wb_presets.c:58
+msgid "cool white fluorescent"
+msgstr "fluorescente branca fria"
+
+#: ../src/external/wb_presets.c:59
+msgid "warm white fluorescent"
+msgstr "fluorescente branca quente"
+
+#: ../src/external/wb_presets.c:60
+msgid "daylight fluorescent"
+msgstr "fluorescente luz do dia"
+
+#: ../src/external/wb_presets.c:61
+msgid "neutral fluorescent"
+msgstr "fluorescente neutra"
+
+#: ../src/external/wb_presets.c:62
+msgid "white fluorescent"
+msgstr "fluorescente branco"
+
+#. In some newer Nikon cameras:
+#: ../src/external/wb_presets.c:64
+msgid "sodium-vapor fluorescent"
+msgstr "fluorescente de vapor de sódio"
+
+#: ../src/external/wb_presets.c:65
+msgid "day white fluorescent"
+msgstr "fluorescente branca de dia"
+
+#: ../src/external/wb_presets.c:66
+msgid "high temp. mercury-vapor fluorescent"
+msgstr "fluorescente de vapor de mercúrio de alta temperatura"
+
+#. Found in Nikon Coolpix P1000
+#: ../src/external/wb_presets.c:68
+msgid "high temp. mercury-vapor"
+msgstr "lâmpada de vapor de mercúrio de alta temperatura"
+
+#. On Some Panasonic
+#: ../src/external/wb_presets.c:70
+msgid "D55"
+msgstr "D55"
+
+#: ../src/external/wb_presets.c:72
+msgid "flash"
+msgstr "flash"
+
+#. For Olympus with no real "Flash" preset:
+#: ../src/external/wb_presets.c:74
+msgid "flash (auto mode)"
+msgstr "flash (modo auto)"
+
+#: ../src/external/wb_presets.c:75
+msgid "evening sun"
+msgstr "sol da tarde"
+
+#: ../src/external/wb_presets.c:76
+msgid "underwater"
+msgstr "subaquática"
+
+#: ../src/external/wb_presets.c:77 ../src/views/darkroom.c:2181
+msgid "black & white"
+msgstr "preto & branco"
+
+#: ../src/external/wb_presets.c:79
+msgid "spot WB"
+msgstr "balanço de branco pontual"
+
+#: ../src/external/wb_presets.c:80
+msgid "manual WB"
+msgstr "balanço de branco manual"
+
+#: ../src/external/wb_presets.c:81
+msgid "camera WB"
+msgstr "balanço de branco da câmera"
+
+#: ../src/external/wb_presets.c:82
+msgid "auto WB"
+msgstr "balanço de branco automático"
+
+#: ../src/generate-cache/main.c:49
+#, c-format
+msgid "creating cache directories\n"
+msgstr "criando diretórios de cache\n"
+
+#: ../src/generate-cache/main.c:55
+#, c-format
+msgid "creating cache directory '%s'\n"
+msgstr "criando diretório de cache `%s'\n"
+
+#: ../src/generate-cache/main.c:58
+#, c-format
+msgid "could not create directory '%s'!\n"
+msgstr "não foi possível criar o diretório `%s'!\n"
+
+#: ../src/generate-cache/main.c:82
+#, c-format
+msgid "warning: no images are matching the requested image id range\n"
+msgstr "alerta: não há imagens que casam com a faixa requisitada de id\n"
+
+#: ../src/generate-cache/main.c:85
+#, c-format
+msgid "warning: did you want to swap these boundaries?\n"
+msgstr "alerta: você realmente queria trocar estes limites?\n"
+
+#: ../src/generate-cache/main.c:218
+#, c-format
+msgid ""
+"warning: disk backend for thumbnail cache is disabled (cache_disk_backend)\n"
+"if you want to pre-generate thumbnails and for darktable to use them, you "
+"need to enable disk backend for thumbnail cache\n"
+"no thumbnails to be generated, done.\n"
+msgstr ""
+"alerta: o backend em disco para cache de miniaturas está desabilitado "
+"(cache_disck_backend)\n"
+"se você quer pré-gerar miniaturas e quer que o darktable as use, precisa "
+"habilitar o backend de disco para cache de miniaturas\n"
+"nenhuma miniatura a gerar, terminado.\n"
+
+#: ../src/generate-cache/main.c:229
+#, c-format
+msgid ""
+"warning: disk backend for full preview cache is disabled "
+"(cache_disk_backend_full)\n"
+"if you want to pre-generate full preview and for darktable to use them, you "
+"need to enable disk backend for full preview cache\n"
+"no thumbnails to be generated, done.\n"
+msgstr ""
+"alerta: o backend em disco para cache pré-visualizações está desabilitado "
+"(cache_disck_backend_full)\n"
+"se você quer pré-gerar pré-visualizações e quer que o darktable as use, "
+"precisa habilitar o backend de disco para cache de pré-visualizações\n"
+"nenhuma miniatura a gerar, terminado.\n"
+
+#: ../src/generate-cache/main.c:239
+#, c-format
+msgid "error: ensure that min_mip <= max_mip\n"
+msgstr "erro: garanta que min_mip <= max_mip\n"
+
+#: ../src/generate-cache/main.c:244
+#, c-format
+msgid "creating complete lighttable thumbnail cache\n"
+msgstr "criando cache completo de miniaturas para mesa de luz\n"
+
+#: ../src/gui/accelerators.c:33 ../src/gui/accelerators.c:77
+msgctxt "accel"
+msgid "global"
+msgstr "global"
+
+#: ../src/gui/accelerators.c:38 ../src/gui/accelerators.c:82
+#: ../src/gui/accelerators.c:193
+msgctxt "accel"
+msgid "views"
+msgstr "vistas"
+
+#. accel to select next value
+#. accel to select previous value
+#. dynamic accel
+#. accel to select next value
+#. accel to select previous value
+#. dynamic
+#: ../src/gui/accelerators.c:43 ../src/gui/accelerators.c:53
+#: ../src/gui/accelerators.c:55 ../src/gui/accelerators.c:57
+#: ../src/gui/accelerators.c:59 ../src/gui/accelerators.c:61
+#: ../src/gui/accelerators.c:89 ../src/gui/accelerators.c:104
+#: ../src/gui/accelerators.c:106 ../src/gui/accelerators.c:108
+#: ../src/gui/accelerators.c:110 ../src/gui/accelerators.c:112
+#: ../src/gui/accelerators.c:282 ../src/gui/accelerators.c:284
+#: ../src/gui/accelerators.c:295 ../src/gui/accelerators.c:297
+#: ../src/gui/accelerators.c:308 ../src/gui/accelerators.c:310
+#: ../src/gui/accelerators.c:782 ../src/gui/accelerators.c:791
+#: ../src/gui/accelerators.c:800
+msgctxt "accel"
+msgid "image operations"
+msgstr "operações de imagem"
+
+#: ../src/gui/accelerators.c:48 ../src/gui/accelerators.c:96
+msgctxt "accel"
+msgid "modules"
+msgstr "módulos"
+
+#: ../src/gui/accelerators.c:54 ../src/gui/accelerators.c:105
+msgctxt "accel"
+msgid "increase"
+msgstr "aumenta"
+
+#: ../src/gui/accelerators.c:56 ../src/gui/accelerators.c:107
+msgctxt "accel"
+msgid "decrease"
+msgstr "diminui"
+
+#: ../src/gui/accelerators.c:58 ../src/gui/accelerators.c:109
+msgctxt "accel"
+msgid "reset"
+msgstr "redefinir"
+
+#: ../src/gui/accelerators.c:60 ../src/gui/accelerators.c:111
+#: ../src/libs/styles.c:76
+msgctxt "accel"
+msgid "edit"
+msgstr "editar"
+
+#: ../src/gui/accelerators.c:62 ../src/gui/accelerators.c:113
+#: ../src/gui/accelerators.c:309 ../src/gui/accelerators.c:311
+#: ../src/gui/accelerators.c:801
+msgctxt "accel"
+msgid "dynamic"
+msgstr "dinâmico"
+
+#: ../src/gui/accelerators.c:67 ../src/gui/accelerators.c:119
+msgctxt "accel"
+msgid "lua"
+msgstr "lua"
+
+#: ../src/gui/accelerators.c:283 ../src/gui/accelerators.c:285
+#: ../src/gui/accelerators.c:783
+msgctxt "accel"
+msgid "next"
+msgstr "próximo"
+
+#: ../src/gui/accelerators.c:296 ../src/gui/accelerators.c:298
+#: ../src/gui/accelerators.c:792
+msgctxt "accel"
+msgid "previous"
+msgstr "anterior"
+
+#: ../src/gui/accelerators.c:650
+#, c-format
+msgid "%s %s / %s: %s"
+msgstr "%s %s / %s: %s"
+
+#: ../src/gui/accelerators.c:652
+#, c-format
+msgid "%s / %s: %s"
+msgstr "%s / %s: %s"
+
+#: ../src/gui/accelerators.c:654
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: ../src/gui/accelerators.c:659
+#, c-format
+msgid "%s %s / %s"
+msgstr "%s %s / %s"
+
+#: ../src/gui/accelerators.c:661
+#, c-format
+msgid "%s / %s"
+msgstr "%s / %s"
+
+#: ../src/gui/accelerators.c:663 ../src/libs/tagging.c:2197
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/gui/accelerators.c:1108 ../src/libs/lib.c:429
+msgid "deleting preset for obsolete module"
+msgstr "excluindo predefinição de módulo obsoleto"
+
+#: ../src/gui/camera_import_dialog.c:193
+msgid "store value as default"
+msgstr "armazena valor como padrão"
+
+#: ../src/gui/camera_import_dialog.c:198
+msgid "reset value to default"
+msgstr "redefinir ao valor padrão"
+
+#: ../src/gui/camera_import_dialog.c:219 ../src/libs/export_metadata.c:269
+#: ../src/libs/geotagging.c:420 ../src/libs/metadata.c:438
+#: ../src/libs/tagging.c:1321 ../src/libs/tagging.c:1408
+#: ../src/libs/tagging.c:1489 ../src/libs/tagging.c:1614
+#: ../src/libs/tagging.c:1832
+msgid "cancel"
+msgstr "cancela"
+
+#: ../src/gui/camera_import_dialog.c:219
+msgctxt "camera import"
+msgid "import"
+msgstr "importar"
+
+#. Top info
+#: ../src/gui/camera_import_dialog.c:235
+msgid "please wait while prefetching thumbnails of images from camera..."
+msgstr ""
+"por favor aguarde durante pre-busca de miniaturas de imagens da câmera..."
+
+#: ../src/gui/camera_import_dialog.c:242 ../src/libs/session.c:100
+msgid "jobcode"
+msgstr "código de tarefa"
+
+#: ../src/gui/camera_import_dialog.c:256
+msgid "thumbnail"
+msgstr "miniatura"
+
+#: ../src/gui/camera_import_dialog.c:260
+msgid "storage file"
+msgstr "arquivo de armazenamento"
+
+#. ignoring of jpegs. hack while we don't handle raw+jpeg in the same directories.
+#: ../src/gui/camera_import_dialog.c:278 ../src/libs/import.c:389
+msgid "ignore JPEG files"
+msgstr "ignorar arquivos JPEG"
+
+#: ../src/gui/camera_import_dialog.c:280 ../src/libs/import.c:390
+msgid ""
+"do not load files with an extension of .jpg or .jpeg. this can be useful "
+"when there are raw+JPEG in a directory."
+msgstr ""
+"não carregar arquivos com uma extensão .jpg ou jpeg. isto pode ser útil "
+"quando existem raw+JPEG em um diretório."
+
+#: ../src/gui/camera_import_dialog.c:297
+msgid "override today's date"
+msgstr "sobrescreve data de hoje"
+
+#: ../src/gui/camera_import_dialog.c:300
+msgid ""
+"check this, if you want to override the timestamp used when expanding "
+"variables:\n"
+"$(YEAR), $(MONTH), $(DAY),\n"
+"$(HOUR), $(MINUTE), $(SECONDS)"
+msgstr ""
+"marque ativo se deseja sobrescrever a marcação de data/hora usada ao "
+"expandir variáveis:\n"
+"$(YEAR), $(MONTH), $(DAY),\n"
+"$(HOUR), $(MINUTE), $(SECONDS)"
+
+#: ../src/gui/camera_import_dialog.c:316 ../src/libs/image.c:420
+msgid "images"
+msgstr "imagens"
+
+#: ../src/gui/camera_import_dialog.c:317
+msgid "settings"
+msgstr "configurações"
+
+#: ../src/gui/camera_import_dialog.c:489
+msgid ""
+"select the images from the list below that you want to import into a new "
+"filmroll"
+msgstr ""
+"selecione imagens da lista abaixo que você deseja importar em um novo rolo "
+"de filme"
+
+#: ../src/gui/camera_import_dialog.c:543
+msgid "please use YYYY-MM-DD format for date override"
+msgstr "use o formato AAAA-MM-DD para sobrescrever data"
+
+#: ../src/gui/gtk.c:287
+msgid "tooltips off"
+msgstr "não mostrar tooltips"
+
+#: ../src/gui/gtk.c:289
+msgid "tooltips on"
+msgstr "mostrar tooltip"
+
+#: ../src/gui/gtk.c:294
+msgid ""
+"tooltip visibility can only be toggled if compositing is enabled in your "
+"window manager"
+msgstr ""
+"a visibilidade de tooltips só pode ser alterada se compositing estiver "
+"habilitado em seu gerenciador de janelas"
+
+#. register keys for view switching
+#: ../src/gui/gtk.c:1300
+msgctxt "accel"
+msgid "tethering view"
+msgstr "vista de acesso remoto"
+
+#: ../src/gui/gtk.c:1301
+msgctxt "accel"
+msgid "lighttable view"
+msgstr "vista da mesa de luz"
+
+#: ../src/gui/gtk.c:1302
+msgctxt "accel"
+msgid "darkroom view"
+msgstr "sala escura"
+
+#: ../src/gui/gtk.c:1303
+msgctxt "accel"
+msgid "map view"
+msgstr "mapa"
+
+#: ../src/gui/gtk.c:1304
+msgctxt "accel"
+msgid "slideshow view"
+msgstr "apresentação"
+
+#: ../src/gui/gtk.c:1305
+msgctxt "accel"
+msgid "print view"
+msgstr "impressão"
+
+#. register ctrl-q to quit:
+#: ../src/gui/gtk.c:1328
+msgctxt "accel"
+msgid "quit"
+msgstr "sair"
+
+#. Full-screen accelerators
+#: ../src/gui/gtk.c:1333
+msgctxt "accel"
+msgid "toggle fullscreen"
+msgstr "alterna tela cheia"
+
+#: ../src/gui/gtk.c:1334
+msgctxt "accel"
+msgid "leave fullscreen"
+msgstr "sair tela cheia"
+
+#. Side-border hide/show
+#: ../src/gui/gtk.c:1342
+msgctxt "accel"
+msgid "toggle side borders"
+msgstr "alterna bordas laterais"
+
+#: ../src/gui/gtk.c:1344
+msgctxt "accel"
+msgid "toggle panels collapsing controls"
+msgstr "alterna controles para colapsar painéis"
+
+#: ../src/gui/gtk.c:1348
+msgctxt "accel"
+msgid "toggle left panel"
+msgstr "alternar painel à esquerda"
+
+#: ../src/gui/gtk.c:1352
+msgctxt "accel"
+msgid "toggle right panel"
+msgstr "alterna painel à direita"
+
+#: ../src/gui/gtk.c:1356
+msgctxt "accel"
+msgid "toggle top panel"
+msgstr "alterna painel acima"
+
+#: ../src/gui/gtk.c:1360
+msgctxt "accel"
+msgid "toggle bottom panel"
+msgstr "liga/desliga painel inferior"
+
+#. specific top/bottom toggles
+#: ../src/gui/gtk.c:1365
+msgctxt "accel"
+msgid "toggle header"
+msgstr "alterna cabeçalho"
+
+#: ../src/gui/gtk.c:1368
+msgctxt "accel"
+msgid "toggle filmstrip and timeline"
+msgstr "alterna rolo de filme e linha do tempo"
+
+#: ../src/gui/gtk.c:1372
+msgctxt "accel"
+msgid "toggle top toolbar"
+msgstr "alterna barra de ferramentas acima"
+
+#: ../src/gui/gtk.c:1376
+msgctxt "accel"
+msgid "toggle bottom toolbar"
+msgstr "alterna barra de ferramentas inferior"
+
+#: ../src/gui/gtk.c:1380
+msgctxt "accel"
+msgid "toggle all top panels"
+msgstr "alterna todos os painéis acima"
+
+#: ../src/gui/gtk.c:1384
+msgctxt "accel"
+msgid "toggle all bottom panels"
+msgstr "alterna painéis inferiores"
+
+#. toggle focus peaking everywhere
+#: ../src/gui/gtk.c:1389
+msgctxt "accel"
+msgid "toggle focus peaking"
+msgstr "alterna marcador de foco"
+
+#. View-switch
+#: ../src/gui/gtk.c:1394
+msgctxt "accel"
+msgid "switch view"
+msgstr "muda vista"
+
+#. accels window
+#: ../src/gui/gtk.c:1400
+msgctxt "accel"
+msgid "show accels window"
+msgstr "mostra janela de atalhos"
+
+#. View-switch
+#: ../src/gui/gtk.c:1403
+msgctxt "accel"
+msgid "toggle tooltip visibility"
+msgstr "alterna visibilidade de tooltips"
+
+#. font name can only use period as decimal separator
+#. but printf format strings use comma for some locales, so replace comma with period
+#: ../src/gui/gtk.c:2759
+#, c-format
+msgid "%.1f"
+msgstr "%.1f"
+
+#: ../src/gui/gtk.c:2760
+#, c-format
+msgid "Sans %s"
+msgstr "Sans %s"
+
+#: ../src/gui/gtkentry.c:184
+msgid "$(ROLL_NAME) - roll of the input image"
+msgstr "$(ROLL_NAME) - rolo da imagem de entrada"
+
+#: ../src/gui/gtkentry.c:185
+msgid "$(FILE_FOLDER) - folder containing the input image"
+msgstr "$(FILE_FOLDER) - pasta contendo a imagem de entrada"
+
+#: ../src/gui/gtkentry.c:186
+msgid "$(FILE_NAME) - basename of the input image"
+msgstr "$(FILE_NAME) - nome base do arquivo de entrada"
+
+#: ../src/gui/gtkentry.c:187
+msgid "$(FILE_EXTENSION) - extension of the input image"
+msgstr "$(FILE_EXTENSION) - extensão do arquivo de entrada"
+
+#: ../src/gui/gtkentry.c:188
+msgid "$(VERSION) - duplicate version"
+msgstr "$(VERSION) - versão duplicada"
+
+#: ../src/gui/gtkentry.c:189
+msgid ""
+"$(VERSION_IF_MULTI) - same as $(VERSION) but null string if only one version "
+"exists"
+msgstr ""
+"$(VERSION_IF_MULTI) - mesmo que $(VERSION) mas é string nula quando só uma "
+"versão existe"
+
+#: ../src/gui/gtkentry.c:190
+msgid "$(VERSION_NAME) - version name from metadata"
+msgstr "$(VERSION_NAME) - nome de versão nos metadados"
+
+#: ../src/gui/gtkentry.c:191
+msgid "$(SEQUENCE) - sequence number"
+msgstr "$(SEQUENCE) - número de sequência"
+
+#: ../src/gui/gtkentry.c:192
+msgid "$(MAX_WIDTH) - maximum image export width"
+msgstr "$(MAX_WIDTH) - largura máxima de imagem exportada"
+
+#: ../src/gui/gtkentry.c:193
+msgid "$(MAX_HEIGHT) - maximum image export height"
+msgstr "$(MAX_HEIGHT) - altura máxima de imagem exportada"
+
+#: ../src/gui/gtkentry.c:194
+msgid "$(YEAR) - year"
+msgstr "$(YEAR) - ano"
+
+#: ../src/gui/gtkentry.c:195
+msgid "$(MONTH) - month"
+msgstr "$(MONTH) - mês"
+
+#: ../src/gui/gtkentry.c:196
+msgid "$(DAY) - day"
+msgstr "$(DAY) - dia"
+
+#: ../src/gui/gtkentry.c:197
+msgid "$(HOUR) - hour"
+msgstr "$(HOUR) - hora"
+
+#: ../src/gui/gtkentry.c:198
+msgid "$(MINUTE) - minute"
+msgstr "$(MINUTE) - minuto"
+
+#: ../src/gui/gtkentry.c:199
+msgid "$(SECOND) - second"
+msgstr "$(SECOND) - segundo"
+
+#: ../src/gui/gtkentry.c:200
+msgid "$(EXIF_YEAR) - EXIF year"
+msgstr "$(EXIF_YEAR) - ano no EXIF"
+
+#: ../src/gui/gtkentry.c:201
+msgid "$(EXIF_MONTH) - EXIF month"
+msgstr "$(EXIF_MONTH) - mês no EXIF"
+
+#: ../src/gui/gtkentry.c:202
+msgid "$(EXIF_DAY) - EXIF day"
+msgstr "$(EXIF_DAY) - dia no EXIF"
+
+#: ../src/gui/gtkentry.c:203
+msgid "$(EXIF_HOUR) - EXIF hour"
+msgstr "$(EXIF_HOUR) - hora no EXIF"
+
+#: ../src/gui/gtkentry.c:204
+msgid "$(EXIF_MINUTE) - EXIF minute"
+msgstr "$(EXIF_MINUTE) - minuto no EXIF"
+
+#: ../src/gui/gtkentry.c:205
+msgid "$(EXIF_SECOND) - EXIF second"
+msgstr "$(EXIF_SECOND) - segundo no EXIF"
+
+#: ../src/gui/gtkentry.c:206
+msgid "$(EXIF_ISO) - ISO value"
+msgstr "$(EXIF_ISO) - valor ISO"
+
+#: ../src/gui/gtkentry.c:207
+msgid "$(EXIF_EXPOSURE) - EXIF exposure"
+msgstr "$(EXIF_EXPOSURE) - exposição no EXIF"
+
+#: ../src/gui/gtkentry.c:208
+msgid "$(EXIF_EXPOSURE_BIAS) - EXIF exposure bias"
+msgstr "$(EXIF_EXPOSURE_BIAS) - viés de exposição no EXIF"
+
+#: ../src/gui/gtkentry.c:209
+msgid "$(EXIF_APERTURE) - EXIF aperture"
+msgstr "$(EXIF_APERTURE) - abertura no EXIF"
+
+#: ../src/gui/gtkentry.c:210
+msgid "$(EXIF_FOCAL_LENGTH) - EXIF focal length"
+msgstr "$(EXIT_FOCAL_LENGTH) - distância focal no EXIF"
+
+#: ../src/gui/gtkentry.c:211
+msgid "$(EXIF_FOCUS_DISTANCE) - EXIF focal distance"
+msgstr "$(EXIF_FOCUS_DISTANCE) - distância de foco no EXIF"
+
+#: ../src/gui/gtkentry.c:212
+msgid "$(LONGITUDE) - longitude"
+msgstr "$(LONGITUDE) - longitude"
+
+#: ../src/gui/gtkentry.c:213
+msgid "$(LATITUDE) - latitude"
+msgstr "$(LATITUDE) - latitude"
+
+#: ../src/gui/gtkentry.c:214
+msgid "$(ELEVATION) - elevation"
+msgstr "$(ELEVATION) - elevação"
+
+#: ../src/gui/gtkentry.c:215
+msgid "$(STARS) - star rating"
+msgstr "$(STARS) - valor em estrelas"
+
+#: ../src/gui/gtkentry.c:216
+msgid "$(LABELS) - colorlabels"
+msgstr "$(LABELS) - etiquetas coloridas"
+
+#: ../src/gui/gtkentry.c:217
+msgid "$(MAKER) - camera maker"
+msgstr "$(MAKER) - fabricante da câmera"
+
+#: ../src/gui/gtkentry.c:218
+msgid "$(MODEL) - camera model"
+msgstr "$(MODEL) - modelo da câmera"
+
+#: ../src/gui/gtkentry.c:219
+msgid "$(LENS) - lens"
+msgstr "$(LENS) - lente"
+
+#: ../src/gui/gtkentry.c:220
+msgid "$(TITLE) - title from metadata"
+msgstr "$(TITLE) - título dos metadados"
+
+#: ../src/gui/gtkentry.c:221
+msgid "$(DESCRIPTION) - description from metadata"
+msgstr "$(DESCRIPTION) - descrição nos metadados"
+
+#: ../src/gui/gtkentry.c:222
+msgid "$(CREATOR) - creator from metadata"
+msgstr "$(CREATOR) - criador nos metadados"
+
+#: ../src/gui/gtkentry.c:223
+msgid "$(PUBLISHER) - publisher from metadata"
+msgstr "$(PUBLISHER) - editor dos metadados"
+
+#: ../src/gui/gtkentry.c:224
+msgid "$(RIGHTS) - rights from metadata"
+msgstr "$(RIGHTS) - direitos dos metadados"
+
+#: ../src/gui/gtkentry.c:225
+msgid "$(PICTURES_FOLDER) - pictures folder"
+msgstr "$(PICTURES_FOLDER) - pasta de imagens"
+
+#: ../src/gui/gtkentry.c:226
+msgid "$(HOME) - home folder"
+msgstr "$(HOME) - pasta home"
+
+#: ../src/gui/gtkentry.c:227
+msgid "$(DESKTOP) - desktop folder"
+msgstr "$(DESKTOP) - pasta desktop"
+
+#: ../src/gui/gtkentry.c:228
+msgid "$(OPENCL_ACTIVATED) - whether OpenCL is activated"
+msgstr "$(OPENCL_ACTIVATED) - se OpenCL é ativado"
+
+#: ../src/gui/gtkentry.c:229
+msgid "$(CATEGORY0(category)) - subtag of level 0 in hierarchical tags"
+msgstr ""
+"$(CATEGORY0(category)) - subetiqueta de nível 0 em etiquetas hierárquicas"
+
+#: ../src/gui/gtkentry.c:230
+msgid "$(TAGS) - tags as set in metadata settings"
+msgstr "$(TAGS) - etiquetas estabelecidas na configuração de metadados"
+
+#: ../src/gui/guides.c:108
+msgid "horizontal lines"
+msgstr "linhas horizontais"
+
+#: ../src/gui/guides.c:109
+msgid "number of horizontal guide lines"
+msgstr "número de linhas-guia horizontais"
+
+#: ../src/gui/guides.c:115
+msgid "vertical lines"
+msgstr "linhas verticais"
+
+#: ../src/gui/guides.c:116
+msgid "number of vertical guide lines"
+msgstr "número de linhas-guia verticais"
+
+#: ../src/gui/guides.c:122
+msgid "subdivisions"
+msgstr "subdivisões"
+
+#: ../src/gui/guides.c:123
+msgid "number of subdivisions per grid rectangle"
+msgstr "número de subdivisões por retângulo da grade"
+
+#: ../src/gui/guides.c:440
+msgid "extra"
+msgstr "extra"
+
+#: ../src/gui/guides.c:441
+msgid "golden sections"
+msgstr "seções áureas"
+
+#: ../src/gui/guides.c:442
+msgid "golden spiral sections"
+msgstr "seções espiral áurea"
+
+#: ../src/gui/guides.c:443
+msgid "golden spiral"
+msgstr "espiral áurea"
+
+#: ../src/gui/guides.c:444 ../src/imageio/format/pdf.c:682
+#: ../src/iop/denoiseprofile.c:4239 ../src/iop/lens.cc:2265
+#: ../src/iop/rawdenoise.c:958 ../src/libs/tools/filter.c:175
+msgid "all"
+msgstr "tudo"
+
+#: ../src/gui/guides.c:445
+msgid "show some extra guides"
+msgstr "mostrar algumas guias extra"
+
+#: ../src/gui/guides.c:483
+msgid "grid"
+msgstr "grade"
+
+#: ../src/gui/guides.c:485
+msgid "rules of thirds"
+msgstr "regra dos terços"
+
+#: ../src/gui/guides.c:486
+msgid "metering"
+msgstr "medição"
+
+#: ../src/gui/guides.c:487
+msgid "perspective"
+msgstr "perspectiva"
+
+#. TODO: make the number of lines configurable with a slider?
+#: ../src/gui/guides.c:488
+msgid "diagonal method"
+msgstr "método diagonal"
+
+#: ../src/gui/guides.c:489
+msgid "harmonious triangles"
+msgstr "triângulos áureos"
+
+#: ../src/gui/guides.c:493
+msgid "golden mean"
+msgstr "proporção áurea"
+
+#: ../src/gui/hist_dialog.c:185
+msgid "select parts to copy"
+msgstr "seleciona partes a copiar"
+
+#: ../src/gui/hist_dialog.c:185
+msgid "select parts to paste"
+msgstr "seleciona partes a colar"
+
+#: ../src/gui/hist_dialog.c:188 ../src/gui/styles_dialog.c:358
+msgid "select _all"
+msgstr "seleciona tudo"
+
+#: ../src/gui/hist_dialog.c:189 ../src/gui/styles_dialog.c:359
+msgid "select _none"
+msgstr "cancela seleção"
+
+#: ../src/gui/hist_dialog.c:190 ../src/gui/preferences.c:1721
+#: ../src/gui/presets.c:394 ../src/libs/lib.c:227
+msgid "_ok"
+msgstr "_ok"
+
+#: ../src/gui/hist_dialog.c:216 ../src/gui/styles_dialog.c:425
+#: ../src/gui/styles_dialog.c:434
+msgid "include"
+msgstr "incluir"
+
+#: ../src/gui/hist_dialog.c:223 ../src/gui/styles_dialog.c:454
+#: ../src/gui/styles_dialog.c:457
+msgid "item"
+msgstr "item"
+
+#: ../src/gui/hist_dialog.c:240 ../src/gui/styles_dialog.c:475
+#: ../src/gui/styles_dialog.c:517
+msgid "modules order"
+msgstr "ordem dos módulos"
+
+#: ../src/gui/hist_dialog.c:268
+msgid "can't copy history out of unaltered image"
+msgstr "não é possível copiar história de uma imagem inalterada"
+
+#. default metadata
+#: ../src/gui/import_metadata.c:98
+msgid "apply metadata on import"
+msgstr "aplicar metadados ao importar"
+
+#: ../src/gui/import_metadata.c:99
+msgid "apply some metadata to all newly imported images."
+msgstr "aplicar alguns metadados a todas imagens importadas recentemente."
+
+#: ../src/gui/import_metadata.c:165
+msgid "metadata to be applied per default"
+msgstr "metadados a ser aplicado ao importar"
+
+#: ../src/gui/import_metadata.c:175
+msgid "to be imported"
+msgstr "a ser importado"
+
+#: ../src/gui/import_metadata.c:177
+msgid ""
+"selected metadata are imported from image and override the default value"
+msgstr ""
+"metadados selecionados são importados da imagem e sobrescrevem os valores "
+"default"
+
+#: ../src/gui/import_metadata.c:227
+msgid "comma separated list of tags"
+msgstr "lista de etiquetas separadas por vírgula"
+
+#. format string and corresponding flag stored into the database
+#: ../src/gui/preferences.c:88 ../src/gui/presets.c:56
+msgid "normal images"
+msgstr "imagens normais"
+
+#: ../src/gui/preferences.c:89 ../src/gui/presets.c:57
+#: ../src/libs/metadata_view.c:342
+msgid "raw"
+msgstr "raw"
+
+#: ../src/gui/preferences.c:90 ../src/gui/presets.c:58
+msgid "HDR"
+msgstr "HDR"
+
+#: ../src/gui/preferences.c:303
+msgid "general"
+msgstr "geral"
+
+#. language
+#: ../src/gui/preferences.c:307
+msgid "interface language"
+msgstr "linguagem da interface"
+
+#: ../src/gui/preferences.c:322
+msgid "double click to reset to the system language"
+msgstr "clique duplo para voltar para a linguagem do sistema"
+
+#: ../src/gui/preferences.c:324
+msgid ""
+"set the language of the user interface. the system default is marked with an "
+"* (needs a restart)"
+msgstr ""
+"determina a linguagem da interface com o usuário. o default do sistema está "
+"marcado com * (necessário reiniciar)"
+
+#: ../src/gui/preferences.c:333
+msgid "theme"
+msgstr "tema"
+
+#: ../src/gui/preferences.c:361
+msgid "set the theme for the user interface"
+msgstr "escolher o tema para a interface de usuário"
+
+#: ../src/gui/preferences.c:373 ../src/gui/preferences.c:380
+msgid "use system font size"
+msgstr "usar o tamanho de fonte do sistema"
+
+#: ../src/gui/preferences.c:389 ../src/gui/preferences.c:396
+msgid "font size in points"
+msgstr "tamanho da fonte em pontos"
+
+#: ../src/gui/preferences.c:401
+msgid "GUI thumbs and previews DPI scaling factor"
+msgstr "Fator de escala DPI para miniaturas e pré-visualizações na interface"
+
+#: ../src/gui/preferences.c:408
+msgid ""
+"scale the thumbnails and previews resolutions for high DPI screens.\n"
+"increase if thumbnails look blurry, decrease if lighttable is too slow.\n"
+"set to -1.0 to use the system-defined global scaling.\n"
+"default is 1.0 on most systems, or 2.0 when using resolutions above "
+"1920×1080 px.\n"
+"this needs a restart to apply changes."
+msgstr ""
+"muda escala das miniaturas e pré-visualizações para telas de alta "
+"resolução.\n"
+"aumente se as miniaturas parecem borradas, diminua se a mesa de luz estiver "
+"muito lenta.\n"
+"escolha -1.0 para usar a resolução global definida pelo sistema.\n"
+"o default é 1.0 na maioria dos sistemas, ou 2.0 quando resoluções acima de\n"
+"1920×1080 px estiverem sendo usadas.\n"
+"é necessário reiniciar para que as mudanças façam efeito."
+
+#: ../src/gui/preferences.c:417
+msgid "GUI controls and text DPI"
+msgstr "Controle da interface gráfica e resolução (DPI) do texto"
+
+#: ../src/gui/preferences.c:424
+msgid ""
+"adjust the global GUI resolution to rescale controls, buttons, labels, etc.\n"
+"increase for a magnified GUI, decrease to fit more content in window.\n"
+"set to -1 to use the system-defined global resolution.\n"
+"default is 96 DPI on most systems.\n"
+"this needs a restart to apply changes."
+msgstr ""
+"ajuste da resolução global da interface para mudar a escala de controles, "
+"botões, etiquetas, etc.\n"
+"aumente para uma interface com zoom, diminua para que mais conteúdo caiba na "
+"janela.\n"
+"escolha -1 para usar a resolução global definida pelo sistema.\n"
+"o default é 96 DPI na maioria dos sistemas.\n"
+"é necessário reiniciar para que as mudanças façam efeito."
+
+#. checkbox to allow user to modify theme with user.css
+#: ../src/gui/preferences.c:433
+msgid "modify selected theme with CSS tweaks below"
+msgstr "modificar o tema selecionado com os ajustes de user.css abaixo"
+
+#: ../src/gui/preferences.c:441
+msgid "modify theme with CSS keyed below (saved to user.css)"
+msgstr "modificar o tema com o CSS abaixo (gravado no arquivo user.css)"
+
+#: ../src/gui/preferences.c:461
+msgctxt "usercss"
+msgid "save theme tweaks"
+msgstr "gravar ajustes do tema"
+
+#. load default text with some pointers
+#: ../src/gui/preferences.c:483
+msgid "/* ERROR Loading user.css */"
+msgstr "/* ERRO Carregando user.css */"
+
+#. load default text
+#: ../src/gui/preferences.c:490
+msgid ""
+"/* Enter CSS theme tweaks here */\n"
+"\n"
+msgstr ""
+"/* Entre ajustes ao tema CSS aqui */\n"
+"\n"
+
+#: ../src/gui/preferences.c:516
+msgid "darktable preferences"
+msgstr "preferências darktable"
+
+#. exif
+#: ../src/gui/preferences.c:776 ../src/gui/preferences.c:1762
+#: ../src/gui/presets.c:438 ../src/libs/metadata_view.c:118
+msgid "model"
+msgstr "modelo"
+
+#: ../src/gui/preferences.c:780 ../src/gui/preferences.c:1770
+#: ../src/gui/presets.c:445 ../src/libs/metadata_view.c:119
+msgid "maker"
+msgstr "fabricante"
+
+#: ../src/gui/preferences.c:805 ../src/iop/basicadj.c:666
+#: ../src/iop/borders.c:933 ../src/iop/levels.c:664 ../src/iop/rgblevels.c:1021
+msgid "auto"
+msgstr "auto"
+
+#. Adding the import/export buttons
+#: ../src/gui/preferences.c:814 ../src/gui/preferences.c:920
+msgctxt "preferences"
+msgid "import..."
+msgstr "importar..."
+
+#. Adding the outer container
+#: ../src/gui/preferences.c:855
+msgid "shortcuts"
+msgstr "atalhos"
+
+#: ../src/gui/preferences.c:866
+msgid "shortcut"
+msgstr "atalho"
+
+#: ../src/gui/preferences.c:870
+msgid "binding"
+msgstr "teclas de atalho"
+
+#. Adding the search button
+#: ../src/gui/preferences.c:904
+msgctxt "preferences"
+msgid "search"
+msgstr "busca"
+
+#: ../src/gui/preferences.c:905
+msgid ""
+"click or press enter to search\n"
+"click or press enter again to cycle through results"
+msgstr ""
+"clique ou pressione enter para buscar\n"
+"clique ou pressione enter novamente para circular pelos resultados"
+
+#. export button
+#: ../src/gui/preferences.c:925 ../src/libs/styles.c:629
+msgid "export..."
+msgstr "exportar..."
+
+#. Setting the notification text
+#: ../src/gui/preferences.c:1268
+msgid "press key combination to remap..."
+msgstr "pressione combinação de teclas de atalho..."
+
+#: ../src/gui/preferences.c:1369
+#, c-format
+msgid ""
+"%s accel is already mapped to\n"
+"%s.\n"
+"do you want to replace it ?"
+msgstr ""
+"atalho `%s' já mapeado para\n"
+"%s.\n"
+"Deseja sobrescrever?"
+
+#: ../src/gui/preferences.c:1375
+msgid "accel conflict"
+msgstr "conflito de atalhos"
+
+#: ../src/gui/preferences.c:1464 ../src/gui/presets.c:186 ../src/libs/lib.c:363
+#, c-format
+msgid "do you really want to delete the preset `%s'?"
+msgstr "você realmente deseja excluir a predefinição `%s'?"
+
+#: ../src/gui/preferences.c:1468 ../src/gui/presets.c:190 ../src/libs/lib.c:367
+msgid "delete preset?"
+msgstr "excluir predefinição?"
+
+#. Non-zero value indicates export
+#: ../src/gui/preferences.c:1504
+msgid "select file to export"
+msgstr "selecione arquivo para exportar"
+
+#. Zero value indicates import
+#: ../src/gui/preferences.c:1530
+msgid "select file to import"
+msgstr "selecione arquivo para importar"
+
+#: ../src/gui/preferences.c:1531 ../src/gui/preferences.c:1613
+#: ../src/libs/collect.c:355 ../src/libs/copy_history.c:117
+#: ../src/libs/geotagging.c:475 ../src/libs/import.c:556
+#: ../src/libs/import.c:662 ../src/libs/styles.c:393
+msgid "_open"
+msgstr "_abrir"
+
+#: ../src/gui/preferences.c:1572
+msgid ""
+"are you sure you want to restore the default keybindings? this will erase "
+"any modifications you have made."
+msgstr ""
+"tem certeza que quer restaurar as teclas de atalho padrão? isto irá apagar "
+"qualquer modificação realizada."
+
+#. Zero value indicates import
+#: ../src/gui/preferences.c:1612
+msgid "select preset to import"
+msgstr "selecione configuração para importar"
+
+#: ../src/gui/preferences.c:1631
+msgid "failed to import preset"
+msgstr "falha ao importar configuração"
+
+#: ../src/gui/preferences.c:1716 ../src/gui/presets.c:392
+#, c-format
+msgid "edit `%s' for module `%s'"
+msgstr "editar `%s' mara o módulo `%s'"
+
+#: ../src/gui/preferences.c:1739 ../src/gui/presets.c:415 ../src/libs/lib.c:251
+msgid "description or further information"
+msgstr "descrição ou informação adicional"
+
+#: ../src/gui/preferences.c:1742 ../src/gui/presets.c:418
+msgid "auto apply this preset to matching images"
+msgstr ""
+"auto aplicar esta predefinição para imagens que casam com os padrões "
+"definidos"
+
+#: ../src/gui/preferences.c:1745 ../src/gui/presets.c:421
+msgid "only show this preset for matching images"
+msgstr ""
+"somente mostre esta predefinição apenas para imagens que casam com os "
+"padrões definidos"
+
+#: ../src/gui/preferences.c:1747 ../src/gui/presets.c:422
+msgid ""
+"be very careful with this option. this might be the last time you see your "
+"preset."
+msgstr ""
+"cuidade com esta opcão. esta pode ser a última vez que veja sua predefinição."
+
+#: ../src/gui/preferences.c:1761 ../src/gui/presets.c:437
+#, no-c-format
+msgid "string to match model (use % as wildcard)"
+msgstr "sequência para coincidir com modelo (use % as wildcard)"
+
+#: ../src/gui/preferences.c:1769 ../src/gui/presets.c:444
+#, no-c-format
+msgid "string to match maker (use % as wildcard)"
+msgstr "sequência para coincidir o fabricante (use % as wildcard)"
+
+#: ../src/gui/preferences.c:1777 ../src/gui/presets.c:451
+#, no-c-format
+msgid "string to match lens (use % as wildcard)"
+msgstr "sequência para coincidir a lente (use % as wildcard)"
+
+#: ../src/gui/preferences.c:1787 ../src/gui/presets.c:461
+msgid "minimum ISO value"
+msgstr "mínimo valor de ISO"
+
+#: ../src/gui/preferences.c:1790 ../src/gui/presets.c:464
+msgid "maximum ISO value"
+msgstr "máximo valor de ISO"
+
+#: ../src/gui/preferences.c:1801 ../src/gui/presets.c:475
+msgid "minimum exposure time"
+msgstr "mínimo tempo de exposição"
+
+#: ../src/gui/preferences.c:1802 ../src/gui/presets.c:476
+msgid "maximum exposure time"
+msgstr "máximo tempo de exposição"
+
+#: ../src/gui/preferences.c:1816 ../src/gui/presets.c:490
+msgid "minimum aperture value"
+msgstr "valor mínimo de abertura"
+
+#: ../src/gui/preferences.c:1817 ../src/gui/presets.c:491
+msgid "maximum aperture value"
+msgstr "valor máximo de abertura"
+
+#: ../src/gui/preferences.c:1832 ../src/gui/presets.c:507
+msgid "minimum focal length"
+msgstr "distância focal mínima"
+
+#: ../src/gui/preferences.c:1833 ../src/gui/presets.c:508
+msgid "maximum focal length"
+msgstr "distância focal máxima"
+
+#. raw/hdr/ldr
+#: ../src/gui/preferences.c:1842 ../src/gui/presets.c:514
+#: ../src/imageio/format/j2k.c:645
+msgid "format"
+msgstr "formato"
+
+#: ../src/gui/preferences.c:1949 ../src/imageio/storage/disk.c:122
+#: ../src/imageio/storage/gallery.c:109 ../src/imageio/storage/latex.c:108
+msgid "_select as output destination"
+msgstr "_selecionar como destino"
+
+#: ../src/gui/preferences.c:1960
+#, c-format
+msgid "preset %s was successfully saved"
+msgstr "estilo %s foi salvo com sucesso"
+
+#. then show edit dialog
+#: ../src/gui/presets.c:225 ../src/gui/presets.c:663 ../src/gui/presets.c:670
+#: ../src/gui/presets.c:672 ../src/gui/presets.c:674 ../src/libs/lib.c:316
+#: ../src/libs/lib.c:330 ../src/libs/lib.c:338 ../src/libs/lib.c:340
+#: ../src/libs/lib.c:342
+msgid "new preset"
+msgstr "nova predefinição"
+
+#: ../src/gui/presets.c:231
+msgid "please give preset a name"
+msgstr "favor nomear predefinição"
+
+#: ../src/gui/presets.c:236
+msgid "unnamed preset"
+msgstr "predefinição sem nome"
+
+#: ../src/gui/presets.c:261 ../src/libs/lib.c:149
+#, c-format
+msgid ""
+"preset `%s' already exists.\n"
+"do you want to overwrite?"
+msgstr ""
+"predefinição `%s' existente.\n"
+"Deseja sobrescrever?"
+
+#: ../src/gui/presets.c:266 ../src/libs/lib.c:153
+msgid "overwrite preset?"
+msgstr "sobrescrever predefinição?"
+
+#: ../src/gui/presets.c:411 ../src/libs/lib.c:247
+msgid "name of the preset"
+msgstr "nome da predefinição"
+
+#: ../src/gui/presets.c:625 ../src/libs/lib.c:283
+#, c-format
+msgid "do you really want to update the preset `%s'?"
+msgstr "você realmente deseja atualizar a predefinição `%s'?"
+
+#: ../src/gui/presets.c:629 ../src/libs/lib.c:287
+msgid "update preset?"
+msgstr "atualizar predefinição"
+
+#: ../src/gui/presets.c:920 ../src/gui/presets.c:933
+msgid "(default)"
+msgstr "(padrão)"
+
+#: ../src/gui/presets.c:944
+msgid "disabled: wrong module version"
+msgstr "desabilitado: versão do módulo incorreta"
+
+#: ../src/gui/presets.c:968 ../src/libs/lib.c:515
+msgid "edit this preset.."
+msgstr "editar esta predefinição..."
+
+#: ../src/gui/presets.c:972 ../src/libs/lib.c:519
+msgid "delete this preset"
+msgstr "exclui esta predefinição"
+
+#: ../src/gui/presets.c:978 ../src/libs/lib.c:526
+msgid "store new preset.."
+msgstr "armazena nova predefinição..."
+
+#: ../src/gui/presets.c:984 ../src/libs/lib.c:538
+msgid "update preset"
+msgstr "atualizar predefinição"
+
+#: ../src/gui/presets.c:997
+msgid "favourite"
+msgstr "favorito"
+
+#: ../src/gui/styles_dialog.c:245 ../src/libs/styles.c:380
+#, c-format
+msgid "style %s was successfully saved"
+msgstr "estilo %s foi salvo com sucesso"
+
+#: ../src/gui/styles_dialog.c:345
+msgid "edit style"
+msgstr "editar estilo"
+
+#: ../src/gui/styles_dialog.c:346
+msgid "duplicate style"
+msgstr "duplicar estilo"
+
+#: ../src/gui/styles_dialog.c:347
+msgid "creates a duplicate of the style before applying changes"
+msgstr "cria duplicata do estilo antes de aplicar modificações"
+
+#: ../src/gui/styles_dialog.c:351
+msgid "create new style"
+msgstr "criar novo estilo"
+
+#: ../src/gui/styles_dialog.c:386
+msgid "enter a name for the new style"
+msgstr "digite um nome para o novo estilo"
+
+#: ../src/gui/styles_dialog.c:391
+msgid "enter a description for the new style, this description is searchable"
+msgstr "digite uma descrição para o novo estilo, esta descrição é pesquisável"
+
+#: ../src/gui/styles_dialog.c:446
+msgid "update"
+msgstr "atualizar"
+
+#: ../src/gui/styles_dialog.c:565
+msgid "can't create style out of unaltered image"
+msgstr "não é possível criar estilo de uma imagen inalterada"
+
+#: ../src/imageio/format/copy.c:124 ../src/libs/image.c:566
+msgid "copy"
+msgstr "copia"
+
+#: ../src/imageio/format/copy.c:140
+msgid ""
+"do a 1:1 copy of the selected files.\n"
+"the global options below do not apply!"
+msgstr ""
+"fazer uma cópia 1:1 dos arquivos selecionados.\n"
+"as opções globais abaixo não se aplicam!"
+
+#: ../src/imageio/format/exr.cc:189
+msgid "the selected output profile doesn't work well with exr"
+msgstr "o perfil de saída selecionado não funciona bem com exr"
+
+#: ../src/imageio/format/exr.cc:355
+msgid "OpenEXR (float)"
+msgstr "OpenEXR (float)"
+
+#: ../src/imageio/format/exr.cc:374
+msgid "compression mode"
+msgstr "modo de compressão"
+
+#: ../src/imageio/format/exr.cc:377
+msgid "RLE"
+msgstr "RLE"
+
+#: ../src/imageio/format/exr.cc:378
+msgid "ZIPS"
+msgstr "ZIPS"
+
+#: ../src/imageio/format/exr.cc:379
+msgid "ZIP"
+msgstr "ZIP"
+
+#: ../src/imageio/format/exr.cc:380
+msgid "PIZ (default)"
+msgstr "PIZ (padrão)"
+
+#: ../src/imageio/format/exr.cc:381
+msgid "PXR24 (lossy)"
+msgstr "PXR24 (com perdas)"
+
+#: ../src/imageio/format/exr.cc:382
+msgid "B44 (lossy)"
+msgstr "B44 (com perdas)"
+
+#: ../src/imageio/format/exr.cc:383
+msgid "B44A (lossy)"
+msgstr "B44A (com perdas)"
+
+#: ../src/imageio/format/j2k.c:612
+msgid "JPEG 2000 (12-bit)"
+msgstr "JPEG 2000 (12-bit)"
+
+#: ../src/imageio/format/j2k.c:646
+msgid "J2K"
+msgstr "J2K"
+
+#: ../src/imageio/format/j2k.c:647
+msgid "jp2"
+msgstr "jp2"
+
+#: ../src/imageio/format/j2k.c:653 ../src/imageio/format/jpeg.c:592
+#: ../src/imageio/format/webp.c:332 ../src/libs/camera.c:595
+msgid "quality"
+msgstr "qualidade"
+
+#: ../src/imageio/format/j2k.c:660
+msgid "DCP mode"
+msgstr "modo DCP"
+
+#: ../src/imageio/format/j2k.c:662
+msgid "Cinema2K, 24FPS"
+msgstr "Cinema2K, 24FPS"
+
+#: ../src/imageio/format/j2k.c:663
+msgid "Cinema2K, 48FPS"
+msgstr "Cinema2K, 48FPS"
+
+#: ../src/imageio/format/j2k.c:664
+msgid "Cinema4K, 24FPS"
+msgstr "Cinema4K, 24FPS"
+
+#: ../src/imageio/format/jpeg.c:574
+msgid "JPEG (8-bit)"
+msgstr "JPEG (8-bit)"
+
+#: ../src/imageio/format/pdf.c:79 ../src/imageio/format/png.c:526
+#: ../src/imageio/format/tiff.c:807
+msgid "8 bit"
+msgstr "8 bit"
+
+#: ../src/imageio/format/pdf.c:80 ../src/imageio/format/png.c:527
+#: ../src/imageio/format/tiff.c:808
+msgid "16 bit"
+msgstr "16 bit"
+
+#: ../src/imageio/format/pdf.c:202 ../src/imageio/format/pdf.c:489
+msgid "invalid paper size"
+msgstr "tamanho inválido de papel"
+
+#: ../src/imageio/format/pdf.c:209
+msgid "invalid border size, using 0"
+msgstr "tamanho de borda inválido, utilizando 0"
+
+#: ../src/imageio/format/pdf.c:259 ../src/imageio/storage/disk.c:334
+#: ../src/imageio/storage/email.c:137 ../src/imageio/storage/gallery.c:351
+#: ../src/imageio/storage/gallery.c:392 ../src/imageio/storage/piwigo.c:970
+#, c-format
+msgid "could not export to file `%s'!"
+msgstr "não foi possível exportar para o arquivo `%s'!"
+
+#: ../src/imageio/format/pdf.c:413
+msgid "PDF"
+msgstr "PDF"
+
+#: ../src/imageio/format/pdf.c:594
+msgid "enter the title of the pdf"
+msgstr "inserir o título do pdf"
+
+#. // papers
+#: ../src/imageio/format/pdf.c:607 ../src/libs/print_settings.c:1277
+msgid "paper size"
+msgstr "tamanho de papel"
+
+#: ../src/imageio/format/pdf.c:612
+msgid ""
+"paper size of the pdf\n"
+"either one from the list or \"<width> [unit] x <height> <unit>\n"
+"example: 210 mm x 2.97 cm"
+msgstr ""
+"tamanho do papel do pdf\n"
+"um da lista ou \"<largura> [unit] x <comprimento> <unit>\n"
+"exemplo: 210 mm x 2.97 cm"
+
+#: ../src/imageio/format/pdf.c:622
+msgid "page orientation"
+msgstr "orientação da página"
+
+#: ../src/imageio/format/pdf.c:623 ../src/iop/borders.c:934
+#: ../src/libs/print_settings.c:1286
+msgid "portrait"
+msgstr "retrato"
+
+#: ../src/imageio/format/pdf.c:624 ../src/iop/borders.c:935
+#: ../src/libs/print_settings.c:1287
+msgid "landscape"
+msgstr "paisagem"
+
+#: ../src/imageio/format/pdf.c:627
+msgid "paper orientation of the pdf"
+msgstr "orientação do papel no pdf"
+
+#. border
+#: ../src/imageio/format/pdf.c:632
+msgid "border"
+msgstr "borda"
+
+#: ../src/imageio/format/pdf.c:642
+msgid ""
+"empty space around the pdf\n"
+"format: size + unit\n"
+"examples: 10 mm, 1 inch"
+msgstr ""
+"espaço vazio ao redor do pdf\n"
+"formato: tamanho + unidade\n"
+"exemplos: 10 mm, 1 inch"
+
+#. dpi
+#: ../src/imageio/format/pdf.c:654
+msgid "dpi"
+msgstr "dpi"
+
+#: ../src/imageio/format/pdf.c:662
+msgid "dpi of the images inside the pdf"
+msgstr "dpi das imagens dentro do pdf"
+
+#: ../src/imageio/format/pdf.c:669
+msgid "rotate images"
+msgstr "girar imagens"
+
+#: ../src/imageio/format/pdf.c:674
+msgid ""
+"images can be rotated to match the pdf orientation to waste less space when "
+"printing"
+msgstr ""
+"imagens pode ser rotacionadas para combinar com a orientação do pdf a fim de "
+"perder menos espaço ao imprimir"
+
+#: ../src/imageio/format/pdf.c:681
+msgid "TODO: pages"
+msgstr "TODO: páginas"
+
+#: ../src/imageio/format/pdf.c:683
+msgid "single images"
+msgstr "imagens individuais"
+
+#: ../src/imageio/format/pdf.c:684
+msgid "contact sheet"
+msgstr "folha de contatos"
+
+#. gtk_grid_attach(grid, GTK_WIDGET(d->pages), 0, ++line, 2, 1);
+#. g_signal_connect(G_OBJECT(d->pages), "value-changed", G_CALLBACK(pages_toggle_callback), self);
+#: ../src/imageio/format/pdf.c:687
+msgid "what pages should be added to the pdf"
+msgstr "quais páginas devem ser adicionadas ao pdf"
+
+#: ../src/imageio/format/pdf.c:694
+msgid "embed icc profiles"
+msgstr "perfis ICC embarcados"
+
+#: ../src/imageio/format/pdf.c:699
+msgid "images can be tagged with their icc profile"
+msgstr "imagens podem ser etiquetadas com seu perfil icc"
+
+#: ../src/imageio/format/pdf.c:705 ../src/imageio/format/png.c:525
+#: ../src/imageio/format/tiff.c:806
+msgid "bit depth"
+msgstr "profundidade de bit"
+
+#: ../src/imageio/format/pdf.c:715
+msgid "bits per channel of the embedded images"
+msgstr "bits por canal das imagens embarcadas"
+
+#: ../src/imageio/format/pdf.c:721 ../src/imageio/format/png.c:539
+#: ../src/imageio/format/tiff.c:821
+msgid "compression"
+msgstr "compressão"
+
+#: ../src/imageio/format/pdf.c:722 ../src/imageio/format/tiff.c:822
+msgid "uncompressed"
+msgstr "não comprimido"
+
+#: ../src/imageio/format/pdf.c:723 ../src/imageio/format/tiff.c:823
+msgid "deflate"
+msgstr "esvaziar"
+
+#: ../src/imageio/format/pdf.c:726
+msgid ""
+"method used for image compression\n"
+"uncompressed -- fast but big files\n"
+"deflate -- smaller files but slower"
+msgstr ""
+"método utilizado para compressão de imagem\n"
+"sem compressão -- rápido com arquivos grandes\n"
+"esvaziar -- devagar com arquivos pequenos"
+
+#: ../src/imageio/format/pdf.c:734
+msgid "image mode"
+msgstr "modo de imagem"
+
+#: ../src/imageio/format/pdf.c:735
+msgid "normal"
+msgstr "normal"
+
+#: ../src/imageio/format/pdf.c:736
+msgid "draft"
+msgstr "rascunho"
+
+#: ../src/imageio/format/pdf.c:737
+msgid "debug"
+msgstr "depurar (debug)"
+
+#: ../src/imageio/format/pdf.c:740
+msgid ""
+"normal -- just put the images into the pdf\n"
+"draft -- images are replaced with boxes\n"
+"debug -- only show the outlines and bounding boxen"
+msgstr ""
+"normal -- apenas insere as imagens no pdf\n"
+"rascunho -- imagens são substituídas por caixas\n"
+"debug -- apenas mostra os contornos das caixas delimitadoras"
+
+#: ../src/imageio/format/pfm.c:118
+msgid "PFM (float)"
+msgstr "PFM (float)"
+
+#: ../src/imageio/format/png.c:484
+msgid "PNG (8/16-bit)"
+msgstr "PNG (8/16-bit)"
+
+#: ../src/imageio/format/ppm.c:109
+msgid "PPM (16-bit)"
+msgstr "PPM (16-bit)"
+
+#: ../src/imageio/format/tiff.c:232
+msgid "will export as a grayscale image"
+msgstr "exportará como imagem em tons de cinza"
+
+#: ../src/imageio/format/tiff.c:735
+msgid "TIFF (8/16/32-bit)"
+msgstr "TIFF (8/16/32-bit)"
+
+#: ../src/imageio/format/tiff.c:809
+msgid "32 bit (float)"
+msgstr "32 bit (float)"
+
+#: ../src/imageio/format/tiff.c:824
+msgid "deflate with predictor"
+msgstr "esvaziar com preditor"
+
+#: ../src/imageio/format/tiff.c:825
+msgid "deflate with predictor (float)"
+msgstr "esvaziar com preditor (float)"
+
+#: ../src/imageio/format/tiff.c:831
+msgid "compression level"
+msgstr "nível de compressão"
+
+#: ../src/imageio/format/tiff.c:843
+msgid "b&w image"
+msgstr "imagem p&b"
+
+#: ../src/imageio/format/tiff.c:844
+msgid "write rgb colors"
+msgstr "escrever cores RGB"
+
+#: ../src/imageio/format/tiff.c:845
+msgid "write grayscale"
+msgstr "escrever escala de cinza"
+
+#: ../src/imageio/format/webp.c:288
+msgid "WebP (8-bit)"
+msgstr "WebP (8-bit)"
+
+#: ../src/imageio/format/webp.c:325
+msgid "compression type"
+msgstr "tipo de compressão"
+
+#: ../src/imageio/format/webp.c:326
+msgid "lossy"
+msgstr "com perdas"
+
+#: ../src/imageio/format/webp.c:327
+msgid "lossless"
+msgstr "sem perdas"
+
+#: ../src/imageio/format/webp.c:335
+msgid "applies only to lossy setting"
+msgstr "aplica apeneas para configuração com perdas"
+
+#: ../src/imageio/format/webp.c:346
+msgid "image hint"
+msgstr "dica imagem"
+
+#: ../src/imageio/format/webp.c:348
+msgid ""
+"image characteristics hint for the underlying encoder.\n"
+"picture : digital picture, like portrait, inner shot\n"
+"photo : outdoor photograph, with natural lighting\n"
+"graphic : discrete tone image (graph, map-tile etc)"
+msgstr ""
+"dica de características da imagem para o encoder base.\n"
+"imagem : imagem digital, como retrato, captura em ambiente interno\n"
+"foto : fotografia ao ar livre, com iluminação natural\n"
+"gráfico : image em tons discretos (gráfico, map-tile etc)"
+
+#: ../src/imageio/format/webp.c:352
+msgid "default"
+msgstr "padrão"
+
+#: ../src/imageio/format/webp.c:353
+msgid "picture"
+msgstr "imagen"
+
+#: ../src/imageio/format/webp.c:354
+msgid "photo"
+msgstr "foto"
+
+#: ../src/imageio/format/webp.c:355
+msgid "graphic"
+msgstr "gráfico"
+
+#: ../src/imageio/storage/disk.c:70 ../src/libs/export.c:599
+msgid "file on disk"
+msgstr "arquivo no disco"
+
+#: ../src/imageio/storage/disk.c:183 ../src/imageio/storage/gallery.c:171
+#: ../src/imageio/storage/latex.c:170
+msgid ""
+"enter the path where to put exported images\n"
+"variables support bash like string manipulation\n"
+"recognized variables:"
+msgstr ""
+"digite o caminho onde colocar as imagens exportadas\n"
+"as variáveis suportam manipulação de strings no estilo bash\n"
+"variáveis reconhecidas:"
+
+#: ../src/imageio/storage/disk.c:200
+msgid "on conflict"
+msgstr "em caso de conflito"
+
+#: ../src/imageio/storage/disk.c:201
+msgid "create unique filename"
+msgstr "criar nome de arquivo único"
+
+#: ../src/imageio/storage/disk.c:202 ../src/libs/copy_history.c:384
+#: ../src/libs/image.c:591 ../src/libs/styles.c:589
+msgid "overwrite"
+msgstr "sobrescrever"
+
+#: ../src/imageio/storage/disk.c:203
+msgid "skip"
+msgstr "pular"
+
+#: ../src/imageio/storage/disk.c:283 ../src/imageio/storage/gallery.c:276
+#: ../src/imageio/storage/latex.c:275
+#, c-format
+msgid "could not create directory `%s'!"
+msgstr "não foi possível criar o diretório `%s'!"
+
+#: ../src/imageio/storage/disk.c:290
+#, c-format
+msgid "could not write to directory `%s'!"
+msgstr "não foi possível escrever no diretório `%s'!"
+
+#: ../src/imageio/storage/disk.c:320
+#, c-format
+msgid "%d/%d skipping `%s'"
+msgid_plural "%d/%d skipping `%s'"
+msgstr[0] "%d/%d pulando `%s'"
+msgstr[1] "%d/%d pulando `%s'"
+
+#: ../src/imageio/storage/disk.c:339 ../src/imageio/storage/email.c:144
+#: ../src/imageio/storage/gallery.c:400 ../src/imageio/storage/latex.c:364
+#, c-format
+msgid "%d/%d exported to `%s'"
+msgid_plural "%d/%d exported to `%s'"
+msgstr[0] "%d/%d exportada para `%s'"
+msgstr[1] "%d/%d exportadas para `%s'"
+
+#: ../src/imageio/storage/disk.c:398
+msgid ""
+"you are going to export on overwrite mode, this will overwrite any existing "
+"images\n"
+"\n"
+"do you really want to continue?"
+msgstr ""
+"você está prestes a exportar em modo de sobrescrita. isso sobrescreverá "
+"qualquer imagens pré-existentes\n"
+"\n"
+"tem certeza que quer continuar?"
+
+#: ../src/imageio/storage/email.c:52
+msgid "send as email"
+msgstr "enviar como e-mail"
+
+#: ../src/imageio/storage/email.c:198
+msgid "images exported from darktable"
+msgstr "imagens exportadas do darktable"
+
+#: ../src/imageio/storage/email.c:251
+msgid "could not launch email client!"
+msgstr "não é possível iniciar o programa de email!"
+
+#: ../src/imageio/storage/gallery.c:72
+msgid "website gallery"
+msgstr "galeria web"
+
+#: ../src/imageio/storage/gallery.c:192
+msgid "enter the title of the website"
+msgstr "inserir o título do website"
+
+#: ../src/imageio/storage/latex.c:71
+msgid "LaTeX book template"
+msgstr "modelo de livro LaTeX"
+
+#. TODO: support title, author, subject, keywords (collect tags?)
+#: ../src/imageio/storage/latex.c:195
+msgid "enter the title of the book"
+msgstr "inserir o nome do livro"
+
+#: ../src/imageio/storage/piwigo.c:464
+msgid "authenticated"
+msgstr "autenticado"
+
+#: ../src/imageio/storage/piwigo.c:472 ../src/imageio/storage/piwigo.c:487
+#: ../src/imageio/storage/piwigo.c:499
+msgid "not authenticated"
+msgstr "não autenticado"
+
+#: ../src/imageio/storage/piwigo.c:478
+msgid "not authenticated, cannot reach server"
+msgstr "não autenticado, não pude chegar ao servidor"
+
+#: ../src/imageio/storage/piwigo.c:524 ../src/imageio/storage/piwigo.c:588
+msgid "create new album"
+msgstr "criar novo álbum"
+
+#: ../src/imageio/storage/piwigo.c:589
+msgid "---"
+msgstr "---"
+
+#: ../src/imageio/storage/piwigo.c:630
+msgid "cannot refresh albums"
+msgstr "não é possível atualizar lista de álbuns"
+
+#: ../src/imageio/storage/piwigo.c:723
+msgid "piwigo"
+msgstr "piwigo"
+
+#: ../src/imageio/storage/piwigo.c:748
+msgid "accounts"
+msgstr "contas"
+
+#: ../src/imageio/storage/piwigo.c:765
+msgid "server"
+msgstr "servidor"
+
+#: ../src/imageio/storage/piwigo.c:769
+msgid ""
+"the server name\n"
+"default protocol is https\n"
+"specify http:// if non secure server"
+msgstr ""
+"o nome do servidor\n"
+"o protocolo padrão é https\n"
+"especifique http:// para servidor não seguro"
+
+#: ../src/imageio/storage/piwigo.c:782
+msgid "user"
+msgstr "usuário"
+
+#: ../src/imageio/storage/piwigo.c:796
+msgid "password"
+msgstr "senha"
+
+#. login button
+#: ../src/imageio/storage/piwigo.c:810
+msgid "login"
+msgstr "entrar"
+
+#: ../src/imageio/storage/piwigo.c:811
+msgid "piwigo login"
+msgstr "login piwigo"
+
+#: ../src/imageio/storage/piwigo.c:825
+msgid "visible to"
+msgstr "visível para"
+
+#: ../src/imageio/storage/piwigo.c:826
+msgid "everyone"
+msgstr "todos"
+
+#: ../src/imageio/storage/piwigo.c:827
+msgid "contacts"
+msgstr "contatos"
+
+#: ../src/imageio/storage/piwigo.c:828
+msgid "friends"
+msgstr "amigos"
+
+#: ../src/imageio/storage/piwigo.c:829
+msgid "family"
+msgstr "família"
+
+#: ../src/imageio/storage/piwigo.c:830
+msgid "you"
+msgstr "você"
+
+#. Available albums
+#: ../src/imageio/storage/piwigo.c:838
+msgid "album"
+msgstr "álbum"
+
+#: ../src/imageio/storage/piwigo.c:844
+msgid "refresh album list"
+msgstr "atualiza lista de álbuns"
+
+#: ../src/imageio/storage/piwigo.c:863
+msgid "new album"
+msgstr "novo álbum"
+
+#. parent album list
+#. Available albums
+#: ../src/imageio/storage/piwigo.c:871
+msgid "parent album"
+msgstr "album pai"
+
+#: ../src/imageio/storage/piwigo.c:875
+msgid "click login button to start"
+msgstr "clique login para iniciar"
+
+#: ../src/imageio/storage/piwigo.c:989
+msgid "cannot create a new piwigo album!"
+msgstr "criar novo álbum!"
+
+#: ../src/imageio/storage/piwigo.c:998
+msgid "could not upload to piwigo!"
+msgstr "não foi possível exportar para piwigo!"
+
+#. this makes sense only if the export was successful
+#: ../src/imageio/storage/piwigo.c:1027
+#, c-format
+msgid "%d/%d exported to piwigo webalbum"
+msgid_plural "%d/%d exported to piwigo webalbum"
+msgstr[0] "%d/%d exportada para álbum piwigo"
+msgstr[1] "%d/%d exportadas para álbum piwigo"
+
+#: ../src/iop/ashift.c:113
+msgid "perspective correction"
+msgstr "correção de perspectiva"
+
+#: ../src/iop/ashift.c:118
+msgid ""
+"distort perspective automatically,\n"
+"for corrective and creative purposes.\n"
+"works in RGB,\n"
+"takes preferably a linear RGB input,\n"
+"outputs linear RGB."
+msgstr ""
+"distorção automática de perspectiva em RGB,\n"
+"para propósitos corretivos e criativos,\n"
+"trabalha em RGB,\n"
+"a entrada é preferencialmente RGB linear,\n"
+"a saída é RGB linear."
+
+#: ../src/iop/ashift.c:534 ../src/iop/graduatednd.c:164
+#: ../src/iop/watermark.c:312
+msgctxt "accel"
+msgid "rotation"
+msgstr "rotação"
+
+#: ../src/iop/ashift.c:535
+msgctxt "accel"
+msgid "lens shift (v)"
+msgstr "desvio de lente (v)"
+
+#: ../src/iop/ashift.c:536
+msgctxt "accel"
+msgid "lens shift (h)"
+msgstr "desvio de lente (h)"
+
+#: ../src/iop/ashift.c:537
+msgctxt "accel"
+msgid "shear"
+msgstr "cisalhamento"
+
+#: ../src/iop/ashift.c:538
+msgctxt "accel"
+msgid "focal length"
+msgstr "distância focal"
+
+#: ../src/iop/ashift.c:539
+msgctxt "accel"
+msgid "crop factor"
+msgstr "fator de corte (crop)"
+
+#: ../src/iop/ashift.c:540
+msgctxt "accel"
+msgid "aspect adjust"
+msgstr "ajuste de proporção"
+
+#: ../src/iop/ashift.c:541
+msgctxt "accel"
+msgid "guides"
+msgstr "guias"
+
+#: ../src/iop/ashift.c:542 ../src/iop/clipping.c:3462
+msgctxt "accel"
+msgid "automatic cropping"
+msgstr "corte automático"
+
+#: ../src/iop/ashift.c:543 ../src/iop/lens.cc:180
+msgctxt "accel"
+msgid "lens model"
+msgstr "modelo da lente"
+
+#: ../src/iop/ashift.c:2662
+msgid "automatic cropping failed"
+msgstr "corte automático falhou"
+
+#: ../src/iop/ashift.c:2804
+msgid "data pending - please repeat"
+msgstr "dados pendentes - por favor repita"
+
+#: ../src/iop/ashift.c:2810
+msgid "could not detect structural data in image"
+msgstr "não foi possível detectar dados estruturais na imagem"
+
+#: ../src/iop/ashift.c:2821
+msgid "could not run outlier removal"
+msgstr "não foi possível executar a remoção"
+
+#: ../src/iop/ashift.c:2875
+msgid "not enough structure for automatic correction"
+msgstr "não há estrutura suficiente para correção automática"
+
+#: ../src/iop/ashift.c:2880
+msgid "automatic correction failed, please correct manually"
+msgstr "a correção automática falhou, faça manualmente"
+
+#: ../src/iop/ashift.c:4556 ../src/iop/ashift.c:4557 ../src/iop/ashift.c:4662
+#: ../src/iop/ashift.c:4663
+#, c-format
+msgid "lens shift (%s)"
+msgstr "deslocamento da lente (%s)"
+
+#: ../src/iop/ashift.c:4556 ../src/iop/ashift.c:4557 ../src/iop/ashift.c:4662
+#: ../src/iop/ashift.c:4663 ../src/iop/clipping.c:1882
+#: ../src/iop/clipping.c:2140 ../src/iop/clipping.c:2157
+msgid "horizontal"
+msgstr "horizontal"
+
+#: ../src/iop/ashift.c:4556 ../src/iop/ashift.c:4557 ../src/iop/ashift.c:4662
+#: ../src/iop/ashift.c:4663 ../src/iop/clipping.c:1881
+#: ../src/iop/clipping.c:2141 ../src/iop/clipping.c:2156
+msgid "vertical"
+msgstr "vertical"
+
+#: ../src/iop/ashift.c:4787 ../src/iop/clipping.c:2283
+#: ../src/libs/live_view.c:341
+msgid "guides"
+msgstr "guias"
+
+#: ../src/iop/ashift.c:4828
+msgid "automatic fit"
+msgstr "ajuste automático"
+
+#: ../src/iop/ashift.c:4844
+msgid "get structure"
+msgstr "obter estrutura"
+
+#: ../src/iop/ashift.c:4862
+msgid "rotate image"
+msgstr "rotacionar imagem"
+
+#: ../src/iop/ashift.c:4863 ../src/iop/ashift.c:4864
+msgid "apply lens shift correction in one direction"
+msgstr "aplicar correção de deslocamento de lente em somente uma direção"
+
+#: ../src/iop/ashift.c:4865
+msgid "shear the image along one diagonal"
+msgstr "inclina a imagem por uma diagonal"
+
+#: ../src/iop/ashift.c:4866
+msgid "display guide lines overlay"
+msgstr "mostrar linhas guia para auxiliar na composição da sua fotografia"
+
+#: ../src/iop/ashift.c:4867 ../src/iop/clipping.c:2164
+msgid "automatically crop to avoid black edges"
+msgstr "cortar automaticamente para evitar bordas pretas"
+
+#: ../src/iop/ashift.c:4868
+msgid ""
+"lens model of the perspective correction: generic or according to the focal "
+"length"
+msgstr ""
+"modelo de lente da correção de perspectiva: genérico ou de acordo com a "
+"distância focal"
+
+#: ../src/iop/ashift.c:4870
+msgid "focal length of the lens, default value set from exif data if available"
+msgstr ""
+"distância focal da lente, valor default ajustado a partir dos dados exif, se "
+"disponíveis"
+
+#: ../src/iop/ashift.c:4872
+msgid ""
+"crop factor of the camera sensor, default value set from exif data if "
+"available, manual setting is often required"
+msgstr ""
+"fator de crop do sensor da câmera, o valor default é definido a partir dos "
+"dados exif se disponíveis, ajuste manual é usualmente necessário"
+
+#: ../src/iop/ashift.c:4875
+msgid ""
+"the level of lens dependent correction, set to maximum for full lens "
+"dependency, set to zero for the generic case"
+msgstr ""
+"o nível de correção dependente de lente, ajuste para o máximo para completa "
+"dependência da lente, e zero para o caso genérico"
+
+#: ../src/iop/ashift.c:4877
+msgid "adjust aspect ratio of image by horizontal and vertical scaling"
+msgstr ""
+"ajustar aspecto da imagem mudando escala horizontalmente e verticalmente"
+
+#: ../src/iop/ashift.c:4878
+msgid ""
+"automatically correct for vertical perspective distortion\n"
+"ctrl+click to only fit rotation\n"
+"shift+click to only fit lens shift"
+msgstr ""
+"automaticamente corrigir distorção de perspectiva vertical\n"
+"ctrl-click para ajustar apenas rotação\n"
+"shift-click para ajustar somente correção de lente"
+
+#: ../src/iop/ashift.c:4881
+msgid ""
+"automatically correct for horizontal perspective distortion\n"
+"ctrl+click to only fit rotation\n"
+"shift+click to only fit lens shift"
+msgstr ""
+"automaticamente corrigir distorção de perspectiva horizontal\n"
+"ctrl-click para ajustar apenas rotação\n"
+"shift-click para ajustar somente correção de lente"
+
+#: ../src/iop/ashift.c:4884
+msgid ""
+"automatically correct for vertical and horizontal perspective distortions; "
+"fitting rotation,lens shift in both directions, and shear\n"
+"ctrl+click to only fit rotation\n"
+"shift+click to only fit lens shift\n"
+"ctrl+shift+click to only fit rotation and lens shift"
+msgstr ""
+"automaticamente corrigir distorção de perspectiva horizontal e vertical\n"
+"ctrl-click para ajustar apenas rotação\n"
+"shift-click para ajustar somente correção de lente\n"
+"ctrl-shift-click para ajustar somente rotação e correção de lente"
+
+#: ../src/iop/ashift.c:4890
+msgid ""
+"analyse line structure in image\n"
+"ctrl+click for an additional edge enhancement\n"
+"shift+click for an additional detail enhancement\n"
+"ctrl+shift+click for a combination of both methods"
+msgstr ""
+"analisar estrutura de linhas em uma imagem\n"
+"ctrl-click para melhoria de borda adicional\n"
+"shift-click para melhoria adicional de detalhes\n"
+"ctrl-shift-click para uma combinação dos dois métodos"
+
+#: ../src/iop/ashift.c:4894
+msgid "remove line structure information"
+msgstr "remover informação de estrutura de linhas"
+
+#: ../src/iop/ashift.c:4895
+msgid "toggle visibility of structure lines"
+msgstr "alterna a visibilidade das linhas estruturais"
+
+#: ../src/iop/ashift.c:4932
+#, c-format
+msgid "[%s on segment] select segment"
+msgstr "[%s no segmento] selecionar segmento"
+
+#: ../src/iop/ashift.c:4937
+#, c-format
+msgid "[%s on segment] unselect segment"
+msgstr "[%s no segmento] deselecionar segmento"
+
+#: ../src/iop/ashift.c:4943
+#, c-format
+msgid "[%s] select all segments from zone"
+msgstr "[%s] selecionar todos os segmentos de uma zona"
+
+#: ../src/iop/ashift.c:4949
+#, c-format
+msgid "[%s] unselect all segments from zone"
+msgstr "[%s] de-selecionar todos os segmentos de uma zona"
+
+#: ../src/iop/atrous.c:119
+msgid "contrast equalizer"
+msgstr "equalizador de contraste"
+
+#: ../src/iop/atrous.c:124
+msgid ""
+"add or remove local contrast,\n"
+"for corrective and creative purposes.\n"
+"works in Lab,\n"
+"takes preferably a linear RGB input,\n"
+"outputs almost linear RGB."
+msgstr ""
+"adiciona ou remove contraste local em Lab,\n"
+"para propósitos corretivos e criativos.\n"
+"trabalha em Lab,\n"
+"entrada preferencialmente em RGB linear,\n"
+"saída em RGB quase linear."
+
+#: ../src/iop/atrous.c:148 ../src/iop/colorzones.c:159 ../src/iop/soften.c:108
+msgctxt "accel"
+msgid "mix"
+msgstr "mix"
+
+#: ../src/iop/atrous.c:1075
+msgctxt "eq_preset"
+msgid "coarse"
+msgstr "grosseiro"
+
+#: ../src/iop/atrous.c:1089
+msgid "denoise & sharpen"
+msgstr "reduz ruído & melhora nitidez"
+
+#: ../src/iop/atrous.c:1103
+msgctxt "atrous"
+msgid "sharpen"
+msgstr "nitidez"
+
+#: ../src/iop/atrous.c:1117
+msgid "denoise chroma"
+msgstr "reduz ruido croma"
+
+#: ../src/iop/atrous.c:1131 ../src/iop/equalizer.c:337
+msgid "denoise"
+msgstr "reduz ruído"
+
+#: ../src/iop/atrous.c:1146 ../src/iop/bloom.c:76
+msgid "bloom"
+msgstr "luz suave"
+
+#: ../src/iop/atrous.c:1160
+msgid "clarity"
+msgstr "clareza"
+
+#: ../src/iop/atrous.c:1178
+msgid "deblur: large blur, strength 4"
+msgstr "nitidez: desfoque grande, força 4"
+
+#: ../src/iop/atrous.c:1194
+msgid "deblur: large blur, strength 3"
+msgstr "nitidez: desfoque grande, força 3"
+
+#: ../src/iop/atrous.c:1208
+msgid "deblur: medium blur, strength 3"
+msgstr "nitidez: desfoque médio, força 3"
+
+#: ../src/iop/atrous.c:1221
+msgid "deblur: fine blur, strength 3"
+msgstr "nitidez: desfoque pequeno, força 3"
+
+#: ../src/iop/atrous.c:1238
+msgid "deblur: large blur, strength 2"
+msgstr "nitidez: desfoque grande, força 2"
+
+#: ../src/iop/atrous.c:1252
+msgid "deblur: medium blur, strength 2"
+msgstr "nitidez: desfoque médio, força 2"
+
+#: ../src/iop/atrous.c:1265
+msgid "deblur: fine blur, strength 2"
+msgstr "nitidez: desfoque pequeno, força 2"
+
+#: ../src/iop/atrous.c:1282
+msgid "deblur: large blur, strength 1"
+msgstr "nitidez: desfoque grande, força 1"
+
+#: ../src/iop/atrous.c:1296
+msgid "deblur: medium blur, strength 1"
+msgstr "nitidez: desfoque médio, força 1"
+
+#: ../src/iop/atrous.c:1309
+msgid "deblur: fine blur, strength 1"
+msgstr "nitidez: desfoque pequeno, força 1"
+
+#: ../src/iop/atrous.c:1611 ../src/iop/denoiseprofile.c:4047
+#: ../src/iop/rawdenoise.c:775
+msgid "coarse"
+msgstr "grosseiro"
+
+#: ../src/iop/atrous.c:1618 ../src/iop/denoiseprofile.c:4055
+#: ../src/iop/rawdenoise.c:783
+msgid "fine"
+msgstr "fino"
+
+#: ../src/iop/atrous.c:1630
+msgid "contrasty"
+msgstr "contrastado"
+
+#: ../src/iop/atrous.c:1636 ../src/iop/denoiseprofile.c:4069
+#: ../src/iop/rawdenoise.c:797
+msgid "noisy"
+msgstr "ruidoso"
+
+#. case atrous_s:
+#: ../src/iop/atrous.c:1639
+msgid "bold"
+msgstr "distinto"
+
+#: ../src/iop/atrous.c:1640
+msgid "dull"
+msgstr "opaco"
+
+#: ../src/iop/atrous.c:1868 ../src/iop/atrous.c:1869 ../src/iop/equalizer.c:395
+#: ../src/iop/nlmeans.c:783
+msgid "luma"
+msgstr "luma"
+
+#: ../src/iop/atrous.c:1870
+msgid "change lightness at each feature size"
+msgstr "muda luminosidade a cada dimensão característica"
+
+#: ../src/iop/atrous.c:1871 ../src/iop/equalizer.c:396 ../src/iop/nlmeans.c:787
+msgid "chroma"
+msgstr "croma"
+
+#: ../src/iop/atrous.c:1872
+msgid "change color saturation at each feature size"
+msgstr "muda saturação de cor a cada dimensão característica"
+
+#: ../src/iop/atrous.c:1873
+msgid "edges"
+msgstr "bordas"
+
+#: ../src/iop/atrous.c:1874
+msgid ""
+"change edge halos at each feature size\n"
+"only changes results of luma and chroma tabs"
+msgstr ""
+"mudar halos das bordas em cada tamanho de característica\n"
+"só muda resultado das abas de luma e croma"
+
+#: ../src/iop/atrous.c:1903 ../src/iop/colorzones.c:2435
+msgid "make effect stronger or weaker"
+msgstr "torna efeito mais forte ou fraco"
+
+#: ../src/iop/basecurve.c:203 ../src/iop/lens.cc:173 ../src/iop/tonecurve.c:217
+#: ../src/iop/vignette.c:175 ../src/iop/watermark.c:311
+msgctxt "accel"
+msgid "scale"
+msgstr "escala"
+
+#: ../src/iop/basecurve.c:204 ../src/iop/basicadj.c:173
+#: ../src/iop/rgbcurve.c:140 ../src/iop/rgblevels.c:121
+#: ../src/iop/tonecurve.c:216
+msgctxt "accel"
+msgid "preserve colors"
+msgstr "preservar cores"
+
+#: ../src/iop/basecurve.c:205
+msgctxt "accel"
+msgid "exposure fusion"
+msgstr "fusão de exposição"
+
+#: ../src/iop/basecurve.c:217
+msgid "neutral"
+msgstr "neutro"
+
+#: ../src/iop/basecurve.c:218
+msgid "canon eos like"
+msgstr "similar a canon EOS"
+
+#: ../src/iop/basecurve.c:219
+msgid "canon eos like alternate"
+msgstr "similar a canon EOS alternativa"
+
+#: ../src/iop/basecurve.c:220
+msgid "nikon like"
+msgstr "similar a nikon"
+
+#: ../src/iop/basecurve.c:221
+msgid "nikon like alternate"
+msgstr "similar a nikon alternativa"
+
+#: ../src/iop/basecurve.c:222
+msgid "sony alpha like"
+msgstr "similar a sony alpha"
+
+#: ../src/iop/basecurve.c:223
+msgid "pentax like"
+msgstr "similar a pentax"
+
+#: ../src/iop/basecurve.c:224
+msgid "ricoh like"
+msgstr "similar a ricoh"
+
+#: ../src/iop/basecurve.c:225
+msgid "olympus like"
+msgstr "similar a olympus"
+
+#: ../src/iop/basecurve.c:226
+msgid "olympus like alternate"
+msgstr "similar a olympus alternativa"
+
+#: ../src/iop/basecurve.c:227
+msgid "panasonic like"
+msgstr "similar a panasonic"
+
+#: ../src/iop/basecurve.c:228
+msgid "leica like"
+msgstr "similar a leica"
+
+#: ../src/iop/basecurve.c:229
+msgid "kodak easyshare like"
+msgstr "similar a kodak easyshare"
+
+#: ../src/iop/basecurve.c:230
+msgid "konica minolta like"
+msgstr "similar a konica minolta"
+
+#: ../src/iop/basecurve.c:231
+msgid "samsung like"
+msgstr "similar a samsung"
+
+#: ../src/iop/basecurve.c:232
+msgid "fujifilm like"
+msgstr "similar a fujifilm"
+
+#: ../src/iop/basecurve.c:233
+msgid "nokia like"
+msgstr "similar a nokia"
+
+#. clang-format off
+#. smoother cubic spline curve
+#: ../src/iop/basecurve.c:289 ../src/iop/colorzones.c:2464
+#: ../src/iop/rgbcurve.c:1464 ../src/iop/tonecurve.c:1315
+msgid "cubic spline"
+msgstr "spline cúbica"
+
+#: ../src/iop/basecurve.c:348
+msgid "base curve"
+msgstr "curva base"
+
+#: ../src/iop/basecurve.c:353
+msgid ""
+"apply a view transform based on camera manufacturer look,\n"
+"for corrective purposes, to prepare images for display.\n"
+"works in RGB,\n"
+"takes preferably a linear RGB input,\n"
+"outputs non-linear RGB."
+msgstr ""
+"aplica efeito Orton para um visual etérico e onírico em Lab,\n"
+"para propósitos criativos.\n"
+"trabalha em RGB,\n"
+"use preferencialmente uma entrada RGB linear,\n"
+"a saída é RGB não-linear."
+
+#: ../src/iop/basecurve.c:2128
+msgid "abscissa: input, ordinate: output. works on RGB channels"
+msgstr "abscissa: entrada, ordenada: saída. trabalha nos canais RGB"
+
+#. scale
+#: ../src/iop/basecurve.c:2133 ../src/iop/lens.cc:2393
+#: ../src/iop/tonecurve.c:1329 ../src/iop/vignette.c:1034
+#: ../src/iop/watermark.c:1476
+msgid "scale"
+msgstr "escala"
+
+#. centripetal spline
+#: ../src/iop/basecurve.c:2134 ../src/iop/filmic.c:1736
+#: ../src/iop/profile_gamma.c:694 ../src/iop/tonecurve.c:1330
+msgid "linear"
+msgstr "linear"
+
+#: ../src/iop/basecurve.c:2136 ../src/iop/tonecurve.c:1332
+msgid ""
+"scale to use in the graph. use logarithmic scale for more precise control "
+"near the blacks"
+msgstr ""
+"escala a ser usada no gráfico use escala logarítmica para controle preciso "
+"próximo aos pretos"
+
+#: ../src/iop/basecurve.c:2142 ../src/iop/basicadj.c:645
+#: ../src/iop/rgbcurve.c:1479 ../src/iop/rgblevels.c:1044
+#: ../src/iop/tonecurve.c:1326
+msgid "method to preserve colors when applying contrast"
+msgstr "método para preservar cores quando aplicar contraste"
+
+#: ../src/iop/basecurve.c:2146
+msgid "two exposures"
+msgstr "duas exposições"
+
+#: ../src/iop/basecurve.c:2147
+msgid "three exposures"
+msgstr "três exposições"
+
+#: ../src/iop/basecurve.c:2148
+msgid ""
+"fuse this image stopped up/down a couple of times with itself, to compress "
+"high dynamic range. expose for the highlights before use."
+msgstr ""
+"combina a imagem com ela mesma em diferentes valores de compensação de "
+"exposição para comprimir a faixa dinâmica. expor para realces antes de usar."
+
+#: ../src/iop/basecurve.c:2153
+msgid "how many stops to shift the individual exposures apart"
+msgstr "quantos stops de separação entre exposições individuais"
+
+#: ../src/iop/basecurve.c:2162
+msgid ""
+"whether to shift exposure up or down (-1: reduce highlight, +1: reduce "
+"shadows)"
+msgstr ""
+"se desloca exposição para cima ou para baixo (-1: reduz tons claros, +1: "
+"reduz sombras)"
+
+#: ../src/iop/basicadj.c:135
+msgid "basic adjustments"
+msgstr "ajustes básicos"
+
+#: ../src/iop/basicadj.c:140
+msgid ""
+"apply usual adjustments,\n"
+"for corrective and creative purposes.\n"
+"works in RGB,\n"
+"takes preferably a linear RGB input,\n"
+"outputs non-linear RGB."
+msgstr ""
+"aplica ajustes usuais em RGB,\n"
+"para propósitos corretivos e criativos.\n"
+"trabalha em RGB,\n"
+"entrada preferenciamente em RGB linear,\n"
+"saída em RGB não-linear."
+
+#: ../src/iop/basicadj.c:164
+msgctxt "accel"
+msgid "black level correction"
+msgstr "correção de nível de preto"
+
+#: ../src/iop/basicadj.c:165 ../src/iop/exposure.c:134 ../src/iop/relight.c:108
+msgctxt "accel"
+msgid "exposure"
+msgstr "exposição"
+
+#: ../src/iop/basicadj.c:166
+msgctxt "accel"
+msgid "highlight compression"
+msgstr "compressão de realce"
+
+#: ../src/iop/basicadj.c:167 ../src/iop/bilat.c:126 ../src/iop/colisa.c:100
+#: ../src/iop/colorbalance.c:296 ../src/iop/filmicrgb.c:391
+#: ../src/iop/lowpass.c:198
+msgctxt "accel"
+msgid "contrast"
+msgstr "contraste"
+
+#: ../src/iop/basicadj.c:168
+msgctxt "accel"
+msgid "middle grey"
+msgstr "cinza médio"
+
+#: ../src/iop/basicadj.c:169 ../src/iop/colisa.c:101 ../src/iop/lowpass.c:199
+#: ../src/iop/soften.c:107 ../src/iop/vignette.c:177
+msgctxt "accel"
+msgid "brightness"
+msgstr "brilho"
+
+#: ../src/iop/basicadj.c:170 ../src/iop/colisa.c:102
+#: ../src/iop/colorchecker.c:137 ../src/iop/colorcorrection.c:117
+#: ../src/iop/colorize.c:123 ../src/iop/graduatednd.c:166
+#: ../src/iop/lowpass.c:200 ../src/iop/soften.c:106 ../src/iop/vignette.c:178
+msgctxt "accel"
+msgid "saturation"
+msgstr "saturação"
+
+#: ../src/iop/basicadj.c:171 ../src/iop/vibrance.c:85
+msgctxt "accel"
+msgid "vibrance"
+msgstr "vivacidade"
+
+#: ../src/iop/basicadj.c:172
+msgctxt "accel"
+msgid "clip"
+msgstr "recortar"
+
+#: ../src/iop/basicadj.c:625
+msgid ""
+"adjust the black level to unclip negative RGB values.\n"
+"you should never use it to add more density in blacks!\n"
+"if poorly set, it will clip near-black colors out of gamut\n"
+"by pushing RGB values into negatives"
+msgstr ""
+"ajusta o nível de preto para remover os valores RGB negativos.\n"
+"você nunca deve usar para adicionar mais densidade nos pretos!\n"
+"se mal ajustado, forçará os valores das cores que estão próximas do preto "
+"para fora da escala\n"
+"tornando valores RGB negativos"
+
+#: ../src/iop/basicadj.c:633 ../src/iop/exposure.c:830
+#: ../src/iop/exposure.c:890 ../src/iop/exposure.c:912
+#: ../src/iop/graduatednd.c:1157 ../src/iop/relight.c:284
+#: ../src/iop/soften.c:682
+#, c-format
+msgid "%.2f EV"
+msgstr "%.2f EV"
+
+#: ../src/iop/basicadj.c:634 ../src/iop/exposure.c:887
+msgid "adjust the exposure correction"
+msgstr "ajuste a correção de exposição"
+
+#: ../src/iop/basicadj.c:638
+msgid "highlight compression adjustment"
+msgstr "ajuste de compresão de realces"
+
+#: ../src/iop/basicadj.c:640 ../src/iop/bilat.c:447 ../src/iop/colisa.c:327
+#: ../src/iop/colorbalance.c:2101 ../src/iop/colorbalance.c:2108
+#: ../src/iop/filmic.c:1681 ../src/iop/filmicrgb.c:2421
+#: ../src/iop/lowpass.c:601
+msgid "contrast"
+msgstr "contraste"
+
+#: ../src/iop/basicadj.c:642 ../src/iop/colisa.c:331
+msgid "contrast adjustment"
+msgstr "ajuste de contraste"
+
+#: ../src/iop/basicadj.c:651
+msgid "middle grey adjustment"
+msgstr "ajuste de cinza médio"
+
+#: ../src/iop/basicadj.c:654 ../src/iop/colisa.c:328 ../src/iop/lowpass.c:602
+#: ../src/iop/retouch.c:2658 ../src/iop/soften.c:681 ../src/iop/vignette.c:1036
+msgid "brightness"
+msgstr "brilho"
+
+#: ../src/iop/basicadj.c:656 ../src/iop/colisa.c:332
+msgid "brightness adjustment"
+msgstr "ajuste de brilho"
+
+#: ../src/iop/basicadj.c:659
+msgid "saturation adjustment"
+msgstr "ajuste de saturação"
+
+#: ../src/iop/basicadj.c:662
+msgid "vibrance adjustment"
+msgstr "ajuste de vibrância"
+
+#: ../src/iop/basicadj.c:667
+msgid "apply auto exposure based on the entire image"
+msgstr "aplica auto exposição baseado na imagem toda"
+
+#: ../src/iop/basicadj.c:674
+msgid ""
+"apply auto exposure based on a region defined by the user\n"
+"click and drag to draw the area\n"
+"right click to cancel"
+msgstr ""
+"aplica auto exposição baseado em uma região definida pelo usuário\n"
+"clique e arraste para desenhar a área\n"
+"clique direito para cancelar"
+
+#: ../src/iop/basicadj.c:682
+msgid "clip"
+msgstr "recortar"
+
+#: ../src/iop/basicadj.c:684
+msgid "adjusts clipping value for auto exposure calculation"
+msgstr "ajusta o valor de corte para cálculo da exposição automática"
+
+#: ../src/iop/bilat.c:93 ../src/iop/clahe.c:66
+msgid "local contrast"
+msgstr "contraste local"
+
+#: ../src/iop/bilat.c:98
+msgid ""
+"manipulate local and global contrast separately,\n"
+"for corrective and creative purposes.\n"
+"works in Lab,\n"
+"takes any RGB input,\n"
+"outputs non-linear RGB."
+msgstr ""
+"manipular contraste local e global separadamente em Lab,\n"
+"para propósitos corretivos e criativos.\n"
+"trabalha em Lab,\n"
+"a entrada é qualquer tipo de RGB,\n"
+"a saída é RGB não-linear."
+
+#: ../src/iop/bilat.c:124 ../src/iop/globaltonemap.c:125
+msgctxt "accel"
+msgid "detail"
+msgstr "detalhe"
+
+#: ../src/iop/bilat.c:125 ../src/iop/grain.c:440
+msgctxt "accel"
+msgid "coarseness"
+msgstr "aspereza"
+
+#: ../src/iop/bilat.c:127 ../src/iop/monochrome.c:97 ../src/iop/shadhi.c:278
+#: ../src/iop/toneequal.c:320
+msgctxt "accel"
+msgid "highlights"
+msgstr "realces"
+
+#: ../src/iop/bilat.c:128 ../src/iop/shadhi.c:277 ../src/iop/toneequal.c:316
+msgctxt "accel"
+msgid "shadows"
+msgstr "sombras"
+
+#: ../src/iop/bilat.c:129
+msgctxt "accel"
+msgid "midtone range"
+msgstr "faixa de meios-tons"
+
+#: ../src/iop/bilat.c:130 ../src/iop/colorbalance.c:297
+#: ../src/iop/denoiseprofile.c:614 ../src/iop/exposure.c:138
+#: ../src/iop/lens.cc:185 ../src/iop/levels.c:133
+#: ../src/iop/profile_gamma.c:121 ../src/iop/rgbcurve.c:141
+msgctxt "accel"
+msgid "mode"
+msgstr "modo"
+
+#: ../src/iop/bilat.c:429
+msgid ""
+"the filter used for local contrast enhancement. bilateral is faster but can "
+"lead to artifacts around edges for extreme settings."
+msgstr ""
+"o filtro é usado para melhoria de contraste. o bilateral é mais rápido, mas "
+"pode gerar artefatos ao redor das bordas em caso de ajustes extremos."
+
+#: ../src/iop/bilat.c:431 ../src/iop/globaltonemap.c:668
+msgid "detail"
+msgstr "detalhe"
+
+#: ../src/iop/bilat.c:436
+msgid "changes the local contrast"
+msgstr "ajusta contraste local"
+
+#: ../src/iop/bilat.c:442
+msgid "feature size of local details (spatial sigma of bilateral filter)"
+msgstr ""
+"tamanho de característica de detalhes locais (sigma espacial do filtro "
+"bilateral)"
+
+#: ../src/iop/bilat.c:448
+msgid "L difference to detect edges (range sigma of bilateral filter)"
+msgstr "diferença L para detectar bordas (faixa sigma do filtro bilateral)"
+
+#: ../src/iop/bilat.c:452 ../src/iop/monochrome.c:597 ../src/iop/shadhi.c:732
+#: ../src/iop/splittoning.c:539
+msgid "highlights"
+msgstr "realces"
+
+#: ../src/iop/bilat.c:455
+msgid "changes the local contrast of highlights"
+msgstr "ajuste de contraste local de realces"
+
+#: ../src/iop/bilat.c:459 ../src/iop/shadhi.c:731 ../src/iop/splittoning.c:537
+msgid "shadows"
+msgstr "sombras"
+
+#: ../src/iop/bilat.c:462
+msgid "changes the local contrast of shadows"
+msgstr "ajuste de contraste local de sombras"
+
+#: ../src/iop/bilat.c:466
+msgid ""
+"defines what counts as midtones. lower for better dynamic range compression "
+"(reduce shadow and highlight contrast), increase for more powerful local "
+"contrast"
+msgstr ""
+"define o que conta como meios-tons. mais baixo para melhor compressão de "
+"faixa dinâmica (reduz sombra e aumenta contraste), mais alto para contraste "
+"local melhor"
+
+#: ../src/iop/bilateral.cc:72
+msgid "denoise (bilateral filter)"
+msgstr "redução ruído (filtro bilateral)"
+
+#: ../src/iop/bilateral.cc:92 ../src/iop/lowpass.c:197 ../src/iop/shadhi.c:280
+#: ../src/iop/sharpen.c:108
+msgctxt "accel"
+msgid "radius"
+msgstr "raio"
+
+#: ../src/iop/bilateral.cc:93 ../src/iop/channelmixer.c:132
+#: ../src/iop/temperature.c:210
+msgctxt "accel"
+msgid "red"
+msgstr "vermelho"
+
+#: ../src/iop/bilateral.cc:94 ../src/iop/channelmixer.c:133
+#: ../src/iop/temperature.c:211
+msgctxt "accel"
+msgid "green"
+msgstr "verde"
+
+#: ../src/iop/bilateral.cc:95 ../src/iop/channelmixer.c:134
+#: ../src/iop/temperature.c:212
+msgctxt "accel"
+msgid "blue"
+msgstr "azul"
+
+#: ../src/iop/bilateral.cc:316 ../src/iop/clahe.c:337 ../src/iop/dither.c:771
+#: ../src/iop/lowpass.c:598 ../src/iop/shadhi.c:735 ../src/iop/sharpen.c:738
+msgid "radius"
+msgstr "raio"
+
+#: ../src/iop/bilateral.cc:317
+msgid "spatial extent of the gaussian"
+msgstr "extensão espacial do gaussiano"
+
+#: ../src/iop/bilateral.cc:322
+msgid "how much to blur red"
+msgstr "quando desfoque vermelho"
+
+#: ../src/iop/bilateral.cc:327
+msgid "how much to blur green"
+msgstr "quanto desfoque verde"
+
+#: ../src/iop/bilateral.cc:332
+msgid "how much to blur blue"
+msgstr "quando desfoque azul"
+
+#: ../src/iop/bloom.c:81
+msgid ""
+"apply Orton effect for a dreamy aetherical look,\n"
+"for creative purposes.\n"
+"works in Lab,\n"
+"takes preferably a linear RGB input,\n"
+"outputs non-linear RGB."
+msgstr ""
+"aplica efeito Orton para um visual etérico e onírico em Lab,\n"
+"para propósitos criativos.\n"
+"Trabalha em Lab,\n"
+"use preferencialmente uma entrada RGB linear,\n"
+"a saída é RGB não-linear."
+
+#: ../src/iop/bloom.c:105 ../src/iop/soften.c:105
+msgctxt "accel"
+msgid "size"
+msgstr "tamanho"
+
+#: ../src/iop/bloom.c:106 ../src/iop/colorreconstruction.c:179
+#: ../src/iop/defringe.c:116 ../src/iop/hotpixels.c:88 ../src/iop/sharpen.c:110
+msgctxt "accel"
+msgid "threshold"
+msgstr "limite"
+
+#: ../src/iop/bloom.c:107 ../src/iop/denoiseprofile.c:606
+#: ../src/iop/grain.c:441 ../src/iop/hazeremoval.c:122
+#: ../src/iop/hotpixels.c:89 ../src/iop/nlmeans.c:119 ../src/iop/velvia.c:104
+msgctxt "accel"
+msgid "strength"
+msgstr "força"
+
+#: ../src/iop/bloom.c:485 ../src/iop/soften.c:673 ../src/libs/camera.c:598
+msgid "size"
+msgstr "tamanho"
+
+#: ../src/iop/bloom.c:487
+msgid "the size of bloom"
+msgstr "o tamanho da luz suave"
+
+#: ../src/iop/bloom.c:491
+msgid "the threshold of light"
+msgstr "o limiar de luz"
+
+#: ../src/iop/bloom.c:493 ../src/iop/denoiseprofile.c:4342
+#: ../src/iop/grain.c:592 ../src/iop/hazeremoval.c:205
+#: ../src/iop/hotpixels.c:400 ../src/iop/nlmeans.c:778 ../src/iop/velvia.c:344
+msgid "strength"
+msgstr "força"
+
+#: ../src/iop/bloom.c:495
+msgid "the strength of bloom"
+msgstr "a força da luz suave"
+
+#: ../src/iop/borders.c:177
+msgid "framing"
+msgstr "moldura"
+
+#: ../src/iop/borders.c:202
+msgctxt "accel"
+msgid "border size"
+msgstr "tamanho luz suave"
+
+#: ../src/iop/borders.c:203
+msgctxt "accel"
+msgid "pick border color from image"
+msgstr "seleciona cor da borda da imagem"
+
+#: ../src/iop/borders.c:204
+msgctxt "accel"
+msgid "frame line size"
+msgstr "tamanho da linha de moldura"
+
+#: ../src/iop/borders.c:205
+msgctxt "accel"
+msgid "frame line offset"
+msgstr "deslocamento da linha de moldura"
+
+#: ../src/iop/borders.c:206
+msgctxt "accel"
+msgid "pick frame line color from image"
+msgstr "seleciona cor da linha de moldura da imagem"
+
+#: ../src/iop/borders.c:207
+msgctxt "accel"
+msgid "aspect"
+msgstr "proporção"
+
+#: ../src/iop/borders.c:208
+msgctxt "accel"
+msgid "orientation"
+msgstr "orientação"
+
+#: ../src/iop/borders.c:209
+msgctxt "accel"
+msgid "horizontal position"
+msgstr "posição horizontal"
+
+#: ../src/iop/borders.c:210
+msgctxt "accel"
+msgid "vertical position"
+msgstr "posição vertical"
+
+#: ../src/iop/borders.c:609
+msgid "15:10 postcard white"
+msgstr "15:10 cartão-postal branco"
+
+#: ../src/iop/borders.c:612
+msgid "15:10 postcard black"
+msgstr "15:10 cartão-postal preto"
+
+#: ../src/iop/borders.c:851
+msgid "3:1"
+msgstr "3:1"
+
+#: ../src/iop/borders.c:852
+msgid "95:33"
+msgstr "95:33"
+
+#: ../src/iop/borders.c:853
+msgid "2:1"
+msgstr "2:1"
+
+#: ../src/iop/borders.c:854
+msgid "16:9"
+msgstr "16:9"
+
+#: ../src/iop/borders.c:855 ../src/iop/clipping.c:2178
+msgid "golden cut"
+msgstr "proporção áurea"
+
+#: ../src/iop/borders.c:856
+msgid "3:2"
+msgstr "3:2"
+
+#: ../src/iop/borders.c:857
+msgid "A4"
+msgstr "A4"
+
+#: ../src/iop/borders.c:858
+msgid "DIN"
+msgstr "DIN"
+
+#: ../src/iop/borders.c:859
+msgid "4:3"
+msgstr "4:3"
+
+#: ../src/iop/borders.c:860 ../src/iop/clipping.c:2168
+msgid "square"
+msgstr "quadrado"
+
+#: ../src/iop/borders.c:861
+msgid "constant border"
+msgstr "borda constante"
+
+#: ../src/iop/borders.c:862 ../src/iop/borders.c:888 ../src/iop/borders.c:894
+msgid "custom..."
+msgstr "personalizado..."
+
+#: ../src/iop/borders.c:883 ../src/iop/borders.c:889
+msgid "center"
+msgstr "centro"
+
+#: ../src/iop/borders.c:884 ../src/iop/borders.c:890
+msgid "1/3"
+msgstr "1/3"
+
+#: ../src/iop/borders.c:885 ../src/iop/borders.c:891
+msgid "3/8"
+msgstr "3/8"
+
+#: ../src/iop/borders.c:886 ../src/iop/borders.c:892
+msgid "5/8"
+msgstr "5/8"
+
+#: ../src/iop/borders.c:887 ../src/iop/borders.c:893
+msgid "2/3"
+msgstr "2/3"
+
+#: ../src/iop/borders.c:920
+msgid "size of the border in percent of the full image"
+msgstr "tamanho da borda em percentagem da imagem inteira"
+
+#: ../src/iop/borders.c:924 ../src/iop/clipping.c:2265
+msgid "aspect"
+msgstr "proporção"
+
+#: ../src/iop/borders.c:928
+msgid "select the aspect ratio or right click and type your own (w:h)"
+msgstr ""
+"selecionar a proporção ou clique botão direito e digite seu próprio (larg:"
+"alt)"
+
+#: ../src/iop/borders.c:930
+msgid "set the custom aspect ratio"
+msgstr "defina a proporção (larg:alt)"
+
+#: ../src/iop/borders.c:936
+msgid "aspect ratio orientation of the image with border"
+msgstr "orientação da proporção da imagem com borda"
+
+#: ../src/iop/borders.c:943
+msgid ""
+"select the horizontal position ratio relative to top or right click and type "
+"your own (y:h)"
+msgstr ""
+"selecione a relação de posição horizontal relativa ao topo ou clique o botão "
+"direito e digite seu próprio (y:alt)"
+
+#: ../src/iop/borders.c:947
+msgid "custom horizontal position"
+msgstr "posição horizontal personalizada"
+
+#: ../src/iop/borders.c:954
+msgid ""
+"select the vertical position ratio relative to left or right click and type "
+"your own (x:w)"
+msgstr ""
+"selecione a relação de posição vertical relativa a esquerda ou clique o "
+"botão direito e digite seu próprio (x:lar)"
+
+#: ../src/iop/borders.c:958
+msgid "custom vertical position"
+msgstr "posição vertical personalizada"
+
+#: ../src/iop/borders.c:967
+msgid "size of the frame line in percent of min border width"
+msgstr "tamanho da linha de moldura em percentagem da largura mínima da borda"
+
+#: ../src/iop/borders.c:974
+msgid "offset of the frame line beginning on picture side"
+msgstr "deslocamento da linha de moldura começando na borda da imagem"
+
+#: ../src/iop/borders.c:981
+msgid "border color"
+msgstr "cor da borda"
+
+#: ../src/iop/borders.c:985
+msgid "select border color"
+msgstr "selecionar cor da borda"
+
+#: ../src/iop/borders.c:989
+msgid "pick border color from image"
+msgstr "selecione cor da borda da imagem"
+
+#: ../src/iop/borders.c:993
+msgid "frame line color"
+msgstr "cor da linha de moldura"
+
+#: ../src/iop/borders.c:997
+msgid "select frame line color"
+msgstr "selecionar cor da linha de moldura"
+
+#: ../src/iop/borders.c:1001
+msgid "pick frame line color from image"
+msgstr "selecione cor da linha de moldura da imagem"
+
+#. make sure you put all your translatable strings into _() !
+#: ../src/iop/cacorrect.c:55
+msgid "chromatic aberrations"
+msgstr "aberrações cromáticas"
+
+#: ../src/iop/cacorrect.c:1531
+msgid "automatic chromatic aberration correction"
+msgstr "correção automática de aberração cromática"
+
+#: ../src/iop/cacorrect.c:1534
+msgid ""
+"automatic chromatic aberration correction\n"
+"disabled for non-Bayer sensors"
+msgstr ""
+"correção automática de aberração cromática\n"
+"desabilitado para sensores não Bayer"
+
+#: ../src/iop/cacorrect.c:1537
+msgid ""
+"automatic chromatic aberration correction\n"
+"only works for raw images."
+msgstr ""
+"correção automática de aberração cromática\n"
+"somente para imagens raw."
+
+#: ../src/iop/channelmixer.c:112
+msgid "channel mixer"
+msgstr "misturador de canais"
+
+#: ../src/iop/channelmixer.c:135
+msgctxt "accel"
+msgid "destination"
+msgstr "destino"
+
+#: ../src/iop/channelmixer.c:442
+msgid "destination"
+msgstr "destino"
+
+#: ../src/iop/channelmixer.c:449
+msgctxt "channelmixer"
+msgid "gray"
+msgstr "cinza"
+
+#: ../src/iop/channelmixer.c:456
+msgid "amount of red channel in the output channel"
+msgstr "quantidade do canal vermelho no canal de saída"
+
+#: ../src/iop/channelmixer.c:462
+msgid "amount of green channel in the output channel"
+msgstr "quantidade do canal verde no canal de saída"
+
+#: ../src/iop/channelmixer.c:468
+msgid "amount of blue channel in the output channel"
+msgstr "quantidade do canal azul no canal de saída"
+
+#: ../src/iop/channelmixer.c:484
+msgid "swap R and B"
+msgstr "trocar R e B"
+
+#: ../src/iop/channelmixer.c:489
+msgid "swap G and B"
+msgstr "trocar G e B"
+
+#: ../src/iop/channelmixer.c:494
+msgid "color contrast boost"
+msgstr "ganho contraste de cor"
+
+#: ../src/iop/channelmixer.c:499
+msgid "color details boost"
+msgstr "ganho detalhes de cor"
+
+#: ../src/iop/channelmixer.c:504
+msgid "color artifacts boost"
+msgstr "ganho artefatos de cor"
+
+#: ../src/iop/channelmixer.c:509
+msgid "B/W luminance-based"
+msgstr "baseado em luminância B/P"
+
+#: ../src/iop/channelmixer.c:514
+msgid "B/W artifacts boost"
+msgstr "ganho artefatos B/P"
+
+#: ../src/iop/channelmixer.c:519
+msgid "B/W smooth skin"
+msgstr "pele suave B/P"
+
+#: ../src/iop/channelmixer.c:524
+msgid "B/W blue artifacts reduce"
+msgstr "reduzir artefatos azul B/P"
+
+#: ../src/iop/channelmixer.c:530
+msgid "B/W Ilford Delta 100-400"
+msgstr "Ilford Delta 100-400 B/P"
+
+#: ../src/iop/channelmixer.c:536
+msgid "B/W Ilford Delta 3200"
+msgstr "Ilford Delta 3200 B/P"
+
+#: ../src/iop/channelmixer.c:542
+msgid "B/W Ilford FP4"
+msgstr "Ilford FP4 B/P"
+
+#: ../src/iop/channelmixer.c:548
+msgid "B/W Ilford HP5"
+msgstr "Ilford HP5 B/P"
+
+#: ../src/iop/channelmixer.c:554
+msgid "B/W Ilford SFX"
+msgstr "Ilford SFX B/P"
+
+#: ../src/iop/channelmixer.c:560
+msgid "B/W Kodak T-Max 100"
+msgstr "Kodak T-Max 100 B/P"
+
+#: ../src/iop/channelmixer.c:566
+msgid "B/W Kodak T-max 400"
+msgstr "Kodak T-max 400 B/P"
+
+#: ../src/iop/channelmixer.c:572
+msgid "B/W Kodak Tri-X 400"
+msgstr "Kodak Tri-X 400 B/P"
+
+#: ../src/iop/choleski.h:303 ../src/iop/choleski.h:401
+msgid ""
+"Choleski decomposition failed to allocate memory, check your RAM settings"
+msgstr ""
+"A decomposição de Cholesky não conseguiu alocar memória, verifique sua "
+"configuração de RAM"
+
+#: ../src/iop/clahe.c:339 ../src/iop/sharpen.c:744
+msgid "amount"
+msgstr "quantia"
+
+#: ../src/iop/clahe.c:350
+msgid "size of features to preserve"
+msgstr "tamanho da característica a preservar"
+
+#: ../src/iop/clahe.c:351 ../src/iop/nlmeans.c:782
+msgid "strength of the effect"
+msgstr "força do efeito"
+
+#: ../src/iop/clipping.c:316
+msgid "crop and rotate"
+msgstr "cortar e girar"
+
+#: ../src/iop/clipping.c:1373 ../src/iop/clipping.c:2167
+msgid "original image"
+msgstr "imagem original"
+
+#: ../src/iop/clipping.c:1674
+msgid "invalid ratio format. it should be \"number:number\""
+msgstr "formato da proporção inválido. deveria ser \"número:número\""
+
+#: ../src/iop/clipping.c:1690
+msgid "invalid ratio format. it should be non zero"
+msgstr "formato da proporção inválido. deveria ser diferente de zero"
+
+#: ../src/iop/clipping.c:1883 ../src/iop/clipping.c:2158
+msgid "full"
+msgstr "completo"
+
+#: ../src/iop/clipping.c:1884
+msgid "old system"
+msgstr "sistema antigo"
+
+#: ../src/iop/clipping.c:1885
+msgid "correction applied"
+msgstr "correção aplicada"
+
+#: ../src/iop/clipping.c:2138 ../src/libs/live_view.c:372
+msgid "flip"
+msgstr "espelhar"
+
+#: ../src/iop/clipping.c:2142 ../src/iop/clipping.c:2320
+#: ../src/iop/colorbalance.c:2065 ../src/libs/live_view.c:376
+msgid "both"
+msgstr "ambos"
+
+#: ../src/iop/clipping.c:2144
+msgid "mirror image horizontally and/or vertically"
+msgstr "espelhar imagem horizontalmente e/ou verticalmente"
+
+#: ../src/iop/clipping.c:2147
+msgid "angle"
+msgstr "ângulo"
+
+#: ../src/iop/clipping.c:2151
+msgid "right-click and drag a line on the image to drag a straight line"
+msgstr ""
+"clique botão direito e arraste uma linha na imagem para arrastar uma linha "
+"reta"
+
+#: ../src/iop/clipping.c:2154
+msgid "keystone"
+msgstr "distorção de perspectiva"
+
+#: ../src/iop/clipping.c:2159
+msgid "set perspective correction for your image"
+msgstr "defina correção de perspectiva para sua imagem"
+
+#: ../src/iop/clipping.c:2166
+msgid "freehand"
+msgstr "mão livre"
+
+#: ../src/iop/clipping.c:2169
+msgid "10:8 in print"
+msgstr "10:8 em impressão"
+
+#: ../src/iop/clipping.c:2170
+msgid "5:4, 4x5, 8x10"
+msgstr "5:4, 4x5, 8x10"
+
+#: ../src/iop/clipping.c:2171
+msgid "11x14"
+msgstr "11x14"
+
+#: ../src/iop/clipping.c:2172
+msgid "8.5x11, letter"
+msgstr "8.5x11, carta"
+
+#: ../src/iop/clipping.c:2173
+msgid "4:3, VGA, TV"
+msgstr "4:3, VGA, TV"
+
+#: ../src/iop/clipping.c:2174
+msgid "5x7"
+msgstr "5x7"
+
+#: ../src/iop/clipping.c:2175
+msgid "ISO 216, DIN 476, A4"
+msgstr "ISO 216, DIN 476, A4"
+
+#: ../src/iop/clipping.c:2176
+msgid "3:2, 4x6, 35mm"
+msgstr "3:2, 4x6, 35mm"
+
+#: ../src/iop/clipping.c:2177
+msgid "16:10, 8x5"
+msgstr "16:10, 8x5"
+
+#: ../src/iop/clipping.c:2179
+msgid "16:9, HDTV"
+msgstr "16:9, HDTV"
+
+#: ../src/iop/clipping.c:2180
+msgid "widescreen"
+msgstr "widescreen"
+
+#: ../src/iop/clipping.c:2181
+msgid "2:1, univisium"
+msgstr "2:1, univisium"
+
+#: ../src/iop/clipping.c:2182
+msgid "cinemascope"
+msgstr "cinemascópio"
+
+#: ../src/iop/clipping.c:2183
+msgid "21:9"
+msgstr "21:9"
+
+#: ../src/iop/clipping.c:2184
+msgid "anamorphic"
+msgstr "anamórfico"
+
+#: ../src/iop/clipping.c:2185
+msgid "3:1, panorama"
+msgstr "3:1, panorâmica"
+
+#: ../src/iop/clipping.c:2217 ../src/iop/clipping.c:2229
+#, c-format
+msgid "invalid ratio format for `%s'. it should be \"number:number\""
+msgstr "formato da proporção inválido para `%s'. deveria ser \"número:número\""
+
+#: ../src/iop/clipping.c:2276
+msgid ""
+"set the aspect ratio\n"
+"the list is sorted: from most square to least square"
+msgstr ""
+"escolher o aspecto\n"
+"a lista é ordenada: do mais quadrado ao menos quadrado"
+
+#: ../src/iop/clipping.c:2312 ../src/libs/live_view.c:368
+msgid "display guide lines to help compose your photograph"
+msgstr "mostrar linhas guia para auxiliar na composição da sua fotografia"
+
+#: ../src/iop/clipping.c:2316 ../src/iop/clipping.c:2321
+#: ../src/libs/live_view.c:377
+msgid "flip guides"
+msgstr "espelhar guias"
+
+#: ../src/iop/clipping.c:2318 ../src/libs/live_view.c:374
+msgid "horizontally"
+msgstr "horizontalmente"
+
+#: ../src/iop/clipping.c:2319 ../src/libs/live_view.c:375
+msgid "vertically"
+msgstr "verticalmente"
+
+#: ../src/iop/clipping.c:2334
+msgid "the left margin cannot overlap with the right margin"
+msgstr "a margem esquerda não pode sobrepor a margem direita"
+
+#: ../src/iop/clipping.c:2341
+msgid "the right margin cannot overlap with the left margin"
+msgstr "a margem direita não pode sobrepor a margem esquerda"
+
+#: ../src/iop/clipping.c:2347
+msgid "the top margin cannot overlap with the bottom margin"
+msgstr "a margem superior não pode sobrepor a margem inferior"
+
+#: ../src/iop/clipping.c:2354
+msgid "the bottom margin cannot overlap with the top margin"
+msgstr "a margem inferior não pode sobrepor a margem superior"
+
+#: ../src/iop/clipping.c:2358
+msgid "main"
+msgstr "principal"
+
+#: ../src/iop/clipping.c:2359
+msgid "margins"
+msgstr "margens"
+
+#: ../src/iop/clipping.c:3452
+msgctxt "accel"
+msgid "commit"
+msgstr "finalizar"
+
+#: ../src/iop/clipping.c:3453
+msgctxt "accel"
+msgid "angle"
+msgstr "ângulo"
+
+#: ../src/iop/clipping.c:3454
+msgctxt "accel"
+msgid "left"
+msgstr "esquerda"
+
+#: ../src/iop/clipping.c:3455
+msgctxt "accel"
+msgid "top"
+msgstr "superior"
+
+#: ../src/iop/clipping.c:3456
+msgctxt "accel"
+msgid "right"
+msgstr "direita"
+
+#: ../src/iop/clipping.c:3457
+msgctxt "accel"
+msgid "bottom"
+msgstr "inferior"
+
+#: ../src/iop/clipping.c:3458
+msgctxt "accel"
+msgid "aspect ratio"
+msgstr "ajuste de aspecto"
+
+#: ../src/iop/clipping.c:3459
+msgctxt "accel"
+msgid "guide lines"
+msgstr "linhas-guia"
+
+#: ../src/iop/clipping.c:3460
+msgctxt "accel"
+msgid "flip"
+msgstr "espelhar simetricamente"
+
+#: ../src/iop/clipping.c:3461
+msgctxt "accel"
+msgid "keystone"
+msgstr "distorção de perspectiva"
+
+#: ../src/iop/clipping.c:3492
+#, c-format
+msgid "[%s on borders] crop"
+msgstr "[%s em bordas] cortar"
+
+#: ../src/iop/clipping.c:3498
+#, c-format
+msgid "[%s on borders] crop keeping ratio"
+msgstr "[%s em bordas] cortar mantendo aspecto"
+
+#: ../src/iop/clipping.c:3503
+#, c-format
+msgid "[%s] define/rotate horizon"
+msgstr "[%s] definir/rotacionar horizonte"
+
+#: ../src/iop/colisa.c:79
+msgid "contrast brightness saturation"
+msgstr "contraste brilho saturacão"
+
+#: ../src/iop/colisa.c:333
+msgid "color saturation adjustment"
+msgstr "ajuste de saturação de cor"
+
+#: ../src/iop/colorbalance.c:147
+msgid "color balance"
+msgstr "balanço de cor"
+
+#: ../src/iop/colorbalance.c:152
+msgid ""
+"affect color, brightness and contrast\n"
+"for corrective and creative purposes.\n"
+"works in RGB\n"
+"takes preferably a linear RGB input,\n"
+"outputs possibly non-linear RGB, depending on settings."
+msgstr ""
+"afeta cor, brilho e contraste em RGB,\n"
+"para propósitos corretivos e criativos.\n"
+"Trabalha em RGB,\n"
+"a entrada é preferencialmente RGB linear,\n"
+"a saída é possivelmente RGB não-linear, dependendo de configurações."
+
+#. these blobs were exported as dtstyle and copied from there:
+#: ../src/iop/colorbalance.c:267
+msgid "split-toning teal-orange (2nd instance)"
+msgstr "dois tons (split-toning) azul-petróleo/laranja (2a instância)"
+
+#: ../src/iop/colorbalance.c:270
+msgid "split-toning teal-orange (1st instance)"
+msgstr "dois tons (split-toning) azul-petróleo/laranja (1a instância)"
+
+#: ../src/iop/colorbalance.c:274
+msgid "generic film"
+msgstr "filme genérico"
+
+#: ../src/iop/colorbalance.c:278
+msgid "similar to Kodak Portra"
+msgstr "emelhante a Kodak Portra"
+
+#: ../src/iop/colorbalance.c:282
+msgid "similar to Kodak Ektar"
+msgstr "semelhante a Kodak Ektar"
+
+#: ../src/iop/colorbalance.c:286
+msgid "similar to Kodachrome"
+msgstr "semelhante a Kodachrome"
+
+#: ../src/iop/colorbalance.c:293
+msgctxt "accel"
+msgid "input saturation"
+msgstr "saturação de entrada"
+
+#: ../src/iop/colorbalance.c:294
+msgctxt "accel"
+msgid "output saturation"
+msgstr "saturação de saída"
+
+#: ../src/iop/colorbalance.c:295
+msgctxt "accel"
+msgid "contrast fulcrum"
+msgstr "pivô de contraste (contrast fulcrum)"
+
+#: ../src/iop/colorbalance.c:298
+msgctxt "accel"
+msgid "color control sliders"
+msgstr "controles de cor"
+
+#: ../src/iop/colorbalance.c:959
+msgid "optimize luma from patches"
+msgstr "otimizar luma dos patches"
+
+#: ../src/iop/colorbalance.c:961 ../src/iop/colorbalance.c:2331
+msgid "optimize luma"
+msgstr "otimizar luma"
+
+#: ../src/iop/colorbalance.c:965
+msgid "neutralize colors from patches"
+msgstr "neutralizar cores dos patches"
+
+#: ../src/iop/colorbalance.c:967 ../src/iop/colorbalance.c:2337
+msgid "neutralize colors"
+msgstr "neutralizar cores"
+
+#: ../src/iop/colorbalance.c:2058 ../src/iop/colorbalance.c:2068
+msgid "color-grading mapping method"
+msgstr "método color-grading de mapeamento de cores"
+
+#: ../src/iop/colorbalance.c:2062
+msgid "color control sliders"
+msgstr "controles de cor"
+
+#: ../src/iop/colorbalance.c:2063
+msgid "HSL"
+msgstr "HSL"
+
+#: ../src/iop/colorbalance.c:2064
+msgid "RGBL"
+msgstr "RGBL"
+
+#: ../src/iop/colorbalance.c:2077
+msgid "master"
+msgstr "mestre"
+
+#: ../src/iop/colorbalance.c:2085
+msgid "saturation correction before the color balance"
+msgstr "correção de saturação antes do balanço de cor"
+
+#: ../src/iop/colorbalance.c:2093
+msgid "saturation correction after the color balance"
+msgstr "correção de saturação depois do balanço de cor"
+
+#: ../src/iop/colorbalance.c:2099
+msgid "adjust to match a neutral tone"
+msgstr "ajustar para casar com tom neutro"
+
+#: ../src/iop/colorbalance.c:2167 ../src/iop/colorbalance.c:2176
+msgid "factor of "
+msgstr "fator de "
+
+#: ../src/iop/colorbalance.c:2168
+msgid "factor"
+msgstr "fator"
+
+#. lift
+#: ../src/iop/colorbalance.c:2182
+msgid "shadows : lift / offset"
+msgstr "sombras: elevação / deslocamento"
+
+#: ../src/iop/colorbalance.c:2184
+msgid "factor of lift"
+msgstr "fator de levante"
+
+#: ../src/iop/colorbalance.c:2184
+msgid "lift"
+msgstr "levantar"
+
+#: ../src/iop/colorbalance.c:2193 ../src/iop/colorbalance.c:2241
+#: ../src/iop/colorbalance.c:2288
+msgid "select the hue"
+msgstr "selecionar o tom de matiz"
+
+#: ../src/iop/colorbalance.c:2203 ../src/iop/colorbalance.c:2251
+#: ../src/iop/colorbalance.c:2298
+msgid "select the saturation"
+msgstr "selecionar o tom de saturação"
+
+#: ../src/iop/colorbalance.c:2208
+msgid "factor of red for lift"
+msgstr "fator de vermelho para levante"
+
+#: ../src/iop/colorbalance.c:2215
+msgid "factor of green for lift"
+msgstr "fator de verde para levante"
+
+#: ../src/iop/colorbalance.c:2222
+msgid "factor of blue for lift"
+msgstr "fator de azul para levante"
+
+#. gamma
+#: ../src/iop/colorbalance.c:2230
+msgid "mid-tones : gamma / power"
+msgstr "meios-tons : gama / potência"
+
+#: ../src/iop/colorbalance.c:2232
+msgid "factor of gamma"
+msgstr "fator de gamma"
+
+#: ../src/iop/colorbalance.c:2255
+msgid "factor of red for gamma"
+msgstr "fator de vermelho para gamma"
+
+#: ../src/iop/colorbalance.c:2262
+msgid "factor of green for gamma"
+msgstr "fator de verde para gamma"
+
+#: ../src/iop/colorbalance.c:2269
+msgid "factor of blue for gamma"
+msgstr "fator de azul para gamma"
+
+#. gain
+#: ../src/iop/colorbalance.c:2277
+msgid "highlights : gain / slope"
+msgstr "tons claros: ganho / inclinação"
+
+#: ../src/iop/colorbalance.c:2279
+msgid "factor of gain"
+msgstr "fator de ganho"
+
+#: ../src/iop/colorbalance.c:2279
+msgid "gain"
+msgstr "ganho"
+
+#: ../src/iop/colorbalance.c:2302
+msgid "factor of red for gain"
+msgstr "fator de vermelho para ganho"
+
+#: ../src/iop/colorbalance.c:2309
+msgid "factor of green for gain"
+msgstr "fator de verde para ganho"
+
+#: ../src/iop/colorbalance.c:2316
+msgid "factor of blue for gain"
+msgstr "fator de azul para ganho"
+
+#: ../src/iop/colorbalance.c:2323
+msgid "auto optimizers"
+msgstr "otimizadores automáticos"
+
+#: ../src/iop/colorbalance.c:2332
+msgid "fit the whole histogram and center the average luma"
+msgstr "ajustar todo o histograma e centralizar luma médio"
+
+#: ../src/iop/colorbalance.c:2338
+msgid "optimize the RGB curves to remove color casts"
+msgstr "otimizar curvas RGB para remover color casts"
+
+#: ../src/iop/colorchecker.c:114
+msgid "color look up table"
+msgstr "tabela de cores"
+
+#: ../src/iop/colorchecker.c:134 ../src/iop/colorize.c:124
+msgctxt "accel"
+msgid "lightness"
+msgstr "luminosidade"
+
+#: ../src/iop/colorchecker.c:135
+msgctxt "accel"
+msgid "green-red"
+msgstr "verde/vermelho"
+
+#: ../src/iop/colorchecker.c:136
+msgctxt "accel"
+msgid "blue-yellow"
+msgstr "azul-amarelo"
+
+#: ../src/iop/colorchecker.c:138
+msgctxt "accel"
+msgid "target color"
+msgstr "cor alvo"
+
+#: ../src/iop/colorchecker.c:291
+msgid "it8 skin tones"
+msgstr "tons de pele it8"
+
+#: ../src/iop/colorchecker.c:304
+msgid "helmholtz/kohlrausch monochrome"
+msgstr "monocromático helmholtz/kohlrausch"
+
+#: ../src/iop/colorchecker.c:319
+msgid "Fuji Astia emulation"
+msgstr "emulação de Fuji Astia"
+
+#: ../src/iop/colorchecker.c:331
+msgid "Fuji Classic Chrome emulation"
+msgstr "emulação de Fuji Classic Chrome"
+
+#: ../src/iop/colorchecker.c:343
+msgid "Fuji Monochrome emulation"
+msgstr "emulação de Fuji Monochrome"
+
+#: ../src/iop/colorchecker.c:355
+msgid "Fuji Provia emulation"
+msgstr "emulação de Fuji Provia"
+
+#: ../src/iop/colorchecker.c:367
+msgid "Fuji Velvia emulation"
+msgstr "emulação de Fuji Velvia"
+
+#: ../src/iop/colorchecker.c:865 ../src/iop/colorchecker.c:1367
+#, c-format
+msgid "patch #%d"
+msgstr "patch #%d"
+
+#: ../src/iop/colorchecker.c:1238
+#, c-format
+msgid ""
+"(%2.2f %2.2f %2.2f)\n"
+"altered patches are marked with an outline\n"
+"click to select\n"
+"double click to reset\n"
+"right click to delete patch\n"
+"shift+click while color picking to replace patch"
+msgstr ""
+"(%2.2f %2.2f %2.2f)\n"
+"patches alterados são marcados com um outline\n"
+"click para selecionar\n"
+"click duplo para reset\n"
+"click direito para remover patch\n"
+"shift-click enquanto escolhe cor para substituir patch"
+
+#: ../src/iop/colorchecker.c:1362
+msgid "patch"
+msgstr "patch"
+
+#: ../src/iop/colorchecker.c:1363
+msgid "color checker patch"
+msgstr "patch da tabela de cores"
+
+#: ../src/iop/colorchecker.c:1374
+msgid "lightness offset"
+msgstr "deslocamento de luminosidade"
+
+#: ../src/iop/colorchecker.c:1378
+msgid "chroma offset green/red"
+msgstr "deslocamento de croma verde/vermelho"
+
+#: ../src/iop/colorchecker.c:1379
+msgid "green/red"
+msgstr "verde/vermelho"
+
+#: ../src/iop/colorchecker.c:1385
+msgid "chroma offset blue/yellow"
+msgstr "deslocamento de croma azul/amarelo"
+
+#: ../src/iop/colorchecker.c:1386
+msgid "blue/yellow"
+msgstr "azul/amarelo"
+
+#: ../src/iop/colorchecker.c:1392
+msgid "saturation offset"
+msgstr "saturação"
+
+#: ../src/iop/colorchecker.c:1397
+msgid "target color"
+msgstr "cor alvo"
+
+#: ../src/iop/colorchecker.c:1398
+msgid ""
+"control target color of the patches via relative offsets or via absolute Lab "
+"values"
+msgstr ""
+"controlar cor alvo dos patches via deslocamento relativo ou via valores Lab "
+"absolutos"
+
+#: ../src/iop/colorchecker.c:1399
+msgid "relative"
+msgstr "relativo"
+
+#: ../src/iop/colorchecker.c:1400
+msgid "absolute"
+msgstr "absoluto"
+
+#: ../src/iop/colorcontrast.c:88
+msgid "color contrast"
+msgstr "contraste de cor"
+
+#: ../src/iop/colorcontrast.c:126
+msgctxt "accel"
+msgid "green vs magenta"
+msgstr "verde vs magenta"
+
+#: ../src/iop/colorcontrast.c:127
+msgctxt "accel"
+msgid "blue vs yellow"
+msgstr "azul vs amarelo"
+
+#: ../src/iop/colorcontrast.c:339
+msgid "steepness of the a* curve in Lab"
+msgstr "inclinação da curva a* em Lab"
+
+#: ../src/iop/colorcontrast.c:342
+msgid "steepness of the b* curve in Lab"
+msgstr "inclinação da curva b* em Lab"
+
+#: ../src/iop/colorcorrection.c:71
+msgid "color correction"
+msgstr "correção de cor"
+
+#: ../src/iop/colorcorrection.c:98
+msgid "warm tone"
+msgstr "tom quente"
+
+#: ../src/iop/colorcorrection.c:105
+msgid "warming filter"
+msgstr "filtro de aquecimento"
+
+#: ../src/iop/colorcorrection.c:112
+msgid "cooling filter"
+msgstr "filtro de resfriamento"
+
+#: ../src/iop/colorcorrection.c:252
+msgid ""
+"drag the line for split-toning. bright means highlights, dark means shadows. "
+"use mouse wheel to change saturation."
+msgstr ""
+"arraste a linha para divisão de tons. claro significa realces, escuro "
+"significa sombras. role com o mouse para mudar a saturação."
+
+#: ../src/iop/colorcorrection.c:272
+msgid "set the global saturation"
+msgstr "escolha de saturação global"
+
+#: ../src/iop/colorin.c:125
+msgid "input color profile"
+msgstr "perfil de cor de entrada"
+
+#: ../src/iop/colorin.c:163
+msgctxt "accel"
+msgid "input profile"
+msgstr "perfil de entrada"
+
+#: ../src/iop/colorin.c:164
+msgctxt "accel"
+msgid "working profile"
+msgstr "perfil de trabalho"
+
+#: ../src/iop/colorin.c:165
+msgctxt "accel"
+msgid "gamut clipping"
+msgstr "corte de tonalidade"
+
+#: ../src/iop/colorin.c:494
+#, c-format
+msgid ""
+"can't extract matrix from colorspace `%s', it will be replaced by Rec2020 "
+"RGB!"
+msgstr ""
+"não consegui extrair matriz do espaço de cores `%s', será substituída pelo "
+"Rec2020 RGB!"
+
+#: ../src/iop/colorin.c:1594
+#, c-format
+msgid "`%s' color matrix not found!"
+msgstr "`%s' matriz de cores não encontrada!"
+
+#: ../src/iop/colorin.c:1629
+msgid "input profile could not be generated!"
+msgstr "perfil de entrada não pode ser gerado!"
+
+#: ../src/iop/colorin.c:1711
+msgid "unsupported input profile has been replaced by linear Rec709 RGB!"
+msgstr "perfil de entrada não suportado foi substituído por linear Rec709 RGB!"
+
+#: ../src/iop/colorin.c:2084
+msgid "input profile"
+msgstr "perfil de entrada"
+
+#: ../src/iop/colorin.c:2088
+msgid "working profile"
+msgstr "perfil de trabalho"
+
+#: ../src/iop/colorin.c:2098 ../src/iop/colorin.c:2109
+#: ../src/iop/colorout.c:904
+#, c-format
+msgid "ICC profiles in %s or %s"
+msgstr "perfis ICC em %s ou %s"
+
+#: ../src/iop/colorin.c:2120
+msgid "confine Lab values to gamut of RGB color space"
+msgstr "delimita valores Lab para tonalidades do espaço de cores RGB"
+
+#: ../src/iop/colorize.c:84
+msgid "colorize"
+msgstr "colorir"
+
+#: ../src/iop/colorize.c:122 ../src/iop/colorreconstruction.c:182
+#: ../src/iop/graduatednd.c:165
+msgctxt "accel"
+msgid "hue"
+msgstr "matiz"
+
+#: ../src/iop/colorize.c:125
+msgctxt "accel"
+msgid "source mix"
+msgstr "mistura fonte"
+
+#: ../src/iop/colorize.c:370 ../src/iop/splittoning.c:503
+msgid "select the hue tone"
+msgstr "selecionar o tom de matiz"
+
+#: ../src/iop/colorize.c:375
+msgid "select the saturation shadow tone"
+msgstr "selecionar o tom de saturação de sombra"
+
+#: ../src/iop/colorize.c:380
+msgid "lightness of color"
+msgstr "luminosidade da cor"
+
+#: ../src/iop/colorize.c:385
+msgid "mix value of source lightness"
+msgstr "mistura valor da fonte de luminosidade"
+
+#: ../src/iop/colormapping.c:145
+msgid "color mapping"
+msgstr "mapeamento de cores"
+
+#: ../src/iop/colormapping.c:166
+msgctxt "accel"
+msgid "number of clusters"
+msgstr "número de clusters"
+
+#: ../src/iop/colormapping.c:167
+msgctxt "accel"
+msgid "color dominance"
+msgstr "dominância de cor"
+
+#: ../src/iop/colormapping.c:168
+msgctxt "accel"
+msgid "histogram equalization"
+msgstr "equalização do histograma"
+
+#: ../src/iop/colormapping.c:170
+msgctxt "accel"
+msgid "acquire as source"
+msgstr "adquirir como fonte"
+
+#: ../src/iop/colormapping.c:171
+msgctxt "accel"
+msgid "acquire as target"
+msgstr "adquirir como alvo"
+
+#: ../src/iop/colormapping.c:1068
+msgid "source clusters:"
+msgstr "clusters da origem:"
+
+#: ../src/iop/colormapping.c:1077
+msgid "target clusters:"
+msgstr "clusters alvo:"
+
+#: ../src/iop/colormapping.c:1090
+msgid "acquire as source"
+msgstr "adquirir como fonte"
+
+#: ../src/iop/colormapping.c:1092
+msgid "analyze this image as a source image"
+msgstr "analisar esta imagem como imagem fonte"
+
+#: ../src/iop/colormapping.c:1096
+msgid "acquire as target"
+msgstr "adquirir como alvo"
+
+#: ../src/iop/colormapping.c:1098
+msgid "analyze this image as a target image"
+msgstr "analisar esta imagem como imagem alvo"
+
+#: ../src/iop/colormapping.c:1103
+msgid "number of clusters to find in image. value change resets all clusters"
+msgstr ""
+"número de clusters a procurar na imagem. alteração de valor redefine todos "
+"os clusters"
+
+#: ../src/iop/colormapping.c:1106
+msgid ""
+"how clusters are mapped. low values: based on color proximity, high values: "
+"based on color dominance"
+msgstr ""
+"como clusters são mapeados. valores baixos: baseado em proximidade de cores, "
+"valores altos: baseados em domínio de cores"
+
+#: ../src/iop/colormapping.c:1111
+msgid "level of histogram equalization"
+msgstr "nível de equalização do histograma"
+
+#: ../src/iop/colorout.c:80
+msgid "output color profile"
+msgstr "perfil de cor de saída"
+
+#: ../src/iop/colorout.c:123
+msgctxt "accel"
+msgid "export profile"
+msgstr "perfil de exportação"
+
+#: ../src/iop/colorout.c:678
+msgid "missing output profile has been replaced by sRGB!"
+msgstr "perfil de saída não encontrado foi substituído por linear sRGB!"
+
+#: ../src/iop/colorout.c:697
+msgid "missing softproof profile has been replaced by sRGB!"
+msgstr ""
+"perfil de impressão na tela não encontrado foi substituído por linear sRGB!"
+
+#: ../src/iop/colorout.c:740
+msgid "unsupported output profile has been replaced by sRGB!"
+msgstr "perfil de saída não suportado foi substituido por linear sRGB!"
+
+#: ../src/iop/colorout.c:880
+msgid "output intent"
+msgstr "intenção de saída"
+
+#: ../src/iop/colorout.c:881 ../src/libs/export.c:744
+#: ../src/libs/print_settings.c:1245 ../src/libs/print_settings.c:1460
+#: ../src/views/darkroom.c:2259 ../src/views/darkroom.c:2267
+#: ../src/views/lighttable.c:1392 ../src/views/lighttable.c:1400
+msgid "perceptual"
+msgstr "perceptual"
+
+#: ../src/iop/colorout.c:882 ../src/libs/export.c:745
+#: ../src/libs/print_settings.c:1246 ../src/libs/print_settings.c:1461
+#: ../src/views/darkroom.c:2260 ../src/views/darkroom.c:2268
+#: ../src/views/lighttable.c:1393 ../src/views/lighttable.c:1401
+msgid "relative colorimetric"
+msgstr "colorimétrico relativo"
+
+#: ../src/iop/colorout.c:883 ../src/libs/export.c:746
+#: ../src/libs/print_settings.c:1247 ../src/libs/print_settings.c:1462
+#: ../src/views/darkroom.c:2261 ../src/views/darkroom.c:2269
+#: ../src/views/lighttable.c:1394 ../src/views/lighttable.c:1402
+msgctxt "rendering intent"
+msgid "saturation"
+msgstr "saturação"
+
+#: ../src/iop/colorout.c:884 ../src/libs/export.c:747
+#: ../src/libs/print_settings.c:1248 ../src/libs/print_settings.c:1463
+#: ../src/views/darkroom.c:2262 ../src/views/darkroom.c:2270
+#: ../src/views/lighttable.c:1395 ../src/views/lighttable.c:1403
+msgid "absolute colorimetric"
+msgstr "colorimétrico relativo"
+
+#: ../src/iop/colorout.c:901
+msgid "rendering intent"
+msgstr "intenção de renderização"
+
+#: ../src/iop/colorreconstruction.c:129
+msgid "color reconstruction"
+msgstr "reconstrução de cor"
+
+#: ../src/iop/colorreconstruction.c:180 ../src/iop/tonemap.cc:96
+msgctxt "accel"
+msgid "spatial extent"
+msgstr "extensão espacial"
+
+#: ../src/iop/colorreconstruction.c:181
+msgctxt "accel"
+msgid "range extent"
+msgstr "extensão da faixa"
+
+#: ../src/iop/colorreconstruction.c:183
+msgctxt "accel"
+msgid "precedence"
+msgstr "precedência"
+
+#: ../src/iop/colorreconstruction.c:641 ../src/iop/colorreconstruction.c:1097
+#: ../src/iop/globaltonemap.c:209 ../src/iop/globaltonemap.c:375
+#: ../src/iop/hazeremoval.c:677 ../src/iop/hazeremoval.c:929
+#: ../src/iop/levels.c:340
+msgid "inconsistent output"
+msgstr "saída inconsistente"
+
+#: ../src/iop/colorreconstruction.c:679
+msgid "module `color reconstruction' failed"
+msgstr "módulo `reconstrução de cor' falhou"
+
+#: ../src/iop/colorreconstruction.c:1318
+msgid "pixels with lightness values above this threshold are corrected"
+msgstr "pixels com valor de luminosidade acima deste limiar são corrigidos"
+
+#: ../src/iop/colorreconstruction.c:1319
+msgid "how far to look for replacement colors in spatial dimensions"
+msgstr "quão longe procurar para cores substitutas em dimensões espaciais"
+
+#: ../src/iop/colorreconstruction.c:1320
+msgid "how far to look for replacement colors in the luminance dimension"
+msgstr "quão longe procurar para cores substitutas em dimensões luminosidade"
+
+#: ../src/iop/colorreconstruction.c:1321
+msgid "if and how to give precedence to specific replacement colors"
+msgstr "se e como dar precedência para cores substitutas específicas"
+
+#: ../src/iop/colorreconstruction.c:1322
+msgid "the hue tone which should be given precedence over other hue tones"
+msgstr ""
+"tom de matiz ao qual deve ser dada precedência sobre outros tons de matiz"
+
+#: ../src/iop/colortransfer.c:102
+msgid "color transfer"
+msgstr "tranferência de cor"
+
+#: ../src/iop/colortransfer.c:123
+msgctxt "accel"
+msgid "acquire"
+msgstr "aquisição"
+
+#: ../src/iop/colortransfer.c:124 ../src/libs/metadata.c:529
+msgctxt "accel"
+msgid "apply"
+msgstr "aplicar"
+
+#: ../src/iop/colortransfer.c:659
+msgid ""
+"this module will be removed in the future\n"
+"and is only here so you can switch it off\n"
+"and move to the new color mapping module."
+msgstr ""
+"este módulo será removido no futuro\n"
+"e está aqui apenas para que você o desative\n"
+"e use o novo equalizador."
+
+#: ../src/iop/colortransfer.c:686
+msgid "number of clusters to find in image"
+msgstr "número de clusters a procurar na imagem"
+
+#: ../src/iop/colortransfer.c:690
+msgid "acquire"
+msgstr "aquisição"
+
+#: ../src/iop/colortransfer.c:692
+msgid "analyze this image"
+msgstr "analisar esta imagem"
+
+#. apply button
+#: ../src/iop/colortransfer.c:696 ../src/libs/metadata.c:748
+#: ../src/libs/styles.c:636
+msgid "apply"
+msgstr "aplicar"
+
+#: ../src/iop/colortransfer.c:697
+msgid "apply previously analyzed image look to this image"
+msgstr "aplicar aparência da imagem analisada anteriormente a esta imagem"
+
+#: ../src/iop/colorzones.c:139
+msgid "color zones"
+msgstr "zonas de cor"
+
+#: ../src/iop/colorzones.c:160
+msgctxt "accel"
+msgid "select by"
+msgstr "selecionar por"
+
+#: ../src/iop/colorzones.c:161
+msgctxt "accel"
+msgid "process mode"
+msgstr "modo de processo"
+
+#: ../src/iop/colorzones.c:162 ../src/iop/rgbcurve.c:139
+#: ../src/iop/tonecurve.c:215
+msgctxt "accel"
+msgid "interpolation method"
+msgstr "modo de interpolação"
+
+#: ../src/iop/colorzones.c:610
+msgid "red black white"
+msgstr "vermelho preto branco"
+
+#: ../src/iop/colorzones.c:632
+msgid "black white and skin tones"
+msgstr "preto branco e tons de pele"
+
+#: ../src/iop/colorzones.c:654
+msgid "polarizing filter"
+msgstr "filtro polarizador"
+
+#: ../src/iop/colorzones.c:674
+msgid "natural skin tones"
+msgstr "tons de pele natural"
+
+#: ../src/iop/colorzones.c:704
+msgid "black & white film"
+msgstr "filme preto & branco"
+
+#: ../src/iop/colorzones.c:724
+msgid "HSL base setting"
+msgstr "configuração de base HSL"
+
+#: ../src/iop/colorzones.c:2212 ../src/iop/retouch.c:1996
+#: ../src/iop/toneequal.c:1762
+msgid "cannot display masks when the blending mask is displayed"
+msgstr ""
+"não é possível mostrar máscaras quando a máscara de mesclagem é mostrada"
+
+#: ../src/iop/colorzones.c:2386 ../src/iop/rgbcurve.c:1426
+msgid ""
+"create a curve based on an area from the image\n"
+"drag to create a flat curve\n"
+"ctrl+drag to create a positive curve\n"
+"shift+drag to create a negative curve"
+msgstr ""
+"criar uma curva baseada em uam área da imagem\n"
+"arraste para ceiar uma curva plana\n"
+"ctrl+arraste para criar uma curva positiva\n"
+"shift+arraste para criar uma curva negativa"
+
+#. edit by area
+#: ../src/iop/colorzones.c:2408
+msgid "edit by area"
+msgstr "editar por área"
+
+#: ../src/iop/colorzones.c:2410
+msgid "edit the curve nodes by area"
+msgstr "editar os nós da curva pela área"
+
+#: ../src/iop/colorzones.c:2417
+msgid "display selection"
+msgstr "mostra seleção"
+
+#: ../src/iop/colorzones.c:2427
+msgid "choose selection criterion, will be the abscissa in the graph"
+msgstr "escolher o critério de seleção, será a abscissa no gráfico"
+
+#: ../src/iop/colorzones.c:2430
+msgid "choose between a smoother or stronger effect"
+msgstr "escolha entre um efeito mais suave ou mais forte"
+
+#: ../src/iop/colorzones.c:2463 ../src/iop/rgbcurve.c:1463
+#: ../src/iop/tonecurve.c:1314
+msgid "interpolation method"
+msgstr "modo de interpolação"
+
+#: ../src/iop/colorzones.c:2465 ../src/iop/rgbcurve.c:1465
+#: ../src/iop/tonecurve.c:1316
+msgid "centripetal spline"
+msgstr "spline centrípeta"
+
+#: ../src/iop/colorzones.c:2466 ../src/iop/rgbcurve.c:1466
+#: ../src/iop/tonecurve.c:1317
+msgid "monotonic spline"
+msgstr "spline monotônica"
+
+#: ../src/iop/colorzones.c:2469 ../src/iop/rgbcurve.c:1469
+#: ../src/iop/tonecurve.c:1319
+msgid ""
+"change this method if you see oscillations or cusps in the curve\n"
+"- cubic spline is better to produce smooth curves but oscillates when nodes "
+"are too close\n"
+"- centripetal is better to avoids cusps and oscillations with close nodes "
+"but is less smooth\n"
+"- monotonic is better for accuracy of pure analytical functions (log, gamma, "
+"exp)\n"
+msgstr ""
+"mude este método se vir oscilações ou cúspides (picos) na curva\n"
+"- spline cúbico é melhor para produzir curvas suaves mas oscila quando os "
+"nós são muito próximos\n"
+"- centrípeta é melhor para evitar picos e oscilações com nós próximos mas é "
+"menos suave\n"
+"- monotônico é melhor para acurácia de funções puramente analíticas (log, "
+"gama, exp)\n"
+
+#: ../src/iop/defringe.c:69
+msgid "defringe"
+msgstr "redução de halo"
+
+#: ../src/iop/defringe.c:115
+msgctxt "accel"
+msgid "edge detection radius"
+msgstr "raio para detecção de bordas"
+
+#: ../src/iop/defringe.c:117
+msgctxt "accel"
+msgid "operation mode"
+msgstr "modo de operação"
+
+#: ../src/iop/defringe.c:420
+msgid ""
+"method for color protection:\n"
+" - global average: fast, might show slightly wrong previews in high "
+"magnification; might sometimes protect saturation too much or too low in "
+"comparison to local average\n"
+" - local average: slower, might protect saturation better than global "
+"average by using near pixels as color reference, so it can still allow for "
+"more desaturation where required\n"
+" - static: fast, only uses the threshold as a static limit"
+msgstr ""
+"método para proteção de cor:\n"
+"-média global: rápido, pode mostrar pré-visualizações ligeiramente erradas "
+"em zoom; pode às vezes proteger demais a saturação ou muito pouco, em "
+"comparação com média local\n"
+"-média local: mais lento, pode proteger a saturação melhor que média local "
+"usando pixels próximos como referência de cor, por isso pode permitir mais "
+"dessaturação do que o requerido\n"
+"- estático: rápido, só usa limiar como limite estático"
+
+#: ../src/iop/defringe.c:428
+msgid "radius for detecting fringe"
+msgstr "raio para detecção de fronteira (fringe)"
+
+#: ../src/iop/defringe.c:432
+msgid "threshold for defringe, higher values mean less defringing"
+msgstr ""
+"limiar para defringe (mescla de borda), valores altos significam menos "
+"defringing"
+
+#: ../src/iop/demosaic.c:163
+msgid "demosaic"
+msgstr "interpolação cromática"
+
+#: ../src/iop/demosaic.c:183
+msgctxt "accel"
+msgid "edge threshold"
+msgstr "limite borda"
+
+#: ../src/iop/demosaic.c:184
+msgctxt "accel"
+msgid "method (bayer)"
+msgstr "método (bayer)"
+
+#: ../src/iop/demosaic.c:185
+msgctxt "accel"
+msgid "method (xtrans)"
+msgstr "método (xtrans)"
+
+#: ../src/iop/demosaic.c:186
+msgctxt "accel"
+msgid "color smoothing"
+msgstr "suavização de cor"
+
+#: ../src/iop/demosaic.c:187
+msgctxt "accel"
+msgid "match greens"
+msgstr "ajustar verdes"
+
+#: ../src/iop/demosaic.c:4908
+#, c-format
+msgid "`%s' color matrix not found for 4bayer image!"
+msgstr "`%s' matriz de cores não encontrada para imagem 4bayer!"
+
+#: ../src/iop/demosaic.c:5023 ../src/iop/demosaic.c:5027
+msgid "demosaicing raw data method"
+msgstr "método de interpolação cromática dados raw"
+
+#: ../src/iop/demosaic.c:5032
+msgid ""
+"threshold for edge-aware median.\n"
+"set to 0.0 to switch off.\n"
+"set to 1.0 to ignore edges."
+msgstr ""
+"limite para mediana sensível a borda.\n"
+"defina 0.0 para desativar.\n"
+"defina 1.0 para ignorar bordas."
+
+#: ../src/iop/demosaic.c:5037
+msgid "one time"
+msgstr "uma vez"
+
+#: ../src/iop/demosaic.c:5038
+msgid "two times"
+msgstr "duas vezes"
+
+#: ../src/iop/demosaic.c:5039
+msgid "three times"
+msgstr "três vezes"
+
+#: ../src/iop/demosaic.c:5040
+msgid "four times"
+msgstr "quatro vezes"
+
+#: ../src/iop/demosaic.c:5041
+msgid "five times"
+msgstr "cinco vezes"
+
+#: ../src/iop/demosaic.c:5042
+msgid "how many color smoothing median steps after demosaicing"
+msgstr "quantos passos de suavização média após interpolação cromática"
+
+#: ../src/iop/demosaic.c:5045
+msgid "green channels matching method"
+msgstr "método de correspondência canal verde"
+
+#: ../src/iop/demosaic.c:5051
+msgid ""
+"demosaicing\n"
+"only needed for raw images."
+msgstr ""
+"demosaic\n"
+"só necessário para imagens RAW."
+
+#: ../src/iop/denoiseprofile.c:586
+msgid "denoise (profiled)"
+msgstr "redução de ruído (perfilado)"
+
+#: ../src/iop/denoiseprofile.c:607
+msgctxt "accel"
+msgid "adjust autoset parameters"
+msgstr "redefine parâmetros automáticos"
+
+#: ../src/iop/denoiseprofile.c:608
+msgctxt "accel"
+msgid "preserve shadows"
+msgstr "preservar sombras"
+
+#: ../src/iop/denoiseprofile.c:609
+msgctxt "accel"
+msgid "bias correction"
+msgstr "correção de viés"
+
+#: ../src/iop/denoiseprofile.c:610 ../src/iop/nlmeans.c:118
+msgctxt "accel"
+msgid "patch size"
+msgstr "tamanho do patch"
+
+#: ../src/iop/denoiseprofile.c:611
+msgctxt "accel"
+msgid "search radius"
+msgstr "raio para busca"
+
+#: ../src/iop/denoiseprofile.c:612
+msgctxt "accel"
+msgid "scattering"
+msgstr "dispersão"
+
+#: ../src/iop/denoiseprofile.c:613
+msgctxt "accel"
+msgid "central pixel weight"
+msgstr "peso do pixel central"
+
+#: ../src/iop/denoiseprofile.c:3353
+#, c-format
+msgid "found match for ISO %d"
+msgstr "encontrada correspondência para ISO %d"
+
+#: ../src/iop/denoiseprofile.c:3362
+#, c-format
+msgid "interpolated from ISO %d and %d"
+msgstr "interpolado de ISO %d e %d"
+
+#: ../src/iop/denoiseprofile.c:3741 ../src/iop/denoiseprofile.c:4332
+msgid "compute variance"
+msgstr "calcula variância"
+
+#: ../src/iop/denoiseprofile.c:4240 ../src/iop/rawdenoise.c:959
+msgid "R"
+msgstr "R"
+
+#: ../src/iop/denoiseprofile.c:4241 ../src/iop/rawdenoise.c:960
+msgid "G"
+msgstr "G"
+
+#: ../src/iop/denoiseprofile.c:4242 ../src/iop/rawdenoise.c:961
+msgid "B"
+msgstr "B"
+
+#: ../src/iop/denoiseprofile.c:4249
+msgid "Y0"
+msgstr "Y0"
+
+#: ../src/iop/denoiseprofile.c:4250
+msgid "U0V0"
+msgstr "U0V0"
+
+#: ../src/iop/denoiseprofile.c:4283
+msgid ""
+"use only with a perfectly\n"
+"uniform image if you want to\n"
+"estimate the noise variance."
+msgstr ""
+"use somente com uma imagem perfeitamente\n"
+"uniforme se você quiser\n"
+"estimar a variância de ruído"
+
+#: ../src/iop/denoiseprofile.c:4290
+msgid "variance red: "
+msgstr "variância de vermelho: "
+
+#. This gets filled in by process
+#: ../src/iop/denoiseprofile.c:4293
+msgid "variance computed on the red channel"
+msgstr "variância calculada no canal vermelho"
+
+#: ../src/iop/denoiseprofile.c:4298
+msgid "variance green: "
+msgstr "variância de verde: "
+
+#. This gets filled in by process
+#: ../src/iop/denoiseprofile.c:4301
+msgid "variance computed on the green channel"
+msgstr "variância calculada no canal verde"
+
+#: ../src/iop/denoiseprofile.c:4306
+msgid "variance blue: "
+msgstr "variância de azul: "
+
+#. This gets filled in by process
+#: ../src/iop/denoiseprofile.c:4309
+msgid "variance computed on the blue channel"
+msgstr "variância calculada no canal azul"
+
+#: ../src/iop/denoiseprofile.c:4319 ../src/libs/export.c:720
+#: ../src/libs/print_settings.c:1189 ../src/libs/print_settings.c:1409
+msgid "profile"
+msgstr "perfil"
+
+#: ../src/iop/denoiseprofile.c:4327
+msgid "non-local means"
+msgstr "média não local"
+
+#: ../src/iop/denoiseprofile.c:4328
+msgid "non-local means auto"
+msgstr "média não local automático"
+
+#: ../src/iop/denoiseprofile.c:4329
+msgid "wavelets"
+msgstr "wavelets"
+
+#: ../src/iop/denoiseprofile.c:4330
+msgid "wavelets auto"
+msgstr "wavelets automatico"
+
+#: ../src/iop/denoiseprofile.c:4361
+msgid ""
+"adapt denoising according to the\n"
+"white balance coefficients.\n"
+"should be enabled on a first instance\n"
+"for better denoising.\n"
+"should be disabled if an earlier instance\n"
+"has been used with a color blending mode."
+msgstr ""
+"adaptar remoção de ruído aos\n"
+"coeficientes de balanço de branco.\n"
+"deve ser habilitado em uma primeira instância\n"
+"para melhor remoção de ruído.\n"
+"deve ser desabilitado se uma instância anteior\n"
+"foi usada com um modo de fusão de cor."
+
+#: ../src/iop/denoiseprofile.c:4367
+msgid ""
+"fix bugs in anscombe transform resulting\n"
+"in undersmoothing of the green channel in\n"
+"wavelets mode, combined with a bad handling\n"
+"of white balance coefficients, and a bug in\n"
+"non local means normalization resulting in\n"
+"undersmoothing when patch size was increased.\n"
+"enabling this option will change the denoising\n"
+"you get. once enabled, you won't be able to\n"
+"return back to old algorithm."
+msgstr ""
+"corrige bugs na transformação de anscombe que\n"
+"resultou em pouca suavização no canal verde no modo\n"
+"wavelet, combinado com uma manipulação subótima\n"
+"dos coeficientes de balanço de brancos, e um\n"
+"bug na normalização de médias não locais, que\n"
+"resulta em pouca suavização quando o tamanho do patch é aumentado.\n"
+"ativar esta opção muda a remoção de ruído.\n"
+"uma vez ativado, não será mais possível\n"
+"reverter para o algoritmo antigo."
+
+#: ../src/iop/denoiseprofile.c:4376
+msgid "profile used for variance stabilization"
+msgstr "perfil utilizado para estabilização de variância"
+
+#: ../src/iop/denoiseprofile.c:4377
+msgid ""
+"method used in the denoising core.\n"
+"non-local means works best for `lightness' blending,\n"
+"wavelets work best for `color' blending"
+msgstr ""
+"método usado no núcleo de redução de ruído.\n"
+"médias não-locais funcionam melhor para mesclagem em `luminosidade',\n"
+"wavelets funcionam melhor para mesclagem em `cor`"
+
+#: ../src/iop/denoiseprofile.c:4380
+msgid ""
+"color representation used within the algorithm.\n"
+"RGB keeps the RGB channels separated,\n"
+"while Y0U0V0 combine the channels to\n"
+"denoise chroma and luma separately."
+msgstr ""
+"representação de cores usada no algoritmo.\n"
+"RGB mantém os canais RGB separados,\n"
+"enquanto Y0U0V0 combina os canais para\n"
+"remoção de ruído de croma e luma separadamente."
+
+#: ../src/iop/denoiseprofile.c:4384
+msgid ""
+"radius of the patches to match.\n"
+"increase for more sharpness on strong edges, and better denoising of smooth "
+"areas.\n"
+"if details are oversmoothed, reduce this value or increase the details "
+"slider."
+msgstr ""
+"raio dos patches a comparar.\n"
+"aumente para maior nitidez nas bordas fortes, e melhor redução de ruído nas "
+"áreas lisas.\n"
+"se detalhes são suavizados demais, reduza este valor ou aumente o controle "
+"deslizante de detalhes."
+
+#: ../src/iop/denoiseprofile.c:4387
+msgid ""
+"emergency use only: radius of the neighbourhood to search patches in. "
+"increase for better denoising performance, but watch the long runtimes! "
+"large radii can be very slow. you have been warned"
+msgstr ""
+"use somente em emergência: raio da vizinhança onde procurar patches. aumente "
+"para melhor denoising, mas cuidado com os longos tempos de execução! raios "
+"grandes podem ser muito lentos. você foi avisado/a"
+
+#: ../src/iop/denoiseprofile.c:4390
+msgid ""
+"scattering of the neighbourhood to search patches in.\n"
+"increase for better coarse-grain noise reduction.\n"
+"does not affect execution time."
+msgstr ""
+"espalhamento na vizinhança para busca por similaridade.\n"
+"aumente para melhor redução de ruídos grosseiros.\n"
+"não afeta o tempo de execução."
+
+#: ../src/iop/denoiseprofile.c:4393
+msgid ""
+"increase the weight of the central pixel\n"
+"of the patch in the patch comparison.\n"
+"useful to recover details when patch size\n"
+"is quite big."
+msgstr ""
+"aumenta o peso do pixel central\n"
+"do patch quando patches são comparados.\n"
+"útil para recuperar detalhes quando o tamanho do patch\n"
+"é grande."
+
+#: ../src/iop/denoiseprofile.c:4397
+msgid "finetune denoising strength"
+msgstr "ajuste fino da intensidade redução de ruido"
+
+#: ../src/iop/denoiseprofile.c:4398
+msgid ""
+"controls the way parameters are autoset\n"
+"increase if shadows are not denoised enough\n"
+"or if chroma noise remains.\n"
+"this can happen if your picture is underexposed."
+msgstr ""
+"controla como parâmetros são auto-ajustados\n"
+"aumente se a redução de ruídos nas sombras não é suficiente\n"
+"ou se sobra ruído de croma.\n"
+"isto pode acontecer se sua foto for superexposta."
+
+#: ../src/iop/denoiseprofile.c:4402
+msgid ""
+"finetune shadows denoising.\n"
+"decrease to denoise more aggressively\n"
+"dark areas of the image."
+msgstr ""
+"ajuste fino da remoção de ruído de sombras.\n"
+"diminua para remover ruído mais agressivamente\n"
+"em áreas escuras da imagem."
+
+#: ../src/iop/denoiseprofile.c:4405
+msgid ""
+"correct color cast in shadows.\n"
+"decrease if shadows are too purple.\n"
+"increase if shadows are too green."
+msgstr ""
+"correção de desvio de cor em sombras.\n"
+"diminuir se as sombras são muito roxas.\n"
+"aumentar se as sombras são muito verdes."
+
+#: ../src/iop/denoiseprofile.c:4408
+msgid ""
+"upgrade the variance stabilizing algorithm.\n"
+"new algorithm extends the current one.\n"
+"it is more flexible but could give small\n"
+"differences in the images already processed."
+msgstr ""
+"atualiza o algoritmo estabilizador de variância.\n"
+"o novo algoritmo extende o atual.\n"
+"é mais flexível, mas pode dar pequenas\n"
+"diferenças nas imagens já processadas."
+
+#: ../src/iop/dither.c:104 ../src/iop/vignette.c:1050
+msgid "dithering"
+msgstr "dithering"
+
+#: ../src/iop/dither.c:124 ../src/iop/highlights.c:102
+msgctxt "accel"
+msgid "method"
+msgstr "método"
+
+#. add the preset.
+#: ../src/iop/dither.c:141
+msgid "dither"
+msgstr "dither"
+
+#: ../src/iop/dither.c:770
+msgid "radius for blurring step"
+msgstr "raio para etapa de desfoque"
+
+#: ../src/iop/dither.c:782
+msgid "the gradient range where to apply random dither"
+msgstr "a faixa de gradiente onde aplicar o dither aleatório"
+
+#: ../src/iop/dither.c:783
+msgid "gradient range"
+msgstr "faixa de gradiente"
+
+#: ../src/iop/dither.c:791
+msgid "damping level of random dither"
+msgstr "nível de amortecimento do dither aleatório"
+
+#: ../src/iop/equalizer.c:88
+msgid "legacy equalizer"
+msgstr "equalizador (obsoleto)"
+
+#: ../src/iop/equalizer.c:311
+msgid "sharpen (strong)"
+msgstr "melhora nitidez (forte)"
+
+#: ../src/iop/equalizer.c:321
+msgctxt "equalizer"
+msgid "sharpen"
+msgstr "melhora nitidez"
+
+#: ../src/iop/equalizer.c:327
+msgid "null"
+msgstr "nulo"
+
+#: ../src/iop/equalizer.c:347
+msgid "denoise (strong)"
+msgstr "reduz ruído (forte)"
+
+#: ../src/iop/equalizer.c:355
+msgid ""
+"this module will be removed in the future\n"
+"and is only here so you can switch it off\n"
+"and move to the new equalizer."
+msgstr ""
+"este módulo será removido no futuro\n"
+"e está aqui para que você o desative\n"
+"e use o novo equalizador."
+
+#: ../src/iop/exposure.c:133 ../src/iop/levels.c:130
+msgctxt "accel"
+msgid "black"
+msgstr "preto"
+
+#: ../src/iop/exposure.c:135
+msgctxt "accel"
+msgid "auto-exposure"
+msgstr "auto-exposição"
+
+#: ../src/iop/exposure.c:136
+msgctxt "accel"
+msgid "percentile"
+msgstr "percentil"
+
+#: ../src/iop/exposure.c:137
+msgctxt "accel"
+msgid "target level"
+msgstr "nível alvo"
+
+#: ../src/iop/exposure.c:270
+msgid "magic lantern defaults"
+msgstr "dafault para magic lantern"
+
+#. For scene-referred workflow, since filmic doesn't brighten as base curve does,
+#. we need an initial exposure boost. This might be too much in some cases but…
+#: ../src/iop/exposure.c:282 ../src/iop/exposure.c:291
+#: ../src/iop/exposure.c:293
+msgid "scene-referred default"
+msgstr "default para relativo à cena"
+
+#: ../src/iop/exposure.c:311 ../src/iop/rawoverexposed.c:172
+#: ../src/iop/rawoverexposed.c:288
+#, c-format
+msgid "failed to get raw buffer from image `%s'"
+msgstr "falha em obter buffer raw da imagem `%s'"
+
+#: ../src/iop/exposure.c:594 ../src/iop/exposure.c:878
+#, no-c-format
+msgid "compensate camera exposure (%+.1f EV)"
+msgstr "compensar exposição da câmera (%+.1f EV)"
+
+#: ../src/iop/exposure.c:882
+msgid ""
+"automatically remove the camera exposure bias\n"
+"this is useful if you exposed the image to the right."
+msgstr ""
+"automaticamente remover o viés de exposição da câmera\n"
+"isto é útil se você expôs a imagem à direita."
+
+#: ../src/iop/exposure.c:895
+msgid ""
+"percentage of bright values clipped out, toggle color picker to activate"
+msgstr ""
+"porcentagem de valores de brilho cortados, alterne (liga/desliga) o seletor "
+"de cor para ativar"
+
+#: ../src/iop/exposure.c:908
+#, no-c-format
+msgid "where in the histogram to meter for deflicking. E.g. 50% is median"
+msgstr "onde no histograma medir para deflicking. Por exemplo, 50% é a mediana"
+
+#: ../src/iop/exposure.c:914
+msgid ""
+"where to place the exposure level for processed pics, EV below overexposure."
+msgstr ""
+"onde por o nível de exposição para fotos processadas, EV abaixo de "
+"sobreexposição."
+
+#: ../src/iop/exposure.c:917
+msgid "computed EC: "
+msgstr "EC calculado: "
+
+#. This gets filled in by process
+#: ../src/iop/exposure.c:919
+msgid "what exposure correction has actually been used"
+msgstr "quais correções de exposição foram utilizadas"
+
+#: ../src/iop/exposure.c:936
+msgid ""
+"adjust the black level to unclip negative RGB values.\n"
+"you should never use it to add more density in blacks!\n"
+"if poorly set, it will clip near-black colors out of gamut\n"
+"by pushing RGB values into negatives."
+msgstr ""
+"ajusta o nível de preto para remover os valores RGB negativos.\n"
+"você nunca deve usar para adicionar mais densidade nos pretos!\n"
+"se mal ajustado, forçará os valores das cores que estão próximas do preto "
+"para fora da escala\n"
+"tornando valores RGB negativos"
+
+#: ../src/iop/filmic.c:300
+msgid "09 EV (low-key)"
+msgstr "09 EV (iluminação baixa)"
+
+#: ../src/iop/filmic.c:307
+msgid "10 EV (indoors)"
+msgstr "10 EV (interior)"
+
+#: ../src/iop/filmic.c:314
+msgid "11 EV (dim outdoors)"
+msgstr "11 EV (exterior com iluminação tênue)"
+
+#: ../src/iop/filmic.c:321
+msgid "12 EV (outdoors)"
+msgstr "12 EV (exterior)"
+
+#: ../src/iop/filmic.c:328
+msgid "13 EV (bright outdoors)"
+msgstr "13 EV (exterior iluminado)"
+
+#: ../src/iop/filmic.c:335
+msgid "14 EV (backlighting)"
+msgstr "14 EV (backlighting)"
+
+#: ../src/iop/filmic.c:342
+msgid "15 EV (sunset)"
+msgstr "15 EV (pôr do sol)"
+
+#: ../src/iop/filmic.c:349
+msgid "16 EV (HDR)"
+msgstr "16 EV (HDR)"
+
+#: ../src/iop/filmic.c:356
+msgid "18 EV (HDR++)"
+msgstr "18 EV (HDR++)"
+
+#: ../src/iop/filmic.c:1617
+msgid "read-only graph, use the parameters below to set the nodes"
+msgstr ""
+"gráfico somente de leitura, use os parâmetros abaixo para configurar os nós"
+
+#: ../src/iop/filmic.c:1621
+msgid "logarithmic shaper"
+msgstr "modelador logarítmico"
+
+#: ../src/iop/filmic.c:1629
+msgid ""
+"adjust to match the average luminance of the subject.\n"
+"except in back-lighting situations, this should be around 18%."
+msgstr ""
+"ajuste para casar com a luminância média do objeto.\n"
+"exceto em situações com back-lighting, isto deveria ser em torno de 18%."
+
+#: ../src/iop/filmic.c:1640 ../src/iop/filmicrgb.c:2311
+msgid ""
+"number of stops between middle grey and pure white.\n"
+"this is a reading a lightmeter would give you on the scene.\n"
+"adjust so highlights clipping is avoided"
+msgstr ""
+"quantidade de stops entre cinza médio e branco puro\n"
+"esta é a leitura que um exposímetro daria na cena\n"
+"ajuste para evitar highlight clipping"
+
+#: ../src/iop/filmic.c:1652 ../src/iop/filmicrgb.c:2320
+msgid ""
+"number of stops between middle grey and pure black.\n"
+"this is a reading a lightmeter would give you on the scene.\n"
+"increase to get more contrast.\n"
+"decrease to recover more details in low-lights."
+msgstr ""
+"quantidade de stops entre cinza médio e preto puro.\n"
+"esta é a leitura que um exposímetro daria na cena.\n"
+"aumente para obter mais contraste.\n"
+"diminua para recuperar mais detalhes com pouca luz."
+
+#: ../src/iop/filmic.c:1663
+msgid ""
+"enlarge or shrink the computed dynamic range.\n"
+"useful in conjunction with \"auto tune levels\"."
+msgstr ""
+"aumenta ou diminui a faixa dinâmica calculada.\n"
+"útil junto com \"ajustar níveis automaticamente\"."
+
+#: ../src/iop/filmic.c:1669 ../src/iop/filmicrgb.c:2333
+#: ../src/iop/profile_gamma.c:736
+msgid "auto tune levels"
+msgstr "ajustar níveis automaticamente"
+
+#: ../src/iop/filmic.c:1671
+msgid ""
+"try to optimize the settings with some guessing.\n"
+"this will fit the luminance range inside the histogram bounds.\n"
+"works better for landscapes and evenly-lit pictures\n"
+"but fails for high-keys and low-keys."
+msgstr ""
+"tentar otimizar os ajustes usando estimações.\n"
+"ajustará a a faixa de luminância dentro dos limites do histograma.\n"
+"funciona melhor para paisagens e figuras com iluminação uniforme\n"
+"mas falha para high-key e low-key"
+
+#: ../src/iop/filmic.c:1676
+msgid "filmic S curve"
+msgstr "curva S fílmica"
+
+#: ../src/iop/filmic.c:1683 ../src/iop/filmicrgb.c:2425
+msgid ""
+"slope of the linear part of the curve\n"
+"affects mostly the mid-tones"
+msgstr ""
+"inclinação da parte linear da curva\n"
+"afeta principalmente os meios-tons"
+
+#. geotagging
+#: ../src/iop/filmic.c:1690 ../src/iop/filmicrgb.c:2435
+#: ../src/libs/metadata_view.c:143
+msgid "latitude"
+msgstr "latitude"
+
+#: ../src/iop/filmic.c:1693
+msgid ""
+"width of the linear domain in the middle of the curve.\n"
+"increase to get more contrast at the extreme luminances.\n"
+"this has no effect on mid-tones."
+msgstr ""
+"domínio de linearidade no meio da curva.\n"
+"aumente para obter mais contraste nas luminâncias extremas."
+
+#: ../src/iop/filmic.c:1703 ../src/iop/filmicrgb.c:2446
+msgid ""
+"slides the latitude along the slope\n"
+"to give more room to shadows or highlights.\n"
+"use it if you need to protect the details\n"
+"at one extremity of the histogram."
+msgstr ""
+"desliza a latitude ao longo da curva\n"
+"para dar mais espaço para sombraas ou realces.\n"
+"use se precisar proteger detalhes\n"
+"em uma extremidade do histograma"
+
+#: ../src/iop/filmic.c:1709
+msgid "global saturation"
+msgstr "saturação global"
+
+#: ../src/iop/filmic.c:1713
+msgid ""
+"desaturates the input of the module globally.\n"
+"you need to set this value below 100%\n"
+"if the chrominance preservation is enabled."
+msgstr ""
+"desatura a entrada do módulo globalmente.\n"
+"você precisa determinar um valor abaixo de 100%\n"
+"se a preservação de crominância está habilitada."
+
+#: ../src/iop/filmic.c:1723
+msgid ""
+"desaturates the output of the module\n"
+"specifically at extreme luminances.\n"
+"decrease if shadows and/or highlights are over-saturated."
+msgstr ""
+"desatura a saída do módulo\n"
+"especificamente em luminâncias extremas\n"
+"diminua se sombras e/ou realces estão saturados demais."
+
+#: ../src/iop/filmic.c:1733 ../src/libs/export.c:742
+#: ../src/libs/print_settings.c:1244 ../src/libs/print_settings.c:1457
+msgid "intent"
+msgstr "intenção"
+
+#: ../src/iop/filmic.c:1734
+msgid "contrasted"
+msgstr "contrastado"
+
+#. cubic spline
+#: ../src/iop/filmic.c:1735
+msgid "faded"
+msgstr "esmaecendo"
+
+#. monotonic spline
+#: ../src/iop/filmic.c:1737
+msgid "optimized"
+msgstr "otimizado"
+
+#: ../src/iop/filmic.c:1739
+msgid "change this method if you see reversed contrast or faded blacks"
+msgstr "mude este método se perceber contraste revertido ou preto esmaecido"
+
+#. Preserve color
+#: ../src/iop/filmic.c:1743
+msgid "preserve the chrominance"
+msgstr "preservar a crominância"
+
+#: ../src/iop/filmic.c:1745
+msgid ""
+"ensure the original color are preserved.\n"
+"may reinforce chromatic aberrations.\n"
+"you need to manually tune the saturation when using this mode."
+msgstr ""
+"assegurar que as cores originais são preservadas.\n"
+"pode produzir cores supersaturadas e reforçar aberrações cromáticas da lente."
+
+#: ../src/iop/filmic.c:1755
+msgid "destination/display"
+msgstr "destino/display"
+
+#: ../src/iop/filmic.c:1774 ../src/iop/filmicrgb.c:2471
+msgid ""
+"luminance of output pure black, this should be 0%\n"
+"except if you want a faded look"
+msgstr ""
+"luminância do preto puro de saída, isto deveria ser 0%\n"
+"exceto se quiser uma aparência esmaecida"
+
+#: ../src/iop/filmic.c:1783 ../src/iop/filmicrgb.c:2476
+msgid ""
+"midde grey value of the target display or color space.\n"
+"you should never touch that unless you know what you are doing."
+msgstr ""
+"valor de cinza médio do display alvo ou espaço de cor.\n"
+"você não deve tocar nisto a não ser que saiba o que está fazendo."
+
+#: ../src/iop/filmic.c:1792 ../src/iop/filmicrgb.c:2481
+msgid ""
+"luminance of output pure white, this should be 100%\n"
+"except if you want a faded look"
+msgstr ""
+"luminância do branco puro de saída, isto deveria ser 100%\n"
+"exceto se quiser uma aparência esmaecida"
+
+#: ../src/iop/filmic.c:1798
+msgid "target gamma"
+msgstr "gama alvo"
+
+#: ../src/iop/filmic.c:1800
+msgid ""
+"power or gamma of the transfer function\n"
+"of the display or color space.\n"
+"you should never touch that unless you know what you are doing."
+msgstr ""
+"potência ou gama da função de transferência\n"
+"do display ou espaço de cor.\n"
+"você nunca deveria mexer nisso a não ser que saiba o que está fazendo."
+
+#: ../src/iop/filmicrgb.c:242
+msgid "filmic rgb"
+msgstr "rgb fílmico"
+
+#: ../src/iop/filmicrgb.c:387
+msgctxt "accel"
+msgid "white exposure"
+msgstr "exposição de branco"
+
+#: ../src/iop/filmicrgb.c:388
+msgctxt "accel"
+msgid "black exposure"
+msgstr "exposição relativa de preto"
+
+#: ../src/iop/filmicrgb.c:389
+msgctxt "accel"
+msgid "middle grey luminance"
+msgstr "luminância de cinza médio"
+
+#: ../src/iop/filmicrgb.c:390
+msgctxt "accel"
+msgid "dynamic range scaling"
+msgstr "escala de faixa dinâmica"
+
+#: ../src/iop/filmicrgb.c:392
+msgctxt "accel"
+msgid "latitude"
+msgstr "latitude"
+
+#: ../src/iop/filmicrgb.c:393
+msgctxt "accel"
+msgid "shadows highlights balance"
+msgstr "balanço de sombras e realces"
+
+#: ../src/iop/filmicrgb.c:394
+msgctxt "accel"
+msgid "extreme luminance saturation"
+msgstr "saturação para luminância extrema"
+
+#: ../src/iop/filmicrgb.c:395
+msgctxt "accel"
+msgid "target black luminance"
+msgstr "luminância de preto alvo"
+
+#: ../src/iop/filmicrgb.c:396
+msgctxt "accel"
+msgid "target middle grey"
+msgstr "cinza médio alvo"
+
+#: ../src/iop/filmicrgb.c:397
+msgctxt "accel"
+msgid "target white luminance"
+msgstr "luminância de branco alvo"
+
+#: ../src/iop/filmicrgb.c:398
+msgctxt "accel"
+msgid "target power transfer function"
+msgstr "define a função de transferência de energia"
+
+#: ../src/iop/filmicrgb.c:399
+msgctxt "accel"
+msgid "preserve chrominance"
+msgstr "preservar a crominância"
+
+#: ../src/iop/filmicrgb.c:1042
+msgid ""
+"filmic highlights reconstruction failed to allocate memory, check your RAM "
+"settings"
+msgstr ""
+"A reconstrução de realces do fílmico não conseguiu alocar memória, verifique "
+"sua configuração de RAM"
+
+#: ../src/iop/filmicrgb.c:1419
+msgid "filmic works only on RGB input"
+msgstr "O fílmico funciona somente com entrada RGB"
+
+#: ../src/iop/filmicrgb.c:2284
+msgid ""
+"read-only graph, use the parameters below to set the nodes\n"
+"the bright curve is the filmic tone mapping curve\n"
+"the dark curve is the desaturation curve\n"
+msgstr ""
+"gráfico não modificável, use os parâmetros abaixo para determinar os nós\n"
+"a curva clara é a de mapeamento de tons fílmicos\n"
+"a curva escura é a de desaturação\n"
+
+#. Page SCENE
+#: ../src/iop/filmicrgb.c:2293
+msgid "scene"
+msgstr "cena"
+
+#: ../src/iop/filmicrgb.c:2302
+msgid ""
+"adjust to match the average luminance of the image's subject.\n"
+"the value entered here will then be remapped to 18.45%.\n"
+"decrease the value to increase the overall brightness."
+msgstr ""
+"ajuste para coincidir com a luminância média do objeto ra imagem.\n"
+"o valor entrado aqui será reajustado para corresponder a 18.45%.\n"
+"diminua o valor para aumentar o brilho geral."
+
+#: ../src/iop/filmicrgb.c:2310 ../src/iop/filmicrgb.c:2319
+#: ../src/iop/filmicrgb.c:2355 ../src/iop/filmicrgb.c:2364
+#: ../src/iop/toneequal.c:3000 ../src/iop/toneequal.c:3005
+#: ../src/iop/toneequal.c:3010 ../src/iop/toneequal.c:3015
+#: ../src/iop/toneequal.c:3020 ../src/iop/toneequal.c:3025
+#: ../src/iop/toneequal.c:3030 ../src/iop/toneequal.c:3035
+#: ../src/iop/toneequal.c:3040 ../src/libs/metadata_view.c:500
+#, c-format
+msgid "%+.2f EV"
+msgstr "%+.2f EV"
+
+#: ../src/iop/filmicrgb.c:2328
+msgid ""
+"symmetrically enlarge or shrink the computed dynamic range.\n"
+"useful to give a safety margin to extreme luminances."
+msgstr ""
+"simetricamente aumenta ou diminui a faixa dinâmica calculada.\n"
+"útil junto para dar margem de segurança em liminâncias extremas."
+
+#: ../src/iop/filmicrgb.c:2335
+msgid ""
+"try to optimize the settings with some statistical assumptions.\n"
+"this will fit the luminance range inside the histogram bounds.\n"
+"works better for landscapes and evenly-lit pictures\n"
+"but fails for high-keys, low-keys and high-ISO pictures.\n"
+"this is not an artificial intelligence, but a simple guess.\n"
+"ensure you understand its assumptions before using it."
+msgstr ""
+"tenta otimizar as configurações com algumas suposições estatísticas.\n"
+"isso ajustará a faixa de luminância dentro dos limites do histograma.\n"
+"funciona melhor para paisagens e imagens com iluminação uniforme,\n"
+"mas falha em imagens de high key, low key, e ISO alto.\n"
+"isso não é inteligência artificial, mas um cálculo simples.\n"
+"certifique-se de entender suas suposições antes de usá-lo."
+
+#. Page RECONSTRUCT
+#: ../src/iop/filmicrgb.c:2344
+msgid "reconstruct"
+msgstr "reconstruir"
+
+#: ../src/iop/filmicrgb.c:2349
+msgid "highlights clipping"
+msgstr "corte de realces"
+
+#: ../src/iop/filmicrgb.c:2356
+msgid ""
+"set the exposure threshold upon which\n"
+"clipped highlights get reconstructed.\n"
+"values are relative to the scene white point.\n"
+"0 EV means the threshold is the same as the scene white point.\n"
+"decrease to include more areas,\n"
+"increase to exclude more areas."
+msgstr ""
+"fixa o limiar de exposição a partir do qual\n"
+"realces recortados são reconstruídos.\n"
+"valores são relativos ao ponto branco da cena.\n"
+"0 EV significa o mesmo limiar que o ponto branco da cena.\n"
+"diminua para incluir mais áreas,\n"
+"aumente para excluir mais áreas."
+
+#: ../src/iop/filmicrgb.c:2365
+msgid ""
+"soften the transition between clipped highlights and valid pixels.\n"
+"decrease to make the transition harder and sharper,\n"
+"increase to make the transition softer and blurrier."
+msgstr ""
+"suaviza a transição entre realces recortados e pixels válidos.\n"
+"diminua para tornar a transição mais dura e nítida,\n"
+"aumente para tornar a transição mais suave e menos nítida."
+
+#: ../src/iop/filmicrgb.c:2371
+msgid "display highlight reconstruction mask"
+msgstr "mostrar máscara de reconstrução de realce"
+
+#: ../src/iop/filmicrgb.c:2378 ../src/iop/splittoning.c:544
+msgid "balance"
+msgstr "balanço"
+
+#: ../src/iop/filmicrgb.c:2385
+#, no-c-format
+msgid ""
+"decide which reconstruction strategy to favor,\n"
+"between inpainting a smooth color gradient,\n"
+"or trying to recover the textured details.\n"
+"0% is an equal mix of both.\n"
+"increase if at least one RGB channel is not clipped.\n"
+"decrease if all RGB channels are clipped over large areas."
+msgstr ""
+"decide que estratégia de reconstrução favorecer,\n"
+"entre pintar um gradiente suave de cores,\n"
+"ou tentar recuperar detalhes de textura.\n"
+"0% é uma mistura de ambos.\n"
+"aumente se pelo menos um canal RGB não estiver recortado.\n"
+"diminua se todos os canais RGB estiverem recortados em grandes áreas."
+
+#: ../src/iop/filmicrgb.c:2396
+#, no-c-format
+msgid ""
+"decide which reconstruction strategy to favor,\n"
+"between blooming highlights like film does,\n"
+"or trying to recover sharp details.\n"
+"0% is an equal mix of both.\n"
+"increase if you want more details.\n"
+"decrease if you want more blur."
+msgstr ""
+"decide que estratégia de reconstrução favorecer,\n"
+"entre florescer realces como o filme faz,\n"
+"ou tentar recuperar detalhes de nitidez.\n"
+"0% é uma mistura igual dos dois.\n"
+"aumente se quiser mais detalhes.\n"
+"diminua se quiser mais desfoque."
+
+#: ../src/iop/filmicrgb.c:2408
+#, no-c-format
+msgid ""
+"decide which reconstruction strategy to favor,\n"
+"between recovering monochromatic highlights,\n"
+"or trying to recover colorful highlights.\n"
+"0% is an equal mix of both.\n"
+"increase if you want more color.\n"
+"decrease if you see magenta or out-of-gamut highlights."
+msgstr ""
+"decidir que estratégia de reconstrução favorecer,\n"
+"entre recuperar realces monocromáticos,\n"
+"ou tentar recuperar realces coloridos.\n"
+"0% é uma mistura dos dois.\n"
+"aumente se quiser mais cor.\n"
+"diminua se perceber realces magenta ou fora da gama."
+
+#. Page LOOK
+#: ../src/iop/filmicrgb.c:2416
+msgid "look"
+msgstr "aparência"
+
+#: ../src/iop/filmicrgb.c:2431
+msgid ""
+"equivalent to paper grade in analog.\n"
+"increase to make highlights brighter and less compressed.\n"
+"decrease to mute highlights."
+msgstr ""
+"equivalente ao grading do papel na versão analógica.\n"
+"aumente para tornar os realces mais claros e menos comprimidos.\n"
+"diminua para deixar os relces menos expressivos."
+
+#: ../src/iop/filmicrgb.c:2438
+msgid ""
+"width of the linear domain in the middle of the curve,\n"
+"in percent of the dynamic range (white exposure - black exposure).\n"
+"increase to get more contrast and less desaturation at extreme luminances,\n"
+"decrease otherwise. no desaturation happens in the latitude range.\n"
+"this has no effect on mid-tones."
+msgstr ""
+"domínio de linearidade no meio da curva,\n"
+"em porcentagem da faixa dinâmica (exposição de branco - exposição de "
+"preto).\n"
+"aumente para conseguir mais contraste e menos dessaturação em luminâncias "
+"extremas,\n"
+"de outr aforma, diminua. nenhuma dessaturação é feita na faixa da latitude.\n"
+"não tem efeitos em tons médios."
+
+#: ../src/iop/filmicrgb.c:2454
+msgid ""
+"desaturates the output of the module\n"
+"specifically at extreme luminances.\n"
+"increase if shadows and/or highlights are under-saturated."
+msgstr ""
+"desaturar a saída do módulo\n"
+"especificamente em luminâncias extremas\n"
+"aumente se sombras e/ou realces estão subsaturados."
+
+#: ../src/iop/filmicrgb.c:2460 ../src/iop/filmicrgb.c:2604
+msgid "middle tones saturation"
+msgstr "saturação de meios-tons"
+
+#. Page DISPLAY
+#: ../src/iop/filmicrgb.c:2463
+msgid "display"
+msgstr "display"
+
+#. Page OPTIONS
+#: ../src/iop/filmicrgb.c:2485
+msgid "options"
+msgstr "opções"
+
+#: ../src/iop/filmicrgb.c:2492
+msgid ""
+"v3 is darktable 3.0 desaturation method, same as color balance.\n"
+"v4 is a newer desaturation method, based on spectral purity of light."
+msgstr ""
+"v3 é o método de desaturação do darktable 3.0, o mesmo que balanço de cor.\n"
+"v4 é um método mais novo de desaturação, baseado na pureza espectral da luz."
+
+#: ../src/iop/filmicrgb.c:2496
+msgid ""
+"ensure the original color are preserved.\n"
+"may reinforce chromatic aberrations and chroma noise,\n"
+"so ensure they are properly corrected elsewhere.\n"
+msgstr ""
+"assegurar que as cores originais são preservadas.\n"
+"pode produzir cores supersaturadas e reforçar aberrações cromáticas da "
+"lente.\n"
+
+#: ../src/iop/filmicrgb.c:2502
+msgid ""
+"choose the desired curvature of the filmic spline in highlights.\n"
+"hard uses a high curvature resulting in more tonal compression.\n"
+"soft uses a low curvature resulting in less tonal compression."
+msgstr ""
+"escolha a curvatura da spline do fílmico em realces.\n"
+"dura usa uma curvatura resultando em mais compressão tonal.\n"
+"suave usa uma curvatura resultando em menos compressão tonal"
+
+#: ../src/iop/filmicrgb.c:2507
+msgid ""
+"choose the desired curvature of the filmic spline in shadows.\n"
+"hard uses a high curvature resulting in more tonal compression.\n"
+"soft uses a low curvature resulting in less tonal compression."
+msgstr ""
+"escolha a curvatura da spline do fílmico em sombras.\n"
+"dura usa uma curvatura resultando em mais compressão tonal.\n"
+"suave usa uma curvatura resultando em menos compressão tonal."
+
+#: ../src/iop/filmicrgb.c:2512
+#, c-format
+msgid ""
+"enable to input custom middle-grey values.\n"
+"this is not recommended in general.\n"
+"fix the global exposure in the exposure module instead.\n"
+"disable to use standard 18.45 %% middle grey."
+msgstr ""
+"habilite para entrar valores personalizados de cinza médio.\n"
+"isto em geral não é recomendado.\n"
+"ao invés disso, ajuste a exposição global no módulo exposição.\n"
+"desabilite para usar o padrão de 18.45 %% de cinza médio."
+
+#: ../src/iop/filmicrgb.c:2518
+msgid ""
+"enable to auto-set the look hardness depending on the scene white and black "
+"points.\n"
+"this keeps the middle grey on the identity line and improves fast tuning.\n"
+"disable if you want a manual control."
+msgstr ""
+"habilite para auto-ajustar a dureza da visão dependendo dos pontos branco e "
+"preto da cena.\n"
+"isto mantém o cinza médio na linha da identidade e melhora o ajusta rápido.\n"
+"desabilite se quiser controle manual."
+
+#: ../src/iop/filmicrgb.c:2523
+msgid ""
+"run extra passes of chromaticity reconstruction.\n"
+"more iterations means more color propagation from neighbourhood.\n"
+"this will be slower but will yield more neutral highlights.\n"
+"it also helps with difficult cases of magenta highlights."
+msgstr ""
+"executa passos extra de reconstrução cromática.\n"
+"mais iterações significam mais propagação de cores da vizinhança.\n"
+"isto será mais lento, mas resultará em realces mais neutros.\n"
+"também ajuda em casos difíceis de realces magenta."
+
+#: ../src/iop/filmicrgb.c:2530
+msgid ""
+"add statistical noise in reconstructed highlights.\n"
+"this avoids highlights to look too smooth\n"
+"when the picture is noisy overall,\n"
+"so they blend with the rest of the picture."
+msgstr ""
+"adiciona ruído estatístico nos realces reconstruídos.\n"
+"isto evita que realces pareçam muito suaves\n"
+"quando a imagem é muito ruidosa,\n"
+"e os realces se misturam com o resto da imagem."
+
+#: ../src/iop/filmicrgb.c:2537
+msgid "uniform"
+msgstr "uniforme"
+
+#: ../src/iop/filmicrgb.c:2539
+msgid "poissonian"
+msgstr "Poissoniano"
+
+#: ../src/iop/filmicrgb.c:2540
+msgid ""
+"choose the statistical distribution of noise.\n"
+"this is useful to match natural sensor noise pattern.\n"
+msgstr ""
+"escolha a distribuição estatística do ruído.\n"
+"isto é útil para combinar com o padrão natural de ruído do sensor.\n"
+
+#: ../src/iop/finalscale.c:39
+msgctxt "modulename"
+msgid "scale into final size"
+msgstr "mudar escala para tamanho final"
+
+#: ../src/iop/flip.c:397 ../src/iop/flip.c:398
+msgid "autodetect"
+msgstr "detectar automaticamente"
+
+#: ../src/iop/flip.c:401
+msgid "no rotation"
+msgstr "não girar"
+
+#: ../src/iop/flip.c:404
+msgid "flip horizontally"
+msgstr "girar horizontalmente"
+
+#: ../src/iop/flip.c:406
+msgid "flip vertically"
+msgstr "girar verticalmente"
+
+#: ../src/iop/flip.c:408
+msgid "rotate by -90 degrees"
+msgstr "girar -90 graus"
+
+#: ../src/iop/flip.c:410
+msgid "rotate by 90 degrees"
+msgstr "girar 90 graus"
+
+#: ../src/iop/flip.c:412
+msgid "rotate by 180 degrees"
+msgstr "girar 180 graus"
+
+#: ../src/iop/flip.c:519
+msgid "rotate"
+msgstr "girar"
+
+#: ../src/iop/flip.c:523
+msgid "rotate 90 degrees CCW"
+msgstr "girar 90 graus sentido anti-horário"
+
+#: ../src/iop/flip.c:528
+msgid "rotate 90 degrees CW"
+msgstr "girar 90 graus sentido horário"
+
+#: ../src/iop/flip.c:540 ../src/libs/live_view.c:166
+msgctxt "accel"
+msgid "rotate 90 degrees CCW"
+msgstr "girar 90 graus sentido anti-horário"
+
+#: ../src/iop/flip.c:541 ../src/libs/live_view.c:167
+msgctxt "accel"
+msgid "rotate 90 degrees CW"
+msgstr "girar 90 graus sentido horário"
+
+#: ../src/iop/gamma.c:43
+msgctxt "modulename"
+msgid "display encoding"
+msgstr "encoding de tela"
+
+#: ../src/iop/globaltonemap.c:103
+msgid "global tonemap"
+msgstr "mapemento tonal global"
+
+#: ../src/iop/globaltonemap.c:123
+msgctxt "accel"
+msgid "bias"
+msgstr "tendência"
+
+#: ../src/iop/globaltonemap.c:124
+msgctxt "accel"
+msgid "target"
+msgstr "alvo"
+
+#: ../src/iop/globaltonemap.c:126
+msgctxt "accel"
+msgid "operator"
+msgstr "operador"
+
+#: ../src/iop/globaltonemap.c:657
+msgid "operator"
+msgstr "operador"
+
+#: ../src/iop/globaltonemap.c:658
+msgid "the global tonemap operator"
+msgstr "operador de mapeamento tonal global"
+
+#: ../src/iop/globaltonemap.c:661
+msgid ""
+"the bias for tonemapper controls the linearity, the higher the more details "
+"in blacks"
+msgstr ""
+"a tendência para o mapeador tonal controla a linearidade, quanto mais alto "
+"mais detalhes nos pretos"
+
+#: ../src/iop/globaltonemap.c:666
+msgid "the target light for tonemapper specified as cd/m2"
+msgstr "a luz alvo para o mapeador tonal especificado em cd/m2"
+
+#: ../src/iop/graduatednd.c:72
+msgid "neutral gray ND2 (soft)"
+msgstr "cinza neutro ND2 (soft)"
+
+#: ../src/iop/graduatednd.c:75
+msgid "neutral gray ND4 (soft)"
+msgstr "cinza neutro ND4 (soft)"
+
+#: ../src/iop/graduatednd.c:78
+msgid "neutral gray ND8 (soft)"
+msgstr "cinza neutro ND8 (soft)"
+
+#: ../src/iop/graduatednd.c:81
+msgid "neutral gray ND2 (hard)"
+msgstr "cinza neutro ND2 (hard)"
+
+#: ../src/iop/graduatednd.c:84
+msgid "neutral gray ND4 (hard)"
+msgstr "cinza neutro ND4 (hard)"
+
+#: ../src/iop/graduatednd.c:87
+msgid "neutral gray ND8 (hard)"
+msgstr "cinza neutro ND8 (hard)"
+
+#: ../src/iop/graduatednd.c:90
+msgid "orange ND2 (soft)"
+msgstr "laranja ND2 (soft)"
+
+#: ../src/iop/graduatednd.c:93
+msgid "yellow ND2 (soft)"
+msgstr "amarelo ND2 (soft)"
+
+#: ../src/iop/graduatednd.c:96
+msgid "purple ND2 (soft)"
+msgstr "roxo ND2 (soft)"
+
+#: ../src/iop/graduatednd.c:99
+msgid "green ND2 (soft)"
+msgstr "verde ND2 (soft)"
+
+#: ../src/iop/graduatednd.c:102
+msgid "red ND2 (soft)"
+msgstr "vermelho ND2 (soft)"
+
+#: ../src/iop/graduatednd.c:105
+msgid "blue ND2 (soft)"
+msgstr "azul ND2 (soft)"
+
+#: ../src/iop/graduatednd.c:108
+msgid "brown ND4 (soft)"
+msgstr "marrom ND4 (soft)"
+
+#: ../src/iop/graduatednd.c:141
+msgid "graduated density"
+msgstr "densidade graduada"
+
+#: ../src/iop/graduatednd.c:162
+msgctxt "accel"
+msgid "density"
+msgstr "densidade"
+
+#: ../src/iop/graduatednd.c:163
+msgctxt "accel"
+msgid "hardness"
+msgstr "dureza"
+
+#: ../src/iop/graduatednd.c:1158
+msgid "the density in EV for the filter"
+msgstr "a densidade em EV para o filtro"
+
+#: ../src/iop/graduatednd.c:1163
+#, no-c-format
+msgid ""
+"hardness of graduation:\n"
+"0% = soft, 100% = hard"
+msgstr ""
+"dureza da graduação:\n"
+"0% = soft, 100% = hard"
+
+#: ../src/iop/graduatednd.c:1167
+msgid "rotation of filter -180 to 180 degrees"
+msgstr "girar o filtro -180 a 180 graus"
+
+#: ../src/iop/graduatednd.c:1179
+msgid "select the hue tone of filter"
+msgstr "selecione o tom de matiz do filtro"
+
+#: ../src/iop/graduatednd.c:1184
+msgid "select the saturation of filter"
+msgstr "selecione a saturação do filtro"
+
+#: ../src/iop/graduatednd.c:1198
+#, c-format
+msgid "[%s on nodes] change line rotation"
+msgstr "[%s em nós] mudar rotação da linha"
+
+#: ../src/iop/graduatednd.c:1203
+#, c-format
+msgid "[%s on line] move line"
+msgstr "[%s em linha] mover linha"
+
+#: ../src/iop/graduatednd.c:1209
+#, c-format
+msgid "[%s on line] change density"
+msgstr "[%s em linha] mudar densidade"
+
+#: ../src/iop/graduatednd.c:1215
+#, c-format
+msgid "[%s on line] change hardness"
+msgstr "[%s em linha] mudar dureza"
+
+#: ../src/iop/grain.c:420
+msgid "grain"
+msgstr "grão"
+
+#: ../src/iop/grain.c:442
+msgctxt "accel"
+msgid "midtones bias"
+msgstr "tendência dos meios-tons"
+
+#: ../src/iop/grain.c:589
+#, c-format
+msgid "%.0f ISO"
+msgstr "%.0f ISO"
+
+#: ../src/iop/grain.c:590
+msgid "the grain size (~ISO of the film)"
+msgstr "o tamanho do grão (~ISO do filme)"
+
+#: ../src/iop/grain.c:594
+msgid "the strength of applied grain"
+msgstr "a força do grão aplicado"
+
+#: ../src/iop/grain.c:598
+msgid ""
+"amount of midtones bias from the photographic paper response modeling. the "
+"greater the bias, the more pronounced the fall off of the grain in shadows "
+"and highlights"
+msgstr ""
+"quanto de viés de meios-tons da modelagem de resposta do papel fotográfico. "
+"quanto maior o viés, mais pronunciada a queda da granulação em sombras e "
+"tons claros"
+
+#: ../src/iop/hazeremoval.c:99
+msgid "haze removal"
+msgstr "remoção de névoa"
+
+#: ../src/iop/hazeremoval.c:123
+msgctxt "accel"
+msgid "distance"
+msgstr "distância"
+
+#: ../src/iop/hazeremoval.c:206
+msgid "amount of haze reduction"
+msgstr "quantidade de redução de névoa"
+
+#: ../src/iop/hazeremoval.c:208
+msgid "distance"
+msgstr "distância"
+
+#: ../src/iop/hazeremoval.c:211
+msgid "limit haze removal up to a specific spatial depth"
+msgstr "limitar remoção de névoa a uma profundidade espacial específica"
+
+#: ../src/iop/highlights.c:81
+msgid "highlight reconstruction"
+msgstr "reconstrução de realce"
+
+#: ../src/iop/highlights.c:101
+msgctxt "accel"
+msgid "clipping threshold"
+msgstr "limite de recorte"
+
+#: ../src/iop/highlights.c:1044
+msgid "highlight reconstruction method"
+msgstr "método de reconstrução de realce"
+
+#: ../src/iop/highlights.c:1048
+msgid ""
+"manually adjust the clipping threshold against magenta highlights (you "
+"shouldn't ever need to touch this)"
+msgstr ""
+"ajustar manualmente o limine te corte contra realces magenta (não deveria "
+"ser necessário modificar)"
+
+#: ../src/iop/highpass.c:75
+msgid "highpass"
+msgstr "passa-altas"
+
+#: ../src/iop/highpass.c:95
+msgctxt "accel"
+msgid "sharpness"
+msgstr "nitidez"
+
+#: ../src/iop/highpass.c:96
+msgctxt "accel"
+msgid "contrast boost"
+msgstr "ganho de contraste"
+
+#: ../src/iop/highpass.c:447
+msgid "sharpness"
+msgstr "nitidez"
+
+#: ../src/iop/highpass.c:449
+msgid "the sharpness of highpass filter"
+msgstr "a nitidez do filtro passa-altas"
+
+#: ../src/iop/highpass.c:453
+msgid "the contrast of highpass filter"
+msgstr "o contraste do filtro passa-altas"
+
+#: ../src/iop/hotpixels.c:68
+msgid "hot pixels"
+msgstr "pixels quentes"
+
+#: ../src/iop/hotpixels.c:373
+#, c-format
+msgid "fixed %d pixel"
+msgid_plural "fixed %d pixels"
+msgstr[0] "corrigidos %d pixels"
+msgstr[1] "corrigidos %d pixels"
+
+#: ../src/iop/hotpixels.c:398
+msgid "lower threshold for hot pixel"
+msgstr "limite inferior para pixel quente"
+
+#: ../src/iop/hotpixels.c:402
+msgid "strength of hot pixel correction"
+msgstr "força da correção de pixel quente"
+
+#: ../src/iop/hotpixels.c:419
+msgid ""
+"hot pixel correction\n"
+"only works for raw images."
+msgstr ""
+"correção automática de pixels quentes\n"
+"somente funciona para imagens raw."
+
+#: ../src/iop/invert.c:94 ../src/iop/invert.c:520
+#, c-format
+msgid "`%s' color matrix not found for 4bayer image"
+msgstr "`%s' matriz de cores não encontrada para imagem 4bayer"
+
+#: ../src/iop/invert.c:110
+msgid "invert"
+msgstr "inverte"
+
+#: ../src/iop/invert.c:130
+msgctxt "accel"
+msgid "pick color of film material from image"
+msgstr "selecione a cor do material do filme na imagem"
+
+#: ../src/iop/invert.c:580
+msgid "color of film material"
+msgstr "cor do material do filme"
+
+#: ../src/iop/invert.c:586
+msgid "brightness of film material"
+msgstr "brilho do material do filme"
+
+#: ../src/iop/invert.c:608
+msgid "select color of film material"
+msgstr "selecione a cor do material do filme"
+
+#: ../src/iop/lens.cc:148
+msgid "lens correction"
+msgstr "correção da lente"
+
+#: ../src/iop/lens.cc:174
+msgctxt "accel"
+msgid "TCA R"
+msgstr "TCA R"
+
+#: ../src/iop/lens.cc:175
+msgctxt "accel"
+msgid "TCA B"
+msgstr "TCA B"
+
+#: ../src/iop/lens.cc:177
+msgctxt "accel"
+msgid "find camera"
+msgstr "procura câmera"
+
+#: ../src/iop/lens.cc:178
+msgctxt "accel"
+msgid "find lens"
+msgstr "procura lente"
+
+#: ../src/iop/lens.cc:179
+msgctxt "accel"
+msgid "camera model"
+msgstr "modelo da câmera"
+
+#: ../src/iop/lens.cc:181
+msgctxt "accel"
+msgid "select corrections"
+msgstr "correções da lene"
+
+#: ../src/iop/lens.cc:183
+msgctxt "accel"
+msgid "corrections"
+msgstr "correções"
+
+#: ../src/iop/lens.cc:184
+msgctxt "accel"
+msgid "geometry"
+msgstr "geometria"
+
+#: ../src/iop/lens.cc:1587
+#, c-format
+msgid ""
+"maker:\t\t%s\n"
+"model:\t\t%s%s\n"
+"mount:\t\t%s\n"
+"crop factor:\t%.1f"
+msgstr ""
+"fabricante:\t\t%s\n"
+"modelo:\t\t%s%s\n"
+"encaixe:\t\t%s\n"
+"fator de corte:\t%.1f"
+
+#: ../src/iop/lens.cc:1800
+msgid "camera/lens not found - please select manually"
+msgstr "câmera/lente não encontrados - favor selecionar manualmente"
+
+#: ../src/iop/lens.cc:1803
+msgid "try to locate your camera/lens in the above two menus"
+msgstr "tente localizar sua câmera/lente nos dois menus acima"
+
+#: ../src/iop/lens.cc:1867
+#, c-format
+msgid ""
+"maker:\t\t%s\n"
+"model:\t\t%s\n"
+"focal range:\t%s\n"
+"aperture:\t%s\n"
+"crop factor:\t%.1f\n"
+"type:\t\t%s\n"
+"mounts:\t%s"
+msgstr ""
+"fabricante:\t\t%s\n"
+"modelo:\t\t%s\n"
+"distância focal:\t%s\n"
+"abertura:\t%s\n"
+"fator de corte:\t%.1f\n"
+"tipo:\t\t%s\n"
+"montagem:\t\t%s"
+
+#: ../src/iop/lens.cc:1913
+msgid "focal length (mm)"
+msgstr "distância focal (mm)"
+
+#: ../src/iop/lens.cc:1937
+msgid "f/"
+msgstr "f/"
+
+#: ../src/iop/lens.cc:1938
+msgid "f-number (aperture)"
+msgstr "f-número (abertura)"
+
+#: ../src/iop/lens.cc:1952
+msgid "d"
+msgstr "d"
+
+#: ../src/iop/lens.cc:1953
+msgid "distance to subject"
+msgstr "distância do objeto"
+
+#: ../src/iop/lens.cc:2271
+msgid "distortion & TCA"
+msgstr "distorção & TCA"
+
+#: ../src/iop/lens.cc:2277
+msgid "distortion & vignetting"
+msgstr "distorção & vinheta"
+
+#: ../src/iop/lens.cc:2283
+msgid "TCA & vignetting"
+msgstr "TCA & vinheta"
+
+#: ../src/iop/lens.cc:2289
+msgid "only distortion"
+msgstr "apenas distorção"
+
+#: ../src/iop/lens.cc:2295
+msgid "only TCA"
+msgstr "apenas TCA"
+
+#: ../src/iop/lens.cc:2301
+msgid "only vignetting"
+msgstr "apenas vinheta"
+
+#: ../src/iop/lens.cc:2317
+msgid "find camera"
+msgstr "encontrar câmera"
+
+#: ../src/iop/lens.cc:2330
+msgid "find lens"
+msgstr "encontrar lentes"
+
+#: ../src/iop/lens.cc:2361 ../src/iop/negadoctor.c:1063
+msgid "corrections"
+msgstr "correções"
+
+#: ../src/iop/lens.cc:2363
+msgid "which corrections to apply"
+msgstr "quais correções a aplicar"
+
+#: ../src/iop/lens.cc:2378
+msgid "target geometry"
+msgstr "geometria alvo"
+
+#: ../src/iop/lens.cc:2379
+msgid "rectilinear"
+msgstr "retilínea"
+
+#: ../src/iop/lens.cc:2380
+msgid "fish-eye"
+msgstr "olho de peixe"
+
+#: ../src/iop/lens.cc:2381
+msgid "panoramic"
+msgstr "panorâmica"
+
+#: ../src/iop/lens.cc:2382
+msgid "equirectangular"
+msgstr "equirectangular"
+
+#: ../src/iop/lens.cc:2384
+msgid "orthographic"
+msgstr "ortográfica"
+
+#: ../src/iop/lens.cc:2385
+msgid "stereographic"
+msgstr "estereográfica"
+
+#: ../src/iop/lens.cc:2386
+msgid "equisolid angle"
+msgstr "ângulo equisólido"
+
+#: ../src/iop/lens.cc:2387
+msgid "thoby fish-eye"
+msgstr "olho de peixe thoby"
+
+#: ../src/iop/lens.cc:2398
+msgid "auto scale"
+msgstr "auto escala"
+
+#: ../src/iop/lens.cc:2402
+msgid "correct"
+msgstr "corregir"
+
+#: ../src/iop/lens.cc:2403
+msgid "distort"
+msgstr "distorções"
+
+#: ../src/iop/lens.cc:2404
+msgid "correct distortions or apply them"
+msgstr "corrige ou aplica distorções"
+
+#: ../src/iop/lens.cc:2409
+msgid "Transversal Chromatic Aberration red"
+msgstr "Aberrações Cromáticas Transversais vermelho"
+
+#: ../src/iop/lens.cc:2413
+msgid "Transversal Chromatic Aberration blue"
+msgstr "Aberrações Cromáticas Transversais azul"
+
+#: ../src/iop/lens.cc:2418
+msgid "corrections done: "
+msgstr "correções feitas: "
+
+#: ../src/iop/lens.cc:2419
+msgid "which corrections have actually been done"
+msgstr "quais correções foram realizadas efetivamente"
+
+#: ../src/iop/levels.c:110
+msgid "levels"
+msgstr "níveis"
+
+#: ../src/iop/levels.c:131
+msgctxt "accel"
+msgid "gray"
+msgstr "cinza"
+
+#: ../src/iop/levels.c:132
+msgctxt "accel"
+msgid "white"
+msgstr "branco"
+
+#: ../src/iop/levels.c:649 ../src/iop/rgblevels.c:986
+msgid ""
+"drag handles to set black, gray, and white points. operates on L channel."
+msgstr ""
+"arraste os alças para ajustar pontos de preto, cinza e branco. opera no "
+"canal L."
+
+#: ../src/iop/levels.c:665 ../src/iop/rgblevels.c:1022
+msgid "apply auto levels"
+msgstr "aplicar níveis automáticos"
+
+#: ../src/iop/levels.c:669 ../src/iop/rgblevels.c:1000
+msgid "pick black point from image"
+msgstr "selecionar ponto de preto na imagem"
+
+#: ../src/iop/levels.c:673 ../src/iop/rgblevels.c:1005
+msgid "pick medium gray point from image"
+msgstr "selecionar ponto de cinza médio na imagem"
+
+#: ../src/iop/levels.c:677 ../src/iop/rgblevels.c:1010
+msgid "pick white point from image"
+msgstr "selecionar ponto de branco na imagem"
+
+#: ../src/iop/levels.c:690
+msgid "black"
+msgstr "preto"
+
+#: ../src/iop/levels.c:691
+msgid "black percentile"
+msgstr "preto percentil"
+
+#: ../src/iop/levels.c:695 ../src/views/darkroom.c:2405
+msgid "gray"
+msgstr "cinza"
+
+#: ../src/iop/levels.c:696
+msgid "gray percentile"
+msgstr "cinza percentil"
+
+#: ../src/iop/levels.c:700
+msgid "white"
+msgstr "branco"
+
+#: ../src/iop/levels.c:701
+msgid "white percentile"
+msgstr "branco percentil"
+
+#: ../src/iop/liquify.c:289
+msgid "liquify"
+msgstr "liquefazer (liquify)"
+
+#: ../src/iop/liquify.c:3476
+msgid ""
+"click and drag to add point\n"
+"scroll to change size\n"
+"shift+scroll to change strength - ctrl+scroll to change direction"
+msgstr ""
+"click para adicionar ponto\n"
+"scroll para mudar tamanho\n"
+"shift-scroll para mudar força - ctrl-scroll para mudar direção"
+
+#: ../src/iop/liquify.c:3480
+msgid ""
+"click to add line\n"
+"scroll to change size\n"
+"shift+scroll to change strength - ctrl+scroll to change direction"
+msgstr ""
+"click para adicionar linha\n"
+"scroll para mudar tamanho\n"
+"shift-scroll para mudar força - ctrl-scroll para mudar direção"
+
+#: ../src/iop/liquify.c:3484
+msgid ""
+"click to add curve\n"
+"scroll to change size\n"
+"shift+scroll to change strength - ctrl+scroll to change direction"
+msgstr ""
+"click para adicionar curva\n"
+"scroll para mudar tamanho\n"
+"shift-scroll para mudar força - ctrl-scroll para mudar direção"
+
+#: ../src/iop/liquify.c:3487
+msgid "click to edit nodes"
+msgstr "clique para adicionar nós"
+
+#: ../src/iop/liquify.c:3544
+msgid ""
+"use a tool to add warps.\n"
+"right-click to remove a warp."
+msgstr ""
+"use uma ferramenta para adicionar deformações.\n"
+"click-direito para remover uma deformação."
+
+#: ../src/iop/liquify.c:3547
+msgid "warps|nodes count:"
+msgstr "deformações|contagem de nós:"
+
+#: ../src/iop/liquify.c:3556
+msgid "point tool: draw points"
+msgstr "ferramenta de ponto: desenha pontos"
+
+#: ../src/iop/liquify.c:3562
+msgid "line tool: draw lines"
+msgstr "ferramenta de linha: desenha linhas"
+
+#: ../src/iop/liquify.c:3568
+msgid "curve tool: draw curves"
+msgstr "ferramenta de curva: desenha curvas"
+
+#: ../src/iop/liquify.c:3574
+msgid "node tool: edit, add and delete nodes"
+msgstr "ferramenta de nó: edita, adiciona e exclui nós"
+
+#: ../src/iop/liquify.c:3578
+msgid ""
+"ctrl+click: add node - right click: remove path\n"
+"ctrl+alt+click: toggle line/curve"
+msgstr ""
+"ctrl-click: adiciona nó - click direito: remove caminho\n"
+"ctrl-alt-click: alterna linha/curva"
+
+#: ../src/iop/liquify.c:3580
+msgid ""
+"click and drag to move - click: show/hide feathering controls\n"
+"ctrl+click: autosmooth, cusp, smooth, symmetrical - right click to remove"
+msgstr ""
+"click e arraste para mover - click: mostra/esconde controles de enevoamento\n"
+"ctrl-click: autosuaviza, cúspide (ponta), suaviza, simétrico - click direito "
+"para remover"
+
+#: ../src/iop/liquify.c:3583 ../src/iop/liquify.c:3584
+msgid "drag to change shape of path"
+msgstr "arrastar para mudar forma do caminho"
+
+#: ../src/iop/liquify.c:3585
+msgid "drag to adjust warp radius"
+msgstr "arraste para ajustar o raio da deformação"
+
+#: ../src/iop/liquify.c:3586
+msgid "drag to adjust hardness (center)"
+msgstr "arrastar para ajustar dureza (centro)"
+
+#: ../src/iop/liquify.c:3587
+msgid "drag to adjust hardness (feather)"
+msgstr "arrastar para ajustar dureza (progressivo)"
+
+#: ../src/iop/liquify.c:3588
+msgid ""
+"drag to adjust warp strength\n"
+"ctrl+click: linear, grow, and shrink"
+msgstr ""
+"arraste para ajustar força da deformação\n"
+"ctrl-click: linear, aumentar, e encolher"
+
+#: ../src/iop/liquify.c:3616
+msgctxt "accel"
+msgid "point tool"
+msgstr "ferramenta de ponto"
+
+#: ../src/iop/liquify.c:3617
+msgctxt "accel"
+msgid "line tool"
+msgstr "ferramenta de linha"
+
+#: ../src/iop/liquify.c:3618
+msgctxt "accel"
+msgid "curve tool"
+msgstr "ferramenta de curva"
+
+#: ../src/iop/liquify.c:3619
+msgctxt "accel"
+msgid "node tool"
+msgstr "ferramenta de nó"
+
+#: ../src/iop/lowlight.c:87
+msgid "lowlight vision"
+msgstr "visão com luz baixa"
+
+#: ../src/iop/lowlight.c:108
+msgctxt "accel"
+msgid "blue shift"
+msgstr "deslocamento azul"
+
+#: ../src/iop/lowlight.c:351
+msgid "indoor bright"
+msgstr "interior claro"
+
+#: ../src/iop/lowlight.c:368
+msgid "indoor dim"
+msgstr "interior luz suave"
+
+#: ../src/iop/lowlight.c:385
+msgid "indoor dark"
+msgstr "interior escuro"
+
+#: ../src/iop/lowlight.c:402
+msgid "twilight"
+msgstr "crepúsculo"
+
+#: ../src/iop/lowlight.c:419
+msgid "night street lit"
+msgstr "rua noturno iluminado"
+
+#: ../src/iop/lowlight.c:436
+msgid "night street"
+msgstr "rua noturno"
+
+#: ../src/iop/lowlight.c:453
+msgid "night street dark"
+msgstr "rua noturno escuro"
+
+#: ../src/iop/lowlight.c:471
+msgid "night"
+msgstr "noite"
+
+#: ../src/iop/lowlight.c:643
+msgid "dark"
+msgstr "escuro"
+
+#: ../src/iop/lowlight.c:651
+msgid "bright"
+msgstr "claro"
+
+#: ../src/iop/lowlight.c:660
+msgid "day vision"
+msgstr "visão de dia"
+
+#: ../src/iop/lowlight.c:665
+msgid "night vision"
+msgstr "visão de noite"
+
+#: ../src/iop/lowlight.c:867
+msgid "blueness in shadows"
+msgstr "azulamento nas sombras"
+
+#: ../src/iop/lowpass.c:129
+msgid "lowpass"
+msgstr "passa-baixas"
+
+#: ../src/iop/lowpass.c:578
+msgid "local contrast mask"
+msgstr "máscara de constraste local"
+
+#: ../src/iop/lowpass.c:605
+msgctxt "lowpass"
+msgid "brightness"
+msgstr "brilho"
+
+#: ../src/iop/lowpass.c:607
+msgid "radius of gaussian/bilateral blur"
+msgstr "raio do desfoque gaussiano/bilateral"
+
+#: ../src/iop/lowpass.c:608
+msgid "contrast of lowpass filter"
+msgstr "contraste do filtro passa-baixas"
+
+#: ../src/iop/lowpass.c:609
+msgid "brightness adjustment of lowpass filter"
+msgstr "ajuste brilho do filtro passa-baixas"
+
+#: ../src/iop/lowpass.c:610
+msgid "color saturation of lowpass filter"
+msgstr "saturação de cor do filtro passa-baixas"
+
+#: ../src/iop/lowpass.c:611
+msgid "which filter to use for blurring"
+msgstr "qual filtro usar para desfoque"
+
+#: ../src/iop/lut3d.c:132
+msgid "lut 3D"
+msgstr "lut 3D"
+
+#: ../src/iop/lut3d.c:152
+msgctxt "accel"
+msgid "application color space"
+msgstr "espaço de cor"
+
+#: ../src/iop/lut3d.c:153
+msgctxt "accel"
+msgid "interpolation"
+msgstr "interpolação"
+
+#: ../src/iop/lut3d.c:470
+msgid "error allocating buffer for gmz lut"
+msgstr "erro ao alocar buffer para gmz lut"
+
+#: ../src/iop/lut3d.c:496
+#, c-format
+msgid "invalid png file %s"
+msgstr "arquivo png inválido %s"
+
+#: ../src/iop/lut3d.c:504
+#, c-format
+msgid "png bit-depth %d not supported"
+msgstr "png com profundidade de bit %d não suportado"
+
+#: ../src/iop/lut3d.c:518 ../src/iop/lut3d.c:528
+#, c-format
+msgid "invalid level in png file %d %d"
+msgstr "nível inválido em arquivo png %d %d"
+
+#: ../src/iop/lut3d.c:523
+msgid "this darktable build is not compatible with compressed clut"
+msgstr "este build do darktable não é compatível com compressão de clut"
+
+#: ../src/iop/lut3d.c:540 ../src/iop/lut3d.c:789 ../src/iop/lut3d.c:893
+#, c-format
+msgid "error - lut 3D size %d exceeds the maximum supported"
+msgstr "erro - tamanho do lut 3D %d excede o máximo suportado"
+
+#: ../src/iop/lut3d.c:552
+msgid "error allocating buffer for png lut"
+msgstr "erro ao alocar buffer para png lut"
+
+#: ../src/iop/lut3d.c:560
+#, c-format
+msgid "error - could not read png image %s"
+msgstr "erro - não é possível ler imagem png `%s'"
+
+#: ../src/iop/lut3d.c:570
+msgid "error - allocating buffer for png lut"
+msgstr "erro ao alocar buffer para png lut"
+
+#: ../src/iop/lut3d.c:744
+#, c-format
+msgid "error - invalid cube file: %s"
+msgstr "erro: arquivo de cubo inválido: %s"
+
+#: ../src/iop/lut3d.c:758
+msgid "DOMAIN MIN <> 0.0 is not supported"
+msgstr "DOMINIO MIN <> 0.0 não é suportado"
+
+#: ../src/iop/lut3d.c:769
+msgid "DOMAIN MAX <> 1.0 is not supported"
+msgstr "DOMINIO MAX <> 1.0 não é suportado"
+
+#: ../src/iop/lut3d.c:778
+msgid "[1D cube lut is not supported"
+msgstr "cubo lut 1D não é suportado"
+
+#: ../src/iop/lut3d.c:800 ../src/iop/lut3d.c:912
+msgid "error - allocating buffer for cube lut"
+msgstr "arro ao alocar buffer para cube lut"
+
+#: ../src/iop/lut3d.c:811 ../src/iop/lut3d.c:925
+msgid "error - cube lut size is not defined"
+msgstr "erro - tamanho do cubo lut não definido"
+
+#: ../src/iop/lut3d.c:822
+#, c-format
+msgid "error - cube lut invalid number line %d"
+msgstr "erro - número de linha de cubo LUT inválido %d"
+
+#: ../src/iop/lut3d.c:838
+#, c-format
+msgid "error - cube lut lines number %d is not correct, should be %d"
+msgstr "erro - número de linhas do cubo lut %d está errado, deveria ser %d"
+
+#: ../src/iop/lut3d.c:848
+#, c-format
+msgid "warning - cube lut %d out of range values [0,1]"
+msgstr "advertência - cubo lut %d fora dos valores [0,1]"
+
+#: ../src/iop/lut3d.c:872
+#, c-format
+msgid "error - invalid 3dl file: %s"
+msgstr "erro: arquivo 3dl inválido: %s"
+
+#: ../src/iop/lut3d.c:901
+#, c-format
+msgid "error - the maximum shaper lut value %d is too low"
+msgstr "erro - o valor máximo de lut shaper %d é muito baixo"
+
+#: ../src/iop/lut3d.c:953
+msgid "error - cube lut lines number is not correct"
+msgstr "erro - número de linhas do cubo lut não está correto"
+
+#: ../src/iop/lut3d.c:969
+msgid "error - the maximum lut value does not match any valid bit depth"
+msgstr ""
+"erro - o valor lut máximo não casa com nenhuma profundidade de bits válida"
+
+#: ../src/iop/lut3d.c:1562
+msgid "Lut root folder not defined"
+msgstr "pasta raiz do lut não definida"
+
+#: ../src/iop/lut3d.c:1568
+msgid "select lut file"
+msgstr "selecionar arquivo lut"
+
+#: ../src/iop/lut3d.c:1569
+msgid "_select"
+msgstr "_selecionar"
+
+#: ../src/iop/lut3d.c:1589
+msgid "hald cluts (png), 3D lut (cube or 3dl) or gmic compressed lut (gmz)"
+msgstr "hald cluts (png), 3D lut (cubo ou 3dl) ou LUT comprimido de gmic (gmz)"
+
+#: ../src/iop/lut3d.c:1591
+msgid "hald cluts (png) or 3D lut (cube or 3dl)"
+msgstr "hald cluts (png) ou 3D lut (cubo ou 3dl)"
+
+#: ../src/iop/lut3d.c:1600 ../src/libs/copy_history.c:131
+#: ../src/libs/geotagging.c:496 ../src/libs/import.c:586
+#: ../src/libs/styles.c:410
+msgid "all files"
+msgstr "todos arquivos"
+
+#: ../src/iop/lut3d.c:1615
+msgid "Select file outside Lut root folder is not allowed"
+msgstr "Seleção de arquivo fora da pasta raiz do LUT não é permitida"
+
+#: ../src/iop/lut3d.c:1694
+msgid ""
+"select a png (haldclut), a cube, a 3dl or a gmz (compressed lut) file "
+"CAUTION: 3D lut folder must be set in preferences/core options/miscellaneous "
+"before choosing the lut file"
+msgstr ""
+"selecione um arquivo png (haldclut), um cubo, uma 3dl ou um gmz (LUT "
+"comprimido)\n"
+"ATENÇÃO: a pasta de LUT 3d deve ser configurada em preferências/opções de "
+"cor/miscelânea\n"
+"antes de escolher o arquivo LUT"
+
+#: ../src/iop/lut3d.c:1698
+msgid ""
+"select a png (haldclut), a cube or a 3dl file CAUTION: 3D lut folder must be "
+"set in preferences/core options/miscellaneous before choosing the lut file"
+msgstr ""
+"selecione um arquivo png (haldclut), um cubo, uma 3dl ATENÇÃO: a pasta de "
+"LUT 3d deve ser configurada em preferências/opções de cor/miscelânea antes "
+"de escolher o arquivo LUT"
+
+#: ../src/iop/lut3d.c:1709
+msgid ""
+"the file path (relative to lut folder) is saved with image along with the "
+"lut data if it's a compressed lut (gmz)"
+msgstr ""
+"o caminho do arquivo (relativo à pasta LUT) é gravado com a imagem junto "
+"com\n"
+"os dados LUT se é um LUT comprimido (gmz)"
+
+#: ../src/iop/lut3d.c:1712
+msgid ""
+"the file path (relative to lut folder) is saved with image (and not the lut "
+"data themselves)"
+msgstr ""
+"o caminho do arquivo (relativo à pasta LUT) é gravado com a imagem (e não\n"
+"os próprios dados LUT)"
+
+#: ../src/iop/lut3d.c:1721
+msgid "enter lut name"
+msgstr "entre nome do lut"
+
+#: ../src/iop/lut3d.c:1743
+msgid "select the LUT"
+msgstr "selecionar o LUT"
+
+#: ../src/iop/lut3d.c:1756
+msgid "select the color space in which the LUT has to be applied"
+msgstr "escolher o espaço de cor em que o LUT será aplicado"
+
+#: ../src/iop/lut3d.c:1758
+msgid "interpolation"
+msgstr "interpolação"
+
+#: ../src/iop/lut3d.c:1759
+msgid "select the interpolation method"
+msgstr "selecione o modo de interpolação"
+
+#: ../src/iop/mask_manager.c:45 ../src/libs/masks.c:56
+msgid "mask manager"
+msgstr "gerenciador de máscara"
+
+#: ../src/iop/monochrome.c:77
+msgid "monochrome"
+msgstr "monocromático"
+
+#: ../src/iop/monochrome.c:130
+msgid "red filter"
+msgstr "filtro vermelho"
+
+#: ../src/iop/monochrome.c:582
+msgid "drag and scroll mouse wheel to adjust the virtual color filter"
+msgstr "arraste e role a roda do mouse para ajustar o filtro de cor virtual"
+
+#: ../src/iop/monochrome.c:598
+msgid "how much to keep highlights"
+msgstr "quanto para manter realces"
+
+#: ../src/iop/negadoctor.c:192
+msgid "negadoctor"
+msgstr "negadoctor"
+
+#: ../src/iop/negadoctor.c:421
+msgid "color film"
+msgstr "filme colorido"
+
+#: ../src/iop/negadoctor.c:435
+msgid "black and white film"
+msgstr "filme preto & branco"
+
+#: ../src/iop/negadoctor.c:495
+msgid "D min"
+msgstr "D min"
+
+#: ../src/iop/negadoctor.c:501 ../src/iop/negadoctor.c:1092
+msgid "D min red component"
+msgstr "D min componente vermelho"
+
+#: ../src/iop/negadoctor.c:1050
+msgid "film stock"
+msgstr "filme"
+
+#: ../src/iop/negadoctor.c:1051
+msgid "black and white"
+msgstr "preto & branco"
+
+#: ../src/iop/negadoctor.c:1052 ../src/iop/retouch.c:2635
+#: ../src/iop/watermark.c:1428
+msgid "color"
+msgstr "cor"
+
+#: ../src/iop/negadoctor.c:1055
+msgid "toggle on or off the color controls"
+msgstr "alterna (liga/desliga) controles de cor"
+
+#: ../src/iop/negadoctor.c:1062
+msgid "film properties"
+msgstr "propriedades do filme"
+
+#: ../src/iop/negadoctor.c:1064
+msgid "print properties"
+msgstr "propriedades de impressão"
+
+#. Dmin
+#: ../src/iop/negadoctor.c:1073
+msgid "color of the film base"
+msgstr "cor do filme"
+
+#: ../src/iop/negadoctor.c:1081
+msgid "select color of film material from a swatch"
+msgstr "selecione a cor do filme"
+
+#: ../src/iop/negadoctor.c:1086
+msgid "pick color of film material from image"
+msgstr "selecione a cor do material do filme na imagem"
+
+#: ../src/iop/negadoctor.c:1093 ../src/iop/negadoctor.c:1103
+#: ../src/iop/negadoctor.c:1113
+msgid ""
+"adjust the color and shade of the film transparent base.\n"
+"this value depends on the film material, \n"
+"the chemical fog produced while developing the film,\n"
+"and the scanner white balance."
+msgstr ""
+"ajusta a cor e as sombras do revestimento protetor de filme.\n"
+"esse valor depende do material do filme,\n"
+"os vapores químicos produzidos durante a revelação do filme,\n"
+"e o balanço de branco do scanner."
+
+#: ../src/iop/negadoctor.c:1102
+msgid "D min green component"
+msgstr "D min componente verde"
+
+#: ../src/iop/negadoctor.c:1112
+msgid "D min blue component"
+msgstr "D min componente azul"
+
+#. D max and scanner bias
+#: ../src/iop/negadoctor.c:1122
+msgid "dynamic range of the film"
+msgstr "faixa dinâmica do filme"
+
+#: ../src/iop/negadoctor.c:1126
+msgid "D max"
+msgstr "D max"
+
+#: ../src/iop/negadoctor.c:1128
+msgid ""
+"maximum density of the film, corresponding to white after inversion.\n"
+"this value depends on the film specifications, the developing process,\n"
+"the dynamic range of the scene and the scanner exposure settings."
+msgstr ""
+"densidade máxima do filme, correspondendo ao branco após a inversão.\n"
+"este valor depende das especificações do filme, do processo de revelação,\n"
+"e da faixa dinâmica da cena e das configurações de exposição do scanner."
+
+#: ../src/iop/negadoctor.c:1134
+msgid "scanner exposure settings"
+msgstr "configurações da exposição do scanner"
+
+#: ../src/iop/negadoctor.c:1138
+msgid "scan exposure bias"
+msgstr "viés de exposição ao escanear"
+
+#: ../src/iop/negadoctor.c:1140
+msgid ""
+"correct the exposure of the scanner, for all RGB channels,\n"
+"before the inversion, so blacks are neither clipped or too pale."
+msgstr ""
+"corrige a exposição do scanner, para todos os canais RGB,\n"
+"antes da inversão, de forma que os pretos não são cortados ou muito pálidos."
+
+#. WB shadows
+#: ../src/iop/negadoctor.c:1146
+msgid "shadows color cast"
+msgstr "desvio de cor em sombras"
+
+#: ../src/iop/negadoctor.c:1155
+msgid "select color of shadows from a swatch"
+msgstr "selecione a cor das sombras em uma amostra"
+
+#: ../src/iop/negadoctor.c:1160
+msgid "pick shadows color from image"
+msgstr "selecionar cor das sombras a partir da imagem"
+
+#: ../src/iop/negadoctor.c:1165
+msgid "shadows red offset"
+msgstr "offset vermelho das sombras"
+
+#: ../src/iop/negadoctor.c:1166 ../src/iop/negadoctor.c:1175
+#: ../src/iop/negadoctor.c:1184
+msgid ""
+"correct the color cast in shadows so blacks are\n"
+"truly achromatic. Setting this value before\n"
+"the highlights illuminant white balance will help\n"
+"recovering the global white balance in difficult cases."
+msgstr ""
+"corrige o desvio de cor nas sombras de forma que pretos sejam\n"
+"verdadeiramente acromáticos. Mudar este valor antes\n"
+"do balanço de branco dos realced do iluminante ajudará\n"
+"a recuperar o balanço de branco global em casos difíceis."
+
+#: ../src/iop/negadoctor.c:1174
+msgid "shadows green offset"
+msgstr "offset verde das sombras"
+
+#: ../src/iop/negadoctor.c:1183
+msgid "shadows blue offset"
+msgstr "offset azul das sombras"
+
+#. WB highlights
+#: ../src/iop/negadoctor.c:1192
+msgid "highlights white balance"
+msgstr "balanço de branco de realces"
+
+#: ../src/iop/negadoctor.c:1201
+msgid "select color of illuminant from a swatch"
+msgstr "selecione a cor do iluminante de uma amostra"
+
+#: ../src/iop/negadoctor.c:1206
+msgid "pick illuminant color from image"
+msgstr "selecionar cor do iluminante a partir de uma imagem"
+
+#: ../src/iop/negadoctor.c:1211
+msgid "illuminant red gain"
+msgstr "ganho vermelho do iluminante"
+
+#: ../src/iop/negadoctor.c:1212 ../src/iop/negadoctor.c:1221
+#: ../src/iop/negadoctor.c:1230
+msgid ""
+"correct the color of the illuminant so whites are\n"
+"truly achromatic. Setting this value after\n"
+"the shadows color cast will help\n"
+"recovering the global white balance in difficult cases."
+msgstr ""
+"corrige a cor do iluminante de forma que brancos fiquem\n"
+"verdadeiramente acromáticos. Modificar este valor depois\n"
+"da correção de desvio de cor em sombras ajudará\n"
+"a recuperar o balanço de branco global em casos difíceis."
+
+#: ../src/iop/negadoctor.c:1220
+msgid "illuminant green gain"
+msgstr "ganho verde do iluminante"
+
+#: ../src/iop/negadoctor.c:1229
+msgid "illuminant blue gain"
+msgstr "ganho azul do iluminante"
+
+#. print corrections
+#: ../src/iop/negadoctor.c:1238
+msgid "virtual paper properties"
+msgstr "propriedades do papel virtual"
+
+#: ../src/iop/negadoctor.c:1242
+msgid "paper black (density correction)"
+msgstr "preto no papel (correção de densidade)"
+
+#: ../src/iop/negadoctor.c:1244
+msgid ""
+"correct the density of black after the inversion,\n"
+"to adjust the global contrast while avoiding clipping shadows."
+msgstr ""
+"corrige a densidade do preto após a inversão,\n"
+"para ajustar o contraste global evitando corte de sombras."
+
+#: ../src/iop/negadoctor.c:1250
+msgid "paper grade (gamma)"
+msgstr "grading do papel (gama)"
+
+#: ../src/iop/negadoctor.c:1252
+msgid ""
+"select the grade of the virtual paper, which is actually\n"
+"equivalent to applying a gamma. it compensates the film D max\n"
+"and recovers the contrast. use a high grade for high D max."
+msgstr ""
+"seleciona o grading do papel virtual, que é na verdade\n"
+"equivalente a aplicar gama. compensa o D max do filme\n"
+"e recupera contraste. use um grading alto para D max alto."
+
+#: ../src/iop/negadoctor.c:1259
+msgid "paper gloss (specular highlights)"
+msgstr "brilho do papel (realces especulares)"
+
+#: ../src/iop/negadoctor.c:1261
+msgid ""
+"gradually compress specular highlights past this value\n"
+"to avoid clipping while pushing the exposure for midtones.\n"
+"this somewhat reproduces the behaviour of matte paper."
+msgstr ""
+"gradualmente comprime realces especulares além deste valor\n"
+"para evitar corte enquanto força a exposição para os tons médios.\n"
+"isto reproduz, de certa forma, o comportamento de papel matte."
+
+#: ../src/iop/negadoctor.c:1266
+msgid "virtual print emulation"
+msgstr "simulação de impressão virtual"
+
+#: ../src/iop/negadoctor.c:1270
+msgid "print exposure adjustment"
+msgstr "ajuste de exposição"
+
+#: ../src/iop/negadoctor.c:1272
+msgid ""
+"correct the printing exposure after inversion to adjust\n"
+"the global contrast and avoid clipping highlights."
+msgstr ""
+"corrige a exposição da impressão depois da inversão para ajustar\n"
+"o contraste global e evitar corte de realces."
+
+#: ../src/iop/nlmeans.c:82
+msgid "denoise (non-local means)"
+msgstr "redução de ruído (média não local)"
+
+#: ../src/iop/nlmeans.c:120
+msgctxt "accel"
+msgid "luma"
+msgstr "luma"
+
+#: ../src/iop/nlmeans.c:121
+msgctxt "accel"
+msgid "chroma"
+msgstr "croma"
+
+#: ../src/iop/nlmeans.c:777
+msgid "radius of the patches to match"
+msgstr "raio dos patches a corresponder"
+
+#: ../src/iop/nlmeans.c:786
+msgid "how much to smooth brightness"
+msgstr "quanto para suavizar brilho"
+
+#: ../src/iop/nlmeans.c:790
+msgid "how much to smooth colors"
+msgstr "quando para suavisar cores"
+
+#: ../src/iop/overexposed.c:71
+msgid "overexposed"
+msgstr "superexporta"
+
+#: ../src/iop/profile_gamma.c:94
+msgid "unbreak input profile"
+msgstr "consertar perfil de entrada"
+
+#: ../src/iop/profile_gamma.c:115
+msgctxt "accel"
+msgid "linear"
+msgstr "linear"
+
+#: ../src/iop/profile_gamma.c:116
+msgctxt "accel"
+msgid "gamma"
+msgstr "gama"
+
+#: ../src/iop/profile_gamma.c:117
+msgctxt "accel"
+msgid "dynamic range"
+msgstr "faixa dinâmica"
+
+#: ../src/iop/profile_gamma.c:118
+msgctxt "accel"
+msgid "middle grey luma"
+msgstr "luma de cinza médio"
+
+#: ../src/iop/profile_gamma.c:119
+msgctxt "accel"
+msgid "black relative exposure"
+msgstr "exposição relativa de preto"
+
+#: ../src/iop/profile_gamma.c:120
+msgctxt "accel"
+msgid "safety factor"
+msgstr "fator de segurança"
+
+#: ../src/iop/profile_gamma.c:149
+msgid "16 EV dynamic range (generic)"
+msgstr "faixa dinâmica 16 EV (genérico)"
+
+#: ../src/iop/profile_gamma.c:154
+msgid "14 EV dynamic range (generic)"
+msgstr "faixa dinâmica 14 EV (genérico)"
+
+#: ../src/iop/profile_gamma.c:159
+msgid "12 EV dynamic range (generic)"
+msgstr "faixa dinâmica 12EV (genérico)"
+
+#: ../src/iop/profile_gamma.c:164
+msgid "10 EV dynamic range (generic)"
+msgstr "faixa dinâmica 10 EV (genérico)"
+
+#: ../src/iop/profile_gamma.c:169
+msgid "08 EV dynamic range (generic)"
+msgstr "faixa dinâmica 08 EV (genérico)"
+
+#: ../src/iop/profile_gamma.c:696
+msgid "linear part"
+msgstr "parte linear"
+
+#: ../src/iop/profile_gamma.c:700
+msgid "gamma exponential factor"
+msgstr "gama fator exponencial"
+
+#: ../src/iop/profile_gamma.c:713
+msgid "adjust to match the average luma of the subject"
+msgstr "ajuste para casar com luma médio do objeto"
+
+#: ../src/iop/profile_gamma.c:719
+msgid ""
+"number of stops between middle grey and pure black\n"
+"this is a reading a posemeter would give you on the scene"
+msgstr ""
+"quantidade de stops entre cinza médio e preto puro\n"
+"esta é a leitura que um exposímetro daria na cena"
+
+#: ../src/iop/profile_gamma.c:725
+msgid ""
+"number of stops between pure black and pure white\n"
+"this is a reading a posemeter would give you on the scene"
+msgstr ""
+"quantidade de stops entre preto puro e branco puro\n"
+"esta é a leitura que um exposímetro daria na cena"
+
+#: ../src/iop/profile_gamma.c:727
+msgid "optimize automatically"
+msgstr "otimizar automaticamente"
+
+#: ../src/iop/profile_gamma.c:732
+msgid ""
+"enlarge or shrink the computed dynamic range\n"
+"this is useful when noise perturbates the measurements"
+msgstr ""
+"aumenta ou diminui a faixa dinâmica calculada\n"
+"é útil quando o ruído perturba as medidas"
+
+#: ../src/iop/profile_gamma.c:737
+msgid "make an optimization with some guessing"
+msgstr "tentar otimizar usando chutes"
+
+#: ../src/iop/profile_gamma.c:747
+msgid "tone mapping method"
+msgstr "método de mapeamento de tom"
+
+#: ../src/iop/rawdenoise.c:125
+msgid "raw denoise"
+msgstr "redução de ruído raw"
+
+#: ../src/iop/rawdenoise.c:145
+msgctxt "accel"
+msgid "noise threshold"
+msgstr "limiar de ruído"
+
+#: ../src/iop/rawdenoise.c:1002
+msgid ""
+"raw denoising\n"
+"only works for raw images."
+msgstr ""
+"redução de ruído raw\n"
+"funciona apenas em imagens raw."
+
+#: ../src/iop/rawoverexposed.c:68
+msgid "raw overexposed"
+msgstr "raw superexporta"
+
+#: ../src/iop/rawprepare.c:48
+msgid "crop x"
+msgstr "corte x"
+
+#: ../src/iop/rawprepare.c:48
+msgid "crop from left border"
+msgstr "corte a partir da borda esquerda"
+
+#: ../src/iop/rawprepare.c:49
+msgid "crop y"
+msgstr "corte y"
+
+#: ../src/iop/rawprepare.c:49
+msgid "crop from top"
+msgstr "corte a partir do topo"
+
+#: ../src/iop/rawprepare.c:50
+msgid "crop width"
+msgstr "largura do corte"
+
+#: ../src/iop/rawprepare.c:50
+msgid "crop from right border"
+msgstr "corte a partir da borda direita"
+
+#: ../src/iop/rawprepare.c:51
+msgid "crop height"
+msgstr "altura do corte"
+
+#: ../src/iop/rawprepare.c:51
+msgid "crop from bottom"
+msgstr "corte a partir de baixo"
+
+#: ../src/iop/rawprepare.c:99
+msgctxt "modulename"
+msgid "raw black/white point"
+msgstr "ponto de preto/branco em raw"
+
+#: ../src/iop/rawprepare.c:126
+msgid "passthrough"
+msgstr "passthrough"
+
+#: ../src/iop/rawprepare.c:142 ../src/iop/rawprepare.c:164
+#: ../src/iop/rawprepare.c:852
+#, c-format
+msgid "black level %i"
+msgstr "nível de preto %i"
+
+#: ../src/iop/rawprepare.c:155
+msgctxt "accel"
+msgid "white point"
+msgstr "ponto branco"
+
+#: ../src/iop/rawprepare.c:891
+msgid ""
+"raw black/white point correction\n"
+"only works for the sensors that need it."
+msgstr ""
+"correção de ponto preto/branco raw\n"
+"funciona apenas para sensores que precisam disso."
+
+#: ../src/iop/relight.c:56
+msgid "fill-light 0.25EV with 4 zones"
+msgstr "preenchimento luz 0.25EV com 4 zonas"
+
+#: ../src/iop/relight.c:59
+msgid "fill-shadow -0.25EV with 4 zones"
+msgstr "preenchimento sombra -0.25EV com 4 zonas"
+
+#: ../src/iop/relight.c:88
+msgid "fill light"
+msgstr "luz de preenchimento"
+
+#: ../src/iop/relight.c:109
+msgctxt "accel"
+msgid "width"
+msgstr "largura"
+
+#: ../src/iop/relight.c:285
+msgid "the fill-light in EV"
+msgstr "a luz de preenchimento em EV"
+
+#: ../src/iop/relight.c:294
+msgid ""
+"select the center of fill-light\n"
+"ctrl+click to select an area"
+msgstr ""
+"selecione o centro da luz de preenchimento\n"
+"ctrl+clique para selecionar uma área"
+
+#: ../src/iop/relight.c:298
+msgid "toggle tool for picking median lightness in image"
+msgstr "alterna ferramenta para selecionar luminosidade media na imagem"
+
+#: ../src/iop/relight.c:301 ../src/libs/metadata_view.c:128
+#: ../src/libs/print_settings.c:1310
+msgid "width"
+msgstr "largura"
+
+#: ../src/iop/relight.c:304
+msgid "width of fill-light area defined in zones"
+msgstr "largura da área da luz de preenchimento em zonas"
+
+#: ../src/iop/retouch.c:189
+msgid "retouch"
+msgstr "retocar"
+
+#: ../src/iop/retouch.c:1680
+msgid "cannot display scales when the blending mask is displayed"
+msgstr ""
+"não é possível mostrar escalas quando a máscara de mesclagem é mostrada"
+
+#: ../src/iop/retouch.c:2396
+msgid "# shapes:"
+msgstr "# formas:"
+
+#: ../src/iop/retouch.c:2401
+msgid ""
+"to add a shape select an algorithm and a shape type and click on the image.\n"
+"shapes are added to the current scale"
+msgstr ""
+"para adicionar uma forma selecione um algoritmo e um tipo de forma e clique "
+"na imagem\n"
+"formas são adicionadas à escala atual"
+
+#: ../src/iop/retouch.c:2407
+msgid "show and edit shapes on the current scale"
+msgstr "mostrar e editar formas na escala atual"
+
+#: ../src/iop/retouch.c:2441
+msgid "algorithms:"
+msgstr "algoritmos:"
+
+#: ../src/iop/retouch.c:2446
+msgid "activates fill tool"
+msgstr "ativar ferramenta de preenchimento"
+
+#: ../src/iop/retouch.c:2453
+msgid "activates blur tool"
+msgstr "ativa ferramenta de desfoque"
+
+#: ../src/iop/retouch.c:2460
+msgid "activates healing tool"
+msgstr "ativa ferramenta de restauração (recupera irregularidades na imagem)"
+
+#: ../src/iop/retouch.c:2467
+msgid "activates cloning tool"
+msgstr "ativar ferramenta de clonagem"
+
+#: ../src/iop/retouch.c:2481
+msgid "# scales:"
+msgstr "# escalas:"
+
+#: ../src/iop/retouch.c:2490
+msgid "current:"
+msgstr "atual:"
+
+#: ../src/iop/retouch.c:2499
+msgid "merge from:"
+msgstr "mesclar de:"
+
+#: ../src/iop/retouch.c:2512
+msgid ""
+"top slider adjusts where the merge scales start\n"
+"bottom slider adjusts the number of scales\n"
+"red box indicates the current scale\n"
+"green line indicates that the scale has shapes on it"
+msgstr ""
+"o slider de cima ajusta onde as escalas iniciam\n"
+"o slider de baixo ajusta o número de escalas\n"
+"a caixa vermelha indica a escala atual\n"
+"a linha verde indica que a escala contém formas"
+
+#: ../src/iop/retouch.c:2534
+msgid "display masks"
+msgstr "mostrar máscara"
+
+#: ../src/iop/retouch.c:2540
+msgid "temporarily switch off shapes"
+msgstr "temporariamente desliga as formas"
+
+#: ../src/iop/retouch.c:2547
+msgid "display wavelet scale"
+msgstr "mostrar escala de wavelet"
+
+#: ../src/iop/retouch.c:2555
+msgid "cut shapes from current scale"
+msgstr "cortar formas a na escala atual"
+
+#: ../src/iop/retouch.c:2561
+msgid "paste cut shapes to current scale"
+msgstr "colar formas na escala atual"
+
+#: ../src/iop/retouch.c:2584
+msgid "preview single scale"
+msgstr "pré-visualizar em única escala"
+
+#: ../src/iop/retouch.c:2595
+msgid "adjust preview levels"
+msgstr "ajuste nível de pré-visualização"
+
+#: ../src/iop/retouch.c:2610
+msgid "auto levels"
+msgstr "níveis automáticos"
+
+#: ../src/iop/retouch.c:2622
+msgid "shape selected:"
+msgstr "forma selecionada:"
+
+#: ../src/iop/retouch.c:2626
+msgid ""
+"click on a shape to select it,\n"
+"to unselect click on an empty space"
+msgstr ""
+"clique em uma forma para selecioná-la,\n"
+"para de-selecionar clique em um espaço vazio"
+
+#: ../src/iop/retouch.c:2633
+msgid "fill mode"
+msgstr "modo de preenchimento"
+
+#: ../src/iop/retouch.c:2634
+msgid "erase"
+msgstr "apagar"
+
+#: ../src/iop/retouch.c:2636
+msgid "erase the detail or fills with chosen color"
+msgstr "apagar detalhes ou preencher com a cor escolhida"
+
+#: ../src/iop/retouch.c:2644
+msgid "fill color: "
+msgstr "cor de preenchimento: "
+
+#: ../src/iop/retouch.c:2649 ../src/iop/retouch.c:2650
+msgid "select fill color"
+msgstr "seleciona cor de preenchimento"
+
+#: ../src/iop/retouch.c:2655
+msgid "pick fill color from image"
+msgstr "selecionar cor de preenchimento na imagem"
+
+#: ../src/iop/retouch.c:2660
+msgid "adjusts color brightness to fine-tune it. works with erase as well"
+msgstr "ajusta brilho de cor para ajuste fino. funciona com apagar também"
+
+#: ../src/iop/retouch.c:2671
+msgid "blur type"
+msgstr "tipo de desfoque"
+
+#: ../src/iop/retouch.c:2673
+msgid "bilateral"
+msgstr "bilateral"
+
+#: ../src/iop/retouch.c:2674
+msgid "type for the blur algorithm"
+msgstr "tipo do algoritmo de desfoque"
+
+#: ../src/iop/retouch.c:2680
+msgid "blur radius"
+msgstr "raio para desfoque"
+
+#: ../src/iop/retouch.c:2681
+msgid "radius of the selected blur type"
+msgstr "raio do tipo selecionado de desfoque"
+
+#: ../src/iop/retouch.c:2689
+msgid "set the opacity on the selected shape"
+msgstr "define a opacidade na forma selecionada"
+
+#. add all the controls to the iop
+#: ../src/iop/retouch.c:2693
+msgid "retouch tools"
+msgstr "ferramentas de retoque"
+
+#. wavelet decompose
+#: ../src/iop/retouch.c:2702
+msgid "wavelet decompose"
+msgstr "decomposição/wavelets"
+
+#. shapes
+#: ../src/iop/retouch.c:2716
+msgid "shapes"
+msgstr "formas"
+
+#: ../src/iop/retouch.c:3064
+msgctxt "accel"
+msgid "retouch tool circle"
+msgstr "ferramenta de retoque - círculo"
+
+#: ../src/iop/retouch.c:3065
+msgctxt "accel"
+msgid "retouch tool ellipse"
+msgstr "ferramenta de retoque - elipse"
+
+#: ../src/iop/retouch.c:3066
+msgctxt "accel"
+msgid "retouch tool path"
+msgstr "ferramenta de retoque - caminho"
+
+#: ../src/iop/retouch.c:3067
+msgctxt "accel"
+msgid "retouch tool brush"
+msgstr "ferramenta de retoque - pincel"
+
+#: ../src/iop/retouch.c:3069 ../src/iop/spots.c:839
+msgctxt "accel"
+msgid "continuous add circle"
+msgstr "adicionar círculo (contínuo)"
+
+#: ../src/iop/retouch.c:3070 ../src/iop/spots.c:840
+msgctxt "accel"
+msgid "continuous add ellipse"
+msgstr "adiciona ellipse (contínuo)"
+
+#: ../src/iop/retouch.c:3071 ../src/iop/spots.c:841
+msgctxt "accel"
+msgid "continuous add path"
+msgstr "adicionar caminho (contínio)"
+
+#: ../src/iop/retouch.c:3072
+msgctxt "accel"
+msgid "continuous add brush"
+msgstr "adiciona pincel (contínuo)"
+
+#: ../src/iop/retouch.c:3074 ../src/iop/spots.c:842
+msgctxt "accel"
+msgid "show or hide shapes"
+msgstr "mostrar ou esconder formas"
+
+#: ../src/iop/retouch.c:4215 ../src/iop/retouch.c:5072
+#, c-format
+msgid "max scale is %i for this image size"
+msgstr "a escala máxima é %i para este tamanho de imagem"
+
+#: ../src/iop/rgbcurve.c:119
+msgid "rgb curve"
+msgstr "curva rgb"
+
+#: ../src/iop/rgbcurve.c:196 ../src/iop/tonecurve.c:577
+msgid "gamma 1.0 (linear)"
+msgstr "gama 1.0 (linear)"
+
+#: ../src/iop/rgbcurve.c:205 ../src/iop/tonecurve.c:586
+msgid "contrast - med (linear)"
+msgstr "contraste - médio (linear)"
+
+#: ../src/iop/rgbcurve.c:213 ../src/iop/tonecurve.c:594
+msgid "contrast - high (linear)"
+msgstr "contraste - alto (linear)"
+
+#: ../src/iop/rgbcurve.c:226 ../src/iop/tonecurve.c:605
+msgid "contrast - med (gamma 2.2)"
+msgstr "contraste - médio (gama 2.2)"
+
+#: ../src/iop/rgbcurve.c:238 ../src/iop/tonecurve.c:615
+msgid "contrast - high (gamma 2.2)"
+msgstr "contraste - alto (gama 2.2)"
+
+#: ../src/iop/rgbcurve.c:249 ../src/iop/tonecurve.c:626
+msgid "gamma 2.0"
+msgstr "gama 2.0"
+
+#: ../src/iop/rgbcurve.c:253 ../src/iop/tonecurve.c:630
+msgid "gamma 0.5"
+msgstr "gama 0.5"
+
+#: ../src/iop/rgbcurve.c:257 ../src/iop/tonecurve.c:634
+msgid "logarithm (base 2)"
+msgstr "logaritmo (base 2)"
+
+#: ../src/iop/rgbcurve.c:261 ../src/iop/tonecurve.c:638
+msgid "exponential (base 2)"
+msgstr "exponencial (base 2)"
+
+#: ../src/iop/rgbcurve.c:1398 ../src/iop/rgblevels.c:957
+msgid "choose between linked and independent channels."
+msgstr "escolher entre canais ligados ou independentes."
+
+#: ../src/iop/rgbcurve.c:1404 ../src/iop/rgblevels.c:963
+msgid " R "
+msgstr " R "
+
+#: ../src/iop/rgbcurve.c:1405 ../src/iop/rgblevels.c:964
+msgid "curve nodes for r channel"
+msgstr "nós da curva para canal R"
+
+#: ../src/iop/rgbcurve.c:1406 ../src/iop/rgblevels.c:965
+msgid " G "
+msgstr " G "
+
+#: ../src/iop/rgbcurve.c:1407 ../src/iop/rgblevels.c:966
+msgid "curve nodes for g channel"
+msgstr "nós da curva para canal G"
+
+#: ../src/iop/rgbcurve.c:1408 ../src/iop/rgblevels.c:967
+msgid " B "
+msgstr " B "
+
+#: ../src/iop/rgbcurve.c:1409 ../src/iop/rgblevels.c:968
+msgid "curve nodes for b channel"
+msgstr "nós da curva para canal B"
+
+#: ../src/iop/rgblevels.c:101
+msgid "rgb levels"
+msgstr "níveis rgb"
+
+#: ../src/iop/rgblevels.c:1026
+msgid ""
+"apply auto levels based on a region defined by the user\n"
+"click and drag to draw the area\n"
+"right click to cancel"
+msgstr ""
+"aplicar níveis automáticos baseado em região definida pelo usuário\n"
+"clique e arraste para desenhar a área\n"
+"clique direito cancela"
+
+#: ../src/iop/rotatepixels.c:76
+msgctxt "modulename"
+msgid "rotate pixels"
+msgstr "rotacionar pixels"
+
+#: ../src/iop/rotatepixels.c:356
+msgid "automatic pixel rotation"
+msgstr "rotação automática de pixels"
+
+#: ../src/iop/rotatepixels.c:358
+msgid "automatic pixel rotation only works for the sensors that need it."
+msgstr ""
+"rotação automática de pixel só funciona para sensores que precisam disto."
+
+#: ../src/iop/scalepixels.c:56
+msgctxt "modulename"
+msgid "scale pixels"
+msgstr "escala de pixels"
+
+#: ../src/iop/scalepixels.c:273
+msgid "automatic pixel scaling"
+msgstr "escala automática de pixels"
+
+#: ../src/iop/scalepixels.c:275
+msgid "automatic pixel scaling only works for the sensors that need it."
+msgstr ""
+"ajuste de escala automático de pixel só funciona para sensores que precisam "
+"disto."
+
+#: ../src/iop/shadhi.c:178
+msgid "shadows and highlights"
+msgstr "sombras e realces"
+
+#: ../src/iop/shadhi.c:279
+msgctxt "accel"
+msgid "white point adjustment"
+msgstr "ajuste de ponto branco"
+
+#: ../src/iop/shadhi.c:281 ../src/iop/splittoning.c:110
+#: ../src/libs/copy_history.c:442
+msgctxt "accel"
+msgid "compress"
+msgstr "comprimir"
+
+#: ../src/iop/shadhi.c:282
+msgctxt "accel"
+msgid "shadows color correction"
+msgstr "correção de cor em sombras"
+
+#: ../src/iop/shadhi.c:283
+msgctxt "accel"
+msgid "highlights color correction"
+msgstr "correção de cor em superexposições"
+
+#: ../src/iop/shadhi.c:284
+msgctxt "accel"
+msgid "soften with"
+msgstr "suavizar com"
+
+#: ../src/iop/shadhi.c:736 ../src/iop/splittoning.c:555
+msgid "compress"
+msgstr "comprimir"
+
+#: ../src/iop/shadhi.c:743
+msgid "correct shadows"
+msgstr "corrigir sombras"
+
+#: ../src/iop/shadhi.c:744
+msgid "correct highlights"
+msgstr "corrigir realces"
+
+#: ../src/iop/shadhi.c:745
+msgid "shift white point"
+msgstr "desloca ponto branco"
+
+#: ../src/iop/shadhi.c:747
+msgid "filter to use for softening. bilateral avoids halos"
+msgstr "filtro usado para suavizar. bilateral evita auréolas"
+
+#: ../src/iop/shadhi.c:748
+msgid ""
+"compress the effect on shadows/highlights and\n"
+"preserve midtones"
+msgstr ""
+"comprime o efeito em sombras/realces e\n"
+"preserva tons médios"
+
+#: ../src/iop/shadhi.c:749
+msgid "adjust saturation of shadows"
+msgstr "ajuste saturação de sombras"
+
+#: ../src/iop/shadhi.c:750
+msgid "adjust saturation of highlights"
+msgstr "ajuste saturação de realces"
+
+#: ../src/iop/sharpen.c:75
+msgctxt "modulename"
+msgid "sharpen"
+msgstr "melhora nitidez"
+
+#. add the preset.
+#. restrict to raw images
+#: ../src/iop/sharpen.c:97 ../src/iop/sharpen.c:100 ../src/iop/sharpen.c:103
+msgid "sharpen"
+msgstr "melhora nitidez"
+
+#: ../src/iop/sharpen.c:109
+msgctxt "accel"
+msgid "amount"
+msgstr "quantidade"
+
+#: ../src/iop/sharpen.c:742
+msgid "spatial extent of the unblurring"
+msgstr "extensão espacial da melhora de foco"
+
+#: ../src/iop/sharpen.c:747
+msgid "strength of the sharpen"
+msgstr "intensidade da melhora de nitidez"
+
+#: ../src/iop/sharpen.c:752
+msgid "threshold to activate sharpen"
+msgstr "límite para ativar melhora de nitidez"
+
+#: ../src/iop/soften.c:85
+msgid "soften"
+msgstr "suavização"
+
+#: ../src/iop/soften.c:675
+msgid "the size of blur"
+msgstr "o tamanho do desfoque"
+
+#: ../src/iop/soften.c:679
+msgid "the saturation of blur"
+msgstr "a saturação do desfoque"
+
+#: ../src/iop/soften.c:683
+msgid "the brightness of blur"
+msgstr "o brilho do desfoque"
+
+#: ../src/iop/soften.c:687
+msgid "the mix of effect"
+msgstr "a mistura do efeito"
+
+#: ../src/iop/splittoning.c:82
+msgid "split-toning"
+msgstr "divisão de tons"
+
+#: ../src/iop/splittoning.c:102
+msgctxt "accel"
+msgid "pick primary color"
+msgstr "seleciona cor primária"
+
+#: ../src/iop/splittoning.c:103
+msgctxt "accel"
+msgid "pick secondary color"
+msgstr "seleciona cor secundária"
+
+#: ../src/iop/splittoning.c:105
+msgctxt "accel"
+msgid "shadows-hue"
+msgstr "sombras-matiz"
+
+#: ../src/iop/splittoning.c:106
+msgctxt "accel"
+msgid "shadows-saturation"
+msgstr "sombras-saturação"
+
+#: ../src/iop/splittoning.c:107
+msgctxt "accel"
+msgid "highlights-hue"
+msgstr "realces-matiz"
+
+#: ../src/iop/splittoning.c:108
+msgctxt "accel"
+msgid "highlights-saturation"
+msgstr "realces-saturação"
+
+#: ../src/iop/splittoning.c:109
+msgctxt "accel"
+msgid "balance"
+msgstr "balanço"
+
+#: ../src/iop/splittoning.c:137
+msgid "authentic sepia"
+msgstr "sépia autêntico"
+
+#: ../src/iop/splittoning.c:146
+msgid "authentic cyanotype"
+msgstr "cianótipo autêntico"
+
+#: ../src/iop/splittoning.c:155
+msgid "authentic platinotype"
+msgstr "platinotipia autêntico"
+
+#: ../src/iop/splittoning.c:164
+msgid "chocolate brown"
+msgstr "marrom chocolate"
+
+#: ../src/iop/splittoning.c:508
+msgid "select the saturation tone"
+msgstr "selecionar o tom de saturação"
+
+#: ../src/iop/splittoning.c:512
+msgid "select tone color"
+msgstr "selecionar o tom de cor"
+
+#. Additional parameters
+#. Camera settings
+#: ../src/iop/splittoning.c:542 ../src/iop/watermark.c:1471
+#: ../src/libs/camera.c:511
+msgid "properties"
+msgstr "propriedades"
+
+#: ../src/iop/splittoning.c:553
+msgid "the balance of center of split-toning"
+msgstr "o balanço do centro da divisão de tons"
+
+#: ../src/iop/splittoning.c:557
+msgid ""
+"compress the effect on highlights/shadows and\n"
+"preserve midtones"
+msgstr ""
+"comprime o efeito em realces/sombras e\n"
+"preserva tons médios"
+
+#: ../src/iop/spots.c:55
+msgid "spot removal"
+msgstr "remoção de mancha"
+
+#: ../src/iop/spots.c:178
+msgid "spot module is limited to 64 shapes. please add a new instance !"
+msgstr ""
+"o módulo de eliminação de manchas é limitado a 64 formas. por favor, "
+"adicione uma nova instância !"
+
+#: ../src/iop/spots.c:791
+msgid "number of strokes:"
+msgstr "número de traços:"
+
+#: ../src/iop/spots.c:794
+msgid ""
+"click on a shape and drag on canvas.\n"
+"use the mouse wheel to adjust size.\n"
+"right click to remove a shape."
+msgstr ""
+"clique em uma forma e arraste na tela.\n"
+"use a roda do mouse para ajustar o tamanho.\n"
+"clique direito para remover a forma."
+
+#: ../src/iop/spots.c:800
+msgid "show and edit shapes"
+msgstr "mostrar e editar formas"
+
+#: ../src/iop/spots.c:836
+msgctxt "accel"
+msgid "spot circle tool"
+msgstr "remoção de mancha por círculo"
+
+#: ../src/iop/spots.c:837
+msgctxt "accel"
+msgid "spot ellipse tool"
+msgstr "remoção de mancha por elipse"
+
+#: ../src/iop/spots.c:838
+msgctxt "accel"
+msgid "spot path tool"
+msgstr "remoção de mancha por caminho"
+
+#: ../src/iop/temperature.c:161
+msgctxt "modulename"
+msgid "white balance"
+msgstr "balanço de branco"
+
+#: ../src/iop/temperature.c:208
+msgctxt "accel"
+msgid "tint"
+msgstr "tonalidade"
+
+#: ../src/iop/temperature.c:209
+msgctxt "accel"
+msgid "temperature"
+msgstr "temperatura"
+
+#: ../src/iop/temperature.c:213
+msgctxt "accel"
+msgid "presets"
+msgstr "predefinições"
+
+#: ../src/iop/temperature.c:215
+msgctxt "accel"
+msgid "preset/camera"
+msgstr "predefinido/câmera"
+
+#: ../src/iop/temperature.c:216
+msgctxt "accel"
+msgid "preset/camera neutral"
+msgstr "predefinido/neutro da câmera"
+
+#: ../src/iop/temperature.c:217
+msgctxt "accel"
+msgid "preset/spot"
+msgstr "predefinido/pontual"
+
+#: ../src/iop/temperature.c:785
+msgctxt "white balance"
+msgid "camera"
+msgstr "câmera"
+
+#: ../src/iop/temperature.c:786
+msgctxt "white balance"
+msgid "camera neutral"
+msgstr "neutro da câmera"
+
+#: ../src/iop/temperature.c:787
+msgctxt "white balance"
+msgid "spot"
+msgstr "pontual"
+
+#: ../src/iop/temperature.c:788
+msgctxt "white balance"
+msgid "user modified"
+msgstr "modificado pelo usuário"
+
+#: ../src/iop/temperature.c:965
+#, c-format
+msgid "`%s' color matrix not found for image"
+msgstr "`%s' matriz de cores não encontrada para imagem"
+
+#: ../src/iop/temperature.c:989
+#, c-format
+msgid "failed to read camera white balance information from `%s'!"
+msgstr "falha ao ler informação de balanço de branco de `%s' da câmera!"
+
+#: ../src/iop/temperature.c:1373 ../src/views/darkroom.c:2410
+msgid "magenta"
+msgstr "magenta"
+
+#: ../src/iop/temperature.c:1374 ../src/views/darkroom.c:2409
+msgid "cyan"
+msgstr "ciano"
+
+#: ../src/iop/temperature.c:1387
+msgid "emerald"
+msgstr "esmeralda"
+
+#: ../src/iop/temperature.c:1449
+msgid "tint"
+msgstr "tonalidade"
+
+#: ../src/iop/temperature.c:1450
+msgid "temperature"
+msgstr "temperatura"
+
+#: ../src/iop/temperature.c:1466
+msgid "choose white balance preset from camera"
+msgstr "escolha balanço de branco predefinido da câmera"
+
+#: ../src/iop/temperature.c:1472
+msgid "finetune"
+msgstr "ajuste fino"
+
+#: ../src/iop/temperature.c:1473
+#, c-format
+msgid "%.0f mired"
+msgstr "%.0f mired"
+
+#: ../src/iop/temperature.c:1477
+msgid "fine tune white balance preset"
+msgstr "ajuste fino da predefinição do balanço de branco"
+
+#: ../src/iop/temperature.c:1482
+msgid "white balance disabled for camera"
+msgstr "balanço de branco desabilitado para câmera"
+
+#: ../src/iop/tonecurve.c:194
+msgid "tone curve"
+msgstr "curva de tom"
+
+#: ../src/iop/tonecurve.c:214
+msgctxt "accel"
+msgid "base of the logarithm"
+msgstr "base do logaritmo"
+
+#: ../src/iop/tonecurve.c:218
+msgctxt "accel"
+msgid "color space"
+msgstr "espaço de cor"
+
+#: ../src/iop/tonecurve.c:1257
+msgid ""
+"if set to auto, a and b curves have no effect and are not displayed. chroma "
+"values (a and b) of each pixel are then adjusted based on L curve data. auto "
+"XYZ is similar but applies the saturation changes in XYZ space."
+msgstr ""
+"se definido como auto, curvas a e b não tem efeito e não são exibidas. "
+"valores de croma (a e b) de cada pixel são então ajustados baseados nos "
+"dados da curva L. auto XYZ é similar mas se aplica a mudanças de saturação "
+"no espaço XYZ."
+
+#: ../src/iop/tonecurve.c:1266
+msgid " L "
+msgstr " L "
+
+#: ../src/iop/tonecurve.c:1267
+msgid "tonecurve for L channel"
+msgstr "curva de tom para canal L"
+
+#: ../src/iop/tonecurve.c:1268
+msgid " a "
+msgstr " a "
+
+#: ../src/iop/tonecurve.c:1269
+msgid "tonecurve for a channel"
+msgstr "curva de tom para canal a"
+
+#: ../src/iop/tonecurve.c:1270
+msgid " b "
+msgstr " b "
+
+#: ../src/iop/tonecurve.c:1271
+msgid "tonecurve for b channel"
+msgstr "curva de tom para canal b"
+
+#: ../src/iop/tonecurve.c:1331
+msgid "log"
+msgstr "logarítmico"
+
+#: ../src/iop/tonecurve.c:1339
+msgid "base of the logarithm"
+msgstr "base do logaritmo"
+
+#: ../src/iop/toneequal.c:294
+msgid "tone equalizer"
+msgstr "equalizador de tons"
+
+#: ../src/iop/toneequal.c:314
+msgctxt "accel"
+msgid "blacks"
+msgstr "pretos"
+
+#: ../src/iop/toneequal.c:315
+msgctxt "accel"
+msgid "deep shadows"
+msgstr "sombras profundas"
+
+#: ../src/iop/toneequal.c:317
+msgctxt "accel"
+msgid "light shadows"
+msgstr "sombras leves"
+
+#: ../src/iop/toneequal.c:318
+msgctxt "accel"
+msgid "midtones"
+msgstr "tendência dos meios-tons"
+
+#: ../src/iop/toneequal.c:319
+msgctxt "accel"
+msgid "dark highlights"
+msgstr "realces escuros"
+
+#: ../src/iop/toneequal.c:321
+msgctxt "accel"
+msgid "whites"
+msgstr "brancos"
+
+#: ../src/iop/toneequal.c:322
+msgctxt "accel"
+msgid "speculars"
+msgstr "especulares"
+
+#: ../src/iop/toneequal.c:323
+msgctxt "accel"
+msgid "filter diffusion"
+msgstr "difusão do filtro"
+
+#: ../src/iop/toneequal.c:324
+msgctxt "accel"
+msgid "smoothing diameter"
+msgstr "filtro de suavização"
+
+#: ../src/iop/toneequal.c:325
+msgctxt "accel"
+msgid "edges refinement or feathering"
+msgstr "afinar ou desfocar bordas"
+
+#: ../src/iop/toneequal.c:326
+msgctxt "accel"
+msgid "mask quantization"
+msgstr "quantização de máscara"
+
+#: ../src/iop/toneequal.c:327
+msgctxt "accel"
+msgid "mask exposure compensation"
+msgstr "compensação de exposição na máscara"
+
+#: ../src/iop/toneequal.c:328
+msgctxt "accel"
+msgid "mask contrast compensation"
+msgstr "compressão de contraste de máscara"
+
+#: ../src/iop/toneequal.c:329
+msgctxt "accel"
+msgid "luminance estimator"
+msgstr "estimador de luminância"
+
+#: ../src/iop/toneequal.c:330
+msgctxt "accel"
+msgid "preserve details"
+msgstr "preservar detalhes"
+
+#. No blending
+#: ../src/iop/toneequal.c:423
+msgid "mask blending : none"
+msgstr "modo de mesclagem: nenhum"
+
+#: ../src/iop/toneequal.c:435
+msgid "mask blending : landscapes"
+msgstr "mesclagem de máscara : paisagens"
+
+#: ../src/iop/toneequal.c:443
+msgid "mask blending : all purposes"
+msgstr "mesclagem de máscara : propósito geral"
+
+#: ../src/iop/toneequal.c:451
+msgid "mask blending : isolated subjects"
+msgstr "mesclagem de máscara : objetos isolados"
+
+#: ../src/iop/toneequal.c:472
+msgid "compress shadows/highlights : soft"
+msgstr "comprimir sombras e realces :_suave"
+
+#: ../src/iop/toneequal.c:491
+msgid "compress shadows/highlights : strong"
+msgstr "comprime o efeito em sombras/realces: _forte"
+
+#: ../src/iop/toneequal.c:510
+msgid "relight : fill-in"
+msgstr "reiluminação : preenchimento"
+
+#: ../src/iop/toneequal.c:561
+msgid ""
+"tone equalizer needs to be after distorsion modules in the pipeline – "
+"disabled"
+msgstr ""
+"o equalizador de tons precisa estar depois dos módulos de distorção - "
+"desativado"
+
+#: ../src/iop/toneequal.c:837 ../src/iop/toneequal.c:958
+msgid "tone equalizer failed to allocate memory, check your RAM settings"
+msgstr ""
+"o equalizador de tons não conseguiu alocar memória, verifique sua "
+"configuração de RAM"
+
+#. Pointers are not 64-bits aligned, and SSE code will segfault
+#: ../src/iop/toneequal.c:859
+msgid ""
+"tone equalizer in/out buffer are ill-aligned, please report the bug to the "
+"developers"
+msgstr ""
+"o buffer de entrada/saída doequalizador de tons está mal alinhado, por favor "
+"reporte o bug aos desenvolvedores"
+
+#: ../src/iop/toneequal.c:1614 ../src/iop/toneequal.c:1973
+msgid "the interpolation is unstable, decrease the curve smoothing"
+msgstr "a interpolação está instável, diminua a suavização da curva"
+
+#: ../src/iop/toneequal.c:1658 ../src/iop/toneequal.c:1720
+msgid "wait for the preview to finish recomputing"
+msgstr "aguardar a pré-visualização para terminar de recomputar"
+
+#: ../src/iop/toneequal.c:1829 ../src/iop/toneequal.c:2291
+msgid ""
+"scroll over image to change tone exposure\n"
+"shift+scroll to change in large steps\n"
+"ctrl+scroll to change in small steps"
+msgstr ""
+"use o scroll sobre a imagem para mudar a exposição do tom\n"
+"shift+scroll para mudar em passos largos\n"
+"ctrol+scroll para mudar em passos curtos"
+
+#: ../src/iop/toneequal.c:1978
+msgid "some parameters are out-of-bounds"
+msgstr "alguns parâmetros estão fora dos limites"
+
+#. Build text object
+#: ../src/iop/toneequal.c:2252
+#, c-format
+msgid "%+.1f EV"
+msgstr "%+.1f EV"
+
+#: ../src/iop/toneequal.c:2905
+#, c-format
+msgid "[%s over image] change tone exposure"
+msgstr "[%s sobre a imagem] mudar exposição do tom"
+
+#: ../src/iop/toneequal.c:2911
+#, c-format
+msgid "[%s over image] change tone exposure in large steps"
+msgstr "[%s sobre a imagem] mudar exposição do tom em passos largos"
+
+#: ../src/iop/toneequal.c:2917
+#, c-format
+msgid "[%s over image] change tone exposure in small steps"
+msgstr "[%s sobre a imagem] mudar exposição do tom em passos curtos"
+
+#: ../src/iop/toneequal.c:2996
+msgid "simple"
+msgstr "simples"
+
+#: ../src/iop/toneequal.c:3001
+msgid "-8 EV"
+msgstr "-8 EV"
+
+#: ../src/iop/toneequal.c:3006
+msgid "-7 EV"
+msgstr "-7 EV"
+
+#: ../src/iop/toneequal.c:3011
+msgid "-6 EV"
+msgstr "-6 EV"
+
+#: ../src/iop/toneequal.c:3016
+msgid "-5 EV"
+msgstr "-5 EV"
+
+#: ../src/iop/toneequal.c:3021
+msgid "-4 EV"
+msgstr "-4 EV"
+
+#: ../src/iop/toneequal.c:3026
+msgid "-3 EV"
+msgstr "-3 EV"
+
+#: ../src/iop/toneequal.c:3031
+msgid "-2 EV"
+msgstr "-2 EV"
+
+#: ../src/iop/toneequal.c:3036
+msgid "-1 EV"
+msgstr "-1 EV"
+
+#: ../src/iop/toneequal.c:3041
+msgid "+0 EV"
+msgstr "+0 EV"
+
+#: ../src/iop/toneequal.c:3046
+msgid "advanced"
+msgstr "avançado"
+
+#: ../src/iop/toneequal.c:3061
+msgid "double-click to reset the curve"
+msgstr "clique duplo para redefinir curva"
+
+#: ../src/iop/toneequal.c:3068
+msgid "curve smoothing"
+msgstr "suavização de curva"
+
+#: ../src/iop/toneequal.c:3069
+msgid ""
+"positive values will produce more progressive tone transitions\n"
+"but the curve might become oscillatory in some settings.\n"
+"negative values will avoid oscillations and behave more robustly\n"
+"but may produce brutal tone transitions and damage local contrast."
+msgstr ""
+"valores positivos vão produzir transições de tons mais progressivas\n"
+"mas a curva pode ficar oscilatória em algumas configuraçÕes.\n"
+"valores negativos evitarão oscilações e tem comportamento mais robusto\n"
+"mas podem produzir transições de tons brutais e danificar o contraste local."
+
+#: ../src/iop/toneequal.c:3079
+msgid "masking"
+msgstr "máscaras"
+
+#: ../src/iop/toneequal.c:3083
+msgid ""
+"preview the mask and chose the estimator that gives you the\n"
+"higher contrast between areas to dodge and areas to burn"
+msgstr ""
+"pré-visualiza a máscara e escolhe o estimador que te dá o\n"
+"maior contraste entre áreas a aclarar e áreas a escurecer"
+
+#: ../src/iop/toneequal.c:3086
+msgid "details"
+msgstr "detalhes"
+
+#: ../src/iop/toneequal.c:3087
+msgid "preserve details"
+msgstr "preservar detalhes"
+
+#: ../src/iop/toneequal.c:3088
+msgid ""
+"'no' affects global and local contrast (safe if you only add contrast)\n"
+"'guided filter' only affects global contrast and tries to preserve local "
+"contrast\n"
+"'averaged guided filter' is a geometric mean of both methods"
+msgstr ""
+"'não' afeta contraste global e local (é seguro se você só adicionou "
+"contraste)\n"
+"'filtro guiado' só afeta contraste global e tenta preservar contraste local\n"
+"'filtro de média guiado' é a média geométrica dos dois métodos"
+
+#: ../src/iop/toneequal.c:3094
+msgid ""
+"number of passes of guided filter to apply\n"
+"helps diffusing the edges of the filter at the expense of speed"
+msgstr ""
+"número de passos do filtro guiado a aplicar\n"
+"ajuda a dispersão das bordas do filtro, mas é lento"
+
+#: ../src/iop/toneequal.c:3100
+msgid ""
+"diameter of the blur in percent of the largest image size\n"
+"warning: big values of this parameter can make the darkroom\n"
+"preview much slower if denoise profiled is used."
+msgstr ""
+"diâmetro do desfoque em porcentagem do tamanho da maior imagem\n"
+"atenção: valores altos deste parâmetro podem fazer a pré-visualização\n"
+"do darkroom muito mais lenta se o módulo de redução de ruído é usado."
+
+#: ../src/iop/toneequal.c:3107
+msgid ""
+"precision of the feathering :\n"
+"higher values force the mask to follow edges more closely\n"
+"but may void the effect of the smoothing\n"
+"lower values give smoother gradients and better smoothing\n"
+"but may lead to inaccurate edges taping and halos"
+msgstr ""
+"precisão do enevoamento :\n"
+"valores altos forçam a máscara a seguir as boradas mais de perto\n"
+"mas podem anular o efeito da suavização\n"
+"valores baixos dão gradientes mais suaves e melhor suavização\n"
+"mas podem levar a arestas imprecisas e halos"
+
+#: ../src/iop/toneequal.c:3113
+msgid "mask post-processing"
+msgstr "pós-processamento de máscara"
+
+#: ../src/iop/toneequal.c:3119
+msgid ""
+"mask histogram span between the first and last deciles.\n"
+"the central line shows the average. orange bars appear at extrema if "
+"clipping occurs."
+msgstr ""
+"o histograma de máscara se extende entre o primeiro e último decil.\n"
+"a linha central mostra a média. as barras laranja aparecem nos extremos se "
+"houver corte."
+
+#: ../src/iop/toneequal.c:3126
+msgid ""
+"0 disables the quantization.\n"
+"higher values posterize the luminance mask to help the guiding\n"
+"produce piece-wise smooth areas when using high feathering values"
+msgstr ""
+"0 desabilita quantização.\n"
+"valores altos posterizam a luminância da máscara para ajudar na orientação\n"
+"para produzir áreas mais suaves quando valores altos de enevoamento são "
+"usados"
+
+#: ../src/iop/toneequal.c:3133
+msgid ""
+"use this to slide the mask average exposure along channels\n"
+"for a better control of the exposure correction with the available nodes.\n"
+"the picker will auto-adjust the average exposure at -4EV."
+msgstr ""
+"use para mover a exposição média da máscara pelos canais\n"
+"para melhor controle da correção de exposição com os nós disponíveis.\n"
+"o contagotas ajustará automaticamente a exposição média em -4EV."
+
+#: ../src/iop/toneequal.c:3143
+msgid ""
+"use this to counter the averaging effect of the guided filter\n"
+"and dilate the mask contrast around -4EV\n"
+"this allows to spread the exposure histogram over more channels\n"
+"for a better control of the exposure correction."
+msgstr ""
+"use para compensar o efeito do filtro guiado\n"
+"e dilatar o contraste da máscara ao redor de -4EV\n"
+"isto permite espalhar o histograma de exposição sobre mais canais\n"
+"para um controle melhor da correção de exposição."
+
+#: ../src/iop/toneequal.c:3160 ../src/iop/toneequal.c:3164
+msgid "display exposure mask"
+msgstr "mostrar máscara de exposição"
+
+#: ../src/iop/tonemap.cc:74
+msgid "tone mapping"
+msgstr "mapeamento de tom"
+
+#: ../src/iop/tonemap.cc:95
+msgctxt "accel"
+msgid "contrast compression"
+msgstr "compressão de constraste"
+
+#: ../src/iop/velvia.c:84
+msgid "velvia"
+msgstr "velvia"
+
+#: ../src/iop/velvia.c:105
+msgctxt "accel"
+msgid "mid-tones bias"
+msgstr "tendência dos meios-tons"
+
+#: ../src/iop/velvia.c:346
+msgid "the strength of saturation boost"
+msgstr "a força do aumento de saturação"
+
+#: ../src/iop/velvia.c:349
+msgid "how much to spare highlights and shadows"
+msgstr "quanto para resguardar realces e sombras"
+
+#: ../src/iop/vibrance.c:216
+msgid "the amount of vibrance"
+msgstr "a quantia de vivacidade"
+
+#: ../src/iop/vignette.c:154
+msgid "vignetting"
+msgstr "vinheta"
+
+#: ../src/iop/vignette.c:176
+msgctxt "accel"
+msgid "fall-off strength"
+msgstr "força de decaimento"
+
+#: ../src/iop/vignette.c:179
+msgctxt "accel"
+msgid "horizontal center"
+msgstr "centro horizontal"
+
+#: ../src/iop/vignette.c:180
+msgctxt "accel"
+msgid "vertical center"
+msgstr "centro vertical"
+
+#: ../src/iop/vignette.c:181
+msgctxt "accel"
+msgid "shape"
+msgstr "forma"
+
+#: ../src/iop/vignette.c:182
+msgctxt "accel"
+msgid "width-height ratio"
+msgstr "razão largura/altura"
+
+#: ../src/iop/vignette.c:183
+msgctxt "accel"
+msgid "dithering"
+msgstr "dithering"
+
+#: ../src/iop/vignette.c:994
+msgid "lomo"
+msgstr "lomo"
+
+#: ../src/iop/vignette.c:1043
+msgid "automatic ratio"
+msgstr "razão automática"
+
+#: ../src/iop/vignette.c:1062
+msgid "the radii scale of vignette for start of fall-off"
+msgstr "a escala dos raios de vinhega para comecar a decair"
+
+#: ../src/iop/vignette.c:1063
+msgid "the radii scale of vignette for end of fall-off"
+msgstr "a escals dos raios de vinheta para terminar de decair"
+
+#: ../src/iop/vignette.c:1064
+msgid "strength of effect on brightness"
+msgstr "força do efeito no brilho"
+
+#: ../src/iop/vignette.c:1065
+msgid "strength of effect on saturation"
+msgstr "força do efeito na saturação"
+
+#: ../src/iop/vignette.c:1066
+msgid "horizontal offset of center of the effect"
+msgstr "deslocamento horizontal do centro do efeito"
+
+#: ../src/iop/vignette.c:1067
+msgid "vertical offset of center of the effect"
+msgstr "deslocamento vertical do centro do efeito"
+
+#: ../src/iop/vignette.c:1068
+msgid ""
+"shape factor\n"
+"0 produces a rectangle\n"
+"1 produces a circle or ellipse\n"
+"2 produces a diamond"
+msgstr ""
+"fator de forma\n"
+"0 produz um retângulo\n"
+"1 produz um círculo ou elipse\n"
+"2 produz um losango"
+
+#: ../src/iop/vignette.c:1070
+msgid "enable to have the ratio automatically follow the image size"
+msgstr "habilite para proporção seguir automaticamente o tamanho da imagem"
+
+#: ../src/iop/vignette.c:1071
+msgid "width-to-height ratio"
+msgstr "largura-altura relação"
+
+#: ../src/iop/vignette.c:1072
+msgid "add some level of random noise to prevent banding"
+msgstr ""
+"adiciona uma certo nível de ruído aleatório para prevenir bandas de cor"
+
+#: ../src/iop/vignette.c:1084
+#, c-format
+msgid "[%s on node] change vignette/feather size"
+msgstr "[%s no nó] muda vinheta/enevoamento"
+
+#: ../src/iop/vignette.c:1090
+#, c-format
+msgid "[%s on node] change vignette/feather size keeping ratio"
+msgstr "[%s no nó] muda vinheta/enevoamento, mantendo aspecto"
+
+#: ../src/iop/vignette.c:1096
+#, c-format
+msgid "[%s on center] move vignette"
+msgstr "[%s no centro] mover vinheta"
+
+#: ../src/iop/watermark.c:284
+msgid "watermark"
+msgstr "marca d'água"
+
+#: ../src/iop/watermark.c:309
+msgctxt "accel"
+msgid "refresh"
+msgstr "atualizar"
+
+#: ../src/iop/watermark.c:310
+msgctxt "accel"
+msgid "opacity"
+msgstr "opacidade"
+
+#: ../src/iop/watermark.c:313
+msgctxt "accel"
+msgid "x offset"
+msgstr "deslocamento x"
+
+#: ../src/iop/watermark.c:314
+msgctxt "accel"
+msgid "y offset"
+msgstr "deslocamento y"
+
+#: ../src/iop/watermark.c:315
+msgctxt "accel"
+msgid "marker"
+msgstr "marcador"
+
+#: ../src/iop/watermark.c:316
+msgctxt "accel"
+msgid "scale on"
+msgstr "escala em"
+
+#: ../src/iop/watermark.c:1394
+msgid "content"
+msgstr "conteúdo"
+
+#: ../src/iop/watermark.c:1410
+msgid "marker"
+msgstr "marcador"
+
+#: ../src/iop/watermark.c:1413
+#, c-format
+msgid "SVG watermarks in %s/watermarks or %s/watermarks"
+msgstr "marcas d'água SVG em %s/watermarks ou %s/watermarks"
+
+#: ../src/iop/watermark.c:1430
+msgid ""
+"watermark color, tag:\n"
+"$(WATERMARK_COLOR)"
+msgstr ""
+"cor da marca d'água, etiqueta:\n"
+"$(WATERMARK_COLOR)"
+
+#: ../src/iop/watermark.c:1432
+msgid "select watermark color"
+msgstr "selecionar cor da marca d'água"
+
+#: ../src/iop/watermark.c:1434
+msgid "pick color from image"
+msgstr "selecionar cor a partir da imagem"
+
+#. Simple text
+#: ../src/iop/watermark.c:1441
+msgid "text"
+msgstr "texto"
+
+#: ../src/iop/watermark.c:1445
+msgid ""
+"text string, tag:\n"
+"$(WATERMARK_TEXT)"
+msgstr ""
+"texto, etiqueta:\n"
+"$(WATERMARK_TEXT)"
+
+#. Text font
+#: ../src/iop/watermark.c:1455
+msgid "font"
+msgstr "fonte"
+
+#: ../src/iop/watermark.c:1461
+msgid ""
+"text font, tags:\n"
+"$(WATERMARK_FONT_FAMILY)\n"
+"$(WATERMARK_FONT_STYLE)\n"
+"$(WATERMARK_FONT_WEIGHT)"
+msgstr ""
+"fonte para texto, etiquetas:\n"
+"$(WATERMARK_FONT_FAMILY)\n"
+"$(WATERMARK_FONT_STYLE)\n"
+"$(WATERMARK_FONT_WEIGHT)"
+
+#. dt_bauhaus_combobox_add(g->sizeto, C_("size", "image"));
+#: ../src/iop/watermark.c:1484
+msgid "size is relative to"
+msgstr "tamanho é relativo a"
+
+#: ../src/iop/watermark.c:1486
+msgid "position"
+msgstr "posição"
+
+#: ../src/iop/watermark.c:1490 ../src/libs/print_settings.c:1395
+msgid "alignment"
+msgstr "alinhamento"
+
+#. Let's add some tooltips and hook up some signals...
+#: ../src/iop/watermark.c:1511
+msgid "the opacity of the watermark"
+msgstr "a opacidade da marca d'água"
+
+#: ../src/iop/watermark.c:1512
+msgid "the scale of the watermark"
+msgstr "a escala da marca d'água"
+
+#: ../src/iop/watermark.c:1513
+msgid "the rotation of the watermark"
+msgstr "a rotação da marca d'água"
+
+#: ../src/iop/zonesystem.c:117
+msgid "zone system"
+msgstr "sistema de zona"
+
+#: ../src/iop/zonesystem.c:543
+msgid ""
+"lightness zones\n"
+"use mouse scrollwheel to change the number of zones\n"
+"left-click on a border to create a marker\n"
+"right-click on a marker to delete it"
+msgstr ""
+"zonas de luminosidade\n"
+"use a roda do mouse para mudar o número de zonas\n"
+"clique botão esquerdo na borda para criar um marcador\n"
+"clique botão direito no marcador para escluir"
+
+#: ../src/libs/backgroundjobs.c:52
+msgid "background jobs"
+msgstr "tarefas em segundo plano"
+
+#: ../src/libs/camera.c:78
+msgid "camera settings"
+msgstr "configurações da câmera"
+
+#: ../src/libs/camera.c:104
+msgctxt "accel"
+msgid "capture image(s)"
+msgstr "captura imagem(ns)"
+
+#: ../src/libs/camera.c:143
+msgid "toggle view property in center view"
+msgstr "alterna propriedade da vista na vista central"
+
+#: ../src/libs/camera.c:213
+msgid "connection with camera lost, exiting tethering mode"
+msgstr "perdida a conexão com a câmera, saindo modo acesso remoto"
+
+#: ../src/libs/camera.c:358
+msgid "battery"
+msgstr "bateria"
+
+#: ../src/libs/camera.c:358
+msgid "n/a"
+msgstr "n/a"
+
+#. Camera control
+#: ../src/libs/camera.c:433
+msgid "camera control"
+msgstr "controle da câmera"
+
+#: ../src/libs/camera.c:438
+msgid "modes"
+msgstr "modos"
+
+#: ../src/libs/camera.c:439
+msgid "timer (s)"
+msgstr "temporizador (s)"
+
+#: ../src/libs/camera.c:440
+msgid "count"
+msgstr "contagem"
+
+#: ../src/libs/camera.c:441
+msgid "brackets"
+msgstr "brackets"
+
+#: ../src/libs/camera.c:442
+msgid "bkt. steps"
+msgstr "passos de bracketing"
+
+#: ../src/libs/camera.c:478
+msgid "capture image(s)"
+msgstr "captura imagem(ns)"
+
+#: ../src/libs/camera.c:481
+msgid "toggle delayed capture mode"
+msgstr "alterna modo de captura em retardo"
+
+#: ../src/libs/camera.c:482
+msgid "toggle sequenced capture mode"
+msgstr "alterna modo de captura em sequência"
+
+#: ../src/libs/camera.c:483
+msgid "toggle bracketed capture mode"
+msgstr "alterna modo de captura em brackets"
+
+#: ../src/libs/camera.c:484
+msgid "the count of seconds before actually doing a capture"
+msgstr "a contagem de segundos antes de realizar a captura"
+
+#: ../src/libs/camera.c:486
+msgid ""
+"the amount of images to capture in a sequence,\n"
+"you can use this in conjunction with delayed mode to create stop-motion "
+"sequences."
+msgstr ""
+"a quantidade de imagens capturadas em sequência,\n"
+"você pode definir isto em conjunto com o modo em retardo para criar "
+"sequências de stop-motiom."
+
+#: ../src/libs/camera.c:489
+msgid ""
+"the amount of brackets on each side of centered shoot, amount of images = "
+"(brackets*2)+1."
+msgstr ""
+"a quantidade de brackets em cada lado de um disparo centrado, total de "
+"imagens = (brackets*2)+1."
+
+#: ../src/libs/camera.c:491
+msgid ""
+"the amount of steps per bracket, steps is camera configurable and usually 3 "
+"steps per stop\n"
+"with other words, 3 steps is 1EV exposure step between brackets."
+msgstr ""
+"a quantidade de passos de bracket, passo são configuráveis na câmera e "
+"geralmente 3 passos por stop\n"
+"em outras palavas, 3 passos são 1EV de exposição entre os brackets."
+
+#. user specified properties
+#: ../src/libs/camera.c:520
+msgid "additional properties"
+msgstr "propriedades adicionais"
+
+#: ../src/libs/camera.c:524
+msgid "label"
+msgstr "etiqueta"
+
+#: ../src/libs/camera.c:533
+msgid "property"
+msgstr "propriedade"
+
+#: ../src/libs/camera.c:546
+msgid "add user property"
+msgstr "adiciona propriedade do usúario"
+
+#: ../src/libs/camera.c:568
+msgid "program"
+msgstr "programa"
+
+#: ../src/libs/camera.c:571 ../src/libs/camera.c:573
+msgid "focus mode"
+msgstr "modo foco"
+
+#: ../src/libs/camera.c:584
+msgid "shutterspeed2"
+msgstr "velocidade de disparo 2"
+
+#: ../src/libs/camera.c:586
+msgid "shutterspeed"
+msgstr "velocidade de disparo"
+
+#: ../src/libs/camera.c:592
+msgid "WB"
+msgstr "balanço de branco"
+
+#: ../src/libs/collect.c:117
+msgid "collect images"
+msgstr "coletar imagens"
+
+#: ../src/libs/collect.c:354
+msgid "search filmroll"
+msgstr "procura rolo de filme"
+
+#: ../src/libs/collect.c:440
+#, c-format
+msgid "problem selecting new path for the filmroll in %s"
+msgstr "problema selecionando novo caminho para o rolo de filme em %s"
+
+#: ../src/libs/collect.c:492
+msgid "search filmroll..."
+msgstr "procura rolo de fime..."
+
+#: ../src/libs/collect.c:496
+msgid "remove..."
+msgstr "remove..."
+
+#: ../src/libs/collect.c:1138
+msgid "uncategorized"
+msgstr "sem categoria"
+
+#: ../src/libs/collect.c:1558
+msgid "not tagged"
+msgstr "não etiquetado"
+
+#: ../src/libs/collect.c:1570
+msgid "copied locally"
+msgstr "copia local"
+
+#: ../src/libs/collect.c:1672
+msgid "group followers"
+msgstr "seguidores do grupo"
+
+#: ../src/libs/collect.c:1932 ../src/libs/collect.c:1947
+#: ../src/libs/collect.c:2469
+msgid "clear this rule"
+msgstr "limpar esta regra"
+
+#: ../src/libs/collect.c:1936
+msgid "clear this rule or add new rules"
+msgstr "limpar esta regra ou adicionar nova regra"
+
+#: ../src/libs/collect.c:1992
+msgid "type your query, use <, <=, >, >=, <>, =, [;] as operators"
+msgstr "digite sua consulta, use <, <=, >, >=, <>, =, [l] como operadores"
+
+#: ../src/libs/collect.c:1997
+msgid ""
+"type your query, use <, <=, >, >=, <>, =, [;] as operators, type dates in "
+"the form : YYYY:MM:DD HH:MM:SS (only the year is mandatory)"
+msgstr ""
+"digite sua consulta, use <, <=, >, >=, <>, =, [l] como operadores, digite "
+"datas no formato : YYYY:MM:DD HH:MM:SS (só o ano é obrigatório)"
+
+#: ../src/libs/collect.c:2003
+#, no-c-format
+msgid "type your query, use `%' as wildcard and `,' to separate values"
+msgstr "digite sua consulta, use `%' como curinga e ',' para separar valores"
+
+#: ../src/libs/collect.c:2008 ../src/libs/collect.c:2577
+#, no-c-format
+msgid "type your query, use `%' as wildcard"
+msgstr "digite sua consulta, use `%' como curinga"
+
+#: ../src/libs/collect.c:2475
+msgid "narrow down search"
+msgstr "restringir pesquisa"
+
+#: ../src/libs/collect.c:2480
+msgid "add more images"
+msgstr "adiciona mais imagens"
+
+#: ../src/libs/collect.c:2485
+msgid "exclude images"
+msgstr "excluir imagens"
+
+#: ../src/libs/collect.c:2492
+msgid "change to: and"
+msgstr "muda para: and"
+
+#: ../src/libs/collect.c:2497
+msgid "change to: or"
+msgstr "muda para: ou"
+
+#: ../src/libs/collect.c:2502
+msgid "change to: except"
+msgstr "muda para: exceto"
+
+#: ../src/libs/colorpicker.c:54
+msgid "color picker"
+msgstr "seletor de cor"
+
+#: ../src/libs/colorpicker.c:80
+msgctxt "accel"
+msgid "pick color"
+msgstr "seleciona cor"
+
+#: ../src/libs/colorpicker.c:81
+msgctxt "accel"
+msgid "add sample"
+msgstr "adiciona amostra"
+
+#: ../src/libs/colorpicker.c:389
+msgid "hover to highlight sample on canvas, click to lock sample"
+msgstr ""
+"passe sobre para salientar amostra na tela, clique para bloquer amostra"
+
+#: ../src/libs/colorpicker.c:405
+msgid "X"
+msgstr "X"
+
+#: ../src/libs/colorpicker.c:511
+msgid "live samples"
+msgstr "amostra em tempo real"
+
+#: ../src/libs/colorpicker.c:567
+msgid "point"
+msgstr "ponto"
+
+#: ../src/libs/colorpicker.c:568
+msgid "area"
+msgstr "área"
+
+#: ../src/libs/colorpicker.c:581 ../src/libs/colorpicker.c:619
+msgid "mean"
+msgstr "média"
+
+#: ../src/libs/colorpicker.c:582 ../src/libs/colorpicker.c:620
+msgid "min"
+msgstr "mín"
+
+#: ../src/libs/colorpicker.c:583 ../src/libs/colorpicker.c:621
+msgid "max"
+msgstr "máx"
+
+#: ../src/libs/colorpicker.c:605
+msgid "restrict histogram to selection"
+msgstr "restringe histograma a seleção"
+
+#: ../src/libs/colorpicker.c:638 ../src/libs/export_metadata.c:160
+msgid "add"
+msgstr "adicionar"
+
+#: ../src/libs/colorpicker.c:647
+msgid "display sample areas on image"
+msgstr "visualiza área de amostra na imagem"
+
+#: ../src/libs/copy_history.c:53
+msgid "history stack"
+msgstr "histórico de ações"
+
+#: ../src/libs/copy_history.c:116
+msgid "open sidecar file"
+msgstr "abrir arquivo associado"
+
+#: ../src/libs/copy_history.c:126
+msgid "XMP sidecar files"
+msgstr "arquivo XMP associado"
+
+#: ../src/libs/copy_history.c:143
+#, c-format
+msgid "error loading file '%s'"
+msgstr "erro carregando arquivo '%s'"
+
+#: ../src/libs/copy_history.c:178
+#, c-format
+msgid ""
+"no history compression of 1 image.\n"
+"see tag: darktable|problem|history-compress."
+msgid_plural ""
+"no history compression of %d images.\n"
+"see tag: darktable|problem|history-compress."
+msgstr[0] ""
+"o histórico de uma imagem não é comprimido.\n"
+"veja a etiqueta: darktable|problema|history-compress."
+msgstr[1] ""
+"o histórico de %d imagens não são comprimidos.\n"
+"veja a etiqueta: darktable|problema|history-compress."
+
+#: ../src/libs/copy_history.c:184
+msgid "history compression warning"
+msgstr "advertência de compressão de histórico"
+
+#: ../src/libs/copy_history.c:231
+#, c-format
+msgid "do you really want to clear history of %d selected image?"
+msgid_plural "do you really want to clear history of %d selected images?"
+msgstr[0] "você realmente deseja remover o histórico da %d imagem selecionada?"
+msgstr[1] ""
+"você realmente deseja remover os históricos das %d imagens selecionadas?"
+
+#: ../src/libs/copy_history.c:237
+msgid "delete images' history?"
+msgstr "excluir histórico de imagens?"
+
+#: ../src/libs/copy_history.c:341 ../src/libs/image.c:453
+msgid "copy..."
+msgstr "copia..."
+
+#: ../src/libs/copy_history.c:344
+msgid ""
+"copy part history stack of\n"
+"first selected image"
+msgstr ""
+"copia parte do histórico da \n"
+"primeira imagem selecionada"
+
+#: ../src/libs/copy_history.c:348
+msgid "copy all"
+msgstr "copiar tudo"
+
+#: ../src/libs/copy_history.c:351
+msgid ""
+"copy history stack of\n"
+"first selected image"
+msgstr ""
+"copiar histórico da \n"
+"primeira imagem selecionada"
+
+#: ../src/libs/copy_history.c:355
+msgid "paste..."
+msgstr "cola..."
+
+#: ../src/libs/copy_history.c:357
+msgid ""
+"paste part history stack to\n"
+"all selected images"
+msgstr ""
+"cola parte do histórico\n"
+"todas imagens seleciondadas"
+
+#: ../src/libs/copy_history.c:362
+msgid "paste all"
+msgstr "colar tudo"
+
+#: ../src/libs/copy_history.c:364
+msgid ""
+"paste history stack to\n"
+"all selected images"
+msgstr ""
+"colar histórico\n"
+"todas imagens seleciondadas"
+
+#: ../src/libs/copy_history.c:369
+msgid "compress history"
+msgstr "comprimir histórico de ações"
+
+#: ../src/libs/copy_history.c:371
+msgid ""
+"compress history stack of\n"
+"all selected images"
+msgstr ""
+"comprime histórico de\n"
+"todas imagens selecionadas"
+
+#: ../src/libs/copy_history.c:374
+msgid "discard history"
+msgstr "descartar história"
+
+#: ../src/libs/copy_history.c:377
+msgid ""
+"discard history stack of\n"
+"all selected images"
+msgstr ""
+"descarta histórico de\n"
+"todas imagens selecionadas"
+
+#: ../src/libs/copy_history.c:383 ../src/libs/styles.c:588
+msgid "append"
+msgstr "anexa"
+
+#: ../src/libs/copy_history.c:385 ../src/libs/styles.c:590
+msgid "how to handle existing history"
+msgstr "como gerenciar histórico existente"
+
+#: ../src/libs/copy_history.c:390
+msgid "load sidecar file..."
+msgstr "carregar arquivo associado..."
+
+#: ../src/libs/copy_history.c:393
+msgid ""
+"open an XMP sidecar file\n"
+"and apply it to selected images"
+msgstr ""
+"abrir arquivo XMP associado\n"
+"e aplicar nas imagens seleciodadas"
+
+#: ../src/libs/copy_history.c:400
+msgid "write history stack and tags to XMP sidecar files"
+msgstr "escrever histórico e etiquetas no arquivo XMP associado"
+
+#: ../src/libs/copy_history.c:440
+msgctxt "accel"
+msgid "copy all"
+msgstr "copiar tudo"
+
+#: ../src/libs/copy_history.c:441
+msgctxt "accel"
+msgid "copy"
+msgstr "copia"
+
+#: ../src/libs/copy_history.c:443
+msgctxt "accel"
+msgid "discard"
+msgstr "descartar"
+
+#: ../src/libs/copy_history.c:444
+msgctxt "accel"
+msgid "paste all"
+msgstr "colar tudo"
+
+#: ../src/libs/copy_history.c:445
+msgctxt "accel"
+msgid "paste"
+msgstr "cola"
+
+#: ../src/libs/copy_history.c:446
+msgctxt "accel"
+msgid "load sidecar files"
+msgstr "carrega arquivo associado"
+
+#: ../src/libs/copy_history.c:447
+msgctxt "accel"
+msgid "write sidecar files"
+msgstr "escreve arquivo associado"
+
+#: ../src/libs/duplicate.c:60
+msgid "duplicate manager"
+msgstr "gerenciar duplicatas"
+
+#: ../src/libs/duplicate.c:535
+msgid "existing duplicates"
+msgstr "duplicatas existentes"
+
+#: ../src/libs/duplicate.c:538
+msgid "create a 'virgin' duplicate of the image without any development"
+msgstr "cria uma duplicata da imagem sem nenhum desenvolvimento"
+
+#: ../src/libs/duplicate.c:542
+msgid "create a duplicate of the image with same history stack"
+msgstr "cria uma duplicata da imagem com o memso histórico"
+
+#: ../src/libs/export.c:73
+msgid "export selected"
+msgstr "exportar selecionados"
+
+#: ../src/libs/export.c:190
+msgid "export to disk"
+msgstr "exportar para o disco"
+
+#: ../src/libs/export.c:613
+msgid "storage options"
+msgstr "opções de armazenamento"
+
+#: ../src/libs/export.c:620
+msgid "target storage"
+msgstr "armazenar em"
+
+#: ../src/libs/export.c:643
+msgid "format options"
+msgstr "opções de formato"
+
+#: ../src/libs/export.c:648
+msgid "file format"
+msgstr "formato do arquivo"
+
+#: ../src/libs/export.c:666
+msgid "global options"
+msgstr "opções globais"
+
+#: ../src/libs/export.c:671
+msgid ""
+"maximum output width\n"
+"set to 0 for no scaling"
+msgstr ""
+"máxima largura de saída\n"
+"0 para manter dimensão"
+
+#: ../src/libs/export.c:673
+msgid ""
+"maximum output height\n"
+"set to 0 for no scaling"
+msgstr ""
+"máxima altura de saída\n"
+"0 para manter dimensão"
+
+#: ../src/libs/export.c:681
+msgid "max size"
+msgstr "tamanho máx"
+
+#: ../src/libs/export.c:687
+msgid "x"
+msgstr "x"
+
+#: ../src/libs/export.c:693
+msgid "allow upscaling"
+msgstr "permitir aumentar a escala"
+
+#: ../src/libs/export.c:699
+msgid "high quality resampling"
+msgstr "reamostragem de alta qualidade"
+
+#: ../src/libs/export.c:702
+msgid "do high quality resampling during export"
+msgstr "fazer reamostragem de alta qualidade durante exportação"
+
+#: ../src/libs/export.c:706
+msgid "store masks"
+msgstr "armazenar máscaras"
+
+#: ../src/libs/export.c:709
+msgid "store masks as layers in exported images. only works for some formats."
+msgstr ""
+"armazena máscaras como camadas nas imagens exportadas. só funciona com "
+"alguns formatos."
+
+#: ../src/libs/export.c:722 ../src/libs/export.c:743
+#: ../src/libs/print_settings.c:1412 ../src/libs/print_settings.c:1459
+msgid "image settings"
+msgstr "configurações da imagem"
+
+#: ../src/libs/export.c:733 ../src/libs/print_settings.c:1448
+#, c-format
+msgid "output ICC profiles in %s or %s"
+msgstr "perfil ICC de saída em %s ou %s"
+
+#: ../src/libs/export.c:753 ../src/libs/print_settings.c:1473
+msgid "style"
+msgstr "estilo"
+
+#: ../src/libs/export.c:756
+msgid "temporary style to use while exporting"
+msgstr "estilo temporário a ser usado ao exportar"
+
+#: ../src/libs/export.c:765 ../src/libs/print_settings.c:1518
+msgid "replace history"
+msgstr "colar história, eliminando a original"
+
+#: ../src/libs/export.c:766 ../src/libs/print_settings.c:1519
+msgid "append history"
+msgstr "adicionar história ao final"
+
+#: ../src/libs/export.c:771 ../src/libs/print_settings.c:1526
+msgid ""
+"whether the style items are appended to the history or replacing the history"
+msgstr ""
+"se os itens de estilo são adicionados ao final do histórico ou se substituem "
+"o histórico"
+
+#. Export button
+#: ../src/libs/export.c:794
+msgid "export"
+msgstr "exportar"
+
+#: ../src/libs/export.c:796
+msgid "export with current settings"
+msgstr "exporta com configuração atual (ctrl-e)"
+
+#: ../src/libs/export.c:802
+msgid "edit metadata exportation details"
+msgstr "editar detalhes de exportação de metadados"
+
+#. enable shortcut to export with current export settings:
+#: ../src/libs/export.c:1441 ../src/libs/styles.c:74
+#: ../src/views/darkroom.c:3634
+msgctxt "accel"
+msgid "export"
+msgstr "exporta"
+
+#: ../src/libs/export_metadata.c:159
+msgid "select tag"
+msgstr "seleciona etiqueta"
+
+#: ../src/libs/export_metadata.c:160
+msgid "done"
+msgstr "feito"
+
+#: ../src/libs/export_metadata.c:170
+msgid "list filter"
+msgstr "filtrar a lista"
+
+#: ../src/libs/export_metadata.c:181
+msgid ""
+"list of available tags. click 'add' button or double-click on tag to add the "
+"selected one"
+msgstr ""
+"lista de etiquetas disponíveis. clique 'adicionar' ou clique-duplo na "
+"etiqueta para adicionar a etiqueta selecionado"
+
+#: ../src/libs/export_metadata.c:187
+msgid "type"
+msgstr "tipo"
+
+#: ../src/libs/export_metadata.c:268
+msgid "edit metadata exportation"
+msgstr "modificar exportação de metadados"
+
+#: ../src/libs/export_metadata.c:269 ../src/libs/metadata.c:438
+#: ../src/libs/tagging.c:1489 ../src/libs/tagging.c:1614
+msgid "save"
+msgstr "salvar"
+
+#: ../src/libs/export_metadata.c:281
+msgid "general settings"
+msgstr "configurações gerais"
+
+#: ../src/libs/export_metadata.c:286
+msgid "exif data"
+msgstr "dados exif"
+
+#: ../src/libs/export_metadata.c:287
+msgid "export exif metadata"
+msgstr "exportar metadados exif"
+
+#: ../src/libs/export_metadata.c:289 ../src/libs/image.c:421
+#: ../src/libs/image.c:559 ../src/libs/metadata.c:443
+#: ../src/libs/metadata.c:630
+msgid "metadata"
+msgstr "metadados"
+
+#: ../src/libs/export_metadata.c:290
+msgid "export dt xmp metadata (from metadata editor module)"
+msgstr "exportar metadados dt xmp (do módulo editor de metadados)"
+
+#: ../src/libs/export_metadata.c:300
+msgid "only embedded"
+msgstr "só embarcado"
+
+#: ../src/libs/export_metadata.c:301
+msgid ""
+"per default the interface sends some (limited) metadata beside the image to "
+"remote storage.\n"
+"to avoid this and let only image embedded dt xmp metadata, check this flag.\n"
+"if remote storage doesn't understand dt xmp metadata, you can use calculated "
+"metadata instead"
+msgstr ""
+"por default, a interface envia alguns metadados (limitados) além da imagem "
+"para o armazenamento remoto.\n"
+"para evitar isto e deixar que somente os metadados incorporados na imagem "
+"sejam exportados, selecione esta opção.\n"
+"se o armazenamento remoto não entende metadados do darktable, você pode usar "
+"metadados calculados."
+
+#: ../src/libs/export_metadata.c:307 ../src/libs/image.c:552
+msgid "geo tags"
+msgstr "geolocalização"
+
+#: ../src/libs/export_metadata.c:308
+msgid "export geo tags"
+msgstr "exportar etiquetas de geolocalização"
+
+#: ../src/libs/export_metadata.c:311
+msgid "export tags (to Xmp.dc.Subject)"
+msgstr "exportar etiquetas (para Xmp.dc.Subject)"
+
+#: ../src/libs/export_metadata.c:318
+msgid "private tags"
+msgstr "etiquetas privadas"
+
+#: ../src/libs/export_metadata.c:319
+msgid "export private tags"
+msgstr "exportar etiquetas privadas"
+
+#: ../src/libs/export_metadata.c:321
+msgid "synonyms"
+msgstr "sinônimos"
+
+#: ../src/libs/export_metadata.c:322
+msgid "export tags synonyms"
+msgstr "exportar sinônimos de etiquetas"
+
+#: ../src/libs/export_metadata.c:324
+msgid "omit hierarchy"
+msgstr "omitir hierarquia"
+
+#: ../src/libs/export_metadata.c:325
+msgid ""
+"only the last part of the hierarchical tags is included. can be useful if "
+"categories are not used"
+msgstr ""
+"somente a última parte das etiquetas hierárquicas é incluída. pode ser útil "
+"se categorias não são usadas"
+
+#: ../src/libs/export_metadata.c:328
+msgid "hierarchical tags"
+msgstr "etiquetas hierárquicas"
+
+#: ../src/libs/export_metadata.c:329
+msgid "export hierarchical tags (to Xmp.lr.Hierarchical Subject)"
+msgstr "exportar etiquetas hierárquicas (para Xmp.lr.Hierarchical Subject)"
+
+#: ../src/libs/export_metadata.c:331
+msgid "develop history"
+msgstr "histórico de desenvolvimento"
+
+#: ../src/libs/export_metadata.c:332
+msgid ""
+"export dt development data (recovery purpose in case of loss of database or "
+"xmp file)"
+msgstr ""
+"exportar dados de desenvolvimento dt (para recuperação em caso de perda da "
+"base de dados ou arquivo xmp)"
+
+#: ../src/libs/export_metadata.c:339
+msgid "per metadata settings"
+msgstr "configurações por metadados"
+
+#: ../src/libs/export_metadata.c:350
+msgid "list of available tags"
+msgstr "lista de etiquetas disponíveis"
+
+#: ../src/libs/export_metadata.c:353
+msgid "redefined tag"
+msgstr "etiqueta redefinida"
+
+#: ../src/libs/export_metadata.c:358
+msgid "formula"
+msgstr "fórmula"
+
+#: ../src/libs/export_metadata.c:361
+msgid ""
+"list of calculated metadata\n"
+"if formula is empty, the corresponding metadata is removed from exported "
+"file,\n"
+"if formula is '=', the exif metadata is exported even if exif data are "
+"disabled\n"
+"otherwise the corresponding metadata is calculated and added to exported "
+"file\n"
+"click on formula cell to edit. recognized variables:\n"
+msgstr ""
+"lista de metadados calculados\n"
+"se a fórmula estiver vazia, o metadado correspondente é removido do arquivo "
+"exportado,\n"
+"se a fórmula é '=', o metadado exif é exportado mesmo que os dados exif "
+"estejam desabilitados\n"
+"senão o metadado correspondente é calculado e adicionado ao arquivo "
+"exportado\n"
+"clique na célula da fórmula para editar. variáveis reconhecidas:\n"
+
+#: ../src/libs/export_metadata.c:418
+msgid "add an output metadata tag"
+msgstr "adicionar uma etiqueta de metadados de saída"
+
+#: ../src/libs/export_metadata.c:423
+msgid "delete metadata tag"
+msgstr "excluir etiqueta de metadados"
+
+#: ../src/libs/geotagging.c:412
+msgid ""
+"enter the time shown on the selected picture\n"
+"format: hh:mm:ss"
+msgstr ""
+"introduza a hora mostrada na imagem selecionada\n"
+"formato: hh:mm:ss"
+
+#: ../src/libs/geotagging.c:421
+msgid "ok"
+msgstr "ok"
+
+#: ../src/libs/geotagging.c:474
+msgid "open GPX file"
+msgstr "abrir arquivo GPX"
+
+#: ../src/libs/geotagging.c:491
+msgid "GPS data exchange format"
+msgstr "formato de intercâmbio de dados GPS"
+
+#: ../src/libs/geotagging.c:501
+msgid "camera time zone"
+msgstr "fuso horário da câmera"
+
+#: ../src/libs/geotagging.c:502
+msgid ""
+"most cameras don't store the time zone in EXIF. give the correct time zone "
+"so the GPX data can be correctly matched"
+msgstr ""
+"a maioria das câmeras não armazena a fuso horário no EXIF. indique o fuso "
+"horário correto para que os dados GPX possam ser processados corretamente"
+
+#: ../src/libs/geotagging.c:793
+msgid ""
+"time offset\n"
+"format: [+-]?[[hh:]mm:]ss"
+msgstr ""
+"intervalo de tempo\n"
+"formato: [+-]?[[hh:]mm:]ss"
+
+#: ../src/libs/geotagging.c:803
+msgid "calculate the time offset from an image"
+msgstr "calcula o intervalo de tempo de uma imagem"
+
+#: ../src/libs/geotagging.c:808
+msgid "apply time offset to selected images"
+msgstr "aplica intervalo de tempo nas imagens selecionadas"
+
+#. gpx
+#: ../src/libs/geotagging.c:816
+msgid "apply GPX track file..."
+msgstr "aplica arquivo de trilha GPX..."
+
+#: ../src/libs/geotagging.c:817
+msgid "parses a GPX file and updates location of selected images"
+msgstr ""
+"analisa o arquivo GPX e atualiza a localização das imagens selecionadas"
+
+#: ../src/libs/histogram.c:72
+msgid "histogram"
+msgstr "histograma"
+
+#: ../src/libs/histogram.c:537 ../src/libs/histogram.c:571
+msgid "set mode to waveform"
+msgstr "mudar o modo para forma de onda"
+
+#: ../src/libs/histogram.c:540
+msgid "set mode to histogram"
+msgstr "mudar o modo para histograma"
+
+#: ../src/libs/histogram.c:555
+msgid "set mode to linear"
+msgstr "mudar o modo para linear"
+
+#: ../src/libs/histogram.c:558
+msgid "set mode to logarithmic"
+msgstr "mudar o modo para logarítmico"
+
+#: ../src/libs/histogram.c:568
+msgid "set mode to RGB parade"
+msgstr "mudar o modo para canais RGB separados"
+
+#: ../src/libs/histogram.c:584
+msgid "click to hide red channel"
+msgstr "clique para esconder o canal vermelho"
+
+#: ../src/libs/histogram.c:584
+msgid "click to show red channel"
+msgstr "clique para mostrar o canal vermelho"
+
+#: ../src/libs/histogram.c:589
+msgid "click to hide green channel"
+msgstr "clique para esconder o canal verde"
+
+#: ../src/libs/histogram.c:590
+msgid "click to show green channel"
+msgstr "clique para mostrar o canal verde"
+
+#: ../src/libs/histogram.c:595
+msgid "click to hide blue channel"
+msgstr "clique para esconder o canal azul"
+
+#: ../src/libs/histogram.c:595
+msgid "click to show blue channel"
+msgstr "clique para mostrar o canal azul"
+
+#: ../src/libs/histogram.c:601
+msgid ""
+"drag to change black point,\n"
+"doubleclick resets\n"
+"ctrl+scroll to change display height"
+msgstr ""
+"arraste para mudar ponto preto,\n"
+"clique duplo reinicializa\n"
+"ctrl+scroll muda altura do display"
+
+#. connect callbacks
+#: ../src/libs/histogram.c:606 ../src/libs/histogram.c:927
+msgid ""
+"drag to change exposure,\n"
+"doubleclick resets\n"
+"ctrl+scroll to change display height"
+msgstr ""
+"arraste para mudar exposição,\n"
+"clique duplo reinicializa\n"
+"ctrl+scroll muda altura do display"
+
+#: ../src/libs/histogram.c:963
+msgctxt "accel"
+msgid "histogram/hide histogram"
+msgstr "histograma/esconder histograma"
+
+#: ../src/libs/histogram.c:964
+msgctxt "accel"
+msgid "hide histogram"
+msgstr "esconder histograma"
+
+#: ../src/libs/histogram.c:965
+msgctxt "accel"
+msgid "histogram/cycle histogram modes"
+msgstr "histograma/alterna ciclicamente opções de histograma"
+
+#: ../src/libs/histogram.c:966
+msgctxt "accel"
+msgid "cycle histogram modes"
+msgstr "alterna ciclicamente opções de histograma"
+
+#: ../src/libs/histogram.c:967
+msgctxt "accel"
+msgid "histogram/switch histogram mode"
+msgstr "historgama/alterna modo histograma/forma de onda"
+
+#: ../src/libs/histogram.c:968
+msgctxt "accel"
+msgid "switch histogram mode"
+msgstr "alterna modo histograma/forma de onda"
+
+#: ../src/libs/histogram.c:969
+msgctxt "accel"
+msgid "histogram/switch histogram type"
+msgstr "histograma/alterna escala do histograma linear/logarítmica"
+
+#: ../src/libs/histogram.c:970
+msgctxt "accel"
+msgid "switch histogram type"
+msgstr "alterna escala do histograma linear/logarítmica"
+
+#: ../src/libs/history.c:95
+msgctxt "accel"
+msgid "create style from history"
+msgstr "criar estilo do histórico"
+
+#. dt_accel_register_lib(self, NC_("accel", "apply style from popup menu"), 0, 0);
+#: ../src/libs/history.c:97
+msgctxt "accel"
+msgid "compress history stack"
+msgstr "comprimir histórico de ações"
+
+#: ../src/libs/history.c:128
+msgid "compress history stack"
+msgstr "comprimir histórico de ações"
+
+#: ../src/libs/history.c:130
+msgid "create a minimal history stack which produces the same image"
+msgstr "criar o mínimo histórico que reproduz a mesma imagem"
+
+#: ../src/libs/history.c:138
+msgid "create a style from the current history stack"
+msgstr "criar estilo do histórico atual"
+
+#: ../src/libs/history.c:192
+msgid "always-on module"
+msgstr "módulo sempre-ligado"
+
+#: ../src/libs/history.c:200
+msgid "default enabled module"
+msgstr "módulo habilitado por default"
+
+#: ../src/libs/history.c:208
+msgid "deprecated module"
+msgstr "módulo descontinuado"
+
+#: ../src/libs/history.c:679 ../src/libs/snapshots.c:459
+msgid "original"
+msgstr "original"
+
+#: ../src/libs/image.c:72
+msgid "selected image[s]"
+msgstr "selecionar imagem[ns]"
+
+#: ../src/libs/image.c:167
+msgid "trash"
+msgstr "lixeira"
+
+#: ../src/libs/image.c:175
+msgid "send file to trash"
+msgstr "enviar o arquivo para a lixeira"
+
+#: ../src/libs/image.c:177
+msgid "physically delete from disk"
+msgstr "excluir fisicamente do disco"
+
+#. delete
+#: ../src/libs/image.c:432 ../src/libs/styles.c:615
+msgid "remove"
+msgstr "remover"
+
+#: ../src/libs/image.c:435
+msgid "remove from the collection"
+msgstr "remover da coleção"
+
+#: ../src/libs/image.c:446
+msgid "move..."
+msgstr "mover..."
+
+#: ../src/libs/image.c:449
+msgid "move to other folder"
+msgstr "mover para outra pasta"
+
+#: ../src/libs/image.c:456
+msgid "copy to other folder"
+msgstr "copiar para outra pasta"
+
+#: ../src/libs/image.c:460
+msgid "create HDR"
+msgstr "criar HDR"
+
+#: ../src/libs/image.c:465
+msgid "create a high dynamic range image from selected shots"
+msgstr "criar imagem de grande alcance dinâmico dos disparos selecionados"
+
+#: ../src/libs/image.c:467
+msgid "duplicate"
+msgstr "duplicar"
+
+#: ../src/libs/image.c:470
+msgid "add a duplicate to the collection, including its history stack"
+msgstr "adicionar uma duplicata a coleção, incluindo seu histórico"
+
+#: ../src/libs/image.c:478
+msgid "rotate selected images 90 degrees CCW"
+msgstr "girar seleção 90 graus sentido anti-horário"
+
+#: ../src/libs/image.c:485
+msgid "rotate selected images 90 degrees CW"
+msgstr "girar seleção 90 graus sentido horário"
+
+#: ../src/libs/image.c:489
+msgid "reset rotation"
+msgstr "restabelecer rotação"
+
+#: ../src/libs/image.c:492
+msgid "reset rotation to EXIF data"
+msgstr "restabelecer rotação conforme dados EXIF"
+
+#: ../src/libs/image.c:497
+msgid "copy locally"
+msgstr "copia local"
+
+#: ../src/libs/image.c:500
+msgid "copy the image locally"
+msgstr "copia a imagem localmente"
+
+#: ../src/libs/image.c:504
+msgid "resync local copy"
+msgstr "atualiza cópia local"
+
+#: ../src/libs/image.c:507
+msgid "synchronize the image's XMP and remove the local copy"
+msgstr "sincroniza o XMP da imagem e remove a cópia local"
+
+#: ../src/libs/image.c:512 ../src/libs/tools/filter.c:92
+msgid "group"
+msgstr "agrupar"
+
+#: ../src/libs/image.c:515
+msgid "add selected images to expanded group or create a new one"
+msgstr "adiciona imagens selecionadas ao grupo expandido ou criar um novo"
+
+#: ../src/libs/image.c:519
+msgid "ungroup"
+msgstr "desagrupar"
+
+#: ../src/libs/image.c:522
+msgid "remove selected images from the group"
+msgstr "remover imagens selecionadas do grupo"
+
+#: ../src/libs/image.c:531 ../src/libs/tools/ratings.c:55
+msgid "ratings"
+msgstr "classificações"
+
+#: ../src/libs/image.c:533
+msgid "select ratings metadata"
+msgstr "selecione metadados de classificação"
+
+#: ../src/libs/image.c:538
+msgid "colors"
+msgstr "cores"
+
+#: ../src/libs/image.c:540
+msgid "select colors metadata"
+msgstr "selecione metadados de cores"
+
+#: ../src/libs/image.c:547
+msgid "select tags metadata"
+msgstr "seleciona metadados das etiquetas"
+
+#: ../src/libs/image.c:554
+msgid "select geo tags metadata"
+msgstr "seoecionar metadados de etiquetas de geolocalização"
+
+#: ../src/libs/image.c:561
+msgid "select dt metadata (from metadata editor module)"
+msgstr "selecionar metadados dt (do módulo editor de metadados)"
+
+#: ../src/libs/image.c:570
+msgid "set the (first) selected image as source of metadata"
+msgstr "determinar a (primeira) imagem selecionada como fonte de metadados"
+
+#: ../src/libs/image.c:574
+msgid "paste"
+msgstr "cola"
+
+#: ../src/libs/image.c:577
+msgid "paste selected metadata on selected images"
+msgstr "escrever metadados para imagens selecionadas"
+
+#: ../src/libs/image.c:581 ../src/libs/metadata.c:741
+msgid "clear"
+msgstr "remover"
+
+#: ../src/libs/image.c:584
+msgid "clear selected metadata on selected images"
+msgstr "limpar metadados selecionados para imagens selecionadas"
+
+#: ../src/libs/image.c:590
+msgid "merge"
+msgstr "mesclar"
+
+#: ../src/libs/image.c:592
+msgid "how to handle existing metadata"
+msgstr "como gerenciar metadados existentes"
+
+#: ../src/libs/image.c:600
+msgid "update image information to match changes to file"
+msgstr ""
+"atualizar informações da imagem para corresponder às mudanças no arquivo"
+
+#: ../src/libs/image.c:646
+msgctxt "accel"
+msgid "remove from collection"
+msgstr "remover da coleção"
+
+#: ../src/libs/image.c:647
+msgctxt "accel"
+msgid "delete from disk or send to trash"
+msgstr "excluir do disco ou enviar para a lixeira"
+
+#: ../src/libs/image.c:648
+msgctxt "accel"
+msgid "move to other folder"
+msgstr "mover para outra pasta"
+
+#: ../src/libs/image.c:649
+msgctxt "accel"
+msgid "copy to other folder"
+msgstr "copiar para outra pasta"
+
+#: ../src/libs/image.c:650
+msgctxt "accel"
+msgid "rotate selected images 90 degrees CW"
+msgstr "girar seleção 90 graus no sentido horário"
+
+#: ../src/libs/image.c:651
+msgctxt "accel"
+msgid "rotate selected images 90 degrees CCW"
+msgstr "girar seleção 90 graus no sentido anti-horário"
+
+#: ../src/libs/image.c:652
+msgctxt "accel"
+msgid "create HDR"
+msgstr "criar HDR"
+
+#: ../src/libs/image.c:653
+msgctxt "accel"
+msgid "duplicate"
+msgstr "duplicar"
+
+#: ../src/libs/image.c:654
+msgctxt "accel"
+msgid "reset rotation"
+msgstr "restabelece rotação"
+
+#: ../src/libs/image.c:655
+msgctxt "accel"
+msgid "copy the image locally"
+msgstr "copia a imagem localmente"
+
+#: ../src/libs/image.c:656
+msgctxt "accel"
+msgid "resync the local copy"
+msgstr "atualiza cópia local"
+
+#: ../src/libs/image.c:657
+msgctxt "accel"
+msgid "refresh exif"
+msgstr "atualizar exif"
+
+#: ../src/libs/image.c:658
+msgctxt "accel"
+msgid "copy metadata"
+msgstr "copiar metadados"
+
+#: ../src/libs/image.c:659
+msgctxt "accel"
+msgid "replace metadata"
+msgstr "substituir metadados"
+
+#: ../src/libs/image.c:660
+msgctxt "accel"
+msgid "paste metadata"
+msgstr "colar metadados"
+
+#: ../src/libs/image.c:661
+msgctxt "accel"
+msgid "clear metadata"
+msgstr "limpar metadados"
+
+#. Grouping keys
+#: ../src/libs/image.c:663
+msgctxt "accel"
+msgid "group"
+msgstr "agrupa"
+
+#: ../src/libs/image.c:664
+msgctxt "accel"
+msgid "ungroup"
+msgstr "desagrupa"
+
+#: ../src/libs/import.c:112
+msgctxt "accel"
+msgid "scan for devices"
+msgstr "procurar por dispositivos"
+
+#: ../src/libs/import.c:113
+msgctxt "accel"
+msgid "import from camera"
+msgstr "importar da câmera"
+
+#: ../src/libs/import.c:114
+msgctxt "accel"
+msgid "tethered shoot"
+msgstr "disparo remoto"
+
+#: ../src/libs/import.c:115
+msgctxt "accel"
+msgid "import image"
+msgstr "importar imagem"
+
+#: ../src/libs/import.c:116
+msgctxt "accel"
+msgid "import folder"
+msgstr "importar pasta"
+
+#: ../src/libs/import.c:211
+#, c-format
+msgid "device \"%s\" connected on port \"%s\"."
+msgstr "dispositivo \"%s\" conectado na porta \"%s\"."
+
+#: ../src/libs/import.c:221
+msgid "import from camera"
+msgstr "importar da câmera"
+
+#: ../src/libs/import.c:227
+msgid "tethered shoot"
+msgstr "disparo remoto"
+
+#. No supported devices is detected lets notice user..
+#: ../src/libs/import.c:252
+msgid "no supported devices found"
+msgstr "nenhum dispositivo suportado encontrado"
+
+#. add extra lines to 'extra'. don't forget to destroy the widgets later.
+#: ../src/libs/import.c:365
+msgid "import options"
+msgstr "opções de importação"
+
+#. recursive opening.
+#: ../src/libs/import.c:382
+msgid "import folders recursively"
+msgstr "importar pastas recursivamente"
+
+#: ../src/libs/import.c:384
+msgid "recursively import subfolders. Each folder goes into a new film roll."
+msgstr ""
+"importar subdiretórios recursivamente. cada diretório criará um novo rolo de "
+"filme."
+
+#: ../src/libs/import.c:581
+msgid "supported images"
+msgstr "imagens suportadas"
+
+#: ../src/libs/import.c:637
+msgid "file has unknown format!"
+msgstr "arquivo tem formato desconhecido!"
+
+#: ../src/libs/import.c:661
+msgid "import folder"
+msgstr "importar pasta"
+
+#. add import single image buttons
+#: ../src/libs/import.c:776
+msgid "image..."
+msgstr "imagem..."
+
+#: ../src/libs/import.c:780
+msgid "select one or more images to import"
+msgstr "selecione uma ou mais imagens para impotar"
+
+#. adding the import folder button
+#: ../src/libs/import.c:787
+msgid "folder..."
+msgstr "pasta..."
+
+#: ../src/libs/import.c:791
+msgid "select a folder to import as film roll"
+msgstr "selecione uma pasta para importar como rolo de filme"
+
+#. add the rescan button
+#: ../src/libs/import.c:800
+msgid "scan for devices"
+msgstr "procurar por dispositivos"
+
+#: ../src/libs/import.c:804
+msgid "scan for newly attached devices"
+msgstr "procurar dispositivos recentemente conectados"
+
+#: ../src/libs/ioporder.c:149
+msgid "current order"
+msgstr "ordem atual"
+
+#: ../src/libs/ioporder.c:206
+msgid "v3.0 (default)"
+msgstr "v3.0 (padrão)"
+
+#: ../src/libs/lib.c:225
+#, c-format
+msgid "edit `%s'"
+msgstr "editar `%s'"
+
+#: ../src/libs/lib.c:530
+msgid "nothing to save"
+msgstr "nada a gravar"
+
+#: ../src/libs/live_view.c:138
+msgid "live view"
+msgstr "exibição ao vivo"
+
+#: ../src/libs/live_view.c:164
+msgctxt "accel"
+msgid "toggle live view"
+msgstr "alternar exibição ao vivo"
+
+#: ../src/libs/live_view.c:165
+msgctxt "accel"
+msgid "zoom live view"
+msgstr "exibição zoom ao vivo"
+
+#: ../src/libs/live_view.c:168
+msgctxt "accel"
+msgid "flip horizontally"
+msgstr "girar horizontalmente"
+
+#: ../src/libs/live_view.c:169
+msgctxt "accel"
+msgid "move focus point in (big steps)"
+msgstr "mover ponto de foco para dentro (passos grandes)"
+
+#: ../src/libs/live_view.c:170
+msgctxt "accel"
+msgid "move focus point in (small steps)"
+msgstr "mover ponto de foco para dentro (passos pequenos)"
+
+#: ../src/libs/live_view.c:171
+msgctxt "accel"
+msgid "move focus point out (small steps)"
+msgstr "mover ponto de foco para fora (passos grandes)"
+
+#: ../src/libs/live_view.c:172
+msgctxt "accel"
+msgid "move focus point out (big steps)"
+msgstr "mover ponto de foco para fora (passos pequenos)"
+
+#: ../src/libs/live_view.c:291
+msgid "toggle live view"
+msgstr "alternar exibição ao vivo"
+
+#: ../src/libs/live_view.c:292
+msgid "zoom live view"
+msgstr "zoom exibição ao vivo"
+
+#: ../src/libs/live_view.c:293
+msgid "rotate 90 degrees ccw"
+msgstr "girar imagens selecionadas 90 graus sentido anti-horário"
+
+#: ../src/libs/live_view.c:294
+msgid "rotate 90 degrees cw"
+msgstr "girar imagens selecionadas 90 graus sentido horário"
+
+#: ../src/libs/live_view.c:295
+msgid "flip live view horizontally"
+msgstr "girar exibição ao vivo horizontalmente"
+
+#: ../src/libs/live_view.c:321
+msgid "move focus point in (big steps)"
+msgstr "mover ponto de foco para dentro (passos grandes)"
+
+#: ../src/libs/live_view.c:322
+msgid "move focus point in (small steps)"
+msgstr "mover ponto de foco para dentro (passos pequenos)"
+
+#: ../src/libs/live_view.c:323
+msgid "move focus point out (small steps)"
+msgstr "mover ponto de foco para fora (passos grandes)"
+
+#: ../src/libs/live_view.c:324
+msgid "move focus point out (big steps)"
+msgstr "mover ponto de foco para fora (passos pequenos)"
+
+#: ../src/libs/live_view.c:381
+msgid "overlay"
+msgstr "sobrepõe"
+
+#: ../src/libs/live_view.c:383
+msgid "selected image"
+msgstr "imagem selecionada"
+
+#: ../src/libs/live_view.c:384 ../src/libs/tools/filter.c:90
+msgid "id"
+msgstr "id"
+
+#: ../src/libs/live_view.c:385
+msgid "overlay another image over the live view"
+msgstr "sobrepor outra imagem sobre a exibição ao vivo"
+
+#: ../src/libs/live_view.c:390 ../src/libs/metadata_view.c:103
+msgid "image id"
+msgstr "imagem id"
+
+#: ../src/libs/live_view.c:394
+msgid "enter image id of the overlay manually"
+msgstr "introduza o id da imagem para sobrepor manualmente"
+
+#: ../src/libs/live_view.c:405
+msgid "overlay mode"
+msgstr "modo de sobreposição"
+
+#: ../src/libs/live_view.c:407
+msgctxt "blendmode"
+msgid "xor"
+msgstr "xor"
+
+#: ../src/libs/live_view.c:408
+msgctxt "blendmode"
+msgid "add"
+msgstr "adicionar"
+
+#: ../src/libs/live_view.c:409
+msgctxt "blendmode"
+msgid "saturate"
+msgstr "saturação"
+
+#: ../src/libs/live_view.c:416
+msgctxt "blendmode"
+msgid "color dodge"
+msgstr "subexposição de cor"
+
+#: ../src/libs/live_view.c:417
+msgctxt "blendmode"
+msgid "color burn"
+msgstr "superexposição de cor"
+
+#: ../src/libs/live_view.c:418
+msgctxt "blendmode"
+msgid "hard light"
+msgstr "luz forte"
+
+#: ../src/libs/live_view.c:419
+msgctxt "blendmode"
+msgid "soft light"
+msgstr "luz suave"
+
+#: ../src/libs/live_view.c:421
+msgctxt "blendmode"
+msgid "exclusion"
+msgstr "exclusão"
+
+#: ../src/libs/live_view.c:422
+msgctxt "blendmode"
+msgid "HSL hue"
+msgstr "matiz HSL"
+
+#: ../src/libs/live_view.c:423
+msgctxt "blendmode"
+msgid "HSL saturation"
+msgstr "saturação HSL"
+
+#: ../src/libs/live_view.c:424
+msgctxt "blendmode"
+msgid "HSL color"
+msgstr "cor HSL"
+
+#: ../src/libs/live_view.c:425
+msgctxt "blendmode"
+msgid "HSL luminosity"
+msgstr "luminosidade HSL"
+
+#: ../src/libs/live_view.c:427
+msgid "mode of the overlay"
+msgstr "modo da sobreposição"
+
+#: ../src/libs/live_view.c:433
+msgid "split line"
+msgstr "divide linha"
+
+#: ../src/libs/live_view.c:436
+msgid "only draw part of the overlay"
+msgstr "desenha apenas parte da sobreposição"
+
+#: ../src/libs/location.c:97
+msgid "find location"
+msgstr "encontra localização"
+
+#: ../src/libs/map_settings.c:37
+msgid "map settings"
+msgstr "configurações do mapa"
+
+#: ../src/libs/map_settings.c:94
+msgid "show OSD"
+msgstr "mostra OSD"
+
+#: ../src/libs/map_settings.c:95
+msgid "toggle the visibility of the map overlays"
+msgstr "alterna a visibilidade das sobreposições do mapa"
+
+#: ../src/libs/map_settings.c:103
+msgid "map source"
+msgstr "origem do mapa"
+
+#: ../src/libs/map_settings.c:109
+msgid "select the source of the map. some entries might not work"
+msgstr "selecionar a origem do mapa. algumas entradas podem não funcionar"
+
+#: ../src/libs/masks.c:246
+#, c-format
+msgid "group #%d"
+msgstr "grupo #%d"
+
+#: ../src/libs/masks.c:997 ../src/libs/masks.c:1037 ../src/libs/masks.c:1678
+msgid "add circle"
+msgstr "adicionar círculo"
+
+#: ../src/libs/masks.c:1001 ../src/libs/masks.c:1041 ../src/libs/masks.c:1671
+msgid "add ellipse"
+msgstr "adiciona ellipse"
+
+#: ../src/libs/masks.c:1005 ../src/libs/masks.c:1045 ../src/libs/masks.c:1664
+msgid "add path"
+msgstr "adiciona caminho"
+
+#: ../src/libs/masks.c:1009 ../src/libs/masks.c:1049 ../src/libs/masks.c:1658
+msgid "add gradient"
+msgstr "addiciona gradiente"
+
+#: ../src/libs/masks.c:1033 ../src/libs/masks.c:1684
+msgid "add brush"
+msgstr "adiciona pincel"
+
+#: ../src/libs/masks.c:1123
+msgid "duplicate this shape"
+msgstr "duplicar esta forma"
+
+#: ../src/libs/masks.c:1127
+msgid "delete this shape"
+msgstr "exclui esta forma"
+
+#: ../src/libs/masks.c:1133
+msgid "remove from group"
+msgstr "remover do grupo"
+
+#: ../src/libs/masks.c:1141
+msgid "group the forms"
+msgstr "agrupar as formas"
+
+#: ../src/libs/masks.c:1150
+msgid "use inverted shape"
+msgstr "usar forma invertida"
+
+#: ../src/libs/masks.c:1156
+msgid "mode : union"
+msgstr "modo : união"
+
+#: ../src/libs/masks.c:1159
+msgid "mode : intersection"
+msgstr "modo : intersecção"
+
+#: ../src/libs/masks.c:1162
+msgid "mode : difference"
+msgstr "modo : diferença"
+
+#: ../src/libs/masks.c:1165
+msgid "mode : exclusion"
+msgstr "modo : exclusão"
+
+#: ../src/libs/masks.c:1179
+msgid "cleanup unused shapes"
+msgstr "limpar formas não usadas"
+
+#: ../src/libs/masks.c:1651
+msgid "created shapes"
+msgstr "formas criadas"
+
+#: ../src/libs/metadata.c:57
+msgid "metadata editor"
+msgstr "editor de metadados"
+
+#: ../src/libs/metadata.c:73 ../src/libs/metadata.c:109
+msgid "<leave unchanged>"
+msgstr "<deixar sem modificações>"
+
+#: ../src/libs/metadata.c:437
+msgid "metadata settings"
+msgstr "configurações de metadados"
+
+#: ../src/libs/metadata.c:445
+msgid "hidden"
+msgstr "oculto"
+
+#: ../src/libs/metadata.c:448
+msgid ""
+"tick if the corresponding metadata is of no interest for you\n"
+"it will be hidden from metadata editor, collection, image information and "
+"import module\n"
+"neither will it be exported"
+msgstr ""
+"escolha se o metadado correspondente não é de interesse para você\n"
+"ele será escondido do editor de metadados, coleção, informação da imagem e\n"
+"módulo de importação\n"
+"também não será exportado"
+
+#: ../src/libs/metadata.c:451 ../src/libs/tagging.c:1519
+#: ../src/libs/tagging.c:1658
+msgid "private"
+msgstr "privado"
+
+#: ../src/libs/metadata.c:454
+msgid ""
+"tick if you want to keep this information private (not exported with images)"
+msgstr ""
+"escolha se quiser manter esta informação privada (não exportada com a imagem)"
+
+#: ../src/libs/metadata.c:528
+msgctxt "accel"
+msgid "clear"
+msgstr "remover"
+
+#: ../src/libs/metadata.c:592
+msgid "metadata list"
+msgstr "lista de metadados"
+
+#: ../src/libs/metadata.c:693
+msgid ""
+"metadata text. ctrl-wheel scroll to resize the text box\n"
+" ctrl-enter inserts a new line (caution, may not be compatible with standard "
+"metadata).\n"
+"if <leave unchanged> selected images have different metadata.\n"
+"in that case, right-click gives the possibility to choose one of them.\n"
+"press escape to exit the popup window"
+msgstr ""
+"texto de metadado. ctrl-rolar para mudar o tamanho da caixa de texto\n"
+" ctrl-enter insere nova linha (cuidado, pode não ser compatível com "
+"metadados padrão.)\n"
+"se <deixar sem modificações> imagens selecionadas tem diferentes metadados.\n"
+"neste caso, clique-direito dá possibilidade de escolher qual.\n"
+"pressione esc para sair da janela pop-up"
+
+#: ../src/libs/metadata.c:743
+msgid "remove metadata from selected images"
+msgstr "remover metadados para imagens selecionadas"
+
+#: ../src/libs/metadata.c:750
+msgid "write metadata for selected images"
+msgstr "escrever metadados para imagens selecionadas"
+
+#: ../src/libs/metadata.c:758
+msgid "configure metadata"
+msgstr "configurar metadados"
+
+#. <title>\0<description>\0<rights>\0<creator>\0<publisher>
+#: ../src/libs/metadata.c:812
+msgid "CC BY"
+msgstr "CC BY"
+
+#: ../src/libs/metadata.c:812
+msgid "Creative Commons Attribution (CC BY)"
+msgstr "Creative Commons Attribution (CC-BY)"
+
+#: ../src/libs/metadata.c:813
+msgid "CC BY-SA"
+msgstr "CC BY-SA"
+
+#: ../src/libs/metadata.c:813
+msgid "Creative Commons Attribution-ShareAlike (CC BY-SA)"
+msgstr "Creative Commons Attribution-ShareAlike (CC-BY-SA)"
+
+#: ../src/libs/metadata.c:814
+msgid "CC BY-ND"
+msgstr "CC BY-ND"
+
+#: ../src/libs/metadata.c:814
+msgid "Creative Commons Attribution-NoDerivs (CC BY-ND)"
+msgstr "Creative Commons Attribution-NoDerivs (CC-BY-ND)"
+
+#: ../src/libs/metadata.c:815
+msgid "CC BY-NC"
+msgstr "CC BY-NC"
+
+#: ../src/libs/metadata.c:815
+msgid "Creative Commons Attribution-NonCommercial (CC BY-NC)"
+msgstr "Creative Commons Attribution-NonCommercial (CC-BY-NC)"
+
+#: ../src/libs/metadata.c:816
+msgid "CC BY-NC-SA"
+msgstr "CC BY-NC-SA"
+
+#: ../src/libs/metadata.c:817
+msgid "Creative Commons Attribution-NonCommercial-ShareAlike (CC BY-NC-SA)"
+msgstr "Creative Commons Attribution-NonCommercial-ShareAlike (CC-BY-NC-SA)"
+
+#: ../src/libs/metadata.c:818
+msgid "CC BY-NC-ND"
+msgstr "CC BY-NC-ND"
+
+#: ../src/libs/metadata.c:819
+msgid "Creative Commons Attribution-NonCommercial-NoDerivs (CC BY-NC-ND)"
+msgstr "Creative Commons Attribution-NonCommercial-NoDerivs (CC-BY-NC-ND)"
+
+#: ../src/libs/metadata.c:820
+msgid "all rights reserved"
+msgstr "todos direitos reservados"
+
+#: ../src/libs/metadata.c:820
+msgid "all rights reserved."
+msgstr "todos direitos reservados."
+
+#. internal
+#: ../src/libs/metadata_view.c:102
+msgid "filmroll"
+msgstr "rolo de filme"
+
+#: ../src/libs/metadata_view.c:104
+msgid "group id"
+msgstr "identificação de grupo"
+
+#: ../src/libs/metadata_view.c:106
+msgid "version"
+msgstr "versão"
+
+#: ../src/libs/metadata_view.c:107 ../src/libs/tools/filter.c:93
+msgid "full path"
+msgstr "caminho completo"
+
+#: ../src/libs/metadata_view.c:114
+msgid "flags"
+msgstr "flags"
+
+#: ../src/libs/metadata_view.c:125
+msgid "focus distance"
+msgstr "distância de foco"
+
+#: ../src/libs/metadata_view.c:127
+msgid "datetime"
+msgstr "data/hora"
+
+#: ../src/libs/metadata_view.c:129 ../src/libs/print_settings.c:1314
+msgid "height"
+msgstr "altura"
+
+#: ../src/libs/metadata_view.c:131
+msgid "export width"
+msgstr "exportar largura"
+
+#: ../src/libs/metadata_view.c:132
+msgid "export height"
+msgstr "exportar altura"
+
+#: ../src/libs/metadata_view.c:144
+msgid "longitude"
+msgstr "longitude"
+
+#: ../src/libs/metadata_view.c:145
+msgid "elevation"
+msgstr "elevação"
+
+#: ../src/libs/metadata_view.c:149
+msgid "categories"
+msgstr "categorias"
+
+#: ../src/libs/metadata_view.c:163
+msgid "image information"
+msgstr "informação da imagem"
+
+#: ../src/libs/metadata_view.c:271
+#, c-format
+msgid ""
+"double click to jump to film roll\n"
+"%s"
+msgstr ""
+"clique duplo para pular para rolo de filme\n"
+"%s"
+
+#: ../src/libs/metadata_view.c:339
+msgid "unused"
+msgstr "não utilizado"
+
+#: ../src/libs/metadata_view.c:340
+msgid "unused/deprecated"
+msgstr "não utilizado/obsoleto"
+
+#: ../src/libs/metadata_view.c:341
+msgid "ldr"
+msgstr "ldr"
+
+#: ../src/libs/metadata_view.c:343
+msgid "hdr"
+msgstr "hdr"
+
+#: ../src/libs/metadata_view.c:344
+msgid "marked for deletion"
+msgstr "marcado para remoção"
+
+#: ../src/libs/metadata_view.c:345
+msgid "auto-applying presets applied"
+msgstr "predefinições automáticas aplicadas"
+
+#: ../src/libs/metadata_view.c:346
+msgid "legacy flag. set for all new images"
+msgstr "flag de legado. selecione para todas as novas imagens"
+
+#: ../src/libs/metadata_view.c:348
+msgid "has .txt"
+msgstr "possui .txt"
+
+#: ../src/libs/metadata_view.c:349
+msgid "has .wav"
+msgstr "possui .wav"
+
+#: ../src/libs/metadata_view.c:361
+msgid "image rejected"
+msgstr "imagem rejeitada"
+
+#: ../src/libs/metadata_view.c:366
+#, c-format
+msgid "image has %d star"
+msgid_plural "image has %d stars"
+msgstr[0] "a imagem tem %d estrela"
+msgstr[1] "a imagem tem %d estrelas"
+
+#: ../src/libs/metadata_view.c:446 ../src/libs/snapshots.c:467
+msgid "unknown"
+msgstr "desconhecido"
+
+#: ../src/libs/metadata_view.c:447
+msgid "tiff"
+msgstr "tiff"
+
+#: ../src/libs/metadata_view.c:448
+msgid "png"
+msgstr "png"
+
+#: ../src/libs/metadata_view.c:449
+msgid "j2k"
+msgstr "j2k"
+
+#: ../src/libs/metadata_view.c:450
+msgid "jpeg"
+msgstr "jpeg"
+
+#: ../src/libs/metadata_view.c:451
+msgid "exr"
+msgstr "exr"
+
+#: ../src/libs/metadata_view.c:452
+msgid "rgbe"
+msgstr "rgbe"
+
+#: ../src/libs/metadata_view.c:453
+msgid "pfm"
+msgstr "pfm"
+
+#: ../src/libs/metadata_view.c:454
+msgid "GraphicsMagick"
+msgstr "GraphicsMagick"
+
+#: ../src/libs/metadata_view.c:455
+msgid "rawspeed"
+msgstr "rawspeed"
+
+#: ../src/libs/metadata_view.c:456
+msgid "netpnm"
+msgstr "netpnm"
+
+#: ../src/libs/metadata_view.c:457
+msgid "avif"
+msgstr "avif"
+
+#: ../src/libs/metadata_view.c:462
+#, c-format
+msgid "loader: %s"
+msgstr "carregador: %s"
+
+#: ../src/libs/metadata_view.c:779
+msgctxt "accel"
+msgid "jump to film roll"
+msgstr "pula para rolo de filme"
+
+#: ../src/libs/modulegroups.c:88
+msgid "modulegroups"
+msgstr "grupos de módulos"
+
+#: ../src/libs/modulegroups.c:215
+msgid "show only active modules"
+msgstr "mostrar apenas módulos ativos"
+
+#: ../src/libs/modulegroups.c:222
+msgid "show only your favourite modules (selected in `more modules' below)"
+msgstr ""
+"mostrar apenas seus módulos favoritos (selecionados em `mais módulos' logo "
+"abaixo)"
+
+#: ../src/libs/modulegroups.c:228
+msgid "basic group"
+msgstr "grupo básico"
+
+#: ../src/libs/modulegroups.c:234
+msgid "tone group"
+msgstr "grupo de tom"
+
+#: ../src/libs/modulegroups.c:240
+msgid "color group"
+msgstr "grupo de cor"
+
+#: ../src/libs/modulegroups.c:246
+msgid "correction group"
+msgstr "grupo de correção"
+
+#: ../src/libs/modulegroups.c:252
+msgid "effects group"
+msgstr "grupo de efeitos"
+
+#. search box
+#: ../src/libs/modulegroups.c:264
+msgid "search module"
+msgstr "buscar módulo"
+
+#: ../src/libs/modulegroups.c:270
+msgid "search modules by name or tag"
+msgstr "procurar módulos por nome ou etiqueta"
+
+#: ../src/libs/modulegroups.c:278
+msgid "clear text"
+msgstr "limpar texto"
+
+#: ../src/libs/modulelist.c:60
+msgid "more modules"
+msgstr "outros módulos"
+
+#: ../src/libs/modulelist.c:387
+msgid "subset: no module"
+msgstr "subconjunto: nenhum módulo"
+
+#: ../src/libs/modulelist.c:388
+msgid "subset: all modules"
+msgstr "subconjunto: todos os módulos"
+
+#. basic raw handling
+#. cropping & orientation
+#. correct image issues
+#. tones
+#. colors
+#. local contrast / sharpness
+#: ../src/libs/modulelist.c:403
+msgid "subset: default modules"
+msgstr "subconjunto: módulos padrão"
+
+#. default modules
+#. basic raw handling
+#. cropping & orientation
+#. correct image issues
+#. tones
+#. colors
+#. local contrast
+#. all-purpose addings
+#. tones
+#. colors
+#. sharpness
+#. image reconstruction
+#: ../src/libs/modulelist.c:419
+msgid "workspace: all-purpose"
+msgstr "área de trabalho: geral"
+
+#. default modules
+#. basic raw handling
+#. cropping & orientation
+#. correct image issues
+#. tones
+#. colors
+#. local contrast
+#. all-purpose addings
+#. tones
+#. colors
+#. sharpness
+#. image reconstruction
+#. workspace addings
+#. colors
+#. HDR reconstruction - tones
+#: ../src/libs/modulelist.c:438
+msgid "workspace: landscape & HDR"
+msgstr "área de trabalho: paisagem & HDR"
+
+#. default modules
+#. basic raw handling
+#. cropping & orientation
+#. correct image issues
+#. tones
+#. colors
+#. local contrast
+#. all-purpose addings
+#. tones
+#. colors
+#. sharpness
+#. image reconstruction
+#. workspace addings
+#. perspective and spot removal
+#: ../src/libs/modulelist.c:457
+msgid "workspace: architecture & streets"
+msgstr "área de trabalho: arquitetura & ruas"
+
+#. default modules
+#. basic raw handling
+#. cropping & orientation
+#. correct image issues
+#. tones
+#. colors
+#. local contrast
+#. all-purpose addings
+#. tones
+#. colors
+#. sharpness
+#. image reconstruction
+#. workspace addings
+#. colors
+#. skin retouch
+#: ../src/libs/modulelist.c:477
+msgid "workspace: portrait & beauty"
+msgstr "área de trabalho: retrato & beleza"
+
+#. default modules
+#. basic raw handling
+#. cropping & orientation
+#. correct image issues
+#. tones
+#. colors
+#. local contrast
+#. all-purpose addings
+#. tones
+#. colors
+#. sharpness
+#. image reconstruction
+#. workspace addings
+#. extra denoising methods
+#: ../src/libs/modulelist.c:496
+msgid "workspace: lowlight & high ISO"
+msgstr "área de trabalho: luz baixa & ISO alto"
+
+#: ../src/libs/modulelist.c:504
+msgid "subset: creative modules only"
+msgstr "subconjunto: módulos criativos apenas"
+
+#: ../src/libs/modulelist.c:514
+msgid "subset: technical modules only"
+msgstr "subconjunto: módulos técnicos apenas"
+
+#: ../src/libs/navigation.c:62
+msgid "navigation"
+msgstr "navegação"
+
+#: ../src/libs/navigation.c:503
+msgid "small"
+msgstr "pequeno"
+
+#: ../src/libs/navigation.c:507
+msgid "fit to screen"
+msgstr "ajustar à tela"
+
+#: ../src/libs/navigation.c:511
+msgid "50%"
+msgstr "50%"
+
+#: ../src/libs/navigation.c:515
+msgid "100%"
+msgstr "100%"
+
+#: ../src/libs/navigation.c:519
+msgid "200%"
+msgstr "200%"
+
+#: ../src/libs/navigation.c:523
+msgid "400%"
+msgstr "400%"
+
+#: ../src/libs/navigation.c:527
+msgid "800%"
+msgstr "800%"
+
+#: ../src/libs/navigation.c:531
+msgid "1600%"
+msgstr "1600%"
+
+#: ../src/libs/navigation.c:568
+msgctxt "accel"
+msgid "hide navigation thumbnail"
+msgstr "esconde miniatura de navegação"
+
+#. //////////////////////// PRINT SETTINGS
+#: ../src/libs/print_settings.c:44 ../src/libs/print_settings.c:1402
+msgid "print settings"
+msgstr "configurações de impressão"
+
+#. FIXME: ellipsize title/printer as the export completed message is ellipsized
+#: ../src/libs/print_settings.c:238 ../src/libs/print_settings.c:443
+#, c-format
+msgid "processing `%s' for `%s'"
+msgstr "processando `%s' para `%s'"
+
+#: ../src/libs/print_settings.c:281
+#, c-format
+msgid "cannot open printer profile `%s'"
+msgstr "não foi possível abrir o perfil de impressora `%s'!"
+
+#: ../src/libs/print_settings.c:290
+#, c-format
+msgid "error getting output profile for image %d"
+msgstr "erro ao obter perfil de saída para imagem %d"
+
+#: ../src/libs/print_settings.c:298
+#, c-format
+msgid "cannot apply printer profile `%s'"
+msgstr "não foi possível aplicar o perfil de impressora `%s'!"
+
+#: ../src/libs/print_settings.c:318
+msgid "failed to create temporary pdf for printing"
+msgstr "falha ao criar pdf temporário para imprimir"
+
+#: ../src/libs/print_settings.c:398
+msgid "cannot print until a picture is selected"
+msgstr "não pode imprimir até que uma foto seja selecionada"
+
+#: ../src/libs/print_settings.c:403
+msgid "cannot print until a printer is selected"
+msgstr "não pode imprimir até uma impressora ser selecionada"
+
+#: ../src/libs/print_settings.c:408
+msgid "cannot print until a paper is selected"
+msgstr "não pode imprimir até um papel ser selecionado"
+
+#. in this case no need to release from cache what we couldn't get
+#: ../src/libs/print_settings.c:435
+#, c-format
+msgid "cannot get image %d for printing"
+msgstr "não foi possível obter a imagem %d para imprimir"
+
+#: ../src/libs/print_settings.c:702
+#, c-format
+msgid "%3.2f (dpi:%d)"
+msgstr "%3.2f (dpi:%d)"
+
+#: ../src/libs/print_settings.c:1169
+msgid "printer"
+msgstr "impressora"
+
+#: ../src/libs/print_settings.c:1181
+msgid "media"
+msgstr "mídia"
+
+#: ../src/libs/print_settings.c:1200
+msgid "color management in printer driver"
+msgstr "gerenciamento de cor no driver da impressora"
+
+#: ../src/libs/print_settings.c:1235
+#, c-format
+msgid "printer ICC profiles in %s or %s"
+msgstr "perfis ICC em %s ou %s"
+
+#: ../src/libs/print_settings.c:1257
+msgid "black point compensation"
+msgstr "compensação de ponto preto"
+
+#: ../src/libs/print_settings.c:1265
+msgid "activate black point compensation when applying the printer profile"
+msgstr "ativar compensação de ponto preto ao aplicar o perfil da impressora"
+
+#. //////////////////////// PAGE SETTINGS
+#: ../src/libs/print_settings.c:1271
+msgid "page"
+msgstr "página"
+
+#: ../src/libs/print_settings.c:1308
+msgid "image width/height"
+msgstr "largura/altura da imagem"
+
+#: ../src/libs/print_settings.c:1312
+msgid " x "
+msgstr " x "
+
+#: ../src/libs/print_settings.c:1320
+msgid "scale factor"
+msgstr "fator de escala"
+
+#: ../src/libs/print_settings.c:1325
+msgid ""
+"image scale factor from native printer DPI:\n"
+" < 1 means that it is downscaled (best quality)\n"
+" > 1 means that the image is upscaled\n"
+" a too large value may result in poor print quality"
+msgstr ""
+"fator de escala de imagem nativo da impresora:\n"
+"<1 significa que foi encolhido (melhor qualidade)\n"
+">1 significa que a imagem foi aumentada\n"
+"um valor muito grande pode resultar em baixa qualidade de impressão"
+
+#. d->b_top = gtk_spin_button_new_with_range(0, 10000, 1);
+#: ../src/libs/print_settings.c:1339
+msgid "top margin"
+msgstr "margem superior"
+
+#. d->b_left = gtk_spin_button_new_with_range(0, 10000, 1);
+#: ../src/libs/print_settings.c:1343
+msgid "left margin"
+msgstr "margem esquerda"
+
+#: ../src/libs/print_settings.c:1346
+msgid "lock"
+msgstr "bloquear"
+
+#: ../src/libs/print_settings.c:1347
+msgid "change all margins uniformly"
+msgstr "mudar todas as margens uniformemente"
+
+#. d->b_right = gtk_spin_button_new_with_range(0, 10000, 1);
+#: ../src/libs/print_settings.c:1351
+msgid "right margin"
+msgstr "margem direita"
+
+#. d->b_bottom = gtk_spin_button_new_with_range(0, 10000, 1);
+#: ../src/libs/print_settings.c:1355
+msgid "bottom margin"
+msgstr "margem inferior"
+
+#: ../src/libs/print_settings.c:1497
+msgid "temporary style to use while printing"
+msgstr "estilo temporário a ser usado ao imprimir"
+
+#. Print button
+#: ../src/libs/print_settings.c:1534
+msgid "print"
+msgstr "imprimir"
+
+#: ../src/libs/print_settings.c:1536
+msgid "print with current settings"
+msgstr "imprimir com configuração atual"
+
+#: ../src/libs/print_settings.c:2003
+msgctxt "accel"
+msgid "print"
+msgstr "imprimir"
+
+#: ../src/libs/recentcollect.c:53
+msgid "recently used collections"
+msgstr "coleções usadas recentemente"
+
+#: ../src/libs/recentcollect.c:86
+msgctxt "accel"
+msgid "jump back to previous collection"
+msgstr "pula para coleção anterior"
+
+#: ../src/libs/recentcollect.c:119
+msgid " and "
+msgstr " e "
+
+#: ../src/libs/recentcollect.c:124
+msgid " or "
+msgstr " ou "
+
+#. case DT_LIB_COLLECT_MODE_AND_NOT:
+#: ../src/libs/recentcollect.c:129
+msgid " but not "
+msgstr " mas não "
+
+#: ../src/libs/select.c:132
+msgid "select all images in current collection"
+msgstr "seleciona todas imagens na coleção atual"
+
+#: ../src/libs/select.c:136
+msgid "select none"
+msgstr "cancela seleção"
+
+#: ../src/libs/select.c:139
+msgid "clear selection"
+msgstr "limpa seleção"
+
+#: ../src/libs/select.c:144
+msgid "invert selection"
+msgstr "inverte seleção"
+
+#: ../src/libs/select.c:146
+msgid ""
+"select unselected images\n"
+"in current collection"
+msgstr ""
+"seleciona images não selecionadas\n"
+"na coleção atual"
+
+#: ../src/libs/select.c:151
+msgid "select film roll"
+msgstr "seleciona rolo de filme"
+
+#: ../src/libs/select.c:154
+msgid ""
+"select all images which are in the same\n"
+"film roll as the selected images"
+msgstr ""
+"seleciona todas as imagens que estão no mesmo\n"
+"rolo de filme que as imagens selecionadas"
+
+#: ../src/libs/select.c:159
+msgid "select untouched"
+msgstr "seleciona não modificadas"
+
+#: ../src/libs/select.c:162
+msgid ""
+"select untouched images in\n"
+"current collection"
+msgstr ""
+"seleciona imagens não modificadas na\n"
+"coleção atual"
+
+#: ../src/libs/select.c:288
+msgctxt "accel"
+msgid "select all"
+msgstr "seleciona tudo"
+
+#: ../src/libs/select.c:289
+msgctxt "accel"
+msgid "select none"
+msgstr "cancela seleção"
+
+#: ../src/libs/select.c:290
+msgctxt "accel"
+msgid "invert selection"
+msgstr "inverte seleção"
+
+#: ../src/libs/select.c:291
+msgctxt "accel"
+msgid "select film roll"
+msgstr "seleciona rolo de filme"
+
+#: ../src/libs/select.c:292
+msgctxt "accel"
+msgid "select untouched"
+msgstr "seleciona não modificadas"
+
+#: ../src/libs/session.c:47
+msgid "session"
+msgstr "sessão"
+
+#: ../src/libs/session.c:109
+msgid "create"
+msgstr "criar"
+
+#: ../src/libs/snapshots.c:84
+msgid "snapshots"
+msgstr "instantânea"
+
+#: ../src/libs/snapshots.c:105
+msgctxt "accel"
+msgid "take snapshot"
+msgstr "tira instantânea"
+
+#: ../src/libs/snapshots.c:106
+msgctxt "accel"
+msgid "toggle last snapshot"
+msgstr "liga/desliga última instantânea"
+
+#: ../src/libs/snapshots.c:131
+msgctxt "snapshot sign"
+msgid "S"
+msgstr "S"
+
+#. create take snapshot button
+#: ../src/libs/snapshots.c:382
+msgid "take snapshot"
+msgstr "tira instantânea"
+
+#: ../src/libs/snapshots.c:386
+msgid ""
+"take snapshot to compare with another image or the same image at another "
+"stage of development"
+msgstr ""
+"tira uma instantânea para comparar com outra imagem ou a mesma imagem em "
+"outro estágio de revelação"
+
+#: ../src/libs/styles.c:52
+msgid "styles"
+msgstr "estilos"
+
+#: ../src/libs/styles.c:73
+msgctxt "accel"
+msgid "remove"
+msgstr "remover"
+
+#: ../src/libs/styles.c:75
+msgctxt "accel"
+msgid "import"
+msgstr "importar"
+
+#: ../src/libs/styles.c:327
+#, c-format
+msgid "do you really want to remove %d style?"
+msgid_plural "do you really want to remove %d styles?"
+msgstr[0] "você realmente deseja excluir %d estilo?"
+msgstr[1] "você realmente deseja excluir %d estilos?"
+
+#: ../src/libs/styles.c:333
+msgid "remove style?"
+msgid_plural "remove styles?"
+msgstr[0] "remover estilo?"
+msgstr[1] "remover estilos?"
+
+#: ../src/libs/styles.c:392
+msgid "select style"
+msgstr "selecionar estilo"
+
+#: ../src/libs/styles.c:405
+msgid "darktable style files"
+msgstr "arquivos de estilo do darktable"
+
+#: ../src/libs/styles.c:556
+msgid ""
+"available styles,\n"
+"doubleclick to apply"
+msgstr ""
+"estilos disponíveis,\n"
+"clique duplo para aplicar"
+
+#: ../src/libs/styles.c:563
+msgid "filter style names"
+msgstr "nomes dos estilos de filtro"
+
+#: ../src/libs/styles.c:578
+msgid "create duplicate"
+msgstr "cria duplicata"
+
+#: ../src/libs/styles.c:583
+msgid "creates a duplicate of the image before applying style"
+msgstr "cria uma duplicata da imagem antes de aplica o estilo"
+
+#. create
+#: ../src/libs/styles.c:601
+msgid "create..."
+msgstr "criar..."
+
+#: ../src/libs/styles.c:604
+msgid "create styles from history stack of selected images"
+msgstr "cria estilos a partir do histórico das imagens selecionadas"
+
+#. edit
+#: ../src/libs/styles.c:608
+msgid "edit..."
+msgstr "editar..."
+
+#: ../src/libs/styles.c:611
+msgid "edit the selected styles in list above"
+msgstr "edita os estilos selecionados na lista acima"
+
+#: ../src/libs/styles.c:618
+msgid "removes the selected styles in list above"
+msgstr "exclui os estilos selecionados na lista acima"
+
+#. import button
+#: ../src/libs/styles.c:622 ../src/libs/tagging.c:2815
+msgctxt "verb"
+msgid "import..."
+msgstr "importar..."
+
+#: ../src/libs/styles.c:624
+msgid "import styles from a style files"
+msgstr "importa estilo de um arquivo de estilo"
+
+#: ../src/libs/styles.c:631
+msgid "export the selected styles into a style files"
+msgstr "exportar os estilos selecionados em um arquivo de estilo"
+
+#: ../src/libs/styles.c:639
+msgid "apply the selected styles in list above to selected images"
+msgstr "aplica os estilos selecionados na lista acima às imagens selecionadas"
+
+#: ../src/libs/tagging.c:95
+msgid "tagging"
+msgstr "etiquetas"
+
+#: ../src/libs/tagging.c:120
+msgctxt "accel"
+msgid "attach"
+msgstr "anexar"
+
+#: ../src/libs/tagging.c:121
+msgctxt "accel"
+msgid "detach"
+msgstr "remover"
+
+#: ../src/libs/tagging.c:122
+msgctxt "accel"
+msgid "new"
+msgstr "novo"
+
+#: ../src/libs/tagging.c:123
+msgctxt "accel"
+msgid "tag"
+msgstr "etiqueta"
+
+#: ../src/libs/tagging.c:124
+msgctxt "accel"
+msgid "redo last tag"
+msgstr "repetir última etiqueta"
+
+#: ../src/libs/tagging.c:1177
+msgid "attach tag to all"
+msgstr "anexa etiqueta a todas as imagens"
+
+#: ../src/libs/tagging.c:1185 ../src/libs/tagging.c:2016
+msgid "detach tag"
+msgstr "remover etiqueta"
+
+#: ../src/libs/tagging.c:1320
+msgid "delete tag?"
+msgstr "excluir etiqueta?"
+
+#: ../src/libs/tagging.c:1327 ../src/libs/tagging.c:1414
+#: ../src/libs/tagging.c:1620
+#, c-format
+msgid "tag: %s "
+msgstr "etiqueta: %s "
+
+#: ../src/libs/tagging.c:1334
+#, c-format
+msgid ""
+"do you really want to delete the tag `%s'?\n"
+"%d image is assigned this tag!"
+msgid_plural ""
+"do you really want to delete the tag `%s'?\n"
+"%d images are assigned this tag!"
+msgstr[0] ""
+"você realmente deseja excluir a etiqueta `%s'?\n"
+"%d imagem atribuida a esta etiqueta!"
+msgstr[1] ""
+"você realmente deseja excluir a etiqueta `%s'?\n"
+"%d imagens atribuidas a esta etiqueta!"
+
+#: ../src/libs/tagging.c:1367
+#, c-format
+msgid "tag %s removed"
+msgstr "etiqueta %s removida"
+
+#: ../src/libs/tagging.c:1407 ../src/libs/tagging.c:2032
+msgid "delete path"
+msgstr "excluir caminho"
+
+#: ../src/libs/tagging.c:1421
+#, c-format
+msgid "<u>%d</u> tag will be deleted."
+msgid_plural "<u>%d</u> tags will be deleted."
+msgstr[0] "<u>%d</u> etiquta será removida."
+msgstr[1] "<u>%d</u> etiquta serão removidas."
+
+#: ../src/libs/tagging.c:1426 ../src/libs/tagging.c:1632
+#: ../src/libs/tagging.c:1850
+#, c-format
+msgid "<u>%d</u> image will be updated"
+msgid_plural "<u>%d</u> images will be updated "
+msgstr[0] "<u>%d</u> imagem será atualizada"
+msgstr[1] "<u>%d</u> imagens serão atualizadas "
+
+#: ../src/libs/tagging.c:1452
+#, c-format
+msgid "%d tags removed"
+msgstr "%d etiquetas removidas"
+
+#: ../src/libs/tagging.c:1488
+msgid "create tag"
+msgstr "criar etiqueta"
+
+#: ../src/libs/tagging.c:1498 ../src/libs/tagging.c:1640
+msgid "name: "
+msgstr "nome: "
+
+#: ../src/libs/tagging.c:1510
+#, c-format
+msgid "add to: \"%s\" "
+msgstr "adicionar a: \"%s\" "
+
+#: ../src/libs/tagging.c:1516 ../src/libs/tagging.c:1655
+msgid "category"
+msgstr "categoria"
+
+#: ../src/libs/tagging.c:1525 ../src/libs/tagging.c:1664
+msgid "synonyms: "
+msgstr "sinônimos: "
+
+#: ../src/libs/tagging.c:1542 ../src/libs/tagging.c:1686
+#: ../src/libs/tagging.c:1872
+msgid "empty tag is not allowed, aborting"
+msgstr "etiqueta vazia não permitido, abortando"
+
+#: ../src/libs/tagging.c:1553
+msgid "tag name already exists. aborting."
+msgstr "etiqueta já existe. abortando."
+
+#: ../src/libs/tagging.c:1613
+msgid "edit tag"
+msgstr "editar etiqueta"
+
+#: ../src/libs/tagging.c:1627 ../src/libs/tagging.c:1845
+#, c-format
+msgid "<u>%d</u> tag will be updated."
+msgid_plural "<u>%d</u> tags will be updated."
+msgstr[0] "<u>%d</u> etiqueta será atualizada."
+msgstr[1] "<u>%d</u> etiquetas serão atualizadas."
+
+#: ../src/libs/tagging.c:1688
+msgid ""
+"'|' character is not allowed for renaming tag.\n"
+"to modify the hierachy use rename path instead. Aborting."
+msgstr ""
+"caracter '|' não é permitido para renomear etiqueta.\n"
+"para modificar a hierarquia use renomear caminho. Abortando."
+
+#: ../src/libs/tagging.c:1727
+#, c-format
+msgid "at least one new tag name (%s) already exists, aborting"
+msgstr "pelo menos um nome de etiqueta ('%s') já existe, abortando"
+
+#: ../src/libs/tagging.c:1831
+msgid "rename path?"
+msgstr "renomear caminho?"
+
+#: ../src/libs/tagging.c:1838
+#, c-format
+msgid "selected path: %s "
+msgstr "caminho selecionado: %s "
+
+#: ../src/libs/tagging.c:1874
+msgid "'|' misplaced, empty tag is not allowed, aborting"
+msgstr "'|' em local incorreto, etiqueta vazio não permitido, abortando"
+
+#: ../src/libs/tagging.c:1900
+#, c-format
+msgid "at least one new tagname (%s) already exists, aborting."
+msgstr "pelo menos um etiqueta ('%s') já existe, abortando."
+
+#: ../src/libs/tagging.c:2012
+msgid "attach tag"
+msgstr "anexar etiqueta"
+
+#: ../src/libs/tagging.c:2027
+msgid "delete tag"
+msgstr "excluir etiqueta"
+
+#: ../src/libs/tagging.c:2038
+msgid "create tag..."
+msgstr "criar..."
+
+#: ../src/libs/tagging.c:2042
+msgid "edit tag..."
+msgstr "editar etiqueta..."
+
+#: ../src/libs/tagging.c:2051
+msgid "rename path..."
+msgstr "renomear caminho..."
+
+#: ../src/libs/tagging.c:2058
+msgid "copy to entry"
+msgstr "copia para entrada de dados"
+
+#: ../src/libs/tagging.c:2075
+msgid "go to tag collection"
+msgstr "ir a coleção de etiquetas"
+
+#: ../src/libs/tagging.c:2081
+msgid "go back to work"
+msgstr "voltar ao trabalho"
+
+#: ../src/libs/tagging.c:2198
+msgid "(private)"
+msgstr "(privado)"
+
+#: ../src/libs/tagging.c:2224
+msgid "Select a keyword file"
+msgstr "Selecione um arquivo de palavras-chave"
+
+#: ../src/libs/tagging.c:2227
+msgid "_import"
+msgstr "_importar"
+
+#: ../src/libs/tagging.c:2241
+msgid "error importing tags"
+msgstr "erro importando etiquetas"
+
+#: ../src/libs/tagging.c:2243
+#, c-format
+msgid "%zd tags imported"
+msgstr "%zd etiquetas importadas"
+
+#: ../src/libs/tagging.c:2265
+msgid "Select file to export to"
+msgstr "Selecione arquivo para exportar"
+
+#: ../src/libs/tagging.c:2268
+msgid "_export"
+msgstr "_exportar"
+
+#: ../src/libs/tagging.c:2283
+msgid "error exporting tags"
+msgstr "erro exportando etiquetas"
+
+#: ../src/libs/tagging.c:2285
+#, c-format
+msgid "%zd tags exported"
+msgstr "%zd etiquetas exportadas"
+
+#: ../src/libs/tagging.c:2665
+msgid ""
+"attached tags,\n"
+"double-click to detach\n"
+"right-click for other actions on attached tag,\n"
+"ctrl-wheel scroll to resize the window"
+msgstr ""
+"etiquetas anexadas,\n"
+"duplo-clique-direito para remover\n"
+"clique-direito para outras ações em etiquetas anexadas,\n"
+"ctrl-rola para mudar o tamanho da janela"
+
+#: ../src/libs/tagging.c:2677
+msgid "attach"
+msgstr "anexar"
+
+#: ../src/libs/tagging.c:2680
+msgid "attach tag to all selected images"
+msgstr "anexa etiqueta as imagens selecionadas"
+
+#: ../src/libs/tagging.c:2685
+msgid "detach"
+msgstr "remover"
+
+#: ../src/libs/tagging.c:2688
+msgid "detach tag from all selected images"
+msgstr "remove etiqueta das imagens selecionadas"
+
+#: ../src/libs/tagging.c:2695
+msgid "toggle list with / without hierarchy"
+msgstr "liga/desliga lista com / sem hierarquia"
+
+#: ../src/libs/tagging.c:2703
+msgid "toggle sort by name or by count"
+msgstr "escolhe ordenar por nome ou contagem"
+
+#: ../src/libs/tagging.c:2713
+msgid "toggle show or not darktable tags"
+msgstr "liga/desliga mostrar etiquetas darktable"
+
+#: ../src/libs/tagging.c:2729
+msgid "enter tag name"
+msgstr "entre nome da etiqueta"
+
+#: ../src/libs/tagging.c:2739
+msgid "clear entry"
+msgstr "limpar texto"
+
+#: ../src/libs/tagging.c:2791
+msgid ""
+"tag dictionary,\n"
+"double-click to attach,\n"
+"right-click for other actions on selected tag,\n"
+"ctrl-wheel scroll to resize the window"
+msgstr ""
+"docionário de etiquetas,\n"
+"clique-duplo para adicionar,\n"
+"clique-direito para outras ações na etiqueta selecionada,\n"
+"ctrol-rolar para mudar o tamanho da janela"
+
+#: ../src/libs/tagging.c:2807
+msgid "new"
+msgstr "novo"
+
+#: ../src/libs/tagging.c:2810
+msgid ""
+"create a new tag with the\n"
+"name you entered"
+msgstr ""
+"criar nova etiqueta com o\n"
+"nome entrado"
+
+#: ../src/libs/tagging.c:2818
+msgid "import tags from a Lightroom keyword file"
+msgstr "importar etiquetas de um arquivo de palavras-chave do Lightroom"
+
+#: ../src/libs/tagging.c:2823
+msgctxt "verb"
+msgid "export..."
+msgstr "exportar..."
+
+#: ../src/libs/tagging.c:2826
+msgid "export all tags to a Lightroom keyword file"
+msgstr ""
+"exportar todas as etiquetas para um arquivo de palavras-chave do Lightroom"
+
+#: ../src/libs/tagging.c:2833
+msgid "toggle list / tree view"
+msgstr "liga/desliga visualização em árvore"
+
+#: ../src/libs/tagging.c:2841
+msgid "toggle list with / without suggestion"
+msgstr "liga/desliga lista com / sem sugestão"
+
+#: ../src/libs/tagging.c:2963
+msgid ""
+"tag shortcut is not active with tag tree view. please switch to list view"
+msgstr ""
+"atalho de etiqueta não é ativo na visualização de árvore de etiquetas. por "
+"favor, mude para visualização de lista"
+
+#: ../src/libs/tools/battery_indicator.c:38
+#: ../src/libs/tools/battery_indicator.c:71
+msgid "battery indicator"
+msgstr "indicador de bateria"
+
+#: ../src/libs/tools/colorlabels.c:41
+msgid "colorlabels"
+msgstr "etiquetas coloridas"
+
+#. setup list of tooltips
+#: ../src/libs/tools/colorlabels.c:72
+msgid ""
+"toggle red label\n"
+"of selected images"
+msgstr ""
+"alterna etiqueta vermelha\n"
+"das imagens selecionadas"
+
+#: ../src/libs/tools/colorlabels.c:73
+msgid ""
+"toggle yellow label\n"
+"of selected images"
+msgstr ""
+"alterna etiqueta amarela\n"
+"das imagens selecionadas"
+
+#: ../src/libs/tools/colorlabels.c:74
+msgid ""
+"toggle green label\n"
+"of selected images"
+msgstr ""
+"alterna etiqueta verde\n"
+"das imagens selecionadas"
+
+#: ../src/libs/tools/colorlabels.c:75
+msgid ""
+"toggle blue label\n"
+"of selected images"
+msgstr ""
+"alterna etiqueta azul\n"
+"das imagens selecionadas"
+
+#: ../src/libs/tools/colorlabels.c:76
+msgid ""
+"toggle purple label\n"
+"of selected images"
+msgstr ""
+"alterna etiqueta roxa\n"
+"das imagens selecionadas"
+
+#: ../src/libs/tools/colorlabels.c:77
+msgid "clear all labels of selected images"
+msgstr "remove todas etiquetas das imagens selecionadas"
+
+#: ../src/libs/tools/darktable.c:61
+msgid "darktable"
+msgstr "darktable"
+
+#: ../src/libs/tools/darktable.c:252
+#, c-format
+msgid "copyright (c) the authors 2009-%s"
+msgstr "copyright (c) os autores 2009-%s"
+
+#: ../src/libs/tools/darktable.c:256
+msgid "organize and develop images from digital cameras"
+msgstr "organize e trate imagens de câmeras digitais"
+
+#: ../src/libs/tools/darktable.c:271
+msgid "translator-credits"
+msgstr ""
+"Guilherme Brondani Torri <guitorri@gmail.com>, Frido Claudino "
+"<frido@fridoclaudino.com>, Jerônimo Pellegrini <j_p@aleph0.info>"
+
+#: ../src/libs/tools/filmstrip.c:53
+msgid "filmstrip"
+msgstr "tira de filme"
+
+#: ../src/libs/tools/filter.c:88
+msgid "time"
+msgstr "hora"
+
+#: ../src/libs/tools/filter.c:94
+msgid "custom sort"
+msgstr "ordenação personalizada"
+
+#: ../src/libs/tools/filter.c:98
+msgid "shuffle"
+msgstr "embaralhar"
+
+#: ../src/libs/tools/filter.c:115
+msgid "filter"
+msgstr "filtro"
+
+#. list label
+#: ../src/libs/tools/filter.c:157
+msgid "view"
+msgstr "visualizar"
+
+#: ../src/libs/tools/filter.c:176
+msgid "unstarred only"
+msgstr "apenas sem estrela"
+
+#: ../src/libs/tools/filter.c:182
+msgid "rejected only"
+msgstr "apenas rejeitados"
+
+#: ../src/libs/tools/filter.c:183
+msgid "all except rejected"
+msgstr "todos exceto rejeitados"
+
+#. sort by label
+#: ../src/libs/tools/filter.c:191
+msgid "sort by"
+msgstr "ordena por"
+
+#: ../src/libs/tools/global_toolbox.c:58
+msgid "preferences"
+msgstr "preferências"
+
+#. we write the label with the size categorie
+#: ../src/libs/tools/global_toolbox.c:221
+msgid "thumbnails overlays for size"
+msgstr "sobreposições para tamanho"
+
+#: ../src/libs/tools/global_toolbox.c:223
+msgid "px"
+msgstr "px"
+
+#: ../src/libs/tools/global_toolbox.c:255
+#: ../src/libs/tools/global_toolbox.c:318
+msgid ""
+"duration before the block overlay is hidden after each mouse movement on the "
+"image\n"
+"set -1 to never hide the overlay"
+msgstr ""
+"duração antes do bloco de sobreposição ser escondido depois de cada "
+"movimento do mouse na imagem\n"
+"defina em -1 para nunca esconder a sobreposição"
+
+#: ../src/libs/tools/global_toolbox.c:260
+#: ../src/libs/tools/global_toolbox.c:323
+msgid "timeout only available for block overlay"
+msgstr "timeout disponível somente para sobreposição de bloco"
+
+#: ../src/libs/tools/global_toolbox.c:283
+msgid "culling overlays"
+msgstr "sobreposições de seleção"
+
+#: ../src/libs/tools/global_toolbox.c:285
+msgid "preview overlays"
+msgstr "sobreposições de pré-visualização"
+
+#: ../src/libs/tools/global_toolbox.c:341
+msgid "overlays not available here..."
+msgstr "sobreposições não disponíveis aqui..."
+
+#: ../src/libs/tools/global_toolbox.c:384
+#: ../src/libs/tools/global_toolbox.c:522
+msgid "expand grouped images"
+msgstr "expande imagens agrupadas"
+
+#: ../src/libs/tools/global_toolbox.c:386
+#: ../src/libs/tools/global_toolbox.c:524
+msgid "collapse grouped images"
+msgstr "esconder imagens agrupadas"
+
+#: ../src/libs/tools/global_toolbox.c:393
+msgid "click to change the type of overlays shown on thumbnails"
+msgstr "clique para mudar o tipo de sobreposições usadas nas miniaturas"
+
+#: ../src/libs/tools/global_toolbox.c:412
+#: ../src/libs/tools/global_toolbox.c:456
+msgid "overlay mode for size"
+msgstr "modo de sobreposição para tamanho"
+
+#: ../src/libs/tools/global_toolbox.c:415
+#: ../src/libs/tools/global_toolbox.c:459
+msgid "no overlays"
+msgstr "nenhuma sobreposição"
+
+#: ../src/libs/tools/global_toolbox.c:419
+msgid "overlays on mouse hover"
+msgstr "sobreposições ao passar o mouse"
+
+#: ../src/libs/tools/global_toolbox.c:423
+msgid "extended overlays on mouse hover"
+msgstr "sobreposições extendidas ao passar o mouse"
+
+#: ../src/libs/tools/global_toolbox.c:426
+#: ../src/libs/tools/global_toolbox.c:463
+msgid "permanent overlays"
+msgstr "sobreposições permanentes"
+
+#: ../src/libs/tools/global_toolbox.c:430
+#: ../src/libs/tools/global_toolbox.c:467
+msgid "permanent extended overlays"
+msgstr "sobreposições extendidas permanentes"
+
+#: ../src/libs/tools/global_toolbox.c:434
+msgid "permanent overlays extended on mouse hover"
+msgstr "sobreposições permanentes extendidas ao passar o mouse"
+
+#: ../src/libs/tools/global_toolbox.c:439
+#: ../src/libs/tools/global_toolbox.c:472
+msgid "overlays block on mouse hover during (s) "
+msgstr "sobrepõe bloco ao passar o mouse durante (s)"
+
+#: ../src/libs/tools/global_toolbox.c:446
+#: ../src/libs/tools/global_toolbox.c:479
+msgid "show tooltip"
+msgstr "mostrar tooltip"
+
+#: ../src/libs/tools/global_toolbox.c:490
+msgid "enable this, then click on a control element to see its online help"
+msgstr ""
+"habilite isto, depois clique em um elemento de controle para ver sua ajuda "
+"online"
+
+#: ../src/libs/tools/global_toolbox.c:500
+msgid "show global preferences"
+msgstr "mostrar preferências globais"
+
+#: ../src/libs/tools/global_toolbox.c:595
+msgid "do you want to access https://darktable.gitlab.io/doc/?"
+msgstr "você quer acessar https://darktable.gitlab.io/doc/?"
+
+#: ../src/libs/tools/global_toolbox.c:600
+msgid "access the online usermanual?"
+msgstr "acessar o manual do usuário online?"
+
+#: ../src/libs/tools/global_toolbox.c:643
+msgid "help url opened in web browser"
+msgstr "url de ajuda aberta no navegador"
+
+#: ../src/libs/tools/global_toolbox.c:647
+msgid "error while opening help url in web browser"
+msgstr "erro abrindo url de ajuda aberta no navegador"
+
+#: ../src/libs/tools/global_toolbox.c:658
+msgid "there is no help available for this element"
+msgstr "não há ajuda disponível para este elemento"
+
+#: ../src/libs/tools/global_toolbox.c:700
+msgctxt "accel"
+msgid "grouping"
+msgstr "agrupar"
+
+#: ../src/libs/tools/global_toolbox.c:701
+msgctxt "accel"
+msgid "preferences"
+msgstr "preferências"
+
+#: ../src/libs/tools/global_toolbox.c:703
+msgctxt "accel"
+msgid "thumbnail overlays/no overlays"
+msgstr "sobreposições em miniaturas/sem sobreposições"
+
+#: ../src/libs/tools/global_toolbox.c:704
+msgctxt "accel"
+msgid "thumbnail overlays/overlays on mouse hover"
+msgstr "sobreposições em miniaturas/sobreposições ao passar o mouse"
+
+#: ../src/libs/tools/global_toolbox.c:705
+msgctxt "accel"
+msgid "thumbnail overlays/extended overlays on mouse hover"
+msgstr "sobreposições em miniaturas/sobreposições extendidas ao passar o mouse"
+
+#: ../src/libs/tools/global_toolbox.c:706
+msgctxt "accel"
+msgid "thumbnail overlays/permanent overlays"
+msgstr "sobreposições em miniaturas/sobreposições permanentes"
+
+#: ../src/libs/tools/global_toolbox.c:707
+msgctxt "accel"
+msgid "thumbnail overlays/permanent extended overlays"
+msgstr "sobreposições em miniaturas/sobreposições extendidas permanentes"
+
+#: ../src/libs/tools/global_toolbox.c:708
+msgctxt "accel"
+msgid "thumbnail overlays/permanent overlays extended on mouse hover"
+msgstr ""
+"sobreposições em miniaturas/sobreposições permanentes extendidas ao passar o "
+"mouse"
+
+#: ../src/libs/tools/global_toolbox.c:709
+msgctxt "accel"
+msgid "thumbnail overlays/overlays block on mouse hover"
+msgstr "sobreposições em miniaturas/bloco de sobreposições ao passar o mouse"
+
+#: ../src/libs/tools/hinter.c:42
+msgid "hinter"
+msgstr "dicas"
+
+#: ../src/libs/tools/image_infos.c:40
+msgid "image infos"
+msgstr "informações da imagem"
+
+#: ../src/libs/tools/lighttable.c:131
+msgid "zoomable light table"
+msgstr "mesa de luz com zoom"
+
+#: ../src/libs/tools/lighttable.c:132
+msgid "file manager"
+msgstr "gerenciador de arquivos"
+
+#: ../src/libs/tools/lighttable.c:133
+msgid "culling"
+msgstr "seleção"
+
+#: ../src/libs/tools/lighttable.c:164
+msgid "fixed zoom"
+msgstr "zoom fixo"
+
+#: ../src/libs/tools/lighttable.c:165
+msgid "dynamic zoom"
+msgstr "zoom dinâmico"
+
+#. view accels
+#: ../src/libs/tools/lighttable.c:202
+msgctxt "accel"
+msgid "toggle culling mode"
+msgstr "alterna modo de seleção"
+
+#: ../src/libs/tools/lighttable.c:203
+msgctxt "accel"
+msgid "toggle culling dynamic mode"
+msgstr "alterna modo de seleção dinâmica"
+
+#: ../src/libs/tools/lighttable.c:204
+msgctxt "accel"
+msgid "toggle culling zoom mode"
+msgstr "alterna modo de seleção com zoom"
+
+#: ../src/libs/tools/module_toolbox.c:46
+msgid "module toolbox"
+msgstr "módulo ferramentas"
+
+#: ../src/libs/tools/timeline.c:111
+msgid "timeline"
+msgstr "linha do tempo"
+
+#: ../src/libs/tools/timeline.c:1439
+msgctxt "accel"
+msgid "start selection"
+msgstr "inicia seleção"
+
+#: ../src/libs/tools/timeline.c:1440
+msgctxt "accel"
+msgid "stop selection"
+msgstr "para seleção"
+
+#: ../src/libs/tools/viewswitcher.c:57
+msgid "viewswitcher"
+msgstr "modifica vista"
+
+#: ../src/libs/tools/view_toolbox.c:46
+msgid "view toolbox"
+msgstr "visualiza instrumentos"
+
+#: ../src/lua/lualib.c:295
+msgctxt "accel"
+msgid "reset lib parameters"
+msgstr "redefinir parâmetros"
+
+#: ../src/lua/preferences.c:644
+msgid "select file"
+msgstr "selecionar arquivo"
+
+#: ../src/lua/preferences.c:724
+#, c-format
+msgid "double click to reset to `%f'"
+msgstr "clique duplo para redefinir para `%f'"
+
+#: ../src/lua/preferences.c:800
+msgid "lua options"
+msgstr "opções lua"
+
+#: ../src/views/darkroom.c:439
+msgid "loading image"
+msgstr "carregando imagem"
+
+#: ../src/views/darkroom.c:656
+msgid "gamut check"
+msgstr "verificação de gamut"
+
+#: ../src/views/darkroom.c:656
+msgid "soft proof"
+msgstr "impressão na tela"
+
+#. fail :(
+#: ../src/views/darkroom.c:694 ../src/views/print.c:300
+msgid "no image to open !"
+msgstr "nenhuma imagem para abrir!"
+
+#: ../src/views/darkroom.c:1192
+msgid "no userdefined presets for favorite modules were found"
+msgstr "nenhuma predefinição do módulo de favoritos foi encontrado"
+
+#: ../src/views/darkroom.c:1197
+#, c-format
+msgid "applied style `%s' on current image"
+msgstr "estilo aplicado `%s' na imagem atual"
+
+#: ../src/views/darkroom.c:1313
+msgid "no styles have been created yet"
+msgstr "nenhum estilo foi criado ainda"
+
+#: ../src/views/darkroom.c:2052
+msgid "quick access to presets of your favorites"
+msgstr "acesso rápido para as predefinições de favoritos"
+
+#: ../src/views/darkroom.c:2061
+msgid "quick access for applying any of your styles"
+msgstr "acesso rápido para aplicação dos estilos"
+
+#: ../src/views/darkroom.c:2074
+msgid "display a second darkroom image window"
+msgstr "mostrar uma segunda janela de darkroom"
+
+#: ../src/views/darkroom.c:2083
+msgid "toggle ISO 12646 color assessment conditions"
+msgstr "alterna condições de avaliação de cores ISO 12646"
+
+#: ../src/views/darkroom.c:2093
+msgid ""
+"toggle raw over exposed indication\n"
+"right click for options"
+msgstr ""
+"alterna indicação de super exposto \n"
+"clique direito para opcões"
+
+#: ../src/views/darkroom.c:2117
+msgid "mark with CFA color"
+msgstr "marcar com cor CFA"
+
+#: ../src/views/darkroom.c:2118
+msgid "mark with solid color"
+msgstr "marcar com cor sólida"
+
+#: ../src/views/darkroom.c:2119
+msgid "false color"
+msgstr "falsa cor"
+
+#: ../src/views/darkroom.c:2121
+msgid "select how to mark the clipped pixels"
+msgstr "selecione como marcar os pixels cortados"
+
+#: ../src/views/darkroom.c:2128 ../src/views/darkroom.c:2180
+msgid "color scheme"
+msgstr "esquema de cor"
+
+#: ../src/views/darkroom.c:2129
+msgctxt "solidcolor"
+msgid "red"
+msgstr "vermelho"
+
+#: ../src/views/darkroom.c:2130
+msgctxt "solidcolor"
+msgid "green"
+msgstr "verde"
+
+#: ../src/views/darkroom.c:2131
+msgctxt "solidcolor"
+msgid "blue"
+msgstr "azul"
+
+#: ../src/views/darkroom.c:2132
+msgctxt "solidcolor"
+msgid "black"
+msgstr "preto"
+
+#: ../src/views/darkroom.c:2136
+msgid ""
+"select the solid color to indicate over exposure.\n"
+"will only be used if mode = mark with solid color"
+msgstr ""
+"selecione uma cor para indicar superexposição.\n"
+"só será utilizada caso modo seja = marcar com cor sólida"
+
+#: ../src/views/darkroom.c:2146
+msgid ""
+"threshold of what shall be considered overexposed\n"
+"1.0 - white level\n"
+"0.0 - black level"
+msgstr ""
+"limite para o que é considerado superexposição\n"
+"1.0 - nível de branco\n"
+"0.0 - nível de preto"
+
+#: ../src/views/darkroom.c:2157
+msgid ""
+"toggle over/under exposed indication\n"
+"right click for options"
+msgstr ""
+"alterna indicação de super/sub exposto \n"
+"clique direito para opcões"
+
+#: ../src/views/darkroom.c:2182
+msgid "red & blue"
+msgstr "vermelho & azul"
+
+#: ../src/views/darkroom.c:2183
+msgid "purple & green"
+msgstr "roxo & verde"
+
+#: ../src/views/darkroom.c:2185
+msgid "select colors to indicate over/under exposure"
+msgstr "selecione cores para indicar super/sub exposição"
+
+#: ../src/views/darkroom.c:2194
+msgid "lower threshold"
+msgstr "limite inferior"
+
+#: ../src/views/darkroom.c:2195
+msgid "threshold of what shall be considered underexposed"
+msgstr "limite para o que é considerado subexposição"
+
+#: ../src/views/darkroom.c:2203
+msgid "upper threshold"
+msgstr "limite superior"
+
+#: ../src/views/darkroom.c:2204
+msgid "threshold of what shall be considered overexposed"
+msgstr "limite para o que é considerado superexposição"
+
+#: ../src/views/darkroom.c:2215
+msgid ""
+"toggle softproofing\n"
+"right click for profile options"
+msgstr ""
+"alterna perfil de impressão na tela\n"
+"clique direito para opções"
+
+#: ../src/views/darkroom.c:2229
+msgid ""
+"toggle gamut checking\n"
+"right click for profile options"
+msgstr ""
+"alterna verificação de gamut\n"
+"clique direito para opções"
+
+#: ../src/views/darkroom.c:2257 ../src/views/lighttable.c:1390
+msgid "display intent"
+msgstr "intenção de visualização"
+
+#: ../src/views/darkroom.c:2265 ../src/views/lighttable.c:1398
+msgid "preview display intent"
+msgstr "pré-visualizar intenção de visualização"
+
+#: ../src/views/darkroom.c:2285 ../src/views/lighttable.c:1406
+msgid "display profile"
+msgstr "visualiza perfil"
+
+#: ../src/views/darkroom.c:2286 ../src/views/lighttable.c:1410
+msgid "preview display profile"
+msgstr "pré-visualizar perfil do monitor"
+
+#: ../src/views/darkroom.c:2287
+msgid "histogram profile"
+msgstr "perfil de histograma"
+
+#: ../src/views/darkroom.c:2341 ../src/views/lighttable.c:1440
+#, c-format
+msgid "display ICC profiles in %s or %s"
+msgstr "perfis ICC do monitor em %s ou %s"
+
+#: ../src/views/darkroom.c:2344 ../src/views/lighttable.c:1443
+#, c-format
+msgid "preview display ICC profiles in %s or %s"
+msgstr "pré-visualização de perfis ICC do monitor em %s ou %s"
+
+#: ../src/views/darkroom.c:2347
+#, c-format
+msgid "softproof ICC profiles in %s or %s"
+msgstr "perfis ICC impressão na tela em %s ou %s"
+
+#: ../src/views/darkroom.c:2350
+#, c-format
+msgid "histogram and color picker ICC profiles in %s or %s"
+msgstr "perfis ICC de histograma e conta-gotas em %s ou %s"
+
+#: ../src/views/darkroom.c:2383
+msgid ""
+"set the color of lines that overlay the image (drawn masks, crop and rotate "
+"guides etc.)"
+msgstr ""
+"determina cor das linhas que se sobrepões à imagem (máscaras, guias de corte "
+"e rotação etc.)"
+
+#: ../src/views/darkroom.c:2404
+msgid "overlay color"
+msgstr "cor de overlay"
+
+#: ../src/views/darkroom.c:2412
+msgid "set overlay color"
+msgstr "selecionar cor do overlay"
+
+#: ../src/views/darkroom.c:3584
+msgid "keyboard shortcut slider precision: fine"
+msgstr "precisão do atalho de teclado para deslizadores: leve"
+
+#: ../src/views/darkroom.c:3586
+msgid "keyboard shortcut slider precision: normal"
+msgstr "precisão do atalho de teclado para deslizadores: normal"
+
+#: ../src/views/darkroom.c:3588
+msgid "keyboard shortcut slider precision: coarse"
+msgstr "precisão do atalho de teclado para deslizadores: pesada"
+
+#. Zoom shortcuts
+#: ../src/views/darkroom.c:3625
+msgctxt "accel"
+msgid "zoom close-up"
+msgstr "zoom primeiro plano"
+
+#: ../src/views/darkroom.c:3626
+msgctxt "accel"
+msgid "zoom fill"
+msgstr "zoom preecher"
+
+#: ../src/views/darkroom.c:3627
+msgctxt "accel"
+msgid "zoom fit"
+msgstr "zoom ajustado"
+
+#. zoom in/out
+#. zoom in/out/min/max
+#: ../src/views/darkroom.c:3630 ../src/views/lighttable.c:877
+msgctxt "accel"
+msgid "zoom in"
+msgstr "aproximar"
+
+#: ../src/views/darkroom.c:3631 ../src/views/lighttable.c:879
+msgctxt "accel"
+msgid "zoom out"
+msgstr "afastar"
+
+#. Shortcut to skip images
+#: ../src/views/darkroom.c:3637
+msgctxt "accel"
+msgid "image forward"
+msgstr "imagem adiante"
+
+#: ../src/views/darkroom.c:3638
+msgctxt "accel"
+msgid "image back"
+msgstr "imagem anterior"
+
+#. toggle ISO 12646 color assessment condition
+#: ../src/views/darkroom.c:3641
+msgctxt "accel"
+msgid "color assessment"
+msgstr "avaliação de cores"
+
+#. toggle raw overexposure indication
+#: ../src/views/darkroom.c:3644
+msgctxt "accel"
+msgid "raw overexposed"
+msgstr "raw superexposto"
+
+#. toggle overexposure indication
+#: ../src/views/darkroom.c:3647
+msgctxt "accel"
+msgid "overexposed"
+msgstr "superexposto"
+
+#. cycle overlay colors
+#: ../src/views/darkroom.c:3650
+msgctxt "accel"
+msgid "cycle overlay colors"
+msgstr "passa por cores de overlay"
+
+#. toggle softproofing
+#: ../src/views/darkroom.c:3653
+msgctxt "accel"
+msgid "softproof"
+msgstr "impressão na tela"
+
+#. toggle gamut check
+#: ../src/views/darkroom.c:3656
+msgctxt "accel"
+msgid "gamut check"
+msgstr "verificação de gamut"
+
+#. toggle visability of drawn masks for current gui module
+#: ../src/views/darkroom.c:3659
+msgctxt "accel"
+msgid "show drawn masks"
+msgstr "mostrar máscara desenhada"
+
+#. brush size +/-
+#: ../src/views/darkroom.c:3662
+msgctxt "accel"
+msgid "increase brush size"
+msgstr "aumentar tamanho do pincel"
+
+#: ../src/views/darkroom.c:3663
+msgctxt "accel"
+msgid "decrease brush size"
+msgstr "diminuir tamanho do pincel"
+
+#. brush hardness +/-
+#: ../src/views/darkroom.c:3666
+msgctxt "accel"
+msgid "increase brush hardness"
+msgstr "aumentar dureza do pincel"
+
+#: ../src/views/darkroom.c:3667
+msgctxt "accel"
+msgid "decrease brush hardness"
+msgstr "diminuir dureza do pincel"
+
+#. brush opacity +/-
+#: ../src/views/darkroom.c:3670
+msgctxt "accel"
+msgid "increase brush opacity"
+msgstr "aumentar opacidade do pincel"
+
+#: ../src/views/darkroom.c:3671
+msgctxt "accel"
+msgid "decrease brush opacity"
+msgstr "diminuir opacidade do pincel"
+
+#. fullscreen view
+#: ../src/views/darkroom.c:3674
+msgctxt "accel"
+msgid "full preview"
+msgstr "visualização total"
+
+#. undo/redo
+#: ../src/views/darkroom.c:3677 ../src/views/lighttable.c:869
+#: ../src/views/map.c:918
+msgctxt "accel"
+msgid "undo"
+msgstr "desfazer"
+
+#: ../src/views/darkroom.c:3678 ../src/views/lighttable.c:870
+#: ../src/views/map.c:919
+msgctxt "accel"
+msgid "redo"
+msgstr "refazer"
+
+#. add an option to allow skip mouse events while editing masks
+#: ../src/views/darkroom.c:3681
+msgctxt "accel"
+msgid "allow to pan & zoom while editing masks"
+msgstr "permitir pan & zoom ao editar máscaras"
+
+#. set focus to the search modules text box
+#: ../src/views/darkroom.c:3684
+msgctxt "accel"
+msgid "search modules"
+msgstr "busca módulos"
+
+#. change the precision for adjusting sliders with keyboard shortcuts
+#: ../src/views/darkroom.c:3687
+msgctxt "accel"
+msgid "change keyboard shortcut slider precision"
+msgstr "mudar a precisão dos atalhos de teclado para deslizadores"
+
+#: ../src/views/darkroom.c:3809
+msgid "switch to lighttable"
+msgstr "mudar para mesa de luz"
+
+#: ../src/views/darkroom.c:3814 ../src/views/lighttable.c:1053
+msgid "zoom in the image"
+msgstr "zoom na imagem"
+
+#: ../src/views/darkroom.c:3820
+msgid "unbounded zoom in the image"
+msgstr "zoom ilimitado na imagem"
+
+#: ../src/views/darkroom.c:3825
+msgid "zoom to 100% 200% and back"
+msgstr "zoom para 100% 200% e volta"
+
+#: ../src/views/darkroom.c:3831
+msgid "[modules] expand module without closing others"
+msgstr "[módulos] expande módulo sem fechar outros"
+
+#: ../src/views/darkroom.c:3837
+msgid "[modules] change module position in pipe"
+msgstr "[módulos] muda posição do módulo no fluxo"
+
+#. workaround for GTK Quartz backend bug
+#: ../src/views/darkroom.c:4551 ../src/views/darkroom.c:4569
+msgid "darktable - darkroom preview"
+msgstr "darktable - pré-visualização de sala escura"
+
+#: ../src/views/knight.c:334
+msgid "good knight"
+msgstr "boa noite"
+
+#: ../src/views/lighttable.c:428 ../src/views/slideshow.c:376
+msgid "there are no images in this collection"
+msgstr "não existem imagens nesta coleção"
+
+#: ../src/views/lighttable.c:432
+msgid "if you have not imported any images yet"
+msgstr "se você ainda ainda importou nenhuma imagem"
+
+#: ../src/views/lighttable.c:436
+msgid "you can do so in the import module"
+msgstr "você pode fazer no módulo de importação"
+
+#: ../src/views/lighttable.c:444
+msgid "try to relax the filter settings in the top panel"
+msgstr "tente relaxar as configurações do filtro no painel superior"
+
+#: ../src/views/lighttable.c:453
+msgid "or add images in the collection module in the left panel"
+msgstr "ou adicione imagens a coleção no painel esquerdo"
+
+#. movement keys
+#: ../src/views/lighttable.c:837
+msgctxt "accel"
+msgid "move page up"
+msgstr "mover página para cima"
+
+#: ../src/views/lighttable.c:838
+msgctxt "accel"
+msgid "move page down"
+msgstr "mover página para baixo"
+
+#: ../src/views/lighttable.c:839
+msgctxt "accel"
+msgid "move up"
+msgstr "mover para cima"
+
+#: ../src/views/lighttable.c:840
+msgctxt "accel"
+msgid "move down"
+msgstr "mover para baixo"
+
+#: ../src/views/lighttable.c:841
+msgctxt "accel"
+msgid "move left"
+msgstr "mover para esquerda"
+
+#: ../src/views/lighttable.c:842
+msgctxt "accel"
+msgid "move right"
+msgstr "mover à direita"
+
+#: ../src/views/lighttable.c:843
+msgctxt "accel"
+msgid "move start"
+msgstr "ao início"
+
+#: ../src/views/lighttable.c:844
+msgctxt "accel"
+msgid "move end"
+msgstr "mover para o final"
+
+#. movement keys with selection
+#: ../src/views/lighttable.c:847
+msgctxt "accel"
+msgid "move page up and select"
+msgstr "página acima e seleciona"
+
+#: ../src/views/lighttable.c:848
+msgctxt "accel"
+msgid "move page down and select"
+msgstr "página abaixo e seleciona"
+
+#: ../src/views/lighttable.c:849
+msgctxt "accel"
+msgid "move up and select"
+msgstr "acima e seleciona"
+
+#: ../src/views/lighttable.c:850
+msgctxt "accel"
+msgid "move down and select"
+msgstr "mover para baixo e selecionar"
+
+#: ../src/views/lighttable.c:851
+msgctxt "accel"
+msgid "move left and select"
+msgstr "mover à esquerda e selecionar"
+
+#: ../src/views/lighttable.c:852
+msgctxt "accel"
+msgid "move right and select"
+msgstr "move à direita e seleciona"
+
+#: ../src/views/lighttable.c:853
+msgctxt "accel"
+msgid "move start and select"
+msgstr "ao início e selecionar"
+
+#: ../src/views/lighttable.c:854
+msgctxt "accel"
+msgid "move end and select"
+msgstr "ao final e seleciona"
+
+#: ../src/views/lighttable.c:856
+msgctxt "accel"
+msgid "align images to grid"
+msgstr "alinhar imagens à grade"
+
+#: ../src/views/lighttable.c:857
+msgctxt "accel"
+msgid "reset first image offset"
+msgstr "reposiciona a primeira imagem"
+
+#: ../src/views/lighttable.c:858
+msgctxt "accel"
+msgid "select toggle image"
+msgstr "inverte seleção de imagem"
+
+#: ../src/views/lighttable.c:859
+msgctxt "accel"
+msgid "select single image"
+msgstr "selecionar imagem única"
+
+#. Preview key
+#: ../src/views/lighttable.c:862
+msgctxt "accel"
+msgid "preview"
+msgstr "visualização"
+
+#: ../src/views/lighttable.c:863
+msgctxt "accel"
+msgid "preview with focus detection"
+msgstr "visualização com detecção de foco"
+
+#: ../src/views/lighttable.c:864
+msgctxt "accel"
+msgid "sticky preview"
+msgstr "visualização duradoura"
+
+#: ../src/views/lighttable.c:865
+msgctxt "accel"
+msgid "sticky preview with focus detection"
+msgstr "visualização duradoura com detecção de foco"
+
+#. zoom for full culling & preview
+#: ../src/views/lighttable.c:873
+msgctxt "accel"
+msgid "preview zoom 100%"
+msgstr "pré-visualização de zoom 100%"
+
+#: ../src/views/lighttable.c:874
+msgctxt "accel"
+msgid "preview zoom fit"
+msgstr "pré-visualização de zoom ajustado"
+
+#: ../src/views/lighttable.c:878
+msgctxt "accel"
+msgid "zoom max"
+msgstr "zoom máximo"
+
+#: ../src/views/lighttable.c:880
+msgctxt "accel"
+msgid "zoom min"
+msgstr "zoom mínimo"
+
+#: ../src/views/lighttable.c:1040
+msgid "open image in darkroom"
+msgstr "abrir imagem na sala escura"
+
+#: ../src/views/lighttable.c:1047
+msgid "switch to next/previous image"
+msgstr "muda para imagem próxima/anterior"
+
+#: ../src/views/lighttable.c:1059 ../src/views/lighttable.c:1117
+#, no-c-format
+msgid "zoom to 100% and back"
+msgstr "zoom para 100% e volta"
+
+#: ../src/views/lighttable.c:1066 ../src/views/lighttable.c:1088
+msgid "scroll the collection"
+msgstr "fazer scroll pela coleção"
+
+#: ../src/views/lighttable.c:1072
+msgid "change number of images per row"
+msgstr "número máximo de imagens por linha"
+
+#: ../src/views/lighttable.c:1080
+msgid "change image order"
+msgstr "muda ordem das imagens"
+
+#: ../src/views/lighttable.c:1094
+msgid "zoom all the images"
+msgstr "zoom em todas as imagens"
+
+#: ../src/views/lighttable.c:1099
+msgid "pan inside all the images"
+msgstr "arrastar em todas as imagens"
+
+#: ../src/views/lighttable.c:1105
+msgid "zoom current image"
+msgstr "zoom na imagem atual"
+
+#: ../src/views/lighttable.c:1111
+msgid "pan inside current image"
+msgstr "arrastar na imagem corrente"
+
+#: ../src/views/lighttable.c:1124
+#, no-c-format
+msgid "zoom current image to 100% and back"
+msgstr "zoom na imagem corrente para 100% e volta"
+
+#: ../src/views/lighttable.c:1131
+msgid "zoom the main view"
+msgstr "zoom na visualização principal"
+
+#: ../src/views/lighttable.c:1136
+msgid "pan inside the main view"
+msgstr "arrastar na vizualização principal"
+
+#: ../src/views/lighttable.c:1367
+msgid "set display profile"
+msgstr "definir perfil do monitor"
+
+#: ../src/views/map.c:132
+msgid "map"
+msgstr "mapa"
+
+#: ../src/views/map.c:1376
+msgid "[on image] open in darkroom"
+msgstr "abrir imagem na sala escura"
+
+#: ../src/views/map.c:1381
+msgid "[on map] zoom map"
+msgstr "zoom no mapa"
+
+#: ../src/views/map.c:1386
+msgid "move image location"
+msgstr "mover localização da imagem"
+
+#: ../src/views/print.c:53
+msgctxt "view"
+msgid "print"
+msgstr "imprimir"
+
+#: ../src/views/slideshow.c:314 ../src/views/slideshow.c:330
+msgid "end of images. press any key to return to lighttable mode"
+msgstr ""
+"final das imagens. pressione uma tecla para retornar ao modo mesa de luz"
+
+#: ../src/views/slideshow.c:459
+msgid "waiting to start slideshow"
+msgstr "aguardando para iniciar slideshow"
+
+#: ../src/views/slideshow.c:583 ../src/views/slideshow.c:599
+#: ../src/views/slideshow.c:605
+msgid "slideshow paused"
+msgstr "apresentação pausada"
+
+#: ../src/views/slideshow.c:590 ../src/views/slideshow.c:595
+#, c-format
+msgid "slideshow delay set to %d second"
+msgid_plural "slideshow delay set to %d seconds"
+msgstr[0] "pausa do slideshow ajustada para %d segundo"
+msgstr[1] "pausa do slideshow ajustada para %d segundos"
+
+#: ../src/views/slideshow.c:621
+msgctxt "accel"
+msgid "start and stop"
+msgstr "inicar e parar"
+
+#: ../src/views/slideshow.c:635
+msgid "go to next image"
+msgstr "ir para o próxima imagem"
+
+#: ../src/views/slideshow.c:640
+msgid "go to previous image"
+msgstr "muda para imagem anterior"
+
+#: ../src/views/tethering.c:97
+msgid "tethering"
+msgstr "acesso remoto"
+
+#: ../src/views/tethering.c:152
+#, c-format
+msgid "new session initiated '%s'"
+msgstr "nova sessão iniciada '%s'"
+
+#: ../src/views/tethering.c:276
+msgid "no camera with tethering support available for use..."
+msgstr "nenhuma câmera com acesso remoto disponível para uso..."
+
+#: ../src/views/view.c:1350
+msgid "Left click"
+msgstr "Clique esquerdo"
+
+#: ../src/views/view.c:1353
+msgid "Right click"
+msgstr "Clique direito"
+
+#: ../src/views/view.c:1356
+msgid "Middle click"
+msgstr "Clique do meio"
+
+#: ../src/views/view.c:1359
+msgid "Scroll"
+msgstr "Rolar"
+
+#: ../src/views/view.c:1362
+msgid "Left double-click"
+msgstr "clique esquerdo duplo"
+
+#: ../src/views/view.c:1365
+msgid "Right double-click"
+msgstr "clique direito duplo"
+
+#: ../src/views/view.c:1368
+msgid "Drag and drop"
+msgstr "Arrastar e soltar"
+
+#: ../src/views/view.c:1371
+msgid "Left click+Drag"
+msgstr "Clique Esquerdo+Arrastar"
+
+#: ../src/views/view.c:1374
+msgid "Right click+Drag"
+msgstr "Clique direito+Arrastar"
+
+#: ../src/views/view.c:1395
+msgid "darktable - accels window"
+msgstr "darktable - janela de atalhos"
+
+#: ../src/views/view.c:1451
+msgid "switch to a classic window which will stay open after key release."
+msgstr "mudar para uma janela clássica que ficará aberta após soltar a tecla."
+
+#: ../src/views/view.c:1567
+msgid "+Scroll"
+msgstr "+Rolar"
+
+#: ../src/views/view.c:1582
+msgid "mouse actions"
+msgstr "ações com mouse"
+
+#: ../src/views/view.c:1620
+msgid "Accel"
+msgstr "atalhos"
+
+#: ../src/views/view.c:1622
+msgid "Action"
+msgstr "Ação"
+
+#~ msgid ""
+#~ "use the per-camera basecurve by default instead of the generic "
+#~ "manufacturer one if there is one available (needs a restart)"
+#~ msgstr ""
+#~ "usar a curva-base por câmera por default ao invés da genérica do "
+#~ "fabricante se houver uma disponível (precisa reiniciar)"
+
+#~ msgid "precedence"
+#~ msgstr "precedência"
+
+#~ msgid "filter order"
+#~ msgstr "ordem do filtro"
+
+#~ msgid "0th order"
+#~ msgstr "0 ordem"
+
+#~ msgid "1st order"
+#~ msgstr "1a ordem"
+
+#~ msgid "2nd order"
+#~ msgstr "2a ordem"
+
+#~ msgid "filter order of gaussian blur"
+#~ msgstr "ordem do filtro gaussiano de desfoque"
+
+#~ msgctxt "size"
+#~ msgid "image"
+#~ msgstr "imagem"
diff --git a/po/ru.po b/po/ru.po
index 6810f34d7..4793a8535 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -5374,7 +5374,7 @@ msgstr "Ð’ÐИМÐÐИЕ: Ðет Ñнимков ÑоответÑтвующих Ñ
msgid "warning: did you want to swap these boundaries?\n"
msgstr "Ð’ÐИМÐÐИЕ: Ðе хотите ли вы поменÑÑ‚ÑŒ критерии поиÑка меÑтами?\n"
-#: ../src/generate-cache/main.c:220
+#: ../src/generate-cache/main.c:218
#, c-format
msgid ""
"warning: disk backend for thumbnail cache is disabled (cache_disk_backend)\n"
@@ -5800,63 +5800,63 @@ msgstr "$(VERSION_NAME) — Ð¸Ð¼Ñ Ð²ÐµÑ€Ñии из метаданных"
msgid "$(SEQUENCE) - sequence number"
msgstr "$(SEQUENCE) — поÑÐ»ÐµÐ´Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð½ÑƒÐ¼ÐµÑ€Ð°Ñ†Ð¸Ñ"
-#: ../src/gui/gtkentry.c:190
+#: ../src/gui/gtkentry.c:192
msgid "$(MAX_WIDTH) - maximum image export width"
msgstr "$(MAX_WIDTH) - макÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð° Ñнимка (ÑкÑпорт)"
-#: ../src/gui/gtkentry.c:191
+#: ../src/gui/gtkentry.c:193
msgid "$(MAX_HEIGHT) - maximum image export height"
msgstr "$(MAX_HEIGHT) - макÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð²Ñ‹Ñота Ñнимка (ÑкÑпорт)"
-#: ../src/gui/gtkentry.c:192
+#: ../src/gui/gtkentry.c:194
msgid "$(YEAR) - year"
msgstr "$(YEAR) — год"
-#: ../src/gui/gtkentry.c:193
+#: ../src/gui/gtkentry.c:195
msgid "$(MONTH) - month"
msgstr "$(MONTH) — меÑÑц"
-#: ../src/gui/gtkentry.c:194
+#: ../src/gui/gtkentry.c:196
msgid "$(DAY) - day"
msgstr "$(DAY) — день"
-#: ../src/gui/gtkentry.c:195
+#: ../src/gui/gtkentry.c:197
msgid "$(HOUR) - hour"
msgstr "$(HOUR) — чаÑ"
-#: ../src/gui/gtkentry.c:196
+#: ../src/gui/gtkentry.c:198
msgid "$(MINUTE) - minute"
msgstr "$(MINUTE) — минута"
-#: ../src/gui/gtkentry.c:197
+#: ../src/gui/gtkentry.c:199
msgid "$(SECOND) - second"
msgstr "$(SECOND) — Ñекунда"
-#: ../src/gui/gtkentry.c:198
+#: ../src/gui/gtkentry.c:200
msgid "$(EXIF_YEAR) - EXIF year"
msgstr "$(EXIF_YEAR) — год по Exif"
-#: ../src/gui/gtkentry.c:199
+#: ../src/gui/gtkentry.c:201
msgid "$(EXIF_MONTH) - EXIF month"
msgstr "$(EXIF_MONTH) — меÑÑц по Exif"
-#: ../src/gui/gtkentry.c:200
+#: ../src/gui/gtkentry.c:202
msgid "$(EXIF_DAY) - EXIF day"
msgstr "$(EXIF_DAY) — день по Exif"
-#: ../src/gui/gtkentry.c:201
+#: ../src/gui/gtkentry.c:203
msgid "$(EXIF_HOUR) - EXIF hour"
msgstr "$(EXIF_HOUR) — Ñ‡Ð°Ñ Ð¿Ð¾ Exif"
-#: ../src/gui/gtkentry.c:202
+#: ../src/gui/gtkentry.c:204
msgid "$(EXIF_MINUTE) - EXIF minute"
msgstr "$(EXIF_MINUTE) — минута по Exif"
-#: ../src/gui/gtkentry.c:203
+#: ../src/gui/gtkentry.c:205
msgid "$(EXIF_SECOND) - EXIF second"
msgstr "$(EXIF_SECOND) — Ñекунда по Exif"
-#: ../src/gui/gtkentry.c:204
+#: ../src/gui/gtkentry.c:206
msgid "$(EXIF_ISO) - ISO value"
msgstr "$(EXIF_ISO) — значение ISO"
@@ -6528,7 +6528,7 @@ msgstr "Ðевозможно Ñоздать Ñтиль из Ñнимка без
msgid "copy"
msgstr "Копировать"
-#: ../src/imageio/format/copy.c:139
+#: ../src/imageio/format/copy.c:140
msgid ""
"do a 1:1 copy of the selected files.\n"
"the global options below do not apply!"
@@ -6536,7 +6536,7 @@ msgstr ""
"Создание копии выбранных Ñнимков.\n"
"Общие параметры не применÑÑŽÑ‚ÑÑ!"
-#: ../src/imageio/format/exr.cc:188
+#: ../src/imageio/format/exr.cc:189
msgid "the selected output profile doesn't work well with exr"
msgstr "Выбранный ICC профиль вывода не может иÑпользоватьÑÑ Ñ OpenEXR"
@@ -7006,15 +7006,6 @@ msgstr "ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð°"
msgid "not authenticated"
msgstr "ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ÑутÑтвует"
-#: ../src/imageio/storage/piwigo.c:464
-msgid "authenticated"
-msgstr "ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð°"
-
-#: ../src/imageio/storage/piwigo.c:472 ../src/imageio/storage/piwigo.c:487
-#: ../src/imageio/storage/piwigo.c:499
-msgid "not authenticated"
-msgstr "ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ÑутÑтвует"
-
#: ../src/imageio/storage/piwigo.c:478
msgid "not authenticated, cannot reach server"
msgstr "ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ÑутÑтвует"
@@ -10911,13 +10902,8 @@ msgstr "Модель камеры"
#: ../src/iop/lens.cc:181
msgctxt "accel"
-msgid "corrections"
-msgstr "Коррективы"
-
-#: ../src/iop/lens.cc:182
-msgctxt "accel"
-msgid "geometry"
-msgstr "ГеометриÑ"
+msgid "select corrections"
+msgstr "Выберите коррективы"
#: ../src/iop/lens.cc:183
msgctxt "accel"
@@ -12556,42 +12542,22 @@ msgstr "Света - наÑыщенноÑÑ‚ÑŒ"
#: ../src/iop/splittoning.c:109
msgctxt "accel"
-msgid "shadows-hue"
-msgstr "Тени - тон"
-
-#: ../src/iop/splittoning.c:114
-msgctxt "accel"
-msgid "shadows-saturation"
-msgstr "Тени - наÑыщенноÑÑ‚ÑŒ"
-
-#: ../src/iop/splittoning.c:115
-msgctxt "accel"
-msgid "highlights-hue"
-msgstr "Света - тон"
-
-#: ../src/iop/splittoning.c:116
-msgctxt "accel"
-msgid "highlights-saturation"
-msgstr "Света - наÑыщенноÑÑ‚ÑŒ"
-
-#: ../src/iop/splittoning.c:117
-msgctxt "accel"
msgid "balance"
msgstr "БаланÑ"
-#: ../src/iop/splittoning.c:145
+#: ../src/iop/splittoning.c:137
msgid "authentic sepia"
msgstr "ÐÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ‡Ð½Ð°Ñ ÑепиÑ"
-#: ../src/iop/splittoning.c:154
+#: ../src/iop/splittoning.c:146
msgid "authentic cyanotype"
msgstr "Ðутентичный цианотип"
-#: ../src/iop/splittoning.c:163
+#: ../src/iop/splittoning.c:155
msgid "authentic platinotype"
msgstr "Ðутентичный платинотип"
-#: ../src/iop/splittoning.c:172
+#: ../src/iop/splittoning.c:164
msgid "chocolate brown"
msgstr "Шоколадный коричневый"
diff --git a/src/common/colorlabels.c b/src/common/colorlabels.c
index c6324fd3a..6572024ea 100644
--- a/src/common/colorlabels.c
+++ b/src/common/colorlabels.c
@@ -204,17 +204,7 @@ void dt_colorlabels_toggle_label_on_list(const GList *list, const int color, con
{
_colorlabels_execute(list, 0, &undo, undo_on, DT_CA_SET);
}
-}
-
-void dt_colorlabels_toggle_label(const int imgid, const int color, const gboolean undo_on, const gboolean group_on)
-{
- const int label = 1<<color;
- GList *imgs = NULL;
- if(imgid == -1)
- imgs = dt_collection_get_selected(darktable.collection, -1);
else
- imgs = g_list_append(imgs, GINT_TO_POINTER(imgid));
- if(imgs)
{
_colorlabels_execute(list, label, &undo, undo_on, DT_CA_TOGGLE);
}
diff --git a/src/common/image.c b/src/common/image.c
index a9ef76a4d..e647db70b 100644
--- a/src/common/image.c
+++ b/src/common/image.c
@@ -1064,10 +1064,6 @@ GList* dt_image_find_duplicates(const char* filename)
GList* files = NULL;
gchar *imgpath = g_path_get_dirname(filename);
// NULL terminated list of glob patterns; should include "" and can be extended if needed
-#ifdef _WIN32
- // Windows only accepts generic wildcards for filename
- static const gchar *glob_patterns[] = { "", "_????", NULL };
-#else
static const gchar *glob_patterns[]
= { "", "_[0-9][0-9]", "_[0-9][0-9][0-9]", "_[0-9][0-9][0-9][0-9]", NULL };
const gchar **glob_pattern = glob_patterns;
diff --git a/src/common/ratings.c b/src/common/ratings.c
index afce73d07..1a32c2f4e 100644
--- a/src/common/ratings.c
+++ b/src/common/ratings.c
@@ -183,9 +183,6 @@ void dt_ratings_apply_on_image(const int imgid, const int rating, const gboolean
}
else
dt_control_log(_("no images selected to apply rating"));
- /* redraw view */
- /* dt_control_queue_redraw_center() */
- /* needs to be called in the caller function */
}
// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.sh
diff --git a/src/common/tags.c b/src/common/tags.c
index d49a2bb31..aa0aa5fe0 100644
--- a/src/common/tags.c
+++ b/src/common/tags.c
@@ -520,6 +520,8 @@ gboolean dt_tag_attach_string_list(const gchar *tags, const GList *img, const gb
dt_tag_new(e, &tagid);
tagl = g_list_prepend(tagl, GINT_TO_POINTER(tagid));
}
+ entry++;
+ }
// attach newly created tags
GList *imgs = g_list_copy((GList *)img);
diff --git a/src/dtgtk/paint.c b/src/dtgtk/paint.c
index a75d49885..d21b64bb5 100755
--- a/src/dtgtk/paint.c
+++ b/src/dtgtk/paint.c
@@ -19,7 +19,6 @@
#include "bauhaus/bauhaus.h"
#include "dtgtk/paint.h"
#include "gui/draw.h"
-#include "gui/gtk.h"
#include <math.h>
#ifndef M_PI
diff --git a/src/external/OpenCL b/src/external/OpenCL
deleted file mode 160000
-Subproject 0d5f18c6e7196863bc1557a693f1509adfcee05
diff --git a/src/external/OpenCL/CL/cl.h b/src/external/OpenCL/CL/cl.h
new file mode 100644
index 000000000..32ae73fc5
--- /dev/null
+++ b/src/external/OpenCL/CL/cl.h
@@ -0,0 +1,1804 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2019 The Khronos Group Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and/or associated documentation files (the
+ * "Materials"), to deal in the Materials without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Materials, and to
+ * permit persons to whom the Materials are furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Materials.
+ *
+ * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+ * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+ * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+ * https://www.khronos.org/registry/
+ *
+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+ ******************************************************************************/
+
+#ifndef __OPENCL_CL_H
+#define __OPENCL_CL_H
+
+#include <CL/cl_version.h>
+#include <CL/cl_platform.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/******************************************************************************/
+
+typedef struct _cl_platform_id * cl_platform_id;
+typedef struct _cl_device_id * cl_device_id;
+typedef struct _cl_context * cl_context;
+typedef struct _cl_command_queue * cl_command_queue;
+typedef struct _cl_mem * cl_mem;
+typedef struct _cl_program * cl_program;
+typedef struct _cl_kernel * cl_kernel;
+typedef struct _cl_event * cl_event;
+typedef struct _cl_sampler * cl_sampler;
+
+typedef cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. */
+typedef cl_ulong cl_bitfield;
+typedef cl_bitfield cl_device_type;
+typedef cl_uint cl_platform_info;
+typedef cl_uint cl_device_info;
+typedef cl_bitfield cl_device_fp_config;
+typedef cl_uint cl_device_mem_cache_type;
+typedef cl_uint cl_device_local_mem_type;
+typedef cl_bitfield cl_device_exec_capabilities;
+#ifdef CL_VERSION_2_0
+typedef cl_bitfield cl_device_svm_capabilities;
+#endif
+typedef cl_bitfield cl_command_queue_properties;
+#ifdef CL_VERSION_1_2
+typedef intptr_t cl_device_partition_property;
+typedef cl_bitfield cl_device_affinity_domain;
+#endif
+
+typedef intptr_t cl_context_properties;
+typedef cl_uint cl_context_info;
+#ifdef CL_VERSION_2_0
+typedef cl_bitfield cl_queue_properties;
+#endif
+typedef cl_uint cl_command_queue_info;
+typedef cl_uint cl_channel_order;
+typedef cl_uint cl_channel_type;
+typedef cl_bitfield cl_mem_flags;
+#ifdef CL_VERSION_2_0
+typedef cl_bitfield cl_svm_mem_flags;
+#endif
+typedef cl_uint cl_mem_object_type;
+typedef cl_uint cl_mem_info;
+#ifdef CL_VERSION_1_2
+typedef cl_bitfield cl_mem_migration_flags;
+#endif
+typedef cl_uint cl_image_info;
+#ifdef CL_VERSION_1_1
+typedef cl_uint cl_buffer_create_type;
+#endif
+typedef cl_uint cl_addressing_mode;
+typedef cl_uint cl_filter_mode;
+typedef cl_uint cl_sampler_info;
+typedef cl_bitfield cl_map_flags;
+#ifdef CL_VERSION_2_0
+typedef intptr_t cl_pipe_properties;
+typedef cl_uint cl_pipe_info;
+#endif
+typedef cl_uint cl_program_info;
+typedef cl_uint cl_program_build_info;
+#ifdef CL_VERSION_1_2
+typedef cl_uint cl_program_binary_type;
+#endif
+typedef cl_int cl_build_status;
+typedef cl_uint cl_kernel_info;
+#ifdef CL_VERSION_1_2
+typedef cl_uint cl_kernel_arg_info;
+typedef cl_uint cl_kernel_arg_address_qualifier;
+typedef cl_uint cl_kernel_arg_access_qualifier;
+typedef cl_bitfield cl_kernel_arg_type_qualifier;
+#endif
+typedef cl_uint cl_kernel_work_group_info;
+#ifdef CL_VERSION_2_1
+typedef cl_uint cl_kernel_sub_group_info;
+#endif
+typedef cl_uint cl_event_info;
+typedef cl_uint cl_command_type;
+typedef cl_uint cl_profiling_info;
+#ifdef CL_VERSION_2_0
+typedef cl_bitfield cl_sampler_properties;
+typedef cl_uint cl_kernel_exec_info;
+#endif
+
+typedef struct _cl_image_format {
+ cl_channel_order image_channel_order;
+ cl_channel_type image_channel_data_type;
+} cl_image_format;
+
+#ifdef CL_VERSION_1_2
+
+typedef struct _cl_image_desc {
+ cl_mem_object_type image_type;
+ size_t image_width;
+ size_t image_height;
+ size_t image_depth;
+ size_t image_array_size;
+ size_t image_row_pitch;
+ size_t image_slice_pitch;
+ cl_uint num_mip_levels;
+ cl_uint num_samples;
+#ifdef CL_VERSION_2_0
+#ifdef __GNUC__
+ __extension__ /* Prevents warnings about anonymous union in -pedantic builds */
+#endif
+#ifdef _MSC_VER
+#pragma warning( push )
+#pragma warning( disable : 4201 ) /* Prevents warning about nameless struct/union in /W4 /Za builds */
+#endif
+ union {
+#endif
+ cl_mem buffer;
+#ifdef CL_VERSION_2_0
+ cl_mem mem_object;
+ };
+#ifdef _MSC_VER
+#pragma warning( pop )
+#endif
+#endif
+} cl_image_desc;
+
+#endif
+
+#ifdef CL_VERSION_1_1
+
+typedef struct _cl_buffer_region {
+ size_t origin;
+ size_t size;
+} cl_buffer_region;
+
+#endif
+
+/******************************************************************************/
+
+/* Error Codes */
+#define CL_SUCCESS 0
+#define CL_DEVICE_NOT_FOUND -1
+#define CL_DEVICE_NOT_AVAILABLE -2
+#define CL_COMPILER_NOT_AVAILABLE -3
+#define CL_MEM_OBJECT_ALLOCATION_FAILURE -4
+#define CL_OUT_OF_RESOURCES -5
+#define CL_OUT_OF_HOST_MEMORY -6
+#define CL_PROFILING_INFO_NOT_AVAILABLE -7
+#define CL_MEM_COPY_OVERLAP -8
+#define CL_IMAGE_FORMAT_MISMATCH -9
+#define CL_IMAGE_FORMAT_NOT_SUPPORTED -10
+#define CL_BUILD_PROGRAM_FAILURE -11
+#define CL_MAP_FAILURE -12
+#ifdef CL_VERSION_1_1
+#define CL_MISALIGNED_SUB_BUFFER_OFFSET -13
+#define CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST -14
+#endif
+#ifdef CL_VERSION_1_2
+#define CL_COMPILE_PROGRAM_FAILURE -15
+#define CL_LINKER_NOT_AVAILABLE -16
+#define CL_LINK_PROGRAM_FAILURE -17
+#define CL_DEVICE_PARTITION_FAILED -18
+#define CL_KERNEL_ARG_INFO_NOT_AVAILABLE -19
+#endif
+
+#define CL_INVALID_VALUE -30
+#define CL_INVALID_DEVICE_TYPE -31
+#define CL_INVALID_PLATFORM -32
+#define CL_INVALID_DEVICE -33
+#define CL_INVALID_CONTEXT -34
+#define CL_INVALID_QUEUE_PROPERTIES -35
+#define CL_INVALID_COMMAND_QUEUE -36
+#define CL_INVALID_HOST_PTR -37
+#define CL_INVALID_MEM_OBJECT -38
+#define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR -39
+#define CL_INVALID_IMAGE_SIZE -40
+#define CL_INVALID_SAMPLER -41
+#define CL_INVALID_BINARY -42
+#define CL_INVALID_BUILD_OPTIONS -43
+#define CL_INVALID_PROGRAM -44
+#define CL_INVALID_PROGRAM_EXECUTABLE -45
+#define CL_INVALID_KERNEL_NAME -46
+#define CL_INVALID_KERNEL_DEFINITION -47
+#define CL_INVALID_KERNEL -48
+#define CL_INVALID_ARG_INDEX -49
+#define CL_INVALID_ARG_VALUE -50
+#define CL_INVALID_ARG_SIZE -51
+#define CL_INVALID_KERNEL_ARGS -52
+#define CL_INVALID_WORK_DIMENSION -53
+#define CL_INVALID_WORK_GROUP_SIZE -54
+#define CL_INVALID_WORK_ITEM_SIZE -55
+#define CL_INVALID_GLOBAL_OFFSET -56
+#define CL_INVALID_EVENT_WAIT_LIST -57
+#define CL_INVALID_EVENT -58
+#define CL_INVALID_OPERATION -59
+#define CL_INVALID_GL_OBJECT -60
+#define CL_INVALID_BUFFER_SIZE -61
+#define CL_INVALID_MIP_LEVEL -62
+#define CL_INVALID_GLOBAL_WORK_SIZE -63
+#ifdef CL_VERSION_1_1
+#define CL_INVALID_PROPERTY -64
+#endif
+#ifdef CL_VERSION_1_2
+#define CL_INVALID_IMAGE_DESCRIPTOR -65
+#define CL_INVALID_COMPILER_OPTIONS -66
+#define CL_INVALID_LINKER_OPTIONS -67
+#define CL_INVALID_DEVICE_PARTITION_COUNT -68
+#endif
+#ifdef CL_VERSION_2_0
+#define CL_INVALID_PIPE_SIZE -69
+#define CL_INVALID_DEVICE_QUEUE -70
+#endif
+#ifdef CL_VERSION_2_2
+#define CL_INVALID_SPEC_ID -71
+#define CL_MAX_SIZE_RESTRICTION_EXCEEDED -72
+#endif
+
+
+/* cl_bool */
+#define CL_FALSE 0
+#define CL_TRUE 1
+#ifdef CL_VERSION_1_2
+#define CL_BLOCKING CL_TRUE
+#define CL_NON_BLOCKING CL_FALSE
+#endif
+
+/* cl_platform_info */
+#define CL_PLATFORM_PROFILE 0x0900
+#define CL_PLATFORM_VERSION 0x0901
+#define CL_PLATFORM_NAME 0x0902
+#define CL_PLATFORM_VENDOR 0x0903
+#define CL_PLATFORM_EXTENSIONS 0x0904
+#ifdef CL_VERSION_2_1
+#define CL_PLATFORM_HOST_TIMER_RESOLUTION 0x0905
+#endif
+
+/* cl_device_type - bitfield */
+#define CL_DEVICE_TYPE_DEFAULT (1 << 0)
+#define CL_DEVICE_TYPE_CPU (1 << 1)
+#define CL_DEVICE_TYPE_GPU (1 << 2)
+#define CL_DEVICE_TYPE_ACCELERATOR (1 << 3)
+#ifdef CL_VERSION_1_2
+#define CL_DEVICE_TYPE_CUSTOM (1 << 4)
+#endif
+#define CL_DEVICE_TYPE_ALL 0xFFFFFFFF
+
+/* cl_device_info */
+#define CL_DEVICE_TYPE 0x1000
+#define CL_DEVICE_VENDOR_ID 0x1001
+#define CL_DEVICE_MAX_COMPUTE_UNITS 0x1002
+#define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS 0x1003
+#define CL_DEVICE_MAX_WORK_GROUP_SIZE 0x1004
+#define CL_DEVICE_MAX_WORK_ITEM_SIZES 0x1005
+#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR 0x1006
+#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT 0x1007
+#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT 0x1008
+#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG 0x1009
+#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT 0x100A
+#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE 0x100B
+#define CL_DEVICE_MAX_CLOCK_FREQUENCY 0x100C
+#define CL_DEVICE_ADDRESS_BITS 0x100D
+#define CL_DEVICE_MAX_READ_IMAGE_ARGS 0x100E
+#define CL_DEVICE_MAX_WRITE_IMAGE_ARGS 0x100F
+#define CL_DEVICE_MAX_MEM_ALLOC_SIZE 0x1010
+#define CL_DEVICE_IMAGE2D_MAX_WIDTH 0x1011
+#define CL_DEVICE_IMAGE2D_MAX_HEIGHT 0x1012
+#define CL_DEVICE_IMAGE3D_MAX_WIDTH 0x1013
+#define CL_DEVICE_IMAGE3D_MAX_HEIGHT 0x1014
+#define CL_DEVICE_IMAGE3D_MAX_DEPTH 0x1015
+#define CL_DEVICE_IMAGE_SUPPORT 0x1016
+#define CL_DEVICE_MAX_PARAMETER_SIZE 0x1017
+#define CL_DEVICE_MAX_SAMPLERS 0x1018
+#define CL_DEVICE_MEM_BASE_ADDR_ALIGN 0x1019
+#define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE 0x101A
+#define CL_DEVICE_SINGLE_FP_CONFIG 0x101B
+#define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE 0x101C
+#define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE 0x101D
+#define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE 0x101E
+#define CL_DEVICE_GLOBAL_MEM_SIZE 0x101F
+#define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 0x1020
+#define CL_DEVICE_MAX_CONSTANT_ARGS 0x1021
+#define CL_DEVICE_LOCAL_MEM_TYPE 0x1022
+#define CL_DEVICE_LOCAL_MEM_SIZE 0x1023
+#define CL_DEVICE_ERROR_CORRECTION_SUPPORT 0x1024
+#define CL_DEVICE_PROFILING_TIMER_RESOLUTION 0x1025
+#define CL_DEVICE_ENDIAN_LITTLE 0x1026
+#define CL_DEVICE_AVAILABLE 0x1027
+#define CL_DEVICE_COMPILER_AVAILABLE 0x1028
+#define CL_DEVICE_EXECUTION_CAPABILITIES 0x1029
+#define CL_DEVICE_QUEUE_PROPERTIES 0x102A /* deprecated */
+#ifdef CL_VERSION_2_0
+#define CL_DEVICE_QUEUE_ON_HOST_PROPERTIES 0x102A
+#endif
+#define CL_DEVICE_NAME 0x102B
+#define CL_DEVICE_VENDOR 0x102C
+#define CL_DRIVER_VERSION 0x102D
+#define CL_DEVICE_PROFILE 0x102E
+#define CL_DEVICE_VERSION 0x102F
+#define CL_DEVICE_EXTENSIONS 0x1030
+#define CL_DEVICE_PLATFORM 0x1031
+#ifdef CL_VERSION_1_2
+#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032
+#endif
+/* 0x1033 reserved for CL_DEVICE_HALF_FP_CONFIG which is already defined in "cl_ext.h" */
+#ifdef CL_VERSION_1_1
+#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF 0x1034
+#define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035 /* deprecated */
+#define CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR 0x1036
+#define CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT 0x1037
+#define CL_DEVICE_NATIVE_VECTOR_WIDTH_INT 0x1038
+#define CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG 0x1039
+#define CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT 0x103A
+#define CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE 0x103B
+#define CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF 0x103C
+#define CL_DEVICE_OPENCL_C_VERSION 0x103D
+#endif
+#ifdef CL_VERSION_1_2
+#define CL_DEVICE_LINKER_AVAILABLE 0x103E
+#define CL_DEVICE_BUILT_IN_KERNELS 0x103F
+#define CL_DEVICE_IMAGE_MAX_BUFFER_SIZE 0x1040
+#define CL_DEVICE_IMAGE_MAX_ARRAY_SIZE 0x1041
+#define CL_DEVICE_PARENT_DEVICE 0x1042
+#define CL_DEVICE_PARTITION_MAX_SUB_DEVICES 0x1043
+#define CL_DEVICE_PARTITION_PROPERTIES 0x1044
+#define CL_DEVICE_PARTITION_AFFINITY_DOMAIN 0x1045
+#define CL_DEVICE_PARTITION_TYPE 0x1046
+#define CL_DEVICE_REFERENCE_COUNT 0x1047
+#define CL_DEVICE_PREFERRED_INTEROP_USER_SYNC 0x1048
+#define CL_DEVICE_PRINTF_BUFFER_SIZE 0x1049
+#endif
+#ifdef CL_VERSION_2_0
+#define CL_DEVICE_IMAGE_PITCH_ALIGNMENT 0x104A
+#define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT 0x104B
+#define CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS 0x104C
+#define CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE 0x104D
+#define CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES 0x104E
+#define CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE 0x104F
+#define CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE 0x1050
+#define CL_DEVICE_MAX_ON_DEVICE_QUEUES 0x1051
+#define CL_DEVICE_MAX_ON_DEVICE_EVENTS 0x1052
+#define CL_DEVICE_SVM_CAPABILITIES 0x1053
+#define CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE 0x1054
+#define CL_DEVICE_MAX_PIPE_ARGS 0x1055
+#define CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS 0x1056
+#define CL_DEVICE_PIPE_MAX_PACKET_SIZE 0x1057
+#define CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT 0x1058
+#define CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT 0x1059
+#define CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT 0x105A
+#endif
+#ifdef CL_VERSION_2_1
+#define CL_DEVICE_IL_VERSION 0x105B
+#define CL_DEVICE_MAX_NUM_SUB_GROUPS 0x105C
+#define CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS 0x105D
+#endif
+
+/* cl_device_fp_config - bitfield */
+#define CL_FP_DENORM (1 << 0)
+#define CL_FP_INF_NAN (1 << 1)
+#define CL_FP_ROUND_TO_NEAREST (1 << 2)
+#define CL_FP_ROUND_TO_ZERO (1 << 3)
+#define CL_FP_ROUND_TO_INF (1 << 4)
+#define CL_FP_FMA (1 << 5)
+#ifdef CL_VERSION_1_1
+#define CL_FP_SOFT_FLOAT (1 << 6)
+#endif
+#ifdef CL_VERSION_1_2
+#define CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT (1 << 7)
+#endif
+
+/* cl_device_mem_cache_type */
+#define CL_NONE 0x0
+#define CL_READ_ONLY_CACHE 0x1
+#define CL_READ_WRITE_CACHE 0x2
+
+/* cl_device_local_mem_type */
+#define CL_LOCAL 0x1
+#define CL_GLOBAL 0x2
+
+/* cl_device_exec_capabilities - bitfield */
+#define CL_EXEC_KERNEL (1 << 0)
+#define CL_EXEC_NATIVE_KERNEL (1 << 1)
+
+/* cl_command_queue_properties - bitfield */
+#define CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE (1 << 0)
+#define CL_QUEUE_PROFILING_ENABLE (1 << 1)
+#ifdef CL_VERSION_2_0
+#define CL_QUEUE_ON_DEVICE (1 << 2)
+#define CL_QUEUE_ON_DEVICE_DEFAULT (1 << 3)
+#endif
+
+/* cl_context_info */
+#define CL_CONTEXT_REFERENCE_COUNT 0x1080
+#define CL_CONTEXT_DEVICES 0x1081
+#define CL_CONTEXT_PROPERTIES 0x1082
+#ifdef CL_VERSION_1_1
+#define CL_CONTEXT_NUM_DEVICES 0x1083
+#endif
+
+/* cl_context_properties */
+#define CL_CONTEXT_PLATFORM 0x1084
+#ifdef CL_VERSION_1_2
+#define CL_CONTEXT_INTEROP_USER_SYNC 0x1085
+#endif
+
+#ifdef CL_VERSION_1_2
+
+/* cl_device_partition_property */
+#define CL_DEVICE_PARTITION_EQUALLY 0x1086
+#define CL_DEVICE_PARTITION_BY_COUNTS 0x1087
+#define CL_DEVICE_PARTITION_BY_COUNTS_LIST_END 0x0
+#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN 0x1088
+
+#endif
+
+#ifdef CL_VERSION_1_2
+
+/* cl_device_affinity_domain */
+#define CL_DEVICE_AFFINITY_DOMAIN_NUMA (1 << 0)
+#define CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE (1 << 1)
+#define CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE (1 << 2)
+#define CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE (1 << 3)
+#define CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE (1 << 4)
+#define CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE (1 << 5)
+
+#endif
+
+#ifdef CL_VERSION_2_0
+
+/* cl_device_svm_capabilities */
+#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER (1 << 0)
+#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER (1 << 1)
+#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM (1 << 2)
+#define CL_DEVICE_SVM_ATOMICS (1 << 3)
+
+#endif
+
+/* cl_command_queue_info */
+#define CL_QUEUE_CONTEXT 0x1090
+#define CL_QUEUE_DEVICE 0x1091
+#define CL_QUEUE_REFERENCE_COUNT 0x1092
+#define CL_QUEUE_PROPERTIES 0x1093
+#ifdef CL_VERSION_2_0
+#define CL_QUEUE_SIZE 0x1094
+#endif
+#ifdef CL_VERSION_2_1
+#define CL_QUEUE_DEVICE_DEFAULT 0x1095
+#endif
+
+/* cl_mem_flags and cl_svm_mem_flags - bitfield */
+#define CL_MEM_READ_WRITE (1 << 0)
+#define CL_MEM_WRITE_ONLY (1 << 1)
+#define CL_MEM_READ_ONLY (1 << 2)
+#define CL_MEM_USE_HOST_PTR (1 << 3)
+#define CL_MEM_ALLOC_HOST_PTR (1 << 4)
+#define CL_MEM_COPY_HOST_PTR (1 << 5)
+/* reserved (1 << 6) */
+#ifdef CL_VERSION_1_2
+#define CL_MEM_HOST_WRITE_ONLY (1 << 7)
+#define CL_MEM_HOST_READ_ONLY (1 << 8)
+#define CL_MEM_HOST_NO_ACCESS (1 << 9)
+#endif
+#ifdef CL_VERSION_2_0
+#define CL_MEM_SVM_FINE_GRAIN_BUFFER (1 << 10) /* used by cl_svm_mem_flags only */
+#define CL_MEM_SVM_ATOMICS (1 << 11) /* used by cl_svm_mem_flags only */
+#define CL_MEM_KERNEL_READ_AND_WRITE (1 << 12)
+#endif
+
+#ifdef CL_VERSION_1_2
+
+/* cl_mem_migration_flags - bitfield */
+#define CL_MIGRATE_MEM_OBJECT_HOST (1 << 0)
+#define CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED (1 << 1)
+
+#endif
+
+/* cl_channel_order */
+#define CL_R 0x10B0
+#define CL_A 0x10B1
+#define CL_RG 0x10B2
+#define CL_RA 0x10B3
+#define CL_RGB 0x10B4
+#define CL_RGBA 0x10B5
+#define CL_BGRA 0x10B6
+#define CL_ARGB 0x10B7
+#define CL_INTENSITY 0x10B8
+#define CL_LUMINANCE 0x10B9
+#ifdef CL_VERSION_1_1
+#define CL_Rx 0x10BA
+#define CL_RGx 0x10BB
+#define CL_RGBx 0x10BC
+#endif
+#ifdef CL_VERSION_1_2
+#define CL_DEPTH 0x10BD
+#define CL_DEPTH_STENCIL 0x10BE
+#endif
+#ifdef CL_VERSION_2_0
+#define CL_sRGB 0x10BF
+#define CL_sRGBx 0x10C0
+#define CL_sRGBA 0x10C1
+#define CL_sBGRA 0x10C2
+#define CL_ABGR 0x10C3
+#endif
+
+/* cl_channel_type */
+#define CL_SNORM_INT8 0x10D0
+#define CL_SNORM_INT16 0x10D1
+#define CL_UNORM_INT8 0x10D2
+#define CL_UNORM_INT16 0x10D3
+#define CL_UNORM_SHORT_565 0x10D4
+#define CL_UNORM_SHORT_555 0x10D5
+#define CL_UNORM_INT_101010 0x10D6
+#define CL_SIGNED_INT8 0x10D7
+#define CL_SIGNED_INT16 0x10D8
+#define CL_SIGNED_INT32 0x10D9
+#define CL_UNSIGNED_INT8 0x10DA
+#define CL_UNSIGNED_INT16 0x10DB
+#define CL_UNSIGNED_INT32 0x10DC
+#define CL_HALF_FLOAT 0x10DD
+#define CL_FLOAT 0x10DE
+#ifdef CL_VERSION_1_2
+#define CL_UNORM_INT24 0x10DF
+#endif
+#ifdef CL_VERSION_2_1
+#define CL_UNORM_INT_101010_2 0x10E0
+#endif
+
+/* cl_mem_object_type */
+#define CL_MEM_OBJECT_BUFFER 0x10F0
+#define CL_MEM_OBJECT_IMAGE2D 0x10F1
+#define CL_MEM_OBJECT_IMAGE3D 0x10F2
+#ifdef CL_VERSION_1_2
+#define CL_MEM_OBJECT_IMAGE2D_ARRAY 0x10F3
+#define CL_MEM_OBJECT_IMAGE1D 0x10F4
+#define CL_MEM_OBJECT_IMAGE1D_ARRAY 0x10F5
+#define CL_MEM_OBJECT_IMAGE1D_BUFFER 0x10F6
+#endif
+#ifdef CL_VERSION_2_0
+#define CL_MEM_OBJECT_PIPE 0x10F7
+#endif
+
+/* cl_mem_info */
+#define CL_MEM_TYPE 0x1100
+#define CL_MEM_FLAGS 0x1101
+#define CL_MEM_SIZE 0x1102
+#define CL_MEM_HOST_PTR 0x1103
+#define CL_MEM_MAP_COUNT 0x1104
+#define CL_MEM_REFERENCE_COUNT 0x1105
+#define CL_MEM_CONTEXT 0x1106
+#ifdef CL_VERSION_1_1
+#define CL_MEM_ASSOCIATED_MEMOBJECT 0x1107
+#define CL_MEM_OFFSET 0x1108
+#endif
+#ifdef CL_VERSION_2_0
+#define CL_MEM_USES_SVM_POINTER 0x1109
+#endif
+
+/* cl_image_info */
+#define CL_IMAGE_FORMAT 0x1110
+#define CL_IMAGE_ELEMENT_SIZE 0x1111
+#define CL_IMAGE_ROW_PITCH 0x1112
+#define CL_IMAGE_SLICE_PITCH 0x1113
+#define CL_IMAGE_WIDTH 0x1114
+#define CL_IMAGE_HEIGHT 0x1115
+#define CL_IMAGE_DEPTH 0x1116
+#ifdef CL_VERSION_1_2
+#define CL_IMAGE_ARRAY_SIZE 0x1117
+#define CL_IMAGE_BUFFER 0x1118
+#define CL_IMAGE_NUM_MIP_LEVELS 0x1119
+#define CL_IMAGE_NUM_SAMPLES 0x111A
+#endif
+
+#ifdef CL_VERSION_2_0
+
+/* cl_pipe_info */
+#define CL_PIPE_PACKET_SIZE 0x1120
+#define CL_PIPE_MAX_PACKETS 0x1121
+
+#endif
+
+/* cl_addressing_mode */
+#define CL_ADDRESS_NONE 0x1130
+#define CL_ADDRESS_CLAMP_TO_EDGE 0x1131
+#define CL_ADDRESS_CLAMP 0x1132
+#define CL_ADDRESS_REPEAT 0x1133
+#ifdef CL_VERSION_1_1
+#define CL_ADDRESS_MIRRORED_REPEAT 0x1134
+#endif
+
+/* cl_filter_mode */
+#define CL_FILTER_NEAREST 0x1140
+#define CL_FILTER_LINEAR 0x1141
+
+/* cl_sampler_info */
+#define CL_SAMPLER_REFERENCE_COUNT 0x1150
+#define CL_SAMPLER_CONTEXT 0x1151
+#define CL_SAMPLER_NORMALIZED_COORDS 0x1152
+#define CL_SAMPLER_ADDRESSING_MODE 0x1153
+#define CL_SAMPLER_FILTER_MODE 0x1154
+#ifdef CL_VERSION_2_0
+/* These enumerants are for the cl_khr_mipmap_image extension.
+ They have since been added to cl_ext.h with an appropriate
+ KHR suffix, but are left here for backwards compatibility. */
+#define CL_SAMPLER_MIP_FILTER_MODE 0x1155
+#define CL_SAMPLER_LOD_MIN 0x1156
+#define CL_SAMPLER_LOD_MAX 0x1157
+#endif
+
+/* cl_map_flags - bitfield */
+#define CL_MAP_READ (1 << 0)
+#define CL_MAP_WRITE (1 << 1)
+#ifdef CL_VERSION_1_2
+#define CL_MAP_WRITE_INVALIDATE_REGION (1 << 2)
+#endif
+
+/* cl_program_info */
+#define CL_PROGRAM_REFERENCE_COUNT 0x1160
+#define CL_PROGRAM_CONTEXT 0x1161
+#define CL_PROGRAM_NUM_DEVICES 0x1162
+#define CL_PROGRAM_DEVICES 0x1163
+#define CL_PROGRAM_SOURCE 0x1164
+#define CL_PROGRAM_BINARY_SIZES 0x1165
+#define CL_PROGRAM_BINARIES 0x1166
+#ifdef CL_VERSION_1_2
+#define CL_PROGRAM_NUM_KERNELS 0x1167
+#define CL_PROGRAM_KERNEL_NAMES 0x1168
+#endif
+#ifdef CL_VERSION_2_1
+#define CL_PROGRAM_IL 0x1169
+#endif
+#ifdef CL_VERSION_2_2
+#define CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT 0x116A
+#define CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT 0x116B
+#endif
+
+/* cl_program_build_info */
+#define CL_PROGRAM_BUILD_STATUS 0x1181
+#define CL_PROGRAM_BUILD_OPTIONS 0x1182
+#define CL_PROGRAM_BUILD_LOG 0x1183
+#ifdef CL_VERSION_1_2
+#define CL_PROGRAM_BINARY_TYPE 0x1184
+#endif
+#ifdef CL_VERSION_2_0
+#define CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE 0x1185
+#endif
+
+#ifdef CL_VERSION_1_2
+
+/* cl_program_binary_type */
+#define CL_PROGRAM_BINARY_TYPE_NONE 0x0
+#define CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT 0x1
+#define CL_PROGRAM_BINARY_TYPE_LIBRARY 0x2
+#define CL_PROGRAM_BINARY_TYPE_EXECUTABLE 0x4
+
+#endif
+
+/* cl_build_status */
+#define CL_BUILD_SUCCESS 0
+#define CL_BUILD_NONE -1
+#define CL_BUILD_ERROR -2
+#define CL_BUILD_IN_PROGRESS -3
+
+/* cl_kernel_info */
+#define CL_KERNEL_FUNCTION_NAME 0x1190
+#define CL_KERNEL_NUM_ARGS 0x1191
+#define CL_KERNEL_REFERENCE_COUNT 0x1192
+#define CL_KERNEL_CONTEXT 0x1193
+#define CL_KERNEL_PROGRAM 0x1194
+#ifdef CL_VERSION_1_2
+#define CL_KERNEL_ATTRIBUTES 0x1195
+#endif
+#ifdef CL_VERSION_2_1
+#define CL_KERNEL_MAX_NUM_SUB_GROUPS 0x11B9
+#define CL_KERNEL_COMPILE_NUM_SUB_GROUPS 0x11BA
+#endif
+
+#ifdef CL_VERSION_1_2
+
+/* cl_kernel_arg_info */
+#define CL_KERNEL_ARG_ADDRESS_QUALIFIER 0x1196
+#define CL_KERNEL_ARG_ACCESS_QUALIFIER 0x1197
+#define CL_KERNEL_ARG_TYPE_NAME 0x1198
+#define CL_KERNEL_ARG_TYPE_QUALIFIER 0x1199
+#define CL_KERNEL_ARG_NAME 0x119A
+
+#endif
+
+#ifdef CL_VERSION_1_2
+
+/* cl_kernel_arg_address_qualifier */
+#define CL_KERNEL_ARG_ADDRESS_GLOBAL 0x119B
+#define CL_KERNEL_ARG_ADDRESS_LOCAL 0x119C
+#define CL_KERNEL_ARG_ADDRESS_CONSTANT 0x119D
+#define CL_KERNEL_ARG_ADDRESS_PRIVATE 0x119E
+
+#endif
+
+#ifdef CL_VERSION_1_2
+
+/* cl_kernel_arg_access_qualifier */
+#define CL_KERNEL_ARG_ACCESS_READ_ONLY 0x11A0
+#define CL_KERNEL_ARG_ACCESS_WRITE_ONLY 0x11A1
+#define CL_KERNEL_ARG_ACCESS_READ_WRITE 0x11A2
+#define CL_KERNEL_ARG_ACCESS_NONE 0x11A3
+
+#endif
+
+#ifdef CL_VERSION_1_2
+
+/* cl_kernel_arg_type_qualifier */
+#define CL_KERNEL_ARG_TYPE_NONE 0
+#define CL_KERNEL_ARG_TYPE_CONST (1 << 0)
+#define CL_KERNEL_ARG_TYPE_RESTRICT (1 << 1)
+#define CL_KERNEL_ARG_TYPE_VOLATILE (1 << 2)
+#ifdef CL_VERSION_2_0
+#define CL_KERNEL_ARG_TYPE_PIPE (1 << 3)
+#endif
+
+#endif
+
+/* cl_kernel_work_group_info */
+#define CL_KERNEL_WORK_GROUP_SIZE 0x11B0
+#define CL_KERNEL_COMPILE_WORK_GROUP_SIZE 0x11B1
+#define CL_KERNEL_LOCAL_MEM_SIZE 0x11B2
+#define CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE 0x11B3
+#define CL_KERNEL_PRIVATE_MEM_SIZE 0x11B4
+#ifdef CL_VERSION_1_2
+#define CL_KERNEL_GLOBAL_WORK_SIZE 0x11B5
+#endif
+
+#ifdef CL_VERSION_2_1
+
+/* cl_kernel_sub_group_info */
+#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE 0x2033
+#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE 0x2034
+#define CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT 0x11B8
+
+#endif
+
+#ifdef CL_VERSION_2_0
+
+/* cl_kernel_exec_info */
+#define CL_KERNEL_EXEC_INFO_SVM_PTRS 0x11B6
+#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM 0x11B7
+
+#endif
+
+/* cl_event_info */
+#define CL_EVENT_COMMAND_QUEUE 0x11D0
+#define CL_EVENT_COMMAND_TYPE 0x11D1
+#define CL_EVENT_REFERENCE_COUNT 0x11D2
+#define CL_EVENT_COMMAND_EXECUTION_STATUS 0x11D3
+#ifdef CL_VERSION_1_1
+#define CL_EVENT_CONTEXT 0x11D4
+#endif
+
+/* cl_command_type */
+#define CL_COMMAND_NDRANGE_KERNEL 0x11F0
+#define CL_COMMAND_TASK 0x11F1
+#define CL_COMMAND_NATIVE_KERNEL 0x11F2
+#define CL_COMMAND_READ_BUFFER 0x11F3
+#define CL_COMMAND_WRITE_BUFFER 0x11F4
+#define CL_COMMAND_COPY_BUFFER 0x11F5
+#define CL_COMMAND_READ_IMAGE 0x11F6
+#define CL_COMMAND_WRITE_IMAGE 0x11F7
+#define CL_COMMAND_COPY_IMAGE 0x11F8
+#define CL_COMMAND_COPY_IMAGE_TO_BUFFER 0x11F9
+#define CL_COMMAND_COPY_BUFFER_TO_IMAGE 0x11FA
+#define CL_COMMAND_MAP_BUFFER 0x11FB
+#define CL_COMMAND_MAP_IMAGE 0x11FC
+#define CL_COMMAND_UNMAP_MEM_OBJECT 0x11FD
+#define CL_COMMAND_MARKER 0x11FE
+#define CL_COMMAND_ACQUIRE_GL_OBJECTS 0x11FF
+#define CL_COMMAND_RELEASE_GL_OBJECTS 0x1200
+#ifdef CL_VERSION_1_1
+#define CL_COMMAND_READ_BUFFER_RECT 0x1201
+#define CL_COMMAND_WRITE_BUFFER_RECT 0x1202
+#define CL_COMMAND_COPY_BUFFER_RECT 0x1203
+#define CL_COMMAND_USER 0x1204
+#endif
+#ifdef CL_VERSION_1_2
+#define CL_COMMAND_BARRIER 0x1205
+#define CL_COMMAND_MIGRATE_MEM_OBJECTS 0x1206
+#define CL_COMMAND_FILL_BUFFER 0x1207
+#define CL_COMMAND_FILL_IMAGE 0x1208
+#endif
+#ifdef CL_VERSION_2_0
+#define CL_COMMAND_SVM_FREE 0x1209
+#define CL_COMMAND_SVM_MEMCPY 0x120A
+#define CL_COMMAND_SVM_MEMFILL 0x120B
+#define CL_COMMAND_SVM_MAP 0x120C
+#define CL_COMMAND_SVM_UNMAP 0x120D
+#endif
+
+/* command execution status */
+#define CL_COMPLETE 0x0
+#define CL_RUNNING 0x1
+#define CL_SUBMITTED 0x2
+#define CL_QUEUED 0x3
+
+#ifdef CL_VERSION_1_1
+
+/* cl_buffer_create_type */
+#define CL_BUFFER_CREATE_TYPE_REGION 0x1220
+
+#endif
+
+/* cl_profiling_info */
+#define CL_PROFILING_COMMAND_QUEUED 0x1280
+#define CL_PROFILING_COMMAND_SUBMIT 0x1281
+#define CL_PROFILING_COMMAND_START 0x1282
+#define CL_PROFILING_COMMAND_END 0x1283
+#ifdef CL_VERSION_2_0
+#define CL_PROFILING_COMMAND_COMPLETE 0x1284
+#endif
+
+/********************************************************************************************************/
+
+/* Platform API */
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetPlatformIDs(cl_uint num_entries,
+ cl_platform_id * platforms,
+ cl_uint * num_platforms) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetPlatformInfo(cl_platform_id platform,
+ cl_platform_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
+
+/* Device APIs */
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetDeviceIDs(cl_platform_id platform,
+ cl_device_type device_type,
+ cl_uint num_entries,
+ cl_device_id * devices,
+ cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetDeviceInfo(cl_device_id device,
+ cl_device_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_1_2
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clCreateSubDevices(cl_device_id in_device,
+ const cl_device_partition_property * properties,
+ cl_uint num_devices,
+ cl_device_id * out_devices,
+ cl_uint * num_devices_ret) CL_API_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clRetainDevice(cl_device_id device) CL_API_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clReleaseDevice(cl_device_id device) CL_API_SUFFIX__VERSION_1_2;
+
+#endif
+
+#ifdef CL_VERSION_2_1
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clSetDefaultDeviceCommandQueue(cl_context context,
+ cl_device_id device,
+ cl_command_queue command_queue) CL_API_SUFFIX__VERSION_2_1;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetDeviceAndHostTimer(cl_device_id device,
+ cl_ulong* device_timestamp,
+ cl_ulong* host_timestamp) CL_API_SUFFIX__VERSION_2_1;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetHostTimer(cl_device_id device,
+ cl_ulong * host_timestamp) CL_API_SUFFIX__VERSION_2_1;
+
+#endif
+
+/* Context APIs */
+extern CL_API_ENTRY cl_context CL_API_CALL
+clCreateContext(const cl_context_properties * properties,
+ cl_uint num_devices,
+ const cl_device_id * devices,
+ void (CL_CALLBACK * pfn_notify)(const char * errinfo,
+ const void * private_info,
+ size_t cb,
+ void * user_data),
+ void * user_data,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_context CL_API_CALL
+clCreateContextFromType(const cl_context_properties * properties,
+ cl_device_type device_type,
+ void (CL_CALLBACK * pfn_notify)(const char * errinfo,
+ const void * private_info,
+ size_t cb,
+ void * user_data),
+ void * user_data,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clRetainContext(cl_context context) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clReleaseContext(cl_context context) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetContextInfo(cl_context context,
+ cl_context_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
+
+/* Command Queue APIs */
+
+#ifdef CL_VERSION_2_0
+
+extern CL_API_ENTRY cl_command_queue CL_API_CALL
+clCreateCommandQueueWithProperties(cl_context context,
+ cl_device_id device,
+ const cl_queue_properties * properties,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0;
+
+#endif
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clRetainCommandQueue(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clReleaseCommandQueue(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetCommandQueueInfo(cl_command_queue command_queue,
+ cl_command_queue_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
+
+/* Memory Object APIs */
+extern CL_API_ENTRY cl_mem CL_API_CALL
+clCreateBuffer(cl_context context,
+ cl_mem_flags flags,
+ size_t size,
+ void * host_ptr,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_1_1
+
+extern CL_API_ENTRY cl_mem CL_API_CALL
+clCreateSubBuffer(cl_mem buffer,
+ cl_mem_flags flags,
+ cl_buffer_create_type buffer_create_type,
+ const void * buffer_create_info,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_1;
+
+#endif
+
+#ifdef CL_VERSION_1_2
+
+extern CL_API_ENTRY cl_mem CL_API_CALL
+clCreateImage(cl_context context,
+ cl_mem_flags flags,
+ const cl_image_format * image_format,
+ const cl_image_desc * image_desc,
+ void * host_ptr,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2;
+
+#endif
+
+#ifdef CL_VERSION_2_0
+
+extern CL_API_ENTRY cl_mem CL_API_CALL
+clCreatePipe(cl_context context,
+ cl_mem_flags flags,
+ cl_uint pipe_packet_size,
+ cl_uint pipe_max_packets,
+ const cl_pipe_properties * properties,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0;
+
+#endif
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clRetainMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clReleaseMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetSupportedImageFormats(cl_context context,
+ cl_mem_flags flags,
+ cl_mem_object_type image_type,
+ cl_uint num_entries,
+ cl_image_format * image_formats,
+ cl_uint * num_image_formats) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetMemObjectInfo(cl_mem memobj,
+ cl_mem_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetImageInfo(cl_mem image,
+ cl_image_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_2_0
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetPipeInfo(cl_mem pipe,
+ cl_pipe_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_2_0;
+
+#endif
+
+#ifdef CL_VERSION_1_1
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clSetMemObjectDestructorCallback(cl_mem memobj,
+ void (CL_CALLBACK * pfn_notify)(cl_mem memobj,
+ void * user_data),
+ void * user_data) CL_API_SUFFIX__VERSION_1_1;
+
+#endif
+
+/* SVM Allocation APIs */
+
+#ifdef CL_VERSION_2_0
+
+extern CL_API_ENTRY void * CL_API_CALL
+clSVMAlloc(cl_context context,
+ cl_svm_mem_flags flags,
+ size_t size,
+ cl_uint alignment) CL_API_SUFFIX__VERSION_2_0;
+
+extern CL_API_ENTRY void CL_API_CALL
+clSVMFree(cl_context context,
+ void * svm_pointer) CL_API_SUFFIX__VERSION_2_0;
+
+#endif
+
+/* Sampler APIs */
+
+#ifdef CL_VERSION_2_0
+
+extern CL_API_ENTRY cl_sampler CL_API_CALL
+clCreateSamplerWithProperties(cl_context context,
+ const cl_sampler_properties * sampler_properties,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0;
+
+#endif
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clRetainSampler(cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clReleaseSampler(cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetSamplerInfo(cl_sampler sampler,
+ cl_sampler_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
+
+/* Program Object APIs */
+extern CL_API_ENTRY cl_program CL_API_CALL
+clCreateProgramWithSource(cl_context context,
+ cl_uint count,
+ const char ** strings,
+ const size_t * lengths,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_program CL_API_CALL
+clCreateProgramWithBinary(cl_context context,
+ cl_uint num_devices,
+ const cl_device_id * device_list,
+ const size_t * lengths,
+ const unsigned char ** binaries,
+ cl_int * binary_status,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_1_2
+
+extern CL_API_ENTRY cl_program CL_API_CALL
+clCreateProgramWithBuiltInKernels(cl_context context,
+ cl_uint num_devices,
+ const cl_device_id * device_list,
+ const char * kernel_names,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2;
+
+#endif
+
+#ifdef CL_VERSION_2_1
+
+extern CL_API_ENTRY cl_program CL_API_CALL
+clCreateProgramWithIL(cl_context context,
+ const void* il,
+ size_t length,
+ cl_int* errcode_ret) CL_API_SUFFIX__VERSION_2_1;
+
+#endif
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clRetainProgram(cl_program program) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clReleaseProgram(cl_program program) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clBuildProgram(cl_program program,
+ cl_uint num_devices,
+ const cl_device_id * device_list,
+ const char * options,
+ void (CL_CALLBACK * pfn_notify)(cl_program program,
+ void * user_data),
+ void * user_data) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_1_2
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clCompileProgram(cl_program program,
+ cl_uint num_devices,
+ const cl_device_id * device_list,
+ const char * options,
+ cl_uint num_input_headers,
+ const cl_program * input_headers,
+ const char ** header_include_names,
+ void (CL_CALLBACK * pfn_notify)(cl_program program,
+ void * user_data),
+ void * user_data) CL_API_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_program CL_API_CALL
+clLinkProgram(cl_context context,
+ cl_uint num_devices,
+ const cl_device_id * device_list,
+ const char * options,
+ cl_uint num_input_programs,
+ const cl_program * input_programs,
+ void (CL_CALLBACK * pfn_notify)(cl_program program,
+ void * user_data),
+ void * user_data,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2;
+
+#endif
+
+#ifdef CL_VERSION_2_2
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clSetProgramReleaseCallback(cl_program program,
+ void (CL_CALLBACK * pfn_notify)(cl_program program,
+ void * user_data),
+ void * user_data) CL_API_SUFFIX__VERSION_2_2;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clSetProgramSpecializationConstant(cl_program program,
+ cl_uint spec_id,
+ size_t spec_size,
+ const void* spec_value) CL_API_SUFFIX__VERSION_2_2;
+
+#endif
+
+#ifdef CL_VERSION_1_2
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clUnloadPlatformCompiler(cl_platform_id platform) CL_API_SUFFIX__VERSION_1_2;
+
+#endif
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetProgramInfo(cl_program program,
+ cl_program_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetProgramBuildInfo(cl_program program,
+ cl_device_id device,
+ cl_program_build_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
+
+/* Kernel Object APIs */
+extern CL_API_ENTRY cl_kernel CL_API_CALL
+clCreateKernel(cl_program program,
+ const char * kernel_name,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clCreateKernelsInProgram(cl_program program,
+ cl_uint num_kernels,
+ cl_kernel * kernels,
+ cl_uint * num_kernels_ret) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_2_1
+
+extern CL_API_ENTRY cl_kernel CL_API_CALL
+clCloneKernel(cl_kernel source_kernel,
+ cl_int* errcode_ret) CL_API_SUFFIX__VERSION_2_1;
+
+#endif
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clRetainKernel(cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clReleaseKernel(cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clSetKernelArg(cl_kernel kernel,
+ cl_uint arg_index,
+ size_t arg_size,
+ const void * arg_value) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_2_0
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clSetKernelArgSVMPointer(cl_kernel kernel,
+ cl_uint arg_index,
+ const void * arg_value) CL_API_SUFFIX__VERSION_2_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clSetKernelExecInfo(cl_kernel kernel,
+ cl_kernel_exec_info param_name,
+ size_t param_value_size,
+ const void * param_value) CL_API_SUFFIX__VERSION_2_0;
+
+#endif
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetKernelInfo(cl_kernel kernel,
+ cl_kernel_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_1_2
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetKernelArgInfo(cl_kernel kernel,
+ cl_uint arg_indx,
+ cl_kernel_arg_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_2;
+
+#endif
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetKernelWorkGroupInfo(cl_kernel kernel,
+ cl_device_id device,
+ cl_kernel_work_group_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_2_1
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetKernelSubGroupInfo(cl_kernel kernel,
+ cl_device_id device,
+ cl_kernel_sub_group_info param_name,
+ size_t input_value_size,
+ const void* input_value,
+ size_t param_value_size,
+ void* param_value,
+ size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_2_1;
+
+#endif
+
+/* Event Object APIs */
+extern CL_API_ENTRY cl_int CL_API_CALL
+clWaitForEvents(cl_uint num_events,
+ const cl_event * event_list) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetEventInfo(cl_event event,
+ cl_event_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_1_1
+
+extern CL_API_ENTRY cl_event CL_API_CALL
+clCreateUserEvent(cl_context context,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_1;
+
+#endif
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clRetainEvent(cl_event event) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clReleaseEvent(cl_event event) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_1_1
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clSetUserEventStatus(cl_event event,
+ cl_int execution_status) CL_API_SUFFIX__VERSION_1_1;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clSetEventCallback(cl_event event,
+ cl_int command_exec_callback_type,
+ void (CL_CALLBACK * pfn_notify)(cl_event event,
+ cl_int event_command_status,
+ void * user_data),
+ void * user_data) CL_API_SUFFIX__VERSION_1_1;
+
+#endif
+
+/* Profiling APIs */
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetEventProfilingInfo(cl_event event,
+ cl_profiling_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
+
+/* Flush and Finish APIs */
+extern CL_API_ENTRY cl_int CL_API_CALL
+clFlush(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clFinish(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0;
+
+/* Enqueued Commands APIs */
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueReadBuffer(cl_command_queue command_queue,
+ cl_mem buffer,
+ cl_bool blocking_read,
+ size_t offset,
+ size_t size,
+ void * ptr,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_1_1
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueReadBufferRect(cl_command_queue command_queue,
+ cl_mem buffer,
+ cl_bool blocking_read,
+ const size_t * buffer_offset,
+ const size_t * host_offset,
+ const size_t * region,
+ size_t buffer_row_pitch,
+ size_t buffer_slice_pitch,
+ size_t host_row_pitch,
+ size_t host_slice_pitch,
+ void * ptr,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_1;
+
+#endif
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueWriteBuffer(cl_command_queue command_queue,
+ cl_mem buffer,
+ cl_bool blocking_write,
+ size_t offset,
+ size_t size,
+ const void * ptr,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_1_1
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueWriteBufferRect(cl_command_queue command_queue,
+ cl_mem buffer,
+ cl_bool blocking_write,
+ const size_t * buffer_offset,
+ const size_t * host_offset,
+ const size_t * region,
+ size_t buffer_row_pitch,
+ size_t buffer_slice_pitch,
+ size_t host_row_pitch,
+ size_t host_slice_pitch,
+ const void * ptr,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_1;
+
+#endif
+
+#ifdef CL_VERSION_1_2
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueFillBuffer(cl_command_queue command_queue,
+ cl_mem buffer,
+ const void * pattern,
+ size_t pattern_size,
+ size_t offset,
+ size_t size,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_2;
+
+#endif
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueCopyBuffer(cl_command_queue command_queue,
+ cl_mem src_buffer,
+ cl_mem dst_buffer,
+ size_t src_offset,
+ size_t dst_offset,
+ size_t size,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_1_1
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueCopyBufferRect(cl_command_queue command_queue,
+ cl_mem src_buffer,
+ cl_mem dst_buffer,
+ const size_t * src_origin,
+ const size_t * dst_origin,
+ const size_t * region,
+ size_t src_row_pitch,
+ size_t src_slice_pitch,
+ size_t dst_row_pitch,
+ size_t dst_slice_pitch,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_1;
+
+#endif
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueReadImage(cl_command_queue command_queue,
+ cl_mem image,
+ cl_bool blocking_read,
+ const size_t * origin,
+ const size_t * region,
+ size_t row_pitch,
+ size_t slice_pitch,
+ void * ptr,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueWriteImage(cl_command_queue command_queue,
+ cl_mem image,
+ cl_bool blocking_write,
+ const size_t * origin,
+ const size_t * region,
+ size_t input_row_pitch,
+ size_t input_slice_pitch,
+ const void * ptr,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_1_2
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueFillImage(cl_command_queue command_queue,
+ cl_mem image,
+ const void * fill_color,
+ const size_t * origin,
+ const size_t * region,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_2;
+
+#endif
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueCopyImage(cl_command_queue command_queue,
+ cl_mem src_image,
+ cl_mem dst_image,
+ const size_t * src_origin,
+ const size_t * dst_origin,
+ const size_t * region,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueCopyImageToBuffer(cl_command_queue command_queue,
+ cl_mem src_image,
+ cl_mem dst_buffer,
+ const size_t * src_origin,
+ const size_t * region,
+ size_t dst_offset,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueCopyBufferToImage(cl_command_queue command_queue,
+ cl_mem src_buffer,
+ cl_mem dst_image,
+ size_t src_offset,
+ const size_t * dst_origin,
+ const size_t * region,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY void * CL_API_CALL
+clEnqueueMapBuffer(cl_command_queue command_queue,
+ cl_mem buffer,
+ cl_bool blocking_map,
+ cl_map_flags map_flags,
+ size_t offset,
+ size_t size,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY void * CL_API_CALL
+clEnqueueMapImage(cl_command_queue command_queue,
+ cl_mem image,
+ cl_bool blocking_map,
+ cl_map_flags map_flags,
+ const size_t * origin,
+ const size_t * region,
+ size_t * image_row_pitch,
+ size_t * image_slice_pitch,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueUnmapMemObject(cl_command_queue command_queue,
+ cl_mem memobj,
+ void * mapped_ptr,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_1_2
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueMigrateMemObjects(cl_command_queue command_queue,
+ cl_uint num_mem_objects,
+ const cl_mem * mem_objects,
+ cl_mem_migration_flags flags,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_2;
+
+#endif
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueNDRangeKernel(cl_command_queue command_queue,
+ cl_kernel kernel,
+ cl_uint work_dim,
+ const size_t * global_work_offset,
+ const size_t * global_work_size,
+ const size_t * local_work_size,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueNativeKernel(cl_command_queue command_queue,
+ void (CL_CALLBACK * user_func)(void *),
+ void * args,
+ size_t cb_args,
+ cl_uint num_mem_objects,
+ const cl_mem * mem_list,
+ const void ** args_mem_loc,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_1_2
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueMarkerWithWaitList(cl_command_queue command_queue,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueBarrierWithWaitList(cl_command_queue command_queue,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_2;
+
+#endif
+
+#ifdef CL_VERSION_2_0
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueSVMFree(cl_command_queue command_queue,
+ cl_uint num_svm_pointers,
+ void * svm_pointers[],
+ void (CL_CALLBACK * pfn_free_func)(cl_command_queue queue,
+ cl_uint num_svm_pointers,
+ void * svm_pointers[],
+ void * user_data),
+ void * user_data,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_2_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueSVMMemcpy(cl_command_queue command_queue,
+ cl_bool blocking_copy,
+ void * dst_ptr,
+ const void * src_ptr,
+ size_t size,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_2_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueSVMMemFill(cl_command_queue command_queue,
+ void * svm_ptr,
+ const void * pattern,
+ size_t pattern_size,
+ size_t size,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_2_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueSVMMap(cl_command_queue command_queue,
+ cl_bool blocking_map,
+ cl_map_flags flags,
+ void * svm_ptr,
+ size_t size,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_2_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueSVMUnmap(cl_command_queue command_queue,
+ void * svm_ptr,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_2_0;
+
+#endif
+
+#ifdef CL_VERSION_2_1
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueSVMMigrateMem(cl_command_queue command_queue,
+ cl_uint num_svm_pointers,
+ const void ** svm_pointers,
+ const size_t * sizes,
+ cl_mem_migration_flags flags,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_2_1;
+
+#endif
+
+#ifdef CL_VERSION_1_2
+
+/* Extension function access
+ *
+ * Returns the extension function address for the given function name,
+ * or NULL if a valid function can not be found. The client must
+ * check to make sure the address is not NULL, before using or
+ * calling the returned function address.
+ */
+extern CL_API_ENTRY void * CL_API_CALL
+clGetExtensionFunctionAddressForPlatform(cl_platform_id platform,
+ const char * func_name) CL_API_SUFFIX__VERSION_1_2;
+
+#endif
+
+#ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS
+ /*
+ * WARNING:
+ * This API introduces mutable state into the OpenCL implementation. It has been REMOVED
+ * to better facilitate thread safety. The 1.0 API is not thread safe. It is not tested by the
+ * OpenCL 1.1 conformance test, and consequently may not work or may not work dependably.
+ * It is likely to be non-performant. Use of this API is not advised. Use at your own risk.
+ *
+ * Software developers previously relying on this API are instructed to set the command queue
+ * properties when creating the queue, instead.
+ */
+ extern CL_API_ENTRY cl_int CL_API_CALL
+ clSetCommandQueueProperty(cl_command_queue command_queue,
+ cl_command_queue_properties properties,
+ cl_bool enable,
+ cl_command_queue_properties * old_properties) CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED;
+#endif /* CL_USE_DEPRECATED_OPENCL_1_0_APIS */
+
+/* Deprecated OpenCL 1.1 APIs */
+extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL
+clCreateImage2D(cl_context context,
+ cl_mem_flags flags,
+ const cl_image_format * image_format,
+ size_t image_width,
+ size_t image_height,
+ size_t image_row_pitch,
+ void * host_ptr,
+ cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
+
+extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL
+clCreateImage3D(cl_context context,
+ cl_mem_flags flags,
+ const cl_image_format * image_format,
+ size_t image_width,
+ size_t image_height,
+ size_t image_depth,
+ size_t image_row_pitch,
+ size_t image_slice_pitch,
+ void * host_ptr,
+ cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
+
+extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL
+clEnqueueMarker(cl_command_queue command_queue,
+ cl_event * event) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
+
+extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL
+clEnqueueWaitForEvents(cl_command_queue command_queue,
+ cl_uint num_events,
+ const cl_event * event_list) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
+
+extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL
+clEnqueueBarrier(cl_command_queue command_queue) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
+
+extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL
+clUnloadCompiler(void) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
+
+extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED void * CL_API_CALL
+clGetExtensionFunctionAddress(const char * func_name) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
+
+/* Deprecated OpenCL 2.0 APIs */
+extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_command_queue CL_API_CALL
+clCreateCommandQueue(cl_context context,
+ cl_device_id device,
+ cl_command_queue_properties properties,
+ cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED;
+
+extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_sampler CL_API_CALL
+clCreateSampler(cl_context context,
+ cl_bool normalized_coords,
+ cl_addressing_mode addressing_mode,
+ cl_filter_mode filter_mode,
+ cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED;
+
+extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int CL_API_CALL
+clEnqueueTask(cl_command_queue command_queue,
+ cl_kernel kernel,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __OPENCL_CL_H */
diff --git a/src/external/OpenCL/CL/cl_d3d10.h b/src/external/OpenCL/CL/cl_d3d10.h
new file mode 100644
index 000000000..d5960a43f
--- /dev/null
+++ b/src/external/OpenCL/CL/cl_d3d10.h
@@ -0,0 +1,131 @@
+/**********************************************************************************
+ * Copyright (c) 2008-2015 The Khronos Group Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and/or associated documentation files (the
+ * "Materials"), to deal in the Materials without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Materials, and to
+ * permit persons to whom the Materials are furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Materials.
+ *
+ * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+ * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+ * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+ * https://www.khronos.org/registry/
+ *
+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+ **********************************************************************************/
+
+/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */
+
+#ifndef __OPENCL_CL_D3D10_H
+#define __OPENCL_CL_D3D10_H
+
+#include <d3d10.h>
+#include <CL/cl.h>
+#include <CL/cl_platform.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/******************************************************************************
+ * cl_khr_d3d10_sharing */
+#define cl_khr_d3d10_sharing 1
+
+typedef cl_uint cl_d3d10_device_source_khr;
+typedef cl_uint cl_d3d10_device_set_khr;
+
+/******************************************************************************/
+
+/* Error Codes */
+#define CL_INVALID_D3D10_DEVICE_KHR -1002
+#define CL_INVALID_D3D10_RESOURCE_KHR -1003
+#define CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR -1004
+#define CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR -1005
+
+/* cl_d3d10_device_source_nv */
+#define CL_D3D10_DEVICE_KHR 0x4010
+#define CL_D3D10_DXGI_ADAPTER_KHR 0x4011
+
+/* cl_d3d10_device_set_nv */
+#define CL_PREFERRED_DEVICES_FOR_D3D10_KHR 0x4012
+#define CL_ALL_DEVICES_FOR_D3D10_KHR 0x4013
+
+/* cl_context_info */
+#define CL_CONTEXT_D3D10_DEVICE_KHR 0x4014
+#define CL_CONTEXT_D3D10_PREFER_SHARED_RESOURCES_KHR 0x402C
+
+/* cl_mem_info */
+#define CL_MEM_D3D10_RESOURCE_KHR 0x4015
+
+/* cl_image_info */
+#define CL_IMAGE_D3D10_SUBRESOURCE_KHR 0x4016
+
+/* cl_command_type */
+#define CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR 0x4017
+#define CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR 0x4018
+
+/******************************************************************************/
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromD3D10KHR_fn)(
+ cl_platform_id platform,
+ cl_d3d10_device_source_khr d3d_device_source,
+ void * d3d_object,
+ cl_d3d10_device_set_khr d3d_device_set,
+ cl_uint num_entries,
+ cl_device_id * devices,
+ cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_0;
+
+typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10BufferKHR_fn)(
+ cl_context context,
+ cl_mem_flags flags,
+ ID3D10Buffer * resource,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
+
+typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture2DKHR_fn)(
+ cl_context context,
+ cl_mem_flags flags,
+ ID3D10Texture2D * resource,
+ UINT subresource,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
+
+typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture3DKHR_fn)(
+ cl_context context,
+ cl_mem_flags flags,
+ ID3D10Texture3D * resource,
+ UINT subresource,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireD3D10ObjectsKHR_fn)(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem * mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_0;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseD3D10ObjectsKHR_fn)(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem * mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __OPENCL_CL_D3D10_H */
+
diff --git a/src/external/OpenCL/CL/cl_d3d11.h b/src/external/OpenCL/CL/cl_d3d11.h
new file mode 100644
index 000000000..39f907239
--- /dev/null
+++ b/src/external/OpenCL/CL/cl_d3d11.h
@@ -0,0 +1,131 @@
+/**********************************************************************************
+ * Copyright (c) 2008-2015 The Khronos Group Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and/or associated documentation files (the
+ * "Materials"), to deal in the Materials without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Materials, and to
+ * permit persons to whom the Materials are furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Materials.
+ *
+ * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+ * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+ * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+ * https://www.khronos.org/registry/
+ *
+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+ **********************************************************************************/
+
+/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */
+
+#ifndef __OPENCL_CL_D3D11_H
+#define __OPENCL_CL_D3D11_H
+
+#include <d3d11.h>
+#include <CL/cl.h>
+#include <CL/cl_platform.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/******************************************************************************
+ * cl_khr_d3d11_sharing */
+#define cl_khr_d3d11_sharing 1
+
+typedef cl_uint cl_d3d11_device_source_khr;
+typedef cl_uint cl_d3d11_device_set_khr;
+
+/******************************************************************************/
+
+/* Error Codes */
+#define CL_INVALID_D3D11_DEVICE_KHR -1006
+#define CL_INVALID_D3D11_RESOURCE_KHR -1007
+#define CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR -1008
+#define CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR -1009
+
+/* cl_d3d11_device_source */
+#define CL_D3D11_DEVICE_KHR 0x4019
+#define CL_D3D11_DXGI_ADAPTER_KHR 0x401A
+
+/* cl_d3d11_device_set */
+#define CL_PREFERRED_DEVICES_FOR_D3D11_KHR 0x401B
+#define CL_ALL_DEVICES_FOR_D3D11_KHR 0x401C
+
+/* cl_context_info */
+#define CL_CONTEXT_D3D11_DEVICE_KHR 0x401D
+#define CL_CONTEXT_D3D11_PREFER_SHARED_RESOURCES_KHR 0x402D
+
+/* cl_mem_info */
+#define CL_MEM_D3D11_RESOURCE_KHR 0x401E
+
+/* cl_image_info */
+#define CL_IMAGE_D3D11_SUBRESOURCE_KHR 0x401F
+
+/* cl_command_type */
+#define CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR 0x4020
+#define CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR 0x4021
+
+/******************************************************************************/
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromD3D11KHR_fn)(
+ cl_platform_id platform,
+ cl_d3d11_device_source_khr d3d_device_source,
+ void * d3d_object,
+ cl_d3d11_device_set_khr d3d_device_set,
+ cl_uint num_entries,
+ cl_device_id * devices,
+ cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11BufferKHR_fn)(
+ cl_context context,
+ cl_mem_flags flags,
+ ID3D11Buffer * resource,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11Texture2DKHR_fn)(
+ cl_context context,
+ cl_mem_flags flags,
+ ID3D11Texture2D * resource,
+ UINT subresource,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11Texture3DKHR_fn)(
+ cl_context context,
+ cl_mem_flags flags,
+ ID3D11Texture3D * resource,
+ UINT subresource,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireD3D11ObjectsKHR_fn)(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem * mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseD3D11ObjectsKHR_fn)(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem * mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_2;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __OPENCL_CL_D3D11_H */
+
diff --git a/src/external/OpenCL/CL/cl_dx9_media_sharing.h b/src/external/OpenCL/CL/cl_dx9_media_sharing.h
new file mode 100644
index 000000000..2729e8b9e
--- /dev/null
+++ b/src/external/OpenCL/CL/cl_dx9_media_sharing.h
@@ -0,0 +1,132 @@
+/**********************************************************************************
+ * Copyright (c) 2008-2015 The Khronos Group Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and/or associated documentation files (the
+ * "Materials"), to deal in the Materials without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Materials, and to
+ * permit persons to whom the Materials are furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Materials.
+ *
+ * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+ * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+ * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+ * https://www.khronos.org/registry/
+ *
+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+ **********************************************************************************/
+
+/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */
+
+#ifndef __OPENCL_CL_DX9_MEDIA_SHARING_H
+#define __OPENCL_CL_DX9_MEDIA_SHARING_H
+
+#include <CL/cl.h>
+#include <CL/cl_platform.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/******************************************************************************/
+/* cl_khr_dx9_media_sharing */
+#define cl_khr_dx9_media_sharing 1
+
+typedef cl_uint cl_dx9_media_adapter_type_khr;
+typedef cl_uint cl_dx9_media_adapter_set_khr;
+
+#if defined(_WIN32)
+#include <d3d9.h>
+typedef struct _cl_dx9_surface_info_khr
+{
+ IDirect3DSurface9 *resource;
+ HANDLE shared_handle;
+} cl_dx9_surface_info_khr;
+#endif
+
+
+/******************************************************************************/
+
+/* Error Codes */
+#define CL_INVALID_DX9_MEDIA_ADAPTER_KHR -1010
+#define CL_INVALID_DX9_MEDIA_SURFACE_KHR -1011
+#define CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR -1012
+#define CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR -1013
+
+/* cl_media_adapter_type_khr */
+#define CL_ADAPTER_D3D9_KHR 0x2020
+#define CL_ADAPTER_D3D9EX_KHR 0x2021
+#define CL_ADAPTER_DXVA_KHR 0x2022
+
+/* cl_media_adapter_set_khr */
+#define CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2023
+#define CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2024
+
+/* cl_context_info */
+#define CL_CONTEXT_ADAPTER_D3D9_KHR 0x2025
+#define CL_CONTEXT_ADAPTER_D3D9EX_KHR 0x2026
+#define CL_CONTEXT_ADAPTER_DXVA_KHR 0x2027
+
+/* cl_mem_info */
+#define CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR 0x2028
+#define CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR 0x2029
+
+/* cl_image_info */
+#define CL_IMAGE_DX9_MEDIA_PLANE_KHR 0x202A
+
+/* cl_command_type */
+#define CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR 0x202B
+#define CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR 0x202C
+
+/******************************************************************************/
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromDX9MediaAdapterKHR_fn)(
+ cl_platform_id platform,
+ cl_uint num_media_adapters,
+ cl_dx9_media_adapter_type_khr * media_adapter_type,
+ void * media_adapters,
+ cl_dx9_media_adapter_set_khr media_adapter_set,
+ cl_uint num_entries,
+ cl_device_id * devices,
+ cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromDX9MediaSurfaceKHR_fn)(
+ cl_context context,
+ cl_mem_flags flags,
+ cl_dx9_media_adapter_type_khr adapter_type,
+ void * surface_info,
+ cl_uint plane,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireDX9MediaSurfacesKHR_fn)(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem * mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9MediaSurfacesKHR_fn)(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem * mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_2;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_H */
+
diff --git a/src/external/OpenCL/CL/cl_dx9_media_sharing_intel.h b/src/external/OpenCL/CL/cl_dx9_media_sharing_intel.h
new file mode 100644
index 000000000..737e68564
--- /dev/null
+++ b/src/external/OpenCL/CL/cl_dx9_media_sharing_intel.h
@@ -0,0 +1,182 @@
+/**********************************************************************************
+ * Copyright (c) 2008-2019 The Khronos Group Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and/or associated documentation files (the
+ * "Materials"), to deal in the Materials without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Materials, and to
+ * permit persons to whom the Materials are furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Materials.
+ *
+ * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+ * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+ * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+ * https://www.khronos.org/registry/
+ *
+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+ **********************************************************************************/
+/*****************************************************************************\
+
+Copyright (c) 2013-2019 Intel Corporation All Rights Reserved.
+
+THESE MATERIALS ARE PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THESE
+MATERIALS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+File Name: cl_dx9_media_sharing_intel.h
+
+Abstract:
+
+Notes:
+
+\*****************************************************************************/
+
+#ifndef __OPENCL_CL_DX9_MEDIA_SHARING_INTEL_H
+#define __OPENCL_CL_DX9_MEDIA_SHARING_INTEL_H
+
+#include <CL/cl.h>
+#include <CL/cl_platform.h>
+#include <d3d9.h>
+#include <dxvahd.h>
+#include <wtypes.h>
+#include <d3d9types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************
+* cl_intel_dx9_media_sharing extension *
+****************************************/
+
+#define cl_intel_dx9_media_sharing 1
+
+typedef cl_uint cl_dx9_device_source_intel;
+typedef cl_uint cl_dx9_device_set_intel;
+
+/* error codes */
+#define CL_INVALID_DX9_DEVICE_INTEL -1010
+#define CL_INVALID_DX9_RESOURCE_INTEL -1011
+#define CL_DX9_RESOURCE_ALREADY_ACQUIRED_INTEL -1012
+#define CL_DX9_RESOURCE_NOT_ACQUIRED_INTEL -1013
+
+/* cl_dx9_device_source_intel */
+#define CL_D3D9_DEVICE_INTEL 0x4022
+#define CL_D3D9EX_DEVICE_INTEL 0x4070
+#define CL_DXVA_DEVICE_INTEL 0x4071
+
+/* cl_dx9_device_set_intel */
+#define CL_PREFERRED_DEVICES_FOR_DX9_INTEL 0x4024
+#define CL_ALL_DEVICES_FOR_DX9_INTEL 0x4025
+
+/* cl_context_info */
+#define CL_CONTEXT_D3D9_DEVICE_INTEL 0x4026
+#define CL_CONTEXT_D3D9EX_DEVICE_INTEL 0x4072
+#define CL_CONTEXT_DXVA_DEVICE_INTEL 0x4073
+
+/* cl_mem_info */
+#define CL_MEM_DX9_RESOURCE_INTEL 0x4027
+#define CL_MEM_DX9_SHARED_HANDLE_INTEL 0x4074
+
+/* cl_image_info */
+#define CL_IMAGE_DX9_PLANE_INTEL 0x4075
+
+/* cl_command_type */
+#define CL_COMMAND_ACQUIRE_DX9_OBJECTS_INTEL 0x402A
+#define CL_COMMAND_RELEASE_DX9_OBJECTS_INTEL 0x402B
+/******************************************************************************/
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetDeviceIDsFromDX9INTEL(
+ cl_platform_id platform,
+ cl_dx9_device_source_intel dx9_device_source,
+ void* dx9_object,
+ cl_dx9_device_set_intel dx9_device_set,
+ cl_uint num_entries,
+ cl_device_id* devices,
+ cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_1;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL* clGetDeviceIDsFromDX9INTEL_fn)(
+ cl_platform_id platform,
+ cl_dx9_device_source_intel dx9_device_source,
+ void* dx9_object,
+ cl_dx9_device_set_intel dx9_device_set,
+ cl_uint num_entries,
+ cl_device_id* devices,
+ cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_1;
+
+extern CL_API_ENTRY cl_mem CL_API_CALL
+clCreateFromDX9MediaSurfaceINTEL(
+ cl_context context,
+ cl_mem_flags flags,
+ IDirect3DSurface9* resource,
+ HANDLE sharedHandle,
+ UINT plane,
+ cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1;
+
+typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromDX9MediaSurfaceINTEL_fn)(
+ cl_context context,
+ cl_mem_flags flags,
+ IDirect3DSurface9* resource,
+ HANDLE sharedHandle,
+ UINT plane,
+ cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueAcquireDX9ObjectsINTEL(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem* mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event* event_wait_list,
+ cl_event* event) CL_EXT_SUFFIX__VERSION_1_1;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireDX9ObjectsINTEL_fn)(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem* mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event* event_wait_list,
+ cl_event* event) CL_EXT_SUFFIX__VERSION_1_1;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueReleaseDX9ObjectsINTEL(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ cl_mem* mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event* event_wait_list,
+ cl_event* event) CL_EXT_SUFFIX__VERSION_1_1;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9ObjectsINTEL_fn)(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ cl_mem* mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event* event_wait_list,
+ cl_event* event) CL_EXT_SUFFIX__VERSION_1_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_INTEL_H */
+
diff --git a/src/external/OpenCL/CL/cl_egl.h b/src/external/OpenCL/CL/cl_egl.h
new file mode 100644
index 000000000..bc4d998eb
--- /dev/null
+++ b/src/external/OpenCL/CL/cl_egl.h
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2019 The Khronos Group Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and/or associated documentation files (the
+ * "Materials"), to deal in the Materials without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Materials, and to
+ * permit persons to whom the Materials are furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Materials.
+ *
+ * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+ * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+ * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+ * https://www.khronos.org/registry/
+ *
+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+ ******************************************************************************/
+
+#ifndef __OPENCL_CL_EGL_H
+#define __OPENCL_CL_EGL_H
+
+#include <CL/cl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Command type for events created with clEnqueueAcquireEGLObjectsKHR */
+#define CL_COMMAND_EGL_FENCE_SYNC_OBJECT_KHR 0x202F
+#define CL_COMMAND_ACQUIRE_EGL_OBJECTS_KHR 0x202D
+#define CL_COMMAND_RELEASE_EGL_OBJECTS_KHR 0x202E
+
+/* Error type for clCreateFromEGLImageKHR */
+#define CL_INVALID_EGL_OBJECT_KHR -1093
+#define CL_EGL_RESOURCE_NOT_ACQUIRED_KHR -1092
+
+/* CLeglImageKHR is an opaque handle to an EGLImage */
+typedef void* CLeglImageKHR;
+
+/* CLeglDisplayKHR is an opaque handle to an EGLDisplay */
+typedef void* CLeglDisplayKHR;
+
+/* CLeglSyncKHR is an opaque handle to an EGLSync object */
+typedef void* CLeglSyncKHR;
+
+/* properties passed to clCreateFromEGLImageKHR */
+typedef intptr_t cl_egl_image_properties_khr;
+
+
+#define cl_khr_egl_image 1
+
+extern CL_API_ENTRY cl_mem CL_API_CALL
+clCreateFromEGLImageKHR(cl_context context,
+ CLeglDisplayKHR egldisplay,
+ CLeglImageKHR eglimage,
+ cl_mem_flags flags,
+ const cl_egl_image_properties_khr * properties,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
+
+typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromEGLImageKHR_fn)(
+ cl_context context,
+ CLeglDisplayKHR egldisplay,
+ CLeglImageKHR eglimage,
+ cl_mem_flags flags,
+ const cl_egl_image_properties_khr * properties,
+ cl_int * errcode_ret);
+
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueAcquireEGLObjectsKHR(cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem * mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_0;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireEGLObjectsKHR_fn)(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem * mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event);
+
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueReleaseEGLObjectsKHR(cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem * mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_0;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseEGLObjectsKHR_fn)(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem * mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event);
+
+
+#define cl_khr_egl_event 1
+
+extern CL_API_ENTRY cl_event CL_API_CALL
+clCreateEventFromEGLSyncKHR(cl_context context,
+ CLeglSyncKHR sync,
+ CLeglDisplayKHR display,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
+
+typedef CL_API_ENTRY cl_event (CL_API_CALL *clCreateEventFromEGLSyncKHR_fn)(
+ cl_context context,
+ CLeglSyncKHR sync,
+ CLeglDisplayKHR display,
+ cl_int * errcode_ret);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __OPENCL_CL_EGL_H */
diff --git a/src/external/OpenCL/CL/cl_ext.h b/src/external/OpenCL/CL/cl_ext.h
new file mode 100644
index 000000000..5c185915c
--- /dev/null
+++ b/src/external/OpenCL/CL/cl_ext.h
@@ -0,0 +1,762 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2019 The Khronos Group Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and/or associated documentation files (the
+ * "Materials"), to deal in the Materials without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Materials, and to
+ * permit persons to whom the Materials are furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Materials.
+ *
+ * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+ * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+ * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+ * https://www.khronos.org/registry/
+ *
+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+ ******************************************************************************/
+
+/* cl_ext.h contains OpenCL extensions which don't have external */
+/* (OpenGL, D3D) dependencies. */
+
+#ifndef __CL_EXT_H
+#define __CL_EXT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <CL/cl.h>
+
+/* cl_khr_fp64 extension - no extension #define since it has no functions */
+/* CL_DEVICE_DOUBLE_FP_CONFIG is defined in CL.h for OpenCL >= 120 */
+
+#if CL_TARGET_OPENCL_VERSION <= 110
+#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032
+#endif
+
+/* cl_khr_fp16 extension - no extension #define since it has no functions */
+#define CL_DEVICE_HALF_FP_CONFIG 0x1033
+
+/* Memory object destruction
+ *
+ * Apple extension for use to manage externally allocated buffers used with cl_mem objects with CL_MEM_USE_HOST_PTR
+ *
+ * Registers a user callback function that will be called when the memory object is deleted and its resources
+ * freed. Each call to clSetMemObjectCallbackFn registers the specified user callback function on a callback
+ * stack associated with memobj. The registered user callback functions are called in the reverse order in
+ * which they were registered. The user callback functions are called and then the memory object is deleted
+ * and its resources freed. This provides a mechanism for the application (and libraries) using memobj to be
+ * notified when the memory referenced by host_ptr, specified when the memory object is created and used as
+ * the storage bits for the memory object, can be reused or freed.
+ *
+ * The application may not call CL api's with the cl_mem object passed to the pfn_notify.
+ *
+ * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS)
+ * before using.
+ */
+#define cl_APPLE_SetMemObjectDestructor 1
+cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE( cl_mem memobj,
+ void (* pfn_notify)(cl_mem memobj, void * user_data),
+ void * user_data) CL_EXT_SUFFIX__VERSION_1_0;
+
+
+/* Context Logging Functions
+ *
+ * The next three convenience functions are intended to be used as the pfn_notify parameter to clCreateContext().
+ * Please check for the "cl_APPLE_ContextLoggingFunctions" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS)
+ * before using.
+ *
+ * clLogMessagesToSystemLog forwards on all log messages to the Apple System Logger
+ */
+#define cl_APPLE_ContextLoggingFunctions 1
+extern void CL_API_ENTRY clLogMessagesToSystemLogAPPLE( const char * errstr,
+ const void * private_info,
+ size_t cb,
+ void * user_data) CL_EXT_SUFFIX__VERSION_1_0;
+
+/* clLogMessagesToStdout sends all log messages to the file descriptor stdout */
+extern void CL_API_ENTRY clLogMessagesToStdoutAPPLE( const char * errstr,
+ const void * private_info,
+ size_t cb,
+ void * user_data) CL_EXT_SUFFIX__VERSION_1_0;
+
+/* clLogMessagesToStderr sends all log messages to the file descriptor stderr */
+extern void CL_API_ENTRY clLogMessagesToStderrAPPLE( const char * errstr,
+ const void * private_info,
+ size_t cb,
+ void * user_data) CL_EXT_SUFFIX__VERSION_1_0;
+
+
+/************************
+* cl_khr_icd extension *
+************************/
+#define cl_khr_icd 1
+
+/* cl_platform_info */
+#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920
+
+/* Additional Error Codes */
+#define CL_PLATFORM_NOT_FOUND_KHR -1001
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clIcdGetPlatformIDsKHR(cl_uint num_entries,
+ cl_platform_id * platforms,
+ cl_uint * num_platforms);
+
+typedef CL_API_ENTRY cl_int
+(CL_API_CALL *clIcdGetPlatformIDsKHR_fn)(cl_uint num_entries,
+ cl_platform_id * platforms,
+ cl_uint * num_platforms);
+
+
+/*******************************
+ * cl_khr_il_program extension *
+ *******************************/
+#define cl_khr_il_program 1
+
+/* New property to clGetDeviceInfo for retrieving supported intermediate
+ * languages
+ */
+#define CL_DEVICE_IL_VERSION_KHR 0x105B
+
+/* New property to clGetProgramInfo for retrieving for retrieving the IL of a
+ * program
+ */
+#define CL_PROGRAM_IL_KHR 0x1169
+
+extern CL_API_ENTRY cl_program CL_API_CALL
+clCreateProgramWithILKHR(cl_context context,
+ const void * il,
+ size_t length,
+ cl_int * errcode_ret);
+
+typedef CL_API_ENTRY cl_program
+(CL_API_CALL *clCreateProgramWithILKHR_fn)(cl_context context,
+ const void * il,
+ size_t length,
+ cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_2;
+
+/* Extension: cl_khr_image2d_from_buffer
+ *
+ * This extension allows a 2D image to be created from a cl_mem buffer without
+ * a copy. The type associated with a 2D image created from a buffer in an
+ * OpenCL program is image2d_t. Both the sampler and sampler-less read_image
+ * built-in functions are supported for 2D images and 2D images created from
+ * a buffer. Similarly, the write_image built-ins are also supported for 2D
+ * images created from a buffer.
+ *
+ * When the 2D image from buffer is created, the client must specify the
+ * width, height, image format (i.e. channel order and channel data type)
+ * and optionally the row pitch.
+ *
+ * The pitch specified must be a multiple of
+ * CL_DEVICE_IMAGE_PITCH_ALIGNMENT_KHR pixels.
+ * The base address of the buffer must be aligned to
+ * CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR pixels.
+ */
+
+#define CL_DEVICE_IMAGE_PITCH_ALIGNMENT_KHR 0x104A
+#define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR 0x104B
+
+
+/**************************************
+ * cl_khr_initialize_memory extension *
+ **************************************/
+
+#define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x2030
+
+
+/**************************************
+ * cl_khr_terminate_context extension *
+ **************************************/
+
+#define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x2031
+#define CL_CONTEXT_TERMINATE_KHR 0x2032
+
+#define cl_khr_terminate_context 1
+extern CL_API_ENTRY cl_int CL_API_CALL
+clTerminateContextKHR(cl_context context) CL_EXT_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_int
+(CL_API_CALL *clTerminateContextKHR_fn)(cl_context context) CL_EXT_SUFFIX__VERSION_1_2;
+
+
+/*
+ * Extension: cl_khr_spir
+ *
+ * This extension adds support to create an OpenCL program object from a
+ * Standard Portable Intermediate Representation (SPIR) instance
+ */
+
+#define CL_DEVICE_SPIR_VERSIONS 0x40E0
+#define CL_PROGRAM_BINARY_TYPE_INTERMEDIATE 0x40E1
+
+
+/*****************************************
+ * cl_khr_create_command_queue extension *
+ *****************************************/
+#define cl_khr_create_command_queue 1
+
+typedef cl_bitfield cl_queue_properties_khr;
+
+extern CL_API_ENTRY cl_command_queue CL_API_CALL
+clCreateCommandQueueWithPropertiesKHR(cl_context context,
+ cl_device_id device,
+ const cl_queue_properties_khr* properties,
+ cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_command_queue
+(CL_API_CALL *clCreateCommandQueueWithPropertiesKHR_fn)(cl_context context,
+ cl_device_id device,
+ const cl_queue_properties_khr* properties,
+ cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2;
+
+
+/******************************************
+* cl_nv_device_attribute_query extension *
+******************************************/
+
+/* cl_nv_device_attribute_query extension - no extension #define since it has no functions */
+#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000
+#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001
+#define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002
+#define CL_DEVICE_WARP_SIZE_NV 0x4003
+#define CL_DEVICE_GPU_OVERLAP_NV 0x4004
+#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005
+#define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006
+
+
+/*********************************
+* cl_amd_device_attribute_query *
+*********************************/
+
+#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036
+
+
+/*********************************
+* cl_arm_printf extension
+*********************************/
+
+#define CL_PRINTF_CALLBACK_ARM 0x40B0
+#define CL_PRINTF_BUFFERSIZE_ARM 0x40B1
+
+
+/***********************************
+* cl_ext_device_fission extension
+***********************************/
+#define cl_ext_device_fission 1
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clReleaseDeviceEXT(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1;
+
+typedef CL_API_ENTRY cl_int
+(CL_API_CALL *clReleaseDeviceEXT_fn)(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clRetainDeviceEXT(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1;
+
+typedef CL_API_ENTRY cl_int
+(CL_API_CALL *clRetainDeviceEXT_fn)(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1;
+
+typedef cl_ulong cl_device_partition_property_ext;
+extern CL_API_ENTRY cl_int CL_API_CALL
+clCreateSubDevicesEXT(cl_device_id in_device,
+ const cl_device_partition_property_ext * properties,
+ cl_uint num_entries,
+ cl_device_id * out_devices,
+ cl_uint * num_devices) CL_EXT_SUFFIX__VERSION_1_1;
+
+typedef CL_API_ENTRY cl_int
+(CL_API_CALL * clCreateSubDevicesEXT_fn)(cl_device_id in_device,
+ const cl_device_partition_property_ext * properties,
+ cl_uint num_entries,
+ cl_device_id * out_devices,
+ cl_uint * num_devices) CL_EXT_SUFFIX__VERSION_1_1;
+
+/* cl_device_partition_property_ext */
+#define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050
+#define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051
+#define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052
+#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053
+
+/* clDeviceGetInfo selectors */
+#define CL_DEVICE_PARENT_DEVICE_EXT 0x4054
+#define CL_DEVICE_PARTITION_TYPES_EXT 0x4055
+#define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056
+#define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057
+#define CL_DEVICE_PARTITION_STYLE_EXT 0x4058
+
+/* error codes */
+#define CL_DEVICE_PARTITION_FAILED_EXT -1057
+#define CL_INVALID_PARTITION_COUNT_EXT -1058
+#define CL_INVALID_PARTITION_NAME_EXT -1059
+
+/* CL_AFFINITY_DOMAINs */
+#define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1
+#define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2
+#define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3
+#define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4
+#define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10
+#define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100
+
+/* cl_device_partition_property_ext list terminators */
+#define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext) 0)
+#define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext) 0)
+#define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext) 0 - 1)
+
+
+/***********************************
+ * cl_ext_migrate_memobject extension definitions
+ ***********************************/
+#define cl_ext_migrate_memobject 1
+
+typedef cl_bitfield cl_mem_migration_flags_ext;
+
+#define CL_MIGRATE_MEM_OBJECT_HOST_EXT 0x1
+
+#define CL_COMMAND_MIGRATE_MEM_OBJECT_EXT 0x4040
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueMigrateMemObjectEXT(cl_command_queue command_queue,
+ cl_uint num_mem_objects,
+ const cl_mem * mem_objects,
+ cl_mem_migration_flags_ext flags,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event);
+
+typedef CL_API_ENTRY cl_int
+(CL_API_CALL *clEnqueueMigrateMemObjectEXT_fn)(cl_command_queue command_queue,
+ cl_uint num_mem_objects,
+ const cl_mem * mem_objects,
+ cl_mem_migration_flags_ext flags,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event);
+
+
+/*********************************
+* cl_qcom_ext_host_ptr extension
+*********************************/
+#define cl_qcom_ext_host_ptr 1
+
+#define CL_MEM_EXT_HOST_PTR_QCOM (1 << 29)
+
+#define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0
+#define CL_DEVICE_PAGE_SIZE_QCOM 0x40A1
+#define CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2
+#define CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3
+#define CL_MEM_HOST_UNCACHED_QCOM 0x40A4
+#define CL_MEM_HOST_WRITEBACK_QCOM 0x40A5
+#define CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6
+#define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7
+
+typedef cl_uint cl_image_pitch_info_qcom;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetDeviceImageInfoQCOM(cl_device_id device,
+ size_t image_width,
+ size_t image_height,
+ const cl_image_format *image_format,
+ cl_image_pitch_info_qcom param_name,
+ size_t param_value_size,
+ void *param_value,
+ size_t *param_value_size_ret);
+
+typedef struct _cl_mem_ext_host_ptr
+{
+ /* Type of external memory allocation. */
+ /* Legal values will be defined in layered extensions. */
+ cl_uint allocation_type;
+
+ /* Host cache policy for this external memory allocation. */
+ cl_uint host_cache_policy;
+
+} cl_mem_ext_host_ptr;
+
+
+/*******************************************
+* cl_qcom_ext_host_ptr_iocoherent extension
+********************************************/
+
+/* Cache policy specifying io-coherence */
+#define CL_MEM_HOST_IOCOHERENT_QCOM 0x40A9
+
+
+/*********************************
+* cl_qcom_ion_host_ptr extension
+*********************************/
+
+#define CL_MEM_ION_HOST_PTR_QCOM 0x40A8
+
+typedef struct _cl_mem_ion_host_ptr
+{
+ /* Type of external memory allocation. */
+ /* Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations. */
+ cl_mem_ext_host_ptr ext_host_ptr;
+
+ /* ION file descriptor */
+ int ion_filedesc;
+
+ /* Host pointer to the ION allocated memory */
+ void* ion_hostptr;
+
+} cl_mem_ion_host_ptr;
+
+
+/*********************************
+* cl_qcom_android_native_buffer_host_ptr extension
+*********************************/
+
+#define CL_MEM_ANDROID_NATIVE_BUFFER_HOST_PTR_QCOM 0x40C6
+
+typedef struct _cl_mem_android_native_buffer_host_ptr
+{
+ /* Type of external memory allocation. */
+ /* Must be CL_MEM_ANDROID_NATIVE_BUFFER_HOST_PTR_QCOM for Android native buffers. */
+ cl_mem_ext_host_ptr ext_host_ptr;
+
+ /* Virtual pointer to the android native buffer */
+ void* anb_ptr;
+
+} cl_mem_android_native_buffer_host_ptr;
+
+
+/******************************************
+ * cl_img_yuv_image extension *
+ ******************************************/
+
+/* Image formats used in clCreateImage */
+#define CL_NV21_IMG 0x40D0
+#define CL_YV12_IMG 0x40D1
+
+
+/******************************************
+ * cl_img_cached_allocations extension *
+ ******************************************/
+
+/* Flag values used by clCreateBuffer */
+#define CL_MEM_USE_UNCACHED_CPU_MEMORY_IMG (1 << 26)
+#define CL_MEM_USE_CACHED_CPU_MEMORY_IMG (1 << 27)
+
+
+/******************************************
+ * cl_img_use_gralloc_ptr extension *
+ ******************************************/
+#define cl_img_use_gralloc_ptr 1
+
+/* Flag values used by clCreateBuffer */
+#define CL_MEM_USE_GRALLOC_PTR_IMG (1 << 28)
+
+/* To be used by clGetEventInfo: */
+#define CL_COMMAND_ACQUIRE_GRALLOC_OBJECTS_IMG 0x40D2
+#define CL_COMMAND_RELEASE_GRALLOC_OBJECTS_IMG 0x40D3
+
+/* Error code from clEnqueueReleaseGrallocObjectsIMG */
+#define CL_GRALLOC_RESOURCE_NOT_ACQUIRED_IMG 0x40D4
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueAcquireGrallocObjectsIMG(cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem * mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_EXT_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueReleaseGrallocObjectsIMG(cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem * mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_EXT_SUFFIX__VERSION_1_2;
+
+
+/*********************************
+* cl_khr_subgroups extension
+*********************************/
+#define cl_khr_subgroups 1
+
+#if !defined(CL_VERSION_2_1)
+/* For OpenCL 2.1 and newer, cl_kernel_sub_group_info is declared in CL.h.
+ In hindsight, there should have been a khr suffix on this type for
+ the extension, but keeping it un-suffixed to maintain backwards
+ compatibility. */
+typedef cl_uint cl_kernel_sub_group_info;
+#endif
+
+/* cl_kernel_sub_group_info */
+#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR 0x2033
+#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR 0x2034
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetKernelSubGroupInfoKHR(cl_kernel in_kernel,
+ cl_device_id in_device,
+ cl_kernel_sub_group_info param_name,
+ size_t input_value_size,
+ const void * input_value,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED;
+
+typedef CL_API_ENTRY cl_int
+(CL_API_CALL * clGetKernelSubGroupInfoKHR_fn)(cl_kernel in_kernel,
+ cl_device_id in_device,
+ cl_kernel_sub_group_info param_name,
+ size_t input_value_size,
+ const void * input_value,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED;
+
+
+/*********************************
+* cl_khr_mipmap_image extension
+*********************************/
+
+/* cl_sampler_properties */
+#define CL_SAMPLER_MIP_FILTER_MODE_KHR 0x1155
+#define CL_SAMPLER_LOD_MIN_KHR 0x1156
+#define CL_SAMPLER_LOD_MAX_KHR 0x1157
+
+
+/*********************************
+* cl_khr_priority_hints extension
+*********************************/
+/* This extension define is for backwards compatibility.
+ It shouldn't be required since this extension has no new functions. */
+#define cl_khr_priority_hints 1
+
+typedef cl_uint cl_queue_priority_khr;
+
+/* cl_command_queue_properties */
+#define CL_QUEUE_PRIORITY_KHR 0x1096
+
+/* cl_queue_priority_khr */
+#define CL_QUEUE_PRIORITY_HIGH_KHR (1<<0)
+#define CL_QUEUE_PRIORITY_MED_KHR (1<<1)
+#define CL_QUEUE_PRIORITY_LOW_KHR (1<<2)
+
+
+/*********************************
+* cl_khr_throttle_hints extension
+*********************************/
+/* This extension define is for backwards compatibility.
+ It shouldn't be required since this extension has no new functions. */
+#define cl_khr_throttle_hints 1
+
+typedef cl_uint cl_queue_throttle_khr;
+
+/* cl_command_queue_properties */
+#define CL_QUEUE_THROTTLE_KHR 0x1097
+
+/* cl_queue_throttle_khr */
+#define CL_QUEUE_THROTTLE_HIGH_KHR (1<<0)
+#define CL_QUEUE_THROTTLE_MED_KHR (1<<1)
+#define CL_QUEUE_THROTTLE_LOW_KHR (1<<2)
+
+
+/*********************************
+* cl_khr_subgroup_named_barrier
+*********************************/
+/* This extension define is for backwards compatibility.
+ It shouldn't be required since this extension has no new functions. */
+#define cl_khr_subgroup_named_barrier 1
+
+/* cl_device_info */
+#define CL_DEVICE_MAX_NAMED_BARRIER_COUNT_KHR 0x2035
+
+
+/**********************************
+ * cl_arm_import_memory extension *
+ **********************************/
+#define cl_arm_import_memory 1
+
+typedef intptr_t cl_import_properties_arm;
+
+/* Default and valid proporties name for cl_arm_import_memory */
+#define CL_IMPORT_TYPE_ARM 0x40B2
+
+/* Host process memory type default value for CL_IMPORT_TYPE_ARM property */
+#define CL_IMPORT_TYPE_HOST_ARM 0x40B3
+
+/* DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */
+#define CL_IMPORT_TYPE_DMA_BUF_ARM 0x40B4
+
+/* Protected DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */
+#define CL_IMPORT_TYPE_PROTECTED_ARM 0x40B5
+
+/* This extension adds a new function that allows for direct memory import into
+ * OpenCL via the clImportMemoryARM function.
+ *
+ * Memory imported through this interface will be mapped into the device's page
+ * tables directly, providing zero copy access. It will never fall back to copy
+ * operations and aliased buffers.
+ *
+ * Types of memory supported for import are specified as additional extension
+ * strings.
+ *
+ * This extension produces cl_mem allocations which are compatible with all other
+ * users of cl_mem in the standard API.
+ *
+ * This extension maps pages with the same properties as the normal buffer creation
+ * function clCreateBuffer.
+ */
+extern CL_API_ENTRY cl_mem CL_API_CALL
+clImportMemoryARM( cl_context context,
+ cl_mem_flags flags,
+ const cl_import_properties_arm *properties,
+ void *memory,
+ size_t size,
+ cl_int *errcode_ret) CL_EXT_SUFFIX__VERSION_1_0;
+
+
+/******************************************
+ * cl_arm_shared_virtual_memory extension *
+ ******************************************/
+#define cl_arm_shared_virtual_memory 1
+
+/* Used by clGetDeviceInfo */
+#define CL_DEVICE_SVM_CAPABILITIES_ARM 0x40B6
+
+/* Used by clGetMemObjectInfo */
+#define CL_MEM_USES_SVM_POINTER_ARM 0x40B7
+
+/* Used by clSetKernelExecInfoARM: */
+#define CL_KERNEL_EXEC_INFO_SVM_PTRS_ARM 0x40B8
+#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_ARM 0x40B9
+
+/* To be used by clGetEventInfo: */
+#define CL_COMMAND_SVM_FREE_ARM 0x40BA
+#define CL_COMMAND_SVM_MEMCPY_ARM 0x40BB
+#define CL_COMMAND_SVM_MEMFILL_ARM 0x40BC
+#define CL_COMMAND_SVM_MAP_ARM 0x40BD
+#define CL_COMMAND_SVM_UNMAP_ARM 0x40BE
+
+/* Flag values returned by clGetDeviceInfo with CL_DEVICE_SVM_CAPABILITIES_ARM as the param_name. */
+#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_ARM (1 << 0)
+#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_ARM (1 << 1)
+#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_ARM (1 << 2)
+#define CL_DEVICE_SVM_ATOMICS_ARM (1 << 3)
+
+/* Flag values used by clSVMAllocARM: */
+#define CL_MEM_SVM_FINE_GRAIN_BUFFER_ARM (1 << 10)
+#define CL_MEM_SVM_ATOMICS_ARM (1 << 11)
+
+typedef cl_bitfield cl_svm_mem_flags_arm;
+typedef cl_uint cl_kernel_exec_info_arm;
+typedef cl_bitfield cl_device_svm_capabilities_arm;
+
+extern CL_API_ENTRY void * CL_API_CALL
+clSVMAllocARM(cl_context context,
+ cl_svm_mem_flags_arm flags,
+ size_t size,
+ cl_uint alignment) CL_EXT_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY void CL_API_CALL
+clSVMFreeARM(cl_context context,
+ void * svm_pointer) CL_EXT_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueSVMFreeARM(cl_command_queue command_queue,
+ cl_uint num_svm_pointers,
+ void * svm_pointers[],
+ void (CL_CALLBACK * pfn_free_func)(cl_command_queue queue,
+ cl_uint num_svm_pointers,
+ void * svm_pointers[],
+ void * user_data),
+ void * user_data,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_EXT_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueSVMMemcpyARM(cl_command_queue command_queue,
+ cl_bool blocking_copy,
+ void * dst_ptr,
+ const void * src_ptr,
+ size_t size,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_EXT_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueSVMMemFillARM(cl_command_queue command_queue,
+ void * svm_ptr,
+ const void * pattern,
+ size_t pattern_size,
+ size_t size,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_EXT_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueSVMMapARM(cl_command_queue command_queue,
+ cl_bool blocking_map,
+ cl_map_flags flags,
+ void * svm_ptr,
+ size_t size,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_EXT_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueSVMUnmapARM(cl_command_queue command_queue,
+ void * svm_ptr,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_EXT_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clSetKernelArgSVMPointerARM(cl_kernel kernel,
+ cl_uint arg_index,
+ const void * arg_value) CL_EXT_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clSetKernelExecInfoARM(cl_kernel kernel,
+ cl_kernel_exec_info_arm param_name,
+ size_t param_value_size,
+ const void * param_value) CL_EXT_SUFFIX__VERSION_1_2;
+
+/********************************
+ * cl_arm_get_core_id extension *
+ ********************************/
+
+#ifdef CL_VERSION_1_2
+
+#define cl_arm_get_core_id 1
+
+/* Device info property for bitfield of cores present */
+#define CL_DEVICE_COMPUTE_UNITS_BITFIELD_ARM 0x40BF
+
+#endif /* CL_VERSION_1_2 */
+
+/*********************************
+* cl_arm_job_slot_selection
+*********************************/
+
+#define cl_arm_job_slot_selection 1
+
+/* cl_device_info */
+#define CL_DEVICE_JOB_SLOTS_ARM 0x41E0
+
+/* cl_command_queue_properties */
+#define CL_QUEUE_JOB_SLOT_ARM 0x41E1
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __CL_EXT_H */
diff --git a/src/external/OpenCL/CL/cl_ext_intel.h b/src/external/OpenCL/CL/cl_ext_intel.h
new file mode 100644
index 000000000..9d1e4b587
--- /dev/null
+++ b/src/external/OpenCL/CL/cl_ext_intel.h
@@ -0,0 +1,423 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2019 The Khronos Group Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and/or associated documentation files (the
+ * "Materials"), to deal in the Materials without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Materials, and to
+ * permit persons to whom the Materials are furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Materials.
+ *
+ * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+ * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+ * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+ * https://www.khronos.org/registry/
+ *
+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+ ******************************************************************************/
+/*****************************************************************************\
+
+Copyright (c) 2013-2019 Intel Corporation All Rights Reserved.
+
+THESE MATERIALS ARE PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THESE
+MATERIALS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+File Name: cl_ext_intel.h
+
+Abstract:
+
+Notes:
+
+\*****************************************************************************/
+
+#ifndef __CL_EXT_INTEL_H
+#define __CL_EXT_INTEL_H
+
+#include <CL/cl.h>
+#include <CL/cl_platform.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************
+* cl_intel_thread_local_exec extension *
+****************************************/
+
+#define cl_intel_thread_local_exec 1
+
+#define CL_QUEUE_THREAD_LOCAL_EXEC_ENABLE_INTEL (((cl_bitfield)1) << 31)
+
+/***********************************************
+* cl_intel_device_partition_by_names extension *
+************************************************/
+
+#define cl_intel_device_partition_by_names 1
+
+#define CL_DEVICE_PARTITION_BY_NAMES_INTEL 0x4052
+#define CL_PARTITION_BY_NAMES_LIST_END_INTEL -1
+
+/************************************************
+* cl_intel_accelerator extension *
+* cl_intel_motion_estimation extension *
+* cl_intel_advanced_motion_estimation extension *
+*************************************************/
+
+#define cl_intel_accelerator 1
+#define cl_intel_motion_estimation 1
+#define cl_intel_advanced_motion_estimation 1
+
+typedef struct _cl_accelerator_intel* cl_accelerator_intel;
+typedef cl_uint cl_accelerator_type_intel;
+typedef cl_uint cl_accelerator_info_intel;
+
+typedef struct _cl_motion_estimation_desc_intel {
+ cl_uint mb_block_type;
+ cl_uint subpixel_mode;
+ cl_uint sad_adjust_mode;
+ cl_uint search_path_type;
+} cl_motion_estimation_desc_intel;
+
+/* error codes */
+#define CL_INVALID_ACCELERATOR_INTEL -1094
+#define CL_INVALID_ACCELERATOR_TYPE_INTEL -1095
+#define CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL -1096
+#define CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL -1097
+
+/* cl_accelerator_type_intel */
+#define CL_ACCELERATOR_TYPE_MOTION_ESTIMATION_INTEL 0x0
+
+/* cl_accelerator_info_intel */
+#define CL_ACCELERATOR_DESCRIPTOR_INTEL 0x4090
+#define CL_ACCELERATOR_REFERENCE_COUNT_INTEL 0x4091
+#define CL_ACCELERATOR_CONTEXT_INTEL 0x4092
+#define CL_ACCELERATOR_TYPE_INTEL 0x4093
+
+/* cl_motion_detect_desc_intel flags */
+#define CL_ME_MB_TYPE_16x16_INTEL 0x0
+#define CL_ME_MB_TYPE_8x8_INTEL 0x1
+#define CL_ME_MB_TYPE_4x4_INTEL 0x2
+
+#define CL_ME_SUBPIXEL_MODE_INTEGER_INTEL 0x0
+#define CL_ME_SUBPIXEL_MODE_HPEL_INTEL 0x1
+#define CL_ME_SUBPIXEL_MODE_QPEL_INTEL 0x2
+
+#define CL_ME_SAD_ADJUST_MODE_NONE_INTEL 0x0
+#define CL_ME_SAD_ADJUST_MODE_HAAR_INTEL 0x1
+
+#define CL_ME_SEARCH_PATH_RADIUS_2_2_INTEL 0x0
+#define CL_ME_SEARCH_PATH_RADIUS_4_4_INTEL 0x1
+#define CL_ME_SEARCH_PATH_RADIUS_16_12_INTEL 0x5
+
+#define CL_ME_SKIP_BLOCK_TYPE_16x16_INTEL 0x0
+#define CL_ME_CHROMA_INTRA_PREDICT_ENABLED_INTEL 0x1
+#define CL_ME_LUMA_INTRA_PREDICT_ENABLED_INTEL 0x2
+#define CL_ME_SKIP_BLOCK_TYPE_8x8_INTEL 0x4
+
+#define CL_ME_FORWARD_INPUT_MODE_INTEL 0x1
+#define CL_ME_BACKWARD_INPUT_MODE_INTEL 0x2
+#define CL_ME_BIDIRECTION_INPUT_MODE_INTEL 0x3
+
+#define CL_ME_BIDIR_WEIGHT_QUARTER_INTEL 16
+#define CL_ME_BIDIR_WEIGHT_THIRD_INTEL 21
+#define CL_ME_BIDIR_WEIGHT_HALF_INTEL 32
+#define CL_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL 43
+#define CL_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL 48
+
+#define CL_ME_COST_PENALTY_NONE_INTEL 0x0
+#define CL_ME_COST_PENALTY_LOW_INTEL 0x1
+#define CL_ME_COST_PENALTY_NORMAL_INTEL 0x2
+#define CL_ME_COST_PENALTY_HIGH_INTEL 0x3
+
+#define CL_ME_COST_PRECISION_QPEL_INTEL 0x0
+#define CL_ME_COST_PRECISION_HPEL_INTEL 0x1
+#define CL_ME_COST_PRECISION_PEL_INTEL 0x2
+#define CL_ME_COST_PRECISION_DPEL_INTEL 0x3
+
+#define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL 0x0
+#define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1
+#define CL_ME_LUMA_PREDICTOR_MODE_DC_INTEL 0x2
+#define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL 0x3
+
+#define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL 0x4
+#define CL_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL 0x4
+#define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL 0x5
+#define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL 0x6
+#define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL 0x7
+#define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL 0x8
+
+#define CL_ME_CHROMA_PREDICTOR_MODE_DC_INTEL 0x0
+#define CL_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1
+#define CL_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL 0x2
+#define CL_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL 0x3
+
+/* cl_device_info */
+#define CL_DEVICE_ME_VERSION_INTEL 0x407E
+
+#define CL_ME_VERSION_LEGACY_INTEL 0x0
+#define CL_ME_VERSION_ADVANCED_VER_1_INTEL 0x1
+#define CL_ME_VERSION_ADVANCED_VER_2_INTEL 0x2
+
+extern CL_API_ENTRY cl_accelerator_intel CL_API_CALL
+clCreateAcceleratorINTEL(
+ cl_context context,
+ cl_accelerator_type_intel accelerator_type,
+ size_t descriptor_size,
+ const void* descriptor,
+ cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_accelerator_intel (CL_API_CALL *clCreateAcceleratorINTEL_fn)(
+ cl_context context,
+ cl_accelerator_type_intel accelerator_type,
+ size_t descriptor_size,
+ const void* descriptor,
+ cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetAcceleratorInfoINTEL(
+ cl_accelerator_intel accelerator,
+ cl_accelerator_info_intel param_name,
+ size_t param_value_size,
+ void* param_value,
+ size_t* param_value_size_ret) CL_EXT_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetAcceleratorInfoINTEL_fn)(
+ cl_accelerator_intel accelerator,
+ cl_accelerator_info_intel param_name,
+ size_t param_value_size,
+ void* param_value,
+ size_t* param_value_size_ret) CL_EXT_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clRetainAcceleratorINTEL(
+ cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clRetainAcceleratorINTEL_fn)(
+ cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clReleaseAcceleratorINTEL(
+ cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clReleaseAcceleratorINTEL_fn)(
+ cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2;
+
+/******************************************
+* cl_intel_simultaneous_sharing extension *
+*******************************************/
+
+#define cl_intel_simultaneous_sharing 1
+
+#define CL_DEVICE_SIMULTANEOUS_INTEROPS_INTEL 0x4104
+#define CL_DEVICE_NUM_SIMULTANEOUS_INTEROPS_INTEL 0x4105
+
+/***********************************
+* cl_intel_egl_image_yuv extension *
+************************************/
+
+#define cl_intel_egl_image_yuv 1
+
+#define CL_EGL_YUV_PLANE_INTEL 0x4107
+
+/********************************
+* cl_intel_packed_yuv extension *
+*********************************/
+
+#define cl_intel_packed_yuv 1
+
+#define CL_YUYV_INTEL 0x4076
+#define CL_UYVY_INTEL 0x4077
+#define CL_YVYU_INTEL 0x4078
+#define CL_VYUY_INTEL 0x4079
+
+/********************************************
+* cl_intel_required_subgroup_size extension *
+*********************************************/
+
+#define cl_intel_required_subgroup_size 1
+
+#define CL_DEVICE_SUB_GROUP_SIZES_INTEL 0x4108
+#define CL_KERNEL_SPILL_MEM_SIZE_INTEL 0x4109
+#define CL_KERNEL_COMPILE_SUB_GROUP_SIZE_INTEL 0x410A
+
+/****************************************
+* cl_intel_driver_diagnostics extension *
+*****************************************/
+
+#define cl_intel_driver_diagnostics 1
+
+typedef cl_uint cl_diagnostics_verbose_level;
+
+#define CL_CONTEXT_SHOW_DIAGNOSTICS_INTEL 0x4106
+
+#define CL_CONTEXT_DIAGNOSTICS_LEVEL_ALL_INTEL ( 0xff )
+#define CL_CONTEXT_DIAGNOSTICS_LEVEL_GOOD_INTEL ( 1 )
+#define CL_CONTEXT_DIAGNOSTICS_LEVEL_BAD_INTEL ( 1 << 1 )
+#define CL_CONTEXT_DIAGNOSTICS_LEVEL_NEUTRAL_INTEL ( 1 << 2 )
+
+/********************************
+* cl_intel_planar_yuv extension *
+*********************************/
+
+#define CL_NV12_INTEL 0x410E
+
+#define CL_MEM_NO_ACCESS_INTEL ( 1 << 24 )
+#define CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL ( 1 << 25 )
+
+#define CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL 0x417E
+#define CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL 0x417F
+
+/*******************************************************
+* cl_intel_device_side_avc_motion_estimation extension *
+********************************************************/
+
+#define CL_DEVICE_AVC_ME_VERSION_INTEL 0x410B
+#define CL_DEVICE_AVC_ME_SUPPORTS_TEXTURE_SAMPLER_USE_INTEL 0x410C
+#define CL_DEVICE_AVC_ME_SUPPORTS_PREEMPTION_INTEL 0x410D
+
+#define CL_AVC_ME_VERSION_0_INTEL 0x0; // No support.
+#define CL_AVC_ME_VERSION_1_INTEL 0x1; // First supported version.
+
+#define CL_AVC_ME_MAJOR_16x16_INTEL 0x0
+#define CL_AVC_ME_MAJOR_16x8_INTEL 0x1
+#define CL_AVC_ME_MAJOR_8x16_INTEL 0x2
+#define CL_AVC_ME_MAJOR_8x8_INTEL 0x3
+
+#define CL_AVC_ME_MINOR_8x8_INTEL 0x0
+#define CL_AVC_ME_MINOR_8x4_INTEL 0x1
+#define CL_AVC_ME_MINOR_4x8_INTEL 0x2
+#define CL_AVC_ME_MINOR_4x4_INTEL 0x3
+
+#define CL_AVC_ME_MAJOR_FORWARD_INTEL 0x0
+#define CL_AVC_ME_MAJOR_BACKWARD_INTEL 0x1
+#define CL_AVC_ME_MAJOR_BIDIRECTIONAL_INTEL 0x2
+
+#define CL_AVC_ME_PARTITION_MASK_ALL_INTEL 0x0
+#define CL_AVC_ME_PARTITION_MASK_16x16_INTEL 0x7E
+#define CL_AVC_ME_PARTITION_MASK_16x8_INTEL 0x7D
+#define CL_AVC_ME_PARTITION_MASK_8x16_INTEL 0x7B
+#define CL_AVC_ME_PARTITION_MASK_8x8_INTEL 0x77
+#define CL_AVC_ME_PARTITION_MASK_8x4_INTEL 0x6F
+#define CL_AVC_ME_PARTITION_MASK_4x8_INTEL 0x5F
+#define CL_AVC_ME_PARTITION_MASK_4x4_INTEL 0x3F
+
+#define CL_AVC_ME_SEARCH_WINDOW_EXHAUSTIVE_INTEL 0x0
+#define CL_AVC_ME_SEARCH_WINDOW_SMALL_INTEL 0x1
+#define CL_AVC_ME_SEARCH_WINDOW_TINY_INTEL 0x2
+#define CL_AVC_ME_SEARCH_WINDOW_EXTRA_TINY_INTEL 0x3
+#define CL_AVC_ME_SEARCH_WINDOW_DIAMOND_INTEL 0x4
+#define CL_AVC_ME_SEARCH_WINDOW_LARGE_DIAMOND_INTEL 0x5
+#define CL_AVC_ME_SEARCH_WINDOW_RESERVED0_INTEL 0x6
+#define CL_AVC_ME_SEARCH_WINDOW_RESERVED1_INTEL 0x7
+#define CL_AVC_ME_SEARCH_WINDOW_CUSTOM_INTEL 0x8
+#define CL_AVC_ME_SEARCH_WINDOW_16x12_RADIUS_INTEL 0x9
+#define CL_AVC_ME_SEARCH_WINDOW_4x4_RADIUS_INTEL 0x2
+#define CL_AVC_ME_SEARCH_WINDOW_2x2_RADIUS_INTEL 0xa
+
+#define CL_AVC_ME_SAD_ADJUST_MODE_NONE_INTEL 0x0
+#define CL_AVC_ME_SAD_ADJUST_MODE_HAAR_INTEL 0x2
+
+#define CL_AVC_ME_SUBPIXEL_MODE_INTEGER_INTEL 0x0
+#define CL_AVC_ME_SUBPIXEL_MODE_HPEL_INTEL 0x1
+#define CL_AVC_ME_SUBPIXEL_MODE_QPEL_INTEL 0x3
+
+#define CL_AVC_ME_COST_PRECISION_QPEL_INTEL 0x0
+#define CL_AVC_ME_COST_PRECISION_HPEL_INTEL 0x1
+#define CL_AVC_ME_COST_PRECISION_PEL_INTEL 0x2
+#define CL_AVC_ME_COST_PRECISION_DPEL_INTEL 0x3
+
+#define CL_AVC_ME_BIDIR_WEIGHT_QUARTER_INTEL 0x10
+#define CL_AVC_ME_BIDIR_WEIGHT_THIRD_INTEL 0x15
+#define CL_AVC_ME_BIDIR_WEIGHT_HALF_INTEL 0x20
+#define CL_AVC_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL 0x2B
+#define CL_AVC_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL 0x30
+
+#define CL_AVC_ME_BORDER_REACHED_LEFT_INTEL 0x0
+#define CL_AVC_ME_BORDER_REACHED_RIGHT_INTEL 0x2
+#define CL_AVC_ME_BORDER_REACHED_TOP_INTEL 0x4
+#define CL_AVC_ME_BORDER_REACHED_BOTTOM_INTEL 0x8
+
+#define CL_AVC_ME_SKIP_BLOCK_PARTITION_16x16_INTEL 0x0
+#define CL_AVC_ME_SKIP_BLOCK_PARTITION_8x8_INTEL 0x4000
+
+#define CL_AVC_ME_SKIP_BLOCK_16x16_FORWARD_ENABLE_INTEL ( 0x1 << 24 )
+#define CL_AVC_ME_SKIP_BLOCK_16x16_BACKWARD_ENABLE_INTEL ( 0x2 << 24 )
+#define CL_AVC_ME_SKIP_BLOCK_16x16_DUAL_ENABLE_INTEL ( 0x3 << 24 )
+#define CL_AVC_ME_SKIP_BLOCK_8x8_FORWARD_ENABLE_INTEL ( 0x55 << 24 )
+#define CL_AVC_ME_SKIP_BLOCK_8x8_BACKWARD_ENABLE_INTEL ( 0xAA << 24 )
+#define CL_AVC_ME_SKIP_BLOCK_8x8_DUAL_ENABLE_INTEL ( 0xFF << 24 )
+#define CL_AVC_ME_SKIP_BLOCK_8x8_0_FORWARD_ENABLE_INTEL ( 0x1 << 24 )
+#define CL_AVC_ME_SKIP_BLOCK_8x8_0_BACKWARD_ENABLE_INTEL ( 0x2 << 24 )
+#define CL_AVC_ME_SKIP_BLOCK_8x8_1_FORWARD_ENABLE_INTEL ( 0x1 << 26 )
+#define CL_AVC_ME_SKIP_BLOCK_8x8_1_BACKWARD_ENABLE_INTEL ( 0x2 << 26 )
+#define CL_AVC_ME_SKIP_BLOCK_8x8_2_FORWARD_ENABLE_INTEL ( 0x1 << 28 )
+#define CL_AVC_ME_SKIP_BLOCK_8x8_2_BACKWARD_ENABLE_INTEL ( 0x2 << 28 )
+#define CL_AVC_ME_SKIP_BLOCK_8x8_3_FORWARD_ENABLE_INTEL ( 0x1 << 30 )
+#define CL_AVC_ME_SKIP_BLOCK_8x8_3_BACKWARD_ENABLE_INTEL ( 0x2 << 30 )
+
+#define CL_AVC_ME_BLOCK_BASED_SKIP_4x4_INTEL 0x00
+#define CL_AVC_ME_BLOCK_BASED_SKIP_8x8_INTEL 0x80
+
+#define CL_AVC_ME_INTRA_16x16_INTEL 0x0
+#define CL_AVC_ME_INTRA_8x8_INTEL 0x1
+#define CL_AVC_ME_INTRA_4x4_INTEL 0x2
+
+#define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_16x16_INTEL 0x6
+#define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_8x8_INTEL 0x5
+#define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_4x4_INTEL 0x3
+
+#define CL_AVC_ME_INTRA_NEIGHBOR_LEFT_MASK_ENABLE_INTEL 0x60
+#define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_MASK_ENABLE_INTEL 0x10
+#define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_RIGHT_MASK_ENABLE_INTEL 0x8
+#define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_LEFT_MASK_ENABLE_INTEL 0x4
+
+#define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL 0x0
+#define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1
+#define CL_AVC_ME_LUMA_PREDICTOR_MODE_DC_INTEL 0x2
+#define CL_AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL 0x3
+#define CL_AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL 0x4
+#define CL_AVC_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL 0x4
+#define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL 0x5
+#define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL 0x6
+#define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL 0x7
+#define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL 0x8
+#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_DC_INTEL 0x0
+#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1
+#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL 0x2
+#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL 0x3
+
+#define CL_AVC_ME_FRAME_FORWARD_INTEL 0x1
+#define CL_AVC_ME_FRAME_BACKWARD_INTEL 0x2
+#define CL_AVC_ME_FRAME_DUAL_INTEL 0x3
+
+#define CL_AVC_ME_SLICE_TYPE_PRED_INTEL 0x0
+#define CL_AVC_ME_SLICE_TYPE_BPRED_INTEL 0x1
+#define CL_AVC_ME_SLICE_TYPE_INTRA_INTEL 0x2
+
+#define CL_AVC_ME_INTERLACED_SCAN_TOP_FIELD_INTEL 0x0
+#define CL_AVC_ME_INTERLACED_SCAN_BOTTOM_FIELD_INTEL 0x1
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CL_EXT_INTEL_H */
diff --git a/src/external/OpenCL/CL/cl_gl.h b/src/external/OpenCL/CL/cl_gl.h
new file mode 100644
index 000000000..fbdaf6297
--- /dev/null
+++ b/src/external/OpenCL/CL/cl_gl.h
@@ -0,0 +1,171 @@
+/**********************************************************************************
+ * Copyright (c) 2008-2019 The Khronos Group Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and/or associated documentation files (the
+ * "Materials"), to deal in the Materials without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Materials, and to
+ * permit persons to whom the Materials are furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Materials.
+ *
+ * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+ * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+ * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+ * https://www.khronos.org/registry/
+ *
+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+ **********************************************************************************/
+
+#ifndef __OPENCL_CL_GL_H
+#define __OPENCL_CL_GL_H
+
+#include <CL/cl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef cl_uint cl_gl_object_type;
+typedef cl_uint cl_gl_texture_info;
+typedef cl_uint cl_gl_platform_info;
+typedef struct __GLsync *cl_GLsync;
+
+/* cl_gl_object_type = 0x2000 - 0x200F enum values are currently taken */
+#define CL_GL_OBJECT_BUFFER 0x2000
+#define CL_GL_OBJECT_TEXTURE2D 0x2001
+#define CL_GL_OBJECT_TEXTURE3D 0x2002
+#define CL_GL_OBJECT_RENDERBUFFER 0x2003
+#ifdef CL_VERSION_1_2
+#define CL_GL_OBJECT_TEXTURE2D_ARRAY 0x200E
+#define CL_GL_OBJECT_TEXTURE1D 0x200F
+#define CL_GL_OBJECT_TEXTURE1D_ARRAY 0x2010
+#define CL_GL_OBJECT_TEXTURE_BUFFER 0x2011
+#endif
+
+/* cl_gl_texture_info */
+#define CL_GL_TEXTURE_TARGET 0x2004
+#define CL_GL_MIPMAP_LEVEL 0x2005
+#ifdef CL_VERSION_1_2
+#define CL_GL_NUM_SAMPLES 0x2012
+#endif
+
+
+extern CL_API_ENTRY cl_mem CL_API_CALL
+clCreateFromGLBuffer(cl_context context,
+ cl_mem_flags flags,
+ cl_GLuint bufobj,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
+
+#ifdef CL_VERSION_1_2
+
+extern CL_API_ENTRY cl_mem CL_API_CALL
+clCreateFromGLTexture(cl_context context,
+ cl_mem_flags flags,
+ cl_GLenum target,
+ cl_GLint miplevel,
+ cl_GLuint texture,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2;
+
+#endif
+
+extern CL_API_ENTRY cl_mem CL_API_CALL
+clCreateFromGLRenderbuffer(cl_context context,
+ cl_mem_flags flags,
+ cl_GLuint renderbuffer,
+ cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetGLObjectInfo(cl_mem memobj,
+ cl_gl_object_type * gl_object_type,
+ cl_GLuint * gl_object_name) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetGLTextureInfo(cl_mem memobj,
+ cl_gl_texture_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueAcquireGLObjects(cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem * mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_0;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueReleaseGLObjects(cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem * mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event * event_wait_list,
+ cl_event * event) CL_API_SUFFIX__VERSION_1_0;
+
+
+/* Deprecated OpenCL 1.1 APIs */
+extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL
+clCreateFromGLTexture2D(cl_context context,
+ cl_mem_flags flags,
+ cl_GLenum target,
+ cl_GLint miplevel,
+ cl_GLuint texture,
+ cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
+
+extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL
+clCreateFromGLTexture3D(cl_context context,
+ cl_mem_flags flags,
+ cl_GLenum target,
+ cl_GLint miplevel,
+ cl_GLuint texture,
+ cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
+
+/* cl_khr_gl_sharing extension */
+
+#define cl_khr_gl_sharing 1
+
+typedef cl_uint cl_gl_context_info;
+
+/* Additional Error Codes */
+#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000
+
+/* cl_gl_context_info */
+#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006
+#define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007
+
+/* Additional cl_context_properties */
+#define CL_GL_CONTEXT_KHR 0x2008
+#define CL_EGL_DISPLAY_KHR 0x2009
+#define CL_GLX_DISPLAY_KHR 0x200A
+#define CL_WGL_HDC_KHR 0x200B
+#define CL_CGL_SHAREGROUP_KHR 0x200C
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetGLContextInfoKHR(const cl_context_properties * properties,
+ cl_gl_context_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetGLContextInfoKHR_fn)(
+ const cl_context_properties * properties,
+ cl_gl_context_info param_name,
+ size_t param_value_size,
+ void * param_value,
+ size_t * param_value_size_ret);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __OPENCL_CL_GL_H */
diff --git a/src/external/OpenCL/CL/cl_gl_ext.h b/src/external/OpenCL/CL/cl_gl_ext.h
new file mode 100644
index 000000000..c26d31abe
--- /dev/null
+++ b/src/external/OpenCL/CL/cl_gl_ext.h
@@ -0,0 +1,52 @@
+/**********************************************************************************
+ * Copyright (c) 2008-2019 The Khronos Group Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and/or associated documentation files (the
+ * "Materials"), to deal in the Materials without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Materials, and to
+ * permit persons to whom the Materials are furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Materials.
+ *
+ * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+ * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+ * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+ * https://www.khronos.org/registry/
+ *
+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+ **********************************************************************************/
+
+#ifndef __OPENCL_CL_GL_EXT_H
+#define __OPENCL_CL_GL_EXT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <CL/cl_gl.h>
+
+/*
+ * cl_khr_gl_event extension
+ */
+#define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D
+
+extern CL_API_ENTRY cl_event CL_API_CALL
+clCreateEventFromGLsyncKHR(cl_context context,
+ cl_GLsync cl_GLsync,
+ cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __OPENCL_CL_GL_EXT_H */
diff --git a/src/external/OpenCL/CL/cl_platform.h b/src/external/OpenCL/CL/cl_platform.h
new file mode 100644
index 000000000..7f4ddea5b
--- /dev/null
+++ b/src/external/OpenCL/CL/cl_platform.h
@@ -0,0 +1,1384 @@
+/**********************************************************************************
+ * Copyright (c) 2008-2018 The Khronos Group Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and/or associated documentation files (the
+ * "Materials"), to deal in the Materials without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Materials, and to
+ * permit persons to whom the Materials are furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Materials.
+ *
+ * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+ * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+ * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+ * https://www.khronos.org/registry/
+ *
+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+ **********************************************************************************/
+
+#ifndef __CL_PLATFORM_H
+#define __CL_PLATFORM_H
+
+#include <CL/cl_version.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(_WIN32)
+ #define CL_API_ENTRY
+ #define CL_API_CALL __stdcall
+ #define CL_CALLBACK __stdcall
+#else
+ #define CL_API_ENTRY
+ #define CL_API_CALL
+ #define CL_CALLBACK
+#endif
+
+/*
+ * Deprecation flags refer to the last version of the header in which the
+ * feature was not deprecated.
+ *
+ * E.g. VERSION_1_1_DEPRECATED means the feature is present in 1.1 without
+ * deprecation but is deprecated in versions later than 1.1.
+ */
+
+#define CL_EXTENSION_WEAK_LINK
+#define CL_API_SUFFIX__VERSION_1_0
+#define CL_EXT_SUFFIX__VERSION_1_0
+#define CL_API_SUFFIX__VERSION_1_1
+#define CL_EXT_SUFFIX__VERSION_1_1
+#define CL_API_SUFFIX__VERSION_1_2
+#define CL_EXT_SUFFIX__VERSION_1_2
+#define CL_API_SUFFIX__VERSION_2_0
+#define CL_EXT_SUFFIX__VERSION_2_0
+#define CL_API_SUFFIX__VERSION_2_1
+#define CL_EXT_SUFFIX__VERSION_2_1
+#define CL_API_SUFFIX__VERSION_2_2
+#define CL_EXT_SUFFIX__VERSION_2_2
+
+
+#ifdef __GNUC__
+ #define CL_EXT_SUFFIX_DEPRECATED __attribute__((deprecated))
+ #define CL_EXT_PREFIX_DEPRECATED
+#elif defined(_WIN32)
+ #define CL_EXT_SUFFIX_DEPRECATED
+ #define CL_EXT_PREFIX_DEPRECATED __declspec(deprecated)
+#else
+ #define CL_EXT_SUFFIX_DEPRECATED
+ #define CL_EXT_PREFIX_DEPRECATED
+#endif
+
+#ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS
+ #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED
+ #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED
+#else
+ #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED CL_EXT_SUFFIX_DEPRECATED
+ #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED CL_EXT_PREFIX_DEPRECATED
+#endif
+
+#ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS
+ #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED
+ #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED
+#else
+ #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED CL_EXT_SUFFIX_DEPRECATED
+ #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED CL_EXT_PREFIX_DEPRECATED
+#endif
+
+#ifdef CL_USE_DEPRECATED_OPENCL_1_2_APIS
+ #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED
+ #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED
+#else
+ #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED CL_EXT_SUFFIX_DEPRECATED
+ #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED CL_EXT_PREFIX_DEPRECATED
+ #endif
+
+#ifdef CL_USE_DEPRECATED_OPENCL_2_0_APIS
+ #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED
+ #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED
+#else
+ #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED CL_EXT_SUFFIX_DEPRECATED
+ #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED CL_EXT_PREFIX_DEPRECATED
+#endif
+
+#ifdef CL_USE_DEPRECATED_OPENCL_2_1_APIS
+ #define CL_EXT_SUFFIX__VERSION_2_1_DEPRECATED
+ #define CL_EXT_PREFIX__VERSION_2_1_DEPRECATED
+#else
+ #define CL_EXT_SUFFIX__VERSION_2_1_DEPRECATED CL_EXT_SUFFIX_DEPRECATED
+ #define CL_EXT_PREFIX__VERSION_2_1_DEPRECATED CL_EXT_PREFIX_DEPRECATED
+#endif
+
+#if (defined (_WIN32) && defined(_MSC_VER))
+
+/* scalar types */
+typedef signed __int8 cl_char;
+typedef unsigned __int8 cl_uchar;
+typedef signed __int16 cl_short;
+typedef unsigned __int16 cl_ushort;
+typedef signed __int32 cl_int;
+typedef unsigned __int32 cl_uint;
+typedef signed __int64 cl_long;
+typedef unsigned __int64 cl_ulong;
+
+typedef unsigned __int16 cl_half;
+typedef float cl_float;
+typedef double cl_double;
+
+/* Macro names and corresponding values defined by OpenCL */
+#define CL_CHAR_BIT 8
+#define CL_SCHAR_MAX 127
+#define CL_SCHAR_MIN (-127-1)
+#define CL_CHAR_MAX CL_SCHAR_MAX
+#define CL_CHAR_MIN CL_SCHAR_MIN
+#define CL_UCHAR_MAX 255
+#define CL_SHRT_MAX 32767
+#define CL_SHRT_MIN (-32767-1)
+#define CL_USHRT_MAX 65535
+#define CL_INT_MAX 2147483647
+#define CL_INT_MIN (-2147483647-1)
+#define CL_UINT_MAX 0xffffffffU
+#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL)
+#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL)
+#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL)
+
+#define CL_FLT_DIG 6
+#define CL_FLT_MANT_DIG 24
+#define CL_FLT_MAX_10_EXP +38
+#define CL_FLT_MAX_EXP +128
+#define CL_FLT_MIN_10_EXP -37
+#define CL_FLT_MIN_EXP -125
+#define CL_FLT_RADIX 2
+#define CL_FLT_MAX 340282346638528859811704183484516925440.0f
+#define CL_FLT_MIN 1.175494350822287507969e-38f
+#define CL_FLT_EPSILON 1.1920928955078125e-7f
+
+#define CL_HALF_DIG 3
+#define CL_HALF_MANT_DIG 11
+#define CL_HALF_MAX_10_EXP +4
+#define CL_HALF_MAX_EXP +16
+#define CL_HALF_MIN_10_EXP -4
+#define CL_HALF_MIN_EXP -13
+#define CL_HALF_RADIX 2
+#define CL_HALF_MAX 65504.0f
+#define CL_HALF_MIN 6.103515625e-05f
+#define CL_HALF_EPSILON 9.765625e-04f
+
+#define CL_DBL_DIG 15
+#define CL_DBL_MANT_DIG 53
+#define CL_DBL_MAX_10_EXP +308
+#define CL_DBL_MAX_EXP +1024
+#define CL_DBL_MIN_10_EXP -307
+#define CL_DBL_MIN_EXP -1021
+#define CL_DBL_RADIX 2
+#define CL_DBL_MAX 1.7976931348623158e+308
+#define CL_DBL_MIN 2.225073858507201383090e-308
+#define CL_DBL_EPSILON 2.220446049250313080847e-16
+
+#define CL_M_E 2.7182818284590452354
+#define CL_M_LOG2E 1.4426950408889634074
+#define CL_M_LOG10E 0.43429448190325182765
+#define CL_M_LN2 0.69314718055994530942
+#define CL_M_LN10 2.30258509299404568402
+#define CL_M_PI 3.14159265358979323846
+#define CL_M_PI_2 1.57079632679489661923
+#define CL_M_PI_4 0.78539816339744830962
+#define CL_M_1_PI 0.31830988618379067154
+#define CL_M_2_PI 0.63661977236758134308
+#define CL_M_2_SQRTPI 1.12837916709551257390
+#define CL_M_SQRT2 1.41421356237309504880
+#define CL_M_SQRT1_2 0.70710678118654752440
+
+#define CL_M_E_F 2.718281828f
+#define CL_M_LOG2E_F 1.442695041f
+#define CL_M_LOG10E_F 0.434294482f
+#define CL_M_LN2_F 0.693147181f
+#define CL_M_LN10_F 2.302585093f
+#define CL_M_PI_F 3.141592654f
+#define CL_M_PI_2_F 1.570796327f
+#define CL_M_PI_4_F 0.785398163f
+#define CL_M_1_PI_F 0.318309886f
+#define CL_M_2_PI_F 0.636619772f
+#define CL_M_2_SQRTPI_F 1.128379167f
+#define CL_M_SQRT2_F 1.414213562f
+#define CL_M_SQRT1_2_F 0.707106781f
+
+#define CL_NAN (CL_INFINITY - CL_INFINITY)
+#define CL_HUGE_VALF ((cl_float) 1e50)
+#define CL_HUGE_VAL ((cl_double) 1e500)
+#define CL_MAXFLOAT CL_FLT_MAX
+#define CL_INFINITY CL_HUGE_VALF
+
+#else
+
+#include <stdint.h>
+
+/* scalar types */
+typedef int8_t cl_char;
+typedef uint8_t cl_uchar;
+typedef int16_t cl_short;
+typedef uint16_t cl_ushort;
+typedef int32_t cl_int;
+typedef uint32_t cl_uint;
+typedef int64_t cl_long;
+typedef uint64_t cl_ulong;
+
+typedef uint16_t cl_half;
+typedef float cl_float;
+typedef double cl_double;
+
+/* Macro names and corresponding values defined by OpenCL */
+#define CL_CHAR_BIT 8
+#define CL_SCHAR_MAX 127
+#define CL_SCHAR_MIN (-127-1)
+#define CL_CHAR_MAX CL_SCHAR_MAX
+#define CL_CHAR_MIN CL_SCHAR_MIN
+#define CL_UCHAR_MAX 255
+#define CL_SHRT_MAX 32767
+#define CL_SHRT_MIN (-32767-1)
+#define CL_USHRT_MAX 65535
+#define CL_INT_MAX 2147483647
+#define CL_INT_MIN (-2147483647-1)
+#define CL_UINT_MAX 0xffffffffU
+#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL)
+#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL)
+#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL)
+
+#define CL_FLT_DIG 6
+#define CL_FLT_MANT_DIG 24
+#define CL_FLT_MAX_10_EXP +38
+#define CL_FLT_MAX_EXP +128
+#define CL_FLT_MIN_10_EXP -37
+#define CL_FLT_MIN_EXP -125
+#define CL_FLT_RADIX 2
+#define CL_FLT_MAX 340282346638528859811704183484516925440.0f
+#define CL_FLT_MIN 1.175494350822287507969e-38f
+#define CL_FLT_EPSILON 1.1920928955078125e-7f
+
+#define CL_HALF_DIG 3
+#define CL_HALF_MANT_DIG 11
+#define CL_HALF_MAX_10_EXP +4
+#define CL_HALF_MAX_EXP +16
+#define CL_HALF_MIN_10_EXP -4
+#define CL_HALF_MIN_EXP -13
+#define CL_HALF_RADIX 2
+#define CL_HALF_MAX 65504.0f
+#define CL_HALF_MIN 6.103515625e-05f
+#define CL_HALF_EPSILON 9.765625e-04f
+
+#define CL_DBL_DIG 15
+#define CL_DBL_MANT_DIG 53
+#define CL_DBL_MAX_10_EXP +308
+#define CL_DBL_MAX_EXP +1024
+#define CL_DBL_MIN_10_EXP -307
+#define CL_DBL_MIN_EXP -1021
+#define CL_DBL_RADIX 2
+#define CL_DBL_MAX 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0
+#define CL_DBL_MIN 2.225073858507201383090e-308
+#define CL_DBL_EPSILON 2.220446049250313080847e-16
+
+#define CL_M_E 2.7182818284590452354
+#define CL_M_LOG2E 1.4426950408889634074
+#define CL_M_LOG10E 0.43429448190325182765
+#define CL_M_LN2 0.69314718055994530942
+#define CL_M_LN10 2.30258509299404568402
+#define CL_M_PI 3.14159265358979323846
+#define CL_M_PI_2 1.57079632679489661923
+#define CL_M_PI_4 0.78539816339744830962
+#define CL_M_1_PI 0.31830988618379067154
+#define CL_M_2_PI 0.63661977236758134308
+#define CL_M_2_SQRTPI 1.12837916709551257390
+#define CL_M_SQRT2 1.41421356237309504880
+#define CL_M_SQRT1_2 0.70710678118654752440
+
+#define CL_M_E_F 2.718281828f
+#define CL_M_LOG2E_F 1.442695041f
+#define CL_M_LOG10E_F 0.434294482f
+#define CL_M_LN2_F 0.693147181f
+#define CL_M_LN10_F 2.302585093f
+#define CL_M_PI_F 3.141592654f
+#define CL_M_PI_2_F 1.570796327f
+#define CL_M_PI_4_F 0.785398163f
+#define CL_M_1_PI_F 0.318309886f
+#define CL_M_2_PI_F 0.636619772f
+#define CL_M_2_SQRTPI_F 1.128379167f
+#define CL_M_SQRT2_F 1.414213562f
+#define CL_M_SQRT1_2_F 0.707106781f
+
+#if defined( __GNUC__ )
+ #define CL_HUGE_VALF __builtin_huge_valf()
+ #define CL_HUGE_VAL __builtin_huge_val()
+ #define CL_NAN __builtin_nanf( "" )
+#else
+ #define CL_HUGE_VALF ((cl_float) 1e50)
+ #define CL_HUGE_VAL ((cl_double) 1e500)
+ float nanf( const char * );
+ #define CL_NAN nanf( "" )
+#endif
+#define CL_MAXFLOAT CL_FLT_MAX
+#define CL_INFINITY CL_HUGE_VALF
+
+#endif
+
+#include <stddef.h>
+
+/* Mirror types to GL types. Mirror types allow us to avoid deciding which 87s to load based on whether we are using GL or GLES here. */
+typedef unsigned int cl_GLuint;
+typedef int cl_GLint;
+typedef unsigned int cl_GLenum;
+
+/*
+ * Vector types
+ *
+ * Note: OpenCL requires that all types be naturally aligned.
+ * This means that vector types must be naturally aligned.
+ * For example, a vector of four floats must be aligned to
+ * a 16 byte boundary (calculated as 4 * the natural 4-byte
+ * alignment of the float). The alignment qualifiers here
+ * will only function properly if your compiler supports them
+ * and if you don't actively work to defeat them. For example,
+ * in order for a cl_float4 to be 16 byte aligned in a struct,
+ * the start of the struct must itself be 16-byte aligned.
+ *
+ * Maintaining proper alignment is the user's responsibility.
+ */
+
+/* Define basic vector types */
+#if defined( __VEC__ )
+ #include <altivec.h> /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */
+ typedef __vector unsigned char __cl_uchar16;
+ typedef __vector signed char __cl_char16;
+ typedef __vector unsigned short __cl_ushort8;
+ typedef __vector signed short __cl_short8;
+ typedef __vector unsigned int __cl_uint4;
+ typedef __vector signed int __cl_int4;
+ typedef __vector float __cl_float4;
+ #define __CL_UCHAR16__ 1
+ #define __CL_CHAR16__ 1
+ #define __CL_USHORT8__ 1
+ #define __CL_SHORT8__ 1
+ #define __CL_UINT4__ 1
+ #define __CL_INT4__ 1
+ #define __CL_FLOAT4__ 1
+#endif
+
+#if defined( __SSE__ )
+ #if defined( __MINGW64__ )
+ #include <intrin.h>
+ #else
+ #include <xmmintrin.h>
+ #endif
+ #if defined( __GNUC__ )
+ typedef float __cl_float4 __attribute__((vector_size(16)));
+ #else
+ typedef __m128 __cl_float4;
+ #endif
+ #define __CL_FLOAT4__ 1
+#endif
+
+#if defined( __SSE2__ )
+ #if defined( __MINGW64__ )
+ #include <intrin.h>
+ #else
+ #include <emmintrin.h>
+ #endif
+ #if defined( __GNUC__ )
+ typedef cl_uchar __cl_uchar16 __attribute__((vector_size(16)));
+ typedef cl_char __cl_char16 __attribute__((vector_size(16)));
+ typedef cl_ushort __cl_ushort8 __attribute__((vector_size(16)));
+ typedef cl_short __cl_short8 __attribute__((vector_size(16)));
+ typedef cl_uint __cl_uint4 __attribute__((vector_size(16)));
+ typedef cl_int __cl_int4 __attribute__((vector_size(16)));
+ typedef cl_ulong __cl_ulong2 __attribute__((vector_size(16)));
+ typedef cl_long __cl_long2 __attribute__((vector_size(16)));
+ typedef cl_double __cl_double2 __attribute__((vector_size(16)));
+ #else
+ typedef __m128i __cl_uchar16;
+ typedef __m128i __cl_char16;
+ typedef __m128i __cl_ushort8;
+ typedef __m128i __cl_short8;
+ typedef __m128i __cl_uint4;
+ typedef __m128i __cl_int4;
+ typedef __m128i __cl_ulong2;
+ typedef __m128i __cl_long2;
+ typedef __m128d __cl_double2;
+ #endif
+ #define __CL_UCHAR16__ 1
+ #define __CL_CHAR16__ 1
+ #define __CL_USHORT8__ 1
+ #define __CL_SHORT8__ 1
+ #define __CL_INT4__ 1
+ #define __CL_UINT4__ 1
+ #define __CL_ULONG2__ 1
+ #define __CL_LONG2__ 1
+ #define __CL_DOUBLE2__ 1
+#endif
+
+#if defined( __MMX__ )
+ #include <mmintrin.h>
+ #if defined( __GNUC__ )
+ typedef cl_uchar __cl_uchar8 __attribute__((vector_size(8)));
+ typedef cl_char __cl_char8 __attribute__((vector_size(8)));
+ typedef cl_ushort __cl_ushort4 __attribute__((vector_size(8)));
+ typedef cl_short __cl_short4 __attribute__((vector_size(8)));
+ typedef cl_uint __cl_uint2 __attribute__((vector_size(8)));
+ typedef cl_int __cl_int2 __attribute__((vector_size(8)));
+ typedef cl_ulong __cl_ulong1 __attribute__((vector_size(8)));
+ typedef cl_long __cl_long1 __attribute__((vector_size(8)));
+ typedef cl_float __cl_float2 __attribute__((vector_size(8)));
+ #else
+ typedef __m64 __cl_uchar8;
+ typedef __m64 __cl_char8;
+ typedef __m64 __cl_ushort4;
+ typedef __m64 __cl_short4;
+ typedef __m64 __cl_uint2;
+ typedef __m64 __cl_int2;
+ typedef __m64 __cl_ulong1;
+ typedef __m64 __cl_long1;
+ typedef __m64 __cl_float2;
+ #endif
+ #define __CL_UCHAR8__ 1
+ #define __CL_CHAR8__ 1
+ #define __CL_USHORT4__ 1
+ #define __CL_SHORT4__ 1
+ #define __CL_INT2__ 1
+ #define __CL_UINT2__ 1
+ #define __CL_ULONG1__ 1
+ #define __CL_LONG1__ 1
+ #define __CL_FLOAT2__ 1
+#endif
+
+#if defined( __AVX__ )
+ #if defined( __MINGW64__ )
+ #include <intrin.h>
+ #else
+ #include <immintrin.h>
+ #endif
+ #if defined( __GNUC__ )
+ typedef cl_float __cl_float8 __attribute__((vector_size(32)));
+ typedef cl_double __cl_double4 __attribute__((vector_size(32)));
+ #else
+ typedef __m256 __cl_float8;
+ typedef __m256d __cl_double4;
+ #endif
+ #define __CL_FLOAT8__ 1
+ #define __CL_DOUBLE4__ 1
+#endif
+
+/* Define capabilities for anonymous struct members. */
+#if !defined(__cplusplus) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
+#define __CL_HAS_ANON_STRUCT__ 1
+#define __CL_ANON_STRUCT__
+#elif defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
+#define __CL_HAS_ANON_STRUCT__ 1
+#define __CL_ANON_STRUCT__ __extension__
+#elif defined( _WIN32) && defined(_MSC_VER)
+ #if _MSC_VER >= 1500
+ /* Microsoft Developer Studio 2008 supports anonymous structs, but
+ * complains by default. */
+ #define __CL_HAS_ANON_STRUCT__ 1
+ #define __CL_ANON_STRUCT__
+ /* Disable warning C4201: nonstandard extension used : nameless
+ * struct/union */
+ #pragma warning( push )
+ #pragma warning( disable : 4201 )
+ #endif
+#else
+#define __CL_HAS_ANON_STRUCT__ 0
+#define __CL_ANON_STRUCT__
+#endif
+
+/* Define alignment keys */
+#if defined( __GNUC__ )
+ #define CL_ALIGNED(_x) __attribute__ ((aligned(_x)))
+#elif defined( _WIN32) && (_MSC_VER)
+ /* Alignment keys neutered on windows because MSVC can't swallow function arguments with alignment requirements */
+ /* http://msdn.microsoft.com/en-us/library/373ak2y1%28VS.71%29.aspx */
+ /* #include <crtdefs.h> */
+ /* #define CL_ALIGNED(_x) _CRT_ALIGN(_x) */
+ #define CL_ALIGNED(_x)
+#else
+ #warning Need to implement some method to align data here
+ #define CL_ALIGNED(_x)
+#endif
+
+/* Indicate whether .xyzw, .s0123 and .hi.lo are supported */
+#if __CL_HAS_ANON_STRUCT__
+ /* .xyzw and .s0123...{f|F} are supported */
+ #define CL_HAS_NAMED_VECTOR_FIELDS 1
+ /* .hi and .lo are supported */
+ #define CL_HAS_HI_LO_VECTOR_FIELDS 1
+#endif
+
+/* Define cl_vector types */
+
+/* ---- cl_charn ---- */
+typedef union
+{
+ cl_char CL_ALIGNED(2) s[2];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_char x, y; };
+ __CL_ANON_STRUCT__ struct{ cl_char s0, s1; };
+ __CL_ANON_STRUCT__ struct{ cl_char lo, hi; };
+#endif
+#if defined( __CL_CHAR2__)
+ __cl_char2 v2;
+#endif
+}cl_char2;
+
+typedef union
+{
+ cl_char CL_ALIGNED(4) s[4];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3; };
+ __CL_ANON_STRUCT__ struct{ cl_char2 lo, hi; };
+#endif
+#if defined( __CL_CHAR2__)
+ __cl_char2 v2[2];
+#endif
+#if defined( __CL_CHAR4__)
+ __cl_char4 v4;
+#endif
+}cl_char4;
+
+/* cl_char3 is identical in size, alignment and behavior to cl_char4. See section 6.1.5. */
+typedef cl_char4 cl_char3;
+
+typedef union
+{
+ cl_char CL_ALIGNED(8) s[8];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7; };
+ __CL_ANON_STRUCT__ struct{ cl_char4 lo, hi; };
+#endif
+#if defined( __CL_CHAR2__)
+ __cl_char2 v2[4];
+#endif
+#if defined( __CL_CHAR4__)
+ __cl_char4 v4[2];
+#endif
+#if defined( __CL_CHAR8__ )
+ __cl_char8 v8;
+#endif
+}cl_char8;
+
+typedef union
+{
+ cl_char CL_ALIGNED(16) s[16];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
+ __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
+ __CL_ANON_STRUCT__ struct{ cl_char8 lo, hi; };
+#endif
+#if defined( __CL_CHAR2__)
+ __cl_char2 v2[8];
+#endif
+#if defined( __CL_CHAR4__)
+ __cl_char4 v4[4];
+#endif
+#if defined( __CL_CHAR8__ )
+ __cl_char8 v8[2];
+#endif
+#if defined( __CL_CHAR16__ )
+ __cl_char16 v16;
+#endif
+}cl_char16;
+
+
+/* ---- cl_ucharn ---- */
+typedef union
+{
+ cl_uchar CL_ALIGNED(2) s[2];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_uchar x, y; };
+ __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1; };
+ __CL_ANON_STRUCT__ struct{ cl_uchar lo, hi; };
+#endif
+#if defined( __cl_uchar2__)
+ __cl_uchar2 v2;
+#endif
+}cl_uchar2;
+
+typedef union
+{
+ cl_uchar CL_ALIGNED(4) s[4];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3; };
+ __CL_ANON_STRUCT__ struct{ cl_uchar2 lo, hi; };
+#endif
+#if defined( __CL_UCHAR2__)
+ __cl_uchar2 v2[2];
+#endif
+#if defined( __CL_UCHAR4__)
+ __cl_uchar4 v4;
+#endif
+}cl_uchar4;
+
+/* cl_uchar3 is identical in size, alignment and behavior to cl_uchar4. See section 6.1.5. */
+typedef cl_uchar4 cl_uchar3;
+
+typedef union
+{
+ cl_uchar CL_ALIGNED(8) s[8];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7; };
+ __CL_ANON_STRUCT__ struct{ cl_uchar4 lo, hi; };
+#endif
+#if defined( __CL_UCHAR2__)
+ __cl_uchar2 v2[4];
+#endif
+#if defined( __CL_UCHAR4__)
+ __cl_uchar4 v4[2];
+#endif
+#if defined( __CL_UCHAR8__ )
+ __cl_uchar8 v8;
+#endif
+}cl_uchar8;
+
+typedef union
+{
+ cl_uchar CL_ALIGNED(16) s[16];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
+ __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
+ __CL_ANON_STRUCT__ struct{ cl_uchar8 lo, hi; };
+#endif
+#if defined( __CL_UCHAR2__)
+ __cl_uchar2 v2[8];
+#endif
+#if defined( __CL_UCHAR4__)
+ __cl_uchar4 v4[4];
+#endif
+#if defined( __CL_UCHAR8__ )
+ __cl_uchar8 v8[2];
+#endif
+#if defined( __CL_UCHAR16__ )
+ __cl_uchar16 v16;
+#endif
+}cl_uchar16;
+
+
+/* ---- cl_shortn ---- */
+typedef union
+{
+ cl_short CL_ALIGNED(4) s[2];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_short x, y; };
+ __CL_ANON_STRUCT__ struct{ cl_short s0, s1; };
+ __CL_ANON_STRUCT__ struct{ cl_short lo, hi; };
+#endif
+#if defined( __CL_SHORT2__)
+ __cl_short2 v2;
+#endif
+}cl_short2;
+
+typedef union
+{
+ cl_short CL_ALIGNED(8) s[4];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3; };
+ __CL_ANON_STRUCT__ struct{ cl_short2 lo, hi; };
+#endif
+#if defined( __CL_SHORT2__)
+ __cl_short2 v2[2];
+#endif
+#if defined( __CL_SHORT4__)
+ __cl_short4 v4;
+#endif
+}cl_short4;
+
+/* cl_short3 is identical in size, alignment and behavior to cl_short4. See section 6.1.5. */
+typedef cl_short4 cl_short3;
+
+typedef union
+{
+ cl_short CL_ALIGNED(16) s[8];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7; };
+ __CL_ANON_STRUCT__ struct{ cl_short4 lo, hi; };
+#endif
+#if defined( __CL_SHORT2__)
+ __cl_short2 v2[4];
+#endif
+#if defined( __CL_SHORT4__)
+ __cl_short4 v4[2];
+#endif
+#if defined( __CL_SHORT8__ )
+ __cl_short8 v8;
+#endif
+}cl_short8;
+
+typedef union
+{
+ cl_short CL_ALIGNED(32) s[16];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
+ __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
+ __CL_ANON_STRUCT__ struct{ cl_short8 lo, hi; };
+#endif
+#if defined( __CL_SHORT2__)
+ __cl_short2 v2[8];
+#endif
+#if defined( __CL_SHORT4__)
+ __cl_short4 v4[4];
+#endif
+#if defined( __CL_SHORT8__ )
+ __cl_short8 v8[2];
+#endif
+#if defined( __CL_SHORT16__ )
+ __cl_short16 v16;
+#endif
+}cl_short16;
+
+
+/* ---- cl_ushortn ---- */
+typedef union
+{
+ cl_ushort CL_ALIGNED(4) s[2];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_ushort x, y; };
+ __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1; };
+ __CL_ANON_STRUCT__ struct{ cl_ushort lo, hi; };
+#endif
+#if defined( __CL_USHORT2__)
+ __cl_ushort2 v2;
+#endif
+}cl_ushort2;
+
+typedef union
+{
+ cl_ushort CL_ALIGNED(8) s[4];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3; };
+ __CL_ANON_STRUCT__ struct{ cl_ushort2 lo, hi; };
+#endif
+#if defined( __CL_USHORT2__)
+ __cl_ushort2 v2[2];
+#endif
+#if defined( __CL_USHORT4__)
+ __cl_ushort4 v4;
+#endif
+}cl_ushort4;
+
+/* cl_ushort3 is identical in size, alignment and behavior to cl_ushort4. See section 6.1.5. */
+typedef cl_ushort4 cl_ushort3;
+
+typedef union
+{
+ cl_ushort CL_ALIGNED(16) s[8];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7; };
+ __CL_ANON_STRUCT__ struct{ cl_ushort4 lo, hi; };
+#endif
+#if defined( __CL_USHORT2__)
+ __cl_ushort2 v2[4];
+#endif
+#if defined( __CL_USHORT4__)
+ __cl_ushort4 v4[2];
+#endif
+#if defined( __CL_USHORT8__ )
+ __cl_ushort8 v8;
+#endif
+}cl_ushort8;
+
+typedef union
+{
+ cl_ushort CL_ALIGNED(32) s[16];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
+ __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
+ __CL_ANON_STRUCT__ struct{ cl_ushort8 lo, hi; };
+#endif
+#if defined( __CL_USHORT2__)
+ __cl_ushort2 v2[8];
+#endif
+#if defined( __CL_USHORT4__)
+ __cl_ushort4 v4[4];
+#endif
+#if defined( __CL_USHORT8__ )
+ __cl_ushort8 v8[2];
+#endif
+#if defined( __CL_USHORT16__ )
+ __cl_ushort16 v16;
+#endif
+}cl_ushort16;
+
+
+/* ---- cl_halfn ---- */
+typedef union
+{
+ cl_half CL_ALIGNED(4) s[2];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_half x, y; };
+ __CL_ANON_STRUCT__ struct{ cl_half s0, s1; };
+ __CL_ANON_STRUCT__ struct{ cl_half lo, hi; };
+#endif
+#if defined( __CL_HALF2__)
+ __cl_half2 v2;
+#endif
+}cl_half2;
+
+typedef union
+{
+ cl_half CL_ALIGNED(8) s[4];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3; };
+ __CL_ANON_STRUCT__ struct{ cl_half2 lo, hi; };
+#endif
+#if defined( __CL_HALF2__)
+ __cl_half2 v2[2];
+#endif
+#if defined( __CL_HALF4__)
+ __cl_half4 v4;
+#endif
+}cl_half4;
+
+/* cl_half3 is identical in size, alignment and behavior to cl_half4. See section 6.1.5. */
+typedef cl_half4 cl_half3;
+
+typedef union
+{
+ cl_half CL_ALIGNED(16) s[8];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3, s4, s5, s6, s7; };
+ __CL_ANON_STRUCT__ struct{ cl_half4 lo, hi; };
+#endif
+#if defined( __CL_HALF2__)
+ __cl_half2 v2[4];
+#endif
+#if defined( __CL_HALF4__)
+ __cl_half4 v4[2];
+#endif
+#if defined( __CL_HALF8__ )
+ __cl_half8 v8;
+#endif
+}cl_half8;
+
+typedef union
+{
+ cl_half CL_ALIGNED(32) s[16];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
+ __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
+ __CL_ANON_STRUCT__ struct{ cl_half8 lo, hi; };
+#endif
+#if defined( __CL_HALF2__)
+ __cl_half2 v2[8];
+#endif
+#if defined( __CL_HALF4__)
+ __cl_half4 v4[4];
+#endif
+#if defined( __CL_HALF8__ )
+ __cl_half8 v8[2];
+#endif
+#if defined( __CL_HALF16__ )
+ __cl_half16 v16;
+#endif
+}cl_half16;
+
+/* ---- cl_intn ---- */
+typedef union
+{
+ cl_int CL_ALIGNED(8) s[2];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_int x, y; };
+ __CL_ANON_STRUCT__ struct{ cl_int s0, s1; };
+ __CL_ANON_STRUCT__ struct{ cl_int lo, hi; };
+#endif
+#if defined( __CL_INT2__)
+ __cl_int2 v2;
+#endif
+}cl_int2;
+
+typedef union
+{
+ cl_int CL_ALIGNED(16) s[4];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3; };
+ __CL_ANON_STRUCT__ struct{ cl_int2 lo, hi; };
+#endif
+#if defined( __CL_INT2__)
+ __cl_int2 v2[2];
+#endif
+#if defined( __CL_INT4__)
+ __cl_int4 v4;
+#endif
+}cl_int4;
+
+/* cl_int3 is identical in size, alignment and behavior to cl_int4. See section 6.1.5. */
+typedef cl_int4 cl_int3;
+
+typedef union
+{
+ cl_int CL_ALIGNED(32) s[8];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7; };
+ __CL_ANON_STRUCT__ struct{ cl_int4 lo, hi; };
+#endif
+#if defined( __CL_INT2__)
+ __cl_int2 v2[4];
+#endif
+#if defined( __CL_INT4__)
+ __cl_int4 v4[2];
+#endif
+#if defined( __CL_INT8__ )
+ __cl_int8 v8;
+#endif
+}cl_int8;
+
+typedef union
+{
+ cl_int CL_ALIGNED(64) s[16];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
+ __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
+ __CL_ANON_STRUCT__ struct{ cl_int8 lo, hi; };
+#endif
+#if defined( __CL_INT2__)
+ __cl_int2 v2[8];
+#endif
+#if defined( __CL_INT4__)
+ __cl_int4 v4[4];
+#endif
+#if defined( __CL_INT8__ )
+ __cl_int8 v8[2];
+#endif
+#if defined( __CL_INT16__ )
+ __cl_int16 v16;
+#endif
+}cl_int16;
+
+
+/* ---- cl_uintn ---- */
+typedef union
+{
+ cl_uint CL_ALIGNED(8) s[2];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_uint x, y; };
+ __CL_ANON_STRUCT__ struct{ cl_uint s0, s1; };
+ __CL_ANON_STRUCT__ struct{ cl_uint lo, hi; };
+#endif
+#if defined( __CL_UINT2__)
+ __cl_uint2 v2;
+#endif
+}cl_uint2;
+
+typedef union
+{
+ cl_uint CL_ALIGNED(16) s[4];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3; };
+ __CL_ANON_STRUCT__ struct{ cl_uint2 lo, hi; };
+#endif
+#if defined( __CL_UINT2__)
+ __cl_uint2 v2[2];
+#endif
+#if defined( __CL_UINT4__)
+ __cl_uint4 v4;
+#endif
+}cl_uint4;
+
+/* cl_uint3 is identical in size, alignment and behavior to cl_uint4. See section 6.1.5. */
+typedef cl_uint4 cl_uint3;
+
+typedef union
+{
+ cl_uint CL_ALIGNED(32) s[8];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7; };
+ __CL_ANON_STRUCT__ struct{ cl_uint4 lo, hi; };
+#endif
+#if defined( __CL_UINT2__)
+ __cl_uint2 v2[4];
+#endif
+#if defined( __CL_UINT4__)
+ __cl_uint4 v4[2];
+#endif
+#if defined( __CL_UINT8__ )
+ __cl_uint8 v8;
+#endif
+}cl_uint8;
+
+typedef union
+{
+ cl_uint CL_ALIGNED(64) s[16];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
+ __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
+ __CL_ANON_STRUCT__ struct{ cl_uint8 lo, hi; };
+#endif
+#if defined( __CL_UINT2__)
+ __cl_uint2 v2[8];
+#endif
+#if defined( __CL_UINT4__)
+ __cl_uint4 v4[4];
+#endif
+#if defined( __CL_UINT8__ )
+ __cl_uint8 v8[2];
+#endif
+#if defined( __CL_UINT16__ )
+ __cl_uint16 v16;
+#endif
+}cl_uint16;
+
+/* ---- cl_longn ---- */
+typedef union
+{
+ cl_long CL_ALIGNED(16) s[2];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_long x, y; };
+ __CL_ANON_STRUCT__ struct{ cl_long s0, s1; };
+ __CL_ANON_STRUCT__ struct{ cl_long lo, hi; };
+#endif
+#if defined( __CL_LONG2__)
+ __cl_long2 v2;
+#endif
+}cl_long2;
+
+typedef union
+{
+ cl_long CL_ALIGNED(32) s[4];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3; };
+ __CL_ANON_STRUCT__ struct{ cl_long2 lo, hi; };
+#endif
+#if defined( __CL_LONG2__)
+ __cl_long2 v2[2];
+#endif
+#if defined( __CL_LONG4__)
+ __cl_long4 v4;
+#endif
+}cl_long4;
+
+/* cl_long3 is identical in size, alignment and behavior to cl_long4. See section 6.1.5. */
+typedef cl_long4 cl_long3;
+
+typedef union
+{
+ cl_long CL_ALIGNED(64) s[8];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7; };
+ __CL_ANON_STRUCT__ struct{ cl_long4 lo, hi; };
+#endif
+#if defined( __CL_LONG2__)
+ __cl_long2 v2[4];
+#endif
+#if defined( __CL_LONG4__)
+ __cl_long4 v4[2];
+#endif
+#if defined( __CL_LONG8__ )
+ __cl_long8 v8;
+#endif
+}cl_long8;
+
+typedef union
+{
+ cl_long CL_ALIGNED(128) s[16];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
+ __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
+ __CL_ANON_STRUCT__ struct{ cl_long8 lo, hi; };
+#endif
+#if defined( __CL_LONG2__)
+ __cl_long2 v2[8];
+#endif
+#if defined( __CL_LONG4__)
+ __cl_long4 v4[4];
+#endif
+#if defined( __CL_LONG8__ )
+ __cl_long8 v8[2];
+#endif
+#if defined( __CL_LONG16__ )
+ __cl_long16 v16;
+#endif
+}cl_long16;
+
+
+/* ---- cl_ulongn ---- */
+typedef union
+{
+ cl_ulong CL_ALIGNED(16) s[2];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_ulong x, y; };
+ __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1; };
+ __CL_ANON_STRUCT__ struct{ cl_ulong lo, hi; };
+#endif
+#if defined( __CL_ULONG2__)
+ __cl_ulong2 v2;
+#endif
+}cl_ulong2;
+
+typedef union
+{
+ cl_ulong CL_ALIGNED(32) s[4];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3; };
+ __CL_ANON_STRUCT__ struct{ cl_ulong2 lo, hi; };
+#endif
+#if defined( __CL_ULONG2__)
+ __cl_ulong2 v2[2];
+#endif
+#if defined( __CL_ULONG4__)
+ __cl_ulong4 v4;
+#endif
+}cl_ulong4;
+
+/* cl_ulong3 is identical in size, alignment and behavior to cl_ulong4. See section 6.1.5. */
+typedef cl_ulong4 cl_ulong3;
+
+typedef union
+{
+ cl_ulong CL_ALIGNED(64) s[8];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7; };
+ __CL_ANON_STRUCT__ struct{ cl_ulong4 lo, hi; };
+#endif
+#if defined( __CL_ULONG2__)
+ __cl_ulong2 v2[4];
+#endif
+#if defined( __CL_ULONG4__)
+ __cl_ulong4 v4[2];
+#endif
+#if defined( __CL_ULONG8__ )
+ __cl_ulong8 v8;
+#endif
+}cl_ulong8;
+
+typedef union
+{
+ cl_ulong CL_ALIGNED(128) s[16];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
+ __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
+ __CL_ANON_STRUCT__ struct{ cl_ulong8 lo, hi; };
+#endif
+#if defined( __CL_ULONG2__)
+ __cl_ulong2 v2[8];
+#endif
+#if defined( __CL_ULONG4__)
+ __cl_ulong4 v4[4];
+#endif
+#if defined( __CL_ULONG8__ )
+ __cl_ulong8 v8[2];
+#endif
+#if defined( __CL_ULONG16__ )
+ __cl_ulong16 v16;
+#endif
+}cl_ulong16;
+
+
+/* --- cl_floatn ---- */
+
+typedef union
+{
+ cl_float CL_ALIGNED(8) s[2];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_float x, y; };
+ __CL_ANON_STRUCT__ struct{ cl_float s0, s1; };
+ __CL_ANON_STRUCT__ struct{ cl_float lo, hi; };
+#endif
+#if defined( __CL_FLOAT2__)
+ __cl_float2 v2;
+#endif
+}cl_float2;
+
+typedef union
+{
+ cl_float CL_ALIGNED(16) s[4];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3; };
+ __CL_ANON_STRUCT__ struct{ cl_float2 lo, hi; };
+#endif
+#if defined( __CL_FLOAT2__)
+ __cl_float2 v2[2];
+#endif
+#if defined( __CL_FLOAT4__)
+ __cl_float4 v4;
+#endif
+}cl_float4;
+
+/* cl_float3 is identical in size, alignment and behavior to cl_float4. See section 6.1.5. */
+typedef cl_float4 cl_float3;
+
+typedef union
+{
+ cl_float CL_ALIGNED(32) s[8];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7; };
+ __CL_ANON_STRUCT__ struct{ cl_float4 lo, hi; };
+#endif
+#if defined( __CL_FLOAT2__)
+ __cl_float2 v2[4];
+#endif
+#if defined( __CL_FLOAT4__)
+ __cl_float4 v4[2];
+#endif
+#if defined( __CL_FLOAT8__ )
+ __cl_float8 v8;
+#endif
+}cl_float8;
+
+typedef union
+{
+ cl_float CL_ALIGNED(64) s[16];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
+ __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
+ __CL_ANON_STRUCT__ struct{ cl_float8 lo, hi; };
+#endif
+#if defined( __CL_FLOAT2__)
+ __cl_float2 v2[8];
+#endif
+#if defined( __CL_FLOAT4__)
+ __cl_float4 v4[4];
+#endif
+#if defined( __CL_FLOAT8__ )
+ __cl_float8 v8[2];
+#endif
+#if defined( __CL_FLOAT16__ )
+ __cl_float16 v16;
+#endif
+}cl_float16;
+
+/* --- cl_doublen ---- */
+
+typedef union
+{
+ cl_double CL_ALIGNED(16) s[2];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_double x, y; };
+ __CL_ANON_STRUCT__ struct{ cl_double s0, s1; };
+ __CL_ANON_STRUCT__ struct{ cl_double lo, hi; };
+#endif
+#if defined( __CL_DOUBLE2__)
+ __cl_double2 v2;
+#endif
+}cl_double2;
+
+typedef union
+{
+ cl_double CL_ALIGNED(32) s[4];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3; };
+ __CL_ANON_STRUCT__ struct{ cl_double2 lo, hi; };
+#endif
+#if defined( __CL_DOUBLE2__)
+ __cl_double2 v2[2];
+#endif
+#if defined( __CL_DOUBLE4__)
+ __cl_double4 v4;
+#endif
+}cl_double4;
+
+/* cl_double3 is identical in size, alignment and behavior to cl_double4. See section 6.1.5. */
+typedef cl_double4 cl_double3;
+
+typedef union
+{
+ cl_double CL_ALIGNED(64) s[8];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w; };
+ __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7; };
+ __CL_ANON_STRUCT__ struct{ cl_double4 lo, hi; };
+#endif
+#if defined( __CL_DOUBLE2__)
+ __cl_double2 v2[4];
+#endif
+#if defined( __CL_DOUBLE4__)
+ __cl_double4 v4[2];
+#endif
+#if defined( __CL_DOUBLE8__ )
+ __cl_double8 v8;
+#endif
+}cl_double8;
+
+typedef union
+{
+ cl_double CL_ALIGNED(128) s[16];
+#if __CL_HAS_ANON_STRUCT__
+ __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; };
+ __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; };
+ __CL_ANON_STRUCT__ struct{ cl_double8 lo, hi; };
+#endif
+#if defined( __CL_DOUBLE2__)
+ __cl_double2 v2[8];
+#endif
+#if defined( __CL_DOUBLE4__)
+ __cl_double4 v4[4];
+#endif
+#if defined( __CL_DOUBLE8__ )
+ __cl_double8 v8[2];
+#endif
+#if defined( __CL_DOUBLE16__ )
+ __cl_double16 v16;
+#endif
+}cl_double16;
+
+/* Macro to facilitate debugging
+ * Usage:
+ * Place CL_PROGRAM_STRING_DEBUG_INFO on the line before the first line of your source.
+ * The first line ends with: CL_PROGRAM_STRING_DEBUG_INFO \"
+ * Each line thereafter of OpenCL C source must end with: \n\
+ * The last line ends in ";
+ *
+ * Example:
+ *
+ * const char *my_program = CL_PROGRAM_STRING_DEBUG_INFO "\
+ * kernel void foo( int a, float * b ) \n\
+ * { \n\
+ * // my comment \n\
+ * *b[ get_global_id(0)] = a; \n\
+ * } \n\
+ * ";
+ *
+ * This should correctly set up the line, (column) and file information for your source
+ * string so you can do source level debugging.
+ */
+#define __CL_STRINGIFY( _x ) # _x
+#define _CL_STRINGIFY( _x ) __CL_STRINGIFY( _x )
+#define CL_PROGRAM_STRING_DEBUG_INFO "#line " _CL_STRINGIFY(__LINE__) " \"" __FILE__ "\" \n\n"
+
+#ifdef __cplusplus
+}
+#endif
+
+#undef __CL_HAS_ANON_STRUCT__
+#undef __CL_ANON_STRUCT__
+#if defined( _WIN32) && defined(_MSC_VER)
+ #if _MSC_VER >=1500
+ #pragma warning( pop )
+ #endif
+#endif
+
+#endif /* __CL_PLATFORM_H */
diff --git a/src/external/OpenCL/CL/cl_va_api_media_sharing_intel.h b/src/external/OpenCL/CL/cl_va_api_media_sharing_intel.h
new file mode 100644
index 000000000..934f3f52a
--- /dev/null
+++ b/src/external/OpenCL/CL/cl_va_api_media_sharing_intel.h
@@ -0,0 +1,172 @@
+/**********************************************************************************
+ * Copyright (c) 2008-2019 The Khronos Group Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and/or associated documentation files (the
+ * "Materials"), to deal in the Materials without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Materials, and to
+ * permit persons to whom the Materials are furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Materials.
+ *
+ * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+ * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+ * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+ * https://www.khronos.org/registry/
+ *
+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+ **********************************************************************************/
+/*****************************************************************************\
+
+Copyright (c) 2013-2019 Intel Corporation All Rights Reserved.
+
+THESE MATERIALS ARE PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THESE
+MATERIALS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+File Name: cl_va_api_media_sharing_intel.h
+
+Abstract:
+
+Notes:
+
+\*****************************************************************************/
+
+
+#ifndef __OPENCL_CL_VA_API_MEDIA_SHARING_INTEL_H
+#define __OPENCL_CL_VA_API_MEDIA_SHARING_INTEL_H
+
+#include <CL/cl.h>
+#include <CL/cl_platform.h>
+#include <va/va.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/******************************************
+* cl_intel_va_api_media_sharing extension *
+*******************************************/
+
+#define cl_intel_va_api_media_sharing 1
+
+/* error codes */
+#define CL_INVALID_VA_API_MEDIA_ADAPTER_INTEL -1098
+#define CL_INVALID_VA_API_MEDIA_SURFACE_INTEL -1099
+#define CL_VA_API_MEDIA_SURFACE_ALREADY_ACQUIRED_INTEL -1100
+#define CL_VA_API_MEDIA_SURFACE_NOT_ACQUIRED_INTEL -1101
+
+/* cl_va_api_device_source_intel */
+#define CL_VA_API_DISPLAY_INTEL 0x4094
+
+/* cl_va_api_device_set_intel */
+#define CL_PREFERRED_DEVICES_FOR_VA_API_INTEL 0x4095
+#define CL_ALL_DEVICES_FOR_VA_API_INTEL 0x4096
+
+/* cl_context_info */
+#define CL_CONTEXT_VA_API_DISPLAY_INTEL 0x4097
+
+/* cl_mem_info */
+#define CL_MEM_VA_API_MEDIA_SURFACE_INTEL 0x4098
+
+/* cl_image_info */
+#define CL_IMAGE_VA_API_PLANE_INTEL 0x4099
+
+/* cl_command_type */
+#define CL_COMMAND_ACQUIRE_VA_API_MEDIA_SURFACES_INTEL 0x409A
+#define CL_COMMAND_RELEASE_VA_API_MEDIA_SURFACES_INTEL 0x409B
+
+typedef cl_uint cl_va_api_device_source_intel;
+typedef cl_uint cl_va_api_device_set_intel;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetDeviceIDsFromVA_APIMediaAdapterINTEL(
+ cl_platform_id platform,
+ cl_va_api_device_source_intel media_adapter_type,
+ void* media_adapter,
+ cl_va_api_device_set_intel media_adapter_set,
+ cl_uint num_entries,
+ cl_device_id* devices,
+ cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL * clGetDeviceIDsFromVA_APIMediaAdapterINTEL_fn)(
+ cl_platform_id platform,
+ cl_va_api_device_source_intel media_adapter_type,
+ void* media_adapter,
+ cl_va_api_device_set_intel media_adapter_set,
+ cl_uint num_entries,
+ cl_device_id* devices,
+ cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_mem CL_API_CALL
+clCreateFromVA_APIMediaSurfaceINTEL(
+ cl_context context,
+ cl_mem_flags flags,
+ VASurfaceID* surface,
+ cl_uint plane,
+ cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_mem (CL_API_CALL * clCreateFromVA_APIMediaSurfaceINTEL_fn)(
+ cl_context context,
+ cl_mem_flags flags,
+ VASurfaceID* surface,
+ cl_uint plane,
+ cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueAcquireVA_APIMediaSurfacesINTEL(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem* mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event* event_wait_list,
+ cl_event* event) CL_EXT_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireVA_APIMediaSurfacesINTEL_fn)(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem* mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event* event_wait_list,
+ cl_event* event) CL_EXT_SUFFIX__VERSION_1_2;
+
+extern CL_API_ENTRY cl_int CL_API_CALL
+clEnqueueReleaseVA_APIMediaSurfacesINTEL(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem* mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event* event_wait_list,
+ cl_event* event) CL_EXT_SUFFIX__VERSION_1_2;
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseVA_APIMediaSurfacesINTEL_fn)(
+ cl_command_queue command_queue,
+ cl_uint num_objects,
+ const cl_mem* mem_objects,
+ cl_uint num_events_in_wait_list,
+ const cl_event* event_wait_list,
+ cl_event* event) CL_EXT_SUFFIX__VERSION_1_2;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __OPENCL_CL_VA_API_MEDIA_SHARING_INTEL_H */
+
diff --git a/src/external/OpenCL/CL/cl_version.h b/src/external/OpenCL/CL/cl_version.h
new file mode 100644
index 000000000..bb766cb9b
--- /dev/null
+++ b/src/external/OpenCL/CL/cl_version.h
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2018 The Khronos Group Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and/or associated documentation files (the
+ * "Materials"), to deal in the Materials without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Materials, and to
+ * permit persons to whom the Materials are furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Materials.
+ *
+ * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+ * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+ * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+ * https://www.khronos.org/registry/
+ *
+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+ ******************************************************************************/
+
+#ifndef __CL_VERSION_H
+#define __CL_VERSION_H
+
+/* Detect which version to target */
+#if !defined(CL_TARGET_OPENCL_VERSION)
+#pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)")
+#define CL_TARGET_OPENCL_VERSION 220
+#endif
+#if CL_TARGET_OPENCL_VERSION != 100 && \
+ CL_TARGET_OPENCL_VERSION != 110 && \
+ CL_TARGET_OPENCL_VERSION != 120 && \
+ CL_TARGET_OPENCL_VERSION != 200 && \
+ CL_TARGET_OPENCL_VERSION != 210 && \
+ CL_TARGET_OPENCL_VERSION != 220
+#pragma message("cl_version: CL_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120, 200, 210, 220). Defaulting to 220 (OpenCL 2.2)")
+#undef CL_TARGET_OPENCL_VERSION
+#define CL_TARGET_OPENCL_VERSION 220
+#endif
+
+
+/* OpenCL Version */
+#if CL_TARGET_OPENCL_VERSION >= 220 && !defined(CL_VERSION_2_2)
+#define CL_VERSION_2_2 1
+#endif
+#if CL_TARGET_OPENCL_VERSION >= 210 && !defined(CL_VERSION_2_1)
+#define CL_VERSION_2_1 1
+#endif
+#if CL_TARGET_OPENCL_VERSION >= 200 && !defined(CL_VERSION_2_0)
+#define CL_VERSION_2_0 1
+#endif
+#if CL_TARGET_OPENCL_VERSION >= 120 && !defined(CL_VERSION_1_2)
+#define CL_VERSION_1_2 1
+#endif
+#if CL_TARGET_OPENCL_VERSION >= 110 && !defined(CL_VERSION_1_1)
+#define CL_VERSION_1_1 1
+#endif
+#if CL_TARGET_OPENCL_VERSION >= 100 && !defined(CL_VERSION_1_0)
+#define CL_VERSION_1_0 1
+#endif
+
+/* Allow deprecated APIs for older OpenCL versions. */
+#if CL_TARGET_OPENCL_VERSION <= 210 && !defined(CL_USE_DEPRECATED_OPENCL_2_1_APIS)
+#define CL_USE_DEPRECATED_OPENCL_2_1_APIS
+#endif
+#if CL_TARGET_OPENCL_VERSION <= 200 && !defined(CL_USE_DEPRECATED_OPENCL_2_0_APIS)
+#define CL_USE_DEPRECATED_OPENCL_2_0_APIS
+#endif
+#if CL_TARGET_OPENCL_VERSION <= 120 && !defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS)
+#define CL_USE_DEPRECATED_OPENCL_1_2_APIS
+#endif
+#if CL_TARGET_OPENCL_VERSION <= 110 && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS)
+#define CL_USE_DEPRECATED_OPENCL_1_1_APIS
+#endif
+#if CL_TARGET_OPENCL_VERSION <= 100 && !defined(CL_USE_DEPRECATED_OPENCL_1_0_APIS)
+#define CL_USE_DEPRECATED_OPENCL_1_0_APIS
+#endif
+
+#endif /* __CL_VERSION_H */
diff --git a/src/external/OpenCL/CL/opencl.h b/src/external/OpenCL/CL/opencl.h
new file mode 100644
index 000000000..143d1d2dc
--- /dev/null
+++ b/src/external/OpenCL/CL/opencl.h
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2015 The Khronos Group Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and/or associated documentation files (the
+ * "Materials"), to deal in the Materials without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Materials, and to
+ * permit persons to whom the Materials are furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Materials.
+ *
+ * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+ * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+ * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+ * https://www.khronos.org/registry/
+ *
+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+ ******************************************************************************/
+
+/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */
+
+#ifndef __OPENCL_H
+#define __OPENCL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <CL/cl.h>
+#include <CL/cl_gl.h>
+#include <CL/cl_gl_ext.h>
+#include <CL/cl_ext.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __OPENCL_H */
diff --git a/src/external/OpenCL/CODE_OF_CONDUCT.md b/src/external/OpenCL/CODE_OF_CONDUCT.md
new file mode 100644
index 000000000..a11610bd3
--- /dev/null
+++ b/src/external/OpenCL/CODE_OF_CONDUCT.md
@@ -0,0 +1 @@
+A reminder that this issue tracker is managed by the Khronos Group. Interactions here should follow the Khronos Code of Conduct (https://www.khronos.org/developers/code-of-conduct), which prohibits aggressive or derogatory language. Please keep the discussion friendly and civil.
diff --git a/src/external/OpenCL/LICENSE b/src/external/OpenCL/LICENSE
new file mode 100644
index 000000000..020ce65fc
--- /dev/null
+++ b/src/external/OpenCL/LICENSE
@@ -0,0 +1,25 @@
+Copyright (c) 2008-2015 The Khronos Group Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Materials.
+
+MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+ https://www.khronos.org/registry/
+
+THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
diff --git a/src/external/OpenCL/README.md b/src/external/OpenCL/README.md
new file mode 100644
index 000000000..757e56e15
--- /dev/null
+++ b/src/external/OpenCL/README.md
@@ -0,0 +1,50 @@
+# OpenCL<sup>TM</sup> API Headers
+
+This repository contains C language headers for the OpenCL API.
+
+The authoritative public repository for these headers is located at:
+
+https://github.com/KhronosGroup/OpenCL-Headers
+
+Issues, proposed fixes for issues, and other suggested changes should be
+created using Github.
+
+## Branch Structure
+
+The OpenCL API headers in this repository are Unified headers and are designed
+to work with all released OpenCL versions. This differs from previous OpenCL
+API headers, where version-specific API headers either existed in separate
+branches, or in separate folders in a branch.
+
+## Compiling for a Specific OpenCL Version
+
+By default, the OpenCL API headers in this repository are for the latest
+OpenCL version (currently OpenCL 2.2). To use these API headers to target
+a different OpenCL version, an application may `#define` the preprocessor
+value `CL_TARGET_OPENCL_VERSION` before including the OpenCL API headers.
+The `CL_TARGET_OPENCL_VERSION` is a three digit decimal value representing
+the OpenCL API version.
+
+For example, to enforce usage of no more than the OpenCL 1.2 APIs, you may
+include the OpenCL API headers as follows:
+
+```
+#define CL_TARGET_OPENCL_VERSION 120
+#include <CL/opencl.h>
+```
+
+## Directory Structure
+
+```
+README.md This file
+LICENSE Source license for the OpenCL API headers
+CL/ Unified OpenCL API headers tree
+```
+
+## License
+
+See [LICENSE](LICENSE).
+
+---
+
+OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission by Khronos.
diff --git a/src/external/libxcf b/src/external/libxcf
deleted file mode 160000
-Subproject 64efecf63ddd952ccf654e479714aaae6f8c598
diff --git a/src/external/libxcf/CMakeLists.txt b/src/external/libxcf/CMakeLists.txt
new file mode 100644
index 000000000..1a19a29f4
--- /dev/null
+++ b/src/external/libxcf/CMakeLists.txt
@@ -0,0 +1,81 @@
+cmake_minimum_required(VERSION 3.9...3.16)
+
+if(${CMAKE_VERSION} VERSION_LESS 3.12)
+ cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
+endif()
+
+set(CMAKE_DISABLE_SOURCE_CHANGES ON)
+set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
+
+# Add a sensible build type default and warning because empty means no optimization and no debug info.
+if(NOT CMAKE_BUILD_TYPE)
+ message("WARNING: CMAKE_BUILD_TYPE is not defined!\n Defaulting to CMAKE_BUILD_TYPE=Release. Use ccmake to set a proper value.")
+ SET(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
+endif(NOT CMAKE_BUILD_TYPE)
+
+include(GNUInstallDirs)
+include(FeatureSummary)
+
+project(xcf VERSION 0.1.0
+ DESCRIPTION "A library for writing GIMP XCF files"
+ LANGUAGES C)
+
+if(WIN32)
+ set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
+endif()
+
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+set(CMAKE_LINK_WHAT_YOU_USE ON)
+
+include(GNUInstallDirs)
+include(CMakePackageConfigHelpers)
+
+# disable compilation inside the source tree. the results are harder to clean up and make it easy to commit build results
+if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
+ message(FATAL_ERROR "In-source builds are not permitted. Make a separate folder for building:\nmkdir build; cd build; cmake ..\nBefore that, remove the files already created:\nrm -rf CMakeCache.txt CMakeFiles")
+endif(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
+
+# Set available configurations
+set(CMAKE_CONFIGURATION_TYPES "Debug;Release;" CACHE STRING "" FORCE)
+
+# Support folders in project
+set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "_")
+
+find_package(ZLIB REQUIRED)
+
+add_library(xcf STATIC xcf.c xcf.h xcf_names.c xcf_names.h)
+
+set_property(TARGET xcf PROPERTY C_STANDARD 99)
+
+target_compile_definitions(xcf PRIVATE _DEFAULT_SOURCE) # needed for htobe*()
+
+option(FORCE_COLORED_OUTPUT "Show colored compiler output." ON)
+if(${FORCE_COLORED_OUTPUT})
+ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ target_compile_options(xcf PRIVATE -fdiagnostics-color=always)
+ elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+ target_compile_options(xcf PRIVATE -fcolor-diagnostics)
+ endif()
+endif()
+
+if (MSVC)
+ # warning level 4
+ target_compile_options(xcf PRIVATE /W4)
+else()
+ # lots of warnings
+ target_compile_options(xcf PRIVATE -Wall -Wextra -pedantic)
+endif()
+
+option(ENABLE_WERROR "Stop and fail the build, if a compiler warning is triggered." OFF)
+if(ENABLE_WERROR)
+ target_compile_options(xcf PRIVATE "-Werror")
+endif()
+
+target_link_libraries(xcf PUBLIC ZLIB::ZLIB)
+target_link_libraries(xcf PUBLIC m)
+
+target_include_directories(xcf PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
+
+feature_summary(WHAT ALL)
diff --git a/src/external/libxcf/LICENSE b/src/external/libxcf/LICENSE
new file mode 100644
index 000000000..9666dd962
--- /dev/null
+++ b/src/external/libxcf/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2020 Tobias Ellinghaus
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/src/external/libxcf/README.md b/src/external/libxcf/README.md
new file mode 100644
index 000000000..b014d46ce
--- /dev/null
+++ b/src/external/libxcf/README.md
@@ -0,0 +1,181 @@
+# libxcf
+
+libxcf is a small stand alone library for writing [GIMP](https://gimp.org/) XCF files. Reading of XCF files is not in the scope right now. Rendering will never be.
+
+## Design goals
+
+- lightweight: have as little external dependencies as possible.
+- easy to use: you shouldn't need to read a ton of documentation in order to get started.
+- portable: only use standard C.
+- use little system resources: files are written on the fly so the memory footprint should be as low as possible.
+- permissive license: allow usage both in free as well as in closed source software so more people are able to generate images for use in GIMP. No code from GIMP was used in libxcf for that reason.
+
+## Limitations
+
+- Currently only writing is supported, reading might maybe be added some day, but it is really low priority.
+- Not all features of XCF are supported, most notably:
+ - no indexed images
+ - no layer masks
+ - no layer groups
+ - no RLE for compression
+- As files are written on the fly, so you need to know the image level settings like version and number of layers and channels in advance.
+- The library jumps around in the file using `fseek` and `ftell`, so not all file systems and devices are supported.
+- Currently libxcf uses `htobe{16,32,64}` from `endian.h` which is not portable.
+
+## Dependencies
+
+- CMake, at least version 3.9
+- a C compiler (tested with gcc and clang)
+- libz
+
+If you don't want to use CMake it should be straight forward to add the files to whatever you use instead.
+
+## Building
+
+You can either build the library as a stand alone lib or copy it into your source tree and add it as a sub directory to your CMake project. The latter is preferred as long as the API is not considered stable. Also there is no install target yet ...
+
+### CMake sub directory
+
+- Clone or copy the sources to your source tree
+- In your project's CMakeLists.txt add
+ ```
+ add_subdirectory(libxcf)
+ target_link_libraries(your_executable PRIVATE xcf)
+ ```
+
+### stand alone
+
+```
+$ git clone ...
+$ cd libxcf
+$ mkdir build
+$ cd build
+$ cmake ..
+$ make
+```
+
+This should leave you with a static library in `libxcf.a`.
+
+## Usage
+
+The API is somewhat inspired by libtiff in the sense that you open an XCF file, set properties and add data and close it in the end.
+
+The XCF file is always in some specific internal state, depending on which you can set some things. The basic control flow is
+1. create the image
+2. set everything at image level
+3. create layer or channel
+4. set everything at the layer/channel level
+5. add pixel data
+6. go to 3 until all layers and channels were added
+7. close the image
+
+![state machine graph](state.png)
+
+### The functions to do so are:
+
+- `XCF *xcf_open(const char *filename)`
+ Creates a new XCF document or returns NULL when there was an error.
+
+- `int xcf_close(XCF *xcf)`
+ Writes outstanding data and closes the file. Always call it when you are done!
+
+- `int xcf_set(XCF *xcf, xcf_field_t field, ...)`
+ Depending on what state the image is in, this function sets stuff for the current image, layer or channel.
+
+ Available `field`s are:
+ - `XCF_WIDTH` – width of image or layer
+ - `XCF_HEIGHT` – height of image or layer
+ - `XCF_PROP` – a property of image, layer or channel
+ - `XCF_NAME` - name of layer or channel
+
+ Fields that only exist on the image level:
+
+ - `XCF_VERSION` – XCF version of the image. Make sure that all the features you use are supported. Otherwise the library will tell you.
+ - `XCF_BASE_TYPE` – Whether the image is RGB, grayscale or indexed (the latter is not supported)
+ - `XCF_PRECISION` – 8, 16, 32 or 64 bit? Linear or with gamma encoding?
+ - `XCF_N_LAYERS` – Number of layers. Make sure to add the same number of layers as you specify here
+ - `XCF_N_CHANNELS` – Number of channels. As with layers, this must match what you actually add.
+ - `XCF_OMIT_BASE_ALPHA` – The lowest layer can be written without an alpha channel. If it's fully opaque you can safe s little disk space this way.
+
+ With the exception of `XCF_PROP`, all of these fields take one argument.
+
+ When setting properties, the first extra argument is the enum describing the property, and then its value(s).
+
+ When setting a parasite property, the extra arguments are:
+ - `XCF_PROP_PARASITE` – indicate that it's a parasite
+ - `char *name` – the name of the parasite
+ - `uint32_t flags` – parasite flags, `XCF_PARASITE_PERSISTENT` and/or `XCF_PARASITE_UNDOABLE`
+ - `uint32_t length` – the length of the payload in bytes
+ - `uint8_t *payload` – pointer to `length` bytes of data
+
+ For a list of supported properties and enums for fields and properties, have a look at the code.
+
+- `int xcf_add_layer(XCF *xcf)`
+ Adds a new layer to the file.
+
+- `int xcf_add_channel(XCF *xcf)`
+ Adds a new channel to the file.
+
+- `int xcf_add_data(XCF *xcf, const void *data, const int data_channels)`
+ Add pixel data to the current layer or channel.
+ - `data` – pointer to the pixel data. The layout depends on the type, for RGB layers it is R, G, B and potentially A per pixel, one after the other, with a stride equal to the width. For grayscale layers or channels it is one value and potentially A per pixel. Indexed images are not supported at the moment.
+ - `data_channels` – the number of channels in the data you are passing in. For convenience this doesn't have to match the target type. If your data has more than required (for example, passing an RGBA buffer to an RGB base layer), then the extra channels are ignored. If passing in less channels than required, the missing data will be filled with black (`0` or `0.0`), except for the last one, which will be set to white (`255` or `1.0`). Keep in mind that all layers have an alpha channel (except for the base layer when configured accordingly), so when passing in 4 channels for an RGB image will actually use the 4th channel!
+
+All functions return `0` on error.
+
+By default a version 12 file with ZLIB compression will be generated.
+
+## Example
+
+For ease of reading almost all error handling was omitted.
+
+``` lang=C
+#include "xcf.h"
+
+void write_image(const char *filename,
+ const float *data,
+ const int width,
+ const int height,
+ const int channels)
+{
+ XCF *xcf = xcf_open(filename);
+
+ if(!xcf)
+ {
+ fprintf(stderr, "error: can't open '%s'\n", filename);
+ return;
+ }
+
+ // we have created the file but didn't add a layer or channel yet.
+ // this is the time for setting image level things
+ xcf_set(xcf, XCF_BASE_TYPE, XCF_BASE_TYPE_RGB);
+ xcf_set(xcf, XCF_WIDTH, width);
+ xcf_set(xcf, XCF_HEIGHT, height);
+ xcf_set(xcf, XCF_PRECISION, XCF_PRECISION_F_32_L);
+ xcf_set(xcf, XCF_N_LAYERS, 1);
+
+ // set a property
+ xcf_set(xcf, XCF_PROP, XCF_PROP_COMPRESSION, XCF_PROP_COMPRESSION_NONE);
+
+ // when setting parasites make sure to pass the
+ // correct size, including the '\0' for strings!
+ const char *comment = "this file was generated by libxcf";
+ xcf_set(xcf,
+ XCF_PROP, // the field to set
+ XCF_PROP_PARASITES, // it's a parasite
+ "gimp-comment", // name of the parasite
+ XCF_PARASITE_PERSISTENT, // parasite flags
+ strlen(comment) + 1, // size of payload
+ comment); // pointer to payload
+
+ // add the layer and then change settings on the layer level
+ xcf_add_layer(xcf);
+ xcf_set(xcf, XCF_WIDTH, width);
+ xcf_set(xcf, XCF_HEIGHT, height);
+ xcf_set(xcf, XCF_NAME, "base layer");
+ xcf_add_data(xcf, data, channels);
+
+ // done
+ xcf_close(xcf);
+}
+```
diff --git a/src/external/libxcf/state.dot b/src/external/libxcf/state.dot
new file mode 100644
index 000000000..6d979c9d2
--- /dev/null
+++ b/src/external/libxcf/state.dot
@@ -0,0 +1,40 @@
+// view with xdot state.dot
+// convert with dot -Tpng -Nfontname=Roboto -Efontname=Roboto state.dot -o state.png
+
+// these are the internal states.
+// from the user point of view it seems that there are shortcuts because some functions call others implicitly,
+// e.g., add_layer in state IMAGE silently calls write_header, ...
+
+digraph {
+ start [label= "", shape=none, height=.0, width=.0]
+ IMAGE [label="XCF_STATE_IMAGE"]
+ MAIN [label="XCF_STATE_MAIN"]
+ LAYER [label="XCF_STATE_LAYER"]
+ LAYER_INTERMEDIATE [label="XCF_STATE_LAYER_INTERMEDIATE"]
+ CHANNEL [label="XCF_STATE_CHANNEL"]
+ CHANNEL_INTERMEDIATE [label="XCF_STATE_CHANNEL_INTERMEDIATE"]
+ DONE [shape="doublecircle" label="XCF_\nSTATE_\nDONE"]
+ error [label="XCF_STATE_ERROR\nreachable from any state"]
+
+ start -> IMAGE [label="open"]
+ IMAGE -> IMAGE [label="set"]
+ IMAGE -> MAIN [label="write_header"]
+
+ MAIN -> DONE [label="close"]
+ MAIN -> LAYER [label="add_layer"]
+ MAIN -> CHANNEL [label="add_channel"]
+
+ LAYER -> LAYER [label="set"]
+ LAYER -> LAYER_INTERMEDIATE [label="write_header"]
+ LAYER_INTERMEDIATE -> MAIN [label="add_data"]
+
+ CHANNEL -> CHANNEL [label="set"]
+ CHANNEL -> CHANNEL_INTERMEDIATE [label="write_header"]
+ CHANNEL_INTERMEDIATE -> MAIN [label="add_data"]
+
+ IMAGE -> LAYER [style="dotted" label="add_layer"]
+ IMAGE -> CHANNEL [style="dotted" label="add_channel"]
+ IMAGE -> DONE [style="dotted" label="close"]
+ LAYER -> MAIN [style="dotted" label="add_data"]
+ CHANNEL -> MAIN [style="dotted" label="add_data"]
+}
diff --git a/src/external/libxcf/state.png b/src/external/libxcf/state.png
new file mode 100644
index 000000000..b5e99875e
--- /dev/null
+++ b/src/external/libxcf/state.png
Binary files differ
diff --git a/src/external/libxcf/xcf.c b/src/external/libxcf/xcf.c
new file mode 100644
index 000000000..d929a0ecf
--- /dev/null
+++ b/src/external/libxcf/xcf.c
@@ -0,0 +1,1243 @@
+#include "xcf.h"
+
+#include <inttypes.h>
+#include <math.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <zlib.h>
+
+#if defined(_WIN32)
+ #include <windows.h>
+ #if BYTE_ORDER == LITTLE_ENDIAN
+ #if defined(_MSC_VER)
+ #define htobe16(x) _byteswap_ushort(x)
+ #define htobe32(x) _byteswap_ulong(x)
+ #define htobe64(x) _byteswap_uint64(x)
+ #elif defined(__GNUC__) || defined(__clang__)
+ #define htobe16(x) __builtin_bswap16(x)
+ #define htobe32(x) __builtin_bswap32(x)
+ #define htobe64(x) __builtin_bswap64(x)
+ #endif
+ #else
+ #define htobe16(x) (x)
+ #define htobe32(x) (x)
+ #define htobe64(x) (x)
+ #endif
+#elif defined(__APPLE__)
+ #include <libkern/OSByteOrder.h>
+ #define htobe16(x) OSSwapHostToBigInt16(x)
+ #define htobe32(x) OSSwapHostToBigInt32(x)
+ #define htobe64(x) OSSwapHostToBigInt64(x)
+#elif defined(__OpenBSD__)
+ #include <sys/endian.h>
+#elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__)
+ #include <sys/endian.h>
+// #define htobe16(x) noideawhat(x)
+// #define htobe32(x) noideawhat(x)
+// #define htobe64(x) noideawhat(x)
+#else
+ #include <endian.h>
+#endif
+
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+#define MAX(a, b) ((a) > (b) ? (a) : (b))
+#define CLAMP(a, b, c) ((a) < (b) ? (b) : ((a) > (c) ? (c) : (a)))
+
+#ifndef PRINT_ERROR
+#define PRINT_ERROR(msg, ...) fprintf(stderr, "[libxcf] " msg "\n", ##__VA_ARGS__)
+#endif
+
+#define CHECK_VERSION(_xcf, _check, _version, _msg) \
+ if(_check) \
+ { \
+ if(_xcf->image.version < _version) \
+ { \
+ PRINT_ERROR("error: %s requires at least version %d but %d is used", \
+ _msg, _version, _xcf->image.version); \
+ _xcf->state = XCF_STATE_ERROR; \
+ return 0; \
+ } \
+ else \
+ _xcf->min_version = MAX(_xcf->min_version, _version); \
+ }
+
+#define CHECK_VERSION_LAYERMODE(_xcf, _mode, _version) \
+ if(_xcf->child.p_mode >= _mode) \
+ { \
+ if(_xcf->image.version < _version) \
+ { \
+ PRINT_ERROR("error: layermode '%s' (%d) requires at least version %d but %d is used", \
+ xcf_get_mode_name(_xcf->child.p_mode), _xcf->child.p_mode, _version, _xcf->image.version); \
+ _xcf->state = XCF_STATE_ERROR; \
+ return 0; \
+ } \
+ else \
+ _xcf->min_version = MAX(_xcf->min_version, _version); \
+ }
+
+#define CHECK_IO(_xcf, _write, _expected) \
+ if(_write != _expected) \
+ { \
+ PRINT_ERROR("error: io error"); \
+ _xcf->state = XCF_STATE_ERROR; \
+ return 0; \
+ }
+
+#define TILE_SIZE 64
+
+typedef struct xcf_parasite_t
+{
+ char *name;
+ uint32_t flags;
+ uint32_t length;
+ uint8_t *data;
+ struct xcf_parasite_t *next;
+} xcf_parasite_t;
+
+struct xcf_t
+{
+ FILE *fd;
+ xcf_state_t state; // this library is a state machine, see state.dot
+
+ uint32_t n_layers, n_channels;
+ uint32_t next_layer, next_channel; // the number of the next layer or channel to write
+
+ uint32_t omit_base_alpha;
+
+ int min_version; // the minimal version required for the features used. this gets bumped while writing the image
+
+ // fields in the image header
+ struct
+ {
+ int version; // the version used to write the file
+ uint32_t width, height;
+ xcf_base_type_t base_type;
+ xcf_precision_t precision;
+
+ // file offsets of the layer and channel lists
+ uint32_t layer_list, channel_list;
+
+ // some properties. instead of writing them in xcf_set() we postpone writing until finalizing the header so
+ // we can have sane defaults while still allowing the user to set it
+ // TODO: p_colormap // min_version for that is 1
+ uint8_t p_compression; // we only support zlib and uncompressed. rle is missing
+
+ // parasites. this is a single linked list
+ xcf_parasite_t *parasites;
+ } image;
+
+ // header of the current layer or channel
+ struct
+ {
+ int n;
+ uint32_t width, height;
+ char *name;
+
+ // for layers this gets computed in xcf_write_layer_header()
+ // for channels it is always XCF_TYPE_GRAYSCALE and set in xcf_add_channel()
+ // it is used in xcf_add_data()
+ xcf_type_t type;
+
+ // common properties
+ float p_opacity;
+ uint32_t p_visible;
+
+ // channel properties
+ float p_color[3];
+
+ // layer properties
+ int32_t p_composite_mode;
+ int32_t p_composite_space;
+ int32_t p_blend_space;
+ int32_t p_mode;
+ int32_t p_offset_x, p_offset_y;
+
+ // parasites. this is a single linked list
+ xcf_parasite_t *parasites;
+ } child;
+
+};
+
+
+// number of bytes used for internal pointers in the file. either 32 or 64, depending on version
+static int xcf_pointer_size(XCF *xcf)
+{
+ if(abs(xcf->image.version) <= 10)
+ return 4;
+ else
+ return 8;
+}
+
+static uint32_t xcf_strlen(const char *value)
+{
+ if(!value || !*value)
+ return sizeof(uint32_t);
+ return sizeof(uint32_t) + strlen(value) + 1;
+}
+
+
+// functions for writing to a file, taking endianess into account
+
+static int xcf_write_uint8(XCF *xcf, const uint8_t value) __attribute__ ((warn_unused_result));
+static int xcf_write_uint8(XCF *xcf, const uint8_t value)
+{
+ return fwrite(&value, sizeof(value), 1, xcf->fd) == 1;
+}
+
+static int xcf_write_uint32(XCF *xcf, const uint32_t value) __attribute__ ((warn_unused_result));
+static int xcf_write_uint32(XCF *xcf, const uint32_t value)
+{
+ const uint32_t value_be = htobe32(value);
+ return fwrite(&value_be, sizeof(value_be), 1, xcf->fd) == 1;
+}
+
+static int xcf_write_float(XCF *xcf, const float value) __attribute__ ((warn_unused_result));
+static int xcf_write_float(XCF *xcf, const float value)
+{
+ union {float f; uint32_t i;} v;
+ v.f = value;
+ const uint32_t value_be = htobe32(v.i);
+ return fwrite(&value_be, sizeof(value_be), 1, xcf->fd) == 1;
+}
+
+static int xcf_write_uint64(XCF *xcf, const uint64_t value) __attribute__ ((warn_unused_result));
+static int xcf_write_uint64(XCF *xcf, const uint64_t value)
+{
+ const uint64_t value_be = htobe64(value);
+ return fwrite(&value_be, sizeof(value_be), 1, xcf->fd) == 1;
+}
+
+static int xcf_write_pointer(XCF *xcf, const uint64_t value) __attribute__ ((warn_unused_result));
+static int xcf_write_pointer(XCF *xcf, const uint64_t value)
+{
+ if(xcf_pointer_size(xcf) == 4)
+ return xcf_write_uint32(xcf, value);
+ else
+ return xcf_write_uint64(xcf, value);
+}
+
+static int xcf_write_string(XCF *xcf, const char *value) __attribute__ ((warn_unused_result));
+static int xcf_write_string(XCF *xcf, const char *value)
+{
+ if(!value || !*value)
+ return xcf_write_uint32(xcf, 0);
+ else
+ {
+ const size_t len = strlen(value);
+ if(!xcf_write_uint32(xcf, len + 1)) return 0;
+ return fwrite(value, 1, len + 1, xcf->fd) == len + 1;
+ }
+}
+
+
+// handling of parasites
+
+static int xcf_write_parasites(XCF *xcf, const xcf_parasite_t *head) __attribute__ ((warn_unused_result));
+static int xcf_write_parasites(XCF *xcf, const xcf_parasite_t *head)
+{
+ // get total length of the data.
+ // we don't pre-compute that in xcf_parasites_add() because it's an implementation detail not relevant there.
+ uint32_t plength = 0;
+ for(const xcf_parasite_t *parasite = head; parasite; parasite = parasite->next)
+ plength += xcf_strlen(parasite->name) + sizeof(uint32_t) + sizeof(uint32_t) + parasite->length;
+
+ if(!xcf_write_uint32(xcf, XCF_PROP_PARASITES)) return 0;
+ if(!xcf_write_uint32(xcf, plength)) return 0;
+ for(const xcf_parasite_t *parasite = head; parasite; parasite = parasite->next)
+ {
+ if(!xcf_write_string(xcf, parasite->name)) return 0;
+ if(!xcf_write_uint32(xcf, parasite->flags)) return 0;
+ if(!xcf_write_uint32(xcf, parasite->length)) return 0;
+ if(fwrite(parasite->data, 1, parasite->length, xcf->fd) != parasite->length) return 0;
+ }
+ return 1;
+}
+
+// add a parasite to the list if it's not there or change the existing one if it's already present
+// returns the new start of the list
+static xcf_parasite_t *xcf_parasites_add(xcf_parasite_t *head, const char *name, const uint32_t flags,
+ const uint32_t length, const uint8_t *data)
+{
+ // without a name there is nothing to add later
+ if(!name) return head;
+
+ xcf_parasite_t *parasite;
+
+ if(!head)
+ {
+ parasite = (xcf_parasite_t *)malloc(sizeof(xcf_parasite_t));
+ parasite->name = strdup(name);
+ parasite->next = NULL;
+ head = parasite;
+ }
+ else
+ {
+ xcf_parasite_t *last;
+ for(last = NULL, parasite = head; parasite; last = parasite, parasite = parasite->next)
+ {
+ if(!strcmp(name, parasite->name))
+ {
+ // update a parasite that was set earlier
+ free(parasite->data);
+ parasite->data = NULL;
+ parasite->length = 0;
+ break;
+ }
+ }
+ if(!parasite)
+ {
+ // allocate a new one and append it
+ parasite = (xcf_parasite_t *)malloc(sizeof(xcf_parasite_t));
+ parasite->name = strdup(name);
+ parasite->next = NULL;
+ last->next = parasite;
+ }
+ }
+
+ parasite->flags = flags;
+ parasite->length = length;
+ parasite->data = (uint8_t *)malloc(length);
+ memcpy(parasite->data, data, length);
+
+ return head;
+}
+
+static void xcf_parasites_free(xcf_parasite_t *head)
+{
+ while(head)
+ {
+ xcf_parasite_t *next = head->next;
+ free(head->name);
+ free(head->data);
+ head->name = NULL;
+ head->data = NULL;
+ head->next = NULL;
+ free(head);
+ head = next;
+ }
+}
+
+
+// internal helpers
+
+static int xcf_write_image_header(XCF *xcf)
+{
+ if(xcf->state != XCF_STATE_IMAGE)
+ {
+ PRINT_ERROR("error: the image header has already been written");
+ xcf->state = XCF_STATE_ERROR;
+ return 0;
+ }
+
+ if(xcf->image.p_compression == XCF_PROP_COMPRESSION_RLE)
+ {
+ PRINT_ERROR("error: rle compression is not supported");
+ xcf->state = XCF_STATE_ERROR;
+ return 0;
+ }
+
+ CHECK_VERSION(xcf, (xcf->image.precision != XCF_PRECISION_I_8_G), 7, "image precision other than 8 bit gamma");
+ CHECK_VERSION(xcf, xcf->image.precision > XCF_PRECISION_I_8_G, 12, "image encoding other than 8 bit integer");
+ CHECK_VERSION(xcf, xcf->image.p_compression == XCF_PROP_COMPRESSION_ZLIB, 8, "zlib compression")
+ // estimate if the image will be really big from width, height, base_type, precision, n_channels and n_layers
+ const size_t image_size_estimate = 0; // TODO
+ CHECK_VERSION(xcf, (image_size_estimate >= ((int64_t) 1 << 32)), 11, "an image size bigger than 4GB");
+
+ char version[9 + 4 + 1] = "gimp xcf ";
+ const int v = abs(xcf->image.version);
+ if(v == 0)
+ strncpy(version + 9, "file", 5);
+ else if(v <= 999)
+ snprintf(version + 9, 5, "v%03d", v);
+ else
+ {
+ PRINT_ERROR("error: version %d is too big", v);
+ xcf->state = XCF_STATE_ERROR;
+ return 0;
+ }
+ if(fwrite(version, 1, sizeof(version), xcf->fd) != sizeof(version))
+ {
+ PRINT_ERROR("error: can't write to file");
+ xcf->state = XCF_STATE_ERROR;
+ return 0;
+ }
+
+ CHECK_IO(xcf, xcf_write_uint32(xcf, xcf->image.width), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, xcf->image.height), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, xcf->image.base_type), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, xcf->image.precision), 1);
+
+ // write properties and parasites
+ // TODO: colormap -- min_version is 1 for that
+ // compression
+ CHECK_IO(xcf, xcf_write_uint32(xcf, XCF_PROP_COMPRESSION), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 1), 1);
+ CHECK_IO(xcf, xcf_write_uint8(xcf, xcf->image.p_compression), 1);
+ // parasites
+ CHECK_IO(xcf, xcf_write_parasites(xcf, xcf->image.parasites), 1);
+
+ // close the property list by adding PROP_END
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 0), 1); // type
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 0), 1); // size
+
+ // add dummy pointer lists for layers and channels and remember the file offset so we can set it later
+ xcf->image.layer_list = ftell(xcf->fd);
+ CHECK_IO(xcf, fseek(xcf->fd, xcf_pointer_size(xcf) * xcf->n_layers, SEEK_CUR), 0);
+ CHECK_IO(xcf, xcf_write_pointer(xcf, 0), 1);
+
+ xcf->image.channel_list = ftell(xcf->fd);
+ CHECK_IO(xcf, fseek(xcf->fd, xcf_pointer_size(xcf) * xcf->n_channels, SEEK_CUR), 0);
+ CHECK_IO(xcf, xcf_write_pointer(xcf, 0), 1);
+
+ xcf->state = XCF_STATE_MAIN;
+ return 1;
+}
+
+// store a pointer to the current position in a list
+static int xcf_register_pointer(XCF *xcf, uint32_t list_start, uint32_t n) __attribute__((warn_unused_result));
+static int xcf_register_pointer(XCF *xcf, uint32_t list_start, uint32_t n)
+{
+ const uint64_t list_entry = list_start + n * xcf_pointer_size(xcf);
+ uint64_t current_pos = ftell(xcf->fd);
+ CHECK_IO(xcf, fseek(xcf->fd, list_entry, SEEK_SET), 0);
+ CHECK_IO(xcf, xcf_write_pointer(xcf, current_pos), 1);
+ CHECK_IO(xcf, fseek(xcf->fd, 0, SEEK_END), 0);
+ return 1;
+}
+
+static int xcf_write_layer_header(XCF *xcf)
+{
+ if(xcf->state != XCF_STATE_LAYER)
+ {
+ PRINT_ERROR("error: there is no layer header to be written");
+ xcf->state = XCF_STATE_ERROR;
+ return 0;
+ }
+
+ // store pointer in the global layer list
+ CHECK_IO(xcf, xcf_register_pointer(xcf, xcf->image.layer_list, xcf->child.n), 1);
+
+ CHECK_IO(xcf, xcf_write_uint32(xcf, xcf->child.width), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, xcf->child.height), 1);
+ // the type has to be the same as the one for the whole image.
+ switch(xcf->image.base_type)
+ {
+ case XCF_BASE_TYPE_RGB: xcf->child.type = XCF_TYPE_RGB_ALPHA; break;
+ case XCF_BASE_TYPE_GRAYSCALE: xcf->child.type = XCF_TYPE_GRAYSCALE_ALPHA; break;
+ case XCF_BASE_TYPE_INDEXED: xcf->child.type = XCF_TYPE_INDEXED_ALPHA; break;
+ default:
+ {
+ const char *name = xcf_get_base_type_name(xcf->image.base_type);
+ if(name)
+ PRINT_ERROR("error: unknown base type '%s'", name);
+ else
+ PRINT_ERROR("error: unknown base type %d", xcf->image.base_type);
+ xcf->state = XCF_STATE_ERROR;
+ return 0;
+ }
+ }
+ // the base layer can have no alpha channel. omit it to get smaller files
+ // this is configurable with XCF_OMIT_BASE_ALPHA so the user can have alpha data for the base layer!
+ if(xcf->omit_base_alpha && xcf->next_layer == xcf->n_layers)
+ xcf->child.type -= 1;
+
+ CHECK_IO(xcf, xcf_write_uint32(xcf, xcf->child.type), 1);
+ CHECK_IO(xcf, xcf_write_string(xcf, xcf->child.name), 1);
+
+ // write properties and parasites
+ // opacity
+ CHECK_IO(xcf, xcf_write_uint32(xcf, XCF_PROP_OPACITY), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 4), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, CLAMP(xcf->child.p_opacity * 255, 0, 255)), 1);
+ // mode
+ // use XCF_PROP_MODE_NORMAL for version >= 10 else XCF_PROP_MODE_LEGACY_NORMAL if nothing was set explicitly
+ if(xcf->child.p_mode < 0)
+ {
+ if(xcf->image.version >= 10)
+ xcf->child.p_mode = XCF_PROP_MODE_NORMAL;
+ else
+ xcf->child.p_mode = XCF_PROP_MODE_LEGACY_NORMAL;
+ }
+ CHECK_VERSION_LAYERMODE(xcf, XCF_PROP_MODE_NORMAL, 10);
+ CHECK_VERSION_LAYERMODE(xcf, XCF_PROP_MODE_OVERLAY, 9);
+ CHECK_VERSION_LAYERMODE(xcf, XCF_PROP_MODE_LEGACY_SOFT_LIGHT, 2);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, XCF_PROP_MODE), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 4), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, xcf->child.p_mode), 1);
+ // visible
+ CHECK_IO(xcf, xcf_write_uint32(xcf, XCF_PROP_VISIBLE), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 4), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, xcf->child.p_visible), 1);
+ // offsets
+ CHECK_IO(xcf, xcf_write_uint32(xcf, XCF_PROP_OFFSETS), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 8), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, xcf->child.p_offset_x), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, xcf->child.p_offset_y), 1);
+ // thses properties were added in 2.10.0 (i presume version 4?)
+ // if the user set composite mode or space they should be >= 0 and affect min_version
+ // if they are < 0 then only write them if version >= 4
+ if(xcf->image.version >= 4
+ || xcf->child.p_composite_mode >= 0
+ || xcf->child.p_composite_space >= 0
+ || xcf->child.p_blend_space >= 0)
+ {
+ CHECK_VERSION(xcf, xcf->child.p_composite_mode >= 0, 4, "setting a composite mode");
+ CHECK_VERSION(xcf, xcf->child.p_composite_space >= 0, 4, "setting a composite space");
+ CHECK_VERSION(xcf, xcf->child.p_blend_space >= 0, 4, "setting a blend space");
+ // float opacity
+ CHECK_IO(xcf, xcf_write_uint32(xcf, XCF_PROP_FLOAT_OPACITY), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 4), 1);
+ CHECK_IO(xcf, xcf_write_float(xcf, xcf->child.p_opacity), 1);
+ // composite mode
+ CHECK_IO(xcf, xcf_write_uint32(xcf, XCF_PROP_COMPOSITE_MODE), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 4), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, xcf->child.p_composite_mode), 1);
+ // composite space
+ CHECK_IO(xcf, xcf_write_uint32(xcf, XCF_PROP_COMPOSITE_SPACE), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 4), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, xcf->child.p_composite_space), 1);
+ // blend space
+ CHECK_IO(xcf, xcf_write_uint32(xcf, XCF_PROP_BLEND_SPACE), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 4), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, xcf->child.p_blend_space), 1);
+ }
+ // parasites
+ CHECK_IO(xcf, xcf_write_parasites(xcf, xcf->child.parasites), 1);
+
+ // close the property list by adding PROP_END
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 0), 1); // type
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 0), 1); // size
+
+ // the hierarchy struct comes rigth after the layer
+ const uint64_t current_pos = ftell(xcf->fd);
+ CHECK_IO(xcf, xcf_write_pointer(xcf, current_pos + 2 * xcf_pointer_size(xcf)), 1);
+ CHECK_IO(xcf, xcf_write_pointer(xcf, 0), 1); // pointer to the layer mask, which we don't support
+
+ xcf->state = XCF_STATE_LAYER_INTERMEDIATE;
+
+ return 1;
+}
+
+static int xcf_write_channel_header(XCF *xcf)
+{
+ if(xcf->state != XCF_STATE_CHANNEL)
+ {
+ PRINT_ERROR("error: there is no channel header to be written");
+ xcf->state = XCF_STATE_ERROR;
+ return 0;
+ }
+
+ // store pointer in the global channel list
+ CHECK_IO(xcf, xcf_register_pointer(xcf, xcf->image.channel_list, xcf->child.n), 1);
+
+ CHECK_IO(xcf, xcf_write_uint32(xcf, xcf->child.width), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, xcf->child.height), 1);
+ CHECK_IO(xcf, xcf_write_string(xcf, xcf->child.name), 1);
+
+ // write properties and parasites
+ // opacity
+ CHECK_IO(xcf, xcf_write_uint32(xcf, XCF_PROP_OPACITY), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 4), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, CLAMP(xcf->child.p_opacity * 255, 0, 255)), 1);
+ // visible
+ CHECK_IO(xcf, xcf_write_uint32(xcf, XCF_PROP_VISIBLE), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 4), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, xcf->child.p_visible), 1);
+ // color
+ CHECK_IO(xcf, xcf_write_uint32(xcf, XCF_PROP_COLOR), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 3), 1);
+ for(int c = 0; c < 3; c++)
+ CHECK_IO(xcf, xcf_write_uint8(xcf, CLAMP(xcf->child.p_color[c] * 255, 0, 255)), 1);
+ if(xcf->image.version >= 4)
+ {
+ // float opacity
+ CHECK_IO(xcf, xcf_write_uint32(xcf, XCF_PROP_FLOAT_OPACITY), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 4), 1);
+ CHECK_IO(xcf, xcf_write_float(xcf, xcf->child.p_opacity), 1);
+ // float color
+ CHECK_IO(xcf, xcf_write_uint32(xcf, XCF_PROP_FLOAT_COLOR), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 12), 1);
+ for(int c = 0; c < 3; c++)
+ CHECK_IO(xcf, xcf_write_float(xcf, xcf->child.p_color[c]), 1);
+ }
+ // parasites
+ CHECK_IO(xcf, xcf_write_parasites(xcf, xcf->child.parasites), 1);
+
+ // close the property list by adding PROP_END
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 0), 1); // type
+ CHECK_IO(xcf, xcf_write_uint32(xcf, 0), 1); // size
+
+ // the hierarchy struct comes rigth after the layer
+ const uint64_t current_pos = ftell(xcf->fd);
+ CHECK_IO(xcf, xcf_write_pointer(xcf, current_pos + xcf_pointer_size(xcf)), 1);
+
+ xcf->state = XCF_STATE_CHANNEL_INTERMEDIATE;
+
+ return 1;
+}
+
+// data_channels is the number of color channels in the data passed in
+// n_channels is the number of channels that get written
+// these may differ to make it easier for the user to pass in image data that he already has
+// channel_size is the number of bytes per channel per pixel. for a float rgb image it is 4
+static int xcf_add_hierarchy(XCF *xcf, const void *data, const uint32_t width, const uint32_t height,
+ const int data_channels, const int n_channels, const int channel_size)
+{
+ int res = 0;
+ const uint32_t bpp = n_channels * channel_size;
+
+ unsigned char *data_fixed = (unsigned char *)data;
+ int free_data_fixed = 0;
+ // make sure that the data has the right number of channels
+ if(n_channels != data_channels)
+ {
+// printf("channels need adaption\n");
+
+ const size_t data_bpp = data_channels * channel_size;
+ data_fixed = (unsigned char *)calloc((size_t)width * height, n_channels * channel_size);
+ free_data_fixed = 1;
+ if(n_channels < data_channels)
+ {
+ // just drop all extra channels
+ for(uint32_t y = 0; y < height; y++)
+ for(uint32_t x = 0; x < width; x++)
+ memcpy(data_fixed + y * width * bpp + x * bpp, ((uint8_t *)data) + y * width * data_bpp + x * data_bpp, bpp);
+ }
+ else
+ {
+ // add extra channels. the last one (alpha) will be fully opaque, the others will be 0
+ unsigned char *alpha_data = (unsigned char *)malloc(channel_size);
+ if(xcf->image.precision == XCF_PRECISION_F_16_L || xcf->image.precision == XCF_PRECISION_F_16_G)
+ *((uint16_t *)alpha_data) = 0x3c00; // 1.0 in half float
+ else if(xcf->image.precision == XCF_PRECISION_F_32_L || xcf->image.precision == XCF_PRECISION_F_32_G)
+ *((float *)alpha_data) = 1.0;
+ else if(xcf->image.precision == XCF_PRECISION_F_64_L || xcf->image.precision == XCF_PRECISION_F_64_G)
+ *((double *)alpha_data) = 1.0;
+ else
+ memset(alpha_data, 0xff, channel_size);
+
+ for(uint32_t y = 0; y < height; y++)
+ {
+ for(uint32_t x = 0; x < width; x++)
+ {
+ memcpy(data_fixed + y * width * bpp + x * bpp,
+ ((unsigned char *)data) + y * width * data_bpp + x * data_bpp,
+ data_bpp);
+ // make the layer opaque if it has an alpha channel
+ if(n_channels == 2 || n_channels == 4)
+ memcpy(data_fixed + y * width * bpp + x * bpp + (n_channels - 1) * channel_size, alpha_data, channel_size);
+ }
+ }
+ free(alpha_data);
+ }
+ }
+
+ CHECK_IO(xcf, xcf_write_uint32(xcf, width), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, height), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, bpp), 1);
+
+ const uint64_t current_pos = ftell(xcf->fd);
+ CHECK_IO(xcf, xcf_write_pointer(xcf, current_pos + xcf_pointer_size(xcf) * 2), 1);
+ // we omit the dummy level list. the xcf specs encourage writing it because GIMP
+ // does so, too, but at the same time says that readers shouldn't use it
+ CHECK_IO(xcf, xcf_write_pointer(xcf, 0), 1);
+
+ // add level structure
+ const uint32_t n_tiles = ceilf((float)width / TILE_SIZE) * ceilf((float)height / TILE_SIZE);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, width), 1);
+ CHECK_IO(xcf, xcf_write_uint32(xcf, height), 1);
+
+ // links to tiles. will be filled in later
+ const uint32_t tiles_list = ftell(xcf->fd);
+ CHECK_IO(xcf, fseek(xcf->fd, n_tiles * xcf_pointer_size(xcf), SEEK_CUR), 0);
+ CHECK_IO(xcf, xcf_write_pointer(xcf, 0), 1);
+
+ // add tiles
+ const size_t tile_size = (size_t)bpp * TILE_SIZE * TILE_SIZE;
+ const size_t dest_len = compressBound(tile_size);
+ unsigned char *tile_compressed = (unsigned char *)malloc(dest_len);
+
+ void *tile = malloc(tile_size);
+
+ for(uint32_t y = 0, tile_number = 0; y < height; y += TILE_SIZE)
+ {
+ const uint32_t y_end = MIN(y + TILE_SIZE - 1, height - 1);
+ const uint32_t tile_h = y_end - y + 1;
+ for(uint32_t x = 0; x < width; x += TILE_SIZE, tile_number++)
+ {
+ // put the pointer into the tile list
+ const uint64_t _current_pos = ftell(xcf->fd);
+ CHECK_IO(xcf, fseek(xcf->fd, tiles_list + xcf_pointer_size(xcf) * tile_number, SEEK_SET), 0);
+ CHECK_IO(xcf, xcf_write_pointer(xcf, _current_pos), 1);
+ CHECK_IO(xcf, fseek(xcf->fd, 0, SEEK_END), 0);
+
+ const uint32_t x_end = MIN(x + TILE_SIZE - 1, width - 1);
+ const uint32_t tile_w = x_end - x + 1;
+
+ // channel size can be 1 (8 bit), 2 (16 bit), 4 (32 bit) or 8 (64 bit)
+ if(channel_size == 1)
+ {
+ uint8_t *data8 = (uint8_t *)data_fixed;
+ uint8_t *tile8 = (uint8_t *)tile;
+ for(uint32_t tile_y = 0; tile_y < tile_h; tile_y++)
+ {
+ for(uint32_t tile_x = 0; tile_x < tile_w; tile_x++)
+ {
+ for(int c = 0; c < n_channels; c++)
+ {
+ const uint8_t value = data8[(y + tile_y) * n_channels * width + (x + tile_x) * n_channels + c];
+ tile8[tile_y * n_channels * tile_w + tile_x * n_channels + c] = value;
+ }
+ }
+ }
+ }
+ else if(channel_size == 2)
+ {
+ uint16_t *data16 = (uint16_t *)data_fixed;
+ uint16_t *tile16 = (uint16_t *)tile;
+ for(uint32_t tile_y = 0; tile_y < tile_h; tile_y++)
+ {
+ for(uint32_t tile_x = 0; tile_x < tile_w; tile_x++)
+ {
+ for(int c = 0; c < n_channels; c++)
+ {
+ const uint16_t value = data16[(y + tile_y) * n_channels * width + (x + tile_x) * n_channels + c];
+ tile16[tile_y * n_channels * tile_w + tile_x * n_channels + c] = htobe16(value);
+ }
+ }
+ }
+ }
+ else if(channel_size == 4)
+ {
+ uint32_t *data32 = (uint32_t *)data_fixed;
+ uint32_t *tile32 = (uint32_t *)tile;
+ for(uint32_t tile_y = 0; tile_y < tile_h; tile_y++)
+ {
+ for(uint32_t tile_x = 0; tile_x < tile_w; tile_x++)
+ {
+ for(int c = 0; c < n_channels; c++)
+ {
+ const uint32_t value = data32[(y + tile_y) * n_channels * width + (x + tile_x) * n_channels + c];
+ tile32[tile_y * n_channels * tile_w + tile_x * n_channels + c] = htobe32(value);
+ }
+ }
+ }
+ }
+ else if(channel_size == 8)
+ {
+ uint64_t *data64 = (uint64_t *)data_fixed;
+ uint64_t *tile64 = (uint64_t *)tile;
+ for(uint32_t tile_y = 0; tile_y < tile_h; tile_y++)
+ {
+ for(uint32_t tile_x = 0; tile_x < tile_w; tile_x++)
+ {
+ for(int c = 0; c < n_channels; c++)
+ {
+ const uint64_t value = data64[(y + tile_y) * n_channels * width + (x + tile_x) * n_channels + c];
+ tile64[tile_y * n_channels * tile_w + tile_x * n_channels + c] = htobe64(value);
+ }
+ }
+ }
+ }
+ else
+ {
+ PRINT_ERROR("error: channel size of %d bytes is not supported", channel_size);
+ goto end;
+ }
+
+ const size_t src_len = bpp * tile_w * tile_h;
+ if(xcf->image.p_compression == XCF_PROP_COMPRESSION_ZLIB)
+ {
+ // use zlib to compress the tile
+ unsigned long _dest_len = dest_len;
+ const int zlib_res = compress(tile_compressed, &_dest_len, tile, src_len);
+ if(zlib_res != Z_OK)
+ {
+ PRINT_ERROR("error: can't compress tile: %d", zlib_res);
+ goto end;
+ }
+ if(fwrite(tile_compressed, 1, _dest_len, xcf->fd) != _dest_len)
+ {
+ PRINT_ERROR("error: can't write image data");
+ goto end;
+ }
+ }
+ else if(xcf->image.p_compression == XCF_PROP_COMPRESSION_NONE)
+ {
+ if(fwrite(tile, 1, src_len, xcf->fd) != src_len)
+ {
+ PRINT_ERROR("error: can't write image data");
+ goto end;
+ }
+ }
+ }
+ }
+
+ res = 1;
+
+ end:
+ free(tile);
+ free(tile_compressed);
+ if(free_data_fixed) free(data_fixed);
+ if(!res) xcf->state = XCF_STATE_ERROR;
+ return res;
+}
+
+
+// public api
+
+XCF *xcf_open(const char *filename)
+{
+ XCF *xcf = (XCF *)calloc(1, sizeof(XCF));
+ if(!xcf) return NULL;
+
+ if(!(xcf->fd = fopen(filename, "wb")))
+ {
+ free(xcf);
+ return NULL;
+ }
+
+ xcf->state = XCF_STATE_IMAGE;
+ xcf->image.p_compression = XCF_PROP_COMPRESSION_ZLIB;
+ xcf->min_version = 1;
+ xcf->image.version = 12;
+ xcf->omit_base_alpha = 1; // don't save an alpha channel in the base layer by default
+
+ return xcf;
+}
+
+int xcf_close(XCF *xcf)
+{
+ if(!xcf) return 1;
+
+ if(xcf->state == XCF_STATE_ERROR)
+ {
+ PRINT_ERROR("error: the file is in error state. better add some error handling.");
+ return 0;
+ }
+
+ int res = 1;
+
+ if(xcf->state == XCF_STATE_IMAGE)
+ xcf_write_image_header(xcf);
+
+ if(xcf->state != XCF_STATE_MAIN)
+ {
+ PRINT_ERROR("error: incomplete data written");
+ res = 0;
+ }
+
+ if(xcf->n_layers != xcf->next_layer || xcf->n_channels != xcf->next_channel)
+ {
+ PRINT_ERROR("error: not all layers/channels were added. %u / %u layers and %u / %u channels written",
+ xcf->next_layer, xcf->n_layers, xcf->next_channel, xcf->n_channels);
+ res = 0;
+ }
+
+// printf("version: %d\nmin_version: %d\npointer size: %d\nbase_type: %u\nprecision: %u\nwidth: %u\nheight: %u\nlayers: %u\nchannels: %u\n", xcf->image.version, xcf->min_version, xcf_pointer_size(xcf), xcf->image.base_type, xcf->image.precision, xcf->image.width, xcf->image.height, xcf->next_layer, xcf->next_channel);
+
+ if(xcf->fd) fclose(xcf->fd);
+ xcf->fd = NULL;
+ free(xcf->child.name);
+ xcf->child.name = NULL;
+ xcf_parasites_free(xcf->image.parasites);
+ xcf->image.parasites = NULL;
+ xcf_parasites_free(xcf->child.parasites);
+ xcf->child.parasites = NULL;
+ xcf->state = XCF_STATE_ERROR; // just in case someone keeps using the memory
+ free(xcf);
+
+ return res;
+}
+
+// set fields or properties. depending on the current state it's setting image, layer or channel data
+int xcf_set(XCF *xcf, xcf_field_t field, ...)
+{
+ if(xcf->state == XCF_STATE_ERROR)
+ {
+ PRINT_ERROR("error: the file is in error state. better add some error handling.");
+ return 0;
+ }
+
+ va_list ap;
+ va_start(ap, field);
+
+ int res = 0;
+ uint32_t propid = -1;
+
+ // depending on the state of writing we are in, only some properties can be set
+ // global image level
+ if(xcf->state == XCF_STATE_IMAGE)
+ {
+ res = 1;
+ switch(field)
+ {
+ case XCF_N_LAYERS: xcf->n_layers = va_arg(ap, uint32_t); break;
+ case XCF_N_CHANNELS: xcf->n_channels = va_arg(ap, uint32_t); break;
+ case XCF_OMIT_BASE_ALPHA: xcf->omit_base_alpha = va_arg(ap, uint32_t) ? 1 : 0; break;
+ case XCF_VERSION: xcf->image.version = va_arg(ap, int); break;
+ case XCF_BASE_TYPE: xcf->image.base_type = va_arg(ap, xcf_base_type_t); break;
+ case XCF_WIDTH: xcf->image.width = va_arg(ap, uint32_t); break;
+ case XCF_HEIGHT: xcf->image.height = va_arg(ap, uint32_t); break;
+ case XCF_PRECISION: xcf->image.precision = va_arg(ap, xcf_precision_t); break;
+ case XCF_PROP:
+ {
+ propid = va_arg(ap, uint32_t);
+ switch(propid)
+ {
+ case XCF_PROP_END:
+ // FIXME: shall we offer this at all?
+ break;
+ // TODO
+ // case XCF_PROP_COLORMAP:
+ // break;
+ case XCF_PROP_COMPRESSION:
+ xcf->image.p_compression = va_arg(ap, int);
+ break;
+ case XCF_PROP_PARASITES:
+ {
+ const char *name = va_arg(ap, char *);
+ const uint32_t flags = va_arg(ap, uint32_t);
+ const uint32_t length = va_arg(ap, uint32_t);
+ const uint8_t *data = va_arg(ap, uint8_t *);
+ xcf->image.parasites = xcf_parasites_add(xcf->image.parasites, name, flags, length, data);
+ break;
+ }
+ default: res = 0;
+ }
+ break;
+ }
+ default: res = 0;
+ }
+ }
+
+ // layer level
+ if(xcf->state == XCF_STATE_LAYER)
+ {
+ res = 1;
+ switch(field)
+ {
+ case XCF_WIDTH: xcf->child.width = va_arg(ap, uint32_t); break;
+ case XCF_HEIGHT: xcf->child.height = va_arg(ap, uint32_t); break;
+ case XCF_NAME: xcf->child.name = strdup(va_arg(ap, char *)); break;
+ case XCF_PROP:
+ {
+ propid = va_arg(ap, uint32_t);
+ switch(propid)
+ {
+ case XCF_PROP_END:
+ // FIXME: shall we offer this at all?
+ break;
+ case XCF_PROP_OPACITY:
+ xcf->child.p_opacity = va_arg(ap, uint32_t) / 255.0;
+ xcf->child.p_opacity = CLAMP(xcf->child.p_opacity, 0.0, 1.0);
+ break;
+ case XCF_PROP_MODE:
+ xcf->child.p_mode = va_arg(ap, uint32_t);
+ break;
+ case XCF_PROP_VISIBLE:
+ xcf->child.p_visible = va_arg(ap, uint32_t) ? 1 : 0;
+ break;
+ case XCF_PROP_OFFSETS:
+ xcf->child.p_offset_x = va_arg(ap, int32_t);
+ xcf->child.p_offset_y = va_arg(ap, int32_t);
+ break;
+ case XCF_PROP_PARASITES:
+ {
+ const char *name = va_arg(ap, char *);
+ const uint32_t flags = va_arg(ap, uint32_t);
+ const uint32_t length = va_arg(ap, uint32_t);
+ const uint8_t *data = va_arg(ap, uint8_t *);
+ xcf->child.parasites = xcf_parasites_add(xcf->child.parasites, name, flags, length, data);
+ break;
+ }
+ case XCF_PROP_FLOAT_OPACITY:
+ xcf->child.p_opacity = va_arg(ap, double);
+ xcf->child.p_opacity = CLAMP(xcf->child.p_opacity, 0.0, 1.0);
+ break;
+ case XCF_PROP_COMPOSITE_MODE:
+ xcf->child.p_composite_mode = va_arg(ap, int32_t);
+ break;
+ case XCF_PROP_COMPOSITE_SPACE:
+ xcf->child.p_composite_space = va_arg(ap, int32_t);
+ break;
+ case XCF_PROP_BLEND_SPACE:
+ xcf->child.p_blend_space = va_arg(ap, int32_t);
+ break;
+ default: res = 0;
+ }
+ break;
+ }
+ default: res = 0;
+ }
+ }
+
+ // channel level
+ if(xcf->state == XCF_STATE_CHANNEL)
+ {
+ res = 1;
+ switch(field)
+ {
+ // width and height have to be the same as in the parent, no need to allow setting it
+ // case XCF_WIDTH: xcf->child.width = va_arg(ap, uint32_t); break;
+ // case XCF_HEIGHT: xcf->child.height = va_arg(ap, uint32_t); break;
+ case XCF_NAME: xcf->child.name = strdup(va_arg(ap, char *)); break;
+ case XCF_PROP:
+ {
+ propid = va_arg(ap, uint32_t);
+ switch(propid)
+ {
+ case XCF_PROP_OPACITY:
+ xcf->child.p_opacity = va_arg(ap, uint32_t) / 255.0;
+ xcf->child.p_opacity = CLAMP(xcf->child.p_opacity, 0.0, 1.0);
+ break;
+ case XCF_PROP_VISIBLE:
+ xcf->child.p_visible = va_arg(ap, uint32_t) ? 1 : 0;
+ break;
+ case XCF_PROP_COLOR:
+ for(int c = 0; c < 3; c++)
+ {
+ const float color = va_arg(ap, uint32_t) / 255.0;
+ xcf->child.p_color[c] = CLAMP(color, 0.0, 1.0);
+ }
+ break;
+ case XCF_PROP_PARASITES:
+ {
+ const char *name = va_arg(ap, char *);
+ const uint32_t flags = va_arg(ap, uint32_t);
+ const uint32_t length = va_arg(ap, uint32_t);
+ const uint8_t *data = va_arg(ap, uint8_t *);
+ xcf->child.parasites = xcf_parasites_add(xcf->child.parasites, name, flags, length, data);
+ break;
+ }
+ case XCF_PROP_FLOAT_OPACITY:
+ xcf->child.p_opacity = va_arg(ap, double);
+ xcf->child.p_opacity = CLAMP(xcf->child.p_opacity, 0.0, 1.0);
+ break;
+ case XCF_PROP_FLOAT_COLOR:
+ for(int c = 0; c < 3; c++)
+ {
+ const float color = va_arg(ap, double);
+ xcf->child.p_color[c] = CLAMP(color, 0.0, 1.0);
+ }
+ break;
+ default: res = 0;
+ }
+ break;
+ }
+ default: res = 0;
+ }
+ }
+
+ va_end(ap);
+
+ if(!res)
+ {
+ if(field != XCF_PROP)
+ {
+ const char *field_name = xcf_get_field_name(field);
+ const char *state_name = xcf_get_state_name(xcf->state);
+ if(field_name)
+ {
+ if(state_name)
+ PRINT_ERROR("error: can't set '%s' in state '%s'", field_name, state_name);
+ else
+ PRINT_ERROR("error: can't set '%s' in state %d", field_name, xcf->state);
+ }
+ else
+ {
+ if(state_name)
+ PRINT_ERROR("error: can't set %d in state '%s'", field, state_name);
+ else
+ PRINT_ERROR("error: can't set %d in state %d", field, xcf->state);
+ }
+ }
+ else
+ {
+ const char *prop_name = xcf_get_property_name(propid);
+ const char *state_name = xcf_get_state_name(xcf->state);
+ if(prop_name)
+ {
+ if(state_name)
+ PRINT_ERROR("error: can't set property '%s' in state '%s'", prop_name, state_name);
+ else
+ PRINT_ERROR("error: can't set property '%s' in state %d", prop_name, xcf->state);
+ }
+ else
+ {
+ if(state_name)
+ PRINT_ERROR("error: can't set property %d in state '%s'", propid, state_name);
+ else
+ PRINT_ERROR("error: can't set property %d in state %d", propid, xcf->state);
+ }
+ }
+ xcf->state = XCF_STATE_ERROR;
+ }
+ return res;
+}
+
+int xcf_add_layer(XCF *xcf)
+{
+ if(xcf->state == XCF_STATE_ERROR)
+ {
+ PRINT_ERROR("error: the file is in error state. better add some error handling.");
+ return 0;
+ }
+
+ if(xcf->state == XCF_STATE_IMAGE)
+ xcf_write_image_header(xcf);
+
+ if(xcf->state != XCF_STATE_MAIN)
+ {
+ PRINT_ERROR("error: can't add a layer while already adding something");
+ xcf->state = XCF_STATE_ERROR;
+ return 0;
+ }
+
+ if(xcf->next_layer >= xcf->n_layers)
+ {
+ PRINT_ERROR("error: too many layers added, expecting only %d", xcf->n_layers);
+ xcf->state = XCF_STATE_ERROR;
+ return 0;
+ }
+
+ xcf->state = XCF_STATE_LAYER;
+
+ free(xcf->child.name);
+ xcf_parasites_free(xcf->child.parasites);
+ memset(&xcf->child, 0, sizeof(xcf->child));
+ xcf->child.n = xcf->next_layer;
+ xcf->next_layer++;
+
+ // set some defaults for the properties
+ xcf->child.p_opacity = 1.0;
+ xcf->child.p_visible = 1;
+
+ xcf->child.p_composite_mode = -1;
+ xcf->child.p_composite_space = -1;
+ xcf->child.p_blend_space = -1;
+ xcf->child.p_mode = -1; // -1 is either XCF_PROP_MODE_LEGACY_NORMAL or XCF_PROP_MODE_NORMAL
+ xcf->child.p_offset_x = 0;
+ xcf->child.p_offset_y = 0;
+
+ return 1;
+}
+
+// TODO: handle layer masks
+int xcf_add_channel(XCF *xcf)
+{
+ if(xcf->state == XCF_STATE_ERROR)
+ {
+ PRINT_ERROR("error: the file is in error state. better add some error handling.");
+ return 0;
+ }
+
+ if(xcf->state == XCF_STATE_IMAGE)
+ xcf_write_image_header(xcf);
+
+ if(xcf->state != XCF_STATE_MAIN)
+ {
+ PRINT_ERROR("error: can't add a channel while already adding something");
+ xcf->state = XCF_STATE_ERROR;
+ return 0;
+ }
+
+ if(xcf->next_channel >= xcf->n_channels)
+ {
+ PRINT_ERROR("error: too many channels added, expecting only %d", xcf->n_channels);
+ xcf->state = XCF_STATE_ERROR;
+ return 0;
+ }
+
+ xcf->state = XCF_STATE_CHANNEL;
+
+ free(xcf->child.name);
+ xcf_parasites_free(xcf->child.parasites);
+ memset(&xcf->child, 0, sizeof(xcf->child));
+ xcf->child.n = xcf->next_channel;
+ xcf->next_channel++;
+
+ // channels are always grayscale, i.e., single channel (how confusing, having two concepts called "channel")
+ xcf->child.type = XCF_TYPE_GRAYSCALE;
+
+ // for channels the size has to be identical to the parent
+ xcf->child.width = xcf->image.width;
+ xcf->child.height = xcf->image.height;
+
+ // set some defaults for the properties
+ xcf->child.p_opacity = 1.0;
+ xcf->child.p_visible = 1;
+
+ xcf->child.p_color[0] = 0.0;
+ xcf->child.p_color[1] = 0.0;
+ xcf->child.p_color[2] = 0.0;
+
+ return 1;
+}
+
+int xcf_add_data(XCF *xcf, const void *data, const int data_channels)
+{
+ if(xcf->state == XCF_STATE_ERROR)
+ {
+ PRINT_ERROR("error: the file is in error state. better add some error handling.");
+ return 0;
+ }
+
+ int res = 0;
+
+ if(xcf->state == XCF_STATE_LAYER)
+ res = xcf_write_layer_header(xcf);
+ else if(xcf->state == XCF_STATE_CHANNEL)
+ res = xcf_write_channel_header(xcf);
+
+ if(!res)
+ {
+ PRINT_ERROR("error: no open layer or channel to add data to");
+ xcf->state = XCF_STATE_ERROR;
+ return 0;
+ }
+
+ // add hierarchy structure
+ int n_channels = 0;
+ switch(xcf->child.type)
+ {
+ case XCF_TYPE_RGB: n_channels = 3; break;
+ case XCF_TYPE_RGB_ALPHA: n_channels = 4; break;
+ case XCF_TYPE_GRAYSCALE: n_channels = 1; break;
+ case XCF_TYPE_GRAYSCALE_ALPHA: n_channels = 2; break;
+ case XCF_TYPE_INDEXED: n_channels = 1; break;
+ case XCF_TYPE_INDEXED_ALPHA: n_channels = 2; break;
+ }
+ int channel_size = 0;
+ switch(xcf->image.precision)
+ {
+ case XCF_PRECISION_I_8_L:
+ case XCF_PRECISION_I_8_G:
+ channel_size = 1;
+ break;
+ case XCF_PRECISION_I_16_L:
+ case XCF_PRECISION_I_16_G:
+ case XCF_PRECISION_F_16_L:
+ case XCF_PRECISION_F_16_G:
+ channel_size = 2;
+ break;
+ case XCF_PRECISION_I_32_L:
+ case XCF_PRECISION_I_32_G:
+ case XCF_PRECISION_F_32_L:
+ case XCF_PRECISION_F_32_G:
+ channel_size = 4;
+ break;
+ case XCF_PRECISION_F_64_L:
+ case XCF_PRECISION_F_64_G:
+ channel_size = 8;
+ break;
+ }
+
+ res = xcf_add_hierarchy(xcf, data, xcf->child.width, xcf->child.height, data_channels, n_channels, channel_size);
+
+ if(res) xcf->state = XCF_STATE_MAIN;
+
+ return res;
+}
diff --git a/src/external/libxcf/xcf.h b/src/external/libxcf/xcf.h
new file mode 100644
index 000000000..137bd8744
--- /dev/null
+++ b/src/external/libxcf/xcf.h
@@ -0,0 +1,201 @@
+#pragma once
+
+#include <inttypes.h>
+
+// the authoritative source for these values is the GIMP source code!
+// any discrepancy is a bug in this file
+
+typedef enum xcf_base_type_t
+{
+ XCF_BASE_TYPE_RGB = 0,
+ XCF_BASE_TYPE_GRAYSCALE = 1,
+ XCF_BASE_TYPE_INDEXED = 2
+} xcf_base_type_t;
+
+typedef enum xcf_type_t
+{
+ XCF_TYPE_RGB = 0,
+ XCF_TYPE_RGB_ALPHA = 1,
+ XCF_TYPE_GRAYSCALE = 2,
+ XCF_TYPE_GRAYSCALE_ALPHA = 3,
+ XCF_TYPE_INDEXED = 4,
+ XCF_TYPE_INDEXED_ALPHA = 5
+} xcf_type_t;
+
+typedef enum xcf_precision_t
+{
+ XCF_PRECISION_I_8_L = 100,
+ XCF_PRECISION_I_8_G = 150,
+ XCF_PRECISION_I_16_L = 200,
+ XCF_PRECISION_I_16_G = 250,
+ XCF_PRECISION_I_32_L = 300,
+ XCF_PRECISION_I_32_G = 350,
+ XCF_PRECISION_F_16_L = 500,
+ XCF_PRECISION_F_16_G = 550,
+ XCF_PRECISION_F_32_L = 600,
+ XCF_PRECISION_F_32_G = 650,
+ XCF_PRECISION_F_64_L = 700,
+ XCF_PRECISION_F_64_G = 750,
+} xcf_precision_t;
+
+typedef enum xcf_parasite_flag_t
+{
+ XCF_PARASITE_PERSISTENT = 1,
+ XCF_PARASITE_UNDOABLE = 2,
+} xcf_parasite_flag_t;
+
+typedef enum xcf_props_t
+{
+ XCF_PROP_END = 0,
+ XCF_PROP_COLORMAP = 1,
+ XCF_PROP_OPACITY = 6,
+ XCF_PROP_MODE = 7,
+ XCF_PROP_VISIBLE = 8,
+ XCF_PROP_OFFSETS = 15,
+ XCF_PROP_COLOR = 16,
+ XCF_PROP_COMPRESSION = 17,
+ XCF_PROP_PARASITES = 21,
+ XCF_PROP_FLOAT_OPACITY = 33,
+ XCF_PROP_COMPOSITE_MODE = 35,
+ XCF_PROP_COMPOSITE_SPACE = 36,
+ XCF_PROP_BLEND_SPACE = 37,
+ XCF_PROP_FLOAT_COLOR = 38,
+} xcf_props_t;
+
+typedef enum xcf_prop_compression_t
+{
+ XCF_PROP_COMPRESSION_NONE = 0,
+ XCF_PROP_COMPRESSION_RLE = 1,
+ XCF_PROP_COMPRESSION_ZLIB = 2
+} xcf_prop_compression_t;
+
+typedef enum xcf_prop_composite_mode_t
+{
+ XCF_PROP_COMPOSITE_MODE_UNION = 1,
+ XCF_PROP_COMPOSITE_MODE_CLIP_TO_BACKDROP = 2,
+ XCF_PROP_COMPOSITE_MODE_CLIP_TO_LAYER = 3,
+ XCF_PROP_COMPOSITE_MODE_INTERSECTION = 4
+} xcf_prop_composite_mode_t;
+
+typedef enum xcf_prop_composite_blend_space_t
+{
+ XCF_PROP_COMPOSITE_BLEND_SPACE_RGB_L = 1,
+ XCF_PROP_COMPOSITE_BLEND_SPACE_RGB_P = 2,
+ XCF_PROP_COMPOSITE_BLEND_SPACE_LAB = 3
+} xcf_prop_composite_blend_space_t;
+
+typedef enum xcf_prop_mode_t
+{
+ XCF_PROP_MODE_LEGACY_NORMAL = 0,
+ XCF_PROP_MODE_LEGACY_DISSOLVE = 1,
+ XCF_PROP_MODE_LEGACY_BEHIND = 2,
+ XCF_PROP_MODE_LEGACY_MULTIPLY = 3,
+ XCF_PROP_MODE_LEGACY_SCREEN = 4,
+ XCF_PROP_MODE_LEGACY_OVERLAY = 5,
+ XCF_PROP_MODE_LEGACY_DIFFERENCE = 6,
+ XCF_PROP_MODE_LEGACY_ADDITION = 7,
+ XCF_PROP_MODE_LEGACY_SUBTRACT = 8,
+ XCF_PROP_MODE_LEGACY_DARKEN = 9,
+ XCF_PROP_MODE_LEGACY_LIGHTEN = 10,
+ XCF_PROP_MODE_LEGACY_HUE_HSV = 11,
+ XCF_PROP_MODE_LEGACY_SATURATION_HSV = 12,
+ XCF_PROP_MODE_LEGACY_COLOR_HSL = 13,
+ XCF_PROP_MODE_LEGACY_VALUE_HSV = 14,
+ XCF_PROP_MODE_LEGACY_DIVIDE = 15,
+ XCF_PROP_MODE_LEGACY_DODGE = 16,
+ XCF_PROP_MODE_LEGACY_BURN = 17,
+ XCF_PROP_MODE_LEGACY_HARD_LIGHT = 18,
+ XCF_PROP_MODE_LEGACY_SOFT_LIGHT = 19,
+ XCF_PROP_MODE_LEGACY_GRAIN_EXTRACT = 20,
+ XCF_PROP_MODE_LEGACY_GRAIN_MERGE = 21,
+ XCF_PROP_MODE_LEGACY_COLOR_ERASE = 22,
+ XCF_PROP_MODE_OVERLAY = 23,
+ XCF_PROP_MODE_HUE_LCH = 24,
+ XCF_PROP_MODE_CHROMA_LCH = 25,
+ XCF_PROP_MODE_COLOR_LCH = 26,
+ XCF_PROP_MODE_LIGHTNESS_LCH = 27,
+ XCF_PROP_MODE_NORMAL = 28,
+ XCF_PROP_MODE_BEHIND = 29,
+ XCF_PROP_MODE_MULTIPLY = 30,
+ XCF_PROP_MODE_SCREEN = 31,
+ XCF_PROP_MODE_DIFFERENCE = 32,
+ XCF_PROP_MODE_ADDITION = 33,
+ XCF_PROP_MODE_SUBTRACT = 34,
+ XCF_PROP_MODE_DARKEN = 35,
+ XCF_PROP_MODE_LIGHTEN = 36,
+ XCF_PROP_MODE_HUE_HSV = 37,
+ XCF_PROP_MODE_SATURATION_HSV = 38,
+ XCF_PROP_MODE_COLOR_HSL = 39,
+ XCF_PROP_MODE_VALUE_HSV = 40,
+ XCF_PROP_MODE_DIVIDE = 41,
+ XCF_PROP_MODE_DODGE = 42,
+ XCF_PROP_MODE_BURN = 43,
+ XCF_PROP_MODE_HARD_LIGHT = 44,
+ XCF_PROP_MODE_SOFT_LIGHT = 45,
+ XCF_PROP_MODE_GRAIN_EXTRACT = 46,
+ XCF_PROP_MODE_GRAIN_MERGE = 47,
+ XCF_PROP_MODE_VIVID_LIGHT = 48,
+ XCF_PROP_MODE_PIN_LIGHT = 49,
+ XCF_PROP_MODE_LINEAR_LIGHT = 50,
+ XCF_PROP_MODE_HARD_MIX = 51,
+ XCF_PROP_MODE_EXCLUSION = 52,
+ XCF_PROP_MODE_LINEAR_BURN = 53,
+ XCF_PROP_MODE_L_DARKEN = 54,
+ XCF_PROP_MODE_L_LIGHTEN = 55,
+ XCF_PROP_MODE_LUMINANCE = 56,
+ XCF_PROP_MODE_COLOR_ERASE = 57,
+ XCF_PROP_MODE_ERASE = 58,
+ XCF_PROP_MODE_MERGE = 59,
+ XCF_PROP_MODE_SPLIT = 60,
+ XCF_PROP_MODE_PASS_THROUGH = 61
+} xcf_prop_mode_t;
+
+typedef enum xcf_field_t
+{
+ // general
+ XCF_WIDTH,
+ XCF_HEIGHT,
+ XCF_PROP,
+ XCF_NAME,
+
+ // image specific
+ XCF_VERSION,
+ XCF_BASE_TYPE,
+ XCF_PRECISION,
+ XCF_N_LAYERS,
+ XCF_N_CHANNELS,
+ XCF_OMIT_BASE_ALPHA,
+
+ // layer specific
+// XCF_TYPE
+} xcf_field_t;
+
+// internal state machine. see state.dot
+typedef enum xcf_state_t
+{
+ XCF_STATE_IMAGE,
+ XCF_STATE_MAIN,
+ XCF_STATE_LAYER,
+ XCF_STATE_LAYER_INTERMEDIATE,
+ XCF_STATE_CHANNEL,
+ XCF_STATE_CHANNEL_INTERMEDIATE,
+ XCF_STATE_DONE,
+ XCF_STATE_ERROR
+} xcf_state_t;
+
+typedef struct xcf_t XCF;
+
+XCF *xcf_open(const char *filename);
+int xcf_close(XCF *xcf);
+
+// set fields or properties. depending on the current state it's setting image, layer or channel data
+int xcf_set(XCF *xcf, xcf_field_t field, ...);
+
+int xcf_add_layer(XCF *xcf);
+int xcf_add_channel(XCF *xcf);
+
+// add pixel data to the current layer or channel
+int xcf_add_data(XCF *xcf, const void *data, const int data_channels);
+
+#define XCF_INTERNAL_INCLUDES
+#include "xcf_names.h"
diff --git a/src/external/libxcf/xcf_names.c b/src/external/libxcf/xcf_names.c
new file mode 100644
index 000000000..c08fa6180
--- /dev/null
+++ b/src/external/libxcf/xcf_names.c
@@ -0,0 +1,226 @@
+#define XCF_INTERNAL_INCLUDES
+#include "xcf_names.h"
+
+#include <stddef.h>
+
+#define STR(s) #s
+
+// don't use default: so we get a compiler warning when we miss something
+
+const char *xcf_get_base_type_name(xcf_base_type_t type)
+{
+ switch(type)
+ {
+ case XCF_BASE_TYPE_RGB: return STR(XCF_BASE_TYPE_RGB);
+ case XCF_BASE_TYPE_GRAYSCALE: return STR(XCF_BASE_TYPE_GRAYSCALE);
+ case XCF_BASE_TYPE_INDEXED: return STR(XCF_BASE_TYPE_INDEXED);
+ }
+
+ return NULL;
+}
+
+const char *xcf_get_type_name(xcf_type_t type)
+{
+ switch(type)
+ {
+ case XCF_TYPE_RGB: return STR(XCF_TYPE_RGB);
+ case XCF_TYPE_RGB_ALPHA: return STR(XCF_TYPE_RGB_ALPHA);
+ case XCF_TYPE_GRAYSCALE: return STR(XCF_TYPE_GRAYSCALE);
+ case XCF_TYPE_GRAYSCALE_ALPHA: return STR(XCF_TYPE_GRAYSCALE_ALPHA);
+ case XCF_TYPE_INDEXED: return STR(XCF_TYPE_INDEXED);
+ case XCF_TYPE_INDEXED_ALPHA: return STR(XCF_TYPE_INDEXED_ALPHA);
+ }
+
+ return NULL;
+}
+
+const char *xcf_get_precision_name(xcf_precision_t precision)
+{
+ switch(precision)
+ {
+ case XCF_PRECISION_I_8_L: return STR(XCF_PRECISION_I_8_L);
+ case XCF_PRECISION_I_8_G: return STR(XCF_PRECISION_I_8_G);
+ case XCF_PRECISION_I_16_L: return STR(XCF_PRECISION_I_16_L);
+ case XCF_PRECISION_I_16_G: return STR(XCF_PRECISION_I_16_G);
+ case XCF_PRECISION_I_32_L: return STR(XCF_PRECISION_I_32_L);
+ case XCF_PRECISION_I_32_G: return STR(XCF_PRECISION_I_32_G);
+ case XCF_PRECISION_F_16_L: return STR(XCF_PRECISION_F_16_L);
+ case XCF_PRECISION_F_16_G: return STR(XCF_PRECISION_F_16_G);
+ case XCF_PRECISION_F_32_L: return STR(XCF_PRECISION_F_32_L);
+ case XCF_PRECISION_F_32_G: return STR(XCF_PRECISION_F_32_G);
+ case XCF_PRECISION_F_64_L: return STR(XCF_PRECISION_F_64_L);
+ case XCF_PRECISION_F_64_G: return STR(XCF_PRECISION_F_64_G);
+ }
+
+ return NULL;
+}
+
+const char *xcf_get_property_name(xcf_props_t property)
+{
+ switch(property)
+ {
+ case XCF_PROP_END: return STR(XCF_PROP_END);
+ case XCF_PROP_COLORMAP: return STR(XCF_PROP_COLORMAP);
+ case XCF_PROP_OPACITY: return STR(XCF_PROP_OPACITY);
+ case XCF_PROP_MODE: return STR(XCF_PROP_MODE);
+ case XCF_PROP_VISIBLE: return STR(XCF_PROP_VISIBLE);
+ case XCF_PROP_OFFSETS: return STR(XCF_PROP_OFFSETS);
+ case XCF_PROP_COLOR: return STR(XCF_PROP_COLOR);
+ case XCF_PROP_COMPRESSION: return STR(XCF_PROP_COMPRESSION);
+ case XCF_PROP_PARASITES: return STR(XCF_PROP_PARASITES);
+ case XCF_PROP_FLOAT_OPACITY: return STR(XCF_PROP_FLOAT_OPACITY);
+ case XCF_PROP_COMPOSITE_MODE: return STR(XCF_PROP_COMPOSITE_MODE);
+ case XCF_PROP_COMPOSITE_SPACE: return STR(XCF_PROP_COMPOSITE_SPACE);
+ case XCF_PROP_BLEND_SPACE: return STR(XCF_PROP_BLEND_SPACE);
+ case XCF_PROP_FLOAT_COLOR: return STR(XCF_PROP_FLOAT_COLOR);
+ }
+
+ return NULL;
+}
+
+const char *xcf_get_compression_name(xcf_prop_compression_t compression)
+{
+ switch(compression)
+ {
+ case XCF_PROP_COMPRESSION_NONE: return STR(XCF_PROP_COMPRESSION_NONE);
+ case XCF_PROP_COMPRESSION_RLE: return STR(XCF_PROP_COMPRESSION_RLE);
+ case XCF_PROP_COMPRESSION_ZLIB: return STR(XCF_PROP_COMPRESSION_ZLIB);
+ }
+
+ return NULL;
+}
+
+const char *xcf_get_composite_mode_name(xcf_prop_composite_mode_t mode)
+{
+ switch(mode)
+ {
+ case XCF_PROP_COMPOSITE_MODE_UNION: return STR(XCF_PROP_COMPOSITE_MODE_UNION);
+ case XCF_PROP_COMPOSITE_MODE_CLIP_TO_BACKDROP: return STR(XCF_PROP_COMPOSITE_MODE_CLIP_TO_BACKDROP);
+ case XCF_PROP_COMPOSITE_MODE_CLIP_TO_LAYER: return STR(XCF_PROP_COMPOSITE_MODE_CLIP_TO_LAYER);
+ case XCF_PROP_COMPOSITE_MODE_INTERSECTION: return STR(XCF_PROP_COMPOSITE_MODE_INTERSECTION);
+ }
+
+ return NULL;
+}
+
+const char *xcf_get_composite_blend_space_name(xcf_prop_composite_blend_space_t blend_space)
+{
+ switch(blend_space)
+ {
+ case XCF_PROP_COMPOSITE_BLEND_SPACE_RGB_L: return STR(XCF_PROP_COMPOSITE_BLEND_SPACE_RGB_L);
+ case XCF_PROP_COMPOSITE_BLEND_SPACE_RGB_P: return STR(XCF_PROP_COMPOSITE_BLEND_SPACE_RGB_P);
+ case XCF_PROP_COMPOSITE_BLEND_SPACE_LAB: return STR(XCF_PROP_COMPOSITE_BLEND_SPACE_LAB);
+ }
+
+ return NULL;
+}
+
+const char *xcf_get_mode_name(xcf_prop_mode_t mode)
+{
+ switch(mode)
+ {
+ case XCF_PROP_MODE_LEGACY_NORMAL: return STR(XCF_PROP_MODE_LEGACY_NORMAL);
+ case XCF_PROP_MODE_LEGACY_DISSOLVE: return STR(XCF_PROP_MODE_LEGACY_DISSOLVE);
+ case XCF_PROP_MODE_LEGACY_BEHIND: return STR(XCF_PROP_MODE_LEGACY_BEHIND);
+ case XCF_PROP_MODE_LEGACY_MULTIPLY: return STR(XCF_PROP_MODE_LEGACY_MULTIPLY);
+ case XCF_PROP_MODE_LEGACY_SCREEN: return STR(XCF_PROP_MODE_LEGACY_SCREEN);
+ case XCF_PROP_MODE_LEGACY_OVERLAY: return STR(XCF_PROP_MODE_LEGACY_OVERLAY);
+ case XCF_PROP_MODE_LEGACY_DIFFERENCE: return STR(XCF_PROP_MODE_LEGACY_DIFFERENCE);
+ case XCF_PROP_MODE_LEGACY_ADDITION: return STR(XCF_PROP_MODE_LEGACY_ADDITION);
+ case XCF_PROP_MODE_LEGACY_SUBTRACT: return STR(XCF_PROP_MODE_LEGACY_SUBTRACT);
+ case XCF_PROP_MODE_LEGACY_DARKEN: return STR(XCF_PROP_MODE_LEGACY_DARKEN);
+ case XCF_PROP_MODE_LEGACY_LIGHTEN: return STR(XCF_PROP_MODE_LEGACY_LIGHTEN);
+ case XCF_PROP_MODE_LEGACY_HUE_HSV: return STR(XCF_PROP_MODE_LEGACY_HUE_HSV);
+ case XCF_PROP_MODE_LEGACY_SATURATION_HSV: return STR(XCF_PROP_MODE_LEGACY_SATURATION_HSV);
+ case XCF_PROP_MODE_LEGACY_COLOR_HSL: return STR(XCF_PROP_MODE_LEGACY_COLOR_HSL);
+ case XCF_PROP_MODE_LEGACY_VALUE_HSV: return STR(XCF_PROP_MODE_LEGACY_VALUE_HSV);
+ case XCF_PROP_MODE_LEGACY_DIVIDE: return STR(XCF_PROP_MODE_LEGACY_DIVIDE);
+ case XCF_PROP_MODE_LEGACY_DODGE: return STR(XCF_PROP_MODE_LEGACY_DODGE);
+ case XCF_PROP_MODE_LEGACY_BURN: return STR(XCF_PROP_MODE_LEGACY_BURN);
+ case XCF_PROP_MODE_LEGACY_HARD_LIGHT: return STR(XCF_PROP_MODE_LEGACY_HARD_LIGHT);
+ case XCF_PROP_MODE_LEGACY_SOFT_LIGHT: return STR(XCF_PROP_MODE_LEGACY_SOFT_LIGHT);
+ case XCF_PROP_MODE_LEGACY_GRAIN_EXTRACT: return STR(XCF_PROP_MODE_LEGACY_GRAIN_EXTRACT);
+ case XCF_PROP_MODE_LEGACY_GRAIN_MERGE: return STR(XCF_PROP_MODE_LEGACY_GRAIN_MERGE);
+ case XCF_PROP_MODE_LEGACY_COLOR_ERASE: return STR(XCF_PROP_MODE_LEGACY_COLOR_ERASE);
+ case XCF_PROP_MODE_OVERLAY: return STR(XCF_PROP_MODE_OVERLAY);
+ case XCF_PROP_MODE_HUE_LCH: return STR(XCF_PROP_MODE_HUE_LCH);
+ case XCF_PROP_MODE_CHROMA_LCH: return STR(XCF_PROP_MODE_CHROMA_LCH);
+ case XCF_PROP_MODE_COLOR_LCH: return STR(XCF_PROP_MODE_COLOR_LCH);
+ case XCF_PROP_MODE_LIGHTNESS_LCH: return STR(XCF_PROP_MODE_LIGHTNESS_LCH);
+ case XCF_PROP_MODE_NORMAL: return STR(XCF_PROP_MODE_NORMAL);
+ case XCF_PROP_MODE_BEHIND: return STR(XCF_PROP_MODE_BEHIND);
+ case XCF_PROP_MODE_MULTIPLY: return STR(XCF_PROP_MODE_MULTIPLY);
+ case XCF_PROP_MODE_SCREEN: return STR(XCF_PROP_MODE_SCREEN);
+ case XCF_PROP_MODE_DIFFERENCE: return STR(XCF_PROP_MODE_DIFFERENCE);
+ case XCF_PROP_MODE_ADDITION: return STR(XCF_PROP_MODE_ADDITION);
+ case XCF_PROP_MODE_SUBTRACT: return STR(XCF_PROP_MODE_SUBTRACT);
+ case XCF_PROP_MODE_DARKEN: return STR(XCF_PROP_MODE_DARKEN);
+ case XCF_PROP_MODE_LIGHTEN: return STR(XCF_PROP_MODE_LIGHTEN);
+ case XCF_PROP_MODE_HUE_HSV: return STR(XCF_PROP_MODE_HUE_HSV);
+ case XCF_PROP_MODE_SATURATION_HSV: return STR(XCF_PROP_MODE_SATURATION_HSV);
+ case XCF_PROP_MODE_COLOR_HSL: return STR(XCF_PROP_MODE_COLOR_HSL);
+ case XCF_PROP_MODE_VALUE_HSV: return STR(XCF_PROP_MODE_VALUE_HSV);
+ case XCF_PROP_MODE_DIVIDE: return STR(XCF_PROP_MODE_DIVIDE);
+ case XCF_PROP_MODE_DODGE: return STR(XCF_PROP_MODE_DODGE);
+ case XCF_PROP_MODE_BURN: return STR(XCF_PROP_MODE_BURN);
+ case XCF_PROP_MODE_HARD_LIGHT: return STR(XCF_PROP_MODE_HARD_LIGHT);
+ case XCF_PROP_MODE_SOFT_LIGHT: return STR(XCF_PROP_MODE_SOFT_LIGHT);
+ case XCF_PROP_MODE_GRAIN_EXTRACT: return STR(XCF_PROP_MODE_GRAIN_EXTRACT);
+ case XCF_PROP_MODE_GRAIN_MERGE: return STR(XCF_PROP_MODE_GRAIN_MERGE);
+ case XCF_PROP_MODE_VIVID_LIGHT: return STR(XCF_PROP_MODE_VIVID_LIGHT);
+ case XCF_PROP_MODE_PIN_LIGHT: return STR(XCF_PROP_MODE_PIN_LIGHT);
+ case XCF_PROP_MODE_LINEAR_LIGHT: return STR(XCF_PROP_MODE_LINEAR_LIGHT);
+ case XCF_PROP_MODE_HARD_MIX: return STR(XCF_PROP_MODE_HARD_MIX);
+ case XCF_PROP_MODE_EXCLUSION: return STR(XCF_PROP_MODE_EXCLUSION);
+ case XCF_PROP_MODE_LINEAR_BURN: return STR(XCF_PROP_MODE_LINEAR_BURN);
+ case XCF_PROP_MODE_L_DARKEN: return STR(XCF_PROP_MODE_L_DARKEN);
+ case XCF_PROP_MODE_L_LIGHTEN: return STR(XCF_PROP_MODE_L_LIGHTEN);
+ case XCF_PROP_MODE_LUMINANCE: return STR(XCF_PROP_MODE_LUMINANCE);
+ case XCF_PROP_MODE_COLOR_ERASE: return STR(XCF_PROP_MODE_COLOR_ERASE);
+ case XCF_PROP_MODE_ERASE: return STR(XCF_PROP_MODE_ERASE);
+ case XCF_PROP_MODE_MERGE: return STR(XCF_PROP_MODE_MERGE);
+ case XCF_PROP_MODE_SPLIT: return STR(XCF_PROP_MODE_SPLIT);
+ case XCF_PROP_MODE_PASS_THROUGH: return STR(XCF_PROP_MODE_PASS_THROUGH);
+ }
+
+ return NULL;
+}
+
+const char *xcf_get_field_name(xcf_field_t field)
+{
+ switch(field)
+ {
+ case XCF_WIDTH: return STR(XCF_WIDTH);
+ case XCF_HEIGHT: return STR(XCF_HEIGHT);
+ case XCF_PROP: return STR(XCF_PROP);
+ case XCF_NAME: return STR(XCF_NAME);
+ case XCF_VERSION: return STR(XCF_VERSION);
+ case XCF_BASE_TYPE: return STR(XCF_BASE_TYPE);
+ case XCF_PRECISION: return STR(XCF_PRECISION);
+ case XCF_N_LAYERS: return STR(XCF_N_LAYERS);
+ case XCF_N_CHANNELS: return STR(XCF_N_CHANNELS);
+ // case XCF_TYPE: return STR(XCF_TYPE);
+ case XCF_OMIT_BASE_ALPHA: return STR(XCF_OMIT_BASE_ALPHA);
+ }
+
+ return NULL;
+}
+
+const char *xcf_get_state_name(xcf_state_t state)
+{
+ switch(state)
+ {
+ case XCF_STATE_IMAGE: return STR(XCF_STATE_IMAGE);
+ case XCF_STATE_MAIN: return STR(XCF_STATE_MAIN);
+ case XCF_STATE_LAYER: return STR(XCF_STATE_LAYER);
+ case XCF_STATE_LAYER_INTERMEDIATE: return STR(XCF_STATE_LAYER_INTERMEDIATE);
+ case XCF_STATE_CHANNEL: return STR(XCF_STATE_CHANNEL);
+ case XCF_STATE_CHANNEL_INTERMEDIATE: return STR(XCF_STATE_CHANNEL_INTERMEDIATE);
+ case XCF_STATE_DONE: return STR(XCF_STATE_DONE);
+ case XCF_STATE_ERROR: return STR(XCF_STATE_ERROR);
+ }
+
+ return NULL;
+}
+
+#undef STR
diff --git a/src/external/libxcf/xcf_names.h b/src/external/libxcf/xcf_names.h
new file mode 100644
index 000000000..0b469002b
--- /dev/null
+++ b/src/external/libxcf/xcf_names.h
@@ -0,0 +1,18 @@
+#pragma once
+
+#ifndef XCF_INTERNAL_INCLUDES
+#error only "xcf.h" should be included diretly
+#endif
+
+#include "xcf.h"
+
+const char *xcf_get_base_type_name(xcf_base_type_t type);
+const char *xcf_get_type_name(xcf_type_t type);
+const char *xcf_get_precision_name(xcf_precision_t precision);
+const char *xcf_get_property_name(xcf_props_t property);
+const char *xcf_get_compression_name(xcf_prop_compression_t compression);
+const char *xcf_get_composite_mode_name(xcf_prop_composite_mode_t mode);
+const char *xcf_get_composite_blend_space_name(xcf_prop_composite_blend_space_t blend_space);
+const char *xcf_get_mode_name(xcf_prop_mode_t mode);
+const char *xcf_get_field_name(xcf_field_t field);
+const char *xcf_get_state_name(xcf_state_t state);
diff --git a/src/external/rawspeed/.ci/Dockerfile b/src/external/rawspeed/.ci/Dockerfile
index 377e53737..152b6196d 100644
--- a/src/external/rawspeed/.ci/Dockerfile
+++ b/src/external/rawspeed/.ci/Dockerfile
@@ -36,8 +36,8 @@ RUN echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/80forceyes
# Fix broken packages
RUN echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissin
-ENV GCC_VER=9
-ENV LLVM_VER=9
+ENV GCC_VER=10
+ENV LLVM_VER=10
# pls keep sorted :)
RUN rm -rf /var/lib/apt/lists/* && apt-get update && \
diff --git a/src/external/rawspeed/.clang-tidy b/src/external/rawspeed/.clang-tidy
index 4399271df..58637112f 100644
--- a/src/external/rawspeed/.clang-tidy
+++ b/src/external/rawspeed/.clang-tidy
@@ -1,6 +1,6 @@
---
-Checks: '*,-clang-analyzer-*,-clang-diagnostic-*,-cert-dcl50-cpp,-cert-env33-c,-cert-err58-cpp,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-pro-type-reinterpret-cast,-cppcoreguidelines-pro-type-vararg,-cppcoreguidelines-special-member-functions,-google-default-arguments,-google-readability-todo,-hicpp-member-init,-hicpp-special-member-functions,-llvm-header-guard,-llvm-include-order,-misc-unused-parameters,-readability-implicit-bool-cast,-readability-inconsistent-declaration-parameter-name,-android-*,-hicpp-braces-around-statements,-hicpp-function-size,-google-readability-braces-around-statements,-google-readability-function-size,-readability-implicit-bool-conversion,-hicpp-signed-bitwise,-hicpp-no-array-decay,-hicpp-vararg,-hicpp-multiway-paths-covered,-cppcoreguidelines-owning-memory,-fuchsia-*,-portability-simd-intrinsics,-bugprone-narrowing-conversions,-cppcoreguidelines-narrowing-conversions,-readability-magic-numbers,-cppcoreguidelines-avoid-magic-numbers,-misc-non-private-member-variables-in-classes,-cppcoreguidelines-non-private-member-variables-in-classes,-modernize-use-trailing-return-type,-cppcoreguidelines-init-variables,-bugprone-signed-char-misuse,-cert-dcl37-c,-cert-dcl51-cpp,-misc-no-recursion'
-WarningsAsErrors: '*'
+Checks: '*,-clang-analyzer-*,-clang-diagnostic-*,-cert-dcl50-cpp,-cert-env33-c,-cert-err58-cpp,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-pro-type-reinterpret-cast,-cppcoreguidelines-pro-type-vararg,-cppcoreguidelines-special-member-functions,-google-default-arguments,-google-readability-todo,-hicpp-member-init,-hicpp-special-member-functions,-llvm-header-guard,-llvm-include-order,-misc-unused-parameters,-readability-implicit-bool-cast,-readability-inconsistent-declaration-parameter-name,-android-*,-hicpp-braces-around-statements,-hicpp-function-size,-google-readability-braces-around-statements,-google-readability-function-size,-readability-implicit-bool-conversion,-hicpp-signed-bitwise,-hicpp-no-array-decay,-hicpp-vararg,-hicpp-multiway-paths-covered,-cppcoreguidelines-owning-memory,-fuchsia-*,-llvmlibc-*,-portability-simd-intrinsics,-bugprone-narrowing-conversions,-cppcoreguidelines-narrowing-conversions,-readability-magic-numbers,-cppcoreguidelines-avoid-magic-numbers,-misc-non-private-member-variables-in-classes,-cppcoreguidelines-non-private-member-variables-in-classes,-modernize-use-trailing-return-type,-cppcoreguidelines-init-variables,-bugprone-signed-char-misuse,-cert-str34-c,-cert-dcl37-c,-cert-dcl51-cpp,-misc-no-recursion,-cppcoreguidelines-avoid-non-const-global-variables,-abseil-string-find-str-contains'
+WarningsAsErrors: ''
HeaderFilterRegex: '.*'
AnalyzeTemporaryDtors: false
User: lebedevri
@@ -45,6 +45,8 @@ CheckOptions:
value: '0'
- key: readability-identifier-naming.NamespaceCase
value: lower_case
+ - key: google-runtime-references.IncludedTypes
+ value: 'benchmark::State'
- key: google-runtime-references.WhiteListTypes
value: 'benchmark::State'
- key: modernize-use-default-member-init.UseAssignment
diff --git a/src/external/rawspeed/.travis.yml b/src/external/rawspeed/.travis.yml
index fa7494f9a..101167810 100644
--- a/src/external/rawspeed/.travis.yml
+++ b/src/external/rawspeed/.travis.yml
@@ -73,26 +73,26 @@ jobs:
sudo: required
services:
- docker
- env: CC=gcc-9 CXX=g++-9
+ env: CC=gcc-10 CXX=g++-10
- stage: test
os: linux
dist: bionic
sudo: required
services:
- docker
- env: CC=gcc-9 CXX=g++-9 ECO="-DWITH_OPENMP=OFF"
+ env: CC=gcc-10 CXX=g++-10 ECO="-DWITH_OPENMP=OFF"
- os: linux
dist: bionic
sudo: required
services:
- docker
- env: CC=clang-9 CXX=clang++-9
+ env: CC=clang-10 CXX=clang++-10
- os: linux
dist: bionic
sudo: required
services:
- docker
- env: CC=gcc-9 CXX=g++-9 GCOV=gcov-9 FLAVOR=Coverage ECO="-DRAWSPEED_ENABLE_SAMPLE_BASED_TESTING=ON" EXTRA_OPTS="$DOCKER_RPUU"
+ env: CC=gcc-10 CXX=g++-10 GCOV=gcov-10 FLAVOR=Coverage ECO="-DRAWSPEED_ENABLE_SAMPLE_BASED_TESTING=ON" EXTRA_OPTS="$DOCKER_RPUU"
cache:
directories:
- '$HOME/$RPUU_DST'
@@ -106,13 +106,13 @@ jobs:
services:
- docker
# Don't forget to ensure that FindLLVMClangTidy.cmake is also bumped
- env: CC=clang-9 CXX=clang++-9 TARGET=STATICANALYSIS ECO="-DUSE_CLANG_TIDY=ON"
+ env: CC=clang-10 CXX=clang++-10 TARGET=STATICANALYSIS ECO="-DUSE_CLANG_TIDY=ON"
- os: linux
dist: bionic
sudo: required
services:
- docker
- env: CC=clang-9 CXX=clang++-9 ECO="-DWITH_OPENMP=OFF"
+ env: CC=clang-10 CXX=clang++-10 ECO="-DWITH_OPENMP=OFF"
- os: linux
dist: bionic
sudo: required
@@ -138,7 +138,7 @@ jobs:
sudo: required
services:
- docker
- env: CC=clang-9 CXX=clang++-9 TARGET=WWW
+ env: CC=clang-10 CXX=clang++-10 TARGET=WWW
# linux clang Coverage build OOM's in gcov during final codecov report collection
# OSX gcc Coverage build produces invalid .gcno files
@@ -167,7 +167,7 @@ script:
export CMD="$SRC_DIR/.ci/ci-script.sh";
if [[ "$TARGET" == "STATICANALYSIS" ]]; then
export TARGET="build";
- export CMD="scan-build-9 --use-cc=\"$CC\" --use-c++=\"$CXX\" --force-analyze-debug-code --status-bugs -disable-checker deadcode.DeadStores $CMD";
+ export CMD="scan-build-10 --use-cc=\"$CC\" --use-c++=\"$CXX\" --force-analyze-debug-code --status-bugs -disable-checker deadcode.DeadStores $CMD";
fi;
docker run --read-only --tmpfs /tmp --volume $TRAVIS_BUILD_DIR:$SRC_DIR:ro --volume "$TRAVIS_BUILD_DIR/build":$BUILD_DIR --workdir $BUILD_DIR --tmpfs $INSTALL_PREFIX $EXTRA_TMPFS $EXTRA_OPTS --env CC --env CXX --env GCOV --env CFLAGS --env CXXFLAGS --env SRC_DIR --env BUILD_DIR --env INSTALL_PREFIX --env TARGET --env FLAVOR --env ECO darktable/rawspeed sh -c "$CMD";
diff --git a/src/external/rawspeed/CMakeLists.txt b/src/external/rawspeed/CMakeLists.txt
index 2ecb7b07c..4c43526ce 100644
--- a/src/external/rawspeed/CMakeLists.txt
+++ b/src/external/rawspeed/CMakeLists.txt
@@ -11,15 +11,15 @@ If(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
message(FATAL_ERROR "In-source builds are not permitted. Make a separate folder for building:\nmkdir build; cd build; cmake ..\nBefore that, remove the files already created:\nrm -rf CMakeCache.txt CMakeFiles")
endif(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
-include(GNUInstallDirs)
-include(FeatureSummary)
-include(CheckCXXCompilerFlag)
-
# NOTE: if rawspeed is being added as a submodule to another build,
# this CMakeLists.txt should be added via add_subdirectory().
project(rawspeed CXX)
+include(FeatureSummary)
+include(CheckCXXCompilerFlag)
+include(GNUInstallDirs)
+
set(RAWSPEED_SOURCE_DIR "${PROJECT_SOURCE_DIR}" CACHE PATH "" FORCE)
set(RAWSPEED_BINARY_DIR "${PROJECT_BINARY_DIR}" CACHE PATH "" FORCE)
diff --git a/src/external/rawspeed/bench/librawspeed/common/CMakeLists.txt b/src/external/rawspeed/bench/librawspeed/common/CMakeLists.txt
index 844506e01..d3512b8a3 100644
--- a/src/external/rawspeed/bench/librawspeed/common/CMakeLists.txt
+++ b/src/external/rawspeed/bench/librawspeed/common/CMakeLists.txt
@@ -2,6 +2,6 @@ FILE(GLOB RAWSPEED_BENCHS_SOURCES
"DefaultInitAllocatorAdaptorBenchmark.cpp"
)
-foreach(IN ${RAWSPEED_BENCHS_SOURCES})
- add_rs_bench(${IN})
+foreach(SRC ${RAWSPEED_BENCHS_SOURCES})
+ add_rs_bench("${SRC}")
endforeach()
diff --git a/src/external/rawspeed/bench/librawspeed/decompressors/CMakeLists.txt b/src/external/rawspeed/bench/librawspeed/decompressors/CMakeLists.txt
index 981b52c1b..6cc2e184b 100644
--- a/src/external/rawspeed/bench/librawspeed/decompressors/CMakeLists.txt
+++ b/src/external/rawspeed/bench/librawspeed/decompressors/CMakeLists.txt
@@ -3,8 +3,8 @@ if(HAVE_ZLIB)
"DeflateDecompressorBenchmark.cpp"
)
- foreach(IN ${RAWSPEED_BENCHS_SOURCES})
- add_rs_bench(${IN})
+ foreach(SRC ${RAWSPEED_BENCHS_SOURCES})
+ add_rs_bench("${SRC}")
endforeach()
target_link_libraries(DeflateDecompressorBenchmark PRIVATE rawspeed_get_number_of_processor_cores)
diff --git a/src/external/rawspeed/bench/librawspeed/interpolators/CMakeLists.txt b/src/external/rawspeed/bench/librawspeed/interpolators/CMakeLists.txt
index 2d021e24f..b292615e0 100644
--- a/src/external/rawspeed/bench/librawspeed/interpolators/CMakeLists.txt
+++ b/src/external/rawspeed/bench/librawspeed/interpolators/CMakeLists.txt
@@ -2,8 +2,8 @@ FILE(GLOB RAWSPEED_BENCHS_SOURCES
"Cr2sRawInterpolatorBenchmark.cpp"
)
-foreach(IN ${RAWSPEED_BENCHS_SOURCES})
- add_rs_bench(${IN})
+foreach(SRC ${RAWSPEED_BENCHS_SOURCES})
+ add_rs_bench("${SRC}")
endforeach()
target_link_libraries(Cr2sRawInterpolatorBenchmark PRIVATE rawspeed_get_number_of_processor_cores)
diff --git a/src/external/rawspeed/bench/librawspeed/io/CMakeLists.txt b/src/external/rawspeed/bench/librawspeed/io/CMakeLists.txt
index 1e491bf0f..047a24dc6 100644
--- a/src/external/rawspeed/bench/librawspeed/io/CMakeLists.txt
+++ b/src/external/rawspeed/bench/librawspeed/io/CMakeLists.txt
@@ -2,6 +2,6 @@ FILE(GLOB RAWSPEED_BENCHS_SOURCES
"BitStreamBenchmark.cpp"
)
-foreach(IN ${RAWSPEED_BENCHS_SOURCES})
- add_rs_bench(${IN})
+foreach(SRC ${RAWSPEED_BENCHS_SOURCES})
+ add_rs_bench("${SRC}")
endforeach()
diff --git a/src/external/rawspeed/bench/librawspeed/metadata/CMakeLists.txt b/src/external/rawspeed/bench/librawspeed/metadata/CMakeLists.txt
index a6c9ab0e7..ccf42e25b 100644
--- a/src/external/rawspeed/bench/librawspeed/metadata/CMakeLists.txt
+++ b/src/external/rawspeed/bench/librawspeed/metadata/CMakeLists.txt
@@ -6,6 +6,6 @@ FILE(GLOB RAWSPEED_BENCHS_SOURCES
"CameraMetaDataBenchmark.cpp"
)
-foreach(IN ${RAWSPEED_BENCHS_SOURCES})
- add_rs_bench(${IN})
+foreach(SRC ${RAWSPEED_BENCHS_SOURCES})
+ add_rs_bench("${SRC}")
endforeach()
diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMAr.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMAr.cmake
index 18e284eef..affd6e79a 100644
--- a/src/external/rawspeed/cmake/Modules/FindLLVMAr.cmake
+++ b/src/external/rawspeed/cmake/Modules/FindLLVMAr.cmake
@@ -1,4 +1,4 @@
-find_program(LLVMAR_EXECUTABLE NAMES llvm-ar llvm-ar-8 llvm-ar-7 llvm-ar-6.0 llvm-ar-5.0 llvm-ar-4.0 llvm-ar-3.9)
+find_program(LLVMAR_EXECUTABLE NAMES llvm-ar llvm-ar-10 llvm-ar-9 llvm-ar-8 llvm-ar-7 llvm-ar-6.0 llvm-ar-5.0 llvm-ar-4.0 llvm-ar-3.9)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LLVMAr
diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMCXXFilt.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMCXXFilt.cmake
index 9d9f3e611..cadb31c6b 100644
--- a/src/external/rawspeed/cmake/Modules/FindLLVMCXXFilt.cmake
+++ b/src/external/rawspeed/cmake/Modules/FindLLVMCXXFilt.cmake
@@ -1,5 +1,5 @@
find_program(LLVMCXXFilt_EXECUTABLE
- NAMES llvm-cxxfilt llvm-cxxfilt-8 llvm-cxxfilt-7 llvm-cxxfilt-6.0 llvm-cxxfilt-5.0 llvm-cxxfilt-4.0 llvm-cxxfilt-3.9
+ NAMES llvm-cxxfilt llvm-cxxfilt-10 llvm-cxxfilt-9 llvm-cxxfilt-8 llvm-cxxfilt-7 llvm-cxxfilt-6.0 llvm-cxxfilt-5.0 llvm-cxxfilt-4.0 llvm-cxxfilt-3.9
DOC "The llvm-cxxfilt executable"
)
diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMClangTidy.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMClangTidy.cmake
index 136fff636..33a55de85 100644
--- a/src/external/rawspeed/cmake/Modules/FindLLVMClangTidy.cmake
+++ b/src/external/rawspeed/cmake/Modules/FindLLVMClangTidy.cmake
@@ -1,4 +1,4 @@
-find_program(CLANGTIDY_PATH NAMES clang-tidy clang-tidy-9 clang-tidy-8 clang-tidy-7 clang-tidy-6.0 clang-tidy-5.0 clang-tidy-4.0 clang-tidy-3.9)
+find_program(CLANGTIDY_PATH NAMES clang-tidy clang-tidy-10 clang-tidy-9 clang-tidy-8 clang-tidy-7 clang-tidy-6.0 clang-tidy-5.0 clang-tidy-4.0 clang-tidy-3.9)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LLVMClangTidy
diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMCov.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMCov.cmake
index 2d2f582ce..fa5bc2c58 100644
--- a/src/external/rawspeed/cmake/Modules/FindLLVMCov.cmake
+++ b/src/external/rawspeed/cmake/Modules/FindLLVMCov.cmake
@@ -1,4 +1,4 @@
-find_program(LLVMCOV_PATH NAMES llvm-cov llvm-cov-8 llvm-cov-7 llvm-cov-6.0 llvm-cov-5.0 llvm-cov-4.0 llvm-cov-3.9)
+find_program(LLVMCOV_PATH NAMES llvm-cov llvm-cov-10 llvm-cov-9 llvm-cov-8 llvm-cov-7 llvm-cov-6.0 llvm-cov-5.0 llvm-cov-4.0 llvm-cov-3.9)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LLVMCov
diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMLLD.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMLLD.cmake
index 972136d4b..224f10a3e 100644
--- a/src/external/rawspeed/cmake/Modules/FindLLVMLLD.cmake
+++ b/src/external/rawspeed/cmake/Modules/FindLLVMLLD.cmake
@@ -1,4 +1,4 @@
-find_program(LLVMLLD_EXECUTABLE NAMES ld.lld lld lld-8 lld-7 lld-6.0 lld-5.0 lld-4.0 lld-3.9)
+find_program(LLVMLLD_EXECUTABLE NAMES ld.lld lld lld-10 lld-9 lld-8 lld-7 lld-6.0 lld-5.0 lld-4.0 lld-3.9)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LLVMLLD
diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMNm.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMNm.cmake
index 8a3c2b4d9..06e1ee7c5 100644
--- a/src/external/rawspeed/cmake/Modules/FindLLVMNm.cmake
+++ b/src/external/rawspeed/cmake/Modules/FindLLVMNm.cmake
@@ -1,4 +1,4 @@
-find_program(LLVMNM_EXECUTABLE NAMES llvm-nm llvm-nm-8 llvm-nm-7 llvm-nm-6.0 llvm-nm-5.0 llvm-nm-4.0 llvm-nm-3.9)
+find_program(LLVMNM_EXECUTABLE NAMES llvm-nm llvm-nm-10 llvm-nm-9 llvm-nm-8 llvm-nm-7 llvm-nm-6.0 llvm-nm-5.0 llvm-nm-4.0 llvm-nm-3.9)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LLVMNm
diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMObjCopy.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMObjCopy.cmake
index c133ec4a5..e308be8da 100644
--- a/src/external/rawspeed/cmake/Modules/FindLLVMObjCopy.cmake
+++ b/src/external/rawspeed/cmake/Modules/FindLLVMObjCopy.cmake
@@ -1,4 +1,4 @@
-find_program(LLVMOBJCOPY_EXECUTABLE NAMES llvm-objcopy llvm-objcopy-8 llvm-objcopy-7 llvm-objcopy-6.0 llvm-objcopy-5.0 llvm-objcopy-4.0 llvm-objcopy-3.9)
+find_program(LLVMOBJCOPY_EXECUTABLE NAMES llvm-objcopy llvm-objcopy-10 llvm-objcopy-9 llvm-objcopy-8 llvm-objcopy-7 llvm-objcopy-6.0 llvm-objcopy-5.0 llvm-objcopy-4.0 llvm-objcopy-3.9)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LLVMObjCopy
diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMObjDump.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMObjDump.cmake
index 71706f45a..ee637fd70 100644
--- a/src/external/rawspeed/cmake/Modules/FindLLVMObjDump.cmake
+++ b/src/external/rawspeed/cmake/Modules/FindLLVMObjDump.cmake
@@ -1,4 +1,4 @@
-find_program(LLVMOBJDUMP_EXECUTABLE NAMES llvm-objdump llvm-objdump-8 llvm-objdump-7 llvm-objdump-6.0 llvm-objdump-5.0 llvm-objdump-4.0 llvm-objdump-3.9)
+find_program(LLVMOBJDUMP_EXECUTABLE NAMES llvm-objdump llvm-objdump-10 llvm-objdump-9 llvm-objdump-8 llvm-objdump-7 llvm-objdump-6.0 llvm-objdump-5.0 llvm-objdump-4.0 llvm-objdump-3.9)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LLVMObjDump
diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMProfData.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMProfData.cmake
index 8b253dd8a..4f6399f01 100644
--- a/src/external/rawspeed/cmake/Modules/FindLLVMProfData.cmake
+++ b/src/external/rawspeed/cmake/Modules/FindLLVMProfData.cmake
@@ -1,4 +1,4 @@
-find_program(LLVMPROFDATA_PATH NAMES llvm-profdata llvm-profdata-8 llvm-profdata-7 llvm-profdata-6.0 llvm-profdata-5.0 llvm-profdata-4.0 llvm-profdata-3.9)
+find_program(LLVMPROFDATA_PATH NAMES llvm-profdata llvm-profdata-10 llvm-profdata-9 llvm-profdata-8 llvm-profdata-7 llvm-profdata-6.0 llvm-profdata-5.0 llvm-profdata-4.0 llvm-profdata-3.9)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LLVMProfData
diff --git a/src/external/rawspeed/cmake/Modules/FindLLVMRanLib.cmake b/src/external/rawspeed/cmake/Modules/FindLLVMRanLib.cmake
index 85f14a920..0791e1f95 100644
--- a/src/external/rawspeed/cmake/Modules/FindLLVMRanLib.cmake
+++ b/src/external/rawspeed/cmake/Modules/FindLLVMRanLib.cmake
@@ -1,4 +1,4 @@
-find_program(LLVMRANLIB_EXECUTABLE NAMES llvm-ranlib llvm-ranlib-8 llvm-ranlib-7 llvm-ranlib-6.0 llvm-ranlib-5.0 llvm-ranlib-4.0 llvm-ranlib-3.9)
+find_program(LLVMRANLIB_EXECUTABLE NAMES llvm-ranlib llvm-ranlib-10 llvm-ranlib-9 llvm-ranlib-8 llvm-ranlib-7 llvm-ranlib-6.0 llvm-ranlib-5.0 llvm-ranlib-4.0 llvm-ranlib-3.9)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LLVMRanLib
diff --git a/src/external/rawspeed/cmake/Modules/GoogleBenchmark.cmake.in b/src/external/rawspeed/cmake/Modules/GoogleBenchmark.cmake.in
index 6847d9a3b..215fe8bff 100644
--- a/src/external/rawspeed/cmake/Modules/GoogleBenchmark.cmake.in
+++ b/src/external/rawspeed/cmake/Modules/GoogleBenchmark.cmake.in
@@ -33,8 +33,8 @@ else()
message(WARNING "Did not find GOOGLEBENCHMARK sources! Fetching from web...")
ExternalProject_Add(
googlebenchmark
- URL https://github.com/google/benchmark/archive/v1.5.tar.gz
- URL_HASH SHA512=a57122340c4f9a8e434ec70098916aef7c49d5d8312a30e4753f54bacc1099b146698b66c12f9ef116f7cadc93c604809a905c0e259aecf63aa2553390a1b609
+ URL https://github.com/google/benchmark/archive/v1.5.1.tar.gz
+ URL_HASH SHA512=1e8782ab6846b8b29c5eea41ed1ba19dd92a46a135cf74acdc588e2cd5ef05581c644d20fc0d6403456d65417538e1db80109ae87989601298b2fc56ae3c3161
PREFIX "${CMAKE_BINARY_DIR}"
STAMP_DIR "${CMAKE_BINARY_DIR}/stamp"
DOWNLOAD_DIR "${CMAKE_BINARY_DIR}/download"
diff --git a/src/external/rawspeed/cmake/compiler-warnings-gcc.cmake b/src/external/rawspeed/cmake/compiler-warnings-gcc.cmake
index ebe3ef9a6..c89ce0ba6 100644
--- a/src/external/rawspeed/cmake/compiler-warnings-gcc.cmake
+++ b/src/external/rawspeed/cmake/compiler-warnings-gcc.cmake
@@ -12,17 +12,17 @@ set (GCC_WARNING_FLAGS
"extra"
"extra-semi"
"format=2"
- "missing-prototypes"
+# "missing-prototypes"
"old-style-casts"
"pointer-arith"
- "strict-prototypes"
+# "strict-prototypes"
# "suggest-attribute=const"
# "suggest-attribute=noreturn"
# "suggest-attribute=pure"
# "suggest-final-methods"
# "suggest-final-types"
# "suggest-override"
- "traditional"
+# "traditional"
"vla"
# "cast-align"
# "conversion"
diff --git a/src/external/rawspeed/data/cameras.xml b/src/external/rawspeed/data/cameras.xml
index cf850f1d6..6f168e661 100644
--- a/src/external/rawspeed/data/cameras.xml
+++ b/src/external/rawspeed/data/cameras.xml
@@ -3278,6 +3278,28 @@
<Crop x="0" y="0" width="0" height="0"/>
<Sensor black="600" white="15520"/>
</Camera>
+ <Camera make="NIKON CORPORATION" model="NIKON D780" mode="12bit-compressed">
+ <ID make="Nikon" model="D780">Nikon D780</ID>
+ <CFA width="2" height="2">
+ <Color x="0" y="0">RED</Color>
+ <Color x="1" y="0">GREEN</Color>
+ <Color x="0" y="1">GREEN</Color>
+ <Color x="1" y="1">BLUE</Color>
+ </CFA>
+ <Crop x="0" y="0" width="0" height="0"/>
+ <Sensor black="251" white="3880"/>
+ </Camera>
+ <Camera make="NIKON CORPORATION" model="NIKON D780" mode="14bit-compressed">
+ <ID make="Nikon" model="D780">Nikon D780</ID>
+ <CFA width="2" height="2">
+ <Color x="0" y="0">RED</Color>
+ <Color x="1" y="0">GREEN</Color>
+ <Color x="0" y="1">GREEN</Color>
+ <Color x="1" y="1">BLUE</Color>
+ </CFA>
+ <Crop x="0" y="0" width="0" height="0"/>
+ <Sensor black="1008" white="15520"/>
+ </Camera>
<Camera make="NIKON CORPORATION" model="NIKON D7000" mode="14bit-compressed">
<ID make="Nikon" model="D7000">Nikon D7000</ID>
<CFA width="2" height="2">
@@ -4378,6 +4400,11 @@
<Crop x="8" y="8" width="-24" height="-8"/>
<Sensor black="248" white="4000"/>
</Camera>
+ <Camera make="OLYMPUS CORPORATION" model="E-PL10">
+ <ID make="Olympus" model="E-PL10">Olympus E-PL10</ID>
+ <Crop x="8" y="8" width="-24" height="-8"/>
+ <Sensor black="253" white="4000"/>
+ </Camera>
<Camera make="OLYMPUS IMAGING CORP." model="E-P5">
<ID make="Olympus" model="E-P5">Olympus E-P5</ID>
<Crop x="8" y="8" width="-24" height="-8"/>
@@ -5814,7 +5841,8 @@
<Alias>DMC-FZ40</Alias>
</Aliases>
</Camera>
- <Camera make="Panasonic" model = "DMC-FZ45" mode = "4:3">
+ <Camera make="Panasonic" model="DMC-FZ45" mode="4:3">
+ <ID make="Panasonic" model="DMC-FZ45">Panasonic DMC-FZ40</ID>
<CFA width="2" height="2">
<Color x="0" y="0">GREEN</Color>
<Color x="1" y="0">BLUE</Color>
@@ -5827,6 +5855,48 @@
<Alias>DMC-FZ40</Alias>
</Aliases>
</Camera>
+ <Camera make="Panasonic" model="DMC-FZ45" mode="1:1">
+ <ID make="Panasonic" model="DMC-FZ45">Panasonic DMC-FZ40</ID>
+ <CFA width="2" height="2">
+ <Color x="0" y="0">GREEN</Color>
+ <Color x="1" y="0">BLUE</Color>
+ <Color x="0" y="1">RED</Color>
+ <Color x="1" y="1">GREEN</Color>
+ </CFA>
+ <Crop x="0" y="0" width="-30" height="0"/>
+ <Sensor black="143" white="3986"/>
+ <Aliases>
+ <Alias>DMC-FZ40</Alias>
+ </Aliases>
+ </Camera>
+ <Camera make="Panasonic" model="DMC-FZ45" mode="3:2">
+ <ID make="Panasonic" model="DMC-FZ45">Panasonic DMC-FZ40</ID>
+ <CFA width="2" height="2">
+ <Color x="0" y="0">GREEN</Color>
+ <Color x="1" y="0">BLUE</Color>
+ <Color x="0" y="1">RED</Color>
+ <Color x="1" y="1">GREEN</Color>
+ </CFA>
+ <Crop x="0" y="0" width="-58" height="0"/>
+ <Sensor black="143" white="3986"/>
+ <Aliases>
+ <Alias>DMC-FZ40</Alias>
+ </Aliases>
+ </Camera>
+ <Camera make="Panasonic" model="DMC-FZ45" mode="16:9">
+ <ID make="Panasonic" model="DMC-FZ45">Panasonic DMC-FZ40</ID>
+ <CFA width="2" height="2">
+ <Color x="0" y="0">GREEN</Color>
+ <Color x="1" y="0">BLUE</Color>
+ <Color x="0" y="1">RED</Color>
+ <Color x="1" y="1">GREEN</Color>
+ </CFA>
+ <Crop x="0" y="0" width="-60" height="0"/>
+ <Sensor black="143" white="3986"/>
+ <Aliases>
+ <Alias>DMC-FZ40</Alias>
+ </Aliases>
+ </Camera>
<Camera make="Panasonic" model = "DMC-FZ70">
<ID make="Panasonic" model="DMC-FZ70">Panasonic DMC-FZ70</ID>
<CFA width="2" height="2">
@@ -5974,6 +6044,28 @@
<Crop x="0" y="0" width="0" height="0"/>
<Sensor black="143" white="4095"/>
</Camera>
+ <Camera make="Panasonic" model="DC-FZ10002">
+ <ID make="Panasonic" model="DC-FZ10002">Panasonic DC-FZ1000M2</ID>
+ <CFA width="2" height="2">
+ <Color x="0" y="0">GREEN</Color>
+ <Color x="1" y="0">BLUE</Color>
+ <Color x="0" y="1">RED</Color>
+ <Color x="1" y="1">GREEN</Color>
+ </CFA>
+ <Crop x="0" y="0" width="0" height="0"/>
+ <Sensor black="143" white="4095"/>
+ </Camera>
+ <Camera make="Panasonic" model="DC-FZ10002" mode="3:2">
+ <ID make="Panasonic" model="DC-FZ10002">Panasonic DC-FZ1000M2</ID>
+ <CFA width="2" height="2">
+ <Color x="0" y="0">GREEN</Color>
+ <Color x="1" y="0">BLUE</Color>
+ <Color x="0" y="1">RED</Color>
+ <Color x="1" y="1">GREEN</Color>
+ </CFA>
+ <Crop x="0" y="0" width="0" height="0"/>
+ <Sensor black="143" white="4095"/>
+ </Camera>
<Camera make="Panasonic" model = "DMC-GX1">
<ID make="Panasonic" model="DMC-GX1">Panasonic DMC-GX1</ID>
<CFA width="2" height="2">
@@ -7124,6 +7216,28 @@
<Crop x="0" y="0" width="-50" height="0"/>
<Sensor black="511" white="16380"/>
</Camera>
+ <Camera make="Panasonic" model="DC-S1H">
+ <ID make="Panasonic" model="DC-S1H">Panasonic DC-S1H</ID>
+ <CFA width="2" height="2">
+ <Color x="0" y="0">RED</Color>
+ <Color x="1" y="0">GREEN</Color>
+ <Color x="0" y="1">GREEN</Color>
+ <Color x="1" y="1">BLUE</Color>
+ </CFA>
+ <Crop x="0" y="0" width="-50" height="0"/>
+ <Sensor black="510" white="16380"/>
+ </Camera>
+ <Camera make="Panasonic" model="DC-S1H" mode="3:2">
+ <ID make="Panasonic" model="DC-S1H">Panasonic DC-S1H</ID>
+ <CFA width="2" height="2">
+ <Color x="0" y="0">RED</Color>
+ <Color x="1" y="0">GREEN</Color>
+ <Color x="0" y="1">GREEN</Color>
+ <Color x="1" y="1">BLUE</Color>
+ </CFA>
+ <Crop x="0" y="0" width="-50" height="0"/>
+ <Sensor black="510" white="16380"/>
+ </Camera>
<Camera make="Panasonic" model="DC-S1R">
<ID make="Panasonic" model="DC-S1R">Panasonic DC-S1R</ID>
<CFA width="2" height="2">
@@ -7602,6 +7716,28 @@
<Alias>DC-GX850</Alias>
</Aliases>
</Camera>
+ <Camera make="Panasonic" model="DC-GX880">
+ <ID make="Panasonic" model="DC-GX880">Panasonic DC-GX880</ID>
+ <CFA width="2" height="2">
+ <Color x="0" y="0">BLUE</Color>
+ <Color x="1" y="0">GREEN</Color>
+ <Color x="0" y="1">GREEN</Color>
+ <Color x="1" y="1">RED</Color>
+ </CFA>
+ <Crop x="0" y="0" width="-210" height="0"/>
+ <Sensor black="143" white="4095"/>
+ </Camera>
+ <Camera make="Panasonic" model="DC-GX880" mode="4:3">
+ <ID make="Panasonic" model="DC-GX880">Panasonic DC-GX880</ID>
+ <CFA width="2" height="2">
+ <Color x="0" y="0">BLUE</Color>
+ <Color x="1" y="0">GREEN</Color>
+ <Color x="0" y="1">GREEN</Color>
+ <Color x="1" y="1">RED</Color>
+ </CFA>
+ <Crop x="0" y="0" width="-210" height="0"/>
+ <Sensor black="143" white="4095"/>
+ </Camera>
<Camera make="Panasonic" model="DC-GX9">
<ID make="Panasonic" model="DC-GX9">Panasonic DC-GX9</ID>
<CFA width="2" height="2">
@@ -9054,6 +9190,17 @@
<Crop x="0" y="0" width="0" height="0"/>
<Sensor black="512" white="16383"/>
</Camera>
+ <Camera make="SONY" model="ILCE-9M2">
+ <ID make="Sony" model="ILCE-9M2">Sony ILCE-9M2</ID>
+ <CFA width="2" height="2">
+ <Color x="0" y="0">RED</Color>
+ <Color x="1" y="0">GREEN</Color>
+ <Color x="0" y="1">GREEN</Color>
+ <Color x="1" y="1">BLUE</Color>
+ </CFA>
+ <Crop x="0" y="0" width="0" height="0"/>
+ <Sensor black="512" white="16380"/>
+ </Camera>
<Camera make="SONY" model="DSC-RX1">
<ID make="Sony" model="DSC-RX1">Sony DSC-RX1</ID>
<CFA width="2" height="2">
@@ -9220,6 +9367,20 @@
<Crop x="0" y="0" width="0" height="0"/>
<Sensor black="0" white="0"/>
</Camera>
+ <Camera make="FUJIFILM" model="FinePix S1">
+ <ID make="Fujifilm" model="FinePix S1">Fujifilm FinePix S1</ID>
+ <CFA width="2" height="2">
+ <Color x="0" y="0">RED</Color>
+ <Color x="1" y="0">GREEN</Color>
+ <Color x="0" y="1">GREEN</Color>
+ <Color x="1" y="1">BLUE</Color>
+ </CFA>
+ <Crop x="0" y="0" width="0" height="0"/>
+ <Sensor black="200" white="4095"/>
+ <Hints>
+ <Hint name="jpeg32_bitorder" value=""/>
+ </Hints>
+ </Camera>
<Camera make="FUJIFILM" model="FinePix S6000fd">
<ID make="Fujifilm" model="FinePix S6000fd">Fujifilm FinePix S6000fd</ID>
<CFA2 width="2" height="2">
@@ -10093,6 +10254,32 @@
<Crop x="0" y="8" width="-134" height="-6"/>
<Sensor black="1022" white="16383"/>
</Camera>
+ <Camera make="FUJIFILM" model="X-T4">
+ <ID make="Fujifilm" model="X-T4">Fujifilm X-T4</ID>
+ <CFA2 width="6" height="6">
+ <ColorRow y="0">GGRGGB</ColorRow>
+ <ColorRow y="1">GGBGGR</ColorRow>
+ <ColorRow y="2">BRGRBG</ColorRow>
+ <ColorRow y="3">GGBGGR</ColorRow>
+ <ColorRow y="4">GGRGGB</ColorRow>
+ <ColorRow y="5">RBGBRG</ColorRow>
+ </CFA2>
+ <Crop x="0" y="6" width="-132" height="0"/>
+ <Sensor black="1022" white="16383"/>
+ </Camera>
+ <Camera make="FUJIFILM" model="X-T4" mode="compressed">
+ <ID make="Fujifilm" model="X-T4">Fujifilm X-T4</ID>
+ <CFA2 width="6" height="6">
+ <ColorRow y="0">GGRGGB</ColorRow>
+ <ColorRow y="1">GGBGGR</ColorRow>
+ <ColorRow y="2">BRGRBG</ColorRow>
+ <ColorRow y="3">GGBGGR</ColorRow>
+ <ColorRow y="4">GGRGGB</ColorRow>
+ <ColorRow y="5">RBGBRG</ColorRow>
+ </CFA2>
+ <Crop x="0" y="6" width="-132" height="0"/>
+ <Sensor black="1022" white="16383"/>
+ </Camera>
<Camera make="FUJIFILM" model="X-T10">
<ID make="Fujifilm" model="X-T10">Fujifilm X-T10</ID>
<CFA2 width="6" height="6">
@@ -10172,6 +10359,20 @@
<Hint name="jpeg32_bitorder" value=""/>
</Hints>
</Camera>
+ <Camera make="FUJIFILM" model="X-T200">
+ <ID make="Fujifilm" model="X-T200">Fujifilm X-T200</ID>
+ <CFA width="2" height="2">
+ <Color x="0" y="0">RED</Color>
+ <Color x="1" y="0">GREEN</Color>
+ <Color x="0" y="1">GREEN</Color>
+ <Color x="1" y="1">BLUE</Color>
+ </CFA>
+ <Crop x="0" y="0" width="0" height="0"/>
+ <Sensor black="1024" white="16383"/>
+ <Hints>
+ <Hint name="jpeg32_bitorder" value=""/>
+ </Hints>
+ </Camera>
<Camera make="KONICA MINOLTA" model="DYNAX 5D">
<ID make="Minolta" model="Dynax 5D">Konica Minolta Maxxum 5D</ID>
<CFA width="2" height="2">
@@ -10741,6 +10942,17 @@
<Crop x="10" y="6" width="-8" height="-10"/>
<Sensor black="0" white="31456"/>
</Camera>
+ <Camera make="Hasselblad" model="Hasselblad H4D-50">
+ <ID make="Hasselblad" model="H4D-50">Hasselblad 50-Coated</ID>
+ <CFA width="2" height="2">
+ <Color x="0" y="0">RED</Color>
+ <Color x="1" y="0">GREEN</Color>
+ <Color x="0" y="1">GREEN</Color>
+ <Color x="1" y="1">BLUE</Color>
+ </CFA>
+ <Crop x="44" y="6" width="-44" height="-86"/>
+ <Sensor black="256" white="32767"/>
+ </Camera>
<Camera make="Hasselblad" model="Hasselblad H5D-40">
<ID make="Hasselblad" model="H5D-40">Hasselblad 40-Coated5</ID>
<CFA width="2" height="2">
@@ -10774,6 +10986,20 @@
<Crop x="0" y="0" width="0" height="0"/>
<Sensor black="0" white="62914"/>
</Camera>
+ <Camera make="Hasselblad" model="Hasselblad X1DM2-50c">
+ <ID make="Hasselblad" model="X1DM2-50c">Hasselblad 50-15-Coated5</ID>
+ <CFA width="2" height="2">
+ <Color x="0" y="0">RED</Color>
+ <Color x="1" y="0">GREEN</Color>
+ <Color x="0" y="1">GREEN</Color>
+ <Color x="1" y="1">BLUE</Color>
+ </CFA>
+ <Crop x="48" y="104" width="-60" height="0"/>
+ <Sensor black="256" white="62914"/>
+ <Aliases>
+ <Alias id="X1D II 50C">Hasselblad X1D II 50C</Alias>
+ </Aliases>
+ </Camera>
<Camera make="RICOH IMAGING COMPANY, LTD." model="PENTAX 645Z" mode="dng">
<ID make="Pentax" model="645Z">PENTAX 645Z</ID>
</Camera>
diff --git a/src/external/rawspeed/fuzz/librawspeed/decoders/TiffDecoders/CMakeLists.txt b/src/external/rawspeed/fuzz/librawspeed/decoders/TiffDecoders/CMakeLists.txt
index c3d7680c5..54122ff0b 100644
--- a/src/external/rawspeed/fuzz/librawspeed/decoders/TiffDecoders/CMakeLists.txt
+++ b/src/external/rawspeed/fuzz/librawspeed/decoders/TiffDecoders/CMakeLists.txt
@@ -35,6 +35,6 @@ set(DECODERS
"ThreefrDecoder"
)
-foreach(decoder IN LISTS DECODERS)
+foreach(decoder ${DECODERS})
add_decoder(${decoder})
endforeach()
diff --git a/src/external/rawspeed/fuzz/librawspeed/decompressors/CMakeLists.txt b/src/external/rawspeed/fuzz/librawspeed/decompressors/CMakeLists.txt
index 2313660ba..505d6e036 100644
--- a/src/external/rawspeed/fuzz/librawspeed/decompressors/CMakeLists.txt
+++ b/src/external/rawspeed/fuzz/librawspeed/decompressors/CMakeLists.txt
@@ -32,6 +32,6 @@ set(DECOMPRESSORS
"VC5Decompressor"
)
-foreach(decompressor IN LISTS DECOMPRESSORS)
+foreach(decompressor ${DECOMPRESSORS})
add_simple_fuzzer(${decompressor})
endforeach()
diff --git a/src/external/rawspeed/fuzz/librawspeed/decompressors/HuffmanTable/CMakeLists.txt b/src/external/rawspeed/fuzz/librawspeed/decompressors/HuffmanTable/CMakeLists.txt
index a99649d35..5ce1a9f63 100644
--- a/src/external/rawspeed/fuzz/librawspeed/decompressors/HuffmanTable/CMakeLists.txt
+++ b/src/external/rawspeed/fuzz/librawspeed/decompressors/HuffmanTable/CMakeLists.txt
@@ -41,17 +41,17 @@ set(IMPL "LUT" "Lookup" "Tree" "Vector")
set(PUMPS "BitPumpMSB" "BitPumpMSB32" "BitPumpJPEG")
set(DECODE "FullDecode" "NoFullDecode")
-foreach(impl IN LISTS IMPL)
- foreach(pump IN LISTS PUMPS)
- foreach(decode IN LISTS DECODE)
+foreach(impl ${IMPL})
+ foreach(pump ${PUMPS})
+ foreach(decode ${DECODE})
add_ht_solo_fuzzer(${impl} ${pump} ${decode})
endforeach()
endforeach()
endforeach()
set(ALL_UNIQUE_IMPL_PAIRS)
-foreach(impl0 IN LISTS IMPL)
- foreach(impl1 IN LISTS IMPL)
+foreach(impl0 ${IMPL})
+ foreach(impl1 ${IMPL})
if("${impl0}" STREQUAL "${impl1}")
continue()
endif()
@@ -64,9 +64,9 @@ endforeach()
list(REMOVE_DUPLICATES ALL_UNIQUE_IMPL_PAIRS)
-foreach(pump IN LISTS PUMPS)
- foreach(decode IN LISTS DECODE)
- foreach(impl IN LISTS ALL_UNIQUE_IMPL_PAIRS)
+foreach(pump ${PUMPS})
+ foreach(decode ${DECODE})
+ foreach(impl ${ALL_UNIQUE_IMPL_PAIRS})
string(REPLACE "|" ";" impl "${impl}")
list(GET impl 0 impl0)
list(GET impl 1 impl1)
diff --git a/src/external/rawspeed/fuzz/librawspeed/parsers/CMakeLists.txt b/src/external/rawspeed/fuzz/librawspeed/parsers/CMakeLists.txt
index 72c8f0a7c..4ffae2a48 100644
--- a/src/external/rawspeed/fuzz/librawspeed/parsers/CMakeLists.txt
+++ b/src/external/rawspeed/fuzz/librawspeed/parsers/CMakeLists.txt
@@ -23,7 +23,7 @@ set(PARSERS
"Tiff"
)
-foreach(parser IN LISTS PARSERS)
+foreach(parser ${PARSERS})
set(parser "${parser}Parser")
# add_parser_fuzzer(${parser} "" false false)
add_parser_fuzzer(${parser} "-GetDecoder" true false)
diff --git a/src/external/rawspeed/src/librawspeed/common/Common.h b/src/external/rawspeed/src/librawspeed/common/Common.h
index c49127be5..7ef4386ce 100644
--- a/src/external/rawspeed/src/librawspeed/common/Common.h
+++ b/src/external/rawspeed/src/librawspeed/common/Common.h
@@ -110,10 +110,8 @@ inline constexpr __attribute__((const)) bool isAligned(
template <typename T, typename T2>
bool __attribute__((pure))
isIn(const T value, const std::initializer_list<T2>& list) {
- for (auto t : list)
- if (t == value)
- return true;
- return false;
+ return std::any_of(list.begin(), list.end(),
+ [value](const T2& t) { return t == value; });
}
template <class T> inline constexpr unsigned bitwidth(T unused = {}) {
diff --git a/src/external/rawspeed/src/librawspeed/decoders/ThreefrDecoder.cpp b/src/external/rawspeed/src/librawspeed/decoders/ThreefrDecoder.cpp
index 5aa27fdbc..bb68b4c21 100644
--- a/src/external/rawspeed/src/librawspeed/decoders/ThreefrDecoder.cpp
+++ b/src/external/rawspeed/src/librawspeed/decoders/ThreefrDecoder.cpp
@@ -75,6 +75,18 @@ void ThreefrDecoder::decodeMetaDataInternal(const CameraMetaData* meta) {
setMetaData(meta, "", 0);
+ if (mRootIFD->hasEntryRecursive(BLACKLEVEL)) {
+ TiffEntry* bl = mRootIFD->getEntryRecursive(BLACKLEVEL);
+ if (bl->count == 1)
+ mRaw->blackLevel = bl->getFloat();
+ }
+
+ if (mRootIFD->hasEntryRecursive(WHITELEVEL)) {
+ TiffEntry* wl = mRootIFD->getEntryRecursive(WHITELEVEL);
+ if (wl->count == 1)
+ mRaw->whitePoint = wl->getFloat();
+ }
+
// Fetch the white balance
if (mRootIFD->hasEntryRecursive(ASSHOTNEUTRAL)) {
TiffEntry *wb = mRootIFD->getEntryRecursive(ASSHOTNEUTRAL);
diff --git a/src/external/rawspeed/src/librawspeed/decompressors/FujiDecompressor.cpp b/src/external/rawspeed/src/librawspeed/decompressors/FujiDecompressor.cpp
index 07ea2ef74..ab569cdcf 100644
--- a/src/external/rawspeed/src/librawspeed/decompressors/FujiDecompressor.cpp
+++ b/src/external/rawspeed/src/librawspeed/decompressors/FujiDecompressor.cpp
@@ -87,7 +87,6 @@ FujiDecompressor::fuji_compressed_params::fuji_compressed_params(
ThrowRDE("fuji_block_checks");
}
- q_table.resize(32768);
if (d.header.raw_type == 16) {
line_width = (d.header.block_size * 2) / 3;
@@ -103,6 +102,7 @@ FujiDecompressor::fuji_compressed_params::fuji_compressed_params(
min_value = 0x40;
cur_val = -q_point[4];
+ q_table.resize(2 * (1 << d.header.raw_bits));
for (qt = &q_table[0]; cur_val <= q_point[4]; ++qt, ++cur_val) {
if (cur_val <= -q_point[3]) {
@@ -127,7 +127,12 @@ FujiDecompressor::fuji_compressed_params::fuji_compressed_params(
}
// populting gradients
- if (q_point[4] == 0x3FFF) {
+ if (q_point[4] == 0xFFFF) { // (1 << d.header.raw_bits) - 1
+ total_values = 0x10000; // 1 << d.header.raw_bits
+ raw_bits = 16; // d.header.raw_bits
+ max_bits = 64; // d.header.raw_bits * (64 / d.header.raw_bits)
+ maxDiff = 1024; // 1 << (d.header.raw_bits - 6)
+ } else if (q_point[4] == 0x3FFF) {
total_values = 0x4000;
raw_bits = 14;
max_bits = 56;
@@ -139,7 +144,7 @@ FujiDecompressor::fuji_compressed_params::fuji_compressed_params(
/* kept for future, once there is a sample.
total_values = 4096;
raw_bits = 12;
- max_bits = 48;
+ max_bits = 48; // out-of-family, there's greater pattern at play.
maxDiff = 64;
*/
} else {
@@ -238,16 +243,20 @@ void FujiDecompressor::copy_line_to_bayer(fuji_compressed_block* info,
}
inline void FujiDecompressor::fuji_zerobits(BitPumpMSB* pump, int* count) {
- uint8_t zero = 0;
*count = 0;
- while (zero == 0) {
- zero = pump->getBits(1);
-
- if (zero)
- break;
-
- ++*count;
+ // Count-and-skip all the leading `0`s.
+ while (true) {
+ uint32_t batch = (pump->peekBits(31) << 1) | 0b1;
+ int numZerosInThisBatch = __builtin_clz(batch);
+ *count += numZerosInThisBatch;
+ bool allZeroes = numZerosInThisBatch == 31;
+ int numBitsToSkip = numZerosInThisBatch;
+ if (!allZeroes)
+ numBitsToSkip += 1; // Also skip the first `1`.
+ pump->skipBitsNoFill(numBitsToSkip);
+ if (!allZeroes)
+ break; // We're done!
}
}
@@ -817,7 +826,8 @@ FujiDecompressor::FujiHeader::operator bool() const {
blocks_in_row != roundUpDivision(raw_width, block_size) ||
total_lines > 0x800 || total_lines == 0 ||
total_lines != raw_height / FujiStrip::lineHeight() ||
- (raw_bits != 12 && raw_bits != 14) || (raw_type != 16 && raw_type != 0));
+ (raw_bits != 12 && raw_bits != 14 && raw_bits != 16) ||
+ (raw_type != 16 && raw_type != 0));
return !invalid;
}
diff --git a/src/external/rawspeed/src/librawspeed/decompressors/HuffmanTableLUT.h b/src/external/rawspeed/src/librawspeed/decompressors/HuffmanTableLUT.h
index 43c71fdea..5c6c8b5e3 100644
--- a/src/external/rawspeed/src/librawspeed/decompressors/HuffmanTableLUT.h
+++ b/src/external/rawspeed/src/librawspeed/decompressors/HuffmanTableLUT.h
@@ -114,7 +114,8 @@ public:
if (!(c < decodeLookup.size()))
ThrowRDE("Corrupt Huffman");
- if (!FlagMask || !fullDecode || diff_l + code_l > LookupDepth) {
+ if (!FlagMask || !fullDecode || code_l > LookupDepth ||
+ (code_l + diff_l > LookupDepth && diff_l != 16)) {
// lookup bit depth is too small to fit both the encoded length
// and the final difference value.
// -> store only the length and do a normal sign extension later
@@ -124,15 +125,19 @@ public:
if (!fullDecode)
decodeLookup[c] |= FlagMask;
} else {
- // diff_l + code_l <= lookupDepth
- // The table bit depth is large enough to store both.
- assert(diff_l != 16);
- decodeLookup[c] = (code_l + diff_l) | FlagMask;
+ // Lookup bit depth is sufficient to encode the final value.
+ decodeLookup[c] = FlagMask | code_l;
+ if (diff_l != 16 || fixDNGBug16)
+ decodeLookup[c] += diff_l;
if (diff_l) {
- uint32_t diff = extractHighBits(c, code_l + diff_l,
- /*effectiveBitwidth=*/LookupDepth);
- diff &= ((1 << diff_l) - 1);
+ uint32_t diff;
+ if (diff_l != 16) {
+ diff = extractHighBits(c, code_l + diff_l,
+ /*effectiveBitwidth=*/LookupDepth);
+ diff &= ((1 << diff_l) - 1);
+ } else
+ diff = uint32_t(-32768);
decodeLookup[c] |= static_cast<int32_t>(
static_cast<uint32_t>(extend(diff, diff_l)) << PayloadShift);
}
diff --git a/src/external/rawspeed/src/librawspeed/decompressors/VC5Decompressor.cpp b/src/external/rawspeed/src/librawspeed/decompressors/VC5Decompressor.cpp
index 9977b44e2..b6d26f4c6 100644
--- a/src/external/rawspeed/src/librawspeed/decompressors/VC5Decompressor.cpp
+++ b/src/external/rawspeed/src/librawspeed/decompressors/VC5Decompressor.cpp
@@ -74,7 +74,7 @@ constexpr int16_t decompand(int16_t val) {
}
#ifndef NDEBUG
-int ignore = []() {
+const int ignore = []() {
for (const RLV& entry : table17.entries) {
assert(((-decompand(entry.value)) == decompand(-int16_t(entry.value))) &&
"negation of decompanded value is the same as decompanding of "
@@ -120,9 +120,9 @@ VC5Decompressor::Wavelet::bandAsArray2DRef(const unsigned int iBand) const {
}
namespace {
-auto convolute = [](int row, int col, std::array<int, 4> muls,
- const Array2DRef<const int16_t> high, auto lowGetter,
- int DescaleShift = 0) {
+const auto convolute = [](int row, int col, std::array<int, 4> muls,
+ const Array2DRef<const int16_t> high, auto lowGetter,
+ int DescaleShift = 0) {
auto highCombined = muls[0] * high(row, col);
auto lowsCombined = [muls, lowGetter]() {
int lows = 0;
diff --git a/src/external/rawspeed/src/librawspeed/tiff/CiffIFD.cpp b/src/external/rawspeed/src/librawspeed/tiff/CiffIFD.cpp
index d78a6e044..8eec652ce 100644
--- a/src/external/rawspeed/src/librawspeed/tiff/CiffIFD.cpp
+++ b/src/external/rawspeed/src/librawspeed/tiff/CiffIFD.cpp
@@ -243,12 +243,10 @@ bool __attribute__((pure)) CiffIFD::hasEntryRecursive(CiffTag tag) const {
if (mEntry.count(tag) > 0)
return true;
- for (const auto& i : mSubIFD) {
- if (i->hasEntryRecursive(tag))
- return true;
- }
-
- return false;
+ return std::any_of(mSubIFD.begin(), mSubIFD.end(),
+ [tag](const std::unique_ptr<const CiffIFD>& i) {
+ return i->hasEntryRecursive(tag);
+ });
}
const CiffEntry* CiffIFD::getEntry(CiffTag tag) const {
diff --git a/src/external/rawspeed/test/librawspeed/common/CMakeLists.txt b/src/external/rawspeed/test/librawspeed/common/CMakeLists.txt
index 2352c0165..0144d4fcf 100644
--- a/src/external/rawspeed/test/librawspeed/common/CMakeLists.txt
+++ b/src/external/rawspeed/test/librawspeed/common/CMakeLists.txt
@@ -9,6 +9,6 @@ FILE(GLOB RAWSPEED_TEST_SOURCES
"SplineTest.cpp"
)
-foreach(IN ${RAWSPEED_TEST_SOURCES})
- add_rs_test(${IN})
+foreach(SRC ${RAWSPEED_TEST_SOURCES})
+ add_rs_test("${SRC}")
endforeach()
diff --git a/src/external/rawspeed/test/librawspeed/decompressors/CMakeLists.txt b/src/external/rawspeed/test/librawspeed/decompressors/CMakeLists.txt
index 7d4a5cfdf..c4d3a0c5c 100644
--- a/src/external/rawspeed/test/librawspeed/decompressors/CMakeLists.txt
+++ b/src/external/rawspeed/test/librawspeed/decompressors/CMakeLists.txt
@@ -4,6 +4,6 @@ FILE(GLOB RAWSPEED_TEST_SOURCES
"HuffmanTableTest.cpp"
)
-foreach(IN ${RAWSPEED_TEST_SOURCES})
- add_rs_test(${IN})
+foreach(SRC ${RAWSPEED_TEST_SOURCES})
+ add_rs_test("${SRC}")
endforeach()
diff --git a/src/external/rawspeed/test/librawspeed/io/CMakeLists.txt b/src/external/rawspeed/test/librawspeed/io/CMakeLists.txt
index 480ddc4ec..bf24799ed 100644
--- a/src/external/rawspeed/test/librawspeed/io/CMakeLists.txt
+++ b/src/external/rawspeed/test/librawspeed/io/CMakeLists.txt
@@ -7,6 +7,6 @@ FILE(GLOB RAWSPEED_TEST_SOURCES
"EndiannessTest.cpp"
)
-foreach(IN ${RAWSPEED_TEST_SOURCES})
- add_rs_test(${IN})
+foreach(SRC ${RAWSPEED_TEST_SOURCES})
+ add_rs_test("${SRC}")
endforeach()
diff --git a/src/external/rawspeed/test/librawspeed/metadata/CMakeLists.txt b/src/external/rawspeed/test/librawspeed/metadata/CMakeLists.txt
index 7895ad08d..bb9f68756 100644
--- a/src/external/rawspeed/test/librawspeed/metadata/CMakeLists.txt
+++ b/src/external/rawspeed/test/librawspeed/metadata/CMakeLists.txt
@@ -6,6 +6,6 @@ FILE(GLOB RAWSPEED_TEST_SOURCES
"ColorFilterArrayTest.cpp"
)
-foreach(IN ${RAWSPEED_TEST_SOURCES})
- add_rs_test(${IN})
+foreach(SRC ${RAWSPEED_TEST_SOURCES})
+ add_rs_test("${SRC}")
endforeach()
diff --git a/src/external/rawspeed/test/librawspeed/test/CMakeLists.txt b/src/external/rawspeed/test/librawspeed/test/CMakeLists.txt
index ae0af0fd0..1f564ad47 100644
--- a/src/external/rawspeed/test/librawspeed/test/CMakeLists.txt
+++ b/src/external/rawspeed/test/librawspeed/test/CMakeLists.txt
@@ -10,6 +10,6 @@ FILE(GLOB RAWSPEED_TESTS_SOURCES
"ExceptionsTest.cpp"
)
-foreach(IN ${RAWSPEED_TESTS_SOURCES})
- add_rs_test(${IN})
+foreach(SRC ${RAWSPEED_TEST_SOURCES})
+ add_rs_test("${SRC}")
endforeach()
diff --git a/src/gui/gtk.c b/src/gui/gtk.c
index 0d15632e9..a5fbe1404 100644
--- a/src/gui/gtk.c
+++ b/src/gui/gtk.c
@@ -1390,11 +1390,6 @@ int dt_gui_gtk_init(dt_gui_gtk_t *gui)
dt_accel_connect_global("toggle focus peaking",
g_cclosure_new(G_CALLBACK(_focuspeaking_switch_key_accel_callback), NULL, NULL));
- // toggle focus peaking everywhere
- dt_accel_register_global(NC_("accel", "toggle focus peaking"), GDK_KEY_f, GDK_CONTROL_MASK | GDK_SHIFT_MASK);
- dt_accel_connect_global("toggle focus peaking",
- g_cclosure_new(G_CALLBACK(_focuspeaking_switch_key_accel_callback), NULL, NULL));
-
// View-switch
dt_accel_register_global(NC_("accel", "switch view"), GDK_KEY_period, 0);
diff --git a/src/iop/clipping.c b/src/iop/clipping.c
index 48f9a49aa..6afd2f7b2 100644
--- a/src/iop/clipping.c
+++ b/src/iop/clipping.c
@@ -1825,33 +1825,6 @@ void gui_changed(dt_iop_module_t *self, GtkWidget *w, void *previous)
if(w == g->crop_auto) dt_control_queue_redraw_center();
}
-static void cxywh_callback(GtkWidget *slider, dt_iop_module_t *self)
-{
- dt_iop_clipping_gui_data_t *g = (dt_iop_clipping_gui_data_t *)self->gui_data;
- dt_iop_clipping_params_t *p = (dt_iop_clipping_params_t *)self->params;
-
- const int reset = darktable.gui->reset;
- darktable.gui->reset = 1;
-
- p->cx = dt_bauhaus_slider_get(g->cx) / 100;
- dt_bauhaus_slider_set_soft_max(g->cw, 100 - p->cx * 100);
- p->cw = (100 - dt_bauhaus_slider_get(g->cw)) / 100;
- dt_bauhaus_slider_set_soft_max(g->cx, p->cw * 100);
- p->cy = dt_bauhaus_slider_get(g->cy) / 100;
- dt_bauhaus_slider_set_soft_max(g->ch, 100 - p->cy * 100);
- p->ch = (100 - dt_bauhaus_slider_get(g->ch)) / 100;
- dt_bauhaus_slider_set_soft_max(g->cy, p->ch * 100);
-
- darktable.gui->reset = reset;
-
- g->clip_x = p->cx;
- g->clip_w = fabsf(p->cw) - p->cx;
- g->clip_y = p->cy;
- g->clip_h = fabsf(p->ch) - p->cy;
-
- commit_box(self, g, p);
-}
-
void gui_reset(struct dt_iop_module_t *self)
{
dt_iop_clipping_gui_data_t *g = (dt_iop_clipping_gui_data_t *)self->gui_data;
diff --git a/src/iop/lut3d.c b/src/iop/lut3d.c
index 68b8a68ce..04b1779d8 100644
--- a/src/iop/lut3d.c
+++ b/src/iop/lut3d.c
@@ -1420,7 +1420,6 @@ static void filepath_callback(GtkWidget *widget, dt_iop_module_t *self)
dt_dev_add_history_item(darktable.develop, self, TRUE);
}
}
-#endif // HAVE_GMIC
#ifdef HAVE_GMIC
static void entry_callback(GtkEntry *entry, dt_iop_module_t *self)
diff --git a/src/libs/histogram.c b/src/libs/histogram.c
index 7cd4fcb9a..2fca44f69 100644
--- a/src/libs/histogram.c
+++ b/src/libs/histogram.c
@@ -391,15 +391,8 @@ static gboolean _lib_histogram_draw_callback(GtkWidget *widget, cairo_t *crf, gp
cairo_surface_t *cst = dt_cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
cairo_t *cr = cairo_create(cst);
- dt_pthread_mutex_lock(&dev->preview_pipe_mutex);
-
- const int waveform_width = dev->histogram_waveform_width;
- const int waveform_height = dev->histogram_waveform_height;
- const gint waveform_stride = dev->histogram_waveform_stride;
- const size_t histsize = dev->histogram_type == DT_DEV_HISTOGRAM_WAVEFORM
- ? sizeof(uint8_t) * waveform_height * waveform_stride
- : 256 * 4 * sizeof(uint32_t); // histogram size is hardcoded :(
- void *buf = malloc(histsize);
+ gtk_render_background(gtk_widget_get_style_context(widget), cr, 0, 0, width, height);
+ cairo_set_line_width(cr, DT_PIXEL_APPLY_DPI(.5)); // borders width
// Draw frame and background
cairo_save(cr);
diff --git a/src/tests/integration/0000-nop/expected.png b/src/tests/integration/0000-nop/expected.png
deleted file mode 100644
index 2d5c642bc..000000000
--- a/src/tests/integration/0000-nop/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0000-nop/nop.xmp b/src/tests/integration/0000-nop/nop.xmp
deleted file mode 100644
index 68d37998a..000000000
--- a/src/tests/integration/0000-nop/nop.xmp
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:darktable="http://darktable.sf.net/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- exif:GPSVersionID="2.2.0.0"
- exif:GPSLongitude="3,3.045959E"
- exif:GPSLatitude="49,15.194321N"
- xmp:Rating="1"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="9"
- darktable:iop_order_version="1"
- darktable:history_current_hash="6c45eb6e84ea41801bb4a698e249c566">
- <dc:publisher>
- <rdf:Bag>
- <rdf:li>pascal@obry.net</rdf:li>
- </rdf:Bag>
- </dc:publisher>
- <dc:rights>
- <rdf:Alt>
- <rdf:li xml:lang="x-default">Creative Commons &#xA;Paternité&#xA;Partage des conditions initiales à l'identique (CC-BY-SA)</rdf:li>
- </rdf:Alt>
- </dc:rights>
- <darktable:masks_history>
- <rdf:Seq/>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="highlights"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="000000000000803f00000000000000000000803f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjYRgFowABWAbaAaNgwAEAPRQAEQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0001-exposure/expected.png b/src/tests/integration/0001-exposure/expected.png
deleted file mode 100644
index f04cf3a97..000000000
--- a/src/tests/integration/0001-exposure/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0001-exposure/exposure.xmp b/src/tests/integration/0001-exposure/exposure.xmp
deleted file mode 100644
index c80e281ed..000000000
--- a/src/tests/integration/0001-exposure/exposure.xmp
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:darktable="http://darktable.sf.net/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- exif:GPSVersionID="2.2.0.0"
- exif:GPSLongitude="3,3.045959E"
- exif:GPSLatitude="49,15.194321N"
- xmp:Rating="1"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="9"
- darktable:iop_order_version="1"
- darktable:history_current_hash="6c45eb6e84ea41801bb4a698e249c566">
- <dc:publisher>
- <rdf:Bag>
- <rdf:li>pascal@obry.net</rdf:li>
- </rdf:Bag>
- </dc:publisher>
- <dc:rights>
- <rdf:Alt>
- <rdf:li xml:lang="x-default">Creative Commons &#xA;Paternité&#xA;Partage des conditions initiales à l'identique (CC-BY-SA)</rdf:li>
- </rdf:Alt>
- </dc:rights>
- <darktable:masks_history>
- <rdf:Seq/>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="highlights"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="000000000000803f00000000000000000000803f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjYRgFowABWAbaAaNgwAEAPRQAEQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="8"
- darktable:operation="exposure"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="00000000000000000000803f00004842000080c0"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0002-local-contrast/expected.png b/src/tests/integration/0002-local-contrast/expected.png
deleted file mode 100644
index d914b478b..000000000
--- a/src/tests/integration/0002-local-contrast/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0002-local-contrast/local-contrast.xmp b/src/tests/integration/0002-local-contrast/local-contrast.xmp
deleted file mode 100644
index 09fbfbe13..000000000
--- a/src/tests/integration/0002-local-contrast/local-contrast.xmp
+++ /dev/null
@@ -1,141 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:darktable="http://darktable.sf.net/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- exif:GPSVersionID="2.2.0.0"
- exif:GPSLongitude="3,3.045959E"
- exif:GPSLatitude="49,15.194321N"
- xmp:Rating="1"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="10"
- darktable:iop_order_version="1"
- darktable:history_current_hash="0921e82bcc5dba5b5c815c5ba7732354">
- <dc:publisher>
- <rdf:Bag>
- <rdf:li>pascal@obry.net</rdf:li>
- </rdf:Bag>
- </dc:publisher>
- <dc:rights>
- <rdf:Alt>
- <rdf:li xml:lang="x-default">Creative Commons &#xA;Paternité&#xA;Partage des conditions initiales à l'identique (CC-BY-SA)</rdf:li>
- </rdf:Alt>
- </dc:rights>
- <darktable:masks_history>
- <rdf:Seq/>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="highlights"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="000000000000803f00000000000000000000803f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjYRgFowABWAbaAaNgwAEAPRQAEQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="8"
- darktable:operation="exposure"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="00000000000000000000803f00004842000080c0"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="9"
- darktable:operation="bilat"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="010000000000003f0000003f0000803e0000003f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0003-denoise-bilateral/denoise-bilateral.xmp b/src/tests/integration/0003-denoise-bilateral/denoise-bilateral.xmp
deleted file mode 100644
index b09b186f1..000000000
--- a/src/tests/integration/0003-denoise-bilateral/denoise-bilateral.xmp
+++ /dev/null
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:darktable="http://darktable.sf.net/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- exif:GPSVersionID="2.2.0.0"
- exif:GPSLongitude="3,3.045959E"
- exif:GPSLatitude="49,15.194321N"
- xmp:Rating="1"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="11"
- darktable:iop_order_version="1"
- darktable:history_current_hash="8139c1e8e461b47e98ba89820d764ad9">
- <dc:publisher>
- <rdf:Bag>
- <rdf:li>pascal@obry.net</rdf:li>
- </rdf:Bag>
- </dc:publisher>
- <dc:rights>
- <rdf:Alt>
- <rdf:li xml:lang="x-default">Creative Commons &#xA;Paternité&#xA;Partage des conditions initiales à l'identique (CC-BY-SA)</rdf:li>
- </rdf:Alt>
- </dc:rights>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="1"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="highlights"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="000000000000803f00000000000000000000803f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjYRgFowABWAbaAaNgwAEAPRQAEQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="8"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="9"
- darktable:operation="exposure"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="00000000000000000000803f00004842000080c0"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="10"
- darktable:operation="bilateral"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="00007041000070416991ed3c787aa53c0ad7a33b"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0003-denoise-bilateral/expected.png b/src/tests/integration/0003-denoise-bilateral/expected.png
deleted file mode 100644
index 53c583f17..000000000
--- a/src/tests/integration/0003-denoise-bilateral/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0004-masks/expected.png b/src/tests/integration/0004-masks/expected.png
deleted file mode 100644
index 995e8b134..000000000
--- a/src/tests/integration/0004-masks/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0004-masks/masks.xmp b/src/tests/integration/0004-masks/masks.xmp
deleted file mode 100644
index 9c98cb3e2..000000000
--- a/src/tests/integration/0004-masks/masks.xmp
+++ /dev/null
@@ -1,300 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:darktable="http://darktable.sf.net/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- xmp:Rating="1"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="10"
- darktable:iop_order_version="2"
- darktable:history_basic_hash="e3684b5b41364cd35d46ddcaadbc278a"
- darktable:history_current_hash="72273ba1bb362422fa09048f849950df">
- <darktable:masks_history>
- <rdf:Seq>
- <rdf:li
- darktable:mask_num="7"
- darktable:mask_id="1587888843"
- darktable:mask_type="1"
- darktable:mask_name="cercle #1"
- darktable:mask_version="6"
- darktable:mask_points="a2e1693fa5e1343ec525983db852ce3d"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="7"
- darktable:mask_id="1587888845"
- darktable:mask_type="4"
- darktable:mask_name="grp exposition"
- darktable:mask_version="6"
- darktable:mask_points="cb42a55ecd42a55e030000000000803fcf42a55ecd42a55e0b0000000000803fd342a55ecd42a55e0b0000000000803fed42a55ecd42a55e0b0000000000803fff42a55ecd42a55e0b0000000000803f"
- darktable:mask_nb="5"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="7"
- darktable:mask_id="1587888847"
- darktable:mask_type="32"
- darktable:mask_name="ellipse #1"
- darktable:mask_version="6"
- darktable:mask_points="6afe183e8c00b13ed5c8073e8a34813e803ef1bfb2cc4c3d00000000"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="7"
- darktable:mask_id="1587888851"
- darktable:mask_type="2"
- darktable:mask_name="chemin #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJzboP/VzrTgsG21/U+7/yfO2T6V/2iXI77DdvaLJjBmZGBgKApcbTd9r5Td0bfb7NZunG6rsHW+XeiiTDtkNYda19upHeWz99but3PM/m9n/eC83eorsvbIauR2mNk38zDaV240tXeVYrU/uM/cvvHvTxRziq7utrN8+sZOQeGGHac4i/2xrvl2iXMuoqjR33DY7vNxGzsVxV12a0qr7Sztz9qVmPxBcTMAHZdbbQ=="
- darktable:mask_nb="6"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="7"
- darktable:mask_id="1587888877"
- darktable:mask_type="64"
- darktable:mask_name="pinceau #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJx7c9rUNrIhy571m6HtwmuF9pcXWtoKaiXb9/kftAFhBoYG+72z2ewZGRgYFvg62jbWhthnZ1rZOkRH21839LA9PN8Xq1oT1XjbJ76O9q8XBNoebXazr12ZY8ssYYNV7WrjTlsTK1P7s/WNtsmPzO07nk+wZZ9khFXtsZNzba/EGNq7Kk23XeBlZO9euMSWI98Aq9oNChttc5fr2yeuW2X794q+/f9J223vVupjVTu//IhtibeB/W3DXbZr2vXtk/ees7XlN8Sq1v3wO1slOxP7p68f2/7MMLJfMeunrbewGVa1nw4y2aV6Wdu/Fvtn+zrSzD6/gs3ugZUDVrX9K3jtmB8G2t9k47FjZvOyd/Hit2PeE4lVrUEPj11GTpb971c8dh9sk+xTdXnsHswqwqoWAOJErDc="
- darktable:mask_nb="11"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="7"
- darktable:mask_id="1587888895"
- darktable:mask_type="1"
- darktable:mask_name="cercle #2"
- darktable:mask_version="6"
- darktable:mask_points="f1a51d3f6543853e0430c53c37c4ff39"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="8"
- darktable:mask_id="1587888843"
- darktable:mask_type="1"
- darktable:mask_name="cercle #1"
- darktable:mask_version="6"
- darktable:mask_points="a2e1693fa5e1343ec525983db852ce3d"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="8"
- darktable:mask_id="1587888845"
- darktable:mask_type="4"
- darktable:mask_name="grp exposition"
- darktable:mask_version="6"
- darktable:mask_points="cb42a55ecd42a55e030000000000803fcf42a55ecd42a55e0b0000000000803fd342a55ecd42a55e0b0000000000803fed42a55ecd42a55e0b0000000000803fff42a55ecd42a55e0b000000f5ff7f3e"
- darktable:mask_nb="5"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="8"
- darktable:mask_id="1587888847"
- darktable:mask_type="32"
- darktable:mask_name="ellipse #1"
- darktable:mask_version="6"
- darktable:mask_points="6afe183e8c00b13ed5c8073e8a34813e803ef1bfb2cc4c3d00000000"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="8"
- darktable:mask_id="1587888851"
- darktable:mask_type="2"
- darktable:mask_name="chemin #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJzboP/VzrTgsG21/U+7/yfO2T6V/2iXI77DdvaLJjBmZGBgKApcbTd9r5Td0bfb7NZunG6rsHW+XeiiTDtkNYda19upHeWz99but3PM/m9n/eC83eorsvbIauR2mNk38zDaV240tXeVYrU/uM/cvvHvTxRziq7utrN8+sZOQeGGHac4i/2xrvl2iXMuoqjR33DY7vNxGzsVxV12a0qr7Sztz9qVmPxBcTMAHZdbbQ=="
- darktable:mask_nb="6"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="8"
- darktable:mask_id="1587888877"
- darktable:mask_type="64"
- darktable:mask_name="pinceau #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJx7c9rUNrIhy571m6HtwmuF9pcXWtoKaiXb9/kftAFhBoYG+72z2ewZGRgYFvg62jbWhthnZ1rZOkRH21839LA9PN8Xq1oT1XjbJ76O9q8XBNoebXazr12ZY8ssYYNV7WrjTlsTK1P7s/WNtsmPzO07nk+wZZ9khFXtsZNzba/EGNq7Kk23XeBlZO9euMSWI98Aq9oNChttc5fr2yeuW2X794q+/f9J223vVupjVTu//IhtibeB/W3DXbZr2vXtk/ees7XlN8Sq1v3wO1slOxP7p68f2/7MMLJfMeunrbewGVa1nw4y2aV6Wdu/Fvtn+zrSzD6/gs3ugZUDVrX9K3jtmB8G2t9k47FjZvOyd/Hit2PeE4lVrUEPj11GTpb971c8dh9sk+xTdXnsHswqwqoWAOJErDc="
- darktable:mask_nb="11"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="8"
- darktable:mask_id="1587888895"
- darktable:mask_type="1"
- darktable:mask_name="cercle #2"
- darktable:mask_version="6"
- darktable:mask_points="f1a51d3f6543853e0430c53c37c4ff39"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="9"
- darktable:mask_id="1587888843"
- darktable:mask_type="1"
- darktable:mask_name="cercle #1"
- darktable:mask_version="6"
- darktable:mask_points="a2e1693fa5e1343ec525983db852ce3d"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="9"
- darktable:mask_id="1587888845"
- darktable:mask_type="4"
- darktable:mask_name="grp exposition"
- darktable:mask_version="6"
- darktable:mask_points="cb42a55ecd42a55e030000000000803fcf42a55ecd42a55e0b0000000000803fd342a55ecd42a55e0b0000000000803fed42a55ecd42a55e0b0000000000803fff42a55ecd42a55e0b000000f5ff7f3e1f43a55ecd42a55e0b0000000000803f"
- darktable:mask_nb="6"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="9"
- darktable:mask_id="1587888847"
- darktable:mask_type="32"
- darktable:mask_name="ellipse #1"
- darktable:mask_version="6"
- darktable:mask_points="6afe183e8c00b13ed5c8073e8a34813e803ef1bfb2cc4c3d00000000"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="9"
- darktable:mask_id="1587888851"
- darktable:mask_type="2"
- darktable:mask_name="chemin #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJzboP/VzrTgsG21/U+7/yfO2T6V/2iXI77DdvaLJjBmZGBgKApcbTd9r5Td0bfb7NZunG6rsHW+XeiiTDtkNYda19upHeWz99but3PM/m9n/eC83eorsvbIauR2mNk38zDaV240tXeVYrU/uM/cvvHvTxRziq7utrN8+sZOQeGGHac4i/2xrvl2iXMuoqjR33DY7vNxGzsVxV12a0qr7Sztz9qVmPxBcTMAHZdbbQ=="
- darktable:mask_nb="6"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="9"
- darktable:mask_id="1587888877"
- darktable:mask_type="64"
- darktable:mask_name="pinceau #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJx7c9rUNrIhy571m6HtwmuF9pcXWtoKaiXb9/kftAFhBoYG+72z2ewZGRgYFvg62jbWhthnZ1rZOkRH21839LA9PN8Xq1oT1XjbJ76O9q8XBNoebXazr12ZY8ssYYNV7WrjTlsTK1P7s/WNtsmPzO07nk+wZZ9khFXtsZNzba/EGNq7Kk23XeBlZO9euMSWI98Aq9oNChttc5fr2yeuW2X794q+/f9J223vVupjVTu//IhtibeB/W3DXbZr2vXtk/ees7XlN8Sq1v3wO1slOxP7p68f2/7MMLJfMeunrbewGVa1nw4y2aV6Wdu/Fvtn+zrSzD6/gs3ugZUDVrX9K3jtmB8G2t9k47FjZvOyd/Hit2PeE4lVrUEPj11GTpb971c8dh9sk+xTdXnsHswqwqoWAOJErDc="
- darktable:mask_nb="11"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="9"
- darktable:mask_id="1587888895"
- darktable:mask_type="1"
- darktable:mask_name="cercle #2"
- darktable:mask_version="6"
- darktable:mask_points="f1a51d3f6543853e0430c53c37c4ff39"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="9"
- darktable:mask_id="1587888927"
- darktable:mask_type="16"
- darktable:mask_name="dégradé #1"
- darktable:mask_version="6"
- darktable:mask_points="c8e1693f386e613f557c15c3182e613d00000000cfcc4c3f02000000"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- </rdf:Seq>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjYRgFowABWAbaAaNgwAEAPRQAEQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="exposure"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="0000000000000000000000c000004842000080c0"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz10eJxjZmBgkGAAgRNOIPKs09I4BihgZCAWNNhD8EjlYwcAuEIbGQ=="/>
- <rdf:li
- darktable:num="8"
- darktable:operation="mask_manager"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="00000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="9"
- darktable:operation="exposure"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="0000000000000000000000c000004842000080c0"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz10eJxjZmBgkGAAgRNOIPKs09I4BihgZCAWNNhD8EjlYwcAuEIbGQ=="/>
- </rdf:Seq>
- </darktable:history>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0005-orientation-minus-90/expected.png b/src/tests/integration/0005-orientation-minus-90/expected.png
deleted file mode 100644
index 4681280a0..000000000
--- a/src/tests/integration/0005-orientation-minus-90/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0005-orientation-minus-90/orientation-minus-90.xmp b/src/tests/integration/0005-orientation-minus-90/orientation-minus-90.xmp
deleted file mode 100644
index 138de78a8..000000000
--- a/src/tests/integration/0005-orientation-minus-90/orientation-minus-90.xmp
+++ /dev/null
@@ -1,290 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:darktable="http://darktable.sf.net/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- xmp:Rating="1"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="9"
- darktable:iop_order_version="2"
- darktable:history_basic_hash="e3684b5b41364cd35d46ddcaadbc278a"
- darktable:history_current_hash="eb5e123f814462ed96070ee078e8dd5d">
- <darktable:masks_history>
- <rdf:Seq>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888843"
- darktable:mask_type="1"
- darktable:mask_name="cercle #1"
- darktable:mask_version="6"
- darktable:mask_points="a2e1693fa5e1343ec525983db852ce3d"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888845"
- darktable:mask_type="4"
- darktable:mask_name="grp exposition"
- darktable:mask_version="6"
- darktable:mask_points="cb42a55ecd42a55e030000000000803fcf42a55ecd42a55e0b0000000000803fd342a55ecd42a55e0b0000000000803fed42a55ecd42a55e0b0000000000803fff42a55ecd42a55e0b0000000000803f"
- darktable:mask_nb="5"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888847"
- darktable:mask_type="32"
- darktable:mask_name="ellipse #1"
- darktable:mask_version="6"
- darktable:mask_points="6afe183e8c00b13ed5c8073e8a34813e803ef1bfb2cc4c3d00000000"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888851"
- darktable:mask_type="2"
- darktable:mask_name="chemin #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJzboP/VzrTgsG21/U+7/yfO2T6V/2iXI77DdvaLJjBmZGBgKApcbTd9r5Td0bfb7NZunG6rsHW+XeiiTDtkNYda19upHeWz99but3PM/m9n/eC83eorsvbIauR2mNk38zDaV240tXeVYrU/uM/cvvHvTxRziq7utrN8+sZOQeGGHac4i/2xrvl2iXMuoqjR33DY7vNxGzsVxV12a0qr7Sztz9qVmPxBcTMAHZdbbQ=="
- darktable:mask_nb="6"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888877"
- darktable:mask_type="64"
- darktable:mask_name="pinceau #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJx7c9rUNrIhy571m6HtwmuF9pcXWtoKaiXb9/kftAFhBoYG+72z2ewZGRgYFvg62jbWhthnZ1rZOkRH21839LA9PN8Xq1oT1XjbJ76O9q8XBNoebXazr12ZY8ssYYNV7WrjTlsTK1P7s/WNtsmPzO07nk+wZZ9khFXtsZNzba/EGNq7Kk23XeBlZO9euMSWI98Aq9oNChttc5fr2yeuW2X794q+/f9J223vVupjVTu//IhtibeB/W3DXbZr2vXtk/ees7XlN8Sq1v3wO1slOxP7p68f2/7MMLJfMeunrbewGVa1nw4y2aV6Wdu/Fvtn+zrSzD6/gs3ugZUDVrX9K3jtmB8G2t9k47FjZvOyd/Hit2PeE4lVrUEPj11GTpb971c8dh9sk+xTdXnsHswqwqoWAOJErDc="
- darktable:mask_nb="11"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888895"
- darktable:mask_type="1"
- darktable:mask_name="cercle #2"
- darktable:mask_version="6"
- darktable:mask_points="f1a51d3f6543853e0430c53c37c4ff39"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888843"
- darktable:mask_type="1"
- darktable:mask_name="cercle #1"
- darktable:mask_version="6"
- darktable:mask_points="a2e1693fa5e1343ec525983db852ce3d"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888845"
- darktable:mask_type="4"
- darktable:mask_name="grp exposition"
- darktable:mask_version="6"
- darktable:mask_points="cb42a55ecd42a55e030000000000803fcf42a55ecd42a55e0b0000000000803fd342a55ecd42a55e0b0000000000803fed42a55ecd42a55e0b0000000000803fff42a55ecd42a55e0b000000f5ff7f3e"
- darktable:mask_nb="5"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888847"
- darktable:mask_type="32"
- darktable:mask_name="ellipse #1"
- darktable:mask_version="6"
- darktable:mask_points="6afe183e8c00b13ed5c8073e8a34813e803ef1bfb2cc4c3d00000000"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888851"
- darktable:mask_type="2"
- darktable:mask_name="chemin #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJzboP/VzrTgsG21/U+7/yfO2T6V/2iXI77DdvaLJjBmZGBgKApcbTd9r5Td0bfb7NZunG6rsHW+XeiiTDtkNYda19upHeWz99but3PM/m9n/eC83eorsvbIauR2mNk38zDaV240tXeVYrU/uM/cvvHvTxRziq7utrN8+sZOQeGGHac4i/2xrvl2iXMuoqjR33DY7vNxGzsVxV12a0qr7Sztz9qVmPxBcTMAHZdbbQ=="
- darktable:mask_nb="6"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888877"
- darktable:mask_type="64"
- darktable:mask_name="pinceau #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJx7c9rUNrIhy571m6HtwmuF9pcXWtoKaiXb9/kftAFhBoYG+72z2ewZGRgYFvg62jbWhthnZ1rZOkRH21839LA9PN8Xq1oT1XjbJ76O9q8XBNoebXazr12ZY8ssYYNV7WrjTlsTK1P7s/WNtsmPzO07nk+wZZ9khFXtsZNzba/EGNq7Kk23XeBlZO9euMSWI98Aq9oNChttc5fr2yeuW2X794q+/f9J223vVupjVTu//IhtibeB/W3DXbZr2vXtk/ees7XlN8Sq1v3wO1slOxP7p68f2/7MMLJfMeunrbewGVa1nw4y2aV6Wdu/Fvtn+zrSzD6/gs3ugZUDVrX9K3jtmB8G2t9k47FjZvOyd/Hit2PeE4lVrUEPj11GTpb971c8dh9sk+xTdXnsHswqwqoWAOJErDc="
- darktable:mask_nb="11"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888895"
- darktable:mask_type="1"
- darktable:mask_name="cercle #2"
- darktable:mask_version="6"
- darktable:mask_points="f1a51d3f6543853e0430c53c37c4ff39"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888843"
- darktable:mask_type="1"
- darktable:mask_name="cercle #1"
- darktable:mask_version="6"
- darktable:mask_points="a2e1693fa5e1343ec525983db852ce3d"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888845"
- darktable:mask_type="4"
- darktable:mask_name="grp exposition"
- darktable:mask_version="6"
- darktable:mask_points="cb42a55ecd42a55e030000000000803fcf42a55ecd42a55e0b0000000000803fd342a55ecd42a55e0b0000000000803fed42a55ecd42a55e0b0000000000803fff42a55ecd42a55e0b000000f5ff7f3e1f43a55ecd42a55e0b0000000000803f"
- darktable:mask_nb="6"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888847"
- darktable:mask_type="32"
- darktable:mask_name="ellipse #1"
- darktable:mask_version="6"
- darktable:mask_points="6afe183e8c00b13ed5c8073e8a34813e803ef1bfb2cc4c3d00000000"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888851"
- darktable:mask_type="2"
- darktable:mask_name="chemin #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJzboP/VzrTgsG21/U+7/yfO2T6V/2iXI77DdvaLJjBmZGBgKApcbTd9r5Td0bfb7NZunG6rsHW+XeiiTDtkNYda19upHeWz99but3PM/m9n/eC83eorsvbIauR2mNk38zDaV240tXeVYrU/uM/cvvHvTxRziq7utrN8+sZOQeGGHac4i/2xrvl2iXMuoqjR33DY7vNxGzsVxV12a0qr7Sztz9qVmPxBcTMAHZdbbQ=="
- darktable:mask_nb="6"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888877"
- darktable:mask_type="64"
- darktable:mask_name="pinceau #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJx7c9rUNrIhy571m6HtwmuF9pcXWtoKaiXb9/kftAFhBoYG+72z2ewZGRgYFvg62jbWhthnZ1rZOkRH21839LA9PN8Xq1oT1XjbJ76O9q8XBNoebXazr12ZY8ssYYNV7WrjTlsTK1P7s/WNtsmPzO07nk+wZZ9khFXtsZNzba/EGNq7Kk23XeBlZO9euMSWI98Aq9oNChttc5fr2yeuW2X794q+/f9J223vVupjVTu//IhtibeB/W3DXbZr2vXtk/ees7XlN8Sq1v3wO1slOxP7p68f2/7MMLJfMeunrbewGVa1nw4y2aV6Wdu/Fvtn+zrSzD6/gs3ugZUDVrX9K3jtmB8G2t9k47FjZvOyd/Hit2PeE4lVrUEPj11GTpb971c8dh9sk+xTdXnsHswqwqoWAOJErDc="
- darktable:mask_nb="11"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888895"
- darktable:mask_type="1"
- darktable:mask_name="cercle #2"
- darktable:mask_version="6"
- darktable:mask_points="f1a51d3f6543853e0430c53c37c4ff39"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888927"
- darktable:mask_type="16"
- darktable:mask_name="dégradé #1"
- darktable:mask_version="6"
- darktable:mask_points="c8e1693f386e613f557c15c3182e613d00000000cfcc4c3f02000000"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- </rdf:Seq>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="mask_manager"
- darktable:enabled="0"
- darktable:modversion="2"
- darktable:params="00000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjYRgFowABWAbaAaNgwAEAPRQAEQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="8"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="06000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0006-orientation-plus-90/expected.png b/src/tests/integration/0006-orientation-plus-90/expected.png
deleted file mode 100644
index 09c2c0d8e..000000000
--- a/src/tests/integration/0006-orientation-plus-90/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0006-orientation-plus-90/orientation-plus-90.xmp b/src/tests/integration/0006-orientation-plus-90/orientation-plus-90.xmp
deleted file mode 100644
index b0b3f7bc4..000000000
--- a/src/tests/integration/0006-orientation-plus-90/orientation-plus-90.xmp
+++ /dev/null
@@ -1,290 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:darktable="http://darktable.sf.net/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- xmp:Rating="1"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="9"
- darktable:iop_order_version="2"
- darktable:history_basic_hash="e3684b5b41364cd35d46ddcaadbc278a"
- darktable:history_current_hash="87ce1e75a840f48550eaae711fbea740">
- <darktable:masks_history>
- <rdf:Seq>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888843"
- darktable:mask_type="1"
- darktable:mask_name="cercle #1"
- darktable:mask_version="6"
- darktable:mask_points="a2e1693fa5e1343ec525983db852ce3d"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888845"
- darktable:mask_type="4"
- darktable:mask_name="grp exposition"
- darktable:mask_version="6"
- darktable:mask_points="cb42a55ecd42a55e030000000000803fcf42a55ecd42a55e0b0000000000803fd342a55ecd42a55e0b0000000000803fed42a55ecd42a55e0b0000000000803fff42a55ecd42a55e0b0000000000803f"
- darktable:mask_nb="5"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888847"
- darktable:mask_type="32"
- darktable:mask_name="ellipse #1"
- darktable:mask_version="6"
- darktable:mask_points="6afe183e8c00b13ed5c8073e8a34813e803ef1bfb2cc4c3d00000000"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888851"
- darktable:mask_type="2"
- darktable:mask_name="chemin #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJzboP/VzrTgsG21/U+7/yfO2T6V/2iXI77DdvaLJjBmZGBgKApcbTd9r5Td0bfb7NZunG6rsHW+XeiiTDtkNYda19upHeWz99but3PM/m9n/eC83eorsvbIauR2mNk38zDaV240tXeVYrU/uM/cvvHvTxRziq7utrN8+sZOQeGGHac4i/2xrvl2iXMuoqjR33DY7vNxGzsVxV12a0qr7Sztz9qVmPxBcTMAHZdbbQ=="
- darktable:mask_nb="6"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888877"
- darktable:mask_type="64"
- darktable:mask_name="pinceau #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJx7c9rUNrIhy571m6HtwmuF9pcXWtoKaiXb9/kftAFhBoYG+72z2ewZGRgYFvg62jbWhthnZ1rZOkRH21839LA9PN8Xq1oT1XjbJ76O9q8XBNoebXazr12ZY8ssYYNV7WrjTlsTK1P7s/WNtsmPzO07nk+wZZ9khFXtsZNzba/EGNq7Kk23XeBlZO9euMSWI98Aq9oNChttc5fr2yeuW2X794q+/f9J223vVupjVTu//IhtibeB/W3DXbZr2vXtk/ees7XlN8Sq1v3wO1slOxP7p68f2/7MMLJfMeunrbewGVa1nw4y2aV6Wdu/Fvtn+zrSzD6/gs3ugZUDVrX9K3jtmB8G2t9k47FjZvOyd/Hit2PeE4lVrUEPj11GTpb971c8dh9sk+xTdXnsHswqwqoWAOJErDc="
- darktable:mask_nb="11"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888895"
- darktable:mask_type="1"
- darktable:mask_name="cercle #2"
- darktable:mask_version="6"
- darktable:mask_points="f1a51d3f6543853e0430c53c37c4ff39"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888843"
- darktable:mask_type="1"
- darktable:mask_name="cercle #1"
- darktable:mask_version="6"
- darktable:mask_points="a2e1693fa5e1343ec525983db852ce3d"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888845"
- darktable:mask_type="4"
- darktable:mask_name="grp exposition"
- darktable:mask_version="6"
- darktable:mask_points="cb42a55ecd42a55e030000000000803fcf42a55ecd42a55e0b0000000000803fd342a55ecd42a55e0b0000000000803fed42a55ecd42a55e0b0000000000803fff42a55ecd42a55e0b000000f5ff7f3e"
- darktable:mask_nb="5"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888847"
- darktable:mask_type="32"
- darktable:mask_name="ellipse #1"
- darktable:mask_version="6"
- darktable:mask_points="6afe183e8c00b13ed5c8073e8a34813e803ef1bfb2cc4c3d00000000"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888851"
- darktable:mask_type="2"
- darktable:mask_name="chemin #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJzboP/VzrTgsG21/U+7/yfO2T6V/2iXI77DdvaLJjBmZGBgKApcbTd9r5Td0bfb7NZunG6rsHW+XeiiTDtkNYda19upHeWz99but3PM/m9n/eC83eorsvbIauR2mNk38zDaV240tXeVYrU/uM/cvvHvTxRziq7utrN8+sZOQeGGHac4i/2xrvl2iXMuoqjR33DY7vNxGzsVxV12a0qr7Sztz9qVmPxBcTMAHZdbbQ=="
- darktable:mask_nb="6"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888877"
- darktable:mask_type="64"
- darktable:mask_name="pinceau #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJx7c9rUNrIhy571m6HtwmuF9pcXWtoKaiXb9/kftAFhBoYG+72z2ewZGRgYFvg62jbWhthnZ1rZOkRH21839LA9PN8Xq1oT1XjbJ76O9q8XBNoebXazr12ZY8ssYYNV7WrjTlsTK1P7s/WNtsmPzO07nk+wZZ9khFXtsZNzba/EGNq7Kk23XeBlZO9euMSWI98Aq9oNChttc5fr2yeuW2X794q+/f9J223vVupjVTu//IhtibeB/W3DXbZr2vXtk/ees7XlN8Sq1v3wO1slOxP7p68f2/7MMLJfMeunrbewGVa1nw4y2aV6Wdu/Fvtn+zrSzD6/gs3ugZUDVrX9K3jtmB8G2t9k47FjZvOyd/Hit2PeE4lVrUEPj11GTpb971c8dh9sk+xTdXnsHswqwqoWAOJErDc="
- darktable:mask_nb="11"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888895"
- darktable:mask_type="1"
- darktable:mask_name="cercle #2"
- darktable:mask_version="6"
- darktable:mask_points="f1a51d3f6543853e0430c53c37c4ff39"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888843"
- darktable:mask_type="1"
- darktable:mask_name="cercle #1"
- darktable:mask_version="6"
- darktable:mask_points="a2e1693fa5e1343ec525983db852ce3d"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888845"
- darktable:mask_type="4"
- darktable:mask_name="grp exposition"
- darktable:mask_version="6"
- darktable:mask_points="cb42a55ecd42a55e030000000000803fcf42a55ecd42a55e0b0000000000803fd342a55ecd42a55e0b0000000000803fed42a55ecd42a55e0b0000000000803fff42a55ecd42a55e0b000000f5ff7f3e1f43a55ecd42a55e0b0000000000803f"
- darktable:mask_nb="6"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888847"
- darktable:mask_type="32"
- darktable:mask_name="ellipse #1"
- darktable:mask_version="6"
- darktable:mask_points="6afe183e8c00b13ed5c8073e8a34813e803ef1bfb2cc4c3d00000000"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888851"
- darktable:mask_type="2"
- darktable:mask_name="chemin #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJzboP/VzrTgsG21/U+7/yfO2T6V/2iXI77DdvaLJjBmZGBgKApcbTd9r5Td0bfb7NZunG6rsHW+XeiiTDtkNYda19upHeWz99but3PM/m9n/eC83eorsvbIauR2mNk38zDaV240tXeVYrU/uM/cvvHvTxRziq7utrN8+sZOQeGGHac4i/2xrvl2iXMuoqjR33DY7vNxGzsVxV12a0qr7Sztz9qVmPxBcTMAHZdbbQ=="
- darktable:mask_nb="6"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888877"
- darktable:mask_type="64"
- darktable:mask_name="pinceau #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJx7c9rUNrIhy571m6HtwmuF9pcXWtoKaiXb9/kftAFhBoYG+72z2ewZGRgYFvg62jbWhthnZ1rZOkRH21839LA9PN8Xq1oT1XjbJ76O9q8XBNoebXazr12ZY8ssYYNV7WrjTlsTK1P7s/WNtsmPzO07nk+wZZ9khFXtsZNzba/EGNq7Kk23XeBlZO9euMSWI98Aq9oNChttc5fr2yeuW2X794q+/f9J223vVupjVTu//IhtibeB/W3DXbZr2vXtk/ees7XlN8Sq1v3wO1slOxP7p68f2/7MMLJfMeunrbewGVa1nw4y2aV6Wdu/Fvtn+zrSzD6/gs3ugZUDVrX9K3jtmB8G2t9k47FjZvOyd/Hit2PeE4lVrUEPj11GTpb971c8dh9sk+xTdXnsHswqwqoWAOJErDc="
- darktable:mask_nb="11"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888895"
- darktable:mask_type="1"
- darktable:mask_name="cercle #2"
- darktable:mask_version="6"
- darktable:mask_points="f1a51d3f6543853e0430c53c37c4ff39"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888927"
- darktable:mask_type="16"
- darktable:mask_name="dégradé #1"
- darktable:mask_version="6"
- darktable:mask_points="c8e1693f386e613f557c15c3182e613d00000000cfcc4c3f02000000"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- </rdf:Seq>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="mask_manager"
- darktable:enabled="0"
- darktable:modversion="2"
- darktable:params="00000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjYRgFowABWAbaAaNgwAEAPRQAEQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="8"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="05000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0007-orientation-180/expected.png b/src/tests/integration/0007-orientation-180/expected.png
deleted file mode 100644
index d0581045a..000000000
--- a/src/tests/integration/0007-orientation-180/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0007-orientation-180/orientation-180.xmp b/src/tests/integration/0007-orientation-180/orientation-180.xmp
deleted file mode 100644
index 63a23307d..000000000
--- a/src/tests/integration/0007-orientation-180/orientation-180.xmp
+++ /dev/null
@@ -1,300 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:darktable="http://darktable.sf.net/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- xmp:Rating="1"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="10"
- darktable:iop_order_version="2"
- darktable:history_basic_hash="e3684b5b41364cd35d46ddcaadbc278a"
- darktable:history_current_hash="971dde963d2945079782139becc6484a">
- <darktable:masks_history>
- <rdf:Seq>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888843"
- darktable:mask_type="1"
- darktable:mask_name="cercle #1"
- darktable:mask_version="6"
- darktable:mask_points="a2e1693fa5e1343ec525983db852ce3d"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888845"
- darktable:mask_type="4"
- darktable:mask_name="grp exposition"
- darktable:mask_version="6"
- darktable:mask_points="cb42a55ecd42a55e030000000000803fcf42a55ecd42a55e0b0000000000803fd342a55ecd42a55e0b0000000000803fed42a55ecd42a55e0b0000000000803fff42a55ecd42a55e0b0000000000803f"
- darktable:mask_nb="5"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888847"
- darktable:mask_type="32"
- darktable:mask_name="ellipse #1"
- darktable:mask_version="6"
- darktable:mask_points="6afe183e8c00b13ed5c8073e8a34813e803ef1bfb2cc4c3d00000000"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888851"
- darktable:mask_type="2"
- darktable:mask_name="chemin #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJzboP/VzrTgsG21/U+7/yfO2T6V/2iXI77DdvaLJjBmZGBgKApcbTd9r5Td0bfb7NZunG6rsHW+XeiiTDtkNYda19upHeWz99but3PM/m9n/eC83eorsvbIauR2mNk38zDaV240tXeVYrU/uM/cvvHvTxRziq7utrN8+sZOQeGGHac4i/2xrvl2iXMuoqjR33DY7vNxGzsVxV12a0qr7Sztz9qVmPxBcTMAHZdbbQ=="
- darktable:mask_nb="6"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888877"
- darktable:mask_type="64"
- darktable:mask_name="pinceau #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJx7c9rUNrIhy571m6HtwmuF9pcXWtoKaiXb9/kftAFhBoYG+72z2ewZGRgYFvg62jbWhthnZ1rZOkRH21839LA9PN8Xq1oT1XjbJ76O9q8XBNoebXazr12ZY8ssYYNV7WrjTlsTK1P7s/WNtsmPzO07nk+wZZ9khFXtsZNzba/EGNq7Kk23XeBlZO9euMSWI98Aq9oNChttc5fr2yeuW2X794q+/f9J223vVupjVTu//IhtibeB/W3DXbZr2vXtk/ees7XlN8Sq1v3wO1slOxP7p68f2/7MMLJfMeunrbewGVa1nw4y2aV6Wdu/Fvtn+zrSzD6/gs3ugZUDVrX9K3jtmB8G2t9k47FjZvOyd/Hit2PeE4lVrUEPj11GTpb971c8dh9sk+xTdXnsHswqwqoWAOJErDc="
- darktable:mask_nb="11"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888895"
- darktable:mask_type="1"
- darktable:mask_name="cercle #2"
- darktable:mask_version="6"
- darktable:mask_points="f1a51d3f6543853e0430c53c37c4ff39"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888843"
- darktable:mask_type="1"
- darktable:mask_name="cercle #1"
- darktable:mask_version="6"
- darktable:mask_points="a2e1693fa5e1343ec525983db852ce3d"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888845"
- darktable:mask_type="4"
- darktable:mask_name="grp exposition"
- darktable:mask_version="6"
- darktable:mask_points="cb42a55ecd42a55e030000000000803fcf42a55ecd42a55e0b0000000000803fd342a55ecd42a55e0b0000000000803fed42a55ecd42a55e0b0000000000803fff42a55ecd42a55e0b000000f5ff7f3e"
- darktable:mask_nb="5"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888847"
- darktable:mask_type="32"
- darktable:mask_name="ellipse #1"
- darktable:mask_version="6"
- darktable:mask_points="6afe183e8c00b13ed5c8073e8a34813e803ef1bfb2cc4c3d00000000"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888851"
- darktable:mask_type="2"
- darktable:mask_name="chemin #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJzboP/VzrTgsG21/U+7/yfO2T6V/2iXI77DdvaLJjBmZGBgKApcbTd9r5Td0bfb7NZunG6rsHW+XeiiTDtkNYda19upHeWz99but3PM/m9n/eC83eorsvbIauR2mNk38zDaV240tXeVYrU/uM/cvvHvTxRziq7utrN8+sZOQeGGHac4i/2xrvl2iXMuoqjR33DY7vNxGzsVxV12a0qr7Sztz9qVmPxBcTMAHZdbbQ=="
- darktable:mask_nb="6"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888877"
- darktable:mask_type="64"
- darktable:mask_name="pinceau #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJx7c9rUNrIhy571m6HtwmuF9pcXWtoKaiXb9/kftAFhBoYG+72z2ewZGRgYFvg62jbWhthnZ1rZOkRH21839LA9PN8Xq1oT1XjbJ76O9q8XBNoebXazr12ZY8ssYYNV7WrjTlsTK1P7s/WNtsmPzO07nk+wZZ9khFXtsZNzba/EGNq7Kk23XeBlZO9euMSWI98Aq9oNChttc5fr2yeuW2X794q+/f9J223vVupjVTu//IhtibeB/W3DXbZr2vXtk/ees7XlN8Sq1v3wO1slOxP7p68f2/7MMLJfMeunrbewGVa1nw4y2aV6Wdu/Fvtn+zrSzD6/gs3ugZUDVrX9K3jtmB8G2t9k47FjZvOyd/Hit2PeE4lVrUEPj11GTpb971c8dh9sk+xTdXnsHswqwqoWAOJErDc="
- darktable:mask_nb="11"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888895"
- darktable:mask_type="1"
- darktable:mask_name="cercle #2"
- darktable:mask_version="6"
- darktable:mask_points="f1a51d3f6543853e0430c53c37c4ff39"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888843"
- darktable:mask_type="1"
- darktable:mask_name="cercle #1"
- darktable:mask_version="6"
- darktable:mask_points="a2e1693fa5e1343ec525983db852ce3d"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888845"
- darktable:mask_type="4"
- darktable:mask_name="grp exposition"
- darktable:mask_version="6"
- darktable:mask_points="cb42a55ecd42a55e030000000000803fcf42a55ecd42a55e0b0000000000803fd342a55ecd42a55e0b0000000000803fed42a55ecd42a55e0b0000000000803fff42a55ecd42a55e0b000000f5ff7f3e1f43a55ecd42a55e0b0000000000803f"
- darktable:mask_nb="6"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888847"
- darktable:mask_type="32"
- darktable:mask_name="ellipse #1"
- darktable:mask_version="6"
- darktable:mask_points="6afe183e8c00b13ed5c8073e8a34813e803ef1bfb2cc4c3d00000000"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888851"
- darktable:mask_type="2"
- darktable:mask_name="chemin #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJzboP/VzrTgsG21/U+7/yfO2T6V/2iXI77DdvaLJjBmZGBgKApcbTd9r5Td0bfb7NZunG6rsHW+XeiiTDtkNYda19upHeWz99but3PM/m9n/eC83eorsvbIauR2mNk38zDaV240tXeVYrU/uM/cvvHvTxRziq7utrN8+sZOQeGGHac4i/2xrvl2iXMuoqjR33DY7vNxGzsVxV12a0qr7Sztz9qVmPxBcTMAHZdbbQ=="
- darktable:mask_nb="6"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888877"
- darktable:mask_type="64"
- darktable:mask_name="pinceau #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJx7c9rUNrIhy571m6HtwmuF9pcXWtoKaiXb9/kftAFhBoYG+72z2ewZGRgYFvg62jbWhthnZ1rZOkRH21839LA9PN8Xq1oT1XjbJ76O9q8XBNoebXazr12ZY8ssYYNV7WrjTlsTK1P7s/WNtsmPzO07nk+wZZ9khFXtsZNzba/EGNq7Kk23XeBlZO9euMSWI98Aq9oNChttc5fr2yeuW2X794q+/f9J223vVupjVTu//IhtibeB/W3DXbZr2vXtk/ees7XlN8Sq1v3wO1slOxP7p68f2/7MMLJfMeunrbewGVa1nw4y2aV6Wdu/Fvtn+zrSzD6/gs3ugZUDVrX9K3jtmB8G2t9k47FjZvOyd/Hit2PeE4lVrUEPj11GTpb971c8dh9sk+xTdXnsHswqwqoWAOJErDc="
- darktable:mask_nb="11"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888895"
- darktable:mask_type="1"
- darktable:mask_name="cercle #2"
- darktable:mask_version="6"
- darktable:mask_points="f1a51d3f6543853e0430c53c37c4ff39"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1587888927"
- darktable:mask_type="16"
- darktable:mask_name="dégradé #1"
- darktable:mask_version="6"
- darktable:mask_points="c8e1693f386e613f557c15c3182e613d00000000cfcc4c3f02000000"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- </rdf:Seq>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="mask_manager"
- darktable:enabled="0"
- darktable:modversion="2"
- darktable:params="00000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjYRgFowABWAbaAaNgwAEAPRQAEQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="8"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="05000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="9"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="03000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0008-flip-h/expected.png b/src/tests/integration/0008-flip-h/expected.png
deleted file mode 100644
index f8cbcefe4..000000000
--- a/src/tests/integration/0008-flip-h/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0008-flip-h/flip-h.xmp b/src/tests/integration/0008-flip-h/flip-h.xmp
deleted file mode 100644
index abdab75e6..000000000
--- a/src/tests/integration/0008-flip-h/flip-h.xmp
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:darktable="http://darktable.sf.net/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- xmp:Rating="1"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:import_timestamp="1589624592"
- darktable:change_timestamp="1591215661"
- darktable:export_timestamp="-1"
- darktable:print_timestamp="-1"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="8"
- darktable:iop_order_version="2"
- darktable:history_basic_hash="e92e67c2e58a78db9f7a4fbc0951cf52"
- darktable:history_current_hash="c3b75e35261aba4111ce51c620cf2c51">
- <darktable:masks_history>
- <rdf:Seq/>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjZhgFowABWAbaAaNgwAEAOQAAEA=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="clipping"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="000000000000000000000000000080bf0000803f0000000000000000cdcc4c3ecdcc4c3ecdcc4c3fcdcc4c3ecdcc4c3fcdcc4c3fcdcc4c3ecdcc4c3f000000000000000000000000010000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0009-flip-v/expected.png b/src/tests/integration/0009-flip-v/expected.png
deleted file mode 100644
index b582ee463..000000000
--- a/src/tests/integration/0009-flip-v/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0009-flip-v/flip-v.xmp b/src/tests/integration/0009-flip-v/flip-v.xmp
deleted file mode 100644
index ca502e7fd..000000000
--- a/src/tests/integration/0009-flip-v/flip-v.xmp
+++ /dev/null
@@ -1,122 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:darktable="http://darktable.sf.net/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- xmp:Rating="1"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:import_timestamp="1589624592"
- darktable:change_timestamp="1591215764"
- darktable:export_timestamp="-1"
- darktable:print_timestamp="-1"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="9"
- darktable:iop_order_version="2"
- darktable:history_basic_hash="e92e67c2e58a78db9f7a4fbc0951cf52"
- darktable:history_current_hash="39f56d7b67e6d750ab46d698b58ffdc8">
- <darktable:masks_history>
- <rdf:Seq/>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjZhgFowABWAbaAaNgwAEAOQAAEA=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="clipping"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="000000000000000000000000000080bf0000803f0000000000000000cdcc4c3ecdcc4c3ecdcc4c3fcdcc4c3ecdcc4c3fcdcc4c3fcdcc4c3ecdcc4c3f000000000000000000000000010000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="8"
- darktable:operation="clipping"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="0000000000000000000000000000803f000080bf0000000000000000cdcc4c3ecdcc4c3ecdcc4c3fcdcc4c3ecdcc4c3fcdcc4c3fcdcc4c3ecdcc4c3f000000000000000000000000010000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0010-flip-hv/expected.png b/src/tests/integration/0010-flip-hv/expected.png
deleted file mode 100644
index 0da5a0892..000000000
--- a/src/tests/integration/0010-flip-hv/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0010-flip-hv/flip-hv.xmp b/src/tests/integration/0010-flip-hv/flip-hv.xmp
deleted file mode 100644
index 958e33058..000000000
--- a/src/tests/integration/0010-flip-hv/flip-hv.xmp
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:darktable="http://darktable.sf.net/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- xmp:Rating="1"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:import_timestamp="1589624592"
- darktable:change_timestamp="1591215905"
- darktable:export_timestamp="-1"
- darktable:print_timestamp="-1"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="10"
- darktable:iop_order_version="2"
- darktable:history_basic_hash="e92e67c2e58a78db9f7a4fbc0951cf52"
- darktable:history_current_hash="4d16d5cd1b28a4e776ddc470d17d9323">
- <darktable:masks_history>
- <rdf:Seq/>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjZhgFowABWAbaAaNgwAEAOQAAEA=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="clipping"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="000000000000000000000000000080bf0000803f0000000000000000cdcc4c3ecdcc4c3ecdcc4c3fcdcc4c3ecdcc4c3fcdcc4c3fcdcc4c3ecdcc4c3f000000000000000000000000010000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="8"
- darktable:operation="clipping"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="0000000000000000000000000000803f000080bf0000000000000000cdcc4c3ecdcc4c3ecdcc4c3fcdcc4c3ecdcc4c3fcdcc4c3fcdcc4c3ecdcc4c3f000000000000000000000000010000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="9"
- darktable:operation="clipping"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="000000000000000000000000000080bf000080bf0000000000000000cdcc4c3ecdcc4c3ecdcc4c3fcdcc4c3ecdcc4c3fcdcc4c3fcdcc4c3ecdcc4c3f000000000000000000000000010000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0011-gdnd-90/expected.png b/src/tests/integration/0011-gdnd-90/expected.png
deleted file mode 100644
index 1391271f6..000000000
--- a/src/tests/integration/0011-gdnd-90/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0011-gdnd-90/gdnd-90.xmp b/src/tests/integration/0011-gdnd-90/gdnd-90.xmp
deleted file mode 100644
index a4dfb9f50..000000000
--- a/src/tests/integration/0011-gdnd-90/gdnd-90.xmp
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:darktable="http://darktable.sf.net/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- xmp:Rating="1"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:import_timestamp="1589624592"
- darktable:change_timestamp="1589624671"
- darktable:export_timestamp="-1"
- darktable:print_timestamp="-1"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="8"
- darktable:iop_order_version="2"
- darktable:history_basic_hash="e3684b5b41364cd35d46ddcaadbc278a"
- darktable:history_current_hash="c1141e2de93a9b3254027a6ac504a548">
- <darktable:masks_history>
- <rdf:Seq/>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjYRgFowABWAbaAaNgwAEAPRQAEQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="graduatednd"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="00000040000020410000b442000048420000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0012-gdnd-45/expected.png b/src/tests/integration/0012-gdnd-45/expected.png
deleted file mode 100644
index b79e20a8b..000000000
--- a/src/tests/integration/0012-gdnd-45/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0012-gdnd-45/gdnd-45.xmp b/src/tests/integration/0012-gdnd-45/gdnd-45.xmp
deleted file mode 100644
index 30c826918..000000000
--- a/src/tests/integration/0012-gdnd-45/gdnd-45.xmp
+++ /dev/null
@@ -1,122 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:darktable="http://darktable.sf.net/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- xmp:Rating="1"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:import_timestamp="1589624592"
- darktable:change_timestamp="1589625231"
- darktable:export_timestamp="-1"
- darktable:print_timestamp="-1"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="9"
- darktable:iop_order_version="2"
- darktable:history_basic_hash="e3684b5b41364cd35d46ddcaadbc278a"
- darktable:history_current_hash="8b188da932bf83f572b345a8e2506cd8">
- <darktable:masks_history>
- <rdf:Seq/>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjYRgFowABWAbaAaNgwAEAPRQAEQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="graduatednd"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="00000040000020410000b442000048420000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="8"
- darktable:operation="graduatednd"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="000000400000b442000034c2364321420000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0013-denoiseprofile-wavelets/denoiseprofile-wavelets.xmp b/src/tests/integration/0013-denoiseprofile-wavelets/denoiseprofile-wavelets.xmp
deleted file mode 100644
index a58ea76f6..000000000
--- a/src/tests/integration/0013-denoiseprofile-wavelets/denoiseprofile-wavelets.xmp
+++ /dev/null
@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:darktable="http://darktable.sf.net/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- xmp:Rating="0"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:import_timestamp="1589767202"
- darktable:change_timestamp="1590445916"
- darktable:export_timestamp="1590365245"
- darktable:print_timestamp="-1"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="9"
- darktable:iop_order_version="2"
- darktable:history_auto_hash="b8c7f90a59641f932ce700b5d6d667dc"
- darktable:history_current_hash="ba0dbb9f27846b10caf3a5d34e72ee77">
- <darktable:masks_history>
- <rdf:Seq/>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjYRgFowABWAbaAaNgwAEAPRQAEQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="basecurve"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz09eJxjYIAAM6vnNnqyn22E9n235b6aa3cy6rVdRaK9/Y970fYf95bbMzA0QPEoGEqADYnNhCELiVNGIAsAAkoSGQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="8"
- darktable:operation="denoiseprofile"
- darktable:enabled="1"
- darktable:modversion="10"
- darktable:params="gz05eJxjYGiwZ2B44MAApC+ZTwSyGRpKWo7anj1zxpYBLNewf/U1NguVjckWL/c8MIk6f8b4k82czYwMELB6lZbd6lWr7IBMeyDbPjQ01B6ib1DJDQkMClNkDADcolAy"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- <dc:creator>
- <rdf:Seq>
- <rdf:li>Ralf Brown</rdf:li>
- </rdf:Seq>
- </dc:creator>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0013-denoiseprofile-wavelets/expected.png b/src/tests/integration/0013-denoiseprofile-wavelets/expected.png
deleted file mode 100644
index 8d8d938ac..000000000
--- a/src/tests/integration/0013-denoiseprofile-wavelets/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0014-filmic-rgb/expected.png b/src/tests/integration/0014-filmic-rgb/expected.png
deleted file mode 100644
index 26e4599b6..000000000
--- a/src/tests/integration/0014-filmic-rgb/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0014-filmic-rgb/filmic-rgb.xmp b/src/tests/integration/0014-filmic-rgb/filmic-rgb.xmp
deleted file mode 100644
index e145dd6e0..000000000
--- a/src/tests/integration/0014-filmic-rgb/filmic-rgb.xmp
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:darktable="http://darktable.sf.net/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- xmp:Rating="1"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:import_timestamp="1589624592"
- darktable:change_timestamp="1591250911"
- darktable:export_timestamp="-1"
- darktable:print_timestamp="-1"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="8"
- darktable:iop_order_version="2"
- darktable:history_basic_hash="e92e67c2e58a78db9f7a4fbc0951cf52"
- darktable:history_current_hash="7c9d72e3523596f9bd39f4f71c6ce886">
- <darktable:masks_history>
- <rdf:Seq/>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjZhgFowABWAbaAaNgwAEAOQAAEA=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="filmicrgb"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="9a991341cdcc28c1cdcc5c40000000009a999341000000000000c842295cbf40000034426666a63f0000a0400000404103000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0015-shadhi-bilateral/expected.png b/src/tests/integration/0015-shadhi-bilateral/expected.png
deleted file mode 100644
index e04ef8c67..000000000
--- a/src/tests/integration/0015-shadhi-bilateral/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0015-shadhi-bilateral/shadhi-bilateral.xmp b/src/tests/integration/0015-shadhi-bilateral/shadhi-bilateral.xmp
deleted file mode 100644
index db432a9a4..000000000
--- a/src/tests/integration/0015-shadhi-bilateral/shadhi-bilateral.xmp
+++ /dev/null
@@ -1,157 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:darktable="http://darktable.sf.net/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- xmp:Rating="0"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:import_timestamp="1589767202"
- darktable:change_timestamp="1590727425"
- darktable:export_timestamp="1590365245"
- darktable:print_timestamp="-1"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="10"
- darktable:iop_order_version="2"
- darktable:history_auto_hash="b8c7f90a59641f932ce700b5d6d667dc"
- darktable:history_current_hash="e2305d1b8acb0718d15bfa395d3a1f55">
- <darktable:masks_history>
- <rdf:Seq>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1590592984"
- darktable:mask_type="192"
- darktable:mask_name="brush #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJxbds3a/tMsHvuajRb2W0V/2Z3/bWfPqS1jXxWzwxaEGRga7A9/1bBnZGBgUHJztbfytrbfwOhsr+5jZD+1y93e38sFq9qIQk/7tKlO9ip/3e0NTBzte5562c/+5oxVbfR/X/vqSc720e+87Le+crWPFgi0d7ByxKo28nq0PWuLif2O+eH2EZE29r/5Euw3rtPBqlbBN92+dZKIvaxRqr2wqKy9ckam/U9+Hqxqsysz7HeVMNq/XJ1hP8WWzf6NW4b9gfCfdtjUasil2V/Y9d6uYVK6/fPbX+wurEyx3znzFVa1kfvj7V8oPbFjfJRkLzj5md3GOTH2+zc9xKrWwi/Y/obkQ7uPX8PsbUsf2NUv87cv3odd7d8Lnvat/57b7fnlY++z6amd/XI3+/1e2N0AAAPttg8="
- darktable:mask_nb="11"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1590593004"
- darktable:mask_type="12"
- darktable:mask_name="grp retouch"
- darktable:mask_version="6"
- darktable:mask_points="d885ce5eec85ce5e030000000000803f"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- </rdf:Seq>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="mask_manager"
- darktable:enabled="0"
- darktable:modversion="2"
- darktable:params="00000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjYRgFowABWAbaAaNgwAEAPRQAEQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="8"
- darktable:operation="basecurve"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz09eJxjYIAAM6vnNnqyn22E9n235b6aa3cy6rVdRaK9/Y970fYf95bbMzA0QPEoGEqADYnNhCELiVNGIAsAAkoSGQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="9"
- darktable:operation="shadhi"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="00000000000016430000484280c2f53e000048c200000000000084420000c842000048427f000000bd37863501000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- <dc:creator>
- <rdf:Seq>
- <rdf:li>Ralf Brown</rdf:li>
- </rdf:Seq>
- </dc:creator>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0016-lowpass-bilateral/expected.png b/src/tests/integration/0016-lowpass-bilateral/expected.png
deleted file mode 100644
index 9385465d0..000000000
--- a/src/tests/integration/0016-lowpass-bilateral/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0016-lowpass-bilateral/lowpass-bilateral.xmp b/src/tests/integration/0016-lowpass-bilateral/lowpass-bilateral.xmp
deleted file mode 100644
index 44701808f..000000000
--- a/src/tests/integration/0016-lowpass-bilateral/lowpass-bilateral.xmp
+++ /dev/null
@@ -1,157 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:darktable="http://darktable.sf.net/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- xmp:Rating="0"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:import_timestamp="1589767202"
- darktable:change_timestamp="1590731827"
- darktable:export_timestamp="1590365245"
- darktable:print_timestamp="-1"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="10"
- darktable:iop_order_version="2"
- darktable:history_auto_hash="b8c7f90a59641f932ce700b5d6d667dc"
- darktable:history_current_hash="9eaba81af7df0a44d0e4300d71d40c20">
- <darktable:masks_history>
- <rdf:Seq>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1590592984"
- darktable:mask_type="192"
- darktable:mask_name="brush #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJxbds3a/tMsHvuajRb2W0V/2Z3/bWfPqS1jXxWzwxaEGRga7A9/1bBnZGBgUHJztbfytrbfwOhsr+5jZD+1y93e38sFq9qIQk/7tKlO9ip/3e0NTBzte5562c/+5oxVbfR/X/vqSc720e+87Le+crWPFgi0d7ByxKo28nq0PWuLif2O+eH2EZE29r/5Euw3rtPBqlbBN92+dZKIvaxRqr2wqKy9ckam/U9+Hqxqsysz7HeVMNq/XJ1hP8WWzf6NW4b9gfCfdtjUasil2V/Y9d6uYVK6/fPbX+wurEyx3znzFVa1kfvj7V8oPbFjfJRkLzj5md3GOTH2+zc9xKrWwi/Y/obkQ7uPX8PsbUsf2NUv87cv3odd7d8Lnvat/57b7fnlY++z6amd/XI3+/1e2N0AAAPttg8="
- darktable:mask_nb="11"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1590593004"
- darktable:mask_type="12"
- darktable:mask_name="grp retouch"
- darktable:mask_version="6"
- darktable:mask_points="d885ce5eec85ce5e030000000000803f"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- </rdf:Seq>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="mask_manager"
- darktable:enabled="0"
- darktable:modversion="2"
- darktable:params="00000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjYRgFowABWAbaAaNgwAEAPRQAEQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="8"
- darktable:operation="basecurve"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz09eJxjYIAAM6vnNnqyn22E9n235b6aa3cy6rVdRaK9/Y970fYf95bbMzA0QPEoGEqADYnNhCELiVNGIAsAAkoSGQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="9"
- darktable:operation="lowpass"
- darktable:enabled="1"
- darktable:modversion="4"
- darktable:params="00000000000020410000803f000000000000803f0100000001000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- <dc:creator>
- <rdf:Seq>
- <rdf:li>Ralf Brown</rdf:li>
- </rdf:Seq>
- </dc:creator>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0017-monochrome/expected.png b/src/tests/integration/0017-monochrome/expected.png
deleted file mode 100644
index 8a76290bb..000000000
--- a/src/tests/integration/0017-monochrome/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0017-monochrome/monochrome.xmp b/src/tests/integration/0017-monochrome/monochrome.xmp
deleted file mode 100644
index a2fceb4de..000000000
--- a/src/tests/integration/0017-monochrome/monochrome.xmp
+++ /dev/null
@@ -1,157 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:darktable="http://darktable.sf.net/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- xmp:Rating="0"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:import_timestamp="1589767202"
- darktable:change_timestamp="1590731980"
- darktable:export_timestamp="1590365245"
- darktable:print_timestamp="-1"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="10"
- darktable:iop_order_version="2"
- darktable:history_auto_hash="b8c7f90a59641f932ce700b5d6d667dc"
- darktable:history_current_hash="5f8731b395e83d1b1cdbe12236cb189e">
- <darktable:masks_history>
- <rdf:Seq>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1590592984"
- darktable:mask_type="192"
- darktable:mask_name="brush #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJxbds3a/tMsHvuajRb2W0V/2Z3/bWfPqS1jXxWzwxaEGRga7A9/1bBnZGBgUHJztbfytrbfwOhsr+5jZD+1y93e38sFq9qIQk/7tKlO9ip/3e0NTBzte5562c/+5oxVbfR/X/vqSc720e+87Le+crWPFgi0d7ByxKo28nq0PWuLif2O+eH2EZE29r/5Euw3rtPBqlbBN92+dZKIvaxRqr2wqKy9ckam/U9+Hqxqsysz7HeVMNq/XJ1hP8WWzf6NW4b9gfCfdtjUasil2V/Y9d6uYVK6/fPbX+wurEyx3znzFVa1kfvj7V8oPbFjfJRkLzj5md3GOTH2+zc9xKrWwi/Y/obkQ7uPX8PsbUsf2NUv87cv3odd7d8Lnvat/57b7fnlY++z6amd/XI3+/1e2N0AAAPttg8="
- darktable:mask_nb="11"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1590593004"
- darktable:mask_type="12"
- darktable:mask_name="grp retouch"
- darktable:mask_version="6"
- darktable:mask_points="d885ce5eec85ce5e030000000000803f"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- </rdf:Seq>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="mask_manager"
- darktable:enabled="0"
- darktable:modversion="2"
- darktable:params="00000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjYRgFowABWAbaAaNgwAEAPRQAEQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="8"
- darktable:operation="basecurve"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz09eJxjYIAAM6vnNnqyn22E9n235b6aa3cy6rVdRaK9/Y970fYf95bbMzA0QPEoGEqADYnNhCELiVNGIAsAAkoSGQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="9"
- darktable:operation="monochrome"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="5acafa4259234ec1000000409a99193f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- <dc:creator>
- <rdf:Seq>
- <rdf:li>Ralf Brown</rdf:li>
- </rdf:Seq>
- </dc:creator>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0018-perspective-corr/expected.png b/src/tests/integration/0018-perspective-corr/expected.png
deleted file mode 100644
index 0e4ee8a2c..000000000
--- a/src/tests/integration/0018-perspective-corr/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/0018-perspective-corr/perspective-corr.xmp b/src/tests/integration/0018-perspective-corr/perspective-corr.xmp
deleted file mode 100644
index eb7ce8540..000000000
--- a/src/tests/integration/0018-perspective-corr/perspective-corr.xmp
+++ /dev/null
@@ -1,157 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:darktable="http://darktable.sf.net/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- xmp:Rating="0"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:import_timestamp="1589767202"
- darktable:change_timestamp="1590732224"
- darktable:export_timestamp="1590365245"
- darktable:print_timestamp="-1"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="10"
- darktable:iop_order_version="2"
- darktable:history_auto_hash="b8c7f90a59641f932ce700b5d6d667dc"
- darktable:history_current_hash="8bd2627d5b7c97948431c68a2d022f70">
- <darktable:masks_history>
- <rdf:Seq>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1590592984"
- darktable:mask_type="192"
- darktable:mask_name="brush #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJxbds3a/tMsHvuajRb2W0V/2Z3/bWfPqS1jXxWzwxaEGRga7A9/1bBnZGBgUHJztbfytrbfwOhsr+5jZD+1y93e38sFq9qIQk/7tKlO9ip/3e0NTBzte5562c/+5oxVbfR/X/vqSc720e+87Le+crWPFgi0d7ByxKo28nq0PWuLif2O+eH2EZE29r/5Euw3rtPBqlbBN92+dZKIvaxRqr2wqKy9ckam/U9+Hqxqsysz7HeVMNq/XJ1hP8WWzf6NW4b9gfCfdtjUasil2V/Y9d6uYVK6/fPbX+wurEyx3znzFVa1kfvj7V8oPbFjfJRkLzj5md3GOTH2+zc9xKrWwi/Y/obkQ7uPX8PsbUsf2NUv87cv3odd7d8Lnvat/57b7fnlY++z6amd/XI3+/1e2N0AAAPttg8="
- darktable:mask_nb="11"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1590593004"
- darktable:mask_type="12"
- darktable:mask_name="grp retouch"
- darktable:mask_version="6"
- darktable:mask_points="d885ce5eec85ce5e030000000000803f"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- </rdf:Seq>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="mask_manager"
- darktable:enabled="0"
- darktable:modversion="2"
- darktable:params="00000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjYRgFowABWAbaAaNgwAEAPRQAEQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="8"
- darktable:operation="basecurve"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz09eJxjYIAAM6vnNnqyn22E9n235b6aa3cy6rVdRaK9/Y970fYf95bbMzA0QPEoGEqADYnNhCELiVNGIAsAAkoSGQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="9"
- darktable:operation="ashift"
- darktable:enabled="1"
- darktable:modversion="4"
- darktable:params="90eb913f102db23df853e3bd8cc2753d0000c8420000803f0000c8420000803f000000000000000000000000000000000000803f000000000000803f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- <dc:creator>
- <rdf:Seq>
- <rdf:li>Ralf Brown</rdf:li>
- </rdf:Seq>
- </dc:creator>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0019-color-mapping/color-mapping.xmp b/src/tests/integration/0019-color-mapping/color-mapping.xmp
deleted file mode 100644
index 46b7c946f..000000000
--- a/src/tests/integration/0019-color-mapping/color-mapping.xmp
+++ /dev/null
@@ -1,157 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:exif="http://ns.adobe.com/exif/1.0/"
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:darktable="http://darktable.sf.net/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- exif:DateTimeOriginal="2007:09:11 13:53:33"
- xmp:Rating="0"
- xmpMM:DerivedFrom="mire1.cr2"
- darktable:import_timestamp="1589767202"
- darktable:change_timestamp="1590732465"
- darktable:export_timestamp="1590365245"
- darktable:print_timestamp="-1"
- darktable:xmp_version="4"
- darktable:raw_params="0"
- darktable:auto_presets_applied="1"
- darktable:history_end="10"
- darktable:iop_order_version="2"
- darktable:history_auto_hash="b8c7f90a59641f932ce700b5d6d667dc"
- darktable:history_current_hash="8b267448e63ecb2400b0fee0ef9c0a50">
- <darktable:masks_history>
- <rdf:Seq>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1590592984"
- darktable:mask_type="192"
- darktable:mask_name="brush #1"
- darktable:mask_version="6"
- darktable:mask_points="gz02eJxbds3a/tMsHvuajRb2W0V/2Z3/bWfPqS1jXxWzwxaEGRga7A9/1bBnZGBgUHJztbfytrbfwOhsr+5jZD+1y93e38sFq9qIQk/7tKlO9ip/3e0NTBzte5562c/+5oxVbfR/X/vqSc720e+87Le+crWPFgi0d7ByxKo28nq0PWuLif2O+eH2EZE29r/5Euw3rtPBqlbBN92+dZKIvaxRqr2wqKy9ckam/U9+Hqxqsysz7HeVMNq/XJ1hP8WWzf6NW4b9gfCfdtjUasil2V/Y9d6uYVK6/fPbX+wurEyx3znzFVa1kfvj7V8oPbFjfJRkLzj5md3GOTH2+zc9xKrWwi/Y/obkQ7uPX8PsbUsf2NUv87cv3odd7d8Lnvat/57b7fnlY++z6amd/XI3+/1e2N0AAAPttg8="
- darktable:mask_nb="11"
- darktable:mask_src="0000000000000000"/>
- <rdf:li
- darktable:mask_num="0"
- darktable:mask_id="1590593004"
- darktable:mask_type="12"
- darktable:mask_name="grp retouch"
- darktable:mask_version="6"
- darktable:mask_points="d885ce5eec85ce5e030000000000803f"
- darktable:mask_nb="1"
- darktable:mask_src="0000000000000000"/>
- </rdf:Seq>
- </darktable:masks_history>
- <darktable:history>
- <rdf:Seq>
- <rdf:li
- darktable:num="0"
- darktable:operation="mask_manager"
- darktable:enabled="0"
- darktable:modversion="2"
- darktable:params="00000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="1"
- darktable:operation="rawprepare"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="1e000000120000000600000002000000060406040204020420350000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="2"
- darktable:operation="temperature"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="006007400000803f0000b33f0000c07f"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="3"
- darktable:operation="demosaic"
- darktable:enabled="1"
- darktable:modversion="3"
- darktable:params="0000000000000000000000000000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="4"
- darktable:operation="colorin"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz48eJzjYRgFowABWAbaAaNgwAEAPRQAEQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="5"
- darktable:operation="colorout"
- darktable:enabled="1"
- darktable:modversion="5"
- darktable:params="gz35eJxjZBgFo4CBAQAEEAAC"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="6"
- darktable:operation="gamma"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="0000000000000000"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="7"
- darktable:operation="flip"
- darktable:enabled="1"
- darktable:modversion="2"
- darktable:params="ffffffff"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="8"
- darktable:operation="basecurve"
- darktable:enabled="1"
- darktable:modversion="6"
- darktable:params="gz09eJxjYIAAM6vnNnqyn22E9n235b6aa3cy6rVdRaK9/Y970fYf95bbMzA0QPEoGEqADYnNhCELiVNGIAsAAkoSGQ=="
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- <rdf:li
- darktable:num="9"
- darktable:operation="colormapping"
- darktable:enabled="1"
- darktable:modversion="1"
- darktable:params="gz04eJzt2gtUVdW+x/EZIqKSoZGhlzzEQSNDQ0Ujn3styVDJyMjQSNGMfEdESmiI5lvylSEqGakZESohEr6QiBCNkJSMPGioRGRoaGhkxLlf7/qPy2ofTG2cO84Yd7jG+IzFwr3n/M/f/rPm3sPdRCnVBGvXBujLcybr6n8Ov35K5aNtf35GFOKwHfk4hSv9VUzzATxmgIpx4/wg5z6c/TgHch7LeSrnqAHK8jo/Lx6gspdzHcd1AtcbuU7iejvXO7new/UnA1RZrkWtOGhRlkKLSvzaospOWJRruUUVVVpU9Y/8rtqiAi5ZVFgtv/8dSlORNpoqstVUiJ2mMu015dhSUxNu11T2HZoKaK2pMCdNrbhbU67tNJXaXlMWF03Fd+Dxf9NUtatG/TzHXVOJHTXldR/P89DUovs15fyAppI8NeXTVWN9jOGlqaBumqrszjg9GKenpux7MdZDjOWjKY+Hmb834/VhvH6aKkFif8a0aKoW2Rrj6ozrq6kyJD1CbYMY/1FN5fsx/mDGH0KdQ5kDqf7MMYw5Hmd9CHnC4DGcuhETqCm/p5hrBHMh8WnWHcR8I5kP2aOY7xkyCGbOZ5kTSaOZc4zBJ4R1jWVusWIc8z/H/OOZH6nPk20oNbxgsJ9AHSJ+IrVMopbJ1CIyp1DTVGqaRk0vUpNIDKOul6grnLqQ/TJ1RVDXK9Q1nbqQNIOaIqnpVWqJopaZ1DLLUPkatURTy2xNzYvhGv5zNOU0V1OlsLyuqc2wn0dtiJ+vqTqELNBULmIXaipwEfUhZjH1LdFUCiKWUh8SYzVl+4amCuC1jBoRvJw64b6CWlGF9JXUu4p64fsmNcNhNXWjGD5vaSoBKk5T45EPzzWaqkFQvKb2Cte1rAOV8F/H2uC0nvWhFJYEg/3bmpqCInhvYF0i5B1DLjwSWR+qEfguaxQuG1kryuG3ifXCcTNrRgn6vmdIhO0WXh8UwOt9Ta1GrQhOIge4f0AOqEJAMlkI5w81NQtl8E0hEzhsNYShGAnbyGS7IV94pvIaowZBH5ELXNPIBZXw30EucEo3RKIUlp281sI+g3xEEbw/Jh/UISTTkAuPXWQkqhG4m4yEyx5yEuXw20tWwnGfIUKUoG+WIRG2+w0TUCC8sskPtSL4E0M23HPIUFQh4FMyhHOuYRbKhO9nZAmHPHIUxfA5YEgQKp9eE/nwPEiuogZBhwx74fo5+YpK+BcYUuH0hSESpcJSSM7C/jA5iyJ4FxniUSdCvjTkwuOIIRbVIvCoIRMuxYYYlAu/rwwpcDxmiBAl6Pu1IVHYlpC9KBBe35C/qEXwcUO2cP8H+aMKAaWGdDifIH9RBt+T5A+Hb8leFMOnjNyhThnGIx+ep8kcNQg6Q95wLSdrUYnU78i4goxRCsv3ZAv7SnJFEbx/IFPUIeQsWcLjR3JENQKryA8u58gO5fA7T2aI+ImcRN9qMsKEC+QCr4tkgloE/0wWcK8hC1Qh4BI5wPmyoQy+v5ABHGpZP4rh8yvrh7rC2pEPz99YO2oQVMe6fzdUwr+edcPpn6wbpXBVuhqOechAJdrfpit/RCMVp8UgG0MkStGqia4sCMdmHIO9ra56Ywo2oAg2TXXljVDE4xDq0NVO532CrlaJy/BoZhiFWFTDzd6wAJk4C5fmuhqGGJGGti105YcopOAkHFvqSkcEtogWDrrqK6YhEUdge7uuemEC1qFeeLXS1TisRp6oRec7dBWMZbgId0ddjcAisRtV6NBa572PruYiHRVwbqOrIWKbKEObO3Xli+lIEg5Ohv4Iw0YUw+4uXflgEhJQCNXW0B3jEYd8XIHn3boajRXIETXo5KyrICzBXpyHazv6AvOQISrRvj29gWikwum/DIMQiWSUopULvSHCsRnHYH8P/YEp2IAi2HQweCMU8TiEOnT9Gz2CVSIXl+HhSo8gFlmohtu9ugrEAmSKsxjmZohBGsrR9u/0CqKQgpNwdKdXECG2oAQtOtIrmIZEHIFtJ3pFTMA6FKAeXvfRL1iNPNSiswe9gmXIxkW4328YgUXYjSp06Ey/YC7SUSGcH6BfMAvbUCbaeNIzmI4kcRwOXegZhImNKIZdV4MPJokEFAr1IP0jxiMO+eIKPL0Mo8UK5Iga0akbPSWWYK84D9fuhuGYJzJQKdr3oMdEtEgVp4WTt2GQiBTJKBWtehosIlxsFseEfS9DbzEFG0QRbB5q4C1CES8OiTrR1ccQIlYhV1wWHg8bRolYkSWq4dbbEGiyAJnirHDpYxiGGJEmykXbvvS7iBIp4qRw7GfQTSLEFlEiWvTnb0JME4niiLAdYOhlMkGsMykQ9cLLYhhnslrkmdSKzlqDYLFMZJtcFO66YYRYZLLbpEp0GNggwGSuSDepMHH2bTDEZJbJNpMykzaPNPC1Mt0kyeS4FYdBf9TfJMxko5ViK3aPNvBpxCQrCVYKG6H8/qh7I8ZbiWtEfiOuNMJz8L8abWVFI3IaUdOITkP+KKgRS65hbyPOW3Ed2rjhVuZdQ0YjKq209/9X/tcQbSXVymkTp8caDDKJtJIsSk1aDTNYTMJNNpscM7F/vEFvkylig0mRiU1AA28RahIvDpnUia5PNAgRq0xyxWUTj+ENRolYkyyTahO3JxsEmiwwyRRnrbgEGoaZxJikiXKTtk/9kZ+IspJictLEcUQD3STCZItJiUmLpw19rUwzSTQ5ImyDGvQymWCyzqRA1Jt4jWwwzmS1SZ6oNek8qkGwWCayxUXh/oxhhFgkdosq0SHYEIC5Il1UCOdn2WPELLFNlKHNaIOvmI4kk+PCYQz7hAjDRlEs7EK494tJIkEUCjXW0F2MF3Em+eKK8BxnGG2ywiRH1IhOzzUIMllislecN3Ed/0fDTeaZZJhUivbPN/A3iRap4rSJU6hhkIg0SUapaPWCwYJwsVkcE/YTDL3FFLFBFMFmosFbhIp4HBJ16DrJECJWiVxxWXhMNowSsSJLVMNtiiFQLBCZ4ixcphqGiRiRJspF22kGPxElUsRJ4fiiQRcRYosoES3CDH3FNJEojpjYvmToJSaYrBMFot7EK9wwTqw2yTOptdL55QbBjVhmJbsRF6/BPeLaRvyJRX9i93VU3YQOr9ycgJs09yal34SKG+Q8/fqG3IBZf2LbdZRdR5sZ1+Z7HdOvI+kGHL8JDpE3p/8NCPsTG60UC7tXDT6YhAQUQkWxz4l8XIHnTPYv5KDTLPYoLMF5uL7GvoN5yED7aPYTRCMVp+E0m70CyWgWw3MwXEzG28jAYdw2hzHQA88jGmtwEKfhNFdXXTAIY7ASySjFJdz3uq5GYin24Rjs57HX4EnMxwYUwWY++wseQyji8REOoQ53LdDVo3gVq/AhTuAy7lioKw0vIxZZqEbzRewjCMQCvINMnEWTxewf6IkXsBZpKMfveHCJrsYiCik4Ccelurofz+AN7McF9I1lD0AijuCeN7jfYw52oB6Dl+lqJvLQermuBuIVfIMRK3T1Lpqu1NVEfIFuq3T1Fg7A9016Gx1X62ox7N7S1RNIwPdoF6eroXgN+bhzja4+wJJ4XZ3ZoDeN9dF6DonR7UPmaoUvxWnPlednLd50cb+yOnqM6aZ1+36O9sDASdr4ks5aRdx6S8xnTTXrx80uDu3X8k29/6VzlgHW/3bruHX8fz5uuwE2N6CJFdvraCrs/oJmsG9EcystrqElHMTtJq3EHSaOaI02uBNOuAttcTec0Q7t4YIOcIUb3NEJ98EDneGJrvBCD/SCD3qjH67egK5+wWkQhmIYhuMpjMQzGI2xGI/JmIZwvIIZmIlozMF8LMRSLMNKvIV4rEMCNiARm7AFSSIZW5GKNKRjJz5GJnZjD/ZiH7LE1RtxNj5BDj4VucgTB5CPgzgkPhcF+EIcNinClziCo/gKx0QJvsFxlOIETuJblOEUTuMMvkMFKvEDzqIK5/ATLuAianAZv+I31KEeV/8omqApmqE5HHAHWsMJd6MdXOAKN3SEBzrjQXRHT/igD/pBhy/88BgC8AQCMQKjMAbjEIqJmIIwhOMVRCIKszAbc7AAixCL5ViJNxGHtViPt/EONmIztiAJydiKj7ADO7ELe7AP+5GDPHyOQhxBCUrxLc6gAmdRjUu4gnrYcAOxQ0s4wgnOcIErOqELesAHAzAQj8IfAXgKQXgWzyEUk/EiwjEDr2I2XsdCLMEyrEIc1iERW5CM7diBDOzCPuQgD4dwGEfxNU7gDL7HOfyMWtSjCTfEZmgJR7SFC9zgAU94ozc0PIKhCEAgRmIcQjEF4ZiBaMzHUqzEGryNd5GEFKQiHRnYhSx8ijwcRAEK8SW+QgmOoxRlOINyVKASP+BHnMNPuICLqMElXBa1uILfUId62RRugw2awBZ2aAZ7NEdLOKAVHNEGd8IJd6Et7oYz2qE9XHAPOsAV98INfxcd0Qn3wQP3ozO6iK54EF7ohu7oAW/0RC/xEHzwsOiNPqIv+qE/BggLNOgYKHzxCAbBTwzGEDEU/mIYHkeAGC6exFPiaREkRmIUnkEwnsVohGAsxuE5MR7PIxQviAmYiEmYjCmYKqYhDC+JcPGyiMArmC5miEi8KqIwE7MQLWZjjpgrXsc8zBcLsBCLxBKxFLF4A8uwXKzAKvEmVuMtxGEN4rEW68R6JGAD3hGJ4l2xEZvEZryHLSJJfCCSxYfYKrZhO1LFR0gz2WGSjp3IEB8jE7tN9pjsxT6TLLEf2fjEJEd8KnLxmcgTB5CPg+KQKDD5wqQQh0URvhRHUSy+wjF8LUpMvjE5Lv6BUpzASfEtykxOidPijCgX36FCfG/ygziLH1GFc+K8qBYXcBE/owaX8QtqcUXUmfyOevwTV9/k3oYmsIUd7NEcLeCAVnBEa7SBE9rCGe3hgg64F25wRyfcj87wRBd4oQe80QsPid7oi34YAA0D8QgexWAMxWN4HE/gSQRiBJ7GSATjWYRgHMbjBUwUkzEVYQjHy4jAdMxAJKLwGmIwF/MwHwuxGEsRK5ZhOVZgJd7EasRhDdZiHdYjARvwDt7FRmzCZryH95GED5CMD0UKtmIbtotUfIQ0sQM7TTLwMTKxC7uxR+zFPmRhPz4Rn4pc5OEADuIQClCIIhzFV/ga36AUJ3EKp3EG36EClTiLKvyEC/gZl/ELavErfkMd6nH1A9RtsEETNBXN0Bwt0BIOuB2tcAcc0QZ3wgltcTfaif8SLrgHHfA3uOJe/B3uoiM64T5xv3gAnugqvNAN3dED3uiJXngIPnjYpA/6oT8GwAIdA+GLRzAIfhiMofDH4xiOpxCEUQjGGIzFcwjFREzGVLyIlxCOCExHJF7FTERjNmIwF69jPhZiERZjCWLxBpZjBVaKVWI11mCtWI8EbEAiNopN2Iz38D4+QDJSsBWpSMMOpGMnPsYu7ME+ZCEbOfgMB3AQn+MLFKEYJTiBUyhHJc7hAmpwBVc/pNvBAa1xF9qjAzqiMx5ET/SBjsEIxGhMQDhmYh4W4w2sQhzW4x1sxCZsFu9dx5b/gPf/TZL+gg/+RPJf8OFflPJvtvUmbTPZfgNS/w98dIPSGrHjBqRjp8gQH1vJNNmF3WKv2CeyxH5ki09EDj7FZ+IA8nFIFIgvUIjDKBJfiiPiKIrFVziGEvGNOI5/iFKTE+KkKBOncFqcMSnHd6jA96gUP4iz4kdU4RzO4ydcwEXxM2pwCZfxC2rFryZXTH4Tdfhd1Jv885Zbbrnllltu+Y+7t9Wd+sLV67RSV5vsyCnTtWen7t/fU9Ve/W+tPxzeEactVc0ctWlj3LSuh9Ms819cankyp/+/fMegS5cu/Y8eGd6fT8T/+x2D/wY6q0xN"
- darktable:multi_name=""
- darktable:multi_priority="0"
- darktable:blendop_version="9"
- darktable:blendop_params="gz11eJxjYGBgkGAAgRNODGiAEV0AJ2iwh+CRyscOAAdeGQQ="/>
- </rdf:Seq>
- </darktable:history>
- <dc:creator>
- <rdf:Seq>
- <rdf:li>Ralf Brown</rdf:li>
- </rdf:Seq>
- </dc:creator>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
diff --git a/src/tests/integration/0019-color-mapping/expected.png b/src/tests/integration/0019-color-mapping/expected.png
deleted file mode 100644
index 2b2c0b182..000000000
--- a/src/tests/integration/0019-color-mapping/expected.png
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/README.txt b/src/tests/integration/README.txt
deleted file mode 100644
index c23aab96c..000000000
--- a/src/tests/integration/README.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-
-Structure
----------
-
-images/ : a directory containing test images
-
-run.sh : main driver
-
-deltae : python script to compute a delta-E between 2 images
- expected.jpg and output.jpg
-
-nnnn-name/ : tests
-
-How to add a new test (using default driver)
---------------------------------------------
-
-1. Create a new directory
-
- <nnnn>-<meaningful name>
-
-2. Start darktable, open one test image (or add a new one if needed)
-
-3. Do a dev using whatever module
-
-4. Copy the resulting .xmp into <nnnn>-<meaningful name>
-
- And rename it <meaningful name>.xmp
-
-5. Do a first run of the test to get the expected output
-
- ./run <dir>
-
- And rename output.jpg to expected.jpg and double check that
- expected.jpg is correct and really the expected output.
-
-6. Test that all is ok by running:
-
- ./run <dir>
-
- All values must be 0 as there is no change in darktable, so the
- expected output should be exactly the same image as the output.
-
- $ ./run.sh 0001-exposure
- Test ./0001-exposure
- image mire1.cr2
- Max dE 0.0000
- OK
-
-7. If all goes well commit the .xmp and expected.jpg files
-
-
-
-How to add a new test (using specific driver)
---------------------------------------------
-
-1. Create a new directory
-
- <nnnn>-<meaningful name>
-
-2. Create a file named test.sh into this directory
-
- This test.sh is a specific driver that can do whatever is necessary
- for the test. At the end the driver must return 0 if all is OK and
- 1 otherwise.
diff --git a/src/tests/integration/deltae b/src/tests/integration/deltae
deleted file mode 100755
index acbcf406a..000000000
--- a/src/tests/integration/deltae
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/python3
-
-# Requires:
-# python3-opencv
-# python3-numpy
-# python3-colour (recent version needed, see below):
-# pip3 install colour-science
-
-# Maximum delta allowed, above this value the difference can be detected
-MAX_DELTA_E = 2.0
-
-import cv2
-import colour
-import numpy
-import os
-import sys
-
-expected = sys.argv[1]
-output = sys.argv[2]
-
-expected_rgb = cv2.imread(expected)
-output_rgb = cv2.imread(output)
-
-expected_lab = cv2.cvtColor(expected_rgb, cv2.COLOR_RGB2Lab)
-output_lab = cv2.cvtColor(output_rgb, cv2.COLOR_RGB2Lab)
-
-delta_E = colour.delta_E(expected_lab, output_lab)
-
-max_dE = numpy.max(delta_E)
-mean_dE = numpy.mean(delta_E)
-count_above = 0
-
-print(" Max dE %.4f" % max_dE)
-
-if(max_dE > MAX_DELTA_E):
- count_above = numpy.sum(delta_E >= MAX_DELTA_E)
- print(" Mean dE %.4f" % mean_dE)
- print(" Count above max %d" % count_above)
- exit(2)
-
-if max_dE < 0.01:
- exit(0)
-else:
- exit(1)
diff --git a/src/tests/integration/images/mire1.cr2 b/src/tests/integration/images/mire1.cr2
deleted file mode 100644
index f0d044c87..000000000
--- a/src/tests/integration/images/mire1.cr2
+++ /dev/null
Binary files differ
diff --git a/src/tests/integration/run.sh b/src/tests/integration/run.sh
deleted file mode 100755
index 5802a4e80..000000000
--- a/src/tests/integration/run.sh
+++ /dev/null
@@ -1,147 +0,0 @@
-#!/bin/bash
-
-CDPATH=
-
-PATTERN="[0-9]*"
-
-[ ! -z $1 ] && PATTERN="$(basename $1)"
-
-CLI=darktable-cli
-TEST_IMAGES=$PWD/images
-
-TEST_COUNT=0
-TEST_ERROR=0
-COMPARE=$(which compare)
-
-[ -z $(which $CLI) ] && echo Make sure $CLI is in the path && exit 1
-
-for dir in $(ls -d $PATTERN); do
- echo Test $dir
- TEST_COUNT=$((TEST_COUNT + 1))
-
- if [ -f $dir/test.sh ]; then
- # The test has a specific driver
- (
- $dir/test.sh
- )
-
- if [ $? = 0 ]; then
- echo " OK"
- else
- echo " FAILS: specific test"
- TEST_ERROR=$((TEST_ERROR + 1))
- fi
-
- else
- # A standard test
- # - xmp to create the output
- # - expected. is the expected output
- # - a diff is made to compute the max Delta-E
- (
- cd $dir
-
- # remove leading "????-"
-
- TEST=${dir:5}
-
- [ ! -f $TEST.xmp ] &&
- echo missing $dir.xmp && exit 1
-
- [ ! -f expected.png ] && echo " missing expected.png"
-
- IMAGE=$(grep DerivedFrom $TEST.xmp | cut -d'"' -f2)
-
- echo " Image $IMAGE"
-
- # Remove previous output and diff if any
-
- rm -f output*.png diff*.png
-
- # Create the output
- #
- # Note that we force host_memory_limit has this will have
- # impact on the tiling and will change the output.
- #
- # This means that the tiling algorithm is probably broken.
- #
-
- # All common core options:
- CORE_OPTIONS="--conf host_memory_limit=8192 \
- --conf worker_threads=4 -t 4 \
- --conf plugins/lighttable/export/force_lcms2=FALSE \
- --conf plugins/lighttable/export/iccintent=0"
-
- $CLI --width 2048 --height 2048 \
- --hq true --apply-custom-presets false \
- "$TEST_IMAGES/$IMAGE" "$TEST.xmp" output.png \
- --core --disable-opencl $CORE_OPTIONS 1> /dev/null 2> /dev/null
-
- res=$?
-
- $CLI --width 2048 --height 2048 \
- --hq true --apply-custom-presets false \
- "$TEST_IMAGES/$IMAGE" "$TEST.xmp" output-cl.png \
- --core $CORE_OPTIONS 1> /dev/null 2> /dev/null
-
- res=$((res + $?))
-
- # If all ok, check Delta-E
-
- if [ $res -eq 0 ]; then
- if [ ! -z $COMPARE ]; then
- diffcount="$(compare output.png output-cl.png -metric ae diff-cl.png 2>&1 )"
-
- if [ $? -ne 0 ]; then
- echo " CPU & GPU version differ by ${diffcount} pixels"
- fi
- fi
-
- if [ -f expected.png ]; then
- ../deltae expected.png output.png
- else
- false
- fi
-
- res=$?
-
- if [ $res -lt 2 ]; then
- echo " OK"
- if [ $res = 1 ]; then
- diffcount="$(compare expected.png output.png -metric ae diff-ok.png 2>&1 )"
- fi
- res=0
-
- else
- echo " FAILS: image visually changed"
- if [ ! -z $COMPARE -a -f expected.png ]; then
- diffcount="$(compare expected.png output.png -metric ae diff.png 2>&1 )"
- echo " see diff.jpg for visual difference"
- echo " (${diffcount} pixels changed)"
- fi
- fi
-
- else
- echo " FAILS : darktable-cli errored"
- fi
-
- if [ ! -f expected.png ]; then
- echo " copy output.png to expected.png"
- echo " check that expected.png is correct:"
- echo " \$ eog $(basename $PWD)/expected.png"
- cp output.png expected.png
- fi
-
- exit $res
- )
-
- if [ $? -ne 0 ]; then
- TEST_ERROR=$((TEST_ERROR + 1))
- fi
- fi
-
- echo
-done
-
-echo
-echo "Total test $TEST_COUNT"
-echo "Errors $TEST_ERROR"
diff --git a/src/version_gen.c b/src/version_gen.c
index 710ede20d..e5f16cc43 100644
--- a/src/version_gen.c
+++ b/src/version_gen.c
@@ -2,13 +2,13 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
- const char darktable_package_version[] = "3.0.2";
- const char darktable_package_string[] = PACKAGE_NAME " 3.0.2";
+ const char darktable_package_version[] = "3.2.1";
+ const char darktable_package_string[] = PACKAGE_NAME " 3.2.1";
const char darktable_last_commit_year[] = "2020";
#else
#define DT_MAJOR 3
- #define DT_MINOR 0
- #define DT_PATCH 2
+ #define DT_MINOR 2
+ #define DT_PATCH 1
#define DT_N_COMMITS 0
#define LAST_COMMIT_YEAR "2020"
#endif