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