Modified Get{BYTE,WORD,DWORD}() to return the respective type

Having e.g. GetWORD() return a WORD rather than int eliminates the need for
a cast when assigning to WORD variables. We use casts only when assigning
to a different (but same-sized) type.

Also, check for EOF explicitly when calling fgetc().
pull/3/head
Daniel Richard G 2013-08-26 16:24:16 -04:00
parent a72575d04e
commit dcc963aa4b
2 changed files with 25 additions and 25 deletions

View File

@ -373,9 +373,9 @@ public:
Vector origin, u, v;
int Getc(void);
int GetBYTE(void);
int GetWORD(void);
int GetDWORD(void);
BYTE GetBYTE(void);
WORD GetWORD(void);
DWORD GetDWORD(void);
void LoadGlyph(int index);
bool LoadFontFromFile(bool nameOnly);

44
ttf.cpp
View File

@ -59,7 +59,7 @@ void TtfFontList::PlotString(char *font, char *str, double spacing,
//-----------------------------------------------------------------------------
int TtfFont::Getc(void) {
int c = fgetc(fh);
if(c < 0) {
if(c == EOF) {
throw "EOF";
}
return c;
@ -68,22 +68,22 @@ int TtfFont::Getc(void) {
//-----------------------------------------------------------------------------
// Helpers to get 1, 2, or 4 bytes from the .ttf file. Big endian.
//-----------------------------------------------------------------------------
int TtfFont::GetBYTE(void) {
return Getc();
BYTE TtfFont::GetBYTE(void) {
return (BYTE)Getc();
}
int TtfFont::GetWORD(void) {
WORD TtfFont::GetWORD(void) {
BYTE b0, b1;
b1 = Getc();
b0 = Getc();
b1 = (BYTE)Getc();
b0 = (BYTE)Getc();
return (b1 << 8) | b0;
}
int TtfFont::GetDWORD(void) {
DWORD TtfFont::GetDWORD(void) {
BYTE b0, b1, b2, b3;
b3 = Getc();
b2 = Getc();
b1 = Getc();
b0 = Getc();
b3 = (BYTE)Getc();
b2 = (BYTE)Getc();
b1 = (BYTE)Getc();
b0 = (BYTE)Getc();
return (b3 << 24) | (b2 << 16) | (b1 << 8) | b0;
}
@ -98,11 +98,11 @@ void TtfFont::LoadGlyph(int index) {
int i;
SWORD contours = GetWORD();
SWORD xMin = GetWORD();
SWORD yMin = GetWORD();
SWORD xMax = GetWORD();
SWORD yMax = GetWORD();
SWORD contours = (SWORD)GetWORD();
SWORD xMin = (SWORD)GetWORD();
SWORD yMin = (SWORD)GetWORD();
SWORD xMax = (SWORD)GetWORD();
SWORD yMax = (SWORD)GetWORD();
if(useGlyph['A'] == index) {
scale = (1024*1024) / yMax;
@ -167,7 +167,7 @@ void TtfFont::LoadGlyph(int index) {
if(flags[i] & FLAG_X_IS_SAME) {
// no change
} else {
SWORD d = GetWORD();
SWORD d = (SWORD)GetWORD();
xa += d;
}
}
@ -188,7 +188,7 @@ void TtfFont::LoadGlyph(int index) {
if(flags[i] & FLAG_Y_IS_SAME) {
// no change
} else {
SWORD d = GetWORD();
SWORD d = (SWORD)GetWORD();
ya += d;
}
}
@ -267,10 +267,10 @@ bool TtfFont::LoadFontFromFile(bool nameOnly) {
for(i = 0; i < numTables; i++) {
char tag[5] = "xxxx";
tag[0] = GetBYTE();
tag[1] = GetBYTE();
tag[2] = GetBYTE();
tag[3] = GetBYTE();
tag[0] = (char)GetBYTE();
tag[1] = (char)GetBYTE();
tag[2] = (char)GetBYTE();
tag[3] = (char)GetBYTE();
DWORD checksum = GetDWORD();
DWORD offset = GetDWORD();
DWORD length = GetDWORD();