/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A F F I C H A G E   G R A P H I Q U E   D ' U N E   I M A G E  :                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Cette commande affiche le mieux                                                                                */
/*                  qu'elle peut l'image argument.                                                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/display$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 20110502094821...             */
#include  image_image_ALPHABET_3_EXT
#include  image_image_ALPHABET_4_EXT
                                        /* Introduit le 20161116111233...                                                            */
#include  image_image_ALPHABET_5_EXT
                                        /* Introduit le 20230516182630...                                                            */
#include  image_image_ALPHABET_6_EXT
                                        /* Introduit le 20240419175819...                                                            */
#include  image_image_ALPHABETS_EXT

#ifdef    __VERSION__COMPILER_LE_GRAPHIQUE_ROS
#    include   image_drive_ridge_FONCTION_EXT
#Aifdef   __VERSION__COMPILER_LE_GRAPHIQUE_ROS
#Eifdef   __VERSION__COMPILER_LE_GRAPHIQUE_ROS

#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 20021230112030, 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   SIGNER                                                                                                                        \
                    FAUX                                                                                                                \
                                        /* Indique s'il faut signer ('VRAI') ou pas ('FAUX') l'image...                              */
#define   NIVEAU_FOND                                                                                                                   \
                    NOIR
#define   NIVEAU_SIGNATURE                                                                                                              \
                    BLANC
#define   TAILLE_DES_CARACTERES_DES_MESSAGES                                                                                            \
                    INTER_POINT
                                        /* Caracteristiques de la signature...                                                       */

#ifdef    __VERSION__COMPILER_LE_GRAPHIQUE_ROS
#    define    SEUIL_NOIR_BLANC                                                                                                         \
                         GRIS                                                                                                           \
                                        /* Seuil de discrimination entre le 'NOIR' et le 'BLANC'.                                    */
#Aifdef   __VERSION__COMPILER_LE_GRAPHIQUE_ROS
#Eifdef   __VERSION__COMPILER_LE_GRAPHIQUE_ROS

#ifdef    __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
#    define    ANIMATION_DES_COULEURS                                                                                                   \
                         FAUX                                                                                                           \
                                        /* A priori, on laissera telle qu'elle la palette de couleurs...                             */
#    define    INCREMENT_DE_L_INCREMENT_DES_NIVEAUX                                                                                     \
                         I                                                                                                              \
                                        /* Lorsque la palette doit "tourner", on trouve ici l'increment des couleurs...              */

#    define    DUREE_D_ATTENTE                                                                                                          \
                         QUAD(SEIZE)                                                                                                    \
                                        /* Attente implicite avant d'effacer l'image...                                              */
#Aifdef   __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
#Eifdef   __VERSION__COMPILER_LE_GRAPHIQUE_SPIX

#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 20021231100222.                                                        */

#    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 20030401153145 afin de      */
                                        /* permettre la sortie video "plein ecran" d'images sur '$LACT15'. On notera au passage      */
                                        /* qu'en resolution 800x600, pour une image 'Pal', les parametres :                          */
                                        /*                                                                                           */
                                        /*                  Fcentrer=FAUX x=0.030 y=0.788                                            */
                                        /*                  Fdimension=FAUX                                                          */
                                        /*                                                                                           */
                                        /* permettent de centrer la fenetre et l'image (ayant alors la meme dimension) dans la       */
                                        /* fenetre console de '$LACT15'. Quant aux parametres :                                      */
                                        /*                                                                                           */
                                        /*                  Fcentrer=FAUX x=0.015 y=0.770                                            */
                                        /*                  Fdimension=VRAI FXdimension=1.03 FYdimension=1.05                        */
                                        /*                                                                                           */
                                        /* ils permettent de centrer l'image dans du NOIR (la fenetre etant alors plus grande que    */
                                        /* la resolution 800x600, toujours pour une image 'Pal'...                                   */
                                        /*                                                                                           */
                                        /* ATTENTION, j'ai note le 20030404110740 que la position de la fenetre 800x600 extraite     */
                                        /* du plan 1400x1050 dependait de la position de la souris. Les valeurs precedentes ont      */
                                        /* ete obtenues en placant la souris en haut et a gauche du plan 1400x1050...                */

#    ifdef     ALLOCATION_DES_COULEURS_VERSION_02
#         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    EDITER_L_INCREMENT_DES_NIVEAUX                                                                                      \
                              FAUX                                                                                                      \
                                        /* Indique si l'increment courant des niveaux doit etre edite ('VRAI') ou pas ('FAUX').      */
#         define    NOMBRE_DE_CHANGEMENTS_DE_COULEURS                                                                                   \
                              ZERO                                                                                                      \
                                        /* Nombre de "rotations" de la palette de couleurs (eventuellement) ; celui-ci est infini    */ \
                                        /* si la valeur donnee est nulle (etat initial)...                                           */
#         define    TEMPORISATION_INTER_PALETTES                                                                                        \
                              ZERO                                                                                                      \
                                        /* Temporisation inter palettes ; une valeur nulle fait qu'il n'y a pas d'attente, et une    */ \
                                        /* valeur negative provoque une attente asynchrone via la souris...                          */
#    Aifdef    ALLOCATION_DES_COULEURS_VERSION_02
#    Eifdef    ALLOCATION_DES_COULEURS_VERSION_02

#    define    DUREE_D_ATTENTE                                                                                                          \
                         ZERO                                                                                                           \
                                        /* Attente implicite avant d'effacer l'image : une valeur nulle correspond a un arret        */ \
                                        /* interactif de l'affichage par appui sur l'une quelconque des trois touches de la          */ \
                                        /* souris, lorsque celle-ci est dans la fenetre de display...                                */
#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"

#ifdef    __VERSION__COMPILER_LE_GRAPHIQUE_ROS
#Aifdef   __VERSION__COMPILER_LE_GRAPHIQUE_ROS

#    ifdef     __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
#         define    gGESTION_DE_L_INCREMENT_DES_NIVEAUX(sequence)                                                                       \
                              Bblock                                                                                                    \
                              INCR(increment_des_niveaux,increment_de_l_increment_des_niveaux);                                         \
                                        /* Incrementation de l'increment courant des couleurs...                                     */ \
                                                                                                                                        \
                              BLOC(sequence);                                                                                           \
                                        /* Renvoi de la palette translatee circulairement,                                           */ \
                                                                                                                                        \
                              Test(IL_FAUT(editer_l_increment_des_niveaux))                                                             \
                                   Bblock                                                                                               \
                                   CAL3(Prme1("%+d\n",increment_des_niveaux));                                                          \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                                                                                                                                        \
                              Test(IZLT(temporisation_inter_palettes))                                                                  \
                                   Bblock                                                                                               \
                                   CALS(IXattente_de_l_evenement_ButtonPress());                                                        \
                                        /* Et on attend de nouveau un petit peu, jusqu'a ce que l'on appuie sur l'un des trois       */ \
                                        /* boutons de la souris...                                                                   */ \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   DODO(temporisation_inter_palettes);                                                                  \
                                        /* Et on attend de nouveau un petit peu, pour un temps pre-determine...                      */ \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                                        /* Gestion de l'increment des niveaux et attente...                                          */

#         ifdef     ALLOCATION_DES_COULEURS_VERSION_02
#              define    GESTION_DE_L_INCREMENT_DES_NIVEAUX                                                                             \
                                   Bblock                                                                                               \
                                   gGESTION_DE_L_INCREMENT_DES_NIVEAUX(BLOC(CALS(IXpalette(increment_des_niveaux                        \
                                                                                          ,translater_le_NOIR                           \
                                                                                           )                                            \
                                                                                 );                                                     \
                                                                            )                                                           \
                                                                       );                                                               \
                                   Eblock                                                                                               \
                                        /* Gestion de l'increment des niveaux et attente...                                          */
#         Aifdef    ALLOCATION_DES_COULEURS_VERSION_02
#         Eifdef    ALLOCATION_DES_COULEURS_VERSION_02

#         if   (         (defined(BUG_SYSTEME_SG_X_WINDOW_BACKINGSTORE_1))                                                              \
                )
#              define    ATTENTE_DE_LA_FIN_DE_VISUALISATION                                                                             \
                                   Bblock                                                                                               \
                                   Test(IZLE(duree_d_attente))                                                                          \
                                        Bblock                                                                                          \
                                                                                                                                        \
                                        /* ATTENTION, pendant un temps j'ai essaye la sequence suivante ci-apres :                   */ \
                                        /*                                                                                           */ \
                                        /*                  DEFV(processus,Pre_affichage);                                        \  */ \
                                        /*                                      /* descripteur du processus destine au               */ \
                                        /*                                      /* re-affichage de l'image...                        */ \
                                        /*                  PARALLELE(BLOC(Loop                                                   \  */ \
                                        /*                                      Bblock                                            \  */ \
                                        /*                                      CALS(IXattente_de_l_evenement_Expose());          \  */ \
                                        /*                                      CALS(IXdisplay(ImageG));                          \  */ \
                                        /*                                      /* apres chaque remise au premier plan de            */ \
                                        /*                                      /* l'image courante, elle est raffichee...           */ \
                                        /*                                      Eblock                                            \  */ \
                                        /*                                 ELoo                                                   \  */ \
                                        /*                                 )                                                      \  */ \
                                        /*                           ,Pre_affichage                                               \  */ \
                                        /*                            );                                                          \  */ \
                                        /*                                      /* envoi en parallele d'un processus destine         */ \
                                        /*                                      /* a re-afficher l'image lorsqu'elle est             */ \
                                        /*                                      /* remise au premier plan...                         */ \
                                        /*                                                                                           */ \
                                        /* Mais malheureusement, d'une part cela ne marche pas systematiquement, et d'autre part,    */ \
                                        /* lors de l'arret normal du '$xci/display$X' "pere", le "fils", lui, reste actif...         */ \
                                                                                                                                        \
                                        CALS(IXattente_de_l_evenement_ButtonPress());                                                   \
                                        /* Et on attend de nouveau un petit peu, jusqu'a ce que l'on appuie sur l'un des trois       */ \
                                        /* boutons de la souris...                                                                   */ \
                                        Eblock                                                                                          \
                                   ATes                                                                                                 \
                                        Bblock                                                                                          \
                                        DODO(duree_d_attente);                                                                          \
                                        /* Et on attend de nouveau un petit peu, pour un temps pre-determine...                      */ \
                                        Eblock                                                                                          \
                                   ETes                                                                                                 \
                                   Eblock                                                                                               \
                                        /* Attente de la fin de visualisation...                                                     */
#         Aif  (         (defined(BUG_SYSTEME_SG_X_WINDOW_BACKINGSTORE_1))                                                              \
                )
#              define    ATTENTE_DE_LA_FIN_DE_VISUALISATION                                                                             \
                                   Bblock                                                                                               \
                                   Test(IZLE(duree_d_attente))                                                                          \
                                        Bblock                                                                                          \
                                        CALS(IXattente_de_l_evenement_ButtonPress());                                                   \
                                        /* Et on attend de nouveau un petit peu, jusqu'a ce que l'on appuie sur l'un des trois       */ \
                                        /* boutons de la souris...                                                                   */ \
                                        Eblock                                                                                          \
                                   ATes                                                                                                 \
                                        Bblock                                                                                          \
                                        DODO(duree_d_attente);                                                                          \
                                        /* Et on attend de nouveau un petit peu, pour un temps pre-determine...                      */ \
                                        Eblock                                                                                          \
                                   ETes                                                                                                 \
                                   Eblock                                                                                               \
                                        /* Attente de la fin de visualisation...                                                     */
#         Eif  (         (defined(BUG_SYSTEME_SG_X_WINDOW_BACKINGSTORE_1))                                                              \
                )

#    Aifdef    __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
#    Eifdef    __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW

#Eifdef   __VERSION__COMPILER_LE_GRAPHIQUE_ROS

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I S P L A Y   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(Logical,INIT(signer,SIGNER));
                                        /* Indique s'il faut signer ('VRAI') ou pas ('FAUX') l'image...                              */
     DEFV(genere_p,INIT(niveau_fond,NIVEAU_FOND));
     DEFV(genere_p,INIT(niveau_signature,NIVEAU_SIGNATURE));
     DEFV(Positive,INIT(taille_des_caracteres_des_messages,TAILLE_DES_CARACTERES_DES_MESSAGES));
                                        /* Caracteristiques de la signature...                                                       */

#ifdef    __VERSION__COMPILER_LE_GRAPHIQUE_ROS
     DEFV(genere_p,INIT(seuil_de_display,SEUIL_NOIR_BLANC));
                                        /* Seuil de selection du trace initialise sur sa valeur par defaut.                          */
#Aifdef   __VERSION__COMPILER_LE_GRAPHIQUE_ROS
     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(Int,INIT(duree_d_attente,DUREE_D_ATTENTE));
                                        /* Duree d'attente apres l'affichage d'une image et avant son effacement : une valeur        */
                                        /* nulle correspond a un arret interactif de l'affichage par appui sur l'une quelconque      */
                                        /* des trois touches de la souris, lorsque celle-ci est dans la fenetre de display...        */
                                        /* Afin d'etre presque homogene avec '$xci/sequence$K', l'attente sur la souris pourra       */
                                        /* etre demandee avec une valeur negative ; c'est la raison pour laquelle 'duree_d_attente'  */
                                        /* est de type 'Int' et non pas 'Positive'...                                                */
     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(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(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(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 20021231100222.                                                        */
     DEFV(CHAR,INIC(POINTERc(nom_substitution_ROUGE),"L_SUBSTITUTION_ROUGE"));
     DEFV(CHAR,INIC(POINTERc(nom_substitution_VERTE),"L_SUBSTITUTION_VERTE"));
     DEFV(CHAR,INIC(POINTERc(nom_substitution_BLEUE),"L_SUBSTITUTION_BLEUE"));
                                        /* Definition des permutations de couleurs.                                                  */

     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 20030401153145 afin de      */
                                        /* permettre la sortie video "plein ecran" d'images sur '$LACT15'. On notera au passage      */
                                        /* qu'en resolution 800x600, pour une image 'Pal', les parametres :                          */
                                        /*                                                                                           */
                                        /*                  Fcentrer=FAUX x=0.015 y=0.795                                            */
                                        /*                  Fdimension=FAUX                                                          */
                                        /*                                                                                           */
                                        /* permettent de centrer la fenetre et l'image (ayant alors la meme dimension) dans la       */
                                        /* fenetre console de '$LACT15'. Quant aux parametres :                                      */
                                        /*                                                                                           */
                                        /*                  Fcentrer=FAUX x=0.005 y=0.780                                            */
                                        /*                  Fdimension=VRAI FXdimension=1.03 FYdimension=1.03                        */
                                        /*                                                                                           */
                                        /* ils permettent de centrer l'image dans du NOIR (la fenetre etant alors plus grande que    */
                                        /* la resolution 800x600, toujours pour une image 'Pal'...                                   */

#         ifdef     ALLOCATION_DES_COULEURS_VERSION_02
     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(Logical,INIT(editer_l_increment_des_niveaux,EDITER_L_INCREMENT_DES_NIVEAUX));
                                        /* Indique si l'increment courant des niveaux doit etre edite ('VRAI') ou pas ('FAUX').      */
     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 (etat initial)...                                           */
     DEFV(Int,INIT(temporisation_inter_palettes,TEMPORISATION_INTER_PALETTES));
                                        /* Temporisation inter palettes ; une valeur nulle fait qu'il n'y a pas d'attente, et une    */
                                        /* valeur negative provoque une attente asynchrone via la souris (d'ou le 'Int' et non       */
                                        /* point un 'Positive'...).                                                                  */
#         Aifdef    ALLOCATION_DES_COULEURS_VERSION_02
#         Eifdef    ALLOCATION_DES_COULEURS_VERSION_02

#    Aifdef    __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
#    Eifdef    __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW

#Eifdef   __VERSION__COMPILER_LE_GRAPHIQUE_ROS

     /*..............................................................................................................................*/

#ifdef    __VERSION__COMPILER_LE_GRAPHIQUE_ROS
     GET_ARGUMENTSg(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         SUPPRIME_LE_20090604084542(GET_ARGUMENT_L("redimensionner=",tenter_un_redimensionnement););
                                        /* Au sujet de la suppression du 20090604084542, 'v $xiii/files$FON 20090604090257'...       */
                         GET_ARGUMENT_P("seuil=""sd=",seuil_de_display);
                                        /* Le 20050623150439, "s=" a ete remplace par "sd=" (double definition...).                  */
                         GET_ARGUMENT_L("signer=",signer);
                         GET_ARGUMENT_P("fond=""f=",niveau_fond);
                         GET_ARGUMENT_P("signature=""ns=",niveau_signature);
                                        /* Le 20050623150439, "s=" a ete remplace par "ns=" (double definition...).                  */
                         GET_ARGUMENT_I("taille=""T=",taille_des_caracteres_des_messages);
                         GET_ARGUMENT_I("bibliotheque=",vecteurs_____num_bibliotheque);
                         )
                    );
#Aifdef   __VERSION__COMPILER_LE_GRAPHIQUE_ROS
#Eifdef   __VERSION__COMPILER_LE_GRAPHIQUE_ROS

#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_ARGUMENTSg(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         SUPPRIME_LE_20090604084542(GET_ARGUMENT_L("redimensionner=",tenter_un_redimensionnement););
                                        /* Au sujet de la suppression du 20090604084542, 'v $xiii/files$FON 20090604090257'...       */
                         GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA);
                         GET_ARGUMENT_L("animation=",animation_des_couleurs);
                         GET_ARGUMENT_I("increment=""i=",increment_de_l_increment_des_niveaux);
                         GET_ARGUMENT_L("signer=",signer);
                         GET_ARGUMENT_P("fond=""f=",niveau_fond);
                         GET_ARGUMENT_P("signature=""ns=",niveau_signature);
                                        /* Le 20050623150439, "s=" a ete remplace par "ns=" (double definition...).                  */
                         GET_ARGUMENT_I("taille=""T=",taille_des_caracteres_des_messages);
                         GET_ARGUMENT_I("bibliotheque=",vecteurs_____num_bibliotheque);
                         GET_ARGUMENT_I("duree=""d=",duree_d_attente);
                         GET_ARGUMENT_F("xc=""x=""X=",ASD1(coin_haut_gauche,x));
                         GET_ARGUMENT_F("yc=""y=""Y=",ASD1(coin_haut_gauche,y));
                         )
                    );
#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.                                        */
     EGAL(X11_____signaler_les_evenements_inattendus,SIGNALER_LES_EVENEMENTS_INATTENDUS);
                                        /* Initialisation du signalisateur d'evenement inattendu...                                  */

#    define    COMPATIBILITE_20240331                                                                                                   \
                         "VALIDATION_PRELIMINAIRE_DES_DIMENSIONS_D_UNE_FENETRE_____compatibilite_20240331=""compatibilite_20240331="    \
                                        /* Afin de raccourcir des lignes a venir (introduit le 20240331074843)...                    */

#    ifdef     ALLOCATION_DES_COULEURS_VERSION_01
     GET_ARGUMENTSg(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_L("CENTRAGE_EVENTUEL_DE_LA_FENETRE_____compatibilite_20121121=""compatibilite_20121121="
                                       ,CENTRAGE_EVENTUEL_DE_LA_FENETRE_____compatibilite_20121121
                                        );
                                        /* Introduit le 20121121100254.                                                              */
                         GET_ARGUMENT_L(COMPATIBILITE_20240331
                                       ,VALIDATION_PRELIMINAIRE_DES_DIMENSIONS_D_UNE_FENETRE_____compatibilite_20240331
                                        );
                                        /* Introduit le 20240331074843.                                                              */

                         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 20100109113150 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_L("editer_XY_curseur=""editer_curseur=""XY_curseur=""XY="
                                       ,X11_____KeyPress_____editer_XY_curseur
                                        );
                                        /* Je rappelle le 20221203095609 que :                                                       */
                                        /*                                                                                           */
                                        /*                  editer_XY_curseur=VRAI                                                   */
                                        /*                                                                                           */
                                        /* edite les coordonnees {X,Y} du point de l'image affichee qui est pointe par la souris     */
                                        /* set ce a chaque pression de la touche <SHIFT> du clavier...                               */
                         GET_ARGUMENT_L("message_editer_XY_curseur=""message_editer_curseur=""message_XY_curseur=""mXY="
                                       ,X11_____KeyPress_____editer_XY_curseur_message_fenetre_incompatible
                                        );
                                        /* Argument introduit le 20091212213350...                                                   */
                         GET_ARGUMENT_L("normaliser_XY_curseur=""NXY=",X11_____KeyPress_____norm_XY_curseur);
                         GET_ARGUMENT_L("origine_extremite_XY_curseur=""OEXY="
                                       ,X11_____KeyPress_____norm_XY_avec_origine_et_extremite_curseur
                                        );
                         GET_ARGUMENT_N("longueur_XY_curseur=""LXY="
                                       ,X11_____KeyPress_____norm_XY_avec_origine_et_extremite_curseur
                                        );
                         GET_ARGUMENT_F("OX_curseur=""OX=""xbg=""xbgD=""xbgA=",X11_____KeyPress_____OX_curseur);
                         GET_ARGUMENT_F("EX_curseur=""EX=""xhd=""xhdD=""xhdA=",X11_____KeyPress_____EX_curseur);
                         GET_ARGUMENT_F("LX_curseur=""LX=",X11_____KeyPress_____LX_curseur);
                         GET_ARGUMENT_F("DX_curseur=""DX=",X11_____KeyPress_____DX_curseur);
                         GET_ARGUMENT_F("OY_curseur=""OY=""ybg=""ybgD=""ybgA=",X11_____KeyPress_____OY_curseur);
                         GET_ARGUMENT_F("EY_curseur=""EY=""yhd=""yhdD=""yhdA=",X11_____KeyPress_____EY_curseur);
                         GET_ARGUMENT_F("LY_curseur=""LY=",X11_____KeyPress_____LY_curseur);
                         GET_ARGUMENT_F("DY_curseur=""DY=",X11_____KeyPress_____DY_curseur);
                                        /* Les arguments relatifs a {"EX=","EY="} ont ete introduits le 20091123094324, puis         */
                                        /* completes le 20091231102858...                                                            */
                                        /*                                                                                           */
                                        /* Il sera alors fortement conseille d'utiliser les arguments :                              */
                                        /*                                                                                           */
                                        /*                  ModeFlot='f'                                                             */
                                        /*                  ChiffresFlot=...                                                         */
                                        /*                                                                                           */
                                        /* afin de reduire la precision (16 par defaut...) et de garantir le nombre de decimales,    */
                                        /* associes aux arguments :                                                                  */
                                        /*                                                                                           */
                                        /*                  editer_XY_curseur=VRAI                                                   */
                                        /*                  normaliser_XY_curseur=VRAI                                               */
                                        /*                  DX_curseur=... DY_curseur=...                                            */
                                        /*                  OX=... OY=... EX=... EY=...                                              */
                                        /*                                                                                           */
                                        /* ce qui permet de definir une fenetre centree sur {{OX,OY},{EX,EY}} et de dimension        */
                                        /* (2.DX)x(2.DY).                                                                            */
                                        /*                                                                                           */
                                        /* Ces arguments s'utiliseront conjointement avec les arguments suivants de                  */
                                        /* 'v $xrc/mandel.41$K' :                                                                    */
                                        /*                                                                                           */
                                        /*                  OX=... OY=... EX=... EY=...                                              */
                                        /*                  fenetres_depart_arrivee_identiques=VRAI                                  */
                                        /*                  editer_fenetre_courante=VRAI                                             */
                                        /*                                                                                           */
                                        /* par exemple ('v $ximcf/iterations$FON editer_la_fenetre_courante'), ce qui editera :      */
                                        /*                                                                                           */
                                        /*                  OX=... OY=... EX=... EY=...                                              */
                                        /*                                                                                           */
                                        /* correspondants a la fenetre reellement utilisee (et ce quelles que soient ses             */
                                        /* proportions...), ce qui permettra de les reinjecter proprement dans 'v $xci/display$K...  */

                         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_20090604084542(GET_ARGUMENT_L("redimensionner=",tenter_un_redimensionnement););
                                        /* Au sujet de la suppression du 20090604084542, '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("paletteA=""palette=""pA=""p=",nom_paletteA);
                         GET_ARGUMENT_I("nombre=""couleurs=",nombre_de_couleurs_necessaires);
                         GET_ARGUMENT_L("signer=",signer);
                         GET_ARGUMENT_P("fond=""f=",niveau_fond);
                         GET_ARGUMENT_P("signature=""ns=",niveau_signature);
                                        /* Le 20050623150439, "s=" a ete remplace par "ns=" (double definition...).                  */
                         GET_ARGUMENT_I("taille=""T=",taille_des_caracteres_des_messages);
                         GET_ARGUMENT_I("bibliotheque=",vecteurs_____num_bibliotheque);

                         GET_ARGUMENT_I("duree=""d=",duree_d_attente);

                         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 20060427162526...                                                  */
                         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);
                         GET_ARGUMENT_C("sR=",nom_substitution_ROUGE);
                         GET_ARGUMENT_C("sV=",nom_substitution_VERTE);
                         GET_ARGUMENT_C("sB=",nom_substitution_BLEUE);
                         )
                    );
#    Aifdef    ALLOCATION_DES_COULEURS_VERSION_01
#    Eifdef    ALLOCATION_DES_COULEURS_VERSION_01

#    ifdef     ALLOCATION_DES_COULEURS_VERSION_02
     GET_ARGUMENTSg(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_L("CENTRAGE_EVENTUEL_DE_LA_FENETRE_____compatibilite_20121121=""compatibilite_20121121="
                                       ,CENTRAGE_EVENTUEL_DE_LA_FENETRE_____compatibilite_20121121
                                        );
                                        /* Introduit le 20121121100254.                                                              */
                         GET_ARGUMENT_L(COMPATIBILITE_20240331
                                       ,VALIDATION_PRELIMINAIRE_DES_DIMENSIONS_D_UNE_FENETRE_____compatibilite_20240331
                                        );
                                        /* Introduit le 20240331074843.                                                              */

                         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 20100109113150 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_L("editer_XY_curseur=""editer_curseur=""XY_curseur=""XY="
                                       ,X11_____KeyPress_____editer_XY_curseur
                                        );
                         GET_ARGUMENT_L("message_editer_XY_curseur=""message_editer_curseur=""message_XY_curseur=""mXY="
                                       ,X11_____KeyPress_____editer_XY_curseur_message_fenetre_incompatible
                                        );
                                        /* Argument introduit le 20091212213350...                                                   */
                         GET_ARGUMENT_L("normaliser_XY_curseur=""NXY=",X11_____KeyPress_____norm_XY_curseur);
                         GET_ARGUMENT_L("origine_extremite_XY_curseur=""OEXY="
                                       ,X11_____KeyPress_____norm_XY_avec_origine_et_extremite_curseur
                                        );
                         GET_ARGUMENT_N("longueur_XY_curseur=""LXY="
                                       ,X11_____KeyPress_____norm_XY_avec_origine_et_extremite_curseur
                                        );
                         GET_ARGUMENT_F("OX_curseur=""OX=""xbg=""xbgD=""xbgA=",X11_____KeyPress_____OX_curseur);
                         GET_ARGUMENT_F("EX_curseur=""EX=""xhd=""xhdD=""xhdA=",X11_____KeyPress_____EX_curseur);
                         GET_ARGUMENT_F("LX_curseur=""LX=",X11_____KeyPress_____LX_curseur);
                         GET_ARGUMENT_F("DX_curseur=""DX=",X11_____KeyPress_____DX_curseur);
                         GET_ARGUMENT_F("OY_curseur=""OY=""ybg=""ybgD=""ybgA=",X11_____KeyPress_____OY_curseur);
                         GET_ARGUMENT_F("EY_curseur=""EY=""yhd=""yhdD=""yhdA=",X11_____KeyPress_____EY_curseur);
                         GET_ARGUMENT_F("LY_curseur=""LY=",X11_____KeyPress_____LY_curseur);
                         GET_ARGUMENT_F("DY_curseur=""DY=",X11_____KeyPress_____DY_curseur);
                                        /* Les arguments relatifs a {"EX=","EY="} ont ete introduits le 20091123094324, puis         */
                                        /* completes le 20091231102858...                                                            */
                                        /*                                                                                           */
                                        /* Il sera alors fortement conseille d'utiliser les options :                                */
                                        /*                                                                                           */
                                        /*                  ModeFlot='f'                                                             */
                                        /*                  ChiffresFlot=...                                                         */
                                        /*                                                                                           */
                                        /* afin de reduire la precision (16 par defaut...) et de garantir le nombre de decimales.    */
                                        /*                                                                                           */
                                        /* Ces arguments s'utiliseront conjointement avec les arguments :                            */
                                        /*                                                                                           */
                                        /*                  editer_fenetre_courante=VRAI                                             */
                                        /*                                                                                           */
                                        /* de '$xrc/mandel.41$X' par exemple ('v $ximcf/iterations$FON editer_la_fenetre_courante'). */
                                        /*                                                                                           */
                                        /* L'usage le plus frequent sera donc avec les options :                                     */
                                        /*                                                                                           */
                                        /*                  editer_XY_curseur=VRAI                                                   */
                                        /*                  normaliser_XY_curseur=VRAI                                               */
                                        /*                  DX_curseur=... DY_curseur=...                                            */
                                        /*                  xbg=... ybg=... xhd=... yhd=...                                          */
                                        /*                                                                                           */
                                        /* ce qui permet de definir une fenetre centree sur {{xbg,ybg},{xhd,yhd}} et de dimension    */
                                        /* (2.DX)x(2.DY).                                                                            */
                         GET_ARGUMENT_L("revisualiser=",IXdisplay_____on_peut_revisualiser_l_imageA_courante);

                         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_20090604084542(GET_ARGUMENT_L("redimensionner=",tenter_un_redimensionnement););
                                        /* Au sujet de la suppression du 20090604084542, '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("paletteA=""palette=""pA=""p=",nom_paletteA);
                         GET_ARGUMENT_I("nombre=""couleurs=",nombre_de_couleurs_necessaires);
                         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_L("editer=",editer_l_increment_des_niveaux);
                         GET_ARGUMENT_I("n=""changements=""Cnombre=",nombre_de_changements_de_couleurs);
                         GET_ARGUMENT_L("signer=",signer);
                         GET_ARGUMENT_P("fond=""f=",niveau_fond);
                         GET_ARGUMENT_P("signature=""ns=",niveau_signature);
                                        /* Le 20050623150439, "s=" a ete remplace par "ns=" (double definition...).                  */
                         GET_ARGUMENT_I("taille=""T=",taille_des_caracteres_des_messages);
                         GET_ARGUMENT_I("bibliotheque=",vecteurs_____num_bibliotheque);

                         GET_ARGUMENT_I("duree=""d=",duree_d_attente);
                         GET_ARGUMENT_I("Duree=""D=",temporisation_inter_palettes);

                         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 20060427162526...                                                  */
                         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);
                         GET_ARGUMENT_C("sR=",nom_substitution_ROUGE);
                         GET_ARGUMENT_C("sV=",nom_substitution_VERTE);
                         GET_ARGUMENT_C("sB=",nom_substitution_BLEUE);

                         GET_ARGUMENT_L("forcer_niveau=""fn=",Iload_palette_de_couleurs_____forcer_un_niveau);
                         GET_ARGUMENT_P("niveau_force=""nf=",Iload_palette_de_couleurs_____niveau_a_forcer);
                         GET_ARGUMENT_P("niveau_ROUGE_force=""nRf=",Iload_palette_de_couleurs_____composante_ROUGE_du_niveau_a_forcer);
                         GET_ARGUMENT_P("niveau_VERTE_force=""nVf=",Iload_palette_de_couleurs_____composante_VERTE_du_niveau_a_forcer);
                         GET_ARGUMENT_P("niveau_BLEUE_force=""nBf=",Iload_palette_de_couleurs_____composante_BLEUE_du_niveau_a_forcer);
                                        /* Parametres introduits le 20231128131827...                                                */
                         )
                    );
#    Aifdef    ALLOCATION_DES_COULEURS_VERSION_02
#    Eifdef    ALLOCATION_DES_COULEURS_VERSION_02

#    undef     COMPATIBILITE_20240331

#Aifdef   __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
#Eifdef   __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW

#ifdef    __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
     Test(EST_VRAI(IXopen_____mettre_X_Window_en_mode_fausses_couleurs))
                                        /* Possibilite introduite le 20021231100222.                                                 */
          Bblock
          Test(PAS_D_ERREUR(CODE_ERROR(Iload_image_avec_redimensionnement_eventuel(ImageG,nom_imageA
                                                                                  ,tenter_un_redimensionnement
                                                                                  ,nombre_d_arguments,arguments
                                                                                   )
                                       )
                            )
               )
               Bblock
               Test(IL_FAUT(signer))
                    Bblock
                    CALS(Isignature(niveau_fond,niveau_signature,taille_des_caracteres_des_messages));
                                        /* Signature eventuelle de l'image...                                                        */
                    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(ImageG,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'...         */

                         Test(IL_FAUT(signer))
                              Bblock
                              PRINT_ATTENTION("en mode 'vraies couleurs', la signature n'est pas disponible");
                              Eblock
                         ATes
                              Bblock
                              Eblock
                         ETes
                         Eblock
                    ATes
                         Bblock
                         Eblock
                    ETes
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes
               Eblock
          ATes
               Bblock
               Eblock
          ETes
          Eblock
     ETes

     Test(PAS_D_ERREUR(CODE_ERREUR))
          Bblock
#Aifdef   __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
     Test(PAS_D_ERREUR(CODE_ERROR(Iload_image_avec_redimensionnement_eventuel(ImageG,nom_imageA
                                                                             ,tenter_un_redimensionnement
                                                                             ,nombre_d_arguments,arguments
                                                                              )
                                  )
                       )
          )
          Bblock
          Test(IL_FAUT(signer))
               Bblock
               CALS(Isignature(niveau_fond,niveau_signature,taille_des_caracteres_des_messages));
                                        /* Signature eventuelle de l'image...                                                        */
               Eblock
          ATes
               Bblock
               Eblock
          ETes
#Eifdef   __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW

#ifdef    __VERSION__COMPILER_LE_GRAPHIQUE_ROS
          CALS(IRopen());
          CALS(IRdisplay(ImageG,seuil_de_display));
#Aifdef   __VERSION__COMPILER_LE_GRAPHIQUE_ROS
#Eifdef   __VERSION__COMPILER_LE_GRAPHIQUE_ROS

#ifdef    __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
          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.                                                  */
          CALS(IDopen(nom_imageA,ADRESSE(dimension_de_la_fenetre),ADRESSE(coin_haut_gauche)));
          CALS(IDdisplay(ImageG));

          Test(IL_FAUT(animation_des_couleurs))
               Bblock
               Loop
                    Bblock
                    INCR(increment_des_niveaux,increment_de_l_increment_des_niveaux);
                                        /* Incrementation de l'increment courant des couleurs...                                     */
                    CALS(IDpalette(increment_des_niveaux));
                                        /* Renvoi de la palette translatee circulairement,                                           */
                    CALS(IDdisplay(ImageG));
                                        /* Et de l'image malheureusement...                                                          */
                    Eblock
               ELoo
               Eblock
          ATes
               Bblock
               DODO(duree_d_attente);
                                        /* Lorsque l'animation des couleurs n'est pas demandee, on ne fait rien...                   */
               Eblock
          ETes

          CALS(IDclose());
#Aifdef   __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
#Eifdef   __VERSION__COMPILER_LE_GRAPHIQUE_SPIX

#ifdef    __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
          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...                                     */
               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

               RECHERCHE_D_UNE_LISTE_DE_SUBSTITUTION(nom_substitution_ROUGE,L_SUBSTITUTION_ROUGE,L_SUBSTITUTION_ROUGE_BASIC);
               RECHERCHE_D_UNE_LISTE_DE_SUBSTITUTION(nom_substitution_VERTE,L_SUBSTITUTION_VERTE,L_SUBSTITUTION_VERTE_BASIC);
               RECHERCHE_D_UNE_LISTE_DE_SUBSTITUTION(nom_substitution_BLEUE,L_SUBSTITUTION_BLEUE,L_SUBSTITUTION_BLEUE_BASIC);
                                        /* Definition des permutations de couleurs.                                                  */

               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
               Eblock
          ATes
               Bblock
               Eblock
          ETes

          Test(IL_FAUT(changer_la_dimension_de_la_fenetre))
                                        /* Ce test a ete introduit le 20030401153145.                                                */
               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

          CALS(IXinitialisation());
                                        /* Initialisation fondamentale introduite le 20160815122058...                               */
          CALS(IXopen(serveur_standard
                     ,nom_imageA
                     ,ADRESSE(dimension_de_la_fenetre)
                     ,centrer_la_fenetre
                     ,ADRESSE(coin_bas_gauche)
                     ,editer_les_PRINT_ATTENTION_initiaux
                      )
               );

          CALS(IXdisplay(ImageG
                        ,Image_ROUGE
                        ,Image_VERTE
                        ,Image_BLEUE
                        ,INCREMENT_DES_NIVEAUX_PAR_DEFAUT_DE_IXdisplay
                        ,TRANSLATER_LE_NOIR_PAR_DEFAUT_DE_IXdisplay
                         )
               );
                                        /* Visualisation de l'image avec la palette courante ou en version vraies couleurs           */
                                        /* (introduit le 20030101172225).                                                            */

          Test(EST_VRAI(IXopen_____X_Window_a_ete_mis_en_mode_fausses_couleurs))
                                        /* Possibilite introduite le 20021231100222 et amelioree le 20030102001152.                  */
               Bblock

#    ifdef     ALLOCATION_DES_COULEURS_VERSION_02
               Test(IL_NE_FAUT_PAS(animation_des_couleurs))
                    Bblock
                                        /* La palette courante peut etre decalee circulairement meme si l'animation des couleurs     */
                                        /* n'est pas demandee ; il suffit que l'increment des niveaux soit non nul...                */
                    Test(IFET(IZNE(increment_de_l_increment_des_niveaux)
                             ,IFNE(increment_de_l_increment_des_niveaux,INCREMENT_DE_L_INCREMENT_DES_NIVEAUX)
                              )
                         )
                         Bblock
                         INCR(increment_des_niveaux,increment_de_l_increment_des_niveaux);
                                        /* Positionnement du decalage circulaire de la palettes, sachant que celui-ci ne peut etre   */
                                        /* ni nul (ce qui ne servirait a rien...), ni valoir 'INCREMENT_DE_L_INCREMENT_DES_NIVEAUX'  */
                                        /* (car il s'agit de l'etat initial, ce qui donnerait alors, lorsqu'il n'y a pas d'animation */
                                        /* des couleurs demandee, un decalage systematique des couleurs...).                         */
                         CALS(IXpalette(increment_des_niveaux,translater_le_NOIR));
                                        /* Renvoi de la palette translatee circulairement avant l'attente de fin de visualisation... */
                         Eblock
                    ATes
                         Bblock
                         Eblock
                    ETes
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes
#    Aifdef    ALLOCATION_DES_COULEURS_VERSION_02
#    Eifdef    ALLOCATION_DES_COULEURS_VERSION_02

               ATTENTE_DE_LA_FIN_DE_VISUALISATION;
                                        /* Et attente de l'evenement de fin de visualisation...                                      */

#    ifdef     ALLOCATION_DES_COULEURS_VERSION_02
               Test(IL_FAUT(animation_des_couleurs))
                    Bblock
                    Test(IZEQ(nombre_de_changements_de_couleurs))
                         Bblock
                         Loop
                              Bblock
                              GESTION_DE_L_INCREMENT_DES_NIVEAUX;
                              Eblock
                         ELoo
                         Eblock
                    ATes
                         Bblock
                         Repe(nombre_de_changements_de_couleurs)
                              Bblock
                              GESTION_DE_L_INCREMENT_DES_NIVEAUX;
                              Eblock
                         ERep

                         ATTENTE_DE_LA_FIN_DE_VISUALISATION;
                                        /* Et attente de l'evenement de fin de visualisation...                                      */
                         Eblock
                    ETes
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes
#    Aifdef    ALLOCATION_DES_COULEURS_VERSION_02
#    Eifdef    ALLOCATION_DES_COULEURS_VERSION_02

               Eblock
          ATes
               Bblock
               Test(IL_NE_FAUT_PAS(animation_des_couleurs))
                    Bblock
                                        /* La palette courante peut etre decalee circulairement meme si l'animation des couleurs     */
                                        /* n'est pas demandee ; il suffit que l'increment des niveaux soit non nul...                */
                    Test(IFET(IZNE(increment_de_l_increment_des_niveaux)
                             ,IFNE(increment_de_l_increment_des_niveaux,INCREMENT_DE_L_INCREMENT_DES_NIVEAUX)
                              )
                         )
                         Bblock
                         Test(EST_VRAI(IXopen_____mettre_X_Window_en_mode_fausses_couleurs))
                              Bblock
                              INCR(increment_des_niveaux,increment_de_l_increment_des_niveaux);
                                        /* Positionnement du decalage circulaire de la palettes, sachant que celui-ci ne peut etre   */
                                        /* ni nul (ce qui ne servirait a rien...), ni valoir 'INCREMENT_DE_L_INCREMENT_DES_NIVEAUX'  */
                                        /* (car il s'agit de l'etat initial, ce qui donnerait alors, lorsqu'il n'y a pas d'animation */
                                        /* des couleurs demandee, un decalage systematique des couleurs...).                         */
                              CALS(IXdisplay(ImageG
                                            ,Image_ROUGE
                                            ,Image_VERTE
                                            ,Image_BLEUE
                                            ,increment_des_niveaux
                                            ,translater_le_NOIR
                                             )
                                   );
                                        /* Revisualisation de l'image avec la palette courante decalee...                            */
                              Eblock
                         ATes
                              Bblock
                              PRINT_ATTENTION("en mode 'VRAIES COULEURS' le decalage des couleurs n'est pas disponible");
                              Eblock
                         ETes
                         Eblock
                    ATes
                         Bblock
                         Eblock
                    ETes
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes

               ATTENTE_DE_LA_FIN_DE_VISUALISATION;
                                        /* Et attente de l'evenement de fin de visualisation...                                      */

               Test(IL_FAUT(animation_des_couleurs))
                    Bblock
                    Test(EST_VRAI(IXopen_____mettre_X_Window_en_mode_fausses_couleurs))
                         Bblock
                         Test(IZEQ(nombre_de_changements_de_couleurs))
                              Bblock
                              Loop
                                   Bblock
                                   gGESTION_DE_L_INCREMENT_DES_NIVEAUX(BLOC(CALS(IXdisplay(ImageG
                                                                                          ,Image_ROUGE
                                                                                          ,Image_VERTE
                                                                                          ,Image_BLEUE
                                                                                          ,increment_des_niveaux
                                                                                          ,translater_le_NOIR
                                                                                           )
                                                                                 );
                                                                            )
                                                                       );
                                   Eblock
                              ELoo
                              Eblock
                         ATes
                              Bblock
                              Repe(nombre_de_changements_de_couleurs)
                                   Bblock
                                   gGESTION_DE_L_INCREMENT_DES_NIVEAUX(BLOC(CALS(IXdisplay(ImageG
                                                                                          ,Image_ROUGE
                                                                                          ,Image_VERTE
                                                                                          ,Image_BLEUE
                                                                                          ,increment_des_niveaux
                                                                                          ,translater_le_NOIR
                                                                                           )
                                                                                 );
                                                                            )
                                                                       );
                                   Eblock
                              ERep

                              ATTENTE_DE_LA_FIN_DE_VISUALISATION;
                                        /* Et attente de l'evenement de fin de visualisation...                                      */
                              Eblock
                         ETes
                         Eblock
                    ATes
                         Bblock
                         PRINT_ATTENTION("en mode 'VRAIES COULEURS' l'animation des couleurs n'est pas disponible");
                         Eblock
                    ETes
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes
               Eblock
          ETes

          CALS(IXclose());

          Test(IFNE(substitution_courante,L_SUBSTITUTION_NEUTRE))
               Bblock
               SET_FILTRAGE(INACTIF);
               SUBSTITUTION(L_SUBSTITUTION_NEUTRE);
               Eblock
          ATes
               Bblock
               Eblock
          ETes
#Aifdef   __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
#Eifdef   __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW

          Eblock
     ATes
          Bblock
          Test__CODE_ERREUR__ERREUR07;
          Eblock
     ETes

     RETU_Commande;
     Eblock
ECommande



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.