Files
2ship2harkinian-Android/mm/include/gfxprint.h
PurpleHato c46a6637fe ADD: Text Based Clock enhancement (#246)
* ADD: dirty simplier clock enhancement

* ADD: Crash timer + combobox

* ADD: Hook (not working yet)

* TWEAK: z_parameter formatting like original

* TWEAK: z_parameter formatting like original again

* TWEAK: z_parameter formatting like original part3

* TWEAK: Add back the gi in z_parameter

* TWEAK: recommendation + missing include

* Pointer to .

* Tweak include

* TWEAK: better naming for 24 hours texture name

* Tweak: line space

* TWEAK: Adressed review

* TWEAK: TwentyFourHours

* comma

* TWEAK: Accounted Reviews

* TWEAK: review enums

* ADD: Macro

* whitespace

* move macros and center clock text

---------

Co-authored-by: Adam Bird <archez39@me.com>
2024-05-22 09:05:05 -05:00

65 lines
2.1 KiB
C

#ifndef GFXPRINT_H
#define GFXPRINT_H
#include "color.h"
#include "PR/gbi.h"
#include "PR/ultratypes.h"
#include "PR/xstdio.h"
#include "unk.h"
#define GFXP_UNUSED "\x8E"
#define GFXP_UNUSED_CHAR 0x8E
#define GFXP_HIRAGANA "\x8D"
#define GFXP_HIRAGANA_CHAR 0x8D
#define GFXP_KATAKANA "\x8C"
#define GFXP_KATAKANA_CHAR 0x8C
#define GFXP_RAINBOW_ON "\x8B"
#define GFXP_RAINBOW_ON_CHAR 0x8B
#define GFXP_RAINBOW_OFF "\x8A"
#define GFXP_RAINBOW_OFF_CHAR 0x8A
typedef struct GfxPrint {
/* 0x00 */ PrintCallback callback;
/* 0x04 */ Gfx* dList;
/* 0x08 */ u16 posX;
/* 0x0A */ u16 posY;
/* 0x0C */ u16 baseX;
/* 0x0E */ u8 baseY;
/* 0x0F */ u8 flags;
/* 0x10 */ Color_RGBA8_u32 color;
/* 0x14 */ UNK_TYPE1 unk_14[0x1C]; // unused
} GfxPrint; // size = 0x30
void GfxPrint_Setup(GfxPrint* this);
void GfxPrint_SetColor(GfxPrint* this, u32 r, u32 g, u32 b, u32 a);
void GfxPrint_SetPosPx(GfxPrint* this, s32 x, s32 y);
void GfxPrint_SetPos(GfxPrint* this, s32 x, s32 y);
void GfxPrint_SetBasePosPx(GfxPrint* this, s32 x, s32 y);
void GfxPrint_PrintCharImpl(GfxPrint* this, u8 c);
void GfxPrint_PrintChar(GfxPrint* this, u8 c);
void GfxPrint_PrintStringWithSize(GfxPrint* this, const void* buffer, size_t charSize, size_t charCount);
void GfxPrint_PrintString(GfxPrint* this, const char* str);
void* GfxPrint_Callback(void* arg, const char* str, size_t size);
void GfxPrint_Init(GfxPrint* this);
void GfxPrint_Destroy(GfxPrint* printer);
void GfxPrint_Open(GfxPrint* this, Gfx* dList);
Gfx* GfxPrint_Close(GfxPrint* this);
s32 GfxPrint_VPrintf(GfxPrint* this, const char* fmt, va_list args);
s32 GfxPrint_Printf(GfxPrint* this, const char* fmt, ...);
// #region 2S2H [Port] Open/Close helper macros for the GfxPrint system
#define OPEN_PRINTER(disp) \
{ \
GfxPrint printer; \
GfxPrint_Init(&printer); \
GfxPrint_Open(&printer, disp)
#define CLOSE_PRINTER(printer, disp) \
disp = GfxPrint_Close(&printer); \
GfxPrint_Destroy(&printer); \
} \
(void)0
// #endregion
#endif