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