/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   D E N S I T E   D ' U N   A L B U M  :                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/densite_3D.11$K' :                                                                                         */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20001223090451).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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
#include  image_image_IMAGESF_EXT
#include  image_image_DI_ALBUM_EXT

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/sequence.01.I"
                                        /* ATTENTION, on definit ainsi le symbole 'DERNIERE_IMAGE' qui ne sert a rien ici, puisque   */
                                        /* c'est en effet 'Zmax' qui joue ce role...                                                 */

#define   INVERSER_L_AXE_OZ                                                                                                             \
                    FAUX                                                                                                                \
                                        /* Indique s'il faut inverser l'ordre de parcours de l'ensemble des images. On a :           */ \
                                        /*                                                                                           */ \
                                        /*                  FAUX    : l'image d'arriere-plan est la premiere de la liste,            */ \
                                        /*                  VRAI    : l'image d'arriere-plan est la derniere de la liste.            */ \
                                        /*                                                                                           */ \
                                        /* Ceci fut introduit le 20100623084938...                                                   */
#define   INCOMPLET_AXE_OZ                                                                                                              \
                    FAUX                                                                                                                \
                                        /* Indique s'il peut manquer des images (ceci fut introduit le 20120322085615)...            */
#define   INCOMPLET_AXE_OZ_VALEUR_STANDARD                                                                                              \
                    NOIR
#define   INCOMPLET_AXE_OZ_VALEUR_NON_STANDARD                                                                                          \
                    FLOT__NOIR
                                        /* Donne la valeur des images manquantes (ceci fut introduit le 20120322092127)...           */

#define   DEMI_DIMENSION_X                                                                                                              \
                    QUATRE
#define   DEMI_DIMENSION_Y                                                                                                              \
                    QUATRE
#define   DEMI_DIMENSION_Z                                                                                                              \
                    QUATRE
                                        /* Demi-dimension de la boite de calcul de la densite.                                       */

#define   FACTEUR_DU_NIVEAU                                                                                                             \
                    FU                                                                                                                  \
                                        /* Facteur du niveau.                                                                        */
#define   FACTEUR_DE_LA_DISTANCE                                                                                                        \
                    FU                                                                                                                  \
                                        /* Facteur de la distance.                                                                   */

#define   EXPOSANT_DE_LA_DISTANCE                                                                                                       \
                    FDEUX                                                                                                               \
                                        /* Exposant de la distance.                                                                  */

#define   RENORMALISER_LES_EXPONENTIELLES                                                                                               \
                    VRAI                                                                                                                \
                                        /* Faut-il renormaliser ('VRAI') ou pas ('FAUX') les exponentielles ?                        */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   D E N S I T E   D ' U N   A L B U M  :                                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_albumR),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_albumA),NOM_PIPE));

     DEFV(CHAR,INIC(POINTERc(nom_postfixe),NOM_UNDEF_VIDE));
                                        /* Nom d'un eventuel postfixe a placer derriere <nom_albumA><numero> (par exemple '$ROUGE'). */
     DEFV(Int,INIT(premiere_image,PREMIERE_IMAGE));
                                        /* Numero de la premiere image,                                                              */
     DEFV(Int,INIT(pas_des_images,PAS_DES_IMAGES));
                                        /* Pas de passage d'un numero d'image a une autre.                                           */
     DEFV(Int,INIT(nombre_de_chiffres,NOMBRE_DE_CHIFFRES));
                                        /* Nombre de chiffres codant le numero des images de la serie...                             */
     DEFV(Logical,INIT(inverser_l_axe_OZ,INVERSER_L_AXE_OZ));
                                        /* Indique s'il faut inverser l'ordre de parcours de l'ensemble des images. On a :           */
                                        /*                                                                                           */
                                        /*                  FAUX    : l'image d'arriere-plan est la premiere de la liste,            */
                                        /*                  VRAI    : l'image d'arriere-plan est la derniere de la liste.            */
                                        /*                                                                                           */
                                        /* Ceci fut introduit le 20100623084932...                                                   */
     DEFV(Logical,INIT(incomplet_axe_OZ,INCOMPLET_AXE_OZ));
                                        /* Indique s'il peut manquer des images (ceci fut introduit le 20120322085615)...            */
     DEFV(genere_p,INIT(incomplet_axe_OZ_valeur_standard,INCOMPLET_AXE_OZ_VALEUR_STANDARD));
     DEFV(genere_Float,INIT(incomplet_axe_OZ_valeur_non_standard,INCOMPLET_AXE_OZ_VALEUR_NON_STANDARD));
                                        /* Donne la valeur des images manquantes (ceci fut introduit le 20120322092127)...           */

     DEFV(Positive,INIT(demi_dimension_X,DEMI_DIMENSION_X));
     DEFV(Positive,INIT(demi_dimension_Y,DEMI_DIMENSION_Y));
     DEFV(Positive,INIT(demi_dimension_Z,DEMI_DIMENSION_Z));
                                        /* Demi-dimension de la boite de calcul de la densite.                                       */

     DEFV(Float,INIT(facteur_du_niveau,FACTEUR_DU_NIVEAU));
                                        /* Facteur du niveau.                                                                        */
     DEFV(Float,INIT(facteur_de_la_distance,FACTEUR_DE_LA_DISTANCE));
                                        /* Facteur de la distance.                                                                   */

     DEFV(Float,INIT(exposant_de_la_distance,EXPOSANT_DE_LA_DISTANCE));
                                        /* Exposant de la distance.                                                                  */

     DEFV(Logical,INIT(renormaliser_les_exponentielles,RENORMALISER_LES_EXPONENTIELLES));
                                        /* Faut-il renormaliser ('VRAI') ou pas ('FAUX') les exponentielles ?                        */
     /*..............................................................................................................................*/
     BSaveModifyVariable(Logical,les_imagesR_sont_standards,FAUX);
                                        /* Introduit le 20170727110358 afin d'assurer la compatibilite anterieure...                 */
     BSaveModifyVariable(Logical,S_ACCELERATEUR__ALOAD_POINT_COORDONNEES_01_____utiliser_l_accelerateur,VRAI);
                                        /* Introduit le 20120620092356...                                                            */

     EGAL(valider_les_axes_OX_OY_OZ,VRAI);
     EGAL(coefficient_de_forme_de_l_espace_tridimensionnel,COEFFICIENT_DE_FORME_DE_L_ESPACE_TRIDIMENSIONNEL);
                                        /* Introduit le 20140105182452 lors de la mise au point de 'v $xiirv/PIPO.F1.21' a cause     */
                                        /* du probleme 'v $xiii/di_album$FON 20120321113814' qui se manifeste, par exemple, si       */
                                        /* l'axe 'OZ' est beaucoup plus "court" que les axes 'OX' et/ou 'OY'.                        */

     GET_ARGUMENTSi(nombre_d_arguments
                   ,BLOC(GET_ARGUMENTS2_L("AFdensite_____compatibilite_20110908=""compatibilite_20110908="
                                         ,AFdensite_standard_____compatibilite_20110908
                                         ,AFdensite_non_standard_____compatibilite_20110908
                                          );
                                        /* Arguments introduits le 20110908082907...                                                 */
                         GET_ARGUMENTS2_L("AFdensite_____compatibilite_2014010308=""compatibilite_2014010308="
                                         ,AFdensite_standard_____compatibilite_2014010308
                                         ,AFdensite_non_standard_____compatibilite_2014010308
                                          );
                                        /* Arguments introduits le 20140103085308...                                                 */
                         GET_ARGUMENTS2_L("AFdensite_____compatibilite_2014010310=""compatibilite_2014010310="
                                         ,AFdensite_standard_____compatibilite_2014010310
                                         ,AFdensite_non_standard_____compatibilite_2014010310
                                          );
                                        /* Arguments introduits le 20140103104641...                                                 */
                         GET_ARGUMENTS2_L("AFdensite_____compatibilite_20170818=""compatibilite_20170818="
                                         ,AFdensite_standard_____compatibilite_20170818
                                         ,AFdensite_non_standard_____compatibilite_20170818
                                          );
                                        /* Arguments introduits le 20170818113633...                                                 */

                         GET_ARGUMENT_C("imageA=""A=",nom_albumA);
                         GET_ARGUMENT_C("imageR=""R=",nom_albumR);
                         GET_ARGUMENT_C("postfixe=",nom_postfixe);
                         GET_ARGUMENT_I("premiere=",premiere_image);
                         GET_ARGUMENTS2_I("pas=",pas_des_images,pasZ);
                                        /* L'argument 'pasZ' fut introduit le 20110119140724...                                      */
                         GET_ARGUMENT_I("chiffres=",nombre_de_chiffres);

                         GET_ARGUMENTS2_L("version_simplifiee=""simplifiee=""vs="
                                         ,AFdensite_standard_____version_simplifiee
                                         ,AFdensite_non_standard_____version_simplifiee
                                          );
                                        /* Arguments introduits le 20170730101127...                                                 */

                         GET_ARGUMENTS2_L("densite="
                                         ,AFdensite_standard_____calculer_effectivement_une_densite
                                         ,AFdensite_non_standard_____calculer_effectivement_une_densite
                                          );
                         GET_ARGUMENTS2_N("neutre="
                                         ,AFdensite_standard_____calculer_effectivement_une_densite
                                         ,AFdensite_non_standard_____calculer_effectivement_une_densite
                                          );
                                        /* Arguments introduits le 20240829185946 afin de pouvoir accelerer                          */
                                        /* 'v $xiirc/.MANE.41.2.$U .xci.densite_3D.11.X'...                                          */

                         GET_ARGUMENTS2_F("ponderation_RdisF3D=""distance1=""d1="
                                         ,AFdensite_standard_____ponderation_RdisF3D
                                         ,AFdensite_non_standard_____ponderation_RdisF3D
                                          );
                         GET_ARGUMENTS2_F("ponderation_ASdisF3D=""distance2=""d2="
                                         ,AFdensite_standard_____ponderation_ASdisF3D
                                         ,AFdensite_non_standard_____ponderation_ASdisF3D
                                          );
                                        /* Arguments introduits le 20170730101127...                                                 */

                         GET_ARGUMENT_L("inverser_Z=""inv_Z=",inverser_l_axe_OZ);
                                        /* Argument introduit le 20100623084938...                                                   */
                         GET_ARGUMENT_L("incomplet_Z=""inc_Z=",incomplet_axe_OZ);
                                        /* Argument introduit le 20120322085615...                                                   */
                         GET_ARGUMENT_P("valeur_standard_incomplet_Z=""vsinc_Z=",incomplet_axe_OZ_valeur_standard);
                         GET_ARGUMENT_F("valeur_non_standard_incomplet_Z=""vnsinc_Z=",incomplet_axe_OZ_valeur_non_standard);
                                        /* Argument introduit le 20120322092127...                                                   */

                         GET_ARGUMENT_L("standardA=""standard=",les_imagesA_sont_standards);
                                        /* Argument introduit le 20091124093047 et complete le 20170727110005 avec "standardA="...   */
                         GET_ARGUMENT_L("standardR=",les_imagesR_sont_standards);
                                        /* Argument introduit le 20170727110358...                                                   */

                         GET_ARGUMENTS2_F("facteur_normalisation_OX=""fnX=""fnx="
                                         ,AFdensite_standard_____facteur_de_normalisation_OX
                                         ,AFdensite_non_standard_____facteur_de_normalisation_OX
                                          );
                         GET_ARGUMENTS2_F("facteur_normalisation_OY=""fnY=""fny="
                                         ,AFdensite_standard_____facteur_de_normalisation_OY
                                         ,AFdensite_non_standard_____facteur_de_normalisation_OY
                                          );
                         GET_ARGUMENTS2_F("facteur_normalisation_OZ=""fnZ=""fnz="
                                         ,AFdensite_standard_____facteur_de_normalisation_OZ
                                         ,AFdensite_non_standard_____facteur_de_normalisation_OZ
                                          );
                                        /* Arguments introduits le 20140103115546...                                                 */

                         GET_ARGUMENTS2_L("super_echelle=""se="
                                         ,AFdensite_standard_____utiliser_la_super_echelle
                                         ,AFdensite_non_standard_____utiliser_la_super_echelle
                                          );
                                        /* Arguments introduits le 20101203155238...                                                 */

                         GET_ARGUMENTS2_L("rotation=""rot="
                                         ,AFdensite_standard_____faire_une_rotation
                                         ,AFdensite_non_standard_____faire_une_rotation
                                          );
                         PROCESS_ARGUMENTS2_F("ROTATION_OX="
                                             ,AFdensite_standard_____angle_de_ROTATION_OX
                                             ,AFdensite_non_standard_____angle_de_ROTATION_OX
                                             ,BLOC(VIDE;)
                                             ,BLOC(EGAL(vecteurs_____ordre_de_la_ROTATION_0X,nombre_d_arguments_recuperes);
                                                   )
                                              );
                         PROCESS_ARGUMENTS2_F("ROTATION_OY="
                                             ,AFdensite_standard_____angle_de_ROTATION_OY
                                             ,AFdensite_non_standard_____angle_de_ROTATION_OY
                                             ,BLOC(VIDE;)
                                             ,BLOC(EGAL(vecteurs_____ordre_de_la_ROTATION_0Y,nombre_d_arguments_recuperes);
                                                   )
                                              );
                         PROCESS_ARGUMENTS2_F("ROTATION_OZ="
                                             ,AFdensite_standard_____angle_de_ROTATION_OZ
                                             ,AFdensite_non_standard_____angle_de_ROTATION_OZ
                                             ,BLOC(VIDE;)
                                             ,BLOC(EGAL(vecteurs_____ordre_de_la_ROTATION_0Z,nombre_d_arguments_recuperes);
                                                   )
                                              );
                                        /* Arguments introduits le 20101203121552...                                                 */

                         GET_ARGUMENT_L("AccelerateurALoadPoint=""AccALP="
                                       ,S_ACCELERATEUR__ALOAD_POINT_COORDONNEES_01_____utiliser_l_accelerateur
                                        );
                                        /* Arguments introduits le 20120310145627...                                                 */

                         GET_ARGUMENTS2_L("interpoler=""inter="
                                         ,FAload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement
                                         ,FFAload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement
                                          );
                         GET_ARGUMENTS2_F("interpolerX=""interX="
                                         ,FAload_point_coordonnees_01_____ponderation_du_barycentre_d_interpolation_X
                                         ,FFAload_point_coordonnees_01_____ponderation_du_barycentre_d_interpolation_X
                                          );
                         GET_ARGUMENTS2_F("interpolerY=""interY="
                                         ,FAload_point_coordonnees_01_____ponderation_du_barycentre_d_interpolation_Y
                                         ,FFAload_point_coordonnees_01_____ponderation_du_barycentre_d_interpolation_Y
                                          );
                         GET_ARGUMENTS2_F("interpolerZ=""interZ="
                                         ,FAload_point_coordonnees_01_____ponderation_du_barycentre_d_interpolation_Z
                                         ,FFAload_point_coordonnees_01_____ponderation_du_barycentre_d_interpolation_Z
                                          );
                         GET_ARGUMENTS2_L("lineaire=""bilineaire="
                                         ,FAload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire
                                         ,FFAload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire
                                          );
                         GET_ARGUMENTS2_N("cubique=""bicubique="
                                         ,FAload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire
                                         ,FFAload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire
                                          );
                                        /* Arguments introduits le 20101203130503...                                                 */

                         GET_ARGUMENTS2_L("periodiser_X=""periodX="
                                         ,AFdensite_standard_____periodiser_X
                                         ,AFdensite_non_standard_____periodiser_X
                                          );
                         GET_ARGUMENTS2_L("periodiser_Y=""periodY="
                                         ,AFdensite_standard_____periodiser_Y
                                         ,AFdensite_non_standard_____periodiser_Y
                                          );
                         GET_ARGUMENTS2_L("periodiser_Z=""periodZ="
                                         ,AFdensite_standard_____periodiser_Z
                                         ,AFdensite_non_standard_____periodiser_Z
                                          );
                         GET_ARGUMENTS2_L("symetriser_X=""symetrX="
                                         ,AFdensite_standard_____symetriser_X
                                         ,AFdensite_non_standard_____symetriser_X
                                          );
                         GET_ARGUMENTS2_L("symetriser_Y=""symetrY="
                                         ,AFdensite_standard_____symetriser_Y
                                         ,AFdensite_non_standard_____symetriser_Y
                                          );
                         GET_ARGUMENTS2_L("symetriser_Z=""symetrZ="
                                         ,AFdensite_standard_____symetriser_Z
                                         ,AFdensite_non_standard_____symetriser_Z
                                          );
                         GET_ARGUMENTS2_L("prolonger_X=""prolX="
                                         ,AFdensite_standard_____prolonger_X
                                         ,AFdensite_non_standard_____prolonger_X
                                          );
                         GET_ARGUMENTS2_L("prolonger_Y=""prolY="
                                         ,AFdensite_standard_____prolonger_Y
                                         ,AFdensite_non_standard_____prolonger_Y
                                          );
                         GET_ARGUMENTS2_L("prolonger_Z=""prolZ="
                                         ,AFdensite_standard_____prolonger_Z
                                         ,AFdensite_non_standard_____prolonger_Z
                                          );
                         GET_ARGUMENTS2_F("niveau_hors_album=""nha=""niveau_hors_image=""nhi=""niveau="
                                         ,AFdensite_standard_____niveau_hors_album
                                         ,AFdensite_non_standard_____niveau_hors_album
                                          );

                         GET_ARGUMENT_I("dx=""dX=",demi_dimension_X);
                         GET_ARGUMENT_I("dy=""dY=",demi_dimension_Y);
                         GET_ARGUMENT_I("dz=""dZ=",demi_dimension_Z);
                                        /* Je note le 20120227093911 qu'utiliser :                                                   */
                                        /*                                                                                           */
                                        /*                  dX=0                                                                     */
                                        /*                  dY=0                                                                     */
                                        /*                  dZ=0                                                                     */
                                        /*                  AFdensite_____compatibilite_20110908=VRAI                                */
                                        /*                                                                                           */
                                        /* rend l'operation neutre et renvoie 'album_d_imagesR' identique a 'album_d_imagesA'...     */
                         GET_ARGUMENTS3_I("dxyz=""dXYZ=",demi_dimension_X,demi_dimension_Y,demi_dimension_Z);
                                        /* Arguments introduits le  20170730094543...                                                */

                         GET_ARGUMENT_F("facteurN=""fN=",facteur_du_niveau);
                         GET_ARGUMENT_F("facteurD=""fD=",facteur_de_la_distance);
                         GET_ARGUMENT_F("exposant=""e=",exposant_de_la_distance);

                         GET_ARGUMENT_L("rn=""renormaliser=",renormaliser_les_exponentielles);
                         )
                    );

     begin_nouveau_block
          Bblock
          BDEFV(albumF,album_d_imagesR);
                                        /* Definition de l'album d'images Resultat...                                                */

          CALS(dAFinitialisation(album_d_imagesR,FZERO));
                                        /* Initialisation de l'album Resultat.                                                       */

          Test(EST_VRAI(les_imagesA_sont_standards))
                                        /* Possibilite introduite le 20091124093047...                                               */
               Bblock
               BDEFV(album,album_d_imagesA);
                                        /* Definition de l'album d'images Argument "standard".                                       */

               CALi(idAload_album(album_d_imagesA
                                 ,nom_albumA
                                 ,nom_postfixe
                                 ,premiere_image
                                 ,pas_des_images
                                 ,nombre_de_chiffres
                                 ,FAUX
                                 ,UNDEF
                                 ,inverser_l_axe_OZ
                                 ,incomplet_axe_OZ
                                 ,incomplet_axe_OZ_valeur_standard
                                  )
                    );
                                        /* Chargement de l'album Argument "standard".                                                */
                                        /*                                                                                           */
                                        /* L'argument'Inv' ('FAUX') a ete introduit le 20091125133934 et le 20100623084938           */
                                        /* il fut parametre par 'inverser_l_axe_OZ'...                                               */

               Test(PAS_D_ERREUR(CODE_ERREUR))
                    Bblock
                    CALS(AFdensite_standard(album_d_imagesR
                                           ,album_d_imagesA
                                           ,demi_dimension_X
                                           ,demi_dimension_Y
                                           ,demi_dimension_Z
                                           ,facteur_du_niveau
                                           ,facteur_de_la_distance
                                           ,exposant_de_la_distance
                                           ,renormaliser_les_exponentielles
                                            )
                         );
                                        /* Calcul de la densite...                                                                   */
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes

               EDEFV(album,album_d_imagesA);
                                        /* Definition de l'album d'images Argument "standard".                                       */
               Eblock
          ATes
               Bblock
               BDEFV(albumF,album_d_imagesA);
                                        /* Definition de l'album d'images Argument "non standard".                                   */

               CALi(idAloadF_album(album_d_imagesA
                                  ,nom_albumA
                                  ,nom_postfixe
                                  ,premiere_image
                                  ,pas_des_images
                                  ,nombre_de_chiffres
                                  ,FAUX
                                  ,UNDEF
                                  ,inverser_l_axe_OZ
                                  ,incomplet_axe_OZ
                                  ,incomplet_axe_OZ_valeur_non_standard
                                   )
                    );
                                        /* Chargement de l'album Argument...                                                         */
                                        /*                                                                                           */
                                        /* L'argument 'Inv' (='FAUX') a ete introduit le 20091125133934 et le 20100623084938         */
                                        /* il fut parametre par 'inverser_l_axe_OZ'...                                               */

               Test(PAS_D_ERREUR(CODE_ERREUR))
                    Bblock
                    CALS(AFdensite_non_standard(album_d_imagesR
                                               ,album_d_imagesA
                                               ,demi_dimension_X
                                               ,demi_dimension_Y
                                               ,demi_dimension_Z
                                               ,facteur_du_niveau
                                               ,facteur_de_la_distance
                                               ,exposant_de_la_distance
                                               ,renormaliser_les_exponentielles
                                                )
                         );
                                        /* Calcul de la densite...                                                                   */
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes

               EDEFV(albumF,album_d_imagesA);
                                        /* Definition de l'album d'images Argument "non standard".                                   */
               Eblock
          ETes

          Test(PAS_D_ERREUR(CODE_ERREUR))
                                        /* Introduit le 20101207143707 (un peu tardivement...) car, en effet, il est plus logique    */
                                        /* de ne pas generer l'album 'nom_albumR' s'il y a eu erreur de chargement de l'album        */
                                        /* 'nom_albumA'...                                                                           */
               Bblock
               Test(EST_VRAI(les_imagesR_sont_standards))
                                        /* Possibilite introduite le 20170727110358...                                               */
                    Bblock
                    BDEFV(albumF,album_d_imagesR_renormalise);
                    BDEFV(album,album_d_imagesR_standard);
                                        /* Definition de l'album d'images Resultat avec pre-renormalisation.                         */

                    BSaveModifyVariable(genere_Float,AFnormalisation_____niveau_origine___de_normalisation,FLOT__NOIR);
                    BSaveModifyVariable(genere_Float,AFnormalisation_____niveau_extremite_de_normalisation,FLOT__BLANC);

                    DEFV(genere_Float,INIT(niveau_origine,FLOT__NIVEAU_UNDEF));
                    DEFV(genere_Float,INIT(niveau_extremite,FLOT__NIVEAU_UNDEF));

                    CALS(AFnivo_extrema(album_d_imagesR,ADRESSE(niveau_origine),ADRESSE(niveau_extremite)));
                    CALS(AFnormalisation(album_d_imagesR_renormalise,album_d_imagesR,niveau_origine,niveau_extremite));
                                        /* Renormalisation essentielle introduite tardivement le 20170817190045 car, en effet, il    */
                                        /* n'y a aucune raison pour que les extrema soient dans [NOIR,BLANC]. Cela s'est vu a cette  */
                                        /* date lors de la generation de 'v $xiirf/FRB3.z4.8.21'...                                  */

                    ESaveModifyVariable(genere_Float,AFnormalisation_____niveau_extremite_de_normalisation);
                    ESaveModifyVariable(genere_Float,AFnormalisation_____niveau_origine___de_normalisation);

                    CALS(Afloat_std_brutal(album_d_imagesR_standard,album_d_imagesR_renormalise));
                                        /* Conversion de l'album Resultat non standard en un album standard...                       */

                    CALi(dAupdate_album(nom_albumR
                                       ,nom_postfixe
                                       ,premiere_image
                                       ,pas_des_images
                                       ,album_d_imagesR_standard
                                       ,nombre_de_chiffres
                                       ,FAUX
                                        )
                         );

                    EDEFV(album,album_d_imagesR_standard);
                    EDEFV(albumF,album_d_imagesR_renormalise);
                                        /* Definition de l'album d'images Resultat avec pre-renormalisation.                         */
                    Eblock
               ATes
                    Bblock
                    CALi(dAupdateF_album(nom_albumR
                                        ,nom_postfixe
                                        ,premiere_image
                                        ,pas_des_images
                                        ,album_d_imagesR
                                        ,nombre_de_chiffres
                                        ,FAUX
                                         )
                         );
                                        /* L'argument 'Inv' (='FAUX') a ete introduit le 20100624091525...                           */
                    Eblock
               ETes
               Eblock
          ATes
               Bblock
               Eblock
          ETes

          EDEFV(albumF,album_d_imagesR);
                                        /* Definition de l'album d'images Resultat...                                                */

          Eblock
     end_nouveau_block

     ESaveModifyVariable(Logical,S_ACCELERATEUR__ALOAD_POINT_COORDONNEES_01_____utiliser_l_accelerateur);
     ESaveModifyVariable(Logical,les_imagesR_sont_standards);

     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.