[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/graphics/digikam/libs/dimg/filters
From:       Gilles Caulier <caulier.gilles () gmail ! com>
Date:       2009-11-24 18:09:48
Message-ID: 1259086188.425998.5727.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1053733 by cgilles:

using d private internal class


 M  +45 -20    waveletsnr.cpp  
 M  +5 -6      waveletsnr.h  


--- trunk/extragear/graphics/digikam/libs/dimg/filters/waveletsnr.cpp \
#1053732:1053733 @@ -38,13 +38,38 @@
 namespace Digikam
 {
 
+class WaveletsNRPriv
+{
+public:
+
+    WaveletsNRPriv()
+    {
+        for (int c = 0 ; c < 3; c++)
+        {
+            fimg[c]   = 0;
+            buffer[c] = 0;
+        }
+    }
+
+    float*              fimg[3];
+    float*              buffer[3];
+
+    WaveletsNRContainer settings;  
+};
+  
 WaveletsNR::WaveletsNR(DImg *orgImage, QObject *parent, const WaveletsNRContainer& \
                settings)
-          : DImgThreadedFilter(orgImage, parent, "WaveletsNR")
+          : DImgThreadedFilter(orgImage, parent, "WaveletsNR"),
+            d(new WaveletsNRPriv)
 {
-    m_settings = settings;
+    d->settings = settings;
     initFilter();
 }
 
+WaveletsNR::~WaveletsNR()
+{
+    delete d;
+}
+
 void WaveletsNR::filterImage()
 {
     DColor col;
@@ -57,10 +82,10 @@
     // Allocate buffers.
 
     for (int c = 0; c < 3; c++)
-        m_fimg[c] = new float[width * height];
+        d->fimg[c] = new float[width * height];
 
-    m_buffer[1] = new float[width * height];
-    m_buffer[2] = new float[width * height];
+    d->buffer[1] = new float[width * height];
+    d->buffer[2] = new float[width * height];
 
     // Read the full image and convert pixel values to float [0,1].
 
@@ -71,9 +96,9 @@
         for (int x = 0; !m_cancel && (x < width); x++)
         {
             col          = m_orgImage.getPixelColor(x, y);
-            m_fimg[0][j] = col.red()   / clip;
-            m_fimg[1][j] = col.green() / clip;
-            m_fimg[2][j] = col.blue()  / clip;
+            d->fimg[0][j] = col.red()   / clip;
+            d->fimg[1][j] = col.green() / clip;
+            d->fimg[2][j] = col.blue()  / clip;
             j++;
         }
     }
@@ -84,7 +109,7 @@
 
     if (!m_cancel)
     {
-        srgb2ycbcr(m_fimg, width * height);
+        srgb2ycbcr(d->fimg, width * height);
     }
 
     postProgress( 20 );
@@ -93,11 +118,11 @@
 
     for (int c = 0; !m_cancel && (c < 3); c++)
     {
-        m_buffer[0] = m_fimg[c];
+        d->buffer[0] = d->fimg[c];
 
-        if (m_settings.thresholds[c] > 0.0)
+        if (d->settings.thresholds[c] > 0.0)
         {
-            waveletDenoise(m_buffer, width, height, m_settings.thresholds[c], \
m_settings.softness[c]); +            waveletDenoise(d->buffer, width, height, \
d->settings.thresholds[c], d->settings.softness[c]);  
             progress = (int) (30.0 + ((double)c * 60.0) / 4);
             if ( progress%5 == 0 )
@@ -109,7 +134,7 @@
 
     if (!m_cancel)
     {
-        ycbcr2srgb(m_fimg, width * height);
+        ycbcr2srgb(d->fimg, width * height);
     }
 
     postProgress( 80 );
@@ -120,7 +145,7 @@
     {
         for (int i = 0; i < width * height; i++)
         {
-            m_fimg[c][i] = qBound(0.0F, m_fimg[c][i] * clip, clip);
+            d->fimg[c][i] = qBound(0.0F, d->fimg[c][i] * clip, clip);
         }
     }
 
@@ -134,9 +159,9 @@
     {
         for (int x = 0; x < width; x++)
         {
-            col.setRed(   (int)(m_fimg[0][j] + 0.5) );
-            col.setGreen( (int)(m_fimg[1][j] + 0.5) );
-            col.setBlue(  (int)(m_fimg[2][j] + 0.5) );
+            col.setRed(   (int)(d->fimg[0][j] + 0.5) );
+            col.setGreen( (int)(d->fimg[1][j] + 0.5) );
+            col.setBlue(  (int)(d->fimg[2][j] + 0.5) );
             col.setAlpha( m_orgImage.getPixelColor(x, y).alpha() );
             j++;
 
@@ -149,10 +174,10 @@
     // Free buffers.
 
     for (int c = 0; c < 3; c++)
-        delete [] m_fimg[c];
+        delete [] d->fimg[c];
 
-    delete [] m_buffer[1];
-    delete [] m_buffer[2];
+    delete [] d->buffer[1];
+    delete [] d->buffer[2];
 }
 
 // -- Wavelets denoise methods \
                -----------------------------------------------------------
--- trunk/extragear/graphics/digikam/libs/dimg/filters/waveletsnr.h #1053732:1053733
@@ -37,6 +37,8 @@
 namespace Digikam
 {
 
+class WaveletsNRPriv;
+
 class DIGIKAM_EXPORT WaveletsNRContainer
 {
 
@@ -72,7 +74,7 @@
 public:
 
     WaveletsNR(DImg* orgImage, QObject* parent, const WaveletsNRContainer& \
                settings);
-    ~WaveletsNR(){};
+    ~WaveletsNR();
 
 private:
 
@@ -92,11 +94,8 @@
     void xyz2srgb(float** fimg, int size);
 
 private:
-
-    float*              m_fimg[3];
-    float*              m_buffer[3];
-
-    WaveletsNRContainer m_settings;
+    
+    WaveletsNRPriv* const d;
 };
 
 }  // namespace Digikam


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic