Moka libraries
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
color.hh
Go to the documentation of this file.
1 /*
2  * lib-spamod : Visualisation des objets en discret.
3  * Copyright (C) 2004, Moka Team, Université de Poitiers, Laboratoire SIC
4  * http://www.sic.sp2mi.univ-poitiers.fr/
5  * Copyright (C) 2009, Guillaume Damiand, CNRS, LIRIS,
6  * guillaume.damiand@liris.cnrs.fr, http://liris.cnrs.fr/
7  *
8  * This file is part of lib-spamod
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU Lesser General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * along with this program. If not, see <http://www.gnu.org/licenses/>.
22  */
23 
24 /******************************************************************************
25  * Fichier : Color.h *
26  * Auteur : DEXET Martine *
27  *----------------------------------------------------------------------------*
28  * Ce fichier contient la spécification de la classe Color. Cette classe *
29  * permet de représenter une couleur à l'aide de trois nombres à virgule *
30  * flottante correspondants aux trois composantes R, G et B d'une couleur. *
31  * *
32  *****************************************************************************/
33 
34 
35 #ifndef COLOR_H
36 #define COLOR_H
37 
38 
39 
40 /******************************************************************************
41  * Classe Color *
42  *****************************************************************************/
43 
44 class Color {
45 
46  public:
47 
48  // Constructeurs.
49  Color();
50  Color(float cr, float cg, float cb);
51  Color(const Color & C);
52 
53  // Méthodes permettant la lecture des composantes R, G et B.
54  float Get_R() const;
55  float Get_G() const;
56  float Get_B() const;
57 
58  // Méthodes permettant l'écriture des composantes R, G et B.
59  void Set_R(float val);
60  void Set_G(float val);
61  void Set_B(float val);
62  void Set_RGB(float vx, float vy, float vz);
63 
64  // Opérateur de transfert << et >>.
65  friend std::ostream & operator<<(std::ostream & s,Color const & v);
66  friend Color& operator >> (std::istream& s, Color & i);
67 
68 
69  private:
70 
71  // Variables représentant les composantes R, G et B d'une couleur.
72  float r,g,b;
73 
74 };
75 
76 /******************************************************************************
77  * Fichier : Color.inl *
78  * Auteur : DEXET Martine *
79  *----------------------------------------------------------------------------*
80  * Ce fichier contient l'implémentation des méthodes de la classe Color *
81  * *
82  *****************************************************************************/
83 
84 
85 // Constructeurs.
86 inline
88 {
89  r = g = b = 0.0;
90 }
91 
92 inline
93 Color::Color(const Color & C)
94 {
95  r = C.r;
96  g = C.g;
97  b = C.b;
98 }
99 
100 inline
101 Color::Color(float cr, float cg, float cb)
102 {
103  r = cr;
104  g = cg;
105  b = cb;
106 }
107 
108 
109 // Méthodes permettant la lecture des composantes R, G et B.
110 inline
111 float Color::Get_R() const
112 {
113  return r;
114 }
115 
116 inline
117 float Color::Get_G() const
118 {
119  return g;
120 }
121 
122 inline
123 float Color::Get_B() const
124 {
125  return b;
126 }
127 
128 
129 // Méthodes permettant l'écriture des composantes R, G et B.
130 inline
131 void Color::Set_R(float val)
132 {
133  r = val;
134 }
135 
136 inline
137 void Color::Set_G(float val)
138 {
139  g = val;
140 }
141 
142 inline
143 void Color::Set_B(float val)
144 {
145  b = val;
146 }
147 
148 inline
149 void Color::Set_RGB(float vr, float vg, float vb)
150 {
151  r = vr;
152  g = vg;
153  b = vb;
154 }
155 
156 
157 // Opérateur de transfert << et >>.
158 inline
159 std::ostream & operator<<(std::ostream & s,Color const & v)
160 {
161  s << v.Get_R() << " " << v.Get_G() << " " << v.Get_B() << std::endl;
162  return s;
163 }
164 
165 
166 inline
167 Color& operator >> (std::istream& s, Color & i)
168 {
169  float alpha, b, c;
170 
171  s >> alpha >> b >> c;
172 
173  i.Set_R(alpha);
174  i.Set_G(b);
175  i.Set_R(c);
176 
177  return i;
178 }
179 
180 #endif