FreeRDP
Loading...
Searching...
No Matches
SDL2/dialogs/sdl_button.cpp
1
21#include <cassert>
22#include <utility>
23
24#include "sdl_button.hpp"
25
26static const SDL_Color buttonbackgroundcolor = { 0x69, 0x66, 0x63, 0xff };
27static const SDL_Color buttonhighlightcolor = { 0xcd, 0xca, 0x35, 0x60 };
28static const SDL_Color buttonmouseovercolor = { 0x66, 0xff, 0x66, 0x60 };
29static const SDL_Color buttonfontcolor = { 0xd1, 0xcf, 0xcd, 0xff };
30
31SdlButton::SdlButton(SDL_Renderer* renderer, std::string label, int id, SDL_Rect rect)
32 : SdlWidget(renderer, rect, false), _name(std::move(label)), _id(id)
33{
34 assert(renderer);
35
36 update_text(renderer, _name, buttonfontcolor, buttonbackgroundcolor);
37}
38
39SdlButton::SdlButton(SdlButton&& other) noexcept = default;
40
41SdlButton::~SdlButton() = default;
42
43bool SdlButton::highlight(SDL_Renderer* renderer)
44{
45 assert(renderer);
46
47 std::vector<SDL_Color> colors = { buttonbackgroundcolor, buttonhighlightcolor };
48 if (!fill(renderer, colors))
49 return false;
50 return update_text(renderer, _name, buttonfontcolor);
51}
52
53bool SdlButton::mouseover(SDL_Renderer* renderer)
54{
55 std::vector<SDL_Color> colors = { buttonbackgroundcolor, buttonmouseovercolor };
56 if (!fill(renderer, colors))
57 return false;
58 return update_text(renderer, _name, buttonfontcolor);
59}
60
61bool SdlButton::update(SDL_Renderer* renderer)
62{
63 assert(renderer);
64
65 return update_text(renderer, _name, buttonfontcolor, buttonbackgroundcolor);
66}
67
68int SdlButton::id() const
69{
70 return _id;
71}