]> git.sesse.net Git - kdenlive/blob - src/waveform.cpp
Scopes: Space optimizations
[kdenlive] / src / waveform.cpp
1 /***************************************************************************
2  *   Copyright (C) 2010 by Simon Andreas Eugster (simon.eu@gmail.com)      *
3  *   This file is part of kdenlive. See www.kdenlive.org.                  *
4  *                                                                         *
5  *   This program is free software; you can redistribute it and/or modify  *
6  *   it under the terms of the GNU General Public License as published by  *
7  *   the Free Software Foundation; either version 2 of the License, or     *
8  *   (at your option) any later version.                                   *
9  ***************************************************************************/
10
11 #include <QPainter>
12 #include <QPoint>
13 #include <QDebug>
14
15 #include "renderer.h"
16 #include "waveform.h"
17 #include "waveformgenerator.h"
18
19
20 Waveform::Waveform(Monitor *projMonitor, Monitor *clipMonitor, QWidget *parent) :
21     AbstractScopeWidget(projMonitor, clipMonitor, parent),
22     initialDimensionUpdateDone(false)
23 {
24     ui = new Ui::Waveform_UI();
25     ui->setupUi(this);
26
27     m_waveformGenerator = new WaveformGenerator();
28 }
29
30 Waveform::~Waveform()
31 {
32     delete m_waveformGenerator;
33 }
34
35
36
37 QRect Waveform::scopeRect()
38 {
39     // Distance from top/left/right
40     int offset = 6;
41
42     QPoint topleft(offset, ui->verticalSpacer->geometry().y()+offset);
43
44     return QRect(topleft, this->size() - QSize(offset+topleft.x(), offset+topleft.y()));
45 }
46
47
48 ///// Implemented methods /////
49
50 QString Waveform::widgetName() const { return QString("Waveform"); }
51 bool Waveform::isHUDDependingOnInput() const { return false; }
52 bool Waveform::isScopeDependingOnInput() const { return true; }
53 bool Waveform::isBackgroundDependingOnInput() const { return false; }
54
55 QImage Waveform::renderHUD(uint)
56 {
57     emit signalHUDRenderingFinished(0, 1);
58     return QImage();
59 }
60
61 QImage Waveform::renderScope(uint accelFactor)
62 {
63     QTime start = QTime::currentTime();
64     start.start();
65
66     QImage wave = m_waveformGenerator->calculateWaveform(scopeRect().size(),
67                                                          m_activeRender->extractFrame(m_activeRender->seekFramePosition()), true, accelFactor);
68
69     emit signalScopeRenderingFinished(start.elapsed(), 1);
70     return wave;
71 }
72
73 QImage Waveform::renderBackground(uint)
74 {
75     emit signalBackgroundRenderingFinished(0, 1);
76     return QImage();
77 }