#include <inrimage/image.h>
int ird_ctrgb(nf,i0,nb,bufr,bufg,bufb,maxcol)
struct image *nf; int *i0, *nb, maxcol; char *bufr, *bufg, *bufb;
int iwr_ctbw(nf,i0,nb,buf)
struct image *nf; int i0, nb; char *buf;
int iwr_ctrgb(nf,i0,nb,bufr,bufg,bufb)
struct image *nf; int i0, nb; char *bufr, *bufg, *bufb;
int idel_ct(nf)
struct image *nf;
int icop_ct(nfi,nfo)
struct image *nfi, *nfo;
int icmp_ct(bufr,bufg,bufb,maxcol)
int maxcol; char *bufr, *bufg, *bufb;
Les tables couleur sont écrites en ascii dans l'en-tête d'image. Elles correspondent à des clés de la forme COLTBxxx\= où xxx est une chaine de 1 à 3 caractères pris parmi R, G, B pour désigner les composantes concernées. A droite du signe = on peut trouver 2 types d'expression :
L(x0,y0-x1,y1)
A(i0-i1)hh.....
Les valeurs limites pour i0, i1, x0, x1, y0, y1 sont 0 et 255.
ird_ctrgb
renvoie dans bufr, bufg, bufb, de taille maxcol octets,
les 3 tables couleur (rouge, vert, bleu)
associées à l'image,
dans nb la taille effective des tables, et
dans i0 l'indice de début de la partie utile de la table.
Les éléments d'indice 0 à i0-1 et d'indice i0+nb-1
à maxcol sont mis à 0.
Certains de ces pointeurs peuvent être nuls, si on ne désire pas la table
correspondante.
Le code retour est -1 si les 3 pointeurs sont nuls,
0 s'il n'y a pas de tables, 1 si toutes les tables demandées sont identiques,
2 s'il y en a seulement 2 différentes, et 3 si les 3 sont différentes.
Les tableaux correspondant aux tables absentes du fichier
sont chargés avec une fonction lineaire croissante.
Pour un code retour 0, les 3 tableaux seront initialisés,
et on aura 0 dans i0 et maxcol dans nb.
idel_ct supprime toutes les tables couleur de l'image.
iwr_ctbw écrit 3 tables couleur identiques à partir du tableau buf, de taille 256 octets. i0 est l'indice du premier élément utile de la table, et nb le nombre d'éléments valides : on utilisera les cellules i0 à i0+nb-1 de buf. Le programme détermine automatiquement si la table est linéaire. Il faut que l'en-tête du fichier ait une taille suffisante : l'écriture d'une table de longueur 256 occupera 530 caractères (il faut une image avec hdr=3 au moins). Le code retour est 1.
iwr_ctrgb écrit 3 tables couleur à partir des tableaux bufr, bufg, bufb. i0 est l'indice du premier élément utile des tables, et nb le nombre d'éléments valides : on utilisera les cellules i0 à i0+nb-1 de bufr, bufg, bufb. Le programme détermine automatiquement si les tables sont linéaires et identiques entre elles. Il faut que l'en-tête du fichier ait une taille suffisante : l'écriture de 3 tables de longueur 256 occupera 1584 caractères (il faut une image avec hdr=7 au moins). Le code retour est 1 si les 3 tables sont identiques, 2 si seulement 2 sont identiques, et 3 si les 3 sont différentes.
icop_ct copie, si elles existent, les tables couleur associées à l'image nfi dans l'en-tête de l'image nfo.
icmp_ct
compare les 3 tableaux bufr, bufg, bufb de taille maxcol
et renvoie le nombre de tables différentes.
Certains de ces 3 pointeurs peuvent être donnés nuls
(composante absente)
Le code retour est 0 si les 3 pointeurs sont nuls,
1 si toutes les tables présentes sont égales, etc.