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