/*************************************************************************************************************************************/ /* */ /* 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). */