***************************************************************************/
#include <QColor>
-#include <QDebug>
#include <QImage>
#include <QPainter>
#include <QSize>
{
}
-QImage WaveformGenerator::calculateWaveform(const QSize &waveformSize, const QImage &image, const bool &drawAxis, const uint &accelFactor)
+QImage WaveformGenerator::calculateWaveform(const QSize &waveformSize, const QImage &image, WaveformGenerator::PaintMode paintMode,
+ const bool &drawAxis, const uint &accelFactor)
{
Q_ASSERT(accelFactor >= 1);
} else {
- qDebug() << "Waveform calculation started.";
-
// Fill with transparent color
wave.fill(qRgba(0,0,0,0));
const float hPrediv = (float)(wh-1)/255;
const float wPrediv = (float)(ww-1)/(iw-1);
+ const float brightnessAdjustment = accelFactor * ((float) ww*wh/(byteCount>>3));
+
const uchar *bits = image.bits();
const uint stepsize = 4*accelFactor;
wavePoint = QPoint((int)dx, (int)(wh-1 - dy));
waveCol = QRgb(wave.pixel(wavePoint));
- wave.setPixel(wavePoint, qRgba(CHOP255(9 + qRed(waveCol)), CHOP255(36 + qGreen(waveCol)),
- CHOP255(18 + qBlue(waveCol)), 255));
+ switch (paintMode) {
+ case PaintMode_Green:
+ wave.setPixel(wavePoint, qRgba(CHOP255(9 + qRed(waveCol)), CHOP255(36 + qGreen(waveCol)),
+ CHOP255(18 + qBlue(waveCol)), 255));
+ break;
+ default:
+ wave.setPixel(wavePoint, qRgba(255, 242,
+ 0, CHOP255(brightnessAdjustment*10+qAlpha(waveCol))));
+ break;
+ }
bits += stepsize;
x += stepsize;
wave.setPixel(x,dy, qRgba(CHOP255(150+qRed(opx)), 255,
CHOP255(200+qBlue(opx)), CHOP255(32+qAlpha(opx))));
}
- //davinci.drawLine(0, dy, ww-1, dy);
}
}
}
uint diff = time.elapsed();
-// qDebug() << "Waveform calculation ended. Time taken: " << diff << " ms. Sending signal now.";
emit signalCalculationFinished(wave, diff);
return wave;
Q_OBJECT
public:
+ enum PaintMode { PaintMode_Green, PaintMode_Yellow };
+
WaveformGenerator();
~WaveformGenerator();
- QImage calculateWaveform(const QSize &waveformSize, const QImage &image, const bool &drawAxis, const uint &accelFactor = 1);
+ QImage calculateWaveform(const QSize &waveformSize, const QImage &image, WaveformGenerator::PaintMode paintMode,
+ const bool &drawAxis, const uint &accelFactor = 1);
signals:
void signalCalculationFinished(QImage image, const uint &ms);
{
ui = new Ui::Waveform_UI();
ui->setupUi(this);
- init();
+ ui->paintMode->addItem(i18n("Yellow"), QVariant(WaveformGenerator::PaintMode_Yellow));
+ ui->paintMode->addItem(i18n("Green"), QVariant(WaveformGenerator::PaintMode_Green));
+
+
+ bool b = true;
+ b &= connect(ui->paintMode, SIGNAL(currentIndexChanged(int)), this, SLOT(forceUpdateScope()));
+ Q_ASSERT(b);
+
+
+ init();
m_waveformGenerator = new WaveformGenerator();
}
Waveform::~Waveform()
{
+ writeConfig();
+
delete m_waveformGenerator;
}
+void Waveform::readConfig()
+{
+ AbstractScopeWidget::readConfig();
+
+ KSharedConfigPtr config = KGlobal::config();
+ KConfigGroup scopeConfig(config, configName());
+ ui->paintMode->setCurrentIndex(scopeConfig.readEntry("paintmode", 0));
+}
+
+void Waveform::writeConfig()
+{
+ KSharedConfigPtr config = KGlobal::config();
+ KConfigGroup scopeConfig(config, configName());
+ scopeConfig.writeEntry("paintmode", ui->paintMode->currentIndex());
+ scopeConfig.sync();
+}
QRect Waveform::scopeRect()
QTime start = QTime::currentTime();
start.start();
- QImage wave = m_waveformGenerator->calculateWaveform(scopeRect().size(),
- qimage, true, accelFactor);
+ int paintmode = ui->paintMode->itemData(ui->paintMode->currentIndex()).toInt();
+ QImage wave = m_waveformGenerator->calculateWaveform(scopeRect().size(), qimage, (WaveformGenerator::PaintMode) paintmode,
+ true, accelFactor);
emit signalScopeRenderingFinished(start.elapsed(), 1);
return wave;