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