26 #include <SDL3_ttf/SDL_ttf.h>
28 #include "sdl_select.hpp"
29 #include "sdl_widget.hpp"
30 #include "sdl_button.hpp"
31 #include "sdl_buttons.hpp"
32 #include "sdl_input_widgets.hpp"
34 static const SDL_Color labelmouseovercolor = { 0, 0x80, 0, 0x60 };
35 static const SDL_Color labelbackgroundcolor = { 0x69, 0x66, 0x63, 0xff };
36 static const SDL_Color labelhighlightcolor = { 0xcd, 0xca, 0x35, 0x60 };
37 static const SDL_Color labelfontcolor = { 0xd1, 0xcf, 0xcd, 0xff };
39 SdlSelectWidget::SdlSelectWidget(SDL_Renderer* renderer, std::string label,
const SDL_FRect& rect)
40 :
SdlWidget(renderer, rect, true), _text(std::move(label)), _mouseover(false), _highlight(false)
42 update_text(renderer);
45 SdlSelectWidget::SdlSelectWidget(
SdlSelectWidget&& other) noexcept =
default;
47 bool SdlSelectWidget::set_mouseover(SDL_Renderer* renderer,
bool mouseOver)
49 _mouseover = mouseOver;
50 return update_text(renderer);
53 bool SdlSelectWidget::set_highlight(SDL_Renderer* renderer,
bool highlight)
55 _highlight = highlight;
56 return update_text(renderer);
59 bool SdlSelectWidget::update_text(SDL_Renderer* renderer)
62 std::vector<SDL_Color> colors = { labelbackgroundcolor };
64 colors.push_back(labelhighlightcolor);
66 colors.push_back(labelmouseovercolor);
67 if (!fill(renderer, colors))
69 return SdlWidget::update_text(renderer, _text, labelfontcolor);