]> git.sesse.net Git - kdenlive/blobdiff - src/waveform.cpp
Improve the export audio automatic setting:
[kdenlive] / src / waveform.cpp
index 0b6affb01aa2d631be9c0f0766bd2cabf265edc0..fdd22b97d2147505fee82b79f77f287736796925 100644 (file)
@@ -1,11 +1,77 @@
+/***************************************************************************
+ *   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 <QPainter>
+#include <QPoint>
+#include <QDebug>
+
+#include "renderer.h"
 #include "waveform.h"
+#include "waveformgenerator.h"
 
-Waveform::Waveform(QWidget *parent) :
-    QWidget(parent)
+
+Waveform::Waveform(Monitor *projMonitor, Monitor *clipMonitor, QWidget *parent) :
+    AbstractScopeWidget(projMonitor, clipMonitor, parent),
+    initialDimensionUpdateDone(false)
 {
-    setupUi(this);
+    ui = new Ui::Waveform_UI();
+    ui->setupUi(this);
+
+    m_waveformGenerator = new WaveformGenerator();
 }
 
 Waveform::~Waveform()
 {
+    delete m_waveformGenerator;
+}
+
+
+
+QRect Waveform::scopeRect()
+{
+    // Distance from top/left/right
+    int offset = 6;
+
+    QPoint topleft(offset, ui->verticalSpacer->geometry().y()+offset);
+
+    return QRect(topleft, this->size() - QSize(offset+topleft.x(), offset+topleft.y()));
+}
+
+
+///// Implemented methods /////
+
+QString Waveform::widgetName() const { return QString("Waveform"); }
+bool Waveform::isHUDDependingOnInput() const { return false; }
+bool Waveform::isScopeDependingOnInput() const { return true; }
+bool Waveform::isBackgroundDependingOnInput() const { return false; }
+
+QImage Waveform::renderHUD(uint)
+{
+    emit signalHUDRenderingFinished(0, 1);
+    return QImage();
+}
+
+QImage Waveform::renderScope(uint accelFactor)
+{
+    QTime start = QTime::currentTime();
+    start.start();
+
+    QImage wave = m_waveformGenerator->calculateWaveform(scopeRect().size(),
+                                                         m_activeRender->extractFrame(m_activeRender->seekFramePosition()), true, accelFactor);
+
+    emit signalScopeRenderingFinished(start.elapsed(), 1);
+    return wave;
+}
+
+QImage Waveform::renderBackground(uint)
+{
+    emit signalBackgroundRenderingFinished(0, 1);
+    return QImage();
 }