/*************************************************************************************************************************************/ /* */ /* P R I M I T I V E S D E T R A I T E M E N T D E S */ /* N I V E A U X S O U S F O R M E D E " F O N C T I O N S " : */ /* */ /* */ /* Definition : */ /* */ /* Dans ce fichier se trouvent toutes les */ /* primitives de traitement des niveaux d'une */ /* image raster ; elles sont exprimees */ /* sous forme de fonctions ce qui fait */ /* que la duree d'execution par rapport */ /* aux "defines" est tres allongee... */ /* */ /* */ /* Author of '$xiin/fonction.1$DEF' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 19870000000000). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* S U B S T I T U T I O N D ' U N N I V E A U : */ /* */ /*************************************************************************************************************************************/ #define INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_XX,fonction_de_substitution,modification_de_la_liste) \ Bblock \ CLEAR_LISTE_INVERSE_DE_SUBSTITUTION(L_SUBSTITUTION_XX); \ /* Initialisation preliminaire a 'NIVEAU_UNDEF' des listes "inverses". */ \ BoIn(index,NOIR,BLANC,PAS_COULEURS) \ Bblock \ EGAL(ACCES_listes_de_substitution(L_SUBSTITUTION_XX,index) \ ,fonction_de_substitution(index) \ ); \ CALCUL_LISTE_INVERSE_DE_SUBSTITUTION(L_SUBSTITUTION_XX,index); \ /* Puis initialisation des listes "directes" et "inverses", */ \ EGAL(ACCES_blocage_des_listes_de_substitution(L_SUBSTITUTION_XX,index) \ ,modification_de_la_liste \ ); \ /* Ainsi que de la matrice des blocages de modification des listes "directes". */ \ Eblock \ EBoI \ Eblock \ /* Deplace de 'v $xiin/$xiin/fonction.1$FON 20110401185706' a ici le 20110401190030 pour */ \ /* etre utilisable dans 'v $ximf/aleatoires$DEF INITIALISATION_LISTES_DE_SUBSTITUTION'... */ #define INITIALISATION_LISTES_DE_SUBSTITUTION \ Bblock \ Test(EST_FAUX(init_substitution)) \ Bblock \ BoIn(index,NOIR,BLANC,PAS_COULEURS) \ Bblock \ AUTORISATION_DE_SUBSTITUTION_D_UN_NIVEAU(index); \ /* A priori, on autorise la substitution de tous les niveaux... */ \ Eblock \ EBoI \ \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_NEUTRE,fonction_neutre_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_01,fonction_01_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_02,fonction_02_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_11,fonction_11_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_12,fonction_12_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_13,fonction_13_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_14,fonction_14_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_21,fonction_21_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_22,fonction_22_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_23,fonction_23_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_24,fonction_24_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_25,fonction_25_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_26,fonction_26_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_27,fonction_27_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_28,fonction_28_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_31,fonction_31_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_32,fonction_32_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_33,fonction_33_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_34,fonction_34_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_35,fonction_35_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_36,fonction_36_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_37,fonction_37_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_38,fonction_38_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_39,fonction_39_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_3A,fonction_3A_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_3B,fonction_3B_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_3C,fonction_3C_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_3D,fonction_3D_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_3E,fonction_3E_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_3F,fonction_3F_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_3G,fonction_3G_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_FF,fonction_FF_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_FE,fonction_FE_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_FC,fonction_FC_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_F8,fonction_F8_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_F0,fonction_F0_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_E0,fonction_E0_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_C0,fonction_C0_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_80,fonction_80_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_ROUGE_BASIC,fonction_ROUGE_de_substitution,AUTORISE); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_VERTE_BASIC,fonction_VERTE_de_substitution,AUTORISE); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_BLEUE_BASIC,fonction_BLEUE_de_substitution,AUTORISE); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_VARIABLE,fonction_variable_de_substitution,AUTORISE); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_HISTOGRAMME,fonction_variable_de_substitution,AUTORISE); \ /* Introduit le 20081004123137... */ \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_SOLAR,fonction_SOLAR_de_substitution,INTERDIT); \ INITIALISATION_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_X_WINDOW,fonction_X_WINDOW_de_substitution,AUTORISE); \ \ EGAL(init_substitution,VRAI); \ /* Et on memorise que l'initialisation est faite... */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ /* Deplace de 'v $xiin/$xiin/fonction.1$FON 20110401185706' a ici le 20110401190030 pour */ \ /* etre utilisable dans 'v $ximf/aleatoires$DEF INITIALISATION_LISTES_DE_SUBSTITUTION'... */ #define BLANC_SOLAR \ MOCD \ /* Definition du niveau de blanc sur le SOLAR. */ #define NOIR_SOLAR \ NOIR \ /* Definition du niveau de noir sur le SOLAR. */ #define fonction_neutre_de_substitution(niveau) \ NEUT(niveau) \ /* Definition de la fonction standard ("1" pour "1")... */ #define fonction_01_de_substitution(niveau) \ NIVA(COND(EST_PAIR(ADD2(NIVR(NOIR) \ ,NIVR(NOIR) \ ) \ ) \ ,MOID(ADD2(NIVR(NOIR),NIVR(niveau))) \ ,MOIE(ADD2(NIVR(NOIR),NIVR(niveau))) \ ) \ ) \ /* Definition de la fonction de mise dans [NOIR,FRA2(BLANC)]. */ #define fonction_02_de_substitution(niveau) \ NIVA(COND(EST_PAIR(ADD2(NIVR(BLANC) \ ,NIVR(NOIR) \ ) \ ) \ ,MOID(ADD2(NIVR(BLANC),NIVR(niveau))) \ ,MOIE(ADD2(NIVR(BLANC),NIVR(niveau))) \ ) \ ) \ /* Definition de la fonction de mise dans [FRA2(BLANC),BLANC]. */ #define fonction_11_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA4(NIVR(niveau))) \ ,GRO0(FRA4(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [NOIR,FRA4(BLANC)]. */ #define fonction_12_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA4(NIVR(niveau))) \ ,GRO1(FRA4(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [FRA4(BLANC),FRA2(BLANC)]. */ #define fonction_13_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA4(NIVR(niveau))) \ ,GRO2(FRA4(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [FRA2(BLANC),GRO3(FRA4(BLANC))]. */ #define fonction_14_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA4(NIVR(niveau))) \ ,GRO3(FRA4(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO3(FRA4(BLANC)),BLANC]. */ #define fonction_21_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA8(NIVR(niveau))) \ ,GRO0(FRA8(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO0(FRA8(BLANC)),GRO1(FRA8(BLANC))]. */ #define fonction_22_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA8(NIVR(niveau))) \ ,GRO1(FRA8(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO1(FRA8(BLANC)),GRO2(FRA8(BLANC))]. */ #define fonction_23_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA8(NIVR(niveau))) \ ,GRO2(FRA8(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO2(FRA8(BLANC)),GRO3(FRA8(BLANC))]. */ #define fonction_24_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA8(NIVR(niveau))) \ ,GRO3(FRA8(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO3(FRA8(BLANC)),GRO4(FRA8(BLANC))]. */ #define fonction_25_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA8(NIVR(niveau))) \ ,GRO4(FRA8(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO4(FRA8(BLANC)),GRO5(FRA8(BLANC))]. */ #define fonction_26_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA8(NIVR(niveau))) \ ,GRO5(FRA8(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO5(FRA8(BLANC)),GRO6(FRA8(BLANC))]. */ #define fonction_27_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA8(NIVR(niveau))) \ ,GRO6(FRA8(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO6(FRA8(BLANC)),GRO7(FRA8(BLANC))]. */ #define fonction_28_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA8(NIVR(niveau))) \ ,GRO7(FRA8(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO7(FRA8(BLANC)),GRO8(FRA8(BLANC))]. */ #define fonction_31_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA16(NIVR(niveau))) \ ,GRO0(FRA16(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO0(FRA16(BLANC)),GRO1(FRA16(BLANC))]. */ #define fonction_32_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA16(NIVR(niveau))) \ ,GRO1(FRA16(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO1(FRA16(BLANC)),GRO2(FRA16(BLANC))]. */ #define fonction_33_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA16(NIVR(niveau))) \ ,GRO2(FRA16(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO2(FRA16(BLANC)),GRO3(FRA16(BLANC))]. */ #define fonction_34_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA16(NIVR(niveau))) \ ,GRO3(FRA16(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO3(FRA16(BLANC)),GRO4(FRA16(BLANC))]. */ #define fonction_35_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA16(NIVR(niveau))) \ ,GRO4(FRA16(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO4(FRA16(BLANC)),GRO5(FRA16(BLANC))]. */ #define fonction_36_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA16(NIVR(niveau))) \ ,GRO5(FRA16(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO5(FRA16(BLANC)),GRO6(FRA16(BLANC))]. */ #define fonction_37_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA16(NIVR(niveau))) \ ,GRO6(FRA16(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO6(FRA16(BLANC)),GRO7(FRA16(BLANC))]. */ #define fonction_38_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA16(NIVR(niveau))) \ ,GRO7(FRA16(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO7(FRA16(BLANC)),GRO8(FRA16(BLANC))]. */ #define fonction_39_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA16(NIVR(niveau))) \ ,GRO8(FRA16(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO8(FRA16(BLANC)),GRO9(FRA16(BLANC))]. */ #define fonction_3A_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA16(NIVR(niveau))) \ ,GRO9(FRA16(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO9(FRA16(BLANC)),GRO10(FRA16(BLANC))]. */ #define fonction_3B_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA16(NIVR(niveau))) \ ,GRO10(FRA16(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO10(FRA16(BLANC)),GRO11(FRA16(BLANC))]. */ #define fonction_3C_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA16(NIVR(niveau))) \ ,GRO11(FRA16(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO11(FRA16(BLANC)),GRO12(FRA16(BLANC))]. */ #define fonction_3D_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA16(NIVR(niveau))) \ ,GRO12(FRA16(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO12(FRA16(BLANC)),GRO13(FRA16(BLANC))]. */ #define fonction_3E_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA16(NIVR(niveau))) \ ,GRO13(FRA16(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO13(FRA16(BLANC)),GRO14(FRA16(BLANC))]. */ #define fonction_3F_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA16(NIVR(niveau))) \ ,GRO14(FRA16(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO14(FRA16(BLANC)),GRO15(FRA16(BLANC))]. */ #define fonction_3G_de_substitution(niveau) \ NIVA(ADD2(GRO1(FRA16(NIVR(niveau))) \ ,GRO15(FRA16(COULEURS)) \ ) \ ) \ /* Definition de la fonction de mise dans [GRO15(FRA16(BLANC)),GRO16(FRA16(BLANC))]. */ #define fonction_FF_de_substitution(niveau) \ NIVA(FRA1(FRA1(NIVR(niveau)))) \ /* Definition de la fonction de mise dans [NOIR,FRA1(FRA1(BLANC))]. */ #define fonction_FE_de_substitution(niveau) \ NIVA(FRA1(FRA2(NIVR(niveau)))) \ /* Definition de la fonction de mise dans [NOIR,FRA1(FRA2(BLANC))]. */ #define fonction_FC_de_substitution(niveau) \ NIVA(FRA1(FRA4(NIVR(niveau)))) \ /* Definition de la fonction de mise dans [NOIR,FRA1(FRA4(BLANC))]. */ #define fonction_F8_de_substitution(niveau) \ NIVA(FRA1(FRA8(NIVR(niveau)))) \ /* Definition de la fonction de mise dans [NOIR,FRA1(FRA8(BLANC))]. */ #define fonction_F0_de_substitution(niveau) \ NIVA(FRA1(FRA16(NIVR(niveau)))) \ /* Definition de la fonction de mise dans [NOIR,FRA1(FRA16(BLANC))]. */ #define fonction_E0_de_substitution(niveau) \ NIVA(FRA2(FRA16(NIVR(niveau)))) \ /* Definition de la fonction de mise dans [NOIR,FRA2(FRA16(BLANC))]. */ #define fonction_C0_de_substitution(niveau) \ NIVA(FRA4(FRA16(NIVR(niveau)))) \ /* Definition de la fonction de mise dans [NOIR,FRA4(FRA16(BLANC))]. */ #define fonction_80_de_substitution(niveau) \ NIVA(FRA8(FRA16(NIVR(niveau)))) \ /* Definition de la fonction de mise dans [NOIR,FRA8(FRA16(BLANC))]. */ #define fonction_ROUGE_de_substitution(niveau) \ fonction_neutre_de_substitution(niveau) \ /* Definition de la fonction ROUGE initialisee a l'etat neutre. */ #define fonction_VERTE_de_substitution(niveau) \ fonction_neutre_de_substitution(niveau) \ /* Definition de la fonction VERTE initialisee a l'etat neutre. */ #define fonction_BLEUE_de_substitution(niveau) \ fonction_neutre_de_substitution(niveau) \ /* Definition de la fonction BLEUE initialisee a l'etat neutre. */ #define fonction_variable_de_substitution(niveau) \ fonction_neutre_de_substitution(niveau) \ /* Definition de la fonction variable initialisee a l'etat neutre. */ #define fonction_SOLAR_de_substitution(niveau) \ ADD2(INTE(MUL2(DIVI(FLOT(NIVR(niveau)) \ ,FLOT(NIVR(BLANC)) \ ) \ ,FLOT(SOUS(BLANC_SOLAR,NOIR_SOLAR)) \ ) \ ) \ ,NOIR_SOLAR \ ) \ /* Definition de la fonction d'acces au SOLAR. */ #define fonction_X_WINDOW_de_substitution(niveau) \ fonction_neutre_de_substitution(niveau) \ /* Definition de la fonction X_WINDOW initialisee a l'etat neutre. */ #define CLEAR_LISTE_INVERSE_DE_SUBSTITUTION(L_SUBSTITUTION_XX) \ Bblock \ BoIn(niveau,NOIR,BLANC,PAS_COULEURS) \ Bblock \ EGAL(ACCES_listes_inverses_de_substitution(L_SUBSTITUTION_XX,niveau) \ ,NIVEAU_UNDEF \ ); \ Eblock \ EBoI \ Eblock \ /* Initialisation preliminaire a 'NIVEAU_UNDEF' des listes "inverses". */ #define CALCUL_LISTE_INVERSE_DE_SUBSTITUTION(L_SUBSTITUTION_XX,niveau) \ Bblock \ EGAL(ACCES_listes_inverses_de_substitution(L_SUBSTITUTION_XX \ ,ACCES_listes_de_substitution(L_SUBSTITUTION_XX,niveau) \ ) \ ,niveau \ ); \ Eblock \ /* Puis initialisation d'un element de liste "inverse" a partir d'un */ \ /* element de liste "directe". */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A S S A G E D E S I M A G E S A L A L I S T E */ /* D E S U B S T I T U T I O N V A R I A B L E E T I N V E R S E M E N T : */ /* */ /*************************************************************************************************************************************/ #define IMAGE_VERS_LISTE_DE_SUBSTITUTION(niveau,imageA,X,Y) \ Bblock \ MODIFICATION_LISTE_DE_SUBSTITUTION(niveau \ ,load_point_valide(imageA,X,Y) \ ); \ Eblock \ /* L_SUBSTITUTION_VARIABLE(niveau) <-- imageA(X,Y). */ #define LISTE_DE_SUBSTITUTION_VERS_IMAGE(imageR,X,Y,Vf,niveau) \ Bblock \ store_point_valide(ACCES_listes_de_substitution(L_SUBSTITUTION_VARIABLE,niveau) \ ,imageR \ ,X,Y \ ,Vf \ ); \ Eblock \ /* ImageR(X,Y) <-- L_SUBSTITUTION_VARIABLE(niveau). */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I D E N T I F I C A T I O N D ' U N E L I S T E D E S U B S T I T U T I O N */ /* P A R S O N N O M E T N O N P A R S O N N U M E R O : */ /* */ /* */ /* Utilisation : */ /* */ /* RECHERCHE_D_UNE_LISTE_DE_SUBSTITUTION(liste_cherchee,numero,liste_par_defaut); */ /* */ /* ou : */ /* */ /* 'liste_cherchee' : nom (alphanumerique) de la liste recherchee, */ /* 'numero' : numero renvoye lorsque la liste a ete trouvee (ou sinon, */ /* donne 'liste_par_defaut'). */ /* */ /* */ /*************************************************************************************************************************************/ #define RECHERCHE_LISTE_DE_SUBSTITUTION(liste_courante,liste_associee,liste_cherchee,numero) \ Bblock \ Test(EST_FAUX(on_a_trouve_la_liste_de_substitution)) \ Bblock \ Test(IFOU(IFEQ_chaine(liste_cherchee,"liste_courante") \ ,IFEQ_chaine(liste_cherchee,"L_SUBSTITUTION`liste_courante") \ ) \ ) \ /* La possibilite d'omettre "L_SUBSTITUTION_" pour abreger le nom des listes de substitution */ \ /* a ete introduite le 20101029100412... */ \ Bblock \ EGAL(numero,liste_associee); \ /* Recuperation de la liste de substitution lorsqu'on l'a trouve... */ \ EGAL(on_a_trouve_la_liste_de_substitution,VRAI); \ /* Afin d'indiquer qu'on a trouve la liste cherchee... */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ /* Tentative d'identification d'une liste de substitution par comparaison a un nom courant. */ #define RECHERCHE_D_UNE_LISTE_DE_SUBSTITUTION(liste_cherchee,numero,liste_par_defaut) \ Bblock \ DEFV(Logical,INIT(on_a_trouve_la_liste_de_substitution,FAUX)); \ /* Afin de savoir si la liste de substitution recherchee existe... */ \ RECHERCHE_LISTE_DE_SUBSTITUTION(NEUTRE,L_SUBSTITUTION_NEUTRE,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(01,L_SUBSTITUTION_01,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(02,L_SUBSTITUTION_02,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(11,L_SUBSTITUTION_11,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(12,L_SUBSTITUTION_12,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(13,L_SUBSTITUTION_13,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(14,L_SUBSTITUTION_14,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(21,L_SUBSTITUTION_21,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(22,L_SUBSTITUTION_22,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(23,L_SUBSTITUTION_23,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(24,L_SUBSTITUTION_24,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(25,L_SUBSTITUTION_25,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(26,L_SUBSTITUTION_26,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(27,L_SUBSTITUTION_27,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(28,L_SUBSTITUTION_28,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(31,L_SUBSTITUTION_31,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(32,L_SUBSTITUTION_32,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(33,L_SUBSTITUTION_33,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(34,L_SUBSTITUTION_34,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(35,L_SUBSTITUTION_35,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(36,L_SUBSTITUTION_36,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(37,L_SUBSTITUTION_37,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(38,L_SUBSTITUTION_38,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(39,L_SUBSTITUTION_39,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(3A,L_SUBSTITUTION_3A,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(3B,L_SUBSTITUTION_3B,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(3C,L_SUBSTITUTION_3C,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(3D,L_SUBSTITUTION_3D,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(3E,L_SUBSTITUTION_3E,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(3F,L_SUBSTITUTION_3F,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(3G,L_SUBSTITUTION_3G,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(FF,L_SUBSTITUTION_FF,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(FE,L_SUBSTITUTION_FE,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(FC,L_SUBSTITUTION_FC,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(F8,L_SUBSTITUTION_F8,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(F0,L_SUBSTITUTION_F0,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(E0,L_SUBSTITUTION_E0,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(C0,L_SUBSTITUTION_C0,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(80,L_SUBSTITUTION_80,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(ROUGE,L_SUBSTITUTION_ROUGE_BASIC,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(VERTE,L_SUBSTITUTION_VERTE_BASIC,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(BLEUE,L_SUBSTITUTION_BLEUE_BASIC,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(VARIABLE,L_SUBSTITUTION_VARIABLE,liste_cherchee,numero); \ RECHERCHE_LISTE_DE_SUBSTITUTION(HISTOGRAMME,L_SUBSTITUTION_HISTOGRAMME,liste_cherchee,numero); \ /* Introduit le 20081004123309... */ \ RECHERCHE_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_SOLAR,L_SUBSTITUTION_SOLAR,liste_cherchee,numero); \ \ Test(EST_FAUX(on_a_trouve_la_liste_de_substitution)) \ Bblock \ Test(IL_FAUT(RECHERCHE_D_UNE_LISTE_DE_SUBSTITUTION_____signaler_erreurs)) \ Bblock \ PRINT_ERREUR("la liste de SUBSTITUTION demandee n'existe pas"); \ CAL1(Prer1("il s'agissait de '%s'.\n",liste_cherchee)); \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ \ EGAL(numero,liste_par_defaut); \ /* Enfin, on force la substitution precisee par defaut. */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ /* Tentative d'identification d'une liste de substitution par comparaison a l'ensemble */ \ /* des listes de 'SUBSTITUTION' disponibles et d'acces "autorise" (c'est ainsi que la */ \ /* liste 'L_SUBSTITUTION_X_WINDOW' ne figure pas ici...). */