]> git.sesse.net Git - kdenlive/blobdiff - src/monitorscene.h
Integrate with the required MLT hooks for getting Movit to work.
[kdenlive] / src / monitorscene.h
index de9dbb0edc7b660d0ea9b7fea76eb04200af7b88..f5efa8e93f0566bebb49cadf907105b361922e39 100644 (file)
 #ifndef MONITORSCENE_H
 #define MONITORSCENE_H
 
+#include <QtCore>
 #include <QGraphicsScene>
-#include <QTime>
 
-class QGraphicsPixmapItem;
 class Render;
 
+
 class MonitorScene : public QGraphicsScene
 {
     Q_OBJECT
 public:
-    MonitorScene(Render *renderer, QObject* parent = 0);
+    explicit MonitorScene(Render *renderer, QObject* parent = 0);
+
+    /** @brief Sets m_view to this scenes view. */
     void setUp();
 
+    /** @brief Enables/Disables the scene for usage (background still updated).
+     * @param enabled (default = true) */
+    void setEnabled(bool enabled = true);
+
+    /** @brief Makes the background frame fit again after the profile changed (and therefore the resolution might have changed). */
+    void resetProfile();
+    
+    /** @brief Reset scene size. */
+    void cleanup();
+    
+    /** @brief Center view on frame border. */
+    void centerView();
+
 protected:
-    virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
-    virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+    void mousePressEvent(QGraphicsSceneMouseEvent *event);
+    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
+    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+    /** @brief Adds a keyframe if scene is disabled. */
+    void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
+    /** @brief Reimplemented to allow zooming using ctrl + mouse wheel. */
+    void wheelEvent(QGraphicsSceneWheelEvent *event);
 
 public slots:
+    /** @brief Sets the backgrounditem's pixmap to m_backgroundImage (only if a certain amount of time has passed since last update). */
     void slotUpdateBackground();
 
+    /** @brief Sets the scene's zoom level.
+     * @param value zoom level with 100 = show frame at original size */
+    void slotZoom(int value);
+    /** @brief Makes the zoom level fit the viewport's size. */
+    void slotZoomFit();
+    /** @brief Shows the frame at it's original size and center. */
+    void slotZoomOriginal();
+    /** @brief Zooms in by @param by%. */
+    void slotZoomIn(int by = 1);
+    /** @brief Zooms out by @param by%. */
+    void slotZoomOut(int by = 1);
+
+private slots:
+    /** @brief Sets m_backgroundImage to @param image and requests updating the background item. */
+    void slotSetBackgroundImage(const QImage &image);
+
 private:
     Render *m_renderer;
     QGraphicsPixmapItem *m_background;
     QGraphicsRectItem *m_frameBorder;
     QTime m_lastUpdate;
+    QGraphicsView *m_view;
+    QImage m_backgroundImage;
+    bool m_enabled;
+    qreal m_zoom;
+    bool m_groupMove;
+    QPointF m_lastPos;
+
 signals:
-    void actionFinished();
+    void zoomChanged(int);
+    void addKeyframe();
 };
 
 #endif