/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E P L A C E M E N T   D ' U N   B L O C   D E   P O I N T S  :                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/move$K' :                                                                                                  */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1990??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   METTRE_UN_FOND                                                                                                                \
                    FAUX                                                                                                                \
                                        /* Faut-il mettre un fond au cas ou l'on ne charge pas toutes les images...                  */

#define   DIMENSION_HORIZONTALE                                                                                                         \
                    _____lNORMALISE_OX(dimX)                                                                                            \
                                        /* Dimension horizontale du rectangle.                                                       */
#define   DIMENSION_VERTICALE                                                                                                           \
                    _____lNORMALISE_OY(dimY)                                                                                            \
                                        /* Dimension verticale du rectangle.                                                         */

#define   ABSCISSE_A                                                                                                                    \
                    FXorigine                                                                                                           \
                                        /* Abscisse du rectangle dans 'ImageA'.                                                      */
#define   ORDONNEE_A                                                                                                                    \
                    FYorigine                                                                                                           \
                                        /* Ordonnee du rectangle dans 'ImageA'.                                                      */

#define   TOREA_HORIZONTAL                                                                                                              \
                    FAUX                                                                                                                \
                                        /* La direction horizontale ('X') est-elle repliee sur elle-meme ('VRAI')                    */ \
                                        /* ou non ('FAUX') sur l'image Argument.                                                     */
#define   TOREA_VERTICAL                                                                                                                \
                    FAUX                                                                                                                \
                                        /* La direction verticale ('X') est-elle repliee sur elle-meme ('VRAI')                      */ \
                                        /* ou non ('FAUX') sur l'image Argument.                                                     */

#define   ABSCISSE_R                                                                                                                    \
                    FXorigine                                                                                                           \
                                        /* Abscisse du rectangle dans 'ImageR'.                                                      */
#define   ORDONNEE_R                                                                                                                    \
                    FYorigine                                                                                                           \
                                        /* Ordonnee du rectangle dans 'ImageR'.                                                      */

#define   TORER_HORIZONTAL                                                                                                              \
                    FAUX                                                                                                                \
                                        /* La direction horizontale ('X') est-elle repliee sur elle-meme ('VRAI')                    */ \
                                        /* ou non ('FAUX') sur l'image Resultat.                                                     */
#define   TORER_VERTICAL                                                                                                                \
                    FAUX                                                                                                                \
                                        /* La direction verticale ('X') est-elle repliee sur elle-meme ('VRAI')                      */ \
                                        /* ou non ('FAUX') sur l'image Resultat.                                                     */

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E P L A C E M E N T   D ' U N   B L O C   D E   P O I N T S  :                                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
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...                     */
     DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));
     DEFV(Float,INIT(abscisse_A,ABSCISSE_A));
     DEFV(Float,INIT(ordonnee_A,ORDONNEE_A));
     DEFV(pointF_2D,pointA);
                                        /* Donne le coin "bas-gauche" dans l'image Argument ; ces donnees sont normalisees           */
                                        /* telles que l'unite represente la taille de l'image.                                       */
     DEFV(Logical,INIT(toreA_horizontal,TOREA_HORIZONTAL));
                                        /* La direction horizontale ('X') est-elle repliee sur elle-meme ('VRAI')                    */
                                        /* ou non ('FAUX') sur l'image Argument.                                                     */
     DEFV(Logical,INIT(toreA_vertical,TOREA_VERTICAL));
                                        /* La direction verticale ('X') est-elle repliee sur elle-meme ('VRAI')                      */
                                        /* ou non ('FAUX') sur l'image Argument.                                                     */
     DEFV(Float,INIT(abscisse_R,ABSCISSE_R));
     DEFV(Float,INIT(ordonnee_R,ORDONNEE_R));
     DEFV(pointF_2D,pointR);
                                        /* Donne le coin "bas-gauche" dans l'image Resultat ; ces donnees sont normalisees           */
                                        /* telle que l'unite represente la taille de l'image.                                        */
     DEFV(Logical,INIT(toreR_horizontal,TORER_HORIZONTAL));
                                        /* La direction horizontale ('X') est-elle repliee sur elle-meme ('VRAI')                    */
                                        /* ou non ('FAUX') sur l'image Resultat.                                                     */
     DEFV(Logical,INIT(toreR_vertical,TORER_VERTICAL));
                                        /* La direction verticale ('X') est-elle repliee sur elle-meme ('VRAI')                      */
                                        /* ou non ('FAUX') sur l'image Resultat.                                                     */
     DEFV(Float,INIT(dimension_horizontale,FLOT__UNDEF));
     DEFV(Float,INIT(dimension_verticale,FLOT__UNDEF));
     DEFV(deltaF_2D,dimensions);
                                        /* Dimensions horizontale et verticale du bloc de points ; ces donnees sont                  */
                                        /* normalisee telles que l'unite represente la taille de l'image. On notera que cette        */
                                        /* operation ne peut etre effectuee que lorsque '$formatI' a ete definie et donc apres       */
                                        /* 'GET_ARGUMENTSi(...)', ce qui n'etait pas le cas avant le 20011209175852...               */
     /*..............................................................................................................................*/
     GET_ARGUMENTSi(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("imageF=""F=",nom_imageF);
                         GET_ARGUMENT_L("fond=",mettre_un_fond);
                         GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);
                         GET_ARGUMENT_L("standard=",les_images_sont_standards);
                         GET_ARGUMENT_L("thA=",toreA_horizontal);
                         GET_ARGUMENT_L("tvA=",toreA_vertical);
                         GET_ARGUMENT_F("xA=""XA=",abscisse_A);
                         GET_ARGUMENT_F("yA=""YA=",ordonnee_A);
                         GET_ARGUMENT_L("thR=",toreR_horizontal);
                         GET_ARGUMENT_L("tvR=",toreR_vertical);
                         GET_ARGUMENT_F("xR=""XR=",abscisse_R);
                         GET_ARGUMENT_F("yR=""YR=",ordonnee_R);
                         GIT_ARGUMENT_F("dx=""dX=""h=",dimension_horizontale,DIMENSION_HORIZONTALE);
                         GIT_ARGUMENT_F("dy=""dY=""v=",dimension_verticale,DIMENSION_VERTICALE);
                         )
                    );

     CALi(gInettoyage(les_images_sont_standards,ImageR,IFmageR));
                                        /* Initialisation de l'image Resultat.                                                       */

     Test(IL_FAUT(mettre_un_fond))
          Bblock
          Test(EST_VRAI(les_images_sont_standards))
               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;
                    Eblock
               ETes
               Eblock
          ATes
               Bblock
               PRINT_ATTENTION("en mode non 'standard', il n'est pas possible de mettre un fond");
               Eblock
          ETes
          Eblock
     ATes
          Bblock
          Eblock
     ETes

     INITIALISATION_POINT_2D(pointA,abscisse_A,ordonnee_A);
                                        /* Donne le coin "bas-gauche" dans l'image Argument ; ces donnees sont normalisees           */
                                        /* telles que l'unite represente la taille de l'image.                                       */
     INITIALISATION_POINT_2D(pointR,abscisse_R,ordonnee_R);
                                        /* Donne le coin "bas-gauche" dans l'image Resultat ; ces donnees sont normalisees           */
                                        /* telle que l'unite represente la taille de l'image.                                        */
     INITIALISATION_ACCROISSEMENT_2D(dimensions,dimension_horizontale,dimension_verticale);
                                        /* Dimensions horizontale et verticale du bloc de points ; ces donnees sont                  */
                                        /* normalisee telles que l'unite represente la taille de l'image.                            */

     Test(PAS_D_ERREUR(CODE_ERROR(gIload_image(les_images_sont_standards,ImageA,IFmageA,nom_imageA))))
          Bblock
          Test(EST_VRAI(les_images_sont_standards))
               Bblock
                                        /* Cas d'une image 'image' :                                                                 */
               CALS(Imove_points(ImageR
                                ,ADRESSE(pointR),toreR_horizontal,toreR_vertical
                                ,ImageA
                                ,ADRESSE(pointA),toreA_horizontal,toreA_vertical
                                ,ADRESSE(dimensions)
                                 )
                    );
                                        /* Deplacement d'un rectangle contenu dans 'ImageA' vers 'ImageR'...                         */
               Eblock
          ATes
               Bblock
                                        /* Cas d'une image 'imageF' :                                                                */
               DEFV(deltaF_2D,Rtranslation);
               INITIALISATION_ACCROISSEMENT_2D(Rtranslation
                                              ,SOUS(ASD1(pointR,x),ASD1(pointA,x))
                                              ,SOUS(ASD1(pointR,y),ASD1(pointA,y))
                                               );

               CALS(IFtranslation(IFmageR
                                 ,IFmageA
                                 ,ADRESSE(Rtranslation)
                                 ,IFOU(toreA_horizontal,toreR_horizontal)
                                 ,IFOU(toreA_vertical,toreR_vertical)
                                  )
                    );
               Eblock
          ETes

          CALi(gIupdate_image(les_images_sont_standards,nom_imageR,ImageR,IFmageR));
          Eblock
     ATes
          Bblock
          Test__CODE_ERREUR__ERREUR07;
          Eblock
     ETes

     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.