/*************************************************************************************************************************************/
/* */
/* 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
Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.