Tulip 5.7.1
Large graphs analysis and drawing
Loading...
Searching...
No Matches
Color.h
1/*
2 *
3 * This file is part of Tulip (https://tulip.labri.fr)
4 *
5 * Authors: David Auber and the Tulip development Team
6 * from LaBRI, University of Bordeaux
7 *
8 * Tulip is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU Lesser General Public License
10 * as published by the Free Software Foundation, either version 3
11 * of the License, or (at your option) any later version.
12 *
13 * Tulip is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16 * See the GNU General Public License for more details.
17 *
18 */
19///@cond DOXYGEN_HIDDEN
20
21#ifndef _COLOR_H
22#define _COLOR_H
23#include <tulip/Vector.h>
24
25///
26namespace tlp {
27
28class TLP_SCOPE Color : public tlp::Vector<unsigned char, 4> {
29public:
30 ///
31 inline Color(const tlp::Vector<unsigned char, 4> &);
32 ///
33 inline Color(const unsigned char red = 0, const unsigned char green = 0,
34 const unsigned char blue = 0, const unsigned char alpha = 255);
35 ///
36 inline void set(const unsigned char red = 0, const unsigned char green = 0,
37 const unsigned char blue = 0, const unsigned char alpha = 255);
38 ///
39 inline float getRGL() const;
40 ///
41 inline float getGGL() const;
42 ///
43 inline float getBGL() const;
44 ///
45 inline float getAGL() const;
46 ///
47 inline float *getGL() const;
48 ///
49 inline unsigned char getR() const;
50 ///
51 inline unsigned char getG() const;
52 ///
53 inline unsigned char getB() const;
54 ///
55 inline unsigned char getA() const;
56 ///
57 inline void setR(const unsigned char red);
58 ///
59 inline void setG(const unsigned char green);
60 ///
61 inline void setB(const unsigned char blue);
62 ///
63 inline void setA(const unsigned char alpha);
64 ///
65 long getTrueColor();
66 ///
67 int getH() const;
68 ///
69 int getS() const;
70 ///
71 int getV() const;
72 ///
73 void setH(int);
74 ///
75 void setS(int);
76 ///
77 void setV(int);
78
79 static const Color Amaranth;
80 static const Color Amber;
81 static const Color Apricot;
82 static const Color Aquamarine;
83 static const Color Azure;
84 static const Color BabyBlue;
85 static const Color Beige;
86 static const Color Black;
87 static const Color Blue;
88 static const Color BlueGreen;
89 static const Color BlueViolet;
90 static const Color Blush;
91 static const Color Bronze;
92 static const Color Brown;
93 static const Color Burgundy;
94 static const Color Byzantium;
95 static const Color Carmine;
96 static const Color Cerise;
97 static const Color Cerulean;
98 static const Color Champagne;
99 static const Color ChartreuseGreen;
100 static const Color Chocolate;
101 static const Color Coffee;
102 static const Color Copper;
103 static const Color Coral;
104 static const Color Crimson;
105 static const Color Cyan;
106 static const Color DesertSand;
107 static const Color ElectricBlue;
108 static const Color Erin;
109 static const Color Gold;
110 static const Color Gray;
111 static const Color Green;
112 static const Color Harlequin;
113 static const Color Indigo;
114 static const Color Ivory;
115 static const Color Jade;
116 static const Color JungleGreen;
117 static const Color Lavender;
118 static const Color Lemon;
119 static const Color Lilac;
120 static const Color Lime;
121 static const Color Magenta;
122 static const Color MagentaRose;
123 static const Color Maroon;
124 static const Color Mauve;
125 static const Color NavyBlue;
126 static const Color Olive;
127 static const Color Orange;
128 static const Color OrangeRed;
129 static const Color Orchid;
130 static const Color Peach;
131 static const Color Pear;
132 static const Color Periwinkle;
133 static const Color PersianBlue;
134 static const Color Pink;
135 static const Color Plum;
136 static const Color PrussianBlue;
137 static const Color Puce;
138 static const Color Purple;
139 static const Color Raspberry;
140 static const Color Red;
141 static const Color RedViolet;
142 static const Color Rose;
143 static const Color Salmon;
144 static const Color Sapphire;
145 static const Color Scarlet;
146 static const Color Silver;
147 static const Color SlateGray;
148 static const Color SpringBud;
149 static const Color SpringGreen;
150 static const Color Tan;
151 static const Color Taupe;
152 static const Color Teal;
153 static const Color Turquoise;
154 static const Color Violet;
155 static const Color Viridian;
156 static const Color White;
157 static const Color Yellow;
158};
159
160TLP_SCOPE std::ostream &operator<<(std::ostream &os, const tlp::Color &);
161TLP_SCOPE std::istream &operator>>(std::istream &is, tlp::Color &);
162} // namespace tlp
163
164tlp::Color::Color(const tlp::Vector<unsigned char, 4> &v) : tlp::Vector<unsigned char, 4>(v) {}
165
166tlp::Color::Color(const unsigned char red, const unsigned char green, const unsigned char blue,
167 const unsigned char alpha) {
168 set(red, green, blue, alpha);
169}
170
171void tlp::Color::set(unsigned char red, unsigned char green, unsigned char blue,
172 unsigned char alpha) {
173 (*this)[0] = red;
174 (*this)[1] = green;
175 (*this)[2] = blue;
176 (*this)[3] = alpha;
177}
178
179unsigned char tlp::Color::getR() const {
180 return (*this)[0];
181}
182unsigned char tlp::Color::getG() const {
183 return (*this)[1];
184}
185unsigned char tlp::Color::getB() const {
186 return (*this)[2];
187}
188unsigned char tlp::Color::getA() const {
189 return (*this)[3];
190}
191
192float tlp::Color::getRGL() const {
193 return float((*this)[0] / 255.0);
194}
195float tlp::Color::getGGL() const {
196 return float((*this)[1] / 255.0);
197}
198float tlp::Color::getBGL() const {
199 return float((*this)[2] / 255.0);
200}
201float tlp::Color::getAGL() const {
202 return float((*this)[3] / 255.0);
203}
204float *tlp::Color::getGL() const {
205 float *result = new float[4];
206 result[0] = getRGL();
207 result[1] = getGGL();
208 result[2] = getBGL();
209 result[3] = getAGL();
210 return result;
211}
212
213void tlp::Color::setR(unsigned char red) {
214 (*this)[0] = red;
215}
216void tlp::Color::setG(unsigned char green) {
217 (*this)[1] = green;
218}
219void tlp::Color::setB(unsigned char blue) {
220 (*this)[2] = blue;
221}
222void tlp::Color::setA(unsigned char alpha) {
223 (*this)[3] = alpha;
224}
225
226namespace std {
227template <>
228struct hash<tlp::Color> {
229 inline std::size_t operator()(const tlp::Color &c) const {
230 return hash_vector(c);
231 }
232};
233} // namespace std
234
235#endif
236
237///@endcond
std::ostream & operator<<(std::ostream &os, const Array< T, N > &array)
operator << stream operator to easily print an array, or save it to a file.
std::istream & operator>>(std::istream &is, Array< T, N > &array)
operator >> stream operator to easily read an array