libtthimage/Docs/html/img-texte.html

222 lines
8.0 KiB
HTML
Raw Permalink Normal View History

2022-06-26 11:23:53 +11:00
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>libimage: les textes</title>
<link rel="stylesheet" type="text/css" href="libimage.css">
<meta name="generator" content="Vim et huile de phalange">
<meta name="keywords" content="libimage, fontes bitmap, truetype">
</head>
<body>
<a name="top"><h1 align=center>libimage / les textes</h1></a>
<p align=center>
<tt>dernière mise à jour: 14 décembre 2015</tt><br>
</p>
<p class="menuhaut">
[<a href="libimage.html">libimage</a>]
[<a href="#16x24">16 x 24</a>]
[<a href="#gropixels">gropixels</a>]
[<a href="#outils">outils</a>]
[<a href="img-asciiart.html">ascii art</a>]
[<a href="#liens">liens</a>]
</p>
<h2><a name="fontes">Fontes internes</a></h2>
<p>
Pas grand chose pour le moment...
Juste quelques fonctions instables et un
kludge permettant de tester ces fonctions. J'en arrive à me demander
si la doc <a href="image77.html#textes">f77</a> n'est pas plus complète.
</p>
<p><b>Attention !!!</b> Le 26 mars 2008, il y a eu un gros chargement dans
la logique interne du bouzin: il faut maintenant soit spécifier un nom
de fonte quand on trace une chaine, soit charger préalablement une fonte
si on ne spécifie pas de nom. J'espère que ce changement ne va pas
casser trop de trucs. <i>Hélas, espoir déçu, j'ai un bronx infernal dans
plein de trucs...</i>
</p>
<p>Dans le tarball, il y a deux fontes 8x8 nommée <tt>libimage.fonte</tt>
et <tt>8x8thin</tt>.
A priori, les fontes 8x8 prévues pour la console Linux doivent fonctionner,
et vous pourrez les reconnaitre à leur taille de 2048 octets.
Il n'y a pas encore de quoi les visualiser dans tout ce fatras,
mais je suis en train de coder ça...</p>
<center><img src="all8x8chars.png"></center>
<dl class="proto">
<dt>int Image_load_fnt8x8(char *nomfnt, U_BYTE *ou, int flags);
<dd>Chargement d'une fonte 8x8 dans une zone statique, on ne peut
donc avoir qu'une seule police en même temps, mais ça va bientôt
changer. Les paramètres <tt>ou</tt> et <tt>flags</tt> sont inutilisés
pour le moment. Si le nom du fichier fonte est NULL, une fonte par défaut
sera utilisée.
<dt>int Image_trace_caractere(Image_Desc *im, int x, int y, int code);
<dd>Cette fonction est très primitive. Elle trace en <i>noir</i> sur un
fond <i>blanc</i> en utilisant la fonte courante.
<dt>int Image_trace_chaine_0(Image_Desc *im, char *txt, int x, int y,
RGBA *paper, RGBA *ink, int flags);
<dd>Bah, pas grand chose à dire, à part que le paramètre 'flags' doit
être mis à zéro,
et que cette fonction est <i>obsolète</i>, et l'exprime clairement.
<dt>int Image_trace_chaine_1(Image_Desc *im, char *txt, int x, int y,
char *nomfonte, RGBA *paper, RGBA *ink);
<dd>Voici donc la nouvelle fonction pour écrire du texte 8x8 dans une image.
Elle fonctionne en gros comme son ancêtre, mais permet en plus de spécifier
un nom de fonte. Si celui-ci est <tt>NULL</tt>, c'est la dernière fonte
chargée qui sera utilisée.
<dt>int Image_texte_fonte(char *nomfonte, char *nomtga);
<dd>Donc voilà le kludge. La seule valeur humainement supportable
pour le paramètre <i>nomfonte</i>, c'est <tt>NULL</tt> et les insultes
parce que <font color="orange">çamarchpa</font>, c'est pour moi.
</dl>
<p class="HDP"><a href="#top">haut de page</a></p>
<a name="16x24"><h2>fonte 16 x 24</h2></a>
<p>Enfin, ça y est, un support primitif des grosses fontes bitmap en
16x24 est en train de voir le jour. La description des dessins de caractères
se fait dans un fichier texte spécialement prévu pour être manipulable
par des outils Unix tels que <tt>awk</tt>. Ce fichier est une suite
d'enregistrements contenant le code ascii du caractère considéré, suivi
de 24 lignes contenant les pixels. Exemple:
</p>
<pre class="code">
60
................
................
................
..........**....
.........***....
........**......
.......**.......
......**........
.....**.........
....**..........
...**...........
..***...........
...**...........
....**..........
.....**.........
......**........
.......**.......
........**......
.........***....
..........**....
................
................
................
................
</pre>
<p>Le nombre en première ligne est le code ascii du caractère, exprimé en
décimal. En fait, ce n'est pas exactement le code ascii, puisque ça peut
très bien être de l'iso-8859-1 par exemple, donc un code compris entre 0 et
255. Et les 24 lignes suivantes contienne le dessin du caractère fait
avec des points et des étoiles.
</p>
<dl class="proto">
<dt>int Image_t16x24_txtload(char *fontname, U_BYTE *zone, int flag);
<dd>Chargement d'une fonte à partir du fichier texte décrit plus haut.
Le second paramètre est inutilisé. Le contenu de la fonte est stockée
dans une zone statique privé, il est donc actuellement impossible
de gérer plusieurs fontes simultanément. Le <tt>flag</tt> à 1 demande
l'effacement préalable de cette zone statique.
<dt>int Image_t16x24_pltch_exp(Image_Desc *img, int lettre, int xpos, int ypos);
<dd>Dessin d'un caractère 16 x 24 dans une image, les noms des paramètres sont
explicites. Les couleurs sont fixées. Aucun contrôle de débordement n'est fait.
<dt>int Image_t16x24_pltch_1(Image_Desc *img, int lettre, int xpos, int ypos,
RGBA *pap, RGBA *ink, int flags);
<dd>Dessin d'un caractère 16 x 24 dans une image, les noms des paramètres sont
presque explicites. La police doit être chargée à l'avance. <tt>flags</tt>
doit être mis à 0. Aucun contrôle de débordement n'est fait.
<dt>int Image_t16x24_allchars(char *fontname, char *tganame, int flag);
<dd>Construction d'une image contenant le dessin des 256 caractères.
</dl>
<p>Voilà, c'est tout pour le moment, mais ça permet déja de faire des
choses. Je continue à réfléchir aux nouveaux <i>features</i> que je
vais pouvoir inventer. Restez à l'écoute...
</p>
<center><img src="all16x24chars.png"></center>
<p class="HDP"><a href="#top">haut de page</a></p>
<a name="outils"><h2>outils 16 x 24</h2></a>
<p>
Hop, hop, quelques trucs supplémentaires. Dans le
<a href="libimage.tar.gz">tarball</a>, vous trouvererez <tt>fnt8to16</tt> qui
convertit une fonte 8x8 en fonte 16x24. C'est un peu cru, il n'y a pas
d'interpolation, mais ça donne de quoi faire.<p>
<center><img src="bigthin.gif" width=488 height=181></center>
<p>Dans le tarball vous trouverez la fonte ci-dessus (fichier
<tt>16x24thin</tt>) qui sera installé comme les autres fontes.
Dans les
<a href="img-outils.html#mires">outils associés</a>,
le programme <tt>tga_mires</tt> peut maintenant tracer le contenu d'une
fonte 16x24, modulo le parsage des paramètres de la ligne de commande.
</p>
<p class="HDP"><a href="#top">haut de page</a></p>
<h2><a name="gropixels">texte en 'gropixels'</a></h2>
<p>Une nouveauté de 2014 (codenamed: <i>rouille de seiche</i>)
encore très immature. Ces fonctions utilisent les
<a href="#fontes">fontes</a> 8x8 mise aux échelles en X et en Y,
sans interpolation, d'où le nom de <b>gropixels</b>.
</p>
<dl class="proto">
<dt>int Image_trace_big_char_0(Image_Desc *im,
int x, int y, int code, int kx, int ky);
<dd>Première version du tracé de caractère 'gropixels'.
Les paramètres <tt>kx</tt> et <tt>ky</tt> sont les coefficients de
mise à l'échelle. Il est nécessaire d'avoir préalablement chargé
une fonte avec <tt>Image_load_fnt8x8</tt>.
<dt>int Image_txt1_big_0(Image_Desc *im, char *txt, int x, int y,
int xf, int yf);
<dd>Première version du tracé de chaine en 'gropixels'. Hélas, pas
de contrôle des limites, donc coredump presque assuré.
</dl>
<p class="HDP"><a href="#top">haut de page</a></p>
<a name="liens"><h2>liens</h2></a>
<p>
Bah, euh... <a href="http://www.freetype.org/">Freetype</a>, par exemple.
Mais je suis aussi à la recherche d'un format de fontes 'bitmap' évolué,
bien documenté et disposant d'un éditeur sous <b>X11</b> facile
d'utilisation.
</p>
<p class="footer">
<b>tTh</b>, éleveur de police depuis 1998...<br>
Toujours à la recherche de trucs à faire dans le domaine
de l'ascii-art...<br>
<a href="#top">haut de page</a></p>
</body>
</html>