summaryrefslogtreecommitdiffstats
path: root/src/waveform/renderers/waveformrendermark.h
blob: bccc5691af45ba02cf54b38efee489b190e444b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#ifndef WAVEFORMRENDERMARK_H
#define WAVEFORMRENDERMARK_H

#include <QObject>

#include "skin/skincontext.h"
#include "util/class.h"
#include "util/color/color.h"
#include "waveform/renderers/waveformmarkset.h"
#include "waveform/renderers/waveformrendererabstract.h"
#include "track/cue.h"
#include "preferences/configobject.h"

class WaveformRenderMark : public QObject, public WaveformRendererAbstract {
    Q_OBJECT

  public:
    explicit WaveformRenderMark(WaveformWidgetRenderer* waveformWidgetRenderer);

    void setup(const QDomNode& node, const SkinContext& context) override;
    void draw(QPainter* painter, QPaintEvent* event) override;

    void onResize() override;

    // Called when a new track is loaded.
    void onSetTrack() override;

  public slots:
    // Called when the loaded track's cues are added, deleted or modified and
    // when a new track is loaded.
    // It updates the marks' names and regenerates their image if needed.
    // This method is used for hotcues.
    void slotCuesUpdated();

  private:
    void generateMarkImage(WaveformMarkPointer pMark);

    WaveformMarkSet m_marks;
    QMap<WaveformMarkPointer, QRect> m_markBoundaries;
    DISALLOW_COPY_AND_ASSIGN(WaveformRenderMark);
};

#endif