1 #pragma once 2 3 #ifndef MARKSBAR_H 4 #define MARKSBAR_H 5 6 // Toonz includes 7 #include "tcommon.h" 8 9 // Qt includes 10 #include <QFrame> 11 12 #undef DVAPI 13 #undef DVVAR 14 #ifdef TOONZQT_EXPORTS 15 #define DVAPI DV_EXPORT_API 16 #define DVVAR DV_EXPORT_VAR 17 #else 18 #define DVAPI DV_IMPORT_API 19 #define DVVAR DV_IMPORT_VAR 20 #endif 21 22 //============================================================================= 23 // MarksBar 24 //----------------------------------------------------------------------------- 25 26 /*! 27 A MarksBar is a generalized slider with multiple values. 28 */ 29 class DVAPI MarksBar final : public QFrame { 30 Q_OBJECT 31 32 protected: 33 int m_min, m_max, m_sortDist; 34 35 QVector<int> m_values; 36 QVector<QColor> m_colors; 37 int m_selectedMark; 38 39 bool m_markUp; 40 41 public: 42 MarksBar(QWidget *parent = 0, bool markUp = true); 43 44 void setRange(int min, int max, int sortDistance = -1); minimum()45 int minimum() const { return m_min; } maximum()46 int maximum() const { return m_max; } sortDistance()47 int sortDistance() const { return m_sortDist; } 48 values()49 const QVector<int> &values() const { return m_values; } values()50 QVector<int> &values() { return m_values; } 51 colors()52 const QVector<QColor> &colors() const { return m_colors; } colors()53 QVector<QColor> &colors() { return m_colors; } 54 55 void setMarkSide(bool up); markSide()56 bool markSide() const { return m_markUp; } 57 58 void conformValues(bool preferRollDown = true); 59 60 protected: 61 virtual void drawMark(QPainter &p, int pos, const QColor &color); 62 63 int valToPos(int val); 64 int posToVal(int pos); 65 66 void paintEvent(QPaintEvent *pe) override; 67 void mousePressEvent(QMouseEvent *me) override; 68 void mouseMoveEvent(QMouseEvent *me) override; 69 void mouseReleaseEvent(QMouseEvent *me) override; 70 71 signals: 72 73 void marksUpdated(); 74 void marksReleased(); 75 }; 76 77 #endif // MARKSBAR_H 78