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