From 0843c601cbb9a9bb5774ed01b7d90e68fd17950a Mon Sep 17 00:00:00 2001
From: Antonio Rojas <arojas@archlinux.org>
Date: Sun, 18 Dec 2022 15:59:51 +0100
Subject: [PATCH] Fix build with libraw 0.21

---
 src/kdcraw.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/kdcraw.cpp b/src/kdcraw.cpp
index 376a37d..1433c4b 100644
--- libkdcraw/kdcraw.cpp
+++ libkdcraw/kdcraw.cpp
@@ -357,7 +357,11 @@ bool KDcraw::extractRAWData(const QString& filePath, QByteArray& rawData, DcrawI
     d->setProgress(0.3);
 
     raw.imgdata.params.output_bps  = 16;
+#if LIBRAW_COMPILE_CHECK_VERSION_NOTLESS(0, 21)
+    raw.imgdata.rawparams.shot_select = shotSelect;
+#else
     raw.imgdata.params.shot_select = shotSelect;
+#endif
     ret                            = raw.unpack();
 
     if (ret != LIBRAW_SUCCESS)


From 3b7d0f2cbf66b06e12c57be26b262b71d8030d1a Mon Sep 17 00:00:00 2001
From: Boudewijn Rempt <boud@valdyas.org>
Date: Fri, 31 Aug 2018 11:04:18 +0200
Subject: [PATCH] Fix build with dcraw 0.19

Port of https://phabricator.kde.org/D15132
---
 .../raw/3rdparty/libkdcraw/src/kdcraw_p.cpp   |  8 ++++++
 .../libkdcraw/src/rawdecodingsettings.h       | 28 +++++++++++--------
 2 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/plugins/impex/raw/3rdparty/libkdcraw/src/kdcraw_p.cpp b/plugins/impex/raw/3rdparty/libkdcraw/src/kdcraw_p.cpp
index 1c761f85632..adc26d26628 100644
--- libkdcraw/kdcraw_p.cpp
+++ libkdcraw/kdcraw_p.cpp
@@ -375,6 +375,7 @@ bool KDcraw::Private::loadFromLibraw(const QString& filePath, QByteArray& imageD
             raw.imgdata.params.fbdd_noiserd = lround(m_parent->m_rawDecodingSettings.NRThreshold / 100.0);
             break;
         }
+#if !LIBRAW_COMPILE_CHECK_VERSION_NOTLESS(0, 19)
         case RawDecodingSettings::LINENR:
         {
             // (100 - 1000) => (0.001 - 0.02) conversion.
@@ -391,23 +392,28 @@ bool KDcraw::Private::loadFromLibraw(const QString& filePath, QByteArray& imageD
             raw.imgdata.params.cfa_clean    = true;
             break;
         }
+#endif
         default:   // No Noise Reduction
         {
             raw.imgdata.params.threshold    = 0;
             raw.imgdata.params.fbdd_noiserd = 0;
+#if !LIBRAW_COMPILE_CHECK_VERSION_NOTLESS(0, 19)
             raw.imgdata.params.linenoise    = 0;
             raw.imgdata.params.cfaline      = false;
             raw.imgdata.params.lclean       = 0;
             raw.imgdata.params.cclean       = 0;
             raw.imgdata.params.cfa_clean    = false;
+#endif
             break;
         }
     }
 
+#if !LIBRAW_COMPILE_CHECK_VERSION_NOTLESS(0, 19)
     // Chromatic aberration correction.
     raw.imgdata.params.ca_correc  = m_parent->m_rawDecodingSettings.enableCACorrection;
     raw.imgdata.params.cared      = m_parent->m_rawDecodingSettings.caMultiplier[0];
     raw.imgdata.params.cablue     = m_parent->m_rawDecodingSettings.caMultiplier[1];
+#endif
 
     // Exposure Correction before interpolation.
     raw.imgdata.params.exp_correc = m_parent->m_rawDecodingSettings.expoCorrection;
@@ -461,8 +467,10 @@ bool KDcraw::Private::loadFromLibraw(const QString& filePath, QByteArray& imageD
 
     raw.imgdata.params.dcb_iterations = m_parent->m_rawDecodingSettings.dcbIterations;
     raw.imgdata.params.dcb_enhance_fl = m_parent->m_rawDecodingSettings.dcbEnhanceFl;
+#if !LIBRAW_COMPILE_CHECK_VERSION_NOTLESS(0, 19)
     raw.imgdata.params.eeci_refine    = m_parent->m_rawDecodingSettings.eeciRefine;
     raw.imgdata.params.es_med_passes  = m_parent->m_rawDecodingSettings.esMedPasses;
+#endif
 
     //-------------------------------------------------------------------------------------------
 
diff --git a/plugins/impex/raw/3rdparty/libkdcraw/src/rawdecodingsettings.h b/plugins/impex/raw/3rdparty/libkdcraw/src/rawdecodingsettings.h
index 6d7c1063dba..5916fb2260c 100644
--- libkdcraw/rawdecodingsettings.h
+++ libkdcraw/rawdecodingsettings.h
@@ -54,8 +54,6 @@ public:
 
     /** RAW decoding Interpolation methods
      *
-     * NOTE: from original dcraw demosaic
-     * 
      *  Bilinear: use high-speed but low-quality bilinear
      *            interpolation (default - for slow computer). In this method,
      *            the red value of a non-red pixel is computed as the average of
@@ -71,37 +69,38 @@ public:
      *  AHD:      use Adaptive Homogeneity-Directed interpolation.
      *            This method selects the direction of interpolation so as to
      *            maximize a homogeneity metric, thus typically minimizing color artifacts.
+     *  DCB:      DCB interpolation (see http://www.linuxphoto.org/html/dcb.html for details)
      * 
-     * NOTE: from GPL2 demosaic pack.
+     * NOTE: from GPL2/GPL3 demosaic packs - will not work with libraw>=0.19
      * 
-     *  DCB:      DCB interpolation (see http://www.linuxphoto.org/html/dcb.html for details)
      *  PL_AHD:   modified AHD interpolation (see http://sites.google.com/site/demosaicalgorithms/modified-dcraw
      *            for details).
      *  AFD:      demosaicing through 5 pass median filter from PerfectRaw project.
      *  VCD:      VCD interpolation.
      *  VCD_AHD:  mixed demosaicing between VCD and AHD.
      *  LMMSE:    LMMSE interpolation from PerfectRaw.
-     * 
-     * NOTE: from GPL3 demosaic pack.
-     * 
      *  AMAZE:    AMaZE interpolation and color aberration removal from RawTherapee project.
+     *
+     * NOTE: for libraw>=0.19 only
+     * 
+     *  DHT:      DHT interpolation.
+     *  AAHD:     Enhanced Adaptative AHD interpolation.
      */
     enum DecodingQuality
     {
-        // from original dcraw demosaic
         BILINEAR = 0,
         VNG      = 1,
         PPG      = 2,
         AHD      = 3,
-        // Extended demosaicing method from GPL2 demosaic pack
         DCB      = 4,
         PL_AHD   = 5,
         AFD      = 6,
         VCD      = 7,
         VCD_AHD  = 8,
         LMMSE    = 9,
-        // Extended demosaicing methods from GPL3 demosaic pack
-        AMAZE    = 10
+        AMAZE    = 10,
+        DHT      = 11,
+        AAHD     = 12
     };
 
     /** White balances alternatives
@@ -261,6 +260,7 @@ public:
     int NRThreshold;
 
     /** Turn on chromatic aberrations correction
+     *  @deprecated does not work with libraw>=0.19
      */
     bool enableCACorrection;
 
@@ -268,6 +268,7 @@ public:
      *  - caMultiplier[0] = amount of correction on red-green axis.
      *  - caMultiplier[1] = amount of correction on blue-yellow axis.
      *  - Both values set to 0.0 = automatic CA correction.
+     *  @deprecated does not work with libraw>=0.19
      */
     double caMultiplier[2];
 
@@ -334,17 +335,20 @@ public:
     /// For VCD_AHD interpolation.
 
     /** Turn on the EECI refine for VCD Demosaicing.
+     *  @deprecated does not work with libraw>=0.19
      */
     bool eeciRefine;
 
     /** Use edge-sensitive median filtering for artifact supression after VCD demosaicing.
      * 0   : disable (default)
      * 1-10 : median filter passes.
+     * @deprecated does not work with libraw>=0.19
      */
     int esMedPasses;
 
     /** For IMPULSENR Noise reduction. Set the amount of Chrominance impulse denoise.
-        Null value disable NR. Range is between 100 and 1000.
+     *  Null value disable NR. Range is between 100 and 1000.
+     *  @deprecated does not work with libraw>=0.19
      */
     int NRChroThreshold;
 
