]> git.sesse.net Git - kdenlive/blobdiff - src/abstractmonitor.h
Small ui cleanup + possible crash fix in renderwidget
[kdenlive] / src / abstractmonitor.h
index 3cde7e0465f47ec147fea05574d680a247caa916..1167e6c446f8bc09b677158f193ee1fc2df7e9d8 100644 (file)
 #include <QFrame>
 #include <QTimer>
 
+#include <stdint.h>
+
 class VideoPreviewContainer : public QFrame
 {
     Q_OBJECT
 public:
     VideoPreviewContainer(QWidget *parent = 0);
     ~VideoPreviewContainer();
+    /** @brief Set the image to be displayed, will be put in the queue. */
     void setImage(QImage img);
+    /** @brief Start the display refresh timer. */
     void start();
+    /** @brief Stop the display refresh timer. */
     void stop();
+    /** @brief Set the display ratio for this display. */
+    void setRatio(double ratio);
 
 protected:
     virtual void paintEvent(QPaintEvent */*event*/);
+    virtual void resizeEvent(QResizeEvent * event);
 
 private:
+    /** @brief The display aspect ratio for profile. */
+    double m_dar;
+    /** @brief When true, the whole widget surface will be repainted, useful when resizing widget. */
+    bool m_refresh;
+    /** @brief The rectangle defining the area for painting our image. */
+    QRect m_displayRect;
+    /** @brief The queue of images to be displayed. */
     QList <QImage *> m_imageQueue;
+    /** @brief We refresh the image with a timer, since this widget is only for preview during capture. */
     QTimer m_refreshTimer;
+    /** @brief Re-calculate the display zone after a resize or aspect ratio change. */
+    void updateDisplayZone();
 };
 
 
@@ -53,20 +71,25 @@ class AbstractRender: public QObject
 Q_OBJECT public:
 
     /** @brief Build an abstract MLT Renderer
-     *  @param rendererName A unique identifier for this renderer
+     *  @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(QWidget *parent = 0):QObject(parent),sendFrameForAnalysis(false) {};
+    AbstractRender(const QString &name, QWidget *parent = 0):QObject(parent), sendFrameForAnalysis(false), m_name(name) {};
 
     /** @brief Destroy the MLT Renderer. */
     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;
+    
+    const QString &name() const {return m_name;};
 
     /** @brief Someone needs us to send again a frame. */
     virtual void sendFrameUpdate() = 0;
 
+private:
+    QString m_name;
+    
 signals:
     /** @brief The renderer refreshed the current frame. */
     void frameUpdated(QImage);