IHDRCT (3I)     version 4.6.9     March 2022

User Intro    Prog Intro    Liste des programmes    Liste des manuels
Table of Contents


NAME

ird_ctrgb, iwr_ctbw, iwr_ctrgb, idel_ct, icop_ct, icmp_ct - lecture, écriture, test de tables couleur sur en-tête image.

SYNOPSIS

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

DESCRIPTION

Dans tous les cas nf désigne l'image dans l'en-tête de laquelle on veut lire (ird_ctrgb), écrire (iwr_ctbw, iwr_ctrgb) ou supprimer (idel_ct) les tables couleur.

Les tables couleur sont écrites en ascii dans l'en-tête d'image. Elles correspondent à des clés de la forme COLTBxxx\=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)

Dans ce cas la table est linéaire, et x0, x1 désignent la 1ère et la dernière valeur d'entrée, et y0, y1 les valeurs de sortie correspondantes. Par exemple COLTBRGB=L(0,0-255,255) ou COLTBRGB=L(0,255-255,0) (table inverse).

A(i0-i1)hh.....

La table est donnée pour les pixels compris entre i0 et i1. A chaque élément de la table correspond une valeur hexadécimale hh, comprise entre 0 et 255.

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.

"SEE ALSO"

Intro(3i) , ihdr(3i) , rwctfile(3i)

DIAGNOSTICS

On appelle imerror (code 8) si l'en-tête de l'image est trop petit (utiliser l'option -hdr= des commandes Inrimage).
On appelle imerror (code 9) si on n'arrive pas à écrire la table dans l'en-tête (iwr_ctrgb, iwr_ctbw), ou si la syntaxe des tables est incorrecte dans l'en-tête (ird_ctrgb).