libtthimage/Docs/img-bitplane.html

109 lines
3.5 KiB
HTML

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