From 736e91f72d0b1bb13f8946618ff3012dddf85c35 Mon Sep 17 00:00:00 2001 From: Mike Walters Date: Fri, 4 Sep 2015 10:00:24 +0100 Subject: [PATCH] Use Qt's built-in HSV conversion --- spectrogram.cpp | 57 +------------------------------------------------ 1 file changed, 1 insertion(+), 56 deletions(-) diff --git a/spectrogram.cpp b/spectrogram.cpp index 59172b8..45e5eb0 100644 --- a/spectrogram.cpp +++ b/spectrogram.cpp @@ -51,58 +51,6 @@ template const T& clamp (const T& value, const T& min, const T& max) { return std::min(max, std::max(min, value)); } -void HSVtoRGB( float *r, float *g, float *b, float h, float s, float v ) -{ - int i; - float f, p, q, t; - - if( s == 0 ) { - // achromatic (grey) - *r = *g = *b = v; - return; - } - - h /= 60; // sector 0 to 5 - i = floor( h ); - f = h - i; // factorial part of h - p = v * ( 1 - s ); - q = v * ( 1 - s * f ); - t = v * ( 1 - s * ( 1 - f ) ); - - switch( i ) { - case 0: - *r = v; - *g = t; - *b = p; - break; - case 1: - *r = q; - *g = v; - *b = p; - break; - case 2: - *r = p; - *g = v; - *b = t; - break; - case 3: - *r = p; - *g = q; - *b = v; - break; - case 4: - *r = t; - *g = p; - *b = v; - break; - default: // case 5: - *r = v; - *g = p; - *b = q; - break; - } -} - void Spectrogram::paintEvent(QPaintEvent *event) { QElapsedTimer timer; @@ -125,10 +73,7 @@ void Spectrogram::paintEvent(QPaintEvent *event) float normPower = (line[x] - powerMax) * -1.0f / powerRange; normPower = clamp(normPower, 0.0f, 1.0f); - float red, green, blue; - HSVtoRGB(&red, &green, &blue, normPower * 300.0f, 1, 1 - normPower); - - image.setPixel(x, y, qRgb(red * 255, green * 255, blue * 255)); + image.setPixel(x, y, QColor::fromHsvF(normPower * 0.83f, 1.0, 1.0 - normPower).rgba()); } }