Bon j'ai mis un peu de temps, mais bon j'ai obtenu un resultat un peu pres potable vite fait:
[IMG]
http://img77.exs.cx/img77/4792/aze5dr.png[/IMG]
source tres crade :
#include <extgraph.h>
#include <tigcclib.h>
void * IniFont(short taille ,short type) {
short i;
unsigned short *charset=NULL;
unsigned short *charset1=NULL;
unsigned short *charset3=NULL;
unsigned short *charset2=NULL;
if (!(charset = malloc(6016))) return 0;
SetCurAttr(A_NORMAL);
FontSetSys(taille);
memset(charset,0,6016);
PortSet(charset,15,15000);
for (i=32;i<126;i++) DrawChar(2,(i-32)*16,(char)i,A_REPLACE);
PortRestore();
if (!(charset2 = malloc(6016))) { free(charset) ; return FALSE;}
charset1=charset2;
charset3=charset;
for (i=0;i<(125-32+1)*16;i++)
{
switch (type)
{
case 0:
(*charset1)=((( ((*charset)<<1) | ((*charset)>>1)) ) |(*(charset-1))|(*(charset+1)))|(*charset);//(*charset);
(*(charset1+1504))= (((( ((*charset)<<1) | ((*charset)>>1)) ) |(*(charset-1))|(*(charset+1)))^(*charset))&(~(*charset));
charset1++;
break;
case 1:
(*(charset1+1504))=((*charset)<<1)|((*charset)>>1)|(*charset);
(*charset1)=( ( ((*charset)<<2)|((*charset)>>2) ) &(~(*(charset1+1504))) ) | (*charset);
charset1++;
break;
case 2:
(*charset1++)=(*charset);
break;
}
charset++;
}
free(charset3);
return charset2;
}
void GrrDrawStr(short x, short y,const unsigned char* texte,short espace,void *plan1, void *plan2, void *charset2)
{
while (*texte)
{
if ((*texte)!=32)
{
Sprite16_OR(x,y,16,charset2+32*((*texte)-32)-2,plan1);
Sprite16_OR(x,y,16,charset2+32*((*texte++)-32)-2+3008,plan2);
}
else texte++;
x+=espace;
}
}
void _main(void)
{
GrayOn();
GraySetAMSPlane (LIGHT_PLANE);
ClrScr();
GraySetAMSPlane (DARK_PLANE);
ClrScr();
{
//F_4x6, F_6x8, and F_8x10
unsigned short *fnt1a = IniFont(F_4x6,0);
unsigned short *fnt1b = IniFont(F_4x6,1);
unsigned short *fnt1c = IniFont(F_4x6,2);
unsigned short *fnt2a = IniFont(F_6x8,0);
unsigned short *fnt2b = IniFont(F_6x8,1);
unsigned short *fnt2c = IniFont(F_6x8,2);
unsigned short *fnt3a = IniFont(F_8x10,0);
unsigned short *fnt3b = IniFont(F_8x10,1);
unsigned short *fnt3c = IniFont(F_8x10,2);
GrrDrawStr(1,1,"ESSAI essai",7,GrayGetPlane(LIGHT_PLANE),GrayGetPlane(DARK_PLANE),fnt1a);
GrrDrawStr(1,10,"ESSAI essai",7,GrayGetPlane(LIGHT_PLANE),GrayGetPlane(DARK_PLANE),fnt1b);
GrrDrawStr(1,20,"ESSAI essai",7,GrayGetPlane(LIGHT_PLANE),GrayGetPlane(DARK_PLANE),fnt1c);
GrrDrawStr(1,30,"ESSAI essai",8,GrayGetPlane(LIGHT_PLANE),GrayGetPlane(DARK_PLANE),fnt2a);
GrrDrawStr(1,40,"ESSAI essai",8,GrayGetPlane(LIGHT_PLANE),GrayGetPlane(DARK_PLANE),fnt2b);
GrrDrawStr(1,50,"ESSAI essai",8,GrayGetPlane(LIGHT_PLANE),GrayGetPlane(DARK_PLANE),fnt2c);
GrrDrawStr(1,60,"ESSAI essai",10,GrayGetPlane(LIGHT_PLANE),GrayGetPlane(DARK_PLANE),fnt3a);
GrrDrawStr(1,70,"ESSAI essai",10,GrayGetPlane(LIGHT_PLANE),GrayGetPlane(DARK_PLANE),fnt3b);
GrrDrawStr(1,80,"ESSAI essai",10,GrayGetPlane(LIGHT_PLANE),GrayGetPlane(DARK_PLANE),fnt3c);
}
ngetchx();
GrayOff();
}