]> git.sesse.net Git - kdenlive/commitdiff
Preparing Spectrogram widget
authorSimon A. Eugster <simon.eu@gmail.com>
Tue, 7 Dec 2010 14:01:41 +0000 (14:01 +0000)
committerSimon A. Eugster <simon.eu@gmail.com>
Tue, 7 Dec 2010 14:01:41 +0000 (14:01 +0000)
svn path=/trunk/kdenlive/; revision=5144

src/CMakeLists.txt
src/audioscopes/spectrogram.cpp [new file with mode: 0644]
src/audioscopes/spectrogram.h [new file with mode: 0644]
src/mainwindow.cpp
src/mainwindow.h
src/widgets/spectrogram_ui.ui [new file with mode: 0644]

index 162e5e57ada3fe9aa8965f9004cb9ea0922aec73..e5ec918139e28222dc60f9d3a37b7b6003ed4e08 100644 (file)
@@ -117,6 +117,7 @@ kde4_add_ui_files(kdenlive_UI
   widgets/monitorscenecontrolwidget_ui.ui
   widgets/cornerswidget_ui.ui
   widgets/audiospectrum_ui.ui
+  widgets/spectrogram_ui.ui
 )
 
 set(kdenlive_SRCS
@@ -222,6 +223,7 @@ set(kdenlive_SRCS
   abstractscopewidget.cpp
   audioscopes/abstractaudioscopewidget.cpp
   audioscopes/audiospectrum.cpp
+  audioscopes/spectrogram.cpp
   audioscopes/ffttools.cpp
   rebuildgroupcommand.cpp
   colorscopes/abstractgfxscopewidget.cpp
diff --git a/src/audioscopes/spectrogram.cpp b/src/audioscopes/spectrogram.cpp
new file mode 100644 (file)
index 0000000..cd1958c
--- /dev/null
@@ -0,0 +1,44 @@
+/***************************************************************************
+ *   Copyright (C) 2010 by Simon Andreas Eugster (simon.eu@gmail.com)      *
+ *   This file is part of kdenlive. See www.kdenlive.org.                  *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ ***************************************************************************/
+
+#include "spectrogram.h"
+
+Spectrogram::Spectrogram(QWidget *parent) :
+        AbstractAudioScopeWidget(false, parent)
+{
+    ui = new Ui::Spectrogram_UI;
+    ui->setupUi(this);
+    AbstractScopeWidget::init();
+}
+
+Spectrogram::~Spectrogram()
+{
+    writeConfig();
+}
+
+void Spectrogram::readConfig()
+{
+    AbstractScopeWidget::readConfig();
+}
+void Spectrogram::writeConfig() {}
+
+QString Spectrogram::widgetName() const { return QString("Spectrogram"); }
+
+QRect Spectrogram::scopeRect() { return AbstractScopeWidget::rect(); }
+
+QImage Spectrogram::renderHUD(uint) { return QImage(); }
+QImage Spectrogram::renderAudioScope(uint accelerationFactor, const QVector<int16_t> audioFrame, const int freq, const int num_channels, const int num_samples) {
+    return QImage();
+}
+QImage Spectrogram::renderBackground(uint) { return QImage(); }
+
+bool Spectrogram::isHUDDependingOnInput() const { return false; }
+bool Spectrogram::isScopeDependingOnInput() const { return false; }
+bool Spectrogram::isBackgroundDependingOnInput() const { return false; }
diff --git a/src/audioscopes/spectrogram.h b/src/audioscopes/spectrogram.h
new file mode 100644 (file)
index 0000000..fbcb60f
--- /dev/null
@@ -0,0 +1,45 @@
+/***************************************************************************
+ *   Copyright (C) 2010 by Simon Andreas Eugster (simon.eu@gmail.com)      *
+ *   This file is part of kdenlive. See www.kdenlive.org.                  *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ ***************************************************************************/
+
+#ifndef SPECTROGRAM_H
+#define SPECTROGRAM_H
+
+#include <QtCore>
+
+#include "abstractaudioscopewidget.h"
+#include "ui_spectrogram_ui.h"
+
+class Spectrogram_UI;
+class Spectrogram : public AbstractAudioScopeWidget {
+    Q_OBJECT
+
+public:
+    Spectrogram(QWidget *parent = 0);
+    ~Spectrogram();
+
+    QString widgetName() const;
+
+protected:
+    ///// Implemented methods /////
+    QRect scopeRect();
+    QImage renderHUD(uint accelerationFactor);
+    QImage renderAudioScope(uint accelerationFactor, const QVector<int16_t> audioFrame, const int freq, const int num_channels, const int num_samples);
+    QImage renderBackground(uint accelerationFactor);
+    bool isHUDDependingOnInput() const;
+    bool isScopeDependingOnInput() const;
+    bool isBackgroundDependingOnInput() const;
+    virtual void readConfig();
+    void writeConfig();
+
+private:
+    Ui::Spectrogram_UI *ui;
+};
+
+#endif // SPECTROGRAM_H
index 457fc9f626bcadd3d799a6360d7a2ffe20d9b92a..517acdc30282dc8034f44acd75fa2f46f89eb0d2 100644 (file)
@@ -58,6 +58,7 @@
 #include "colorscopes/rgbparade.h"
 #include "colorscopes/histogram.h"
 #include "audiospectrum.h"
+#include "spectrogram.h"
 
 #include <KApplication>
 #include <KAction>
@@ -292,6 +293,12 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, const QString &
     m_audioSpectrumDock->setWidget(m_audioSpectrum);
     addDockWidget(Qt::TopDockWidgetArea, m_audioSpectrumDock);
 
+    m_spectrogram = new Spectrogram();
+    m_spectrogramDock = new QDockWidget(i18n("Spectrogram"), this);
+    m_spectrogramDock->setObjectName(m_spectrogram->widgetName());
+    m_spectrogramDock->setWidget(m_spectrogram);
+    addDockWidget(Qt::TopDockWidgetArea, m_spectrogramDock);
+
     // Connect the audio signal to the audio scope slots
     bool b = true;
     if (m_projectMonitor) {
@@ -300,6 +307,8 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, const QString &
                      m_audioSpectrum, SLOT(slotReceiveAudio(QVector<int16_t>, int, int, int)));
         b &= connect(m_projectMonitor->render, SIGNAL(audioSamplesSignal(const QVector<int16_t>&, const int&, const int&, const int&)),
                      m_audiosignal, SLOT(slotReceiveAudio(const QVector<int16_t>&, const int&, const int&, const int&)));
+        b &= connect(m_projectMonitor->render, SIGNAL(audioSamplesSignal(QVector<int16_t>,int,int,int)),
+                     m_spectrogram, SLOT(slotReceiveAudio(QVector<int16_t>,int,int,int)));
     }
     if (m_clipMonitor) {
         qDebug() << "clip monitor connected";
@@ -307,8 +316,10 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, const QString &
                      m_audioSpectrum, SLOT(slotReceiveAudio(QVector<int16_t>, int, int, int)));
         b &= connect(m_clipMonitor->render, SIGNAL(audioSamplesSignal(const QVector<int16_t>&, int, int, int)),
                      m_audiosignal, SLOT(slotReceiveAudio(const QVector<int16_t>&, int, int, int)));
+        b &= connect(m_clipMonitor->render, SIGNAL(audioSamplesSignal(QVector<int16_t>,int,int,int)),
+                     m_spectrogram, SLOT(slotReceiveAudio(QVector<int16_t>,int,int,int)));
     }
-    // Ensure connection was set up correctly
+    // Ensure connections were set up correctly
     Q_ASSERT(b);
 
     m_undoViewDock = new QDockWidget(i18n("Undo History"), this);
index 5b9c0bf1c3c39cfa2bc2983b0f938f9c5c938be5..4101558fec406091225727c6ccd11975f8e4d872 100644 (file)
@@ -70,6 +70,7 @@ class RGBParade;
 class KActionCollection;
 class AudioSignal;
 class AudioSpectrum;
+class Spectrogram;
 
 class MainWindow : public KXmlGuiWindow
 {
@@ -181,6 +182,9 @@ private:
     QDockWidget *m_audioSpectrumDock;
     AudioSpectrum *m_audioSpectrum;
 
+    QDockWidget *m_spectrogramDock;
+    Spectrogram *m_spectrogram;
+
     QDockWidget *m_undoViewDock;
     QUndoView *m_undoView;
     QUndoGroup *m_commandStack;
diff --git a/src/widgets/spectrogram_ui.ui b/src/widgets/spectrogram_ui.ui
new file mode 100644 (file)
index 0000000..4ff9d13
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Spectrogram_UI</class>
+ <widget class="QWidget" name="Spectrogram_UI">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>