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