/*************************************************************************************************************************************/
/* */
/* A F F I C H A G E G R A P H I Q U E D ' U N E I M A G E : */
/* */
/* */
/* Definition : */
/* */
/* Cette commande affiche le mieux */
/* qu'elle peut l'image argument. */
/* */
/* */
/* Author of '$xci/display$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
#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 20110502094821... */
#include image_image_ALPHABET_3_EXT
#include image_image_ALPHABET_4_EXT
/* Introduit le 20161116111233... */
#include image_image_ALPHABET_5_EXT
/* Introduit le 20230516182630... */
#include image_image_ALPHABET_6_EXT
/* Introduit le 20240419175819... */
#include image_image_ALPHABETS_EXT
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
# include image_drive_ridge_FONCTION_EXT
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
# include image_drive_dpx5c_FONCTION_EXT
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
# include image_image_QUAD_IMAGE_EXT
/* ATTENTION, avant le 20021230112030, les includes 'image_image_TRI_IMAGE_EXT' et */
/* 'image_image_QUAD_IMAGE_EXT' n'etaient faits que pour */
/* '__VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL'. */
/* Mais avec les modifications faites dans 'v $xiidX/fonct$vv$FON 20021230102551' il a */
/* fallu les rendre systematiques... */
# include image_drive_XWind_FONCTION_EXT
# ifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL
# include image_drive_SiliG_FONCTION_1_EXT
# Aifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL
# Eifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
#include xci/display.01.I"
#define TENTER_UN_REDIMENSIONNEMENT \
FAUX \
/* Indique s'il faut ('VRAI') ou pas ('FAUX') tenter le redimensionnement... */
#define SIGNER \
FAUX \
/* Indique s'il faut signer ('VRAI') ou pas ('FAUX') l'image... */
#define NIVEAU_FOND \
NOIR
#define NIVEAU_SIGNATURE \
BLANC
#define TAILLE_DES_CARACTERES_DES_MESSAGES \
INTER_POINT
/* Caracteristiques de la signature... */
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
# define SEUIL_NOIR_BLANC \
GRIS \
/* Seuil de discrimination entre le 'NOIR' et le 'BLANC'. */
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
# define ANIMATION_DES_COULEURS \
FAUX \
/* A priori, on laissera telle qu'elle la palette de couleurs... */
# define INCREMENT_DE_L_INCREMENT_DES_NIVEAUX \
I \
/* Lorsque la palette doit "tourner", on trouve ici l'increment des couleurs... */
# define DUREE_D_ATTENTE \
QUAD(SEIZE) \
/* Attente implicite avant d'effacer l'image... */
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
# define RECUPERER_UNE_IMAGE_EN_VRAIES_COULEURS \
VRAI \
/* Faut-il recuperer une image en vraies couleurs ('VRAI)' c'est-a-dire dont les trois */ \
/* composantes ont la meme racine, ou bien trois images "independantes" ('FAUX'). La */ \
/* valeur par defaut est choisie pour assurer la compatibilite anterieure. Ceci etant */ \
/* lie evidemment a 'EST_FAUX(IXopen_____mettre_X_Window_en_mode_fausses_couleurs)' et */ \
/* a ete introduit le 20021231100222. */
# define CHANGER_LA_DIMENSION_DE_LA_FENETRE \
FAUX
# define X_DIMENSION_DE_LA_FENETRE \
FU
# define Y_DIMENSION_DE_LA_FENETRE \
FU
/* Faut-il redimensionner la fenetre de facon, par exemple, a ce qu'elle soit plus grande */
/* que l'image ('VRAI)' ou pas ('FAUX'). Ceci a ete introduit le 20030401153145 afin de */
/* permettre la sortie video "plein ecran" d'images sur '$LACT15'. On notera au passage */
/* qu'en resolution 800x600, pour une image 'Pal', les parametres : */
/* */
/* Fcentrer=FAUX x=0.030 y=0.788 */
/* Fdimension=FAUX */
/* */
/* permettent de centrer la fenetre et l'image (ayant alors la meme dimension) dans la */
/* fenetre console de '$LACT15'. Quant aux parametres : */
/* */
/* Fcentrer=FAUX x=0.015 y=0.770 */
/* Fdimension=VRAI FXdimension=1.03 FYdimension=1.05 */
/* */
/* ils permettent de centrer l'image dans du NOIR (la fenetre etant alors plus grande que */
/* la resolution 800x600, toujours pour une image 'Pal'... */
/* */
/* ATTENTION, j'ai note le 20030404110740 que la position de la fenetre 800x600 extraite */
/* du plan 1400x1050 dependait de la position de la souris. Les valeurs precedentes ont */
/* ete obtenues en placant la souris en haut et a gauche du plan 1400x1050... */
# ifdef ALLOCATION_DES_COULEURS_VERSION_02
# define ANIMATION_DES_COULEURS \
FAUX \
/* A priori, on laissera telle qu'elle la palette de couleurs... */
# define TRANSLATER_LE_NOIR \
LE_NOIR_N_EST_PAS_TRANSLATABLE \
/* Indique si le niveau 'NOIR' est translatable dans 'ACCES_LA_PALETTE_ET_TRANSLATION(...)' */ \
/* ou pas... */
# define INCREMENT_DE_L_INCREMENT_DES_NIVEAUX \
I \
/* Lorsque la palette doit "tourner", on trouve ici l'increment des couleurs... */
# define EDITER_L_INCREMENT_DES_NIVEAUX \
FAUX \
/* Indique si l'increment courant des niveaux doit etre edite ('VRAI') ou pas ('FAUX'). */
# define NOMBRE_DE_CHANGEMENTS_DE_COULEURS \
ZERO \
/* Nombre de "rotations" de la palette de couleurs (eventuellement) ; celui-ci est infini */ \
/* si la valeur donnee est nulle (etat initial)... */
# define TEMPORISATION_INTER_PALETTES \
ZERO \
/* Temporisation inter palettes ; une valeur nulle fait qu'il n'y a pas d'attente, et une */ \
/* valeur negative provoque une attente asynchrone via la souris... */
# Aifdef ALLOCATION_DES_COULEURS_VERSION_02
# Eifdef ALLOCATION_DES_COULEURS_VERSION_02
# define DUREE_D_ATTENTE \
ZERO \
/* Attente implicite avant d'effacer l'image : une valeur nulle correspond a un arret */ \
/* interactif de l'affichage par appui sur l'une quelconque des trois touches de la */ \
/* souris, lorsque celle-ci est dans la fenetre de display... */
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A C R O S U T I L E S : */
/* */
/*************************************************************************************************************************************/
#include xci/display.02.I"
#include xci/signature.11.I"
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
# ifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
# define gGESTION_DE_L_INCREMENT_DES_NIVEAUX(sequence) \
Bblock \
INCR(increment_des_niveaux,increment_de_l_increment_des_niveaux); \
/* Incrementation de l'increment courant des couleurs... */ \
\
BLOC(sequence); \
/* Renvoi de la palette translatee circulairement, */ \
\
Test(IL_FAUT(editer_l_increment_des_niveaux)) \
Bblock \
CAL3(Prme1("%+d\n",increment_des_niveaux)); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
\
Test(IZLT(temporisation_inter_palettes)) \
Bblock \
CALS(IXattente_de_l_evenement_ButtonPress()); \
/* Et on attend de nouveau un petit peu, jusqu'a ce que l'on appuie sur l'un des trois */ \
/* boutons de la souris... */ \
Eblock \
ATes \
Bblock \
DODO(temporisation_inter_palettes); \
/* Et on attend de nouveau un petit peu, pour un temps pre-determine... */ \
Eblock \
ETes \
Eblock \
/* Gestion de l'increment des niveaux et attente... */
# ifdef ALLOCATION_DES_COULEURS_VERSION_02
# define GESTION_DE_L_INCREMENT_DES_NIVEAUX \
Bblock \
gGESTION_DE_L_INCREMENT_DES_NIVEAUX(BLOC(CALS(IXpalette(increment_des_niveaux \
,translater_le_NOIR \
) \
); \
) \
); \
Eblock \
/* Gestion de l'increment des niveaux et attente... */
# Aifdef ALLOCATION_DES_COULEURS_VERSION_02
# Eifdef ALLOCATION_DES_COULEURS_VERSION_02
# if ( (defined(BUG_SYSTEME_SG_X_WINDOW_BACKINGSTORE_1)) \
)
# define ATTENTE_DE_LA_FIN_DE_VISUALISATION \
Bblock \
Test(IZLE(duree_d_attente)) \
Bblock \
\
/* ATTENTION, pendant un temps j'ai essaye la sequence suivante ci-apres : */ \
/* */ \
/* DEFV(processus,Pre_affichage); \ */ \
/* /* descripteur du processus destine au */ \
/* /* re-affichage de l'image... */ \
/* PARALLELE(BLOC(Loop \ */ \
/* Bblock \ */ \
/* CALS(IXattente_de_l_evenement_Expose()); \ */ \
/* CALS(IXdisplay(ImageG)); \ */ \
/* /* apres chaque remise au premier plan de */ \
/* /* l'image courante, elle est raffichee... */ \
/* Eblock \ */ \
/* ELoo \ */ \
/* ) \ */ \
/* ,Pre_affichage \ */ \
/* ); \ */ \
/* /* envoi en parallele d'un processus destine */ \
/* /* a re-afficher l'image lorsqu'elle est */ \
/* /* remise au premier plan... */ \
/* */ \
/* Mais malheureusement, d'une part cela ne marche pas systematiquement, et d'autre part, */ \
/* lors de l'arret normal du '$xci/display$X' "pere", le "fils", lui, reste actif... */ \
\
CALS(IXattente_de_l_evenement_ButtonPress()); \
/* Et on attend de nouveau un petit peu, jusqu'a ce que l'on appuie sur l'un des trois */ \
/* boutons de la souris... */ \
Eblock \
ATes \
Bblock \
DODO(duree_d_attente); \
/* Et on attend de nouveau un petit peu, pour un temps pre-determine... */ \
Eblock \
ETes \
Eblock \
/* Attente de la fin de visualisation... */
# Aif ( (defined(BUG_SYSTEME_SG_X_WINDOW_BACKINGSTORE_1)) \
)
# define ATTENTE_DE_LA_FIN_DE_VISUALISATION \
Bblock \
Test(IZLE(duree_d_attente)) \
Bblock \
CALS(IXattente_de_l_evenement_ButtonPress()); \
/* Et on attend de nouveau un petit peu, jusqu'a ce que l'on appuie sur l'un des trois */ \
/* boutons de la souris... */ \
Eblock \
ATes \
Bblock \
DODO(duree_d_attente); \
/* Et on attend de nouveau un petit peu, pour un temps pre-determine... */ \
Eblock \
ETes \
Eblock \
/* Attente de la fin de visualisation... */
# Eif ( (defined(BUG_SYSTEME_SG_X_WINDOW_BACKINGSTORE_1)) \
)
# Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
# Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D I S P L A Y G R A P H I Q U E D ' U N E I M A G E : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));
/* Nom de l'image a displayer. */
DEFV(Logical,INIT(signer,SIGNER));
/* Indique s'il faut signer ('VRAI') ou pas ('FAUX') l'image... */
DEFV(genere_p,INIT(niveau_fond,NIVEAU_FOND));
DEFV(genere_p,INIT(niveau_signature,NIVEAU_SIGNATURE));
DEFV(Positive,INIT(taille_des_caracteres_des_messages,TAILLE_DES_CARACTERES_DES_MESSAGES));
/* Caracteristiques de la signature... */
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
DEFV(genere_p,INIT(seuil_de_display,SEUIL_NOIR_BLANC));
/* Seuil de selection du trace initialise sur sa valeur par defaut. */
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
DEFV(CHAR,INIC(POINTERc(nom_paletteA),NOM_PIPE));
/* Nom de la palette a utiliser. */
DEFV(Logical,INIT(tenter_un_redimensionnement,TENTER_UN_REDIMENSIONNEMENT));
/* Indique s'il faut ('VRAI') ou pas ('FAUX') tenter le redimensionnement... */
DEFV(Int,INIT(duree_d_attente,DUREE_D_ATTENTE));
/* Duree d'attente apres l'affichage d'une image et avant son effacement : une valeur */
/* nulle correspond a un arret interactif de l'affichage par appui sur l'une quelconque */
/* des trois touches de la souris, lorsque celle-ci est dans la fenetre de display... */
/* Afin d'etre presque homogene avec '$xci/sequence$K', l'attente sur la souris pourra */
/* etre demandee avec une valeur negative ; c'est la raison pour laquelle 'duree_d_attente' */
/* est de type 'Int' et non pas 'Positive'... */
DEFV(deltaF_2D,dimension_de_la_fenetre);
/* Dimension de la fenetre de visualisation. */
# include xci/display.03.I"
# ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
DEFV(Logical,INIT(animation_des_couleurs,ANIMATION_DES_COULEURS));
/* Indique si les couleurs doivent etre laissees telles qu'elles, ou bien animees de */
/* facon "circulaire"... */
DEFV(Int,INIT(increment_des_niveaux,ZERO));
/* Lorsque l'animation des couleurs est demande, on trouve ici leur increment courant, */
DEFV(Int,INIT(increment_de_l_increment_des_niveaux,INCREMENT_DE_L_INCREMENT_DES_NIVEAUX));
/* Et la, l'increment de l'increment... */
DEFV(pointF_2D,coin_haut_gauche);
/* Position du coin haut gauche de la fenetre. */
# Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
# Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
# ifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
DEFV(CHAR,INIC(POINTERc(nom_imageAR),NOM_PIPE));
/* Nom de l'image ROUGE a utiliser, */
DEFV(CHAR,INIC(POINTERc(nom_imageAV),NOM_PIPE));
/* Nom de l'image VERTE a utiliser, */
DEFV(CHAR,INIC(POINTERc(nom_imageAB),NOM_PIPE));
/* Nom de l'image BLEUE a utiliser. */
DEFV(Logical,INIT(recuperer_une_image_en_vraies_couleurs,RECUPERER_UNE_IMAGE_EN_VRAIES_COULEURS));
/* Faut-il recuperer une image en vraies couleurs ('VRAI)' c'est-a-dire dont les trois */
/* composantes ont la meme racine, ou bien trois images "independantes" ('FAUX'). La */
/* valeur par defaut est choisie pour assurer la compatibilite anterieure. Ceci etant */
/* lie evidemment a 'EST_FAUX(IXopen_____mettre_X_Window_en_mode_fausses_couleurs)' et */
/* a ete introduit le 20021231100222. */
DEFV(CHAR,INIC(POINTERc(nom_substitution_ROUGE),"L_SUBSTITUTION_ROUGE"));
DEFV(CHAR,INIC(POINTERc(nom_substitution_VERTE),"L_SUBSTITUTION_VERTE"));
DEFV(CHAR,INIC(POINTERc(nom_substitution_BLEUE),"L_SUBSTITUTION_BLEUE"));
/* Definition des permutations de couleurs. */
DEFV(Logical,INIT(changer_la_dimension_de_la_fenetre,CHANGER_LA_DIMENSION_DE_LA_FENETRE));
DEFV(Float,INIT(X_dimension_de_la_fenetre,X_DIMENSION_DE_LA_FENETRE));
DEFV(Float,INIT(Y_dimension_de_la_fenetre,Y_DIMENSION_DE_LA_FENETRE));
/* Faut-il redimensionner la fenetre de facon, par exemple, a ce qu'elle soit plus grande */
/* que l'image ('VRAI)' ou pas ('FAUX'). Ceci a ete introduit le 20030401153145 afin de */
/* permettre la sortie video "plein ecran" d'images sur '$LACT15'. On notera au passage */
/* qu'en resolution 800x600, pour une image 'Pal', les parametres : */
/* */
/* Fcentrer=FAUX x=0.015 y=0.795 */
/* Fdimension=FAUX */
/* */
/* permettent de centrer la fenetre et l'image (ayant alors la meme dimension) dans la */
/* fenetre console de '$LACT15'. Quant aux parametres : */
/* */
/* Fcentrer=FAUX x=0.005 y=0.780 */
/* Fdimension=VRAI FXdimension=1.03 FYdimension=1.03 */
/* */
/* ils permettent de centrer l'image dans du NOIR (la fenetre etant alors plus grande que */
/* la resolution 800x600, toujours pour une image 'Pal'... */
# ifdef ALLOCATION_DES_COULEURS_VERSION_02
DEFV(Logical,INIT(animation_des_couleurs,ANIMATION_DES_COULEURS));
/* Indique si les couleurs doivent etre laissees telles qu'elles, ou bien animees de */
/* facon "circulaire"... */
DEFV(Logical,INIT(translater_le_NOIR,TRANSLATER_LE_NOIR));
/* Indique si le niveau 'NOIR' est translatable dans 'ACCES_LA_PALETTE_ET_TRANSLATION(...)' */
/* ou pas... */
DEFV(Int,INIT(increment_des_niveaux,ZERO));
/* Lorsque l'animation des couleurs est demande, on trouve ici leur increment courant, */
DEFV(Int,INIT(increment_de_l_increment_des_niveaux,INCREMENT_DE_L_INCREMENT_DES_NIVEAUX));
/* Et la, l'increment de l'increment... */
DEFV(Logical,INIT(editer_l_increment_des_niveaux,EDITER_L_INCREMENT_DES_NIVEAUX));
/* Indique si l'increment courant des niveaux doit etre edite ('VRAI') ou pas ('FAUX'). */
DEFV(Positive,INIT(nombre_de_changements_de_couleurs,NOMBRE_DE_CHANGEMENTS_DE_COULEURS));
/* Nombre de "rotations" de la palette de couleurs (eventuellement) ; celui-ci est infini */
/* si la valeur donnee est nulle (etat initial)... */
DEFV(Int,INIT(temporisation_inter_palettes,TEMPORISATION_INTER_PALETTES));
/* Temporisation inter palettes ; une valeur nulle fait qu'il n'y a pas d'attente, et une */
/* valeur negative provoque une attente asynchrone via la souris (d'ou le 'Int' et non */
/* point un 'Positive'...). */
# Aifdef ALLOCATION_DES_COULEURS_VERSION_02
# Eifdef ALLOCATION_DES_COULEURS_VERSION_02
# Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
# Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
/*..............................................................................................................................*/
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
GET_ARGUMENTSg(nombre_d_arguments
,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
SUPPRIME_LE_20090604084542(GET_ARGUMENT_L("redimensionner=",tenter_un_redimensionnement););
/* Au sujet de la suppression du 20090604084542, 'v $xiii/files$FON 20090604090257'... */
GET_ARGUMENT_P("seuil=""sd=",seuil_de_display);
/* Le 20050623150439, "s=" a ete remplace par "sd=" (double definition...). */
GET_ARGUMENT_L("signer=",signer);
GET_ARGUMENT_P("fond=""f=",niveau_fond);
GET_ARGUMENT_P("signature=""ns=",niveau_signature);
/* Le 20050623150439, "s=" a ete remplace par "ns=" (double definition...). */
GET_ARGUMENT_I("taille=""T=",taille_des_caracteres_des_messages);
GET_ARGUMENT_I("bibliotheque=",vecteurs_____num_bibliotheque);
)
);
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
INITIALISATION_POINT_2D(coin_haut_gauche
,_____cNORMALISE_OX5(X_COIN_HAUT_GAUCHE)
,_____cNORMALISE_OY5(Y_COIN_HAUT_GAUCHE)
);
/* Definition de la position implicite de la fenetre. */
GET_ARGUMENTSg(nombre_d_arguments
,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
SUPPRIME_LE_20090604084542(GET_ARGUMENT_L("redimensionner=",tenter_un_redimensionnement););
/* Au sujet de la suppression du 20090604084542, 'v $xiii/files$FON 20090604090257'... */
GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA);
GET_ARGUMENT_L("animation=",animation_des_couleurs);
GET_ARGUMENT_I("increment=""i=",increment_de_l_increment_des_niveaux);
GET_ARGUMENT_L("signer=",signer);
GET_ARGUMENT_P("fond=""f=",niveau_fond);
GET_ARGUMENT_P("signature=""ns=",niveau_signature);
/* Le 20050623150439, "s=" a ete remplace par "ns=" (double definition...). */
GET_ARGUMENT_I("taille=""T=",taille_des_caracteres_des_messages);
GET_ARGUMENT_I("bibliotheque=",vecteurs_____num_bibliotheque);
GET_ARGUMENT_I("duree=""d=",duree_d_attente);
GET_ARGUMENT_F("xc=""x=""X=",ASD1(coin_haut_gauche,x));
GET_ARGUMENT_F("yc=""y=""Y=",ASD1(coin_haut_gauche,y));
)
);
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
INITIALISATION_POINT_2D(coin_bas_gauche
,_____cNORMALISE_OX11(X_COIN_BAS_GAUCHE)
,_____cNORMALISE_OY11(Y_COIN_BAS_GAUCHE)
);
/* Definition de la position implicite de la fenetre. */
EGAL(X11_____signaler_les_evenements_inattendus,SIGNALER_LES_EVENEMENTS_INATTENDUS);
/* Initialisation du signalisateur d'evenement inattendu... */
# define COMPATIBILITE_20240331 \
"VALIDATION_PRELIMINAIRE_DES_DIMENSIONS_D_UNE_FENETRE_____compatibilite_20240331=""compatibilite_20240331=" \
/* Afin de raccourcir des lignes a venir (introduit le 20240331074843)... */
# ifdef ALLOCATION_DES_COULEURS_VERSION_01
GET_ARGUMENTSg(nombre_d_arguments
,BLOC(GET_ARGUMENT_L("CENTRAGE_EVENTUEL_DE_LA_FENETRE_____compatibilite_20121121=""compatibilite_20121121="
,CENTRAGE_EVENTUEL_DE_LA_FENETRE_____compatibilite_20121121
);
/* Introduit le 20121121100254. */
GET_ARGUMENT_L(COMPATIBILITE_20240331
,VALIDATION_PRELIMINAIRE_DES_DIMENSIONS_D_UNE_FENETRE_____compatibilite_20240331
);
/* Introduit le 20240331074843. */
GET_ARGUMENT_C("serveur=",serveur_standard);
GET_ARGUMENT_L("ne_pas_verifier_le_serveur=""npvs="
,IXopen_____X_Window_accepter_le_serveur_sans_verification
);
GET_ARGUMENT_N("verifier_le_serveur=""vs="
,IXopen_____X_Window_accepter_le_serveur_sans_verification
);
/* Arguments introduits le 20100109113150 pour acceder au serveur 'Xming' (Windows Vista). */
GET_ARGUMENT_L("attention=",editer_les_PRINT_ATTENTION_initiaux);
GET_ARGUMENT_L("signaler=",X11_____signaler_les_evenements_inattendus);
GET_ARGUMENT_L("trop_grandes=""trop_grande="
,X11_____tenter_l_ouverture_des_fenetres_trop_grandes_par_rapport_a_l_ecran
);
GET_ARGUMENT_L("editer_XY_curseur=""editer_curseur=""XY_curseur=""XY="
,X11_____KeyPress_____editer_XY_curseur
);
/* Je rappelle le 20221203095609 que : */
/* */
/* editer_XY_curseur=VRAI */
/* */
/* edite les coordonnees {X,Y} du point de l'image affichee qui est pointe par la souris */
/* set ce a chaque pression de la touche <SHIFT> du clavier... */
GET_ARGUMENT_L("message_editer_XY_curseur=""message_editer_curseur=""message_XY_curseur=""mXY="
,X11_____KeyPress_____editer_XY_curseur_message_fenetre_incompatible
);
/* Argument introduit le 20091212213350... */
GET_ARGUMENT_L("normaliser_XY_curseur=""NXY=",X11_____KeyPress_____norm_XY_curseur);
GET_ARGUMENT_L("origine_extremite_XY_curseur=""OEXY="
,X11_____KeyPress_____norm_XY_avec_origine_et_extremite_curseur
);
GET_ARGUMENT_N("longueur_XY_curseur=""LXY="
,X11_____KeyPress_____norm_XY_avec_origine_et_extremite_curseur
);
GET_ARGUMENT_F("OX_curseur=""OX=""xbg=""xbgD=""xbgA=",X11_____KeyPress_____OX_curseur);
GET_ARGUMENT_F("EX_curseur=""EX=""xhd=""xhdD=""xhdA=",X11_____KeyPress_____EX_curseur);
GET_ARGUMENT_F("LX_curseur=""LX=",X11_____KeyPress_____LX_curseur);
GET_ARGUMENT_F("DX_curseur=""DX=",X11_____KeyPress_____DX_curseur);
GET_ARGUMENT_F("OY_curseur=""OY=""ybg=""ybgD=""ybgA=",X11_____KeyPress_____OY_curseur);
GET_ARGUMENT_F("EY_curseur=""EY=""yhd=""yhdD=""yhdA=",X11_____KeyPress_____EY_curseur);
GET_ARGUMENT_F("LY_curseur=""LY=",X11_____KeyPress_____LY_curseur);
GET_ARGUMENT_F("DY_curseur=""DY=",X11_____KeyPress_____DY_curseur);
/* Les arguments relatifs a {"EX=","EY="} ont ete introduits le 20091123094324, puis */
/* completes le 20091231102858... */
/* */
/* Il sera alors fortement conseille d'utiliser les arguments : */
/* */
/* ModeFlot='f' */
/* ChiffresFlot=... */
/* */
/* afin de reduire la precision (16 par defaut...) et de garantir le nombre de decimales, */
/* associes aux arguments : */
/* */
/* editer_XY_curseur=VRAI */
/* normaliser_XY_curseur=VRAI */
/* DX_curseur=... DY_curseur=... */
/* OX=... OY=... EX=... EY=... */
/* */
/* ce qui permet de definir une fenetre centree sur {{OX,OY},{EX,EY}} et de dimension */
/* (2.DX)x(2.DY). */
/* */
/* Ces arguments s'utiliseront conjointement avec les arguments suivants de */
/* 'v $xrc/mandel.41$K' : */
/* */
/* OX=... OY=... EX=... EY=... */
/* fenetres_depart_arrivee_identiques=VRAI */
/* editer_fenetre_courante=VRAI */
/* */
/* par exemple ('v $ximcf/iterations$FON editer_la_fenetre_courante'), ce qui editera : */
/* */
/* OX=... OY=... EX=... EY=... */
/* */
/* correspondants a la fenetre reellement utilisee (et ce quelles que soient ses */
/* proportions...), ce qui permettra de les reinjecter proprement dans 'v $xci/display$K... */
GET_ARGUMENT_C("imageA=""A=",nom_imageA);
GET_ARGUMENT_C("Rouge=""ROUGE=""AR=",nom_imageAR);
GET_ARGUMENT_C("Verte=""VERTE=""AV=",nom_imageAV);
GET_ARGUMENT_C("Bleue=""BLEUE=""AB=",nom_imageAB);
GET_ARGUMENT_L("RVB=",recuperer_une_image_en_vraies_couleurs);
SUPPRIME_LE_20090604084542(GET_ARGUMENT_L("redimensionner=",tenter_un_redimensionnement););
/* Au sujet de la suppression du 20090604084542, 'v $xiii/files$FON 20090604090257'... */
GET_ARGUMENT_L("fc=""fausses_couleurs=",IXopen_____mettre_X_Window_en_mode_fausses_couleurs);
GET_ARGUMENT_N("vraies_couleurs=""vc=",IXopen_____mettre_X_Window_en_mode_fausses_couleurs);
GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA);
GET_ARGUMENT_I("nombre=""couleurs=",nombre_de_couleurs_necessaires);
GET_ARGUMENT_L("signer=",signer);
GET_ARGUMENT_P("fond=""f=",niveau_fond);
GET_ARGUMENT_P("signature=""ns=",niveau_signature);
/* Le 20050623150439, "s=" a ete remplace par "ns=" (double definition...). */
GET_ARGUMENT_I("taille=""T=",taille_des_caracteres_des_messages);
GET_ARGUMENT_I("bibliotheque=",vecteurs_____num_bibliotheque);
GET_ARGUMENT_I("duree=""d=",duree_d_attente);
GET_ARGUMENT_L("Fdimension=""Fd=",changer_la_dimension_de_la_fenetre);
GET_ARGUMENT_F("FXdimension=""FX=",X_dimension_de_la_fenetre);
GET_ARGUMENT_F("FYdimension=""FY=",Y_dimension_de_la_fenetre);
GET_ARGUMENT_L("centrer=""Fcentrer=""Fc=",centrer_la_fenetre);
/* Parametre introduit le 20060427162526... */
GET_ARGUMENT_F("xc=""x=""X=",ASD1(coin_bas_gauche,x));
GET_ARGUMENT_F("yc=""y=""Y=",ASD1(coin_bas_gauche,y));
GET_ARGUMENT_C("substitution=""s=",nom_substitution);
GET_ARGUMENT_C("sR=",nom_substitution_ROUGE);
GET_ARGUMENT_C("sV=",nom_substitution_VERTE);
GET_ARGUMENT_C("sB=",nom_substitution_BLEUE);
)
);
# Aifdef ALLOCATION_DES_COULEURS_VERSION_01
# Eifdef ALLOCATION_DES_COULEURS_VERSION_01
# ifdef ALLOCATION_DES_COULEURS_VERSION_02
GET_ARGUMENTSg(nombre_d_arguments
,BLOC(GET_ARGUMENT_L("CENTRAGE_EVENTUEL_DE_LA_FENETRE_____compatibilite_20121121=""compatibilite_20121121="
,CENTRAGE_EVENTUEL_DE_LA_FENETRE_____compatibilite_20121121
);
/* Introduit le 20121121100254. */
GET_ARGUMENT_L(COMPATIBILITE_20240331
,VALIDATION_PRELIMINAIRE_DES_DIMENSIONS_D_UNE_FENETRE_____compatibilite_20240331
);
/* Introduit le 20240331074843. */
GET_ARGUMENT_C("serveur=",serveur_standard);
GET_ARGUMENT_L("ne_pas_verifier_le_serveur=""npvs="
,IXopen_____X_Window_accepter_le_serveur_sans_verification
);
GET_ARGUMENT_N("verifier_le_serveur=""vs="
,IXopen_____X_Window_accepter_le_serveur_sans_verification
);
/* Arguments introduits le 20100109113150 pour acceder au serveur 'Xming' (Windows Vista). */
GET_ARGUMENT_L("attention=",editer_les_PRINT_ATTENTION_initiaux);
GET_ARGUMENT_L("signaler=",X11_____signaler_les_evenements_inattendus);
GET_ARGUMENT_L("trop_grandes=""trop_grande="
,X11_____tenter_l_ouverture_des_fenetres_trop_grandes_par_rapport_a_l_ecran
);
GET_ARGUMENT_L("editer_XY_curseur=""editer_curseur=""XY_curseur=""XY="
,X11_____KeyPress_____editer_XY_curseur
);
GET_ARGUMENT_L("message_editer_XY_curseur=""message_editer_curseur=""message_XY_curseur=""mXY="
,X11_____KeyPress_____editer_XY_curseur_message_fenetre_incompatible
);
/* Argument introduit le 20091212213350... */
GET_ARGUMENT_L("normaliser_XY_curseur=""NXY=",X11_____KeyPress_____norm_XY_curseur);
GET_ARGUMENT_L("origine_extremite_XY_curseur=""OEXY="
,X11_____KeyPress_____norm_XY_avec_origine_et_extremite_curseur
);
GET_ARGUMENT_N("longueur_XY_curseur=""LXY="
,X11_____KeyPress_____norm_XY_avec_origine_et_extremite_curseur
);
GET_ARGUMENT_F("OX_curseur=""OX=""xbg=""xbgD=""xbgA=",X11_____KeyPress_____OX_curseur);
GET_ARGUMENT_F("EX_curseur=""EX=""xhd=""xhdD=""xhdA=",X11_____KeyPress_____EX_curseur);
GET_ARGUMENT_F("LX_curseur=""LX=",X11_____KeyPress_____LX_curseur);
GET_ARGUMENT_F("DX_curseur=""DX=",X11_____KeyPress_____DX_curseur);
GET_ARGUMENT_F("OY_curseur=""OY=""ybg=""ybgD=""ybgA=",X11_____KeyPress_____OY_curseur);
GET_ARGUMENT_F("EY_curseur=""EY=""yhd=""yhdD=""yhdA=",X11_____KeyPress_____EY_curseur);
GET_ARGUMENT_F("LY_curseur=""LY=",X11_____KeyPress_____LY_curseur);
GET_ARGUMENT_F("DY_curseur=""DY=",X11_____KeyPress_____DY_curseur);
/* Les arguments relatifs a {"EX=","EY="} ont ete introduits le 20091123094324, puis */
/* completes le 20091231102858... */
/* */
/* Il sera alors fortement conseille d'utiliser les options : */
/* */
/* ModeFlot='f' */
/* ChiffresFlot=... */
/* */
/* afin de reduire la precision (16 par defaut...) et de garantir le nombre de decimales. */
/* */
/* Ces arguments s'utiliseront conjointement avec les arguments : */
/* */
/* editer_fenetre_courante=VRAI */
/* */
/* de '$xrc/mandel.41$X' par exemple ('v $ximcf/iterations$FON editer_la_fenetre_courante'). */
/* */
/* L'usage le plus frequent sera donc avec les options : */
/* */
/* editer_XY_curseur=VRAI */
/* normaliser_XY_curseur=VRAI */
/* DX_curseur=... DY_curseur=... */
/* xbg=... ybg=... xhd=... yhd=... */
/* */
/* ce qui permet de definir une fenetre centree sur {{xbg,ybg},{xhd,yhd}} et de dimension */
/* (2.DX)x(2.DY). */
GET_ARGUMENT_L("revisualiser=",IXdisplay_____on_peut_revisualiser_l_imageA_courante);
GET_ARGUMENT_C("imageA=""A=",nom_imageA);
GET_ARGUMENT_C("Rouge=""ROUGE=""AR=",nom_imageAR);
GET_ARGUMENT_C("Verte=""VERTE=""AV=",nom_imageAV);
GET_ARGUMENT_C("Bleue=""BLEUE=""AB=",nom_imageAB);
GET_ARGUMENT_L("RVB=",recuperer_une_image_en_vraies_couleurs);
SUPPRIME_LE_20090604084542(GET_ARGUMENT_L("redimensionner=",tenter_un_redimensionnement););
/* Au sujet de la suppression du 20090604084542, 'v $xiii/files$FON 20090604090257'... */
GET_ARGUMENT_L("fc=""fausses_couleurs=",IXopen_____mettre_X_Window_en_mode_fausses_couleurs);
GET_ARGUMENT_N("vraies_couleurs=""vc=",IXopen_____mettre_X_Window_en_mode_fausses_couleurs);
GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA);
GET_ARGUMENT_I("nombre=""couleurs=",nombre_de_couleurs_necessaires);
GET_ARGUMENT_L("animation=",animation_des_couleurs);
GET_ARGUMENT_L("translater_le_NOIR=""noir=""NOIR=",translater_le_NOIR);
GET_ARGUMENT_I("increment=""i=",increment_de_l_increment_des_niveaux);
GET_ARGUMENT_L("editer=",editer_l_increment_des_niveaux);
GET_ARGUMENT_I("n=""changements=""Cnombre=",nombre_de_changements_de_couleurs);
GET_ARGUMENT_L("signer=",signer);
GET_ARGUMENT_P("fond=""f=",niveau_fond);
GET_ARGUMENT_P("signature=""ns=",niveau_signature);
/* Le 20050623150439, "s=" a ete remplace par "ns=" (double definition...). */
GET_ARGUMENT_I("taille=""T=",taille_des_caracteres_des_messages);
GET_ARGUMENT_I("bibliotheque=",vecteurs_____num_bibliotheque);
GET_ARGUMENT_I("duree=""d=",duree_d_attente);
GET_ARGUMENT_I("Duree=""D=",temporisation_inter_palettes);
GET_ARGUMENT_L("Fdimension=""Fd=",changer_la_dimension_de_la_fenetre);
GET_ARGUMENT_F("FXdimension=""FX=",X_dimension_de_la_fenetre);
GET_ARGUMENT_F("FYdimension=""FY=",Y_dimension_de_la_fenetre);
GET_ARGUMENT_L("centrer=""Fcentrer=""Fc=",centrer_la_fenetre);
/* Parametre introduit le 20060427162526... */
GET_ARGUMENT_F("xc=""x=""X=",ASD1(coin_bas_gauche,x));
GET_ARGUMENT_F("yc=""y=""Y=",ASD1(coin_bas_gauche,y));
GET_ARGUMENT_C("substitution=""s=",nom_substitution);
GET_ARGUMENT_C("sR=",nom_substitution_ROUGE);
GET_ARGUMENT_C("sV=",nom_substitution_VERTE);
GET_ARGUMENT_C("sB=",nom_substitution_BLEUE);
GET_ARGUMENT_L("forcer_niveau=""fn=",Iload_palette_de_couleurs_____forcer_un_niveau);
GET_ARGUMENT_P("niveau_force=""nf=",Iload_palette_de_couleurs_____niveau_a_forcer);
GET_ARGUMENT_P("niveau_ROUGE_force=""nRf=",Iload_palette_de_couleurs_____composante_ROUGE_du_niveau_a_forcer);
GET_ARGUMENT_P("niveau_VERTE_force=""nVf=",Iload_palette_de_couleurs_____composante_VERTE_du_niveau_a_forcer);
GET_ARGUMENT_P("niveau_BLEUE_force=""nBf=",Iload_palette_de_couleurs_____composante_BLEUE_du_niveau_a_forcer);
/* Parametres introduits le 20231128131827... */
)
);
# Aifdef ALLOCATION_DES_COULEURS_VERSION_02
# Eifdef ALLOCATION_DES_COULEURS_VERSION_02
# undef COMPATIBILITE_20240331
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
Test(EST_VRAI(IXopen_____mettre_X_Window_en_mode_fausses_couleurs))
/* Possibilite introduite le 20021231100222. */
Bblock
Test(PAS_D_ERREUR(CODE_ERROR(Iload_image_avec_redimensionnement_eventuel(ImageG,nom_imageA
,tenter_un_redimensionnement
,nombre_d_arguments,arguments
)
)
)
)
Bblock
Test(IL_FAUT(signer))
Bblock
CALS(Isignature(niveau_fond,niveau_signature,taille_des_caracteres_des_messages));
/* Signature eventuelle de l'image... */
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ATes
Bblock
Test(PAS_D_ERREUR(CODE_ERROR(Iload_image_avec_redimensionnement_eventuel(Image_ROUGE
,NOM_D_UNE_COMPOSANTE(nom_imageAR,c_ROUGE)
,tenter_un_redimensionnement
,nombre_d_arguments,arguments
)
)
)
)
Bblock
Test(PAS_D_ERREUR(CODE_ERROR(Iload_image_avec_redimensionnement_eventuel(Image_VERTE
,NOM_D_UNE_COMPOSANTE(nom_imageAV,c_VERTE)
,tenter_un_redimensionnement
,nombre_d_arguments,arguments
)
)
)
)
Bblock
Test(PAS_D_ERREUR(CODE_ERROR(Iload_image_avec_redimensionnement_eventuel(Image_BLEUE
,NOM_D_UNE_COMPOSANTE(nom_imageAB,c_BLEUE)
,tenter_un_redimensionnement
,nombre_d_arguments,arguments
)
)
)
)
Bblock
CALS(Iluminance(ImageG,Image_ROUGE,Image_VERTE,Image_BLEUE));
/* Au cas ou il serait ensuite impossible de visualiser en vraies couleurs (c'est le cas */
/* si le serveur -par exemple celui de '$LACT14'- ne connait pas 'TrueColor'...). Ainsi */
/* l'image visualisee en 'PseudoColor' sera representative de l'image 'TrueColor'... */
Test(IL_FAUT(signer))
Bblock
PRINT_ATTENTION("en mode 'vraies couleurs', la signature n'est pas disponible");
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ETes
Test(PAS_D_ERREUR(CODE_ERREUR))
Bblock
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
Test(PAS_D_ERREUR(CODE_ERROR(Iload_image_avec_redimensionnement_eventuel(ImageG,nom_imageA
,tenter_un_redimensionnement
,nombre_d_arguments,arguments
)
)
)
)
Bblock
Test(IL_FAUT(signer))
Bblock
CALS(Isignature(niveau_fond,niveau_signature,taille_des_caracteres_des_messages));
/* Signature eventuelle de l'image... */
Eblock
ATes
Bblock
Eblock
ETes
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
CALS(IRopen());
CALS(IRdisplay(ImageG,seuil_de_display));
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
CHARGEMENT_DE_LA_PALETTE_DE_COULEURS;
/* Chargement des trois listes de substitution constitutive d'une palette. */
INITIALISATION_ACCROISSEMENT_2D(dimension_de_la_fenetre
,_____lNORMALISE_OX5(dimX5)
,_____lNORMALISE_OY5(dimY5)
);
/* Definition des dimensions de la fenetre. */
CALS(IDopen(nom_imageA,ADRESSE(dimension_de_la_fenetre),ADRESSE(coin_haut_gauche)));
CALS(IDdisplay(ImageG));
Test(IL_FAUT(animation_des_couleurs))
Bblock
Loop
Bblock
INCR(increment_des_niveaux,increment_de_l_increment_des_niveaux);
/* Incrementation de l'increment courant des couleurs... */
CALS(IDpalette(increment_des_niveaux));
/* Renvoi de la palette translatee circulairement, */
CALS(IDdisplay(ImageG));
/* Et de l'image malheureusement... */
Eblock
ELoo
Eblock
ATes
Bblock
DODO(duree_d_attente);
/* Lorsque l'animation des couleurs n'est pas demandee, on ne fait rien... */
Eblock
ETes
CALS(IDclose());
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
Test(EST_VRAI(IXopen_____mettre_X_Window_en_mode_fausses_couleurs))
/* Possibilite introduite le 20021231100222. */
Bblock
RECHERCHE_D_UNE_LISTE_DE_SUBSTITUTION(nom_substitution,substitution_courante,substitution_courante);
/* Tentative de recherche de la substitution demandee... */
CHARGEMENT_DE_LA_PALETTE_DE_COULEURS;
/* Chargement des trois listes de substitution constitutive d'une palette. */
Test(IFEQ(substitution_courante,L_SUBSTITUTION_VARIABLE))
Bblock
CALS(Icompactage_d_une_palette(nombre_de_couleurs_necessaires));
/* Pour la substitution 'VARIABLE', on procede a un compactage de la palette Argument. */
Eblock
ATes
Bblock
Eblock
ETes
RECHERCHE_D_UNE_LISTE_DE_SUBSTITUTION(nom_substitution_ROUGE,L_SUBSTITUTION_ROUGE,L_SUBSTITUTION_ROUGE_BASIC);
RECHERCHE_D_UNE_LISTE_DE_SUBSTITUTION(nom_substitution_VERTE,L_SUBSTITUTION_VERTE,L_SUBSTITUTION_VERTE_BASIC);
RECHERCHE_D_UNE_LISTE_DE_SUBSTITUTION(nom_substitution_BLEUE,L_SUBSTITUTION_BLEUE,L_SUBSTITUTION_BLEUE_BASIC);
/* Definition des permutations de couleurs. */
Test(IFNE(substitution_courante,L_SUBSTITUTION_NEUTRE))
Bblock
SUBSTITUTION(substitution_courante);
/* Positionnement de la substitution courante quelqu'elle soit (mais non 'NEUTRE'...). */
SET_FILTRAGE(ACTIF);
/* Et on active le filtrage... */
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
Test(IL_FAUT(changer_la_dimension_de_la_fenetre))
/* Ce test a ete introduit le 20030401153145. */
Bblock
INITIALISATION_ACCROISSEMENT_2D(dimension_de_la_fenetre
,X_dimension_de_la_fenetre
,Y_dimension_de_la_fenetre
);
/* Definition des dimensions arbitraire pour la fenetre. */
Eblock
ATes
Bblock
INITIALISATION_ACCROISSEMENT_2D(dimension_de_la_fenetre
,_____lNORMALISE_OX11(dimX11)
,_____lNORMALISE_OY11(dimY11)
);
/* Definition des dimensions de la fenetre tel qu'une image y tienne juste... */
Eblock
ETes
CALS(IXinitialisation());
/* Initialisation fondamentale introduite le 20160815122058... */
CALS(IXopen(serveur_standard
,nom_imageA
,ADRESSE(dimension_de_la_fenetre)
,centrer_la_fenetre
,ADRESSE(coin_bas_gauche)
,editer_les_PRINT_ATTENTION_initiaux
)
);
CALS(IXdisplay(ImageG
,Image_ROUGE
,Image_VERTE
,Image_BLEUE
,INCREMENT_DES_NIVEAUX_PAR_DEFAUT_DE_IXdisplay
,TRANSLATER_LE_NOIR_PAR_DEFAUT_DE_IXdisplay
)
);
/* Visualisation de l'image avec la palette courante ou en version vraies couleurs */
/* (introduit le 20030101172225). */
Test(EST_VRAI(IXopen_____X_Window_a_ete_mis_en_mode_fausses_couleurs))
/* Possibilite introduite le 20021231100222 et amelioree le 20030102001152. */
Bblock
# ifdef ALLOCATION_DES_COULEURS_VERSION_02
Test(IL_NE_FAUT_PAS(animation_des_couleurs))
Bblock
/* La palette courante peut etre decalee circulairement meme si l'animation des couleurs */
/* n'est pas demandee ; il suffit que l'increment des niveaux soit non nul... */
Test(IFET(IZNE(increment_de_l_increment_des_niveaux)
,IFNE(increment_de_l_increment_des_niveaux,INCREMENT_DE_L_INCREMENT_DES_NIVEAUX)
)
)
Bblock
INCR(increment_des_niveaux,increment_de_l_increment_des_niveaux);
/* Positionnement du decalage circulaire de la palettes, sachant que celui-ci ne peut etre */
/* ni nul (ce qui ne servirait a rien...), ni valoir 'INCREMENT_DE_L_INCREMENT_DES_NIVEAUX' */
/* (car il s'agit de l'etat initial, ce qui donnerait alors, lorsqu'il n'y a pas d'animation */
/* des couleurs demandee, un decalage systematique des couleurs...). */
CALS(IXpalette(increment_des_niveaux,translater_le_NOIR));
/* Renvoi de la palette translatee circulairement avant l'attente de fin de visualisation... */
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
# Aifdef ALLOCATION_DES_COULEURS_VERSION_02
# Eifdef ALLOCATION_DES_COULEURS_VERSION_02
ATTENTE_DE_LA_FIN_DE_VISUALISATION;
/* Et attente de l'evenement de fin de visualisation... */
# ifdef ALLOCATION_DES_COULEURS_VERSION_02
Test(IL_FAUT(animation_des_couleurs))
Bblock
Test(IZEQ(nombre_de_changements_de_couleurs))
Bblock
Loop
Bblock
GESTION_DE_L_INCREMENT_DES_NIVEAUX;
Eblock
ELoo
Eblock
ATes
Bblock
Repe(nombre_de_changements_de_couleurs)
Bblock
GESTION_DE_L_INCREMENT_DES_NIVEAUX;
Eblock
ERep
ATTENTE_DE_LA_FIN_DE_VISUALISATION;
/* Et attente de l'evenement de fin de visualisation... */
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
# Aifdef ALLOCATION_DES_COULEURS_VERSION_02
# Eifdef ALLOCATION_DES_COULEURS_VERSION_02
Eblock
ATes
Bblock
Test(IL_NE_FAUT_PAS(animation_des_couleurs))
Bblock
/* La palette courante peut etre decalee circulairement meme si l'animation des couleurs */
/* n'est pas demandee ; il suffit que l'increment des niveaux soit non nul... */
Test(IFET(IZNE(increment_de_l_increment_des_niveaux)
,IFNE(increment_de_l_increment_des_niveaux,INCREMENT_DE_L_INCREMENT_DES_NIVEAUX)
)
)
Bblock
Test(EST_VRAI(IXopen_____mettre_X_Window_en_mode_fausses_couleurs))
Bblock
INCR(increment_des_niveaux,increment_de_l_increment_des_niveaux);
/* Positionnement du decalage circulaire de la palettes, sachant que celui-ci ne peut etre */
/* ni nul (ce qui ne servirait a rien...), ni valoir 'INCREMENT_DE_L_INCREMENT_DES_NIVEAUX' */
/* (car il s'agit de l'etat initial, ce qui donnerait alors, lorsqu'il n'y a pas d'animation */
/* des couleurs demandee, un decalage systematique des couleurs...). */
CALS(IXdisplay(ImageG
,Image_ROUGE
,Image_VERTE
,Image_BLEUE
,increment_des_niveaux
,translater_le_NOIR
)
);
/* Revisualisation de l'image avec la palette courante decalee... */
Eblock
ATes
Bblock
PRINT_ATTENTION("en mode 'VRAIES COULEURS' le decalage des couleurs n'est pas disponible");
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
ATTENTE_DE_LA_FIN_DE_VISUALISATION;
/* Et attente de l'evenement de fin de visualisation... */
Test(IL_FAUT(animation_des_couleurs))
Bblock
Test(EST_VRAI(IXopen_____mettre_X_Window_en_mode_fausses_couleurs))
Bblock
Test(IZEQ(nombre_de_changements_de_couleurs))
Bblock
Loop
Bblock
gGESTION_DE_L_INCREMENT_DES_NIVEAUX(BLOC(CALS(IXdisplay(ImageG
,Image_ROUGE
,Image_VERTE
,Image_BLEUE
,increment_des_niveaux
,translater_le_NOIR
)
);
)
);
Eblock
ELoo
Eblock
ATes
Bblock
Repe(nombre_de_changements_de_couleurs)
Bblock
gGESTION_DE_L_INCREMENT_DES_NIVEAUX(BLOC(CALS(IXdisplay(ImageG
,Image_ROUGE
,Image_VERTE
,Image_BLEUE
,increment_des_niveaux
,translater_le_NOIR
)
);
)
);
Eblock
ERep
ATTENTE_DE_LA_FIN_DE_VISUALISATION;
/* Et attente de l'evenement de fin de visualisation... */
Eblock
ETes
Eblock
ATes
Bblock
PRINT_ATTENTION("en mode 'VRAIES COULEURS' l'animation des couleurs n'est pas disponible");
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ETes
CALS(IXclose());
Test(IFNE(substitution_courante,L_SUBSTITUTION_NEUTRE))
Bblock
SET_FILTRAGE(INACTIF);
SUBSTITUTION(L_SUBSTITUTION_NEUTRE);
Eblock
ATes
Bblock
Eblock
ETes
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
Eblock
ATes
Bblock
Test__CODE_ERREUR__ERREUR07;
Eblock
ETes
RETU_Commande;
Eblock
ECommande