rpi_player/custom_modules/sdl/renderer/text_image.cpp

100 lines
1.7 KiB
C++

#include "text_image.h"
TextImage::TextType TextImage::get_text_type() {
return _text_type;
}
void TextImage::set_text_type(const TextImage::TextType type) {
_text_type = type;
}
TrueTypeFont *TextImage::get_font() {
return _font;
}
void TextImage::set_font(TrueTypeFont *font) {
_font = font;
}
String TextImage::get_text() {
return _text;
}
void TextImage::set_text(const String &text) {
_text = text;
render_image();
}
Color TextImage::get_fg_color() {
return _fg;
}
void TextImage::get_fg_color(const Color &color) {
_fg = color;
}
Color TextImage::get_bg_color() {
return _bg;
}
void TextImage::get_bg_color(const Color &color) {
_bg = color;
}
Image *TextImage::get_image() {
return _image;
}
int TextImage::get_width() {
return _image->get_width();
}
int TextImage::get_height() {
return _image->get_height();
}
void TextImage::render_image() {
_image->free();
if (!_font) {
return;
}
switch (_text_type) {
case SOLID:
_font->render_text_solid(_text, _fg, _image);
break;
case SHADED:
_font->render_text_shaded(_text, _fg, _bg, _image);
break;
case BLENDED:
_font->render_text_blended(_text, _fg, _image);
break;
case BLENDED_WRAPPED:
_font->render_text_blended_wrapped(_text, _fg, 100, _image);
break;
default:
break;
}
}
TextImage::TextImage() {
_font = nullptr;
_text_type = BLENDED;
_image = new Image();
}
TextImage::TextImage(TrueTypeFont *font) {
_font = font;
_text_type = BLENDED;
_image = new Image();
}
TextImage::TextImage(TrueTypeFont *font, const String &text, const Color &fg, const Color &bg) {
_bg = bg;
_fg = fg;
_font = font;
_text_type = BLENDED;
_text = text;
_image = new Image();
render_image();
}
TextImage::~TextImage() {
delete _image;
}