Euphoria
button.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "base/rect.h"
4 #include "base/rgb.h"
5 #include "base/vec2.h"
6 #include "core/tweenable.h"
7 
8 #include "gui/widget.h"
9 #include "gui/textdata.h"
10 
11 #include <memory>
12 
13 
14 namespace eu::render
15 {
16  struct ScalableSprite;
17 }
18 
19 namespace eu::gui
20 {
21  struct Skin;
22  struct ButtonState;
23  struct State;
24 
25  struct Button : Widget
26  {
28  std::shared_ptr<render::ScalableSprite> sprite;
31 
36 
38  ~Button() override;
39 
40  Button(const Button&) = delete;
41  Button(Button&&) = delete;
42  void operator=(const Button&) = delete;
43  void operator=(Button&&) = delete;
44 
45  void set_skin(Skin* new_skin);
46 
47  void update(float dt) override;
48  [[nodiscard]] size2f calc_minimum_size() const override;
49  void render(render::SpriteRenderer* renderer) const override;
50  void visit(Visitor* visitor) override;
51  void on_size_changed() override;
52 
53  virtual void on_clicked() = 0;
54  };
55 }
State
enum to catch adding arguments during parsing in a callback
Definition: argparse.h:23
TextData text
Definition: button.h:29
Button(gui::State *state)
Definition: button.cc:14
virtual void on_clicked()=0
void render(render::SpriteRenderer *renderer) const override
Definition: button.cc:123
void visit(Visitor *visitor) override
Definition: button.cc:161
ButtonState * last_state
Definition: button.h:27
std::shared_ptr< render::ScalableSprite > sprite
Definition: button.h:28
void operator=(const Button &)=delete
core::Tweenable< vec2f > position_displacement
Definition: button.h:35
void update(float dt) override
Definition: button.cc:30
size2f calc_minimum_size() const override
Definition: button.cc:96
void set_skin(Skin *new_skin)
Definition: button.cc:174
~Button() override
core::Tweenable< Rgb > image_color
Definition: button.h:33
Button(Button &&)=delete
void operator=(Button &&)=delete
Skin * skin
Definition: button.h:30
Button(const Button &)=delete
core::Tweenable< Rgb > text_color
Definition: button.h:34
core::Tweenable< float > scale
Definition: button.h:32
void on_size_changed() override
Definition: button.cc:168
ParserState state
Definition: ui_text.cc:134