/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F O N C T I O N S   D E   B A S E   A   U N   A L B U M  :                                                                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Ce fichier contient toutes les definitions                                                                     */
/*                  de base de gestion et de manipulation d'une                                                                      */
/*                  album raster, quelle que soit la definition.                                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xiii/mono_album$DEF' :                                                                                         */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 20001224092445).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N I T I A L I S A T I O N   D ' U N   A L B U M   Q U E L C O N Q U E  :                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   GdAinitialisation(album_d_images,valeur,initialisation)                                                                       \
                    Bblock                                                                                                              \
                    begin_fuite                                                                                                         \
                         Bblock                                                                                                         \
                         CALi(initialisation(PAGE(album_d_images,Z),valeur));                                                           \
                                        /* Initialisation de l'album.                                                                */ \
                         Eblock                                                                                                         \
                    end_fuite                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Initialisation quelconque d'un album d'images.                                            */
#define   dAinitialisation(album_d_images,valeur)                                                                                       \
                    Bblock                                                                                                              \
                    GdAinitialisation(album_d_images,valeur,Iinitialisation);                                                           \
                    Eblock                                                                                                              \
                                        /* Initialisation quelconque d'un album d'images "standard".                                 */
#define   dAFinitialisation(album_d_images,valeur)                                                                                      \
                    Bblock                                                                                                              \
                    GdAinitialisation(album_d_images,valeur,IFinitialisation);                                                          \
                    Eblock                                                                                                              \
                                        /* Initialisation quelconque d'un album d'images "flottant".                                 */

#define   dAnoir(album_d_images)                                                                                                        \
                    Bblock                                                                                                              \
                    begin_fuite                                                                                                         \
                         Bblock                                                                                                         \
                         CALi(Inoir(PAGE(album_d_images,Z)));                                                                           \
                                        /* Initialisation de l'album.                                                                */ \
                         Eblock                                                                                                         \
                    end_fuite                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Nettoyage d'un album d'images.                                                            */


/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O N V E R S I O N   D ' U N E   I M A G E   N O N   S T A N D A R D   E N   U N   A L B U M   S T A N D A R D  :         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   dAconversion_image_album_____exterieur_des_bandes                                                                             \
                    FLOT__NOIR
#define   dAconversion_image_album_____interieur_des_bandes(niveau_de_marquage)                                                         \
                    FLOT(niveau_de_marquage)

#define   dAconversion_image_album(album_d_imagesR,imageA,niveau_de_marquage,facteur_d_elargissement_des_bandes)                        \
                    Bblock                                                                                                              \
                    DEFV(genere_Float,INIT(niveau_minimum,IFnivo_minimum(imageA)));                                                     \
                    DEFV(genere_Float,INIT(niveau_maximum,IFnivo_maximum(imageA)));                                                     \
                                                                                                                                        \
                    DEFV(genere_Float,INIT(seuil_inferieur,FLOT__NIVEAU_UNDEF));                                                        \
                    DEFV(genere_Float,INIT(seuil_superieur,FLOT__NIVEAU_UNDEF));                                                        \
                                                                                                                                        \
                    DEFV(Float,INIT(elargissement_des_bandes,FLOT__UNDEF));                                                             \
                                                                                                                                        \
                    DEFV(Float,INIT(largeur_des_bandes,FLOT__UNDEF));                                                                   \
                                                                                                                                        \
                    BSaveModifyVariable(Logical                                                                                         \
                                       ,IFpasse_bande_____forcer_les_valeurs_intermediaires                                             \
                                       ,VRAI                                                                                            \
                                        );                                                                                              \
                    BSaveModifyVariable(genere_Float                                                                                    \
                                       ,IFpasse_bande_____valeur_intermediaire                                                          \
                                       ,dAconversion_image_album_____interieur_des_bandes(niveau_de_marquage)                           \
                                        );                                                                                              \
                                                                                                                                        \
                    EGAL(largeur_des_bandes,DIVI(SOUS(niveau_maximum,niveau_minimum),dimZ));                                            \
                                        /* On divise par 'dimZ' et non pas 'SOUS(Zmax,Zmin)' afin d'avoir autant de couches          */ \
                                        /* qu'il y a de 'Z's differents...                                                           */ \
                    EGAL(elargissement_des_bandes,MUL2(facteur_d_elargissement_des_bandes,largeur_des_bandes));                         \
                                        /* On divise par 'dimZ' et non pas 'SOUS(Zmax,Zmin)' afin d'avoir autant de couches          */ \
                                                                                                                                        \
                    EGAL(seuil_inferieur,niveau_minimum);                                                                               \
                                                                                                                                        \
                    begin_fuite                                                                                                         \
                         Bblock                                                                                                         \
                         BDEFV(imageF,bande_courante);                                                                                  \
                                                                                                                                        \
                         DEFV(genere_Float,INIT(seuil_inferieur_effectif,FLOT__NIVEAU_UNDEF));                                          \
                         DEFV(genere_Float,INIT(seuil_superieur_effectif,FLOT__NIVEAU_UNDEF));                                          \
                                        /* Introduit le 20180503103123 afin de permettre l'elargissement des bandes et donc leur     */ \
                                        /* recouvrement...                                                                           */ \
                                                                                                                                        \
                         EGAL(seuil_superieur,ADD2(seuil_inferieur,largeur_des_bandes));                                                \
                                                                                                                                        \
                         EGAL(seuil_inferieur_effectif,SOUS(seuil_inferieur,elargissement_des_bandes));                                 \
                         EGAL(seuil_superieur_effectif,ADD2(seuil_superieur,elargissement_des_bandes));                                 \
                                        /* Le 20180503103123 les bandes peuvent donc etre elargies. On notera qu'il est inutile      */ \
                                        /* de verifier que les seuils effectifs sont dans [niveau_minimum,niveau_maximum]...         */ \
                                                                                                                                        \
                         CALi(IFpasse_bande(bande_courante                                                                              \
                                           ,imageA                                                                                      \
                                           ,seuil_inferieur_effectif                                                                    \
                                           ,seuil_superieur_effectif                                                                    \
                                           ,dAconversion_image_album_____exterieur_des_bandes                                           \
                                           ,dAconversion_image_album_____exterieur_des_bandes                                           \
                                            )                                                                                           \
                              );                                                                                                        \
                         CALi(Ifloat_std_brutal(PAGE(album_d_imagesR,Z),bande_courante));                                               \
                                        /* Extraction d'une "bande" de l'image Argument...                                           */ \
                                                                                                                                        \
                         EDEFV(imageF,bande_courante);                                                                                  \
                                                                                                                                        \
                         EGAL(seuil_inferieur,seuil_superieur);                                                                         \
                         Eblock                                                                                                         \
                    end_fuite                                                                                                           \
                                                                                                                                        \
                    ESaveModifyVariable(genere_Float,IFpasse_bande_____valeur_intermediaire);                                           \
                    ESaveModifyVariable(Logical,IFpasse_bande_____forcer_les_valeurs_intermediaires);                                   \
                    Eblock                                                                                                              \
                                        /* Conversion d'une image non standard en un album standard (introduite le 20180502105010).  */



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.