Vital
Loading...
Searching...
No Matches
wave_line_source_overlay.h
Go to the documentation of this file.
1#pragma once
2
3#include "JuceHeader.h"
4
5#include "wave_line_source.h"
6#include "line_editor.h"
8
19 public:
20 static constexpr int kDefaultXGrid = 6;
21 static constexpr int kDefaultYGrid = 4;
22 static constexpr float kFillAlpha = 0.6f;
23
30
34 virtual ~WaveLineSourceOverlay();
35
41 void resized() override;
42
49 virtual void frameSelected(WavetableKeyframe* keyframe) override;
50
56 virtual void frameDragged(WavetableKeyframe* keyframe, int position) override { }
57
62 virtual void setEditBounds(Rectangle<int> bounds) override;
63
69 virtual bool setTimeDomainBounds(Rectangle<int> bounds) override;
70
76 void renderOpenGlComponents(OpenGlWrapper& open_gl, bool animate) override {
77 editor_->setSizeRatio(getSizeRatio());
79 }
80
85 void setPhase(float phase) override { }
86
92 void lineEditorScrolled(const MouseEvent& e, const MouseWheelDetails& wheel) override;
93
99 void togglePaintMode(bool enabled, bool temporary_switch) override { }
100
104 void fileLoaded() override;
105
109 void importLfo() override { }
110
114 void exportLfo() override { }
115
122 void pointChanged(int index, Point<float> position, bool mouse_up) override;
123
128 void powersChanged(bool mouse_up) override;
129
135 void pointAdded(int index, Point<float> position) override;
136
141 void pointRemoved(int index) override;
142
148 void pointsAdded(int index, int num_points_added) override;
149
155 void pointsRemoved(int index, int num_points_removed) override;
156
161 void sliderValueChanged(Slider* moved_slider) override;
162
167 void sliderDragEnded(Slider* moved_slider) override;
168
173 void setLineSource(WaveLineSource* line_source) {
174 line_source_ = line_source;
175 editor_->setModel(default_line_generator_.get());
176 current_frame_ = nullptr;
177 }
178
179 protected:
182
183 std::unique_ptr<LineGenerator> default_line_generator_;
184 std::unique_ptr<LineEditor> editor_;
185
186 std::unique_ptr<SynthSlider> pull_power_;
187 std::unique_ptr<SynthSlider> horizontal_grid_;
188 std::unique_ptr<SynthSlider> vertical_grid_;
189
190 std::unique_ptr<Component> horizontal_incrementers_;
191 std::unique_ptr<Component> vertical_incrementers_;
192
193 std::unique_ptr<Slider> interpolation_selector_;
194
195 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(WaveLineSourceOverlay)
196};
197
Interface for classes that want to receive notifications about line editor changes.
Definition line_editor.h:86
virtual void renderOpenGlComponents(OpenGlWrapper &open_gl, bool animate)
Renders all OpenGL components in this section and sub-sections.
Definition synth_section.cpp:357
virtual void animate(bool animate)
Triggers animation state change in sub-sections if needed.
Definition synth_section.cpp:822
float getSizeRatio() const
Definition synth_section.h:765
A keyframe class that represents a particular line-based waveform configuration at a given position.
Definition wave_line_source.h:36
A WavetableComponent that generates waveforms from a series of line segments.
Definition wave_line_source.h:23
An overlay for controlling a WaveLineSource in the wavetable editor.
Definition wave_line_source_overlay.h:18
void lineEditorScrolled(const MouseEvent &e, const MouseWheelDetails &wheel) override
Called when the line editor is scrolled.
Definition wave_line_source_overlay.cpp:141
static constexpr int kDefaultXGrid
Default horizontal grid size.
Definition wave_line_source_overlay.h:20
std::unique_ptr< SynthSlider > vertical_grid_
Control for vertical grid size.
Definition wave_line_source_overlay.h:188
void togglePaintMode(bool enabled, bool temporary_switch) override
Toggles painting mode (not used in this overlay).
Definition wave_line_source_overlay.h:99
std::unique_ptr< LineEditor > editor_
Line editor for modifying line source points.
Definition wave_line_source_overlay.h:184
std::unique_ptr< SynthSlider > horizontal_grid_
Control for horizontal grid size.
Definition wave_line_source_overlay.h:187
std::unique_ptr< LineGenerator > default_line_generator_
Default line generator model.
Definition wave_line_source_overlay.h:183
void powersChanged(bool mouse_up) override
Callback when line powers/curvature change.
Definition wave_line_source_overlay.cpp:160
std::unique_ptr< SynthSlider > pull_power_
Control for pull power parameter.
Definition wave_line_source_overlay.h:186
WaveLineSource * line_source_
The associated WaveLineSource.
Definition wave_line_source_overlay.h:180
std::unique_ptr< Component > vertical_incrementers_
Incrementer buttons for vertical grid slider.
Definition wave_line_source_overlay.h:191
WaveLineSourceOverlay()
Constructor.
Definition wave_line_source_overlay.cpp:8
void sliderValueChanged(Slider *moved_slider) override
Called when a slider in this overlay changes its value.
Definition wave_line_source_overlay.cpp:242
virtual void setEditBounds(Rectangle< int > bounds) override
Sets the editing bounds for the UI controls.
Definition wave_line_source_overlay.cpp:104
void sliderDragEnded(Slider *moved_slider) override
Called when a slider in this overlay finishes being dragged.
Definition wave_line_source_overlay.cpp:258
void pointsRemoved(int index, int num_points_removed) override
Callback when multiple points are removed.
Definition wave_line_source_overlay.cpp:222
std::unique_ptr< Slider > interpolation_selector_
Possibly unused, defined in code for future functionality.
Definition wave_line_source_overlay.h:193
void pointAdded(int index, Point< float > position) override
Callback when a line point is added.
Definition wave_line_source_overlay.cpp:167
virtual void frameDragged(WavetableKeyframe *keyframe, int position) override
Called when a frame is dragged, but this overlay does not respond to frame dragging.
Definition wave_line_source_overlay.h:56
std::unique_ptr< Component > horizontal_incrementers_
Incrementer buttons for horizontal grid slider.
Definition wave_line_source_overlay.h:190
void importLfo() override
Imports an LFO (not used in this overlay).
Definition wave_line_source_overlay.h:109
virtual bool setTimeDomainBounds(Rectangle< int > bounds) override
Sets the bounding box for the time domain display area (line editor).
Definition wave_line_source_overlay.cpp:136
void pointsAdded(int index, int num_points_added) override
Callback when multiple points are added.
Definition wave_line_source_overlay.cpp:185
void renderOpenGlComponents(OpenGlWrapper &open_gl, bool animate) override
Renders any openGL components, including the line editor.
Definition wave_line_source_overlay.h:76
void setPhase(float phase) override
Sets the waveform phase (not used here).
Definition wave_line_source_overlay.h:85
static constexpr int kDefaultYGrid
Default vertical grid size.
Definition wave_line_source_overlay.h:21
void pointChanged(int index, Point< float > position, bool mouse_up) override
Callback when a line point changes its position.
Definition wave_line_source_overlay.cpp:153
virtual void frameSelected(WavetableKeyframe *keyframe) override
Called when a new frame is selected in the wavetable editor.
Definition wave_line_source_overlay.cpp:85
void setLineSource(WaveLineSource *line_source)
Sets the WaveLineSource associated with this overlay.
Definition wave_line_source_overlay.h:173
static constexpr float kFillAlpha
Alpha value for fill rendering.
Definition wave_line_source_overlay.h:22
void fileLoaded() override
Callback for file loading completion (not used here).
Definition wave_line_source_overlay.cpp:149
virtual ~WaveLineSourceOverlay()
Destructor.
Definition wave_line_source_overlay.cpp:75
void exportLfo() override
Exports an LFO (not used in this overlay).
Definition wave_line_source_overlay.h:114
WaveLineSource::WaveLineSourceKeyframe * current_frame_
Currently selected frame data.
Definition wave_line_source_overlay.h:181
void pointRemoved(int index) override
Callback when a point is removed.
Definition wave_line_source_overlay.cpp:205
void resized() override
Called when the overlay is resized.
Definition wave_line_source_overlay.cpp:77
A base overlay component for editing and interacting with a wavetable component's parameters.
Definition wavetable_component_overlay.h:22
Represents a single state of a waveform at a specific position in a wavetable.
Definition wavetable_keyframe.h:35
A helper struct containing references to OpenGL context, shaders, and display scale.
Definition shaders.h:174