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