2021-07-18 18:26:12 +02:00
|
|
|
#ifndef BWIDGETS_FONT_HANDLER_HPP_
|
|
|
|
#define BWIDGETS_FONT_HANDLER_HPP_
|
|
|
|
|
|
|
|
#include <basic_widgets/core/font.hpp>
|
|
|
|
|
|
|
|
namespace bwidgets::widget
|
|
|
|
{
|
|
|
|
class FontHandler
|
|
|
|
{
|
2021-07-29 16:06:03 +02:00
|
|
|
protected:
|
2021-07-30 20:41:47 +02:00
|
|
|
core::Font* _font {nullptr};
|
|
|
|
SDL_Color _font_color_bg {255, 255, 255, // NOLINT(readability-magic-numbers)
|
|
|
|
SDL_ALPHA_OPAQUE};
|
|
|
|
SDL_Color _font_color_fg {0, 0, 0, SDL_ALPHA_OPAQUE};
|
2021-07-29 16:06:03 +02:00
|
|
|
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;
|
|
|
|
|
2021-07-30 20:41:47 +02:00
|
|
|
virtual inline auto font(core::Font* f) -> FontHandler* final
|
2021-07-29 16:06:03 +02:00
|
|
|
{
|
|
|
|
_handle_font_change(f);
|
|
|
|
_font = f;
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
2021-07-30 20:41:47 +02:00
|
|
|
virtual inline auto font_color_bg(const SDL_Color& c) -> FontHandler* final
|
2021-07-29 16:06:03 +02:00
|
|
|
{
|
|
|
|
_handle_font_color_change(_font_color_bg, c);
|
|
|
|
_font_color_bg = c;
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
2021-07-30 20:41:47 +02:00
|
|
|
virtual inline auto font_color_fg(const SDL_Color& c) -> FontHandler* final
|
2021-07-29 16:06:03 +02:00
|
|
|
{
|
|
|
|
_handle_font_color_change(c, _font_color_bg);
|
|
|
|
_font_color_fg = c;
|
|
|
|
return this;
|
|
|
|
}
|
2021-07-18 18:26:12 +02:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|