/*************************************************************************************************************************************/ /* */ /* R E M P L A C E M E N T D ' U N N I V E A U P A R T I C U L I E R */ /* P A R U N N I V E A U I N T E R P O L E D A N S U N R E C T A N G L E D O N T */ /* L ' E X T E R I E U R N E C O N T I E N T P A S C E N I V E A U P A R T I C U L I E R : */ /* */ /* */ /* Author of '$xci/remplace.01$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 1994??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 NIVEAU_A_REMPLACER \ GRIS \ /* Niveau a remplacer. */ #define NIVEAU_MINIMUM_DE_X_MINIMUM_DE_Y \ NOIR #define NIVEAU_MAXIMUM_DE_X_MINIMUM_DE_Y \ NOIR #define NIVEAU_MINIMUM_DE_X_MAXIMUM_DE_Y \ BLANC #define NIVEAU_MAXIMUM_DE_X_MAXIMUM_DE_Y \ BLANC /* Niveaux a interpoler au sommet d'un rectangle... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* R E M P L A C E M E N T D ' U N N I V E A U P A R T I C U L I E R */ /* P A R U N N I V E A U I N T E R P O L E D A N S U N R E C T A N G L E D O N T */ /* L ' E X T E R I E U R N E C O N T I E N T P A S C E N I V E A U P A R T I C U L I E R : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageF),NOM_PIPE)); DEFV(genere_p,INIT(niveau_a_remplacer,NIVEAU_MINIMUM_DE_X_MINIMUM_DE_Y)); /* Niveau a remplacer. */ DEFV(genere_p,INIT(niveau_minimum_de_X_minimum_de_Y,NIVEAU_MINIMUM_DE_X_MINIMUM_DE_Y)); DEFV(genere_p,INIT(niveau_maximum_de_X_minimum_de_Y,NIVEAU_MAXIMUM_DE_X_MINIMUM_DE_Y)); DEFV(genere_p,INIT(niveau_minimum_de_X_maximum_de_Y,NIVEAU_MINIMUM_DE_X_MAXIMUM_DE_Y)); DEFV(genere_p,INIT(niveau_maximum_de_X_maximum_de_Y,NIVEAU_MAXIMUM_DE_X_MAXIMUM_DE_Y)); /* Niveaux a interpoler au sommet d'un rectangle... */ /*..............................................................................................................................*/ GET_ARGUMENTSi(nombre_d_arguments ,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA); GET_ARGUMENT_C("imageF=""F=",nom_imageF); GET_ARGUMENT_C("imageR=""R=",nom_imageR); GET_ARGUMENT_P("niveau=""n=",niveau_a_remplacer); GET_ARGUMENT_P("nmm=""niveau_mm=",niveau_minimum_de_X_minimum_de_Y); GET_ARGUMENT_P("niveau_Mm=""nMm=",niveau_maximum_de_X_minimum_de_Y); GET_ARGUMENT_P("nmM=""niveau_mM=",niveau_minimum_de_X_maximum_de_Y); GET_ARGUMENT_P("niveau_MM=""nMM=",niveau_maximum_de_X_maximum_de_Y); ) ); CALi(Inoir(ImageR)); /* Initialisation de l'image Resultat. */ Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageR,nom_imageF)))) /* Chargement de l'image Fond. */ Bblock Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageA,nom_imageA)))) /* Chargement de l'image Argument. */ Bblock CALS(Iremplacement_d_un_niveau_par_interpolation(ImageR ,ImageA ,niveau_a_remplacer ,niveau_minimum_de_X_minimum_de_Y ,niveau_maximum_de_X_minimum_de_Y ,niveau_minimum_de_X_maximum_de_Y ,niveau_maximum_de_X_maximum_de_Y ) ); /* Remplacement du niveau 'niveau_a_remplacer' de 'ImageA' par le resultat d'une */ /* interpolation effectuee entre quatre niveaux fixes au sommet d'un rectangle dont */ /* deux des cotes sont horizontaux, et dont l'exterieur ne contient aucun point de */ /* niveau 'niveau_a_remplacer'. Les points qui ne sont pas de type 'niveau_a_remplacer' */ /* dans 'ImageA' gardent la valeur qu'ils avaient dans 'ImageR'... */ CALi(Iupdate_image(nom_imageR,ImageR)); Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes RETU_Commande; Eblock ECommande