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