/*************************************************************************************************************************************/ /* */ /* C O N V E R S I O N ' NIVEAU ' E N ' RVB ' : */ /* */ /* */ /* Author of '$xrv/N_RVB.01$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20170605131612). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* V A L E U R S I M P L I C I T E S D E S P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ #define FACTEUR_D_HOMOTHETIE_DES_COULEURS \ FU #define CONSTANTE_DE_TRANSLATION_DES_COULEURS \ FZERO /* Une transformation du type 'A.c+B' sera appliquee aux couleurs... */ /* Indique si les facteurs d'homothetie apres ajustement automatique doivent etre listes. */ #define LES_NIVEAUX_SONT_DENORMALISES \ VRAI \ /* Afin de pouvoir introduire des niveaux denormalises. */ #define PONDERATION_ROUGE_IMPLICITE \ FZERO #define PONDERATION_VERTE_IMPLICITE \ FZERO #define PONDERATION_BLEUE_IMPLICITE \ FZERO /* Ponderation de selection des valeurs apres transformation. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E S F I C H I E R S : */ /* */ /*************************************************************************************************************************************/ #include xrv/ARITHMET.1d.I" /* Passage a l'allocation dynamique le 20060214135438... */ #include xrv/ARITHMET.21.I" #include xrv/champs_5.41.I" #define NIVEAU_IMPLICITE \ FLOT__BLANC gGENERATION_D_UN_FICHIER(fichier_LISTE_NIVEAU,liste_initiale_des_NIVEAU); /* Definition du fichier de listes des fausses couleurs (excluant les vraies couleurs). */ /* */ /* ATTENTION, les couleurs des points a visualiser doivent etre definies ainsi : */ /* */ /* NIVEAU E [NOIR,BLANC] */ /* */ #define ELEMENT_DU_FICHIER_LISTE_NIVEAU(index) \ gELEMENT_DU_FICHIER(liste_initiale_des_NIVEAU,index) \ /* Acces a un element courant du fichier de valeurs {N}. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C O N V E R S I O N ' NIVEAU ' E N ' RVB ' : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock #include xrv/ARITHMET.22.I" #include xci/valeurs.03.I" DEFV(CHAR,INIC(POINTERc(nom_paletteA),NOM_PIPE)); /* Nom de la palette a utiliser en cas de l'utilisation des fausses couleurs. */ DEFV(Local,DEFV(Float,INIT(facteur_d_homothetie_des_couleurs,FACTEUR_D_HOMOTHETIE_DES_COULEURS))); DEFV(Local,DEFV(Float,INIT(constante_de_translation_des_couleurs,CONSTANTE_DE_TRANSLATION_DES_COULEURS))); /* Une transformation du type 'A.c+B' sera appliquee aux couleurs... */ /* Indique si les facteurs d'homothetie apres ajustement automatique doivent etre listes. */ DEFV(Local,DEFV(Logical,INIT(les_niveaux_sont_denormalises,LES_NIVEAUX_SONT_DENORMALISES))); /* Afin de pouvoir introduire des niveaux denormalises. */ DEFV(Float,INIT(ponderation_ROUGE,PONDERATION_ROUGE_IMPLICITE)); DEFV(Float,INIT(ponderation_VERTE,PONDERATION_VERTE_IMPLICITE)); DEFV(Float,INIT(ponderation_BLEUE,PONDERATION_BLEUE_IMPLICITE)); /* Ponderation de selection des valeurs apres transformation. */ /*..............................................................................................................................*/ #include xrv/champs_5.1A.I" #include xrv/N_RVB.01.I" GET_ARGUMENTS_(nombre_d_arguments ,BLOC(PROCESS_ARGUMENT_I("nombre_elements=""ne=",nombre_d_elements ,BLOC(VIDE;) ,BLOC(Bblock PRINT_AVERTISSEMENT("'ne=' doit etre defini avant toute entree de fichiers"); Eblock ) ); PROCESS_ARGUMENTS_DE_DEFINITION_DES_FICHIERS_01; GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA); GET_ARGUMENT_L("niveaux_denormalises=""ndn=",les_niveaux_sont_denormalises); GET_ARGUMENT_N("niveaux_normalises=""nn=",les_niveaux_sont_denormalises); PROKESF_ARGUMENT_FICHIER("LISTE_NIVEAU=" ,fichier_LISTE_NIVEAU ,liste_initiale_des_NIVEAU ,NIVEAU_IMPLICITE ,lTRANSFORMAT_0d ,iGENERATION_D_UN_FICHIER ); GET_ARGUMENT_F("pr=""pR=""Pond1=",ponderation_ROUGE); GET_ARGUMENT_F("pv=""pV=""Pond2=",ponderation_VERTE); GET_ARGUMENT_F("pb=""pB=""Pond3=",ponderation_BLEUE); GET_ARGUMENT_L("editer_messages_erreur=""eme=",PASSAGE_HLS_RVB_____editer_les_messages_d_erreur); PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_3; PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_1; PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_5; /* Cette procedure fut introduite le 20211005104637... */ ) ); CALS(Iload_palette_de_couleurs(nom_paletteA,ESPACE_DE_COULEURS_RVB)); /* Chargement de la palette de couleurs... */ gOPERATION_SUR_LES_FICHIERS(BLOC( DEFV(Float,INIT(valeur_NIVEAU,ELEMENT_DU_FICHIER_LISTE_NIVEAU(index))); DEFV(Float,INIT(valeur_NIVEAU_denormalisee,FLOT__UNDEF)); /* Recuperation de la valeur {Niveau} courante dans le fichier. */ DEFV(Float,INIT(niveau_ROUGE,FLOT__UNDEF)); DEFV(Float,INIT(niveau_VERTE,FLOT__UNDEF)); DEFV(Float,INIT(niveau_BLEUE,FLOT__UNDEF)); /* Recuperation des valeurs {Hue,Luminance,Saturation} courantes dans les fichiers. */ DENORMALISATION_DU_NIVEAU_COURANT(valeur_NIVEAU_denormalisee,valeur_NIVEAU); SUBSTITUTION(L_SUBSTITUTION_ROUGE); EGAL(niveau_ROUGE,FLOT(Nsubstitution(GENP(valeur_NIVEAU_denormalisee)))); SUBSTITUTION(L_SUBSTITUTION_VERTE); EGAL(niveau_VERTE,FLOT(Nsubstitution(GENP(valeur_NIVEAU_denormalisee)))); SUBSTITUTION(L_SUBSTITUTION_BLEUE); EGAL(niveau_BLEUE,FLOT(Nsubstitution(GENP(valeur_NIVEAU_denormalisee)))); /* Conversion de {Niveau} en {ROUGE,VERTE,BLEUE}. */ ) ,LIZ3(ponderation_ROUGE,niveau_ROUGE ,ponderation_VERTE,niveau_VERTE ,ponderation_BLEUE,niveau_BLEUE ) ,EDITER_LA_VALEUR_RESULTANTE_DANS_gOPERATION_SUR_LES_FICHIERS ,nombre_d_exemplaires_du_resultat_de_l_operation_sur_les_valeurs_courantes ); /* Conversion HLS-RVB. */ lGENERATION_D_UN_FICHIER(liste_initiale_des_NIVEAU,NIVEAU_IMPLICITE); RETU_Commande; Eblock ECommande