Files
ac-decomp/include/JSystem/JUtility/JUTDirectPrint.h
T
2025-06-17 23:46:35 +02:00

59 lines
1.4 KiB
C++

#ifndef JUTDIRECTPRINT_H
#define JUTDIRECTPRINT_H
#include "types.h"
#include "libc/stdarg.h"
#ifdef __cplusplus
class JUTDirectPrint {
private:
JUTDirectPrint();
public:
static JUTDirectPrint* start();
void erase(int x, int y, int w, int h);
void drawChar(int, int, int);
void drawString(u16 x, u16 y, char* text);
void drawString_f(u16 x, u16 y, const char* text, ...);
void changeFrameBuffer(void* framebuffer, u16 w, u16 h);
void printSub(u16, u16, const char*, va_list, bool); // TODO: Function signature
void print(u16, u16, const char*, ...);
bool isActive() const {
return mFramebuffer != nullptr;
}
void* getFrameBuffer() {
return mFramebuffer;
}
void changeFrameBuffer(void* fb) {
changeFrameBuffer(fb, mFbWidth, mFbHeight);
}
static JUTDirectPrint* getManager() {
return sDirectPrint;
}
private:
static u8 sAsciiTable[128];
static u32 sFontData[64];
static u32 sFontData2[77];
static JUTDirectPrint* sDirectPrint;
void* mFramebuffer; // _00
u16 mFbWidth; // _04
u16 mFbHeight; // _06
u16 mStride; // _08
size_t mFbSize; // _0C
u8 _10[0x4]; // _10 - unknown
u16* mFrameMemory; // _14
};
inline void JUTChangeFrameBuffer(void* buffer, u16 height, u16 width) {
JUTDirectPrint::getManager()->changeFrameBuffer(buffer, width, height);
}
#endif
#endif