Krotos Modules 3
Loading...
Searching...
No Matches
HelperClasses.cpp
Go to the documentation of this file.
1namespace krotos
2{
3 bool& MonitoredBool::operator=(const bool& newVal)
4 {
5 m_changed = newVal != m_val;
6 return m_val = newVal;
7 }
8
10 {
11 m_length = length;
12 m_zoomLimits.setStart(0);
13 m_zoomLimits.setLength(m_length);
16 }
17
19
21
23
25
26 int ScrollAndZoomManager::getLength() { return m_zoomLimits.getLength(); }
27
29
31 {
32 if (m_zoomLimits.isEmpty())
33 {
34 return Range<float>(0.f, 1.f);
35 }
36 float normalisationFactor = 1.f / static_cast<float>(m_zoomLimits.getLength());
37 return Range<float>(static_cast<float>(m_zoomWindow.getStart()) * normalisationFactor,
38 static_cast<float>(m_zoomWindow.getEnd()) * normalisationFactor);
39 }
40
42
44 {
45 if (m_zoomRange.isEmpty())
46 {
47 return Range<float>(0.f, 1.f);
48 }
49 Range<int> zoomWindowRel = getZoomWindowRelativeToRange();
50 float normalisationFactor = 1.f / static_cast<float>(m_zoomRange.getLength());
51 return Range<float>(static_cast<float>(zoomWindowRel.getStart()) * normalisationFactor,
52 static_cast<float>(zoomWindowRel.getEnd()) * normalisationFactor);
53 }
54
56 {
57 int start = static_cast<int>(static_cast<float>(m_zoomRange.getLength() * static_cast<float>(newStart)));
58 Range<int> candidate = m_zoomWindow.movedToStartAt(m_zoomRange.getStart() + start);
59 m_zoomWindow = m_zoomRange.constrainRange(candidate);
60 }
61
62 void ScrollAndZoomManager::zoom(int center, float amount)
63 {
64 float scale = 1.f + amount;
65 Range<int> candidate;
66 candidate.setStart(static_cast<int>(static_cast<float>(m_zoomWindow.getStart() - center) * scale) + center);
67 candidate.setEnd(static_cast<int>(static_cast<float>(m_zoomWindow.getEnd() - center) * scale) + center);
68
69 // zoom limiter
70 if (candidate.getLength() <= m_minimumLength)
71 {
72 return;
73 }
74
75 m_zoomWindow = m_zoomRange.constrainRange(candidate);
76 }
77
79 {
81 m_zoomRange.constrainRange(Range<int>(m_zoomWindow.getStart() + diff, m_zoomWindow.getEnd() + diff));
82 }
83
85 {
86 return m_zoomWindow.getStart() + percentMouseXToSampleXRelative(percentX);
87 }
88
90 {
91 return static_cast<int>(static_cast<float>(m_zoomWindow.getLength()) * percentX);
92 }
93
94 int ScrollAndZoomManager::pixelsToSamples(int pixels, int waveformScreenWidth)
95 {
96 return static_cast<int>((static_cast<float>(pixels) / static_cast<float>(waveformScreenWidth)) *
97 static_cast<float>(m_zoomWindow.getLength()));
98 }
99
100 void ScrollAndZoomManager::setZoomRange(Range<int> newRange)
101 {
102 m_zoomWindow = m_zoomRange = m_zoomLimits.constrainRange(newRange);
103 }
104
105} // namespace krotos
bool m_val
Definition HelperClasses.h:23
bool & operator=(const bool &newVal)
Definition HelperClasses.cpp:3
bool m_changed
Definition HelperClasses.h:22
Range< float > getZoomWindowNormalisedToRange()
Definition HelperClasses.cpp:43
bool isZoomScrollEnabled()
Definition HelperClasses.cpp:20
Range< int > m_zoomLimits
Definition HelperClasses.h:104
Range< float > getZoomWindowNormalisedToLimits()
Definition HelperClasses.cpp:30
bool m_selectionEnabled
Definition HelperClasses.h:109
void initialise(int length)
Definition HelperClasses.cpp:9
void drag(int diff)
Definition HelperClasses.cpp:78
void repositionZoomWindow(float newStart)
Definition HelperClasses.cpp:55
void zoom(int center, float amount)
Definition HelperClasses.cpp:62
int m_length
Definition HelperClasses.h:112
int pixelsToSamples(int pixels, int waveformScreenWidth)
Definition HelperClasses.cpp:94
int percentMouseXToSampleXAbsolute(float percentX)
Definition HelperClasses.cpp:84
const int m_minimumLength
Definition HelperClasses.h:111
bool m_zoomScrollEnabled
Definition HelperClasses.h:110
Range< int > m_zoomWindow
Definition HelperClasses.h:108
void setZoomRange(Range< int > newRange)
Sets the zoom to a specific range.
Definition HelperClasses.cpp:100
void setSelectionEnabled(bool newState)
Definition HelperClasses.cpp:24
void setZoomScrollEnabled(bool newState)
Definition HelperClasses.cpp:22
int percentMouseXToSampleXRelative(float percentX)
Definition HelperClasses.cpp:89
int getLength()
Definition HelperClasses.cpp:26
void resetZoomRange()
Definition HelperClasses.cpp:28
Range< int > m_zoomRange
Definition HelperClasses.h:106
bool isSelectionEnabled()
Definition HelperClasses.cpp:18
Range< int > getZoomWindowRelativeToRange()
Definition HelperClasses.cpp:41
Definition AirAbsorptionFilter.cpp:2