/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        S U B S T I T U T I O N   D ' U N   F I C H I E R   N U M E R I Q U E  :                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrv/substitue.01$K' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 19990303153615).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
                                        /* Le 20080311163750, fut supprime :                                                         */
                                        /*                                                                                           */
                                        /*                  @define   PRAGMA_CL_____MODULE_NON_OPTIMISABLE                           */
                                        /*                                                                                           */
                                        /* qui semblait inutile...                                                                   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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   SUBSTITUTION_COURANTE                                                                                                         \
                    L_SUBSTITUTION_NEUTRE                                                                                               \
                                        /* Designation de la liste de substitution courante ; la liste 'NEUTRE'                      */ \
                                        /* etant choisie a priori...                                                                 */
#define   LISSAGE_DES_LISTES_DE_SUBSTITUTION                                                                                            \
                    FAUX                                                                                                                \
                                        /* Afin de savoir s'il faut lisser ('VRAI') ou pas ('FAUX') la liste de SUBSTITUTION         */
                                        /* courante lors de sa conversion...                                                         */
#define   NOMBRE_DE_PASSES_DE_LISSAGE_DES_LISTES_DE_SUBSTITUTION                                                                        \
                    UN                                                                                                                  \
                                        /* Indique alors le nombre de passes de lissage ("plus on lisse, plus c'est lisse...").      */
#define   PAS_DE_LISSAGE_DES_LISTES_DE_SUBSTITUTION                                                                                     \
                    PAS_COULEURS                                                                                                        \
                                        /* Pas des couleurs pour les fonctions 'nPREK(...)' et 'nSUCK(...)' lors du lissage.         */

#define   BORNE_INFERIEURE                                                                                                              \
                    COORDONNEE_BARYCENTRIQUE_MINIMALE
#define   BORNE_SUPERIEURE                                                                                                              \
                    COORDONNEE_BARYCENTRIQUE_MAXIMALE
                                        /* Definition des bornes a priori.                                                           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D U   F I C H I E R  :                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrv/ARITHMET.1d.I"
                                        /* Passage a l'allocation dynamique le 20060214193602...                                     */
#include  xrv/ARITHMET.21.I"
#include  xrv/champs_5.41.I"

#define   VALEUR_IMPLICITE                                                                                                              \
                    FZERO

gGENERATION_D_UN_FICHIER(fichier_des_valeurs,liste_des_valeurs);
                                        /* Definition en memoire du fichier.                                                         */

#define   ELEMENT_DU_FICHIER(index)                                                                                                     \
                    gELEMENT_DU_FICHIER(liste_des_valeurs,index)                                                                        \
                                        /* Acces a un element courant du fichier.                                                    */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        S U B S T I T U T I O N   D ' U N   F I C H I E R   N U M E R I Q U E  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
#include  xrv/ARITHMET.22.I"
#include  xci/valeurs.03.I"

     DEFV(Logical,INIT(lissage_des_listes_de_SUBSTITUTION,LISSAGE_DES_LISTES_DE_SUBSTITUTION));
                                        /* Afin de savoir s'il faut lisser ('VRAI') ou pas ('FAUX') la liste de SUBSTITUTION         */
                                        /* courante lors de sa conversion...                                                         */
     DEFV(Int,INIT(nombre_de_passes_de_lissage_des_listes_de_SUBSTITUTION,NOMBRE_DE_PASSES_DE_LISSAGE_DES_LISTES_DE_SUBSTITUTION));
                                        /* Indique alors le nombre de passes de lissage ("plus on lisse, plus c'est lisse...").      */
     DEFV(Int,INIT(pas_de_lissage_des_listes_de_SUBSTITUTION,PAS_DE_LISSAGE_DES_LISTES_DE_SUBSTITUTION));
                                        /* Pas des couleurs pour les fonctions 'nPREK(...)' et 'nSUCK(...)' lors du lissage.         */
     DEFV(CHAR,INIT(POINTERc(nom_substitution),NOM_UNDEF));
                                        /* Nom de la liste de substitution recherchee.                                               */
     DEFV(CHAR,INIC(POINTERc(nom_paletteA),NOM_PIPE));
                                        /* Nom de la palette Argument a utiliser au cas ou la 'substitution_courante' serait         */
                                        /* 'L_SUBSTITUTION_ROUGE', 'L_SUBSTITUTION_VERTE' ou encore 'L_SUBSTITUTION_BLEUE'.          */
     DEFV(Int,INIT(substitution_courante,SUBSTITUTION_COURANTE));
                                        /* A priori, on ne substitue pas...                                                          */
     DEFV(genere_Float,DTb1(liste_flottante_approximee_de_substitution_courante,COULEURS));
                                        /* Cette table contient la liste de SUBSTITUTION courante convertie en 'genere_Float' et     */
                                        /* mise dans [COORDONNEE_BARYCENTRIQUE_MINIMALE,COORDONNEE_BARYCENTRIQUE_MAXIMALE], puis     */
                                        /* eventuellement lissee par approximation.                                                  */

     DEFV(Float,INIT(borne_inferieure,BORNE_INFERIEURE));
     DEFV(Float,INIT(borne_superieure,BORNE_SUPERIEURE));
                                        /* Definition des bornes a priori.                                                           */
     /*..............................................................................................................................*/
#include  xrv/champs_5.1A.I"
                                        /* Ceci fut introduit le 20070103174252...                                                   */

     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;

                         PROKESF_ARGUMENT_FICHIER("fichier="
                                                 ,fichier_des_valeurs
                                                 ,liste_des_valeurs
                                                 ,VALEUR_IMPLICITE
                                                 ,lTRANSFORMAT_0d
                                                 ,iGENERATION_D_UN_FICHIER
                                                  );

                         GET_ARGUMENT_L("lissage=",lissage_des_listes_de_SUBSTITUTION);
                         GET_ARGUMENT_I("passes=",nombre_de_passes_de_lissage_des_listes_de_SUBSTITUTION);
                         GET_ARGUMENT_I("pl=""pas_lissage=",pas_de_lissage_des_listes_de_SUBSTITUTION);
                         GET_ARGUMENT_C("substitution=""s=",nom_substitution);
                         GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA);

                         GET_ARGUMENT_F("vd=""vD=",borne_inferieure);
                         GET_ARGUMENT_F("va=""vA=",borne_superieure);

                         PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_3;
                                        /* Cette procedure fut introduite le 20070103174252...                                       */

                         PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_1;
                                        /* Cette procedure fut introduite le 20061226192741...                                       */

                         PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_5;
                                        /* Cette procedure fut introduite le 20211005105902...                                       */
                         )
                    );

     Test(IFNE_chaine(nom_paletteA,NOM_PIPE))
          Bblock
          CALS(Iload_palette_de_couleurs(nom_paletteA,ESPACE_DE_COULEURS_RVB));
          Eblock
     ATes
          Bblock
          Eblock
     ETes

     Test(IFNE_chaine(nom_substitution,NOM_UNDEF))
          Bblock
          RECHERCHE_D_UNE_LISTE_DE_SUBSTITUTION(nom_substitution,substitution_courante,substitution_courante);
                                        /* Tentative de recherche de la substitution demandee...                                     */
          Eblock
     ATes
          Bblock
          Eblock
     ETes

     PUSH_SUBSTITUTION;
                                        /* Sauvegarde de la SUBSTITUTION courante.                                                   */
     SUBSTITUTION(substitution_courante);
                                        /* Mise en place de la SUBSTITUTION demandee.                                                */
     PUSH_FILTRAGE;
                                        /* Sauvegarde de l'etat courant du filtrage des niveaux.                                     */
     SET_FILTRAGE(ACTIF);
                                        /* Et on active le filtrage puisque la fonction 'Nsubstitution(...)' va etre utilisee        */
                                        /* ci-apres dans 'CONVERSION_FLOTTANTE_D_UNE_LISTE_DE_SUBSTITUTION(...)'.                    */

     CONVERSION_FLOTTANTE_D_UNE_LISTE_DE_SUBSTITUTION(liste_flottante_approximee_de_substitution_courante
                                                     ,COORDONNEE_BARYCENTRIQUE_MINIMALE
                                                     ,COORDONNEE_BARYCENTRIQUE_MAXIMALE
                                                     ,lissage_des_listes_de_SUBSTITUTION
                                                     ,nombre_de_passes_de_lissage_des_listes_de_SUBSTITUTION
                                                     ,pas_de_lissage_des_listes_de_SUBSTITUTION
                                                      );

     PULL_FILTRAGE;
     PULL_SUBSTITUTION;
                                        /* Et restauration des conditions initiales...                                               */

     gOPERATION_SUR_LES_FICHIERS(BLOC(
                                      DEFV(Float,INIT(valeur_courante,ELEMENT_DU_FICHIER(index)));
                                        /* Recuperation de la valeur courante dans le fichier.                                       */
                                      )
                                ,gSUBSTITUTION_D_UNE_COORDONNEE_BARYCENTRIQUE(valeur_courante
                                                                             ,VRAI
                                                                             ,liste_flottante_approximee_de_substitution_courante
                                                                             ,borne_inferieure
                                                                             ,borne_superieure
                                                                              )
                                ,EDITER_LA_VALEUR_RESULTANTE_DANS_gOPERATION_SUR_LES_FICHIERS
                                ,nombre_d_exemplaires_du_resultat_de_l_operation_sur_les_valeurs_courantes
                                 );
                                        /* Valeur absolue du fichier argument.                                                       */

     lGENERATION_D_UN_FICHIER(liste_des_valeurs,VALEUR_IMPLICITE);

     RETU_Commande;
     Eblock
ECommande



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.