/*************************************************************************************************************************************/ /* */ /* C O N V E R S I O N ' RVB ' E N ' HLS ' E T R E C I P R O Q U E M E N T : */ /* */ /* */ /* Author of '$xcg/RVB_HLS$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 1998??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 /* Le 20091023083518 'INCLUDES_MINI' a ete remplace par 'INCLUDES_BASE' a cause de */ /* 'v $xiii/quad_image$DEF PASSAGE_HLS_RVB' qui utilise '______NORMALISE_NIVEAU(...)' */ /* et donc 'v $xiii/Images$STR AXE_NIVEAUX_OUVERT_FERME_____compatibilite_19951221'. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ #define NIVEAU_ROUGE \ FLOT__NOIR #define NIVEAU_VERTE \ FLOT__NOIR #define NIVEAU_BLEUE \ FLOT__NOIR /* Couleurs {R,V,B} : */ /* */ /* nR E [NOIR,BLANC], */ /* nV E [NOIR,BLANC], */ /* nB E [NOIR,BLANC], */ /* */ #define VALEUR_HUE \ FZERO #define VALEUR_LUMINANCE \ FZERO #define VALEUR_SATURATION \ FZERO /* Couleurs {H,L,S} : */ /* */ /* H E [NOIR,BLANC] sauf pour S=NOIR, auquel cas : H=HUE_UNDEF. */ /* L E [NOIR,BLANC], */ /* S E [NOIR,BLANC]. */ /* */ #define CONVERTIR_DE_RVB_EN_HLS \ VRAI \ /* Indique si l'on convertit de 'RVB' en 'HLS' ('VRAI') ou bien de 'HLS' en 'RVB' ('FAUX'). */ #define EDITER_NIVEAU_ROUGE \ VRAI #define EDITER_NIVEAU_VERTE \ VRAI #define EDITER_NIVEAU_BLEUE \ VRAI #define EDITER_VALEUR_HUE \ VRAI #define EDITER_VALEUR_LUMINANCE \ VRAI #define EDITER_VALEUR_SATURATION \ VRAI #define EDITER_VALEUR_LUMINANCE_RVB \ FAUX /* Controle de l'edition ('EDITER_VALEUR_LUMINANCE_RVB' a ete introduit le 20170919165427 */ /* de facon a garantir la compatibilite anterieure...). */ #define VALEURS_SIGNEES \ "" #define DES_NOMBRES_ENTIERS \ VRAI /* Le 20081204105229 je me demande a quoi cela sert-il de forcer ici 'VALEURS_SIGNEES' ? */ #include xci/valeurs.01.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ #include xci/valeurs.02.I" #define EDITER(valeur,editer,message) \ Bblock \ Test(IL_FAUT(editer)) \ Bblock \ CAL2(Prin3(Cara(chain_Aconcaten5("%s=%",valeurs_signees,".*",format_d_edition,"\n")) \ ,message \ ,NOMBRE_DE_DECIMALES_EFFECTIF(nombre_de_decimales) \ ,MULTIPLE_DE(ENTIER_FLOTTANT(valeur)) \ ) \ ); \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ /* Procedure d'edition conditionnelle. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C O N V E R S I O N ' RVB ' E N ' HLS ' E T R E C I P R O Q U E M E N T : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(Float,INIT(niveau_ROUGE,NIVEAU_ROUGE)); DEFV(Float,INIT(niveau_VERTE,NIVEAU_VERTE)); DEFV(Float,INIT(niveau_BLEUE,NIVEAU_BLEUE)); /* Valeur du triplet {R,V,B}. */ DEFV(Float,INIT(valeur_HUE,VALEUR_HUE)); DEFV(Float,INIT(valeur_LUMINANCE,VALEUR_LUMINANCE)); DEFV(Float,INIT(valeur_SATURATION,VALEUR_SATURATION)); /* Valeur du triplet {H,L,S}. */ DEFV(Logical,INIT(convertir_de_RVB_en_HLS,CONVERTIR_DE_RVB_EN_HLS)); /* Indique si l'on convertit de 'RVB' en 'HLS' ('VRAI') ou bien de 'HLS' en 'RVB' ('FAUX'). */ DEFV(Float,INIT(valeur_LUMINANCE_RVB,FLOT__NIVEAU_UNDEF)); DEFV(Logical,INIT(editer_niveau_ROUGE,EDITER_NIVEAU_ROUGE)); DEFV(Logical,INIT(editer_niveau_VERTE,EDITER_NIVEAU_VERTE)); DEFV(Logical,INIT(editer_niveau_BLEUE,EDITER_NIVEAU_BLEUE)); DEFV(Logical,INIT(editer_valeur_HUE,EDITER_VALEUR_HUE)); DEFV(Logical,INIT(editer_valeur_LUMINANCE,EDITER_VALEUR_LUMINANCE)); DEFV(Logical,INIT(editer_valeur_SATURATION,EDITER_VALEUR_SATURATION)); DEFV(Logical,INIT(editer_valeur_LUMINANCE_RVB,EDITER_VALEUR_LUMINANCE_RVB)); /* Controle de l'edition ('editer_valeur_LUMINANCE_RVB' a ete introduit le 20170919165427 */ /* de facon a garantir la compatibilite anterieure...). */ #include xci/valeurs.03.I" /*..............................................................................................................................*/ GET_ARGUMENTS_(nombre_d_arguments ,BLOC(GET_ARGUMENT_L("PASSAGE_HLS_RVB_____compatibilite_20240327=""compatibilite_20240327=" ,PASSAGE_HLS_RVB_____compatibilite_20240327 ); /* Argument introduit le 20241214104118... */ GET_ARGUMENT_F("ROUGE=""R=",niveau_ROUGE); GET_ARGUMENT_F("VERTE=""V=",niveau_VERTE); GET_ARGUMENT_F("BLEUE=""B=",niveau_BLEUE); GET_ARGUMENT_F("HUE=""H=""TEINTE=""T=",valeur_HUE); GET_ARGUMENT_F("LUMINANCE=""L=",valeur_LUMINANCE); GET_ARGUMENT_F("SATURATION=""S=",valeur_SATURATION); GET_ARGUMENT_L("RVB_HLS=",convertir_de_RVB_en_HLS); GET_ARGUMENT_N("HLS_RVB=",convertir_de_RVB_en_HLS); /* Parametre introduiit le 20060213105431... */ GET_ARGUMENT_L("eR=""editer_ROUGE=",editer_niveau_ROUGE); GET_ARGUMENT_L("eV=""editer_VERTE=",editer_niveau_VERTE); GET_ARGUMENT_L("eB=""editer_BLEUE=",editer_niveau_BLEUE); GET_ARGUMENT_L("eH=""editer_HUE=""eT=""editer_TEINTE=",editer_valeur_HUE); GET_ARGUMENT_L("eL=""editer_LUMINANCE=",editer_valeur_LUMINANCE); GET_ARGUMENT_L("eS=""editer_SATURATION=",editer_valeur_SATURATION); GET_ARGUMENT_L("eLRVB=""editer_LUMINANCE_RVB=",editer_valeur_LUMINANCE_RVB); /* Les parametres "editer_...=" ont ete introduits le 20081204105623 pour une meilleure */ /* comprehension... */ /* */ /* Le 20170919165427, "editer_LUMINANCE_RVB=" a ete introduit... */ GET_ARGUMENT_L("editer_messages_erreur=""eme=",PASSAGE_HLS_RVB_____editer_les_messages_d_erreur); /* Argument introduit le 20111206113618... */ PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_1; /* Cette procedure fut introduite le 20061226183153... */ ) ); Test(IL_FAUT(convertir_de_RVB_en_HLS)) Bblock PASSAGE_RVB_HLS(valeur_HUE,valeur_LUMINANCE,valeur_SATURATION,niveau_ROUGE,niveau_VERTE,niveau_BLEUE); /* Conversion {R,V,B} --> {H,L,S}. */ EGAL(valeur_LUMINANCE_RVB,CALCUL_DE_LA_LUMINANCE(niveau_ROUGE,niveau_VERTE,niveau_BLEUE)); /* Calcul de la luminance dite "RVB" (introduite le 20170919165427). */ Eblock ATes Bblock PASSAGE_HLS_RVB(niveau_ROUGE,niveau_VERTE,niveau_BLEUE,valeur_HUE,valeur_LUMINANCE,valeur_SATURATION); /* Conversion {H,L,S} --> {R,V,B}. */ Eblock ETes EDITER(niveau_ROUGE,editer_niveau_ROUGE,"R"); EDITER(niveau_VERTE,editer_niveau_VERTE,"V"); EDITER(niveau_BLEUE,editer_niveau_BLEUE,"B"); EDITER(valeur_HUE,editer_valeur_HUE,"H"); EDITER(valeur_LUMINANCE,editer_valeur_LUMINANCE,"L"); EDITER(valeur_SATURATION,editer_valeur_SATURATION,"S"); Test(IL_FAUT(convertir_de_RVB_en_HLS)) Bblock EDITER(valeur_LUMINANCE_RVB,editer_valeur_LUMINANCE_RVB,"LRVB"); /* Edition introduite le 20170919165427... */ Eblock ATes Bblock Eblock ETes RETU_Commande; Eblock ECommande