/*************************************************************************************************************************************/ /* */ /* P A S S A G E D E S F A U S S E S A U X V R A I E S C O U L E U R S A L E A T O I R E S : */ /* */ /* */ /* Definition : */ /* */ /* Cette commande calcule les trois */ /* composantes en vraies couleurs aleatoires */ /* de l'image Argument. */ /* */ /* */ /* Author of '$xci/vraies_C_aleatoires$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20210520110857). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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_QUAD_IMAGE_EXT /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ #define UTILISER_LA_METHODE_NON_DETERMINISTE \ FAUX \ /* Faut-il utiliser la methode non deterministe ('VRAI)' ou deterministe ('FAUX') ? Ceci */ \ /* fut introduit le 20210521103643... */ \ /* */ \ /* La methode deterministe a ete activee par defaut le 20210523085838 (en passant de 'FAUX' */ \ /* a 'VRAI') grace a 'v $xiii/quad_image$FON _____selectionner_aleatoirement_les_index.VRAI' */ \ /* qui marche parfaitement... */ #define GENERER_UNE_IMAGE_EN_VRAIES_COULEURS \ FAUX \ /* Faut-il generer une image en vraies couleurs ('VRAI)' c'est-a-dire dont les trois */ \ /* composantes ont la meme racine, ou bien trois images "independantes" ('FAUX'). */ #define GENERER_LA_COMPOSANTE_ROUGE \ VRAI #define GENERER_LA_COMPOSANTE_VERTE \ VRAI #define GENERER_LA_COMPOSANTE_BLEUE \ VRAI #define GENERER_LA_LUMINANCE \ FAUX /* Indicateurs precisant s'il faut generer ('VRAI') ou pas ('FAUX') la composante */ /* chromatique correspondante. */ #define UTILISER_LE_POINT_COURANT_COMME_BORNE_SUPERIEURE \ FAUX \ /* Faut-il utiliser le point courant pour les trois bornes superieures ('VRAI') ou bien */ \ /* prendre des valeurs par defaut ('FAUX') ? Ceci fut introduit le 20210520145214... */ #define NOMBRE_MAXIMAL_D_ITERATIONS \ CENT \ /* Nombre maximal d'iterations de recherche d'une solution... */ #define GRAINE_ROUGE \ PARE(1789) #define GRAINE_VERTE \ PARE(1947) #define GRAINE_BLEUE \ PARE(2001) /* Graines de generation aleatoire... */ #define FACTEUR_ROUGE \ FRA10(FRA2(FU)) #define FACTEUR_VERTE \ FRA10(FRA2(FU)) #define FACTEUR_BLEUE \ FRA10(FRA2(FU)) /* Afin de calculer les bornes inferieure et superieure de generation aleatoire... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ #include xci/vraies_C.01.I" #include xci/luminance.01.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A S S A G E D E S F A U S S E S A U X V R A I E S C O U L E U R S A L E A T O I R E S : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE)); /* Nom de l'image a displayer. */ DEFV(CHAR,INIC(POINTERc(nom_imagesR),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE)); /* Nom de la racine d'une image en vraies couleurs. */ DEFV(CHAR,INIC(POINTERc(nom_imageRR),NOM_PIPE)); /* Nom de l'image ROUGE a generer, */ DEFV(CHAR,INIC(POINTERc(nom_imageRV),NOM_PIPE)); /* Nom de l'image VERTE a generer, */ DEFV(CHAR,INIC(POINTERc(nom_imageRB),NOM_PIPE)); /* Nom de l'image BLEUE a generer, */ DEFV(CHAR,INIC(POINTERc(nom_imageRL),NOM_PIPE)); /* Nom de l'image LUMINANCE a generer. */ DEFV(Logical,INIT(utiliser_la_methode_non_deterministe,UTILISER_LA_METHODE_NON_DETERMINISTE)); /* Faut-il utiliser la methode non deterministe ('VRAI)' ou deterministe ('FAUX') ? Ceci */ /* fut introduit le 20210521103643... */ /* */ /* La methode deterministe a ete activee par defaut le 20210523085838 (en passant de 'FAUX' */ /* a 'VRAI') grace a 'v $xiii/quad_image$FON _____selectionner_aleatoirement_les_index.VRAI' */ /* qui marche parfaitement... */ DEFV(Logical,INIT(generer_une_image_en_vraies_couleurs,GENERER_UNE_IMAGE_EN_VRAIES_COULEURS)); /* Faut-il generer 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... */ DEFV(Logical,INIT(generer_la_composante_ROUGE,GENERER_LA_COMPOSANTE_ROUGE)); DEFV(Logical,INIT(generer_la_composante_VERTE,GENERER_LA_COMPOSANTE_VERTE)); DEFV(Logical,INIT(generer_la_composante_BLEUE,GENERER_LA_COMPOSANTE_BLEUE)); DEFV(Logical,INIT(generer_la_luminance,GENERER_LA_LUMINANCE)); /* Indicateurs precisant s'il faut genere ('VRAI') ou pas ('FAUX') la composante */ /* chromatique correspondante. */ DEFV(Logical,INIT(utiliser_le_point_courant_comme_borne_superieure,UTILISER_LE_POINT_COURANT_COMME_BORNE_SUPERIEURE)); /* Faut-il utiliser le point courant pour les trois bornes superieures ('VRAI') ou bien */ /* prendre des valeurs par defaut ('FAUX') ? Ceci fut introduit le 20210520145214... */ DEFV(Positive,INIT(nombre_maximal_d_iterations,NOMBRE_MAXIMAL_D_ITERATIONS)); /* Nombre maximal d'iterations de recherche d'une solution... */ DEFV(Int,INIT(graine_ROUGE,GRAINE_ROUGE)); DEFV(Int,INIT(graine_VERTE,GRAINE_VERTE)); DEFV(Int,INIT(graine_BLEUE,GRAINE_BLEUE)); /* Graines de generation aleatoire... */ DEFV(Float,INIT(facteur_ROUGE,FACTEUR_ROUGE)); DEFV(Float,INIT(facteur_VERTE,FACTEUR_VERTE)); DEFV(Float,INIT(facteur_BLEUE,FACTEUR_BLEUE)); /* Afin de calculer les bornes inferieure et superieure de generation aleatoire... */ /*..............................................................................................................................*/ GET_ARGUMENTSi(nombre_d_arguments ,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA); GET_ARGUMENT_C("imageR=""R=",nom_imageR); GET_ARGUMENT_C("Rouge=""RR=""ROUGE=",nom_imageRR); GET_ARGUMENT_C("Verte=""VERTE=""RV=",nom_imageRV); GET_ARGUMENT_C("RB=""Bleue=""BLEUE=",nom_imageRB); GET_ARGUMENT_C("RL=""Luminance=""LUMINANCE=",nom_imageRL); GET_ARGUMENT_L("RVB=",generer_une_image_en_vraies_couleurs); GET_ARGUMENT_L("genereR=""gROUGE=",generer_la_composante_ROUGE); GET_ARGUMENT_L("genereV=""gVERTE=",generer_la_composante_VERTE); GET_ARGUMENT_L("genereB=""gBLEUE=",generer_la_composante_BLEUE); GET_ARGUMENT_L("genereL=""gLUMINANCE=",generer_la_luminance); GET_ARGUMENT_L("non_deterministe=""aleatoire=""nd=",utiliser_la_methode_non_deterministe); GET_ARGUMENT_N("deterministe=""d=",utiliser_la_methode_non_deterministe); /* Arguments introduits le 20210521103643... */ GET_ARGUMENT_I("nombre_repetitions=""repetitions=""nr=" ,Ivraies_couleurs_non_aleatoires_____nombre_de_repetitions ); /* Arguments introduits le 20210522080354... */ GET_ARGUMENT_L("selection_aleatoire_index=""sax=" ,Ivraies_couleurs_non_aleatoires_____selectionner_aleatoirement_les_index ); GET_ARGUMENT_I("graine=""g=",Ivraies_couleurs_non_aleatoires_____graine_de_selection_aleatoire_des_index); /* Arguments introduits le 20210523082516... */ GET_ARGUMENT_L("point_courant_borne_superieure=""pcbs=",utiliser_le_point_courant_comme_borne_superieure); /* Argument introduit le 20210520145214... */ GET_ARGUMENT_I("iterations=",nombre_maximal_d_iterations); GET_ARGUMENT_I("graine_ROUGE=""gR=",graine_ROUGE); GET_ARGUMENT_I("graine_VERTE=""gV=",graine_VERTE); GET_ARGUMENT_I("graine_BLEUE=""gB=",graine_BLEUE); GET_ARGUMENT_F("facteur_ROUGE=""fR=",facteur_ROUGE); GET_ARGUMENT_F("facteur_VERTE=""fV=",facteur_VERTE); GET_ARGUMENT_F("facteur_BLEUE=""fB=",facteur_BLEUE); ) ); Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageA,nom_imageA)))) Bblock Test(IL_FAUT(utiliser_la_methode_non_deterministe)) /* Test introduit le 20210521103643... */ Bblock CALS(Ivraies_couleurs_aleatoires(Image_ROUGE,Image_VERTE,Image_BLEUE ,ImageA ,utiliser_le_point_courant_comme_borne_superieure ,nombre_maximal_d_iterations ,graine_ROUGE,graine_VERTE,graine_BLEUE ,facteur_ROUGE,facteur_VERTE,facteur_BLEUE ) ); Eblock ATes Bblock CALS(Ivraies_couleurs_non_aleatoires(Image_ROUGE,Image_VERTE,Image_BLEUE ,ImageA ) ); Eblock ETes Test(IL_FAUT(generer_la_luminance)) Bblock CALS(Iluminance(ImageR,Image_ROUGE,Image_VERTE,Image_BLEUE)); CALi(Iupdate_image(nom_imageRL,ImageR)); Eblock ATes Bblock GENERER_LE_NOM_DE_TROIS_COMPOSANTES_CHROMATIQUES_RVB(nom_imageR,nom_imageRR,nom_imageRV,nom_imageRB) Test(IL_FAUT(generer_la_composante_ROUGE)) Bblock GENERATION_D_UNE_COMPOSANTE(nom_imageRR,c_ROUGE,Image_ROUGE); Eblock ATes Bblock Eblock ETes Test(IL_FAUT(generer_la_composante_VERTE)) Bblock GENERATION_D_UNE_COMPOSANTE(nom_imageRV,c_VERTE,Image_VERTE); Eblock ATes Bblock Eblock ETes Test(IL_FAUT(generer_la_composante_BLEUE)) Bblock GENERATION_D_UNE_COMPOSANTE(nom_imageRB,c_BLEUE,Image_BLEUE); Eblock ATes Bblock Eblock ETes Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes RETU_Commande; Eblock ECommande