char *buf_4x6,*buf_6x8,*buf_8x10,*font_buf;
void make_fonts()
{
int i;
buf_4x6=malloc(2560*3);
memset(buf_4x6,0,2560*3);
buf_6x8=buf_4x6+2560;
buf_8x10=buf_4x6+2560*2;
PortSet(buf_4x6,7,2560-1);
FontSetSys(F_4x6);
for(i=0;i<=255;i++)
DrawChar(0,4+i*10,i,A_NORMAL);
PortSet(buf_6x8,7,2560-1);
FontSetSys(F_6x8);
for(i=0;i<=255;i++)
DrawChar(0,2+i*10,i,A_NORMAL);
PortSet(buf_8x10,7,2560-1);
FontSetSys(F_8x10);
for(i=0;i<=255;i++)
DrawChar(0,i*10,i,A_NORMAL);
PortRestore();
}
void set_font(short s){font_buf=buf_4x6+s*2560;font_size=s;}
void draw_char_ital(short x,short y,char c,void *pld)
{
register unsigned char *spr=font_buf+c*10;
register unsigned long pl=(long)pld+(y<<5)-(y<<1)+((x>>3)&0xfffe);
register unsigned short a=9,dec=24-(x&15);
while(a--)
{
*(long*)pl|=((long)(*spr++)<<(dec-(a>>1)));
pl+=30;
}
}
int font_width[]={4,6,8};
void draw_string(int x,int y,char *str)
{
while(*str)
{
draw_char_ital(x,y,*str++,LCD_MEM);
x+=font_width[font_size];
}
}
apres tu fais:
set_font(F_6x8);
draw_string(4,5,"FUCK PYROANGEL")
