From 34a773eb0f01379419900a3fe26527702146b890 Mon Sep 17 00:00:00 2001 From: WBoerenkamps Date: Tue, 17 Dec 2024 13:33:53 +0100 Subject: last changes --- src/crepe/facade/SDLContext.h | 1 + src/crepe/system/RenderSystem.cpp | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/crepe/facade/SDLContext.h b/src/crepe/facade/SDLContext.h index ffa3cc0..e348ff6 100644 --- a/src/crepe/facade/SDLContext.h +++ b/src/crepe/facade/SDLContext.h @@ -18,6 +18,7 @@ #include "types.h" #include "FontFacade.h" + namespace crepe { class Texture; diff --git a/src/crepe/system/RenderSystem.cpp b/src/crepe/system/RenderSystem.cpp index 18f6393..5fc98a9 100644 --- a/src/crepe/system/RenderSystem.cpp +++ b/src/crepe/system/RenderSystem.cpp @@ -152,16 +152,15 @@ void RenderSystem::render() { void RenderSystem::render_text(Text & text, const Transform & tm) { SDLContext & ctx = this->mediator.sdl_context; - // Check if font is available in text if (!text.font.has_value()) { + text.font = ctx.get_font_from_name(text.font_family); } ResourceManager & resource_manager = this->mediator.resource_manager; - if (text.font.has_value()) { + if (!text.font.has_value()) {return;} const Asset& font_asset = text.font.value(); const Font & res = resource_manager.get(font_asset); - } } -- cgit v1.2.3 From 69ca7fdd738fd4ed98aefc07bab5a43486a55619 Mon Sep 17 00:00:00 2001 From: WBoerenkamps Date: Tue, 17 Dec 2024 13:34:19 +0100 Subject: final changes --- src/crepe/api/LoopManager.h | 3 +-- src/crepe/api/Script.h | 1 - src/crepe/api/Text.cpp | 8 ++++---- src/crepe/api/Text.h | 11 +++++------ src/crepe/facade/Font.cpp | 3 +-- src/crepe/facade/FontFacade.cpp | 10 ++++------ src/crepe/facade/FontFacade.h | 10 +++++----- src/crepe/facade/SDLContext.cpp | 2 +- src/crepe/facade/SDLContext.h | 6 ++++-- src/crepe/system/RenderSystem.cpp | 35 ++++++++++++++--------------------- src/example/FontExample.cpp | 5 +++-- src/example/loadfont.cpp | 10 +++++----- 12 files changed, 47 insertions(+), 57 deletions(-) (limited to 'src') diff --git a/src/crepe/api/LoopManager.h b/src/crepe/api/LoopManager.h index 1725810..1d23cbf 100644 --- a/src/crepe/api/LoopManager.h +++ b/src/crepe/api/LoopManager.h @@ -71,7 +71,7 @@ private: private: //! Global context Mediator mediator; - + //! SDLContext instance SDLContext sdl_context{mediator}; //! Component manager instance @@ -86,7 +86,6 @@ private: ResourceManager resource_manager{mediator}; //! Save manager instance SaveManager save_manager{mediator}; - private: /** diff --git a/src/crepe/api/Script.h b/src/crepe/api/Script.h index 4503525..8bca38a 100644 --- a/src/crepe/api/Script.h +++ b/src/crepe/api/Script.h @@ -156,7 +156,6 @@ private: void subscribe_internal(const EventHandler & callback, event_channel_t channel); protected: - // NOTE: This must be the only constructor on Script, see "Late references" below Script() = default; //! Only \c BehaviorScript instantiates Script diff --git a/src/crepe/api/Text.cpp b/src/crepe/api/Text.cpp index 0624c98..58dc6c6 100644 --- a/src/crepe/api/Text.cpp +++ b/src/crepe/api/Text.cpp @@ -4,11 +4,11 @@ using namespace crepe; -Text::Text(game_object_id_t id, const vec2 & dimensions,const vec2 & offset, const std::string & font_family, - const Data & data, const std::string & text, std::optional font) +Text::Text(game_object_id_t id, const vec2 & dimensions, const vec2 & offset, + const std::string & font_family, const Data & data, const std::string & text, + std::optional font) : UIObject(id, dimensions, offset), text(text), data(data), font_family(font_family), - font(font) { -} + font(font) {} diff --git a/src/crepe/api/Text.h b/src/crepe/api/Text.h index ab72bc0..92cca18 100644 --- a/src/crepe/api/Text.h +++ b/src/crepe/api/Text.h @@ -1,7 +1,7 @@ #pragma once +#include #include -#include #include "../Component.h" @@ -50,10 +50,10 @@ public: * \param data Data struct containing extra text parameters. * \param font Optional font asset that can be passed or left empty. */ - Text(game_object_id_t id, const vec2 & dimensions, const vec2 & offset, - const std::string & font_family, const Data & data, - const std::string & text = "", std::optional font = std::nullopt); - + Text(game_object_id_t id, const vec2 & dimensions, const vec2 & offset, + const std::string & font_family, const Data & data, const std::string & text = "", + std::optional font = std::nullopt); + //! Label text. std::string text = ""; //! font family name @@ -62,7 +62,6 @@ public: std::optional font; //! Data instance Data data; - }; } // namespace crepe diff --git a/src/crepe/facade/Font.cpp b/src/crepe/facade/Font.cpp index 558641f..f202c05 100644 --- a/src/crepe/facade/Font.cpp +++ b/src/crepe/facade/Font.cpp @@ -8,8 +8,7 @@ using namespace std; using namespace crepe; -Font::Font(const Asset & src, Mediator & mediator) - : Resource(src, mediator){ +Font::Font(const Asset & src, Mediator & mediator) : Resource(src, mediator) { Config & config = Config::get_instance(); const std::string FONT_PATH = src.get_path(); TTF_Font * loaded_font = TTF_OpenFont(FONT_PATH.c_str(), config.font.size); diff --git a/src/crepe/facade/FontFacade.cpp b/src/crepe/facade/FontFacade.cpp index 08ff31c..7edfeb8 100644 --- a/src/crepe/facade/FontFacade.cpp +++ b/src/crepe/facade/FontFacade.cpp @@ -6,16 +6,14 @@ using namespace crepe; using namespace std; -FontFacade::FontFacade(){ +FontFacade::FontFacade() { if (!FcInit()) { throw runtime_error("Failed to initialize Fontconfig."); } } -FontFacade::~FontFacade(){ - FcFini(); -} -Asset FontFacade::get_font_asset(const string& font_family) { - +FontFacade::~FontFacade() { FcFini(); } +Asset FontFacade::get_font_asset(const string & font_family) { + // Create a pattern to search for the font family FcPattern * pattern = FcNameParse(reinterpret_cast(font_family.c_str())); if (pattern == NULL) { diff --git a/src/crepe/facade/FontFacade.h b/src/crepe/facade/FontFacade.h index 2e08f3f..9761070 100644 --- a/src/crepe/facade/FontFacade.h +++ b/src/crepe/facade/FontFacade.h @@ -15,10 +15,10 @@ class FontFacade { public: FontFacade(); ~FontFacade(); - FontFacade(const FontFacade & other) = delete; - FontFacade & operator=(const FontFacade & other) = delete; - FontFacade(FontFacade && other) noexcept = delete; - FontFacade & operator=(FontFacade && other) noexcept = delete; + FontFacade(const FontFacade & other) = delete; + FontFacade & operator=(const FontFacade & other) = delete; + FontFacade(FontFacade && other) noexcept = delete; + FontFacade & operator=(FontFacade && other) noexcept = delete; /** * * \brief Facade function to convert a font_family into an asset. @@ -28,7 +28,7 @@ public: * \param font_family Name of the font family name. * \return Asset with filepath to the corresponding font. */ - Asset get_font_asset(const std::string& font_family); + Asset get_font_asset(const std::string & font_family); }; } // namespace crepe diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp index 8ffaad9..c88687e 100644 --- a/src/crepe/facade/SDLContext.cpp +++ b/src/crepe/facade/SDLContext.cpp @@ -440,6 +440,6 @@ void SDLContext::set_color_texture(const Texture & texture, const Color & color) SDL_SetTextureAlphaMod(texture.get_img(), color.a); } -Asset SDLContext::get_font_from_name(const std::string& font_family){ +Asset SDLContext::get_font_from_name(const std::string & font_family) { return this->font_facade.get_font_asset(font_family); } diff --git a/src/crepe/facade/SDLContext.h b/src/crepe/facade/SDLContext.h index e348ff6..6f6eddb 100644 --- a/src/crepe/facade/SDLContext.h +++ b/src/crepe/facade/SDLContext.h @@ -241,9 +241,11 @@ private: * - this is defined in this class because get_events() needs this information aswell */ CameraAuxiliaryData cam_aux_data; -private: + +private: //! instance of the font_facade FontFacade font_facade{}; + public: /** * \brief Function to Get asset from font_family @@ -254,7 +256,7 @@ public: * * \return asset with the font style absolute path */ - Asset get_font_from_name(const std::string& font_family); + Asset get_font_from_name(const std::string & font_family); }; } // namespace crepe diff --git a/src/crepe/system/RenderSystem.cpp b/src/crepe/system/RenderSystem.cpp index 5fc98a9..a03c636 100644 --- a/src/crepe/system/RenderSystem.cpp +++ b/src/crepe/system/RenderSystem.cpp @@ -10,8 +10,8 @@ #include "../api/ParticleEmitter.h" #include "../api/Sprite.h" #include "../api/Text.h" -#include "../facade/Font.h" #include "../api/Transform.h" +#include "../facade/Font.h" #include "../facade/SDLContext.h" #include "../facade/Texture.h" #include "../manager/ComponentManager.h" @@ -23,7 +23,6 @@ using namespace crepe; using namespace std; - void RenderSystem::clear_screen() { SDLContext & ctx = this->mediator.sdl_context; ctx.clear_screen(); @@ -126,12 +125,11 @@ void RenderSystem::render() { RefVector sprites = mgr.get_components_by_type(); ResourceManager & resource_manager = this->mediator.resource_manager; RefVector sorted_sprites = this->sort(sprites); - RefVector text_components = mgr.get_components_by_type(); - for(Text& text : text_components){ + RefVector text_components = mgr.get_components_by_type(); + for (Text & text : text_components) { const Transform & transform = mgr.get_components_by_id(text.game_object_id).front().get(); - this->render_text(text,transform); - + this->render_text(text, transform); } for (const Sprite & sprite : sorted_sprites) { if (!sprite.active) continue; @@ -143,25 +141,20 @@ void RenderSystem::render() { if (rendered_particles) continue; this->render_normal(sprite, transform); - - - } - } void RenderSystem::render_text(Text & text, const Transform & tm) { - SDLContext & ctx = this->mediator.sdl_context; + SDLContext & ctx = this->mediator.sdl_context; - if (!text.font.has_value()) { - text.font = ctx.get_font_from_name(text.font_family); - } + if (!text.font.has_value()) { + text.font = ctx.get_font_from_name(text.font_family); + } - ResourceManager & resource_manager = this->mediator.resource_manager; + ResourceManager & resource_manager = this->mediator.resource_manager; - if (!text.font.has_value()) {return;} - const Asset& font_asset = text.font.value(); - const Font & res = resource_manager.get(font_asset); + if (!text.font.has_value()) { + return; + } + const Asset & font_asset = text.font.value(); + const Font & res = resource_manager.get(font_asset); } - - - diff --git a/src/example/FontExample.cpp b/src/example/FontExample.cpp index 7b2dadb..6a334b1 100644 --- a/src/example/FontExample.cpp +++ b/src/example/FontExample.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -11,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -37,7 +37,8 @@ class TestScene : public Scene { public: void load_scene() override { GameObject text_object = this->new_object("test", "test", vec2{0, 0}, 0, 1); - text_object.add_component(vec2(100, 100), vec2(0, 0), "OpenSymbol", Text::Data{}); + text_object.add_component(vec2(100, 100), vec2(0, 0), "OpenSymbol", + Text::Data{}); text_object.add_component().set_script(); text_object.add_component(ivec2{300, 300}, vec2{100, 100}, Camera::Data{}); } diff --git a/src/example/loadfont.cpp b/src/example/loadfont.cpp index 36d00dd..ed67ffa 100644 --- a/src/example/loadfont.cpp +++ b/src/example/loadfont.cpp @@ -1,14 +1,14 @@ #include +#include #include #include #include -#include #include #include #include #include -#include #include +#include using namespace crepe; int main() { @@ -20,11 +20,11 @@ int main() { try { // Correct way to create a unique pointer for Text std::unique_ptr label = std::make_unique( - 1, vec2(100, 100), vec2(0, 0), "OpenSymbol", Text::Data{},"test text", Asset("")); + 1, vec2(100, 100), vec2(0, 0), "OpenSymbol", Text::Data{}, "test text", Asset("")); // std::cout << "Path: " << label->font.get_path() << std::endl; - std::unique_ptr label2 - = std::make_unique(1, vec2(100, 100), vec2(0, 0),"fsaafdafsdafsdafsdasfdds", Text::Data{}); + std::unique_ptr label2 = std::make_unique( + 1, vec2(100, 100), vec2(0, 0), "fsaafdafsdafsdafsdasfdds", Text::Data{}); Asset asset = Asset("test test"); label->font = asset; std::cout << label->font.value().get_path() << std::endl; -- cgit v1.2.3