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