bwidgets/inc/basic_widgets/w/feat/font_handler.hpp

43 lines
1.3 KiB
C++
Raw Normal View History

#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