MyGUI: MyGUI_Colour.cpp Source File

MyGUI 3.2.2

MyGUI_Colour.cpp
Go to the documentation of this file.
1 /*
2 * This source file is part of MyGUI. For the latest info, see http://mygui.info/
3 * Distributed under the MIT License
4 * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT)
5 */
6
7 #include "MyGUI_Precompiled.h"
8 #include "MyGUI_Colour.h"
9
10 namespace MyGUI
11 {
12
13 const Colour Colour::Zero = Colour(0, 0, 0, 0);
14 const Colour Colour::Black = Colour(0, 0, 0, 1);
15 const Colour Colour::White = Colour(1, 1, 1, 1);
16 const Colour Colour::Red = Colour(1, 0, 0, 1);
17 const Colour Colour::Green = Colour(0, 1, 0, 1);
18 const Colour Colour::Blue = Colour(0, 0, 1, 1);
19
20 Colour::Colour() :
21 red(1),
22 green(1),
23 blue(1),
24 alpha(1)
25 {
26 }
27
28 Colour::Colour( float _red, float _green, float _blue, float _alpha) :
29 red(_red),
30 green(_green),
31 blue(_blue),
32 alpha(_alpha)
33 {
34 }
35
36 Colour::Colour(const std::string& _value)
37 {
38 *this = parse(_value);
39 }
40
41 Colour& Colour::operator = (Colour const& _value)
42 {
43 red = _value.red;
44 green = _value.green;
45 blue = _value.blue;
46 alpha = _value.alpha;
47 return *this;
48 }
49
50 bool Colour::operator == (Colour const& _value) const
51 {
52 return ((red == _value.red) && (green == _value.green) && (blue == _value.blue) && (alpha == _value.alpha));
53 }
54
55 bool Colour::operator != (Colour const& _value) const
56 {
57 return ! (*this == _value);
58 }
59
60 void Colour::set(float _red, float _green, float _blue, float _alpha)
61 {
62 red = _red;
63 green = _green;
64 blue = _blue;
65 alpha = _alpha;
66 }
67
68 void Colour::clear()
69 {
70 red = green = blue = alpha = 0;
71 }
72
73 std::string Colour::print() const
74 {
75 std::ostringstream stream;
76 stream << *this;
77 return stream.str();
78 }
79
80 Colour Colour::parse(const std::string& _value)
81 {
82 if (!_value.empty())
83 {
84 if (_value[0] == '#')
85 {
86 std::istringstream stream(_value.substr(1));
87 int result = 0;
88 stream >> std::hex >> result;
89 if (!stream.fail())
90 {
91 return Colour( (unsigned char)( result >> 16 ) / 256.0f, (unsigned char)( result >> 8 ) / 256.0f, (unsigned char)( result ) / 256.0f );
92 }
93 }
94 else
95 {
96 float red, green, blue;
97 std::istringstream stream(_value);
98 stream >> red >> green >> blue;
99 if (!stream.fail())
100 {
101 float alpha = ALPHA_MAX;
102 if (!stream.eof())
103 stream >> alpha;
104 return Colour(red, green, blue, alpha);
105 }
106 }
107 }
108 return Colour::Zero;
109 }
110
111 std::ostream& Colour::operatorShiftLeft(std::ostream& _stream, const Colour& _value)
112 {
113 _stream << _value.red << " " << _value.green << " " << _value.blue << " " << _value.alpha;
114 return _stream;
115 }
116
117 std::istream& Colour::operatorShiftRight(std::istream& _stream, Colour& _value)
118 {
119 _value.clear();
120
121 std::string value;
122 _stream >> value;
123
124 if (value.empty())
125 return _stream;
126
127 if (value[0] == '#')
128 {
129 _value = parse(value);
130 }
131 else
132 {
133 std::istringstream stream(value);
134 stream >> _value.red;
135 if (stream.fail())
136 _value.clear();
137 else
138 {
139 _stream >> _value.green >> _value.blue;
140 if (!_stream.eof())
141 _stream >> _value.alpha;
142 else
143 _value.alpha = 1;
144
145 if (_stream.fail())
146 _value.clear();
147 }
148 }
149
150 return _stream;
151 }
152
153 } // namespace MyGUI
MyGUI::Colour::Green
static const Colour Green
Definition: MyGUI_Colour.h:58
MyGUI::Colour::operator!=
bool operator!=(Colour const &_value) const
Definition: MyGUI_Colour.cpp:55
MyGUI::Colour::parse
static Colour parse(const std::string &_value)
Definition: MyGUI_Colour.cpp:80
MyGUI::Colour::Red
static const Colour Red
Definition: MyGUI_Colour.h:57
MyGUI::Colour::clear
void clear()
Definition: MyGUI_Colour.cpp:68
MyGUI::ALPHA_MAX
const float ALPHA_MAX
Definition: MyGUI_Macros.h:19
MyGUI::Colour::set
void set(float _red, float _green, float _blue, float _alpha=1)
Definition: MyGUI_Colour.cpp:60
MyGUI::Colour::red
float red
Definition: MyGUI_Colour.h:49
MyGUI::Colour::operator==
bool operator==(Colour const &_value) const
Definition: MyGUI_Colour.cpp:50
MyGUI::Colour::alpha
float alpha
Definition: MyGUI_Colour.h:52
MyGUI_Precompiled.h
MyGUI::Colour::operatorShiftLeft
static std::ostream & operatorShiftLeft(std::ostream &_stream, const Colour &_value)
Definition: MyGUI_Colour.cpp:111
MyGUI::Colour::operatorShiftRight
static std::istream & operatorShiftRight(std::istream &_stream, Colour &_value)
Definition: MyGUI_Colour.cpp:117
MyGUI::Colour::operator=
Colour & operator=(Colour const &_value)
Definition: MyGUI_Colour.cpp:41
MyGUI::Colour::print
std::string print() const
Definition: MyGUI_Colour.cpp:73
MyGUI::Colour::green
float green
Definition: MyGUI_Colour.h:50
MyGUI::Colour::Colour
Colour()
Definition: MyGUI_Colour.cpp:20
MyGUI::Colour
Definition: MyGUI_Colour.h:16
MyGUI::Colour::White
static const Colour White
Definition: MyGUI_Colour.h:56
MyGUI::Colour::Blue
static const Colour Blue
Definition: MyGUI_Colour.h:59
MyGUI_Colour.h
MyGUI::Colour::blue
float blue
Definition: MyGUI_Colour.h:51
MyGUI
Definition: MyGUI_ActionController.h:14
MyGUI::Colour::Zero
static const Colour Zero
Definition: MyGUI_Colour.h:54
MyGUI::Colour::Black
static const Colour Black
Definition: MyGUI_Colour.h:55