// IAEngine: 2D Game Engine by IA // Copyright (C) 2025 IASoft (PVT) LTD (oss@iasoft.dev) // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . #pragma once #include #include namespace ia::iae { class FontManager { public: struct Character { IVec2 Size; IVec2 Bearing; // Offset from baseline to left/top of glyph UINT32 Advance; // Horizontal offset to advance to next glyph SDL_GPUTexture *Texture{}; }; struct Font { Character Chars[0x80]; }; public: STATIC VOID Initialize(); STATIC VOID Terminate(); STATIC VOID LoadFont(IN CONST String &name, IN CONST String &path); STATIC CONST Font &GetFont(IN CONST String &name) { return s_fonts[name]; } private: STATIC Map s_fonts; }; } // namespace ia::iae