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