/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T E U R   I N F I N I   D E   P A P I E R   P E I N T  :                                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Cette commande affiche indefiniment                                                                            */
/*                  des variations sur une image Argument                                                                            */
/*                  obtenues par une procedure iterative du                                                                          */
/*                  type :                                                                                                           */
/*                                                                                                                                   */
/*                  IMAGE(n+1) = Iminmax[IMAGE(n),decalage(IMAGE(n))].                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/papier.01$K' :                                                                                             */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1988??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N T E R F A C E   ' listG '  :                                                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        :Debut_listG:                                                                                                              */
/*        :Fin_listG:                                                                                                                */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I R E C T I V E S   S P E C I F I Q U E S   D E   C O M P I L A T I O N  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F I C H I E R S   D ' I N C L U D E S  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  INCLUDES_BASE
#include  image_image_QUAD_IMAGE_EXT

#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_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   DUREE_D_ATTENTE                                                                                                               \
                    ZERO                                                                                                                \
                                        /* Attente implicite avant de passer a l'image suivante...                                   */

#define   TRANSLATION_OX                                                                                                                \
                    PARE(0.2)                                                                                                           \
                                        /* Translation horizontale implicite,                                                        */
#define   TRANSLATION_OY                                                                                                                \
                    PARE(0.3)                                                                                                           \
                                        /* Translation verticale implicite.                                                          */

#define   LOGIQUE_FLOUE                                                                                                                 \
                    VRAI                                                                                                                \
                                        /* Est-ce la logique floue ('VRAI') ou binaire ('FAUX').                                     */

#define   UTILISER_LE_OU                                                                                                                \
                    FAUX
#define   UTILISER_LE_ET                                                                                                                \
                    FAUX
#define   UTILISER_LE_OU_EXCLUSIF                                                                                                       \
                    VRAI
                                        /* Dans les deux cas, quels sont les operateurs que l'on doit utiliser ?                     */

#define   SAUVEGARDER_TOUTES_LES_IMAGES_PRODUITES                                                                                       \
                    FAUX                                                                                                                \
                                        /* Faut-il conserver toutes les images produites ('VRAI') ou pas ('FAUX') et donc se         */ \
                                        /* contenter de les montrer...                                                               */
#include  xci/sequence.01.I"

#define   EDITER_LE_NOM_DES_IMAGES                                                                                                      \
                    FAUX                                                                                                                \
                                        /* Indique si le nom de chacune des images sauvegardess doit etre indique ('VRAI') ou pas    */ \
                                        /* ('FAUX'), l'edition ayant lieu comme pour un message d'erreur (afin de ne pas perturber   */ \
                                        /* le "pipe" des images...).                                                                 */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/display.02.I"

#define   SAUVEGARDE_FACULTATIVE_DU_NOM_DE_CHAQUE_IMAGE                                                                                 \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(editer_le_nom_des_images))                                                                             \
                         Bblock                                                                                                         \
                         EGAL(nom_image                                                                                                 \
                             ,chain_Aconcaten2(nom_imageR,chain_numero(INTE(numero_d_image),nombre_de_chiffres))                        \
                              );                                                                                                        \
                                        /* On notera que l'on utilise non pas 'chain_Aconcaten2_sauf_nom_pipe(...)' mais             */ \
                                        /* 'chain_Aconcaten2(...)' car en effet, si l'edition sans sauvegarde est demandee,          */ \
                                        /* alors 'nom_imageR' vaut 'NOM_PIPE' en general...                                          */ \
                         CAL3(Prme1("%s\n",nom_image));                                                                                 \
                         CALZ_FreCC(nom_image);                                                                                         \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                                                                                                                                        \
                    Test(IL_FAUT(sauvegarder_toutes_les_images_produites))                                                              \
                         Bblock                                                                                                         \
                         Test(IFET(IFINff(numero_d_image,premiere_image,derniere_image)                                                 \
                                  ,IZEQ(REST(SOUS(numero_d_image,premiere_image),pas_des_images))                                       \
                                   )                                                                                                    \
                              )                                                                                                         \
                              Bblock                                                                                                    \
                              EGAL(nom_image                                                                                            \
                                  ,chain_Aconcaten2_sauf_nom_pipe(nom_imageR,chain_numero(INTE(numero_d_image),nombre_de_chiffres))     \
                                   );                                                                                                   \
                                        /* Generation du nom de l'image a sauvegarder...                                             */ \
                              CALi(Iupdate_image(nom_image,ImageR));                                                                    \
                                        /* Sauvegarde de l'image courante lorsque son numero est dans les bornes...                  */ \
                              CALZ_FreCC(nom_image);                                                                                    \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                                                                                                                                        \
                    INCR(numero_d_image,PAS_DES_IMAGES);                                                                                \
                                        /* Progression systematique du numero d'image...                                             */ \
                    Eblock                                                                                                              \
                                        /* Sauvegarde, lorsque cela est demande, du nom de l'image courante...                       */

#define   GESTION_DU_PAPIER_PEINT                                                                                                       \
                    Bblock                                                                                                              \
                    DEFV(Int,INIT(nombre_d_operateurs,ZERO));                                                                           \
                                        /* Afin de compter le nombre d'operateurs utilises...                                        */ \
                                                                                                                                        \
                    CALS(Itranslation(ImageA,ImageR,ADRESSE(translation),VRAI,VRAI));                                                   \
                                        /* Translation de l'image courante sur un tore (VRAI,VRAI).                                  */ \
                                                                                                                                        \
                    Test(IL_FAUT(logique_floue))                                                                                        \
                         Bblock                                                                                                         \
                         Test(IL_FAUT(utiliser_le_ou))                                                                                  \
                              Bblock                                                                                                    \
                              CALS(Imaximum(ImageR,ImageR,ImageA));                                                                     \
                                        /* Combinaison (par un "ou flou") de l'image courante ('ImageR') avec                        */ \
                                        /* elle-meme decalee sur un tore ('ImageA').                                                 */ \
                              INCR(nombre_d_operateurs,I);                                                                              \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Test(IL_FAUT(utiliser_le_et))                                                                                  \
                              Bblock                                                                                                    \
                              CALS(Iminimum(ImageR,ImageR,ImageA));                                                                     \
                                        /* Combinaison (par un "et flou") de l'image courante ('ImageR') avec                        */ \
                                        /* elle-meme decalee sur un tore ('ImageA').                                                 */ \
                              INCR(nombre_d_operateurs,I);                                                                              \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Test(IL_FAUT(utiliser_le_ou_exclusif))                                                                         \
                              Bblock                                                                                                    \
                              CALS(Iminmax(ImageR,ImageR,ImageA));                                                                      \
                                        /* Combinaison (par un "ou exclusif flou") de l'image courante ('ImageR') avec               */ \
                                        /* elle-meme decalee sur un tore ('ImageA').                                                 */ \
                              INCR(nombre_d_operateurs,I);                                                                              \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Test(IL_FAUT(utiliser_le_ou))                                                                                  \
                              Bblock                                                                                                    \
                              CALS(Ior(ImageR,ImageR,ImageA));                                                                          \
                                        /* Combinaison (par un "ou binaire") de l'image courante ('ImageR') avec                     */ \
                                        /* elle-meme decalee sur un tore ('ImageA').                                                 */ \
                              INCR(nombre_d_operateurs,I);                                                                              \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Test(IL_FAUT(utiliser_le_et))                                                                                  \
                              Bblock                                                                                                    \
                              CALS(Iand(ImageR,ImageR,ImageA));                                                                         \
                                        /* Combinaison (par un "et binaire") de l'image courante ('ImageR') avec                     */ \
                                        /* elle-meme decalee sur un tore ('ImageA').                                                 */ \
                              INCR(nombre_d_operateurs,I);                                                                              \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Test(IL_FAUT(utiliser_le_ou_exclusif))                                                                         \
                              Bblock                                                                                                    \
                              CALS(Ieor(ImageR,ImageR,ImageA));                                                                         \
                                        /* Combinaison (par un "ou exclusif binaire") de l'image courante ('ImageR') avec            */ \
                                        /* elle-meme decalee sur un tore ('ImageA').                                                 */ \
                              INCR(nombre_d_operateurs,I);                                                                              \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                                                                                                                                        \
                    Test(IFNE(nombre_d_operateurs,UN))                                                                                  \
                         Bblock                                                                                                         \
                         PRINT_ATTENTION("le nombre d'operateurs utilises est different de 1");                                         \
                         CAL1(Prer1("il vaut %d\n",nombre_d_operateurs));                                                               \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Realisation des operations demandees...                                                   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T E U R   I N F I N I   D E   P A P I E R   P E I N T  :                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));
                                        /* Nom de l'image a displayer.                                                               */
     DEFV(CHAR,INIC(POINTERc(nom_paletteA),NOM_PIPE));
                                        /* Nom de la palette a utiliser.                                                             */
     DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
                                        /* Nom du Resultat de la generation.                                                         */
     DEFV(Int,INIT(duree_d_attente,DUREE_D_ATTENTE));
                                        /* Duree d'attente apres l'affichage d'une image et avant son effacement.                    */
     DEFV(deltaF_2D,dimension_de_la_fenetre);
                                        /* Dimension de la fenetre de visualisation.                                                 */
     DEFV(Float,INIT(translation_OX,TRANSLATION_OX));
     DEFV(Float,INIT(translation_OY,TRANSLATION_OY));
                                        /* Argument de translation de la fenetre.                                                    */
     DEFV(deltaF_2D,translation);
                                        /* Translation de la fenetre.                                                                */
     DEFV(Logical,INIT(logique_floue,LOGIQUE_FLOUE));
                                        /* Est-ce la logique floue ('VRAI') ou binaire ('FAUX').                                     */
     DEFV(Logical,INIT(utiliser_le_ou,UTILISER_LE_OU));
     DEFV(Logical,INIT(utiliser_le_et,UTILISER_LE_ET));
     DEFV(Logical,INIT(utiliser_le_ou_exclusif,UTILISER_LE_OU_EXCLUSIF));
                                        /* Dans les deux cas, quels sont les operateurs que l'on doit utiliser ?                     */
     DEFV(Logical,INIT(sauvegarder_toutes_les_images_produites,SAUVEGARDER_TOUTES_LES_IMAGES_PRODUITES));
                                        /* Faut-il conserver toutes les images produites ('VRAI') ou pas ('FAUX') et donc se         */
                                        /* contenter de les montrer...                                                               */
     DEFV(Int,INIT(premiere_image,PREMIERE_IMAGE));
                                        /* Numero de la premiere image,                                                              */
     DEFV(Int,INIT(derniere_image,DERNIERE_IMAGE));
                                        /* Numero de la derniere image.                                                              */
     DEFV(Int,INIT(pas_des_images,PAS_DES_IMAGES));
                                        /* Pas de passage d'un numero d'image a une autre.                                           */
     DEFV(Int,INIT(nombre_de_chiffres,NOMBRE_DE_CHIFFRES));
                                        /* Nombre de chiffres codant le numero des images de la serie...                             */
     DEFV(Int,INIT(numero_d_image,PREMIERE_IMAGE));
     DEFV(Int,INIT(numero_d_image_pour_DoIn,PREMIERE_IMAGE));
                                        /* Numero de l'image courante ('numero_d_image_pour_DoIn' introduit le 19970903140850).      */
     DEFV(CHAR,INIT(POINTERc(nom_image),NOM_UNDEF));
                                        /* Nom courant des images lorsqu'il faut les sauvegarder.                                    */
     DEFV(Logical,INIT(editer_le_nom_des_images,EDITER_LE_NOM_DES_IMAGES));
                                        /* Indique si le nom de chacune des images sauvegardees doit etre indique ('VRAI') ou pas    */
                                        /* ('FAUX'), l'edition ayant lieu comme pour un message d'erreur (afin de ne pas perturber   */
                                        /* le "pipe" des images...                                                                   */

#include  xci/display.03.I"

#ifdef    __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
     DEFV(pointF_2D,coin_haut_gauche);
                                        /* Position du coin haut gauche de la fenetre.                                               */
#Aifdef   __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
#Eifdef   __VERSION__COMPILER_LE_GRAPHIQUE_SPIX

#ifdef    __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
#Aifdef   __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
#Eifdef   __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW

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

#ifdef    __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
     INITIALISATION_POINT_2D(coin_haut_gauche,_____cNORMALISE_OX5(X_COIN_HAUT_GAUCHE),_____cNORMALISE_OY5(Y_COIN_HAUT_GAUCHE));
                                        /* Definition de la position implicite de la fenetre.                                        */
     GET_ARGUMENTSi(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA);
                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);
                         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));
                         GET_ARGUMENT_F("trx=""trX=",translation_OX);
                         GET_ARGUMENT_F("try=""trY=",translation_OY);
                         GET_ARGUMENT_L("flou=",logique_floue);
                         GET_ARGUMENT_L("ou=""or=",utiliser_le_ou);
                         GET_ARGUMENT_L("et=""and=",utiliser_le_et);
                         GET_ARGUMENT_L("ou_exclusif=""eor=",utiliser_le_ou_exclusif);
                         GET_ARGUMENT_L("sauvegarder=",sauvegarder_toutes_les_images_produites);
                         GET_ARGUMENT_I("premiere=",premiere_image);
                         GET_ARGUMENT_I("derniere=",derniere_image);
                         GET_ARGUMENT_I("pas=",pas_des_images);
                         GET_ARGUMENT_I("chiffres=",nombre_de_chiffres);
                         GET_ARGUMENT_L("editer=",editer_le_nom_des_images);
                         )
                    );

     INITIALISATION_ACCROISSEMENT_2D(translation,translation_OX,translation_OY);
                                        /* Mise en place de la translation de la fenetre.                                            */

     EGAL(numero_d_image,premiere_image);
                                        /* Numero de la premiere image a generer eventuellement...                                   */

     Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageR,nom_imageA))))
          Bblock
          CHARGEMENT_DE_LA_PALETTE_DE_COULEURS;
                                        /* Chargement des trois listes de substitution constitutive d'une palette.                   */

          INITIALISATION_ACCROISSEMENT_2D(dimension_de_la_fenetre,_____lNORMALISE_OX5(dimX5),_____lNORMALISE_OY5(dimY5));
                                        /* Definition des dimensions de la fenetre.                                                  */
          CALS(IDopen(nom_imageA,ADRESSE(dimension_de_la_fenetre),ADRESSE(coin_haut_gauche)));

          DoIn(numero_d_image_pour_DoIn,premiere_image,derniere_image,pas_des_images)
                                        /* Jusqu'au 19970903140850, c'etait 'Loop' qui etait utilise ici. Mais a cause de la         */
                                        /* generation des images '$xiirf/PAYS.W2$M' et '$xiirf/PAYS.W2$m' qui utilisent cette        */
                                        /* commande ('v $xiirf/$Fnota papier.01'), il est devenu imperatif que cette commande        */
                                        /* puisse s'arreter automatiquement lorsqu'un certain nombre d'images ont ete produites...   */
               Bblock
               CALS(IDdisplay(ImageR));

               SAUVEGARDE_FACULTATIVE_DU_NOM_DE_CHAQUE_IMAGE;
                                        /* Sauvegarde, si necessaire de l'image courante (y compris l'image Argument)...             */

               GESTION_DU_PAPIER_PEINT;
                                        /* Realisation des operations demandees...                                                   */

               DODO(duree_d_attente);
               Eblock
          EDoI
                                        /* Jusqu'au 19970903140850, c'etait 'ELoo' qui etait utilise ici. Mais a cause de la         */
                                        /* generation des images '$xiirf/PAYS.W2$M' et '$xiirf/PAYS.W2$m' qui utilisent cette        */
                                        /* commande ('v $xiirf/$Fnota papier.01'), il est devenu imperatif que cette commande        */
                                        /* puisse s'arreter automatiquement lorsqu'un certain nombre d'images ont ete produites...   */

          CALS(IDclose());
          Eblock
     ATes
          Bblock
          Test__CODE_ERREUR__ERREUR07;
          Eblock
     ETes
#Aifdef   __VERSION__COMPILER_LE_GRAPHIQUE_SPIX
#Eifdef   __VERSION__COMPILER_LE_GRAPHIQUE_SPIX

#ifdef    __VERSION__COMPILER_LE_GRAPHIQUE_X_WINDOW
     INITIALISATION_POINT_2D(coin_bas_gauche,_____cNORMALISE_OX11(X_COIN_BAS_GAUCHE),_____cNORMALISE_OY11(Y_COIN_BAS_GAUCHE));
                                        /* Definition de la position implicite de la fenetre.                                        */
     EGAL(X11_____signaler_les_evenements_inattendus,SIGNALER_LES_EVENEMENTS_INATTENDUS);
                                        /* Initialisation du signalisateur d'evenement inattendu...                                  */

     GET_ARGUMENTSi(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("serveur=",serveur_standard);
                         GET_ARGUMENT_L("ne_pas_verifier_le_serveur=""npvs="
                                       ,IXopen_____X_Window_accepter_le_serveur_sans_verification
                                        );
                         GET_ARGUMENT_N("verifier_le_serveur=""vs="
                                       ,IXopen_____X_Window_accepter_le_serveur_sans_verification
                                        );
                                        /* Arguments introduits le 20100109113251 pour acceder au serveur 'Xming' (Windows Vista).   */
                         GET_ARGUMENT_L("attention=",editer_les_PRINT_ATTENTION_initiaux);
                         GET_ARGUMENT_L("signaler=",X11_____signaler_les_evenements_inattendus);
                         GET_ARGUMENT_L("trop_grandes=""trop_grande="
                                       ,X11_____tenter_l_ouverture_des_fenetres_trop_grandes_par_rapport_a_l_ecran
                                        );
                         GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         GET_ARGUMENT_C("paletteA=""palette=""pA=""p=",nom_paletteA);
                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);
                         GET_ARGUMENT_I("nombre=""couleurs=",nombre_de_couleurs_necessaires);
                         GET_ARGUMENT_I("duree=""d=",duree_d_attente);
                         GET_ARGUMENT_L("centrer=""Fcentrer=""Fc=",centrer_la_fenetre);
                                        /* Parametre introduit le 20060427162715...                                                  */
                         GET_ARGUMENT_F("xc=""x=""X=",ASD1(coin_bas_gauche,x));
                         GET_ARGUMENT_F("yc=""y=""Y=",ASD1(coin_bas_gauche,y));
                         GET_ARGUMENT_F("trx=""trX=",translation_OX);
                         GET_ARGUMENT_F("try=""trY=",translation_OY);
                         GET_ARGUMENT_L("flou=",logique_floue);
                         GET_ARGUMENT_L("ou=""or=",utiliser_le_ou);
                         GET_ARGUMENT_L("et=""and=",utiliser_le_et);
                         GET_ARGUMENT_L("ou_exclusif=""eor=",utiliser_le_ou_exclusif);
                         GET_ARGUMENT_L("sauvegarder=",sauvegarder_toutes_les_images_produites);
                         GET_ARGUMENT_I("premiere=",premiere_image);
                         GET_ARGUMENT_I("derniere=",derniere_image);
                         GET_ARGUMENT_I("pas=",pas_des_images);
                         GET_ARGUMENT_I("chiffres=",nombre_de_chiffres);
                         GET_ARGUMENT_L("editer=",editer_le_nom_des_images);
                         GET_ARGUMENT_C("substitution=""s=",nom_substitution);
                         )
                    );

     RECHERCHE_D_UNE_LISTE_DE_SUBSTITUTION(nom_substitution,substitution_courante,substitution_courante);
                                        /* Tentative de recherche de la substitution demandee...                                     */

     INITIALISATION_ACCROISSEMENT_2D(translation,translation_OX,translation_OY);
                                        /* Mise en place de la translation de la fenetre.                                            */

     EGAL(numero_d_image,premiere_image);
                                        /* Numero de la premiere image a generer eventuellement...                                   */

     Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageR,nom_imageA))))
          Bblock
          CHARGEMENT_DE_LA_PALETTE_DE_COULEURS;
                                        /* Chargement des trois listes de substitution constitutive d'une palette.                   */
          Test(IFEQ(substitution_courante,L_SUBSTITUTION_VARIABLE))
               Bblock
               CALS(Icompactage_d_une_palette(nombre_de_couleurs_necessaires));
                                        /* Pour la substitution 'VARIABLE', on procede a un compactage de la palette Argument.       */
               Eblock
          ATes
               Bblock
               Eblock
          ETes
          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

          INITIALISATION_ACCROISSEMENT_2D(dimension_de_la_fenetre,_____lNORMALISE_OX11(dimX11),_____lNORMALISE_OY11(dimY11));
                                        /* Definition des dimensions de la fenetre.                                                  */

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

          DoIn(numero_d_image_pour_DoIn,premiere_image,derniere_image,pas_des_images)
                                        /* Jusqu'au 19970903140850, c'etait 'Loop' qui etait utilise ici. Mais a cause de la         */
                                        /* generation des images '$xiirf/PAYS.W2$M' et '$xiirf/PAYS.W2$m' qui utilisent cette        */
                                        /* commande ('v $xiirf/$Fnota papier.01'), il est devenu imperatif que cette commande        */
                                        /* puisse s'arreter automatiquement lorsqu'un certain nombre d'images ont ete produites...   */
               Bblock
               CALS(IXdisplay(ImageR
                             ,Image_ROUGE
                             ,Image_VERTE
                             ,Image_BLEUE
                             ,INCREMENT_DES_NIVEAUX_PAR_DEFAUT_DE_IXdisplay
                             ,TRANSLATER_LE_NOIR_PAR_DEFAUT_DE_IXdisplay
                              )
                    );
                                        /* On notera que {Image_ROUGE,Image_VERTE,Image_BLEUE} ne sont pas utiles ici, mais mises    */
                                        /* en place uniquement pour des raisons syntanxiques (introduit le 20030101172358).          */

               SAUVEGARDE_FACULTATIVE_DU_NOM_DE_CHAQUE_IMAGE;
                                        /* Sauvegarde, si necessaire de l'image courante (y compris l'image Argument)...             */

               PUSH_FILTRAGE;
                                        /* Sauvegarde de l'etat courant du filtrage des niveaux.                                     */
               SET_FILTRAGE(INACTIF);
                                        /* Et ce afin de ne pas perturber les processus 'Itranslation(...)', 'Iminmax(...)'          */
                                        /* et 'Ieor(...)'.                                                                           */
               GESTION_DU_PAPIER_PEINT;
                                        /* Realisation des operations demandees...                                                   */

               PULL_FILTRAGE;
                                        /* Et restauration des conditions initiales...                                               */
               DODO(duree_d_attente);
               Eblock
          EDoI
                                        /* Jusqu'au 19970903140850, c'etait 'ELoo' qui etait utilise ici. Mais a cause de la         */
                                        /* generation des images '$xiirf/PAYS.W2$M' et '$xiirf/PAYS.W2$m' qui utilisent cette        */
                                        /* commande ('v $xiirf/$Fnota papier.01'), il est devenu imperatif que cette commande        */
                                        /* puisse s'arreter automatiquement lorsqu'un certain nombre d'images ont ete produites...   */

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

#ifdef    __VERSION__COMPILER_LE_GRAPHIQUE_ROS
     GET_ARGUMENTSi(nombre_d_arguments
                   ,BLOC(VIDE;
                         )
                    );
                                        /* Introduit le 20070301174645...                                                            */

     PRINT_ATTENTION("les fonctions graphiques ne sont pas implementees");
#Aifdef   __VERSION__COMPILER_LE_GRAPHIQUE_ROS
#Eifdef   __VERSION__COMPILER_LE_GRAPHIQUE_ROS

     RETU_Commande;
     Eblock
ECommande



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.