* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
***************************************************************************/
+/**
+ * @class CustomRuler
+ * @author Jean-Baptiste Mardelle
+ * @brief Manages the timeline ruler.
+ */
+
#ifndef CUSTOMRULER_H
#define CUSTOMRULER_H
#include "timecode.h"
enum RULER_MOVE { RULER_CURSOR = 0, RULER_START = 1, RULER_MIDDLE = 2, RULER_END = 3 };
+enum MOUSE_MOVE { NO_MOVE = 0, HORIZONTAL_MOVE = 1, VERTICAL_MOVE = 2 };
-class CustomRuler : public QWidget {
+class CustomRuler : public QWidget
+{
Q_OBJECT
public:
- CustomRuler(Timecode tc, CustomTrackView *parent);
- void setPixelPerMark(double rate);
+ CustomRuler(const Timecode &tc, CustomTrackView *parent);
+ void setPixelPerMark(int rate);
static const int comboScale[];
int outPoint() const;
int inPoint() const;
void setDuration(int d);
- void setZone(QPoint p);
+ void setZone(const QPoint &p);
int offset() const;
-
+ void updateProjectFps(const Timecode &t);
+ void updateFrameSize();
+ void updatePalette();
+
protected:
- virtual void paintEvent(QPaintEvent * /*e*/);
- virtual void wheelEvent(QWheelEvent * e);
- virtual void mousePressEvent(QMouseEvent * event);
- virtual void mouseMoveEvent(QMouseEvent * event);
+ void paintEvent(QPaintEvent * /*e*/);
+ void wheelEvent(QWheelEvent * e);
+ void mousePressEvent(QMouseEvent * event);
+ void mouseReleaseEvent(QMouseEvent * event);
+ void mouseMoveEvent(QMouseEvent * event);
+ void leaveEvent(QEvent * event);
private:
- int m_cursorPosition;
Timecode m_timecode;
CustomTrackView *m_view;
int m_zoneStart;
int m_zoneEnd;
int m_duration;
+ QColor m_zoneColor;
double m_textSpacing;
double m_factor;
double m_scale;
int m_offset;
+ int m_lastSeekPosition;
RULER_MOVE m_moveCursor;
QMenu *m_contextMenu;
+ QAction *m_editGuide;
+ QAction *m_deleteGuide;
+ int m_clickedGuide;
+ /** Used for zooming through vertical move */
+ QPoint m_clickPoint;
+ int m_rate;
+ int m_startRate;
+ MOUSE_MOVE m_mouseMove;
+ QMenu *m_goMenu;
+ QBrush m_cursorColor;
+
public slots:
void slotMoveRuler(int newPos);
void slotCursorMoved(int oldpos, int newpos);
+ void updateRuler();
+
+private slots:
+ void slotEditGuide();
+ void slotDeleteGuide();
+ void slotGoToGuide(QAction *act);
signals:
void zoneMoved(int, int);
+ void adjustZoom(int);
+ void mousePosition(int);
};
#endif