/*************************************************************************************************************************************/ /* */ /* A F F I C H A G E D ' U N E S E Q U E N C E D ' I M A G E S : */ /* */ /* */ /* Definition : */ /* */ /* Cette commande affiche une sequence */ /* d'images Argument. */ /* */ /* */ /* Author of '$xci/sequence$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 #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_IMAGESF_EXT /* Introduit le 20070712101423... */ # include image_image_QUAD_IMAGE_EXT /* ATTENTION, avant le 20021230112537, 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" /* ATTENTION, on ne peut utiliser 'Iload_image_avec_redimensionnement_eventuel(...)' ici */ /* de facon simple, car, en effet, l'ouverture de la fenetre a lieu avant le chargement */ /* individuel des images. La dimension ne peut donc plus etre changee par la suite... */ /* */ /* Enfin, 'Iload_image_avec_redimensionnement_eventuel(...)' est actuellement inutilisable */ /* pour des raisons detaillees dans 'v $xiii/files$FON'. */ #define EDITER_LES_MESSAGES_D_ERREUR \ EDITER_LES_MESSAGES_D_ERREUR_DES_FICHIERS \ /* Indique si les messages d'erreur des fichiers doivent etre emis ('VRAI') ou pas ('FAUX'), */ \ /* ce qui peut etre tres utile lorsque l'on considere que les images non existantes ne sont */ \ /* pas encore produites et qu'il faut donc les attendre... */ #define EDITER_LE_NOM_DES_IMAGES \ FAUX \ /* Indique si le nom de chacune des images affichees doit etre indique ('VRAI') ou pas */ \ /* ('FAUX'), l'edition ayant lieu comme pour un message d'erreur (afin de ne pas perturber */ \ /* le "pipe" des images...). */ #define EDITER_SEULEMENT_LE_NUMERO_DES_IMAGES \ FAUX \ /* Indique si 'IL_FAUT(editer_le_nom_des_images)' si le nom entier doit etre edite ('FAUX') */ \ /* ou seulement le numero ('VRAI'). */ #include xci/sequence.01.I" #define TEMPORISATION_INTER_TRAMES \ ZERO \ /* Temporisation inter_trames ; une valeur nulle fait qu'il n'y a pas d'attente, et une */ \ /* valeur negative provoque l'attente sur la souris (ATTENTION, cette convention n'est pas */ \ /* celle de '$xci/display$K', car en effet, dans le cas de '$xci/sequence$K', en general on */ \ /* ne veut pas attendre apres chaque image, ce qui correspond reellement a une attente */ \ /* nulle ; cette convention ne peut donc etre utilisee...). */ #define NOMBRE_DE_REPETITIONS \ UN \ /* Nombre implicite de repetitions de l'animation... */ #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX # define TEMPORISATION_INTER_ANIMATIONS \ QUAD(SEIZE) \ /* Temporisation inter_animations ; une valeur nulle fait qu'il n'y a pas d'attente... */ #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 20021231172005. */ # 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 20030401180401. */ # ifdef ALLOCATION_DES_COULEURS_VERSION_02 # define TRANSLATER_LE_NOIR \ TRANSLATER_LE_NOIR_PAR_DEFAUT_DE_IXdisplay \ /* Indique si le niveau 'NOIR' est translatable dans 'ACCES_LA_PALETTE_ET_TRANSLATION(...)' */ \ /* ou pas (introduit le 20070712110252). */ # define INCREMENT_DES_NIVEAUX \ INCREMENT_DES_NIVEAUX_PAR_DEFAUT_DE_IXdisplay \ /* Increment destine a decaler circulairement la palette (introduit le 20070712110252). */ # Aifdef ALLOCATION_DES_COULEURS_VERSION_02 # Eifdef ALLOCATION_DES_COULEURS_VERSION_02 # define ATTENDRE_LES_IMAGES_INEXISTANTES \ VRAI \ /* Indique si les images inexistantes constituent une erreur ('FAUX'), ou bien si cela est */ \ /* normal ('VRAI'), ce qui signifie qu'elles n'ont pas encore ete calculee... */ # define TEMPORISATION_INTER_ANIMATIONS \ 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... */ # define IL_FAUT_RENORMALISER \ FAUX \ /* Il ne faut pas renormaliser les images standard par defaut... */ # include xci/acces.01.I" /* Introduit le 20070712092453... */ #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_X_WINDOW # include xci/acces.02.I" /* Introduit le 20070712092453... */ # define CHARGEMENT_DE_L_IMAGE_COURANTE \ Bblock \ BSaveModifyVariable(Logical \ ,Iload_image_____initialiser_en_cas_d_erreur_fichier \ ,FAUX \ ); \ /* Introduit le 20101118101240 afin que le reaffichage de l'image precedente se passe bien */ \ /* lorsque l'image courante est inexistante ; ainsi on bloque la reinitialisation et donc */ \ /* en cas d'erreur d'acces a l'image courante, l'image precedente est conservee... */ \ \ Test(EST_VRAI(IXopen_____mettre_X_Window_en_mode_fausses_couleurs)) \ /* Possibilite introduite le 20021231100222. */ \ Bblock \ Test(PAS_D_ERREUR(CODE_ERROR(gIload_image(les_images_sont_standards,ImageA,IFmageA,nom_image)))) \ Bblock \ Test(EST_VRAI(les_images_sont_standards)) \ Bblock \ Test(EST_VRAI(les_images_standards_sont_a_renormaliser)) \ Bblock \ CALS(Irenormalisation(ImageA,ImageA)); \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ ATes \ Bblock \ Test(EST_VRAI(il_faut_calculer_les_extrema_des_images_non_standards)) \ Bblock \ Test(IL_FAUT(conserver_le_zero)) \ Bblock \ CALS(Ifloat_std_avec_le_vrai_zero_et_renormalisation(ImageA,IFmageA)); \ /* Renormalisation obligatoire lorsque l'image Argument est deja 'Float' en conservant le */ \ /* zero. */ \ Eblock \ ATes \ Bblock \ CALS(Ifloat_std_avec_renormalisation(ImageA,IFmageA)); \ /* Renormalisation obligatoire lorsque l'image Argument est deja 'Float' en deplacant le */ \ /* zero. */ \ Eblock \ ETes \ Eblock \ ATes \ Bblock \ Test(IL_FAUT(tronquer_les_niveaux)) \ Bblock \ CALS(Ifloat_std_avec_troncation(ImageA,IFmageA,FLOT__NOIR,FLOT__BLANC)); \ /* Renormalisation avec forcage des extrema... */ \ Eblock \ ATes \ Bblock \ CALS(Ifloat_std(ImageA,IFmageA,minimum_force,maximum_force)); \ /* Renormalisation avec forcage des extrema... */ \ Eblock \ ETes \ Eblock \ ETes \ \ REMONTEE_DU_NIVEAU_DE_NOIR(ImageA,ImageA,niveau_de_NOIR_remonte); \ /* Remontee eventuelle du niveau de NOIR... */ \ Eblock \ ETes \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ ATes \ Bblock \ Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(Image_ROUGE \ ,gNOM_D_UNE_COMPOSANTE(nom_image,nom_imageAR,c_ROUGE) \ ) \ ) \ ) \ ) \ Bblock \ Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(Image_VERTE \ ,gNOM_D_UNE_COMPOSANTE(nom_image,nom_imageAV,c_VERTE) \ ) \ ) \ ) \ ) \ Bblock \ Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(Image_BLEUE \ ,gNOM_D_UNE_COMPOSANTE(nom_image,nom_imageAB,c_BLEUE) \ ) \ ) \ ) \ ) \ Bblock \ CALS(Iluminance(ImageA,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'... */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ ETes \ \ ESaveModifyVariable(Logical \ ,Iload_image_____initialiser_en_cas_d_erreur_fichier \ ); \ Eblock \ /* Chargement de l'image courante... */ #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW #define EDITION_FACULTATIVE_DU_NOM_DE_CHAQUE_IMAGE \ Bblock \ Test(IL_FAUT(editer_le_nom_des_images)) \ Bblock \ Test(IFEQ(numero_d_image,premiere_image)) \ Bblock \ CALS(Fsauts_de_lignes(UN)); \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ \ Test(IL_FAUT(editer_seulement_le_numero_des_images)) \ Bblock \ CAL3(Prme1("%s\n",chain_numero_modulo(numero_d_image,nombre_de_chiffres))); \ /* Le 20221212115343, 'chain_numero_modulo(...)' a remplace 'chain_numero(...)'... */ \ Eblock \ ATes \ Bblock \ CAL3(Prme1("%s\n",nom_image)); \ Eblock \ ETes \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ /* Edition, lorsque cela est demande, du nom de l'image courante... */ #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW # if ( (defined(BUG_SYSTEME_SG_X_WINDOW_BACKINGSTORE_1)) \ ) # define ATTENTE_DE_LA_FIN_DE_VISUALISATION \ Bblock \ Test(IZLT(temporisation_inter_trames)) \ 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(temporisation_inter_trames); \ /* 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(IZLT(temporisation_inter_trames)) \ 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_trames); \ /* 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 /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A F F I C H A G E D ' U N E S E Q U E N C E D ' I M A G E S : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE)); /* Nom de la sequence a visualiser. */ DEFV(CHAR,INIC(POINTERc(nom_postfixe),NOM_UNDEF_VIDE)); /* Nom d'un eventuel postfixe a placer derriere <nom_imageA><numero> (par exemple '$ROUGE'). */ DEFV(Int,INIT(premiere_image,PREMIERE_IMAGE)); /* Numero de la premiere image, */ DEFV(Int,INIT(derniere_image,DERNIERE_IMAGE)); /* Numero de la derniere image. */ DEFV(Int,INIT(pas_des_images,PAS_DES_IMAGES)); /* Pas de passage d'un numero d'image a une autre. */ DEFV(Int,INIT(nombre_de_chiffres,NOMBRE_DE_CHIFFRES)); /* Nombre de chiffres codant le numero des images de la serie... */ DEFV(Int,INIT(numero_d_image,UNDEF)); /* Numero de l'image courante. */ DEFV(CHAR,INIT(POINTERc(nom_image),NOM_UNDEF)); /* Nom courant des images. */ DEFV(Logical,INIT(editer_le_nom_des_images,EDITER_LE_NOM_DES_IMAGES)); /* Indique si le nom de chacune des images affichees doit etre indique ('VRAI') ou pas */ /* ('FAUX'), l'edition ayant lieu comme pour un message d'erreur (afin de ne pas perturber */ /* le "pipe" des images... */ DEFV(Logical,INIT(editer_seulement_le_numero_des_images,EDITER_SEULEMENT_LE_NUMERO_DES_IMAGES)); /* Indique si 'IL_FAUT(editer_le_nom_des_images)' si le nom entier doit etre edite ('FAUX') */ /* ou seulement le numero ('VRAI'). */ DEFV(CHAR,INIC(POINTERc(nom_paletteA),NOM_PIPE)); /* Nom de la palette a utiliser. */ DEFV(Int,INIT(temporisation_inter_trames,TEMPORISATION_INTER_TRAMES)); /* Temporisation inter_trames ; une valeur nulle fait qu'il n'y a pas d'attente, et une */ /* valeur negative provoque l'attente sur la souris (ATTENTION, cette convention n'est pas */ /* celle de '$xci/display$K', car en effet, dans le cas de '$xci/sequence$K', en general on */ /* ne veut pas attendre apres chaque image, ce qui correspond reellement a une attente */ /* nulle ; cette convention ne peut donc etre utilisee...). C'est la raison pour laquelle */ /* 'temporisation_inter_trames' est de type 'Int' et non pas 'Positive'... */ DEFV(Int,INIT(temporisation_inter_animations,TEMPORISATION_INTER_ANIMATIONS)); /* Temporisation inter_animations ; une valeur nulle fait qu'il n'y a pas d'attente... */ /* */ /* ATTENTION, jusqu'au 19970507160714, cet 'Int' avait le type 'Positive'. */ DEFV(Positive,INIT(nombre_de_repetitions,NOMBRE_DE_REPETITIONS)); /* Nombre implicite de repetitions de l'animation... */ 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(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 20021231172005. */ DEFV(Logical,INIT(attendre_les_images_inexistantes,ATTENDRE_LES_IMAGES_INEXISTANTES)); /* Indique si les images inexistantes constituent une erreur ('FAUX'), ou bien si cela est */ /* normal ('VRAI'), ce qui signifie qu'elles n'ont pas encore ete calculee... */ # ifdef ALLOCATION_DES_COULEURS_VERSION_02 DEFV(Logical,INIT(translater_le_NOIR,TRANSLATER_LE_NOIR)); /* Indique si le niveau 'NOIR' est translatable dans 'ACCES_LA_PALETTE_ET_TRANSLATION(...)' */ /* ou pas (introduit le 20070712110252). */ DEFV(Int,INIT(increment_des_niveaux,INCREMENT_DES_NIVEAUX)); /* Increment destine a decaler circulairement la palette (introduit le 20070712110252). */ # Aifdef ALLOCATION_DES_COULEURS_VERSION_02 # Eifdef ALLOCATION_DES_COULEURS_VERSION_02 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 20030401180401. */ # include xci/acces.03.I" /* Introduit le 20070712092453... */ #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW /*..............................................................................................................................*/ EGAL(files_____editer_les_messages_d_erreur_de_lecture_des_fichiers,EDITER_LES_MESSAGES_D_ERREUR); /* Initialisation de l'indicateur d'edition des messages d'erreur... */ #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_ARGUMENTSi(nombre_d_arguments ,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA); GET_ARGUMENT_C("postfixe=",nom_postfixe); GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA); GET_ARGUMENT_I("premiere=",premiere_image); GET_ARGUMENT_I("derniere=",derniere_image); GET_ARGUMENT_I("pas=",pas_des_images); GET_ARGUMENT_L("editer=""lister=",editer_le_nom_des_images); /* Le synonyme "lister=" a ete introduit le 20101205133859... */ GET_ARGUMENT_L("numero=",editer_seulement_le_numero_des_images); GET_ARGUMENT_I("chiffres=",nombre_de_chiffres); GET_ARGUMENT_I("repetition=""r=",nombre_de_repetitions); GET_ARGUMENT_I("Duree=""D=",temporisation_inter_trames); GET_ARGUMENT_I("duree=""d=",temporisation_inter_animations); GET_ARGUMENT_F("xc=""x=""X=",ASD1(coin_haut_gauche,x)); GET_ARGUMENT_F("yc=""y=""Y=",ASD1(coin_haut_gauche,y)); GET_ARGUMENT_L("messages_erreur_fichiers=""mef=" ,files_____editer_les_messages_d_erreur_de_lecture_des_fichiers ); /* Ces arguments ont ete introduits le 20120302212805... */ ) ); #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... */ # ifdef ALLOCATION_DES_COULEURS_VERSION_01 GET_ARGUMENTSi(nombre_d_arguments ,BLOC(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 20100109113313 pour acceder au serveur 'Xming' (Windows Vista). */ GET_ARGUMENT_L("attendre=",attendre_les_images_inexistantes); 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_C("imageA=""A=",nom_imageA); GET_ARGUMENT_L("standard=",les_images_sont_standards); /* Parametre introduit le 20070712092453. */ 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); 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("postfixe=",nom_postfixe); GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA); GET_ARGUMENT_I("nombre=""couleurs=",nombre_de_couleurs_necessaires); GET_ARGUMENT_I("premiere=",premiere_image); GET_ARGUMENT_I("derniere=",derniere_image); GET_ARGUMENT_I("pas=",pas_des_images); GET_ARGUMENT_L("editer=",editer_le_nom_des_images); GET_ARGUMENT_L("numero=",editer_seulement_le_numero_des_images); GET_ARGUMENT_I("chiffres=",nombre_de_chiffres); GET_ARGUMENT_L("zero=",conserver_le_zero); GET_ARGUMENT_L("rn=""renormaliser=",les_images_standards_sont_a_renormaliser); GET_ARGUMENT_P("rNOIR=",Ifloat_std_____niveau_NOIR); GET_ARGUMENT_P("rBLANC=",Ifloat_std_____niveau_BLANC); GET_ARGUMENT_L("extrema=",il_faut_calculer_les_extrema_des_images_non_standards); GET_ARGUMENT_L("tronquer=",tronquer_les_niveaux); GET_ARGUMENT_L("NOIR_unique=",Ifloat_std_____seul_le_niveau_minimal_donnera_du_NOIR); GET_ARGUMENT_L("eviter_faux_NOIRs=""eviter=",Ifloat_std_avec_troncation_____eviter_les_faux_points_NOIRs); GET_ARGUMENT_P("noir_remonte=""niveau=""n=""NOIR_remonte=",niveau_de_NOIR_remonte); /* Parametres introduits le 20070712092453. */ GET_ARGUMENT_L("message_attention_extrema=""mae=" ,Ifloat_std_____editer_le_message_d_attention_relatif_aux_extrema ); /* Introduit le 20140102175056... */ GET_ARGUMENT_F("minimum=""min=",minimum_force); GET_ARGUMENT_F("maximum=""max=",maximum_force); GET_ARGUMENT_F("epsilon=",Ifloat_std_____epsilon_de_seuillage_inferieur_par_rapport_au_niveau_minimal); /* Parametres introduits le 20070712092453. */ GET_ARGUMENT_I("repetition=""r=",nombre_de_repetitions); GET_ARGUMENT_I("Duree=""D=",temporisation_inter_trames); GET_ARGUMENT_I("duree=""d=",temporisation_inter_animations); 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 20060427162740... */ 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_L("messages_erreur_fichiers=""mef=" ,files_____editer_les_messages_d_erreur_de_lecture_des_fichiers ); /* Ces arguments ont ete introduits le 20120302212805... */ ) ); # Aifdef ALLOCATION_DES_COULEURS_VERSION_01 # Eifdef ALLOCATION_DES_COULEURS_VERSION_01 # ifdef ALLOCATION_DES_COULEURS_VERSION_02 GET_ARGUMENTSi(nombre_d_arguments ,BLOC(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 20100109113313 pour acceder au serveur 'Xming' (Windows Vista). */ GET_ARGUMENT_L("attendre=",attendre_les_images_inexistantes); 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_C("imageA=""A=",nom_imageA); GET_ARGUMENT_L("standard=",les_images_sont_standards); /* Parametre introduit le 20070712092453. */ 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); 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("postfixe=",nom_postfixe); GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA); GET_ARGUMENT_L("translater_le_NOIR=""noir=""NOIR=",translater_le_NOIR); GET_ARGUMENT_I("increment=""i=",increment_des_niveaux); /* Parametres introduits le 20070712092453. */ GET_ARGUMENT_I("nombre=""couleurs=",nombre_de_couleurs_necessaires); GET_ARGUMENT_I("premiere=",premiere_image); GET_ARGUMENT_I("derniere=",derniere_image); GET_ARGUMENT_I("pas=",pas_des_images); GET_ARGUMENT_L("editer=",editer_le_nom_des_images); GET_ARGUMENT_L("numero=",editer_seulement_le_numero_des_images); GET_ARGUMENT_I("chiffres=",nombre_de_chiffres); GET_ARGUMENT_L("zero=",conserver_le_zero); GET_ARGUMENT_L("rn=""renormaliser=",les_images_standards_sont_a_renormaliser); GET_ARGUMENT_P("rNOIR=",Ifloat_std_____niveau_NOIR); GET_ARGUMENT_P("rBLANC=",Ifloat_std_____niveau_BLANC); GET_ARGUMENT_L("extrema=",il_faut_calculer_les_extrema_des_images_non_standards); GET_ARGUMENT_L("tronquer=",tronquer_les_niveaux); GET_ARGUMENT_L("NOIR_unique=",Ifloat_std_____seul_le_niveau_minimal_donnera_du_NOIR); GET_ARGUMENT_L("eviter_faux_NOIRs=""eviter=",Ifloat_std_avec_troncation_____eviter_les_faux_points_NOIRs); GET_ARGUMENT_P("noir_remonte=""niveau=""n=""NOIR_remonte=",niveau_de_NOIR_remonte); /* Parametres introduits le 20070712092453. */ GET_ARGUMENT_L("message_attention_extrema=""mae=" ,Ifloat_std_____editer_le_message_d_attention_relatif_aux_extrema ); /* Introduit le 20140102175056... */ GET_ARGUMENT_F("minimum=""min=",minimum_force); GET_ARGUMENT_F("maximum=""max=",maximum_force); GET_ARGUMENT_F("epsilon=",Ifloat_std_____epsilon_de_seuillage_inferieur_par_rapport_au_niveau_minimal); /* Parametres introduits le 20070712092453. */ GET_ARGUMENT_I("repetition=""r=",nombre_de_repetitions); GET_ARGUMENT_I("Duree=""D=",temporisation_inter_trames); GET_ARGUMENT_I("duree=""d=",temporisation_inter_animations); 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 20060427162740... */ 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_L("messages_erreur_fichiers=""mef=" ,files_____editer_les_messages_d_erreur_de_lecture_des_fichiers ); /* Ces arguments ont ete introduits le 20120302212805... */ ) ); # 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 #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))); Repe(nombre_de_repetitions) Bblock DoQu(numero_d_image,premiere_image,derniere_image,pas_des_images) Bblock EGAL(nom_image ,COND(IFEQ_chaine(nom_postfixe,NOM_UNDEF_VIDE) ,chain_Aconcaten2_sauf_nom_pipe(nom_imageA ,chain_numero_modulo(numero_d_image,nombre_de_chiffres) ) ,chain_Aconcaten3_sauf_nom_pipe(nom_imageA ,chain_numero_modulo(numero_d_image,nombre_de_chiffres) ,nom_postfixe ) ) ); /* Le 20221212115343, 'chain_numero_modulo(...)' a remplace 'chain_numero(...)'... */ Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageA,nom_image)))) /* ATTENTION, on ne peut utiliser 'Iload_image_avec_redimensionnement_eventuel(...)' ici */ /* de facon simple, car, en effet, l'ouverture de la fenetre a lieu avant le chargement */ /* individuel des images. La dimension ne peut donc plus etre changee par la suite... */ /* */ /* Enfin, 'Iload_image_avec_redimensionnement_eventuel(...)' est actuellement inutilisable */ /* pour des raisons detaillees dans 'v $xiii/files$FON'. */ Bblock CALS(IDdisplay(ImageA)); /* Puis, lorsqu'elle est la, on l'affiche... */ EDITION_FACULTATIVE_DU_NOM_DE_CHAQUE_IMAGE; /* Edition, lorsque cela est demande, du nom de l'image courante lorsqu'elle existe... */ /* ATTENTION, on notera que 'EDITION_FACULTATIVE_DU_NOM_DE_CHAQUE_IMAGE' est situee apres */ /* l'appel a 'IDdisplay(...)' ce qui fait que le nom de l'image est edite apres, lorsque */ /* l'affichage est termine. Cela permet, par exemple, d'envoyer, via le reseau, des */ /* sequences d'images "en aveugle" et de simultanement les commenter par telephone... */ DODO(temporisation_inter_trames); Eblock ATes Bblock gTest__CODE_ERREUR__ERREUR07 (BLOC(Bblock PRINT_ATTENTION("la fin de flot a ete rencontree lors du chargement d'une 'image'"); Eblock ) ,BLOC(Bblock Test(IL_FAUT(files_____editer_les_messages_d_erreur_de_lecture_des_fichiers)) Bblock PRINT_ERREUR("le fichier demande n'existe pas ou n'est pas de type 'image'"); Eblock ATes Bblock Eblock ETes Eblock ) ); Eblock ETes CALZ_FreCC(nom_image); Eblock EDoI DODO(temporisation_inter_animations); Eblock ERep CALS(IDclose()); #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW Test(IL_FAUT(changer_la_dimension_de_la_fenetre)) /* Ce test a ete introduit le 20030401180401. */ 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 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 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 CALS(IXinitialisation()); /* Initialisation fondamentale introduite le 20160815122159... */ CALS(IXopen(serveur_standard ,nom_imageA ,ADRESSE(dimension_de_la_fenetre) ,centrer_la_fenetre ,ADRESSE(coin_bas_gauche) ,editer_les_PRINT_ATTENTION_initiaux ) ); # ifdef ALLOCATION_DES_COULEURS_VERSION_02 Test(EST_VRAI(IXopen_____X_Window_a_ete_mis_en_mode_fausses_couleurs)) Bblock Test(IZNE(increment_des_niveaux)) Bblock CALS(IXpalette(increment_des_niveaux,translater_le_NOIR)); /* Renvoi de la palette translatee circulairement (introduit le 20070712110252)... */ Eblock ATes Bblock Eblock ETes Eblock ATes Bblock Eblock ETes # Aifdef ALLOCATION_DES_COULEURS_VERSION_02 # Eifdef ALLOCATION_DES_COULEURS_VERSION_02 Repe(nombre_de_repetitions) Bblock DoQu(numero_d_image,premiere_image,derniere_image,pas_des_images) Bblock EGAL(nom_image ,COND(IFEQ_chaine(nom_postfixe,NOM_UNDEF_VIDE) ,chain_Aconcaten2_sauf_nom_pipe(nom_imageA ,chain_numero_modulo(numero_d_image,nombre_de_chiffres) ) ,chain_Aconcaten3_sauf_nom_pipe(nom_imageA ,chain_numero_modulo(numero_d_image,nombre_de_chiffres) ,nom_postfixe ) ) ); /* Le 20221212115343, 'chain_numero_modulo(...)' a remplace 'chain_numero(...)'... */ Test(IL_FAUT(attendre_les_images_inexistantes)) Bblock DEFV(Logical,INIT(iterer_le_chargement,VRAI)); /* Pour faire un chargement reussi pour chaque image... */ Tant(IL_FAUT(iterer_le_chargement)) Bblock CHARGEMENT_DE_L_IMAGE_COURANTE; Test(PAS_D_ERREUR(CODE_ERREUR)) Bblock EGAL(iterer_le_chargement,FAUX); /* L'image courante existe... */ Eblock ATes Bblock Test(IFGT(numero_d_image,premiere_image)) Bblock CALS(IXdisplay_avec_reinitialisation_du_reaffichage(ImageA ,Image_ROUGE,Image_VERTE,Image_BLEUE ,increment_des_niveaux ,translater_le_NOIR ) ); /* Le 20101118100139 fut introduit le reaffichage a priori de l'image precedente afin de */ /* compenser l'absence de 'IXattente_de_l_evenement_ButtonPress(...)' qui fait qu'alors */ /* cette image peut ne pas etre raffraichie a cause du jeu du "basculement" des fenetres... */ Eblock ATes Bblock Eblock ETes DODO(UN); /* Tant que l'image courante n'existe pas, on l'attend gentiment. Le 20101118100139 */ /* l'attente a ete reduite de 'DEUX' a 'UN' afin de faciliter le reaffichage frequent */ /* de l'image precedente ci-dessus par IXdisplay_avec_reinitialisation_du_reaffichage(...)'. */ Eblock ETes Eblock ETan CALS(IXdisplay_avec_reinitialisation_du_reaffichage(ImageA ,Image_ROUGE,Image_VERTE,Image_BLEUE ,increment_des_niveaux ,translater_le_NOIR ) ); /* Puis, lorsqu'elle est la, on l'affiche. L'affichage en vraies couleurs a ete introduit */ /* le 20030101172438. */ /* */ /* Le 20101118083802, la fonction 'IXdisplay_avec_reinitialisation_du_reaffichage(...)' */ /* a remplacee 'IXdisplay(...)'. */ EDITION_FACULTATIVE_DU_NOM_DE_CHAQUE_IMAGE; /* Edition, lorsque cela est demande, du nom de l'image courante lorsqu'elle existe... */ /* ATTENTION, on notera que 'EDITION_FACULTATIVE_DU_NOM_DE_CHAQUE_IMAGE' est situee apres */ /* l'appel a 'IXdisplay(...)' ce qui fait que le nom de l'image est edite apres, lorsque */ /* l'affichage est termine. Cela permet, par exemple, d'envoyer, via le reseau, des */ /* sequences d'images "en aveugle" et de simultanement les commenter par telephone... */ ATTENTE_DE_LA_FIN_DE_VISUALISATION; Eblock ATes Bblock CHARGEMENT_DE_L_IMAGE_COURANTE; Test(PAS_D_ERREUR(CODE_ERREUR)) Bblock CALS(IXdisplay_avec_reinitialisation_du_reaffichage(ImageA ,Image_ROUGE,Image_VERTE,Image_BLEUE ,increment_des_niveaux ,translater_le_NOIR ) ); /* Dans ce cas, l'image courante doit exister, sinon, c'est une erreur. L'affichage en */ /* vraies couleurs a ete introduit le 20030101172438. */ /* */ /* Le 20101118083802, la fonction 'IXdisplay_avec_reinitialisation_du_reaffichage(...)' */ /* a remplacee 'IXdisplay(...)'. */ EDITION_FACULTATIVE_DU_NOM_DE_CHAQUE_IMAGE; /* Edition, lorsque cela est demande, du nom de l'image courante lorsqu'elle existe... */ /* ATTENTION, on notera que 'EDITION_FACULTATIVE_DU_NOM_DE_CHAQUE_IMAGE' est situee apres */ /* l'appel a 'IXdisplay(...)' ce qui fait que le nom de l'image est edite apres, lorsque */ /* l'affichage est termine. Cela permet, par exemple, d'envoyer, via le reseau, des */ /* sequences d'images "en aveugle" et de simultanement les commenter par telephone... */ ATTENTE_DE_LA_FIN_DE_VISUALISATION; Eblock ATes Bblock gTest__CODE_ERREUR__ERREUR07 (BLOC(Bblock PRINT_ATTENTION("la fin de flot a ete rencontree lors du chargement d'une 'image'"); Eblock ) ,BLOC(Bblock Test(IL_FAUT(files_____editer_les_messages_d_erreur_de_lecture_des_fichiers)) Bblock PRINT_ERREUR("le fichier demande n'existe pas ou n'est pas de type 'image'"); Eblock ATes Bblock Eblock ETes Eblock ) ); Eblock ETes Eblock ETes CALZ_FreCC(nom_image); Eblock EDoI Test(IFET(IZEQ(temporisation_inter_animations),IFEQ(compteur_des_repetitions_du_Repe,nombre_de_repetitions))) Bblock Test(IZLT(temporisation_inter_trames)) Bblock /* ATTENTION, sur la derniere image de la sequence, lorsque 'temporisation_inter_trames' est */ /* negatif, il y a dans 'ATTENTE_DE_LA_FIN_DE_VISUALISATION' une premiere attente via la */ /* fonction 'IXattente_de_l_evenement_ButtonPress()' ; dans ces circonstances, il est donc */ /* inutile d'en faire une seconde ici... */ Eblock ATes Bblock CALS(IXattente_de_l_evenement_ButtonPress()); /* Boutons de la souris, mais ATTENTION uniquement sur la derniere repetition de la */ /* sequence et lorsque cela a ete demande... */ Eblock ETes Eblock ATes Bblock DODO(temporisation_inter_animations); /* Et on attend de nouveau un petit peu, pour un temps pre-determine... */ Eblock ETes Eblock ERep 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 RETU_Commande; Eblock ECommande