Krotos Modules 3
Loading...
Searching...
No Matches
WaveformViewer.h
Go to the documentation of this file.
1
2#pragma once
3namespace krotos
4{
6 {
7
8 public:
10 {
12 borderColour = 0x61010001
13 };
14
16 {
17 public:
18 virtual ~Listener() = default;
19 virtual void fileHasBeenDropped(WaveformViewer* waveformViewer, const StringArray& files) = 0;
20 };
21
22 WaveformViewer(Colour waveformColour = Colours::white);
23
26
27 void paint(Graphics& g) override;
28 void resized() override;
29
30 virtual void updateWaveformView(const AudioBuffer<float>& newAudio);
31 void updateWaveformViewInterpolateBuffers(float gainSliderValue, const AudioBuffer<float>& buffer1,
32 const AudioBuffer<float>& buffer2, float samplePosition = 0.0f);
33 void clear();
34
35 void waveformZoomed(const AudioBuffer<float>& audioBuffer, int startSample, int numsamples) const;
36 void setWaveformColour(Colour waveformColour);
37
38 void setTitle(const String& title);
39 void setDropText(const String& newText);
40 void setDrawGrid(bool drawGrid);
41 void setShowFileName(bool showFileName);
42
48 void setShowBorderOnDragHover(bool showBorder);
49
54 void setUseExtendedFilePaths(bool val);
55
61 void setLimitToSingleDroppedItem(bool val);
62
63 bool matchesExpression(const String& expression, const String& stringToTest);
64 void setRegexFileFilter(const String& newExpression);
65
66 bool soundFileTypeIsValid(std::string fileName);
67 Array<File> getExtendedFilePaths(const StringArray& files);
68
69 bool isInterestedInFileDrag(const StringArray& files);
70 void fileDragEnter(const StringArray& files, int x, int y);
71 void fileDragExit(const StringArray& files);
72
81 void setHoverState(bool newState);
82
83 private:
84 struct Layout
85 {
86 const String waveformAreaBackdropImageName{"Sample_Backdrop_x_2_png"};
87 const String addIconImageName{"ADD_Icon_svg"};
88 const Rectangle<int> dropTextArea{115, 57, 134, 28};
89 const int dropTextMaxLines{2};
90 const float dropTextHeight{13.62f};
91 const float dropTextHorizontalScaleFactor{1.101f};
92 const Font dropTextFont{Font(dropTextHeight)};
93 const float dropTextOpacityDefault{0.3f};
94 const float dropTextOpacityHover{0.7f};
95 const float dropTextOpacitySelected{0.7f};
96 const Rectangle<int> plusButtonArea{74, 56, 30, 30};
98
99 bool m_mouseHover{false};
100 std::unique_ptr<Drawable> m_waveformAreaBackdropImage;
101 std::unique_ptr<Drawable> m_addIconImage;
102
103 void updateWaveformThumbnail(const AudioBuffer<float>& monoAudioBuffer);
104 void mixStereoBufferToMono(const AudioBuffer<float>& stereo, AudioBuffer<float>& mono) const;
105
106 ListenerList<WaveformViewer::Listener> m_listeners;
107 String m_regexFileFilter{""}; // By default will accept any file
108
109 const Colour DEFAULT_COLOUR{Colours::lightgrey.withAlpha(0.5f)};
111
114 String m_dropText{""};
115
116 static constexpr float m_fixedSampleRate{48000.0f};
117 float m_currentSampleRate{48000.0f};
118
119 std::unique_ptr<AudioFormatManager> m_formatManager;
120 std::unique_ptr<AudioFormatReader> m_wavReader;
121 std::unique_ptr<AudioThumbnailCache> m_thumbnailCache;
122 std::unique_ptr<AudioThumbnail> m_thumbnail;
123
125 bool m_drawGrid{true};
126
127 static constexpr float minus96db{0.00001584893192461114f};
128 bool m_showFileName{true};
131
135 };
136} // namespace krotos
Definition WaveformViewer.h:16
virtual void fileHasBeenDropped(WaveformViewer *waveformViewer, const StringArray &files)=0
Definition WaveformViewer.h:6
static constexpr float m_fixedSampleRate
Definition WaveformViewer.h:116
void setLimitToSingleDroppedItem(bool val)
Definition WaveformViewer.cpp:166
void addListener(WaveformViewer::Listener *Listener)
Definition WaveformViewer.cpp:33
String m_filePath
Definition WaveformViewer.h:112
void removeListener(WaveformViewer::Listener *Listener)
Definition WaveformViewer.cpp:35
void paint(Graphics &g) override
Definition WaveformViewer.cpp:37
String m_regexFileFilter
Definition WaveformViewer.h:107
const Colour DEFAULT_COLOUR
Definition WaveformViewer.h:109
void fileDragExit(const StringArray &files)
Definition WaveformViewer.cpp:261
bool m_showFileName
Definition WaveformViewer.h:128
std::unique_ptr< AudioThumbnailCache > m_thumbnailCache
Definition WaveformViewer.h:121
WaveformViewer(Colour waveformColour=Colours::white)
Definition WaveformViewer.cpp:6
void setUseExtendedFilePaths(bool val)
Definition WaveformViewer.cpp:164
bool m_draggedItemIsHovering
Definition WaveformViewer.h:130
void mixStereoBufferToMono(const AudioBuffer< float > &stereo, AudioBuffer< float > &mono) const
Definition WaveformViewer.cpp:277
bool m_mouseHover
Definition WaveformViewer.h:99
void updateWaveformViewInterpolateBuffers(float gainSliderValue, const AudioBuffer< float > &buffer1, const AudioBuffer< float > &buffer2, float samplePosition=0.0f)
Definition WaveformViewer.cpp:111
void setDropText(const String &newText)
Definition WaveformViewer.cpp:156
bool m_dragBorderShouldShow
Definition WaveformViewer.h:129
bool matchesExpression(const String &expression, const String &stringToTest)
Definition WaveformViewer.cpp:168
ColourIds
Definition WaveformViewer.h:10
@ borderColour
Definition WaveformViewer.h:12
void setDrawGrid(bool drawGrid)
Definition WaveformViewer.cpp:158
Label m_titleLabel
Definition WaveformViewer.h:124
void setRegexFileFilter(const String &newExpression)
Definition WaveformViewer.cpp:187
void resized() override
Definition WaveformViewer.cpp:97
std::unique_ptr< AudioFormatManager > m_formatManager
Definition WaveformViewer.h:119
void setWaveformColour(Colour waveformColour)
Definition WaveformViewer.cpp:152
int m_numDraggedFilesHovering
Definition WaveformViewer.h:133
ListenerList< WaveformViewer::Listener > m_listeners
Definition WaveformViewer.h:106
Colour m_waveformColour
Definition WaveformViewer.h:110
static constexpr float minus96db
Definition WaveformViewer.h:127
bool m_useExtendedFilePaths
Definition WaveformViewer.h:132
Array< File > getExtendedFilePaths(const StringArray &files)
Definition WaveformViewer.cpp:198
bool m_drawGrid
Definition WaveformViewer.h:125
std::unique_ptr< Drawable > m_addIconImage
Definition WaveformViewer.h:101
float m_currentSampleRate
Definition WaveformViewer.h:117
void fileDragEnter(const StringArray &files, int x, int y)
Definition WaveformViewer.cpp:246
void setTitle(const String &title)
Definition WaveformViewer.cpp:154
void setShowFileName(bool showFileName)
Definition WaveformViewer.cpp:160
bool isInterestedInFileDrag(const StringArray &files)
Definition WaveformViewer.cpp:230
void setHoverState(bool newState)
Definition WaveformViewer.cpp:228
void updateWaveformThumbnail(const AudioBuffer< float > &monoAudioBuffer)
Definition WaveformViewer.cpp:270
virtual void updateWaveformView(const AudioBuffer< float > &newAudio)
Definition WaveformViewer.cpp:99
std::unique_ptr< Drawable > m_waveformAreaBackdropImage
Definition WaveformViewer.h:100
void clear()
Definition WaveformViewer.cpp:136
std::unique_ptr< AudioThumbnail > m_thumbnail
Definition WaveformViewer.h:122
bool soundFileTypeIsValid(std::string fileName)
Definition WaveformViewer.cpp:189
String m_fileName
Definition WaveformViewer.h:113
String m_dropText
Definition WaveformViewer.h:114
void waveformZoomed(const AudioBuffer< float > &audioBuffer, int startSample, int numsamples) const
Definition WaveformViewer.cpp:146
bool m_limitToSingleDroppedItem
Definition WaveformViewer.h:134
void setShowBorderOnDragHover(bool showBorder)
Definition WaveformViewer.cpp:162
struct krotos::WaveformViewer::Layout m_layout
std::unique_ptr< AudioFormatReader > m_wavReader
Definition WaveformViewer.h:120
Enables zooming of a painted component using special drawing methods.
Definition ZoomableComponent.h:7
Definition AirAbsorptionFilter.cpp:2
Definition WaveformViewer.h:85
const float dropTextHeight
Definition WaveformViewer.h:90
const Rectangle< int > dropTextArea
Definition WaveformViewer.h:88
const float dropTextOpacityHover
Definition WaveformViewer.h:94
const float dropTextOpacitySelected
Definition WaveformViewer.h:95
const int dropTextMaxLines
Definition WaveformViewer.h:89
const String waveformAreaBackdropImageName
Definition WaveformViewer.h:86
const float dropTextHorizontalScaleFactor
Definition WaveformViewer.h:91
const Rectangle< int > plusButtonArea
Definition WaveformViewer.h:96
const Font dropTextFont
Definition WaveformViewer.h:92
const float dropTextOpacityDefault
Definition WaveformViewer.h:93
const String addIconImageName
Definition WaveformViewer.h:87