FreeRDP
Loading...
Searching...
No Matches
sdl_selectable_widget.cpp
1
20#include "sdl_selectable_widget.hpp"
21#include "sdl_blend_mode_guard.hpp"
22
23SdlSelectableWidget::SdlSelectableWidget(std::shared_ptr<SDL_Renderer>& renderer,
24 const SDL_FRect& rect)
25 : SdlWidget(renderer, rect)
26{
27}
28
29#if defined(WITH_SDL_IMAGE_DIALOGS)
30SdlSelectableWidget::SdlSelectableWidget(std::shared_ptr<SDL_Renderer>& renderer,
31 const SDL_FRect& rect, SDL_IOStream* ops)
32 : SdlWidget(renderer, rect, ops)
33{
34}
35#endif
36
38
39SdlSelectableWidget::~SdlSelectableWidget() = default;
40
41bool SdlSelectableWidget::highlight(bool enable)
42{
43 _highlight = enable;
44 return update();
45}
46
47bool SdlSelectableWidget::mouseover(bool enable)
48{
49 _mouseover = enable;
50 return update();
51}
52
53bool SdlSelectableWidget::updateInternal()
54{
55 SdlBlendModeGuard guard(_renderer, SDL_BLENDMODE_NONE);
56 std::vector<SDL_Color> colors;
57 colors.push_back(_backgroundcolor);
58 if (_highlight)
59 colors.push_back(_highlightcolor);
60
61 if (_mouseover)
62 colors.push_back(_mouseovercolor);
63
64 if (!fill(colors))
65 return false;
66
67 return SdlWidget::updateInternal();
68}
SdlSelectableWidget(std::shared_ptr< SDL_Renderer > &renderer, const SDL_FRect &rect)