242 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			242 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<html>
 | 
						|
<head>
 | 
						|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 | 
						|
<title>libimage: la doc, enfin !</title>
 | 
						|
<link rel="stylesheet" type="text/css" href="libimage.css">
 | 
						|
<meta name="generator" content="Vim et huile de phalange">
 | 
						|
<meta name="keywords" content="libimage, oulala, buv3tt3, Boudet, Targa">
 | 
						|
</head>
 | 
						|
 | 
						|
<body>
 | 
						|
 | 
						|
<h1><a name="top">Libimage : <i>La Doc</i></a></h1>
 | 
						|
 | 
						|
<p align=center>
 | 
						|
<tt>dernière mise à jour : 15 décembre 2015</tt><br>
 | 
						|
</p>
 | 
						|
 | 
						|
<p class=menuhaut>
 | 
						|
[<a href="#primitives">primitives</a>]
 | 
						|
[<a href="README.txt">README</a>]
 | 
						|
[<a href="img-fichiers.html">fichiers</a>]
 | 
						|
[<a href="#tools">tools</a>]
 | 
						|
[<a href="img-cadres.html">cadres</a>]
 | 
						|
<br>
 | 
						|
[<a href="img-effets.html#effets">effets</a>]
 | 
						|
[<a href="img-op2x2.html">op2x2</a>]
 | 
						|
[<a href="img-texte.html">texte</a>]
 | 
						|
[<a href="img-showdiff.html">showdiff</a>]
 | 
						|
<br>
 | 
						|
[<a href="img-filtres.html">filtres</a>]
 | 
						|
[<a href="img-calculs.html">calculs</a>]
 | 
						|
[<a href="img-plotters.html">plotteurs</a>]
 | 
						|
[<a href="#scale">scale</a>]
 | 
						|
<br>
 | 
						|
[<a href="img-combine.html">combine</a>]
 | 
						|
[<a href="img-patterns.html">patterns</a>]
 | 
						|
[<a href="img-couleurs.html#couleurs">couleurs</a>]
 | 
						|
[<a href="img-couleurs.html#palettes">palettes</a>]
 | 
						|
<br>
 | 
						|
[<a href="img-dither.html">dithering</a>]
 | 
						|
[<a href="img-operat.html">opérations</a>]
 | 
						|
[<a href="img-alpha.html">alpha</a>]
 | 
						|
[<a href="img-povhf15.html">hf 15</a>]
 | 
						|
[<a href="img-bitplane.html">bitplane</a>]
 | 
						|
<br>
 | 
						|
[<a href="image77.html">fortran</a>]
 | 
						|
[<a href="img-df3.html">density file</a>]
 | 
						|
[<a href="#messages">messages</a>]
 | 
						|
[<a href="img-exemples.html">exemples</a>]
 | 
						|
[<a href="#liens">liens</a>]
 | 
						|
</p>
 | 
						|
 | 
						|
<p>
 | 
						|
<b>libimage</b> est une librairie de traitement de les images que j'ai 
 | 
						|
fabriquée moi-même avec mon
 | 
						|
<a href="http://www.vim.org/"><tt>vim</tt></a> et mes
 | 
						|
<a href="http://gcc.gnu.org/"><tt>gcc & g77</tt></a> tout seul
 | 
						|
comme un grand. Tout n'est pas documenté, loin de là, seulement les fonctions
 | 
						|
que j'utilise actuellement. Par contre, la
 | 
						|
<a href="img-devel.html#compilation">procédure d'installation</a> est à peu
 | 
						|
près explicite.
 | 
						|
</p>
 | 
						|
 | 
						|
<p>
 | 
						|
Il est difficile de décrire ce que font certaines fonctions, vous devrez donc
 | 
						|
les essayer par vous même pour vous faire une idée. Et en cas de doute, vous
 | 
						|
avez les
 | 
						|
<a href="libimage.tar.gz">sources</a>
 | 
						|
à votre disposition.
 | 
						|
<a href="img-devel.html#utsl">utsl</a>. 
 | 
						|
Il existe aussi quelques <a href="#exemples">exemples</a> d'utilisation
 | 
						|
dans la vie réelle.
 | 
						|
</p>
 | 
						|
 | 
						|
<h2><a name="primitives">primitives</a></h2>
 | 
						|
 | 
						|
<dl class="proto">
 | 
						|
<dt>Image_Desc * Image_alloc(int w, int h, int type)
 | 
						|
<dd>Création d'une nouvelle image. Les types valides sont:
 | 
						|
 IMAGE_GREY, IMAGE_RGB et IMAGE_RGBA. En fait, les images en niveaux de
 | 
						|
 gris sont très mal gérées... <b>!!!</b> le contenu de l'image n'est
 | 
						|
 pas initialisé. Son contenu est allé à Toire. Il faut utiliser
 | 
						|
 <tt>Image_clear</tt> pour l'effacer.
 | 
						|
 | 
						|
<dt>int Image_DeAllocate(Image_Desc *)
 | 
						|
<dd>Restitution de la mémoire 'pixel' d'une image. Attention, la mémoire
 | 
						|
du descripteur n'est <b>pas</b> rendue. C'est probablement un
 | 
						|
<a href="img-devel.html#bugs">bug</a>.
 | 
						|
 | 
						|
<dt>Image_Desc * Image_clone(Image_Desc *i, int copie)
 | 
						|
<dd>Crée une copie d'une image de même type. Si le flag <tt>copie</tt> est
 | 
						|
    <small>TRUE</small>, les pixels sont recopiés dans la nouvelle image.
 | 
						|
 | 
						|
<dt>int Image_clear( Image_Desc *image, int r, int g, int b)
 | 
						|
<dd>Remplissage d'une image avec les <i>rgb</i> fournis.
 | 
						|
<i>28 Déc 2001</i>: si un canal alpha est présent, il est mis à 0.
 | 
						|
 | 
						|
<dt>int Image_plotRGB(Image_Desc *i, int x, int y, int r, int g, int b)
 | 
						|
<dd>Ecrire un pixel dans une image, avec vérification des limites.
 | 
						|
 | 
						|
<dt>int Image_plot_channel(Image_Desc *img, char channel, int x, int y, int value)
 | 
						|
<dd>Cette fonction permet de modifier un seul des canaux de l'image.
 | 
						|
 Le paramètre 'channel' est un <tt>char</tt> 'r', 'g', 'b', 'R', 'G' ou 'B'.
 | 
						|
 Le canal <i>alpha</i> n'est pas encore géré.
 | 
						|
 | 
						|
<dt>int Image_getRGB(Image_Desc *i, int x, int y, int *pr, int *pg, int *pb)
 | 
						|
<dd>Lecture d'un pixel. En rajoutant un 'A' au nom de la fonction, et un
 | 
						|
 quatrième pointeur sur <tt>int</tt>, on peut aussi lire le canal
 | 
						|
 <a href="img-alpha.html">alpha</a>.
 | 
						|
 | 
						|
<dt>Image_print_version(int flag)
 | 
						|
<dd>Affiche sur <tt>stdout</tt> la version de la librairie. Si <tt>flag</tt>
 | 
						|
 est != 0, il y a des informations complémentaires. Si flag > 1 certaines
 | 
						|
 options de compilation et/ou d'installation sont aussi affichées.
 | 
						|
 Vous disposez également d'un <tt>#define IMAGE_VERSION_STRING</tt>
 | 
						|
 utilisable dans un
 | 
						|
 <i>printf ("version %s\n", IMAGE_VERSION_STRING);</i> de bon aloi.
 | 
						|
 Attention quand même, si vous utilisez ce <tt>#define</tt> dans un programme
 | 
						|
 lié avec la bibliothèque dynamique, <i>puis</i> que vous passiez à une 
 | 
						|
 version différente de la libimage, la version affichée par votre programme
 | 
						|
 ne sera plus cohérente.<br>
 | 
						|
 Pour un rapport de bug, le numéro de version est <b>indispensable</b>.
 | 
						|
 C'est auprès de <a href="mailto:oulala@chez.com">moi</a> qu'il faut raler.
 | 
						|
 | 
						|
</dl>
 | 
						|
 | 
						|
<p class="HDP"><a href="#top">haut de page</a></p>
 | 
						|
<h2><a name="tools">tools</a></h2>
 | 
						|
 | 
						|
<p>
 | 
						|
Différentes routines utilitaires, destinées avant tout à la mise au point
 | 
						|
des applications, mais qui ne sont pas interdites aux <i>péones</i>, loin
 | 
						|
de là.
 | 
						|
</p>
 | 
						|
 | 
						|
<dl class="proto">
 | 
						|
 | 
						|
<dt>int Image_dump_descriptor(Image_Desc *im, char *text);
 | 
						|
<dd>Affiche, de façon désordonnée, les informations disséminées dans un
 | 
						|
  descripteur d'image <i>Image_desc</i>.
 | 
						|
 | 
						|
<dt>int Image_dump_rect(Image_Rect *rect, char *texte, int flag);
 | 
						|
<dd>Affiche le contenu d'une structure Image_Rect. Un flag différent de
 | 
						|
 zéro rajoute l'autre coin (<i>pan</i>) et la surface.
 | 
						|
 | 
						|
<dt>int Image_fabrique_une_mire(Image_Desc *im, RGB_map *map);
 | 
						|
<dd>Euh, ça devrait en principe marcher avec une image 320x200.
 | 
						|
 Il existe d'autres <a href="img-mires.html">mires</a> dans le truc.
 | 
						|
 | 
						|
<dt>Les chronomètres:</dt>
 | 
						|
<dd>On dispose de 42 chronomètres. Etonnant, non?<br>
 | 
						|
<tt>void Image_start_chrono(char *texte, int num_chrono);</tt><br>
 | 
						|
<tt>long Image_stop_chrono(char *texte, int num_chrono);</tt><br>
 | 
						|
Maintenant, comment les utiliser avec précision et certitude est un exercice
 | 
						|
laissé à nos lecteurs... Sans compter que certains sont réservés par tTh.</dd>
 | 
						|
 | 
						|
</dl>
 | 
						|
 | 
						|
<p>
 | 
						|
Il y a aussi, dans le genre relativement utile,
 | 
						|
 le <a href="img-marquage.html">marquage</a> des images.
 | 
						|
 | 
						|
</p>
 | 
						|
 | 
						|
 | 
						|
<p class="HDP"><a href="#top">haut de page</a></p>
 | 
						|
<h2><a name="messages">messages</a></h2>
 | 
						|
 | 
						|
<p>
 | 
						|
A la lecture du fichier <tt>tthimage.h</tt> vous avez constaté une série de #define
 | 
						|
pour les codes d'erreur. La fonction <tt>char * Image_err2str(int codeerr)</tt>
 | 
						|
permet d'obtenir un texte explicatif. Vous pouvez par exemple écrire:
 | 
						|
</p>
 | 
						|
<pre class="code">
 | 
						|
       foo = Image_blabla(gniark);
 | 
						|
       printf("retour from hell: %s\n", Image_err2str(foo));
 | 
						|
</pre>
 | 
						|
 | 
						|
 | 
						|
<dl class="proto">
 | 
						|
 | 
						|
<dt>char * Image_err2str(int codeerr);
 | 
						|
<dd>Conversion du code numérique de retour des fonctions en texte 
 | 
						|
 klingonesquement compréhensible. Si la valeur envoyée n'est pas
 | 
						|
 gérée, un message bidon est fabriqué à la volée.
 | 
						|
<dt>void Image_print_error(char * texte, int err);
 | 
						|
<dd>Affichage d'un message décrivant une erreur. Si le texte commence par
 | 
						|
le caractère '-', c'est sur <i>stdout</i>, sinon, c'est sur <i>stderr</i>.
 | 
						|
Les numéros d'erreur sont à décrypter dans <tt>tthimage.h</tt>.
 | 
						|
 | 
						|
</dl>
 | 
						|
 | 
						|
<p>Je suis vraiment désolé, mais je suis totalement incapable
 | 
						|
de fournir une liste détaillée, avec des explications, de tout
 | 
						|
les codes d'erreur. Pourtant, ça serait bien comfortable.</p>
 | 
						|
 | 
						|
<p class="HDP"><a href="#top">haut de page</a></p>
 | 
						|
<h2><a name="exemples">exemples</a></h2>
 | 
						|
 | 
						|
<ul>
 | 
						|
<li>J'ai <i>enfin</i> confectionné quelques
 | 
						|
 <a href="img-outils.html">utilitaires</a> pour la ligne de 
 | 
						|
 commande qui appellent des primitives de la librairie. Ils sont
 | 
						|
 <a href="img-outils.tar.gz">ici</a> et
 | 
						|
 je vous invite à en lire les sources. C'est un bon point de départ pour
 | 
						|
 apprendre à utiliser le bidule.
 | 
						|
<li>Le postprocessing des images des
 | 
						|
 <i>Sources de Tar</i> a été
 | 
						|
 fait avec libimage: combinaison de deux variantes de l'image faite par 
 | 
						|
 POV et divers effets de cadres.
 | 
						|
</ul>
 | 
						|
 | 
						|
<p>
 | 
						|
En conclusion, vous êtes livré à vous-même avec ce kludge, mais j'espère
 | 
						|
que vous trouverez autant de <i>fun</i> à l'utiliser que j'en ai à le faire.
 | 
						|
Et je vous rappelle que ce logiciel est diffusé sous la bienveillante 
 | 
						|
protection de la <b>DMZIZ licence</b> que vous pouvez trouver
 | 
						|
<a href="http://la.buvette.org/textes/dmdzz.html">par là</a>.
 | 
						|
</p>
 | 
						|
 | 
						|
<h2><a name="liens">liens</a></h2>
 | 
						|
 | 
						|
<ul>
 | 
						|
<li>Pour les fous de la fabrication d'images:
 | 
						|
 <a href="http://www.povray.org/">Povray</a> et
 | 
						|
 <a href="http://www.fractint.org/">Fractint</a>.
 | 
						|
<li>Pour les cinglés de la manipulation d'image: 
 | 
						|
 <a href="http://www.gimp.org/">Gimp</a> qui roulaize grave pour les
 | 
						|
 clicketeurs, et <a href="http://www.imagemagick.org/">image-magick</a>
 | 
						|
 pour les batcheurs.
 | 
						|
</ul>
 | 
						|
 | 
						|
 | 
						|
<p class="footer">
 | 
						|
vous pouvez me contacter sur IRC : <tt>tth@freenode#tetalab</tt> <br>
 | 
						|
Si votre demande est raisonnable, je patche à donf.<br>
 | 
						|
</p>
 | 
						|
 | 
						|
 | 
						|
</body>
 | 
						|
</html>
 |