/*************************************************************************************************************************************/ /* */ /* G E S T I O N D E S C O U L E U R S : */ /* */ /* */ /* Author of '$xrv/particule.51$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 20001218133336). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 : */ /* */ /*************************************************************************************************************************************/ Bblock Test(IFNE_chaine(nom_paletteA,NOM_PIPE)) Bblock DEFV(genere_Float,INIT(niveau,FLOT__NIVEAU_UNDEF)); /* Niveau de fausse couleur... */ CALS(Iload_palette_de_couleurs(nom_paletteA,ESPACE_DE_COULEURS_RVB)); /* Chargement de la palette de couleurs... */ PUSH_FILTRAGE; /* Sauvegarde de l'etat courant du filtrage des niveaux. */ SET_FILTRAGE(ACTIF); /* On autorise tous les filtrages afin d'avoir la 'SUBSTITUTION'. */ PUSH_SUBSTITUTION; /* Sauvegarde de la substitution courante. */ Komp(numero_des_points,nombre_d_iterations) Bblock EGAL(niveau ,AXPB(facteur_d_homothetie_des_couleurs ,OPC1(EST_VRAI(les_niveaux_sont_denormalises) ,NEUT ,__DENORMALISE_NIVEAU_AVEC_MODULO____ ,ACCES_LISTE(liste_initiale_des_NIVEAU,numero_des_points) ) ,constante_de_translation_des_couleurs ) ); /* J'ai remplace '__DENORMALISE_NIVEAU(...)' par '__DENORMALISE_NIVEAU_AVEC_MODULO____(...)' */ /* le 20131205162300 car, en effet, cette derniere procedure a l'avantage de repeter modulo */ /* les niveaux et donc de periodiser des palettes, a condition donc que les niveaux ne */ /* soient pas dans [0,1], mais dans [0,N] (avec N=2, 3,...). */ Test(IFEXff(niveau,FLOT__NOIR,FLOT__BLANC)) Bblock PRINT_ERREUR("un niveau de fausse couleur est hors de [NOIR,BLANC]"); CAL1(Prer1("il vaut %f et va donc etre seuille\n",niveau)); EGAL(niveau,TRNP(niveau)); CAL1(Prer1("ce qui donne %f\n",niveau)); Eblock ATes Bblock Eblock ETes SUBSTITUTION(L_SUBSTITUTION_ROUGE); EGAL(ACCES_LISTE(liste_initiale_des_ROUGE,numero_des_points) ,FLOT(Nsubstitution(GENP(niveau))) ); SUBSTITUTION(L_SUBSTITUTION_VERTE); EGAL(ACCES_LISTE(liste_initiale_des_VERTE,numero_des_points) ,FLOT(Nsubstitution(GENP(niveau))) ); SUBSTITUTION(L_SUBSTITUTION_BLEUE); EGAL(ACCES_LISTE(liste_initiale_des_BLEUE,numero_des_points) ,FLOT(Nsubstitution(GENP(niveau))) ); Eblock EKom PULL_SUBSTITUTION; PULL_FILTRAGE; /* Et restauration des conditions initiales... */ EGAL(facteur_d_homothetie_des_couleurs,FACTEUR_D_HOMOTHETIE_DES_COULEURS); EGAL(constante_de_translation_des_couleurs,CONSTANTE_DE_TRANSLATION_DES_COULEURS); /* Une transformation du type '1.c+0' sera appliquee aux couleurs... */ Eblock ATes Bblock Eblock ETes Eblock