#include "objfont.h"
#include "objgfx30.h"
#include <string.h>
#include <stdlib.h>
TFont::TFont(TGfx0* buffer) {
Buf = buffer;
FontDataSize = 0;
memset(FontDataIdx,0,sizeof(FontDataIdx));
memset(CharWidthTable,0,sizeof(CharWidthTable));
memset(CharHeightTable,0,sizeof(CharHeightTable));
FontData = 0;
return;
} // TFont::TFont
void TFont::CenterTextX(Int32 y, const char * TextString ) {
Int32 x;
x = ((Buf->getMaxX()+1)-TextWidth(TextString)) / 2;
PutText(x,y,TextString);
return;
} // TFont::CenterTextX
void TFont::JustifyText(UInt8 Horiz, UInt8 Vert, const char * TextString) {
UInt32 x,y;
switch (Horiz) {
case LeftText:
x = 0;
break;
case CenterText:
x = ((Buf->getMaxX())-TextWidth(TextString)) / 2;
break;
case RightText:
x = (Buf->getMaxX())-TextWidth(TextString);
break;
default:
return;
} // switch
switch (Vert) {
case TopText:
y = 0;
break;
case CenterText:
y = ((Buf->getMaxY())-TextHeight(TextString)) / 2;
break;
case BottomText:
y = (Buf->getMaxY())-TextHeight(TextString);
default:
return;
} // switch
PutText(x,y,TextString);
return;
} // TFont::JustifyText
UInt32 TFont::TextHeight(const char * TextString) {
UInt32 size, tmpsize;
size = 0;
if (TextString)
while (*TextString) {
tmpsize = CharHeightTable[*TextString++];
if (tmpsize>size) size = tmpsize;
}
return size;
} // TFont::TextHeight
UInt32 TFont::TextWidth(const char * TextString) {
UInt32 size=0;
if (TextString)
while (*TextString)
size+=CharWidthTable[*TextString++];
return size;
} // TFont::TextWidth
TFont::~TFont(void) {
if (FontDataSize) free(FontData);
return;
} // TFont::~TFont