]> git.sesse.net Git - kdenlive/blobdiff - src/colorcorrection/waveformgenerator.cpp
Const'ref
[kdenlive] / src / colorcorrection / waveformgenerator.cpp
index 67419e28a1865af7e7c911405b25d98d2addbf69..f1c0a3bbb74b1b9fb6af94aae0f8728009623ea3 100644 (file)
@@ -29,7 +29,7 @@ WaveformGenerator::~WaveformGenerator()
 }
 
 QImage WaveformGenerator::calculateWaveform(const QSize &waveformSize, const QImage &image, WaveformGenerator::PaintMode paintMode,
-                                            const bool &drawAxis, WaveformGenerator::Rec rec, const uint &accelFactor)
+                                            bool drawAxis, WaveformGenerator::Rec rec, uint accelFactor)
 {
     Q_ASSERT(accelFactor >= 1);
 
@@ -57,7 +57,7 @@ QImage WaveformGenerator::calculateWaveform(const QSize &waveformSize, const QIm
         const uint byteCount = iw*ih;
 
         uint waveValues[waveformSize.width()][waveformSize.height()];
-        for (int i = 0; i < waveformSize.width(); i++) {
+        for (int i = 0; i < waveformSize.width(); ++i) {
             for (int j = 0; j < waveformSize.height(); j++) {
                 waveValues[i][j] = 0;
             }
@@ -76,11 +76,11 @@ QImage WaveformGenerator::calculateWaveform(const QSize &waveformSize, const QIm
         const float wPrediv = (float)(ww-1)/(iw-1);
 
         const uchar *bits = image.bits();
-        const uchar *bitsStart = bits;
+       const int bpp = image.depth() / 8;
 
-        for (uint i = 0, x = 0; i < byteCount; i += 4) {
+        for (uint i = 0, x = 0; i < byteCount; i += bpp) {
 
-            Q_ASSERT(bits < bitsStart + byteCount);
+            Q_ASSERT(bits < image.bits() + byteCount);
 
             col = (QRgb *)bits;
 
@@ -97,20 +97,20 @@ QImage WaveformGenerator::calculateWaveform(const QSize &waveformSize, const QIm
             dx = x*wPrediv;
             waveValues[(int)dx][(int)dy]++;
 
-            bits += 4;
-            x += 4;
+            bits += bpp;
+            x += bpp;
             if (x > iw) {
                 x -= iw;
                 if (accelFactor > 1) {
-                    bits += 4*iw*(accelFactor-1);
-                    i += 4*iw*(accelFactor-1);
+                    bits += bpp*iw*(accelFactor-1);
+                    i += bpp*iw*(accelFactor-1);
                 }
             }
         }
 
         switch (paintMode) {
         case PaintMode_Green:
-            for (int i = 0; i < waveformSize.width(); i++) {
+            for (int i = 0; i < waveformSize.width(); ++i) {
                 for (int j = 0; j < waveformSize.height(); j++) {
                     // Logarithmic scale. Needs fine tuning by hand, but looks great.
                     wave.setPixel(i, waveformSize.height()-j-1, qRgba(CHOP255(52*log(0.1*gain*waveValues[i][j])),
@@ -121,14 +121,14 @@ QImage WaveformGenerator::calculateWaveform(const QSize &waveformSize, const QIm
             }
             break;
         case PaintMode_Yellow:
-            for (int i = 0; i < waveformSize.width(); i++) {
+            for (int i = 0; i < waveformSize.width(); ++i) {
                 for (int j = 0; j < waveformSize.height(); j++) {
                     wave.setPixel(i, waveformSize.height()-j-1, qRgba(255,242,0,   CHOP255(gain*waveValues[i][j])));
                 }
             }
             break;
         default:
-            for (int i = 0; i < waveformSize.width(); i++) {
+            for (int i = 0; i < waveformSize.width(); ++i) {
                 for (int j = 0; j < waveformSize.height(); j++) {
                     wave.setPixel(i, waveformSize.height()-j-1, qRgba(255,255,255, CHOP255(2*gain*waveValues[i][j])));
                 }
@@ -141,7 +141,7 @@ QImage WaveformGenerator::calculateWaveform(const QSize &waveformSize, const QIm
             QRgb opx;
             davinci.setPen(qRgba(150,255,200,32));
             davinci.setCompositionMode(QPainter::CompositionMode_Overlay);
-            for (uint i = 0; i <= 10; i++) {
+            for (uint i = 0; i <= 10; ++i) {
                 dy = (float)i/10 * (wh-1);
                 for (uint x = 0; x < ww; x++) {
                     opx = wave.pixel(x, dy);
@@ -159,3 +159,5 @@ QImage WaveformGenerator::calculateWaveform(const QSize &waveformSize, const QIm
     return wave;
 }
 #undef CHOP255
+
+#include "waveformgenerator.moc"