font.cϾ| font.c"%yTEXTCWIEϾ| ?#include #include #include #include "sprite.h" #include "font.h" // Size of each character. static u_char sizes[71] = { 25,25,25,26,26,25,26,27,12,22,28,20,31, 27,26,25,26,26,24,22,25,23,33,28,23,26, 20,22,20,23,19,15,23,21,12,16,22,12,31, 21,21,23,21,16,20,13,21,20,27,23,23,20, 19,14,22,21,20,22,20,20,21,21, 12,16,8,14,14,9,12,8,19}; int CalcNum(char let); // Returns ID number of given letter. short PrintMess(GsOT *OT, u_short pri, char *messptr, short x, short y) { int letterno; char let; GsSPRITE letterspr; InitSpr(&letterspr); letterspr.w = letterspr.h = 16; letterspr.x = x; letterspr.y = y; /* If message starts off the left of the screen then move forward to find the * first letter that will appear on screen. */ if (x<-16) { while (*(messptr)!=0 && letterspr.x<-16) { if (*(messptr)!=' ') letterspr.x += (sizes[CalcNum(*(messptr))]+1)/2; else letterspr.x+=8; messptr++; } } while (*(messptr)!=0 && x<320) { let = *(messptr); if (let!=' ') { letterno = CalcNum(let); // Plot letter. CalcSprPos(letterspr, 640+((letterno & 15)<<4), 256+((letterno>>4)<<4)); GsSortFastSprite(&letterspr, OT, pri); letterspr.x += (sizes[letterno]+1)/2; } else letterspr.x+=8; messptr++; } return letterspr.x; } int CalcNum(char let) { if (let>='A' && let<='Z') return (int)let - 65; if (let>='a' && let<='z') return (int)let - 71; if (let>='0' && let<='9') return (int)let + 4; if ((int)let==33) return 62; if ((int)let==34) return 63; if ((int)let==39) return 64; if ((int)let==40) return 65; if ((int)let==41) return 66; if ((int)let==44) return 67; if ((int)let==45) return 68; if ((int)let==46) return 69; if ((int)let==63) return 70; return 69; } ZZRMS Office ACL (8font.crrior IDE 2.0.3atantallerTEXTCWIEϾ|J  H Monaco8 v8 v >>,ZZRNX1RMPSRMWBB*LR