// This file is part of the Herezh++ application. // // The finite element software Herezh++ is dedicated to the field // of mechanics for large transformations of solid structures. // It is developed by Gérard Rio (APP: IDDN.FR.010.0106078.000.R.P.2006.035.20600) // INSTITUT DE RECHERCHE DUPUY DE LÔME (IRDL) . // // Herezh++ is distributed under GPL 3 license ou ultérieure. // // Copyright (C) 1997-2022 Université Bretagne Sud (France) // AUTHOR : Gérard Rio // E-MAIL : gerardrio56@free.fr // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, // or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty // of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // For more information, please consult: . /************************************************************************ * DATE: 31/12/2002 * * $ * * AUTEUR: G RIO (mailto:gerardrio56@free.fr) * * $ * * PROJET: Herezh++ * * $ * ************************************************************************ * BUT: définition est manipulation du spectre de couleur, * * util pour la visualisation d'isovaleurs. * * Le programme utilise les spectres définis par * * Bertrand orvoine dans livan++ * * $ * * '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' * * * VERIFICATION: * * * * ! date ! auteur ! but ! * * ------------------------------------------------------------ * * ! ! ! ! * * $ * * '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' * * MODIFICATIONS: * * ! date ! auteur ! but ! * * ------------------------------------------------------------ * * $ * ************************************************************************/ #ifndef SPECTRE_H #define SPECTRE_H #include "rgb.h" #include "Tableau_T.h" #include "Vecteur.h" class Spectre { public : enum EnumType_spectre {SPECTRE_STANDART=1,SPECTRE_ARCENCIEL,SPECTRE_THERMIQUE ,SPECTRE_MAXIMUM,SPECTRE_NOIRBLANCN,SPECTRE_GEO,SPECTRE_PHASER}; // Retourne le nom d'un type de spectre a partir de son identificateur de // type enumere id_Type_spectre correspondant string Nom_Type_Spectre (const Spectre::EnumType_spectre id_TypeSpectre); // Retourne l'identificateur de type enumere associe au nom du type de spectre EnumType_spectre Id_nom_TypeSpectre (const char* nom_TypeSpectre); // CONSTRUCTEUR // constructeur par défaut Spectre(); // initialisations par défaut au spectre standart, min et max = 0 1 // constructeur fonction d'un énuméré, et d'un mini et maxi équivalent en réel Spectre(EnumType_spectre type_spect,double val_min=0.,double val_max=1.); // constructeur de copie Spectre(const Spectre& spect); // DESTRUCTEUR ~Spectre() {}; // Méthodes // changement des valeurs min et max void Change_min_max(const double& val_min,const double& val_max) ; // changement du spectre courant void Change_spectre_courant(EnumType_spectre nv_spectre); // récup des maxi et mini du spectre double Valeur_maxi() const { return val_des_coul(val_des_coul.Taille());}; double Valeur_mini() const { return val_des_coul(1);}; // récup du spectre en cours EnumType_spectre TypeSpectreEnCours() const { return type_spectre;}; // nombre de couleurs de base du spectre en cours int NbCouleurBaseSpectre() const {return spectre_courant.Taille();}; // définition d'une couleur en fonction d'une valeur numérique // si la valeur est inférieure à la valeur mini du spectre, on retourne la valeur mini // si la valeur est supérieure à la valeur maxi du spectre, on retourne la valeur maxi Rgb CouleurVal(const double& val)const ; // récup d'un tableau donnant la description de chaque spectre disponible static const Tableau & Description_spectres_disponibles() {return description_spectre;}; protected : // données protégées static Rgb spectre[7][8]; static Tableau description_spectre; // description des différents spectres class Initialisation_description_spectre { public: Initialisation_description_spectre(); }; friend class Initialisation_description_spectre; static Initialisation_description_spectre inti_spectre; // ------- def du spectre courant ------ Tableau spectre_courant; EnumType_spectre type_spectre; // def du min max correspondant au spectre et des valeurs intermédiaires Vecteur val_des_coul; // valeurs des couleurs du spectre double delta_val; // incrément de valeur le long du spectre de base }; #endif