/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T I O N   D ' U N E   T R A M E   D ' E N T R E L A C A G E  :                                                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/entrelace$K' :                                                                                             */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1993??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   GENERER_UNE_TRAME_HORIZONTALE                                                                                                 \
                    VRAI                                                                                                                \
                                        /* Indique si la trame doit etre horizontale ('VRAI') ou verticale ('FAUX').                 */

#define   GENERER_LES_ELEMENTS_IMPAIRS                                                                                                  \
                    VRAI                                                                                                                \
                                        /* Indique si l'on doit generer les lignes ou les colonnes de numero impair ('VRAI') ou      */ \
                                        /* celles de numero pair ('FAUX'), sachant que la numerotation commence a 1...               */

#define   HAUT_GAUCHE                                                                                                                   \
                    vecteurs_____Gcon_00                                                                                                \
                                        /* Definition du coin en haut a gauche,                                                      */
#define   HAUT_DROITE                                                                                                                   \
                    vecteurs_____Gcon_01                                                                                                \
                                        /* Definition du coin en haut a droite.                                                      */

#define   GAUCHE_HAUT                                                                                                                   \
                    vecteurs_____Gcon_02                                                                                                \
                                        /* Definition du coin a gauche en haut,                                                      */
#define   GAUCHE_BAS                                                                                                                    \
                    vecteurs_____Gcon_03                                                                                                \
                                        /* Definition du coin a gauche en bas.                                                       */

#define   NIVEAU_DES_LIGNES                                                                                                             \
                    BLANC

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T I O N   D ' U N   T R A M E   D ' E N T R E L A C A G E  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));
     DEFV(Logical,INIT(generer_une_trame_horizontale,GENERER_UNE_TRAME_HORIZONTALE));
                                        /* Indique si la trame doit etre horizontale ('VRAI') ou verticale ('FAUX').                 */
     DEFV(Logical,INIT(generer_les_elements_impairs,GENERER_LES_ELEMENTS_IMPAIRS));
                                        /* Indique si l'on doit generer les lignes ou les colonnes de numero impair ('VRAI') ou      */
                                        /* celles de numero pair ('FAUX'), sachant que la numerotation commence a 1...               */
     DEFV(genere_p,INIT(niveau_des_lignes,NIVEAU_DES_LIGNES));
                                        /* Niveau par defaut des lignes.                                                             */
     /*..............................................................................................................................*/
     GET_ARGUMENTSg(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_L("SX_SY_SZ_____compatibilite_20070416=""compatibilite_20070416="
                                       ,SX_SY_SZ_____compatibilite_20070416
                                        );
                                        /* Parametre introduit le 20070416160448...                                                  */

                         GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);

                         GET_ARGUMENT_L("horizontale=""horizontal=""h=",generer_une_trame_horizontale);
                         GET_ARGUMENT_L("impairs=""impair=",generer_les_elements_impairs);
                         GET_ARGUMENT_P("niveau=""n=",niveau_des_lignes);
                         )
                    );

     Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageG,nom_imageA))))
          Bblock
          SK(INTER_POINT);
          Test(IL_FAUT(generer_une_trame_horizontale))
               Bblock
               SX(NEUT(INTER_POINT));
               SY(DOUB(INTER_POINT));
               Eblock
          ATes
               Bblock
               SX(DOUB(INTER_POINT));
               SY(NEUT(INTER_POINT));
               Eblock
          ETes

          SET_COULEURS(NOIR,niveau_des_lignes);

          SET_CURSOR(_____cNORMALISE_OX(Xmin),_____cNORMALISE_OY(Ymax),_____cNORMALISE_OZ(Zmin));
          WCG(HAUT_GAUCHE);
                                        /* Definition du coin en haut a gauche de la ligne initiale...                               */
          WCG(GAUCHE_HAUT);
                                        /* Definition du coin a gauche en haut de la ligne initiale...                               */

          Test(IL_FAUT(generer_une_trame_horizontale))
               Bblock
               SET_CURSOR(_____cNORMALISE_OX(Xmax),_____cNORMALISE_OY(Ymax),_____cNORMALISE_OZ(Zmin));
               WCG(HAUT_DROITE);
                                        /* Definition du coin en haut a droite de la ligne initiale...                               */
               Test(IL_FAUT(generer_les_elements_impairs))
                    Bblock
                                        /* Dans le cas ou il faut generer les elements de rang impair (1,3,5,...) le curseur est     */
                                        /* deja bien positionne ; il convient de ne pas oublier que dans ce contexte la ligne qui    */
                                        /* a l'ordonnee 'Ymax' porte le numero 1, c'est-a-dire qu'elle est impaire...                */
                    Eblock
               ATes
                    Bblock
                                        /* Dans le cas ou il faut generer les elements de rang pair (2,4,6...), il faut descendre    */
                                        /* le curseur d'un demi-cran...                                                              */
                    RCG(HAUT_GAUCHE);
                    CALS(FgMIY());
                    SY(NEUT(INTER_POINT));
                    g4;
                    CALS(FgMOY());
                    WCG(HAUT_GAUCHE);
                    RCG(HAUT_DROITE);
                    CALS(FgMIY());
                    SY(NEUT(INTER_POINT));
                    g4;
                    CALS(FgMOY());
                    WCG(HAUT_DROITE);
                    Eblock
               ETes

               Repe(MOIT(dimY))
                    Bblock
                    RCG(HAUT_GAUCHE);gA;
                    RCG(HAUT_DROITE);gB;
                                        /* Trace de la ligne courante.                                                               */
                    RCG(HAUT_GAUCHE);
                    g4;
                    WCG(HAUT_GAUCHE);
                                        /* Modification du coin en haut a gauche de la ligne courante.                               */
                    RCG(HAUT_DROITE);
                    g4;
                    WCG(HAUT_DROITE);
                                        /* Modification du coin en haut a droite de la ligne courante.                               */
                    Eblock
               ERep
               Eblock
          ATes
               Bblock
               SET_CURSOR(_____cNORMALISE_OX(Xmin),_____cNORMALISE_OY(Ymin),_____cNORMALISE_OZ(Zmin));
               WCG(GAUCHE_BAS);
                                        /* Definition du coin a gauche en bas de la ligne initiale...                                */
               Test(IL_FAUT(generer_les_elements_impairs))
                    Bblock
                                        /* Dans le cas ou il faut generer les elements de rang impair (1,3,5,...) le curseur est     */
                                        /* deja bien positionne ; il convient de ne pas oublier que dans ce contexte la colonne qui  */
                                        /* a l'abscisse 'Xmax' porte le numero 1, c'est-a-dire qu'elle est impaire...                */
                    Eblock
               ATes
                    Bblock
                                        /* Dans le cas ou il faut generer les elements de rang pair (2,4,6...), il faut deplacer     */
                                        /* le curseur d'un demi-cran...                                                              */
                    RCG(GAUCHE_HAUT);
                    CALS(FgMIX());
                    SX(NEUT(INTER_POINT));
                    g1;
                    CALS(FgMOX());
                    WCG(GAUCHE_HAUT);
                    RCG(GAUCHE_BAS);
                    CALS(FgMIX());
                    SX(NEUT(INTER_POINT));
                    g1;
                    CALS(FgMOX());
                    WCG(GAUCHE_BAS);
                    Eblock
               ETes

               Repe(MOIT(dimX))
                    Bblock
                    RCG(GAUCHE_HAUT);gA;
                    RCG(GAUCHE_BAS);gB;
                                        /* Trace de la ligne courante.                                                               */
                    RCG(GAUCHE_HAUT);
                    g1;
                    WCG(GAUCHE_HAUT);
                                        /* Modification du coin en haut a gauche de la ligne courante.                               */
                    RCG(GAUCHE_BAS);
                    g1;
                    WCG(GAUCHE_BAS);
                                        /* Modification du coin en bas a droite de la ligne courante.                                */
                    Eblock
               ERep
               Eblock
          ETes

          CALi(Iupdate_image(nom_imageR,ImageG));
          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.