/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P R O D U I T   D E   D E U X   P A L E T T E S  :                                                                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                    Cette commande prend deux palettes                                                                             */
/*                  et en cree une troisieme par multiplication.                                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xciP/PRODUIT$K' :                                                                                              */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1992??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PRODUIT_DE_DEUX_LISTES(composante)                                                                                            \
                    Bblock                                                                                                              \
                    EGAL(nom_palettesA1,chain_Aconcaten2_sauf_nom_pipe(nom_paletteA1,c`composante));                                    \
                                        /* Chargement d'une composante de la premiere liste de substitution.                         */ \
                    Test(PAS_D_ERREUR(CODE_ERROR(Iload_liste_de_substitution(L_SUBSTITUTION`composante,nom_palettesA1))))               \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         PRINT_ERREUR("la palette n'existe pas, une echelle de gris, du Noir au Blanc, va etre utilisee");              \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    CALZ_FreCC(nom_palettesA1);                                                                                         \
                                                                                                                                        \
                    MOVE_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_VARIABLE,L_SUBSTITUTION`composante,NOIR,BLANC);                           \
                                                                                                                                        \
                    EGAL(nom_palettesA2,chain_Aconcaten2_sauf_nom_pipe(nom_paletteA2,c`composante));                                    \
                                        /* Chargement d'une composante de la deuxieme liste de substitution.                         */ \
                    Test(PAS_D_ERREUR(CODE_ERROR(Iload_liste_de_substitution(L_SUBSTITUTION`composante,nom_palettesA2))))               \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         PRINT_ERREUR("la palette n'existe pas, une echelle de gris, du Noir au Blanc, va etre utilisee");              \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    CALZ_FreCC(nom_palettesA2);                                                                                         \
                                                                                                                                        \
                    BoIn(niveau,NOIR,BLANC,PAS_COULEURS)                                                                                \
                         Bblock                                                                                                         \
                         EGAL(ACCES_listes_de_substitution(L_SUBSTITUTION`composante,niveau)                                            \
                             ,PRODUIT_GENERAL(ACCES_listes_de_substitution(L_SUBSTITUTION`composante,niveau)                            \
                                             ,ACCES_listes_de_substitution(L_SUBSTITUTION_VARIABLE,niveau)                              \
                                              )                                                                                         \
                              );                                                                                                        \
                                        /* Produit niveau a niveau...                                                                */ \
                         Eblock                                                                                                         \
                    EBoI                                                                                                                \
                                                                                                                                        \
                    EGAL(nom_palettesR,chain_Aconcaten2_sauf_nom_pipe(nom_paletteR,c`composante));                                      \
                    CALS(Iupdate_liste_de_substitution(nom_palettesR,L_SUBSTITUTION`composante));                                       \
                    CALZ_FreCC(nom_palettesR);                                                                                          \
                    Eblock                                                                                                              \
                                        /* Procedure effectuant le produit d'une meme composante de deux palettes.                   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P R O D U I T   D E   D E U X   P A L E T T E S  :                                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_paletteA1),NOM_PIPE));
                                        /* Nom de la palette Argument a utiliser.                                                    */
     DEFV(CHAR,INIT(POINTERc(nom_palettesA1),NOM_UNDEF));
                                        /* Pour generer le nom des palettes Argument.                                                */
     DEFV(CHAR,INIC(POINTERc(nom_paletteA2),NOM_PIPE));
                                        /* Nom de la palette Argument a utiliser.                                                    */
     DEFV(CHAR,INIT(POINTERc(nom_palettesA2),NOM_UNDEF));
                                        /* Pour generer le nom des palettes Argument.                                                */
     DEFV(CHAR,INIC(POINTERc(nom_paletteR),NOM_PIPE));
                                        /* Nom de la palette Resultat a generer.                                                     */
     DEFV(CHAR,INIT(POINTERc(nom_palettesR),NOM_UNDEF));
                                        /* Pour generer le nom des palettes Resultat.                                                */
     DEFV(genere_p,INIT(niveau_ROUGE,NIVEAU_UNDEF));
     DEFV(genere_p,INIT(niveau_VERTE,NIVEAU_UNDEF));
     DEFV(genere_p,INIT(niveau_BLEUE,NIVEAU_UNDEF));
                                        /* Niveaux chromatiques dans le systeme {R,V,B}.                                             */
     /*..............................................................................................................................*/
     GET_ARGUMENTSf(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("paletteA1=""pA1=",nom_paletteA1);
                         GET_ARGUMENT_C("paletteA2=""pA2=",nom_paletteA2);
                         GET_ARGUMENT_C("paletteR=""pR=",nom_paletteR);
                         GET_ARGUMENT_L("COMP1=""ROUGE=""TEINT=",files_____manipuler_la_composante_COMP1_d_une_palette_de_couleurs);
                         GET_ARGUMENT_L("COMP2=""VERTE=""LUMIN=",files_____manipuler_la_composante_COMP2_d_une_palette_de_couleurs);
                         GET_ARGUMENT_L("COMP3=""BLEUE=""SATUR=",files_____manipuler_la_composante_COMP3_d_une_palette_de_couleurs);
                         )
                    );

     PRODUIT_DE_DEUX_LISTES(ROUGE);
                                        /* Generation de la liste de substitution ROUGE,                                             */
     PRODUIT_DE_DEUX_LISTES(VERTE);
                                        /* Generation de la liste de substitution VERTE,                                             */
     PRODUIT_DE_DEUX_LISTES(BLEUE);
                                        /* Generation de la liste de substitution BLEUE.                                             */

     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.