#include <QVector>
#include <QWidget>
#include <QImage>
-#include <QPainter>
#include <QFrame>
-#include <QTimer>
#include <stdint.h>
class MonitorManager;
-
+class VideoContainer;
class AbstractRender: public QObject
{
* @param name A unique identifier for this renderer
* @param winid The parent widget identifier (required for SDL display). Set to 0 for OpenGL rendering
* @param profile The MLT profile used for the renderer (default one will be used if empty). */
- AbstractRender(Kdenlive::MONITORID name, QWidget *parent = 0):QObject(parent), sendFrameForAnalysis(false), m_name(name) {};
+ explicit AbstractRender(Kdenlive::MONITORID name, QWidget *parent = 0)
+ : QObject(parent),
+ sendFrameForAnalysis(false),
+ analyseAudio(false),
+ m_name(name)
+ {
+ }
/** @brief Destroy the MLT Renderer. */
- virtual ~AbstractRender() {};
+ virtual ~AbstractRender() {}
/** @brief This property is used to decide if the renderer should convert it's frames to QImage for use in other Kdenlive widgets. */
bool sendFrameForAnalysis;
/** @brief This property is used to decide if the renderer should send audio data for monitoring. */
bool analyseAudio;
- const QString &name() const {return m_name;};
+ const QString &name() const {return m_name;}
/** @brief Someone needs us to send again a frame. */
virtual void sendFrameUpdate() = 0;
signals:
/** @brief The renderer refreshed the current frame. */
- void frameUpdated(QImage);
+ void frameUpdated(const QImage &);
/** @brief This signal contains the audio of the current frame. */
- void audioSamplesSignal(QVector<int16_t>,int,int,int);
+ void audioSamplesSignal(const QVector<int16_t>&,int,int,int);
};
+
+
+class VideoSurface : public QWidget
+{
+ Q_OBJECT
+public:
+ VideoSurface(QWidget *parent = 0);
+
+signals:
+ void refreshMonitor();
+
+protected:
+ virtual void paintEvent ( QPaintEvent * event );
+};
+
+
class AbstractMonitor : public QWidget
{
Q_OBJECT
public:
AbstractMonitor(Kdenlive::MONITORID id, MonitorManager *manager, QWidget *parent = 0);
- Kdenlive::MONITORID id() {return m_id;};
- virtual ~AbstractMonitor() {};
+ Kdenlive::MONITORID id() {return m_id;}
+ virtual ~AbstractMonitor();
virtual AbstractRender *abstractRender() = 0;
- virtual void pause() = 0;
- virtual void unpause() = 0;
bool isActive() const;
+ VideoContainer *videoBox;
+ VideoSurface *videoSurface;
+ void createVideoSurface();
+
public slots:
virtual void stop() = 0;
virtual void start() = 0;
virtual void slotPlay() = 0;
virtual void slotMouseSeek(int eventDelta, bool fast) = 0;
- bool slotActivateMonitor();
+ bool slotActivateMonitor(bool forceRefresh = false);
virtual void slotSwitchFullScreen() = 0;
protected:
{
Q_OBJECT
public:
- VideoContainer(AbstractMonitor *monitor, QWidget *parent = 0);
+ explicit VideoContainer(AbstractMonitor *monitor, QWidget *parent = 0);
void switchFullScreen();
protected:
AbstractMonitor *m_monitor;
};
-
#endif