Don't load font in TextWidget

This commit is contained in:
Jasper Blanckenburg 2022-05-19 21:02:00 +02:00
parent 41a75f7422
commit 8aa7267b21
4 changed files with 14 additions and 11 deletions

View File

@ -1,10 +1,12 @@
#pragma once #pragma once
#include "View.h"
#include "widgets.h" #include "widgets.h"
#include <SDL2/SDL.h> #include <SDL2/SDL.h>
constexpr const char* FT_LOGO_PATH = "resources/Fasttube_Logo-white.bmp"; constexpr const char* FT_LOGO_PATH = "resources/Fasttube_Logo-white.bmp";
constexpr const char* AVENIR_FONT_PATH = "resources/Avenir-Book.ttf";
class AMI { class AMI {
public: public:
@ -15,6 +17,8 @@ public:
private: private:
SDL_Renderer* renderer; SDL_Renderer* renderer;
TTF_Font* avenir;
ImageWidget ft_logo; ImageWidget ft_logo;
TextWidget choose; TextWidget choose;
}; };

View File

@ -41,8 +41,7 @@ public:
class TextWidget : public TextureWidget { class TextWidget : public TextureWidget {
public: public:
TextWidget(SDL_Renderer* renderer, SDL_Rect dest_rect, TextWidget(SDL_Renderer* renderer, SDL_Rect dest_rect, TTF_Font* font,
const std::string& font_path,
const std::string& initial_text = ""); const std::string& initial_text = "");
~TextWidget(); ~TextWidget();

View File

@ -1,12 +1,13 @@
#include "AMI.h" #include "AMI.h"
#include "util.h"
AMI::AMI(SDL_Renderer* renderer) AMI::AMI(SDL_Renderer* renderer)
: renderer{renderer}, ft_logo{renderer, : renderer{renderer}, avenir{util::load_font(AVENIR_FONT_PATH, 28)},
{.x = 182, .y = 0, .w = 116, .h = 40}, ft_logo{renderer, {.x = 182, .y = 0, .w = 116, .h = 40}, FT_LOGO_PATH},
FT_LOGO_PATH},
choose{renderer, choose{renderer,
{.x = 0, .y = 45, .w = 480, .h = 40}, {.x = 0, .y = 45, .w = 480, .h = 40},
"resources/Avenir-Book.ttf", avenir,
"Choose a Mission:"} {} "Choose a Mission:"} {}
void AMI::draw() { void AMI::draw() {

View File

@ -41,16 +41,15 @@ ImageWidget::ImageWidget(SDL_Renderer* renderer, SDL_Rect dest_rect,
: TextureWidget{renderer, dest_rect, util::load_img(renderer, path)} {} : TextureWidget{renderer, dest_rect, util::load_img(renderer, path)} {}
TextWidget::TextWidget(SDL_Renderer* renderer, SDL_Rect dest_rect, TextWidget::TextWidget(SDL_Renderer* renderer, SDL_Rect dest_rect,
const std::string& font_path, TTF_Font* font, const std::string& initial_text)
const std::string& initial_text) : TextureWidget{renderer, dest_rect, std::nullopt}, font{font},
: TextureWidget{renderer, dest_rect, std::nullopt}, text{initial_text} {
font{util::load_font(font_path, 28)}, text{initial_text} {
if (text != "") { if (text != "") {
update_texture(generate_text(text)); update_texture(generate_text(text));
} }
} }
TextWidget::~TextWidget() { TTF_CloseFont(font); } TextWidget::~TextWidget() {}
void TextWidget::update_text(const std::string& new_text) { void TextWidget::update_text(const std::string& new_text) {
if (text != new_text) { if (text != new_text) {