lmgl 1.0.0
A lightweight OpenGL graphics engine library written in C++
Loading...
Searching...
No Matches
lmgl::ui::Button Class Reference

Simple button UI element with text label. More...

#include <button.hpp>

Inheritance diagram for lmgl::ui::Button:
lmgl::ui::UIElement

Public Member Functions

 Button (const std::string &label="Button", const std::string &name="Button")
 Constructor for Button.
 ~Button () override=default
 Destructor.
void set_label (const std::string &label)
 Set the button label text.
const std::string & get_label () const
 Get the button label text.
void set_on_click (std::function< void()> callback)
 Set the click callback.
void set_colors (const glm::vec4 &normal, const glm::vec4 &hovered, const glm::vec4 &pressed)
 Set button colors for different states.
void set_text_color (const glm::vec4 &color)
 Set text color.
std::shared_ptr< Textget_text ()
 Get the internal text element (for setting font).
bool contains_point (float x, float y, float canvas_width, float canvas_height) const
 Check if point is inside button.
bool handle_mouse_button (float x, float y, bool pressed, float canvas_width, float canvas_height)
 Handle mouse button event.
void handle_mouse_move (float x, float y, float canvas_width, float canvas_height)
 Handle mouse movement event.
void render (float canvas_width, float canvas_height, const glm::mat4 &projection) override
 Render the button.
Public Member Functions inherited from lmgl::ui::UIElement
 UIElement (const std::string &name="UIElement")
 Constructor for UIElement.
virtual ~UIElement ()=default
 Virtual destructor.
void set_position (const glm::vec2 &position)
 Set the position of the UI element.
void set_size (const glm::vec2 &size)
 Set the size of the UI element.
void set_anchor (Anchor anchor)
 Set the anchor of the UI element.
void set_render_order (int order)
 Set the render order (z-index).
void set_visible (bool visible)
 Set visibility of the UI element.
void set_name (const std::string &name)
 Set the name of the UI element.
const glm::vec2 & get_position () const
 Get the position of the UI element.
const glm::vec2 & get_size () const
 Get the size of the UI element.
Anchor get_anchor () const
 Get the anchor of the UI element.
int get_render_order () const
 Get the render order.
bool is_visible () const
 Check if the UI element is visible.
const std::string & get_name () const
 Get the name of the UI element.
std::shared_ptr< UIElementget_parent () const
 Get the parent UI element.
void add_child (const std::shared_ptr< UIElement > child)
 Add a child UI element.
void remove_child (const std::shared_ptr< UIElement > child)
 Remove a child UI element.
std::vector< std::shared_ptr< UIElement > > get_children () const
 Get all child UI elements.
glm::vec2 get_absolute_position (float canvas_width, float canvas_height) const
 Compute the absolute screen position based on anchor and parent.

Additional Inherited Members

Protected Attributes inherited from lmgl::ui::UIElement
std::string m_name
 Name of the UI element.
glm::vec2 m_position {0.0f, 0.0f}
 Position in pixels (relative to anchor).
glm::vec2 m_size {100.0f, 100.0f}
 Size in pixels.
Anchor m_anchor {Anchor::TopLeft}
 Anchor preset.
int m_render_order {0}
 Render order (z-index).
bool m_visible {true}
 Visibility flag.
std::weak_ptr< UIElementm_parent
 Parent UI element.
std::vector< std::shared_ptr< UIElement > > m_children
 Child UI elements.

Detailed Description

Simple button UI element with text label.

The Button class combines a Panel background with Text label, providing visual feedback for hover and press states.

Constructor & Destructor Documentation

◆ Button()

lmgl::ui::Button::Button ( const std::string & label = "Button",
const std::string & name = "Button" )

Constructor for Button.

Parameters
labelText to display on the button.
nameOptional name for the element.

Member Function Documentation

◆ contains_point()

bool lmgl::ui::Button::contains_point ( float x,
float y,
float canvas_width,
float canvas_height ) const

Check if point is inside button.

Parameters
xX coordinate in screen space.
yY coordinate in screen space.
canvas_widthCanvas width.
canvas_heightCanvas height.
Returns
True if point is inside button.

◆ get_label()

const std::string & lmgl::ui::Button::get_label ( ) const
inline

Get the button label text.

Returns
Current label.

◆ get_text()

std::shared_ptr< Text > lmgl::ui::Button::get_text ( )
inline

Get the internal text element (for setting font).

Returns
Pointer to text element.

◆ handle_mouse_button()

bool lmgl::ui::Button::handle_mouse_button ( float x,
float y,
bool pressed,
float canvas_width,
float canvas_height )

Handle mouse button event.

Parameters
xMouse X coordinate.
yMouse Y coordinate.
pressedTrue if button pressed, false if released.
canvas_widthCanvas width.
canvas_heightCanvas height.
Returns
True if event was handled.

◆ handle_mouse_move()

void lmgl::ui::Button::handle_mouse_move ( float x,
float y,
float canvas_width,
float canvas_height )

Handle mouse movement event.

Parameters
xMouse X coordinate.
yMouse Y coordinate.
canvas_widthCanvas width.
canvas_heightCanvas height.

◆ render()

void lmgl::ui::Button::render ( float canvas_width,
float canvas_height,
const glm::mat4 & projection )
overridevirtual

Render the button.

Parameters
canvas_widthCanvas width.
canvas_heightCanvas height.
projectionProjection matrix.

Implements lmgl::ui::UIElement.

◆ set_colors()

void lmgl::ui::Button::set_colors ( const glm::vec4 & normal,
const glm::vec4 & hovered,
const glm::vec4 & pressed )

Set button colors for different states.

Parameters
normalColor when not interacted with.
hoveredColor when mouse is over button.
pressedColor when button is pressed.

◆ set_label()

void lmgl::ui::Button::set_label ( const std::string & label)

Set the button label text.

Parameters
labelNew label text.

◆ set_on_click()

void lmgl::ui::Button::set_on_click ( std::function< void()> callback)
inline

Set the click callback.

Parameters
callbackFunction to call when button is clicked.

◆ set_text_color()

void lmgl::ui::Button::set_text_color ( const glm::vec4 & color)

Set text color.

Parameters
colorText color.

The documentation for this class was generated from the following files: