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