<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>libimage: les plans de bits</title>
<link rel="stylesheet" type="text/css" href="libimage.css">
<meta name="generator" content="Vim et huile de phalange">
<meta name="keywords" content="libimage, dinorama, plans de bits">
</head>

<body>

<h1>libimage: les plans de bits</h1>

<p align=center>
<tt>dernière mise à jour: 5 avril 2014</tt><br>
</p>

<p>
Une image que j'appelle parfois <i>bitplane</i>, parfois <i>plan de bits</i>,
est une image binaire, c'est-à-dire que chaque pixel est représenté par un
seul bit, qui ne peut prendre que deux valeurs: 0 ou 1. Pour chacune de ces
deux valeurs, une teinte <i>rgb8</i> est associée, et ces deux teintes seront
utilisables par les routines de sauvegarde de ces images.
</p>

<p>Pour les curieu^geeks, voici (au 20 mars 2010) ce qu'est en gros un
descripteur de bitplane, sous réserve de modifications puiqu'il faut
considérer ça comme une structure <i>opaque</i> : 
</p>
<pre>
typedef struct	{
        unsigned int    magic;
        int             width, height;     /* are negative allowed ? */
        int             id;
        U_BYTE          r0, g0, b0, r1, g1, b1;
        char            name[IMG_OBJNAME_LEN+2];
        int             tabname;           /* explain this field, please */
        unsigned long   *plane;
        int             reserved;
        } A_BitPlane;

#define MAGIC_BIT_PLANE 0xb142ae17         /* XXX value not fixed */
</pre>

<p>Il est possible qu'il existe des contraintes sur les dimensions
 du bitplane. Utsl.
</p>

<p class="HDP"><a href="#top">haut de page</a></p>
<h2><a name="creation">creation</a></h2>

<p>La création sera simple : d'abord, on demande au truc  un bitmap, et,
si on en obtient un, on ajuste éventuellement les divers paramètres entrevus
plus haut. Il peut y avoir des cas où le système refuse.
</p>

<dl class="proto">

<dt>A_BitPlane * Image_give_me_a_BP(int width, int height);
<dd>Demande la fourniture d'un bitplane dons les dimensions sont livrées.
 Les autres réglages de celui-ci sont positionnés à des valeurs par défaut
 (lesquelles valeurs sont de nature <i>dddd</i>) cohérentes pour la suite
 des opérations.

<dt>int Image_BP_setname(A_BitPlane *bp, char *name);
<dd>Attribue un nom (d'une longueur inférieure à <tt>IMG_OBJNAME_LEN</tt>)
 à un bitplane. Ce nom pourra être éventuellement inscrit sur l'image
 sauvegardée dans un <a href="img-fichiers.html#pcx">fichier</a>.

</dl>

<p class="HDP"><a href="#top">haut de page</a></p>
<h2><a name="utilisation">utilisation</a></h2>

<dl class="proto">
<dt>int Image_BP_clear(A_BitPlane *bp, int bit);
<dd>Effacement, remise à <tt>bit</tt> d'une bitplane.

<dt>int Image_BP_plot(A_BitPlane *bp, int x, int y, int bit);
<dd>Positionnement d'un bit dans le bitplane. Attention, <tt>bit</tt>
 doit avoir 0 ou 1 comme valeur.
</dl>

<p class="HDP"><a href="#top">haut de page</a></p>
<h2><a name="fichier">fichier</a></h2>

<dl class="proto">
<dt>int Image_BP_savepcx(A_BitPlane *bp, char *filename, int flag);
<dd>Enregistrement en PCX monochrome. Ne fonctionne pas encore.


<dt>int Image_BP_to_pbm(A_BitPlane *bp, char *fname, int k);
<dd>Enregistrement en portable bit map non compressé. La relecture
 est pour bientôt.
</dl>

<p class="HDP"><a href="#top">haut de page</a></p>
<h2>Et ensuite ?</h2>

<p>
Vous en savez assez maintenant. Vous pouvez expérimenter en attendant
l'arrivée de <a href="image77.html#bitplane">l'interface Fortran</a>.
</p>

<p class="HDP"><a href="#top">haut de page</a></p>
</body>
</html>