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



Copyright © Jean-François COLONNA, 2019-2025.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2025.