29#include <EASTL/array.h>
30#include <EASTL/functional.h>
31#include <EASTL/string_view.h>
42template <
size_t Fragments = 16>
84 void uploadKromFont(GPU& gpu, Vertex location = {{.x = 960, .y = 422}});
92 static void unpackFont(GPU& gpu,
const uint8_t* data, Vertex location, Vertex textureSize);
103 void initialize(GPU& gpu, Vertex location, Vertex glyphSize);
113 void print(GPU& gpu, eastl::string_view text, Vertex pos,
Color color);
114 void print(GPU& gpu, eastl::string_view text, Vertex pos,
Color color, eastl::function<
void()>&& callback,
116 void print(GPU& gpu,
const char* text, Vertex pos,
Color color);
117 void print(GPU& gpu,
const char* text, Vertex pos,
Color color, eastl::function<
void()>&& callback,
126 const char*
format, ...) {
129 vprintf(gpu, pos, color, eastl::move(callback), dmaCallback,
format, args);
134 const char*
format, va_list ap);
171 eastl::array<PrimPieces::TexInfo, 224> m_lut;
180 virtual ~Font() {
static_assert(N > 0,
"Needs to have at least one fragment"); }
183 virtual GlyphsFragment* getGlyphFragment(
bool increment)
override {
184 auto fragment = &m_fragments[m_index];
186 if (++m_index == N) {
192 virtual void forEach(eastl::function<
void(
GlyphsFragment&)>&& cb)
override {
193 for (
auto& fragment : m_fragments) {
197 eastl::array<GlyphsFragment, N> m_fragments;
198 unsigned m_index = 0;
The Font drawing class.
Definition font.hh:57
void chainprintf(GPU &gpu, Vertex pos, Color color, const char *format,...)
Definition font.hh:145
void printf(GPU &gpu, Vertex pos, Color color, const char *format,...)
Definition font.hh:119
void print(GPU &gpu, eastl::string_view text, Vertex pos, Color color)
These method immediately print text to the screen.
Definition font.cpp:262
static void unpackFont(GPU &gpu, const uint8_t *data, Vertex location, Vertex textureSize)
Unpacks and uploads a font to VRAM.
Definition font.cpp:184
Fragments::FixedFragmentWithPrologue< GlyphsFragmentPrologue, Prim::Sprite, 48 > GlyphsFragment
Definition font.hh:160
virtual GlyphsFragment * getGlyphFragment(bool increment)=0
virtual void forEach(eastl::function< void(GlyphsFragment &)> &&cb)=0
void vprintf(GPU &gpu, Vertex pos, Color color, const char *format, va_list ap)
Definition font.cpp:373
virtual ~FontBase()
Definition font.hh:59
void uploadSystemFont(GPU &gpu, Vertex location={{.x=960,.y=464}})
Uploads the system font to VRAM, and initializes the object.
Definition font.cpp:38
void innervprintf(GlyphsFragment *fragment, GPU &gpu, Vertex pos, Color color, const char *format, va_list ap)
Definition font.cpp:410
void chainvprintf(GPU &gpu, Vertex pos, Color color, const char *format, va_list ap)
Definition font.cpp:395
void chainprint(GPU &gpu, eastl::string_view text, Vertex pos, Color color)
These methods use the DMA chaining system to print text to the screen.
Definition font.cpp:306
void innerprint(GlyphsFragment *fragment, GPU &gpu, eastl::string_view text, Vertex pos, Color color)
Definition font.cpp:318
void initialize(GPU &gpu, Vertex location, Vertex glyphSize)
Initializes the object for use.
Definition font.cpp:230
void uploadKromFont(GPU &gpu, Vertex location={{.x=960,.y=422}})
Uploads the Kernel rom font to VRAM, and initializes the object.
Definition font.cpp:43
void printf(GPU &gpu, Vertex pos, Color color, eastl::function< void()> &&callback, DMA::DmaCallback dmaCallback, const char *format,...)
Definition font.hh:125
virtual ~Font()
Definition font.hh:180
The singleton GPU class.
Definition gpu.hh:88
int format(const char *deviceName)
Definition filesystem.c:60
DmaCallback
Definition gpu.hh:52
Definition cdrom-loader.hh:39
uint32_t pixel
Definition font.hh:156
Prim::TPage tpage
Definition font.hh:158
Prim::FlushCache flushCache
Definition font.hh:157
Prim::VRAMUpload upload
Definition font.hh:155
A maximum fixed sized fragment of similar primitives.
Definition fragments.hh:121
The FlushCache primitive.
Definition misc.hh:45
Initiates a VRAM upload.
Definition control.hh:168
void uint32_t(classId, spec)
The Color struct.
Definition common.hh:91
The Vertex struct.
Definition common.hh:47
int16_t x
Definition common.hh:50