%d or %s... For custom font?
Posted: April 2nd, 2018, 3:25 am
Hello PSXDEV :>
So... It is possible to create %d, %s, /n, etc, for custom fonts? Like printf or fntprint?
So... It is possible to create %d, %s, /n, etc, for custom fonts? Like printf or fntprint?
Code: Select all
GsSPRITE Font_Tahoma;
extern unsigned char SYS_FONT_TAHOMA[];
extern int DrawFontTahoma(char *string, int X, int Y, int R, int G, int B, int DIST, int SCALE, ...);
extern int DrawFontTahoma(char *string, int X, int Y, int R, int G, int B, int DIST, int SCALE, ...)
{
GsIMAGE FontInfo;
int fntval=0;
GsGetTimInfo((u_long *)SYS_FONT_TAHOMA+1,&FontInfo);
// Setting Font proprieties
Font_Tahoma.tpage=14; //Font tpage
Font_Tahoma.attribute=((FontInfo.pmode&0x3f)<<24); // pattern bit mode: 15bitdirect
Font_Tahoma.cx=FontInfo.cx;
Font_Tahoma.cy=FontInfo.cy;
// Text cell size
Font_Tahoma.w=16;
Font_Tahoma.h=16;
Font_Tahoma.x = X; // COORDINATE X
Font_Tahoma.y = Y; // COORDINATE Y
Font_Tahoma.r = R; // Font RED colors
Font_Tahoma.g = G; // Font GREEN colors
Font_Tahoma.b = B; // Font BLUE colors
Font_Tahoma.scalex=Font_Tahoma.scaley=SCALE;
while(*string){
if(*string>='A' && (*string)<='Z')
fntval=(*string)-'A';
else if(*string>='1' && (*string)<='9')
fntval=26+(*string)-'1';
else if(*string == '0') fntval=35;
else if(*string>='a' && (*string)<='z')
fntval=36+(*string)-'a';
else if(*string == '!') fntval=62;
else if(*string == '?') fntval=63;
else if(*string == ':') fntval=64;
else if(*string == ';') fntval=65;
else if(*string == '.') fntval=66;
else if(*string == ',') fntval=67;
else if(*string == '[') fntval=68;
else if(*string == ']') fntval=69;
else if(*string == '(') fntval=70;
else if(*string == ')') fntval=71;
else if(*string == '{') fntval=72;
else if(*string == '}') fntval=73;
else if(*string == '+') fntval=74;
else if(*string == '-') fntval=75;
else if(*string == '=') fntval=76;
else if(*string == '/') fntval=77;
else if(*string == '|') fntval=79;
else if(*string == '_') fntval=80;
else if(*string == '*') fntval=81;
else if(*string == '@') fntval=82;
else if(*string == '`') fntval=84; // It's actually [']
else if(*string == '~') fntval=85;
else if(*string == '^') fntval=86;
else if(*string == '<') fntval=87;
else if(*string == '>') fntval=88;
else if(*string == '$') fntval=89;
else if(*string == '#') fntval=90;
else if(*string == '«') fntval=92;
else if(*string == '»') fntval=93;
else if(*string == '&') fntval=94;
else if(*string == '%') fntval=95;
else if(*string == '—') fntval=96;
else if(*string == ' ') fntval=111;
// Restricted Symbols
// ["] SYMBOL
else if(*string == '\1') fntval=98;
// [No.] SYMBOL
else if(*string == '\2') fntval=91;
// [LOGO] SYMBOL
else if(*string == '\3') fntval=97;
// New Line
else if(*string == '\n') {
string++;
Font_Tahoma.x = X;
Font_Tahoma.y += 17;
continue;
}
else {
string++;
continue;
}
Font_Tahoma.u=(fntval%16)*16;
Font_Tahoma.v=(fntval/16)*16+1;
//Draw text to OT
GsSortSprite(&Font_Tahoma,&myOT[ActiveBuffer],0);
string++;
//Screen position
Font_Tahoma.x+=16+(DIST);
}
}