/*************************************************************************************************************************************/
/* */
/* 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_RVB$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 1995??????????). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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_SILICON_GRAPHICS
# include image_image_QUAD_IMAGE_EXT
# nodefine INCLURE_LE_GRAPHIQUE_X_WINDOW
# ifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_GL
# Aifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_GL
# Eifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_GL
# ifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL
# define INCLURE_LE_GRAPHIQUE_X_WINDOW
# Aifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL
# Eifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL
# ifdef INCLURE_LE_GRAPHIQUE_X_WINDOW
# include image_drive_XWind_FONCTION_EXT
# Aifdef INCLURE_LE_GRAPHIQUE_X_WINDOW
# Eifdef INCLURE_LE_GRAPHIQUE_X_WINDOW
# include image_drive_SiliG_FONCTION_1_EXT
/* ATTENTION, l'ordre suivant est imperatif : */
/* */
/* # include image_drive_XWind_FONCTION_EXT */
/* # include image_drive_SiliG_FONCTION_1_EXT */
/* */
/* a cause des references de 'XWind' par 'SiliG'... */
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
#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 FACTEUR_DE_RALENTISSEMENT \
UN \
/* Nombre de fois que chaque trame est repetee pour simuler un ralentissement... */
#define NOMBRE_DE_REPETITIONS \
UN \
/* Nombre implicite de repetitions de l'animation... */
#define ATTENDRE_LES_IMAGES_INEXISTANTES \
ATTENDRE_UN_FICHIER_INEXISTANT_OU_NON_CONFORME \
/* 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... */
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
# define CENTRER_LA_FENETRE \
FAUX \
/* Faut-il centrer la fenetre ('VRAI') ou pas ('FAUX'). */
# define LAISSER_LE_CURSEUR_APPARAITRE_PENDANT_L_AFFICHAGE \
FAUX \
/* Indicateur precisant s'il faut laisser le curseur de l'ecran pendant que cette fenetre */ \
/* est ouverte ('VRAI') ou le supprimer ('FAUX'). */
# define SERVEUR_STANDARD \
NOM_UNDEF \
/* Le serveur standard est celui qui est defini par la variable "DISPLAY". */
# define EDITER_LES_PRINT_ATTENTION_INITIAUX \
FAUX \
/* Indique si les messages initiaux du type 'PRINT_ATTENTION(...)' doivent etre emis */ \
/* ('VRAI') ou pas ('FAUX'). */
# define X_COIN_BAS_GAUCHE \
UNDEF \
/* Definition du coin bas gauche de la fenetre... */
# define Y_COIN_BAS_GAUCHE \
UNDEF \
/* Definition du coin bas gauche de la fenetre... */
# define TRANSLATION_OX_DE_LA_FENETRE \
_____lNORMALISE_OXG(CGXR(XminG)) \
/* Translation horizontale implicite de la fenetre, */
# define TRANSLATION_OY_DE_LA_FENETRE \
_____lNORMALISE_OYG(CGYR(YminG)) \
/* Translation verticale implicite de la fenetre. */
# define CENTRER_L_IMAGE_DANS_LA_FENETRE \
VRAI \
/* Centrer ou pas (il faut alors la translation suivante) l'image dans la fenetre... */
# define TRANSLATION_OX_DE_L_IMAGE_DANS_LA_FENETRE \
_____lNORMALISE_OXG(CGXR(XminG)) \
/* Translation horizontale implicite de l'image dans la fenetre, */
# define TRANSLATION_OY_DE_L_IMAGE_DANS_LA_FENETRE \
_____lNORMALISE_OYG(CGYR(YminG)) \
/* Translation verticale implicite de l'image dans la fenetre. */
# define FACTEUR_DE_ZOOM \
RAPPORT_DE_ZOOM_STANDARD_DE_rectzoom \
/* Facteur de zoom de l'image. */
# define NOM_DE_LA_FENETRE \
"image" \
/* Nom de la fenetre... */
# define GENERER_DE_LA_VIDEO \
FAUX \
/* De la video "standard" 780x575 ('VRAI') ou de la "haute-definition" 1280x1024 ('FAUX'). */
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A C R O S U T I L E S : */
/* */
/*************************************************************************************************************************************/
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
# define OUVERTURE_DE_LA_FENETRE \
Bblock \
CALS(IGopen(nom_de_la_fenetre \
,centrer_la_fenetre \
,ADRESSE(translation_de_la_fenetre) \
,GENERER_DE_LA_VIDEO \
,laisser_le_curseur_apparaitre_pendant_l_affichage \
) \
); \
/* Ouverture du plan de travail. */ \
Eblock \
/* Ouverture d'une fenetre... */
# define FERMETURE_DE_LA_FENETRE \
Bblock \
CALS(IGclose()); \
/* Fermeture du plan de travail. */ \
Eblock \
/* Fermeture d'une fenetre... */
# 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 20221212115554, 'chain_numero_modulo(...)' a remplace 'chain_numero(...)'... */ \
Eblock \
ATes \
Bblock \
CAL3(Prme1("%s\n" \
,chain_Aconcaten2_sauf_nom_pipe(nom_imageA,chain_numero_modulo(numero_d_image \
,nombre_de_chiffres \
) \
) \
) \
); \
/* Le 20221212115554, 'chain_numero_modulo(...)' a remplace 'chain_numero(...)'... */ \
Eblock \
ETes \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Edition, lorsque cela est demande, du nom de l'image courante... */
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
#ifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_GL
# define CONVERSION_D_UNE_IMAGE_QUELCONQUE(image_ROUGE,image_VERTE,image_BLEUE) \
Bblock \
CALS(Ifausses_couleurs_BVR_888_universel(image_en_vraies_couleurs \
,image_ROUGE,image_VERTE,image_BLEUE \
) \
); \
/* Et 'multiplexage universel' des trois images Arguments. */ \
Eblock \
/* Conversion d'une image au format attendu... */
#Aifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_GL
#Eifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_GL
#ifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL
# define CONVERSION_D_UNE_IMAGE_QUELCONQUE(image_ROUGE,image_VERTE,image_BLEUE) \
Bblock \
CALS(Ifausses_couleurs_RVBg_888_universel(image_en_vraies_couleurs \
,image_ROUGE,image_VERTE,image_BLEUE \
) \
); \
/* Et 'multiplexage universel' des trois images Arguments. */ \
Eblock \
/* Conversion d'une image au format attendu... */
#Aifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL
#Eifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL
#define AFFICHAGE_D_UNE_IMAGE_ET_ATTENTE(attendre) \
Bblock \
Repe(facteur_de_ralentissement) \
Bblock \
CALS(IGdisplay(image_en_vraies_couleurs \
,facteur_de_zoom \
,centrer_l_image_dans_la_fenetre \
,ADRESSE(translation_de_l_image_dans_la_fenetre) \
) \
); \
/* Affichage de l'image. */ \
Eblock \
ERep \
\
Test(IL_FAUT(attendre)) \
Bblock \
Test(IZLT(temporisation_inter_trames)) \
Bblock \
CALS(IGattente_de_l_evenement_ButtonPress()); \
Eblock \
ATes \
Bblock \
DODO(temporisation_inter_trames); \
/* Et on attend de nouveau un petit peu, pour un temps pre-determine... */ \
Eblock \
ETes \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Attente de la fin de visualisation d'une image... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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(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(CHAR,INIC(POINTERc(nom_de_l_espace_de_couleurs),ESPACE_DE_COULEURS_RVB));
/* L'image est une image de type 'RVB'. */
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(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(Positive,INIT(facteur_de_ralentissement,FACTEUR_DE_RALENTISSEMENT));
/* Nombre de fois que chaque trame est repetee pour simuler un ralentissement... */
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... */
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
DEFV(Logical,INIT(centrer_la_fenetre,CENTRER_LA_FENETRE));
/* Faut-il centrer la fenetre ('VRAI') ou pas ('FAUX'). */
DEFV(CHAR,INIC(POINTERc(nom_de_la_fenetre),NOM_DE_LA_FENETRE));
/* Nom de la fenetre... */
DEFV(Logical,INIT(laisser_le_curseur_apparaitre_pendant_l_affichage,LAISSER_LE_CURSEUR_APPARAITRE_PENDANT_L_AFFICHAGE));
/* Indicateur precisant s'il faut laisser le curseur de l'ecran pendant que cette fenetre */
/* est ouverte ('VRAI') ou le supprimer ('FAUX'). */
DEFV(Float,INIT(translation_OX_de_la_fenetre,TRANSLATION_OX_DE_LA_FENETRE));
DEFV(Float,INIT(translation_OY_de_la_fenetre,TRANSLATION_OY_DE_LA_FENETRE));
/* Argument de translation de la fenetre. */
DEFV(deltaF_2D,translation_de_la_fenetre);
/* Translation de la fenetre. */
DEFV(Logical,INIT(centrer_l_image_dans_la_fenetre,CENTRER_L_IMAGE_DANS_LA_FENETRE));
/* Centrer ou pas (il faut alors la translation suivante) l'image dans la fenetre... */
DEFV(Float,INIT(translation_OX_de_l_image_dans_la_fenetre,TRANSLATION_OX_DE_L_IMAGE_DANS_LA_FENETRE));
DEFV(Float,INIT(translation_OY_de_l_image_dans_la_fenetre,TRANSLATION_OY_DE_L_IMAGE_DANS_LA_FENETRE));
/* Argument de translation de l'image dans la fenetre. */
DEFV(deltaF_2D,translation_de_l_image_dans_la_fenetre);
/* Translation de l'image dans la fenetre. */
DEFV(Float,INIT(facteur_de_zoom,FACTEUR_DE_ZOOM));
/* Facteur de zoom de l'image. */
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
/*..............................................................................................................................*/
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... */
EGAL(attendre_un_fichier_inexistant_ou_non_conforme,ATTENDRE_LES_IMAGES_INEXISTANTES);
/* Initialisation de l'indicateur d'attente eventuelle des images inexistantes. */
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
# ifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_GL
GET_ARGUMENTSi(nombre_d_arguments
,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
GET_ARGUMENT_I("premiere=",premiere_image);
GET_ARGUMENT_I("derniere=",derniere_image);
GET_ARGUMENT_I("pas=",pas_des_images);
GET_ARGUMENT_L("attendre=",attendre_un_fichier_inexistant_ou_non_conforme);
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_C("titre=""nom=""fenetre=",nom_de_la_fenetre);
GET_ARGUMENT_I("xm=",SGI_____XminG_d_une_fenetre_HAUTE_DEFINITION);
GET_ARGUMENT_I("xM=",SGI_____XmaxG_d_une_fenetre_HAUTE_DEFINITION);
GET_ARGUMENT_I("Xm=",SGI_____XminG_d_une_fenetre_HAUTE_DEFINITION);
GET_ARGUMENT_I("XM=",SGI_____XmaxG_d_une_fenetre_HAUTE_DEFINITION);
GET_ARGUMENT_I("ym=",SGI_____YminG_d_une_fenetre_HAUTE_DEFINITION);
GET_ARGUMENT_I("yM=",SGI_____YmaxG_d_une_fenetre_HAUTE_DEFINITION);
GET_ARGUMENT_I("Ym=",SGI_____YminG_d_une_fenetre_HAUTE_DEFINITION);
GET_ARGUMENT_I("YM=",SGI_____YmaxG_d_une_fenetre_HAUTE_DEFINITION);
GET_ARGUMENT_L("Fcentrer=""Fc=",centrer_la_fenetre);
/* Parametre introduit le 20060427162805... */
GET_ARGUMENT_F("trx=""trX=",translation_OX_de_la_fenetre);
GET_ARGUMENT_F("try=""trY=",translation_OY_de_la_fenetre);
GET_ARGUMENT_L("centrer=",centrer_l_image_dans_la_fenetre);
GET_ARGUMENT_F("tix=""tiX=",translation_OX_de_l_image_dans_la_fenetre);
GET_ARGUMENT_F("tiy=""tiY=",translation_OY_de_l_image_dans_la_fenetre);
GET_ARGUMENT_F("zoom=",facteur_de_zoom);
GET_ARGUMENT_L("curseur=",laisser_le_curseur_apparaitre_pendant_l_affichage);
GET_ARGUMENT_I("repetition=""r=",nombre_de_repetitions);
GET_ARGUMENT_I("Duree=""D=",temporisation_inter_trames);
GET_ARGUMENT_I("ralentissement=""ralenti=",facteur_de_ralentissement);
GET_ARGUMENT_I("duree=""d=",temporisation_inter_animations);
)
);
# Aifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_GL
# Eifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_GL
# ifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL
EGAL(IGdisplay_____on_peut_revisualiser_l_imageA_courante,FAUX);
/* Ceci est destine a eviter que la premiere image d'une sequence ne soit reaffichee en */
/* cas de necessite. */
/* */
/* En effet ('v $xiidG/fonction.1$FON IGdisplay_____on_peut_revisualiser_l_imageA_courante') */
/* apres 'IGopen(...)' une seule image est memorisable par 'IGdisplay(...)' ; lorsque c'est */
/* une sequence d'images qui est diffusee, seule donc la premiere est memorisable... */
GET_ARGUMENTSi(nombre_d_arguments
,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
GET_ARGUMENT_I("premiere=",premiere_image);
GET_ARGUMENT_I("derniere=",derniere_image);
GET_ARGUMENT_I("pas=",pas_des_images);
GET_ARGUMENT_L("attendre=",attendre_un_fichier_inexistant_ou_non_conforme);
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_C("titre=""nom=""fenetre=",nom_de_la_fenetre);
GET_ARGUMENT_I("xm=",SGI_____XminG_d_une_fenetre_HAUTE_DEFINITION);
GET_ARGUMENT_I("xM=",SGI_____XmaxG_d_une_fenetre_HAUTE_DEFINITION);
GET_ARGUMENT_I("Xm=",SGI_____XminG_d_une_fenetre_HAUTE_DEFINITION);
GET_ARGUMENT_I("XM=",SGI_____XmaxG_d_une_fenetre_HAUTE_DEFINITION);
GET_ARGUMENT_I("ym=",SGI_____YminG_d_une_fenetre_HAUTE_DEFINITION);
GET_ARGUMENT_I("yM=",SGI_____YmaxG_d_une_fenetre_HAUTE_DEFINITION);
GET_ARGUMENT_I("Ym=",SGI_____YminG_d_une_fenetre_HAUTE_DEFINITION);
GET_ARGUMENT_I("YM=",SGI_____YmaxG_d_une_fenetre_HAUTE_DEFINITION);
GET_ARGUMENT_L("Fcentrer=""Fc=",centrer_la_fenetre);
/* Parametre introduit le 20060427162805... */
GET_ARGUMENT_P("fondR=""fR=",SGI_____fond_de_la_fenetre_ROUGE);
GET_ARGUMENT_P("fondV=""fV=",SGI_____fond_de_la_fenetre_VERTE);
GET_ARGUMENT_P("fondB=""fB=",SGI_____fond_de_la_fenetre_BLEUE);
GET_ARGUMENT_F("trx=""trX=",translation_OX_de_la_fenetre);
GET_ARGUMENT_F("try=""trY=",translation_OY_de_la_fenetre);
GET_ARGUMENT_L("centrer=",centrer_l_image_dans_la_fenetre);
GET_ARGUMENT_F("tix=""tiX=",translation_OX_de_l_image_dans_la_fenetre);
GET_ARGUMENT_F("tiy=""tiY=",translation_OY_de_l_image_dans_la_fenetre);
GET_ARGUMENT_F("zoom=",facteur_de_zoom);
GET_ARGUMENT_L("curseur=",laisser_le_curseur_apparaitre_pendant_l_affichage);
GET_ARGUMENT_I("repetition=""r=",nombre_de_repetitions);
GET_ARGUMENT_I("Duree=""D=",temporisation_inter_trames);
GET_ARGUMENT_I("ralentissement=""ralenti=",facteur_de_ralentissement);
GET_ARGUMENT_I("duree=""d=",temporisation_inter_animations);
GET_ARGUMENT_L("SGIattention=",SGI_____editer_les_PRINT_ATTENTION_initiaux);
)
);
# Aifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL
# Eifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
GET_ARGUMENTSi(nombre_d_arguments
,BLOC(VIDE;
)
);
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
CALi(Inoir(Image_ROUGE));
CALi(Inoir(Image_VERTE));
CALi(Inoir(Image_BLEUE));
/* Initialisation de l'image en couleurs... */
INITIALISATION_ACCROISSEMENT_2D(translation_de_la_fenetre
,translation_OX_de_la_fenetre
,translation_OY_de_la_fenetre
);
/* Mise en place de la translation de la fenetre. */
INITIALISATION_ACCROISSEMENT_2D(translation_de_l_image_dans_la_fenetre
,translation_OX_de_l_image_dans_la_fenetre
,translation_OY_de_l_image_dans_la_fenetre
);
/* Mise en place de la translation de la fenetre. */
OUVERTURE_DE_LA_FENETRE;
/* Ouverture de la fenetre. */
Repe(nombre_de_repetitions)
Bblock
DoQu(numero_d_image,premiere_image,derniere_image,pas_des_images)
Bblock
BDEFV(imageU,image_en_vraies_couleurs);
/* Image en vraies couleurs au format 'Silicon-Graphics'. */
CALi(Iload_image_en_couleurs(Image_ROUGE,Image_VERTE,Image_BLEUE
,chain_Aconcaten2_sauf_nom_pipe(nom_imageA
,chain_numero_modulo(numero_d_image,nombre_de_chiffres)
)
,nom_de_l_espace_de_couleurs
)
);
/* Chargement des trois composantes avec attente eventuelle... */
/* */
/* Le 20221212115554, 'chain_numero_modulo(...)' a remplace 'chain_numero(...)'... */
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... */
CONVERSION_D_UNE_IMAGE_QUELCONQUE(Image_ROUGE,Image_VERTE,Image_BLEUE);
AFFICHAGE_D_UNE_IMAGE_ET_ATTENTE(VRAI);
/* Conversion, puis affichage de l'image courante... */
EDEFV(imageU,image_en_vraies_couleurs);
/* Image en vraies couleurs au format 'Silicon-Graphics'. */
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(IGattente_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
FERMETURE_DE_LA_FENETRE;
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
PRINT_ERREUR("l'animation en vraies couleurs n'est pas disponible sur ce SYSTEME");
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
RETU_Commande;
Eblock
ECommande