/*************************************************************************************************************************************/ /* */ /* E N V O I D ' U N E F E N E T R E 2 D : */ /* */ /* */ /* Definition : */ /* */ /* Cette commande affiche une */ /* image Argument en vraies couleurs */ /* apres conversion des fausses */ /* couleurs dans une fenetre bi- */ /* dimensionnelle. */ /* */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* * * * ** * * * * * ** * */ /* * * * * * * * * * * * * * * * */ /* * * * * * * * * * * * * * */ /* * * * * * * * * * * * * * * * */ /* * * * * * * * * * * * * * * * */ /* * * * * * * * * * * * * * * * * * */ /* * * * * * * * * * * * * * */ /* * * * * * * * * * * * * * * * */ /* * * * * ** * * * * * ** */ /* * * * * * * * * * * * * * * * * * * * * * * */ /* */ /* */ /* ATTENTION : */ /* */ /* On notera l'existence d'une */ /* version simplifiee '$xci/Sdisplay_RVB$K' */ /* destinee principalement a '$xci/disk_video_P$Z' */ /* et ce uniquement sur 'SYSTEME_SG...' afin */ /* d'eviter des problemes largement documentes */ /* avec le 'vswap'... */ /* */ /* */ /* Author of '$xci/display_RVB$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 #include image_image_CONTOURS_EXT #include image_image_ALPHABET_0_EXT #include image_image_ALPHABET_1_EXT #include image_image_ALPHABET_2_EXT /* L'include de 'image_image_ALPHABET_3_DEF' a ete supprime le 20110502094848... */ #include image_image_ALPHABET_3_EXT #include image_image_ALPHABET_4_EXT /* Introduit le 20161116111303... */ #include image_image_ALPHABET_5_EXT /* Introduit le 20230516183014... */ #include image_image_ALPHABET_6_EXT /* Introduit le 20240419175855... */ #include image_image_ALPHABETS_EXT #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 # include image_image_QUAD_IMAGE_EXT # include image_drive_cubi7_FONCTION_1_EXT #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 # 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 # nodefine L_ENTREE_VIDEO_TEMPS_REEL_EST_POSSIBLE # ifdef __VERSION__COMPILER_L_OPTION_GALILEO_DU_GRAPHIQUE_SILICON_GRAPHICS /* ATTENTION, il est impossible d'ecrire ici : */ /* */ /* # if ( (defined(__VERSION__COMPILER_L_OPTION_GALILEO_...)) \ */ /* ) */ /* (...) */ /* # Aif ( (defined(__VERSION__COMPILER_L_OPTION_GALILEO_...)) \ */ /* ) */ /* # Eif ( (defined(__VERSION__COMPILER_L_OPTION_GALILEO_...)) \ */ /* ) */ /* */ /* a cause de '$xcc/cl$Z' lors de la recuperation des includes conditionnels... */ # ifdef GESTION_DE_L_OPTION_GALILEO_VERSION_02 # ifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW # ifndef INCLURE_LE_GRAPHIQUE_X_WINDOW # define INCLURE_LE_GRAPHIQUE_X_WINDOW # Aifndef INCLURE_LE_GRAPHIQUE_X_WINDOW # Eifndef INCLURE_LE_GRAPHIQUE_X_WINDOW # define L_ENTREE_VIDEO_TEMPS_REEL_EST_POSSIBLE # Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW # Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW # Aifdef GESTION_DE_L_OPTION_GALILEO_VERSION_02 # Eifdef GESTION_DE_L_OPTION_GALILEO_VERSION_02 # Aifdef __VERSION__COMPILER_L_OPTION_GALILEO_DU_GRAPHIQUE_SILICON_GRAPHICS # Eifdef __VERSION__COMPILER_L_OPTION_GALILEO_DU_GRAPHIQUE_SILICON_GRAPHICS # 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 # ifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER # include image_drive_UltFB_FONCTION_EXT # Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER # Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER # Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ #define SIGNER \ FAUX \ /* Indique s'il faut signer ('VRAI') ou pas ('FAUX') l'image... */ #include xci/signature.01.I" /* Caracteristiques de la signature... */ #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 # define GENERER_DE_LA_VIDEO \ VRAI \ /* De la video "standard" 576x700 ('VRAI') ou de la "haute-definition" 1024x1024 ('FAUX'). */ # define GENERER_LE_FICHIER_DE_CONFIGURATION \ FAUX \ /* A priori, ne pas generer le fichier de configuration ("./irene")... */ # define TRANSLATION_OX \ COND(IL_FAUT(generer_de_la_video) \ ,0.184 \ ,translation_OX \ ) \ /* Translation horizontale implicite (imposee en 576x700, libre en 1024x1024), */ # define TRANSLATION_OY \ COND(IL_FAUT(generer_de_la_video) \ ,-0.071 \ ,translation_OY \ ) \ /* Translation verticale implicite (imposee en 576x700, libre en 1024x1024). */ #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 # ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS # define VISUALISER_EN_RVB \ VRAI \ /* A priori, on demande une visualisation en RVB ('VRAI')... */ # define CENTRER_LA_FENETRE \ FAUX \ /* Faut-il centrer la fenetre ('VRAI') ou pas ('FAUX'). */ # define CORRIGER_LE_GAMMA \ FAUX \ /* A priori, on ne touchera pas a la correction de gamma. */ # define CORRECTION_DE_GAMMA_ROUGE \ FU # define CORRECTION_DE_GAMMA_VERTE \ FU # define CORRECTION_DE_GAMMA_BLEUE \ FU /* Corrections de gamma implicites. */ # define ANIMATION_DES_COULEURS \ FAUX \ /* A priori, on laissera telle qu'elle la palette de couleurs... */ # define TRANSLATER_LE_NOIR \ LE_NOIR_N_EST_PAS_TRANSLATABLE \ /* Indique si le niveau 'NOIR' est translatable dans 'ACCES_LA_PALETTE_ET_TRANSLATION(...)' */ \ /* ou pas... */ # define INCREMENT_DE_L_INCREMENT_DES_NIVEAUX \ I \ /* Lorsque la palette doit "tourner", on trouve ici l'increment des couleurs... */ # define NOMBRE_DE_CHANGEMENTS_DE_COULEURS \ SEIZE \ /* Nombre de "rotations" de la palette de couleurs (eventuellement) ; celui-ci est infini */ \ /* si la valeur donnee est nulle. */ # define TEMPORISATION_INTER_PALETTES \ ZERO \ /* Temporisation inter palettes ; une valeur nulle fait qu'il n'y a pas d'attente... */ # define GENERER_DE_LA_VIDEO \ FAUX \ /* De la video "standard" 780x575 ('VRAI') ou de la "haute-definition" 1280x1024 ('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 REDIMENSIONNER_LES_IMAGES_RVB \ FAUX \ /* Les images 'RVB' doivent-elles etre redimensionnees ('VRAI') ou pas ('FAUX'). */ # define METHODE_DE_REECHANTILLONNAGE_A_UTILISER \ METHODE_IMPLICITE_DE_REECHANTILLONNAGE \ /* Methode de redimensionnement a utiliser alors... */ # define CONSERVER_LES_PROPORTIONS_LORS_D_UN_REDIMENSIONNEMENT \ FAUX \ /* Faut-il conserver ('VRAI') ou pas ('FAUX') les proportions de l'image Argument. La */ \ /* valeur implicite ('FAUX') permet d'occuper tout l'ecran, et ce quelle que soit l'image */ \ /* Argument... */ # ifdef L_ENTREE_VIDEO_TEMPS_REEL_EST_POSSIBLE # define SERVEUR_STANDARD \ DEFINITION_DU_SERVEUR_X_WINDOW \ /* 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 SIGNALER_LES_EVENEMENTS_INATTENDUS \ NE_PAS_SIGNALER_LES_EVENEMENTS_INATTENDUS_DE_X_WINDOW \ /* Indique si les evenements inattendus de 'X-Window' doivent etre signales ('VRAI') ou pas */ \ /* ('FAUX'). */ # define CENTRER_LA_FENETRE_VIDEO_TEMPS_REEL \ VRAI \ /* Faut-il centrer la fenetre video temps reel ('VRAI') ou bien donner explicitement la */ \ /* position de son coin "bas gauche" ('FAUX') ? */ # define X_COIN_BAS_GAUCHE \ Xmin11 \ /* Definition du coin bas gauche de la fenetre... */ # define Y_COIN_BAS_GAUCHE \ Ymin11 \ /* Definition du coin bas gauche de la fenetre... */ # define ENTREE_VIDEO_TEMPS_REEL \ FAUX \ /* De la video va-t-elle etre entree ('VRAI') ou pas ('FAUX')... */ # define NUMERISER_UNE_IMAGE \ FAUX \ /* Si de la video entre, faut-il numeriser une image ('VRAI') ou pas ('FAUX')... */ # Aifdef L_ENTREE_VIDEO_TEMPS_REEL_EST_POSSIBLE # 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 ENTREE_VIDEO_TEMPS_REEL \ FAUX \ /* De la video va-t-elle etre entree ('VRAI') ou pas ('FAUX')... */ # Eifdef L_ENTREE_VIDEO_TEMPS_REEL_EST_POSSIBLE # if ( (defined(__VERSION__COMPILER_L_OPTION_GALILEO_DU_GRAPHIQUE_SILICON_GRAPHICS)) \ ) # redefine LAISSER_LE_CURSEUR_APPARAITRE_PENDANT_L_AFFICHAGE \ VRAI \ /* Indicateur precisant s'il faut laisser le curseur de l'ecran pendant que cette fenetre */ \ /* est ouverte ('VRAI') ou le supprimer ('FAUX'). */ # Aif ( (defined(__VERSION__COMPILER_L_OPTION_GALILEO_DU_GRAPHIQUE_SILICON_GRAPHICS)) \ ) # Eif ( (defined(__VERSION__COMPILER_L_OPTION_GALILEO_DU_GRAPHIQUE_SILICON_GRAPHICS)) \ ) # 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 MINIMUM_DE_LA_LUMINANCE \ NOIR # define MAXIMUM_DE_LA_LUMINANCE \ BLANC /* Minimum et maximum demande pour chaque point (a l'exception des points 'NOIR'). */ # define NOM_DE_LA_FENETRE \ "image" \ /* Nom de la fenetre... */ # define SYNCHRONISATION_EXTERNE \ FAUX \ /* Indique s'il y a une attente implicite par 'DUREE_D_ATTENTE' ('FAUX') ou bien une */ \ /* synchronisation sur un signal externe par 'ATTENDRE_AU_FEU_ROUGE' ('VRAI'). */ # define DUREE_D_ATTENTE \ SOIXANTE \ /* Attente implicite avant d'effacer l'image. */ # Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS # ifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER # define TRANSLATION_OX_DE_LA_FENETRE \ _____lNORMALISE_OXU(CUXR(XminU)) \ /* Translation horizontale implicite de la fenetre, */ # define TRANSLATION_OY_DE_LA_FENETRE \ _____lNORMALISE_OYU(CUYR(YminU)) \ /* 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_OXU(CUXR(XminU)) \ /* Translation horizontale implicite de l'image dans la fenetre, */ # define TRANSLATION_OY_DE_L_IMAGE_DANS_LA_FENETRE \ _____lNORMALISE_OYU(CUYR(YminU)) \ /* Translation verticale implicite de l'image dans la fenetre. */ # define FACTEUR_DE_ZOOM \ RAPPORT_DE_ZOOM_STANDARD_DU_FRAME_BUFFER_ULTRANET \ /* Facteur de zoom de l'image. */ # define NOM_DE_LA_FENETRE \ "image" \ /* Nom de la fenetre... */ # Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER # Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER # Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ #include xci/signature.02.I" #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 # ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS # define CHARGEMENT_DE_LA_PALETTE_DE_COULEURS \ Bblock \ CALS(Iload_palette_de_couleurs(nom_paletteA,ESPACE_DE_COULEURS_RVB)); \ /* Chargement de la palette de couleurs... */ \ Eblock \ /* Chargement des trois listes de substitution composant une palette... */ /* Nota important : il est essentiel que l'on trouve lorsque cela est possible, les actions */ /* suivantes dans l'ordre suivant : */ /* */ /* CONVERSION_D_UNE_IMAGE; */ /* OUVERTURE_DE_LA_FENETRE; */ /* AFFICHAGE_D_UNE_IMAGE_ET_ATTENTE(...); */ /* FERMETURE_DE_LA_FENETRE; */ /* */ /* En effet, dans ces conditions la temporisation necessaire au niveau du 'C-Shell' dans les */ /* alias definis par '$Fdivers' n'inclue pas la duree de conversion 'CONVERSION_D_UNE_IMAGE' */ /* et ainsi, cette temporisation est independante de la vitesse de la machine. */ /* Malheureusement, ceci n'est pas possible lorsque l'on effectue une simulation de la */ /* commande '$xci/display$K' par 'SIMULATION_DE_LA_ROTATION_DES_COULEURS' puisque l'on fait */ /* alors autant de 'CONVERSION_D_UNE_IMAGE' qu'il y a d'incrementations de couleurs... */ # 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. */ \ \ Test(IL_FAUT(corriger_le_gamma)) \ Bblock \ CALS(IGchangement_de_la_correction_de_gamma(correction_de_gamma_ROUGE \ ,correction_de_gamma_VERTE \ ,correction_de_gamma_BLEUE \ ) \ ); \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ /* Ouverture d'une fenetre... */ # define FERMETURE_DE_LA_FENETRE \ Bblock \ CALS(IGclose()); \ /* Fermeture du plan de travail. */ \ Eblock \ /* Fermeture d'une fenetre... */ # define REDIMENSIONNEMENT(imageR,imageA) \ Bblock \ CALS(Iredimensionnement(imageR \ ,XminRedim,XmaxRedim,YminRedim,YmaxRedim \ ,imageA \ ,EnTete_de_sauvegardM ## Xmin,EnTete_de_sauvegardM ## Xmax \ ,EnTete_de_sauvegardM ## Ymin,EnTete_de_sauvegardM ## Ymax \ ,methode_de_redimensionnement_a_utiliser \ ) \ ); \ Eblock \ /* Redimensionnement d'un image... */ # ifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_GL # define CONVERSION_D_UNE_IMAGE_QUELCONQUE(image_ROUGE,image_VERTE,image_BLEUE) \ Bblock \ Test(IFET(IFEQ(minimum_de_la_luminance,MINIMUM_DE_LA_LUMINANCE) \ ,IFEQ(maximum_de_la_luminance,MAXIMUM_DE_LA_LUMINANCE) \ ) \ ) \ 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 \ ATes \ Bblock \ CALS(Iajustement_de_la_luminance_BVR_888(image_en_vraies_couleurs \ ,image_ROUGE,image_VERTE,image_BLEUE \ ,minimum_de_la_luminance \ ,maximum_de_la_luminance \ ) \ ); \ /* Et 'multiplexage universel' des trois images Arguments, avec re-ajustement de la */ \ /* luminance sauf pour les points 'NOIR'... */ \ Eblock \ ETes \ 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 GET_ARGUMENTSi_X_WINDOW \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20070130102858 car, en effet, il manquait... */ \ \ GET_ARGUMENT_L("editer=""XY_curseur=""XY=",X11_____KeyPress_____editer_XY_curseur); \ GET_ARGUMENT_L("normaliser_XY_curseur=""NXY=",X11_____KeyPress_____norm_XY_curseur); \ GET_ARGUMENT_F("OX_curseur=""OX=",X11_____KeyPress_____OX_curseur); \ GET_ARGUMENT_F("LX_curseur=""LX=",X11_____KeyPress_____LX_curseur); \ GET_ARGUMENT_F("OY_curseur=""OY=",X11_____KeyPress_____OY_curseur); \ GET_ARGUMENT_F("LY_curseur=""LY=",X11_____KeyPress_____LY_curseur); \ \ GET_ARGUMENT_L("SGIattention=",SGI_____editer_les_PRINT_ATTENTION_initiaux); \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20070130102858 car, en effet, il manquait... */ \ \ Eblock \ /* Pour entrer les arguments specifiques 'X-Window'... */ # define CONVERSION_D_UNE_IMAGE_QUELCONQUE(image_ROUGE,image_VERTE,image_BLEUE) \ Bblock \ Test(IFET(IFEQ(minimum_de_la_luminance,MINIMUM_DE_LA_LUMINANCE) \ ,IFEQ(maximum_de_la_luminance,MAXIMUM_DE_LA_LUMINANCE) \ ) \ ) \ 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 \ ATes \ Bblock \ CALS(Iajustement_de_la_luminance_RVBg_888(image_en_vraies_couleurs \ ,image_ROUGE,image_VERTE,image_BLEUE \ ,minimum_de_la_luminance \ ,maximum_de_la_luminance \ ) \ ); \ /* Et 'multiplexage universel' des trois images Arguments, avec re-ajustement de la */ \ /* luminance sauf pour les points 'NOIR'... */ \ Eblock \ ETes \ Eblock \ /* Conversion d'une image au format attendu... */ # Aifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL # Eifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL # define CONVERSION_D_UNE_IMAGE \ Bblock \ CONVERSION_D_UNE_IMAGE_QUELCONQUE(Image_ROUGE,Image_VERTE,Image_BLEUE); \ Eblock \ /* Conversion d'une image au format attendu... */ # define AFFICHAGE_D_UNE_IMAGE_ET_ATTENTE(attendre) \ 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. */ \ \ Test(IL_FAUT(attendre)) \ Bblock \ Test(IL_FAUT(synchronisation_externe)) \ Bblock \ DODO(duree_d_attente); \ /* On attend d'abord un petit peu et ce pour des raisons liees au probleme du repos */ \ /* d'ecran, car on ne sait pas vraiment combien de temps dure le retour a la normale... */ \ MISE_DU_FEU_AU_VERT(FEU_DE_SYNCHRONISATION_DE_FIN_D_AFFICHAGE_D_IMAGE); \ /* On indique ainsi que l'image est surement visible, et que l'on peut par exemple */ \ /* l'enregistrer... */ \ ATTENDRE_AU_FEU_ROUGE(FEU_DE_SYNCHRONISATION_DE_FIN_DES_ENREGISTREMENTS_PAL_BETA); \ /* Attente de synchronisation externe (par exemple une fin d'enregistrement video...). */ \ Eblock \ ATes \ Bblock \ Test(IZEQ(duree_d_attente)) \ Bblock \ CALS(IGattente_de_l_evenement_ButtonPress()); \ /* Lorsque la duree d'attente est nulle, l'attente se fait a l'aide de l'un des trois */ \ /* bouton de la souris... */ \ Eblock \ ATes \ Bblock \ DODO(duree_d_attente); \ /* Attente implicite lorsqu'il n'y a pas de synchronisation externe... */ \ Eblock \ ETes \ Eblock \ ETes \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ /* Affichage d'une image et attente... */ # define SIMULATION_DE_LA_ROTATION_DES_COULEURS \ Bblock \ PUSH_OPTIMISATION; \ SET_OPTIMISATION(VRAI); \ /* Afin de ne passer que par les listes de substitution... */ \ \ CALS(Ivraies_couleurs(Image_ROUGE,Image_VERTE,Image_BLEUE \ ,ImageG \ ,VRAI,VRAI,VRAI \ ,increment_des_niveaux \ ,translater_le_NOIR \ ) \ ); \ /* Passage des fausses aux vraies couleurs via la palette courante. */ \ \ PULL_OPTIMISATION; \ \ INCR(increment_des_niveaux,increment_de_l_increment_des_niveaux); \ /* Incrementation de l'increment courant des couleurs... */ \ Eblock \ /* Simulation de la rotation des palettes des couleurs... */ # Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS # ifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER # Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER # Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER # Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS # TestADef GET_ARGUMENTSi_X_WINDOW \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20070130102858 car, en effet, il manquait... */ \ \ BLOC(VIDE;); \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20070130102858 car, en effet, il manquait... */ \ \ Eblock \ /* Pour entrer les arguments specifiques 'X-Window'... */ #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D I S P L A Y D ' U N E I M A G E D A N S U N E F E N E T R E 2 D : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock #include xci/signature.03.I" #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE)); /* Nom de l'image a displayer. */ DEFV(CHAR,INIC(POINTERc(nom_paletteA),NOM_PIPE)); /* Nom de la palette a utiliser. */ DEFV(Logical,INIT(initialisation_globale,FAUX)); /* Indicateur d'initialisation generale de la cubi7. */ DEFV(Logical,INIT(generer_de_la_video,GENERER_DE_LA_VIDEO)); /* De la video "standard" 576x700 ('VRAI') ou de la "haute-definition" 1024x1024 ('FAUX'). */ DEFV(Logical,INIT(generer_le_fichier_de_configuration,GENERER_LE_FICHIER_DE_CONFIGURATION)); /* A priori, ne pas generer le fichier de configuration ("./irene")... */ DEFV(Float,INIT(translation_OX,FZERO)); DEFV(Float,INIT(translation_OY,FZERO)); /* Argument de translation de la fenetre. */ DEFV(Float,INIT(taille_OX,FLOT__UNDEF)); DEFV(Float,INIT(taille_OY,FLOT__UNDEF)); /* Argument de taille de la fenetre mis a l'etat indefini car on ne connait pas encore */ /* le format reel (1024 ou 576) de l'image... */ DEFV(deltaF_2D,translation); /* Translation de la fenetre. */ DEFV(deltaF_2D,taille); /* Taille de la fenetre. */ DEFV(Logical,INIT(noir_et_blanc,VRAI)); /* Indique si l'image doit etre presentee en NOIR et BLANC ('VRAI') ou */ /* en couleurs ('FAUX'). */ DEFV(Logical,INIT(rouge_presente,VRAI)); /* Indique si la compose ROUGE est presente ou non, */ DEFV(Logical,INIT(verte_presente,VRAI)); /* Indique si la compose VERTE est presente ou non, */ DEFV(Logical,INIT(bleue_presente,VRAI)); /* Indique si la compose BLEUE est presente ou non, */ DEFV(Logical,INIT(optimiser,VRAI)); /* Indique s'il faut optimiser ('VRAI') en ne transmettant pas les 'dummy' */ /* associes a chaque composante {R,V,B} ou pas ('FAUX'). */ DEFV(Float,INIT(pasX_intermediaire,FLOT__UNDEF)); DEFV(Float,INIT(pasY_intermediaire,FLOT__UNDEF)); /* Valeur des pas de sous-echantillonnage de l'image. */ #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 # ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS DEFV(Logical,INIT(visualiser_EN_RVB,VISUALISER_EN_RVB)); /* A priori, on demande une visualisation en RVB ('VRAI')... */ DEFV(Logical,INIT(centrer_la_fenetre,CENTRER_LA_FENETRE)); /* Faut-il centrer la fenetre ('VRAI') ou pas ('FAUX'). */ DEFV(Logical,INIT(corriger_le_gamma,CORRIGER_LE_GAMMA)); /* A priori, on ne touchera pas a la correction de gamma. */ DEFV(Float,INIT(correction_de_gamma_ROUGE,CORRECTION_DE_GAMMA_ROUGE)); DEFV(Float,INIT(correction_de_gamma_VERTE,CORRECTION_DE_GAMMA_VERTE)); DEFV(Float,INIT(correction_de_gamma_BLEUE,CORRECTION_DE_GAMMA_BLEUE)); /* Corrections de gamma implicites. */ DEFV(CHAR,INIC(POINTERc(nom_imageAR),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageAV),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageAB),NOM_PIPE)); /* Nom de l'image en vraies couleurs a displayer. */ DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE)); /* Nom de l'image en fausses couleurs a displayer. */ DEFV(CHAR,INIC(POINTERc(nom_paletteA),NOM_PIPE)); /* Nom de la palette a utiliser. */ DEFV(Logical,INIT(animation_des_couleurs,ANIMATION_DES_COULEURS)); /* Indique si les couleurs doivent etre laissees telles qu'elles, ou bien animees de */ /* facon "circulaire"... */ DEFV(Logical,INIT(translater_le_NOIR,TRANSLATER_LE_NOIR)); /* Indique si le niveau 'NOIR' est translatable dans 'ACCES_LA_PALETTE_ET_TRANSLATION(...)' */ /* ou pas... */ DEFV(Int,INIT(increment_des_niveaux,ZERO)); /* Lorsque l'animation des couleurs est demande, on trouve ici leur increment courant, */ DEFV(Int,INIT(increment_de_l_increment_des_niveaux,INCREMENT_DE_L_INCREMENT_DES_NIVEAUX)); /* Et la, l'increment de l'increment... */ DEFV(Positive,INIT(nombre_de_changements_de_couleurs,NOMBRE_DE_CHANGEMENTS_DE_COULEURS)); /* Nombre de "rotations" de la palette de couleurs (eventuellement) ; celui-ci est infini */ /* si la valeur donnee est nulle. */ DEFV(Int,INIT(temporisation_inter_palettes,TEMPORISATION_INTER_PALETTES)); /* Temporisation inter palettes ; une valeur nulle fait qu'il n'y a pas d'attente... */ /* */ /* ATTENTION, jusqu'au 19970507160714, cet 'Int' avait le type 'Positive'. */ DEFV(CHAR,INIC(POINTERc(nom_de_la_fenetre),NOM_DE_LA_FENETRE)); /* Nom de la fenetre... */ DEFV(Logical,INIT(generer_de_la_video,GENERER_DE_LA_VIDEO)); /* De la video "standard" 780x575 ('VRAI') ou de la "haute-definition" 1280x1024 ('FAUX'). */ 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(Logical,INIT(redimensionner_les_images_RVB,REDIMENSIONNER_LES_IMAGES_RVB)); /* Les images 'RVB' doivent-elles etre redimensionnees ('VRAI') ou pas ('FAUX'). */ DEFV(Int,INIT(methode_de_redimensionnement_a_utiliser,METHODE_DE_REECHANTILLONNAGE_A_UTILISER)); /* Methode de redimensionnement a utiliser alors... */ DEFV(Logical,INIT(conserver_les_proportions_lors_d_un_redimensionnement,CONSERVER_LES_PROPORTIONS_LORS_D_UN_REDIMENSIONNEMENT)); /* Faut-il conserver ('VRAI') ou pas ('FAUX') les proportions de l'image Argument. La */ /* valeur implicite ('FAUX') permet d'occuper tout l'ecran, et ce quelle que soit l'image */ /* Argument... */ 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. */ DEFV(genere_p,INIT(minimum_de_la_luminance,MINIMUM_DE_LA_LUMINANCE)); DEFV(genere_p,INIT(maximum_de_la_luminance,MAXIMUM_DE_LA_LUMINANCE)); /* Minimum et maximum demande pour chaque point (a l'exception des points 'NOIR'). */ DEFV(Logical,INIT(synchronisation_externe,SYNCHRONISATION_EXTERNE)); /* Indique s'il y a une attente implicite par 'DUREE_D_ATTENTE' ('FAUX') ou bien une */ /* synchronisation sur un signal externe par 'ATTENDRE_AU_FEU_ROUGE' ('VRAI'). */ DEFV(Int,INIT(duree_d_attente,DUREE_D_ATTENTE)); /* Duree d'attente apres l'affichage d'une image et avant son effacement. */ /* */ /* ATTENTION, jusqu'au 19970507160714, cet 'Int' avait le type 'Positive'. */ DEFV(Logical,INIT(entree_video_temps_reel,ENTREE_VIDEO_TEMPS_REEL)); /* De la video va-t-elle etre entree ('VRAI') ou pas ('FAUX')... */ /* */ /* ATTENTION, la definition de l'indicateur 'entree_video_temps_reel' ne doit pas etre */ /* conditionne par 'L_ENTREE_VIDEO_TEMPS_REEL_EST_POSSIBLE' car il est teste une fois */ /* en dehors des compilations conditionnelles... */ DEFV(CHAR,INIC(POINTERc(nom_imageRR),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageRV),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageRB),NOM_PIPE)); /* Nom de l'image en vraies couleurs numerisee. */ # ifdef L_ENTREE_VIDEO_TEMPS_REEL_EST_POSSIBLE DEFV(CHAR,INIC(POINTERc(serveur_standard),SERVEUR_STANDARD)); /* Le serveur standard est celui qui est defini par la variable "DISPLAY". */ DEFV(Logical,INIT(editer_les_PRINT_ATTENTION_initiaux,EDITER_LES_PRINT_ATTENTION_INITIAUX)); /* Indique si les messages initiaux du type 'PRINT_ATTENTION(...)' doivent etre emis */ /* ('VRAI') ou pas ('FAUX'). */ DEFV(Logical,INIT(numeriser_une_image,NUMERISER_UNE_IMAGE)); /* Si de la video entre, faut-il numeriser une image ('VRAI') ou pas ('FAUX')... */ DEFV(Logical,INIT(centrer_la_fenetre_video_temps_reel,CENTRER_LA_FENETRE_VIDEO_TEMPS_REEL)); /* Faut-il centrer la fenetre video temps reel ('VRAI') ou bien donner explicitement la */ /* position de son coin "bas gauche" ('FAUX') ? */ DEFV(pointF_2D,coin_bas_gauche); /* Position du coin bas gauche de la fenetre. */ # Aifdef L_ENTREE_VIDEO_TEMPS_REEL_EST_POSSIBLE # Eifdef L_ENTREE_VIDEO_TEMPS_REEL_EST_POSSIBLE # Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS # ifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER DEFV(CHAR,INIC(POINTERc(nom_imageAR),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageAV),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageAB),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_de_la_fenetre),NOM_DE_LA_FENETRE)); /* Nom de la fenetre... */ 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(Int,INIT(facteur_de_zoom,FACTEUR_DE_ZOOM)); /* Facteur de zoom de l'image. */ # Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER # Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER # Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 /*..............................................................................................................................*/ #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 GET_ARGUMENTSg(nombre_d_arguments ,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA); GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA); GET_ARGUMENT_L("signer=",signer); GET_ARGUMENT_P("fond=""f=",niveau_fond); GET_ARGUMENT_P("signature=""s=",niveau_signature); GET_ARGUMENT_I("taille=""T=",taille_des_caracteres_des_messages); GET_ARGUMENT_I("bibliotheque=",vecteurs_____num_bibliotheque); GET_ARGUMENT_F("trx=""trX=",translation_OX); GET_ARGUMENT_F("try=""trY=",translation_OY); GET_ARGUMENT_F("dx=""dX=",taille_OX); GET_ARGUMENT_F("dy=""dY=",taille_OY); GET_ARGUMENT_L("init=",initialisation_globale); GET_ARGUMENT_L("video=",generer_de_la_video); GET_ARGUMENT_L("fichier=""configuration=",generer_le_fichier_de_configuration); GET_ARGUMENT_L("nb=",noir_et_blanc); GET_ARGUMENT_L("rouge=",rouge_presente); GET_ARGUMENT_L("verte=",verte_presente); GET_ARGUMENT_L("bleue=",bleue_presente); GET_ARGUMENT_L("optimiser=",optimiser); ) ); #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 # ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS # ifdef L_ENTREE_VIDEO_TEMPS_REEL_EST_POSSIBLE 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 BUG_SYSTEME_SGIND_VL_VLDESTROYPATH_ENTREE_VIDEO_TEMPS_REEL GET_ARGUMENTSg(nombre_d_arguments ,BLOC(GET_ARGUMENT_L("RVB=",visualiser_EN_RVB); GET_ARGUMENT_C("imageAR=""AR=",nom_imageAR); GET_ARGUMENT_C("imageAV=""AV=",nom_imageAV); GET_ARGUMENT_C("imageAB=""AB=",nom_imageAB); GET_ARGUMENT_C("imageA=""A=",nom_imageA); GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA); GET_ARGUMENT_L("animation=",animation_des_couleurs); GET_ARGUMENT_L("translater_le_NOIR=""noir=""NOIR=",translater_le_NOIR); GET_ARGUMENT_I("increment=""i=",increment_de_l_increment_des_niveaux); GET_ARGUMENT_I("nombre=""changements=",nombre_de_changements_de_couleurs); GET_ARGUMENT_L("signer=",signer); GET_ARGUMENT_P("fond=""f=",niveau_fond); GET_ARGUMENT_P("signature=""s=",niveau_signature); GET_ARGUMENT_I("taille=""T=",taille_des_caracteres_des_messages); GET_ARGUMENT_I("bibliotheque=",vecteurs_____num_bibliotheque); GET_ARGUMENT_C("titre=""nom=""fenetre=",nom_de_la_fenetre); GET_ARGUMENT_L("synchronisation=""sync=""s=",synchronisation_externe); GET_ARGUMENT_L("genlock=",SGI_____se_synchroniser_sur_une_source_externe); GET_ARGUMENT_I("Vphase=",SGI_____decalage_de_VL_EV1_V_OFFSET); GET_ARGUMENT_I("Hphase=",SGI_____decalage_de_VL_EV1_H_OFFSET); GET_ARGUMENT_I("duree=""d=",duree_d_attente); 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 20060427162642... */ GET_ARGUMENT_L("gamma=",corriger_le_gamma); GET_ARGUMENT_F("gamma_ROUGE=""gROUGE=",correction_de_gamma_ROUGE); GET_ARGUMENT_F("gamma_VERTE=""gVERTE=",correction_de_gamma_VERTE); GET_ARGUMENT_F("gamma_BLEUE=""gBLEUE=",correction_de_gamma_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_P("minimum=",minimum_de_la_luminance); GET_ARGUMENT_P("maximum=",maximum_de_la_luminance); GET_ARGUMENT_L("video=",generer_de_la_video); GET_ARGUMENT_L("curseur=",laisser_le_curseur_apparaitre_pendant_l_affichage); GET_ARGUMENT_L("redimensionner=",redimensionner_les_images_RVB); GET_ARGUMENT_I("methode=",methode_de_redimensionnement_a_utiliser); GET_ARGUMENT_P("niveau=",REECHANTILLONNAGE_GENERAL_____niveau_manquant); GET_ARGUMENT_L("proportions=""proportion=",conserver_les_proportions_lors_d_un_redimensionnement); GET_ARGUMENT_L("station=",SGI_____visualiser_le_contenu_de_l_ecran_de_la_station_de_travail); GET_ARGUMENT_L("entree=",entree_video_temps_reel); GET_ARGUMENT_L("numeriser=",numeriser_une_image); GET_ARGUMENT_I("mode=",SGI_____mode_de_numerisation_des_images); GET_ARGUMENT_I("ignorer=",SGI_____nombre_d_images_a_ignorer_avant_d_en_numeriser_une); GET_ARGUMENT_C("imageRR=""RR=",nom_imageRR); GET_ARGUMENT_C("imageRV=""RV=",nom_imageRV); GET_ARGUMENT_C("imageRB=""RB=",nom_imageRB); GET_ARGUMENT_L("Vcentrer=",centrer_la_fenetre_video_temps_reel); GET_ARGUMENT_I("pal=",SGI_____Gentree_video_utilisee); GET_ARGUMENT_I("bandeau=",SGI_____facteur_de_reduction_verticale_d_une_fenetre_bandeau); GET_ARGUMENT_I("repos=",SGI_____Gentree_video_de_repos); GET_ARGUMENT_I("decalageV=",SGI_____decalage_de_VL_EV1_V_OFFSET); GET_ARGUMENT_I("blank=",SGI_____nombre_de_lignes_blankees); GET_ARGUMENT_I("d2x=""d2X=",SGI_____fenetre_X_WINDOW_decalage_2_video_X); GET_ARGUMENT_I("d2y=""d2Y=",SGI_____fenetre_X_WINDOW_decalage_2_video_Y); GET_ARGUMENT_I("zoomN=""Nz=",SGI_____numerateur_du_rapport_de_zoom); GET_ARGUMENT_I("zoomD=""Dz=",SGI_____denominateur_du_rapport_de_zoom); 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 20100109113225 pour acceder au serveur 'Xming' (Windows Vista). */ 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_ARGUMENTSi_X_WINDOW; GET_ARGUMENT_F("xc=",ASD1(coin_bas_gauche,x)); GET_ARGUMENT_F("x=",ASD1(coin_bas_gauche,x)); GET_ARGUMENT_F("X=",ASD1(coin_bas_gauche,x)); GET_ARGUMENT_F("yc=",ASD1(coin_bas_gauche,y)); GET_ARGUMENT_F("y=",ASD1(coin_bas_gauche,y)); GET_ARGUMENT_F("Y=",ASD1(coin_bas_gauche,y)); ) ); # Aifdef BUG_SYSTEME_SGIND_VL_VLDESTROYPATH_ENTREE_VIDEO_TEMPS_REEL GET_ARGUMENTSg(nombre_d_arguments ,BLOC(GET_ARGUMENT_L("RVB=",visualiser_EN_RVB); GET_ARGUMENT_C("imageAR=""AR=",nom_imageAR); GET_ARGUMENT_C("imageAV=""AV=",nom_imageAV); GET_ARGUMENT_C("imageAB=""AB=",nom_imageAB); GET_ARGUMENT_C("imageA=""A=",nom_imageA); GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA); GET_ARGUMENT_L("animation=",animation_des_couleurs); GET_ARGUMENT_L("translater_le_NOIR=""noir=""NOIR=",translater_le_NOIR); GET_ARGUMENT_I("increment=""i=",increment_de_l_increment_des_niveaux); GET_ARGUMENT_I("nombre=""changements=",nombre_de_changements_de_couleurs); GET_ARGUMENT_L("signer=",signer); GET_ARGUMENT_P("fond=""f=",niveau_fond); GET_ARGUMENT_P("signature=""s=",niveau_signature); GET_ARGUMENT_I("taille=""T=",taille_des_caracteres_des_messages); GET_ARGUMENT_I("bibliotheque=",vecteurs_____num_bibliotheque); GET_ARGUMENT_C("titre=""nom=""fenetre=",nom_de_la_fenetre); GET_ARGUMENT_L("synchronisation=""sync=""s=",synchronisation_externe); GET_ARGUMENT_L("genlock=",SGI_____se_synchroniser_sur_une_source_externe); GET_ARGUMENT_I("Vphase=",SGI_____decalage_de_VL_EV1_V_OFFSET); GET_ARGUMENT_I("Hphase=",SGI_____decalage_de_VL_EV1_H_OFFSET); GET_ARGUMENT_I("duree=""d=",duree_d_attente); 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 20060427162642... */ GET_ARGUMENT_L("gamma=",corriger_le_gamma); GET_ARGUMENT_F("gamma_ROUGE=""gROUGE=",correction_de_gamma_ROUGE); GET_ARGUMENT_F("gamma_VERTE=""gVERTE=",correction_de_gamma_VERTE); GET_ARGUMENT_F("gamma_BLEUE=""gBLEUE=",correction_de_gamma_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_P("minimum=",minimum_de_la_luminance); GET_ARGUMENT_P("maximum=",maximum_de_la_luminance); GET_ARGUMENT_L("video=",generer_de_la_video); GET_ARGUMENT_L("curseur=",laisser_le_curseur_apparaitre_pendant_l_affichage); GET_ARGUMENT_L("redimensionner=",redimensionner_les_images_RVB); GET_ARGUMENT_I("methode=",methode_de_redimensionnement_a_utiliser); GET_ARGUMENT_P("niveau=",REECHANTILLONNAGE_GENERAL_____niveau_manquant); GET_ARGUMENT_L("proportions=""proportion=",conserver_les_proportions_lors_d_un_redimensionnement); GET_ARGUMENT_L("station=",SGI_____visualiser_le_contenu_de_l_ecran_de_la_station_de_travail); GET_ARGUMENT_L("entree=",entree_video_temps_reel); GET_ARGUMENT_L("numeriser=",numeriser_une_image); GET_ARGUMENT_I("mode=",SGI_____mode_de_numerisation_des_images); GET_ARGUMENT_I("ignorer=",SGI_____nombre_d_images_a_ignorer_avant_d_en_numeriser_une); GET_ARGUMENT_C("imageRR=""RR=",nom_imageRR); GET_ARGUMENT_C("imageRV=""RV=",nom_imageRV); GET_ARGUMENT_C("imageRB=""RB=",nom_imageRB); GET_ARGUMENT_L("Vcentrer=",centrer_la_fenetre_video_temps_reel); GET_ARGUMENT_I("pal=",SGI_____Gentree_video_utilisee); GET_ARGUMENT_I("bandeau=",SGI_____facteur_de_reduction_verticale_d_une_fenetre_bandeau); GET_ARGUMENT_I("decalageV=",SGI_____decalage_de_VL_EV1_V_OFFSET); GET_ARGUMENT_I("blank=",SGI_____nombre_de_lignes_blankees); GET_ARGUMENT_I("d2x=""d2X=",SGI_____fenetre_X_WINDOW_decalage_2_video_X); GET_ARGUMENT_I("d2y=""d2Y=",SGI_____fenetre_X_WINDOW_decalage_2_video_Y); GET_ARGUMENT_I("zoomN=""Nz=",SGI_____numerateur_du_rapport_de_zoom); GET_ARGUMENT_I("zoomD=""Dz=",SGI_____denominateur_du_rapport_de_zoom); 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 20100109113225 pour acceder au serveur 'Xming' (Windows Vista). */ 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_ARGUMENTSi_X_WINDOW; GET_ARGUMENT_F("xc=",ASD1(coin_bas_gauche,x)); GET_ARGUMENT_F("x=",ASD1(coin_bas_gauche,x)); GET_ARGUMENT_F("X=",ASD1(coin_bas_gauche,x)); GET_ARGUMENT_F("yc=",ASD1(coin_bas_gauche,y)); GET_ARGUMENT_F("y=",ASD1(coin_bas_gauche,y)); GET_ARGUMENT_F("Y=",ASD1(coin_bas_gauche,y)); ) ); # Eifdef BUG_SYSTEME_SGIND_VL_VLDESTROYPATH_ENTREE_VIDEO_TEMPS_REEL # Aifdef L_ENTREE_VIDEO_TEMPS_REEL_EST_POSSIBLE GET_ARGUMENTSg(nombre_d_arguments ,BLOC(GET_ARGUMENT_L("RVB=",visualiser_EN_RVB); GET_ARGUMENT_C("imageAR=""AR=",nom_imageAR); GET_ARGUMENT_C("imageAV=""AV=",nom_imageAV); GET_ARGUMENT_C("imageAB=""AB=",nom_imageAB); GET_ARGUMENT_C("imageA=""A=",nom_imageA); GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA); GET_ARGUMENT_L("animation=",animation_des_couleurs); GET_ARGUMENT_L("translater_le_NOIR=""noir=""NOIR=",translater_le_NOIR); GET_ARGUMENT_I("increment=""i=",increment_de_l_increment_des_niveaux); GET_ARGUMENT_I("nombre=""changements=",nombre_de_changements_de_couleurs); GET_ARGUMENT_L("signer=",signer); GET_ARGUMENT_P("fond=""f=",niveau_fond); GET_ARGUMENT_P("signature=""s=",niveau_signature); GET_ARGUMENT_I("taille=""T=",taille_des_caracteres_des_messages); GET_ARGUMENT_I("bibliotheque=",vecteurs_____num_bibliotheque); GET_ARGUMENT_C("titre=""nom=""fenetre=",nom_de_la_fenetre); GET_ARGUMENT_L("synchronisation=""sync=""s=",synchronisation_externe); GET_ARGUMENT_I("duree=""d=",duree_d_attente); 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 20060427162642... */ GET_ARGUMENT_L("gamma=",corriger_le_gamma); GET_ARGUMENT_F("gamma_ROUGE=""gROUGE=",correction_de_gamma_ROUGE); GET_ARGUMENT_F("gamma_VERTE=""gVERTE=",correction_de_gamma_VERTE); GET_ARGUMENT_F("gamma_BLEUE=""gBLEUE=",correction_de_gamma_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_P("minimum=",minimum_de_la_luminance); GET_ARGUMENT_P("maximum=",maximum_de_la_luminance); GET_ARGUMENT_L("video=",generer_de_la_video); GET_ARGUMENT_L("curseur=",laisser_le_curseur_apparaitre_pendant_l_affichage); GET_ARGUMENT_L("redimensionner=",redimensionner_les_images_RVB); GET_ARGUMENT_I("methode=",methode_de_redimensionnement_a_utiliser); GET_ARGUMENT_P("niveau=",REECHANTILLONNAGE_GENERAL_____niveau_manquant); GET_ARGUMENT_L("proportions=""proportion=",conserver_les_proportions_lors_d_un_redimensionnement); ) ); # Eifdef L_ENTREE_VIDEO_TEMPS_REEL_EST_POSSIBLE # Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS # ifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER GET_ARGUMENTSg(nombre_d_arguments ,BLOC(GET_ARGUMENT_C("imageAR=""AR=",nom_imageAR); GET_ARGUMENT_C("imageAV=""AV=",nom_imageAV); GET_ARGUMENT_C("imageAB=""AB=",nom_imageAB); GET_ARGUMENT_L("signer=",signer); GET_ARGUMENT_P("fond=""f=",niveau_fond); GET_ARGUMENT_P("signature=""s=",niveau_signature); GET_ARGUMENT_I("taille=""T=",taille_des_caracteres_des_messages); GET_ARGUMENT_I("bibliotheque=",vecteurs_____num_bibliotheque); GET_ARGUMENT_C("titre=""nom=""fenetre=",nom_de_la_fenetre); 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_I("zoom=",facteur_de_zoom); ) ); # Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER GET_ARGUMENTSi(nombre_d_arguments ,BLOC(VIDE; ) ); /* Introduit le 20070301174518... */ PRINT_ATTENTION("aucun imageur n'est accessible"); # Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER # Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 INITIALISATION_ACCROISSEMENT_2D(translation,TRANSLATION_OX,TRANSLATION_OY); /* Mise en place de la translation de la fenetre. */ Test(IFNE_chaine(nom_paletteA,NOM_PIPE)) Bblock EGAL(noir_et_blanc,FAUX); /* Puisqu'un nom de palette a ete donne, c'est qu'il n'y a pas de noir et blanc... */ Eblock ATes Bblock Eblock ETes Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageA,nom_imageA)))) Bblock SIGNATURE(ImageA); /* Signature eventuelle de l'image... */ CALS(I7open(initialisation_globale,generer_de_la_video,generer_le_fichier_de_configuration)); /* On ne procede, en general, qu'a une initialisation partielle, et ce afin de */ /* permettre les superpositions. On fait cette operation avant toute chose afin */ /* de garantir une valeur correcte pour 'dimX7' et 'dimY7'. */ Test(IFEQ(taille_OX,FLOT__UNDEF)) Bblock EGAL(taille_OX,DIVI(FLOT(dimX),FLOT(dimX7))); /* Valeur par defaut de la taille horizontale... */ Eblock ATes Bblock Eblock ETes Test(IFEQ(taille_OY,FLOT__UNDEF)) Bblock EGAL(taille_OY,DIVI(FLOT(dimY),FLOT(dimY7))); /* Valeur par defaut de la taille verticale... */ Eblock ATes Bblock Eblock ETes INITIALISATION_ACCROISSEMENT_2D(taille,taille_OX,taille_OY); /* Mise en place de la taille de la fenetre. */ Test(IL_FAUT(noir_et_blanc)) Bblock CALS(Imove(Image_ROUGE,ImageA)); CALS(Imove(Image_VERTE,ImageA)); CALS(Imove(Image_BLEUE,ImageA)); Eblock ATes Bblock CALS(Iload_palette_de_couleurs(nom_paletteA,ESPACE_DE_COULEURS_RVB)); /* Chargement de la palette de couleurs... */ PUSH_ECHANTILLONNAGE; EGAL(pasX_intermediaire ,TRON(DIVI(FLOT(dimX) ,MIN2(FLOT(dimX) ,_lDENORMALISE_OX7(ASD1(taille,dx)) ) ) ,FLOT(PasX) ,FLOT(dimX) ) ); EGAL(pasY_intermediaire ,TRON(DIVI(FLOT(dimY) ,MIN2(FLOT(dimY) ,_lDENORMALISE_OY7(ASD1(taille,dy)) ) ) ,FLOT(PasY) ,FLOT(dimY) ) ); Test(IFET(IFEQ(pasX_intermediaire,AINT(pasX_intermediaire)) ,IFEQ(pasY_intermediaire,AINT(pasY_intermediaire)) ) ) Bblock SET_ECHANTILLONNAGE(INTE(pasX_intermediaire),INTE(pasY_intermediaire)); /* Lorsque le pas de sous-echantillonnage est "entier", il est possible */ /* d'optimiser le parcours des images ; sinon, il est necesaire de */ /* les traiter integralement... */ Eblock ATes Bblock Eblock ETes PUSH_OPTIMISATION; SET_OPTIMISATION(VRAI); /* Afin de ne passer que par les listes de substitution... */ CALS(Ivraies_couleurs(Image_ROUGE,Image_VERTE,Image_BLEUE ,ImageA ,rouge_presente,verte_presente,bleue_presente ,ZERO ,LE_NOIR_EST_TRANSLATABLE ) ); /* Passage des fausses couleurs aux vraies couleurs via la palette courante. */ PULL_OPTIMISATION; PULL_ECHANTILLONNAGE; Eblock ETes Test(I3ET(EST_VRAI(rouge_presente) ,EST_VRAI(verte_presente) ,EST_VRAI(bleue_presente) ) ) Bblock CALS(I7fenetre_2D(Image_ROUGE,Image_VERTE,Image_BLEUE ,INTE(Zorigine) ,ADRESSE(translation) ,ADRESSE(taille) ,optimiser ) ); Eblock ATes Bblock Test(EST_VRAI(rouge_presente)) Bblock CALS(I7fenetre_RVB(Image_ROUGE,composante_ROUGE ,ADRESSE(translation) ,ADRESSE(taille) ,optimiser ) ); Eblock ATes Bblock Eblock ETes Test(EST_VRAI(verte_presente)) Bblock CALS(I7fenetre_RVB(Image_VERTE,composante_VERTE ,ADRESSE(translation) ,ADRESSE(taille) ,optimiser ) ); Eblock ATes Bblock Eblock ETes Test(EST_VRAI(bleue_presente)) Bblock CALS(I7fenetre_RVB(Image_BLEUE,composante_BLEUE ,ADRESSE(translation) ,ADRESSE(taille) ,optimiser ) ); Eblock ATes Bblock Eblock ETes Eblock ETes CALS(I7close()); Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 # ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS 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. */ Test(IL_NE_FAUT_PAS(entree_video_temps_reel)) Bblock Test(IL_FAUT(visualiser_EN_RVB)) Bblock Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(Image_ROUGE,nom_imageAR)))) Bblock /* Chargement de la premiere image Argument. */ Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(Image_VERTE,nom_imageAV)))) Bblock /* Chargement de la deuxieme image Argument. */ Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(Image_BLEUE,nom_imageAB)))) Bblock /* Chargement de la troisieme image Argument. */ SIGNATURE(Image_ROUGE); SIGNATURE(Image_VERTE); SIGNATURE(Image_BLEUE); /* Signature eventuelle de l'image... */ Test(IFOU(IL_NE_FAUT_PAS(redimensionner_les_images_RVB) ,IFET(IFET(IFEQ(Xmin,XminPali),IFEQ(Xmax,XmaxPali)) ,IFET(IFEQ(Ymin,YminPali),IFEQ(Ymax,YmaxPali)) ) ) ) Bblock BDEFV(imageU,image_en_vraies_couleurs); /* Image en vraies couleurs au format 'Silicon-Graphics'. */ CONVERSION_D_UNE_IMAGE; OUVERTURE_DE_LA_FENETRE; AFFICHAGE_D_UNE_IMAGE_ET_ATTENTE(VRAI); FERMETURE_DE_LA_FENETRE; /* Affichage de l'image et attente... */ EDEFV(imageU,image_en_vraies_couleurs); /* Image en vraies couleurs au format 'Silicon-Graphics'. */ Eblock ATes Bblock DEFV(Int,INIT(XminRedim,XminPali)); DEFV(Int,INIT(XmaxRedim,XmaxPali)); DEFV(Int,INIT(YminRedim,YminPali)); DEFV(Int,INIT(YmaxRedim,YmaxPali)); /* Dimensions de l'image apres redimensionnement (a priori, format 'Pal' sans respecter */ /* les proportions...). */ PUSH_DIMENSIONS_2D; Test(IL_FAUT(conserver_les_proportions_lors_d_un_redimensionnement)) Bblock DEFV(Float,INIT(rapport_X ,DIVI(FLOT(SOUS(XmaxPali,XminPali)) ,FLOT(SOUS(EnTete_de_sauvegardM ## Xmax,EnTete_de_sauvegardM ## Xmin)) ) ) ); /* Calcul du rapport "horizontal", */ DEFV(Float,INIT(rapport_Y ,DIVI(FLOT(SOUS(YmaxPali,YminPali)) ,FLOT(SOUS(EnTete_de_sauvegardM ## Ymax,EnTete_de_sauvegardM ## Ymin)) ) ) ); /* Calcul du rapport "vertical", */ DEFV(Float,INIT(rapport_XY,FLOT__UNDEF)); /* Definition des trois rapports necessaires a garder les proportions de l'image Argument. */ EGAL(rapport_XY,MIN2(rapport_X,rapport_Y)); /* Et enfin du plus petit rapport des deux qui garantit que l'une au moins des deux */ /* dimensions de l'image Argument va occuper entierement la dimension correspondante */ /* de la video... */ EGAL(XminRedim,XminPali); EGAL(XmaxRedim ,ADD2(INTE(MUL2(rapport_XY ,SOUS(EnTete_de_sauvegardM ## Xmax,EnTete_de_sauvegardM ## Xmin) ) ) ,XminPali ) ); EGAL(YminRedim,YminPali); EGAL(YmaxRedim ,ADD2(INTE(MUL2(rapport_XY ,SOUS(EnTete_de_sauvegardM ## Ymax,EnTete_de_sauvegardM ## Ymin) ) ) ,YminPali ) ); Eblock ATes Bblock Eblock ETes SET_DIMENSIONS_2D_SANS_VALIDATION(XminRedim,XmaxRedim,YminRedim,YmaxRedim); /* Mise en place du format 'Pal' lorsque les proportions ne sont pas conservees, ou d'un */ /* format reduit lorsqu'il faut conserver les proportions... */ begin_nouveau_block Bblock /* ATTENTION, l'ouverture de ce nouveau bloc {Bblock,Eblock} est destinee uniquement a */ /* permettre la definition des images qui suivent par 'BDEFV(...)' maintenant que l'on */ /* connait (grace a 'SET_DIMENSIONS_2D_SANS_VALIDATION(...)') leur taille reelle... */ BDEFV(image,image_ROUGE); BDEFV(image,image_VERTE); BDEFV(image,image_BLEUE); /* Image en vraies couleurs Argument redimensionnees. */ BDEFV(imageU,image_en_vraies_couleurs); /* Image en vraies couleurs au format 'Silicon-Graphics'. */ REDIMENSIONNEMENT(image_ROUGE,Image_ROUGE); REDIMENSIONNEMENT(image_VERTE,Image_VERTE); REDIMENSIONNEMENT(image_BLEUE,Image_BLEUE); CONVERSION_D_UNE_IMAGE_QUELCONQUE(image_ROUGE,image_VERTE,image_BLEUE); OUVERTURE_DE_LA_FENETRE; AFFICHAGE_D_UNE_IMAGE_ET_ATTENTE(VRAI); FERMETURE_DE_LA_FENETRE; /* Affichage de l'image et attente... */ EDEFV(imageU,image_en_vraies_couleurs); /* Image en vraies couleurs au format 'Silicon-Graphics'. */ EDEFV(image,image_BLEUE); EDEFV(image,image_VERTE); EDEFV(image,image_ROUGE); /* Image en vraies couleurs Argument redimensionnees. */ Eblock end_nouveau_block PULL_DIMENSIONS_2D; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageG,nom_imageA)))) /* Chargement de l'image Argument. */ Bblock BDEFV(imageU,image_en_vraies_couleurs); /* Image en vraies couleurs au format 'Silicon-Graphics'. */ CHARGEMENT_DE_LA_PALETTE_DE_COULEURS; /* Chargement des trois listes de substitution constitutive d'une palette. */ SIGNATURE(ImageG); /* Signature eventuelle de l'image... */ Test(IL_FAUT(animation_des_couleurs)) Bblock OUVERTURE_DE_LA_FENETRE; Test(IZEQ(nombre_de_changements_de_couleurs)) Bblock Loop Bblock SIMULATION_DE_LA_ROTATION_DES_COULEURS; /* Simulation de la rotation des couleurs... */ CONVERSION_D_UNE_IMAGE; AFFICHAGE_D_UNE_IMAGE_ET_ATTENTE(FAUX); /* Affichage de l'image et attente... */ DODO(temporisation_inter_palettes); /* Et on attend de nouveau un petit peu... */ Eblock ELoo Eblock ATes Bblock Repe(SUCC(nombre_de_changements_de_couleurs)) /* L'utilisation de la fonction 'SUCC(...)' permet de presenter (visuellement) le nombre de */ /* changements de couleurs demande. En effet, sinon, le dernier changement de couleur a lieu */ /* juste avant la fermeture de la fenetre, et n'est donc pas percu. Cette solution evite de */ /* faire un petit 'DODO(...)' dont la duree, pour etre fixee, demanderait d'introduire un */ /* nouveau parametre... */ Bblock SIMULATION_DE_LA_ROTATION_DES_COULEURS; /* Simulation de la rotation des couleurs... */ CONVERSION_D_UNE_IMAGE; AFFICHAGE_D_UNE_IMAGE_ET_ATTENTE(FAUX); /* Affichage de l'image et attente... */ Eblock ERep Eblock ETes Eblock ATes Bblock CONVERSION_D_UNE_IMAGE; OUVERTURE_DE_LA_FENETRE; AFFICHAGE_D_UNE_IMAGE_ET_ATTENTE(VRAI); /* Affichage de l'image et attente... */ Eblock ETes FERMETURE_DE_LA_FENETRE; EDEFV(imageU,image_en_vraies_couleurs); /* Image en vraies couleurs au format 'Silicon-Graphics'. */ Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ETes Eblock ATes Bblock # ifdef L_ENTREE_VIDEO_TEMPS_REEL_EST_POSSIBLE Test(IL_FAUT(numeriser_une_image)) Bblock CALS(IGdebut_de_numerisation_d_une_image_video()); /* Debut de la numerisation d'une image video... */ CALS(IGfin_de_numerisation_d_une_image_video(Image_ROUGE ,Image_VERTE ,Image_BLEUE ,methode_de_redimensionnement_a_utiliser ) ); /* Fin de la numerisation d'une image video... */ CALi(Iupdate_image(nom_imageRR,Image_ROUGE)); CALi(Iupdate_image(nom_imageRV,Image_VERTE)); CALi(Iupdate_image(nom_imageRB,Image_BLEUE)); /* Et archivage de l'image numerisee. */ Eblock ATes Bblock CALS(IGdebut_de_diffusion_d_une_sequence_video_temps_reel(serveur_standard ,nom_de_la_fenetre ,centrer_la_fenetre_video_temps_reel ,ADRESSE(coin_bas_gauche) ,editer_les_PRINT_ATTENTION_initiaux ) ); /* Debut de la sequence video temps reel... */ Test(IZEQ(duree_d_attente)) Bblock CALS(IXattente_de_l_evenement_ButtonPress()); /* Cas d'une attente indefinie... */ Eblock ATes Bblock DODO(duree_d_attente); /* Cas d'une attente programmee... */ Eblock ETes CALS(IGfin_de_diffusion_d_une_sequence_video_temps_reel()); /* Fin de la sequence video temps reel... */ Eblock ETes # Aifdef L_ENTREE_VIDEO_TEMPS_REEL_EST_POSSIBLE PRINT_ATTENTION("l'entree video temps reel n'est pas disponible sur cette machine"); # Eifdef L_ENTREE_VIDEO_TEMPS_REEL_EST_POSSIBLE Eblock ETes # Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS # ifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER 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. */ Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(Image_ROUGE,nom_imageAR)))) Bblock /* Chargement de la premiere image Argument. */ Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(Image_VERTE,nom_imageAV)))) Bblock /* Chargement de la deuxieme image Argument. */ Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(Image_BLEUE,nom_imageAB)))) Bblock /* Chargement de la troisieme image Argument. */ SIGNATURE(Image_ROUGE); SIGNATURE(Image_VERTE); SIGNATURE(Image_BLEUE); /* Signature eventuelle de l'image... */ CALS(IUopen(nom_de_la_fenetre,ADRESSE(translation_de_la_fenetre))); /* Ouverture du plan de travail. */ CALS(IUdisplay(Image_ROUGE,Image_VERTE,Image_BLEUE ,facteur_de_zoom ,centrer_l_image_dans_la_fenetre ,ADRESSE(translation_de_l_image_dans_la_fenetre) ) ); /* Affichage de l'image. */ # ifdef BUG_SYSTEME_ULTRANET_FRAME_BUFFER_UNE_SEULE_IMAGE_1 CALS(IUdisplay(Image_ROUGE,Image_VERTE,Image_BLEUE ,facteur_de_zoom ,centrer_l_image_dans_la_fenetre ,ADRESSE(translation_de_l_image_dans_la_fenetre) ) ); /* Affichage de l'image une deuxieme fois (pour la voir...). */ # Aifdef BUG_SYSTEME_ULTRANET_FRAME_BUFFER_UNE_SEULE_IMAGE_1 # Eifdef BUG_SYSTEME_ULTRANET_FRAME_BUFFER_UNE_SEULE_IMAGE_1 CALS(IUclose()); /* Fermeture du plan de travail. */ Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes # Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER # Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER # Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_CUBI7 RETU_Commande; Eblock ECommande