/*************************************************************************************************************************************/ /* */ /* C O U P E S H O R I Z O N T A L E E T V E R T I C A L E D A N S U N E I M A G E : */ /* */ /* */ /* Author of '$xci/coupe$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 1989??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 : */ /* */ /*************************************************************************************************************************************/ #include xci/coupe.01.I" #define POSITION_COUPE_HORIZONTALE \ Ycentre \ /* Ordonnee de la coupe horizontale dans l'image. */ #define POSITION_COUPE_VERTICALE \ Xcentre \ /* Abscisse de la coupe verticale dans l'image. */ #define EDITER_LES_INTEGRALES \ FAUX \ /* Faut-il editer la valeur des integrales evaluees par la methode des trapezes ? */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ #include xci/coupe.02.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C O U P E S H O R I Z O N T A L E E T V E R T I C A L E D A N S U N E I M A G E : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE)); DEFV(Logical,INIT(coupe_horizontale,COUPE_HORIZONTALE)); DEFV(Logical,INIT(coupe_verticale,COUPE_VERTICALE)); /* Nature des coupes a realiser. */ DEFV(Float,INIT(position_coupe_horizontale,FLOT__UNDEF)); DEFV(Float,INIT(position_coupe_verticale,FLOT__UNDEF)); /* Coordonnees des coupes a realiser. */ DEFV(Logical,INIT(marquer_l_emplacement_des_coupes,MARQUER_L_EMPLACEMENT_DES_COUPES)); /* Faut-il marquer l'emplacement de la coupe effectuee dans l'image ? */ DEFV(Logical,INIT(marquer_l_emplacement_des_coupes_avant_les_coupes,MARQUER_L_EMPLACEMENT_DES_COUPES_AVANT_LES_COUPES)); /* Faut-il marquer l'emplacement de la coupe effectuee dans l'image avant la coupe elle-meme */ /* ('VRAI') ou apres ('FAUX') ? */ DEFV(Logical,INIT(marquer_les_coupes_par_un_segment,MARQUER_LES_COUPES_PAR_UN_SEGMENT)); /* Faut-il marquer les coupes par un segment ('VRAI') ou par un point isole ('FAUX') ? */ DEFV(genere_p,INIT(niveau_de_la_coupe_horizontale,NIVEAU_DE_LA_COUPE_HORIZONTALE)); DEFV(genere_p,INIT(niveau_de_la_coupe_verticale,NIVEAU_DE_LA_COUPE_VERTICALE)); /* Niveau de marquage des coupes a realiser. */ DEFV(genere_p,INIT(niveau_du_profil_horizontal,NIVEAU_DU_PROFIL_HORIZONTAL)); DEFV(genere_p,INIT(niveau_du_profil_vertical,NIVEAU_DU_PROFIL_VERTICAL)); /* Niveau de marquage des profils a realiser. */ DEFV(Logical,INIT(editer_les_integrales,EDITER_LES_INTEGRALES)); /* Faut-il editer la valeur des integrales evaluees par la methode des trapezes ? */ DEFV(Float,INIT(integrale_horizontale,FLOT__UNDEF)); DEFV(Float,INIT(integrale_verticale,FLOT__UNDEF)); /* Valeur des integrales horizontales et verticales au cas ou il faudrait les editer... */ /*..............................................................................................................................*/ GET_ARGUMENTSg(nombre_d_arguments ,BLOC(GET_ARGUMENT_L("SX_SY_SZ_____compatibilite_20070416=""compatibilite_20070416=" ,SX_SY_SZ_____compatibilite_20070416 ); /* Parametre introduit le 20070416155727... */ GET_ARGUMENT_C("imageA=""A=",nom_imageA); GET_ARGUMENT_C("imageR=""R=",nom_imageR); GET_ARGUMENT_L("horizontale=""horizontal=""h=",coupe_horizontale); GET_ARGUMENT_L("verticale=""vertical=""v=",coupe_verticale); GIT_ARGUMENT_F("y=""ph=""Y=",position_coupe_horizontale,_____cNORMALISE_OY(POSITION_COUPE_HORIZONTALE)); GIT_ARGUMENT_F("x=""pv=""X=",position_coupe_verticale,_____cNORMALISE_OX(POSITION_COUPE_VERTICALE)); GET_ARGUMENT_L("marquage=",marquer_l_emplacement_des_coupes); GET_ARGUMENT_L("avant=",marquer_l_emplacement_des_coupes_avant_les_coupes); GET_ARGUMENT_L("segments=""segment=",marquer_les_coupes_par_un_segment); GET_ARGUMENT_P("nch=",niveau_de_la_coupe_horizontale); GET_ARGUMENT_P("ncv=",niveau_de_la_coupe_verticale); GET_ARGUMENT_P("nph=",niveau_du_profil_horizontal); GET_ARGUMENT_P("npv=",niveau_du_profil_vertical); GET_ARGUMENT_L("integrales=""integrale=",editer_les_integrales); GET_ARGUMENT_F("echelle_horizontale=""ey=",Iprofil_horizontal_____echelle_des_segments); GET_ARGUMENT_F("echelle_verticale=""ex=",Iprofil_vertical_____echelle_des_segments); /* Le 20200506113112, les arguments "ex=" et "ey=" ont ete introduits en notant le petit */ /* paradoxe : */ /* */ /* y --> horizontal */ /* x --> vertical */ /* */ /* "horizontal" et "vertical" venant en fait du nom des deux fonctions utilisees... */ GET_ARGUMENT_L("marquer_NOIR_horizontal=""NOIRh=",Iprofil_horizontal_____marquer_le_NOIR); GET_ARGUMENT_L("marquer_NOIR_vertical=""NOIRv=",Iprofil_vertical_____marquer_le_NOIR); /* Introduit le 20200506125540 pour 'v $Fdivers GProfilP'... */ ) ); CALi(Inoir(ImageG)); /* Initialisation de l'image Resultat. */ Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageA,nom_imageA)))) Bblock Test(IL_FAUT(marquer_l_emplacement_des_coupes_avant_les_coupes)) Bblock MARQUAGE_DE_L_EMPLACEMENT_DES_COUPES; Eblock ATes Bblock Eblock ETes Test(IL_FAUT(coupe_horizontale)) Bblock EGAL(integrale_horizontale ,Iprofil_horizontal(ImageG ,ImageA ,position_coupe_horizontale ,niveau_du_profil_horizontal ,marquer_les_coupes_par_un_segment ) ); /* Calcul du profil horizontal. */ Test(IL_FAUT(editer_les_integrales)) Bblock CAL3(Prme1("integrale horizontale = %g\n",integrale_horizontale)); Eblock ATes Bblock Eblock ETes Eblock ATes Bblock Eblock ETes Test(IL_FAUT(coupe_verticale)) Bblock EGAL(integrale_verticale ,Iprofil_vertical(ImageG ,ImageA ,position_coupe_verticale ,niveau_du_profil_vertical ,marquer_les_coupes_par_un_segment ) ); /* Calcul du profil vertical. */ Test(IL_FAUT(editer_les_integrales)) Bblock CAL3(Prme1("integrale verticale = %g\n",integrale_verticale)); Eblock ATes Bblock Eblock ETes Eblock ATes Bblock Eblock ETes Test(IL_NE_FAUT_PAS(marquer_l_emplacement_des_coupes_avant_les_coupes)) Bblock MARQUAGE_DE_L_EMPLACEMENT_DES_COUPES; Eblock ATes Bblock Eblock ETes Test(IL_FAUT(editer_les_integrales)) Bblock CALS(Fsauts_de_lignes(UN)); Eblock ATes Bblock Eblock ETes CALi(Iupdate_image(nom_imageR,ImageG)); Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes RETU_Commande; Eblock ECommande