/*************************************************************************************************************************************/
/* */
/* A F F I C H A G E D ' U N E I M A G E E N V R A I E S C O U L E U R S : */
/* */
/* */
/* Definition : */
/* */
/* Cette commande affiche une */
/* image Argument en vraies couleurs */
/* dans une fenetre. */
/* */
/* */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* * * * ** * * * * * ** * */
/* * * * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * * * */
/* * * * * ** * * * * * ** */
/* * * * * * * * * * * * * * * * * * * * * * * */
/* */
/* */
/* ATTENTION : */
/* */
/* On notera qu'il s'agit la d'une */
/* version simplifiee de '$xci/display_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/Sdisplay_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
# 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
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
# 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 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')... */
#define ENTREE_DES_ARGUMENTS_DE_L_ENTREE_VIDEO_TEMPS_REEL \
Bblock \
GET_ARGUMENT_L("genlock=",SGI_____se_synchroniser_sur_une_source_externe); \
GET_ARGUMENT_L("blocage=",SGI_____bloquer_la_generation_video_si_defaut_en_cours_de_transfert); \
GET_ARGUMENT_L("station=",SGI_____visualiser_le_contenu_de_l_ecran_de_la_station_de_travail); \
GET_ARGUMENT_I("blank=",SGI_____nombre_de_lignes_blankees); \
GET_ARGUMENT_I("decalageV=""Vphase=",SGI_____decalage_de_VL_EV1_V_OFFSET); \
GET_ARGUMENT_I("Hphase=",SGI_____decalage_de_VL_EV1_H_OFFSET); \
Eblock \
/* Entree des parametres de l'entree video temps reel... */
# 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')... */
#define ENTREE_DES_ARGUMENTS_DE_L_ENTREE_VIDEO_TEMPS_REEL \
Bblock \
BLOC(VIDE;); \
Eblock \
/* Entree des parametres de l'entree video temps reel... */
# 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 \
_____cNORMALISE_OXG(CGXR(XminG)) \
/* Translation horizontale implicite de la fenetre, */
# define TRANSLATION_OY_DE_LA_FENETRE \
_____cNORMALISE_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 \
_____cNORMALISE_OXG(CGXR(XminG)) \
/* Translation horizontale implicite de l'image dans la fenetre, */
# define TRANSLATION_OY_DE_L_IMAGE_DANS_LA_FENETRE \
_____cNORMALISE_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
#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. */ \
\
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 20070130102731 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 20070130102731 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... */
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
#TestADef GET_ARGUMENTSi_X_WINDOW \
Bblock \
\
DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \
/* Introduit le 20070130102731 car, en effet, il manquait... */ \
\
BLOC(VIDE;); \
\
FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \
/* Introduit le 20070130102731 car, en effet, il manquait... */ \
\
Eblock \
/* Pour entrer les arguments specifiques 'X-Window'... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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
#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(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_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
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
/*..............................................................................................................................*/
#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_ARGUMENTSi(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_C("titre=""nom=""fenetre=",nom_de_la_fenetre);
GET_ARGUMENT_L("synchronisation=""sync=""s=",synchronisation_externe);
ENTREE_DES_ARGUMENTS_DE_L_ENTREE_VIDEO_TEMPS_REEL;
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 20060427162244... */
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("X_Window=",SGI_____appeler_les_fonctions_X_Window_pour_les_sorties_OpenGL);
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("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("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 20100109112528 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_ARGUMENTSi(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_C("titre=""nom=""fenetre=",nom_de_la_fenetre);
GET_ARGUMENT_L("synchronisation=""sync=""s=",synchronisation_externe);
ENTREE_DES_ARGUMENTS_DE_L_ENTREE_VIDEO_TEMPS_REEL;
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 20060427162244... */
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("X_Window=",SGI_____appeler_les_fonctions_X_Window_pour_les_sorties_OpenGL);
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("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("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 20100109112528 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_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_ARGUMENTSi(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_C("titre=""nom=""fenetre=",nom_de_la_fenetre);
GET_ARGUMENT_L("synchronisation=""sync=""s=",synchronisation_externe);
ENTREE_DES_ARGUMENTS_DE_L_ENTREE_VIDEO_TEMPS_REEL;
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 20060427162244... */
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("X_Window=",SGI_____appeler_les_fonctions_X_Window_pour_les_sorties_OpenGL);
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("signaler=",X11_____signaler_les_evenements_inattendus);
GET_ARGUMENTSi_X_WINDOW;
)
);
# Eifdef L_ENTREE_VIDEO_TEMPS_REEL_EST_POSSIBLE
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
GET_ARGUMENTSi(nombre_d_arguments
,BLOC(VIDE;
)
);
/* Introduit le 20070301174222... */
PRINT_ATTENTION("aucun imageur n'est accessible");
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
#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(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. */
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
# 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
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SILICON_GRAPHICS
RETU_Commande;
Eblock
ECommande