/*************************************************************************************************************************************/
/* */
/* M I S E D ' U N M E S S A G E S U R U N E I M A G E */
/* A V E C A P R I O R I U N L I S E R E T D E L A C O U L E U R D U F O N D L ' E N C A D R A N T : */
/* */
/* */
/* Author of '$xci/message$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 1995??????????). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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_CONTOURS_EXT
#include image_image_ALPHABET_0_EXT
#include image_image_ALPHABET_1_EXT
#include image_image_ALPHABET_2_EXT
/* L'include de 'image_image_ALPHABET_3_DEF' a ete supprime le 20110502095100... */
#include image_image_ALPHABET_3_EXT
#include image_image_ALPHABET_4_EXT
/* Introduit le 20161116111552... */
#include image_image_ALPHABET_5_EXT
/* Introduit le 20230516121144... */
#include image_image_ALPHABET_6_EXT
/* Introduit le 20240419180233... */
#include image_image_ALPHABETS_EXT
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
#define Y_POSITION_MESSAGE \
Ycentre \
/* Ordonnee du message dans l'image. */
#define X_POSITION_MESSAGE \
Xcentre \
/* Abscisse du message dans l'image. */
#define CENTRER_LE_MESSAGE \
FAUX \
/* Faut-il centrer le message ('VRAI') ou pas ('FAUX') ? */ \
/* */ \
/* Cela indique si le message doit etre centre dans les trois directions. Mais ATTENTION, */ \
/* je note le 20080909134353 qu'en general cela ne permet qu'un centrage horizontal car, */ \
/* en effet, les caracteres debutent sur un certain 'Y' (l'horizontale de reference) et */ \
/* terminent dessus ; alors seul le 'X' a progresse (le 'Z' n'intervenant en general pas). */
#define NIVEAU_FOND \
NOIR
#define NIVEAU_MESSAGE \
BLANC
#define TAILLE_DES_CARACTERES_DES_MESSAGES \
GRO2(INTER_POINT)
#define ANTI_ALIASING \
FAUX \
/* Pas d'anti-aliasing a priori... */
#define EDITER_LA_POSITION_DE_LA_FIN_DU_MESSAGE \
FAUX \
/* Faut-il editer le curseur graphique au bout du message ('VRAI') ou pas ('FAUX'). Cela */ \
/* facilitera le positionnement d'un autre message derriere, par exemple, avec une taille */ \
/* differente... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A C R O S U T I L E S : */
/* */
/*************************************************************************************************************************************/
#define VALIDATION_DES_DIMENSIONS_DES_IMAGES \
Bblock \
Test(IFNE(dimX,dimY)) \
Bblock \
PRINT_ATTENTION("les images ne sont pas carrees ce qui posera des problemes lors d'eventuelles rotations"); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Validation introduite le 20161116142813 ('v $xiii/alphabet.3$FON 20080910141723')... */
#define VALIDATION_DU_MARQUAGE_DE_L_INTERIEUR_DES_CONTOURS_04 \
Bblock \
Test(IL_FAUT(FgL_All_04_____marquer_l_interieur_des_contours)) \
Bblock \
PRINT_ATTENTION("le marquage de l'interieur des contours n'a pas de sens pour la bibliotheque demandee"); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Validation introduite le 20161124174319... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M I S E D ' U N M E S S A G E S U R U N E I M A G E */
/* A V E C A P R I O R I U N L I S E R E T D E L A C O U L E U R D U F O N D L ' E N C A D R A N T : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(message),C_VIDE));
/* Message a centrer en bas de l'image. */
DEFV(Float,INIT(X_position_message,FLOT__UNDEF));
DEFV(Float,INIT(Y_position_message,FLOT__UNDEF));
/* Coordonnees du message. */
DEFV(Logical,INIT(centrer_le_message,CENTRER_LE_MESSAGE));
/* Faut-il centrer le message ('VRAI') ou pas ('FAUX') ? */
/* */
/* Cela indique si le message doit etre centre dans les trois directions. Mais ATTENTION, */
/* je note le 20080909134353 qu'en general cela ne permet qu'un centrage horizontal car, */
/* en effet, les caracteres debutent sur un certain 'Y' (l'horizontale de reference) et */
/* terminent dessus ; alors seul le 'X' a progresse (le 'Z' n'intervenant en general pas). */
DEFV(genere_p,INIT(niveau_fond,NIVEAU_FOND));
DEFV(genere_p,INIT(niveau_message,NIVEAU_MESSAGE));
DEFV(Positive,INIT(taille_des_caracteres_des_messages,TAILLE_DES_CARACTERES_DES_MESSAGES));
DEFV(Logical,INIT(anti_aliasing,ANTI_ALIASING));
/* Indique s'il faut ou pas faire le traitement anti-aliasing... */
DEFV(Logical,INIT(editer_la_position_de_la_fin_du_message,EDITER_LA_POSITION_DE_LA_FIN_DU_MESSAGE));
/* Faut-il editer le curseur graphique au bout du message ('VRAI') ou pas ('FAUX'). Cela */
/* facilitera le positionnement d'un autre message derriere, par exemple, avec une taille */
/* differente... */
/*..............................................................................................................................*/
GET_ARGUMENTSg(nombre_d_arguments
,BLOC(GET_ARGUMENT_L("DEBUT_CENTRAGE_____compatibilite_20080909=""compatibilite_20080909="
,DEBUT_CENTRAGE_____compatibilite_20080909
);
/* Parametre introduit le 20080909143159... */
GET_ARGUMENT_L("Ipoint_anti_aliase_segment_____compatibilite_20110420=""compatibilite_20110420="
,Ipoint_anti_aliase_segment_____compatibilite_20110420
);
/* Parametre introduit le 20110420140611... */
GET_ARGUMENT_C("imageA=""A=",nom_imageA);
GET_ARGUMENT_C("imageR=""R=",nom_imageR);
GET_ARGUMENT_C("message=",message);
GET_ARGUMENT_I("bibliotheque=",vecteurs_____num_bibliotheque);
GET_ARGUMENT_L("bibliotheque_00_fonte_proportionnelle=""b00fp=",Fg_00_____fonte_proportionnelle);
/* Parametres introduits le 20190506135030 pour 'v $xiirv/$Fnota Debut_listG_PIPO_H0_1'... */
GET_ARGUMENT_L("bibliotheque_00_remplacer_0_O=""b00r0O=",FgL0_00_____remplacer_par_un_O);
/* Parametres introduits le 20241031125616 pour 'v $xiirv/.RDNW.d1.2.$U remplacer_0_O'... */
GET_ARGUMENT_L("UnderScoreEspace=""USE=",FgLunder_score_00_____remplacer_par_un_espace);
/* Parametres introduits le 20180130135401 pour 'v $xiirc/.VONK.51.3.$U UnderScoreEspace'... */
/* */
/* Je note le 20201206104600 que pour 'v $xiirv/.AXPA.11.1.$U UnderScoreEspace.' cela */
/* permet de mettre '$xci/message$X' dans un 'execRVB' qui a le defaut de faire disparaitre */
/* les '$K_QS' et '$K_QD' et qui fait que si l'on ecrit par exemple : */
/* */
/* message='droite D' */
/* */
/* cela devient (a cause de la programmation de 'execRVB') : */
/* */
/* message=droite D */
/* */
/* et "D" devient donc un argument (non reconnu evidemment) de '$xci/message$X'... */
GET_ARGUMENT_L("EgalDiese=""ED=",FgLegal_00_____remplacer_par_un_diese);
/* Parametres introduits le 20180131140115 pour 'v $xiirc/.VONK.51.3.$U EgalDiese'... */
GIT_ARGUMENT_F("x=""ph=""X=",X_position_message,_____cNORMALISE_OX(X_POSITION_MESSAGE));
GIT_ARGUMENT_F("y=""pv=""Y=",Y_position_message,_____cNORMALISE_OY(Y_POSITION_MESSAGE));
GET_ARGUMENT_L("centrer=",centrer_le_message);
GET_ARGUMENT_L("lisere=",Imessage_____mettre_un_lisere_de_la_couleur_du_fond_autour_du_message);
/* Parametre introduit le 20230516165959 pour 'v $xigP/Impossible.02$Z lisere'... */
GET_ARGUMENT_P("niveau_fond=""f=""Nfond=",niveau_fond);
GET_ARGUMENT_P("t=""niveau_message=""Nmessage=",niveau_message);
GET_ARGUMENT_I("taille=""T=",taille_des_caracteres_des_messages);
GET_ARGUMENT_L("anti_aliasing=""a=",anti_aliasing);
GET_ARGUMENT_P("t1=""niveau_message1=""Nmessage1=",FgL_All_04_____niveau_1);
GET_ARGUMENT_P("t2=""niveau_message2=""Nmessage2=",FgL_All_04_____niveau_2);
/* Introduit le 20181022175812 pour les nouvelles definitions (faites au mois de 201810) */
/* de 'v $xiii/alphabet.4$FON', soit {M,N,O,P,Q,R,m,n,o,p,q,r,S}... */
GET_ARGUMENT_L("fin=""editer=",editer_la_position_de_la_fin_du_message);
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 20080908183706... */
GET_ARGUMENT_L("editer_points=""ep=""editer_XYN=""eXYN="
,EDITION_DES_VECTEURS_BIDIMENSIONNELS_____editer_les_coordonnees_X_Y_et_les_niveaux
);
/* Parametre introduit le 20230511092350 pour 'v $xigP/Impossible.02$Z editer_XYN'... */
GET_ARGUMENT_L("editer_points_entiers=""epe="
,EDITION_DES_VECTEURS_BIDIMENSIONNELS_____editer_les_coordonnees_X_Y_en_entiers
);
GET_ARGUMENT_N("editer_points_flottants=""epf="
,EDITION_DES_VECTEURS_BIDIMENSIONNELS_____editer_les_coordonnees_X_Y_en_entiers
);
/* Parametres introduits le 20230520104432... */
GET_ARGUMENT_L("editer_points_hors_image=""ephi="
,EDITION_DES_VECTEURS_BIDIMENSIONNELS_____editer_les_points_hors_image
);
/* Parametre introduit le 20230517093427 pour 'v $xigP/Impossible.02$Z hors_ecran'... */
GET_ARGUMENT_F("vSK=",Imessage_____facteur_scale_globale);
GET_ARGUMENT_F("vSX=",Imessage_____facteur_scale_OX);
GET_ARGUMENT_F("vSY=",Imessage_____facteur_scale_OY);
GET_ARGUMENT_F("vSZ=",Imessage_____facteur_scale_OZ);
/* Parametres introduits le 20230522140520... */
GET_ARGUMENT_L("homothetique=""SKH=",TRACE_TEXTE_____utiliser_SKH);
GET_ARGUMENT_N("non_homothetique=""SK=",TRACE_TEXTE_____utiliser_SKH);
/* Parametres introduits le 20110423111542... */
GET_ARGUMENT_L("renormaliser_scale_globale=""rsg=",vecteurs_____renormaliser_scale_globale);
/* Parametre introduit le 20230505100159... */
GET_ARGUMENT_L("marquer_interieur_contours=""mic=",FgL_All_04_____marquer_l_interieur_des_contours);
/* Parametres introduits le 20161118094827... */
GET_ARGUMENT_F("TauxDepthCueing=""tdc=",Ipoint_segment_____taux_depth_cueing);
/* Introduits le 20240519113041... */
/* */
/* Le "depth-cueing" maximal est donc obtenu simplement en faisant : */
/* */
/* TauxDepthCueing=1 */
/* */
)
);
Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageG,nom_imageA))))
Bblock
Choi(vecteurs_____num_bibliotheque)
/* Validation introduite le 20161116142813... */
Bblock
Ca1e(BIBLIOTHEQUE_00)
Bblock
VALIDATION_DU_MARQUAGE_DE_L_INTERIEUR_DES_CONTOURS_04;
Eblock
ECa1
Ca1e(BIBLIOTHEQUE_01)
Bblock
VALIDATION_DU_MARQUAGE_DE_L_INTERIEUR_DES_CONTOURS_04;
Eblock
ECa1
Ca1e(BIBLIOTHEQUE_02)
Bblock
VALIDATION_DU_MARQUAGE_DE_L_INTERIEUR_DES_CONTOURS_04;
Eblock
ECa1
Ca1e(BIBLIOTHEQUE_03)
Bblock
VALIDATION_DES_DIMENSIONS_DES_IMAGES;
VALIDATION_DU_MARQUAGE_DE_L_INTERIEUR_DES_CONTOURS_04;
Eblock
ECa1
Ca1e(BIBLIOTHEQUE_04)
Bblock
VALIDATION_DES_DIMENSIONS_DES_IMAGES;
Eblock
ECa1
Ca1e(BIBLIOTHEQUE_05)
/* Introduit le 20230516105746... */
Bblock
VALIDATION_DES_DIMENSIONS_DES_IMAGES;
Eblock
ECa1
Ca1e(BIBLIOTHEQUE_06)
/* Introduit le 20240419183024... */
Bblock
VALIDATION_DU_MARQUAGE_DE_L_INTERIEUR_DES_CONTOURS_04;
Eblock
ECa1
Defo
Bblock
PRINT_ERREUR("la bibliotheque demandee n'existe pas");
Eblock
EDef
Eblock
ECho
SET_CURSOR(X_position_message,Y_position_message,FZorigine);
SET_ANTI_ALIASING(anti_aliasing);
/* Indique s'il faut ou pas faire le traitement anti-aliasing... */
Test(IL_FAUT(editer_la_position_de_la_fin_du_message));
Bblock
EGAL(DEBUT_MESSAGE__FIN_MESSAGE_____faire_FgMIC_FgMOC,FAUX);
/* Afin que le curseur graphique progresse... */
Eblock
ATes
Bblock
Eblock
ETes
CALS(Imessage(message,niveau_fond,niveau_message,taille_des_caracteres_des_messages,centrer_le_message));
Test(IL_FAUT(editer_la_position_de_la_fin_du_message));
Bblock
DEFV(Float,INIT(X_position_de_la_fin_du_message,FLOT__UNDEF));
DEFV(Float,INIT(Y_position_de_la_fin_du_message,FLOT__UNDEF));
DEFV(Float,INIT(Z_position_de_la_fin_du_message,FLOT__UNDEF));
/* Coordonnees de la fin du message. */
GET_CURSOR(X_position_de_la_fin_du_message,Y_position_de_la_fin_du_message,Z_position_de_la_fin_du_message);
/* Recuperation des coordonnees de la fin du message. */
CAL3(Prme2("X=%+f Y=%+f\n"
,X_position_de_la_fin_du_message
,Y_position_de_la_fin_du_message
)
);
Eblock
ATes
Bblock
Eblock
ETes
CALi(Iupdate_image(nom_imageR,ImageG));
Eblock
ATes
Bblock
Test__CODE_ERREUR__ERREUR07;
Eblock
ETes
RETU_Commande;
Eblock
ECommande