/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E D I T I O N   H E X A _ D E C I M A L E   D ' U N E   I M A G E  :                                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Cette commande affiche en hexa-                                                                                */
/*                  decimal l'image argument, cette                                                                                  */
/*                  edition pouvant etre en PostScript.                                                                              */
/*                  La pre-visualisation d'un fichier                                                                                */
/*                  PostScript sur un ecran pourra se                                                                                */
/*                  faire grace a :                                                                                                  */
/*                                                                                                                                   */
/*                                      /users/com/ghostview          sur 'SYSTEME_HP7??_HPUX',                                      */
/*                                      /usr/sbin/xpsview             sur 'SYSTEME_SGIND???_IRIX'.                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/dumpx$K' :                                                                                                 */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1987??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

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

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F I C H I E R S   D ' I N C L U D E S  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  INCLUDES_BASE
#include  image_image_CONTOURS_EXT
#include  image_image_ALPHABET_0_EXT
#include  image_image_ALPHABET_1_EXT
#include  image_image_ALPHABET_2_EXT
                                        /* L'include de 'image_image_ALPHABET_3_DEF' a ete supprime le 20110502094914...             */
#include  image_image_ALPHABET_3_EXT
#include  image_image_ALPHABET_4_EXT
                                        /* Introduit le 20161116111334...                                                            */
#include  image_image_ALPHABET_5_EXT
                                        /* Introduit le 20230516182946...                                                            */
#include  image_image_ALPHABET_6_EXT
                                        /* Introduit le 20240419175922...                                                            */
#include  image_image_ALPHABETS_EXT
#include  image_drive_alpha_FONCTION_EXT

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   EDITER_DU_PostScript                                                                                                          \
                    VRAI                                                                                                                \
                                        /* Indique s'il faut un dump hexa-decimal ('FAUX') ou PostScript ('VRAI').                   */
#define   FAIRE_UN_DUMP_NUMERIQUE                                                                                                       \
                    VRAI                                                                                                                \
                                        /* Indique s'il faut un dump numerique ('VRAI') ou un dump "caractere" ('FAUX') dans le      */ \
                                        /* cas ou 'IL_NE_FAUT_PAS(editer_du_PostScript)' (introduit le 20081216113825).              */
#define   FAIRE_UN_DUMP_HEXA_DECIMAL                                                                                                    \
                    VRAI                                                                                                                \
                                        /* Indique s'il faut un dump hexa-decimal ('VRAI') ou un dump decimal ('FAUX') dans le       */ \
                                        /* cas ou 'IL_NE_FAUT_PAS(editer_du_PostScript)' (introduit le 20070620104755).              */

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

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

#define   L_IMAGE_EST_EN_COULEURS                                                                                                       \
                    VRAI                                                                                                                \
                                        /* Indique si l'image est en Noir et Blanc ('FAUX') ou en couleurs ('VRAI'), cette option    */ \
                                        /* n'ayant de sens qu'avec PostScript...                                                     */

#define   TRANSLATION_HORIZONTALE                                                                                                       \
                    SOIXANTE_QUATRE
#define   TRANSLATION_VERTICALE                                                                                                         \
                    CENT
                                        /* Translations horizontale et verticale de l'image en sortie.                               */
#define   ECHELLE_HORIZONTALE                                                                                                           \
                    dimX
#define   ECHELLE_VERTICALE                                                                                                             \
                    dimY
                                        /* Echelles horizontale et verticale de l'image en sortie. On notera que ces deux Arguments  */
                                        /* n'ont d'interet que sur certaines machines (par exemple 'LACT21'...) et pour la sortie    */
                                        /* 'PostScript'...                                                                           */

#define   OPTIMISER_LA_CONVERSION_PostScript                                                                                            \
                    VRAI                                                                                                                \
                                        /* Indique s'il faut editer les points d'une composante un a un ('FAUX') ou par paquet       */ \
                                        /* d'une ligne ('VRAI').                                                                     */

#define   NOMBRE_D_EXEMPLAIRES                                                                                                          \
                    UN                                                                                                                  \
                                        /* Indique le nombre d'exemplaires a imprimer...                                             */

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D U M P   H E X A - D E C I M A L   D ' U N E   I M A G E  :                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));
                                        /* Nom de l'image a displayer en Noir et Blanc.                                              */
     DEFV(CHAR,INIC(POINTERc(nom_imageAR),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_imageAV),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_imageAB),NOM_PIPE));
                                        /* Nom de l'image a displayer en couleurs.                                                   */

     DEFV(Logical,INIT(editer_du_PostScript,EDITER_DU_PostScript));
                                        /* Indique s'il faut un dump hexa-decimal ('FAUX') ou PostScript ('VRAI').                   */
     DEFV(Logical,INIT(faire_un_dump_numerique,FAIRE_UN_DUMP_NUMERIQUE));
                                        /* Indique s'il faut un dump numerique ('VRAI') ou un dump "caractere" ('FAUX') dans le      */
                                        /* cas ou 'IL_NE_FAUT_PAS(editer_du_PostScript)' (introduit le 20081216113825).              */
     DEFV(Logical,INIT(faire_un_dump_hexa_decimal,FAIRE_UN_DUMP_HEXA_DECIMAL));
                                        /* Indique s'il faut un dump hexa-decimal ('VRAI') ou un dump decimal ('FAUX') dans le       */
                                        /* cas ou 'IL_NE_FAUT_PAS(editer_du_PostScript)' (introduit le 20070620104755).              */

#include  xci/signature.03.I"

     DEFV(Logical,INIT(l_image_est_en_couleurs,L_IMAGE_EST_EN_COULEURS));
                                        /* Indique si l'image est en Noir et Blanc ('FAUX') ou en couleurs ('VRAI'), cette option    */
                                        /* n'ayant de sens qu'avec PostScript...                                                     */
     DEFV(Int,INIT(translation_horizontale,TRANSLATION_HORIZONTALE));
     DEFV(Int,INIT(translation_verticale,TRANSLATION_VERTICALE));
                                        /* Translations horizontale et verticale de l'image en sortie.                               */
     DEFV(Int,INIT(echelle_horizontale,UNDEF));
     DEFV(Int,INIT(echelle_verticale,UNDEF));
                                        /* Echelles horizontale et verticale de l'image en sortie. On notera que ces deux Arguments  */
                                        /* n'ont d'interet que sur certaines machines (par exemple 'LACT21'...) et pour la sortie    */
                                        /* 'PostScript'...                                                                           */
     DEFV(Logical,INIT(optimiser_la_conversion_PostScript,OPTIMISER_LA_CONVERSION_PostScript));
                                        /* Indique s'il faut editer les points d'une composante un a un ('FAUX') ou par paquet       */
                                        /* d'une ligne ('VRAI').                                                                     */
     DEFV(Positive,INIT(nombre_d_exemplaires,NOMBRE_D_EXEMPLAIRES));
                                        /* Indique le nombre d'exemplaires a imprimer...                                             */
     /*..............................................................................................................................*/
     GET_ARGUMENTSg(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         GET_ARGUMENT_C("imageAR=""AR=",nom_imageAR);
                         GET_ARGUMENT_C("imageAV=""AV=",nom_imageAV);
                         GET_ARGUMENT_C("imageAB=""AB=",nom_imageAB);

                         GET_ARGUMENT_L("ps=""PostScript=",editer_du_PostScript);
                         GET_ARGUMENT_L("numerique=""num=",faire_un_dump_numerique);
                         GET_ARGUMENT_N("caractere=""cara=",faire_un_dump_numerique);
                                        /* Parametres introduits le 20081216113825...                                                */
                         GET_ARGUMENT_L("hexa_decimal=""hd=",faire_un_dump_hexa_decimal);
                         GET_ARGUMENT_N("decimal=""d=",faire_un_dump_hexa_decimal);

                         GET_ARGUMENT_L("BoundingBox=",IPostScript_image_____inserer_la_BoundingBox_dans_le_fichier);
                                        /* Parametres introduits le 20090130130609...                                                */
                         GET_ARGUMENT_L("PageSize=",IPostScript_image_____inserer_le_PageSize_dans_le_fichier);
                                        /* Parametres introduits le 20090130132230...                                                */

                         GET_ARGUMENT_L("en_tete_caractere=""ec=",Idumpc_image_____editer_le_message_d_introduction);
                         GET_ARGUMENT_L("en_tete_decimal=""e10=",Idumpd_image_____editer_le_message_d_introduction);
                         GET_ARGUMENT_L("en_tete_hexa_decimal=""e16=",Idumpx_image_____editer_le_message_d_introduction);
                         GET_ARGUMENT_I("version=""v=",IPostScript_image_____version_du_PostScript);
                         GET_ARGUMENT_L("signer=",signer);
                         GET_ARGUMENT_L("estampiller=",Isignature_____en_fait_estampiller);
                         GET_ARGUMENT_L("lisible=",Isignature_____l_estampille_doit_etre_lisible);
                                        /* Ces deux options ont ete introduites le 20050310170317...                                 */
                         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_I("bibliotheque=",vecteurs_____num_bibliotheque);
                         GET_ARGUMENT_L("RVB=",l_image_est_en_couleurs);
                         GET_ARGUMENT_I("Tx=",translation_horizontale);
                         GET_ARGUMENT_I("Ty=",translation_verticale);
                         GET_ARGUMENT_L("conserver_echelles=""conserver=""cehv="
                                       ,IPostScript_image_____conserver_les_echelles_horizontale_et_verticale
                                        );
                         GIT_ARGUMENT_I("Ex=",echelle_horizontale,ECHELLE_HORIZONTALE);
                         GIT_ARGUMENT_I("Ey=",echelle_verticale,ECHELLE_VERTICALE);
                         GET_ARGUMENT_L("optimiser=",optimiser_la_conversion_PostScript);
                         GET_ARGUMENT_I("exemplaires=",nombre_d_exemplaires);

                         GET_ARGUMENT_L("niveau_coordonnees=""nc=",Idumpx_image_____editer_sous_la_forme_niveau_coordonnees_X_et_Y);
                         GET_ARGUMENT_L("somme_difference=""sd="
                                       ,Idumpx_image_____editer_sous_la_forme_niveau_coordonnees_X_et_Y_somme_difference
                                        );
                         GET_ARGUMENT_L("combinaison_lineaire=""cl="
                                       ,Idumpx_image_____former_une_combinaison_lineaire_des_coordonnees_X_et_Y
                                        );
                         GET_ARGUMENT_L("zeros=""zs=",Idumpx_image_____mettre_des_zeros_devant_les_coordonnees_X_et_Y);
                         GET_ARGUMENT_L("signe=",Idumpx_image_____les_valeurs_sont_signees);
                                        /* Parametres introduits le 20151210102640 et completes le 20151213103624, puis le           */
                                        /* 20151215095203...                                                                         */
                                        /*                                                                                           */
                                        /* Voir la commande 'v $xrv/anti_dumpx$K' qui permet a priori de reconstituer l'image        */
                                        /* decrite par les listes niveau/index ainsi generees...                                     */
                         GET_ARGUMENT_K("separateur=""sep=",PREMIER_CARACTERE_ITb0(Idumpx_image_____separateur__niveau_index));
                                        /* Parametre introduit le 20151211150819...                                                  */
                         )
                    );

     Test(IL_FAUT(Idumpx_image_____editer_sous_la_forme_niveau_coordonnees_X_et_Y))
                                        /* Test introduit le 20151210102640...                                                       */
          Bblock
          Test(IL_FAUT(editer_du_PostScript))
               Bblock
               PRINT_ATTENTION("l'edition sous forme 'niveau/coordonnees' exclue le 'PostScript'");

               EGAL(editer_du_PostScript,FAUX);
               Eblock
          ATes
               Bblock
               Eblock
          ETes
          Eblock
     ATes
          Bblock
          Eblock
     ETes

     Test(IL_FAUT(editer_du_PostScript))
          Bblock
          Test(IFET(IFNE(IPostScript_image_____version_du_PostScript,PostScript_Version_2)
                   ,IFNE(IPostScript_image_____version_du_PostScript,PostScript_Version_3)
                    )
               )
               Bblock
               PRINT_ERREUR("la version demandee pour le 'PostScript' n'existe pas");
               CAL1(Prer1("(%d etait demandee, "
                         ,IPostScript_image_____version_du_PostScript
                          )
                    );

               EGAL(IPostScript_image_____version_du_PostScript,PostScript_Version_2);

               CAL1(Prer1("%d est forcee)\n"
                         ,IPostScript_image_____version_du_PostScript
                          )
                    );
               Eblock
          ATes
               Bblock
               Eblock
          ETes

          Test(EST_FAUX(l_image_est_en_couleurs))
               Bblock
               Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageA,nom_imageA))))
                    Bblock
                    SIGNATURE(ImageA);
                                        /* Signature eventuelle de l'image...                                                        */

                    CALS(IPostScript_image_Noir_et_Blanc(ImageA
                                                        ,translation_horizontale
                                                        ,translation_verticale
                                                        ,echelle_horizontale
                                                        ,echelle_verticale
                                                        ,optimiser_la_conversion_PostScript
                                                        ,nombre_d_exemplaires
                                                         )
                         );
                                        /* Sortie de l'image au format "image" de 'PostScript' en Noir et Blanc.                     */
                    Eblock
               ATes
                    Bblock
                    Test__CODE_ERREUR__ERREUR07;
                    Eblock
               ETes
               Eblock
          ATes
               Bblock
               Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(Image_ROUGE,nom_imageAR))))
                    Bblock
                                        /* Chargement de la premiere image Argument.                                                 */
                    Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(Image_VERTE,nom_imageAV))))
                         Bblock
                                        /* Chargement de la deuxieme image Argument.                                                 */
                         Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(Image_BLEUE,nom_imageAB))))
                              Bblock
                                        /* Chargement de la troisieme image Argument.                                                */
                              SIGNATURE(Image_ROUGE);
                              SIGNATURE(Image_VERTE);
                              SIGNATURE(Image_BLEUE);
                                        /* Signature eventuelle de l'image...                                                        */

                              CALS(IPostScript_image_en_vraies_couleurs(Image_ROUGE
                                                                       ,Image_VERTE
                                                                       ,Image_BLEUE
                                                                       ,translation_horizontale
                                                                       ,translation_verticale
                                                                       ,echelle_horizontale
                                                                       ,echelle_verticale
                                                                       ,optimiser_la_conversion_PostScript
                                                                       ,nombre_d_exemplaires
                                                                        )
                                   );
                                        /* Sortie de l'image au format "image" de 'PostScript' en couleurs.                          */
                              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
               Eblock
          ETes
          Eblock
     ATes
          Bblock
          Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageA,nom_imageA))))
               Bblock
               Test(IL_FAUT(faire_un_dump_numerique))
                    Bblock
                                        /* Test introduit le 20081216113825...                                                       */
                    Test(IL_FAUT(faire_un_dump_hexa_decimal))
                         Bblock
                         CALS(Idumpx_image(ImageA));
                                        /* Sortie de l'image sous forme d'un dump hexa-decimal.                                      */
                         Eblock
                    ATes
                         Bblock
                         CALS(Idumpd_image(ImageA));
                                        /* Sortie de l'image sous forme d'un dump decimal.                                           */
                         Eblock
                    ETes
                    Eblock
               ATes
                    Bblock
                    CALS(Idumpc_image(ImageA));
                                        /* Sortie de l'image sous forme d'un dump caractere (introduit le 20081216113825).           */
                    Eblock
               ETes
               Eblock
          ATes
               Bblock
               Test__CODE_ERREUR__ERREUR07;
               Eblock
          ETes
          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.