Je cherche une routine de texte pour afficher des caractère (je ferais mon propre DrawStr() ) plus rapide que celle que TIGCC.
Je sais qu'il y a celle de la TICT mais pour l'instant je ne l'ai pas trouver.
Non, les caractères sont de largeur variable pour la petite fonte. Pour la moyenne et la grosse, ils sont tous de même largeur.
ca charge la fonte en ram
Bon bah tant pis je faire faire ma propre fonction...
pour la petite font je veux que la fonction affiche chaque caractère de 4 pixels en 4 pixels et c'est tout...
unsigned short fixedfont[] = { /* Format : les 15 bits de droite représentent 5 rangées de 3 pixels, du haut en bas. Le bit de gauche est à 1 si ce sont les 5 rangées du haut, à 0 si ce sont celles du bas. Seul le j utilise les 6 rangées -> à traiter comme un cas particulier. */ 0, /* */ 0122202, /* ! */ 0155000, /* " */ 0157575, /* # */ 0136236, /* $ */ 0141241, /* % */ 0134243, /* & */ 0124000, /* ' */ 0112221, /* ( */ 0142224, /* ) */ 0152500, /* * */ 0002720, /* + */ 0000024, /* , */ 0000700, /* - */ 0000020, /* . */ 0111244, /* / */ 0125552, /* 0 */ 0126227, /* 1 */ 0161247, /* 2 */ 0161216, /* 3 */ 0113571, /* 4 */ 0174616, /* 5 */ 0124652, /* 6 */ 0171244, /* 7 */ 0125252, /* 8 */ 0125312, /* 9 */ 0002020, /* : */ 0002024, /* ; */ 0112421, /* < */ 0007070, /* = */ 0142124, /* > */ 0161202, /* ? */ 0175547, /* @ */ 0125755, /* A */ 0165656, /* B */ 0134443, /* C */ 0165556, /* D */ 0174647, /* E */ 0174644, /* F */ 0134553, /* G */ 0155755, /* H */ 0172227, /* I */ 0111152, /* J */ 0155655, /* K */ 0144447, /* L */ 0157555, /* M */ 0157775, /* N */ 0125552, /* O */ 0165644, /* P */ 0125573, /* Q */ 0165655, /* R */ 0134216, /* S */ 0172222, /* T */ 0155557, /* U */ 0155552, /* V */ 0155575, /* W */ 0155255, /* X */ 0155222, /* Y */ 0171247, /* Z */ 0132223, /* [ */ 0144211, /* \ */ 0162226, /* ] */ 0125000, /* ^ */ 0000007, /* _ */ 0142000, /* ` */ 0003530, /* a */ 0144656, /* b */ 0003430, /* c */ 0111353, /* d */ 0007630, /* e */ 0112722, /* f */ 0003527, /* g */ 0144655, /* h */ 0120627, /* i */ 0103152, /* j */ /* cas particulier : ne pas shifter */ 0144565, /* k */ 0162227, /* l */ 0007750, /* m */ 0006550, /* n */ 0002520, /* o */ 0006564, /* p */ 0003531, /* q */ 0006540, /* r */ 0003260, /* s */ 0027230, /* t */ 0005570, /* u */ 0005520, /* v */ 0005770, /* w */ 0005250, /* x */ 0005524, /* y */ 0006230, /* z */ 0132623, /* { */ 0122222, /* | */ 0162326, /* } */ 0152000 /* ~ */ }; static void print_char_fixed_font (word car, word pos_x, word pos_y) { /* ATTENTION : pos_y est en pixels (position du haut de la ligne de texte par rapport au haut de l'écran) mais pos_x est en COLONNES (les colonnes font 4 pixels de large) */ char *ptr; unsigned char mask4; unsigned char mask3; unsigned long caractere; int i; car -= ' '; caractere = fixedfont[car]; /* Si le caractère n'est PAS entre ' ' et '~' on va afficher n'importe quoi, ce qui n'est pas plus grave que ça : pas besoin de vérifier... */ if ((caractere & 0100000) && (car != 'j' - ' ')) caractere <<= 3; if (pos_x & 1) { mask4 = 0xF0; mask3 = 0x07; } else { mask4 = 0x0F; mask3 = 0x70; caractere <<= 4; } ptr = LCD_MEM + (pos_y + 5) * 30 + pos_x / 2; for (i = 0; i < 6; i++) { *ptr &= mask4; *ptr ^= (caractere & mask3); ptr -= 30; caractere >>= 3; } }