1 #pragma once
2 
3 #include <QObject>
4 
5 #include "skin/legacy/skincontext.h"
6 #include "util/class.h"
7 #include "util/color/color.h"
8 #include "waveform/renderers/waveformmarkset.h"
9 #include "waveform/renderers/waveformrendererabstract.h"
10 #include "track/cue.h"
11 #include "preferences/configobject.h"
12 
13 class WaveformRenderMark : public QObject, public WaveformRendererAbstract {
14     Q_OBJECT
15 
16   public:
17     explicit WaveformRenderMark(WaveformWidgetRenderer* waveformWidgetRenderer);
18 
19     void setup(const QDomNode& node, const SkinContext& context) override;
20     void draw(QPainter* painter, QPaintEvent* event) override;
21 
22     void onResize() override;
23 
24     // Called when a new track is loaded.
25     void onSetTrack() override;
26 
27   public slots:
28     // Called when the loaded track's cues are added, deleted or modified and
29     // when a new track is loaded.
30     // It updates the marks' names and regenerates their image if needed.
31     // This method is used for hotcues.
32     void slotCuesUpdated();
33 
34   private:
35     void generateMarkImage(WaveformMarkPointer pMark);
36 
37     WaveformMarkSet m_marks;
38     DISALLOW_COPY_AND_ASSIGN(WaveformRenderMark);
39 };
40