/*************************************************************************************************************************************/ /* */ /* A N I M A T I O N G R A P H I Q U E D ' U N E I M A G E : */ /* */ /* */ /* Definition : */ /* */ /* Cette commande affiche une animation */ /* contenue matriciuellement dans une */ /* image Argument. */ /* */ /* */ /* Author of '$xci/animation$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 1988??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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_SPIX # include image_drive_dpx5c_FONCTION_EXT #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW # include image_image_QUAD_IMAGE_EXT /* ATTENTION, avant le 20021230110723, les includes 'image_image_TRI_IMAGE_EXT' et */ /* 'image_image_QUAD_IMAGE_EXT' n'etaient faits que pour */ /* '__VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL'. */ /* Mais avec les modifications faites dans 'v $xiidX/fonct$vv$FON 20021230102551' il a */ /* fallu les rendre systematiques... */ # include image_drive_XWind_FONCTION_EXT # ifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL # include image_drive_SiliG_FONCTION_1_EXT # Aifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL # Eifdef __VERSION__UTILISER_LA_BIBLIOTHEQUE_OpenGL #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ #include xci/display.01.I" #define TENTER_UN_REDIMENSIONNEMENT \ FAUX \ /* Indique s'il faut ('VRAI') ou pas ('FAUX') tenter le redimensionnement... */ #define TEMPORISATION_INTER_TRAMES \ ZERO \ /* Temporisation inter_trames ; une valeur nulle fait qu'il n'y a pas d'attente... */ #define TEMPORISATION_INTER_ANIMATIONS \ ZERO \ /* Temporisation inter_animations ; une valeur nulle fait qu'il n'y a pas d'attente... */ #define NOMBRE_DE_REPETITIONS \ SEIZE \ /* Nombre implicite de repetitions de l'animation... */ #define NOMBRE_DE_TRAMES \ EXP2(HUIT) \ /* Nombre implicite de trames (ou "sous-images") contenues dans l'animation... */ #define CENTRAGE_DE_L_ANIMATION \ VRAI \ /* Faut-il centrer l'animation dans la fenetre... */ #define METTRE_UN_FOND \ FAUX \ /* Faut-il mettre un fond derriere l'animation ? */ #define METTRE_L_IMAGE_COMME_FOND \ FAUX \ /* Faut-il mettre l'animation comme fond d'elle-meme (auquel cas, on ne centre pas...) ? */ #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW # define RECUPERER_UNE_IMAGE_EN_VRAIES_COULEURS \ VRAI \ /* Faut-il recuperer une image en vraies couleurs ('VRAI)' c'est-a-dire dont les trois */ \ /* composantes ont la meme racine, ou bien trois images "independantes" ('FAUX'). La */ \ /* valeur par defaut est choisie pour assurer la compatibilite anterieure. Ceci etant */ \ /* lie evidemment a 'EST_FAUX(IXopen_____mettre_X_Window_en_mode_fausses_couleurs)' et */ \ /* a ete introduit le 20021231172052. */ # define CHANGER_LA_DIMENSION_DE_LA_FENETRE \ FAUX # define X_DIMENSION_DE_LA_FENETRE \ FU # define Y_DIMENSION_DE_LA_FENETRE \ FU /* Faut-il redimensionner la fenetre de facon, par exemple, a ce qu'elle soit plus grande */ /* que l'image ('VRAI)' ou pas ('FAUX'). Ceci a ete introduit le 20030401175939. */ # define FACTEUR_DE_RALENTISSEMENT \ TRENTE_DEUX \ /* Nombre de fois que chaque trame est repetee pour simuler un ralentissement... */ # define TRANSLATION_HORIZONTALE_INTER_TRAMES \ ZERO # define TRANSLATION_VERTICALE_INTER_TRAMES \ ZERO /* Translation horizontale ('dx') et verticale ('dy') separant deux trames consecutives */ /* de l'animation. Lorsque celles-ci ne sont pas nulles, cela permet de visualiser l'axe */ /* du temps comme une troisieme dimension spatiale. On notera un petit defaut contre lequel */ /* je ne peux rien : en general 'nombre_de_trames' est un nombre pair (4,16,64), ce qui */ /* fait qu'il n'y a pas de trame "du milieu", et qu'ainsi donc l'ensemble des trames n'est */ /* pas parfaitement centree par rapport au centre de la fenetre... Enfin, cette possibilite */ /* n'est offerte que si 'centrage_de_l_animation' est demandee... */ #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ #include xci/display.02.I" #include xci/signature.11.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A N I M A T I O N G R A P H I Q U E D ' U N E I M A G E : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE)); /* Nom de l'image a displayer. */ DEFV(CHAR,INIC(POINTERc(nom_imageF),NOM_PIPE)); /* Nom du fond a utiliser derriere l'animation. */ DEFV(CHAR,INIC(POINTERc(nom_paletteA),NOM_PIPE)); /* Nom de la palette a utiliser. */ DEFV(Logical,INIT(tenter_un_redimensionnement,TENTER_UN_REDIMENSIONNEMENT)); /* Indique s'il faut ('VRAI') ou pas ('FAUX') tenter le redimensionnement... */ DEFV(Logical,INIT(mettre_un_fond,METTRE_UN_FOND)); /* Indique s'il faut mettre ('VRAI') ou pas ('FAUX') un fond derriere l'animation. */ DEFV(Logical,INIT(mettre_l_image_comme_fond,METTRE_L_IMAGE_COMME_FOND)); /* Faut-il mettre l'animation comme fond d'elle-meme (auquel cas, on ne centre pas...) ? */ DEFV(Positive,INIT(temporisation_inter_trames,TEMPORISATION_INTER_TRAMES)); /* Temporisation inter_trames ; une valeur nulle fait qu'il n'y a pas d'attente... */ DEFV(Positive,INIT(temporisation_inter_animations,TEMPORISATION_INTER_ANIMATIONS)); /* Temporisation inter_animations ; une valeur nulle fait qu'il n'y a pas d'attente... */ DEFV(Positive,INIT(nombre_de_repetitions,NOMBRE_DE_REPETITIONS)); /* Nombre implicite de repetitions de l'animation... */ DEFV(Positive,INIT(nombre_de_trames,NOMBRE_DE_TRAMES)); /* Nombre implicite de trames (ou "sous-images") contenues dans l'animation... */ DEFV(Logical,INIT(centrage_de_l_animation,CENTRAGE_DE_L_ANIMATION)); /* Indicateur de centrage ('VRAI') ou de mise dans le coin haut-gauche de l'animation */ /* dans la fenetre. */ DEFV(deltaF_2D,dimension_de_la_fenetre); /* Dimension de la fenetre de visualisation. */ #include xci/display.03.I" #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX DEFV(pointF_2D,coin_haut_gauche); /* Position du coin haut gauche de la fenetre. */ #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW DEFV(CHAR,INIC(POINTERc(nom_imageAR),NOM_PIPE)); /* Nom de l'image ROUGE a utiliser, */ DEFV(CHAR,INIC(POINTERc(nom_imageAV),NOM_PIPE)); /* Nom de l'image VERTE a utiliser, */ DEFV(CHAR,INIC(POINTERc(nom_imageAB),NOM_PIPE)); /* Nom de l'image BLEUE a utiliser. */ DEFV(Logical,INIT(recuperer_une_image_en_vraies_couleurs,RECUPERER_UNE_IMAGE_EN_VRAIES_COULEURS)); /* Faut-il recuperer une image en vraies couleurs ('VRAI)' c'est-a-dire dont les trois */ /* composantes ont la meme racine, ou bien trois images "independantes" ('FAUX'). La */ /* valeur par defaut est choisie pour assurer la compatibilite anterieure. Ceci etant */ /* lie evidemment a 'EST_FAUX(IXopen_____mettre_X_Window_en_mode_fausses_couleurs)' et */ /* a ete introduit le 20021231172052. */ DEFV(Logical,INIT(changer_la_dimension_de_la_fenetre,CHANGER_LA_DIMENSION_DE_LA_FENETRE)); DEFV(Float,INIT(X_dimension_de_la_fenetre,X_DIMENSION_DE_LA_FENETRE)); DEFV(Float,INIT(Y_dimension_de_la_fenetre,Y_DIMENSION_DE_LA_FENETRE)); /* Faut-il redimensionner la fenetre de facon, par exemple, a ce qu'elle soit plus grande */ /* que l'image ('VRAI)' ou pas ('FAUX'). Ceci a ete introduit le 20030401175939. */ DEFV(Positive,INIT(facteur_de_ralentissement,FACTEUR_DE_RALENTISSEMENT)); /* Nombre de fois que chaque trame est repetee pour simuler un ralentissement... */ DEFV(deltaF_2D,translation_spatiale_entre_deux_trames); /* Translation horizontale ('dx') et verticale ('dy') separant deux trames consecutives */ /* de l'animation. Lorsque celles-ci ne sont pas nulles, cela permet de visualiser l'axe */ /* du temps comme une troisieme dimension spatiale. On notera un petit defaut contre lequel */ /* je ne peux rien : en general 'nombre_de_trames' est un nombre pair (4,16,64), ce qui */ /* fait qu'il n'y a pas de trame "du milieu", et qu'ainsi donc l'ensemble des trames n'est */ /* pas parfaitement centree par rapport au centre de la fenetre... Enfin, cette possibilite */ /* n'est offerte que si 'centrage_de_l_animation' est demandee... */ #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW /*..............................................................................................................................*/ #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX INITIALISATION_POINT_2D(coin_haut_gauche,_____cNORMALISE_OX5(X_COIN_HAUT_GAUCHE),_____cNORMALISE_OY5(Y_COIN_HAUT_GAUCHE)); /* Definition de la position implicite de la fenetre. */ GET_ARGUMENTSi(nombre_d_arguments ,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA); SUPPRIME_LE_20090604084535(GET_ARGUMENT_L("redimensionner=",tenter_un_redimensionnement);); /* Au sujet de la suppression du 20090604084535, 'v $xiii/files$FON 20090604090257'... */ GET_ARGUMENT_C("imageF=""F=",nom_imageF); GET_ARGUMENT_L("fond=",mettre_un_fond); GET_ARGUMENT_L("auto=",mettre_l_image_comme_fond); GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA); GET_ARGUMENT_I("repetitions=""repetition=""r=",nombre_de_repetitions); GET_ARGUMENT_I("Duree=""D=",temporisation_inter_trames); GET_ARGUMENT_I("duree=""d=",temporisation_inter_animations); GET_ARGUMENT_I("trames=""t=",nombre_de_trames); GET_ARGUMENT_L("centrage=",centrage_de_l_animation); GET_ARGUMENT_F("xc=""x=""X=",ASD1(coin_haut_gauche,x)); GET_ARGUMENT_F("yc=""y=""Y=",ASD1(coin_haut_gauche,y)); ) ); Test(PAS_D_ERREUR(CODE_ERROR(Iload_image_avec_redimensionnement_eventuel(ImageA1,nom_imageA ,tenter_un_redimensionnement ,nombre_d_arguments,arguments ) ) ) ) Bblock CHARGEMENT_DE_LA_PALETTE_DE_COULEURS; /* Chargement des trois listes de substitution constitutive d'une palette. */ INITIALISATION_ACCROISSEMENT_2D(dimension_de_la_fenetre,_____lNORMALISE_OX5(dimX5),_____lNORMALISE_OY5(dimY5)); /* Definition des dimensions de la fenetre. */ Test(IL_FAUT(mettre_l_image_comme_fond)) Bblock /* Cas ou l'image sert elle-meme de fond, on ne centre plus l'animation afin que cette */ /* derniere soit diffusee dans l'image situee en bas et a gauche... */ EGAL(mettre_un_fond,VRAI); EGAL(centrage_de_l_animation,FAUX); Eblock ATes Bblock Eblock ETes Test(IL_FAUT(mettre_un_fond)) Bblock Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageA2,COND(IL_FAUT(mettre_l_image_comme_fond),nom_imageA,nom_imageF))))) /* Un fond a ete demande, on le charge... */ Bblock Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; CALi(Inoir(ImageA2)); EGAL(mettre_un_fond,FAUX); /* En cas d'erreur, on supprime le fond, ce qui correspond a un fond 'NOIR'. */ Eblock ETes Eblock ATes Bblock CALi(Inoir(ImageA2)); /* Il n'y a pas de fond, ce qui correspond a un fond 'NOIR'. */ Eblock ETes CALS(IDopen(nom_imageA,ADRESSE(dimension_de_la_fenetre),ADRESSE(coin_haut_gauche))); CALS(IDanimation(ImageA1 ,nombre_de_trames ,temporisation_inter_trames ,temporisation_inter_animations ,nombre_de_repetitions ,centrage_de_l_animation ,mettre_un_fond,ImageA2 ) ); CALS(IDclose()); Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW 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. */ INITIALISATION_ACCROISSEMENT_2D(translation_spatiale_entre_deux_trames ,_____lNORMALISE_OX(TRANSLATION_HORIZONTALE_INTER_TRAMES) ,_____lNORMALISE_OY(TRANSLATION_VERTICALE_INTER_TRAMES) ); /* Definition de la translation spatiale entre deux trames si 'centrage_de_l_animation'... */ EGAL(X11_____signaler_les_evenements_inattendus,SIGNALER_LES_EVENEMENTS_INATTENDUS); /* Initialisation du signalisateur d'evenement inattendu... */ GET_ARGUMENTSi(nombre_d_arguments ,BLOC(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 20100109113056 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_ARGUMENT_C("imageA=""A=",nom_imageA); GET_ARGUMENT_C("Rouge=""ROUGE=""AR=",nom_imageAR); GET_ARGUMENT_C("Verte=""VERTE=""AV=",nom_imageAV); GET_ARGUMENT_C("Bleue=""BLEUE=""AB=",nom_imageAB); GET_ARGUMENT_L("RVB=",recuperer_une_image_en_vraies_couleurs); SUPPRIME_LE_20090604084535(GET_ARGUMENT_L("redimensionner=",tenter_un_redimensionnement);); /* Au sujet de la suppression du 20090604084535, 'v $xiii/files$FON 20090604090257'... */ GET_ARGUMENT_L("fc=""fausses_couleurs=",IXopen_____mettre_X_Window_en_mode_fausses_couleurs); GET_ARGUMENT_N("vraies_couleurs=""vc=",IXopen_____mettre_X_Window_en_mode_fausses_couleurs); GET_ARGUMENT_C("imageF=""F=",nom_imageF); GET_ARGUMENT_L("fond=",mettre_un_fond); GET_ARGUMENT_L("auto=",mettre_l_image_comme_fond); GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA); GET_ARGUMENT_I("nombre=""couleurs=",nombre_de_couleurs_necessaires); GET_ARGUMENT_I("repetitions=""repetition=""r=",nombre_de_repetitions); GET_ARGUMENT_I("Duree=""D=",temporisation_inter_trames); GET_ARGUMENT_I("ralentissement=""ralenti=",facteur_de_ralentissement); GET_ARGUMENT_I("duree=""d=",temporisation_inter_animations); GET_ARGUMENT_I("trames=""t=",nombre_de_trames); GET_ARGUMENT_L("centrage=",centrage_de_l_animation); GET_ARGUMENT_F("trx=",ASD1(translation_spatiale_entre_deux_trames,dx)); GET_ARGUMENT_F("try=",ASD1(translation_spatiale_entre_deux_trames,dy)); GET_ARGUMENT_L("Fdimension=""Fd=",changer_la_dimension_de_la_fenetre); GET_ARGUMENT_F("FXdimension=""FX=",X_dimension_de_la_fenetre); GET_ARGUMENT_F("FYdimension=""FY=",Y_dimension_de_la_fenetre); GET_ARGUMENT_L("centrer=""Fcentrer=""Fc=",centrer_la_fenetre); /* Parametre introduit le 20060427162434... */ GET_ARGUMENT_F("xc=""x=""X=",ASD1(coin_bas_gauche,x)); GET_ARGUMENT_F("yc=""y=""Y=",ASD1(coin_bas_gauche,y)); GET_ARGUMENT_C("substitution=""s=",nom_substitution); ) ); Test(EST_VRAI(IXopen_____mettre_X_Window_en_mode_fausses_couleurs)) /* Possibilite introduite le 20021231100222. */ Bblock RECHERCHE_D_UNE_LISTE_DE_SUBSTITUTION(nom_substitution,substitution_courante,substitution_courante); /* Tentative de recherche de la substitution demandee... */ Test(PAS_D_ERREUR(CODE_ERROR(Iload_image_avec_redimensionnement_eventuel(ImageA1,nom_imageA ,tenter_un_redimensionnement ,nombre_d_arguments,arguments ) ) ) ) Bblock CHARGEMENT_DE_LA_PALETTE_DE_COULEURS; /* Chargement des trois listes de substitution constitutive d'une palette. */ Test(IFEQ(substitution_courante,L_SUBSTITUTION_VARIABLE)) Bblock CALS(Icompactage_d_une_palette(nombre_de_couleurs_necessaires)); /* Pour la substitution 'VARIABLE', on procede a un compactage de la palette Argument. */ Eblock ATes Bblock Eblock ETes Eblock ATes Bblock Eblock ETes Eblock ATes Bblock Test(PAS_D_ERREUR(CODE_ERROR(Iload_image_avec_redimensionnement_eventuel(Image_ROUGE ,NOM_D_UNE_COMPOSANTE(nom_imageAR,c_ROUGE) ,tenter_un_redimensionnement ,nombre_d_arguments,arguments ) ) ) ) Bblock Test(PAS_D_ERREUR(CODE_ERROR(Iload_image_avec_redimensionnement_eventuel(Image_VERTE ,NOM_D_UNE_COMPOSANTE(nom_imageAV,c_VERTE) ,tenter_un_redimensionnement ,nombre_d_arguments,arguments ) ) ) ) Bblock Test(PAS_D_ERREUR(CODE_ERROR(Iload_image_avec_redimensionnement_eventuel(Image_BLEUE ,NOM_D_UNE_COMPOSANTE(nom_imageAB,c_BLEUE) ,tenter_un_redimensionnement ,nombre_d_arguments,arguments ) ) ) ) Bblock CALS(Iluminance(ImageA1,Image_ROUGE,Image_VERTE,Image_BLEUE)); /* Au cas ou il serait ensuite impossible de visualiser en vraies couleurs (c'est le cas */ /* si le serveur -par exemple celui de '$LACT14'- ne connait pas 'TrueColor'...). Ainsi */ /* l'image visualisee en 'PseudoColor' sera representative de l'image 'TrueColor'... */ Eblock ATes Bblock Eblock ETes Eblock ATes Bblock Eblock ETes Eblock ATes Bblock Eblock ETes Eblock ETes Test(PAS_D_ERREUR(CODE_ERREUR)) Bblock Test(IL_FAUT(changer_la_dimension_de_la_fenetre)) /* Ce test a ete introduit le 20030401175939. */ Bblock INITIALISATION_ACCROISSEMENT_2D(dimension_de_la_fenetre ,X_dimension_de_la_fenetre ,Y_dimension_de_la_fenetre ); /* Definition des dimensions arbitraire pour la fenetre. */ Eblock ATes Bblock INITIALISATION_ACCROISSEMENT_2D(dimension_de_la_fenetre ,_____lNORMALISE_OX11(dimX11) ,_____lNORMALISE_OY11(dimY11) ); /* Definition des dimensions de la fenetre tel qu'une image y tienne juste... */ Eblock ETes Test(IL_FAUT(mettre_l_image_comme_fond)) Bblock /* Cas ou l'image sert elle-meme de fond, on ne centre plus l'animation afin que cette */ /* derniere soit diffusee dans l'image situee en bas et a gauche... */ Test(EST_VRAI(IXopen_____mettre_X_Window_en_mode_fausses_couleurs)) Bblock EGAL(mettre_un_fond,VRAI); EGAL(centrage_de_l_animation,FAUX); Eblock ATes Bblock PRINT_ATTENTION("en mode VRAIES COULEURS, l'image ne peut etre utilisee comme fond qui est en FAUSSES COULEURS"); EGAL(mettre_un_fond,FAUX); Eblock ETes Eblock ATes Bblock Eblock ETes Test(IL_FAUT(mettre_un_fond)) Bblock Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageA2,COND(IL_FAUT(mettre_l_image_comme_fond),nom_imageA,nom_imageF))))) /* Un fond a ete demande, on le charge... */ Bblock Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; CALi(Inoir(ImageA2)); EGAL(mettre_un_fond,FAUX); /* En cas d'erreur, on supprime le fond, ce qui correspond a un fond 'NOIR'. */ Eblock ETes Eblock ATes Bblock CALi(Inoir(ImageA2)); /* Il n'y a pas de fond, ce qui correspond a un fond 'NOIR'. */ Eblock ETes Test(IFNE(substitution_courante,L_SUBSTITUTION_NEUTRE)) Bblock SUBSTITUTION(substitution_courante); /* Positionnement de la substitution courante quelqu'elle soit (mais non 'NEUTRE'...). */ SET_FILTRAGE(ACTIF); /* Et on active le filtrage... */ Eblock ATes Bblock Eblock ETes CALS(IXinitialisation()); /* Initialisation fondamentale introduite le 20160815121949... */ CALS(IXopen(serveur_standard ,nom_imageA ,ADRESSE(dimension_de_la_fenetre) ,centrer_la_fenetre ,ADRESSE(coin_bas_gauche) ,editer_les_PRINT_ATTENTION_initiaux ) ); CALS(IXanimation(ImageA1 ,Image_ROUGE ,Image_VERTE ,Image_BLEUE ,nombre_de_trames ,temporisation_inter_trames ,facteur_de_ralentissement ,temporisation_inter_animations ,nombre_de_repetitions ,centrage_de_l_animation ,ADRESSE(translation_spatiale_entre_deux_trames) ,mettre_un_fond,ImageA2 ) ); /* Le triplet {Image_ROUGE,Image_VERTE,Image_BLEUE} a ete introduit le 20030101113051. */ CALS(IXclose()); Test(IFNE(substitution_courante,L_SUBSTITUTION_NEUTRE)) Bblock SET_FILTRAGE(INACTIF); SUBSTITUTION(L_SUBSTITUTION_NEUTRE); Eblock ATes Bblock Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS GET_ARGUMENTSi(nombre_d_arguments ,BLOC(VIDE; ) ); /* Introduit le 20070301174416... */ PRINT_ATTENTION("les fonctions graphiques ne sont pas implementees"); #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_ROS RETU_Commande; Eblock ECommande