Vital
|
A specialized OpenGL component for rendering a shape-based button. More...
#include <synth_button.h>
Public Member Functions | |
OpenGlShapeButtonComponent (Button *button) | |
void | parentHierarchyChanged () override |
Called when the parent hierarchy changes, for example when the component is moved in the UI. | |
void | setColors () |
Sets the colors used for this shape button based on the current Skin. | |
void | incrementHover () |
Increments or decrements the hover amount, smoothing the hover transitions. | |
virtual void | init (OpenGlWrapper &open_gl) override |
virtual void | render (OpenGlWrapper &open_gl, bool animate) override |
virtual void | destroy (OpenGlWrapper &open_gl) override |
void | redoImage () |
Redraws the image of the shape, useful after size or color changes. | |
void | setShape (const Path &shape) |
void | useOnColors (bool use) |
void | setDown (bool down) |
void | setHover (bool hover) |
![]() | |
OpenGlComponent (String name="") | |
Constructs an OpenGlComponent. | |
virtual | ~OpenGlComponent () |
Destructor. | |
virtual void | resized () override |
Called when the component is resized. | |
void | addRoundedCorners () |
Adds rounded corners to the component's edges. | |
void | addBottomRoundedCorners () |
Adds rounded corners only at the bottom of the component. | |
void | renderCorners (OpenGlWrapper &open_gl, bool animate, Colour color, float rounding) |
Renders the corner shapes using the given color and rounding amount. | |
void | renderCorners (OpenGlWrapper &open_gl, bool animate) |
Renders corners with default body color and rounding. | |
virtual void | paintBackground (Graphics &g) |
Paints a standard background for the component. | |
void | repaintBackground () |
Requests a repaint of the component's background on the OpenGL layer. | |
Colour | getBodyColor () const |
Retrieves the component's body color. | |
void | setParent (const SynthSection *parent) |
Sets a pointer to the parent SynthSection for skin value lookups. | |
float | findValue (Skin::ValueId value_id) |
Finds a float value from the skin associated with this component's parent. | |
void | setSkinValues (const Skin &skin) |
Applies the skin overrides to this component's colors. | |
void | setSkinOverride (Skin::SectionOverride skin_override) |
Sets a skin override to control the component's color scheme. | |
force_inline void | checkGlError () |
Checks for and asserts that there are no OpenGL errors. | |
void | setBackgroundColor (const Colour &color) |
Sets the background color of the component for painting operations. | |
Static Public Attributes | |
static constexpr float | kHoverInc = 0.2f |
The amount of change in hover transition per frame. | |
Additional Inherited Members | |
![]() | |
static bool | setViewPort (Component *component, Rectangle< int > bounds, OpenGlWrapper &open_gl) |
Sets the OpenGL viewport to match a specified rectangle within a component. | |
static bool | setViewPort (Component *component, OpenGlWrapper &open_gl) |
Convenience overload that sets the viewport for the entire component's local bounds. | |
static void | setScissor (Component *component, OpenGlWrapper &open_gl) |
Sets the OpenGL scissor region to the entire component's local bounds. | |
static void | setScissorBounds (Component *component, Rectangle< int > bounds, OpenGlWrapper &open_gl) |
Sets the OpenGL scissor region to a specified rectangle within a component. | |
static std::unique_ptr< OpenGLShaderProgram::Uniform > | getUniform (const OpenGlWrapper &open_gl, const OpenGLShaderProgram &program, const char *name) |
Retrieves a uniform from the shader program if it exists. | |
static std::unique_ptr< OpenGLShaderProgram::Attribute > | getAttribute (const OpenGlWrapper &open_gl, const OpenGLShaderProgram &program, const char *name) |
Retrieves an attribute from the shader program if it exists. | |
static String | translateFragmentShader (const String &code) |
Translates a fragment shader code snippet to be compatible with the current GL version. | |
static String | translateVertexShader (const String &code) |
Translates a vertex shader code snippet to be compatible with the current GL version. | |
![]() | |
bool | setViewPort (OpenGlWrapper &open_gl) |
Sets the viewport for this component using the current OpenGlWrapper. | |
![]() | |
std::unique_ptr< OpenGlCorners > | corners_ |
Optional corners for rounded edges. | |
bool | only_bottom_corners_ |
Flag to round only the bottom corners. | |
Colour | background_color_ |
The background color of the component. | |
Colour | body_color_ |
The body color of the component. | |
const SynthSection * | parent_ |
Pointer to parent SynthSection for skin lookups. | |
Skin::SectionOverride | skin_override_ |
Skin override for custom appearance. | |
const vital::StatusOutput * | num_voices_readout_ |
StatusOutput for voice count lookups. | |
A specialized OpenGL component for rendering a shape-based button.
This component displays a shape (path) that changes color and appearance based on hover and pressed states. It is intended to be used in conjunction with a JUCE Button.
|
inline |
Constructor.
button | The JUCE Button associated with this shape component. |
|
inlineoverridevirtual |
Destroys OpenGL resources associated with this component.
open_gl | The OpenGlWrapper managing OpenGL state. |
Reimplemented from OpenGlComponent.
void OpenGlShapeButtonComponent::incrementHover | ( | ) |
Increments or decrements the hover amount, smoothing the hover transitions.
Smoothly increments or decrements the hover amount to create a fade effect.
|
inlineoverridevirtual |
Initializes the OpenGL resources for this component.
open_gl | The OpenGlWrapper managing OpenGL state. |
Reimplemented from OpenGlComponent.
|
inlineoverridevirtual |
Called when the parent hierarchy changes, for example when the component is moved in the UI.
Reimplemented from OpenGlComponent.
|
inline |
Redraws the image of the shape, useful after size or color changes.
|
overridevirtual |
Renders the shape component.
open_gl | The OpenGlWrapper managing OpenGL state. |
animate | If true, animates transitions like hover. |
Renders the OpenGlShapeButtonComponent using current hover and pressed states.
open_gl | The OpenGlWrapper managing OpenGL state. |
animate | If true, animates transitions. |
Implements OpenGlComponent.
|
inline |
Sets the colors used for this shape button based on the current Skin.
|
inline |
Sets the pressed state.
down | True if the button is pressed down. |
|
inline |
Sets the hover state.
hover | True if the mouse is hovering over the button. |
|
inline |
Sets the shape (path) to be rendered by this component.
shape | The new path representing the shape. |
|
inline |
Toggles whether the "on" colors should be used (for toggled states).
use | If true, uses the on-colors, otherwise uses off-colors. |
|
staticconstexpr |
The amount of change in hover transition per frame.