#pragma once /* * Copyright (C) 2024 Brett Terpstra * * 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 . */ #ifndef BLT_WITH_GRAPHICS_FONT_RENDERER_H #define BLT_WITH_GRAPHICS_FONT_RENDERER_H #include #include #include #include namespace blt::gfx { class font_texture_atlas : public texture_gl2D { public: struct bounded_t { font::glyph_t glyph; blt::vec2ui min; blt::vec2ui max; }; explicit font_texture_atlas(blt::i32 dimensions); blt::u64 add_font(const font::font_file_t& file); blt::u64 add_font(const font::font_file_t& file, blt::u64 start); bounded_t& get_glyph(blt::u64 c) { return glyphs.at(c); } [[nodiscard]] const bounded_t& get_glyph(blt::u64 c) const { return glyphs.at(c); } private: blt::hashmap_t glyphs; blt::u32 used_width = 0; blt::u32 used_height = 0; }; class font_renderer_t { public: explicit font_renderer_t(const std::vector& files, blt::i32 dimensions = 4096); private: }; } #endif //BLT_WITH_GRAPHICS_FONT_RENDERER_H