Change to object orientated design

This commit is contained in:
2023-11-30 20:55:36 -05:00
parent c7e43a0210
commit 90731c1e52
3 changed files with 60 additions and 77 deletions

View File

@@ -2,15 +2,29 @@
#include "Type/types.hpp"
namespace JabyEngine {
struct FontWriter {
struct Cursor {
GPU::PositionI16 pos;
class FontWriter {
private:
GPU::TexPage::Linked tex_page;
FontBufferInfo prim_buffer;
FontPrimitive* cur_primitive;
void write(const char* str);
};
void setup(const FontBufferInfo& buffer_info, const SimpleTIM& vram_dst, const GPU::SizeI16& font_size);
static void setup(const FontBufferInfo& buffer_info, const SimpleTIM& vram_dst, const FontInfo& font_info);
static Cursor start(const GPU::PositionI16& pos);
static void render();
public:
static constexpr FontWriter empty() {
FontWriter instance;
instance.tex_page = {0};
instance.prim_buffer = FontBufferInfo::empty();
instance.cur_primitive = nullptr;
return instance;
}
void setup(const FontBufferInfo& buffer_info, const SimpleTIM& vram_dst, const FontInfo& font_info) {
FontWriter::setup(buffer_info, vram_dst, Make::SizeI16(font_info.FontSize.width, font_info.FontSize.height));
}
void write(GPU::PositionI16 pos, const char* str);
void render();
};
}