13 left_position_ = 0.0f;
14 right_position_ = 1.0f;
31 OpenGlLineRenderer::mouseDown(e);
33 editing_ =
getHover(e.getPosition());
38 OpenGlLineRenderer::mouseUp(e);
40 if (editing_ !=
kNone)
41 notifyWindowChanged(
true);
48 OpenGlLineRenderer::mouseMove(e);
51 if (hovering_ != hover) {
58 OpenGlLineRenderer::mouseExit(e);
64 OpenGlLineRenderer::mouseDrag(e);
69void WaveWindowEditor::notifyWindowChanged(
bool mouse_up) {
70 for (Listener* listener : listeners_)
71 listener->windowChanged(editing_ ==
kLeft, mouse_up);
74void WaveWindowEditor::changeValues(
const MouseEvent& e) {
75 if (editing_ ==
kNone)
78 float position = (1.0f * e.getPosition().x) / getWidth();
79 if (editing_ ==
kLeft)
81 else if (editing_ ==
kRight)
84 notifyWindowChanged(
false);
88void WaveWindowEditor::setEditingQuads() {
89 if (editing_ ==
kLeft)
91 else if (editing_ ==
kRight)
94 edit_bars_.
setQuad(2, -2.0f, -2.0f, 0.0f, 0.0f);
96 if (hovering_ ==
kLeft)
98 else if (hovering_ ==
kRight)
101 edit_bars_.
setQuad(3, -2.0f, -2.0f, 0.0f, 0.0f);
104void WaveWindowEditor::setPoints() {
109 float width = getWidth();
110 float half_height = 0.5f * getHeight();
111 float left_gl_x = left_position_ * width;
120 setYAt(i, half_height + y);
125 float right_gl_x = right_position_ * width;
134 setYAt(index, half_height + y);
141 float window_left_x = left_position_ * getWidth();
142 float delta_left = fabsf(window_left_x - position.x);
143 float window_right_x = right_position_ * getWidth();
144 float delta_right = fabsf(window_right_x - position.x);
146 bool choose_left = delta_left < delta_right || (delta_left == delta_right && position.x < window_left_x);
147 if (delta_left <
kGrabRadius * getWidth() && choose_left)
virtual void resized() override
Called when the component is resized.
Definition open_gl_component.cpp:121
float findValue(Skin::ValueId value_id)
Finds a float value from the skin associated with this component's parent.
Definition open_gl_component.cpp:173
A component for rendering lines with optional filling and boost effects using OpenGL.
Definition open_gl_line_renderer.h:16
force_inline void setYAt(int index, float val)
Sets the y-coordinate of a point, marking data as dirty.
Definition open_gl_line_renderer.h:98
force_inline void setXAt(int index, float val)
Sets the x-coordinate of a point, marking data as dirty.
Definition open_gl_line_renderer.h:105
force_inline void setLineWidth(float width)
Sets the line width in pixels.
Definition open_gl_line_renderer.h:66
void setQuad(int i, float x, float y, float w, float h)
Sets the position and size of a quad in normalized device space.
Definition open_gl_multi_quad.h:313
void setTargetComponent(Component *target_component)
Sets a target component to help position the quads.
Definition open_gl_multi_quad.h:358
force_inline void setColor(Colour color)
Sets the base color for the quads.
Definition open_gl_multi_quad.h:102
force_inline float getQuadX(int i) const
Gets the x-position of a specified quad.
Definition open_gl_multi_quad.h:175
Manages and provides access to vertex and fragment shaders used by the OpenGL rendering pipeline.
Definition shaders.h:19
@ kWidgetLineWidth
Definition skin.h:105
@ kLightenScreen
Definition skin.h:141
void mouseMove(const MouseEvent &e) override
Handles mouse move events, updating hover states over handles.
Definition wave_window_editor.cpp:47
WaveWindowEditor()
Constructs a WaveWindowEditor instance.
Definition wave_window_editor.cpp:8
ActiveSide
Enum representing which side (left or right) is being edited or hovered.
Definition wave_window_editor.h:30
@ kRight
Definition wave_window_editor.h:33
@ kLeft
Definition wave_window_editor.h:32
@ kNone
Definition wave_window_editor.h:31
static constexpr float kGrabRadius
Definition wave_window_editor.h:20
void mouseUp(const MouseEvent &e) override
Handles mouse up events, finalizing changes if a handle was being moved.
Definition wave_window_editor.cpp:37
ActiveSide getHover(Point< int > position)
Determines which handle (left or right) is being hovered based on a position.
Definition wave_window_editor.cpp:140
virtual ~WaveWindowEditor()
Destructor.
Definition wave_window_editor.cpp:20
void resized() override
Called when the component is resized. Updates the rendering and layout.
Definition wave_window_editor.cpp:22
static constexpr int kPointsPerSection
Definition wave_window_editor.h:22
void mouseDrag(const MouseEvent &e) override
Handles mouse drag events, adjusting the window boundaries.
Definition wave_window_editor.cpp:63
void mouseDown(const MouseEvent &e) override
Handles mouse down events, determining which side (if any) is selected.
Definition wave_window_editor.cpp:30
void mouseExit(const MouseEvent &e) override
Handles mouse exit events, resetting hover states.
Definition wave_window_editor.cpp:57
static constexpr int kTotalPoints
Definition wave_window_editor.h:24
static float applyWindow(WindowShape window_shape, float t)
Applies the chosen window shape to a given normalized position.
Definition wave_window_modifier.cpp:10
@ kCos
A cosine-based window (smooth rise/fall).
Definition wave_window_modifier.h:26
force_inline poly_float clamp(poly_float value, mono_float min, mono_float max)
Clamps each lane of a vector to [min, max].
Definition poly_utils.h:306
force_inline poly_float interpolate(poly_float from, poly_float to, mono_float t)
Performs a linear interpolation between two poly_floats using a scalar t in [0..1].
Definition poly_utils.h:182
Provides various utility functions, classes, and constants for audio, math, and general-purpose opera...