/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        R E D U C T I O N   D ' U N E   S U I T E   D E   6 4   I M A G E S   A R G U M E N T                                      */
/*        E T   G E N E R A T I O N   D ' U N E   M A T R I C E   L E S   C O N T E N A N T                                          */
/*        E N   V U E   D E   L E S   A N I M E R  :                                                                                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Cette commande genere une animation                                                                            */
/*                  representee par une suite d'images                                                                               */
/*                  et la place dans l'image Resultat.                                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                    Supposons un tableau carre                                                                                     */
/*                  de 8x8=64 (carre) images ; celles-ci                                                                             */
/*                  seront disposees ainsi (les numeros                                                                              */
/*                  de 00 a 63 donnant l'ordre d'appa-                                                                               */
/*                  rition temporelle des images) :                                                                                  */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                Y ^                                                                                                                */
/*                  |                                                                                                                */
/*             Ymax |---------------------------------------                                                                         */
/*                  | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |                                                                        */
/*                  |----+----+----+----+----+----+----+----|                                                                        */
/*                  | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 |                                                                        */
/*                  |----+----+----+----+----+----+----+----|                                                                        */
/*                  | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |                                                                        */
/*                  |----+----+----+----+----+----+----+----|                                                                        */
/*                  | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |                                                                        */
/*                  |----+----+----+----+----+----+----+----|                                                                        */
/*                  | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |                                                                        */
/*                  |----+----+----+----+----+----+----+----|                                                                        */
/*                  | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |                                                                        */
/*                  |----+----+----+----+----+----+----+----|                                                                        */
/*                  | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 |                                                                        */
/*                  |----+----+----+----+----+----+----+----|                                                                        */
/*                  | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 |                                                                        */
/*             Ymin o------------------------------------------->                                                                    */
/*                 Xmin                                   Xmax  X                                                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        ATTENTION :                                                                                                                */
/*                    Pour les images dont les dimensions ne                                                                         */
/*                  sont pas divisibles par 8, cette operation                                                                       */
/*                  introduit une bande noire a droite (si 'dimX'                                                                    */
/*                  n'est pas divisible par 8) et/ou en haut (si                                                                     */
/*                  'dimY' n'est pas divisible par 8). L'utilisation                                                                 */
/*                  de '$xci/dilate.01$X' avec "points=225" permet de                                                                */
/*                  corriger le defaut...                                                                                            */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/reduction_64$K' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1988??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
@define   PRAGMA_CPP_____POUR_LES_Istore_Iupdate_NE_PAS_VERIFIER_LES_MULTIPLES_UTILISATIONS_DE_L_IMAGE_____ImageA9
                                        /* Introduit le 20060124145847.                                                              */

@define   PRAGMA_CL_____MODULE_NON_OPTIMISABLE

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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
                                        /* Introduit le 20200618135249...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/sequence.01.I"
#undef    PAS_DES_IMAGES

#define   EDITER_LES_MESSAGES_D_ERREUR                                                                                                  \
                    EDITER_LES_MESSAGES_D_ERREUR_DES_FICHIERS                                                                           \
                                        /* Indique si les messages d'erreur des fichiers doivent etre emis ('VRAI') ou pas ('FAUX'). */

#include  xci/reduction.01.I"
                                        /* ATTENTION, le parametre 'METTRE_UN_FOND' defini dans 'xci/reduction.01$I' n'est pas       */
                                        /* utilise dans '$xci/reduction_64$K'...                                                     */

#define   DIMENSION_DILATATION                                                                                                          \
                    EXP2(DOUP(QUATRE))                                                                                                  \
                                        /* Taille du pave de dilatation si 'IL_FAUT(dilater_les_images)'. ATTENTION, jusqu'au        */ \
                                        /* 20000621153921, il y avait ici 'EXP2(DOUP(TROIS))' ; or en fait, le 'TROIS'               */ \
                                        /* n'est pas en accord avec la progression dans les programmes '$xci/reduction_??$K' :       */ \
                                        /*                                                                                           */ \
                                        /*                  $xci/reduction_04$K         : UN                                         */ \
                                        /*                  $xci/reduction_16$K         : DEUX                                       */ \
                                        /*                  $xci/reduction_64$K         : QUATRE                                     */ \
                                        /*                                                                                           */ \
                                        /* puisque l'on multilie par 2 le nombre de lignes et le nombre de colonnes en passant       */ \
                                        /* d'un programme au suivant...                                                              */

#define   NOMBRE_D_IMAGES_REDUITES                                                                                                      \
                    SOIXANTE_QUATRE                                                                                                     \
                                        /* Nombre d'images constituant la matrice Resultat.                                          */

#define   CONSERVER_LA_SOUS_IMAGE_4x4_BG                                                                                                \
                    FAUX                                                                                                                \
                                        /* Indique si l'on doit conserver la matrice 4x4 'BG' ('VRAI') ou pas ('FAUX').              */
#define   CONSERVER_LA_SOUS_IMAGE_4x4_BD                                                                                                \
                    FAUX                                                                                                                \
                                        /* Indique si l'on doit conserver la matrice 4x4 'BD' ('VRAI') ou pas ('FAUX').              */
#define   CONSERVER_LA_SOUS_IMAGE_4x4_HG                                                                                                \
                    FAUX                                                                                                                \
                                        /* Indique si l'on doit conserver la matrice 4x4 'HG' ('VRAI') ou pas ('FAUX').              */
#define   CONSERVER_LA_SOUS_IMAGE_4x4_HD                                                                                                \
                    FAUX                                                                                                                \
                                        /* Indique si l'on doit conserver la matrice 4x4 'HD' ('VRAI') ou pas ('FAUX').              */

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

#define   GENERE(FENETRE,imageR)                                                                                                        \
                    Bblock                                                                                                              \
                    GENERE_REDUCTION(FENETRE,imageR,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES,TOUJOURS_FAUX,dimension_dilatation);        \
                    Eblock                                                                                                              \
                                        /* Procedure d'insertion de l'image courante dans une fenetre.                               */

#define   F_GENERE(FENETRE,FimageR)                                                                                                     \
                    Bblock                                                                                                              \
                    F_GENERE_REDUCTION(FENETRE,FimageR,MULTIPLICITE_4x4_POUR_LES_DEMI_FENETRES);                                        \
                    Eblock                                                                                                              \
                                        /* Procedure d'insertion de l'image courante "non standard" dans une fenetre (introduite     */ \
                                        /* le 20200618135249).                                                                       */

#define   MEMORISATION_D_UNE_SOUS_IMAGE(memoriser_la_sous_image,sous_image,nom_de_la_sous_image)                                        \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(memoriser_la_sous_image))                                                                              \
                         Bblock                                                                                                         \
                         CALi(Iupdate_image(nom_de_la_sous_image,sous_image));                                                          \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Procedure de memorisation facultative d'une sous-image 4x4...                             */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        R E D U C T I O N   D ' U N E   S U I T E   D E   6 4   I M A G E S   A R G U M E N T                                      */
/*        E T   G E N E R A T I O N   D ' U N E   M A T R I C E   L E S   C O N T E N A N T                                          */
/*        E N   V U E   D E   L E S   A N I M E R  :                                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
#include  xci/reduction.03.I"

     DEFV(CHAR,INIC(POINTERc(nom_imageR_BG),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_imageR_BD),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_imageR_HG),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_imageR_HD),NOM_PIPE));
                                        /* Nom des eventuelles images 4x4 a generer.                                                 */
     DEFV(Logical,INIT(conserver_la_sous_image_4x4_BG,CONSERVER_LA_SOUS_IMAGE_4x4_BG));
                                        /* Indique si l'on doit conserver la matrice 4x4 'BG' ('VRAI') ou pas ('FAUX').              */
     DEFV(Logical,INIT(conserver_la_sous_image_4x4_BD,CONSERVER_LA_SOUS_IMAGE_4x4_BD));
                                        /* Indique si l'on doit conserver la matrice 4x4 'BD' ('VRAI') ou pas ('FAUX').              */
     DEFV(Logical,INIT(conserver_la_sous_image_4x4_HG,CONSERVER_LA_SOUS_IMAGE_4x4_HG));
                                        /* Indique si l'on doit conserver la matrice 4x4 'HG' ('VRAI') ou pas ('FAUX').              */
     DEFV(Logical,INIT(conserver_la_sous_image_4x4_HD,CONSERVER_LA_SOUS_IMAGE_4x4_HD));
                                        /* Indique si l'on doit conserver la matrice 4x4 'HD' ('VRAI') ou pas ('FAUX').              */
     /*..............................................................................................................................*/
     EGAL(files_____editer_les_messages_d_erreur_de_lecture_des_fichiers,EDITER_LES_MESSAGES_D_ERREUR);
                                        /* Initialisation de l'indicateur d'edition des messages d'erreur...                         */

     GET_ARGUMENTSi(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_L("Ireduction_moitie_____compatibilite_20030611=""compatibilite_20030611="
                                       ,Ireduction_moitie_____compatibilite_20030611
                                        );
                         GET_ARGUMENT_L("compatibilite_20070824=",compatibilite_20070824);
                         GET_ARGUMENT_L("IFreduction_moitie_____compatibilite_20150123=""compatibilite_20150123="
                                       ,IFreduction_moitie_____compatibilite_20150123
                                        );
                                        /* Argument introduit le 20200618141517...                                                   */

                         GET_ARGUMENT_P("niveau=",Iinitialisation_____valeur_pour_gInettoyage);
                                        /* Introduit le 20120725181511 par "syemtrie" avec 'v $xci/reduction_04$K 20120724113820'    */
                                        /* et 'v $xci/reduction_16$K 20120724113824'.                                                */

                         GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         GET_ARGUMENT_L("standard=",les_images_sont_standards);
                                        /* Argument introduit le 20200618135249...                                                   */
                         GET_ARGUMENT_C("postfixe=",nom_postfixe);
                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);
                         GET_ARGUMENT_L("BG=",conserver_la_sous_image_4x4_BG);
                         GET_ARGUMENT_C("imageR_BG=""R_BG=",nom_imageR_BG);
                         GET_ARGUMENT_L("BD=",conserver_la_sous_image_4x4_BD);
                         GET_ARGUMENT_C("imageR_BD=""R_BD=",nom_imageR_BD);
                         GET_ARGUMENT_L("HG=",conserver_la_sous_image_4x4_HG);
                         GET_ARGUMENT_C("imageR_HG=""R_HG=",nom_imageR_HG);
                         GET_ARGUMENT_L("HD=",conserver_la_sous_image_4x4_HD);
                         GET_ARGUMENT_C("imageR_HD=""R_HD=",nom_imageR_HD);
                         GET_ARGUMENT_I("premiere=""numero=""n=",premiere_image);
                         GET_ARGUMENT_I("derniere=",derniere_image);
                         GET_ARGUMENT_F("pas=",pas_des_images);
                         GET_ARGUMENT_L("calculer=",calculer_le_pas_des_images);
                         GET_ARGUMENT_L("premiere_derniere=",aller_de_la_premiere_a_la_derniere_image_lors_du_calcul_du_pas_des_images);
                         GET_ARGUMENT_L("permuter_postfixe_numero=""permuter=""ppn=",permuter_l_eventuel_postfixe_et_le_numero);
                                        /* Argument introduit le 20151021173308...                                                   */
                         GET_ARGUMENT_L("modulo=",gerer_modulo_les_numeros_des_images);
                         GET_ARGUMENT_L("editer=",editer_le_nom_des_images_reduites);
                         GET_ARGUMENT_L("editer_numero=",editer_seulement_le_numero_des_images_reduites);
                         GET_ARGUMENT_I("chiffres=",nombre_de_chiffres);

                         GET_ARGUMENT_L("dilater=",dilater_les_images);
                         GET_ARGUMENT_I("points=""pave=""p=",dimension_dilatation);
                         GET_ARGUMENT_L("tous_niveaux=""tous=",dilatation_tous_les_niveaux);
                         GET_ARGUMENT_L("dilatation_carree=""dcarree=",dilatation_carree);
                                        /* Le 20060118093150, "carre=" a ete remplace par "dilatation_carree=" et "dcarree="         */
                                        /* (risque de double definition...).                                                         */
                         GET_ARGUMENT_L("moyenne=",moyennage);
                         GET_ARGUMENT_L("maximum=",calculer_le_maximum);
                         )
                    );
                                        /* Le 20030912124254, 'files_____editer_les_messages_d_erreur_de_lecture_des_fichiers'       */
                                        /* via "erreur=" et "erreurs=" a ete supprime car, en effet, il etait redondant avec         */
                                        /* 'v $xig/fonct$vv$DEF ErreurLecture='.                                                     */

     EGAL(numero_d_image,FLOT(premiere_image));
                                        /* Numero de l'image courante.                                                               */

     CALi(gInettoyage(les_images_sont_standards,ImageA1,IFmageA1));
     CALi(gInettoyage(les_images_sont_standards,ImageA2,IFmageA2));
     CALi(gInettoyage(les_images_sont_standards,ImageA3,IFmageA3));
     CALi(gInettoyage(les_images_sont_standards,ImageA4,IFmageA4));
     CALi(gInettoyage(les_images_sont_standards,ImageA5,IFmageA5));
     CALi(gInettoyage(les_images_sont_standards,ImageA6,IFmageA6));
     CALi(gInettoyage(les_images_sont_standards,ImageA7,IFmageA7));
     CALi(gInettoyage(les_images_sont_standards,ImageA8,IFmageA8));
     CALi(gInettoyage(les_images_sont_standards,ImageA9,IFmageA9));
                                        /* Nettoyage non pas par pure hygiene, mais au cas ou des images manqueraient dans la        */
                                        /* sequence : cela permet de les remplacer par du noir...                                    */
     CALi(gInettoyage(les_images_sont_standards,ImageR,IFmageR));
                                        /* Initialisation de l'image Resultat.                                                       */

     Test(EST_VRAI(les_images_sont_standards))
                                        /* Test (et possibilite) introduit le 20200618135249...                                      */
          Bblock
          GENERE(DEMI_FENETRE_BG_MULTIPLE,ImageA1);
          GENERE(DEMI_FENETRE_BD_MULTIPLE,ImageA1);
          GENERE(DEMI_FENETRE_BG_MULTIPLE,ImageA2);
          GENERE(DEMI_FENETRE_BD_MULTIPLE,ImageA2);
          GENERE(DEMI_FENETRE_BG_MULTIPLE,ImageA3);
          GENERE(DEMI_FENETRE_BD_MULTIPLE,ImageA3);
          GENERE(DEMI_FENETRE_BG_MULTIPLE,ImageA4);
          GENERE(DEMI_FENETRE_BD_MULTIPLE,ImageA4);

          GENERE(DEMI_FENETRE_HG_MULTIPLE,ImageA1);
          GENERE(DEMI_FENETRE_HD_MULTIPLE,ImageA1);
          GENERE(DEMI_FENETRE_HG_MULTIPLE,ImageA2);
          GENERE(DEMI_FENETRE_HD_MULTIPLE,ImageA2);
          GENERE(DEMI_FENETRE_HG_MULTIPLE,ImageA3);
          GENERE(DEMI_FENETRE_HD_MULTIPLE,ImageA3);
          GENERE(DEMI_FENETRE_HG_MULTIPLE,ImageA4);
          GENERE(DEMI_FENETRE_HD_MULTIPLE,ImageA4);

          GENERE(DEMI_FENETRE_BG_MULTIPLE,ImageA5);
          GENERE(DEMI_FENETRE_BD_MULTIPLE,ImageA5);
          GENERE(DEMI_FENETRE_BG_MULTIPLE,ImageA6);
          GENERE(DEMI_FENETRE_BD_MULTIPLE,ImageA6);
          GENERE(DEMI_FENETRE_BG_MULTIPLE,ImageA7);
          GENERE(DEMI_FENETRE_BD_MULTIPLE,ImageA7);
          GENERE(DEMI_FENETRE_BG_MULTIPLE,ImageA8);
          GENERE(DEMI_FENETRE_BD_MULTIPLE,ImageA8);

          GENERE(DEMI_FENETRE_HG_MULTIPLE,ImageA5);
          GENERE(DEMI_FENETRE_HD_MULTIPLE,ImageA5);
          GENERE(DEMI_FENETRE_HG_MULTIPLE,ImageA6);
          GENERE(DEMI_FENETRE_HD_MULTIPLE,ImageA6);
          GENERE(DEMI_FENETRE_HG_MULTIPLE,ImageA7);
          GENERE(DEMI_FENETRE_HD_MULTIPLE,ImageA7);
          GENERE(DEMI_FENETRE_HG_MULTIPLE,ImageA8);
          GENERE(DEMI_FENETRE_HD_MULTIPLE,ImageA8);

                                        /* Reduction primaire,                                                                       */

          DEMI_FENETRE_BG_MULTIPLE(ImageA9
                                  ,ImageA1
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );
          DEMI_FENETRE_BD_MULTIPLE(ImageA9
                                  ,ImageA2
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );
          DEMI_FENETRE_HG_MULTIPLE(ImageA9
                                  ,ImageA5
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );
          DEMI_FENETRE_HD_MULTIPLE(ImageA9
                                  ,ImageA6
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );

                                        /* Reduction secondaire.                                                                     */

          DEMI_FENETRE_BG_MULTIPLE(ImageR
                                  ,ImageA9
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );
                                        /* Reduction tertiaire.                                                                      */

          MEMORISATION_D_UNE_SOUS_IMAGE(conserver_la_sous_image_4x4_BG,ImageA9,nom_imageR_BG);
                                        /* Et memorisation eventuelle de la sous image 4x4...                                        */

          DEMI_FENETRE_BG_MULTIPLE(ImageA9
                                  ,ImageA3
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );
          DEMI_FENETRE_BD_MULTIPLE(ImageA9
                                  ,ImageA4
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );
          DEMI_FENETRE_HG_MULTIPLE(ImageA9
                                  ,ImageA7
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );
          DEMI_FENETRE_HD_MULTIPLE(ImageA9
                                  ,ImageA8
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );

                                        /* Reduction secondaire.                                                                     */

          DEMI_FENETRE_BD_MULTIPLE(ImageR
                                  ,ImageA9
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );
                                        /* Reduction tertiaire.                                                                      */

          MEMORISATION_D_UNE_SOUS_IMAGE(conserver_la_sous_image_4x4_BD,ImageA9,nom_imageR_BD);
                                        /* Et memorisation eventuelle de la sous image 4x4...                                        */

          CALi(Inoir(ImageA1));
          CALi(Inoir(ImageA2));
          CALi(Inoir(ImageA3));
          CALi(Inoir(ImageA4));
          CALi(Inoir(ImageA5));
          CALi(Inoir(ImageA6));
          CALi(Inoir(ImageA7));
          CALi(Inoir(ImageA8));
                                        /* Nettoyage non pas par pure hygiene, mais au cas ou des images manqueraient dans la        */
                                        /* sequence : cela permet de les remplacer par du noir...                                    */

          GENERE(DEMI_FENETRE_BG_MULTIPLE,ImageA1);
          GENERE(DEMI_FENETRE_BD_MULTIPLE,ImageA1);
          GENERE(DEMI_FENETRE_BG_MULTIPLE,ImageA2);
          GENERE(DEMI_FENETRE_BD_MULTIPLE,ImageA2);
          GENERE(DEMI_FENETRE_BG_MULTIPLE,ImageA3);
          GENERE(DEMI_FENETRE_BD_MULTIPLE,ImageA3);
          GENERE(DEMI_FENETRE_BG_MULTIPLE,ImageA4);
          GENERE(DEMI_FENETRE_BD_MULTIPLE,ImageA4);

          GENERE(DEMI_FENETRE_HG_MULTIPLE,ImageA1);
          GENERE(DEMI_FENETRE_HD_MULTIPLE,ImageA1);
          GENERE(DEMI_FENETRE_HG_MULTIPLE,ImageA2);
          GENERE(DEMI_FENETRE_HD_MULTIPLE,ImageA2);
          GENERE(DEMI_FENETRE_HG_MULTIPLE,ImageA3);
          GENERE(DEMI_FENETRE_HD_MULTIPLE,ImageA3);
          GENERE(DEMI_FENETRE_HG_MULTIPLE,ImageA4);
          GENERE(DEMI_FENETRE_HD_MULTIPLE,ImageA4);

          GENERE(DEMI_FENETRE_BG_MULTIPLE,ImageA5);
          GENERE(DEMI_FENETRE_BD_MULTIPLE,ImageA5);
          GENERE(DEMI_FENETRE_BG_MULTIPLE,ImageA6);
          GENERE(DEMI_FENETRE_BD_MULTIPLE,ImageA6);
          GENERE(DEMI_FENETRE_BG_MULTIPLE,ImageA7);
          GENERE(DEMI_FENETRE_BD_MULTIPLE,ImageA7);
          GENERE(DEMI_FENETRE_BG_MULTIPLE,ImageA8);
          GENERE(DEMI_FENETRE_BD_MULTIPLE,ImageA8);

          GENERE(DEMI_FENETRE_HG_MULTIPLE,ImageA5);
          GENERE(DEMI_FENETRE_HD_MULTIPLE,ImageA5);
          GENERE(DEMI_FENETRE_HG_MULTIPLE,ImageA6);
          GENERE(DEMI_FENETRE_HD_MULTIPLE,ImageA6);
          GENERE(DEMI_FENETRE_HG_MULTIPLE,ImageA7);
          GENERE(DEMI_FENETRE_HD_MULTIPLE,ImageA7);
          GENERE(DEMI_FENETRE_HG_MULTIPLE,ImageA8);
          GENERE(DEMI_FENETRE_HD_MULTIPLE,ImageA8);

                                        /* Reduction primaire,                                                                       */

          DEMI_FENETRE_BG_MULTIPLE(ImageA9
                                  ,ImageA1
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );
          DEMI_FENETRE_BD_MULTIPLE(ImageA9
                                  ,ImageA2
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );
          DEMI_FENETRE_HG_MULTIPLE(ImageA9
                                  ,ImageA5
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );
          DEMI_FENETRE_HD_MULTIPLE(ImageA9
                                  ,ImageA6
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );

                                        /* Reduction secondaire.                                                                     */

          DEMI_FENETRE_HG_MULTIPLE(ImageR
                                  ,ImageA9
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );
                                        /* Reduction tertiaire.                                                                      */

          MEMORISATION_D_UNE_SOUS_IMAGE(conserver_la_sous_image_4x4_HG,ImageA9,nom_imageR_HG);
                                        /* Et memorisation eventuelle de la sous image 4x4...                                        */

          DEMI_FENETRE_BG_MULTIPLE(ImageA9
                                  ,ImageA3
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );
          DEMI_FENETRE_BD_MULTIPLE(ImageA9
                                  ,ImageA4
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );
          DEMI_FENETRE_HG_MULTIPLE(ImageA9
                                  ,ImageA7
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );
          DEMI_FENETRE_HD_MULTIPLE(ImageA9
                                  ,ImageA8
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );

                                        /* Reduction secondaire.                                                                     */

          DEMI_FENETRE_HD_MULTIPLE(ImageR
                                  ,ImageA9
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                  ,moyennage
                                  ,calculer_le_maximum
                                   );
                                        /* Reduction tertiaire.                                                                      */

          MEMORISATION_D_UNE_SOUS_IMAGE(conserver_la_sous_image_4x4_HD,ImageA9,nom_imageR_HD);
                                        /* Et memorisation eventuelle de la sous image 4x4...                                        */
          Eblock
     ATes
          Bblock
          F_GENERE(F_DEMI_FENETRE_BG_MULTIPLE,IFmageA1);
          F_GENERE(F_DEMI_FENETRE_BD_MULTIPLE,IFmageA1);
          F_GENERE(F_DEMI_FENETRE_BG_MULTIPLE,IFmageA2);
          F_GENERE(F_DEMI_FENETRE_BD_MULTIPLE,IFmageA2);
          F_GENERE(F_DEMI_FENETRE_BG_MULTIPLE,IFmageA3);
          F_GENERE(F_DEMI_FENETRE_BD_MULTIPLE,IFmageA3);
          F_GENERE(F_DEMI_FENETRE_BG_MULTIPLE,IFmageA4);
          F_GENERE(F_DEMI_FENETRE_BD_MULTIPLE,IFmageA4);

          F_GENERE(F_DEMI_FENETRE_HG_MULTIPLE,IFmageA1);
          F_GENERE(F_DEMI_FENETRE_HD_MULTIPLE,IFmageA1);
          F_GENERE(F_DEMI_FENETRE_HG_MULTIPLE,IFmageA2);
          F_GENERE(F_DEMI_FENETRE_HD_MULTIPLE,IFmageA2);
          F_GENERE(F_DEMI_FENETRE_HG_MULTIPLE,IFmageA3);
          F_GENERE(F_DEMI_FENETRE_HD_MULTIPLE,IFmageA3);
          F_GENERE(F_DEMI_FENETRE_HG_MULTIPLE,IFmageA4);
          F_GENERE(F_DEMI_FENETRE_HD_MULTIPLE,IFmageA4);

          F_GENERE(F_DEMI_FENETRE_BG_MULTIPLE,IFmageA5);
          F_GENERE(F_DEMI_FENETRE_BD_MULTIPLE,IFmageA5);
          F_GENERE(F_DEMI_FENETRE_BG_MULTIPLE,IFmageA6);
          F_GENERE(F_DEMI_FENETRE_BD_MULTIPLE,IFmageA6);
          F_GENERE(F_DEMI_FENETRE_BG_MULTIPLE,IFmageA7);
          F_GENERE(F_DEMI_FENETRE_BD_MULTIPLE,IFmageA7);
          F_GENERE(F_DEMI_FENETRE_BG_MULTIPLE,IFmageA8);
          F_GENERE(F_DEMI_FENETRE_BD_MULTIPLE,IFmageA8);

          F_GENERE(F_DEMI_FENETRE_HG_MULTIPLE,IFmageA5);
          F_GENERE(F_DEMI_FENETRE_HD_MULTIPLE,IFmageA5);
          F_GENERE(F_DEMI_FENETRE_HG_MULTIPLE,IFmageA6);
          F_GENERE(F_DEMI_FENETRE_HD_MULTIPLE,IFmageA6);
          F_GENERE(F_DEMI_FENETRE_HG_MULTIPLE,IFmageA7);
          F_GENERE(F_DEMI_FENETRE_HD_MULTIPLE,IFmageA7);
          F_GENERE(F_DEMI_FENETRE_HG_MULTIPLE,IFmageA8);
          F_GENERE(F_DEMI_FENETRE_HD_MULTIPLE,IFmageA8);

                                        /* Reduction primaire,                                                                       */

          F_DEMI_FENETRE_BG_MULTIPLE(IFmageA9
                                    ,IFmageA1
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );
          F_DEMI_FENETRE_BD_MULTIPLE(IFmageA9
                                    ,IFmageA2
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );
          F_DEMI_FENETRE_HG_MULTIPLE(IFmageA9
                                    ,IFmageA5
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );
          F_DEMI_FENETRE_HD_MULTIPLE(IFmageA9
                                    ,IFmageA6
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );

                                        /* Reduction secondaire.                                                                     */

          F_DEMI_FENETRE_BG_MULTIPLE(IFmageR
                                    ,IFmageA9
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );
                                        /* Reduction tertiaire.                                                                      */

          F_DEMI_FENETRE_BG_MULTIPLE(IFmageA9
                                    ,IFmageA3
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );
          F_DEMI_FENETRE_BD_MULTIPLE(IFmageA9
                                    ,IFmageA4
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );
          F_DEMI_FENETRE_HG_MULTIPLE(IFmageA9
                                    ,IFmageA7
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );
          F_DEMI_FENETRE_HD_MULTIPLE(IFmageA9
                                    ,IFmageA8
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );

                                        /* Reduction secondaire.                                                                     */

          F_DEMI_FENETRE_BD_MULTIPLE(IFmageR
                                    ,IFmageA9
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );
                                        /* Reduction tertiaire.                                                                      */

          CALi(IFinitialisation(IFmageA1,FZERO));
          CALi(IFinitialisation(IFmageA2,FZERO));
          CALi(IFinitialisation(IFmageA3,FZERO));
          CALi(IFinitialisation(IFmageA4,FZERO));
          CALi(IFinitialisation(IFmageA5,FZERO));
          CALi(IFinitialisation(IFmageA6,FZERO));
          CALi(IFinitialisation(IFmageA7,FZERO));
          CALi(IFinitialisation(IFmageA8,FZERO));
                                        /* Nettoyage non pas par pure hygiene, mais au cas ou des images manqueraient dans la        */
                                        /* sequence : cela permet de les remplacer par du noir...                                    */

          F_GENERE(F_DEMI_FENETRE_BG_MULTIPLE,IFmageA1);
          F_GENERE(F_DEMI_FENETRE_BD_MULTIPLE,IFmageA1);
          F_GENERE(F_DEMI_FENETRE_BG_MULTIPLE,IFmageA2);
          F_GENERE(F_DEMI_FENETRE_BD_MULTIPLE,IFmageA2);
          F_GENERE(F_DEMI_FENETRE_BG_MULTIPLE,IFmageA3);
          F_GENERE(F_DEMI_FENETRE_BD_MULTIPLE,IFmageA3);
          F_GENERE(F_DEMI_FENETRE_BG_MULTIPLE,IFmageA4);
          F_GENERE(F_DEMI_FENETRE_BD_MULTIPLE,IFmageA4);

          F_GENERE(F_DEMI_FENETRE_HG_MULTIPLE,IFmageA1);
          F_GENERE(F_DEMI_FENETRE_HD_MULTIPLE,IFmageA1);
          F_GENERE(F_DEMI_FENETRE_HG_MULTIPLE,IFmageA2);
          F_GENERE(F_DEMI_FENETRE_HD_MULTIPLE,IFmageA2);
          F_GENERE(F_DEMI_FENETRE_HG_MULTIPLE,IFmageA3);
          F_GENERE(F_DEMI_FENETRE_HD_MULTIPLE,IFmageA3);
          F_GENERE(F_DEMI_FENETRE_HG_MULTIPLE,IFmageA4);
          F_GENERE(F_DEMI_FENETRE_HD_MULTIPLE,IFmageA4);

          F_GENERE(F_DEMI_FENETRE_BG_MULTIPLE,IFmageA5);
          F_GENERE(F_DEMI_FENETRE_BD_MULTIPLE,IFmageA5);
          F_GENERE(F_DEMI_FENETRE_BG_MULTIPLE,IFmageA6);
          F_GENERE(F_DEMI_FENETRE_BD_MULTIPLE,IFmageA6);
          F_GENERE(F_DEMI_FENETRE_BG_MULTIPLE,IFmageA7);
          F_GENERE(F_DEMI_FENETRE_BD_MULTIPLE,IFmageA7);
          F_GENERE(F_DEMI_FENETRE_BG_MULTIPLE,IFmageA8);
          F_GENERE(F_DEMI_FENETRE_BD_MULTIPLE,IFmageA8);

          F_GENERE(F_DEMI_FENETRE_HG_MULTIPLE,IFmageA5);
          F_GENERE(F_DEMI_FENETRE_HD_MULTIPLE,IFmageA5);
          F_GENERE(F_DEMI_FENETRE_HG_MULTIPLE,IFmageA6);
          F_GENERE(F_DEMI_FENETRE_HD_MULTIPLE,IFmageA6);
          F_GENERE(F_DEMI_FENETRE_HG_MULTIPLE,IFmageA7);
          F_GENERE(F_DEMI_FENETRE_HD_MULTIPLE,IFmageA7);
          F_GENERE(F_DEMI_FENETRE_HG_MULTIPLE,IFmageA8);
          F_GENERE(F_DEMI_FENETRE_HD_MULTIPLE,IFmageA8);

                                        /* Reduction primaire,                                                                       */

          F_DEMI_FENETRE_BG_MULTIPLE(IFmageA9
                                    ,IFmageA1
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );
          F_DEMI_FENETRE_BD_MULTIPLE(IFmageA9
                                    ,IFmageA2
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );
          F_DEMI_FENETRE_HG_MULTIPLE(IFmageA9
                                    ,IFmageA5
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );
          F_DEMI_FENETRE_HD_MULTIPLE(IFmageA9
                                    ,IFmageA6
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );

                                        /* Reduction secondaire.                                                                     */

          F_DEMI_FENETRE_HG_MULTIPLE(IFmageR
                                    ,IFmageA9
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );
                                        /* Reduction tertiaire.                                                                      */

          F_DEMI_FENETRE_BG_MULTIPLE(IFmageA9
                                    ,IFmageA3
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );
          F_DEMI_FENETRE_BD_MULTIPLE(IFmageA9
                                    ,IFmageA4
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );
          F_DEMI_FENETRE_HG_MULTIPLE(IFmageA9
                                    ,IFmageA7
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );
          F_DEMI_FENETRE_HD_MULTIPLE(IFmageA9
                                    ,IFmageA8
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );

                                        /* Reduction secondaire.                                                                     */

          F_DEMI_FENETRE_HD_MULTIPLE(IFmageR
                                    ,IFmageA9
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,MULTIPLICITE_8x8_POUR_LES_DEMI_FENETRES
                                    ,moyennage
                                    ,calculer_le_maximum
                                     );
                                        /* Reduction tertiaire.                                                                      */
          Eblock
     ETes

     CALi(gIupdate_image(les_images_sont_standards,nom_imageR,ImageR,IFmageR));
                                        /* Et rangement...                                                                           */

     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.