222 lines
8.0 KiB
HTML
222 lines
8.0 KiB
HTML
|
<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>
|