/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        R E C H E R C H E   D E   L A   P R E S E N C E   D ' U N E   P A L E T T E   D A N S   U N E   I M A G E  :               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                    Cette commande peut etre consideree                                                                            */
/*                  comme l'inverse de '$xciP/IMAGE$K'.                                                                              */
/*                  Elle a ete introduite le 19970509090000                                                                          */
/*                  afin de permettre de retrouver la facon                                                                          */
/*                  de generer la palette '$xiP/random.03'                                                                           */
/*                  (notons au passage qu'elle vient de l'image                                                                      */
/*                  'v $xiia/CONFORME.31$Fi p=$xiP/fractal.03' avec                                                                  */
/*                  "xR=0.3 yR=0.1 xV=0.4 yV=0.2 xB=0.5 yB=0.3").                                                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xciP/cherche.01$K' :                                                                                           */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1997??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   SYSTEME_RVB_IMPLICITE                                                                                                         \
                    ESPACE_DE_COULEURS_RVB                                                                                              \
                                        /* Afin de faire des acces implicites en 'RVB'...                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   RECHERCHE_D_UNE_LISTE_DE_SUBSTITUTION_DANS_UNE_IMAGE(L_SUBSTITUTION_XX,titre_X,titre_Y)                                       \
                    Bblock                                                                                                              \
                    begin_image                                                                                                         \
                         Bblock                                                                                                         \
                         DEFV(Logical,INIT(iterer_la_recherche,VRAI));                                                                  \
                                        /* Afin de controler l'iteration a partir du point {X,Y} courant...                          */ \
                         DEFV(Int,INIT(increment_de_X,ZERO));                                                                           \
                         DEFV(genere_p,INIT(niveau_courant,NOIR));                                                                      \
                                        /* Afin de progresser suivant l'axe 'OX' et les niveaux simultanement...                     */ \
                         Tant(IL_FAUT(iterer_la_recherche))                                                                             \
                              Bblock                                                                                                    \
                              DEFV(genere_p,INIT(niveau_courant_substitue                                                               \
                                                ,ACCES_listes_de_substitution(L_SUBSTITUTION_XX,niveau_courant)                         \
                                                 )                                                                                      \
                                   );                                                                                                   \
                                        /* Niveau courant apres substitution.                                                        */ \
                              Test(IFNE(niveau_courant_substitue,load_point_valide(ImageA,ADD2(X,increment_de_X),Y)))                   \
                                   Bblock                                                                                               \
                                   EGAL(iterer_la_recherche,FAUX);                                                                      \
                                        /* On s'arrete sur la premiere difference...                                                 */ \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   Test(IFLT(niveau_courant,BLANC))                                                                     \
                                        Bblock                                                                                          \
                                        EGAL(niveau_courant,nSUCK_TRON(niveau_courant,UN));                                             \
                                        INCR(increment_de_X,pasX);                                                                      \
                                        /* Lorsque le balayage de la liste 'L_SUBSTITUTION_XX' n'est pas termine, on progresse...    */ \
                                        Eblock                                                                                          \
                                   ATes                                                                                                 \
                                        Bblock                                                                                          \
                                        EGAL(iterer_la_recherche,FAUX);                                                                 \
                                        /* Lorsque l'on arrive ici, c'est que l'on a trouve 'L_SUBSTITUTION_XX' dans l'image, il     */ \
                                        /* faut donc s'arreter, et editer...                                                         */ \
                                        CAL3(Prme2(Cara(chain_Aconcaten5(titre_X,"%+.^^^ ",titre_Y,"%+.^^^ ","\n"))                     \
                                        /* Le 20060105153324, le format "16g" est passe a "^^g" pour plus de souplesse...            */ \
                                        /*                                                                                           */ \
                                        /* Le 20080314180453, le "\n" est passe de la tete a la queue du message edite. Mais par     */ \
                                        /* contre l'espace qui suite le deuxieme "^^g" a ete conserve car, en effet, on ne sait      */ \
                                        /* jamais (compatibilite anterieure...).                                                     */ \
                                        /*                                                                                           */ \
                                        /* Le 20091123123032, le format "^^g" est passe a "^^^" pour plus de souplesse...            */ \
                                                  ,_____cNORMALISE_OX(X)                                                                \
                                                  ,_____cNORMALISE_OY(Y)                                                                \
                                                   )                                                                                    \
                                             );                                                                                         \
                                        Eblock                                                                                          \
                                   ETes                                                                                                 \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                         ETan                                                                                                           \
                         Eblock                                                                                                         \
                    end_image                                                                                                           \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        R E C H E R C H E   D E   L A   P R E S E N C E   D ' U N E   P A L E T T E   D A N S   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 generatrice de la palette.                                                 */
     DEFV(CHAR,INIC(POINTERc(nom_paletteA),NOM_PIPE));
                                        /* Nom de la palette Argument a utiliser.                                                    */
     DEFV(CHAR,INIC(POINTERc(systeme_d_entree),SYSTEME_RVB_IMPLICITE));
                                        /* Definition du systeme d'entree : {R,V,B} ou {H,L,S}.                                      */
     /*..............................................................................................................................*/
     GET_ARGUMENTSi(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         GET_ARGUMENT_C("paletteA=""pA=""p=",nom_paletteA);

                         GET_ARGUMENT_C("entree=",systeme_d_entree);

                         GET_ARGUMENT_L("COMP1=""ROUGE=""TEINT=",files_____manipuler_la_composante_COMP1_d_une_palette_de_couleurs);
                         GET_ARGUMENT_L("COMP2=""VERTE=""LUMIN=",files_____manipuler_la_composante_COMP2_d_une_palette_de_couleurs);
                         GET_ARGUMENT_L("COMP3=""BLEUE=""SATUR=",files_____manipuler_la_composante_COMP3_d_une_palette_de_couleurs);
                         )
                    );

     Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageA,nom_imageA))))
          Bblock
          CALS(Iload_palette_de_couleurs(nom_paletteA,systeme_d_entree));
                                        /* Chargement de la palette de couleurs...                                                   */

          RECHERCHE_D_UNE_LISTE_DE_SUBSTITUTION_DANS_UNE_IMAGE(L_SUBSTITUTION_ROUGE,"XR=","YR=")
          RECHERCHE_D_UNE_LISTE_DE_SUBSTITUTION_DANS_UNE_IMAGE(L_SUBSTITUTION_VERTE,"XV=","YV=")
          RECHERCHE_D_UNE_LISTE_DE_SUBSTITUTION_DANS_UNE_IMAGE(L_SUBSTITUTION_BLEUE,"XB=","YB=")
          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.