]> git.sesse.net Git - kdenlive/blob - src/audiosignal.cpp
*Allow users to choose between SDL and OpenGL for monitor display
[kdenlive] / src / audiosignal.cpp
1 #include "audiosignal.h"
2
3 #include <QVBoxLayout>
4 #include <QLabel>
5 #include <QPainter>
6 #include <QDebug>
7 #include <QList>
8
9
10 AudioSignal::AudioSignal(QWidget *parent): QWidget(parent)
11 {
12     //QVBoxLayout *vbox=new QVBoxLayout(this);
13     //label=new QLabel();
14     //vbox->addWidget(label);
15     setMinimumHeight(10);
16     col << Qt::green <<  Qt::green << Qt::green << Qt::green << Qt::green << Qt::green << Qt::green << Qt::green << Qt::green << Qt::green ;
17     col << Qt::yellow <<  Qt::yellow << Qt::yellow << Qt::yellow << Qt::yellow  ;
18     col << Qt::darkYellow << Qt::darkYellow << Qt::darkYellow;
19     col << Qt::red << Qt::red;
20 }
21
22
23 void AudioSignal::showAudio(const QByteArray arr)
24 {
25     channels = arr;
26     update();
27 }
28 void AudioSignal::paintEvent(QPaintEvent* /*e*/)
29 {
30     QPainter p(this);
31     //p.begin();
32     //p.fillRect(0,0,(unsigned char)channels[0]*width()/255,height()/2,QBrush(Qt::SolidPattern));
33     //p.fillRect(0,height()/2,(unsigned char)channels[1]*width()/255,height()/2,QBrush(Qt::SolidPattern));
34     int numchan = channels.size();
35     for (int i = 0; i < numchan; i++) {
36         int maxx = (unsigned char)channels[i] * width() / 255;
37         int xdelta = width() / 20;
38         int y1 = height() * i / numchan;
39         int _h = height() / numchan - 1;
40         for (int x = 0; x < 20; x++) {
41             if (maxx > 0) {
42                 p.fillRect(x * xdelta, y1, maxx > xdelta ? xdelta - 1 : maxx - 1, _h, QBrush(col.at(x), Qt::SolidPattern));
43                 maxx -= xdelta;
44             }
45         }
46     }
47     p.end();
48 }
49 #include "audiosignal.moc"