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