24 editor_->setAllowFileLoading(
false);
27 pull_power_ = std::make_unique<SynthSlider>(
"wave_line_source_pull_power");
31 pull_power_->getImageComponent()->setAlwaysOnTop(
true);
36 pull_power_->setSliderStyle(Slider::RotaryHorizontalVerticalDrag);
39 horizontal_grid_ = std::make_unique<SynthSlider>(
"wave_line_source_horizontal_grid");
54 vertical_grid_ = std::make_unique<SynthSlider>(
"wave_line_source_vertical_grid");
63 vertical_grid_->setSliderStyle(Slider::RotaryHorizontalVerticalDrag);
81 editor_->setFillColors(fill_color2, fill_color);
86 if (keyframe ==
nullptr) {
105 static constexpr float kPullPowerWidthHeightRatio = 2.0f;
106 static constexpr float kGridWidthHeightRatio = 2.0f;
109 int pull_power_width = bounds.getHeight() * kPullPowerWidthHeightRatio;
110 int grid_width = bounds.getHeight() * kGridWidthHeightRatio;
111 int total_width = pull_power_width + 2 * grid_width + 2 * padding;
115 int x = bounds.getX() + (bounds.getWidth() - total_width) / 2;
117 int y = bounds.getY() + title_height;
118 int height = bounds.getHeight() - title_height;
119 pull_power_->setBounds(x, y, pull_power_width, height);
143 if (wheel.deltaY > 0)
174 for (
int i = 0; i < num_keyframes; ++i) {
192 for (
int i = 0; i < num_keyframes; ++i) {
196 for (
int p = 0; p < num_points_added; ++p)
212 for (
int i = 0; i < num_keyframes; ++i) {
229 for (
int i = 0; i < num_keyframes; ++i) {
233 for (
int p = 0; p < num_points_removed; ++p)
@ kWidgetFillFade
Definition skin.h:108
@ kWidgetPrimary1
Definition skin.h:165
@ kWidgetSecondary1
Definition skin.h:168
void addSlider(SynthSlider *slider, bool show=true, bool listen=true)
Definition synth_section.cpp:445
float findValue(Skin::ValueId value_id) const
Finds a value in the skin overrides or from the parent if not found locally.
Definition synth_section.cpp:18
void addOpenGlComponent(OpenGlComponent *open_gl_component, bool to_beginning=false)
Definition synth_section.cpp:489
static TextLookAndFeel * instance()
Singleton instance access.
Definition text_look_and_feel.h:106
A keyframe class that represents a particular line-based waveform configuration at a given position.
Definition wave_line_source.h:36
int getNumPoints() const
Gets the number of points defining the line.
Definition wave_line_source.h:104
const LineGenerator * getLineGenerator() const
Provides const access to the underlying LineGenerator.
Definition wave_line_source.h:134
float getPullPower() const
Gets the current pull power value.
Definition wave_line_source.h:127
void removePoint(int index)
Removes a point from the line definition.
Definition wave_line_source.h:90
void addMiddlePoint(int index)
Inserts a middle point between two existing points.
Definition wave_line_source.h:97
void setPullPower(float power)
Sets the pull power, which influences how interpolation occurs between keyframes.
Definition wave_line_source.h:120
WaveLineSourceKeyframe * getKeyframe(int index)
Retrieves a WaveLineSourceKeyframe by index.
Definition wave_line_source.cpp:116
void setNumPoints(int num_points)
Sets the number of points used by the line generator.
Definition wave_line_source.cpp:112
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
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
void pointAdded(int index, Point< float > position) override
Callback when a line point is added.
Definition wave_line_source_overlay.cpp:167
std::unique_ptr< Component > horizontal_incrementers_
Incrementer buttons for horizontal grid slider.
Definition wave_line_source_overlay.h:190
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
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 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
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
int numFrames() const
Gets the number of keyframes.
Definition wavetable_component.h:155
void addTitle(const std::string &title)
Adds a title string for the next control section.
Definition wavetable_component_overlay.h:94
void addLine(int position)
Adds a vertical line divider at the given position.
Definition wavetable_component_overlay.h:88
void clearTitles()
Clears all control section titles.
Definition wavetable_component_overlay.h:82
void clearLines()
Clears all line divider positions.
Definition wavetable_component_overlay.h:77
A base overlay component for editing and interacting with a wavetable component's parameters.
Definition wavetable_component_overlay.h:22
void setControlsWidth(int width)
Sets the total width for controls in the overlay.
Definition wavetable_component_overlay.h:267
ControlsBackground controls_background_
Definition wavetable_component_overlay.h:300
virtual void setEditBounds(Rectangle< int > bounds)
Sets the editing bounds within which controls and titles are placed.
Definition wavetable_component_overlay.cpp:67
static constexpr float kTitleHeightRatio
Definition wavetable_component_overlay.h:32
int getPadding()
Gets the current padding value.
Definition wavetable_component_overlay.h:248
static constexpr int kMaxGrid
Maximum grid lines used by some overlays.
Definition wavetable_component_overlay.h:25
void notifyChanged(bool mouse_up)
Notifies listeners that a change has occurred to the frame.
Definition wavetable_component_overlay.cpp:86
Represents a single state of a waveform at a specific position in a wavetable.
Definition wavetable_keyframe.h:35
int index()
Gets the index of this keyframe within its owner component.
Definition wavetable_keyframe.cpp:32
WavetableComponent * owner()
Gets the WavetableComponent that owns this keyframe.
Definition wavetable_keyframe.h:152
static constexpr int kWaveformSize
The size of the waveform (number of samples per frame).
Definition wave_frame.h:21
#define VITAL_ASSERT(x)
Definition common.h:11