]> git.sesse.net Git - kdenlive/commitdiff
audiosignal widget
authorMarco Gittler <marco@gitma.de>
Mon, 27 Sep 2010 20:28:10 +0000 (20:28 +0000)
committerMarco Gittler <marco@gitma.de>
Mon, 27 Sep 2010 20:28:10 +0000 (20:28 +0000)
svn path=/trunk/kdenlive/; revision=4945

src/audiosignal.cpp [new file with mode: 0644]
src/audiosignal.h [new file with mode: 0644]

diff --git a/src/audiosignal.cpp b/src/audiosignal.cpp
new file mode 100644 (file)
index 0000000..f35db08
--- /dev/null
@@ -0,0 +1,49 @@
+#include "audiosignal.h"
+
+#include <QVBoxLayout>
+#include <QLabel>
+#include <QPainter>
+#include <QDebug>
+#include <QList>
+
+
+AudioSignal::AudioSignal(QWidget *parent):QWidget(parent)
+{
+       //QVBoxLayout *vbox=new QVBoxLayout(this);
+       //label=new QLabel();
+       //vbox->addWidget(label);
+       setMaximumHeight(12);
+       col << Qt::green <<  Qt::green << Qt::green << Qt::green << Qt::green << Qt::green << Qt::green << Qt::green << Qt::green << Qt::green ;
+       col << Qt::yellow <<  Qt::yellow << Qt::yellow << Qt::yellow << Qt::yellow  ;
+       col << Qt::darkYellow << Qt::darkYellow << Qt::darkYellow;
+       col << Qt::red << Qt::red;
+}
+
+
+void AudioSignal::showAudio(QByteArray arr)
+{
+       channels=arr;
+       update();
+}
+void AudioSignal::paintEvent(QPaintEvent* e)
+{
+    QPainter p(this);
+    //p.begin();
+       //p.fillRect(0,0,(unsigned char)channels[0]*width()/255,height()/2,QBrush(Qt::SolidPattern));
+       //p.fillRect(0,height()/2,(unsigned char)channels[1]*width()/255,height()/2,QBrush(Qt::SolidPattern));
+       int numchan=channels.size();
+       for (int i=0;i<numchan;i++){
+               int maxx=(unsigned char)channels[i]*width()/255;
+               int xdelta=width()/20;
+               int y1=height()*i/numchan;
+               int _h=height()/numchan-1;
+               for (int x=0;x<20;x++){
+                               if (maxx>0){
+                               p.fillRect(x*xdelta,y1,maxx>xdelta?xdelta-1:maxx-1,_h,QBrush(col.at(x),Qt::SolidPattern));
+                               maxx-=xdelta;
+                               }
+               }
+       }
+    p.end();
+}
+#include "audiosignal.moc"
diff --git a/src/audiosignal.h b/src/audiosignal.h
new file mode 100644 (file)
index 0000000..d0ab44c
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef AUDIOSIGNAL_H
+#define AUDIOSIGNAL_H
+
+#include <QByteArray>
+#include <QList>
+#include <QColor>
+class QLabel;
+
+#include  <QWidget>
+class AudioSignal : public QWidget 
+{
+       Q_OBJECT
+       public:
+               AudioSignal (QWidget *parent=0);
+       private:
+               QLabel* label;
+               QByteArray channels;
+               QList<QColor> col;
+       protected:
+               void paintEvent(QPaintEvent* );
+       public slots:
+               void showAudio(QByteArray);
+
+
+};
+
+#endif