/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        R E D U C T I O N   D ' U N E   S U I T E   D E   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 2x2=4 (carre) images ; celles-ci                                                                              */
/*                  seront disposees ainsi (les numeros                                                                              */
/*                  de 00 a 03 donnant l'ordre d'appa-                                                                               */
/*                  rition temporelle des images) :                                                                                  */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                Y ^                                                                                                                */
/*                  |                                                                                                                */
/*             Ymax |---------                                                                                                       */
/*                  | 02 | 03 |                                                                                                      */
/*                  |----+----|                                                                                                      */
/*                  | 00 | 01 |                                                                                                      */
/*             Ymin o------------->                                                                                                  */
/*                 Xmin     Xmax  X                                                                                                  */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        ATTENTION :                                                                                                                */
/*                    Pour les images dont les dimensions ne                                                                         */
/*                  sont pas divisibles par 2, cette operation                                                                       */
/*                  introduit une bande noire a droite (si 'dimX'                                                                    */
/*                  n'est pas divisible par 2) et/ou en haut (si                                                                     */
/*                  'dimY' n'est pas divisible par 2). L'utilisation                                                                 */
/*                  de '$xci/dilate.01$X' avec "points=9" permet de                                                                  */
/*                  corriger le defaut...                                                                                            */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/reduction_04$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  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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"

#define   DIMENSION_DILATATION                                                                                                          \
                    EXP2(DOUP(UN))                                                                                                      \
                                        /* Taille du pave de dilatation si 'IL_FAUT(dilater_les_images)'.                            */

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

#define   GENERER_LA_FENETRE_BG                                                                                                         \
                    VRAI
#define   GENERER_LA_FENETRE_BD                                                                                                         \
                    VRAI
#define   GENERER_LA_FENETRE_HG                                                                                                         \
                    VRAI
#define   GENERER_LA_FENETRE_HD                                                                                                         \
                    VRAI
                                        /* Afin de controler selectivement les quatre fenetres {BG,BD,HG,HD}. Cette possibilite      */
                                        /* a ete introduite le 20070707102823...                                                     */

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

#define   GENERE(FENETRE,imageR,generer_la_fenetre)                                                                                     \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(generer_la_fenetre))                                                                                   \
                         Bblock                                                                                                         \
                         GENERE_REDUCTION(FENETRE,imageR,MULTIPLICITE_2x2_POUR_LES_DEMI_FENETRES,mettre_un_fond,dimension_dilatation);  \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Procedure d'insertion de l'image courante "standard" dans une fenetre.                    */
#define   F_GENERE(FENETRE,FimageR,generer_la_fenetre)                                                                                  \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(generer_la_fenetre))                                                                                   \
                         Bblock                                                                                                         \
                         F_GENERE_REDUCTION(FENETRE,FimageR,MULTIPLICITE_2x2_POUR_LES_DEMI_FENETRES);                                   \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Procedure d'insertion de l'image courante "non standard" dans une fenetre.                */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        R E D U C T I O N   D ' U N E   S U I T E   D E   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
     DEFV(CHAR,INIC(POINTERc(nom_imageF),NOM_PIPE));
                                        /* Nom du fond a utiliser au cas ou l'on ne charge pas toutes les images...                  */
     DEFV(Logical,INIT(mettre_un_fond,METTRE_UN_FOND));
                                        /* Indique s'il faut mettre ('VRAI') ou pas ('FAUX') un fond derriere...                     */

#include  xci/reduction.03.I"

     DEFV(Logical,INIT(generer_la_fenetre_BG,GENERER_LA_FENETRE_BG));
     DEFV(Logical,INIT(generer_la_fenetre_BD,GENERER_LA_FENETRE_BD));
     DEFV(Logical,INIT(generer_la_fenetre_HG,GENERER_LA_FENETRE_HG));
     DEFV(Logical,INIT(generer_la_fenetre_HD,GENERER_LA_FENETRE_HD));
                                        /* Afin de controler selectivement les quatre fenetres {BG,BD,HG,HD}. Cette possibilite      */
                                        /* a ete introduite le 20070707102823...                                                     */
     /*..............................................................................................................................*/
     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 20150123180854...                                                   */

                         GET_ARGUMENT_C("imageF=""F=",nom_imageF);
                         GET_ARGUMENT_L("fond=",mettre_un_fond);
                         GET_ARGUMENT_P("niveau=",Iinitialisation_____valeur_pour_gInettoyage);
                         GET_ARGUMENT_F("valeur=",IFinitialisation_____valeur_pour_gInettoyage);
                                        /* Introduits le 20120724113820 pour 'v $xiirs/.PROJ.y1.1.$U valeur=.InFiNi'...              */
                         GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         GET_ARGUMENT_L("standard=",les_images_sont_standards);
                         GET_ARGUMENT_C("postfixe=",nom_postfixe);
                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);
                         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 20151021173040...                                                   */
                         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 20060118092917, "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);

                         GET_ARGUMENT_L("fenetre_BG=""BG=",generer_la_fenetre_BG);
                         GET_ARGUMENT_L("fenetre_BD=""BD=",generer_la_fenetre_BD);
                         GET_ARGUMENT_L("fenetre_HG=""HG=",generer_la_fenetre_HG);
                         GET_ARGUMENT_L("fenetre_HD=""HD=",generer_la_fenetre_HD);
                                        /* Parametres introduits le 20070707102823...                                                */
                         )
                    );
                                        /* Le 20030912124141, '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,ImageR,IFmageR));
                                        /* Initialisation de l'image Resultat.                                                       */

     Test(EST_VRAI(les_images_sont_standards))
          Bblock
          Test(IL_FAUT(mettre_un_fond))
               Bblock
               Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageR,nom_imageF))))
                                        /* Un fond a ete demande, on le charge...                                                    */
                    Bblock
                    Eblock
               ATes
                    Bblock
                    Test__CODE_ERREUR__ERREUR07;

                    EGAL(mettre_un_fond,FAUX);
                                        /* En cas d'erreur, on supprime le fond, ce qui correspond a un fond 'NOIR'.                 */
                    Eblock
               ETes
               Eblock
          ATes
               Bblock
               Eblock
          ETes

          GENERE(DEMI_FENETRE_BG_MULTIPLE,ImageR,generer_la_fenetre_BG);
          GENERE(DEMI_FENETRE_BD_MULTIPLE,ImageR,generer_la_fenetre_BD);
          GENERE(DEMI_FENETRE_HG_MULTIPLE,ImageR,generer_la_fenetre_HG);
          GENERE(DEMI_FENETRE_HD_MULTIPLE,ImageR,generer_la_fenetre_HD);
                                        /* Reduction primaire.                                                                       */
          Eblock
     ATes
          Bblock
          F_GENERE(F_DEMI_FENETRE_BG_MULTIPLE,IFmageR,generer_la_fenetre_BG);
          F_GENERE(F_DEMI_FENETRE_BD_MULTIPLE,IFmageR,generer_la_fenetre_BD);
          F_GENERE(F_DEMI_FENETRE_HG_MULTIPLE,IFmageR,generer_la_fenetre_HG);
          F_GENERE(F_DEMI_FENETRE_HD_MULTIPLE,IFmageR,generer_la_fenetre_HD);
                                        /* Reduction primaire.                                                                       */
          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.