/*************************************************************************************************************************************/ /* */ /* G E N E R A T I O N D ' U N E G R I L L E O R T H O G O N A L E : */ /* */ /* */ /* Definition : */ /* */ /* Cette commande genere une image */ /* dont le nom est l'argument d'appel, */ /* et qui contient une grille ortho- */ /* gonale dont les differents para- */ /* metres sont programmables. */ /* */ /* */ /* Author of '$xci/grille.01$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 1987??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 TRACER_LES_BARRES_HORIZONTALES \ VRAI #define TRACER_LES_BARRES_VERTICALES__ \ VRAI /* Choix des barres a tracer (introduit le 20190713114706...). */ #define ORIGINE_NORMALISEE \ VRAI \ /* L'origine est-elle normalisee ('VRAI') ou pas ('FAUX') ? Ceci a ete introduit le */ \ /* 20170715102646... */ #define X_ORIGINE \ FXorigine #define Y_ORIGINE \ FYorigine /* Origine de la grille. */ #define X_INCREMENT_GAUCHE \ ZERO #define X_INCREMENT_DROITE \ ZERO #define Y_INCREMENT_BAS___ \ ZERO #define Y_INCREMENT_HAUT__ \ ZERO /* Afin de pouvoir epaissir la grille (introduit le 20180618172919...) */ #define MAILLE_ABSOLUE \ VRAI \ /* Le maillage peut etre definie en nombre d'inter-points ('VRAI') ou bien relativement a */ \ /* a ['dimX','dimY'] ('FAUX'). */ #define X_MAILLE \ SEIZE #define Y_MAILLE \ SEIZE /* Maille de la grille. */ #define NUMERO_DE_COULEUR \ BLANC \ /* Couleur du trace. */ #define COMPATIBILITE_20190211 \ FAUX \ /* Permet de proceder a des calculs compatibles a ceux qui furent effectues anterieurement */ \ /* au 20190211140807. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ #define POSITIONNEMENT_DU_CURSEUR_A_LORIGINE \ Bblock \ SET_CURSOR(ADD2(veritable_X_origine,_____lNORMALISE_OX(X_increment)) \ ,ADD2(veritable_Y_origine,_____lNORMALISE_OY(Y_increment)) \ ,FZorigine \ ); \ Eblock \ /* Positionnement du curseur a l'origine (introduit sous cette forme le 20180619132500...). */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* G E N E R A T I O N D ' U N E G R I L L E O R T H O G O N A L E : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE)); DEFV(Int,INIT(index,UNDEF)); /* Index de generation. */ DEFV(Logical,INIT(tracer_les_barres_horizontales,TRACER_LES_BARRES_HORIZONTALES)); DEFV(Logical,INIT(tracer_les_barres_verticales__,TRACER_LES_BARRES_VERTICALES__)); /* Choix des barres a tracer (introduit le 20190713114706...). */ DEFV(genere_p,INIT(numero_de_couleur,NUMERO_DE_COULEUR)); /* Numero de la couleur courante... */ DEFV(Logical,INIT(origine_normalisee,ORIGINE_NORMALISEE)); /* L'origine est-elle normalisee ('VRAI') ou pas ('FAUX') ? Ceci a ete introduit le */ /* 20170715102646... */ DEFV(Float,INIT(X_origine,X_ORIGINE)); DEFV(Float,INIT(Y_origine,Y_ORIGINE)); /* Origine de la grille. */ DEFV(Float,INIT(veritable_X_origine,FLOT__UNDEF)); DEFV(Float,INIT(veritable_Y_origine,FLOT__UNDEF)); /* Origine de la grille reellement utilisee. */ DEFV(Int,INIT(X_increment_gauche,X_INCREMENT_GAUCHE)); DEFV(Int,INIT(X_increment_droite,X_INCREMENT_DROITE)); DEFV(Int,INIT(Y_increment_bas___,Y_INCREMENT_BAS___)); DEFV(Int,INIT(Y_increment_haut__,Y_INCREMENT_HAUT__)); /* Afin de pouvoir epaissir la grille (introduit le 20180618172919...) */ DEFV(Logical,INIT(maille_absolue,MAILLE_ABSOLUE)); /* Le maillage peut etre definie en nombre d'inter-points ('VRAI') ou bien relativement a */ /* a ['dimX','dimY'] ('FAUX'). */ DEFV(Float,INIT(X_maille,FLOT(X_MAILLE))); DEFV(Float,INIT(Y_maille,FLOT(Y_MAILLE))); /* Maille de la grille donnee en argument. */ DEFV(Float,INIT(veritable_X_maille,UNDEF)); DEFV(Float,INIT(veritable_Y_maille,UNDEF)); /* Maille reellement utilisee. Le 20190211142730, il y a eu passage de 'Int' a 'Float' afin */ /* de garantir la "neutralite" d'une denormalisation lors de leurs definitions ci-dessous */ /* suivie d'une normalisation ('v $xiii/vecteurs$DEF .define...S..K..')... */ DEFV(Logical,INIT(compatibilite_20190211,COMPATIBILITE_20190211)); /* Permet de proceder a des calculs compatibles a ceux qui furent effectues anterieurement */ /* au 20190211140807. */ /*..............................................................................................................................*/ GET_ARGUMENTSg(nombre_d_arguments ,BLOC(GET_ARGUMENT_L("SX_SY_SZ_____compatibilite_20070416=""compatibilite_20070416=" ,SX_SY_SZ_____compatibilite_20070416 ); /* Parametre introduit le 20070416160601... */ GET_ARGUMENT_L("compatibilite_20190211=",compatibilite_20190211); /* Parametre introduit le 20190211140807... */ GET_ARGUMENT_C("imageA=""A=",nom_imageA); GET_ARGUMENT_C("imageR=""R=",nom_imageR); GET_ARGUMENT_L("barres_horizontales=""bh=",tracer_les_barres_horizontales); GET_ARGUMENT_L("barres_verticales=""bv=",tracer_les_barres_verticales__); /* Parametres introduits le 20190713114706... */ GET_ARGUMENT_L("Onormalisee=",origine_normalisee); GET_ARGUMENT_N("Odenormalisee=",origine_normalisee); /* Parametres introduits le 20170715102646... */ GET_ARGUMENT_F("ox=",X_origine); GET_ARGUMENT_F("oy=",Y_origine); GET_ARGUMENT_L("X_dans_image=""Xdi=""xdi=",vecteurs_____cursor_3D__ramener_la_coordonnee_X_dans_l_image); GET_ARGUMENT_L("Y_dans_image=""Ydi=""ydi=",vecteurs_____cursor_3D__ramener_la_coordonnee_Y_dans_l_image); /* Parametres introduits le 20180620140957... */ GET_ARGUMENT_I("X_increment_gauche=""Xig=""xig=",X_increment_gauche); GET_ARGUMENT_I("X_increment_droite=""Xid=""xid=",X_increment_droite); GET_ARGUMENT_I("Y_increment_bas=""Yib=""yib=",Y_increment_bas___); GET_ARGUMENT_I("Y_increment_haut=""Yih=""yih=",Y_increment_haut__); /* Parametres introduits le 20180618172919... */ GET_ARGUMENT_L("absolue=""absolu=""denormalisees=""denormalisee=""denorm=",maille_absolue); GET_ARGUMENT_N("normalisees=""normalisee=""norm=",maille_absolue); /* Les parametres {"denormalisees=","denorm=","normalisees=","norm="} ont ete introduits */ /* le 20091001100622... */ GET_ARGUMENT_F("mx=",X_maille); GET_ARGUMENT_F("my=",Y_maille); GET_ARGUMENT_P("c=""niveau=""couleur=",numero_de_couleur); /* Les parametres {"niveau=","couleur="} ont ete introduits le 20090220182451... */ GET_ARGUMENT_L("editer_vecteur_2D=""ev2D=",IFsegment_____editer_le_vecteur_bidimensionnel); GET_ARGUMENT_L("editer_vecteur_3D=""ev3D=",IFseg3D_____editer_le_vecteur_tridimensionnel); /* Parametres introduits le 20080908182151... */ ) ); EGAL(veritable_X_origine ,COND(EST_VRAI(origine_normalisee) ,X_origine ,_____cNORMALISE_OX(X_origine) ) ); EGAL(veritable_Y_origine ,COND(EST_VRAI(origine_normalisee) ,Y_origine ,_____cNORMALISE_OY(Y_origine) ) ); /* Definition de l'origine de la grille reellement utilisee. */ EGAL(veritable_X_maille ,COND(EST_VRAI(maille_absolue) ,X_maille ,COND(IL_FAUT(compatibilite_20190211) ,_lDENORMALISE_OX(X_maille) ,F__lDENORMALISE_OX(X_maille) ) ) ); EGAL(veritable_Y_maille ,COND(EST_VRAI(maille_absolue) ,Y_maille ,COND(IL_FAUT(compatibilite_20190211) ,_lDENORMALISE_OY(Y_maille) ,F__lDENORMALISE_OY(Y_maille) ) ) ); /* Definition du maillage reellement utilise... */ CALi(FgERASE()); Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageG,nom_imageA)))) Bblock DEFV(Int,INIT(X_increment,UNDEF)); SK(INTER_POINT); SZ(INTER_POINT); SET_COULEURS(NOIR,numero_de_couleur); DoIn(X_increment,X_increment_gauche,X_increment_droite,INTER_POINT) Bblock DEFV(Int,INIT(Y_increment,UNDEF)); DoIn(Y_increment,Y_increment_bas___,Y_increment_haut__,INTER_POINT) Bblock Test(IL_FAUT(tracer_les_barres_verticales__)) /* Test introduit le 20190713114706... */ Bblock SX(veritable_X_maille); SY(dimY); POSITIONNEMENT_DU_CURSEUR_A_LORIGINE; /* Introduit sous cette forme le 20180618172919 afin de pouvoir epaissir la grille et mise */ /* sous cette forme le 20180619132500... */ DoIn(index ,ADD2(_cDENORMALISE_OX(veritable_X_origine),X_increment) ,COND(IL_NE_FAUT_PAS(vecteurs_____cursor_3D__ramener_la_coordonnee_X_dans_l_image) ,Xmax ,ADD2(Xmax,INTE(MUL2(UN_MOINS_mgEPSILON,veritable_X_maille))) ) ,veritable_X_maille ) Bblock CALS(FgMIC()); gA;g2;gB; /* On trace le reseau de barres verticales... */ CALS(FgMOC()); g1; Eblock EDoI Eblock ATes Bblock Eblock ETes Test(IL_FAUT(tracer_les_barres_horizontales)) /* Test introduit le 20190713114706... */ Bblock SX(dimX); SY(veritable_Y_maille); POSITIONNEMENT_DU_CURSEUR_A_LORIGINE; /* Introduit sous cette forme le 20180618172919 afin de pouvoir epaissir la grille et mise */ /* sous cette forme le 20180619132500... */ DoIn(index ,ADD2(_cDENORMALISE_OY(veritable_Y_origine),Y_increment) ,COND(IL_NE_FAUT_PAS(vecteurs_____cursor_3D__ramener_la_coordonnee_Y_dans_l_image) ,Ymax ,ADD2(Ymax,INTE(MUL2(UN_MOINS_mgEPSILON,veritable_Y_maille))) ) ,veritable_Y_maille ) Bblock CALS(FgMIC()); gA;g1;gB; /* On trace le reseau de barres horizontales... */ CALS(FgMOC()); g2; Eblock EDoI Eblock ATes Bblock Eblock ETes Eblock EDoI Eblock EDoI Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes CALi(Iupdate_image(nom_imageR,ImageG)); RETU_Commande; Eblock ECommande