/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M U L T I P L E X A G E   ( 8 , 8 , 8 )   D ' U N E   I M A G E                                                            */
/*        E N   V R A I E S   C O U L E U R S   ( R , V , B )  :                                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Cette commande multiplexe les trois                                                                            */
/*                  composantes 'RVB' d'une image.                                                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*             *     * * * * * *   * * * * * *   * * * * * *   *         *   * * * * * *   *   * * * * * *   *         *             */
/*                        *             *        *             **        *        *        *   *         *   **        *             */
/*            * *         *             *        *             * *       *        *        *   *         *   * *       *             */
/*                        *             *        *             *  *      *        *        *   *         *   *  *      *             */
/*           *   *        *             *        *             *   *     *        *        *   *         *   *   *     *             */
/*                        *             *        * * *         *    *    *        *        *   *         *   *    *    *             */
/*          * * * *       *             *        *             *     *   *        *        *   *         *   *     *   *             */
/*                        *             *        *             *      *  *        *        *   *         *   *      *  *             */
/*         *       *      *             *        *             *       * *        *        *   *         *   *       * *             */
/*                        *             *        *             *        **        *        *   *         *   *        **             */
/*        *         *     *             *        * * * * * *   *         *        *        *   * * * * * *   *         *             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        ATTENTION :                                                                                                                */
/*                                                                                                                                   */
/*                    Il pourra etre necessaire de faire                                                                             */
/*                  apres '$xci/RVB_store$X' un 'SwapB'                                                                              */
/*                  ('v $xiMo/creation$Z SwapB') si le                                                                               */
/*                  fichier '$RVB' est destine a '$CONVERT'                                                                          */
/*                  car, en effet, 'v $xci/RVB_store$K' ecrit                                                                        */
/*                  des images au format 'imageI' dont l'unite                                                                       */
/*                  est donc de type 'Int', alors que '$CONVERT'                                                                     */
/*                  lit les fichiers octets par octets, d'ou la                                                                      */
/*                  necessite de la permutation par 'SwapB', soit :                                                                  */
/*                                                                                                                                   */
/*                                      $xci/RVB_store$X --> SwapB --> $CONVERT                                                      */
/*                                                                                                                                   */
/*                  donc...                                                                                                          */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/RVB_store$K' :                                                                                             */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20001102152358).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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_QUAD_IMAGE_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 20110502094529...             */
#include  image_image_ALPHABET_3_EXT
#include  image_image_ALPHABET_4_EXT
                                        /* Introduit le 20161116111054...                                                            */
#include  image_image_ALPHABET_5_EXT
                                        /* Introduit le 20230516182826...                                                            */
#include  image_image_ALPHABET_6_EXT
                                        /* Introduit le 20240419175700...                                                            */
#include  image_image_ALPHABETS_EXT

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   RECUPERER_UNE_IMAGE_EN_VRAIES_COULEURS                                                                                        \
                    FAUX                                                                                                                \
                                        /* 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...                 */

#define   SIGNER                                                                                                                        \
                    FAUX                                                                                                                \
                                        /* Indique s'il faut signer ('VRAI') ou pas ('FAUX') l'image...                              */

#include  xci/signature.01.I"
                                        /* Caracteristiques de la signature...                                                       */

#define   SIGNER_AVEC_UNE_ESTAMPILLE                                                                                                    \
                    VRAI                                                                                                                \
                                        /* Indique s'il faut signer avec une estampille ('VRAI') ou avec la signature ('FAUX').      */

#define   LISIBLE                                                                                                                       \
                    VRAI                                                                                                                \
                                        /* Indique si l'estampille est minuscule ('FAUX') ou bien doit rester lisible ('VRAI').      */

#define   ABSCISSE_DE_LA_SIGNATURE                                                                                                      \
                    GRO2(INTER_POINT)                                                                                                   \
                                        /* Abscisse de la signature dans 'ImageR' (qui occupe un rectangle 11x5).                    */
#define   ORDONNEE_DE_LA_SIGNATURE                                                                                                      \
                    GRO2(INTER_POINT)                                                                                                   \
                                        /* Ordonnee de la signature dans 'ImageR' (qui occupe un rectangle 11x5).                    */

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M U L T I P L E X A G E   ( 8 , 8 , 8 )   D ' U N E   I M A G E                                                            */
/*        E N   V R A I E S   C O U L E U R S   ( R , V , B )  :                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
                                        /* Nom de l'image a generer au format "SGI".                                                 */
     DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));
                                        /* Nom de la racine d'une image en vraies couleurs.                                          */
     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...                 */

#include  xci/signature.03.I"

     DEFV(Logical,INIT(signer_avec_une_estampille,SIGNER_AVEC_UNE_ESTAMPILLE));
                                        /* Indique s'il faut signer avec une estampille ('VRAI') ou avec la signature ('FAUX').      */
     DEFV(Logical,INIT(lisible,LISIBLE));
                                        /* Indique si l'estampille est minuscule ('FAUX') ou bien doit rester lisible ('VRAI').      */
     DEFV(pointI_2D,emplacement_normalise_de_la_signature_invisible);
     DEFV(pointF_2D,emplacement_de_la_signature_invisible);
                                        /* Donne le coin "bas-gauche" de l'estampille lorsqu'elle est demandee. Ces donnees sont     */
                                        /* normalisees telles que l'unite represente la taille de l'image. On notera que son         */
                                        /* initialisation est faite en nombre de points car, en effet, '$formatI' n'est alors        */
                                        /* pas connu...                                                                              */
     /*..............................................................................................................................*/
     INITIALISATION_POINT_2D(emplacement_normalise_de_la_signature_invisible,ABSCISSE_DE_LA_SIGNATURE,ORDONNEE_DE_LA_SIGNATURE);
                                        /* Initialisation de l'emplacement implicite de l'estampille...                              */

     GET_ARGUMENTSg(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_L("f_X______compatibilite_20090516=""compatibilite_20090516=",f_X______compatibilite_20090516);
                                        /* Argument introduit le 20090516192509...                                                   */

                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);
                         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);

                         GET_ARGUMENT_L("signer=",signer);
                         GET_ARGUMENT_P("fond=""f=",niveau_fond);
                         GET_ARGUMENT_P("signature=""s=",niveau_signature);
                         GET_ARGUMENT_I("taille=""T=",taille_des_caracteres_des_messages);
                         GET_ARGUMENT_L("estampiller=",signer_avec_une_estampille);
                         GET_ARGUMENT_L("amrWWW=""site=""Internet="
                                       ,Isignature_invisible_____a_la_signature_lisible_faut_il_ajouter_amrWWW
                                        );
                                        /* Parametre introduit le 20090113133257...                                                  */
                         GET_ARGUMENT_L("lisible=",lisible);
                         GET_ARGUMENT_P("signature_invisible=""si=",f_X______niveau_de_marquage_de_la_signature_invisible);
                         GET_ARGUMENT_P("bord_signature_invisible=""bsi=",f_X______niveau_du_bord_de_la_signature_invisible);
                                        /* Parametres relatifs a 'f_X_(...)' introduits le 20090517090447...                         */
                         GET_ARGUMENT_I("epaisseur_signature=""es=",f_X______epaisseur_de_la_signature);
                                        /* Les arguments d'epaississement de la signature ont ete introduits le 20091215101556...    */

                         GET_ARGUMENT_I("bibliotheque=",vecteurs_____num_bibliotheque);
                         GET_ARGUMENT_I("x=""X=",ASD1(emplacement_normalise_de_la_signature_invisible,x));
                         GET_ARGUMENT_I("y=""Y=",ASD1(emplacement_normalise_de_la_signature_invisible,y));
                         GET_ARGUMENT_P("alpha=""ALPHA=",Imultiplexage_888_RVB_____composante_ALPHA);
                         )
                    );

     INITIALISATION_POINT_2D(emplacement_de_la_signature_invisible
                            ,_____cNORMALISE_OX(ASD1(emplacement_normalise_de_la_signature_invisible,x))
                            ,_____cNORMALISE_OY(ASD1(emplacement_normalise_de_la_signature_invisible,y))
                             );
                                        /* Initialisation de l'emplacement implicite de l'estampille...                              */

     Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(Image_ROUGE,NOM_D_UNE_COMPOSANTE(nom_imageAR,c_ROUGE)))))
          Bblock
          Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(Image_VERTE,NOM_D_UNE_COMPOSANTE(nom_imageAV,c_VERTE)))))
               Bblock
               Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(Image_BLEUE,NOM_D_UNE_COMPOSANTE(nom_imageAB,c_BLEUE)))))
                    Bblock
                    BDEFV(imageUB,image_a_multiplexer);
                                        /* Image a multiplexer.                                                                      */

                    SIGNATURE_GENERALE(Image_ROUGE);
                    SIGNATURE_GENERALE(Image_VERTE);
                    SIGNATURE_GENERALE(Image_BLEUE);
                                        /* Signature eventuelle de l'image...                                                        */

                    CALS(Imultiplexage_888_RVB(image_a_multiplexer
                                              ,Image_ROUGE,Image_VERTE,Image_BLEUE
                                               )
                         );
                                        /* Multiplexage.                                                                             */

                    CALi(IupdateUB_image(nom_imageR,image_a_multiplexer));

                    EDEFV(imageUB,image_a_multiplexer);
                                        /* Image a multiplexer.                                                                      */
                    Eblock
               ATes
                    Bblock
                    Test__CODE_ERREUR__ERREUR07;
                    Eblock
               ETes
               Eblock
          ATes
               Bblock
               Test__CODE_ERREUR__ERREUR07;
               Eblock
          ETes
          Eblock
     ATes
          Bblock
          Test__CODE_ERREUR__ERREUR07;
          Eblock
     ETes

     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.