/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E D I T I O N   D ' U N   H I S T O G R A M M E   E N   B A S   D ' U N E   I M A G E  :                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/histogramme$K' :                                                                                           */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1987??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/substitue.01.I"
                                        /* Introduit le 20081004123925...                                                            */

#define   FACTEUR_D_ECHELLE_DE_LA_HAUTEUR                                                                                               \
                    UN                                                                                                                  \
                                        /* Facteur d'echelle de la hauteur de la mire de barres par defaut.                          */ \
                                        /*                                                                                           */ \
                                        /* Le 20081006152838, la valeur par defaut est passee de 'UN' a 'QUATRE', cette derniere     */ \
                                        /* valeur mettant mieux en valeur la forme de l'histogramme...                               */ \
                                        /*                                                                                           */ \
                                        /* Le 20081008094226 je suis revenu a 'UN' a cause de 'v $xiii/vecteurs$DEF 20081007181725'. */

#define   AFFICHER_L_HISTOGRAMME_SEUL                                                                                                   \
                    FAUX                                                                                                                \
                                        /* Doit-on afficher l'histogramme seul ('VRAI') ou en superposition avec l'image             */ \
                                        /* correspondante ('FAUX') ? Ceci fut introduit le 20081006155250...                         */

#define   EDITION_ALPHA_NUMERIQUE                                                                                                       \
                    FAUX                                                                                                                \
                                        /* Doit-on editer l'histogramme sous une forme alpha-numerique ('VRAI') ou bien sous la      */ \
                                        /* forme d'une image ('FAUX') ?                                                              */
#define   EDITER_L_SUBSTITUTION_HISTOGRAMME                                                                                             \
                    FAUX                                                                                                                \
                                        /* Si 'IL_FAUT(edition_alpha_numerique)' doit-on editer ('VRAI') ou pas ('FAUX') la liste    */ \
                                        /* 'L_SUBSTITUTION_HISTOGRAMME' (ceci fut introduit le 20081005121404) ?                     */
#define   EDITER_TOUTES_LES_INFORMATIONS                                                                                                \
                    VRAI                                                                                                                \
                                        /* Doit-on editer toutes les informations ('VRAI') ou bien uniquement le niveau ('FAUX') ?   */ \
                                        /* Ceci fut introduit le 20130906102904...                                                   */
#define   EDITER_UNIQUEMENT_LE_NIVEAU_CORRESPONDANT_A_UN_SEUIL_DE_L_HISTOGRAMME_CUMULE                                                  \
                    FAUX
#define   SEUIL_DE_L_HISTOGRAMME_CUMULE                                                                                                 \
                    ZERO
#define   LE_SEUIL_DE_L_HISTOGRAMME_CUMULE_EST_UN_POURCENTAGE                                                                           \
                    VRAI
#define   POURCENTAGE_DU_SEUIL_DE_L_HISTOGRAMME_CUMULE                                                                                  \
                    FZERO
                                        /* Si 'IL_FAUT(edition_alpha_numerique)' doit-on n'editer que le niveau correspondant a      */
                                        /* certain seuil de l'histogramme cumule ('VRAI') ou tous les niveaux ('FAUX') ? Ceci fut    */
                                        /* introduit le 20090601184030. La possibilite d'utiliser un pourcentage (ce qui est plus    */
                                        /* souple puisque ne dependant pas de '$formatI'...) a ete introduite le 20090602113818...   */
                                        /* Le 20090602115718, 'LE_SEUIL_DE_L_HISTOGRAMME_CUMULE_EST_UN_POURCENTAGE' est passe de     */
                                        /* 'FAUX' a 'VRAI' car cette valeur par defaut est la plus pratique...                       */

#define   COMPATIBILITE_20151125                                                                                                        \
                    FAUX                                                                                                                \
                                        /* Permet de generer des histogrammes compatibles avec ceux qui furent generes avant le      */ \
                                        /* 20151125174538...                                                                         */
#define   NIVEAU_DU_LISERE                                                                                                              \
                    NOIR                                                                                                                \
                                        /* Niveau du lisere introduit le 20151125174538...                                           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/substitue.02.I"
                                        /* Introduit le 20081004123925...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E D I T I O N   D ' U N   H I S T O G R A M M E   E N   B A S   D ' U N E   I M A G E  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));

#include  xci/substitue.03.I"
                                        /* Introduit le 20081004123925...                                                            */

     DEFV(Positive,INIT(facteur_d_echelle_de_la_hauteur,FACTEUR_D_ECHELLE_DE_LA_HAUTEUR));
                                        /* Facteur d'echelle de la hauteur de la mire de barres par defaut.                          */

     DEFV(Logical,INIT(afficher_l_histogramme_seul,AFFICHER_L_HISTOGRAMME_SEUL));
                                        /* Doit-on afficher l'histogramme seul ('VRAI') ou en superposition avec l'image             */
                                        /* correspondante ('FAUX') ? Ceci fut introduit le 20081006155250...                         */

     DEFV(Logical,INIT(edition_alpha_numerique,EDITION_ALPHA_NUMERIQUE));
                                        /* Doit-on editer l'histogramme sous une forme alpha-numerique ('VRAI') ou bien sous la      */
                                        /* forme d'une image ('FAUX') ?                                                              */
     DEFV(Logical,INIT(editer_toutes_les_informations,EDITER_TOUTES_LES_INFORMATIONS));
                                        /* Doit-on editer toutes les informations ('VRAI') ou bien uniquement le niveau ('FAUX') ?   */
                                        /* Ceci fut introduit le 20130906102904...                                                   */
                                        /*                                                                                           */
                                        /* Cela n'a de sens evidemment que si :                                                      */
                                        /*                                                                                           */
                                        /*   IL_FAUT(editer_uniquement_le_niveau_correspondant_a_un_seuil_de_l_histogramme_cumule)   */
                                        /*                                                                                           */
     DEFV(Logical,INIT(editer_L_SUBSTITUTION_HISTOGRAMME,EDITER_L_SUBSTITUTION_HISTOGRAMME));
                                        /* Si 'IL_FAUT(edition_alpha_numerique)' doit-on editer ('VRAI') ou pas ('FAUX') la liste    */
                                        /* 'L_SUBSTITUTION_HISTOGRAMME' (ceci fut introduit le 20081005121404) ?                     */
     DEFV(Logical,INIT(editer_uniquement_le_niveau_correspondant_a_un_seuil_de_l_histogramme_cumule
                      ,EDITER_UNIQUEMENT_LE_NIVEAU_CORRESPONDANT_A_UN_SEUIL_DE_L_HISTOGRAMME_CUMULE
                       )
          );
     DEFV(Int,INIT(seuil_de_l_histogramme_cumule,SEUIL_DE_L_HISTOGRAMME_CUMULE));
     DEFV(Logical,INIT(le_seuil_de_l_histogramme_cumule_est_un_pourcentage,LE_SEUIL_DE_L_HISTOGRAMME_CUMULE_EST_UN_POURCENTAGE));
     DEFV(Float,INIT(pourcentage_du_seuil_de_l_histogramme_cumule,POURCENTAGE_DU_SEUIL_DE_L_HISTOGRAMME_CUMULE));
                                        /* Si 'IL_FAUT(edition_alpha_numerique)' doit-on n'editer que le niveau correspondant a      */
                                        /* certain seuil de l'histogramme cumule ('VRAI') ou tous les niveaux ('FAUX') ? Ceci fut    */
                                        /* introduit le 20090601184030. La possibilite d'utiliser un pourcentage (ce qui est plus    */
                                        /* souple puisque ne dependant pas de '$formatI'...) a ete introduite le 20090602113818...   */

     DEFV(Logical,INIT(compatibilite_20151125,COMPATIBILITE_20151125));
                                        /* Permet de generer des histogrammes compatibles avec ceux qui furent generes avant le      */
                                        /* 20151125174538...                                                                         */
     DEFV(genere_p,INIT(niveau_du_lisere,NIVEAU_DU_LISERE));
                                        /* Niveau du lisere introduit le 20151125174538...                                           */

     /*..............................................................................................................................*/
     GET_ARGUMENTSg(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_L("compatibilite_20151125=",compatibilite_20151125);

                         GET_ARGUMENT_L("SX_SY_SZ_____compatibilite_20070416=""compatibilite_20070416="
                                       ,SX_SY_SZ_____compatibilite_20070416
                                        );
                                        /* Parametre introduit le 20070416160926...                                                  */

                         GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);

                         GET_ARGUMENT_C("substitution=""s=",nom_substitution);
                                        /* La valeur la plus utile ici est :                                                         */
                                        /*                                                                                           */
                                        /*                  substitution=L_SUBSTITUTION_HISTOGRAMME                                  */
                                        /*                                                                                           */
                                        /* puisqu'alors l'histogramme est edite dans l'ordre des populations croissantes des         */
                                        /* niveaux (qui correspond aussi a ce que donne de plus "editer_substitution=VRAI").         */

                         GET_ARGUMENT_I("echelle_hauteur=""hauteur=""h=",facteur_d_echelle_de_la_hauteur);
                         GET_ARGUMENT_I("hauteur_mire=""hmire=""hm="
                                       ,Ihistogramme______hauteur_de_la_mire_de_barres_situee_a_la_base_de_l_histogramme
                                        );
                                        /* Parametre introduit le 20081006113950...                                                  */
                         GET_ARGUMENT_L("renormaliser_hauteur_maximum=""rhm="
                                       ,Ihistogramme______renormaliser_la_hauteur_de_la_mire_de_barres_par_rapport_au_maximum
                                        );
                         GET_ARGUMENT_F("facteur_renormalisation=""fr="
                                       ,Ihistogramme______facteur_de_renormalisation_hauteur_mire_de_barres_par_rapport_au_maximum
                                        );
                                        /* Parametres introduits le 20151124135350...                                                */

                         GET_ARGUMENT_L("histogramme_seul=""histogramme=""hs=",afficher_l_histogramme_seul);
                         GET_ARGUMENT_N("histogramme_image=""image=""hi=",afficher_l_histogramme_seul);

                         GET_ARGUMENT_L("alpha_numerique=""alpha=""editer=""lister=",edition_alpha_numerique);
                                        /* Le parametre "lister=" a ete ajoute le 20081006140634...                                  */
                         GET_ARGUMENT_L("toutes_informations=""ti=""infos=",editer_toutes_les_informations);
                         GET_ARGUMENT_N("niveau_seul=""ns=",editer_toutes_les_informations);
                                        /* Parametres introduits le 20130906102904...                                                */
                         GET_ARGUMENT_L("editer_substitution=""editers=",editer_L_SUBSTITUTION_HISTOGRAMME);
                         GET_ARGUMENT_L("editer_uniquement_niveau_seuil=""editer_seuil=""euns="
                                       ,editer_uniquement_le_niveau_correspondant_a_un_seuil_de_l_histogramme_cumule
                                        );
                         GET_ARGUMENT_I("seuil_histogramme_cumule=""seuil=""shc=",seuil_de_l_histogramme_cumule);
                         GET_ARGUMENT_L("seuil_histogramme_cumule_pourcentage=""seuil_pourcentage=""sp="
                                       ,le_seuil_de_l_histogramme_cumule_est_un_pourcentage
                                        );
                         GET_ARGUMENT_N("seuil_histogramme_cumule_nombre=""seuil_nombre=""sn="
                                       ,le_seuil_de_l_histogramme_cumule_est_un_pourcentage
                                        );
                         GET_ARGUMENT_F("pourcentage_histogramme_cumule=""pourcentage_seuil=""ps="
                                       ,pourcentage_du_seuil_de_l_histogramme_cumule
                                        );
                                        /* Les parametres relatifs au seuil de l'histogramme cumule ont ete introduits le            */
                                        /* 20090601184030 et completes le 20090602113818 par le pourcentage...                       */

                         GET_ARGUMENT_P("niveau_lisere=""nl=",niveau_du_lisere);
                                        /* Parametres introduits le 20151124135350...                                                */
                         )
                    );

     Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageG,nom_imageA))))
          Bblock
#include  xci/substitue.04.I"
                                        /* Introduit le 20081004123925...                                                            */

          Test(IL_FAUT(compatibilite_20151125))
                                        /* Ce test fut introduit le 20151125174538...                                                */
               Bblock
               Eblock
          ATes
               Bblock
               Test(IFNE(niveau_du_lisere,NOIR))
                    Bblock
                    PRINT_ATTENTION("le niveau du lisere est force a NOIR pour que le lisere a gauche et a gauche soit correct");

                    EGAL(niveau_du_lisere,NOIR);
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes
               Eblock
          ETes

          CALS(Ihistogramme(ImageG));

          Test(IL_FAUT(edition_alpha_numerique))
               Bblock
               DEFV(Logical,INIT(le_seuil_de_l_histogramme_cumule_a_ete_rencontre,FAUX));
                                        /* A priori...                                                                               */
               BoIn(niveau,NOIR,BLANC,PAS_COULEURS)
                    Bblock
                    DEFV(genere_p,INIT(niveau_substitue,Nsubstitution(niveau)));
                                        /* Introduit le 20081004123925...                                                            */

                    DEFV(Int,INIT(histogramme_courant,UNDEF));
                    DEFV(Float,INIT(pourcentage_histogramme_courant,UNDEF));

                    DEFV(Int,INIT(histogramme_cumule_courant,UNDEF));
                    DEFV(Float,INIT(pourcentage_histogramme_cumule_courant,UNDEF));

                    EGAL(histogramme_courant,ACCES_HISTOGRAMME(niveau_substitue));
                    EGAL(pourcentage_histogramme_courant,FLOT(CONVERTIR_EN_UN_POURCENTAGE(histogramme_courant,dimXY)));

                    EGAL(histogramme_cumule_courant,ACCES_HISTOGRAMME_CUMULE(niveau_substitue));
                    EGAL(pourcentage_histogramme_cumule_courant,FLOT(CONVERTIR_EN_UN_POURCENTAGE(histogramme_cumule_courant,dimXY)));
                                        /* Introduits le 20090601184030 et complete le 20090602113818 par les pourcentages...        */

                    Test(IFOU(IL_NE_FAUT_PAS(editer_uniquement_le_niveau_correspondant_a_un_seuil_de_l_histogramme_cumule)
                             ,I3ET(IL_FAUT(editer_uniquement_le_niveau_correspondant_a_un_seuil_de_l_histogramme_cumule)
                                  ,EST_FAUX(le_seuil_de_l_histogramme_cumule_a_ete_rencontre)
                                  ,IFOU(IFET(EST_FAUX(le_seuil_de_l_histogramme_cumule_est_un_pourcentage)
                                            ,IFGE(histogramme_cumule_courant,seuil_de_l_histogramme_cumule)
                                             )
                                       ,IFET(EST_VRAI(le_seuil_de_l_histogramme_cumule_est_un_pourcentage)
                                            ,IFGE(pourcentage_histogramme_cumule_courant,pourcentage_du_seuil_de_l_histogramme_cumule)
                                             )
                                        )
                                   )
                              )
                         )
                         Bblock
                         Test(IL_FAUT(editer_toutes_les_informations))
                              Bblock
                              CAL3(Prme2("Histogramme(%0*d)"
                                        ,NOMBRE_DE_CHIFFRES_DECIMAUX_D_EDITION_DES_NIVEAUX
                                        ,INTE(niveau_substitue)
                                         )
                                   );
                                        /* Pour 'v $xig/fonct$vv$FON chain_Acopie_avec_gestion_des_formats_des_editions_entieres'    */
                                        /* il a fallu introduire un 'INTE(...)' car 'niveau_substitue' est un 'genere_p' et non      */
                                        /* pas un 'Int' (introduit le 20131206170808).                                               */
                              CAL3(Prme2("=%0*d"
                                        ,NOMBRE_DE_CHIFFRES_DECIMAUX(dimXY)
                                        ,histogramme_courant
                                         )
                                   );
                              CAL3(Prme2(" (%.4f%c)"
                                        ,pourcentage_histogramme_courant
                                        ,K_POUR_CENT
                                         )
                                   );
                              CAL3(Prme2(" HistogrammeCumule(%0*d)"
                                        ,NOMBRE_DE_CHIFFRES_DECIMAUX_D_EDITION_DES_NIVEAUX
                                        ,INTE(niveau_substitue)
                                         )
                                   );
                                        /* Pour 'v $xig/fonct$vv$FON chain_Acopie_avec_gestion_des_formats_des_editions_entieres'    */
                                        /* il a fallu introduire un 'INTE(...)' car 'niveau_substitue' est un 'genere_p' et non      */
                                        /* pas un 'Int' (introduit le 20131206170808).                                               */
                              CAL3(Prme2("=%0*d"
                                        ,NOMBRE_DE_CHIFFRES_DECIMAUX(dimXY)
                                        ,histogramme_cumule_courant
                                         )
                                   );
                              CAL3(Prme2(" (%.4f%c)"
                                        ,pourcentage_histogramme_cumule_courant
                                        ,K_POUR_CENT
                                         )
                                   );
                              Eblock
                         ATes
                              Bblock
                              CAL3(Prme1("%d"
                                        ,niveau_substitue
                                         )
                                   );
                              Eblock
                         ETes

                         CALS(Fsauts_de_lignes(UN));
                                        /* On notera le passage le 19980326091450 de :                                               */
                                        /*                                                                                           */
                                        /*                  "\n niveau(%04d)=%08d (%.4f%)"                                           */
                                        /*                                                                                           */
                                        /* a :                                                                                       */
                                        /*                                                                                           */
                                        /*                  "\n niveau(%04d)=%08d (%.4f%c)"                                          */
                                        /*                                                                                           */
                                        /* avec 'K_POUR_CENT' a cause de la compilation sur '$LACT29' qui signalait :                */
                                        /*                                                                                           */
                                        /*                  warning(1199): invalid format string conversion                          */
                                        /*                                                                                           */
                                        /* Le 20061023155856 'POURCENTAGE(...)' fut remplace par 'CONVERTIR_EN_UN_POURCENTAGE(...)'. */
                                        /*                                                                                           */
                                        /* Le 20081001163324 fut introduit 'ACCES_HISTOGRAMME_CUMULE(...)'.                          */
                                        /*                                                                                           */
                                        /* Le 20081002142735, le format "niveau(%04d)=%08d (%.4f%c) cumul=%d\n" fut ameliore...      */
                                        /*                                                                                           */
                                        /* Le 20081002143527 furent introduits les 'NOMBRE_DE_CHIFFRES_DECIMAUX(...)'.               */
                                        /*                                                                                           */
                                        /* Le 20090602081751 fut introduit l'edition du pourcentage de l'histogramme cumule...       */
                                        /*                                                                                           */
                                        /*                                                                                           */
                                        /* Le 20130905184549 l'expression :                                                          */
                                        /*                                                                                           */
                                        /*   CAL3(Prme12("Histogramme(%0*d)=%0*d (%.4f%c) HistogrammeCumule(%0*d)=%0*d (%.4f%c)\n"   */
                                        /*             ,NOMBRE_DE_CHIFFRES_DECIMAUX_D_EDITION_DES_NIVEAUX                            */
                                        /*             ,niveau_substitue                                                             */
                                        /*             ,NOMBRE_DE_CHIFFRES_DECIMAUX(dimXY)                                           */
                                        /*             ,histogramme_courant                                                          */
                                        /*             ,pourcentage_histogramme_courant                                              */
                                        /*             ,K_POUR_CENT                                                                  */
                                        /*             ,NOMBRE_DE_CHIFFRES_DECIMAUX_D_EDITION_DES_NIVEAUX                            */
                                        /*             ,niveau_substitue                                                             */
                                        /*             ,NOMBRE_DE_CHIFFRES_DECIMAUX(dimXY)                                           */
                                        /*             ,histogramme_cumule_courant                                                   */
                                        /*             ,pourcentage_histogramme_cumule_courant                                       */
                                        /*             ,K_POUR_CENT                                                                  */
                                        /*              )                                                                            */
                                        /*        );                                                                                 */
                                        /*                                                                                           */
                                        /* a ete decoupee en plusieurs editions d'une part pour en ameliorer la comprehension et     */
                                        /* d'autre part pour resoudre une anomalie d'edition. Ainsi, par exemple, l'histogramme      */
                                        /* de 'v $xiio/MIRE' donnait avant cette date :                                              */
                                        /*                                                                                           */
                                        /*   Histogramme(000)=001024 (0.3906%) HistogrammeCumule(140733193388032)=001024 (0.3906%)   */
                                        /*               ___                                     _______________                     */
                                        /*             correct                                      incorrect                        */
                                        /*                ^                                             ^                            */
                                        /*                |                                             |                            */
                                        /*                 ---------------------------------------------                             */
                                        /*   (...)                                                                                   */
                                        /*                                                                                           */
                                        /* (sur '$CMAP28', la valeur sur '$LACT19' etant elle-aussi mauvaise, mais certainement      */
                                        /* un peu differente) alors que le format genere :                                           */
                                        /*                                                                                           */
                                        /*   Histogramme(%0*ld)=%0*ld (%.4f%c) HistogrammeCumule(%0*ld)=%0*ld (%.4f%c)               */
                                        /*                  _      _                                _      _                         */
                                        /*                                                                                           */
                                        /* par 'v $xig/fonct$vv$FON chain_Acopie_avec_gestion_des_formats_des_editions_entieres'     */
                                        /* est correct. Je n'ai pas trouve d'autre solution...                                       */

                         Test(IL_FAUT(editer_uniquement_le_niveau_correspondant_a_un_seuil_de_l_histogramme_cumule))
                              Bblock
                              EGAL(le_seuil_de_l_histogramme_cumule_a_ete_rencontre,VRAI);
                                        /* L'unique edition vient d'etre faite...                                                    */
                              Eblock
                         ATes
                              Bblock
                              Eblock
                         ETes
                         Eblock
                    ATes
                         Bblock
                         Eblock
                    ETes
                    Eblock
               EBoI

               Test(IL_FAUT(editer_L_SUBSTITUTION_HISTOGRAMME))
                    Bblock
                    CALS(Fsauts_de_lignes(DEUX));

                    PRINT_LISTE_DE_SUBSTITUTION(L_SUBSTITUTION_HISTOGRAMME);
                                        /* Edition introsuite le 20081005121817...                                                   */
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes
               Eblock
          ATes
               Bblock
               Test(IL_FAUT(afficher_l_histogramme_seul))
                    Bblock
                    CALi(Inoir(ImageG));
                                        /* Cette possibilite fut introduite le 20081006155250...                                     */
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes

               Test(IFOU(IL_FAUT(afficher_l_histogramme_seul)
                        ,IL_FAUT(compatibilite_20151125)
                         )
                    )
                                        /* Ce test fut introduit le 20151125174538 et complete le 20160204111200 en ce qui concerne  */
                                        /* 'afficher_l_histogramme_seul'...                                                          */
                    Bblock
                    HISTOGRAMME(facteur_d_echelle_de_la_hauteur,VNEUT(niveau_du_lisere));
                    Eblock
               ATes
                    Bblock
                    CALS(Imove(ImageA2,ImageG));
                                        /* Sauvegarde de l'image Argument dans 'ImageA2'...                                          */
                    HISTOGRAMME(facteur_d_echelle_de_la_hauteur,VNEUT(niveau_du_lisere));
                    CALS(Imove(ImageA3,ImageG));
                                        /* On a ainsi dans 'ImageA3', l'histogramme avec lisere a droite...                          */

                    CALS(Iy_symetrie(ImageA1,ImageA2));
                    CALS(Icomplementation(ImageG,ImageA1));
                                        /* On procede a une symetrie d'axe vertical et a une complementation des niveaux.            */
                    CALS(Ihistogramme(ImageG));
                    HISTOGRAMME(facteur_d_echelle_de_la_hauteur,VCOMP(niveau_du_lisere));
                                        /* Evidemment, il faut recalculer le nouvel histogramme. On notera que 'HISTOGRAMME(...)'    */
                                        /* ne sachant que faire des liseres a droite, pour faire le lisert a gauche, il suffit       */
                                        /* de faire une symetrie d'axe vertical et d'inverser la droite et la gauche de              */
                                        /* l'histogramme en inversant l'image...                                                     */
                    CALS(Icomplementation(ImageA1,ImageG));
                    CALS(Iy_symetrie(ImageG,ImageA1));
                                        /* On procede enfin aux transformations inverses ce qui donne dans 'ImageG',                 */
                                        /* l'histogramme avec lisere a gauche...                                                     */

                    CALS(Iand(ImageA4,ImageA3,ImageG));
                    CALS(Imove(ImageG,ImageA4));
                                        /* Enfin, on a donc un lisert a gauche et a droite de l'histogramme...                       */
                    Eblock
               ETes

               CALi(Iupdate_image(nom_imageR,ImageG));
               Eblock
          ETes

#include  xci/substitue.06.I"
                                        /* Puis on desactive (introduit le 20081004191158...).                                       */
          Eblock
     ATes
          Bblock
          Test__CODE_ERREUR__ERREUR07;
          Eblock
     ETes

     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.