LMMS
Loading...
Searching...
No Matches
SlicerTWaveform.h
Go to the documentation of this file.
1/*
2 * SlicerTWaveform.h - declaration of class SlicerTWaveform
3 *
4 * Copyright (c) 2023 Daniel Kauss Serna <daniel.kauss.serna@gmail.com>
5 *
6 * This file is part of LMMS - https://lmms.io
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public
19 * License along with this program (see COPYING); if not, write to the
20 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301 USA.
22 *
23 */
24
25#ifndef LMMS_GUI_SLICERT_WAVEFORM_H
26#define LMMS_GUI_SLICERT_WAVEFORM_H
27
28#include <QElapsedTimer>
29#include <QWidget>
30
31#include "SampleThumbnail.h"
32
33namespace lmms {
34
35class SlicerT;
36
37namespace gui {
38
39class SlicerTWaveform : public QWidget
40{
41 Q_OBJECT
42
43public slots:
44 void updateUI();
45 void isPlaying(float current, float start, float end);
46
47public:
48 SlicerTWaveform(int totalWidth, int totalHeight, SlicerT* instrument, QWidget* parent);
49
50 // predefined sizes
51 static constexpr int s_seekerHorMargin = 5;
52 static constexpr int s_seekerVerMargin = 6;
53 static constexpr int s_middleMargin = 6;
54 static constexpr int s_arrowHeight = 5;
55
56 // interaction behavior values
57 static constexpr float s_distanceForClick = 0.02f;
58 static constexpr float s_minSeekerDistance = 0.13f;
59 static constexpr float s_zoomSensitivity = 0.5f;
60 static constexpr int s_minMilisPassed = 10;
61
70
71protected:
72 void mousePressEvent(QMouseEvent* me) override;
73 void mouseReleaseEvent(QMouseEvent* me) override;
74 void mouseMoveEvent(QMouseEvent* me) override;
75 void mouseDoubleClickEvent(QMouseEvent* me) override;
76 void wheelEvent(QWheelEvent* we) override;
77
78 void paintEvent(QPaintEvent* pe) override;
79 void resizeEvent(QResizeEvent* event) override;
80
81private:
84
85 int m_seekerHeight; // used to calcualte all vertical sizes
89
92
93 float m_seekerStart = 0;
94 float m_seekerEnd = 1;
95 float m_seekerMiddle = 0.5f;
96
99 float m_noteEnd;
100
101 float m_zoomLevel = 1.0f;
102
104 QPixmap m_seeker;
109
111
113
114 QElapsedTimer m_updateTimer;
115 void drawSeekerWaveform();
116 void drawSeeker();
117 void drawEditorWaveform();
118 void drawEditor();
119
120 void updateClosest(QMouseEvent* me);
121 void updateCursor();
122};
123} // namespace gui
124} // namespace lmms
125#endif // LMMS_GUI_SLICERT_WAVEFORM_H
Definition SampleThumbnail.h:55
Definition SlicerT.h:38
int m_closestSlice
Definition SlicerTWaveform.h:91
void wheelEvent(QWheelEvent *we) override
Definition SlicerTWaveform.cpp:472
void updateUI()
Definition SlicerTWaveform.cpp:289
void updateClosest(QMouseEvent *me)
Definition SlicerTWaveform.cpp:299
SampleThumbnail m_sampleThumbnail
Definition SlicerTWaveform.h:110
int m_editorHeight
Definition SlicerTWaveform.h:87
int m_seekerWidth
Definition SlicerTWaveform.h:86
void updateCursor()
Definition SlicerTWaveform.cpp:347
static constexpr int s_seekerVerMargin
Definition SlicerTWaveform.h:52
void mousePressEvent(QMouseEvent *me) override
Definition SlicerTWaveform.cpp:362
float m_seekerMiddle
Definition SlicerTWaveform.h:95
int m_seekerHeight
Definition SlicerTWaveform.h:85
static constexpr int s_minMilisPassed
Definition SlicerTWaveform.h:60
QPixmap m_editorWaveform
Definition SlicerTWaveform.h:106
QElapsedTimer m_updateTimer
Definition SlicerTWaveform.h:114
static constexpr float s_minSeekerDistance
Definition SlicerTWaveform.h:58
float m_zoomLevel
Definition SlicerTWaveform.h:101
SlicerTWaveform(int totalWidth, int totalHeight, SlicerT *instrument, QWidget *parent)
Definition SlicerTWaveform.cpp:68
UIObjects m_closestObject
Definition SlicerTWaveform.h:90
int m_height
Definition SlicerTWaveform.h:83
void mouseDoubleClickEvent(QMouseEvent *me) override
Definition SlicerTWaveform.cpp:457
static constexpr float s_zoomSensitivity
Definition SlicerTWaveform.h:59
void resizeEvent(QResizeEvent *event) override
Definition SlicerTWaveform.cpp:98
void mouseReleaseEvent(QMouseEvent *me) override
Definition SlicerTWaveform.cpp:391
int m_width
Definition SlicerTWaveform.h:82
void drawEditorWaveform()
Definition SlicerTWaveform.cpp:176
void paintEvent(QPaintEvent *pe) override
Definition SlicerTWaveform.cpp:480
static constexpr float s_distanceForClick
Definition SlicerTWaveform.h:57
void drawSeekerWaveform()
Definition SlicerTWaveform.cpp:113
void drawSeeker()
Definition SlicerTWaveform.cpp:141
UIObjects
Definition SlicerTWaveform.h:63
@ SeekerMiddle
Definition SlicerTWaveform.h:67
@ SeekerEnd
Definition SlicerTWaveform.h:66
@ SlicePoint
Definition SlicerTWaveform.h:68
@ SeekerStart
Definition SlicerTWaveform.h:65
@ Nothing
Definition SlicerTWaveform.h:64
QPixmap m_sliceEditor
Definition SlicerTWaveform.h:107
float m_noteCurrent
Definition SlicerTWaveform.h:97
QPixmap m_seeker
Definition SlicerTWaveform.h:104
float m_seekerStart
Definition SlicerTWaveform.h:93
float m_seekerEnd
Definition SlicerTWaveform.h:94
void drawEditor()
Definition SlicerTWaveform.cpp:208
int m_editorWidth
Definition SlicerTWaveform.h:88
static constexpr int s_seekerHorMargin
Definition SlicerTWaveform.h:51
static constexpr int s_middleMargin
Definition SlicerTWaveform.h:53
SlicerT * m_slicerTParent
Definition SlicerTWaveform.h:112
QPixmap m_seekerWaveform
Definition SlicerTWaveform.h:105
void mouseMoveEvent(QMouseEvent *me) override
Definition SlicerTWaveform.cpp:399
QPixmap m_emptySampleIcon
Definition SlicerTWaveform.h:108
static constexpr int s_arrowHeight
Definition SlicerTWaveform.h:54
void isPlaying(float current, float start, float end)
Definition SlicerTWaveform.cpp:276
float m_noteEnd
Definition SlicerTWaveform.h:99
QPixmap m_sliceArrow
Definition SlicerTWaveform.h:103
float m_noteStart
Definition SlicerTWaveform.h:98
static uintptr_t parent
Definition pugl.h:1644
virtual ASIOError start()=0
Definition AudioPortAudio.cpp:223
Definition AudioAlsa.cpp:35