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>
 | 
