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