43 lines
1.3 KiB
C++
43 lines
1.3 KiB
C++
|
#ifndef BWIDGETS_FONT_HANDLER_HPP_
|
||
|
#define BWIDGETS_FONT_HANDLER_HPP_
|
||
|
|
||
|
#include <basic_widgets/core/font.hpp>
|
||
|
|
||
|
namespace bwidgets::widget
|
||
|
{
|
||
|
class FontHandler
|
||
|
{
|
||
|
protected:
|
||
|
core::Font* _font {nullptr};
|
||
|
SDL_Color _font_color_bg {255, 255, 255, SDL_ALPHA_OPAQUE};
|
||
|
SDL_Color _font_color_fg {0, 0, 0, SDL_ALPHA_OPAQUE};
|
||
|
core::Font::RenderMode _font_render_mode {core::Font::RenderMode::SHADED};
|
||
|
|
||
|
virtual void _handle_font_change(core::Font*) = 0;
|
||
|
virtual void _handle_font_color_change(const SDL_Color&, const SDL_Color&) = 0;
|
||
|
|
||
|
public:
|
||
|
virtual ~FontHandler() = default;
|
||
|
|
||
|
virtual inline FontHandler* font(core::Font* f) final {
|
||
|
_handle_font_change(f);
|
||
|
_font = f;
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
virtual inline FontHandler* font_color_bg(const SDL_Color& c) final {
|
||
|
_handle_font_color_change(_font_color_bg, c);
|
||
|
_font_color_bg = c;
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
virtual inline FontHandler* font_color_fg(const SDL_Color& c) final {
|
||
|
_handle_font_color_change(c, _font_color_bg);
|
||
|
_font_color_fg = c;
|
||
|
return this;
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
#endif
|