/*************************************************************************************************************************************/ /* */ /* A F F I C H A G E D ' U N A L B U M D ' I M A G E S : */ /* */ /* */ /* Definition : */ /* */ /* Cette commande affiche une sequence */ /* d'images Argument. */ /* */ /* */ /* Author of '$xci/album$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 1993??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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_DI_ALBUM_EXT #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX # message "Le graphique SPIX n'est pas implemente." #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 20021230110037, 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" #include xci/album.01.I" #define TEMPORISATION_INTER_TRAMES \ ZERO \ /* Temporisation inter_trames ; une valeur nulle fait qu'il n'y a pas d'attente... */ #define NOMBRE_DE_REPETITIONS \ UN \ /* Nombre implicite de repetitions de l'animation... */ #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX # message "Le graphique SPIX n'est pas implemente." #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW # 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 DUREE_D_ATTENTE_DES_IMAGES_INEXISTANTES \ ZERO \ /* Duree d'attente des images inexistantes avec une valeur par defaut assurant la */ \ /* compatibilite avec la version anterieure au 20040928095359. */ # 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 EDITER_LE_Z_DES_IMAGES \ FAUX \ /* Indique si le 'Z' 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_LE_NUMERO_DES_IMAGES_PLUTOT_QUE_LE_z_DES_IMAGES \ FAUX \ /* Indique si 'IL_FAUT(editer_le_z_des_images)' c'est en fait le numero des images qu'il */ \ /* faut editer ('VRAI') plutot que le 'Z' ('FAUX'). Ceci fut introduit le 20101008205640. */ #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/album.02.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A F F I C H A G E D ' U N A L B U M 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_imageR),NOM_PIPE)); /* Nom a priori inutile mais necessaire a cause de 'v $xci/album.04$I nom_imageR'... */ 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(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(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... */ /* */ /* 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 # message "Le graphique SPIX n'est pas implemente." #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW 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... */ DEFV(Positive,INIT(duree_d_attente_des_images_inexistantes,DUREE_D_ATTENTE_DES_IMAGES_INEXISTANTES)); /* Duree d'attente des images inexistantes avec une valeur par defaut assurant la */ /* compatibilite avec la version anterieure au 20040928095359. */ 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(Logical,INIT(editer_le_Z_des_images,EDITER_LE_Z_DES_IMAGES)); /* Indique si le 'Z' 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_le_numero_des_images_plutot_que_le_Z_des_images ,EDITER_LE_NUMERO_DES_IMAGES_PLUTOT_QUE_LE_z_DES_IMAGES ) ); /* Indique si 'IL_FAUT(editer_le_z_des_images)' c'est en fait le numero des images qu'il */ /* faut editer ('VRAI') plutot que le 'Z' ('FAUX'). Ceci fut introduit le 20101008205640. */ #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW #include xci/album.03.I" /*..............................................................................................................................*/ 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 # message "Le graphique SPIX n'est pas implemente." #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... */ 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 20100109113026 pour acceder au serveur 'Xming' (Windows Vista). */ GET_ARGUMENT_L("attendre=",attendre_les_images_inexistantes); GET_ARGUMENT_I("attente=",duree_d_attente_des_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_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_ARGUMENTS2_I("pas=",pas_des_images,pasZ); /* L'argument 'pasZ' fut introduit le 20110119135719... */ GET_ARGUMENT_L("editer=""editerZ=""lister=""listerZ=",editer_le_Z_des_images); GET_ARGUMENT_L("editer_numero=""editerN=""lister_numero=""listerN=" ,editer_le_numero_des_images_plutot_que_le_Z_des_images ); /* Introduit le 20101008205640 et complete le 20101207151039 par "lister...". */ GET_ARGUMENT_I("chiffres=",nombre_de_chiffres); GET_ARGUMENT_L("standard=",les_images_sont_standards); /* Introduit le 20091206101605... */ GET_ARGUMENT_L("renormaliser=",Afloat_std_brutal_____renormaliser_plutot_que_convertir_brutalement); GET_ARGUMENT_N("brutal=",Afloat_std_brutal_____renormaliser_plutot_que_convertir_brutalement); /* Introduit le 20100903213017... */ GET_ARGUMENT_L("message_attention_extrema=""mae=" ,Ifloat_std_____editer_le_message_d_attention_relatif_aux_extrema ); /* Introduit le 20101205134709 pour 'v $xE/.divers$D/anim1$vv$Y message_attention_extrema=". */ 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("centrer=""Fcentrer=""Fc=",centrer_la_fenetre); /* Parametre introduit le 20060427162409... */ 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("permutation=",permutation_des_dimensions); ) ); #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW begin_nouveau_block Bblock BDEFV(album,album_d_images); /* Definition de l'album d'images dans lequel ranger la sequence a visualiser... */ BDEFV(album,album_d_images_transpose); /* Definition de l'album d'images apres transposition eventuelle des dimensions... */ #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX # message "Le graphique SPIX n'est pas implemente." #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW 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 INITIALISATION_ACCROISSEMENT_2D(dimension_de_la_fenetre,_____lNORMALISE_OX11(dimX11),_____lNORMALISE_OY11(dimY11)); /* Definition des dimensions de la fenetre. */ 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 #include xci/album.04.I" /* Permutation eventuelle des dimensions... */ CALS(IXinitialisation()); /* Initialisation fondamentale introduite le 20160815121753... */ CALS(IXopen(serveur_standard ,nom_imageA ,ADRESSE(dimension_de_la_fenetre) ,centrer_la_fenetre ,ADRESSE(coin_bas_gauche) ,editer_les_PRINT_ATTENTION_initiaux ) ); /* Ouverture de la fenetre... */ Repe(nombre_de_repetitions) Bblock begin_fuite Bblock CALS(IXdisplay_avec_reinitialisation_du_reaffichage(PAGE(album_d_images_transpose,Z) ,Image_ROUGE,Image_VERTE,Image_BLEUE ,INCREMENT_DES_NIVEAUX_PAR_DEFAUT_DE_IXdisplay ,TRANSLATER_LE_NOIR_PAR_DEFAUT_DE_IXdisplay ) ); /* Affichage de la page 'Z' courante... */ /* */ /* On notera que {Image_ROUGE,Image_VERTE,Image_BLEUE} ne sont pas utiles ici, mais mises */ /* en place uniquement pour des raisons syntaxiques (introduit le 20030101115342). */ /* */ /* Le 20101118083800, la fonction 'IXdisplay_avec_reinitialisation_du_reaffichage(...)' */ /* a remplacee 'IXdisplay(...)'. */ Test(IL_FAUT(editer_le_Z_des_images)) Bblock Test(IL_FAUT(editer_le_numero_des_images_plutot_que_le_Z_des_images)) Bblock CAL3(Prme1("%s\n",chain_numero(ADD2(premiere_image,COZR(Z)),nombre_de_chiffres))); /* Introduit le 20101008205640 et utilisation de 'chain_numero(...)' le 20101011112500... */ Eblock ATes Bblock CAL3(Prme1("%d\n",Z)); Eblock ETes Eblock ATes Bblock Eblock ETes 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 end_fuite Test(IFET(IZEQ(temporisation_inter_animations),IFEQ(compteur_des_repetitions_du_Repe,nombre_de_repetitions))) 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 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 EDEFV(album,album_d_images_transpose); /* Definition de l'album d'images apres transposition eventuelle des dimensions... */ EDEFV(album,album_d_images); /* Definition de l'album d'images dans lequel ranger la sequence a visualiser... */ Eblock end_nouveau_block RETU_Commande; Eblock ECommande