blob: 4f77e5f821252529a2e3b4361a9901aec248e702 (
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
#pragma once
#include <QColor>
#include <QObject>
#include "shaders/rgbashader.h"
#include "shaders/textureshader.h"
#include "util/class.h"
#include "waveform/renderers/allshader/waveformrenderer.h"
#include "waveform/renderers/waveformmarkset.h"
class QDomNode;
class SkinContext;
class QOpenGLTexture;
namespace allshader {
class WaveformRenderMark;
}
class allshader::WaveformRenderMark final : public QObject, public allshader::WaveformRenderer {
Q_OBJECT
public:
explicit WaveformRenderMark(WaveformWidgetRenderer* waveformWidget);
~WaveformRenderMark() override;
void setup(const QDomNode& node, const SkinContext& context) override;
void initializeGL() override;
void paintGL() override;
void resizeGL(int w, int h) 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 checkCuesUpdated();
void generateMarkImage(WaveformMarkPointer pMark, float breadth);
void generatePlayPosMarkTexture(float breadth);
void drawTriangle(QPainter* painter,
const QBrush& fillColor,
QPointF p1,
QPointF p2,
QPointF p3);
WaveformMarkSet m_marks;
mixxx::RGBAShader m_rgbaShader;
mixxx::TextureShader m_textureShader;
std::unique_ptr<QOpenGLTexture> m_pPlayPosMarkTexture;
bool m_bCuesUpdates{};
void drawMark(const QRectF& rect, QColor color);
void drawTexture(float x, float y, QOpenGLTexture* texture);
DISALLOW_COPY_AND_ASSIGN(WaveformRenderMark);
};
|