Cleanup font_manager.h

See #42
This commit is contained in:
Alexander Batalov 2022-06-18 16:45:28 +03:00
parent 4d5489cdea
commit 92a20f5a3c
2 changed files with 54 additions and 59 deletions

View File

@ -7,11 +7,46 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
// The maximum number of interface fonts.
#define INTERFACE_FONT_MAX (16)
typedef struct InterfaceFontGlyph {
short width;
short field_2;
int field_4;
} InterfaceFontGlyph;
typedef struct InterfaceFontDescriptor {
short field_0;
short letterSpacing;
short wordSpacing;
short field_6;
short field_8;
short field_A;
InterfaceFontGlyph glyphs[256];
unsigned char* data;
} InterfaceFontDescriptor;
static int interfaceFontLoad(int font);
static void interfaceFontSetCurrentImpl(int font);
static int interfaceFontGetLineHeightImpl();
static int interfaceFontGetStringWidthImpl(const char* string);
static int interfaceFontGetCharacterWidthImpl(int ch);
static int interfaceFontGetMonospacedStringWidthImpl(const char* string);
static int interfaceFontGetLetterSpacingImpl();
static int interfaceFontGetBufferSizeImpl(const char* string);
static int interfaceFontGetMonospacedCharacterWidthImpl();
static void interfaceFontDrawImpl(unsigned char* buf, const char* string, int length, int pitch, int color);
static void interfaceFontByteSwapUInt32(unsigned int* value);
static void interfaceFontByteSwapInt32(int* value);
static void interfaceFontByteSwapUInt16(unsigned short* value);
static void interfaceFontByteSwapInt16(short* value);
// 0x518680 // 0x518680
bool gInterfaceFontsInitialized = false; static bool gInterfaceFontsInitialized = false;
// 0x518684 // 0x518684
int gInterfaceFontsLength = 0; static int gInterfaceFontsLength = 0;
// 0x518688 // 0x518688
FontManager gModernFontManager = { FontManager gModernFontManager = {
@ -29,13 +64,13 @@ FontManager gModernFontManager = {
}; };
// 0x586838 // 0x586838
InterfaceFontDescriptor gInterfaceFontDescriptors[INTERFACE_FONT_MAX]; static InterfaceFontDescriptor gInterfaceFontDescriptors[INTERFACE_FONT_MAX];
// 0x58E938 // 0x58E938
int gCurrentInterfaceFont; static int gCurrentInterfaceFont;
// 0x58E93C // 0x58E93C
InterfaceFontDescriptor* gCurrentInterfaceFontDescriptor; static InterfaceFontDescriptor* gCurrentInterfaceFontDescriptor;
// 0x441C80 // 0x441C80
int interfaceFontsInit() int interfaceFontsInit()
@ -77,7 +112,7 @@ void interfaceFontsExit()
} }
// 0x441D20 // 0x441D20
int interfaceFontLoad(int font_index) static int interfaceFontLoad(int font_index)
{ {
InterfaceFontDescriptor* fontDescriptor = &(gInterfaceFontDescriptors[font_index]); InterfaceFontDescriptor* fontDescriptor = &(gInterfaceFontDescriptors[font_index]);
@ -143,7 +178,7 @@ err:
} }
// 0x442120 // 0x442120
void interfaceFontSetCurrentImpl(int font) static void interfaceFontSetCurrentImpl(int font)
{ {
if (!gInterfaceFontsInitialized) { if (!gInterfaceFontsInitialized) {
return; return;
@ -158,7 +193,7 @@ void interfaceFontSetCurrentImpl(int font)
} }
// 0x442168 // 0x442168
int interfaceFontGetLineHeightImpl() static int interfaceFontGetLineHeightImpl()
{ {
if (!gInterfaceFontsInitialized) { if (!gInterfaceFontsInitialized) {
return 0; return 0;
@ -168,7 +203,7 @@ int interfaceFontGetLineHeightImpl()
} }
// 0x442188 // 0x442188
int interfaceFontGetStringWidthImpl(const char* string) static int interfaceFontGetStringWidthImpl(const char* string)
{ {
if (!gInterfaceFontsInitialized) { if (!gInterfaceFontsInitialized) {
return 0; return 0;
@ -197,7 +232,7 @@ int interfaceFontGetStringWidthImpl(const char* string)
} }
// 0x4421DC // 0x4421DC
int interfaceFontGetCharacterWidthImpl(int ch) static int interfaceFontGetCharacterWidthImpl(int ch)
{ {
int width; int width;
@ -215,7 +250,7 @@ int interfaceFontGetCharacterWidthImpl(int ch)
} }
// 0x442210 // 0x442210
int interfaceFontGetMonospacedStringWidthImpl(const char* str) static int interfaceFontGetMonospacedStringWidthImpl(const char* str)
{ {
if (!gInterfaceFontsInitialized) { if (!gInterfaceFontsInitialized) {
return 0; return 0;
@ -225,7 +260,7 @@ int interfaceFontGetMonospacedStringWidthImpl(const char* str)
} }
// 0x442240 // 0x442240
int interfaceFontGetLetterSpacingImpl() static int interfaceFontGetLetterSpacingImpl()
{ {
if (!gInterfaceFontsInitialized) { if (!gInterfaceFontsInitialized) {
return 0; return 0;
@ -235,7 +270,7 @@ int interfaceFontGetLetterSpacingImpl()
} }
// 0x442258 // 0x442258
int interfaceFontGetBufferSizeImpl(const char* str) static int interfaceFontGetBufferSizeImpl(const char* str)
{ {
if (!gInterfaceFontsInitialized) { if (!gInterfaceFontsInitialized) {
return 0; return 0;
@ -245,7 +280,7 @@ int interfaceFontGetBufferSizeImpl(const char* str)
} }
// 0x442278 // 0x442278
int interfaceFontGetMonospacedCharacterWidthImpl() static int interfaceFontGetMonospacedCharacterWidthImpl()
{ {
if (!gInterfaceFontsInitialized) { if (!gInterfaceFontsInitialized) {
return 0; return 0;
@ -262,7 +297,7 @@ int interfaceFontGetMonospacedCharacterWidthImpl()
} }
// 0x4422B4 // 0x4422B4
void interfaceFontDrawImpl(unsigned char* buf, const char* string, int length, int pitch, int color) static void interfaceFontDrawImpl(unsigned char* buf, const char* string, int length, int pitch, int color)
{ {
if (!gInterfaceFontsInitialized) { if (!gInterfaceFontsInitialized) {
return; return;
@ -339,7 +374,7 @@ void interfaceFontDrawImpl(unsigned char* buf, const char* string, int length, i
// NOTE: Inlined. // NOTE: Inlined.
// //
// 0x442520 // 0x442520
void interfaceFontByteSwapUInt32(unsigned int* value) static void interfaceFontByteSwapUInt32(unsigned int* value)
{ {
unsigned int swapped = *value; unsigned int swapped = *value;
unsigned short high = swapped >> 16; unsigned short high = swapped >> 16;
@ -352,13 +387,13 @@ void interfaceFontByteSwapUInt32(unsigned int* value)
} }
// NOTE: 0x442520 with different signature. // NOTE: 0x442520 with different signature.
void interfaceFontByteSwapInt32(int* value) static void interfaceFontByteSwapInt32(int* value)
{ {
interfaceFontByteSwapUInt32((unsigned int*)value); interfaceFontByteSwapUInt32((unsigned int*)value);
} }
// 0x442568 // 0x442568
void interfaceFontByteSwapUInt16(unsigned short* value) static void interfaceFontByteSwapUInt16(unsigned short* value)
{ {
unsigned short swapped = *value; unsigned short swapped = *value;
swapped = (swapped >> 8) | (swapped << 8); swapped = (swapped >> 8) | (swapped << 8);
@ -366,7 +401,7 @@ void interfaceFontByteSwapUInt16(unsigned short* value)
} }
// NOTE: 0x442568 with different signature. // NOTE: 0x442568 with different signature.
void interfaceFontByteSwapInt16(short* value) static void interfaceFontByteSwapInt16(short* value)
{ {
interfaceFontByteSwapUInt16((unsigned short*)value); interfaceFontByteSwapUInt16((unsigned short*)value);
} }

View File

@ -3,49 +3,9 @@
#include "text_font.h" #include "text_font.h"
// The maximum number of interface fonts.
#define INTERFACE_FONT_MAX (16)
typedef struct InterfaceFontGlyph {
short width;
short field_2;
int field_4;
} InterfaceFontGlyph;
typedef struct InterfaceFontDescriptor {
short field_0;
short letterSpacing;
short wordSpacing;
short field_6;
short field_8;
short field_A;
InterfaceFontGlyph glyphs[256];
unsigned char* data;
} InterfaceFontDescriptor;
extern bool gInterfaceFontsInitialized;
extern int gInterfaceFontsLength;
extern FontManager gModernFontManager; extern FontManager gModernFontManager;
extern InterfaceFontDescriptor gInterfaceFontDescriptors[INTERFACE_FONT_MAX];
extern int gCurrentInterfaceFont;
extern InterfaceFontDescriptor* gCurrentInterfaceFontDescriptor;
int interfaceFontsInit(); int interfaceFontsInit();
void interfaceFontsExit(); void interfaceFontsExit();
int interfaceFontLoad(int font);
void interfaceFontSetCurrentImpl(int font);
int interfaceFontGetLineHeightImpl();
int interfaceFontGetStringWidthImpl(const char* string);
int interfaceFontGetCharacterWidthImpl(int ch);
int interfaceFontGetMonospacedStringWidthImpl(const char* string);
int interfaceFontGetLetterSpacingImpl();
int interfaceFontGetBufferSizeImpl(const char* string);
int interfaceFontGetMonospacedCharacterWidthImpl();
void interfaceFontDrawImpl(unsigned char* buf, const char* string, int length, int pitch, int color);
void interfaceFontByteSwapUInt32(unsigned int* value);
void interfaceFontByteSwapInt32(int* value);
void interfaceFontByteSwapUInt16(unsigned short* value);
void interfaceFontByteSwapInt16(short* value);
#endif /* FONT_MANAGER_H */ #endif /* FONT_MANAGER_H */