/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  :                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Cette commande calcule les trois                                                                               */
/*                  composantes en vraies couleurs de                                                                                */
/*                  l'image Argument.                                                                                                */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/vraies_C$K' :                                                                                              */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1989??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   GENERER_UNE_IMAGE_EN_VRAIES_COULEURS                                                                                          \
                    FAUX                                                                                                                \
                                        /* 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'). La         */ \
                                        /* valeur par defaut est choisie pour assurer la compatibilite anterieure...                 */

#define   GENERER_LA_COMPOSANTE_ROUGE                                                                                                   \
                    VRAI
#define   GENERER_LA_COMPOSANTE_VERTE                                                                                                   \
                    VRAI
#define   GENERER_LA_COMPOSANTE_BLEUE                                                                                                   \
                    VRAI
#define   GENERER_LA_LUMINANCE                                                                                                          \
                    FAUX
                                        /* Indicateurs precisant s'il faut generer ('VRAI') ou pas ('FAUX') la composante            */
                                        /* chromatique correspondante. La possibilite de generer la luminance a ete introduite       */
                                        /* le 20131205111957...                                                                      */

#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  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/vraies_C.01.I"
#include  xci/luminance.01.I"
                                        /* Introduit le 20060716112953...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     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(CHAR,INIC(POINTERc(nom_imageRL),NOM_PIPE));
                                        /* Nom de l'image LUMINANCE 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'). La         */
                                        /* valeur par defaut est choisie pour assurer la compatibilite anterieure...                 */
     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));
     DEFV(Logical,INIT(generer_la_luminance,GENERER_LA_LUMINANCE));
                                        /* Indicateurs precisant s'il faut genere ('VRAI') ou pas ('FAUX') la composante             */
                                        /* chromatique correspondante. La possibilite de generer la luminance a ete introduite       */
                                        /* le 20131205111957...                                                                      */

     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_C("RL=""Luminance=""LUMINANCE=",nom_imageRL);
                                        /* Arguments introduits le 20131205111957...                                                 */

                         GET_ARGUMENT_L("RVB=",generer_une_image_en_vraies_couleurs);
                         GET_ARGUMENT_L("genereR=""gROUGE=""gR=",generer_la_composante_ROUGE);
                         GET_ARGUMENT_L("genereV=""gVERTE=""gV=",generer_la_composante_VERTE);
                         GET_ARGUMENT_L("genereB=""gBLEUE=""gB=",generer_la_composante_BLEUE);
                         GET_ARGUMENT_L("genereL=""gLUMINANCE=""gL=",generer_la_luminance);
                                        /* Arguments introduits le 20131205111957. Les abreviations {"gR=","gV=","gB=","gL="} ont    */
                                        /* ete introduites le 20231202134854 pour 'v $xiirf/.FRC2.52.3.$U .xci.vraies_C.X'...        */

                         GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA);
                         GET_ARGUMENT_L("translater_le_NOIR=""noir=""NOIR=",translater_le_NOIR);
                         GET_ARGUMENT_I("increment=""i=",increment_des_niveaux);
                         )
                    );

     Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageA,nom_imageA))))
          Bblock
          CALS(Iload_palette_de_couleurs(nom_paletteA,ESPACE_DE_COULEURS_RVB));
                                        /* Chargement de la palette de couleurs...                                                   */

          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_luminance))
                                        /* Test introduit le 20131205111957...                                                       */
               Bblock
               CALS(Iluminance(ImageR,Image_ROUGE,Image_VERTE,Image_BLEUE));
                                        /* Passage des fausses aux vraies couleurs via la palette courante.                          */

               CALi(Iupdate_image(nom_imageRL,ImageR));
               Eblock
          ATes
               Bblock
               GENERER_LE_NOM_DE_TROIS_COMPOSANTES_CHROMATIQUES_RVB(nom_imageR,nom_imageRR,nom_imageRV,nom_imageRB)
                                        /* Introduit le 20060716112953 afin de permettre un "RVB=VRAI" implicite...                  */

               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
          ETes
          Eblock
     ATes
          Bblock
          Test__CODE_ERREUR__ERREUR07;
          Eblock
     ETes

     RETU_Commande;
     Eblock
ECommande



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.