/*************************************************************************************************************************************/
/* */
/* P A S S A G E D E S F A U S S E S A U X V R A I E S C O U L E U R S */
/* P O U R U N E L I S T E D ' I M A G E S : */
/* */
/* */
/* Definition : */
/* */
/* Cette commande calcule les trois */
/* composantes en vraies couleurs de */
/* d'une liste d'images Argument. */
/* */
/* */
/* Author of '$xci/vraies_C.01$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 1994??????????). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* I N T E R F A C E ' listG ' : */
/* */
/* */
/* :Debut_listG: */
/* :Fin_listG: */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D I R E C T I V E S S P E C I F I Q U E S D E C O M P I L A T I O N : */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F I C H I E R S D ' I N C L U D E S : */
/* */
/*************************************************************************************************************************************/
#include INCLUDES_BASE
#include image_image_QUAD_IMAGE_EXT
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
#include xci/sequence.01.I"
#include xci/accumule.01.I"
#define INVERSER_L_ORDRE_DE_RECUPERATION_DES_IMAGES \
FAUX \
/* Indique s'il faut inverser l'ordre de parcours de l'ensemble des images. */
#define NOMBRE_DE_CHIFFRES_AR \
NOMBRE_DE_CHIFFRES \
/* Donne le nombre de chiffres des 'ImageA's et des 'ImageR's. Ceci fut introduit le */ \
/* 20120910150204 afin de permettre, par exemple, de "convertir" une image unique */ \
/* (nombre_de_chiffres_A=0) en une sequence d'images (nombre_de_chiffres_R=4). */
#define GENERER_UNE_IMAGE_EN_VRAIES_COULEURS \
VRAI \
/* Faut-il generer une image en vraies couleurs ('VRAI)' c'est-a-dire dont les trois */ \
/* composantes ont la meme racine, ou bien trois images "independantes" ('FAUX'). */
#define GENERER_LA_COMPOSANTE_ROUGE \
VRAI
#define GENERER_LA_COMPOSANTE_VERTE \
VRAI
#define GENERER_LA_COMPOSANTE_BLEUE \
VRAI
/* Indicateurs precisant s'il faut generer ('VRAI') ou pas ('FAUX') la composante */
/* chromatique correspondante... */
#define TRANSLATER_LE_NOIR \
LE_NOIR_N_EST_PAS_TRANSLATABLE \
/* Indique si le niveau 'NOIR' est translatable ou pas... */
#define INCREMENT_DES_NIVEAUX \
ZERO \
/* Lorsque les niveaux doivent "tourner", on trouve ici l'increment des couleurs... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A C R O S U T I L E S : */
/* */
/*************************************************************************************************************************************/
#define GENERATION_D_UNE_COMPOSANTE(nom_de_la_composante,nom_de_la_couleur,image) \
Bblock \
EGAL(nom_imagesR \
,COND(IL_FAUT(generer_une_image_en_vraies_couleurs) \
,chain_Aconcaten3_sauf_nom_pipe(nom_imageR \
,chain_numero(numero_d_image,NOMBRE_DE_CHIFFRES_R) \
,nom_de_la_couleur \
) \
,chain_Aconcaten2_sauf_nom_pipe(nom_de_la_composante \
,chain_numero(numero_d_image,NOMBRE_DE_CHIFFRES_R) \
) \
) \
); \
CALi(Iupdate_image(nom_imagesR,image)); \
/* Generation d'une composante d'une image en vraies couleurs... */ \
CALZ_FreCC(nom_imagesR); \
Eblock \
/* Procedure de generation d'une composante de nom donne... */
#define NOMBRE_DE_CHIFFRES_A \
MIN2(nombre_de_chiffres,nombre_de_chiffres_A)
#define NOMBRE_DE_CHIFFRES_R \
MIN2(nombre_de_chiffres,nombre_de_chiffres_R)
/* Introduits le 20120910150204... */
#include xci/accumule.02.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A S S A G E D E S F A U S S E S A U X V R A I E S C O U L E U R S */
/* P O U R U N E L I S T E D ' I M A G E S : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(CHAR,INIC(POINTERc(nom_imagesA),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));
/* Nom de l'image a displayer. */
DEFV(CHAR,INIC(POINTERc(nom_paletteA),NOM_PIPE));
/* Nom de la palette a utiliser. */
DEFV(CHAR,INIC(POINTERc(nom_imagesR),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
/* Nom de la racine d'une image en vraies couleurs. */
DEFV(CHAR,INIC(POINTERc(nom_imageRR),NOM_PIPE));
/* Nom de l'image ROUGE a generer, */
DEFV(CHAR,INIC(POINTERc(nom_imageRV),NOM_PIPE));
/* Nom de l'image VERTE a generer, */
DEFV(CHAR,INIC(POINTERc(nom_imageRB),NOM_PIPE));
/* Nom de l'image BLEUE a generer, */
DEFV(Logical,INIT(generer_une_image_en_vraies_couleurs,GENERER_UNE_IMAGE_EN_VRAIES_COULEURS));
/* Faut-il generer une image en vraies couleurs ('VRAI)' c'est-a-dire dont les trois */
/* composantes ont la meme racine, ou bien trois images "independantes" ('FAUX'). */
DEFV(Int,INIT(translation_des_numeros_des_images,TRANSLATION_DES_NUMEROS_DES_IMAGES));
/* Les numeros d'images peuvent etre translates. Lorsque tel est le cas, le numero */
/* d'image utilise est le numero translate modulo {premiere,derniere}. */
DEFV(Logical,INIT(inverser_l_ordre_de_recuperation_des_images,INVERSER_L_ORDRE_DE_RECUPERATION_DES_IMAGES));
/* Indique s'il faut inverser l'ordre de parcours de l'ensemble des images. */
DEFV(Int,INIT(premiere_image,PREMIERE_IMAGE));
/* Numero de la premiere image, */
DEFV(Int,INIT(derniere_image,DERNIERE_IMAGE));
/* Numero de la derniere image. */
DEFV(Int,INIT(pas_des_images,PAS_DES_IMAGES));
/* Pas de passage d'un numero d'image a une autre. */
DEFV(Int,INIT(nombre_de_chiffres,NOMBRE_DE_CHIFFRES));
/* Nombre de chiffres codant le numero des images de la serie... */
DEFV(Int,INIT(nombre_de_chiffres_A,NOMBRE_DE_CHIFFRES_AR));
DEFV(Int,INIT(nombre_de_chiffres_R,NOMBRE_DE_CHIFFRES_AR));
/* Donne le nombre de chiffres des 'ImageA's et des 'ImageR's. Ceci fut introduit le */
/* 20120910150204 afin de permettre, par exemple, de "convertir" une image unique */
/* (nombre_de_chiffres_A=0) en une sequence d'images (nombre_de_chiffres_R=4). */
DEFV(Int,INIT(numero_d_image,UNDEF));
/* Numero de l'image courante. */
DEFV(Logical,INIT(generer_la_composante_ROUGE,GENERER_LA_COMPOSANTE_ROUGE));
DEFV(Logical,INIT(generer_la_composante_VERTE,GENERER_LA_COMPOSANTE_VERTE));
DEFV(Logical,INIT(generer_la_composante_BLEUE,GENERER_LA_COMPOSANTE_BLEUE));
/* Indicateurs precisant s'il faut genere ('VRAI') ou pas ('FAUX') la composante chromatique */
/* correspondante... */
DEFV(Logical,INIT(translater_le_NOIR,TRANSLATER_LE_NOIR));
/* Indique si le niveau 'NOIR' est translatable ou pas... */
DEFV(Int,INIT(increment_des_niveaux,INCREMENT_DES_NIVEAUX));
/* Lorsque les niveaux doivent "tourner", on trouve ici l'increment des couleurs... */
/*..............................................................................................................................*/
GET_ARGUMENTSi(nombre_d_arguments
,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
GET_ARGUMENT_C("imageR=""R=",nom_imageR);
GET_ARGUMENT_C("Rouge=""RR=""ROUGE=",nom_imageRR);
GET_ARGUMENT_C("Verte=""VERTE=""RV=",nom_imageRV);
GET_ARGUMENT_C("RB=""Bleue=""BLEUE=",nom_imageRB);
GET_ARGUMENT_L("RVB=",generer_une_image_en_vraies_couleurs);
GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA);
GET_ARGUMENT_I("modulo=",translation_des_numeros_des_images);
GET_ARGUMENT_L("inverser=",inverser_l_ordre_de_recuperation_des_images);
GET_ARGUMENT_I("premiere=",premiere_image);
GET_ARGUMENT_I("derniere=",derniere_image);
GET_ARGUMENT_I("pas=",pas_des_images);
GET_ARGUMENT_L("periodique=",chain_numero_modulo_____effectif);
GET_ARGUMENT_I("origine=""o=",chain_numero_modulo_____origine);
GET_ARGUMENT_I("extremite=""e=",chain_numero_modulo_____extremite);
/* Introduits le 20221212121359... */
GET_ARGUMENT_I("chiffres=",nombre_de_chiffres);
GET_ARGUMENT_I("chiffresA=",nombre_de_chiffres_A);
GET_ARGUMENT_I("chiffresR=",nombre_de_chiffres_R);
GET_ARGUMENT_L("genereR=""gROUGE=",generer_la_composante_ROUGE);
GET_ARGUMENT_L("genereV=""gVERTE=",generer_la_composante_VERTE);
GET_ARGUMENT_L("genereB=""gBLEUE=",generer_la_composante_BLEUE);
GET_ARGUMENT_L("translater_le_NOIR=""noir=""NOIR=",translater_le_NOIR);
GET_ARGUMENT_I("increment=""i=",increment_des_niveaux);
)
);
CALS(Iload_palette_de_couleurs(nom_paletteA,ESPACE_DE_COULEURS_RVB));
/* Chargement de la palette de couleurs... */
DoIn(numero_d_image,premiere_image,derniere_image,pas_des_images)
Bblock
EGAL(nom_imagesA
,chain_Aconcaten2_sauf_nom_pipe(nom_imageA
,chain_numero_modulo(NUMERO_D_IMAGE,NOMBRE_DE_CHIFFRES_A)
)
);
/* Le 20221212115852, 'chain_numero_modulo(...)' a remplace 'chain_numero(...)'... */
Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageA,nom_imagesA))))
Bblock
PUSH_OPTIMISATION;
SET_OPTIMISATION(VRAI);
/* Afin de ne passer que par les listes de substitution... */
CALS(Ivraies_couleurs(Image_ROUGE,Image_VERTE,Image_BLEUE
,ImageA
,generer_la_composante_ROUGE,generer_la_composante_VERTE,generer_la_composante_BLEUE
,increment_des_niveaux
,translater_le_NOIR
)
);
/* Passage des fausses aux vraies couleurs via la palette courante. */
PULL_OPTIMISATION;
Test(IL_FAUT(generer_la_composante_ROUGE))
Bblock
GENERATION_D_UNE_COMPOSANTE(nom_imageRR,c_ROUGE,Image_ROUGE);
Eblock
ATes
Bblock
Eblock
ETes
Test(IL_FAUT(generer_la_composante_VERTE))
Bblock
GENERATION_D_UNE_COMPOSANTE(nom_imageRV,c_VERTE,Image_VERTE);
Eblock
ATes
Bblock
Eblock
ETes
Test(IL_FAUT(generer_la_composante_BLEUE))
Bblock
GENERATION_D_UNE_COMPOSANTE(nom_imageRB,c_BLEUE,Image_BLEUE);
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ATes
Bblock
Test__CODE_ERREUR__ERREUR07;
Eblock
ETes
CALZ_FreCC(nom_imagesA);
Eblock
EDoI
RETU_Commande;
Eblock
ECommande